/** * Summarizer callback used by SessionController.compact (keeps the controller slim). */ import type { ChatMessage, ProviderId, SuccessfulRequestSnapshot } from "../../types.js"; import { type CompactResult } from "../../agent/context-manager.js"; import { OperationLedger } from "../../llm/operation-ledger.js"; import type { AnyAppEvent } from "../events/app-event.js"; import type { EventSequencer } from "../events/sequencer.js"; export declare function summarizeForSessionCompact(prompt: string, opts: { provider: ProviderId | undefined; model: string | undefined; signal?: AbortSignal | undefined; /** plan-implement needs denser handoff memory — allow a larger completion. */ purpose?: "default" | "plan-implement" | undefined; stage?: "single" | "map" | "reduce" | undefined; sourceMessages?: readonly ChatMessage[] | undefined; baseRequest?: SuccessfulRequestSnapshot | undefined; history?: readonly ChatMessage[] | undefined; contextLimitTokens?: number | undefined; operation?: OperationLedger | undefined; onToken?: ((token: string, replace?: boolean) => void) | undefined; }): Promise; interface RunSessionCompactionOptions { readonly history: ChatMessage[]; readonly sessionTranscript?: string | undefined; readonly keepRecent: number; readonly signal: AbortSignal; readonly purpose?: "default" | "plan-implement" | undefined; readonly provider: ProviderId | undefined; readonly model: string | undefined; readonly successfulRequest?: SuccessfulRequestSnapshot | undefined; readonly contextLimitTokens?: number | undefined; /** * Current occupancy of the next model request, when the session already has a * request-scoped measurement. Reporting against it keeps the manual card on * the same scale as the automatic one and as the composer chip. */ readonly requestTokensBefore?: number | undefined; readonly persist: boolean; readonly compactionId: string; readonly sequencer: EventSequencer; readonly emit: (event: AnyAppEvent) => void; readonly isCurrent: () => boolean; readonly commit: (result: CompactResult, reported: ReportedCompaction) => void; readonly persistNow: () => Promise; } export interface ReportedCompaction { readonly beforeTokens: number; readonly afterTokens: number; readonly scope: "message-history" | "assembled-request"; } export declare function runSessionCompaction(options: RunSessionCompactionOptions): Promise; export {};