import { AIProviderName } from "../../lib/constants/enums.js";
/**
 * Master schema for all text generation options.
 * This object provides metadata for validation and help text in the CLI loop.
 * It is derived from the main TextGenerationOptions interface to ensure consistency.
 */
export const textGenerationOptionsSchema = {
    provider: {
        type: "string",
        description: "The AI provider to use.",
        allowedValues: Object.values(AIProviderName)
            .filter((p) => typeof p === "string")
            .filter((p) => p !== AIProviderName.AUTO),
    },
    model: {
        type: "string",
        description: "The specific model to use from the provider.",
    },
    temperature: {
        type: "number",
        description: "Controls randomness of the output (e.g., 0.2, 0.8).",
    },
    maxTokens: {
        type: "number",
        description: "The maximum number of tokens to generate.",
    },
    output: {
        type: "string",
        description: "AI response format - specify just the format value (e.g., 'json', 'structured'). Note: This is automatically transformed to { format: value } for the API.",
        allowedValues: ["text", "json", "structured", "none"],
    },
    systemPrompt: {
        type: "string",
        description: "The system prompt to guide the AI's behavior.",
    },
    timeout: {
        type: "number",
        description: "Timeout for the generation request in milliseconds.",
    },
    disableTools: {
        type: "boolean",
        description: "Disable all tool usage for the AI.",
    },
    enabledToolNames: {
        type: "string",
        description: 'Comma-separated list of tool names to enable (e.g., "read,write,search").',
    },
    maxSteps: {
        type: "number",
        description: "Maximum number of tool execution steps.",
    },
    enableAnalytics: {
        type: "boolean",
        description: "Enable or disable analytics for responses.",
    },
    enableEvaluation: {
        type: "boolean",
        description: "Enable or disable AI-powered evaluation of responses.",
    },
    evaluationDomain: {
        type: "string",
        description: 'Domain expertise for evaluation (e.g., "general AI assistant").',
    },
    toolUsageContext: {
        type: "string",
        description: "Context about tools/MCPs used in the interaction.",
    },
    enableSummarization: {
        type: "boolean",
        description: "Enable or disable automatic conversation summarization for this request.",
    },
    thinking: {
        type: "boolean",
        description: "Enable extended thinking/reasoning capability.",
    },
    thinkingBudget: {
        type: "number",
        description: "Token budget for thinking (Anthropic models: 5000-100000).",
    },
    thinkingLevel: {
        type: "string",
        description: "Thinking level for Gemini 3 models: minimal, low, medium, high.",
        allowedValues: ["minimal", "low", "medium", "high"],
    },
    skipToolPromptInjection: {
        type: "boolean",
        description: "Skip injecting tool descriptions into the system prompt. Useful when tool info is already provided.",
    },
    disableToolCache: {
        type: "boolean",
        description: "Disable tool result caching for this request (overrides global mcp.cache.enabled).",
    },
};
//# sourceMappingURL=optionsSchema.js.map