claude-code-acp-ts 0.44.0 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp-agent.d.ts +162 -24
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +911 -291
- package/dist/elicitation.d.ts +10 -8
- package/dist/elicitation.d.ts.map +1 -1
- package/dist/elicitation.js +71 -26
- package/dist/index.js +7 -4
- package/dist/settings.js +9 -6
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +18 -7
- package/dist/utils.js +3 -5
- package/package.json +14 -10
package/dist/acp-agent.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CanUseTool, ModelInfo, Options, PermissionMode, PermissionUpdate, Query, SDKMessageOrigin, SDKPartialAssistantMessage, SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
|
|
1
|
+
import { AuthenticateRequest, CancelNotification, ClientCapabilities, CompleteElicitationNotification, CreateElicitationRequest, CreateElicitationResponse, ForkSessionRequest, ForkSessionResponse, InitializeRequest, InitializeResponse, ListSessionsRequest, ListSessionsResponse, LoadSessionRequest, LoadSessionResponse, LogoutRequest, NewSessionRequest, NewSessionResponse, PromptRequest, PromptResponse, ReadTextFileRequest, ReadTextFileResponse, RequestPermissionRequest, RequestPermissionResponse, ResumeSessionRequest, ResumeSessionResponse, SessionConfigOption, SessionModeState, SessionNotification, SetSessionConfigOptionRequest, SetSessionConfigOptionResponse, SetSessionModeRequest, SetSessionModeResponse, CloseSessionRequest, CloseSessionResponse, DeleteSessionRequest, DeleteSessionResponse, WriteTextFileRequest, WriteTextFileResponse } from "@agentclientprotocol/sdk";
|
|
2
|
+
import { AgentInfo, CanUseTool, ModelInfo, Options, PermissionMode, PermissionUpdate, Query, SDKMessageOrigin, SDKPartialAssistantMessage, SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
|
|
3
3
|
import { ContentBlockParam } from "@anthropic-ai/sdk/resources";
|
|
4
4
|
import { BetaContentBlock, BetaRawContentBlockDelta } from "@anthropic-ai/sdk/resources/beta.mjs";
|
|
5
5
|
import { SettingsManager } from "./settings.js";
|
|
@@ -31,10 +31,54 @@ type SessionModelState = {
|
|
|
31
31
|
}>;
|
|
32
32
|
currentModelId: string;
|
|
33
33
|
};
|
|
34
|
+
/** One in-flight `prompt()` call. A persistent per-session consumer (see
|
|
35
|
+
* `runConsumer`) drains the SDK query stream for the whole session and settles
|
|
36
|
+
* each Turn's deferred when that turn's outcome is known, so `prompt()` itself
|
|
37
|
+
* holds no loop. Turns are processed FIFO: the SDK echoes queued user messages
|
|
38
|
+
* back in submission order, so `turnQueue[0]` is the turn currently running. */
|
|
39
|
+
type Turn = {
|
|
40
|
+
/** uuid stamped on the pushed `SDKUserMessage`; the SDK echoes it back so the
|
|
41
|
+
* consumer can match the replayed user message to this turn. */
|
|
42
|
+
promptUuid: string;
|
|
43
|
+
/** Local-only slash commands (e.g. `/clear`) return a result without an echo,
|
|
44
|
+
* so the consumer can't promote them via the replay; it falls back to
|
|
45
|
+
* promoting the queue head when the result arrives. */
|
|
46
|
+
isLocalOnlyCommand: boolean;
|
|
47
|
+
/** Set once the deferred has been resolved/rejected, so the consumer never
|
|
48
|
+
* settles a turn twice (idle + handoff + stream-end can all race). */
|
|
49
|
+
settled: boolean;
|
|
50
|
+
resolve: (response: PromptResponse) => void;
|
|
51
|
+
reject: (error: unknown) => void;
|
|
52
|
+
};
|
|
34
53
|
type Session = {
|
|
35
54
|
query: Query;
|
|
36
55
|
input: Pushable<SDKUserMessage>;
|
|
37
56
|
cancelled: boolean;
|
|
57
|
+
/** FIFO of in-flight prompts. The head is the turn the SDK is currently
|
|
58
|
+
* processing; later entries are queued and will be echoed in order. */
|
|
59
|
+
turnQueue?: Turn[];
|
|
60
|
+
/** The turn whose messages the consumer is currently attributing output to
|
|
61
|
+
* (the head of `turnQueue` once its user message has been echoed). */
|
|
62
|
+
activeTurn?: Turn | null;
|
|
63
|
+
/** Count of result messages the consumer should treat as orphans and skip
|
|
64
|
+
* (not promote/attribute to the current head). When cancel() settles+removes
|
|
65
|
+
* a queued turn, that turn's user message was already pushed to the SDK, so
|
|
66
|
+
* the SDK still runs it and emits a result with no uuid we can match. Because
|
|
67
|
+
* the SDK processes input FIFO, those orphan results arrive (in submission
|
|
68
|
+
* order) before the next live turn's, so skipping exactly this many leaves
|
|
69
|
+
* the genuine head untouched. Reset to 0 on every activation as a backstop
|
|
70
|
+
* against an SDK that drops queued input on interrupt (no orphan emitted). */
|
|
71
|
+
pendingOrphanResults?: number;
|
|
72
|
+
/** The long-lived consumer task. Lazily started on the first `prompt()` and
|
|
73
|
+
* kept alive for the session so between-turn/background messages are still
|
|
74
|
+
* drained and forwarded. */
|
|
75
|
+
consumer?: Promise<void>;
|
|
76
|
+
/** Set once the SDK query stream has terminated (it ran to `done` or threw a
|
|
77
|
+
* non-process error). The query iterator is not reusable afterward, so a
|
|
78
|
+
* later `prompt()` rejects instead of enqueueing onto a dead stream and
|
|
79
|
+
* hanging (or silently restarting a consumer that resolves `end_turn`
|
|
80
|
+
* without ever reaching the model). */
|
|
81
|
+
queryClosed?: boolean;
|
|
38
82
|
cwd: string;
|
|
39
83
|
/** Serialized snapshot of session-defining params (cwd, mcpServers) used to
|
|
40
84
|
* detect when loadSession/resumeSession is called with changed values. */
|
|
@@ -45,22 +89,24 @@ type Session = {
|
|
|
45
89
|
models: SessionModelState;
|
|
46
90
|
modelInfos: ModelInfo[];
|
|
47
91
|
configOptions: SessionConfigOption[];
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
92
|
+
/** Custom main-thread agent personas the user (or a plugin/project) has
|
|
93
|
+
* configured, discovered via `supportedAgents()` with Claude Code's built-in
|
|
94
|
+
* subagents filtered out. Empty when none are configured, in which case the
|
|
95
|
+
* "agent" config option is omitted entirely. */
|
|
96
|
+
agents: AgentInfo[];
|
|
97
|
+
/** The currently selected main-thread agent name, or "default" for the
|
|
98
|
+
* standard Claude Code agent (no `agent` flag applied). */
|
|
99
|
+
currentAgent: string;
|
|
54
100
|
abortController: AbortController;
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
101
|
+
/** Signal the consumer races `query.next()` against. Aborted by cancel()
|
|
102
|
+
* (after a grace period) to force the active turn to settle "cancelled" when
|
|
103
|
+
* the SDK is wedged and `query.next()` never yields again (issue #680).
|
|
104
|
+
* Distinct from `abortController`: this only wakes the consumer; it does NOT
|
|
105
|
+
* touch the SDK query/subprocess. The consumer re-arms it after each fire.
|
|
106
|
+
* Undefined until the consumer is started by the first prompt. */
|
|
61
107
|
cancelController?: AbortController;
|
|
62
|
-
/** Pending grace-period timer that aborts `cancelController`. Cleared when
|
|
63
|
-
*
|
|
108
|
+
/** Pending grace-period timer that aborts `cancelController`. Cleared when the
|
|
109
|
+
* active turn settles normally so the backstop never fires after a clean
|
|
64
110
|
* cancel. */
|
|
65
111
|
forceCancelTimer?: ReturnType<typeof setTimeout>;
|
|
66
112
|
emitRawSDKMessages: boolean | SDKMessageFilter[];
|
|
@@ -73,6 +119,12 @@ type Session = {
|
|
|
73
119
|
/** Accumulated task list for the session, keyed by task ID. Task IDs are
|
|
74
120
|
* per-session, so this state must not be shared across sessions. */
|
|
75
121
|
taskState: TaskState;
|
|
122
|
+
/** Last session title we pushed to the client via `session_info_update`.
|
|
123
|
+
* The SDK auto-generates a title in a background task and persists it to the
|
|
124
|
+
* session file; we poll it on each turn-end (`session_state_changed: idle`)
|
|
125
|
+
* and only notify the client when it actually changes. Undefined until the
|
|
126
|
+
* first title is observed. */
|
|
127
|
+
lastTitle?: string;
|
|
76
128
|
/** Caches `tool_use` blocks by id so the matching `tool_result` can recover
|
|
77
129
|
* the tool name/input when mapping it to a `tool_call_update`. Per-session
|
|
78
130
|
* (tool_use ids are only unique within a session) and pruned at
|
|
@@ -199,11 +251,32 @@ export declare function resolvePermissionMode(defaultMode?: unknown, logger?: Lo
|
|
|
199
251
|
* tool so "Always Allow" is never a blank check without disclosure.
|
|
200
252
|
*/
|
|
201
253
|
export declare function describeAlwaysAllow(suggestions: PermissionUpdate[] | undefined, toolName: string): string;
|
|
202
|
-
|
|
254
|
+
/**
|
|
255
|
+
* Client-facing surface the agent calls back into. This is the subset of ACP
|
|
256
|
+
* client methods the agent actually uses, expressed as a narrow interface so
|
|
257
|
+
* tests can supply lightweight mocks. In production it is backed by
|
|
258
|
+
* {@link ClientConnection} over the SDK's typed `AgentContext`.
|
|
259
|
+
*/
|
|
260
|
+
export interface AcpClient {
|
|
261
|
+
sessionUpdate(params: SessionNotification): Promise<void>;
|
|
262
|
+
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
263
|
+
* permission request so the client can dismiss its prompt (and settle our
|
|
264
|
+
* await) instead of leaving the dialog open after the turn was cancelled. */
|
|
265
|
+
requestPermission(params: RequestPermissionRequest, signal?: AbortSignal): Promise<RequestPermissionResponse>;
|
|
266
|
+
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
|
267
|
+
writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse>;
|
|
268
|
+
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
269
|
+
* elicitation so the client can dismiss its prompt and settle our await. */
|
|
270
|
+
unstable_createElicitation(params: CreateElicitationRequest, signal?: AbortSignal): Promise<CreateElicitationResponse>;
|
|
271
|
+
unstable_completeElicitation(params: CompleteElicitationNotification): Promise<void>;
|
|
272
|
+
/** Send a custom (extension) notification, e.g. `_claude/sdkMessage`. */
|
|
273
|
+
extNotification(method: string, params: Record<string, unknown>): Promise<void>;
|
|
274
|
+
}
|
|
275
|
+
export declare class ClaudeAcpAgent {
|
|
203
276
|
sessions: {
|
|
204
277
|
[key: string]: Session;
|
|
205
278
|
};
|
|
206
|
-
client:
|
|
279
|
+
client: AcpClient;
|
|
207
280
|
clientCapabilities?: ClientCapabilities;
|
|
208
281
|
logger: Logger;
|
|
209
282
|
gatewayAuthRequest?: GatewayAuthRequest;
|
|
@@ -211,18 +284,54 @@ export declare class ClaudeAcpAgent implements Agent {
|
|
|
211
284
|
* return "cancelled". See {@link DEFAULT_FORCE_CANCEL_GRACE_MS}. Mutable so
|
|
212
285
|
* tests can shrink it. */
|
|
213
286
|
forceCancelGraceMs: number;
|
|
214
|
-
constructor(client:
|
|
287
|
+
constructor(client: AcpClient, logger?: Logger);
|
|
215
288
|
initialize(request: InitializeRequest): Promise<InitializeResponse>;
|
|
216
289
|
newSession(params: NewSessionRequest): Promise<NewSessionResponse>;
|
|
217
290
|
unstable_forkSession(params: ForkSessionRequest): Promise<ForkSessionResponse>;
|
|
218
291
|
resumeSession(params: ResumeSessionRequest): Promise<ResumeSessionResponse>;
|
|
219
292
|
loadSession(params: LoadSessionRequest): Promise<LoadSessionResponse>;
|
|
220
293
|
listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse>;
|
|
294
|
+
/** Read the SDK-maintained title for a session and, if it changed since the
|
|
295
|
+
* last time we looked, notify the client with a `session_info_update`. The
|
|
296
|
+
* SDK has no push event for the title it auto-generates in the background, so
|
|
297
|
+
* we pull it at turn-end. A missing session file or read error is non-fatal:
|
|
298
|
+
* the title is best-effort and another turn will retry. */
|
|
299
|
+
private maybeUpdateSessionTitle;
|
|
221
300
|
authenticate(_params: AuthenticateRequest): Promise<void>;
|
|
301
|
+
logout(_params: LogoutRequest): Promise<void>;
|
|
222
302
|
prompt(params: PromptRequest): Promise<PromptResponse>;
|
|
303
|
+
/** Lazily start the per-session consumer that drains the SDK query stream for
|
|
304
|
+
* the session's whole life. Idempotent: only the first `prompt()` starts it. */
|
|
305
|
+
private ensureConsumer;
|
|
306
|
+
/** The single, long-lived consumer of the SDK query stream for a session. It
|
|
307
|
+
* forwards every message as ACP `sessionUpdate`s (so background/between-turn
|
|
308
|
+
* output streams live, not just while a prompt is awaiting) and settles each
|
|
309
|
+
* Turn's deferred when that turn ends. Replaces the per-prompt message loop;
|
|
310
|
+
* `params` only carries the (session-invariant) `sessionId`. */
|
|
311
|
+
private runConsumer;
|
|
223
312
|
cancel(params: CancelNotification): Promise<void>;
|
|
224
|
-
/**
|
|
225
|
-
*
|
|
313
|
+
/** Mark a session's SDK query stream as permanently ended and release the
|
|
314
|
+
* resources tied to it: drop the consumer handle, dispose the settings
|
|
315
|
+
* watchers, end the input stream, and close the query (which terminates the
|
|
316
|
+
* subprocess). The query iterator is not revivable, so `prompt()`/`cancel()`
|
|
317
|
+
* consult `queryClosed` and fail/short-circuit instead of acting on a dead
|
|
318
|
+
* stream. Idempotent (guarded by `queryClosed`), so the consumer's done/error
|
|
319
|
+
* paths and a later `teardownSession` can all call it without double-releasing.
|
|
320
|
+
*
|
|
321
|
+
* Deliberately does NOT abort `session.abortController`: that controller may be
|
|
322
|
+
* CLIENT-supplied (`_meta.claudeCode.options.abortController`) and reused, so
|
|
323
|
+
* aborting it on a spontaneous stream end would cancel the client's own work
|
|
324
|
+
* or make a sibling session born aborted. `query.close()` already terminates
|
|
325
|
+
* the subprocess; aborting the signal belongs in `teardownSession` (explicit
|
|
326
|
+
* destroy), not here. Also does NOT remove the session from the map — that is
|
|
327
|
+
* `teardownSession`'s job — so prompt() can still answer with a clear "session
|
|
328
|
+
* ended" error after an unexpected stream close. The leftover session object
|
|
329
|
+
* is a lightweight husk (its heavy resources are released here) and is evicted
|
|
330
|
+
* on the next closeSession/deleteSession or when the connection's `dispose()`
|
|
331
|
+
* runs. */
|
|
332
|
+
private closeQueryStream;
|
|
333
|
+
/** Cleanly tear down a session: cancel in-flight work, release stream
|
|
334
|
+
* resources, and remove it from the session map. */
|
|
226
335
|
private teardownSession;
|
|
227
336
|
/** Tear down all active sessions. Called when the ACP connection closes. */
|
|
228
337
|
dispose(): Promise<void>;
|
|
@@ -234,6 +343,14 @@ export declare class ClaudeAcpAgent implements Agent {
|
|
|
234
343
|
private replaySessionHistory;
|
|
235
344
|
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
|
236
345
|
writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse>;
|
|
346
|
+
/** Forward a permission request to the client, wiring the tool call's
|
|
347
|
+
* `signal` through as a `cancellationSignal`. When the turn is cancelled
|
|
348
|
+
* while the client's prompt is still open the signal aborts, the SDK sends
|
|
349
|
+
* `$/cancel_request`, and the client settles the request (a `cancelled`
|
|
350
|
+
* outcome or a `requestCancelled` rejection). Either way we surface the same
|
|
351
|
+
* "Tool use aborted" the callers already expect, so a cancelled dialog no
|
|
352
|
+
* longer leaves the `await` hanging. */
|
|
353
|
+
private requestPermissionFromClient;
|
|
237
354
|
canUseTool(sessionId: string): CanUseTool;
|
|
238
355
|
/**
|
|
239
356
|
* Handle elicitation requests that originate from MCP servers by forwarding
|
|
@@ -260,6 +377,14 @@ export declare class ClaudeAcpAgent implements Agent {
|
|
|
260
377
|
private validateCwd;
|
|
261
378
|
private createSession;
|
|
262
379
|
}
|
|
380
|
+
export declare const BUILTIN_AGENT_NAMES: Set<string>;
|
|
381
|
+
export declare const DEFAULT_AGENT_ID = "default";
|
|
382
|
+
/** Discover user/plugin/project-configured main-thread agents, excluding the
|
|
383
|
+
* built-in subagents and the reserved "default" sentinel. Returns an empty
|
|
384
|
+
* list if discovery fails so a flaky control request never blocks session
|
|
385
|
+
* creation. */
|
|
386
|
+
export declare function discoverCustomAgents(q: Query): Promise<AgentInfo[]>;
|
|
387
|
+
export declare function buildConfigOptions(modes: SessionModeState, models: SessionModelState, modelInfos: ModelInfo[], currentEffortLevel?: string, agents?: AgentInfo[], currentAgent?: string): SessionConfigOption[];
|
|
263
388
|
export declare function promptToClaude(prompt: PromptRequest): SDKUserMessage;
|
|
264
389
|
/**
|
|
265
390
|
* Resolves the ACP `messageId` for a Claude SDK message (live) or a persisted
|
|
@@ -281,7 +406,7 @@ export declare function messageIdForGrouping(message: {
|
|
|
281
406
|
* Convert an SDKAssistantMessage (Claude) to a SessionNotification (ACP).
|
|
282
407
|
* Only handles text, image, and thinking chunks for now.
|
|
283
408
|
*/
|
|
284
|
-
export declare function toAcpNotifications(content: string | ContentBlockParam[] | BetaContentBlock[] | BetaRawContentBlockDelta[], role: "assistant" | "user", sessionId: string, toolUseCache: ToolUseCache, client:
|
|
409
|
+
export declare function toAcpNotifications(content: string | ContentBlockParam[] | BetaContentBlock[] | BetaRawContentBlockDelta[], role: "assistant" | "user", sessionId: string, toolUseCache: ToolUseCache, client: AcpClient, logger: Logger, options?: {
|
|
285
410
|
registerHooks?: boolean;
|
|
286
411
|
clientCapabilities?: ClientCapabilities;
|
|
287
412
|
parentToolUseId?: string | null;
|
|
@@ -289,14 +414,27 @@ export declare function toAcpNotifications(content: string | ContentBlockParam[]
|
|
|
289
414
|
taskState?: TaskState;
|
|
290
415
|
messageId?: string;
|
|
291
416
|
}): SessionNotification[];
|
|
292
|
-
export declare function streamEventToAcpNotifications(message: SDKPartialAssistantMessage, sessionId: string, toolUseCache: ToolUseCache, client:
|
|
417
|
+
export declare function streamEventToAcpNotifications(message: SDKPartialAssistantMessage, sessionId: string, toolUseCache: ToolUseCache, client: AcpClient, logger: Logger, options?: {
|
|
293
418
|
clientCapabilities?: ClientCapabilities;
|
|
294
419
|
cwd?: string;
|
|
295
420
|
taskState?: TaskState;
|
|
296
421
|
messageId?: string;
|
|
297
422
|
}): SessionNotification[];
|
|
423
|
+
/** Run a `session/prompt` while honoring `$/cancel_request` for it. ACP clients
|
|
424
|
+
* normally stop a turn with the `session/cancel` notification, but `signal`
|
|
425
|
+
* (the prompt request's abort signal) also fires when the client sends the
|
|
426
|
+
* generic `$/cancel_request` for this prompt — the protocol's complementary
|
|
427
|
+
* cancellation fallback. Route that to the same `agent.cancel` path so a client
|
|
428
|
+
* using only the generic mechanism still stops the turn (and the prompt
|
|
429
|
+
* resolves "cancelled" instead of running to completion).
|
|
430
|
+
*
|
|
431
|
+
* The listener is scoped to this call: once the prompt settles it is removed,
|
|
432
|
+
* so a later teardown-time abort of the (per-request) signal can't cancel a
|
|
433
|
+
* subsequent turn. `signal` also aborts on connection close, in which case
|
|
434
|
+
* cancelling the in-flight turn is the desired behavior anyway. */
|
|
435
|
+
export declare function runPromptWithCancellation(agent: Pick<ClaudeAcpAgent, "prompt" | "cancel" | "logger">, params: PromptRequest, signal: AbortSignal): Promise<PromptResponse>;
|
|
298
436
|
export declare function runAcp(): {
|
|
299
|
-
connection:
|
|
437
|
+
connection: import("@agentclientprotocol/sdk").AgentConnection;
|
|
300
438
|
agent: ClaudeAcpAgent;
|
|
301
439
|
};
|
|
302
440
|
export {};
|
package/dist/acp-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"}
|