import { type LLMModel, type LLMProviders, type LLMPurposes, type LLMReasoningEffort } from '../LLMService.typedefs'; import { type LLMPromptConfig } from '../client/llmConfig.schema'; import { type LLMCapabilityRequirement } from '../client/defineLLMPrompts'; export type GateFailureReason = 'config-parse' | 'unknown-model' | 'unmet-capabilities'; /** * Per-call routing overrides applied to the fetched config before it is * validated, so an overridden model is checked against `LLM_SERVICE_MODELS` and * the requested capabilities exactly like a model the prompt itself names. */ export interface GateConfigOverrides { provider?: LLMProviders; model?: string; reasoningEffort?: LLMReasoningEffort; } export interface GateInput { rawConfig: unknown; requires: LLMCapabilityRequirement[]; purpose: LLMPurposes; overrides?: GateConfigOverrides; } export type GateResult = { valid: true; config: LLMPromptConfig; model: LLMModel; } | { valid: false; reason: GateFailureReason; detail: string; }; /** * The runtime config gate, run on every prompt fetch (live or fallback). Prompt * variables are a code-owned compile-time contract; this gate validates only * routing configuration and model capabilities. */ export declare function runValidationGate(input: GateInput): GateResult;