import type { ChildProcess } from "node:child_process"; import { Effect } from "effect"; import { type ClientSideConnection, type RequestPermissionOutcome } from "@agentclientprotocol/sdk"; import { AcpConnectionError } from "./schema.js"; export interface PromptCapabilities { image?: boolean; resourceLinks?: boolean; } export interface McpCapabilities { supported?: boolean; } export interface TerminalExitStatus { exitCode?: number | null; signal?: string | null; } export interface TerminalState { process: ChildProcess; output: string; truncated: boolean; outputByteLimit: number | null; exitStatus: TerminalExitStatus | null; exitPromise: Promise; resolveExit: (status: TerminalExitStatus) => void; } export interface AgentConnection { process: ChildProcess; connection: ClientSideConnection; agentSessionId: string; prompting: boolean; currentAssistantTurnId: string | null; accumulatedText: string; accumulatedThought: string; lastPlanContent: string | null; terminals: Map; pendingPermissions: Map void; }>; cwd: string; cleaned: boolean; configOptions: Array>; availableCommands: Array>; modes: Record | null; promptCapabilities: PromptCapabilities; mcpCapabilities: McpCapabilities; supportsLoadSession: boolean; supportsSessionList: boolean; } export interface SubscribeResult { subscriberId: string; stream: ReadableStream; prompting: boolean; assistantTurnId: string | null; latestEventId: number; replayGap: boolean; } export declare const appendOutput: (terminal: TerminalState, chunk: string) => void; export declare const estimateTokenCount: (text: string) => number; export declare const getTerminal: (conn: AgentConnection, terminalId: string) => TerminalState; /** * Look up a connection or yield an AcpConnectionError. * Replaces 5 duplicate "get conn or error" patterns. */ export declare const requireConnection: (connections: Map, sessionId: string) => Effect.Effect;