@sagentlab/navarch-runtime 0.1.116 → 0.1.118

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.
Files changed (52) hide show
  1. package/README.md +43 -17
  2. package/bin/muse-mcp-bridge.cjs +3 -0
  3. package/bin/worktree-guard-hook.cjs +74 -2
  4. package/dist/adapters/index.cjs +6 -1
  5. package/dist/adapters/muse.cjs +433 -0
  6. package/dist/agent-auth.cjs +2 -1
  7. package/dist/config.cjs +8 -1
  8. package/dist/conversation/capability.cjs +1 -1
  9. package/dist/exit-conditions.cjs +1 -1
  10. package/dist/muse-mcp-bridge.cjs +167 -0
  11. package/dist/session.cjs +30 -8
  12. package/node_modules/@muse-code/sdk/LICENSE +21 -0
  13. package/node_modules/@muse-code/sdk/README.md +88 -0
  14. package/node_modules/@muse-code/sdk/dist/src/connection/connection.d.ts +149 -0
  15. package/node_modules/@muse-code/sdk/dist/src/connection/connection.js +581 -0
  16. package/node_modules/@muse-code/sdk/dist/src/connection/spawn.d.ts +188 -0
  17. package/node_modules/@muse-code/sdk/dist/src/connection/spawn.js +496 -0
  18. package/node_modules/@muse-code/sdk/dist/src/errors.d.ts +71 -0
  19. package/node_modules/@muse-code/sdk/dist/src/errors.js +76 -0
  20. package/node_modules/@muse-code/sdk/dist/src/facade/approval.d.ts +96 -0
  21. package/node_modules/@muse-code/sdk/dist/src/facade/approval.js +293 -0
  22. package/node_modules/@muse-code/sdk/dist/src/facade/client.d.ts +171 -0
  23. package/node_modules/@muse-code/sdk/dist/src/facade/client.js +442 -0
  24. package/node_modules/@muse-code/sdk/dist/src/facade/discarded.d.ts +36 -0
  25. package/node_modules/@muse-code/sdk/dist/src/facade/discarded.js +36 -0
  26. package/node_modules/@muse-code/sdk/dist/src/facade/gap-fill.d.ts +80 -0
  27. package/node_modules/@muse-code/sdk/dist/src/facade/gap-fill.js +388 -0
  28. package/node_modules/@muse-code/sdk/dist/src/facade/host-death.d.ts +139 -0
  29. package/node_modules/@muse-code/sdk/dist/src/facade/host-death.js +96 -0
  30. package/node_modules/@muse-code/sdk/dist/src/facade/host-start.d.ts +62 -0
  31. package/node_modules/@muse-code/sdk/dist/src/facade/host-start.js +81 -0
  32. package/node_modules/@muse-code/sdk/dist/src/facade/session.d.ts +309 -0
  33. package/node_modules/@muse-code/sdk/dist/src/facade/session.js +654 -0
  34. package/node_modules/@muse-code/sdk/dist/src/facade/turn-handle.d.ts +156 -0
  35. package/node_modules/@muse-code/sdk/dist/src/facade/turn-handle.js +271 -0
  36. package/node_modules/@muse-code/sdk/dist/src/facade/turn-submit.d.ts +72 -0
  37. package/node_modules/@muse-code/sdk/dist/src/facade/turn-submit.js +183 -0
  38. package/node_modules/@muse-code/sdk/dist/src/fingerprint.d.ts +37 -0
  39. package/node_modules/@muse-code/sdk/dist/src/fingerprint.js +54 -0
  40. package/node_modules/@muse-code/sdk/dist/src/fold/item-store.d.ts +110 -0
  41. package/node_modules/@muse-code/sdk/dist/src/fold/item-store.js +169 -0
  42. package/node_modules/@muse-code/sdk/dist/src/fold/session-fold.d.ts +536 -0
  43. package/node_modules/@muse-code/sdk/dist/src/fold/session-fold.js +427 -0
  44. package/node_modules/@muse-code/sdk/dist/src/fold/state-store.d.ts +68 -0
  45. package/node_modules/@muse-code/sdk/dist/src/fold/state-store.js +89 -0
  46. package/node_modules/@muse-code/sdk/dist/src/index.d.ts +65 -0
  47. package/node_modules/@muse-code/sdk/dist/src/index.js +57 -0
  48. package/node_modules/@muse-code/sdk/dist/src/msp.d.ts +3380 -0
  49. package/node_modules/@muse-code/sdk/dist/src/pending/pending-command-set.d.ts +361 -0
  50. package/node_modules/@muse-code/sdk/dist/src/pending/pending-command-set.js +468 -0
  51. package/node_modules/@muse-code/sdk/package.json +47 -0
  52. package/package.json +8 -4
