mirror of
https://github.com/agentclientprotocol/claude-agent-acp.git
synced 2026-11-11 11:51:14 +00:00
Moves `ClientConnection` and `ChangedMetaClient` verbatim from `src/v1/acp-agent.ts` into `src/v1/client-connection.ts`. No behaviour change. - Both classes gain `export`; nothing else in them changes. - `client-connection.ts` imports nothing from `acp-agent.ts`. - The `acp-client.ts` comment that names where `ClientConnection` lives now points to the new file. - Emitted JS differs from `main` only in `dist/v1/acp-agent.js` (the import and the two classes) plus the new `dist/v1/client-connection.js`. Review with `git diff --color-moved` to see the move.
47 lines
2.1 KiB
TypeScript
47 lines
2.1 KiB
TypeScript
import type {
|
|
AuthStatusUpdateNotification,
|
|
CompleteElicitationNotification,
|
|
CreateElicitationRequest,
|
|
CreateElicitationResponse,
|
|
ReadTextFileRequest,
|
|
ReadTextFileResponse,
|
|
RequestPermissionResponse,
|
|
WriteTextFileRequest,
|
|
WriteTextFileResponse,
|
|
} from "@agentclientprotocol/sdk/unstable";
|
|
import type { AcpSessionNotification } from "./acp-subagents.js";
|
|
import type { AcpPermissionRequest } from "./permissions/presentation.js";
|
|
|
|
/**
|
|
* Client-facing surface the agent calls back into. This is the subset of ACP
|
|
* client methods the agent actually uses, expressed as a narrow interface so
|
|
* tests can supply lightweight mocks. In the v1 agent it is backed by
|
|
* `ClientConnection` (`v1/client-connection.ts`) over the SDK's typed `AgentContext`.
|
|
* The v2 session output passes one that only takes `sessionUpdate`
|
|
* (`v2/stream.ts`).
|
|
*/
|
|
export interface AcpClient {
|
|
sessionUpdate(params: AcpSessionNotification): Promise<void>;
|
|
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
* permission request so the client can dismiss its prompt, and rejects the
|
|
* call at once: a client that ignores the cancel never answers. */
|
|
requestPermission(
|
|
params: AcpPermissionRequest,
|
|
signal?: AbortSignal,
|
|
): Promise<RequestPermissionResponse>;
|
|
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
|
writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse>;
|
|
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
* elicitation so the client can dismiss its prompt, and rejects the call
|
|
* at once, as {@link requestPermission} does. */
|
|
createElicitation(
|
|
params: CreateElicitationRequest,
|
|
signal?: AbortSignal,
|
|
): Promise<CreateElicitationResponse>;
|
|
completeElicitation(params: CompleteElicitationNotification): Promise<void>;
|
|
/** Sends `auth/status_update`: the connection's auth state changed. */
|
|
authStatusUpdate(params: AuthStatusUpdateNotification): Promise<void>;
|
|
/** Send a custom (extension) notification, e.g. `_claude/sdkMessage`. */
|
|
extNotification(method: string, params: Record<string, unknown>): Promise<void>;
|
|
}
|