export type RetrievalLevel = 0 | 1 | 2 | 3 | 4 | 5; export type RetrievalIntent = 'rename' | 'explain' | 'implement' | 'migrate' | 'document' | 'debug' | 'refactor' | 'test' | 'review' | 'impact' | 'chitchat' | 'unknown'; export type RetrievalExcludedDomain = 'test' | 'benchmark' | 'fixture' | 'generated' | 'docs' | 'config' | 'build_artifact'; export type RetrievalGenerationIntent = 'runtime_generation' | 'display_rendering' | 'unknown'; export type RetrievalTargetDomainHint = 'backend_runtime' | 'frontend_display' | 'unknown'; export interface RetrievalGenerationDebugSignals { display_shaped: boolean; generic_generation_shaped: boolean; backend_runtime_shaped: boolean; report_generation_shaped: boolean; build_static_shaped: boolean; explanation_shaped: boolean; flow_proof_shaped: boolean; } export interface RetrievalGateSignals { has_pr_diff: boolean; has_stack_trace: boolean; mentioned_paths: ReadonlyArray; mentioned_symbols: ReadonlyArray; generation_intent?: RetrievalGenerationIntent; target_domain_hint?: RetrievalTargetDomainHint; generation_debug?: RetrievalGenerationDebugSignals; excluded_domains?: ReadonlyArray; excluded_terms?: ReadonlyArray; excluded_path_hints?: ReadonlyArray; } export interface RetrievalGateDecision { level: RetrievalLevel; /** True iff level === 0 — caller can short-circuit retrieval entirely. */ skipped_retrieval: boolean; /** Human-readable explanation of why this level was selected. */ reason: string; /** Intent the gate inferred (or that the caller supplied). */ intent: RetrievalIntent; /** Signals the gate detected from the prompt + caller hints. */ signals: RetrievalGateSignals; }