JuliusBrussee/caveman · error · Error
maxLoadedTools must be at least the alwaysLoad tool count
Error message
maxLoadedTools must be at least the alwaysLoad tool count
What it means
Error "maxLoadedTools must be at least the alwaysLoad tool count" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/sdk/typescript/src/index.ts:486
tools(config: { catalog: CaveTool[]; strategy?: "all" | "deferred"; initialToolCount?: number; maxLoadedTools?: number }) {
const strategy = config.strategy ?? "all";
if (strategy !== "all" && strategy !== "deferred") {
throw new Error("strategy must be all or deferred");
}
const initialToolCount = config.initialToolCount ?? 8;
if (!Number.isSafeInteger(initialToolCount) || initialToolCount < 0) {
throw new Error("initialToolCount must be a non-negative integer");
}
if (config.maxLoadedTools !== undefined && (!Number.isSafeInteger(config.maxLoadedTools) || config.maxLoadedTools < 1)) {
throw new Error("maxLoadedTools must be a positive integer");
}
let initial: CaveTool[];
if (strategy === "all") {
initial = config.catalog.slice();
} else {
const always = config.catalog.filter((tool) => tool.alwaysLoad);
if (config.maxLoadedTools !== undefined && always.length > config.maxLoadedTools) {
throw new Error("maxLoadedTools must be at least the alwaysLoad tool count");
}
const lazy = config.catalog.filter((tool) => !tool.alwaysLoad);
const lazyLimit = config.maxLoadedTools === undefined
? initialToolCount
: Math.min(initialToolCount, config.maxLoadedTools - always.length);
initial = always.concat(lazy.slice(0, lazyLimit));
}
const cave = this;
return {
strategy,
initial,
/**
* Search the full catalog via the gateway's /sdk/v1/tool-search endpoint.
* Returns a ToolSearchResult with the reduced tool list and token counts.
*
* @param query The user's current intent / task description.
* @param options.maxTools Optional cap on returned tools.View on GitHub (pinned to 27d5a3981a)
Solutions
- Raise maxLoadedTools to at least the number of alwaysLoad tools.
When it happens
Trigger: Thrown at packages/sdk/typescript/src/index.ts:486 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/9e33008b943e79e9.
Report an issue: GitHub.