@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.
@@ -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>;
@@ -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
@@ -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 claudeLoginMethod = {
97
- description: "Use Claude subscription ",
98
- name: "Claude Subscription",
99
- id: "claude-ai-login",
100
- type: "terminal",
101
- args: ["--cli", "auth", "login", "--claudeai"],
102
- };
103
- const consoleLoginMethod = {
104
- description: "Use Anthropic Console (API usage billing)",
105
- name: "Anthropic Console",
106
- id: "console-login",
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
- consoleLoginMethod._meta = {
121
- "terminal-auth": {
122
- command: process.execPath,
123
- args: [...baseArgs, "--cli", "auth", "login", "--console"],
124
- label: "Anthropic Console Login",
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
- async unstable_closeSession(params) {
597
- const session = this.sessions[params.sessionId];
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
- throw new Error("Session not found");
635
+ return;
600
636
  }
601
- await this.cancel({ sessionId: params.sessionId });
637
+ await this.cancel({ sessionId });
602
638
  session.settingsManager.dispose();
603
639
  session.abortController.abort();
604
- delete this.sessions[params.sessionId];
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
- return {
894
- sessionId: params.sessionId,
895
- modes: existingSession.modes,
896
- models: existingSession.models,
897
- configOptions: existingSession.configOptions,
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
- if (settings.model) {
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.25.1",
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.0",
64
- "@anthropic-ai/claude-agent-sdk": "0.2.91",
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.82.0",
68
+ "@anthropic-ai/sdk": "0.85.0",
69
69
  "@eslint/js": "10.0.1",
70
- "@types/node": "25.5.1",
71
- "@typescript-eslint/eslint-plugin": "8.58.0",
72
- "@typescript-eslint/parser": "8.58.0",
73
- "eslint": "10.1.0",
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.2"
79
+ "vitest": "4.1.3"
80
80
  }
81
81
  }