import type { Context } from '../core/context.js'; import type { TextBlock } from '../types/blocks.js'; import type { CompactReport } from '../types/compactor.js'; import type { CompletedWorkEvidence, CompletedWorkSource, ContextEvidenceState, ToolOutputMetadata } from '../types/context-evidence.js'; export declare function createContextEvidenceState(): ContextEvidenceState; export interface RecordToolOutputEvidenceInput { toolUseId: string; toolName: string; input: unknown; content: string; ok: boolean; outputBytes?: number | undefined; outputTokens?: number | undefined; outputLines?: number | undefined; } export declare function recordUserIntentEvidence(ctx: Context, text: string): void; export declare function recordToolOutputEvidence(ctx: Context, input: RecordToolOutputEvidenceInput): ToolOutputMetadata; export declare function markAssistantReferencedEvidence(ctx: Context, text: string): void; export declare function buildContextEvidenceDigest(ctx: Context): string; export declare function repeatedReadPressure(ctx: Context): number; /** * Deterministic post-compaction sanity check. Cheap and local: records whether * the compacted context still carries an intent anchor and a tool/path trail. * Shared across all compactors so they report quality the same way (previously * only HybridCompactor did). Advisory on its own — pair with * `injectEvidenceFloor` to actually repair a flagged loss. */ export declare function checkCompactionQuality(ctx: Context, opts: { collapsedDigest?: string | undefined; evidenceDigest?: string | undefined; reduced: boolean; }): CompactReport['quality']; /** * Enforce an evidence floor: when `checkCompactionQuality` flags that * compaction dropped the intent anchor or tool/path trail, prepend a compact * `[context_state]` system message rebuilt from the live evidence state so the * session goal is never silently lost. Idempotent (won't double-inject) and a * no-op when quality is fine or there is no evidence to inject. Returns true * when it injected a block (so the caller re-estimates tokens). */ export declare function injectEvidenceFloor(ctx: Context, quality: CompactReport['quality'] | undefined): boolean; /** Marker prefixing the ledger's system-prompt block (also used to find/replace it). */ export declare const COMPLETED_WORK_LEDGER_MARKER = "[completed_work_ledger]"; export interface RecordCompletedWorkInput { /** Stable dedupe key, e.g. `task:` — re-completion updates in place. */ key: string; source: CompletedWorkSource; summary: string; /** Optional pointer to proof (test run, commit hash, file path). */ evidence?: string | undefined; /** Epoch ms; defaults to now. */ completedAt?: number | undefined; } /** * Append one finished unit of work to the session ledger. The provider request * composer renders this state as a volatile tail block; the stable system-prompt * prefix is never mutated here. */ export declare function recordCompletedWorkEvidence(ctx: Context, input: RecordCompletedWorkInput): CompletedWorkEvidence; /** Render the ledger's system-prompt block text (marker + newest entries). */ export declare function formatCompletedWorkLedger(items: readonly CompletedWorkEvidence[]): string; /** Build the current volatile completed-work block without mutating the prompt. */ export declare function buildCompletedWorkLedgerBlock(ctx: Context): TextBlock | undefined; /** * @deprecated Volatile state must be composed at request time. Kept as a * compatibility no-op for embedders importing the old helper. */ export declare function syncCompletedWorkLedgerBlock(_ctx: Context): void; //# sourceMappingURL=context-evidence.d.ts.map