diff --git a/Copyright.md b/Copyright.md index 642c68a2..370704f8 100644 --- a/Copyright.md +++ b/Copyright.md @@ -266,9 +266,8 @@ Original source: https://github.com/zed-industries/codex | File | Nature of changes | | --------------------- | -------------------------------------------------------------- | -| Vendored snapshot | Based on upstream `@agentclientprotocol/claude-agent-acp` `0.37.0` (`36822c2b75b6e1cd5406a5ab40fe603fc380ee10`) with vendored `dist/` runtime files | -| `package.json`, `package-lock.json` | Updated `@anthropic-ai/claude-agent-sdk` to `0.3.154` to embed Claude Code `2.1.154` | -| `src/acp-agent.ts`, `dist/acp-agent.js` | Added no-op handling for the SDK `thinking_tokens` system event introduced by the newer runtime | +| Vendored snapshot | Based on upstream `@agentclientprotocol/claude-agent-acp` `0.39.0` (`edde96ebafac2ea5d1c879c17459453472d82916`) with generated `dist/` runtime files required by desktop packaging | +| `src/acp-agent.ts`, `dist/acp-agent.js` | Replaced upstream local-command metadata regex with a linear scanner to avoid polynomial runtime on uncontrolled input | > All original copyright notices and license headers have been preserved. > The full text of the Apache-2.0 license is available at diff --git a/vendor/Claude-agent-acp-upstream/.release-please-manifest.json b/vendor/Claude-agent-acp-upstream/.release-please-manifest.json index 05b60243..418b49e9 100644 --- a/vendor/Claude-agent-acp-upstream/.release-please-manifest.json +++ b/vendor/Claude-agent-acp-upstream/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.37.0" + ".": "0.39.0" } diff --git a/vendor/Claude-agent-acp-upstream/CHANGELOG.md b/vendor/Claude-agent-acp-upstream/CHANGELOG.md index 89a46f62..cc88c742 100644 --- a/vendor/Claude-agent-acp-upstream/CHANGELOG.md +++ b/vendor/Claude-agent-acp-upstream/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.39.0](https://github.com/agentclientprotocol/claude-agent-acp/compare/v0.38.0...v0.39.0) (2026-05-29) + + +### Features + +* **deps:** update Claude Agent SDK to 0.3.156 ([#722](https://github.com/agentclientprotocol/claude-agent-acp/issues/722)) ([3fb6db4](https://github.com/agentclientprotocol/claude-agent-acp/commit/3fb6db4e5ee5bd1f431cf5d2ce5331ce983f9597)) + +## [0.38.0](https://github.com/agentclientprotocol/claude-agent-acp/compare/v0.37.0...v0.38.0) (2026-05-28) + + +### Features + +* **deps:** bump to @anthropic-ai/claude-agent-sdk 0.3.154 (Opus 4.8) ([#716](https://github.com/agentclientprotocol/claude-agent-acp/issues/716)) ([a172885](https://github.com/agentclientprotocol/claude-agent-acp/commit/a172885c80fc32c108a8501268a543641088f543)) +* Support Opus 4.8 ([#718](https://github.com/agentclientprotocol/claude-agent-acp/issues/718)) ([98b54a0](https://github.com/agentclientprotocol/claude-agent-acp/commit/98b54a02c267cdef619becceccf6ef519fbf8f6f)) + + +### Bug Fixes + +* Remove hide Claude auth flag handling ([#707](https://github.com/agentclientprotocol/claude-agent-acp/issues/707)) ([7ed1daf](https://github.com/agentclientprotocol/claude-agent-acp/commit/7ed1daf7b42088ad149e9bf742f764752b82d093)) + ## [0.37.0](https://github.com/agentclientprotocol/claude-agent-acp/compare/v0.36.1...v0.37.0) (2026-05-21) diff --git a/vendor/Claude-agent-acp-upstream/dist/acp-agent.d.ts.map b/vendor/Claude-agent-acp-upstream/dist/acp-agent.d.ts.map index 825aebe5..4ecf6753 100644 --- a/vendor/Claude-agent-acp-upstream/dist/acp-agent.d.ts.map +++ b/vendor/Claude-agent-acp-upstream/dist/acp-agent.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/vendor/Claude-agent-acp-upstream/dist/acp-agent.js b/vendor/Claude-agent-acp-upstream/dist/acp-agent.js index 9ab1abf1..06d16e8b 100644 --- a/vendor/Claude-agent-acp-upstream/dist/acp-agent.js +++ b/vendor/Claude-agent-acp-upstream/dist/acp-agent.js @@ -463,6 +463,13 @@ export class ClaudeAcpAgent { // forward it to clients as structured `data`, sparing them from // pattern-matching on the human-readable message text. let lastAssistantError; + // Tracks whether we're inside a compaction. The SDK emits the terminal + // `status` (compact_result success/failed) twice for a single failed + // compaction, and the two messages are indistinguishable — so we report the + // outcome only while a compaction is in progress, then clear this. A fresh + // `compacting` status sets it again, so every distinct compaction (e.g. + // repeated auto-compactions in a long turn) is still shown. + let compactionInProgress = false; const userMessage = promptToClaude(params); const promptUuid = randomUUID(); userMessage.uuid = promptUuid; @@ -511,6 +518,7 @@ export class ClaudeAcpAgent { break; case "status": { if (message.status === "compacting") { + compactionInProgress = true; await this.client.sessionUpdate({ sessionId: message.session_id, update: { @@ -519,6 +527,30 @@ export class ClaudeAcpAgent { }, }); } + else if (message.compact_result === "success" && compactionInProgress) { + // The SDK signals manual `/compact` completion with a status + // message carrying `compact_result`, not the `compact_boundary` + // message (which only fires when there's content to compact). + compactionInProgress = false; + await this.client.sessionUpdate({ + sessionId: message.session_id, + update: { + sessionUpdate: "agent_message_chunk", + content: { type: "text", text: "\n\nCompacting completed." }, + }, + }); + } + else if (message.compact_result === "failed" && compactionInProgress) { + compactionInProgress = false; + const reason = message.compact_error ? `: ${message.compact_error}` : "."; + await this.client.sessionUpdate({ + sessionId: message.session_id, + update: { + sessionUpdate: "agent_message_chunk", + content: { type: "text", text: `\n\nCompacting failed${reason}` }, + }, + }); + } break; } case "compact_boundary": { @@ -533,6 +565,10 @@ export class ClaudeAcpAgent { // The alternative (no update) leaves the client showing e.g. // "944k/1m" right after the user sees "Compacting completed", // which is confusing and wrong. + // + // The "Compacting completed." text is emitted from the `status` + // handler (keyed on `compact_result`), not here, so the failure + // path gets a message too. lastAssistantTotalUsage = 0; lastAssistantUsage = null; await this.client.sessionUpdate({ @@ -543,13 +579,6 @@ export class ClaudeAcpAgent { size: session.contextWindowSize, }, }); - await this.client.sessionUpdate({ - sessionId: message.session_id, - update: { - sessionUpdate: "agent_message_chunk", - content: { type: "text", text: "\n\nCompacting completed." }, - }, - }); break; } case "local_command_output": { @@ -831,7 +860,8 @@ export class ClaudeAcpAgent { // /usage, /status, /model) arrive wrapped in these tags; pure-marker // payloads (e.g. /compact's malformed output) strip to null and are // skipped. Mirrors the replay path at replaySessionHistory. - if (typeof message.message.content === "string" && + if (message.message.role !== "system" && + typeof message.message.content === "string" && message.message.content.includes("")) { const stripped = stripLocalCommandMetadata(message.message.content); if (typeof stripped === "string") { @@ -862,6 +892,9 @@ export class ClaudeAcpAgent { message.message.content[0].type === "text"))) { break; } + if (message.message.role === "system") { + break; + } if (message.type === "assistant" && message.message.model === "" && Array.isArray(message.message.content) && @@ -2504,6 +2537,7 @@ export function toAcpNotifications(content, role, sessionId, toolUseCache, clien case "compaction": case "compaction_delta": case "advisor_tool_result": + case "mid_conv_system": break; default: unreachable(chunk, logger); @@ -2541,7 +2575,11 @@ export function streamEventToAcpNotifications(message, sessionId, toolUseCache, cwd: options?.cwd, taskState: options?.taskState, }); - // No content + // No content. `ping` is a Messages-API keep-alive event that the SDK's + // `BetaRawMessageStreamEvent` union doesn't include even though the + // wire format emits it; the `as never` cast lets us no-op it here + // instead of letting it fall through to `unreachable`. + case "ping": case "message_start": case "message_delta": case "message_stop": diff --git a/vendor/Claude-agent-acp-upstream/dist/tests/acp-agent.test.js b/vendor/Claude-agent-acp-upstream/dist/tests/acp-agent.test.js index de707a92..db881739 100644 --- a/vendor/Claude-agent-acp-upstream/dist/tests/acp-agent.test.js +++ b/vendor/Claude-agent-acp-upstream/dist/tests/acp-agent.test.js @@ -3,7 +3,7 @@ import { spawn, spawnSync } from "child_process"; import { ClientSideConnection, ndJsonStream, } from "@agentclientprotocol/sdk"; import { nodeToWebWritable, nodeToWebReadable } from "../utils.js"; import { markdownEscape, toolInfoFromToolUse, toDisplayPath, toolUpdateFromToolResult, toolUpdateFromDiffToolResponse, } from "../tools.js"; -import { toAcpNotifications, promptToClaude, isLocalCommandMetadata, stripLocalCommandMetadata, ClaudeAcpAgent, claudeCliPath, describeAlwaysAllow, } from "../acp-agent.js"; +import { toAcpNotifications, promptToClaude, isLocalCommandMetadata, stripLocalCommandMetadata, ClaudeAcpAgent, claudeCliPath, describeAlwaysAllow, streamEventToAcpNotifications, } from "../acp-agent.js"; import { Pushable } from "../utils.js"; import { deleteSession, query } from "@anthropic-ai/claude-agent-sdk"; import { randomUUID } from "crypto"; @@ -163,13 +163,15 @@ describe.skipIf(!process.env.RUN_INTEGRATION_TESTS)("ACP subprocess integration" }, name: "compact", }); - // Send something - await connection.prompt({ - prompt: [{ type: "text", text: "Hi" }], - sessionId: newSessionResponse.sessionId, - }); - // Clear response - client.takeReceivedText(); + // Build up enough conversation that there's something to compact. The SDK + // refuses to compact a conversation with too few message groups. + for (let i = 0; i < 6; i++) { + await connection.prompt({ + prompt: [{ type: "text", text: `Reply with just the number ${i}.` }], + sessionId: newSessionResponse.sessionId, + }); + client.takeReceivedText(); + } await connection.prompt({ prompt: [ { @@ -180,7 +182,7 @@ describe.skipIf(!process.env.RUN_INTEGRATION_TESTS)("ACP subprocess integration" sessionId: newSessionResponse.sessionId, }); expect(client.takeReceivedText()).toContain("Compacting...\n\nCompacting completed."); - }, 30000); + }, 60000); }); describe("tool conversions", () => { it("should handle Bash nicely", () => { @@ -549,6 +551,7 @@ describe("tool conversions", () => { server_tool_use: null, inference_geo: null, iterations: null, + output_tokens_details: null, speed: null, }, context_management: null, @@ -3321,3 +3324,27 @@ describe("post-error recovery", () => { expect(session.pendingMessages.size).toBe(0); }); }); +describe("streamEventToAcpNotifications", () => { + it("treats `ping` keep-alive events as no-ops without logging to stderr", () => { + const errors = []; + const logger = { + log: () => { }, + error: (...args) => { + errors.push(args); + }, + }; + const pingMessage = { + type: "stream_event", + parent_tool_use_id: null, + uuid: randomUUID(), + session_id: "test-session", + // The SDK's typed `BetaRawMessageStreamEvent` union doesn't include + // `ping`, but the API emits it on the wire and the SDK passes it + // through. Cast through `unknown` to feed the realistic runtime shape. + event: { type: "ping" }, + }; + const result = streamEventToAcpNotifications(pingMessage, "test-session", {}, { sessionUpdate: async () => { } }, logger); + expect(result).toEqual([]); + expect(errors).toEqual([]); + }); +}); diff --git a/vendor/Claude-agent-acp-upstream/dist/tests/authorization.test.js b/vendor/Claude-agent-acp-upstream/dist/tests/authorization.test.js index 0b5bd242..4c752578 100644 --- a/vendor/Claude-agent-acp-upstream/dist/tests/authorization.test.js +++ b/vendor/Claude-agent-acp-upstream/dist/tests/authorization.test.js @@ -10,7 +10,8 @@ const mockQuery = vi.hoisted(() => vi.fn(() => ({ setPermissionMode: vi.fn(), supportedCommands: vi.fn().mockResolvedValue([]), }))); -vi.mock("@anthropic-ai/claude-agent-sdk", () => ({ +vi.mock("@anthropic-ai/claude-agent-sdk", async () => ({ + ...(await vi.importActual("@anthropic-ai/claude-agent-sdk")), query: mockQuery, })); describe("authorization", () => { diff --git a/vendor/Claude-agent-acp-upstream/package-lock.json b/vendor/Claude-agent-acp-upstream/package-lock.json index 95c7370b..ce93e21e 100644 --- a/vendor/Claude-agent-acp-upstream/package-lock.json +++ b/vendor/Claude-agent-acp-upstream/package-lock.json @@ -1,27 +1,27 @@ { "name": "@agentclientprotocol/claude-agent-acp", - "version": "0.37.0", + "version": "0.39.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@agentclientprotocol/claude-agent-acp", - "version": "0.37.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@agentclientprotocol/sdk": "0.22.1", - "@anthropic-ai/claude-agent-sdk": "0.3.154", + "@anthropic-ai/claude-agent-sdk": "0.3.156", "zod": "^3.25.0 || ^4.0.0" }, "bin": { "claude-agent-acp": "dist/index.js" }, "devDependencies": { - "@anthropic-ai/sdk": "0.97.1", + "@anthropic-ai/sdk": "0.100.0", "@eslint/js": "10.0.1", "@types/node": "25.9.1", - "@typescript-eslint/eslint-plugin": "8.59.4", - "@typescript-eslint/parser": "8.59.4", + "@typescript-eslint/eslint-plugin": "8.60.0", + "@typescript-eslint/parser": "8.60.0", "eslint": "10.4.0", "eslint-config-prettier": "10.1.8", "globals": "17.6.0", @@ -41,22 +41,22 @@ } }, "node_modules/@anthropic-ai/claude-agent-sdk": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.154.tgz", - "integrity": "sha512-iEn25urI2QrMPFIhId3h7v/7EG5gsmF7ooe+6EvsAosePeLmpVVerp5nXtHnlmBkMinLecurcPA+OddKw76jYw==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.156.tgz", + "integrity": "sha512-6nM/Dj+VMds52UXJ2YaV4IKhYamlUqN0HtdDrFzYz5lvPMpDS935qD8YZDAUpy+ltdoD6PJMd1V/CKFY3/oWCQ==", "license": "SEE LICENSE IN README.md", "engines": { "node": ">=18.0.0" }, "optionalDependencies": { - "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.154", - "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.154", - "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.154", - "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.154", - "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.154", - "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.154", - "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.154", - "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.154" + "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.156", + "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.156", + "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.156", + "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.156", + "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.156", + "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.156", + "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.156", + "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.156" }, "peerDependencies": { "@anthropic-ai/sdk": ">=0.93.0", @@ -65,9 +65,9 @@ } }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.154.tgz", - "integrity": "sha512-oFW3LD5lYrKAU+AKu27Z8hrzqkrh362qQrwi/i3DxGcud9BXUycsXYjShpDj3D3JZu169UzZuSPhx1Wajmbiwg==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.156.tgz", + "integrity": "sha512-IkjcS9dqAUlD4Nb62L9AZtmAXCa+FV4ul8lIlyXXUprh3nlecbKsWOXVd/GORrzAhMmynJaX4+iV1JiutFKXUA==", "cpu": [ "arm64" ], @@ -78,9 +78,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.154.tgz", - "integrity": "sha512-5BgWEueP+cqoctWjZYhCbyltuaV/N2DmKDXD3/69cKaVmJp8XL9OCzlq/HEirA/+Ssjskx6hDUBaOcpuZ3iwQA==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.156.tgz", + "integrity": "sha512-6PKi5fPmGRuzXu+Em/iwLmPG3mqg0hl92wcTU8fmChqyNtxhxsjCw7LTbdFqp/05o5NeZVVV4k3p7YUv5IFD6g==", "cpu": [ "x64" ], @@ -91,9 +91,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.154.tgz", - "integrity": "sha512-rRkW4SBL3W7zQvKscCIfIGlmoeuTbMV6dXFbPdmpRGvmYZIs79RpzO6xrGBnnhmm+B7znQ9oHAnffi/2FBgJbA==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.156.tgz", + "integrity": "sha512-H0Nfd41iw5isto9uQI1FlVSZ0eaDttr8rBpJMR25oK/mj3egMO5EmZ6aAxeeUYSLn2mSU50HA5VNxlGUE118TQ==", "cpu": [ "arm64" ], @@ -104,9 +104,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.154.tgz", - "integrity": "sha512-o2bCQN4Xn3UqCLErC5m4T7u0yYArJYmgFCUFnA6K96DdW2RERvx+gTKXxWuHEBkDO+eMoHLHLxk0u2jGES00Ng==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.156.tgz", + "integrity": "sha512-R7KEVjxkR4rYgIQoHGBzwPdUJYxRTO8I4vHjRbMLH1eW4FS7BJvVs7ogfKR/NnHFBvMVqtC+l6jHLQv8bobUiw==", "cpu": [ "arm64" ], @@ -117,9 +117,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.154.tgz", - "integrity": "sha512-GpiFF8Ez6PbM3m0gqtCo/FKM346qyRdP7VhbmJzdnbNKTiiUZ66vDQyEUPZPCG24ZkrG4m96KpRIUwY08rHiNg==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.156.tgz", + "integrity": "sha512-ymhrdlbWoYvTACUdaGdhrEv+ZMfwXLsf0BRLkr/IvY5aqybP7URzWmmZGOtDQpqkT/8xu/UCGqUYH3woJwUxfg==", "cpu": [ "x64" ], @@ -130,9 +130,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.154.tgz", - "integrity": "sha512-zA7S8Lm6O4QBsUpbhiOht8BgiXHOBBFUIo8ZLK6r5wAatK3Q44syWVxICeyCnR6wqfnkf3cugCw27ycS6vVgaA==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.156.tgz", + "integrity": "sha512-/Q6WUizI6a+hqZZ6ElwRU0PEuFhOoN4v6CuU35HHbiZ/7uaocGht4A8ZIgK1Fw6wOGtZzGLbc00CA1OU1Zg8EA==", "cpu": [ "x64" ], @@ -143,9 +143,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.154.tgz", - "integrity": "sha512-cDW1YFbU/PJFlrGXhlAGcbkXt80sEO6WtnH8nN8YHXLn5NWduy2q7o/qC6i8XozgvRGf6t/eMoH7IasGIEDhDw==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.156.tgz", + "integrity": "sha512-5sAeNObQQrMy4NF9HwxewrMnU7mVxZDHh+/MfJVQSz0GSTvXQ6gOuRH8helMlfspoU6VOdekPxVLRooX/3foEw==", "cpu": [ "arm64" ], @@ -156,9 +156,9 @@ ] }, "node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": { - "version": "0.3.154", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.154.tgz", - "integrity": "sha512-tSKaIIpL72OPg3WfzZTCIl8OJgcbq4qieu8/fDWjsdeQuari9gQMIuEflFphk9HqNsxpSmDqKi8Sm5mW2V566Q==", + "version": "0.3.156", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.156.tgz", + "integrity": "sha512-/PofeTWoiKgnWNSNk0wG4SsRn22GGLmnLhg2R94WcNhCRFOyOTmiZcYH2DBlWZBIRVTZDsSfa/Pl1DyPvYCGKw==", "cpu": [ "x64" ], @@ -169,9 +169,9 @@ ] }, "node_modules/@anthropic-ai/sdk": { - "version": "0.97.1", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.97.1.tgz", - "integrity": "sha512-wOf7AUeJPitcVpvKO4UMu63mWH5SaVipkGd7OOQJt/G6VYGlV8D2Gp9dLxOrttDJh/9gqPqdaBwDGcBevumeAg==", + "version": "0.100.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.100.0.tgz", + "integrity": "sha512-cAm3aXm6qAiHIvHxyIIGd6tVmsD2gDqlc2h0R20ijNUzGgVnIN822bit4mKbF6CkuV7qIrLQIPoAepHEpanrQQ==", "license": "MIT", "dependencies": { "json-schema-to-ts": "^3.1.1", @@ -190,9 +190,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -903,17 +903,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.4.tgz", - "integrity": "sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", + "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.59.4", - "@typescript-eslint/type-utils": "8.59.4", - "@typescript-eslint/utils": "8.59.4", - "@typescript-eslint/visitor-keys": "8.59.4", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/type-utils": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -926,22 +926,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "8.59.4", + "@typescript-eslint/parser": "^8.60.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.4.tgz", - "integrity": "sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", + "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.59.4", - "@typescript-eslint/types": "8.59.4", - "@typescript-eslint/typescript-estree": "8.59.4", - "@typescript-eslint/visitor-keys": "8.59.4", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", "debug": "^4.4.3" }, "engines": { @@ -957,14 +957,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.4.tgz", - "integrity": "sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", + "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.59.4", - "@typescript-eslint/types": "^8.59.4", + "@typescript-eslint/tsconfig-utils": "^8.60.0", + "@typescript-eslint/types": "^8.60.0", "debug": "^4.4.3" }, "engines": { @@ -979,14 +979,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.4.tgz", - "integrity": "sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", + "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.4", - "@typescript-eslint/visitor-keys": "8.59.4" + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -997,9 +997,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.4.tgz", - "integrity": "sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", + "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", "dev": true, "license": "MIT", "engines": { @@ -1014,15 +1014,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.4.tgz", - "integrity": "sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", + "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.4", - "@typescript-eslint/typescript-estree": "8.59.4", - "@typescript-eslint/utils": "8.59.4", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/utils": "8.60.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -1039,9 +1039,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.4.tgz", - "integrity": "sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", + "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", "dev": true, "license": "MIT", "engines": { @@ -1053,16 +1053,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.4.tgz", - "integrity": "sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", + "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.59.4", - "@typescript-eslint/tsconfig-utils": "8.59.4", - "@typescript-eslint/types": "8.59.4", - "@typescript-eslint/visitor-keys": "8.59.4", + "@typescript-eslint/project-service": "8.60.0", + "@typescript-eslint/tsconfig-utils": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1081,16 +1081,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.4.tgz", - "integrity": "sha512-cYXeNAUsG4lJo5dbc1FcKm+JwIWrj1/UpTORsC6tGMjEZ81DYcvIr9/ueikhMa/Y/gDQYGp+YX9/xQrXje5BJw==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", + "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.59.4", - "@typescript-eslint/types": "8.59.4", - "@typescript-eslint/typescript-estree": "8.59.4" + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1105,13 +1105,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.59.4", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.4.tgz", - "integrity": "sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", + "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.4", + "@typescript-eslint/types": "8.60.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -1653,9 +1653,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "peer": true, "dependencies": { @@ -1947,9 +1947,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.8.tgz", - "integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", + "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", "license": "MIT", "peer": true, "engines": { @@ -2300,9 +2300,9 @@ } }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "peer": true, "dependencies": { @@ -2313,9 +2313,9 @@ } }, "node_modules/hono": { - "version": "4.12.21", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.21.tgz", - "integrity": "sha512-uV63apnb0kyPtAUwoWgaGh9HyIFcv8lgmzPZSiTBQAFOFGIzka5EZ1dZocmGnn0XdX0+XTqJ6Tqv7selMuGLRQ==", + "version": "4.12.23", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.23.tgz", + "integrity": "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==", "license": "MIT", "peer": true, "engines": { @@ -3304,9 +3304,9 @@ "peer": true }, "node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", "dev": true, "license": "ISC", "bin": { @@ -3526,9 +3526,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", - "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz", + "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==", "dev": true, "license": "MIT", "engines": { diff --git a/vendor/Claude-agent-acp-upstream/package.json b/vendor/Claude-agent-acp-upstream/package.json index 644f855c..d737de62 100644 --- a/vendor/Claude-agent-acp-upstream/package.json +++ b/vendor/Claude-agent-acp-upstream/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "0.37.0", + "version": "0.39.0", "description": "An ACP-compatible coding agent powered by the Claude Agent SDK (TypeScript)", "main": "dist/lib.js", "types": "dist/lib.d.ts", @@ -61,15 +61,15 @@ "license": "Apache-2.0", "dependencies": { "@agentclientprotocol/sdk": "0.22.1", - "@anthropic-ai/claude-agent-sdk": "0.3.154", + "@anthropic-ai/claude-agent-sdk": "0.3.156", "zod": "^3.25.0 || ^4.0.0" }, "devDependencies": { - "@anthropic-ai/sdk": "0.97.1", + "@anthropic-ai/sdk": "0.100.0", "@eslint/js": "10.0.1", "@types/node": "25.9.1", - "@typescript-eslint/eslint-plugin": "8.59.4", - "@typescript-eslint/parser": "8.59.4", + "@typescript-eslint/eslint-plugin": "8.60.0", + "@typescript-eslint/parser": "8.60.0", "eslint": "10.4.0", "eslint-config-prettier": "10.1.8", "globals": "17.6.0", diff --git a/vendor/Claude-agent-acp-upstream/src/acp-agent.ts b/vendor/Claude-agent-acp-upstream/src/acp-agent.ts index 4f3974f4..84b5f47c 100644 --- a/vendor/Claude-agent-acp-upstream/src/acp-agent.ts +++ b/vendor/Claude-agent-acp-upstream/src/acp-agent.ts @@ -366,9 +366,7 @@ function stripMarkerTags(text: string): string { break; } - const tagName = LOCAL_COMMAND_TAG_NAMES.find((name) => - text.startsWith(`<${name}>`, openStart), - ); + const tagName = LOCAL_COMMAND_TAG_NAMES.find((name) => text.startsWith(`<${name}>`, openStart)); if (!tagName) { stripped += text.slice(cursor, openStart + 1); @@ -791,6 +789,13 @@ export class ClaudeAcpAgent implements Agent { // forward it to clients as structured `data`, sparing them from // pattern-matching on the human-readable message text. let lastAssistantError: SDKAssistantMessageError | undefined; + // Tracks whether we're inside a compaction. The SDK emits the terminal + // `status` (compact_result success/failed) twice for a single failed + // compaction, and the two messages are indistinguishable — so we report the + // outcome only while a compaction is in progress, then clear this. A fresh + // `compacting` status sets it again, so every distinct compaction (e.g. + // repeated auto-compactions in a long turn) is still shown. + let compactionInProgress = false; const userMessage = promptToClaude(params); @@ -850,6 +855,7 @@ export class ClaudeAcpAgent implements Agent { break; case "status": { if (message.status === "compacting") { + compactionInProgress = true; await this.client.sessionUpdate({ sessionId: message.session_id, update: { @@ -857,6 +863,28 @@ export class ClaudeAcpAgent implements Agent { content: { type: "text", text: "Compacting..." }, }, }); + } else if (message.compact_result === "success" && compactionInProgress) { + // The SDK signals manual `/compact` completion with a status + // message carrying `compact_result`, not the `compact_boundary` + // message (which only fires when there's content to compact). + compactionInProgress = false; + await this.client.sessionUpdate({ + sessionId: message.session_id, + update: { + sessionUpdate: "agent_message_chunk", + content: { type: "text", text: "\n\nCompacting completed." }, + }, + }); + } else if (message.compact_result === "failed" && compactionInProgress) { + compactionInProgress = false; + const reason = message.compact_error ? `: ${message.compact_error}` : "."; + await this.client.sessionUpdate({ + sessionId: message.session_id, + update: { + sessionUpdate: "agent_message_chunk", + content: { type: "text", text: `\n\nCompacting failed${reason}` }, + }, + }); } break; } @@ -872,6 +900,10 @@ export class ClaudeAcpAgent implements Agent { // The alternative (no update) leaves the client showing e.g. // "944k/1m" right after the user sees "Compacting completed", // which is confusing and wrong. + // + // The "Compacting completed." text is emitted from the `status` + // handler (keyed on `compact_result`), not here, so the failure + // path gets a message too. lastAssistantTotalUsage = 0; lastAssistantUsage = null; await this.client.sessionUpdate({ @@ -882,13 +914,6 @@ export class ClaudeAcpAgent implements Agent { size: session.contextWindowSize, }, }); - await this.client.sessionUpdate({ - sessionId: message.session_id, - update: { - sessionUpdate: "agent_message_chunk", - content: { type: "text", text: "\n\nCompacting completed." }, - }, - }); break; } case "local_command_output": { @@ -1210,6 +1235,7 @@ export class ClaudeAcpAgent implements Agent { // payloads (e.g. /compact's malformed output) strip to null and are // skipped. Mirrors the replay path at replaySessionHistory. if ( + message.message.role !== "system" && typeof message.message.content === "string" && message.message.content.includes("") ) { @@ -1254,6 +1280,9 @@ export class ClaudeAcpAgent implements Agent { ) { break; } + if (message.message.role === "system") { + break; + } if ( message.type === "assistant" && @@ -3179,6 +3208,7 @@ export function toAcpNotifications( case "compaction": case "compaction_delta": case "advisor_tool_result": + case "mid_conv_system": break; default: @@ -3246,7 +3276,11 @@ export function streamEventToAcpNotifications( taskState: options?.taskState, }, ); - // No content + // No content. `ping` is a Messages-API keep-alive event that the SDK's + // `BetaRawMessageStreamEvent` union doesn't include even though the + // wire format emits it; the `as never` cast lets us no-op it here + // instead of letting it fall through to `unreachable`. + case "ping" as never: case "message_start": case "message_delta": case "message_stop": diff --git a/vendor/Claude-agent-acp-upstream/src/tests/.claude/commands/say-hello.md b/vendor/Claude-agent-acp-upstream/src/tests/.claude/commands/say-hello.md index 3ec102b7..e5613c38 100644 --- a/vendor/Claude-agent-acp-upstream/src/tests/.claude/commands/say-hello.md +++ b/vendor/Claude-agent-acp-upstream/src/tests/.claude/commands/say-hello.md @@ -3,4 +3,4 @@ description: Say hello argument-hint: name --- -Respond with "Hello $1" and nothing else. +Respond with "Hello $ARGUMENTS" and nothing else. diff --git a/vendor/Claude-agent-acp-upstream/src/tests/acp-agent.test.ts b/vendor/Claude-agent-acp-upstream/src/tests/acp-agent.test.ts index ed328cd4..8cf2227a 100644 --- a/vendor/Claude-agent-acp-upstream/src/tests/acp-agent.test.ts +++ b/vendor/Claude-agent-acp-upstream/src/tests/acp-agent.test.ts @@ -32,6 +32,7 @@ import { ClaudeAcpAgent, claudeCliPath, describeAlwaysAllow, + streamEventToAcpNotifications, type SDKMessageFilter, } from "../acp-agent.js"; import { Pushable } from "../utils.js"; @@ -238,13 +239,15 @@ describe.skipIf(!process.env.RUN_INTEGRATION_TESTS)("ACP subprocess integration" name: "compact", }); - // Send something - await connection.prompt({ - prompt: [{ type: "text", text: "Hi" }], - sessionId: newSessionResponse.sessionId, - }); - // Clear response - client.takeReceivedText(); + // Build up enough conversation that there's something to compact. The SDK + // refuses to compact a conversation with too few message groups. + for (let i = 0; i < 6; i++) { + await connection.prompt({ + prompt: [{ type: "text", text: `Reply with just the number ${i}.` }], + sessionId: newSessionResponse.sessionId, + }); + client.takeReceivedText(); + } await connection.prompt({ prompt: [ @@ -257,7 +260,7 @@ describe.skipIf(!process.env.RUN_INTEGRATION_TESTS)("ACP subprocess integration" }); expect(client.takeReceivedText()).toContain("Compacting...\n\nCompacting completed."); - }, 30000); + }, 60000); }); describe("tool conversions", () => { @@ -662,6 +665,7 @@ describe("tool conversions", () => { server_tool_use: null, inference_geo: null, iterations: null, + output_tokens_details: null, speed: null, }, context_management: null, @@ -3882,3 +3886,38 @@ describe("post-error recovery", () => { expect(session.pendingMessages.size).toBe(0); }); }); + +describe("streamEventToAcpNotifications", () => { + it("treats `ping` keep-alive events as no-ops without logging to stderr", () => { + const errors: unknown[][] = []; + const logger = { + log: () => {}, + error: (...args: unknown[]) => { + errors.push(args); + }, + }; + const pingMessage = { + type: "stream_event", + parent_tool_use_id: null, + uuid: randomUUID(), + session_id: "test-session", + // The SDK's typed `BetaRawMessageStreamEvent` union doesn't include + // `ping`, but the API emits it on the wire and the SDK passes it + // through. Cast through `unknown` to feed the realistic runtime shape. + event: { type: "ping" } as unknown, + } as Parameters[0]; + + const result = streamEventToAcpNotifications( + pingMessage, + "test-session", + {}, + { sessionUpdate: async () => {} } as unknown as Parameters< + typeof streamEventToAcpNotifications + >[3], + logger, + ); + + expect(result).toEqual([]); + expect(errors).toEqual([]); + }); +}); diff --git a/vendor/Claude-agent-acp-upstream/src/tests/authorization.test.ts b/vendor/Claude-agent-acp-upstream/src/tests/authorization.test.ts index d9a36c7b..2180a920 100644 --- a/vendor/Claude-agent-acp-upstream/src/tests/authorization.test.ts +++ b/vendor/Claude-agent-acp-upstream/src/tests/authorization.test.ts @@ -15,7 +15,10 @@ const mockQuery = vi.hoisted(() => })), ); -vi.mock("@anthropic-ai/claude-agent-sdk", () => ({ +vi.mock("@anthropic-ai/claude-agent-sdk", async () => ({ + ...(await vi.importActual( + "@anthropic-ai/claude-agent-sdk", + )), query: mockQuery, })); diff --git a/vendor/README.md b/vendor/README.md index 6df37493..f63ff3b2 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -52,9 +52,9 @@ That means the directory is intentionally reproducible, but not yet minimal. - `vendor/codex-acp/src/subagents.rs` - `vendor/codex-acp/src/thread.rs` - `Claude-agent-acp-upstream/` - - vendored snapshot is currently based on `@agentclientprotocol/claude-agent-acp` `0.37.0` - - upstream commit: `36822c2b75b6e1cd5406a5ab40fe603fc380ee10` - - local runtime update keeps `@agentclientprotocol/sdk` at `0.22.1` and updates `@anthropic-ai/claude-agent-sdk` to `0.3.154` (Claude Code `2.1.154`) + - vendored snapshot is currently based on `@agentclientprotocol/claude-agent-acp` `0.39.0` + - upstream commit: `edde96ebafac2ea5d1c879c17459453472d82916` + - dependencies match the upstream `0.39.0` release (`@agentclientprotocol/sdk` `0.22.1`, `@anthropic-ai/claude-agent-sdk` `0.3.156`) - `dist/` is generated from the upstream source snapshot because the desktop packaging flow depends on it even though upstream does not track it in git ## Current Codex Delta @@ -81,13 +81,16 @@ metadata paths that NeverWrite depends on. ## Current Claude Delta The Claude vendor is based on upstream `@agentclientprotocol/claude-agent-acp` -`0.37.0`, with a narrow local runtime bump to `@anthropic-ai/claude-agent-sdk` -`0.3.154` so the embedded Claude Code runtime is `2.1.154`. +`0.39.0` with one bounded NeverWrite-specific source delta. -The only source-level compatibility delta is treating the SDK's -`thinking_tokens` system event as a no-op. The event is streaming telemetry for -thinking-token estimates, not assistant content, tool calls, file edits, or final -usage. `dist/` is rebuilt from the vendored source after applying that delta. +Upstream `0.39.0` strips local-command metadata with a regular expression that +GitHub Advanced Security flags as vulnerable to polynomial runtime on +uncontrolled input. NeverWrite replaces that expression with an equivalent +linear scanner in `src/acp-agent.ts` and rebuilds `dist/` from that source. + +The `dist/` directory is rebuilt from the vendored source snapshot because the +desktop packaging flow stages the compiled runtime files, while upstream does +not track generated output in git. ## Updating Vendored Runtimes