borgmcp 1.1.15 → 2.0.2
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.
- package/CONTRIBUTING.md +15 -0
- package/LICENSE +201 -33
- package/NOTICE +2 -0
- package/README.md +85 -36
- package/SECURITY.md +7 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +63 -1
- package/dist/agent-runtime.js.map +1 -0
- package/dist/assimilate-cmd.d.ts +96 -17
- package/dist/assimilate-cmd.d.ts.map +1 -0
- package/dist/assimilate-cmd.js +1396 -48
- package/dist/assimilate-cmd.js.map +1 -0
- package/dist/assimilate-deps.d.ts.map +1 -0
- package/dist/assimilate-deps.js +384 -3
- package/dist/assimilate-deps.js.map +1 -0
- package/dist/assimilate-guard.d.ts +5 -7
- package/dist/assimilate-guard.d.ts.map +1 -0
- package/dist/assimilate-guard.js +60 -2
- package/dist/assimilate-guard.js.map +1 -0
- package/dist/assimilate-welcome.d.ts +1 -1
- package/dist/assimilate-welcome.d.ts.map +1 -0
- package/dist/assimilate-welcome.js +32 -2
- package/dist/assimilate-welcome.js.map +1 -0
- package/dist/auth-env.d.ts +7 -50
- package/dist/auth-env.d.ts.map +1 -0
- package/dist/auth-env.js +22 -1
- package/dist/auth-env.js.map +1 -0
- package/dist/backends/launch-all-pastelist.d.ts.map +1 -0
- package/dist/backends/launch-all-pastelist.js +11 -4
- package/dist/backends/launch-all-pastelist.js.map +1 -0
- package/dist/backends/launch-all-tmux.d.ts.map +1 -0
- package/dist/backends/launch-all-tmux.js +49 -1
- package/dist/backends/launch-all-tmux.js.map +1 -0
- package/dist/backends/launch-all-windows.d.ts.map +1 -0
- package/dist/backends/launch-all-windows.js +86 -12
- package/dist/backends/launch-all-windows.js.map +1 -0
- package/dist/bare-launch-menu.d.ts.map +1 -0
- package/dist/bare-launch-menu.js +83 -6
- package/dist/bare-launch-menu.js.map +1 -0
- package/dist/claude-launch-args.d.ts.map +1 -0
- package/dist/claude-launch-args.js +34 -1
- package/dist/claude-launch-args.js.map +1 -0
- package/dist/claude.d.ts.map +1 -0
- package/dist/claude.js +486 -14
- package/dist/claude.js.map +1 -0
- package/dist/cleanup-cmd.d.ts +5 -5
- package/dist/cleanup-cmd.d.ts.map +1 -0
- package/dist/cleanup-cmd.js +453 -14
- package/dist/cleanup-cmd.js.map +1 -0
- package/dist/clear-rewake-core.d.ts.map +1 -0
- package/dist/clear-rewake-core.js +23 -2
- package/dist/clear-rewake-core.js.map +1 -0
- package/dist/clear-rewake.d.ts.map +1 -0
- package/dist/clear-rewake.js +19 -1
- package/dist/clear-rewake.js.map +1 -0
- package/dist/cli-help.d.ts +5 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +104 -56
- package/dist/cli-help.js.map +1 -0
- package/dist/cli-platform.d.ts.map +1 -0
- package/dist/cli-platform.js +106 -4
- package/dist/cli-platform.js.map +1 -0
- package/dist/cli-tool-approval.d.ts +84 -0
- package/dist/cli-tool-approval.d.ts.map +1 -0
- package/dist/cli-tool-approval.js +583 -0
- package/dist/cli-tool-approval.js.map +1 -0
- package/dist/codex-app-server.d.ts.map +1 -0
- package/dist/codex-app-server.js +228 -4
- package/dist/codex-app-server.js.map +1 -0
- package/dist/codex-app-wake.d.ts +9 -11
- package/dist/codex-app-wake.d.ts.map +1 -0
- package/dist/codex-app-wake.js +436 -2
- package/dist/codex-app-wake.js.map +1 -0
- package/dist/codex-launch.d.ts.map +1 -0
- package/dist/codex-launch.js +102 -2
- package/dist/codex-launch.js.map +1 -0
- package/dist/codex-remote.d.ts +6 -1
- package/dist/codex-remote.d.ts.map +1 -0
- package/dist/codex-remote.js +394 -1
- package/dist/codex-remote.js.map +1 -0
- package/dist/codex-wake-resolve.d.ts +4 -4
- package/dist/codex-wake-resolve.d.ts.map +1 -0
- package/dist/codex-wake-resolve.js +127 -1
- package/dist/codex-wake-resolve.js.map +1 -0
- package/dist/config-utils.d.ts +2 -2
- package/dist/config-utils.d.ts.map +1 -0
- package/dist/config-utils.js +766 -3
- package/dist/config-utils.js.map +1 -0
- package/dist/config.d.ts +98 -61
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +426 -1
- package/dist/config.js.map +1 -0
- package/dist/console-prefix.d.ts.map +1 -0
- package/dist/console-prefix.js +96 -1
- package/dist/console-prefix.js.map +1 -0
- package/dist/cube-name.d.ts.map +1 -0
- package/dist/cube-name.js +67 -1
- package/dist/cube-name.js.map +1 -0
- package/dist/cubes.d.ts +126 -18
- package/dist/cubes.d.ts.map +1 -0
- package/dist/cubes.js +412 -4
- package/dist/cubes.js.map +1 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +71 -1
- package/dist/debug.js.map +1 -0
- package/dist/direct-log.d.ts.map +1 -0
- package/dist/direct-log.js +11 -1
- package/dist/direct-log.js.map +1 -0
- package/dist/docs-sections.d.ts +11 -10
- package/dist/docs-sections.d.ts.map +1 -0
- package/dist/docs-sections.js +113 -3
- package/dist/docs-sections.js.map +1 -0
- package/dist/drone-lifecycle.d.ts +5 -21
- package/dist/drone-lifecycle.d.ts.map +1 -0
- package/dist/drone-lifecycle.js +57 -8
- package/dist/drone-lifecycle.js.map +1 -0
- package/dist/drone-management.d.ts +29 -0
- package/dist/drone-management.d.ts.map +1 -0
- package/dist/drone-management.js +109 -0
- package/dist/drone-management.js.map +1 -0
- package/dist/ensure-mcp-config.d.ts.map +1 -0
- package/dist/ensure-mcp-config.js +36 -1
- package/dist/ensure-mcp-config.js.map +1 -0
- package/dist/evict-drone.d.ts +10 -2
- package/dist/evict-drone.d.ts.map +1 -0
- package/dist/evict-drone.js +60 -1
- package/dist/evict-drone.js.map +1 -0
- package/dist/gc-orphan-inboxes.d.ts.map +1 -0
- package/dist/gc-orphan-inboxes.js +177 -1
- package/dist/gc-orphan-inboxes.js.map +1 -0
- package/dist/inbox-monitor.d.ts +1 -1
- package/dist/inbox-monitor.d.ts.map +1 -0
- package/dist/inbox-monitor.js +856 -3
- package/dist/inbox-monitor.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1034 -37
- package/dist/index.js.map +1 -0
- package/dist/launch-all-cmd.d.ts.map +1 -0
- package/dist/launch-all-cmd.js +377 -37
- package/dist/launch-all-cmd.js.map +1 -0
- package/dist/launch-all-command.d.ts.map +1 -0
- package/dist/launch-all-command.js +24 -1
- package/dist/launch-all-command.js.map +1 -0
- package/dist/launch-all-deps.d.ts +3 -8
- package/dist/launch-all-deps.d.ts.map +1 -0
- package/dist/launch-all-deps.js +99 -1
- package/dist/launch-all-deps.js.map +1 -0
- package/dist/launch-all-discovery.d.ts +1 -0
- package/dist/launch-all-discovery.d.ts.map +1 -0
- package/dist/launch-all-discovery.js +90 -4
- package/dist/launch-all-discovery.js.map +1 -0
- package/dist/launch-all-locks.d.ts.map +1 -0
- package/dist/launch-all-locks.js +54 -1
- package/dist/launch-all-locks.js.map +1 -0
- package/dist/launch-gate.d.ts +2 -2
- package/dist/launch-gate.d.ts.map +1 -0
- package/dist/launch-gate.js +73 -1
- package/dist/launch-gate.js.map +1 -0
- package/dist/lifecycle-log-guard.d.ts.map +1 -0
- package/dist/lifecycle-log-guard.js +93 -2
- package/dist/lifecycle-log-guard.js.map +1 -0
- package/dist/list-roles-render.d.ts.map +1 -0
- package/dist/list-roles-render.js +40 -6
- package/dist/list-roles-render.js.map +1 -0
- package/dist/local-log-routing.d.ts +19 -0
- package/dist/local-log-routing.d.ts.map +1 -0
- package/dist/local-log-routing.js +67 -0
- package/dist/local-log-routing.js.map +1 -0
- package/dist/local-manage-tool-result.d.ts +8 -0
- package/dist/local-manage-tool-result.d.ts.map +1 -0
- package/dist/local-manage-tool-result.js +10 -0
- package/dist/local-manage-tool-result.js.map +1 -0
- package/dist/local-server-cursor.d.ts +34 -0
- package/dist/local-server-cursor.d.ts.map +1 -0
- package/dist/local-server-cursor.js +151 -0
- package/dist/local-server-cursor.js.map +1 -0
- package/dist/log-audit.d.ts.map +1 -0
- package/dist/log-audit.js +194 -3
- package/dist/log-audit.js.map +1 -0
- package/dist/log-stream.d.ts +35 -18
- package/dist/log-stream.d.ts.map +1 -0
- package/dist/log-stream.js +1270 -12
- package/dist/log-stream.js.map +1 -0
- package/dist/model-presets.d.ts.map +1 -0
- package/dist/model-presets.js +19 -1
- package/dist/model-presets.js.map +1 -0
- package/dist/name-validator.d.ts.map +1 -0
- package/dist/name-validator.js +22 -1
- package/dist/name-validator.js.map +1 -0
- package/dist/opencode-drone.d.ts.map +1 -0
- package/dist/opencode-drone.js +438 -4
- package/dist/opencode-drone.js.map +1 -0
- package/dist/opencode-plugin.d.ts +1 -1
- package/dist/opencode-plugin.d.ts.map +1 -0
- package/dist/opencode-plugin.js +29 -4
- package/dist/opencode-plugin.js.map +1 -0
- package/dist/parse-assimilate-args.d.ts +1 -1
- package/dist/parse-assimilate-args.d.ts.map +1 -0
- package/dist/parse-assimilate-args.js +125 -1
- package/dist/parse-assimilate-args.js.map +1 -0
- package/dist/parse-launch-all-args.d.ts.map +1 -0
- package/dist/parse-launch-all-args.js +70 -1
- package/dist/parse-launch-all-args.js.map +1 -0
- package/dist/postinstall-banner.d.ts.map +1 -0
- package/dist/postinstall-banner.js +27 -2
- package/dist/postinstall-banner.js.map +1 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +32 -5
- package/dist/postinstall.js.map +1 -0
- package/dist/readiness-probe.d.ts.map +1 -0
- package/dist/readiness-probe.js +9 -1
- package/dist/readiness-probe.js.map +1 -0
- package/dist/regen-format.d.ts.map +1 -0
- package/dist/regen-format.js +545 -13
- package/dist/regen-format.js.map +1 -0
- package/dist/regen.d.ts.map +1 -0
- package/dist/regen.js +141 -5
- package/dist/regen.js.map +1 -0
- package/dist/remote-client.d.ts +88 -173
- package/dist/remote-client.d.ts.map +1 -0
- package/dist/remote-client.js +997 -1
- package/dist/remote-client.js.map +1 -0
- package/dist/reset-local-seat-cmd.d.ts +50 -0
- package/dist/reset-local-seat-cmd.d.ts.map +1 -0
- package/dist/reset-local-seat-cmd.js +169 -0
- package/dist/reset-local-seat-cmd.js.map +1 -0
- package/dist/role-match.d.ts.map +1 -0
- package/dist/role-match.js +23 -1
- package/dist/role-match.js.map +1 -0
- package/dist/role-resolver.d.ts.map +1 -0
- package/dist/role-resolver.js +60 -1
- package/dist/role-resolver.js.map +1 -0
- package/dist/roster-render.d.ts.map +1 -0
- package/dist/roster-render.js +121 -3
- package/dist/roster-render.js.map +1 -0
- package/dist/seat-probe.d.ts +32 -13
- package/dist/seat-probe.d.ts.map +1 -0
- package/dist/seat-probe.js +78 -1
- package/dist/seat-probe.js.map +1 -0
- package/dist/seat-store.d.ts +76 -0
- package/dist/seat-store.d.ts.map +1 -0
- package/dist/seat-store.js +309 -0
- package/dist/seat-store.js.map +1 -0
- package/dist/seats.d.ts +375 -0
- package/dist/seats.d.ts.map +1 -0
- package/dist/seats.js +670 -0
- package/dist/seats.js.map +1 -0
- package/dist/self-path.d.ts +27 -0
- package/dist/self-path.d.ts.map +1 -0
- package/dist/self-path.js +43 -0
- package/dist/self-path.js.map +1 -0
- package/dist/server-endpoint.d.ts +9 -0
- package/dist/server-endpoint.d.ts.map +1 -0
- package/dist/server-endpoint.js +38 -0
- package/dist/server-endpoint.js.map +1 -0
- package/dist/server-errors.d.ts +50 -0
- package/dist/server-errors.d.ts.map +1 -0
- package/dist/server-errors.js +79 -0
- package/dist/server-errors.js.map +1 -0
- package/dist/server-handshake.d.ts +197 -0
- package/dist/server-handshake.d.ts.map +1 -0
- package/dist/server-handshake.js +533 -0
- package/dist/server-handshake.js.map +1 -0
- package/dist/server-response.d.ts +3 -0
- package/dist/server-response.d.ts.map +1 -0
- package/dist/server-response.js +67 -0
- package/dist/server-response.js.map +1 -0
- package/dist/server-trust.d.ts +14 -0
- package/dist/server-trust.d.ts.map +1 -0
- package/dist/server-trust.js +225 -0
- package/dist/server-trust.js.map +1 -0
- package/dist/session-continuity.d.ts +33 -0
- package/dist/session-continuity.d.ts.map +1 -0
- package/dist/session-continuity.js +220 -0
- package/dist/session-continuity.js.map +1 -0
- package/dist/setup-confirm.d.ts +3 -3
- package/dist/setup-confirm.d.ts.map +1 -0
- package/dist/setup-confirm.js +126 -2
- package/dist/setup-confirm.js.map +1 -0
- package/dist/setup.d.ts +5 -3
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +169 -46
- package/dist/setup.js.map +1 -0
- package/dist/shell-escape.d.ts.map +1 -0
- package/dist/shell-escape.js +22 -1
- package/dist/shell-escape.js.map +1 -0
- package/dist/spawn.d.ts +2 -2
- package/dist/spawn.d.ts.map +1 -0
- package/dist/spawn.js +29 -10
- package/dist/spawn.js.map +1 -0
- package/dist/startup-services.d.ts +0 -1
- package/dist/startup-services.d.ts.map +1 -0
- package/dist/startup-services.js +26 -1
- package/dist/startup-services.js.map +1 -0
- package/dist/stream-owner.d.ts +6 -2
- package/dist/stream-owner.d.ts.map +1 -0
- package/dist/stream-owner.js +547 -2
- package/dist/stream-owner.js.map +1 -0
- package/dist/stream-status.d.ts +1 -1
- package/dist/stream-status.d.ts.map +1 -0
- package/dist/stream-status.js +268 -3
- package/dist/stream-status.js.map +1 -0
- package/dist/sync-roles-render.d.ts.map +1 -0
- package/dist/sync-roles-render.js +118 -3
- package/dist/sync-roles-render.js.map +1 -0
- package/dist/sync.d.ts +1 -1
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +286 -22
- package/dist/sync.js.map +1 -0
- package/dist/terminal-title.d.ts.map +1 -0
- package/dist/terminal-title.js +68 -1
- package/dist/terminal-title.js.map +1 -0
- package/dist/token-store.d.ts +17 -111
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +81 -1
- package/dist/token-store.js.map +1 -0
- package/dist/tool-manifest.d.ts +4 -8
- package/dist/tool-manifest.d.ts.map +1 -0
- package/dist/tool-manifest.js +554 -1
- package/dist/tool-manifest.js.map +1 -0
- package/dist/tool-scope.d.ts +8 -12
- package/dist/tool-scope.d.ts.map +1 -0
- package/dist/tool-scope.js +97 -1
- package/dist/tool-scope.js.map +1 -0
- package/dist/types.d.ts +1 -5
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/unknown-subcommand.d.ts +1 -1
- package/dist/unknown-subcommand.d.ts.map +1 -0
- package/dist/unknown-subcommand.js +37 -1
- package/dist/unknown-subcommand.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +78 -2
- package/dist/version.js.map +1 -0
- package/dist/working-repo.d.ts.map +1 -0
- package/dist/working-repo.js +81 -1
- package/dist/working-repo.js.map +1 -0
- package/dist/worktree-lifecycle.d.ts.map +1 -0
- package/dist/worktree-lifecycle.js +205 -2
- package/dist/worktree-lifecycle.js.map +1 -0
- package/docs/EXTRACTION_PROVENANCE.md +42 -0
- package/docs/LOCAL_SERVER.md +103 -0
- package/docs/RELEASING.md +129 -0
- package/package.json +52 -34
- package/src/agent-runtime.ts +69 -0
- package/src/assimilate-cmd.ts +1864 -0
- package/src/assimilate-deps.ts +444 -0
- package/src/assimilate-guard.ts +84 -0
- package/src/assimilate-welcome.ts +39 -0
- package/src/auth-env.ts +21 -0
- package/src/backends/launch-all-pastelist.ts +18 -0
- package/src/backends/launch-all-tmux.ts +75 -0
- package/src/backends/launch-all-windows.ts +110 -0
- package/src/bare-launch-menu.ts +148 -0
- package/src/claude-launch-args.ts +35 -0
- package/src/claude.ts +561 -0
- package/src/cleanup-cmd.ts +581 -0
- package/src/clear-rewake-core.ts +34 -0
- package/src/clear-rewake.ts +18 -0
- package/src/cli-help.ts +116 -0
- package/src/cli-platform.ts +127 -0
- package/src/cli-tool-approval.ts +716 -0
- package/src/codex-app-server.ts +238 -0
- package/src/codex-app-wake.ts +524 -0
- package/src/codex-launch.ts +140 -0
- package/src/codex-remote.ts +500 -0
- package/src/codex-wake-resolve.ts +155 -0
- package/src/config-utils.ts +811 -0
- package/src/config.ts +595 -0
- package/src/console-prefix.ts +99 -0
- package/src/cube-name.ts +69 -0
- package/src/cubes.ts +583 -0
- package/src/debug.ts +73 -0
- package/src/direct-log.ts +9 -0
- package/src/docs-sections.ts +129 -0
- package/src/drone-lifecycle.ts +62 -0
- package/src/drone-management.ts +162 -0
- package/src/ensure-mcp-config.ts +54 -0
- package/src/evict-drone.ts +82 -0
- package/src/gc-orphan-inboxes.ts +229 -0
- package/src/inbox-monitor.ts +1005 -0
- package/src/index.ts +1201 -0
- package/src/launch-all-cmd.ts +450 -0
- package/src/launch-all-command.ts +30 -0
- package/src/launch-all-deps.ts +188 -0
- package/src/launch-all-discovery.ts +118 -0
- package/src/launch-all-locks.ts +74 -0
- package/src/launch-gate.ts +80 -0
- package/src/lifecycle-log-guard.ts +144 -0
- package/src/list-roles-render.ts +52 -0
- package/src/local-log-routing.ts +106 -0
- package/src/local-manage-tool-result.ts +10 -0
- package/src/local-server-cursor.ts +188 -0
- package/src/log-audit.ts +207 -0
- package/src/log-stream.ts +1567 -0
- package/src/model-presets.ts +22 -0
- package/src/name-validator.ts +23 -0
- package/src/opencode-drone.ts +528 -0
- package/src/opencode-plugin.ts +38 -0
- package/src/parse-assimilate-args.ts +125 -0
- package/src/parse-launch-all-args.ts +100 -0
- package/src/postinstall-banner.ts +37 -0
- package/src/postinstall.ts +36 -0
- package/src/readiness-probe.ts +12 -0
- package/src/regen-format.ts +651 -0
- package/src/regen.ts +150 -0
- package/src/remote-client.ts +1457 -0
- package/src/reset-local-seat-cmd.ts +227 -0
- package/src/role-match.ts +29 -0
- package/src/role-resolver.ts +93 -0
- package/src/roster-render.ts +196 -0
- package/src/seat-probe.ts +115 -0
- package/src/seat-store.ts +333 -0
- package/src/seats.ts +911 -0
- package/src/self-path.ts +51 -0
- package/src/server-endpoint.ts +38 -0
- package/src/server-errors.ts +95 -0
- package/src/server-handshake.ts +816 -0
- package/src/server-response.ts +76 -0
- package/src/server-trust.ts +245 -0
- package/src/session-continuity.ts +280 -0
- package/src/setup-confirm.ts +171 -0
- package/src/setup.ts +186 -0
- package/src/shell-escape.ts +22 -0
- package/src/spawn.ts +31 -0
- package/src/startup-services.ts +36 -0
- package/src/stream-owner.ts +686 -0
- package/src/stream-status.ts +337 -0
- package/src/sync-roles-render.ts +163 -0
- package/src/sync.ts +363 -0
- package/src/terminal-title.ts +76 -0
- package/src/token-store.ts +102 -0
- package/src/tool-manifest.ts +610 -0
- package/src/tool-scope.ts +110 -0
- package/src/types.ts +5 -0
- package/src/unknown-subcommand.ts +35 -0
- package/src/version.ts +82 -0
- package/src/working-repo.ts +99 -0
- package/src/worktree-lifecycle.ts +254 -0
- package/dist/auth-recovery.d.ts +0 -33
- package/dist/auth-recovery.js +0 -1
- package/dist/auth.d.ts +0 -103
- package/dist/auth.js +0 -39
- package/dist/device-auth.d.ts +0 -75
- package/dist/device-auth.js +0 -1
- package/dist/drone-address.d.ts +0 -26
- package/dist/drone-address.js +0 -1
- package/dist/get-started.d.ts +0 -20
- package/dist/get-started.js +0 -2
- package/dist/health-beat.d.ts +0 -134
- package/dist/health-beat.js +0 -1
- package/dist/role-section.d.ts +0 -110
- package/dist/role-section.js +0 -8
- package/dist/setup-action.d.ts +0 -20
- package/dist/setup-action.js +0 -1
- package/dist/stale-version-check.d.ts +0 -40
- package/dist/stale-version-check.js +0 -1
- package/dist/subscription-retry.d.ts +0 -40
- package/dist/subscription-retry.js +0 -1
- package/dist/templates.d.ts +0 -107
- package/dist/templates.js +0 -359
- package/dist/token-crypto.d.ts +0 -50
- package/dist/token-crypto.js +0 -1
package/dist/setup-confirm.js
CHANGED
|
@@ -1,2 +1,126 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* gh#818 P3 — disclose + confirm the `borg setup` global-config mutation.
|
|
3
|
+
*
|
|
4
|
+
* Step-1 of the setup wizard writes the user's GLOBAL agent config
|
|
5
|
+
* (registers the borg MCP server + hooks). Before gh#818 this happened
|
|
6
|
+
* silently on first run. This module adds informed-consent disclosure:
|
|
7
|
+
* it lists WHICH files will be written (well-known `os.homedir()` paths)
|
|
8
|
+
* and asks to continue before the first mutation.
|
|
9
|
+
*
|
|
10
|
+
* Pure / dep-injected (mirrors `resolveCliChoice` + `setup-action.ts`) so
|
|
11
|
+
* the decision is unit-testable without spawning a prompt or touching argv.
|
|
12
|
+
*
|
|
13
|
+
* SECURITY (SR-light, gh#818 221c43df): the disclosure lists file PATHS +
|
|
14
|
+
* at most the PUBLIC `BORG_API_URL` — there is NO token/secret in the
|
|
15
|
+
* written config to echo. Local credentials live in the local 0600-permission
|
|
16
|
+
* seat store, and the written config never contains a token or secret.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The set of global config files Step-1 writes, scoped to the detected
|
|
20
|
+
* agent CLIs. Paths mirror `config-utils.ts`:
|
|
21
|
+
* Claude Code: ~/.claude.json (MCP server) + ~/.claude/settings.json (hook)
|
|
22
|
+
* Codex: ~/.codex/config.toml (MCP server) + ~/.codex/hooks.json (hooks)
|
|
23
|
+
* OpenCode: ~/.config/opencode/opencode.json (MCP server)
|
|
24
|
+
*/
|
|
25
|
+
export function configMutationTargets(deps) {
|
|
26
|
+
const targets = [];
|
|
27
|
+
if (deps.claude) {
|
|
28
|
+
targets.push({
|
|
29
|
+
file: '~/.claude.json',
|
|
30
|
+
change: 'registers the borg MCP server',
|
|
31
|
+
});
|
|
32
|
+
targets.push({
|
|
33
|
+
file: '~/.claude/settings.json',
|
|
34
|
+
change: 'adds a UserPromptSubmit hook',
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (deps.codex) {
|
|
38
|
+
targets.push({
|
|
39
|
+
file: '~/.codex/config.toml',
|
|
40
|
+
change: 'registers the borg MCP server',
|
|
41
|
+
});
|
|
42
|
+
targets.push({
|
|
43
|
+
file: '~/.codex/hooks.json',
|
|
44
|
+
change: 'adds SessionStart + UserPromptSubmit hooks',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (deps.opencode) {
|
|
48
|
+
targets.push({
|
|
49
|
+
file: '~/.config/opencode/opencode.json',
|
|
50
|
+
change: 'registers the borg MCP server (with BORG_SESSION activation)',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return targets;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Disclosure text: the files Step-1 will write + an undo note. Pure so SR
|
|
57
|
+
* can pin "lists paths only, no secret". Lists the public `BORG_API_URL`
|
|
58
|
+
* only by reference (the MCP-server registration env), never a credential.
|
|
59
|
+
*/
|
|
60
|
+
export function formatConfigMutationDisclosure(targets) {
|
|
61
|
+
const lines = [];
|
|
62
|
+
lines.push('borg setup will register the borg MCP server in your agent config:');
|
|
63
|
+
for (const t of targets) {
|
|
64
|
+
lines.push(` • ${t.file} (${t.change})`);
|
|
65
|
+
}
|
|
66
|
+
lines.push('These changes are additive and reversible — remove the "borg" entries to undo.');
|
|
67
|
+
return lines.join('\n');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Decide whether to proceed with the Step-1 config mutation.
|
|
71
|
+
*
|
|
72
|
+
* The six CR-binding build-gate items (gh#818, 3b3e85a5) live here:
|
|
73
|
+
* 1. (THE load-bearing headless no-regress) non-TTY → 'proceed' WITHOUT
|
|
74
|
+
* prompting. We return before touching `confirm`, so a non-TTY run
|
|
75
|
+
* (CI / pipe / headless) never reads stdin → no hang.
|
|
76
|
+
* 2. `--yes`/`-y` → 'proceed' without prompting (scripted-but-TTY +
|
|
77
|
+
* explicit non-interactive). No collision with --no-browser/--device.
|
|
78
|
+
* 3. TTY + interactive → ask; decline → 'abort' (the caller exits BEFORE
|
|
79
|
+
* any write).
|
|
80
|
+
* 6. This dep-injected shape IS the testable seam.
|
|
81
|
+
*/
|
|
82
|
+
export async function confirmConfigMutation(deps) {
|
|
83
|
+
if (!deps.isTTY)
|
|
84
|
+
return 'proceed'; // item 1 — never block on stdin
|
|
85
|
+
if (deps.yes)
|
|
86
|
+
return 'proceed'; // item 2 — explicit bypass
|
|
87
|
+
const ok = await deps.confirm(); // item 3 — interactive consent
|
|
88
|
+
return ok ? 'proceed' : 'abort';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Scan argv for the `--yes` / `-y` bypass. Kept separate so the flag set
|
|
92
|
+
* is pinned in tests (item 2 — no collision with the existing
|
|
93
|
+
* --no-browser/--device scan in setup.ts).
|
|
94
|
+
*/
|
|
95
|
+
export function parseYesFlag(argv) {
|
|
96
|
+
return argv.includes('--yes') || argv.includes('-y');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* gh#844 — whether Step-1 has ANY config mutation worth disclosing.
|
|
100
|
+
*
|
|
101
|
+
* The disclosure + confirm prompt exists to obtain informed consent for the
|
|
102
|
+
* config writes Step-1 performs (gh#818). On a pure refresh — the normal
|
|
103
|
+
* setup re-run where every DETECTED agent CLI already has the full
|
|
104
|
+
* borg setup (MCP server registered AND every hook write already applied) —
|
|
105
|
+
* there is no mutation to consent to, so the prompt is redundant and skipped.
|
|
106
|
+
*
|
|
107
|
+
* CRITICAL (gh#844 SR finding 8d9c732e): the gate must cover the FULL disclosed
|
|
108
|
+
* mutation set — MCP registration AND every hook write (claude UserPromptSubmit
|
|
109
|
+
* + the legacy SessionStart removal; codex SessionStart + UserPromptSubmit) —
|
|
110
|
+
* not MCP registration alone. Otherwise an MCP-configured user with a pending
|
|
111
|
+
* hook write (e.g. a pre-gh#673 upgrader whose legacy global hook must be
|
|
112
|
+
* removed) would have settings.json mutated with consent silently skipped.
|
|
113
|
+
* Caller derives `claudeHookPending`/`codexHookPending` from the SAME peeks
|
|
114
|
+
* that gate the individual writers, so the gate and the writers cannot drift.
|
|
115
|
+
*
|
|
116
|
+
* Scoped to DETECTED CLIs: a claude-only user is never gated on codex config
|
|
117
|
+
* state (and vice-versa). A naive `!isMcpServerConfigured() ||
|
|
118
|
+
* !isCodexMcpServerConfigured()` gate would mis-fire for single-CLI users —
|
|
119
|
+
* the absent CLI's config is unconfigured, so the OR would always be true.
|
|
120
|
+
*/
|
|
121
|
+
export function setupMutationPending(deps) {
|
|
122
|
+
return ((deps.claude && (!deps.claudeMcpConfigured || deps.claudeHookPending)) ||
|
|
123
|
+
(deps.codex && (!deps.codexMcpConfigured || deps.codexHookPending)) ||
|
|
124
|
+
(deps.opencode && !deps.opencodeMcpConfigured));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=setup-confirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-confirm.js","sourceRoot":"","sources":["../src/setup-confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAIrC;IACC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,8BAA8B;SACvC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,4CAA4C;SACrD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kCAAkC;YACxC,MAAM,EAAE,8DAA8D;SACvE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA+B;IAE/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,IAAI,CACR,gFAAgF,CACjF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAiBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAA+B;IAE/B,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC,CAAC,gCAAgC;IACnE,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,CAAC,2BAA2B;IAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,+BAA+B;IAChE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAAC,IASpC;IACC,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAC/C,CAAC;AACJ,CAAC"}
|
package/dist/setup.d.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Borg MCP Setup Wizard
|
|
4
4
|
*
|
|
5
5
|
* Interactive setup flow:
|
|
6
|
-
* 1. Configure
|
|
7
|
-
* 2.
|
|
8
|
-
*
|
|
6
|
+
* 1. Configure agent CLI MCP settings + orientation hooks
|
|
7
|
+
* 2. Print how to connect to a local self-hosted Borg server
|
|
8
|
+
*
|
|
9
|
+
* There is no cloud authority: setup offers/executes NO cloud auth, Google
|
|
10
|
+
* auth, subscription, or checkout.
|
|
9
11
|
*/
|
|
10
12
|
export {};
|
|
11
13
|
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
|
package/dist/setup.js
CHANGED
|
@@ -1,47 +1,170 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
`
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Borg MCP Setup Wizard
|
|
4
|
+
*
|
|
5
|
+
* Interactive setup flow:
|
|
6
|
+
* 1. Configure agent CLI MCP settings + orientation hooks
|
|
7
|
+
* 2. Print how to connect to a local self-hosted Borg server
|
|
8
|
+
*
|
|
9
|
+
* There is no cloud authority: setup offers/executes NO cloud auth, Google
|
|
10
|
+
* auth, subscription, or checkout.
|
|
11
|
+
*/
|
|
12
|
+
import prompts from 'prompts';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import which from 'which';
|
|
15
|
+
import { confirmConfigMutation, configMutationTargets, formatConfigMutationDisclosure, parseYesFlag, setupMutationPending, } from './setup-confirm.js';
|
|
16
|
+
import { addUserPromptSubmitHook, addCodexSessionStartHook, addCodexUserPromptSubmitHook, isMcpServerConfigured, isCodexMcpServerConfigured, isOpenCodeMcpServerConfigured, isSessionStartHookRegistered, isUserPromptSubmitHookRegistered, isCodexSessionStartHookRegistered, isCodexUserPromptSubmitHookRegistered, removeSessionStartHook, } from './config-utils.js';
|
|
17
|
+
import { ensureCliMcpConfigured } from './ensure-mcp-config.js';
|
|
18
|
+
import { handleVersionFlag } from './version.js';
|
|
19
|
+
import { initDebugFromArgv } from './debug.js';
|
|
20
|
+
import { defaultApprovalIo, setupApprovalWarnings } from './cli-tool-approval.js';
|
|
21
|
+
/**
|
|
22
|
+
* Main setup wizard
|
|
23
|
+
*/
|
|
24
|
+
async function main() {
|
|
25
|
+
initDebugFromArgv(process.argv);
|
|
26
|
+
handleVersionFlag();
|
|
27
|
+
console.log(chalk.blue.bold('\n◼ Borg MCP Setup Wizard ◼'));
|
|
28
|
+
let claudeCliPath = null;
|
|
29
|
+
let codexCliPath = null;
|
|
30
|
+
let opencodeCliPath = null;
|
|
31
|
+
try {
|
|
32
|
+
claudeCliPath = which.sync('claude');
|
|
33
|
+
}
|
|
34
|
+
catch { /* optional */ }
|
|
35
|
+
try {
|
|
36
|
+
codexCliPath = which.sync('codex');
|
|
37
|
+
}
|
|
38
|
+
catch { /* optional */ }
|
|
39
|
+
try {
|
|
40
|
+
opencodeCliPath = which.sync('opencode');
|
|
41
|
+
}
|
|
42
|
+
catch { /* optional */ }
|
|
43
|
+
if (claudeCliPath)
|
|
44
|
+
console.log(chalk.gray(`Found Claude CLI: ${claudeCliPath}`));
|
|
45
|
+
if (codexCliPath)
|
|
46
|
+
console.log(chalk.gray(`Found Codex CLI: ${codexCliPath}`));
|
|
47
|
+
if (opencodeCliPath)
|
|
48
|
+
console.log(chalk.gray(`Found OpenCode CLI: ${opencodeCliPath}`));
|
|
49
|
+
if (claudeCliPath || codexCliPath || opencodeCliPath)
|
|
50
|
+
console.log('');
|
|
51
|
+
if (!claudeCliPath && !codexCliPath && !opencodeCliPath) {
|
|
52
|
+
console.error(chalk.red('◼ No supported agent CLI found\n'));
|
|
53
|
+
console.error(chalk.yellow('Please install Claude Code, Codex, or OpenCode first:'));
|
|
54
|
+
console.error(chalk.gray(' Claude Code: https://claude.ai/download'));
|
|
55
|
+
console.error(chalk.gray(' Codex: https://developers.openai.com/codex'));
|
|
56
|
+
console.error(chalk.gray(' OpenCode: https://opencode.ai\n'));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// Step 1: Configure every detected agent CLI
|
|
60
|
+
console.log(chalk.blue('◼ Agent CLI Integration'));
|
|
61
|
+
const yes = parseYesFlag(process.argv);
|
|
62
|
+
const claudeDetected = claudeCliPath !== null;
|
|
63
|
+
const codexDetected = codexCliPath !== null;
|
|
64
|
+
const opencodeDetected = opencodeCliPath !== null;
|
|
65
|
+
const claudeMcpConfigured = isMcpServerConfigured();
|
|
66
|
+
const codexMcpConfigured = isCodexMcpServerConfigured();
|
|
67
|
+
const opencodeMcpConfigured = isOpenCodeMcpServerConfigured();
|
|
68
|
+
const claudeLegacyHookPending = claudeDetected && isSessionStartHookRegistered();
|
|
69
|
+
const claudeUpsHookPending = claudeDetected && !isUserPromptSubmitHookRegistered();
|
|
70
|
+
const codexSessionHookPending = codexDetected && !isCodexSessionStartHookRegistered();
|
|
71
|
+
const codexUpsHookPending = codexDetected && !isCodexUserPromptSubmitHookRegistered();
|
|
72
|
+
const claudeHookPending = claudeLegacyHookPending || claudeUpsHookPending;
|
|
73
|
+
const codexHookPending = codexSessionHookPending || codexUpsHookPending;
|
|
74
|
+
if (setupMutationPending({
|
|
75
|
+
claude: claudeDetected,
|
|
76
|
+
codex: codexDetected,
|
|
77
|
+
opencode: opencodeDetected,
|
|
78
|
+
claudeMcpConfigured,
|
|
79
|
+
codexMcpConfigured,
|
|
80
|
+
opencodeMcpConfigured,
|
|
81
|
+
claudeHookPending,
|
|
82
|
+
codexHookPending,
|
|
83
|
+
})) {
|
|
84
|
+
console.log(formatConfigMutationDisclosure(configMutationTargets({ claude: claudeDetected, codex: codexDetected, opencode: opencodeDetected })));
|
|
85
|
+
const mutationDecision = await confirmConfigMutation({
|
|
86
|
+
isTTY: process.stdin.isTTY === true,
|
|
87
|
+
yes,
|
|
88
|
+
confirm: async () => {
|
|
89
|
+
const { proceed } = await prompts({
|
|
90
|
+
type: 'confirm',
|
|
91
|
+
name: 'proceed',
|
|
92
|
+
message: 'Continue with these changes?',
|
|
93
|
+
initial: true,
|
|
94
|
+
});
|
|
95
|
+
return proceed === true;
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
if (mutationDecision === 'abort') {
|
|
99
|
+
console.log(chalk.yellow('\n◼ Setup cancelled — no changes made.\n'));
|
|
100
|
+
process.exit(0);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
console.log('');
|
|
104
|
+
if (claudeCliPath) {
|
|
105
|
+
try {
|
|
106
|
+
ensureCliMcpConfigured('claude');
|
|
107
|
+
if (claudeLegacyHookPending)
|
|
108
|
+
removeSessionStartHook();
|
|
109
|
+
if (claudeUpsHookPending)
|
|
110
|
+
addUserPromptSubmitHook();
|
|
111
|
+
console.log(chalk.green('◼ borg configured for Claude Code'));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error(chalk.red(`\n◼ Failed to configure Claude Code: ${error.message}\n`));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (codexCliPath) {
|
|
119
|
+
try {
|
|
120
|
+
ensureCliMcpConfigured('codex');
|
|
121
|
+
if (codexSessionHookPending)
|
|
122
|
+
addCodexSessionStartHook();
|
|
123
|
+
if (codexUpsHookPending)
|
|
124
|
+
addCodexUserPromptSubmitHook();
|
|
125
|
+
console.log(chalk.green('◼ borg configured for Codex'));
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error(chalk.red(`\n◼ Failed to configure Codex: ${error.message}\n`));
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (opencodeCliPath) {
|
|
133
|
+
try {
|
|
134
|
+
ensureCliMcpConfigured('opencode');
|
|
135
|
+
console.log(chalk.green('◼ borg configured for OpenCode'));
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error(chalk.red(`\n◼ Failed to configure OpenCode: ${error.message}\n`));
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const approvalIo = defaultApprovalIo(async () => '', () => false, {
|
|
143
|
+
cwd: process.cwd(),
|
|
144
|
+
env: process.env,
|
|
145
|
+
codexArgs: [],
|
|
146
|
+
});
|
|
147
|
+
for (const warning of await setupApprovalWarnings(approvalIo, {
|
|
148
|
+
codex: codexDetected,
|
|
149
|
+
opencode: opencodeDetected,
|
|
150
|
+
})) {
|
|
151
|
+
console.log(chalk.yellow(`warning: ${warning}`));
|
|
152
|
+
}
|
|
153
|
+
console.log('');
|
|
154
|
+
// Step 2: Server connection — local self-hosted only.
|
|
155
|
+
console.log(chalk.blue('◼ Server Connection'));
|
|
156
|
+
console.log(chalk.gray('Local self-hosted server mode — no account or subscription needed.'));
|
|
157
|
+
// Success message
|
|
158
|
+
console.log(chalk.green.bold('\nSetup complete!\n'));
|
|
159
|
+
console.log(chalk.yellow('🔄 Restart Claude Code / Codex / OpenCode (or open a new session) for the changes to take effect.\n'));
|
|
160
|
+
console.log(chalk.gray('◼ Next steps:'));
|
|
161
|
+
console.log(chalk.gray('1. cd into your project, then run "borg assimilate --host <host>" to join a cube'));
|
|
162
|
+
console.log(chalk.gray(' (this connects to your local server and launches your agent)'));
|
|
163
|
+
console.log(chalk.gray('2. Use `borg assimilate --host <host> --enroll` from the operator terminal to enroll a new client\n'));
|
|
164
|
+
}
|
|
165
|
+
// Run wizard
|
|
166
|
+
main().catch((error) => {
|
|
167
|
+
console.error(chalk.red(`\n◼ Setup failed: ${error.message}\n`));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
});
|
|
170
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-escape.d.ts","sourceRoot":"","sources":["../src/shell-escape.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C"}
|
package/dist/shell-escape.js
CHANGED
|
@@ -1 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
// POSIX-safe shell-escaping for paste-intended emission.
|
|
2
|
+
//
|
|
3
|
+
// Sprint 18 (gh-tracked via dispatch 10:41:47Z): when the CLI emits a
|
|
4
|
+
// `cd <path>` line for the user to copy-paste into their shell, the path is
|
|
5
|
+
// a filesystem-controlled string with no character constraints (unlike
|
|
6
|
+
// DB-CHECK-constrained role/cube names). Paths can legally contain spaces,
|
|
7
|
+
// `$VAR`, backticks, `$(cmd)`, embedded single-quotes, and other shell
|
|
8
|
+
// metacharacters that would execute on paste under naive emission.
|
|
9
|
+
//
|
|
10
|
+
// drone-11 SR-LANE (cube entry 2026-05-19T10:44:35Z) escalation: double-
|
|
11
|
+
// quoting handles spaces but `$VAR` / backtick / `$(cmd)` still expand
|
|
12
|
+
// inside double-quotes. Single-quotes with internal-quote escape (`'\''`
|
|
13
|
+
// = close-quote / escaped-quote / re-open-quote) defang every shell
|
|
14
|
+
// metachar including embedded `'`. POSIX-defined, copy-paste-runnable
|
|
15
|
+
// across bash / zsh / dash / sh.
|
|
16
|
+
//
|
|
17
|
+
// Behavior: returns the input wrapped in single-quotes with any internal
|
|
18
|
+
// `'` rewritten as `'\''`. Empty string returns `''`.
|
|
19
|
+
export function shellEscape(s) {
|
|
20
|
+
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=shell-escape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-escape.js","sourceRoot":"","sources":["../src/shell-escape.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,uEAAuE;AACvE,mEAAmE;AACnE,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,oEAAoE;AACpE,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,yEAAyE;AACzE,sDAAsD;AAEtD,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC"}
|
package/dist/spawn.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Replaced by `borg assimilate [role] --worktree <name>` (see
|
|
5
5
|
* `assimilate-cmd.ts`). The new command folds worktree creation,
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* cube creation, template application, and drone assimilation into one
|
|
7
|
+
* shell call. This file remains so existing
|
|
8
8
|
* scripts and tab-completion entries fail loudly with an actionable
|
|
9
9
|
* migration message rather than silently mis-routing.
|
|
10
10
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAahD"}
|
package/dist/spawn.js
CHANGED
|
@@ -1,10 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
/**
|
|
2
|
+
* `borg spawn` — deprecation stub.
|
|
3
|
+
*
|
|
4
|
+
* Replaced by `borg assimilate [role] --worktree <name>` (see
|
|
5
|
+
* `assimilate-cmd.ts`). The new command folds worktree creation,
|
|
6
|
+
* cube creation, template application, and drone assimilation into one
|
|
7
|
+
* shell call. This file remains so existing
|
|
8
|
+
* scripts and tab-completion entries fail loudly with an actionable
|
|
9
|
+
* migration message rather than silently mis-routing.
|
|
10
|
+
*
|
|
11
|
+
* `validateName` continues to be re-exported from here for callers
|
|
12
|
+
* that still depend on the symbol (it lives in `name-validator.ts`
|
|
13
|
+
* now — single source of truth).
|
|
14
|
+
*/
|
|
15
|
+
export { validateName } from './name-validator.js';
|
|
16
|
+
export async function runSpawn() {
|
|
17
|
+
const msg = 'borg spawn is removed. Use:\n' +
|
|
18
|
+
' borg assimilate [role] --worktree <name>\n' +
|
|
19
|
+
'\n' +
|
|
20
|
+
'Example: if you previously ran `borg spawn drone-2`, the equivalent is\n' +
|
|
21
|
+
' borg assimilate --worktree drone-2\n' +
|
|
22
|
+
'(role is optional; defaults per first-drone rules)\n' +
|
|
23
|
+
'\n' +
|
|
24
|
+
'If you want a specific role:\n' +
|
|
25
|
+
' borg assimilate builder --worktree drone-2\n';
|
|
26
|
+
process.stderr.write(msg);
|
|
27
|
+
return 2;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../src/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,GAAG,GACP,+BAA+B;QAC/B,8CAA8C;QAC9C,IAAI;QACJ,0EAA0E;QAC1E,wCAAwC;QACxC,sDAAsD;QACtD,IAAI;QACJ,gCAAgC;QAChC,gDAAgD,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-services.d.ts","sourceRoot":"","sources":["../src/startup-services.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,cAAc,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
package/dist/startup-services.js
CHANGED
|
@@ -1 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Run normal long-lived MCP child startup work. The assimilation readiness
|
|
3
|
+
* child must reach the initialize response without acquiring leases, fetching
|
|
4
|
+
* SSE, mutating hooks, or starting timers because it is intentionally killed
|
|
5
|
+
* immediately after that response.
|
|
6
|
+
*/
|
|
7
|
+
export async function runMcpStartupServices(readinessProbe, services) {
|
|
8
|
+
if (readinessProbe)
|
|
9
|
+
return;
|
|
10
|
+
const tasks = [
|
|
11
|
+
services.sessionStartHook,
|
|
12
|
+
services.auditHook,
|
|
13
|
+
services.sseStream,
|
|
14
|
+
services.openCode,
|
|
15
|
+
];
|
|
16
|
+
for (const task of tasks) {
|
|
17
|
+
try {
|
|
18
|
+
await task();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// Every background service is best-effort and independent. A failure in
|
|
22
|
+
// one must neither break MCP initialize nor suppress later services.
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=startup-services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-services.js","sourceRoot":"","sources":["../src/startup-services.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,cAAuB,EACvB,QAA4B;IAE5B,IAAI,cAAc;QAAE,OAAO;IAC3B,MAAM,KAAK,GAAG;QACZ,QAAQ,CAAC,gBAAgB;QACzB,QAAQ,CAAC,SAAS;QAClB,QAAQ,CAAC,SAAS;QAClB,QAAQ,CAAC,QAAQ;KAClB,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,qEAAqE;QACvE,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/stream-owner.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const STREAM_OWNER_STALE_MS = 70000;
|
|
2
2
|
/** Grace window for mkdir→owner.json initialization before an empty lock is reclaimable. */
|
|
3
3
|
export declare const STREAM_OWNER_INIT_STALE_MS = 5000;
|
|
4
|
+
export declare const STREAM_OWNER_TAKEOVER_STALE_MS = 5000;
|
|
4
5
|
export interface StreamOwnerRecord {
|
|
5
6
|
schemaVersion: number;
|
|
6
7
|
pid: number;
|
|
@@ -18,8 +19,9 @@ export interface StreamOwnershipSnapshot {
|
|
|
18
19
|
heartbeatAt?: string;
|
|
19
20
|
ageMs?: number;
|
|
20
21
|
lockPath?: string;
|
|
21
|
-
/**
|
|
22
|
-
|
|
22
|
+
/** Opened-directory identity used to bind inspection to later takeover. */
|
|
23
|
+
lockDev?: number;
|
|
24
|
+
lockIno?: number;
|
|
23
25
|
}
|
|
24
26
|
export interface StreamLease {
|
|
25
27
|
lockPath: string;
|
|
@@ -36,6 +38,8 @@ export interface StreamOwnerDeps {
|
|
|
36
38
|
processStartedAt?: string;
|
|
37
39
|
isPidAlive?: (pid: number) => boolean;
|
|
38
40
|
beforeTakeoverVerify?: (takeoverPath: string) => Promise<void>;
|
|
41
|
+
beforeLeaseRefreshMutation?: (lockPath: string) => Promise<void>;
|
|
42
|
+
beforeLeaseReleaseMutation?: (lockPath: string) => Promise<void>;
|
|
39
43
|
/** Initialization/refresh writer seam for failure-path regression tests. */
|
|
40
44
|
writeRecord?: (lockPath: string, record: StreamOwnerRecord) => Promise<void>;
|
|
41
45
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-owner.d.ts","sourceRoot":"","sources":["../src/stream-owner.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,4FAA4F;AAC5F,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAChD,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AAKpD,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,cAAc,GAAG,yBAAyB,GAAG,SAAS,CAAC;IACnG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,0BAA0B,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,4EAA4E;IAC5E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,SAAmB,GAC1B,MAAM,CAIR;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,SAAwB,EAC/B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAoC7B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CA+DlC"}
|