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-grok-runtime
Grok CLI-backed provider/runtime plugin for Fusion. Agent sessions use native ACP (grok agent stdio) for realtime streaming, tool visibility, and multi-turn reuse.
Install
This plugin ships bundled with Fusion and is auto-installed like the other
built-in runtime plugins. It shells out to an operator-installed grok
binary on PATH — Fusion never downloads or bundles the CLI itself.
- Canonical upstream: xAI official Grok CLI / Grok Build TUI (
grok --versionobserved asgrok 0.2.93 (f00f96316d4b)). - Docs / homepage: https://grok.com/, https://docs.x.ai/, https://docs.x.ai/build/overview, and
grok --help/grok agent stdio --help. - ACP protocol: https://agentclientprotocol.com
- Release / download: operator-installed; Fusion resolves
grokfrom PATH orgrokCliBinaryPath. - Binary name:
grok. - Checksum:
upstream-pending-verificationbecause Fusion does not download or pin the operator's binary.
The previously assumed superagent-ai/grok-cli contract is a different product that shares the grok binary name. This plugin targets xAI's official CLI contract.
Contract summary
- Provider ID:
grok-cli - Binary probe:
grok --version - Auth model — the
grokCLI owns its own authentication; Fusion does not require a Fusion-visible API key to enable/use it (FN-7716). Fusion additionally probes theGROK_API_KEYenv var and~/.grok/user-settings.json→{ "apiKey": "..." }purely as a non-blocking informational hint (apiKeyDetected); it never gates Enable or the authenticated state. The direct xAI OpenAI-compatible streaming path (base URLhttps://api.x.ai/v1) still uses$GROK_API_KEYwhen present, independent of the CLI provider. - Model discovery:
grok models(plain text). The observed xAI shape isDefault model: <id>, thenAvailable models:, then* <id> (default)/- <id>bullet rows.
Agent session path — ACP (primary)
GrokRuntimeAdapter drives xAI's native ACP server with a vendored ACP client
(copied under src/acp/, not imported from fusion-plugin-acp-runtime):
grok agent stdio
# optional model:
grok agent -m grok-4.5 stdio
- Realtime streaming — ACP
session/updatenotifications map to FusiononText/onThinking/onToolStart/onToolEndas chunks arrive (not buffered until process exit). - Multi-turn — one
createSessionkeeps the ACP connection; eachpromptWithFallbackis asession/prompton the same session. - Permissions — Grok tool calls surface as
session/request_permissionand go through Fusion's per-category action gate. - Fusion tools (
fn_*) — enginecustomToolsare exposed to Grok as MCP serverfusion-custom-tools(executable bridge, not schema-only). - Operator MCP — configured Fusion MCP servers (stdio/http/sse) are forwarded on ACP
session/new.mcpServers. - Skills — the bundled Fusion skill plus session
additionalSkillPaths/ requested skill names are staged into a trusted--plugin-dirplugin so Grok discovers them like a native plugin. - Env — subprocess env is allow-listed (includes
HOME/PATH/XDG so~/.grok/auth.jsonworks, plus optionalXAI_API_KEY/GROK_API_KEY). Fullprocess.envis never inherited. - Auth implication: because the
grokbinary resolves its own credentials for this path, a CLI-routed selection needs no Fusion-visibleGROK_API_KEYwhen a cached grok.com session exists — unlike the direct xAI OpenAI-compatible streaming path.
See docs/grok-cli-contract.md for the full contract, failure history (FN-7790/FN-7796 headless paths), and diagnostics invariants.
Routing Grok through the CLI runtime (FN-7725 / FN-7753 / FN-7790)
By default, selecting a grok-cli/* model for an agent/task routes through
the direct xAI OpenAI-compatible endpoint (https://api.x.ai/v1,
FN-7711/FN-7714) whenever Fusion can see a GROK_API_KEY (environment or
~/.grok/user-settings.json apiKey). If no Fusion-visible key resolves and
the Grok Runtime plugin is registered, Fusion automatically routes that session
through the grok CLI runtime instead, letting the CLI own auth end-to-end.
To route a specific agent's execution through the grok CLI runtime explicitly:
- Open the agent in the dashboard (New Agent or an existing agent's detail view).
- Under Runtime Source, choose Runtime instead of Built-in Model.
- Select Grok Runtime from the runtime dropdown (sourced from
GET /api/plugins/runtimes). - Save. The agent's
runtimeConfig.runtimeHintis now"grok"; every session that agent drives resolves through this plugin'sGrokRuntimeAdapterinstead of the default pi runtime.
Automatic fallback precedence (FN-7753): explicit runtime hint > Fusion-visible key/direct endpoint > automatic CLI fallback. The fallback is only derived when no explicit runtime hint is set, the provider is grok-cli, no Fusion-visible key resolves, and runtime id "grok" is registered. The selected model is normalized from grok-cli/<id> (or grok/<id>) to <id> and sent as grok agent -m <id> stdio.
Known limitation: explicit Runtime-mode is still model-agnostic — it does not carry a specific grok-cli/* model id through to the adapter, so GrokRuntimeAdapter.createSession() falls back to "grok/default" and omits -m. Built-in Model selections preserve the model either through the direct endpoint (when a key is visible) or through the FN-7753 automatic CLI fallback (when no key is visible).
Enable via Settings → Authentication
- Install the
grokCLI and authenticate it (grok loginorXAI_API_KEY) — Fusion does not need to see the key for the CLI path. - Open Settings → Authentication in the Fusion dashboard.
- The "Grok — via Grok CLI" card shows probe status. Click Enable once the binary is available; a non-blocking hint appears only if Fusion did not detect a key, noting the direct xAI streaming path uses
GROK_API_KEYwhen present. - Discovered Grok models (via
grok models) then merge into the model picker under thegrok-cliprovider id.
Notes
Do not invent a grok status/whoami JSON auth contract — readiness is derived from binary availability, mirroring the Cursor CLI provider. See AGENTS.md's "External-integration evidence" policy for why the release/checksum fields above stay at upstream-pending-verification.