import type { SeededGraphQueryResult } from "./graph-runtime.js"; import type { RetrievalHit } from "./retrieval-index.js"; import type { SemanticCoverageQuery, SemanticCoverageScore } from "./semantic/types.js"; export type RetrievalCoverageMode = "semantic" | "lexical"; export interface RetrievalCoverage { coverageMode: RetrievalCoverageMode; warnings: string[]; queryFacetCoverage: number; sourceDiversity: number; unresolvedEntities: string[]; unresolvedRelations: string[]; truncatedFrontierCount: number; contradictions: number; evidenceGaps: string[]; /** Gaps in the displayed subset that the full retrieved candidate set can cover. */ budgetLimitedGaps: string[]; /** Whether the evidence actually returned to the caller covers the request. */ displaySufficient: boolean; /** Whether the complete fused candidate pool covers the request. */ sufficient: boolean; } export interface RetrievalBudget { maxSeedCandidates: number; maxVisitedNodes: number; maxDepth: number; maxEvidence: number; tokenBudget: number; } export interface RetrievalCoverageRequirements { requiredPageTypes?: readonly string[]; minimumSourceDiversity?: number; requireContradictionCheck?: boolean; minimumQueryFacetCoverage?: number; minimumPassageCoverage?: number; } export declare function extractQueryEntities(query: string): string[]; export declare function inferCoverageRequirements(query: string, explicit?: RetrievalCoverageRequirements): Required; export interface RetrievalEvidenceSignals { (hit: RetrievalHit): Set; /** All query facets and entities, including those absent from retrieved pages. */ readonly querySignalCount: number; } /** Request-local reuse between display selection and full/display coverage. Retain * only matched query signals, never another body/token index or workspace cache. */ export declare function createRetrievalEvidenceSignals(query: string): RetrievalEvidenceSignals; export declare function semanticCoverageQueries(query: string, explicit?: RetrievalCoverageRequirements): SemanticCoverageQuery[]; export declare function assessRetrievalCoverage(params: { query: string; /** Full fused candidate set, independent of the display budget. */ hits: readonly RetrievalHit[]; /** Budget-limited subset returned to the caller. Defaults to the full set. */ displayHits?: readonly RetrievalHit[]; /** Same-query, attempt-local signals shared with display selection. */ evidenceSignals?: (hit: RetrievalHit) => ReadonlySet; graphResult: SeededGraphQueryResult; requirements?: RetrievalCoverageRequirements; coverageMode?: RetrievalCoverageMode; semanticScores?: readonly SemanticCoverageScore[]; warnings?: readonly string[]; }): RetrievalCoverage; export declare function estimateRetrievalContextTokens(hits: readonly RetrievalHit[]): number; //# sourceMappingURL=retrieval-coverage.d.ts.map