import { z } from 'zod'; /** * Per-tool thinking-mode defaults + resolver. * * Implements scope memo v0.6.0 §4. Each MCP tool has a baseline opinion * about whether the underlying model should produce a reasoning trace * (`...` for Qwen3 thinking models, etc.), based on * Phase 1 + thinking-mode subset eval data: * * classify / extract / transform / diff-semantic-index → ON * reasoning helps structured / decision-bound tasks * (transform showed +1.0 score lift in the thinking-mode subset) * * summarize / summarize-long / summarize-long-chunked → OFF * prose tasks lose ~0.5 score with thinking on (over-generation, * style drift, formatting violations) * * Resolution order (highest priority first): * 1. Per-call explicit value ('on'|'off') — overrides everything * 2. Per-tool env var `OMCP_THINKING_` (uppercased + underscored) * 3. Global env var `OMCP_THINKING_MODE` * 4. Per-tool registry default (this file) * * `'auto'` and `undefined` per-call values fall through to env vars and * then the registry — there is no runtime "model decides" path in v0.6.0; * `'auto'` is intentionally a deterministic alias for the registry default. */ /** * Thinking mode as exposed on tool surface APIs. * * - `'on'`: force the model to emit a reasoning trace (no `/no_think`) * - `'off'`: suppress reasoning (`/no_think` appended) * - `'auto'`: defer to env-var + registry resolution (= the v0.6.0 default) */ export type ThinkingMode = 'on' | 'off' | 'auto'; /** * Reusable zod schema fragment for the `thinking` input field that v0.6.0 * adds to every existing tool's input schema (scope memo §4). All tools * import this rather than defining their own `z.enum(...)` to keep the * description and value set consistent. */ export declare const ThinkingInputSchema: z.ZodOptional>; /** * Per-tool baseline opinions. Tool names match the MCP tool names exactly * (kebab-case, not the env-var form). */ export declare const THINKING_DEFAULTS: Readonly>; /** * Convert a kebab-case tool name to its env-var key. * * @example envKeyFor('summarize-long') // 'OMCP_THINKING_SUMMARIZE_LONG' * @example envKeyFor('diff-semantic-index') // 'OMCP_THINKING_DIFF_SEMANTIC_INDEX' */ export declare function envKeyFor(toolName: string): string; /** * Resolve the effective thinking mode for a tool call. * * @param toolName MCP tool name (kebab-case) * @param perCall Optional per-call value (typically from the tool's * input arg `thinking`). `'auto'` and `undefined` fall * through to env-var / registry resolution. * @returns `'on'` or `'off'` — never `'auto'` (always resolved concretely). * Tools not in the registry default to `'off'` (safer for unknown * tools: avoid the wall-clock cost until someone explicitly opts in). */ export declare function resolveThinking(toolName: string, perCall?: ThinkingMode): 'on' | 'off'; //# sourceMappingURL=thinking-defaults.d.ts.map