import type { PluginConfig } from "../config" import type { Logger } from "../logger" import type { PromptStore } from "../prompts/store" import type { CompressionBlock, CompressionMode, SessionState, WithParts } from "../state" export interface ToolContext { client: any state: SessionState logger: Logger config: PluginConfig prompts: PromptStore } export interface CompressRangeEntry { startId: string endId: string summary: string } export interface CompressRangeToolArgs { topic: string content: CompressRangeEntry[] } export interface CompressMessageEntry { messageId: string topic: string summary: string } export interface CompressMessageToolArgs { topic: string content: CompressMessageEntry[] } export interface BoundaryReference { kind: "message" | "compressed-block" rawIndex: number messageId?: string blockId?: number anchorMessageId?: string } export interface SearchContext { rawMessages: WithParts[] rawMessagesById: Map rawIndexById: Map summaryByBlockId: Map } export interface SelectionResolution { startReference: BoundaryReference endReference: BoundaryReference messageIds: string[] messageTokenById: Map toolIds: string[] requiredBlockIds: number[] } export interface ResolvedMessageCompression { entry: CompressMessageEntry selection: SelectionResolution anchorMessageId: string } export interface ResolvedRangeCompression { index: number entry: CompressRangeEntry selection: SelectionResolution anchorMessageId: string } export interface ResolvedMessageCompressionsResult { plans: ResolvedMessageCompression[] skippedIssues: string[] skippedCount: number } export interface ParsedBlockPlaceholder { raw: string blockId: number startIndex: number endIndex: number } export interface InjectedSummaryResult { expandedSummary: string consumedBlockIds: number[] } export interface AppliedCompressionResult { compressedTokens: number messageIds: string[] newlyCompressedMessageIds: string[] newlyCompressedToolIds: string[] } export interface CompressionStateInput { topic: string batchTopic: string startId: string endId: string mode: CompressionMode runId: number compressMessageId: string compressCallId?: string summaryTokens: number }