borgmcp 1.1.14 → 2.0.1
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 +86 -37
- 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.map +1 -0
- package/dist/codex-app-wake.js +432 -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.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 +31 -18
- package/dist/log-stream.d.ts.map +1 -0
- package/dist/log-stream.js +1214 -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 +65 -175
- package/dist/remote-client.d.ts.map +1 -0
- package/dist/remote-client.js +942 -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 +303 -0
- package/dist/seats.d.ts.map +1 -0
- package/dist/seats.js +551 -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 +505 -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/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 +40 -0
- package/docs/LOCAL_SERVER.md +103 -0
- package/docs/RELEASING.md +120 -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 +512 -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 +1505 -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 +1379 -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 +741 -0
- package/src/self-path.ts +51 -0
- package/src/server-endpoint.ts +38 -0
- package/src/server-errors.ts +93 -0
- package/src/server-handshake.ts +783 -0
- package/src/server-response.ts +76 -0
- package/src/server-trust.ts +245 -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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize the endpoint accepted by `borg assimilate --host <host>`.
|
|
3
|
+
*
|
|
4
|
+
* Bare hosts default to HTTPS, including loopback: the ratified v1 server
|
|
5
|
+
* architecture requires TLS for every authority. Plaintext endpoints are
|
|
6
|
+
* rejected even on loopback so enrollment credentials never cross HTTP.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeServerEndpoint(input: string): string;
|
|
9
|
+
//# sourceMappingURL=server-endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-endpoint.d.ts","sourceRoot":"","sources":["../src/server-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8B7D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize the endpoint accepted by `borg assimilate --host <host>`.
|
|
3
|
+
*
|
|
4
|
+
* Bare hosts default to HTTPS, including loopback: the ratified v1 server
|
|
5
|
+
* architecture requires TLS for every authority. Plaintext endpoints are
|
|
6
|
+
* rejected even on loopback so enrollment credentials never cross HTTP.
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeServerEndpoint(input) {
|
|
9
|
+
const raw = input.trim();
|
|
10
|
+
if (!raw)
|
|
11
|
+
throw new Error('--host requires a host or URL');
|
|
12
|
+
const hasScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(raw);
|
|
13
|
+
let url;
|
|
14
|
+
try {
|
|
15
|
+
url = new URL(hasScheme ? raw : `https://${raw}`);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Never echo the raw input: malformed URLs may contain pasted credentials.
|
|
19
|
+
throw new Error('invalid Borg server endpoint');
|
|
20
|
+
}
|
|
21
|
+
if (url.protocol !== 'https:') {
|
|
22
|
+
throw new Error('Borg server endpoints must use https://');
|
|
23
|
+
}
|
|
24
|
+
if (url.username || url.password) {
|
|
25
|
+
throw new Error('Borg server endpoints must not contain credentials');
|
|
26
|
+
}
|
|
27
|
+
if (url.search || url.hash) {
|
|
28
|
+
throw new Error('Borg server endpoints must not contain a query string or fragment');
|
|
29
|
+
}
|
|
30
|
+
if (url.pathname !== '/' && url.pathname !== '') {
|
|
31
|
+
throw new Error('Borg server endpoints must not contain a path');
|
|
32
|
+
}
|
|
33
|
+
if (url.hostname === '0.0.0.0' || url.hostname === '[::]') {
|
|
34
|
+
throw new Error('Borg server endpoints must not use a wildcard address');
|
|
35
|
+
}
|
|
36
|
+
return url.origin;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=server-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-endpoint.js","sourceRoot":"","sources":["../src/server-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type BorgServerErrorCode = 'NOT_ENROLLED' | 'CREDENTIAL_REJECTED' | 'INVITATION_REJECTED' | 'CREATE_CUBE_DENIED' | 'ATTACH_CONFLICT' | 'SESSION_REJECTED';
|
|
2
|
+
/** Safe, non-secret state code for deterministic authority recovery copy. */
|
|
3
|
+
export declare class BorgServerError extends Error {
|
|
4
|
+
readonly code: BorgServerErrorCode;
|
|
5
|
+
constructor(code: BorgServerErrorCode, message: string);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* CR5: a STABLE TYPED non-ok HTTP verdict from a verified server. Carries the raw
|
|
9
|
+
* status so the seat probe classifies endpoint/protocol-mismatch (404) vs
|
|
10
|
+
* server-failure (5xx) from the actual code — never a mutable error-text regex.
|
|
11
|
+
* The message is kept identical to the pre-typed string for call-site parity.
|
|
12
|
+
*/
|
|
13
|
+
export declare class BorgServerHttpError extends Error {
|
|
14
|
+
readonly status: number;
|
|
15
|
+
readonly code?: ErrorCode | undefined;
|
|
16
|
+
constructor(status: number, message: string, code?: ErrorCode | undefined);
|
|
17
|
+
}
|
|
18
|
+
export declare class LocalManageRequiredError extends Error {
|
|
19
|
+
readonly operation: string;
|
|
20
|
+
readonly cubeName: string;
|
|
21
|
+
readonly noMutation: string;
|
|
22
|
+
constructor(operation: string, cubeName: string, noMutation: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class LocalManageCredentialUnavailableError extends Error {
|
|
25
|
+
readonly operation: string;
|
|
26
|
+
readonly cubeName: string;
|
|
27
|
+
readonly noMutation: string;
|
|
28
|
+
constructor(operation: string, cubeName: string, noMutation: string);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* CR5: a STABLE TYPED terminal trust verdict — the pinned server identity no longer
|
|
32
|
+
* matches. This is a security boundary: it must be classified from the error TYPE,
|
|
33
|
+
* never from an error-text regex ("regex classification is not an authority
|
|
34
|
+
* boundary"). trust-mismatch is terminal (never launch-anyway, never credential-send).
|
|
35
|
+
*/
|
|
36
|
+
export declare class BorgServerTrustError extends Error {
|
|
37
|
+
constructor(message: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* CR5: a STABLE TYPED transport-failure verdict — the server was unreachable
|
|
41
|
+
* (connection refused/reset, DNS failure) or the request timed out. Distinct from
|
|
42
|
+
* an HTTP status; genuinely transient.
|
|
43
|
+
*/
|
|
44
|
+
export declare class BorgServerUnreachableError extends Error {
|
|
45
|
+
constructor(message: string, options?: {
|
|
46
|
+
cause?: unknown;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
import type { ErrorCode } from 'borgmcp-shared/protocol';
|
|
50
|
+
//# sourceMappingURL=server-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-errors.d.ts","sourceRoot":"","sources":["../src/server-errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,qBAAqB,GACrB,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,6EAA6E;AAC7E,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,IAAI,EAAE,mBAAmB;gBAAzB,IAAI,EAAE,mBAAmB,EACzC,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,MAAM,EAAE,MAAM;aAEd,IAAI,CAAC,EAAE,SAAS;gBAFhB,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,SAAS,YAAA;CAKnC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;aAE/B,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,UAAU,EAAE,MAAM;gBAFlB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM;CAWrC;AAED,qBAAa,qCAAsC,SAAQ,KAAK;aAE5C,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,UAAU,EAAE,MAAM;gBAFlB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM;CASrC;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AACD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Safe, non-secret state code for deterministic authority recovery copy. */
|
|
2
|
+
export class BorgServerError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
constructor(code, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.name = 'BorgServerError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* CR5: a STABLE TYPED non-ok HTTP verdict from a verified server. Carries the raw
|
|
12
|
+
* status so the seat probe classifies endpoint/protocol-mismatch (404) vs
|
|
13
|
+
* server-failure (5xx) from the actual code — never a mutable error-text regex.
|
|
14
|
+
* The message is kept identical to the pre-typed string for call-site parity.
|
|
15
|
+
*/
|
|
16
|
+
export class BorgServerHttpError extends Error {
|
|
17
|
+
status;
|
|
18
|
+
code;
|
|
19
|
+
constructor(status, message, code) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.code = code;
|
|
23
|
+
this.name = 'BorgServerHttpError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class LocalManageRequiredError extends Error {
|
|
27
|
+
operation;
|
|
28
|
+
cubeName;
|
|
29
|
+
noMutation;
|
|
30
|
+
constructor(operation, cubeName, noMutation) {
|
|
31
|
+
super(`[LOCAL-MANAGE-REQUIRED] This session cannot ${operation} because ` +
|
|
32
|
+
'the selected local client does not have cube management access.\n\n' +
|
|
33
|
+
'Coordinator and Queen are workflow roles; they do not grant server permissions. ' +
|
|
34
|
+
`${noMutation} Do not retry this request from this session.\n\n` +
|
|
35
|
+
'Use a session whose local client already has management access to this cube.');
|
|
36
|
+
this.operation = operation;
|
|
37
|
+
this.cubeName = cubeName;
|
|
38
|
+
this.noMutation = noMutation;
|
|
39
|
+
this.name = 'LocalManageRequiredError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class LocalManageCredentialUnavailableError extends Error {
|
|
43
|
+
operation;
|
|
44
|
+
cubeName;
|
|
45
|
+
noMutation;
|
|
46
|
+
constructor(operation, cubeName, noMutation) {
|
|
47
|
+
super(`The selected local client credential for cube "${cubeName}" is missing or unreadable. ` +
|
|
48
|
+
`This session cannot ${operation}. ${noMutation} Restore or re-enroll the selected local ` +
|
|
49
|
+
'client before retrying.');
|
|
50
|
+
this.operation = operation;
|
|
51
|
+
this.cubeName = cubeName;
|
|
52
|
+
this.noMutation = noMutation;
|
|
53
|
+
this.name = 'LocalManageCredentialUnavailableError';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* CR5: a STABLE TYPED terminal trust verdict — the pinned server identity no longer
|
|
58
|
+
* matches. This is a security boundary: it must be classified from the error TYPE,
|
|
59
|
+
* never from an error-text regex ("regex classification is not an authority
|
|
60
|
+
* boundary"). trust-mismatch is terminal (never launch-anyway, never credential-send).
|
|
61
|
+
*/
|
|
62
|
+
export class BorgServerTrustError extends Error {
|
|
63
|
+
constructor(message) {
|
|
64
|
+
super(message);
|
|
65
|
+
this.name = 'BorgServerTrustError';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* CR5: a STABLE TYPED transport-failure verdict — the server was unreachable
|
|
70
|
+
* (connection refused/reset, DNS failure) or the request timed out. Distinct from
|
|
71
|
+
* an HTTP status; genuinely transient.
|
|
72
|
+
*/
|
|
73
|
+
export class BorgServerUnreachableError extends Error {
|
|
74
|
+
constructor(message, options) {
|
|
75
|
+
super(message, options);
|
|
76
|
+
this.name = 'BorgServerUnreachableError';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=server-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-errors.js","sourceRoot":"","sources":["../src/server-errors.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAEtB;IADlB,YACkB,IAAyB,EACzC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAqB;QAIzC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IAEA;IAHlB,YACkB,MAAc,EAC9B,OAAe,EACC,IAAgB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,WAAM,GAAN,MAAM,CAAQ;QAEd,SAAI,GAAJ,IAAI,CAAY;QAGhC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAE/B;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,QAAgB,EAChB,UAAkB;QAElC,KAAK,CACH,+CAA+C,SAAS,WAAW;YACnE,qEAAqE;YACrE,kFAAkF;YAClF,GAAG,UAAU,mDAAmD;YAChE,8EAA8E,CAC/E,CAAC;QAVc,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QASlC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,qCAAsC,SAAQ,KAAK;IAE5C;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,QAAgB,EAChB,UAAkB;QAElC,KAAK,CACH,kDAAkD,QAAQ,8BAA8B;YACxF,uBAAuB,SAAS,KAAK,UAAU,2CAA2C;YAC1F,yBAAyB,CAC1B,CAAC;QARc,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAOlC,IAAI,CAAC,IAAI,GAAG,uCAAuC,CAAC;IACtD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { type CreateCubeResponse, type ProtocolTagPreflight, type ServerCapability } from 'borgmcp-shared/protocol';
|
|
2
|
+
import { activatePendingServerEnrollment, clearPendingServerCubeCreation, clearPendingServerEnrollment, getServerCredential, getServerCredentialRecord, getPendingServerEnrollment, getOrCreatePendingServerCubeCreation, getOrCreatePendingServerEnrollment } from './config.js';
|
|
3
|
+
import { activateAndBindSeat, bindPendingSeatToWorktree, scrubPendingSeat, seatRef, type ActivateSeatOutcome, type BindPendingSeatOutcome, type SeatBinding, type SeatOperation as ServerSessionOperation } from './seats.js';
|
|
4
|
+
import { loadBorgServerTrust, type BorgServerTrust } from './server-trust.js';
|
|
5
|
+
export declare const DEFAULT_LOCAL_SERVER_ORIGIN: "https://127.0.0.1:7091";
|
|
6
|
+
type FetchLike = typeof fetch;
|
|
7
|
+
/** Bodyless, non-identifying liveness probe from the shared contract. */
|
|
8
|
+
export declare function probeBorgServer(origin: string, fetchImpl?: FetchLike, timeoutMs?: number): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Credential-free protocol-tag preflight. After the caller has verified pinned
|
|
11
|
+
* TLS, confirm the server speaks the exact protocol tag BEFORE any bearer is
|
|
12
|
+
* created, sent, or a seat attached. Sends NO Authorization header, cookie,
|
|
13
|
+
* query, or body; rejects redirects; and bounds the response. A tag mismatch,
|
|
14
|
+
* an extra field, or any transport anomaly fails closed here — no keychain
|
|
15
|
+
* write and no attach. The bearer is proven only at attach.
|
|
16
|
+
*/
|
|
17
|
+
export declare function preflightBorgServerTag(origin: string, fetchImpl?: FetchLike): Promise<ProtocolTagPreflight>;
|
|
18
|
+
export interface EnrolledServerConnection {
|
|
19
|
+
token: string;
|
|
20
|
+
trustIdentity: string;
|
|
21
|
+
protocol: ProtocolTagPreflight;
|
|
22
|
+
clientId?: string | null;
|
|
23
|
+
serverCapabilities?: ServerCapability[];
|
|
24
|
+
}
|
|
25
|
+
export interface ResolvedServerAuthority extends BorgServerTrust {
|
|
26
|
+
token: string;
|
|
27
|
+
}
|
|
28
|
+
export interface NewServerEnrollment extends EnrolledServerConnection {
|
|
29
|
+
clientId: string;
|
|
30
|
+
serverCapabilities: ServerCapability[];
|
|
31
|
+
}
|
|
32
|
+
export interface ServerAttachResult {
|
|
33
|
+
cube: {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
role: {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
role_class?: 'queen' | 'worker';
|
|
41
|
+
is_human_seat?: boolean;
|
|
42
|
+
};
|
|
43
|
+
drone: {
|
|
44
|
+
id: string;
|
|
45
|
+
label: string;
|
|
46
|
+
};
|
|
47
|
+
session: {
|
|
48
|
+
credentialRef: string;
|
|
49
|
+
sessionId: string;
|
|
50
|
+
expiresAt: string;
|
|
51
|
+
};
|
|
52
|
+
result: 'created' | 'reused';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Attach an enrolled client principal to one granted cube/role over protocol v2.
|
|
56
|
+
* The client CSPRNG-generates the session bearer and persists it PENDING in the
|
|
57
|
+
* OS keychain (keyed by the stable per-seat identity) BEFORE this request, so an
|
|
58
|
+
* interrupted/lost response is recovered by re-sending the exact same bearer —
|
|
59
|
+
* the server binds only its digest. A verified `created`/`reused` response
|
|
60
|
+
* activates that pending record in place; the server never returns a bearer.
|
|
61
|
+
*/
|
|
62
|
+
/**
|
|
63
|
+
* The PREPARE + network half of an attach, WITHOUT the keychain pending→ACTIVE
|
|
64
|
+
* transition. The deferred `activate` / `scrubPending` thunks let the cube-lock-
|
|
65
|
+
* owning orchestration (assimilate) FINALIZE binding-FIRST: write the cubes
|
|
66
|
+
* binding referencing this exact pending record under the cube lock, THEN call
|
|
67
|
+
* `activate()` as the single last step. `credentialRef` is the deterministic
|
|
68
|
+
* per-seat account, known here (before activation) so the binding can reference
|
|
69
|
+
* it. `scrubPending` compare-and-scrubs ONLY this own pending record on a
|
|
70
|
+
* FINALIZE abort.
|
|
71
|
+
*/
|
|
72
|
+
export interface PreparedServerAttach {
|
|
73
|
+
cube: ServerAttachResult['cube'];
|
|
74
|
+
role: ServerAttachResult['role'];
|
|
75
|
+
drone: ServerAttachResult['drone'];
|
|
76
|
+
session: {
|
|
77
|
+
sessionId: string;
|
|
78
|
+
expiresAt: string;
|
|
79
|
+
};
|
|
80
|
+
result: 'created' | 'reused';
|
|
81
|
+
credentialRef: string;
|
|
82
|
+
pendingBearerDigest: string;
|
|
83
|
+
/** The single-store ATOMIC activate+bind (CR#2 collapse): given the worktree
|
|
84
|
+
* binding + display (known only at FINALIZE), stamp the exact digest-matched
|
|
85
|
+
* PENDING record ACTIVE and bind the worktree in ONE commit. Returns the typed
|
|
86
|
+
* outcome (`activated`/`missing`/`replaced`) — never throws for a race. */
|
|
87
|
+
activate: (binding: SeatBinding) => Promise<ActivateSeatOutcome>;
|
|
88
|
+
scrubPending: () => Promise<boolean>;
|
|
89
|
+
/** CR#2: bind the EXACT digest-matched PENDING record to the preserved worktree
|
|
90
|
+
* WITHOUT activating (it stays pending). Invoked by the activation-failure path so
|
|
91
|
+
* the preserved sibling worktree owns a discoverable, resumable pending record —
|
|
92
|
+
* the rerun FROM there re-derives the exact ref and re-sends the identical bearer
|
|
93
|
+
* (ghost-free convergence). Fail-closed typed outcome; never throws for a race. */
|
|
94
|
+
bindPending: (binding: SeatBinding) => Promise<BindPendingSeatOutcome>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The NETWORK-ONLY half of an attach: POST the ALREADY-MINTED pending bearer and
|
|
98
|
+
* decode, WITHOUT minting (the mint is owned by the single-store prepareSeat, CR#1).
|
|
99
|
+
* Returns the deferred activate/scrubPending handles: FINALIZE calls `activate`
|
|
100
|
+
* with the decided worktree binding, and activateAndBindSeat stamps ACTIVE + binds
|
|
101
|
+
* the worktree in ONE atomic commit (activate+bind merged — no cross-store gap).
|
|
102
|
+
*/
|
|
103
|
+
export declare function sendBorgServerAttach(origin: string, trustIdentity: string, parentCredential: string, request: {
|
|
104
|
+
cubeId: string;
|
|
105
|
+
roleId: string;
|
|
106
|
+
operation: ServerSessionOperation;
|
|
107
|
+
priorDroneId?: string;
|
|
108
|
+
}, pendingBearer: string, deps?: {
|
|
109
|
+
fetchImpl?: FetchLike;
|
|
110
|
+
activateAndBind?: typeof activateAndBindSeat;
|
|
111
|
+
bindPending?: typeof bindPendingSeatToWorktree;
|
|
112
|
+
scrubPending?: typeof scrubPendingSeat;
|
|
113
|
+
sessionCredentialRef?: typeof seatRef;
|
|
114
|
+
}): Promise<PreparedServerAttach>;
|
|
115
|
+
/**
|
|
116
|
+
* Redeem one invitation after the caller has verified TLS and derived the
|
|
117
|
+
* stable server/CA identity. The client-generated bearer + retry key are
|
|
118
|
+
* persisted PENDING in the local 0600 file store before the first request. A
|
|
119
|
+
* transport-ambiguous exchange is retried with that exact tuple; only a decoded
|
|
120
|
+
* response followed by an authenticated protocol proof activates the bearer.
|
|
121
|
+
*/
|
|
122
|
+
export declare function enrollBorgServer(origin: string, trustIdentity: string, invitation: string, deps?: {
|
|
123
|
+
fetchImpl?: FetchLike;
|
|
124
|
+
prepareEnrollment?: typeof getOrCreatePendingServerEnrollment;
|
|
125
|
+
activateEnrollment?: typeof activatePendingServerEnrollment;
|
|
126
|
+
clearPendingEnrollment?: typeof clearPendingServerEnrollment;
|
|
127
|
+
clientName?: string;
|
|
128
|
+
}): Promise<NewServerEnrollment>;
|
|
129
|
+
/** Resume an exact durable enrollment tuple without asking for the invitation again. */
|
|
130
|
+
export declare function resumeBorgServerEnrollment(origin: string, trustIdentity: string, deps?: {
|
|
131
|
+
fetchImpl?: FetchLike;
|
|
132
|
+
loadPendingEnrollment?: typeof getPendingServerEnrollment;
|
|
133
|
+
activateEnrollment?: typeof activatePendingServerEnrollment;
|
|
134
|
+
clearPendingEnrollment?: typeof clearPendingServerEnrollment;
|
|
135
|
+
onPending?: () => void;
|
|
136
|
+
}): Promise<NewServerEnrollment | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Create one repository cube through the narrow owner capability. The retry
|
|
139
|
+
* key is persisted in the OS keychain before network I/O and reused exactly
|
|
140
|
+
* after an ambiguous transport result. Ordinary clients are denied locally
|
|
141
|
+
* before any create request is sent.
|
|
142
|
+
*/
|
|
143
|
+
export declare function createBorgServerCube(origin: string, trustIdentity: string, parentCredential: string, input: {
|
|
144
|
+
projectRoot: string;
|
|
145
|
+
name: string;
|
|
146
|
+
}, deps?: {
|
|
147
|
+
fetchImpl?: FetchLike;
|
|
148
|
+
loadCredentialRecord?: typeof getServerCredentialRecord;
|
|
149
|
+
prepareCubeCreation?: typeof getOrCreatePendingServerCubeCreation;
|
|
150
|
+
clearCubeCreation?: typeof clearPendingServerCubeCreation;
|
|
151
|
+
}): Promise<CreateCubeResponse>;
|
|
152
|
+
export declare function createLocalBorgServerCube(origin: string, trustIdentity: string, parentCredential: string, input: {
|
|
153
|
+
projectRoot: string;
|
|
154
|
+
name: string;
|
|
155
|
+
}, deps?: {
|
|
156
|
+
loadTrust?: typeof loadBorgServerTrust;
|
|
157
|
+
}): Promise<CreateCubeResponse>;
|
|
158
|
+
/**
|
|
159
|
+
* Swappable Part-4 integration seam. Trust verification supplies the server/CA
|
|
160
|
+
* identity; this function then reads only the credential bound to that exact
|
|
161
|
+
* origin+identity pair and negotiates the authenticated shared contract.
|
|
162
|
+
*/
|
|
163
|
+
export declare function connectEnrolledBorgServer(origin: string, trustIdentity: string, deps?: {
|
|
164
|
+
loadCredential?: typeof getServerCredential;
|
|
165
|
+
loadCredentialRecord?: typeof getServerCredentialRecord;
|
|
166
|
+
fetchImpl?: FetchLike;
|
|
167
|
+
}): Promise<EnrolledServerConnection>;
|
|
168
|
+
/** Resolve the same-user server CA and its authority-bound keychain credential. */
|
|
169
|
+
export declare function resolveBorgServerAuthority(origin: string, deps?: {
|
|
170
|
+
loadTrust?: typeof loadBorgServerTrust;
|
|
171
|
+
loadCredential?: typeof getServerCredential;
|
|
172
|
+
loadCredentialRecord?: typeof getServerCredentialRecord;
|
|
173
|
+
}): Promise<ResolvedServerAuthority>;
|
|
174
|
+
/** Load pinned trust, then prove the stored credential against /api/protocol. */
|
|
175
|
+
export declare function connectLocalBorgServer(origin: string, deps?: {
|
|
176
|
+
loadTrust?: typeof loadBorgServerTrust;
|
|
177
|
+
loadCredential?: typeof getServerCredential;
|
|
178
|
+
loadCredentialRecord?: typeof getServerCredentialRecord;
|
|
179
|
+
}): Promise<EnrolledServerConnection>;
|
|
180
|
+
/** Load and verify the local CA before sending an enrollment invitation. */
|
|
181
|
+
export declare function enrollLocalBorgServer(origin: string, invitation: string, deps?: {
|
|
182
|
+
loadTrust?: typeof loadBorgServerTrust;
|
|
183
|
+
prepareEnrollment?: typeof getOrCreatePendingServerEnrollment;
|
|
184
|
+
activateEnrollment?: typeof activatePendingServerEnrollment;
|
|
185
|
+
clearPendingEnrollment?: typeof clearPendingServerEnrollment;
|
|
186
|
+
clientName?: string;
|
|
187
|
+
}): Promise<NewServerEnrollment>;
|
|
188
|
+
/** Load verified trust and resume a prior ambiguous enrollment before prompting. */
|
|
189
|
+
export declare function resumeLocalBorgServerEnrollment(origin: string, deps?: {
|
|
190
|
+
loadTrust?: typeof loadBorgServerTrust;
|
|
191
|
+
loadPendingEnrollment?: typeof getPendingServerEnrollment;
|
|
192
|
+
onPending?: () => void;
|
|
193
|
+
}): Promise<NewServerEnrollment | null>;
|
|
194
|
+
/** Advisory discovery that still verifies the server-owned CA. */
|
|
195
|
+
export declare function probeLocalBorgServer(origin: string): Promise<boolean>;
|
|
196
|
+
export {};
|
|
197
|
+
//# sourceMappingURL=server-handshake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-handshake.d.ts","sourceRoot":"","sources":["../src/server-handshake.ts"],"names":[],"mappings":"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"}
|