/** * Message Compression Utilities * * Pure, stateless helpers for compressing and deduplicating LLM message * histories. Extracted from `stage-executor.ts` to keep that module focused * on orchestration concerns. */ import type { LLMMessage } from '../types/llm.types.js'; /** * Simple djb2 hash — used to detect duplicate tool results across iterations. * Pure arithmetic, no imports needed. * * Exported for unit testing. */ export declare function djb2(s: string): number; /** * Compress a message array in-place by replacing old tool results with a * placeholder, keeping the most recent `keepRecent` messages intact. * Returns the number of messages replaced. * * Extracted from `StageExecutor.compressToolResults` for unit testing. */ export declare function compressMessageHistory(messages: LLMMessage[], keepRecent?: number): number; /** * Collapse consecutive repeated lines in tool output to `" (×N)"`. * Only exact-match consecutive duplicates are collapsed — non-adjacent repeats * and blank lines are left untouched to preserve structural context. */ export declare function deduplicateLines(text: string): string; //# sourceMappingURL=message-compression.d.ts.map