import type { KnowledgeGraph } from '../../contracts/graph.js'; import type { ContextPackRetrievalPlanDetail, RetrievalQualitySnapshot } from '../../contracts/retrieval-plan.js'; export declare const CONCEPTUAL_WORKFLOW_RESERVATION_BOOST = 14; export interface QueryEvidenceObligation { index: number; terms: string[]; } export interface ConceptualFallbackSelectedNode { nodeId: string; sourceFile: string; relevanceBand: 'direct' | 'related' | 'peripheral'; matchScore: number; } export interface ConceptualFallbackInput { question: string; initialQuality: RetrievalQualitySnapshot; selectedNodes: readonly ConceptualFallbackSelectedNode[]; /** Snippet-grounded coverage for the initial selected result, when available. */ initialQueryEvidence?: QueryEvidenceCoverage; community?: number; fileType?: string; } export interface ConceptualFallbackProposal { plan: ContextPackRetrievalPlanDetail; nodeBoosts: ReadonlyMap; /** Snippet-grounded coverage used for the public retrieval-plan contract. */ initialQueryEvidence?: QueryEvidenceCoverage; /** Internal prompt-obligation coverage used to decide whether recovery improved the result. */ obligationMatches?: ReadonlyMap>; obligationCount?: number; initialObligationCoverage?: number; preferredObligationAnchors?: ReadonlyMap; } export declare function queryEvidenceObligations(question: string): QueryEvidenceObligation[]; export declare function queryEvidenceTermsMatch(left: string, right: string): boolean; export interface QueryEvidenceNode { label: string; source_file: string; snippet?: string | null; } export interface QueryEvidenceCoverage { total: number; covered: number; covered_obligations: string[]; missing_obligations: string[]; } export declare function flowQueryEvidenceCandidateAllowed(question: string, node: { label: string; sourceFile: string; nodeKind?: string; }): boolean; /** Measures whether selected snippets, rather than filenames alone, carry each prompt obligation. */ export declare function evaluateQueryEvidenceCoverage(question: string, nodes: readonly QueryEvidenceNode[]): QueryEvidenceCoverage; /** * The retrieval plan is surfaced alongside the final selected snippets. Keep * its public obligation summary tied to those snippets even when a later * recovery or reranking stage replaces the conceptual-fallback result. */ export declare function reconcileRetrievalPlanQueryEvidence(plan: ContextPackRetrievalPlanDetail | undefined, question: string, nodes: readonly QueryEvidenceNode[]): ContextPackRetrievalPlanDetail | undefined; /** * Removes same-vocabulary computations whose repository scope is weaker than * the best candidates for an explicit divergence request. Explicit symbol or * path anchors can still override this at the retrieval boundary. */ export declare function underScopedDivergenceNodeIds(graph: KnowledgeGraph, question: string): ReadonlySet; export declare function planConceptualFallback(graph: KnowledgeGraph, input: ConceptualFallbackInput): ConceptualFallbackProposal; export declare function finalizeConceptualFallbackPlan(proposal: ConceptualFallbackProposal, recoveredQuality: RetrievalQualitySnapshot, initialFiles: ReadonlySet, recoveredFiles: ReadonlySet, recoveredNodeIds?: ReadonlySet, recoveredQueryEvidence?: QueryEvidenceCoverage): { plan: ContextPackRetrievalPlanDetail; useRecovered: boolean; };