JuliusBrussee/caveman · error · Error
strategy must be all or deferred
Error message
strategy must be all or deferred
What it means
Error "strategy must be all or deferred" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/sdk/typescript/src/index.ts:471
*/
exporter(config: { serviceName?: string } = {}): OTelExporter {
return new OTelExporter(this, config.serviceName ?? this.options.agent);
}
/**
* Build a tool-catalog handle with server-side search via /sdk/v1/tool-search.
*
* strategy "all" → initial = whole catalog; search() still calls the server.
* strategy "deferred" → initial = alwaysLoad tools (subset sent on first turn);
* search() calls the server to load relevant tools on demand.
*
* Breaking change from 1.0: search() is now async and returns ToolSearchResult
* (previously sync, returning CaveTool[]). Callers must await search().
*/
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 === undefinedView on GitHub (pinned to 27d5a3981a)
Solutions
- Set strategy to "all" or "deferred".
When it happens
Trigger: Thrown at packages/sdk/typescript/src/index.ts:471 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/1686b2cdcde9f73a.
Report an issue: GitHub.