/** * Web Search Grounding Module * * Implements evidence-first grounding with strict verification: * 1. Risk-based claim selection (don't ground everything) * 2. Claim-driven query generation * 3. Deterministic snippet extraction BEFORE LLM verification * 4. Strict verifier with programmatic citation validation * 5. Four-state grounding status aggregation */ import { ClaimComparison, GroundingResult, GroundingEvidence, GroundingStatus } from './types.js'; interface RiskAssessment { score: number; reasons: string[]; shouldGround: boolean; } /** * Compute risk score for a claim to decide if it needs grounding. * Higher risk = more likely to be wrong and more important to verify. */ export declare function assessClaimRisk(claim: ClaimComparison): RiskAssessment; /** * Select claims to ground based on risk, respecting budget. */ export declare function selectClaimsForGrounding(claims: ClaimComparison[], maxClaims?: number): Array<{ claim: ClaimComparison; risk: RiskAssessment; }>; /** * Generate search queries for a claim. * Claim-driven, not topic-driven. */ export declare function generateSearchQueries(claim: string): string[]; /** * Score a URL's authority based on domain patterns. */ export declare function scoreAuthority(url: string): { score: number; label: string; }; /** * Extract relevant snippets from text based on claim keywords. * This is DETERMINISTIC - no LLM involved. */ export declare function extractRelevantSnippets(text: string, claim: string, maxSnippets?: number): string[]; /** * Run the strict verifier on snippets. * Includes programmatic validation that quotes exist in snippets. */ export declare function verifyClaimAgainstSnippets(claim: string, snippets: Array<{ url: string; text: string; authority: { score: number; label: string; }; }>): Promise<{ evidence: GroundingEvidence[]; tokensUsed: number; }>; /** * Aggregate evidence into a four-state grounding status. */ export declare function aggregateGroundingStatus(evidence: GroundingEvidence[]): { status: GroundingStatus; confidence: number; }; /** * Ground a set of claims using web search. * This is the main entry point. */ export declare function groundClaims(claims: ClaimComparison[], webSearchFn: (query: string) => Promise>, fetchPageFn: (url: string) => Promise): Promise<{ groundedClaims: Array; ungroundedClaims: ClaimComparison[]; tokensUsed: number; stats: { claimsAssessed: number; claimsGrounded: number; verified: number; contradicted: number; conflicted: number; unverified: number; }; }>; export type CombinedStatus = 'strong' | 'consensus_ungrounded' | 'plausible_verify' | 'likely_wrong' | 'needs_adjudication' | 'high_risk_unverified' | 'moderate'; export declare function getCombinedStatus(agreementStatus: ClaimComparison['status'], groundingStatus?: GroundingStatus): CombinedStatus; export {}; //# sourceMappingURL=grounding.d.ts.map