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>; } export declare function createRuntime(adapter: AdapterConfig): AcpRuntime; export {};