/** * @license * Copyright 2025 Vybestack LLC * SPDX-License-Identifier: Apache-2.0 */ import type { IContent } from '../../services/history/IContent.js'; import type { CompressionStrategy, CompressionContext, CompressionResult, DensityResult, DensityConfig, StrategyTrigger } from './types.js'; export declare const READ_TOOLS: readonly ["read_file", "read_line_range", "read_many_files", "ast_read_file"]; export declare const WRITE_TOOLS: readonly ["write_file", "ast_edit", "replace", "insert_at_line", "delete_line_range"]; /** Shared suffix hint used in both pruned pointers and tool summaries */ export declare const RERUN_HINT_SUFFIX = "\u2014 re-run to view"; export declare const PRUNED_POINTER = "[Result pruned \u2014 re-run to view]"; export declare const FILE_INCLUSION_OPEN_REGEX: RegExp; export declare const FILE_INCLUSION_CLOSE = "--- End of content ---"; /** * @plan PLAN-20260211-HIGHDENSITY.P09 * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-004.3 * @pseudocode high-density-optimize.md lines 20-53 */ export declare class HighDensityStrategy implements CompressionStrategy { readonly name: "high-density"; readonly requiresLLM = false; readonly trigger: StrategyTrigger; /** * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-005.1, REQ-HD-006.1, REQ-HD-007.1, REQ-HD-013.7 * @pseudocode high-density-optimize.md lines 20-53 */ optimize(history: readonly IContent[], config: DensityConfig): DensityResult; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.1, REQ-HD-008.2, REQ-HD-008.3, REQ-HD-008.4, REQ-HD-008.5, REQ-HD-008.6 * @pseudocode high-density-compress.md lines 10-91 * * Deterministic (no-LLM) compression: * 1. Calculate tail size from preserveThreshold * 2. Calculate target token budget * 3. Summarize tool responses in the head * 4. Truncate oldest entries if still over budget * 5. Return CompressionResult with metadata */ compress(context: CompressionContext): Promise; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.2 * @pseudocode high-density-compress.md line 27 * * Adjust the tail boundary backward to avoid splitting tool_call/response * pairs. If the boundary lands on a tool_response, move it back to include * the preceding AI tool_call entry as well. */ private adjustTailBoundary; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.3 * @pseudocode high-density-compress.md lines 100-112 * * Replace tool_response block results with compact one-line summaries. * Non-tool_response blocks are passed through unchanged. */ private summarizeToolResponseBlocks; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.3 * @pseudocode high-density-compress.md lines 120-149 * * Build a compact summary string for a tool response block. * Format: `[toolName keyParam: status]` */ private buildToolSummaryText; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.6 * @pseudocode high-density-compress.md lines 155-175 * * Remove oldest head entries until the estimated token count is * at or below the target. Never removes tail entries. */ private truncateToTarget; /** * @plan PLAN-20260211-HIGHDENSITY.P14 * @requirement REQ-HD-008.5 * @pseudocode high-density-compress.md lines 180-193 */ private buildMetadata; /** * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-005.1, REQ-HD-005.2, REQ-HD-005.3, REQ-HD-005.6, * REQ-HD-005.7, REQ-HD-005.8, REQ-HD-005.9 * @pseudocode high-density-optimize.md lines 60-209 */ private pruneReadWritePairs; /** * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-005.9 * @pseudocode high-density-optimize.md lines 215-255 */ private canPruneReadManyFiles; /** * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-006.1, REQ-HD-006.2, REQ-HD-006.3, REQ-HD-006.4, REQ-HD-006.5 * @pseudocode high-density-optimize.md lines 280-359 */ private deduplicateFileInclusions; /** * @plan PLAN-20260211-HIGHDENSITY.P11 * @requirement REQ-HD-007.1, REQ-HD-007.2, REQ-HD-007.3, REQ-HD-007.4, * REQ-HD-007.6, REQ-HD-013.6 * @pseudocode high-density-optimize.md lines 400-464 */ private pruneByRecency; }