Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.8 to 4.1.10. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vitest-dev/vitest/releases">vitest's releases</a>.</em></p> <blockquote> <h2>v4.1.10</h2> <h3> 🐞 Bug Fixes</h3> <ul> <li><strong>browser</strong>: Check fs access in builtin commands [backport to v4] - by <a href="https://github.com/hi-ogawa"><code>@hi-ogawa</code></a>, <strong>Hiroshi Ogawa</strong> and <strong>OpenCode (claude-opus-4-8)</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10680">vitest-dev/vitest#10680</a> <a href="https://github.com/vitest-dev/vitest/commit/5c18dd267"><!-- raw HTML omitted -->(5c18d)<!-- raw HTML omitted --></a></li> <li><strong>vm</strong>: Fix external module resolve error with deps optimizer query for encoded URI [backport to v4] - by <a href="https://github.com/SveLil"><code>@SveLil</code></a> and <a href="https://github.com/hi-ogawa"><code>@hi-ogawa</code></a> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10661">vitest-dev/vitest#10661</a> <a href="https://github.com/vitest-dev/vitest/commit/bae52b511"><!-- raw HTML omitted -->(bae52)<!-- raw HTML omitted --></a></li> </ul> <h5> <a href="https://github.com/vitest-dev/vitest/compare/v4.1.9...v4.1.10">View changes on GitHub</a></h5> <h2>v4.1.9</h2> <h3>🐞 Bug Fixes</h3> <ul> <li>Fix <code>importOriginal</code> with optimizer and query import [backport to v4] - by <strong>Hiroshi Ogawa</strong>, <strong>David Harris</strong>, <strong>Codex</strong>and <strong>Vladimir</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10546">vitest-dev/vitest#10546</a> <a href="https://github.com/vitest-dev/vitest/commit/a5180190c"><!-- raw HTML omitted -->(a5180)<!-- raw HTML omitted --></a></li> <li><strong>browser</strong>: <ul> <li>Wait for orchestrator readiness before resolving browser sessions [backport to v4] - by <strong>Vladimir</strong> and <strong>Séamus O'Connor</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10555">vitest-dev/vitest#10555</a> <a href="https://github.com/vitest-dev/vitest/commit/7fb29651a"><!-- raw HTML omitted -->(7fb29)<!-- raw HTML omitted --></a></li> <li>Wait for iframe tester readiness before preparing [backport to v4] - by <strong>Vladimir</strong> and <strong>Séamus O'Connor</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10497">vitest-dev/vitest#10497</a> and <a href="https://redirect.github.com/vitest-dev/vitest/issues/10556">vitest-dev/vitest#10556</a> <a href="https://github.com/vitest-dev/vitest/commit/fbc626c40"><!-- raw HTML omitted -->(fbc62)<!-- raw HTML omitted --></a></li> </ul> </li> <li><strong>mocker</strong>: <ul> <li>Hoist vi.mock() for vite-plus/test imports [backport to v4] - by <strong>Hiroshi Ogawa</strong>, <strong>LongYinan</strong>, <strong>Claude Opus 4.8</strong> and <strong>Vladimir</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10548">vitest-dev/vitest#10548</a> <a href="https://github.com/vitest-dev/vitest/commit/2c9559c02"><!-- raw HTML omitted -->(2c955)<!-- raw HTML omitted --></a></li> </ul> </li> <li><strong>pool</strong>: <ul> <li>Prevent test run hang on worker crash [backport to v4] - by <strong>Ari Perkkiö</strong> and <strong>Jattioui Ismail</strong> in <a href="https://redirect.github.com/vitest-dev/vitest/issues/10543">vitest-dev/vitest#10543</a> and <a href="https://redirect.github.com/vitest-dev/vitest/issues/10564">vitest-dev/vitest#10564</a> <a href="https://github.com/vitest-dev/vitest/commit/934b0f587"><!-- raw HTML omitted -->(934b0)<!-- raw HTML omitted --></a></li> </ul> </li> </ul> <h5><a href="https://github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9">View changes on GitHub</a></h5> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="db616d227b"><code>db616d2</code></a> chore: release v4.1.10 (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/10718">#10718</a>)</li> <li><a href="bae52b5112"><code>bae52b5</code></a> fix(vm): fix external module resolve error with deps optimizer query for enco...</li> <li><a href="a7a61e78c7"><code>a7a61e7</code></a> chore: release v4.1.9 (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/10598">#10598</a>)</li> <li><a href="934b0f587c"><code>934b0f5</code></a> fix(pool): prevent test run hang on worker crash (<a href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/10543">#10543</a>) [backport to v4] (#...</li> <li><a href="7fb29651af"><code>7fb2965</code></a> fix(browser): wait for orchestrator readiness before resolving browser sessio...</li> <li><a href="a5180190c1"><code>a518019</code></a> fix: fix <code>importOriginal</code> with optimizer and query import [backport to v4] (#...</li> <li>See full diff in <a href="https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest">compare view</a></li> </ul> </details> <br /> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com>
@fusion-plugin-examples/acp-runtime
A Fusion runtime plugin that drives any external Agent Client Protocol (ACP) agent over JSON-RPC/stdio. One integration unlocks every ACP-compatible agent (Gemini CLI, the Claude Code ACP adapter, and any future agent that speaks the protocol) through the standard protocol instead of a bespoke per-CLI integration.
Selected via runtimeId: "acp". Installed on demand (experimental) — see the
Fusion plugin catalog (fn plugin install fusion-plugin-acp-runtime).
Security posture
The ACP agent is an untrusted subprocess that calls back into Fusion for permissions and filesystem access. This plugin enforces a defense-in-depth floor:
- Per-category permission gating. Each
session/request_permissionis classified by tool kind into a Fusion action category and checked against the live permission policy — never a preset shortcut.allow_onceonly (never a persisted blanket grant). Unmappable kinds and missing policy default-deny. - Unrestricted-risk acknowledgement (
acpAllowUnrestricted). Because the shipped default policy isunrestricted(allow-all), a blanketallowon a sensitive category is escalated to approval unless the user explicitly setsacpAllowUnrestricted: true. Prefer running the ACP runtime under anapproval-requiredpolicy. - Filesystem jail.
fs/read_text_file/fs/write_text_fileare opt-in (acpFsRead/acpFsWrite, writes default OFF), confined to the sessioncwdby a real symlink-resolving jail (realpath +O_NOFOLLOW), with a deny-list for secrets (.env,*.pem, …) and git internals (.git/**). Writes are gated through thefile_write_deletepermission category. - Untrusted-input bounds. Streamed output is sanitized (ANSI/control strip) and bounded (per-turn + per-chunk caps; bounded tool-call correlation map).
- Subprocess isolation. The agent env is built from an allow-list
(
acpEnvAllowList) — inheritedprocess.envis not forwarded.
Not sandboxed in v1: the agent's own process/network syscalls run with Fusion's user privileges (OS-level sandboxing is recommended future work).
Settings
| Key | Default | Meaning |
|---|---|---|
acpBinaryPath |
acp-agent |
Agent binary to spawn |
acpArgs |
[] |
Args that launch the agent in ACP/stdio mode (e.g. ["--acp"]) |
acpModel |
— | Optional model identifier reported via describeModel |
acpFsRead |
false |
Advertise/register fs/read_text_file |
acpFsWrite |
false |
Advertise/register fs/write_text_file (gated) |
acpEnvAllowList |
[] |
Env var names forwarded to the agent subprocess |
acpAllowUnrestricted |
false |
Acknowledge the untrusted-agent risk under an allow-all policy |
Upstream / third-party integration evidence
Per AGENTS.md (External-integration evidence):
- Protocol homepage / docs: https://agentclientprotocol.com
- Upstream protocol repo: https://github.com/agentclientprotocol/agent-client-protocol
- TypeScript SDK repo: https://github.com/agentclientprotocol/typescript-sdk
- Dependency (npm):
@agentclientprotocol/sdk— https://www.npmjs.com/package/@agentclientprotocol/sdk - Pinned release:
0.24.0(Apache-2.0) - Tarball: https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-0.24.0.tgz
- Integrity (sha512):
sha512-vvu9appvGvfYstBj19C6NCepV6SvUhY5VRv60KUZ4XzhTah/olOYul5Zo4C+x2enyshMSvgB2mm/OEmrsHaSmA== - Agent binaries driven: user-supplied ACP agents (e.g.
gemini --acp) and the bundled Claude bridge below. User-configured agents remainupstream-pending-verificationper agent.
Bundled Claude ACP bridge evidence
- Canonical upstream repo URL: https://github.com/moabualruz/claude-code-cli-acp
- Docs / homepage URL: https://github.com/moabualruz/claude-code-cli-acp#readme
- Release / download URL: npm package
claude-code-cli-acp(version0.1.1) — https://www.npmjs.com/package/claude-code-cli-acp - Binary / CLI name:
claude-code-cli-acp - Checksum:
sha512-qpfRGOXkOs9mqI7oumsGistWisyXcCC0r7ng7wdLvGMIORdzHjmUUa+94Jftgr/NYAVnAUe6N7kimD8PaO3D5g==(frompnpm-lock.yamlforclaude-code-cli-acp@0.1.1) - Pinned-commit spot-review: tag
v0.1.1points to commitc93f4f4ca449f451d9f3b7db536caf4060883da9(annotated tagca33404fc1128d6a88a55b248f042f70b4bc9f9a, unsigned). License: Apache-2.0. Behavior reviewed for this integration: runsclaudethrough a PTY, reads transcript JSONL, exposes an ACP server over stdio, and requires@anthropic-ai/claude-codeinstalled + authenticated.
See docs/acp-contract.md for the launch/readiness contract and failure taxonomy.