chore: update dependencies

This commit is contained in:
Peter Steinberger
2026-05-04 23:06:49 +01:00
parent 43b5df7295
commit 8ee08b2b77
45 changed files with 552 additions and 476 deletions

View File

@@ -10,6 +10,7 @@ Docs: https://docs.openclaw.ai
### Changes
- Dependencies: refresh runtime and provider packages including Pi 0.73.0, ACPX adapters, OpenAI, Anthropic, Slack, and TypeScript native preview, while keeping the Bedrock runtime installer override pinned below the Windows ARM Node 24 npm resolver failure.
- Plugins/active-memory: skip session-store channel entries that contain `:` when resolving the recall subagent's channel, so QQ c2c agent IDs (e.g. `c2c:10D4F7C2…`) and other scoped conversation IDs do not reach bundled-plugin `dirName` validation and crash the recall run. The same guard already applied to explicit `channelId` params (#76704); this extends it to store-derived channels. (#77396) Thanks @hclsys.
- Secrets/external channel contracts: also look in `<rootDir>/dist/` when resolving the `secret-contract-api` sidecar, so npm-published externalized channel plugins (e.g. `@openclaw/discord` since 2026.5.2) whose compiled artifacts live under `dist/` actually contribute their channel SecretRef contracts to the runtime snapshot. Without this, env-backed `channels.discord.token` SecretRefs silently failed to resolve at gateway start on 2026.5.3, leaving the channel `not configured` even though #76449 had landed the generic external-contract loader. Thanks @mogglemoss.
- Models/auth: add `openclaw models auth list [--provider <id>] [--json]` so users can inspect saved per-agent auth profiles without dumping secrets or hitting the old “too many arguments” path. Thanks @vincentkoc.

View File

@@ -8,8 +8,8 @@
},
"type": "module",
"dependencies": {
"@agentclientprotocol/claude-agent-acp": "0.31.4",
"@zed-industries/codex-acp": "0.12.0",
"@agentclientprotocol/claude-agent-acp": "0.32.0",
"@zed-industries/codex-acp": "0.13.0",
"acpx": "0.6.1"
},
"devDependencies": {

View File

@@ -211,8 +211,8 @@ ${ACPX_CMD} codex sessions close oc-codex-<conversationId>
Defaults are:
- `openclaw -> openclaw acp`
- `claude -> npx -y @agentclientprotocol/claude-agent-acp@^0.31.0`
- `codex -> bundled @zed-industries/codex-acp@0.12.0 through OpenClaw's isolated CODEX_HOME wrapper`
- `claude -> bundled @agentclientprotocol/claude-agent-acp@0.32.0`
- `codex -> bundled @zed-industries/codex-acp@0.13.0 through OpenClaw's isolated CODEX_HOME wrapper`
- `copilot -> copilot --acp --stdio`
- `cursor -> cursor-agent acp`
- `droid -> droid exec --output-format acp`

View File

@@ -163,7 +163,7 @@ describe("prepareAcpxCodexAuthConfig", () => {
});
const wrapper = await fs.readFile(generated.wrapperPath, "utf8");
expect(wrapper).toContain('"@zed-industries/codex-acp@^0.12.0"');
expect(wrapper).toContain('"@zed-industries/codex-acp@0.13.0"');
expect(wrapper).toContain('"--", "codex-acp"');
expect(wrapper).not.toContain("@zed-industries/codex-acp@^0.11.1");
});
@@ -184,7 +184,7 @@ describe("prepareAcpxCodexAuthConfig", () => {
});
const wrapper = await fs.readFile(generated.wrapperPath, "utf8");
expect(wrapper).toContain('"@agentclientprotocol/claude-agent-acp@0.31.4"');
expect(wrapper).toContain('"@agentclientprotocol/claude-agent-acp@0.32.0"');
expect(wrapper).toContain('"--", "claude-agent-acp"');
expect(wrapper).not.toContain("@agentclientprotocol/claude-agent-acp@^0.31.0");
expect(wrapper).not.toContain("@agentclientprotocol/claude-agent-acp@0.31.0");