package/README.md CHANGED
@@ -95,7 +95,8 @@ when the run finishes, so the task view can follow a connected run live.
95
95
  Live snapshots hold the current turn's stderr back until the turn ends.
96
96
 
97
97
  The machine operator selects **Claude Code**, **OpenAI Codex**, **Google
98
- Antigravity CLI**, **OpenCode**, or an **Agent Client Protocol (ACP)** agent when connecting a worker. Any selected agent can
98
+ Antigravity CLI**, **OpenCode**, an **Agent Client Protocol (ACP)** agent, **Qoder**,
99
+ **Pi (local)**, or **Muse Code (experimental)** when connecting a worker. Any selected agent can
99
100
  run any unpinned project task; task eligibility depends on capabilities and
100
101
  project gates. A task pinned to a runtime waits for a worker that advertises
101
102
  that adapter and runs on it — see "Choosing an agent" below.
@@ -118,7 +119,8 @@ Before generating the command, prepare the machine:
118
119
  - install Node.js 20 or later (the standard installation includes `npm` and
119
120
  `npx`) and Git;
120
121
  - install the coding-agent CLI selected in Navarch — `claude`, `codex`,
121
- `agy`, `opencode`, `dsh` for the default ACP integration, or `qoder` — and complete its normal authentication flow; and
122
+ `agy`, `opencode`, `dsh` for the default ACP integration, `qoder`, `pi`,
123
+ or `muse` — and complete its normal authentication flow; and
122
124
  - for Docker-backed sessions, install and start Docker and use an image that
123
125
  contains the selected agent CLI and the repository toolchain, with provider
124
126
  credentials supplied through the approved machine or project configuration.
