js/ai/acp/client

js/ai/acp/client.ts

internal:ai/acp/client — agent-side client for negotiated ACP v1 host capabilities.

Each instance is bound to one ACP session and borrows its owning server's JSON-RPC peer. Closing the server invalidates subsequent client operations.

Classes

class AcpClient {

Agent-side view of one negotiated ACP client.

Instances are session-bound. Besides exposing every client request in the stable protocol, the ACP server automatically converts negotiated file, terminal, and elicitation capabilities into model tools.

Getters

get capabilities(): AcpClientCapabilities

Negotiated client capabilities.

get sessionId(): string

Session id automatically attached to session-scoped client requests.

Methods

async update(update: AcpSessionUpdate, meta?: AcpMeta): Promise<void>

Send any stable session update.

async readTextFile( path: string, opts: { line?: number; limit?: number; meta?: AcpMeta; signal?: AbortSignal } = {}, ): Promise<{ content: string; _meta?: AcpMeta }>

Read a text file through the negotiated client filesystem capability.

async writeTextFile( path: string, content: string, opts: { meta?: AcpMeta; signal?: AbortSignal } = {}, ): Promise<{ _meta?: AcpMeta }>

Write a text file through the negotiated client filesystem capability.

async createTerminal( opts: AcpCreateTerminalOptions, signal?: AbortSignal, ): Promise<{ terminalId: string; _meta?: AcpMeta }>

Create a client-hosted terminal.

async terminalOutput(terminalId: string, signal?: AbortSignal): Promise<AcpTerminalOutput>

Read current output from a client-hosted terminal.

async waitForTerminalExit( terminalId: string, signal?: AbortSignal, ): Promise<{ exitCode?: number | null; signal?: string | null; _meta?: AcpMeta }>

Wait until a client-hosted terminal exits.

async killTerminal(terminalId: string, signal?: AbortSignal): Promise<void>

Kill a client-hosted terminal process.

async releaseTerminal(terminalId: string, signal?: AbortSignal): Promise<void>

Release a client-hosted terminal and its retained output.

async elicit( request: AcpElicitationRequest, signal?: AbortSignal, ): Promise<AcpElicitationResponse>

Request negotiated structured user input.

async completeElicitation(elicitationId: string, meta?: AcpMeta): Promise<void>

Tell the client that a URL elicitation has completed.

extension(method: string, params?: unknown, signal?: AbortSignal): Promise<unknown>

Call a client extension method. Extension names must begin with _.

async notifyExtension(method: string, params?: unknown): Promise<void>

Send a client extension notification. Extension names must begin with _.