/** Max characters per tool result to prevent context blow-up. */ export declare const MAX_OUTPUT_CHARS = 100000; export type ToolHandler = (input: Record) => Promise<{ output: string; isError: boolean; }>; /** * Resolve and validate a file path, ensuring it stays within projectRoot. * Returns the absolute path or throws if the path escapes the sandbox. * * Re-anchoring recovery: non-Claude models (e.g. DeepSeek) sometimes ignore the * "relative to project root" contract and invent an ABSOLUTE path with the wrong * home dir — e.g. `/Users/boberik/.../agent-bober-ide/src` when the real root is * `/Users/bober4ik/.../agent-bober-ide`. When such a path lands outside the root * but still contains the root's basename, we re-anchor the suffix after it * (`src`) relative to the real root and retry. This NEVER widens the sandbox: the * re-anchored path is `resolve(projectRoot, suffix)` and is re-validated to be * inside the root before use, so a genuinely-foreign path still fails closed. */ export declare function sandboxPath(projectRoot: string, inputPath: string): string; /** * Create all tool handlers scoped to a project root. */ export declare function createToolHandlers(projectRoot: string): Map; //# sourceMappingURL=handlers.d.ts.map