@agentclientprotocol/claude-agent-acp 0.49.0 → 0.51.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 +28 -2
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +81 -15
- package/dist/settings.js +9 -6
- package/dist/utils.js +3 -5
- package/package.json +10 -6
package/dist/acp-agent.d.ts
CHANGED
|
@@ -253,10 +253,15 @@ export declare function describeAlwaysAllow(suggestions: PermissionUpdate[] | un
|
|
|
253
253
|
*/
|
|
254
254
|
export interface AcpClient {
|
|
255
255
|
sessionUpdate(params: SessionNotification): Promise<void>;
|
|
256
|
-
|
|
256
|
+
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
257
|
+
* permission request so the client can dismiss its prompt (and settle our
|
|
258
|
+
* await) instead of leaving the dialog open after the turn was cancelled. */
|
|
259
|
+
requestPermission(params: RequestPermissionRequest, signal?: AbortSignal): Promise<RequestPermissionResponse>;
|
|
257
260
|
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
|
258
261
|
writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse>;
|
|
259
|
-
|
|
262
|
+
/** `signal`, when aborted, sends `$/cancel_request` for the in-flight
|
|
263
|
+
* elicitation so the client can dismiss its prompt and settle our await. */
|
|
264
|
+
unstable_createElicitation(params: CreateElicitationRequest, signal?: AbortSignal): Promise<CreateElicitationResponse>;
|
|
260
265
|
unstable_completeElicitation(params: CompleteElicitationNotification): Promise<void>;
|
|
261
266
|
/** Send a custom (extension) notification, e.g. `_claude/sdkMessage`. */
|
|
262
267
|
extNotification(method: string, params: Record<string, unknown>): Promise<void>;
|
|
@@ -325,6 +330,14 @@ export declare class ClaudeAcpAgent {
|
|
|
325
330
|
private replaySessionHistory;
|
|
326
331
|
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
|
327
332
|
writeTextFile(params: WriteTextFileRequest): Promise<WriteTextFileResponse>;
|
|
333
|
+
/** Forward a permission request to the client, wiring the tool call's
|
|
334
|
+
* `signal` through as a `cancellationSignal`. When the turn is cancelled
|
|
335
|
+
* while the client's prompt is still open the signal aborts, the SDK sends
|
|
336
|
+
* `$/cancel_request`, and the client settles the request (a `cancelled`
|
|
337
|
+
* outcome or a `requestCancelled` rejection). Either way we surface the same
|
|
338
|
+
* "Tool use aborted" the callers already expect, so a cancelled dialog no
|
|
339
|
+
* longer leaves the `await` hanging. */
|
|
340
|
+
private requestPermissionFromClient;
|
|
328
341
|
canUseTool(sessionId: string): CanUseTool;
|
|
329
342
|
/**
|
|
330
343
|
* Handle elicitation requests that originate from MCP servers by forwarding
|
|
@@ -394,6 +407,19 @@ export declare function streamEventToAcpNotifications(message: SDKPartialAssista
|
|
|
394
407
|
taskState?: TaskState;
|
|
395
408
|
messageId?: string;
|
|
396
409
|
}): SessionNotification[];
|
|
410
|
+
/** Run a `session/prompt` while honoring `$/cancel_request` for it. ACP clients
|
|
411
|
+
* normally stop a turn with the `session/cancel` notification, but `signal`
|
|
412
|
+
* (the prompt request's abort signal) also fires when the client sends the
|
|
413
|
+
* generic `$/cancel_request` for this prompt — the protocol's complementary
|
|
414
|
+
* cancellation fallback. Route that to the same `agent.cancel` path so a client
|
|
415
|
+
* using only the generic mechanism still stops the turn (and the prompt
|
|
416
|
+
* resolves "cancelled" instead of running to completion).
|
|
417
|
+
*
|
|
418
|
+
* The listener is scoped to this call: once the prompt settles it is removed,
|
|
419
|
+
* so a later teardown-time abort of the (per-request) signal can't cancel a
|
|
420
|
+
* subsequent turn. `signal` also aborts on connection close, in which case
|
|
421
|
+
* cancelling the in-flight turn is the desired behavior anyway. */
|
|
422
|
+
export declare function runPromptWithCancellation(agent: Pick<ClaudeAcpAgent, "prompt" | "cancel" | "logger">, params: PromptRequest, signal: AbortSignal): Promise<PromptResponse>;
|
|
397
423
|
export declare function runAcp(): {
|
|
398
424
|
connection: import("@agentclientprotocol/sdk").AgentConnection;
|
|
399
425
|
agent: ClaudeAcpAgent;
|
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":"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
|
|
1
|
+
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/acp-agent.js
CHANGED
|
@@ -253,14 +253,17 @@ export function describeAlwaysAllow(suggestions, toolName) {
|
|
|
253
253
|
* construction.
|
|
254
254
|
*/
|
|
255
255
|
class ClientConnection {
|
|
256
|
+
ctx;
|
|
256
257
|
constructor(ctx) {
|
|
257
258
|
this.ctx = ctx;
|
|
258
259
|
}
|
|
259
260
|
sessionUpdate(params) {
|
|
260
261
|
return this.ctx.notify(methods.client.session.update, params);
|
|
261
262
|
}
|
|
262
|
-
requestPermission(params) {
|
|
263
|
-
return this.ctx.request(methods.client.session.requestPermission, params
|
|
263
|
+
requestPermission(params, signal) {
|
|
264
|
+
return this.ctx.request(methods.client.session.requestPermission, params, {
|
|
265
|
+
cancellationSignal: signal,
|
|
266
|
+
});
|
|
264
267
|
}
|
|
265
268
|
readTextFile(params) {
|
|
266
269
|
return this.ctx.request(methods.client.fs.readTextFile, params);
|
|
@@ -268,8 +271,10 @@ class ClientConnection {
|
|
|
268
271
|
writeTextFile(params) {
|
|
269
272
|
return this.ctx.request(methods.client.fs.writeTextFile, params);
|
|
270
273
|
}
|
|
271
|
-
unstable_createElicitation(params) {
|
|
272
|
-
return this.ctx.request(methods.client.elicitation.create, params
|
|
274
|
+
unstable_createElicitation(params, signal) {
|
|
275
|
+
return this.ctx.request(methods.client.elicitation.create, params, {
|
|
276
|
+
cancellationSignal: signal,
|
|
277
|
+
});
|
|
273
278
|
}
|
|
274
279
|
unstable_completeElicitation(params) {
|
|
275
280
|
return this.ctx.notify(methods.client.elicitation.complete, params);
|
|
@@ -279,11 +284,16 @@ class ClientConnection {
|
|
|
279
284
|
}
|
|
280
285
|
}
|
|
281
286
|
export class ClaudeAcpAgent {
|
|
287
|
+
sessions;
|
|
288
|
+
client;
|
|
289
|
+
clientCapabilities;
|
|
290
|
+
logger;
|
|
291
|
+
gatewayAuthRequest;
|
|
292
|
+
/** Grace period before a `session/cancel` forces a wedged prompt loop to
|
|
293
|
+
* return "cancelled". See {@link DEFAULT_FORCE_CANCEL_GRACE_MS}. Mutable so
|
|
294
|
+
* tests can shrink it. */
|
|
295
|
+
forceCancelGraceMs = DEFAULT_FORCE_CANCEL_GRACE_MS;
|
|
282
296
|
constructor(client, logger) {
|
|
283
|
-
/** Grace period before a `session/cancel` forces a wedged prompt loop to
|
|
284
|
-
* return "cancelled". See {@link DEFAULT_FORCE_CANCEL_GRACE_MS}. Mutable so
|
|
285
|
-
* tests can shrink it. */
|
|
286
|
-
this.forceCancelGraceMs = DEFAULT_FORCE_CANCEL_GRACE_MS;
|
|
287
297
|
this.sessions = {};
|
|
288
298
|
this.client = client;
|
|
289
299
|
this.logger = logger ?? console;
|
|
@@ -1856,6 +1866,24 @@ export class ClaudeAcpAgent {
|
|
|
1856
1866
|
const response = await this.client.writeTextFile(params);
|
|
1857
1867
|
return response;
|
|
1858
1868
|
}
|
|
1869
|
+
/** Forward a permission request to the client, wiring the tool call's
|
|
1870
|
+
* `signal` through as a `cancellationSignal`. When the turn is cancelled
|
|
1871
|
+
* while the client's prompt is still open the signal aborts, the SDK sends
|
|
1872
|
+
* `$/cancel_request`, and the client settles the request (a `cancelled`
|
|
1873
|
+
* outcome or a `requestCancelled` rejection). Either way we surface the same
|
|
1874
|
+
* "Tool use aborted" the callers already expect, so a cancelled dialog no
|
|
1875
|
+
* longer leaves the `await` hanging. */
|
|
1876
|
+
async requestPermissionFromClient(params, signal) {
|
|
1877
|
+
try {
|
|
1878
|
+
return await this.client.requestPermission(params, signal);
|
|
1879
|
+
}
|
|
1880
|
+
catch (error) {
|
|
1881
|
+
if (signal.aborted) {
|
|
1882
|
+
throw new Error("Tool use aborted", { cause: error });
|
|
1883
|
+
}
|
|
1884
|
+
throw error;
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1859
1887
|
canUseTool(sessionId) {
|
|
1860
1888
|
return async (toolName, toolInput, { signal, suggestions, toolUseID }) => {
|
|
1861
1889
|
const alwaysAllowLabel = describeAlwaysAllow(suggestions, toolName);
|
|
@@ -1898,7 +1926,7 @@ export class ClaudeAcpAgent {
|
|
|
1898
1926
|
// `buildAvailableModes`/`ALLOW_BYPASS`. The `plan` option is a
|
|
1899
1927
|
// "keep planning" reject path; it's always present in `availableModes`.
|
|
1900
1928
|
const options = optionsAll.filter((o) => session.modes.availableModes.some((m) => m.id === o.optionId));
|
|
1901
|
-
const response = await this.
|
|
1929
|
+
const response = await this.requestPermissionFromClient({
|
|
1902
1930
|
options,
|
|
1903
1931
|
sessionId,
|
|
1904
1932
|
toolCall: {
|
|
@@ -1906,7 +1934,7 @@ export class ClaudeAcpAgent {
|
|
|
1906
1934
|
rawInput: toolInput,
|
|
1907
1935
|
...toolInfoFromToolUse({ name: toolName, input: toolInput, id: toolUseID }, supportsTerminalOutput, session?.cwd),
|
|
1908
1936
|
},
|
|
1909
|
-
});
|
|
1937
|
+
}, signal);
|
|
1910
1938
|
if (signal.aborted || response.outcome?.outcome === "cancelled") {
|
|
1911
1939
|
throw new Error("Tool use aborted");
|
|
1912
1940
|
}
|
|
@@ -1949,7 +1977,7 @@ export class ClaudeAcpAgent {
|
|
|
1949
1977
|
],
|
|
1950
1978
|
};
|
|
1951
1979
|
}
|
|
1952
|
-
const response = await this.
|
|
1980
|
+
const response = await this.requestPermissionFromClient({
|
|
1953
1981
|
options: [
|
|
1954
1982
|
{
|
|
1955
1983
|
kind: "allow_always",
|
|
@@ -1965,7 +1993,7 @@ export class ClaudeAcpAgent {
|
|
|
1965
1993
|
rawInput: toolInput,
|
|
1966
1994
|
...toolInfoFromToolUse({ name: toolName, input: toolInput, id: toolUseID }, supportsTerminalOutput, session?.cwd),
|
|
1967
1995
|
},
|
|
1968
|
-
});
|
|
1996
|
+
}, signal);
|
|
1969
1997
|
if (signal.aborted || response.outcome?.outcome === "cancelled") {
|
|
1970
1998
|
throw new Error("Tool use aborted");
|
|
1971
1999
|
}
|
|
@@ -2015,13 +2043,18 @@ export class ClaudeAcpAgent {
|
|
|
2015
2043
|
return { action: "decline" };
|
|
2016
2044
|
}
|
|
2017
2045
|
try {
|
|
2018
|
-
const response = await this.client.unstable_createElicitation(createRequest);
|
|
2046
|
+
const response = await this.client.unstable_createElicitation(createRequest, signal);
|
|
2019
2047
|
if (signal.aborted) {
|
|
2020
2048
|
return { action: "cancel" };
|
|
2021
2049
|
}
|
|
2022
2050
|
return createElicitationResponseToElicitResult(response);
|
|
2023
2051
|
}
|
|
2024
2052
|
catch (error) {
|
|
2053
|
+
// A cancellation we requested (signal aborted) settles as a cancel, not
|
|
2054
|
+
// a hard decline — the elicitation was abandoned, not refused.
|
|
2055
|
+
if (signal.aborted) {
|
|
2056
|
+
return { action: "cancel" };
|
|
2057
|
+
}
|
|
2025
2058
|
this.logger.error(`Failed to forward MCP elicitation: ${error}`);
|
|
2026
2059
|
return { action: "decline" };
|
|
2027
2060
|
}
|
|
@@ -2040,9 +2073,14 @@ export class ClaudeAcpAgent {
|
|
|
2040
2073
|
const createRequest = askUserQuestionsToCreateRequest(questions, sessionId, toolUseID);
|
|
2041
2074
|
let response;
|
|
2042
2075
|
try {
|
|
2043
|
-
response = await this.client.unstable_createElicitation(createRequest);
|
|
2076
|
+
response = await this.client.unstable_createElicitation(createRequest, signal);
|
|
2044
2077
|
}
|
|
2045
2078
|
catch (error) {
|
|
2079
|
+
// A cancellation we requested (signal aborted) settles as an aborted tool
|
|
2080
|
+
// use, matching the post-response check below.
|
|
2081
|
+
if (signal.aborted) {
|
|
2082
|
+
throw new Error("Tool use aborted", { cause: error });
|
|
2083
|
+
}
|
|
2046
2084
|
this.logger.error(`Failed to present AskUserQuestion elicitation: ${error}`);
|
|
2047
2085
|
return { behavior: "deny", message: "Could not present the question to the user." };
|
|
2048
2086
|
}
|
|
@@ -3508,6 +3546,34 @@ export function streamEventToAcpNotifications(message, sessionId, toolUseCache,
|
|
|
3508
3546
|
return [];
|
|
3509
3547
|
}
|
|
3510
3548
|
}
|
|
3549
|
+
/** Run a `session/prompt` while honoring `$/cancel_request` for it. ACP clients
|
|
3550
|
+
* normally stop a turn with the `session/cancel` notification, but `signal`
|
|
3551
|
+
* (the prompt request's abort signal) also fires when the client sends the
|
|
3552
|
+
* generic `$/cancel_request` for this prompt — the protocol's complementary
|
|
3553
|
+
* cancellation fallback. Route that to the same `agent.cancel` path so a client
|
|
3554
|
+
* using only the generic mechanism still stops the turn (and the prompt
|
|
3555
|
+
* resolves "cancelled" instead of running to completion).
|
|
3556
|
+
*
|
|
3557
|
+
* The listener is scoped to this call: once the prompt settles it is removed,
|
|
3558
|
+
* so a later teardown-time abort of the (per-request) signal can't cancel a
|
|
3559
|
+
* subsequent turn. `signal` also aborts on connection close, in which case
|
|
3560
|
+
* cancelling the in-flight turn is the desired behavior anyway. */
|
|
3561
|
+
export async function runPromptWithCancellation(agent, params, signal) {
|
|
3562
|
+
const onAbort = () => {
|
|
3563
|
+
// Fire-and-forget: nothing awaits this listener, so swallow (and log) any
|
|
3564
|
+
// rejection rather than surfacing it as an unhandled rejection.
|
|
3565
|
+
agent.cancel({ sessionId: params.sessionId }).catch((error) => {
|
|
3566
|
+
agent.logger.error(`Failed to cancel prompt via $/cancel_request: ${error}`);
|
|
3567
|
+
});
|
|
3568
|
+
};
|
|
3569
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
3570
|
+
try {
|
|
3571
|
+
return await agent.prompt(params);
|
|
3572
|
+
}
|
|
3573
|
+
finally {
|
|
3574
|
+
signal.removeEventListener("abort", onAbort);
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3511
3577
|
export function runAcp() {
|
|
3512
3578
|
const input = nodeToWebWritable(process.stdout);
|
|
3513
3579
|
const output = nodeToWebReadable(process.stdin);
|
|
@@ -3532,7 +3598,7 @@ export function runAcp() {
|
|
|
3532
3598
|
.onRequest(methods.agent.session.setMode, (ctx) => agent.setSessionMode(ctx.params))
|
|
3533
3599
|
.onRequest(methods.agent.session.setConfigOption, (ctx) => agent.setSessionConfigOption(ctx.params))
|
|
3534
3600
|
.onRequest(methods.agent.authenticate, (ctx) => agent.authenticate(ctx.params))
|
|
3535
|
-
.onRequest(methods.agent.session.prompt, (ctx) => agent.
|
|
3601
|
+
.onRequest(methods.agent.session.prompt, (ctx) => runPromptWithCancellation(agent, ctx.params, ctx.signal))
|
|
3536
3602
|
.onNotification(methods.agent.session.cancel, (ctx) => agent.cancel(ctx.params))
|
|
3537
3603
|
.connect(stream);
|
|
3538
3604
|
agent = new ClaudeAcpAgent(new ClientConnection(connection.client));
|
package/dist/settings.js
CHANGED
|
@@ -35,13 +35,16 @@ function getManagedSettingsPath() {
|
|
|
35
35
|
* `filterEscalatingDefaultMode`, matching the CLI's trust policy.
|
|
36
36
|
*/
|
|
37
37
|
export class SettingsManager {
|
|
38
|
+
cwd;
|
|
39
|
+
effective = {};
|
|
40
|
+
watchers = [];
|
|
41
|
+
onChange;
|
|
42
|
+
logger;
|
|
43
|
+
initialized = false;
|
|
44
|
+
disposed = false;
|
|
45
|
+
debounceTimer = null;
|
|
46
|
+
initPromise = null;
|
|
38
47
|
constructor(cwd, options) {
|
|
39
|
-
this.effective = {};
|
|
40
|
-
this.watchers = [];
|
|
41
|
-
this.initialized = false;
|
|
42
|
-
this.disposed = false;
|
|
43
|
-
this.debounceTimer = null;
|
|
44
|
-
this.initPromise = null;
|
|
45
48
|
this.cwd = cwd;
|
|
46
49
|
this.onChange = options?.onChange;
|
|
47
50
|
this.logger = options?.logger ?? console;
|
package/dist/utils.js
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
import { WritableStream, ReadableStream } from "node:stream/web";
|
|
3
3
|
// Useful for bridging push-based and async-iterator-based code.
|
|
4
4
|
export class Pushable {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.done = false;
|
|
9
|
-
}
|
|
5
|
+
queue = [];
|
|
6
|
+
resolvers = [];
|
|
7
|
+
done = false;
|
|
10
8
|
push(item) {
|
|
11
9
|
if (this.resolvers.length > 0) {
|
|
12
10
|
const resolve = this.resolvers.shift();
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.51.0",
|
|
7
7
|
"description": "An ACP-compatible coding agent powered by the Claude Agent SDK (TypeScript)",
|
|
8
8
|
"main": "dist/lib.js",
|
|
9
9
|
"types": "dist/lib.d.ts",
|
|
@@ -59,20 +59,24 @@
|
|
|
59
59
|
},
|
|
60
60
|
"author": "Zed Industries",
|
|
61
61
|
"license": "Apache-2.0",
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=22"
|
|
64
|
+
},
|
|
62
65
|
"dependencies": {
|
|
63
|
-
"@agentclientprotocol/sdk": "0.
|
|
64
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
66
|
+
"@agentclientprotocol/sdk": "0.29.0",
|
|
67
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.187",
|
|
65
68
|
"zod": "^3.25.0 || ^4.0.0"
|
|
66
69
|
},
|
|
67
70
|
"devDependencies": {
|
|
68
71
|
"@anthropic-ai/sdk": "0.105.0",
|
|
69
72
|
"@eslint/js": "10.0.1",
|
|
73
|
+
"@tsconfig/node22": "22.0.5",
|
|
70
74
|
"@types/node": "26.0.0",
|
|
71
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
72
|
-
"@typescript-eslint/parser": "8.
|
|
75
|
+
"@typescript-eslint/eslint-plugin": "8.62.0",
|
|
76
|
+
"@typescript-eslint/parser": "8.62.0",
|
|
73
77
|
"eslint": "10.5.0",
|
|
74
78
|
"eslint-config-prettier": "10.1.8",
|
|
75
|
-
"globals": "17.
|
|
79
|
+
"globals": "17.7.0",
|
|
76
80
|
"prettier": "3.8.4",
|
|
77
81
|
"ts-node": "10.9.2",
|
|
78
82
|
"typescript": "6.0.3",
|