@agentclientprotocol/claude-agent-acp 0.25.1 → 0.26.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 +6 -0
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +108 -48
- package/package.json +9 -9
package/dist/acp-agent.d.ts
CHANGED
|
@@ -23,6 +23,9 @@ type Session = {
|
|
|
23
23
|
input: Pushable<SDKUserMessage>;
|
|
24
24
|
cancelled: boolean;
|
|
25
25
|
cwd: string;
|
|
26
|
+
/** Serialized snapshot of session-defining params (cwd, mcpServers) used to
|
|
27
|
+
* detect when loadSession/resumeSession is called with changed values. */
|
|
28
|
+
sessionFingerprint: string;
|
|
26
29
|
settingsManager: SettingsManager;
|
|
27
30
|
accumulatedUsage: AccumulatedUsage;
|
|
28
31
|
modes: SessionModeState;
|
|
@@ -136,6 +139,9 @@ export declare class ClaudeAcpAgent implements Agent {
|
|
|
136
139
|
authenticate(_params: AuthenticateRequest): Promise<void>;
|
|
137
140
|
prompt(params: PromptRequest): Promise<PromptResponse>;
|
|
138
141
|
cancel(params: CancelNotification): Promise<void>;
|
|
142
|
+
/** Cleanly tear down a session: cancel in-flight work, dispose resources,
|
|
143
|
+
* and remove it from the session map. */
|
|
144
|
+
private teardownSession;
|
|
139
145
|
unstable_closeSession(params: CloseSessionRequest): Promise<CloseSessionResponse>;
|
|
140
146
|
unstable_setSessionModel(params: SetSessionModelRequest): Promise<SetSessionModelResponse | void>;
|
|
141
147
|
setSessionMode(params: SetSessionModeRequest): Promise<SetSessionModeResponse>;
|
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,EACL,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EAGnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EAEnB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EAEpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAMV,OAAO,EACP,cAAc,EACd,KAAK,EAEL,0BAA0B,EAE1B,cAAc,EAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMlG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAwC,QAAQ,EAAe,MAAM,YAAY,CAAC;AAEzF,eAAO,MAAM,iBAAiB,QACuC,CAAC;AAgBtE;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACjC;AAED,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvF,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;
|
|
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
|
@@ -21,6 +21,14 @@ function sanitizeTitle(text) {
|
|
|
21
21
|
}
|
|
22
22
|
return sanitized.slice(0, MAX_TITLE_LENGTH - 1) + "…";
|
|
23
23
|
}
|
|
24
|
+
/** Compute a stable fingerprint of the session-defining params so we can
|
|
25
|
+
* detect when a loadSession/resumeSession call requires tearing down and
|
|
26
|
+
* recreating the underlying Query process. MCP servers are sorted by name
|
|
27
|
+
* so that ordering differences don't trigger unnecessary recreations. */
|
|
28
|
+
function computeSessionFingerprint(params) {
|
|
29
|
+
const servers = [...(params.mcpServers ?? [])].sort((a, b) => a.name.localeCompare(b.name));
|
|
30
|
+
return JSON.stringify({ cwd: params.cwd, mcpServers: servers });
|
|
31
|
+
}
|
|
24
32
|
function isStaticBinary() {
|
|
25
33
|
return process.env.CLAUDE_AGENT_ACP_IS_SINGLE_FILE_BUN !== undefined;
|
|
26
34
|
}
|
|
@@ -93,37 +101,69 @@ export class ClaudeAcpAgent {
|
|
|
93
101
|
};
|
|
94
102
|
const supportsTerminalAuth = request.clientCapabilities?.auth?.terminal === true;
|
|
95
103
|
const supportsMetaTerminalAuth = request.clientCapabilities?._meta?.["terminal-auth"] === true;
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
type: "terminal",
|
|
108
|
-
args: ["--cli", "auth", "login", "--console"],
|
|
109
|
-
};
|
|
110
|
-
// If client supports terminal-auth capability, use that instead.
|
|
111
|
-
if (supportsMetaTerminalAuth) {
|
|
112
|
-
const baseArgs = process.argv.slice(1);
|
|
113
|
-
claudeLoginMethod._meta = {
|
|
114
|
-
"terminal-auth": {
|
|
115
|
-
command: process.execPath,
|
|
116
|
-
args: [...baseArgs, "--cli", "auth", "login", "--claudeai"],
|
|
117
|
-
label: "Claude Login",
|
|
118
|
-
},
|
|
104
|
+
const noBrowser = !!process.env.NO_BROWSER;
|
|
105
|
+
// When NO_BROWSER is set (e.g. remote environments), fall back to the single
|
|
106
|
+
// terminal-only login that doesn't try to open a browser.
|
|
107
|
+
const terminalAuthMethods = [];
|
|
108
|
+
if (noBrowser) {
|
|
109
|
+
const remoteLoginMethod = {
|
|
110
|
+
description: "Run `claude /login` in the terminal",
|
|
111
|
+
name: "Log in with Claude",
|
|
112
|
+
id: "claude-login",
|
|
113
|
+
type: "terminal",
|
|
114
|
+
args: ["--cli"],
|
|
119
115
|
};
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
116
|
+
if (supportsMetaTerminalAuth) {
|
|
117
|
+
remoteLoginMethod._meta = {
|
|
118
|
+
"terminal-auth": {
|
|
119
|
+
command: process.execPath,
|
|
120
|
+
args: [...process.argv.slice(1), "--cli"],
|
|
121
|
+
label: "Claude Login",
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (!shouldHideClaudeAuth() && (supportsTerminalAuth || supportsMetaTerminalAuth)) {
|
|
126
|
+
terminalAuthMethods.push(remoteLoginMethod);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const claudeLoginMethod = {
|
|
131
|
+
description: "Use Claude subscription ",
|
|
132
|
+
name: "Claude Subscription",
|
|
133
|
+
id: "claude-ai-login",
|
|
134
|
+
type: "terminal",
|
|
135
|
+
args: ["--cli", "auth", "login", "--claudeai"],
|
|
136
|
+
};
|
|
137
|
+
const consoleLoginMethod = {
|
|
138
|
+
description: "Use Anthropic Console (API usage billing)",
|
|
139
|
+
name: "Anthropic Console",
|
|
140
|
+
id: "console-login",
|
|
141
|
+
type: "terminal",
|
|
142
|
+
args: ["--cli", "auth", "login", "--console"],
|
|
126
143
|
};
|
|
144
|
+
if (supportsMetaTerminalAuth) {
|
|
145
|
+
const baseArgs = process.argv.slice(1);
|
|
146
|
+
claudeLoginMethod._meta = {
|
|
147
|
+
"terminal-auth": {
|
|
148
|
+
command: process.execPath,
|
|
149
|
+
args: [...baseArgs, "--cli", "auth", "login", "--claudeai"],
|
|
150
|
+
label: "Claude Login",
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
consoleLoginMethod._meta = {
|
|
154
|
+
"terminal-auth": {
|
|
155
|
+
command: process.execPath,
|
|
156
|
+
args: [...baseArgs, "--cli", "auth", "login", "--console"],
|
|
157
|
+
label: "Anthropic Console Login",
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
if (!shouldHideClaudeAuth() && (supportsTerminalAuth || supportsMetaTerminalAuth)) {
|
|
162
|
+
terminalAuthMethods.push(claudeLoginMethod);
|
|
163
|
+
}
|
|
164
|
+
if (supportsTerminalAuth || supportsMetaTerminalAuth) {
|
|
165
|
+
terminalAuthMethods.push(consoleLoginMethod);
|
|
166
|
+
}
|
|
127
167
|
}
|
|
128
168
|
return {
|
|
129
169
|
protocolVersion: 1,
|
|
@@ -154,13 +194,7 @@ export class ClaudeAcpAgent {
|
|
|
154
194
|
title: "Claude Agent",
|
|
155
195
|
version: packageJson.version,
|
|
156
196
|
},
|
|
157
|
-
authMethods: [
|
|
158
|
-
...(!shouldHideClaudeAuth() && (supportsTerminalAuth || supportsMetaTerminalAuth)
|
|
159
|
-
? [claudeLoginMethod]
|
|
160
|
-
: []),
|
|
161
|
-
...(supportsTerminalAuth || supportsMetaTerminalAuth ? [consoleLoginMethod] : []),
|
|
162
|
-
...(supportsGatewayAuth ? [gatewayAuthMethod] : []),
|
|
163
|
-
],
|
|
197
|
+
authMethods: [...terminalAuthMethods, ...(supportsGatewayAuth ? [gatewayAuthMethod] : [])],
|
|
164
198
|
};
|
|
165
199
|
}
|
|
166
200
|
async newSession(params) {
|
|
@@ -593,15 +627,23 @@ export class ClaudeAcpAgent {
|
|
|
593
627
|
session.pendingMessages.clear();
|
|
594
628
|
await session.query.interrupt();
|
|
595
629
|
}
|
|
596
|
-
|
|
597
|
-
|
|
630
|
+
/** Cleanly tear down a session: cancel in-flight work, dispose resources,
|
|
631
|
+
* and remove it from the session map. */
|
|
632
|
+
async teardownSession(sessionId) {
|
|
633
|
+
const session = this.sessions[sessionId];
|
|
598
634
|
if (!session) {
|
|
599
|
-
|
|
635
|
+
return;
|
|
600
636
|
}
|
|
601
|
-
await this.cancel({ sessionId
|
|
637
|
+
await this.cancel({ sessionId });
|
|
602
638
|
session.settingsManager.dispose();
|
|
603
639
|
session.abortController.abort();
|
|
604
|
-
delete this.sessions[
|
|
640
|
+
delete this.sessions[sessionId];
|
|
641
|
+
}
|
|
642
|
+
async unstable_closeSession(params) {
|
|
643
|
+
if (!this.sessions[params.sessionId]) {
|
|
644
|
+
throw new Error("Session not found");
|
|
645
|
+
}
|
|
646
|
+
await this.teardownSession(params.sessionId);
|
|
605
647
|
return {};
|
|
606
648
|
}
|
|
607
649
|
async unstable_setSessionModel(params) {
|
|
@@ -890,12 +932,19 @@ export class ClaudeAcpAgent {
|
|
|
890
932
|
async getOrCreateSession(params) {
|
|
891
933
|
const existingSession = this.sessions[params.sessionId];
|
|
892
934
|
if (existingSession) {
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
935
|
+
const fingerprint = computeSessionFingerprint(params);
|
|
936
|
+
if (fingerprint === existingSession.sessionFingerprint) {
|
|
937
|
+
return {
|
|
938
|
+
sessionId: params.sessionId,
|
|
939
|
+
modes: existingSession.modes,
|
|
940
|
+
models: existingSession.models,
|
|
941
|
+
configOptions: existingSession.configOptions,
|
|
942
|
+
};
|
|
943
|
+
}
|
|
944
|
+
// Session-defining params changed (e.g. cwd pointed at a git worktree,
|
|
945
|
+
// or MCP servers reconfigured). Tear down the existing session and
|
|
946
|
+
// recreate it so the underlying Query process picks up the new values.
|
|
947
|
+
await this.teardownSession(params.sessionId);
|
|
899
948
|
}
|
|
900
949
|
const response = await this.createSession({
|
|
901
950
|
cwd: params.cwd,
|
|
@@ -1123,6 +1172,7 @@ export class ClaudeAcpAgent {
|
|
|
1123
1172
|
input: input,
|
|
1124
1173
|
cancelled: false,
|
|
1125
1174
|
cwd: params.cwd,
|
|
1175
|
+
sessionFingerprint: computeSessionFingerprint(params),
|
|
1126
1176
|
settingsManager,
|
|
1127
1177
|
accumulatedUsage: {
|
|
1128
1178
|
inputTokens: 0,
|
|
@@ -1267,7 +1317,17 @@ function resolveModelPreference(models, preference) {
|
|
|
1267
1317
|
async function getAvailableModels(query, models, settingsManager) {
|
|
1268
1318
|
const settings = settingsManager.getSettings();
|
|
1269
1319
|
let currentModel = models[0];
|
|
1270
|
-
|
|
1320
|
+
// Model priority (highest to lowest):
|
|
1321
|
+
// 1. ANTHROPIC_MODEL environment variable
|
|
1322
|
+
// 2. settings.model (user configuration)
|
|
1323
|
+
// 3. models[0] (default first model)
|
|
1324
|
+
if (process.env.ANTHROPIC_MODEL) {
|
|
1325
|
+
const match = resolveModelPreference(models, process.env.ANTHROPIC_MODEL);
|
|
1326
|
+
if (match) {
|
|
1327
|
+
currentModel = match;
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
else if (settings.model) {
|
|
1271
1331
|
const match = resolveModelPreference(models, settings.model);
|
|
1272
1332
|
if (match) {
|
|
1273
1333
|
currentModel = match;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.26.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",
|
|
@@ -60,22 +60,22 @@
|
|
|
60
60
|
"author": "Zed Industries",
|
|
61
61
|
"license": "Apache-2.0",
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@agentclientprotocol/sdk": "0.18.
|
|
64
|
-
"@anthropic-ai/claude-agent-sdk": "0.2.
|
|
63
|
+
"@agentclientprotocol/sdk": "0.18.1",
|
|
64
|
+
"@anthropic-ai/claude-agent-sdk": "0.2.96",
|
|
65
65
|
"zod": "^3.25.0 || ^4.0.0"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@anthropic-ai/sdk": "0.
|
|
68
|
+
"@anthropic-ai/sdk": "0.85.0",
|
|
69
69
|
"@eslint/js": "10.0.1",
|
|
70
|
-
"@types/node": "25.5.
|
|
71
|
-
"@typescript-eslint/eslint-plugin": "8.58.
|
|
72
|
-
"@typescript-eslint/parser": "8.58.
|
|
73
|
-
"eslint": "10.
|
|
70
|
+
"@types/node": "25.5.2",
|
|
71
|
+
"@typescript-eslint/eslint-plugin": "8.58.1",
|
|
72
|
+
"@typescript-eslint/parser": "8.58.1",
|
|
73
|
+
"eslint": "10.2.0",
|
|
74
74
|
"eslint-config-prettier": "10.1.8",
|
|
75
75
|
"globals": "17.4.0",
|
|
76
76
|
"prettier": "3.8.1",
|
|
77
77
|
"ts-node": "10.9.2",
|
|
78
78
|
"typescript": "6.0.2",
|
|
79
|
-
"vitest": "4.1.
|
|
79
|
+
"vitest": "4.1.3"
|
|
80
80
|
}
|
|
81
81
|
}
|