View File

@@ -4,10 +4,8 @@ import path from "node:path";
import type { ResolvedAcpxPluginConfig } from "./config.js";
const CODEX_ACP_PACKAGE = "@zed-industries/codex-acp";
const CODEX_ACP_PACKAGE_RANGE = "^0.12.0";
const CODEX_ACP_BIN = "codex-acp";
const CLAUDE_ACP_PACKAGE = "@agentclientprotocol/claude-agent-acp";
const CLAUDE_ACP_PACKAGE_VERSION = "0.31.4";
const CLAUDE_ACP_BIN = "claude-agent-acp";
const RUN_CONFIGURED_COMMAND_SENTINEL = "--openclaw-run-configured";
const requireFromHere = createRequire(import.meta.url);
@@ -15,8 +13,22 @@ const requireFromHere = createRequire(import.meta.url);
type PackageManifest = {
name?: unknown;
bin?: unknown;
dependencies?: Record<string, unknown>;
};
const selfManifest = requireFromHere("../package.json") as PackageManifest;
function readManifestDependencyVersion(packageName: string): string {
const version = selfManifest.dependencies?.[packageName];
if (typeof version !== "string" || version.trim() === "") {
throw new Error(`Missing ${packageName} dependency version in @openclaw/acpx manifest`);
}
return version;
}
const CODEX_ACP_PACKAGE_VERSION = readManifestDependencyVersion(CODEX_ACP_PACKAGE);
const CLAUDE_ACP_PACKAGE_VERSION = readManifestDependencyVersion(CLAUDE_ACP_PACKAGE);
function quoteCommandPart(value: string): string {
return JSON.stringify(value);
}
@@ -205,7 +217,7 @@ child.on("exit", (code, signal) => {
function buildCodexAcpWrapperScript(installedBinPath?: string): string {
return buildAdapterWrapperScript({
displayName: "Codex",
packageSpec: `${CODEX_ACP_PACKAGE}@${CODEX_ACP_PACKAGE_RANGE}`,
packageSpec: `${CODEX_ACP_PACKAGE}@${CODEX_ACP_PACKAGE_VERSION}`,
binName: CODEX_ACP_BIN,
installedBinPath,
envSetup: `const codexHome = fileURLToPath(new URL("./codex-home/", import.meta.url));

View File

@@ -13,8 +13,8 @@ describe("acpx package manifest", () => {
) as AcpxPackageManifest;
expect(packageJson.dependencies?.acpx).toBeDefined();
expect(packageJson.dependencies?.["@zed-industries/codex-acp"]).toBe("0.12.0");
expect(packageJson.dependencies?.["@agentclientprotocol/claude-agent-acp"]).toBe("0.31.4");
expect(packageJson.dependencies?.["@zed-industries/codex-acp"]).toBe("0.13.0");
expect(packageJson.dependencies?.["@agentclientprotocol/claude-agent-acp"]).toBe("0.32.0");
expect(packageJson.devDependencies?.["@agentclientprotocol/claude-agent-acp"]).toBeUndefined();
});
});

View File

@@ -9,7 +9,7 @@ type TestSessionStore = {
const DOCUMENTED_OPENCLAW_BRIDGE_COMMAND =
"env OPENCLAW_HIDE_BANNER=1 OPENCLAW_SUPPRESS_NOTES=1 openclaw acp --url ws://127.0.0.1:18789 --token-file ~/.openclaw/gateway.token --session agent:main:main";
const CODEX_ACP_COMMAND = "npx @zed-industries/codex-acp@^0.12.0";
const CODEX_ACP_COMMAND = "npx @zed-industries/codex-acp@0.13.0";
const CODEX_ACP_WRAPPER_COMMAND = `node "/tmp/openclaw/acpx/codex-acp-wrapper.mjs"`;
function makeRuntime(
@@ -226,7 +226,7 @@ describe("AcpxRuntime fresh reset wrapper", () => {
reasoningEffort: "medium",
}),
).toBe(
"npx @zed-industries/codex-acp@^0.12.0 -c model=gpt-5.4 -c model_reasoning_effort=medium",
"npx @zed-industries/codex-acp@0.13.0 -c model=gpt-5.4 -c model_reasoning_effort=medium",
);
expect(__testing.isCodexAcpCommand("openclaw acp")).toBe(false);
});

View File

@@ -5,9 +5,9 @@
"description": "OpenClaw Amazon Bedrock Mantle (OpenAI-compatible) provider plugin",
"type": "module",
"dependencies": {
"@anthropic-ai/sdk": "0.92.0",
"@anthropic-ai/sdk": "0.93.0",
"@aws/bedrock-token-generator": "^1.1.0",
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -5,8 +5,8 @@
"description": "OpenClaw Amazon Bedrock provider plugin",
"type": "module",
"dependencies": {
"@aws-sdk/client-bedrock": "3.1041.0",
"@aws-sdk/client-bedrock-runtime": "3.1041.0",
"@aws-sdk/client-bedrock": "3.1042.0",
"@aws-sdk/client-bedrock-runtime": "3.1042.0",
"@aws-sdk/credential-provider-node": "3.972.39"
},
"devDependencies": {

View File

@@ -6,8 +6,8 @@
"type": "module",
"dependencies": {
"@anthropic-ai/vertex-sdk": "^0.16.0",
"@mariozechner/pi-agent-core": "0.71.1",
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-agent-core": "0.73.0",
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw Anthropic provider plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -4,7 +4,7 @@
"description": "OpenClaw Bonjour/mDNS gateway discovery",
"type": "module",
"dependencies": {
"@homebridge/ciao": "^1.3.7"
"@homebridge/ciao": "^1.3.8"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -14,7 +14,7 @@
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",
"undici": "8.1.0"
"undici": "8.2.0"
},
"openclaw": {
"extensions": [

View File

@@ -8,11 +8,11 @@
},
"type": "module",
"dependencies": {
"@mariozechner/pi-coding-agent": "0.71.1",
"@mariozechner/pi-coding-agent": "0.73.0",
"@openai/codex": "0.128.0",
"ajv": "^8.20.0",
"ws": "^8.20.0",
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -13,7 +13,7 @@
"https-proxy-agent": "^9.0.0",
"opusscript": "^0.1.1",
"typebox": "1.1.37",
"undici": "8.1.0",
"undici": "8.2.0",
"ws": "^8.20.0"
},
"devDependencies": {

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw Fireworks provider plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -8,7 +8,7 @@
"@clack/prompts": "^1.3.0"
},
"devDependencies": {
"@mariozechner/pi-ai": "0.71.1",
"@mariozechner/pi-ai": "0.73.0",
"@openclaw/plugin-sdk": "workspace:*"
},
"openclaw": {

View File

@@ -6,7 +6,7 @@
"type": "module",
"dependencies": {
"@google/genai": "^1.51.0",
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -10,7 +10,7 @@
"dependencies": {
"gaxios": "7.1.4",
"google-auth-library": "10.6.2",
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw Kimi provider plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw LM Studio provider plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1"
"@mariozechner/pi-ai": "0.73.0"
},
"openclaw": {
"extensions": [

View File

@@ -10,7 +10,7 @@
"dependencies": {
"@lancedb/lancedb": "^0.27.2",
"apache-arrow": "18.1.0",
"openai": "^6.35.0",
"openai": "^6.36.0",
"typebox": "1.1.37"
},
"devDependencies": {

View File

@@ -6,7 +6,7 @@
"type": "module",
"dependencies": {
"typebox": "1.1.37",
"yaml": "^2.8.3"
"yaml": "^2.8.4"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -5,7 +5,7 @@
"description": "Hermes to OpenClaw migration provider",
"type": "module",
"dependencies": {
"yaml": "^2.8.3"
"yaml": "^2.8.4"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -8,7 +8,7 @@
},
"type": "module",
"dependencies": {
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -9,7 +9,7 @@
"type": "module",
"dependencies": {
"nostr-tools": "^2.23.3",
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw Ollama provider plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1",
"@mariozechner/pi-ai": "0.73.0",
"typebox": "1.1.37"
},
"devDependencies": {

View File

@@ -60,7 +60,7 @@ function providerWizardByKey() {
describe("OpenAI plugin manifest", () => {
it("keeps runtime dependencies in the package manifest", () => {
expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.71.1");
expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.73.0");
expect(packageJson.dependencies?.ws).toBe("^8.20.0");
});

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw OpenAI provider plugins",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1",
"@mariozechner/pi-ai": "0.73.0",
"ws": "^8.20.0"
},
"devDependencies": {

View File

@@ -5,11 +5,11 @@
"description": "OpenClaw QA lab plugin with private debugger UI and scenario runner",
"type": "module",
"dependencies": {
"@copilotkit/aimock": "1.16.4",
"@copilotkit/aimock": "1.17.0",
"@modelcontextprotocol/sdk": "1.29.0",
"playwright-core": "1.59.1",
"yaml": "^2.8.3",
"zod": "^4.4.1"
"yaml": "^2.8.4",
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/discord": "workspace:*",

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw Matrix QA runner plugin",
"type": "module",
"dependencies": {
"undici": "8.1.0"
"undici": "8.2.0"
},
"devDependencies": {
"@openclaw/matrix": "workspace:*",

View File

@@ -13,7 +13,7 @@
"mpg123-decoder": "^1.0.3",
"silk-wasm": "^3.7.1",
"ws": "^8.20.0",
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -6,8 +6,8 @@
"type": "module",
"dependencies": {
"@slack/bolt": "^4.7.2",
"@slack/types": "^2.20.1",
"@slack/web-api": "^7.15.1",
"@slack/types": "^2.21.0",
"@slack/web-api": "^7.15.2",
"https-proxy-agent": "^9.0.0"
},
"devDependencies": {

View File

@@ -8,7 +8,7 @@
},
"type": "module",
"dependencies": {
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -9,7 +9,7 @@
"@grammyjs/transformer-throttler": "^1.2.1",
"grammy": "^1.42.0",
"typebox": "1.1.37",
"undici": "8.1.0"
"undici": "8.2.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -8,8 +8,8 @@
},
"type": "module",
"dependencies": {
"@aws-sdk/client-s3": "3.1041.0",
"@aws-sdk/s3-request-presigner": "3.1041.0",
"@aws-sdk/client-s3": "3.1042.0",
"@aws-sdk/s3-request-presigner": "3.1042.0",
"@tloncorp/tlon-skill": "0.3.5",
"@urbit/aura": "^3.0.0"
},

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw webhook bridge plugin",
"type": "module",
"dependencies": {
"zod": "^4.4.1"
"zod": "^4.4.3"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*"

View File

@@ -12,7 +12,7 @@
"https-proxy-agent": "^9.0.0",
"jimp": "^1.6.1",
"typebox": "1.1.37",
"undici": "8.1.0"
"undici": "8.2.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -5,7 +5,7 @@
"description": "OpenClaw xAI plugin",
"type": "module",
"dependencies": {
"@mariozechner/pi-ai": "0.71.1",
"@mariozechner/pi-ai": "0.73.0",
"typebox": "1.1.37"
},
"devDependencies": {

View File

@@ -8,7 +8,7 @@
},
"type": "module",
"dependencies": {
"undici": "8.1.0"
"undici": "8.2.0"
},
"devDependencies": {
"@openclaw/plugin-sdk": "workspace:*",

View File

@@ -1663,27 +1663,27 @@
},
"dependencies": {
"@agentclientprotocol/sdk": "0.21.0",
"@anthropic-ai/sdk": "0.92.0",
"@anthropic-ai/sdk": "0.93.0",
"@anthropic-ai/vertex-sdk": "^0.16.0",
"@aws-sdk/client-bedrock": "3.1041.0",
"@aws-sdk/client-bedrock-runtime": "3.1041.0",
"@aws-sdk/client-bedrock": "3.1042.0",
"@aws-sdk/client-bedrock-runtime": "3.1042.0",
"@aws-sdk/credential-provider-node": "3.972.39",
"@aws/bedrock-token-generator": "^1.1.0",
"@clack/prompts": "^1.3.0",
"@google/genai": "^1.51.0",
"@grammyjs/runner": "^2.0.3",
"@grammyjs/transformer-throttler": "^1.2.1",
"@homebridge/ciao": "^1.3.7",
"@homebridge/ciao": "^1.3.8",
"@lydell/node-pty": "1.2.0-beta.12",
"@mariozechner/pi-agent-core": "0.71.1",
"@mariozechner/pi-ai": "0.71.1",
"@mariozechner/pi-coding-agent": "0.71.1",
"@mariozechner/pi-tui": "0.71.1",
"@mariozechner/pi-agent-core": "0.73.0",
"@mariozechner/pi-ai": "0.73.0",
"@mariozechner/pi-coding-agent": "0.73.0",
"@mariozechner/pi-tui": "0.73.0",
"@modelcontextprotocol/sdk": "1.29.0",
"@mozilla/readability": "^0.6.0",
"@slack/bolt": "^4.7.2",
"@slack/types": "^2.20.1",
"@slack/web-api": "^7.15.1",
"@slack/types": "^2.21.0",
"@slack/web-api": "^7.15.2",
"ajv": "^8.20.0",
"chalk": "^5.6.2",
"chokidar": "^5.0.0",
@@ -1695,7 +1695,7 @@
"global-agent": "^4.1.3",
"grammy": "^1.42.0",
"https-proxy-agent": "^9.0.0",
"ipaddr.js": "^2.3.0",
"ipaddr.js": "^2.4.0",
"jiti": "^2.6.1",
"json5": "^2.2.3",
"jszip": "^3.10.1",
@@ -1703,7 +1703,7 @@
"markdown-it": "14.1.1",
"minimatch": "10.2.5",
"node-edge-tts": "^1.2.10",
"openai": "^6.35.0",
"openai": "^6.36.0",
"openshell": "0.1.0",
"pdfjs-dist": "^5.7.284",
"playwright-core": "1.59.1",
@@ -1714,15 +1714,15 @@
"tree-sitter-bash": "^0.25.1",
"tslog": "^4.10.2",
"typebox": "1.1.37",
"undici": "8.1.0",
"undici": "8.2.0",
"web-push": "^3.6.7",
"web-tree-sitter": "^0.26.8",
"ws": "^8.20.0",
"yaml": "^2.8.3",
"zod": "^4.4.1"
"yaml": "^2.8.4",
"zod": "^4.4.3"
},
"devDependencies": {
"@copilotkit/aimock": "1.16.4",
"@copilotkit/aimock": "1.17.0",
"@grammyjs/types": "^3.26.0",
"@lit-labs/signals": "^0.2.0",
"@lit/context": "^1.1.6",
@@ -1731,7 +1731,7 @@
"@types/markdown-it": "^14.1.2",
"@types/node": "25.6.0",
"@types/ws": "^8.18.1",
"@typescript/native-preview": "7.0.0-dev.20260501.1",
"@typescript/native-preview": "7.0.0-dev.20260504.1",
"@vitest/coverage-v8": "^4.1.5",
"jscpd": "4.0.9",
"jsdom": "^29.1.1",
@@ -1761,7 +1761,7 @@
"packageManager": "pnpm@10.33.2+sha512.a90faf6feeab71ad6c6e57f94e0fe1a12f5dcc22cd754db40ae9593eb6a3e0b6b12e3540218bb37ae083404b1f2ce6db2a4121e979829b4aff94b99f49da1cf8",
"pnpm": {
"overrides": {
"@anthropic-ai/sdk": "0.92.0",
"@anthropic-ai/sdk": "0.93.0",
"hono": "4.12.14",
"@hono/node-server": "1.19.14",
"@aws-sdk/client-bedrock-runtime": "3.1024.0",
@@ -1818,7 +1818,7 @@
},
"patchedDependencies": {
"@whiskeysockets/baileys@7.0.0-rc.9": "patches/@whiskeysockets__baileys@7.0.0-rc.9.patch",
"@agentclientprotocol/claude-agent-acp@0.31.4": "patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch"
"@agentclientprotocol/claude-agent-acp@0.32.0": "patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch"
}
}
}

View File

@@ -1,8 +1,8 @@
diff --git a/dist/acp-agent.js b/dist/acp-agent.js
index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b5acb79ca 100644
index e1d9aa9f0815f57ea2fd299a7f2b8ef0917ca191..875fdfb25fbfa905ca80728355d25a17e6d89148 100644
--- a/dist/acp-agent.js
+++ b/dist/acp-agent.js
@@ -421,6 +421,7 @@ export class ClaudeAcpAgent {
@@ -436,6 +436,7 @@ export class ClaudeAcpAgent {
session.promptRunning = true;
let handedOff = false;
let stopReason = "end_turn";
@@ -10,7 +10,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b
try {
while (true) {
const { value: message, done } = await session.query.next();
@@ -428,6 +429,9 @@ export class ClaudeAcpAgent {
@@ -443,6 +444,9 @@ export class ClaudeAcpAgent {
if (session.cancelled) {
return { stopReason: "cancelled" };
}
@@ -20,7 +20,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b
break;
}
if (session.emitRawSDKMessages &&
@@ -496,7 +500,7 @@ export class ClaudeAcpAgent {
@@ -499,7 +503,7 @@ export class ClaudeAcpAgent {
break;
}
case "session_state_changed": {
@@ -29,7 +29,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b
return { stopReason, usage: sessionUsage(session) };
}
break;
@@ -601,6 +605,7 @@ export class ClaudeAcpAgent {
@@ -621,6 +625,7 @@ export class ClaudeAcpAgent {
unreachable(message, this.logger);
break;
}

811
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,7 @@ import type { MessagingToolSend } from "./pi-embedded-messaging.types.js";
import {
handleToolExecutionEnd,
handleToolExecutionStart,
handleToolExecutionUpdate,
} from "./pi-embedded-subscribe.handlers.tools.js";
import type {
ToolCallSummary,
@@ -713,6 +714,47 @@ describe("handleToolExecutionEnd exec approval prompts", () => {
});
describe("handleToolExecutionEnd derived tool events", () => {
it("emits command output deltas for exec update results", async () => {
const { ctx, onAgentEvent } = createTestContext();
await handleToolExecutionStart(
ctx as never,
{
type: "tool_execution_start",
toolName: "exec",
toolCallId: "tool-exec-update-output",
args: { command: "npm test" },
} as never,
);
handleToolExecutionUpdate(
ctx as never,
{
type: "tool_execution_update",
toolName: "exec",
toolCallId: "tool-exec-update-output",
partialResult: {
details: {
status: "running",
aggregated: "RUN src/example.test.ts",
},
},
} as never,
);
expect(onAgentEvent).toHaveBeenCalledWith(
expect.objectContaining({
stream: "command_output",
data: expect.objectContaining({
itemId: "command:tool-exec-update-output",
phase: "delta",
output: "RUN src/example.test.ts",
status: "running",
}),
}),
);
});
it("emits command output events for exec results", async () => {
const { ctx, onAgentEvent } = createTestContext();

View File

@@ -772,7 +772,11 @@ export function handleToolExecutionUpdate(
},
});
if (isExecToolName(toolName)) {
const output = extractToolResultText(sanitized);
const execDetails = readExecToolDetails(sanitized);
const output =
execDetails && "aggregated" in execDetails
? execDetails.aggregated
: extractToolResultText(sanitized);
const commandData: AgentItemEventData = {
itemId: buildCommandItemId(toolCallId),
phase: "update",