import type { ExtensionContext, SessionEntry, SessionMessageEntry } from "@earendil-works/pi-coding-agent"; import { type CompressionCore, type CompressionState, type Config } from "acp-kernel"; import { type AdapterConfig } from "./config.js"; import { entriesToCoreMessages } from "./messages.js"; import { SessionStateStore } from "./state.js"; type AgentMessage = SessionMessageEntry["message"]; export declare function readContextEntries(sm: ExtensionContext["sessionManager"]): SessionEntry[]; export declare function isPiHost(sm: ExtensionContext["sessionManager"]): boolean; export interface AcpRuntime { core: CompressionCore; store: SessionStateStore; adapter: AdapterConfig; setAdapter(adapter: AdapterConfig): void; /** Record that a nudge was already shown for the turn keyed by last user msg * id, so a tier/growth nudge prints at most once per turn instead of on * every context event (pi fires multiple per assistant reply). */ markNudgeShown(turnKey: string): void; nudgeShownFor(turnKey: string): boolean; /** Clear per-turn nudge tracking. Called on session_start so the Set does not * grow unbounded across sessions in a long-lived Pi process. */ clearNudgeTracking(): void; liveContextLimit(ctx: ExtensionContext): number; configFor(ctx: ExtensionContext): Config; stateFor(ctx: ExtensionContext, liveMessages?: AgentMessage[]): Promise<{ state: CompressionState; coreMessages: ReturnType; entries: SessionEntry[]; }>; save(state: CompressionState, ctx: ExtensionContext): Promise; acquireLock(sid: string): Promise<() => void>; /** One-shot directive injected into the next context rebuild (manual * /acp-compact, /acp-snap text fallback). Consumed by the context transform. */ pendingDirective: { text: string; } | null; /** Timestamp of the last context event (idle-snap baseline). */ lastActivity: number; /** Last observed usage snapshot + session file (idle-snap inputs). */ lastUsage: { tokens: number; limit: number; } | null; lastSessionFile: string | null; /** Vision capability of the model seen on the last context event. */ lastModelVision: boolean; } export declare function createRuntime(adapter: AdapterConfig): AcpRuntime; export {};