Files
oh-my-pi/packages/coding-agent/src/tools/tool-timeouts.ts
T
roboomp ca874cf134 fix(lsp): raised timeout ceiling to 300 seconds
Allowed explicit LSP request budgets above 60 seconds and exposed the 5–300 second range in the tool schema.

Fixes #5804
2026-07-17 07:43:40 +00:00

31 lines
1.0 KiB
TypeScript

export interface ToolTimeoutConfig {
/** Default timeout in seconds when agent omits the field */
default: number;
/** Minimum allowed timeout in seconds */
min: number;
/** Maximum allowed timeout in seconds (per-tool ceiling) */
max: number;
}
export const TOOL_TIMEOUTS = {
bash: { default: 300, min: 1, max: 3600 },
eval: { default: 30, min: 1, max: 3600 },
browser: { default: 30, min: 1, max: 300 },
ssh: { default: 60, min: 1, max: 3600 },
fetch: { default: 20, min: 1, max: 45 },
lsp: { default: 20, min: 5, max: 300 },
debug: { default: 30, min: 5, max: 300 },
} as const satisfies Record<string, ToolTimeoutConfig>;
export type ToolWithTimeout = keyof typeof TOOL_TIMEOUTS;
/**
* Clamp a raw timeout to the allowed range for a tool.
* If rawTimeout is undefined, returns the tool's default.
*/
export function clampTimeout(tool: ToolWithTimeout, rawTimeout?: number): number {
const config = TOOL_TIMEOUTS[tool];
const timeout = rawTimeout ?? config.default;
return Math.max(config.min, Math.min(config.max, timeout));
}