import type { ToolCallRequest, ToolDef } from '../../../core/llm/provider-base.js'; import { type ToolDispatcher } from '../../../core/llm/index.js'; import { buildExecDispatcher } from '../../../core/llm/exec-dispatcher.js'; import { buildPlanExitDispatcher } from '../../../core/llm/plan-exit-dispatcher.js'; import { buildAgimDispatcher } from '../../../core/llm/agim-dispatcher.js'; export interface AssembleOpts { /** Workspace root for fs/exec tools. */ cwd: string; /** When set, exec children inherit a thread-scoped RPC token. */ rpcCtx?: Parameters[0]['rpcCtx']; /** Composite key for the per-thread todo tracker. */ todoThreadKey: string; /** Plan-exit dispatcher context. The dispatcher is ALWAYS wired (it * self-refuses when the thread isn't in plan mode); only its advertised * tool is gated by `advertisePlanExit`. */ planExitCtx: Parameters[0]; /** Advertise the plan-exit tool to the model (only when plan mode is on). */ advertisePlanExit: boolean; /** agim (mcp__agim__*) dispatcher context. */ agimCtx: Parameters[0]; } export interface AssembledTools { /** Advertised to the model: native built-ins (stable source order) then * the external-MCP partition sorted by name. */ tools: ToolDef[]; /** Combined dispatcher, built-ins first. */ dispatch: ToolDispatcher; /** Per-call concurrency classifier. Fail-closed: an unknown tool name or a * classifier that throws returns false (serial). */ isParallelSafe: (call: ToolCallRequest) => boolean; } /** Explicit Plan Mode capability allowlist. Unknown/external tools fail closed; * side-effecting Agim tools (memo/reminder/goal/push/A2A) are intentionally * absent. Plan-exit is the one approval-only state transition allowed. */ export declare const AGIM_PLAN_MODE_ALLOWED_TOOLS: ReadonlySet; /** @deprecated Prefer AGIM_PLAN_MODE_ALLOWED_TOOLS */ export declare const NATIVE_PLAN_MODE_ALLOWED_TOOLS: ReadonlySet; export declare function assembleNativeTools(opts: AssembleOpts): AssembledTools; //# sourceMappingURL=tool-registry.d.ts.map