import type { ReviewFinding } from "../adversarial_review_store.js"; import type { ResolutionRecord } from "../resolution_store.js"; /** 判定 quote 是否仍在 artifact 原文。 * - true:quote(归一化后)在原文 → 仍在 * - false:读到了原文但 quote 不在 → 已改/不在 * - null:artifact 读不到(glob/不存在/空文件)→ 无法判定(调用方按场景 fail-open 或当仍在) * 归一复用 normalizeForMatch(全角/空白/零宽),与 deterministic 降级判定同源同精度,避免两处归一漂移。 */ export declare function isQuoteStillPresent(projectRoot: string, artifact: string, quote: string, locationHint?: string, wordBoundary?: boolean): boolean | null; /** 在 artifact 原文找 quote 当前首次匹配的行号(1-based),找不到返 null。 * 帮 resolve=fixed 报错定位 quote 当前实际位置——声明 location 是审查时填的,用户修复后 quote 可能移位, * 报"quote 仍在 @声明location"会让用户去声明位置找不到(改错列反复试)。复用 isQuoteStillPresent 的归一与读取,保持一致精度。 */ export declare function findQuoteLineNumber(projectRoot: string, artifact: string, quote: string): number | null; /** resolve=fixed / auto_fix 核验修复成立:跨产物 finding 走 fix_verification 锚点,否则走 quote 消失。 * 锚点核验(normalizeArtifactPath(fix.artifact) !== finding.artifact,即修复在 quote 来源之外;α 路径归一比较): * expected_present 在 fix.artifact 词边界出现 OR expected_absent 在 fix.artifact 词边界消失 → 通过。 * γ:锚点须 >= MIN_ANCHOR_LEN 且词边界匹配(非任意子串),防短/泛 token(id/no/ok)假满足;假锚点仍由差量重审兜底。 * 默认(无锚点 / 同文件):quote 在 finding.artifact 消失 → 通过。 * 返回 ok + 失败 detail(供 handler 构建报错)。 */ export declare function verifyFindingFixed(projectRoot: string, finding: ReviewFinding, resolutions?: readonly ResolutionRecord[], removedArtifacts?: ReadonlySet): { ok: boolean; detail?: string; }; /** deterministic 引用无法核实时的降级信息。 */ export interface DowngradedDeterministic { artifact: string; location: string; /** quote 预览(>40 字截断),供用户核对为何降级 */ quote_preview: string; reason: string; } export type ValidatedFindings = { findings: ReviewFinding[]; /** quote 不在原文时产生的降级清单。 */ downgraded: DowngradedDeterministic[]; }; /** * 验证 deterministic finding 的 quote 真在原文。 * - deterministic + quote 在 artifact 原文 → 保留 deterministic(铁证) * - deterministic + quote 不在原文或产物不可读 → 降级 llm_subjective(未核实不能冒充铁证) * - 非 deterministic / 无 quote → 不变 * 返回 {findings, downgraded}:downgraded 供 handler 在 result 显式提示,治"静默降级、用户困惑以为篡改"。 */ export declare function validateDeterministicQuotes(findings: ReviewFinding[], projectRoot: string): ValidatedFindings; /** quote 定位方法(submit 前预检用,按精度降级)。 */ export type QuoteMatchMethod = "exact" | "normalized" | "multiline" | "token_fallback" | "locator" | "none"; /** * submit 前预检:quote 必须可定位(exact/normalized/multiline/token/locator)。 * 找不到返 { method: "none" } —— 调用方禁止静默 downgrade,须返回 quote_validation_failed(reject)。 * * 与 isQuoteStillPresent(fixed 核验精确,wordBoundary)互补:locateQuote 宽松(多方法 + token fallback), * 用于 submit 预检证明 quote 大致在(防幻觉/伪造 quote);fixed 核验仍用 isQuoteStillPresent 精确匹配(不降级)。 */ export declare function locateQuote(projectRoot: string, finding: { artifact: string; quote: string; location?: string; }): { method: QuoteMatchMethod; };