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