@@ -241,11 +243,11 @@ The from-source flow — `git clone` + `./install.sh` + `node bin/navarch.cjs
241
243
 
242
244
  | Command | Purpose |
243
245
  |---|---|
244
- | `register --token <t> --name <n> [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder] […]` | Registers this machine, saves its local agent choice, and prints the token once. |
245
- | `connect --token <t> --name <n> [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder] [--project <id>] […]` | Connects this machine to one project, saves its local agent choice, and prints the token once. |
246
- | `start [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder]` | Runs the daemon. A start-time agent choice overrides the saved choice. |
247
- | `supervise [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder]` | Runs the daemon under the update supervisor, enabling drain-safe automatic updates and rollback. |
248
- | `doctor [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder]` | Prints resolved config + Docker/registration status; no side effects. |
246
+ | `register --token <t> --name <n> [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder\|muse\|pi-local] […]` | Registers this machine, saves its local agent choice, and prints the token once. |
247
+ | `connect --token <t> --name <n> [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder\|muse\|pi-local] [--project <id>] […]` | Connects this machine to one project, saves its local agent choice, and prints the token once. |
248
+ | `start [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder\|muse\|pi-local]` | Runs the daemon. A start-time agent choice overrides the saved choice. |
249
+ | `supervise [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder\|muse\|pi-local]` | Runs the daemon under the update supervisor, enabling drain-safe automatic updates and rollback. |
250
+ | `doctor [--agent claude-code\|codex\|antigravity\|opencode\|acp\|qoder\|muse\|pi-local]` | Prints resolved config + Docker/registration status; no side effects. |
249
251
 
250
252
  ### Running multiple agents on one machine
251
253
 
@@ -459,7 +461,7 @@ unchanged across the deployment.
459
461
  | `NAVARCH_SANDBOX_PROFILE` | `trusted-development` | Named security profile for Docker sessions (`src/sandbox-profile.cts`): `trusted-development` (image-default user, uncapped, open egress), `untrusted-code` (non-root, 2 CPU / 4g / 512 PIDs, deny-by-default egress, read-only shared git), `elevated-verification` (non-root, 4 CPU / 8g / 2048 PIDs, egress limited to GitHub plus package registries). The default is the exact pre-profile flag set. |
460
462
  | `NAVARCH_SANDBOX_EGRESS_NETWORK` | _(unset)_ | Docker network that enforces a profile's egress allowlist. Docker cannot filter by domain itself, so an allowlist profile without this fails closed to `--network=none` and records the denial. |
461
463
  | `NAVARCH_DOCKER_IMAGE` | `ghcr.io/sagentlab/navarch-sandbox-agent:0.1.0` | Version-pinned per-session image with Node 20, git, GitHub CLI, ripgrep, jq, SSH, and Claude Code 2.1.218. Override with an image tag or digest you control. |
462
- | `NAVARCH_AGENT` | saved choice, then `claude-code` | Local choice of agent adapter: `claude-code`, `codex`, `agy`, `opencode`, `acp`, or `qoder`. Overrides the choice saved by `connect`/`register`; `start --agent` has highest priority. |
464
+ | `NAVARCH_AGENT` | saved choice, then `claude-code` | Local choice of agent adapter: `claude-code`, `codex`, `antigravity`, `opencode`, `acp`, `qoder`, `muse`, or `pi-local`. Overrides the choice saved by `connect`/`register`; `start --agent` has highest priority. |
463
465
  | `NAVARCH_RUNTIMES` | resolved local agent choice | Comma list of installed/authenticated adapters advertised to dispatch. Unpinned tasks run on the preferred agent; a task runtime pin selects the matching adapter. Unrecognized ids are dropped with a warning that names them, so a typo cannot silently shrink the advertised set. |
464
466
  | `NAVARCH_UPDATE_CHANNEL` | `stable` | Release channel advertised by the worker (`stable` or `canary`); the server-managed machine channel remains authoritative. |
465
467
  | `NAVARCH_AUTO_UPDATE` | on under `supervise` | Set `off`, `false`, or `0` to report releases without staging or activating them. Automatic activation is always off under plain `start`. |
@@ -475,8 +477,10 @@ unchanged across the deployment.
475
477
  | `NAVARCH_ACP_EXTRA_ARGS` | `--profile,acp` | Comma list of arguments used to start the ACP server. Override this together with `NAVARCH_ACP_BIN` for another ACP-compatible coding agent. |
476
478
  | `NAVARCH_QODER_BIN` | `qoder` | Path/name of the Qoder CLI binary. |
477
479
  | `NAVARCH_QODER_EXTRA_ARGS` | — | Comma list of extra CLI args appended after the unattended defaults (`--setting-sources`, `--permission-mode auto`, `--output-format json`). An explicit `--output-format`, `--permission-mode`, `--settings`, `--model`, or `--reasoning-effort` here replaces the per-session default. Qoder selects its own account models; pin one via `--model` here or `connect --model` to override. |
480
+ | `NAVARCH_MUSE_BIN` | `muse` | Path/name of the native Muse Code CLI. Requires authenticated experimental `muse serve` SDK access; the npm SDK does not install the CLI. See [Muse Code setup](../docs/navarch/muse-code.md). |
481
+ | `NAVARCH_MUSE_EXTRA_ARGS` | — | Comma list of arguments passed to `muse serve`. Permission/sandbox bypass flags are rejected. Configure narrow native approval rules rather than enabling blanket approval. |
478
482
  | `NAVARCH_MCP_CONFIG_PATH` | — | Path to the platform MCP config passed as `--mcp-config`. |
479
- | `NAVARCH_WORKTREE_GUARD` | on | Host-mode sessions get an adapter-native per-session worktree boundary guard (see below). Set `off` to disable it for every runtime on the machine — required to run OpenCode on the host. |
483
+ | `NAVARCH_WORKTREE_GUARD` | on | Host-mode sessions get an adapter-native per-session worktree boundary guard (see below). Set `off` to disable it for every runtime on the machine — required to run OpenCode or Muse on an already-isolated host. |
480
484
  | `NAVARCH_NAVI_CONVERSATIONS` | on | Serve read-only Navi repository conversations on this machine. Only the `claude-code` adapter on the host sandbox with the worktree guard on is supported; `navarch-runtime doctor` prints the `navi_chat:` state and reason. Set `off` to stop polling for conversations. |
481
485
  | `NAVARCH_NAVI_WORKSPACE_CHAT` | off | Explicitly enable writable Navi chat on a supported Claude Code host runtime. Owners can choose **Edit and run commands**; automatic permission review and the worktree guard remain active. Commands run on this host, not in a hard sandbox. Changes stay under `<workspaceRoot>/chat-workspaces/<conversationId>/repo` until the operator removes them. See [workspace chat](../docs/navarch/navi-workspace-chat.md). |
482
486
  | `NAVARCH_CONVERSATION_POLL_MS` | `5000` | Idle poll interval for queued conversation turns (1000–30000). |
@@ -545,6 +549,18 @@ metadata directory.
545
549
  OpenCode receives a private, per-session config, project config discovery is
546
550
  disabled, and lease MCP headers are referenced through child-only environment
547
551
  variables instead of being copied into its config file or argv.
552
+ - **Muse Code (experimental):** guarded hosts do not advertise Muse; a
553
+ Muse-only guarded worker fails closed before claiming. Use a custom Docker
554
+ image with native Muse, its authentication, Node.js, and the matching Navarch
555
+ runtime's `navarch-muse-mcp-bridge` executable. Use a dedicated clean Muse
556
+ configuration with no unrelated MCP servers, plugins, or hooks: session MCP
557
+ is additive to native configuration. The default image contains
558
+ neither Muse nor its bridge. A host guard opt-out is an explicit operator
559
+ choice for an already-isolated worker and removes the boundary machine-wide;
560
+ generated Muse setup commands never make that choice. Muse uses
561
+ `denyUnmatched`, verified by a session readback, and rejects interactive
562
+ approval requests. Preconfigure narrow rules for required shell/write actions
563
+ and the actual Navarch MCP tool namespace. See [Muse Code setup](../docs/navarch/muse-code.md).
548
564
  - **ACP agents:** the protocol client rejects every unattended permission
549
565
  escalation. The agent remains responsible for enforcing its declared file
550
566
  sandbox; use Navarch Docker mode when the ACP server itself does not provide
@@ -643,10 +659,15 @@ export NAVARCH_AGENT=acp
643
659
  # `connect --model` can pin one explicitly.
644
660
  export NAVARCH_AGENT=qoder
645
661
 
646
- # Advanced compatibility mode: advertise every installed adapter. On a guarded
647
- # host, `opencode` and `antigravity` are dropped from this list (see the boundary notes above);
648
- # the rest are advertised as written.
649
- export NAVARCH_RUNTIMES=claude-code,codex,antigravity,opencode,acp,qoder
662
+ # Muse Code (experimental, runtime 0.1.117+) — see the dedicated setup
663
+ # guide before starting: native authenticated `muse serve`, narrow approval
664
+ # rules, clean native configuration, and deliberate isolation are required.
665
+ export NAVARCH_AGENT=muse
666
+
667
+ # Advanced compatibility mode: advertise every installed, configured adapter.
668
+ # On a guarded host, `opencode`, `antigravity` and `muse` are dropped (see the
669
+ # boundary notes above); the rest are advertised as written.
670
+ export NAVARCH_RUNTIMES=claude-code,codex,antigravity,opencode,acp,qoder,muse
650
671
  ```
651
672
 
652
673
  For the legacy single-runtime setting, priority is `start --agent` →
@@ -660,10 +681,10 @@ or `claude-code`-pinned tasks. List only adapters this worker can really run:
660
681
  in Docker mode that means CLIs installed in `NAVARCH_DOCKER_IMAGE`, otherwise
661
682
  pinned tasks for a missing adapter are claimed and then fail.
662
683
 
663
- All five BYO adapters implement the same `AgentAdapter` interface
664
- (`src/adapters/types.cts`) and run either directly on the host or via
665
- `docker exec` in the session's sandbox container, exactly like the Claude
666
- adapter always has — `session.cts` picks one (`src/adapters/index.cts`'s
684
+ The BYO adapters implement the same `AgentAdapter` interface
685
+ (`src/adapters/types.cts`). Supported isolation modes are adapter-specific;
686
+ Muse uses `muse serve` over stdio on an explicitly isolated host or through
687
+ `docker exec -i` in a prepared custom container — `session.cts` picks one (`src/adapters/index.cts`'s
667
688
  `selectAdapter`) at the start of each session and passes `agent_type`
668
689
  through to `complete()` unchanged by whatever happened during the run.
669
690
 
@@ -678,6 +699,10 @@ reference (the platform default is `opencode/x-preview-f-free`, Ox Alpha Free
678
699
  (Unlimited) on OpenCode Zen), or `default` to preserve the authenticated
679
700
  account's selection. ACP sessions use the agent's advertised default model and
680
701
  set the standard `reasoning_effort` configuration option when it is available.
702
+ Muse uses the account-owned `default` model; Navarch adds no Muse project-model
703
+ column or public model catalog. Its SDK integration is experimental and has no
704
+ Navi conversation capability. Read [Muse Code setup and limitations](../docs/navarch/muse-code.md)
705
+ before using private repositories, especially Muse Contributor data settings.
681
706
  Machine-wide extra arguments still configure other CLI behavior; dispatched
682
707
  model policy wins.
683
708
 
@@ -838,6 +863,7 @@ cli.cts
838
863
  - openCodeAdapter (adapters/opencode.cts) — `opencode run --format json < prompt`
839
864
  - acpAdapter (adapters/acp.cts) — ACP v1 JSON-RPC/stdio; defaults to `dsh --profile acp`
840
865
  - qoderAdapter (adapters/qoder.cts) — `qoder -p --output-format json < prompt`
866
+ - museAdapter (adapters/muse.cts) — experimental Muse Session Protocol via `muse serve`
841
867
  heartbeating the lease every NAVARCH_LEASE_HEARTBEAT_INTERVAL_MS throughout either;
842
868
  a failed heartbeat aborts the run (kills the process) and marks the outcome as lease-lost
843
869
  5. mapExitCondition (exit-conditions.cts) → redact.cts scrubs the transcript → upload.cts PUTs it
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ require("../dist/muse-mcp-bridge.cjs").main();
@@ -173,12 +173,80 @@ function expandHome(value) {
173
173
  return value;
174
174
  }
175
175
 
176
+ /**
177
+ * Previous character on the same line, ignoring blanks; "" at a true line
178
+ * start. A line that ends in an unescaped backslash continues onto the next
179
+ * line in the shell, so that backslash is returned instead.
180
+ */
181
+ function previousSignificantChar(command, index) {
182
+ for (let i = index - 1; i >= 0; i--) {
183
+ const ch = command[i];
184
+ if (ch === "\n") {
185
+ let j = i - 1;
186
+ while (j >= 0 && (command[j] === "\r" || command[j] === " " || command[j] === "\t")) j--;
187
+ let slashes = 0;
188
+ while (j >= 0 && command[j] === "\\") {
189
+ slashes++;
190
+ j--;
191
+ }
192
+ return slashes % 2 === 1 ? "\\" : "";
193
+ }
194
+ if (ch !== " " && ch !== "\t") return ch;
195
+ }
196
+ return "";
197
+ }
198
+
199
+ /**
200
+ * True when the token sits directly after a quote that opens a word
201
+ * (`"/** x *\/"`). A closing quote (`"" /*`, `"x"/*`) leaves the token as a
202
+ * bare shell argument, so it does not count.
203
+ */
204
+ function isInsideOpeningQuote(command, start) {
205
+ const quote = command[start - 1];
206
+ // Backticks run a command, so never use them to exempt a path token.
207
+ if (quote !== '"' && quote !== "'") return false;
208
+ // Only the command's first quote can prove an opening quoted word without
209
+ // parsing shell comments, heredocs and nested substitutions. Earlier quote
210
+ // characters make this ambiguous: keep screening rather than risk treating
211
+ // a closing quote after a continuation as an opening one.
212
+ if (/["'`]/.test(command.slice(0, start - 1))) return false;
213
+ const beforeQuote = command[start - 2];
214
+ return beforeQuote === undefined || /[\s=(<>;|&]/.test(beforeQuote);
215
+ }
216
+
217
+ /**
218
+ * True when a "/"-leading token is comment or markup text rather than a path:
219
+ * a closing tag (`</p>`), a block-comment opener (`/**`, `/*`), or a line
220
+ * comment (`// note`). Each rule is deliberately narrow so real escapes stay
221
+ * screened: tag names that exist at the filesystem root (`</home>`) are still
222
+ * checked, `/*` and `//` only count at a comment position (line start, right
223
+ * after an opening quote, or after `;`) so `rm -rf /*`, `find // -name x`
224
+ * and `rm -rf "" /*` stay blocked, and a block comment needs a closing
225
+ * `*` + `/` later in the text.
226
+ */
227
+ function isCommentOrMarkupToken(command, start, token) {
228
+ const end = start + token.length;
229
+ const next = command[end];
230
+
231
+ if (command[start - 1] === "<" && next === ">" && /^\/[A-Za-z][\w:.-]*$/.test(token)) {
232
+ return !fs.existsSync(token);
233
+ }
234
+
235
+ const atCommentPosition =
236
+ isInsideOpeningQuote(command, start) ||
237
+ ["", ";"].includes(previousSignificantChar(command, start));
238
+ if (!atCommentPosition || next === undefined || !/\s/.test(next)) return false;
239
+ if (token === "/*" || token === "/**") return command.indexOf("*/", end) !== -1;
240
+ return token === "//" && /\S/.test(command.slice(end));
241
+ }
242
+
176
243
  /**
177
244
  * Pulls path-like references out of a shell command: absolute paths,
178
245
  * home-anchored paths (`~...`, `$HOME/...`), and relative `..` traversals.
179
246
  * Lexical by design — see the file header for why this is a guardrail, not
180
247
  * a parser. URLs survive untouched (the char before `//` in `https://` is
181
- * `:`, which is not a path delimiter here).
248
+ * `:`, which is not a path delimiter here). Comment and markup text that
249
+ * merely starts with "/" (`/** doc *\/`, `// note`, `</p>`) is not a path.
182
250
  */
183
251
  function extractBashPathCandidates(command) {
184
252
  const candidates = [];
@@ -193,7 +261,11 @@ function extractBashPathCandidates(command) {
193
261
  const absoluteRe = /(?:^|[\s'"`=(<>;|&])(\/[^\s'"`<>;|&)]*)/g;
194
262
  const homeRe = /(?:^|[\s'"`=(<>;|&])((?:~|\$\{?HOME\}?)[^\s'"`<>;|&)]*)/g;
195
263
  let match;
196
- while ((match = absoluteRe.exec(command))) add(match[1]);
264
+ while ((match = absoluteRe.exec(command))) {
265
+ const start = match.index + match[0].length - match[1].length;
266
+ if (isCommentOrMarkupToken(command, start, match[1])) continue;
267
+ add(match[1]);
268
+ }
197
269
  while ((match = homeRe.exec(command))) add(match[1]);
198
270
 
199
271
  for (const token of command.split(/[\s'"`;|&<>()]+/)) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runQoderAdapter = exports.qoderAdapter = exports.runAcpAdapter = exports.acpAdapter = exports.runPiAdapter = exports.piAdapter = exports.runLocalPiAdapter = exports.localPiAdapter = exports.runOpenCodeAdapter = exports.openCodeAdapter = exports.runGeminiAdapter = exports.geminiAdapter = exports.runAntigravityAdapter = exports.antigravityAdapter = exports.runCodexAdapter = exports.codexAdapter = exports.runClaudeCodeAdapter = exports.claudeCodeAdapter = void 0;
3
+ exports.runMuseAdapter = exports.museAdapter = exports.runQoderAdapter = exports.qoderAdapter = exports.runAcpAdapter = exports.acpAdapter = exports.runPiAdapter = exports.piAdapter = exports.runLocalPiAdapter = exports.localPiAdapter = exports.runOpenCodeAdapter = exports.openCodeAdapter = exports.runGeminiAdapter = exports.geminiAdapter = exports.runAntigravityAdapter = exports.antigravityAdapter = exports.runCodexAdapter = exports.codexAdapter = exports.runClaudeCodeAdapter = exports.claudeCodeAdapter = void 0;
4
4
  exports.selectAdapter = selectAdapter;
5
5
  const claude_cjs_1 = require("./claude.cjs");
6
6
  Object.defineProperty(exports, "claudeCodeAdapter", { enumerable: true, get: function () { return claude_cjs_1.claudeCodeAdapter; } });
@@ -29,6 +29,9 @@ Object.defineProperty(exports, "runAcpAdapter", { enumerable: true, get: functio
29
29
  const qoder_cjs_1 = require("./qoder.cjs");
30
30
  Object.defineProperty(exports, "qoderAdapter", { enumerable: true, get: function () { return qoder_cjs_1.qoderAdapter; } });
31
31
  Object.defineProperty(exports, "runQoderAdapter", { enumerable: true, get: function () { return qoder_cjs_1.runQoderAdapter; } });
32
+ const muse_cjs_1 = require("./muse.cjs");
33
+ Object.defineProperty(exports, "museAdapter", { enumerable: true, get: function () { return muse_cjs_1.museAdapter; } });
34
+ Object.defineProperty(exports, "runMuseAdapter", { enumerable: true, get: function () { return muse_cjs_1.runMuseAdapter; } });
32
35
  /**
33
36
  * Picks the AgentAdapter (adapters/types.cts) session.cts should run a
34
37
  * session with, keyed off config.cts's `agentType` (NAVARCH_AGENT). This is
@@ -50,6 +53,8 @@ function selectAdapter(agentType) {
50
53
  return acp_cjs_1.acpAdapter;
51
54
  case "qoder":
52
55
  return qoder_cjs_1.qoderAdapter;
56
+ case "muse":
57
+ return muse_cjs_1.museAdapter;
53
58
  case "claude-code":
54
59
  return claude_cjs_1.claudeCodeAdapter;
55
60
  case "pi-local":