botmux 3.15.0 → 3.16.0
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/README.en.md +2 -2
- package/README.md +2 -2
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/destroy-result.d.ts +159 -0
- package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
- package/dist/adapters/backend/destroy-result.js +223 -0
- package/dist/adapters/backend/destroy-result.js.map +1 -0
- package/dist/adapters/backend/herdr-backend.d.ts +4 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +23 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/mojo-backend.d.ts +577 -0
- package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-backend.js +2471 -0
- package/dist/adapters/backend/mojo-backend.js.map +1 -0
- package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
- package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-budgets.js +22 -0
- package/dist/adapters/backend/mojo-budgets.js.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.js +486 -0
- package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
- package/dist/adapters/backend/mojo-types.d.ts +542 -0
- package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-types.js +682 -0
- package/dist/adapters/backend/mojo-types.js.map +1 -0
- package/dist/adapters/backend/reproduce-command.js +3 -3
- package/dist/adapters/backend/reproduce-command.js.map +1 -1
- package/dist/adapters/backend/riff-backend.js +1 -1
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +44 -7
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +30 -7
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
- package/dist/adapters/backend/session-backend-selector.js +82 -10
- package/dist/adapters/backend/session-backend-selector.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +101 -6
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zmx-backend.d.ts +11 -0
- package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zmx-backend.js +16 -1
- package/dist/adapters/backend/zmx-backend.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +2 -2
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +7 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/copilot.d.ts +3 -1
- package/dist/adapters/cli/copilot.d.ts.map +1 -1
- package/dist/adapters/cli/copilot.js +23 -5
- package/dist/adapters/cli/copilot.js.map +1 -1
- package/dist/adapters/cli/cursor.d.ts.map +1 -1
- package/dist/adapters/cli/cursor.js +13 -3
- package/dist/adapters/cli/cursor.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +24 -5
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/kimi.d.ts.map +1 -1
- package/dist/adapters/cli/kimi.js +19 -1
- package/dist/adapters/cli/kimi.js.map +1 -1
- package/dist/adapters/cli/mojo.d.ts +28 -0
- package/dist/adapters/cli/mojo.d.ts.map +1 -0
- package/dist/adapters/cli/mojo.js +58 -0
- package/dist/adapters/cli/mojo.js.map +1 -0
- package/dist/adapters/cli/pi.d.ts +6 -4
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +6 -4
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +251 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +254 -1
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +13 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +19 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +3 -3
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +4 -3
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +3 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +22 -6
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +29 -4
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +20 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +30 -4
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/arg-utils.d.ts +5 -0
- package/dist/cli/arg-utils.d.ts.map +1 -1
- package/dist/cli/arg-utils.js +7 -0
- package/dist/cli/arg-utils.js.map +1 -1
- package/dist/cli/bots-list-output.d.ts +130 -2
- package/dist/cli/bots-list-output.d.ts.map +1 -1
- package/dist/cli/bots-list-output.js +173 -27
- package/dist/cli/bots-list-output.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle-env.js +38 -11
- package/dist/cli/daemon-lifecycle-env.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +15 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -1
- package/dist/cli/dashboard-command.js +22 -0
- package/dist/cli/dashboard-command.js.map +1 -1
- package/dist/cli/log-tail.d.ts +54 -0
- package/dist/cli/log-tail.d.ts.map +1 -0
- package/dist/cli/log-tail.js +167 -0
- package/dist/cli/log-tail.js.map +1 -0
- package/dist/cli/pm2-env.d.ts +16 -0
- package/dist/cli/pm2-env.d.ts.map +1 -0
- package/dist/cli/pm2-env.js +63 -0
- package/dist/cli/pm2-env.js.map +1 -0
- package/dist/cli/pm2-fleet-lock.d.ts +26 -0
- package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
- package/dist/cli/pm2-fleet-lock.js +50 -0
- package/dist/cli/pm2-fleet-lock.js.map +1 -0
- package/dist/cli/pm2-god-retirement.d.ts +59 -0
- package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
- package/dist/cli/pm2-god-retirement.js +95 -0
- package/dist/cli/pm2-god-retirement.js.map +1 -0
- package/dist/cli/session-list-wake.d.ts +41 -0
- package/dist/cli/session-list-wake.d.ts.map +1 -0
- package/dist/cli/session-list-wake.js +102 -0
- package/dist/cli/session-list-wake.js.map +1 -0
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +26 -0
- package/dist/cli/workflow.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +933 -115
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +261 -49
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/cli-runtime-update.d.ts +8 -0
- package/dist/core/cli-runtime-update.d.ts.map +1 -1
- package/dist/core/cli-runtime-update.js +127 -8
- package/dist/core/cli-runtime-update.js.map +1 -1
- package/dist/core/close-residual.d.ts +64 -0
- package/dist/core/close-residual.d.ts.map +1 -0
- package/dist/core/close-residual.js +93 -0
- package/dist/core/close-residual.js.map +1 -0
- package/dist/core/closed-session-card.d.ts.map +1 -1
- package/dist/core/closed-session-card.js +11 -3
- package/dist/core/closed-session-card.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +129 -27
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +3 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +230 -1
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/daemon-background-close.d.ts +19 -0
- package/dist/core/daemon-background-close.d.ts.map +1 -0
- package/dist/core/daemon-background-close.js +39 -0
- package/dist/core/daemon-background-close.js.map +1 -0
- package/dist/core/dashboard-command/overview.d.ts +4 -0
- package/dist/core/dashboard-command/overview.d.ts.map +1 -1
- package/dist/core/dashboard-command/overview.js +8 -1
- package/dist/core/dashboard-command/overview.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +373 -41
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +4 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +3 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +37 -0
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +71 -0
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/deferred-schedule-settlement.d.ts +15 -1
- package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
- package/dist/core/deferred-schedule-settlement.js +4 -1
- package/dist/core/deferred-schedule-settlement.js.map +1 -1
- package/dist/core/device-isolation-daemon.d.ts +91 -1
- package/dist/core/device-isolation-daemon.d.ts.map +1 -1
- package/dist/core/device-isolation-daemon.js +346 -2
- package/dist/core/device-isolation-daemon.js.map +1 -1
- package/dist/core/local-terminal-opener.d.ts.map +1 -1
- package/dist/core/local-terminal-opener.js +5 -1
- package/dist/core/local-terminal-opener.js.map +1 -1
- package/dist/core/loopback-target.d.ts +14 -0
- package/dist/core/loopback-target.d.ts.map +1 -0
- package/dist/core/loopback-target.js +20 -0
- package/dist/core/loopback-target.js.map +1 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +16 -2
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/mojo-containment-command.d.ts +20 -0
- package/dist/core/mojo-containment-command.d.ts.map +1 -0
- package/dist/core/mojo-containment-command.js +266 -0
- package/dist/core/mojo-containment-command.js.map +1 -0
- package/dist/core/mojo-containment.d.ts +575 -0
- package/dist/core/mojo-containment.d.ts.map +1 -0
- package/dist/core/mojo-containment.js +1158 -0
- package/dist/core/mojo-containment.js.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.js +175 -0
- package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
- package/dist/core/mojo-session-identity.d.ts +3 -0
- package/dist/core/mojo-session-identity.d.ts.map +1 -0
- package/dist/core/mojo-session-identity.js +126 -0
- package/dist/core/mojo-session-identity.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +32 -8
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +55 -17
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/plugins/mcp/gateway.d.ts +14 -1
- package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
- package/dist/core/plugins/mcp/gateway.js +70 -3
- package/dist/core/plugins/mcp/gateway.js.map +1 -1
- package/dist/core/plugins/mcp/host.d.ts +2 -0
- package/dist/core/plugins/mcp/host.d.ts.map +1 -1
- package/dist/core/plugins/mcp/host.js +2 -0
- package/dist/core/plugins/mcp/host.js.map +1 -1
- package/dist/core/plugins/pm2.d.ts.map +1 -1
- package/dist/core/plugins/pm2.js +16 -3
- package/dist/core/plugins/pm2.js.map +1 -1
- package/dist/core/plugins/service-manager.d.ts +9 -0
- package/dist/core/plugins/service-manager.d.ts.map +1 -1
- package/dist/core/plugins/service-manager.js +33 -16
- package/dist/core/plugins/service-manager.js.map +1 -1
- package/dist/core/preview-port-owner.d.ts +109 -0
- package/dist/core/preview-port-owner.d.ts.map +1 -0
- package/dist/core/preview-port-owner.js +320 -0
- package/dist/core/preview-port-owner.js.map +1 -0
- package/dist/core/remote-cli-ids.d.ts +5 -0
- package/dist/core/remote-cli-ids.d.ts.map +1 -0
- package/dist/core/remote-cli-ids.js +24 -0
- package/dist/core/remote-cli-ids.js.map +1 -0
- package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
- package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
- package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
- package/dist/core/remote-shutdown-detach.js.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
- package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
- package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
- package/dist/core/reply-target.d.ts +16 -1
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +61 -0
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/session-group-birth.d.ts +26 -0
- package/dist/core/session-group-birth.d.ts.map +1 -1
- package/dist/core/session-group-birth.js +81 -4
- package/dist/core/session-group-birth.js.map +1 -1
- package/dist/core/session-manager.d.ts +15 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +259 -5
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-model.d.ts +46 -0
- package/dist/core/session-model.d.ts.map +1 -0
- package/dist/core/session-model.js +42 -0
- package/dist/core/session-model.js.map +1 -0
- package/dist/core/session-owner-reminder.d.ts +63 -0
- package/dist/core/session-owner-reminder.d.ts.map +1 -0
- package/dist/core/session-owner-reminder.js +196 -0
- package/dist/core/session-owner-reminder.js.map +1 -0
- package/dist/core/session-preview-registry.d.ts +53 -0
- package/dist/core/session-preview-registry.d.ts.map +1 -0
- package/dist/core/session-preview-registry.js +82 -0
- package/dist/core/session-preview-registry.js.map +1 -0
- package/dist/core/session-preview.d.ts +114 -0
- package/dist/core/session-preview.d.ts.map +1 -0
- package/dist/core/session-preview.js +184 -0
- package/dist/core/session-preview.js.map +1 -0
- package/dist/core/session-rename.d.ts.map +1 -1
- package/dist/core/session-rename.js +5 -3
- package/dist/core/session-rename.js.map +1 -1
- package/dist/core/session-wake-deadline.d.ts +5 -0
- package/dist/core/session-wake-deadline.d.ts.map +1 -0
- package/dist/core/session-wake-deadline.js +13 -0
- package/dist/core/session-wake-deadline.js.map +1 -0
- package/dist/core/shutdown-budgets.d.ts +7 -6
- package/dist/core/shutdown-budgets.d.ts.map +1 -1
- package/dist/core/shutdown-budgets.js +11 -10
- package/dist/core/shutdown-budgets.js.map +1 -1
- package/dist/core/terminal-control-grant.d.ts +74 -0
- package/dist/core/terminal-control-grant.d.ts.map +1 -0
- package/dist/core/terminal-control-grant.js +183 -0
- package/dist/core/terminal-control-grant.js.map +1 -0
- package/dist/core/terminal-proxy.d.ts.map +1 -1
- package/dist/core/terminal-proxy.js +4 -5
- package/dist/core/terminal-proxy.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +4 -11
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +19 -16
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +36 -29
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +88 -10
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -7
- package/dist/core/types.js.map +1 -1
- package/dist/core/workbench-link.d.ts +81 -0
- package/dist/core/workbench-link.d.ts.map +1 -0
- package/dist/core/workbench-link.js +109 -0
- package/dist/core/workbench-link.js.map +1 -0
- package/dist/core/worker-pool.d.ts +312 -11
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2494 -209
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +6 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +443 -106
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/aggregator.d.ts +33 -3
- package/dist/dashboard/aggregator.d.ts.map +1 -1
- package/dist/dashboard/aggregator.js +93 -17
- package/dist/dashboard/aggregator.js.map +1 -1
- package/dist/dashboard/auth-session-connections.d.ts +59 -0
- package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
- package/dist/dashboard/auth-session-connections.js +109 -0
- package/dist/dashboard/auth-session-connections.js.map +1 -0
- package/dist/dashboard/auth.d.ts +99 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +176 -64
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/control-audit.d.ts +112 -0
- package/dist/dashboard/control-audit.d.ts.map +1 -0
- package/dist/dashboard/control-audit.js +195 -0
- package/dist/dashboard/control-audit.js.map +1 -0
- package/dist/dashboard/control-csrf.d.ts +123 -0
- package/dist/dashboard/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/control-csrf.js +392 -0
- package/dist/dashboard/control-csrf.js.map +1 -0
- package/dist/dashboard/daemon-reconcile.d.ts +26 -0
- package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
- package/dist/dashboard/daemon-reconcile.js +46 -0
- package/dist/dashboard/daemon-reconcile.js.map +1 -0
- package/dist/dashboard/debug-terminal.d.ts.map +1 -1
- package/dist/dashboard/debug-terminal.js +18 -4
- package/dist/dashboard/debug-terminal.js.map +1 -1
- package/dist/dashboard/events-sse.d.ts +60 -0
- package/dist/dashboard/events-sse.d.ts.map +1 -0
- package/dist/dashboard/events-sse.js +63 -0
- package/dist/dashboard/events-sse.js.map +1 -0
- package/dist/dashboard/h5-auth.d.ts +256 -0
- package/dist/dashboard/h5-auth.d.ts.map +1 -0
- package/dist/dashboard/h5-auth.js +825 -0
- package/dist/dashboard/h5-auth.js.map +1 -0
- package/dist/dashboard/managed-spawn.d.ts +36 -0
- package/dist/dashboard/managed-spawn.d.ts.map +1 -0
- package/dist/dashboard/managed-spawn.js +169 -0
- package/dist/dashboard/managed-spawn.js.map +1 -0
- package/dist/dashboard/preview-content-capability.d.ts +41 -0
- package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
- package/dist/dashboard/preview-content-capability.js +127 -0
- package/dist/dashboard/preview-content-capability.js.map +1 -0
- package/dist/dashboard/preview-contract.d.ts +85 -0
- package/dist/dashboard/preview-contract.d.ts.map +1 -0
- package/dist/dashboard/preview-contract.js +198 -0
- package/dist/dashboard/preview-contract.js.map +1 -0
- package/dist/dashboard/preview-guard-page.d.ts +52 -0
- package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
- package/dist/dashboard/preview-guard-page.js +162 -0
- package/dist/dashboard/preview-guard-page.js.map +1 -0
- package/dist/dashboard/preview-interaction.d.ts +57 -0
- package/dist/dashboard/preview-interaction.d.ts.map +1 -0
- package/dist/dashboard/preview-interaction.js +198 -0
- package/dist/dashboard/preview-interaction.js.map +1 -0
- package/dist/dashboard/preview-proxy.d.ts +113 -0
- package/dist/dashboard/preview-proxy.d.ts.map +1 -0
- package/dist/dashboard/preview-proxy.js +543 -0
- package/dist/dashboard/preview-proxy.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts +23 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +90 -21
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/request-identity.d.ts +77 -0
- package/dist/dashboard/request-identity.d.ts.map +1 -0
- package/dist/dashboard/request-identity.js +72 -0
- package/dist/dashboard/request-identity.js.map +1 -0
- package/dist/dashboard/session-cleanup.d.ts +5 -0
- package/dist/dashboard/session-cleanup.d.ts.map +1 -1
- package/dist/dashboard/session-cleanup.js +4 -0
- package/dist/dashboard/session-cleanup.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +5 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +14 -0
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/standing-link.d.ts +76 -0
- package/dist/dashboard/standing-link.d.ts.map +1 -0
- package/dist/dashboard/standing-link.js +111 -0
- package/dist/dashboard/standing-link.js.map +1 -0
- package/dist/dashboard/terminal-control.d.ts +105 -0
- package/dist/dashboard/terminal-control.d.ts.map +1 -0
- package/dist/dashboard/terminal-control.js +296 -0
- package/dist/dashboard/terminal-control.js.map +1 -0
- package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
- package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
- package/dist/dashboard/terminal-front-proxy.js +397 -0
- package/dist/dashboard/terminal-front-proxy.js.map +1 -0
- package/dist/dashboard/terminal-view-capability.d.ts +97 -0
- package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
- package/dist/dashboard/terminal-view-capability.js +145 -0
- package/dist/dashboard/terminal-view-capability.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.js +227 -0
- package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
- package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.js +168 -0
- package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.js +529 -0
- package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.js +27 -0
- package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.js +468 -0
- package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
- package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.js +197 -0
- package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.js +96 -0
- package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.js +439 -0
- package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +63 -2
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +11 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +267 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +6 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/control-csrf.d.ts +4 -0
- package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/web/control-csrf.js +26 -0
- package/dist/dashboard/web/control-csrf.js.map +1 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +2 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +11 -2
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +132 -6
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +3 -2
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +41 -1
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +5 -1
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +3 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +56 -10
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +27 -2
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +43 -4
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +3 -0
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +11 -0
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard/web/update-action.d.ts +12 -0
- package/dist/dashboard/web/update-action.d.ts.map +1 -1
- package/dist/dashboard/web/update-action.js +11 -0
- package/dist/dashboard/web/update-action.js.map +1 -1
- package/dist/dashboard/workbench-doctor.d.ts +114 -0
- package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
- package/dist/dashboard/workbench-doctor.js +620 -0
- package/dist/dashboard/workbench-doctor.js.map +1 -0
- package/dist/dashboard/workbench-ticket.d.ts +165 -0
- package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
- package/dist/dashboard/workbench-ticket.js +495 -0
- package/dist/dashboard/workbench-ticket.js.map +1 -0
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
- package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
- package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
- package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7B3E3US.js → chunk-2W6SCN3M.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-VMWNR3SV.js → chunk-F6KNPF4R.js} +11 -9
- package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
- package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
- package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7DO42GJ.js → chunk-NACP7BMR.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-CPH6VVFY.js → connectors-page-VOISXXII.js} +1 -1
- package/dist/dashboard-web/chunks/{feedback-page-J2FKQ3LK.js → feedback-page-RN6HRZMS.js} +1 -1
- package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-A2LWTKJD.js → insights-page-HJFDYR5N.js} +3 -3
- package/dist/dashboard-web/chunks/{monitor-room-2YR752E3.js → monitor-room-V7PCP47V.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-BGYSKZGM.js → monitoring-page-NKEKVQAP.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-ZZHTEAE4.js → office-page-GVJF73XW.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
- package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-YUC4YLJG.js → roles-page-WQIRSOLZ.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-2L2NKTDJ.js → schedules-page-J2DEY2X6.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
- package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-DQPBBI3T.js → skills-page-HGIFR3IU.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-LQKLDV4K.js → team-federation-page-MR5ZPL4B.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-RVKQIMAP.js → v3-page-GBR5JWPE.js} +2 -2
- package/dist/dashboard-web/chunks/{whiteboards-page-S5K55HRZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
- package/dist/dashboard-web/index.html +8 -1
- package/dist/dashboard-web/style.css +2006 -10
- package/dist/dashboard.js +1006 -263
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +30 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +33 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +31 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +28 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +22 -6
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +118 -24
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +15 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +30 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +48 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +133 -22
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts +14 -6
- package/dist/im/lark/identity-cache.d.ts.map +1 -1
- package/dist/im/lark/identity-cache.js +69 -26
- package/dist/im/lark/identity-cache.js.map +1 -1
- package/dist/im/lark/lark-hosts.d.ts +13 -0
- package/dist/im/lark/lark-hosts.d.ts.map +1 -1
- package/dist/im/lark/lark-hosts.js +16 -0
- package/dist/im/lark/lark-hosts.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts +22 -0
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +53 -3
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/im/lark/sessions-card.d.ts.map +1 -1
- package/dist/im/lark/sessions-card.js +26 -3
- package/dist/im/lark/sessions-card.js.map +1 -1
- package/dist/im/lark/workflow-slash-command.d.ts +6 -0
- package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
- package/dist/im/lark/workflow-slash-command.js +7 -0
- package/dist/im/lark/workflow-slash-command.js.map +1 -1
- package/dist/index-daemon.js +27 -4
- package/dist/index-daemon.js.map +1 -1
- package/dist/index-dashboard.d.ts +3 -0
- package/dist/index-dashboard.d.ts.map +1 -0
- package/dist/index-dashboard.js +94 -0
- package/dist/index-dashboard.js.map +1 -0
- package/dist/platform/team-agents-client.d.ts +199 -0
- package/dist/platform/team-agents-client.d.ts.map +1 -0
- package/dist/platform/team-agents-client.js +263 -0
- package/dist/platform/team-agents-client.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +6 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -1
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +7 -3
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +28 -0
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +13 -4
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +55 -8
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +1 -11
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +27 -3
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bot-profile-store.d.ts +17 -2
- package/dist/services/bot-profile-store.d.ts.map +1 -1
- package/dist/services/bot-profile-store.js +93 -12
- package/dist/services/bot-profile-store.js.map +1 -1
- package/dist/services/bridge-turn-queue.d.ts +10 -1
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +29 -9
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/claude-transcript.d.ts +19 -0
- package/dist/services/claude-transcript.d.ts.map +1 -1
- package/dist/services/claude-transcript.js +57 -5
- package/dist/services/claude-transcript.js.map +1 -1
- package/dist/services/codex-app-threads.d.ts +2 -0
- package/dist/services/codex-app-threads.d.ts.map +1 -1
- package/dist/services/codex-app-threads.js +1 -1
- package/dist/services/codex-app-threads.js.map +1 -1
- package/dist/services/codex-reasoning-effort.d.ts +8 -0
- package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
- package/dist/services/codex-reasoning-effort.js +24 -0
- package/dist/services/codex-reasoning-effort.js.map +1 -1
- package/dist/services/cursor-resume-policy.d.ts.map +1 -1
- package/dist/services/cursor-resume-policy.js +15 -3
- package/dist/services/cursor-resume-policy.js.map +1 -1
- package/dist/services/open-platform-rename.d.ts.map +1 -1
- package/dist/services/open-platform-rename.js +3 -2
- package/dist/services/open-platform-rename.js.map +1 -1
- package/dist/services/ordinary-turn-recovery.d.ts +76 -0
- package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
- package/dist/services/ordinary-turn-recovery.js +349 -0
- package/dist/services/ordinary-turn-recovery.js.map +1 -0
- package/dist/services/resume-fresh-policy.d.ts +17 -0
- package/dist/services/resume-fresh-policy.d.ts.map +1 -0
- package/dist/services/resume-fresh-policy.js +24 -0
- package/dist/services/resume-fresh-policy.js.map +1 -0
- package/dist/services/session-group-title.d.ts +1 -0
- package/dist/services/session-group-title.d.ts.map +1 -1
- package/dist/services/session-group-title.js +16 -1
- package/dist/services/session-group-title.js.map +1 -1
- package/dist/services/session-groups-store.d.ts +30 -0
- package/dist/services/session-groups-store.d.ts.map +1 -1
- package/dist/services/session-groups-store.js +26 -4
- package/dist/services/session-groups-store.js.map +1 -1
- package/dist/services/session-owner-notification.d.ts +9 -0
- package/dist/services/session-owner-notification.d.ts.map +1 -0
- package/dist/services/session-owner-notification.js +10 -0
- package/dist/services/session-owner-notification.js.map +1 -0
- package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
- package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-config-store.js +24 -0
- package/dist/services/session-owner-reminder-config-store.js.map +1 -0
- package/dist/services/session-owner-reminder-store.d.ts +5 -0
- package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-store.js +54 -0
- package/dist/services/session-owner-reminder-store.js.map +1 -0
- package/dist/services/session-store.d.ts +98 -21
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +406 -48
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +9 -5
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +9 -4
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/transcript-resolver.d.ts +1 -1
- package/dist/services/transcript-resolver.d.ts.map +1 -1
- package/dist/services/transcript-resolver.js +6 -1
- package/dist/services/transcript-resolver.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +7 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
- package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
- package/dist/setup/ensure-herdr-integrations.js +21 -3
- package/dist/setup/ensure-herdr-integrations.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +1 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +107 -7
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/skills/definitions.d.ts +17 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +78 -8
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +24 -3
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +64 -15
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/skills/installer.d.ts +18 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +45 -1
- package/dist/skills/installer.js.map +1 -1
- package/dist/types.d.ts +221 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +92 -2
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +195 -1
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/cli-usage-limit.d.ts +25 -14
- package/dist/utils/cli-usage-limit.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.js +25 -15
- package/dist/utils/cli-usage-limit.js.map +1 -1
- package/dist/utils/daemon-rejection-guard.d.ts +35 -0
- package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
- package/dist/utils/daemon-rejection-guard.js +101 -0
- package/dist/utils/daemon-rejection-guard.js.map +1 -0
- package/dist/utils/dashboard-env.d.ts +53 -0
- package/dist/utils/dashboard-env.d.ts.map +1 -0
- package/dist/utils/dashboard-env.js +116 -0
- package/dist/utils/dashboard-env.js.map +1 -0
- package/dist/utils/global-install.d.ts.map +1 -1
- package/dist/utils/global-install.js +61 -5
- package/dist/utils/global-install.js.map +1 -1
- package/dist/utils/install-diagnostics.d.ts +14 -7
- package/dist/utils/install-diagnostics.d.ts.map +1 -1
- package/dist/utils/install-diagnostics.js +20 -11
- package/dist/utils/install-diagnostics.js.map +1 -1
- package/dist/utils/local-dev-update.d.ts +132 -0
- package/dist/utils/local-dev-update.d.ts.map +1 -0
- package/dist/utils/local-dev-update.js +176 -0
- package/dist/utils/local-dev-update.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +12 -1
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/worker.js +1284 -225
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +68 -68
- package/dist/workflows/events/payloads.d.ts +14 -14
- package/dist/workflows/events/schema.d.ts +312 -312
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +7 -0
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/goal-cli.d.ts +3 -0
- package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
- package/dist/workflows/v3/goal-cli.js +11 -0
- package/dist/workflows/v3/goal-cli.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +144 -144
- package/package.json +3 -2
- package/dist/cli/pm2-god-admission.d.ts +0 -8
- package/dist/cli/pm2-god-admission.d.ts.map +0 -1
- package/dist/cli/pm2-god-admission.js +0 -25
- package/dist/cli/pm2-god-admission.js.map +0 -1
- package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
- package/dist/core/riff-shutdown-detach.js.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-65SMZ4QY.js +0 -10
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
- package/dist/dashboard-web/chunks/chunk-IKN6WURK.js +0 -1
- package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-VDOOLS4M.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-7NYPKQSB.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-DYZZMKFL.js +0 -8
- package/dist/dashboard-web/chunks/settings-page-LIULUSMH.js +0 -2
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { connect } from 'node:net';
|
|
2
|
+
import { isLiteralLoopbackHost, isTcpPort, } from './loopback-target.js';
|
|
3
|
+
import { resolvePreviewPortOwner, safePreviewPortOwnerProof, verifyPreviewPortOwner, } from './preview-port-owner.js';
|
|
4
|
+
export const PREVIEW_ROUTE_PREFIX = '/preview';
|
|
5
|
+
/**
|
|
6
|
+
* Reserved path segment that introduces the sandboxed content stream:
|
|
7
|
+
* `/preview/<sessionId>/__botmux_preview_content/<capability>/…`.
|
|
8
|
+
*
|
|
9
|
+
* It is a path segment rather than a query flag on purpose. The preview
|
|
10
|
+
* document is served into an opaque-origin sandbox, so its own relative
|
|
11
|
+
* subresources and WebSockets carry no dashboard cookie; a capability that
|
|
12
|
+
* lives in the path is inherited by every relative URL the app resolves,
|
|
13
|
+
* while a query flag would be dropped by the first `./app.js`.
|
|
14
|
+
*/
|
|
15
|
+
export const PREVIEW_CONTENT_SEGMENT = '__botmux_preview_content';
|
|
16
|
+
export const PREVIEW_PROBE_TIMEOUT_MS = 750;
|
|
17
|
+
export function isPreviewPort(value) {
|
|
18
|
+
return isTcpPort(value);
|
|
19
|
+
}
|
|
20
|
+
export function isPreviewLoopbackHost(value) {
|
|
21
|
+
return isLiteralLoopbackHost(value);
|
|
22
|
+
}
|
|
23
|
+
/** Re-validate persisted/SSE data at every trust boundary. Invalid legacy or
|
|
24
|
+
* attacker-shaped objects collapse to undefined and are never dialled. */
|
|
25
|
+
export function safeSessionPreviewTarget(value) {
|
|
26
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
27
|
+
return undefined;
|
|
28
|
+
const raw = value;
|
|
29
|
+
if (!isPreviewLoopbackHost(raw.host) || !isPreviewPort(raw.port))
|
|
30
|
+
return undefined;
|
|
31
|
+
if (typeof raw.registeredAt !== 'string') {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const registeredAt = new Date(raw.registeredAt);
|
|
35
|
+
if (Number.isNaN(registeredAt.valueOf()) || registeredAt.toISOString() !== raw.registeredAt) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const owner = safePreviewPortOwnerProof(raw.owner);
|
|
39
|
+
if (!owner)
|
|
40
|
+
return undefined;
|
|
41
|
+
if (!Number.isSafeInteger(raw.workerGeneration) || raw.workerGeneration < 0) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
host: raw.host,
|
|
46
|
+
port: raw.port,
|
|
47
|
+
registeredAt: raw.registeredAt,
|
|
48
|
+
owner,
|
|
49
|
+
workerGeneration: raw.workerGeneration,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* P1-1:一次注册的指纹。空串表示「这个会话此刻没有合法的预览目标」。
|
|
54
|
+
*
|
|
55
|
+
* host:port 不足以当身份:端口被回收后重注册、worker 换代后在同一端口重注册,都会
|
|
56
|
+
* 产生同一个 host:port,但那是另一次注册、另一个进程。registeredAt(ISO 串,天然可
|
|
57
|
+
* 当 revision)、workerGeneration、以及 owner 三元证明合起来才唯一确定「哪一次」。
|
|
58
|
+
*/
|
|
59
|
+
export function sessionPreviewFingerprint(previewTarget) {
|
|
60
|
+
const target = safeSessionPreviewTarget(previewTarget);
|
|
61
|
+
if (!target)
|
|
62
|
+
return '';
|
|
63
|
+
return [
|
|
64
|
+
target.host,
|
|
65
|
+
target.port,
|
|
66
|
+
target.registeredAt,
|
|
67
|
+
target.workerGeneration,
|
|
68
|
+
target.owner.pid,
|
|
69
|
+
target.owner.procStart,
|
|
70
|
+
target.owner.inode,
|
|
71
|
+
].join('|');
|
|
72
|
+
}
|
|
73
|
+
/** P1-1:两个 target 是不是同一次注册(见 `sessionPreviewFingerprint`)。 */
|
|
74
|
+
export function sameSessionPreviewTarget(a, b) {
|
|
75
|
+
return sessionPreviewFingerprint(a) === sessionPreviewFingerprint(b);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* P1-12:目标是否仍由注册时那个进程持有。probe 之后与**每次代理落地之前**都要过
|
|
79
|
+
* 这一关;`changed`/`unverifiable` 一律按失效处理(返回 false),调用方负责清 target
|
|
80
|
+
* 并广播 `preview: null`。
|
|
81
|
+
*/
|
|
82
|
+
export function sessionPreviewTargetStillOwned(target, opts = {}) {
|
|
83
|
+
return verifyPreviewPortOwner({
|
|
84
|
+
host: target.host,
|
|
85
|
+
port: target.port,
|
|
86
|
+
proof: target.owner,
|
|
87
|
+
...(opts.procRoot !== undefined ? { procRoot: opts.procRoot } : {}),
|
|
88
|
+
}) === 'ok';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Riff 矩阵:哪些会话后端的 Web 服务在 daemon 的 loopback 上**根本不可能**出现。
|
|
92
|
+
*
|
|
93
|
+
* riff 是远端 sandbox——CLI 与它启动的 dev server 都跑在远程主机上,daemon 这一侧
|
|
94
|
+
* 的 127.0.0.1 上永远没有对应监听。此时必须明确回 `preview_unsupported`,而不是
|
|
95
|
+
* 让它落进 `preview_unreachable` 冒充「偶发故障」让用户反复重试;前端据此隐藏入口。
|
|
96
|
+
* pty / tmux / zellij / herdr / zmx 都是本机后端,行为不变。
|
|
97
|
+
*/
|
|
98
|
+
export function previewBackendSupported(backendType) {
|
|
99
|
+
return backendType !== 'riff';
|
|
100
|
+
}
|
|
101
|
+
export function sessionPreviewPath(sessionId) {
|
|
102
|
+
return `${PREVIEW_ROUTE_PREFIX}/${encodeURIComponent(sessionId)}/`;
|
|
103
|
+
}
|
|
104
|
+
/** Base path of the sandboxed content stream. Every relative URL the framed
|
|
105
|
+
* app resolves stays under it, which is how the capability survives without
|
|
106
|
+
* cookies or query strings. */
|
|
107
|
+
export function sessionPreviewContentPath(sessionId, capability) {
|
|
108
|
+
return `${sessionPreviewPath(sessionId)}${PREVIEW_CONTENT_SEGMENT}/${capability}/`;
|
|
109
|
+
}
|
|
110
|
+
export function sessionPreviewDescriptor(sessionId, value) {
|
|
111
|
+
const target = safeSessionPreviewTarget(value);
|
|
112
|
+
if (!target)
|
|
113
|
+
return undefined;
|
|
114
|
+
return {
|
|
115
|
+
path: sessionPreviewPath(sessionId),
|
|
116
|
+
registeredAt: target.registeredAt,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function probeOne(host, port, timeoutMs) {
|
|
120
|
+
return new Promise((resolve) => {
|
|
121
|
+
let settled = false;
|
|
122
|
+
const socket = connect({ host, port });
|
|
123
|
+
socket.unref?.();
|
|
124
|
+
const finish = (ok) => {
|
|
125
|
+
if (settled)
|
|
126
|
+
return;
|
|
127
|
+
settled = true;
|
|
128
|
+
clearTimeout(timer);
|
|
129
|
+
socket.destroy();
|
|
130
|
+
resolve(ok);
|
|
131
|
+
};
|
|
132
|
+
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
133
|
+
timer.unref?.();
|
|
134
|
+
socket.once('connect', () => finish(true));
|
|
135
|
+
socket.once('error', () => finish(false));
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Validate that a caller-selected port is reachable through a literal loopback
|
|
140
|
+
* address AND held by a process inside this session's lineage. With no
|
|
141
|
+
* requested host, IPv4 is preferred and IPv6 is a fallback so
|
|
142
|
+
* `botmux preview <port>` works for either bind family.
|
|
143
|
+
*
|
|
144
|
+
* P1-12:可达性与归属是两件事,两件都必须成立才产出 target——connect 通过只说明
|
|
145
|
+
* 「此刻这个号码上有人」,`resolvePreviewPortOwner` 才回答「那个人是不是本会话的
|
|
146
|
+
* 进程」。归属拿不到时宁可没有预览,也不给出一条指向不明进程的代理路由。
|
|
147
|
+
*/
|
|
148
|
+
export async function probeSessionPreviewTarget(input) {
|
|
149
|
+
if (!isPreviewPort(input.port))
|
|
150
|
+
return { ok: false, error: 'invalid_port' };
|
|
151
|
+
const timeoutMs = input.timeoutMs ?? PREVIEW_PROBE_TIMEOUT_MS;
|
|
152
|
+
if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0)
|
|
153
|
+
return { ok: false, error: 'invalid_port' };
|
|
154
|
+
const hosts = input.host ? [input.host] : ['127.0.0.1', '::1'];
|
|
155
|
+
let ownerFailure;
|
|
156
|
+
for (const host of hosts) {
|
|
157
|
+
if (!await probeOne(host, input.port, timeoutMs))
|
|
158
|
+
continue;
|
|
159
|
+
const owner = resolvePreviewPortOwner({
|
|
160
|
+
host,
|
|
161
|
+
port: input.port,
|
|
162
|
+
ownerPids: input.ownerPids,
|
|
163
|
+
...(input.procRoot !== undefined ? { procRoot: input.procRoot } : {}),
|
|
164
|
+
});
|
|
165
|
+
if (!owner.ok) {
|
|
166
|
+
ownerFailure = owner.reason;
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
ok: true,
|
|
171
|
+
target: {
|
|
172
|
+
host,
|
|
173
|
+
port: input.port,
|
|
174
|
+
registeredAt: (input.now?.() ?? new Date()).toISOString(),
|
|
175
|
+
owner: owner.proof,
|
|
176
|
+
workerGeneration: input.workerGeneration,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return ownerFailure === undefined
|
|
181
|
+
? { ok: false, error: 'preview_unreachable' }
|
|
182
|
+
: { ok: false, error: 'preview_owner_unverified', reason: ownerFailure };
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=session-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-preview.js","sourceRoot":"","sources":["../../src/core/session-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-rename.d.ts","sourceRoot":"","sources":["../../src/core/session-rename.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GACjC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;kDAEkD;AAClD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAO1E;AAED;;iFAEiF;AACjF,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,MAAM,GACZ,yBAAyB,
|
|
1
|
+
{"version":3,"file":"session-rename.d.ts","sourceRoot":"","sources":["../../src/core/session-rename.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GACjC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD;;kDAEkD;AAClD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,CAO1E;AAED;;iFAEiF;AACjF,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,MAAM,GACZ,yBAAyB,CAiC3B"}
|
|
@@ -17,9 +17,11 @@ export function requestAgentSessionRename(ds, title) {
|
|
|
17
17
|
if (!worker || worker.killed || worker.connected === false) {
|
|
18
18
|
return { status: 'not_running', ...(cliId ? { cliId } : {}) };
|
|
19
19
|
}
|
|
20
|
-
//
|
|
21
|
-
// text + Enter would create two unrelated
|
|
22
|
-
|
|
20
|
+
// A remote backend's write() creates one remote turn/task per call, so a TUI
|
|
21
|
+
// command split into text + Enter would create two unrelated ones. Neither
|
|
22
|
+
// riff nor mojo has a local TUI to rename anyway.
|
|
23
|
+
const renameBackend = ds.initConfig?.backendType ?? ds.session.backendType;
|
|
24
|
+
if (renameBackend === 'riff' || renameBackend === 'mojo') {
|
|
23
25
|
return { status: 'unsupported', ...(cliId ? { cliId } : {}) };
|
|
24
26
|
}
|
|
25
27
|
if (!cliId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-rename.js","sourceRoot":"","sources":["../../src/core/session-rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAWnE;;kDAEkD;AAClD,MAAM,UAAU,qBAAqB,CAAC,EAAiB;IACrD,OAAO,CACL,EAAE,CAAC,UAAU,EAAE,KAAK;WACjB,EAAE,CAAC,WAAW,EAAE,KAAK;WACrB,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK;WAC7B,EAAE,CAAC,OAAO,CAAC,KAAK,CACC,CAAC;AACzB,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,yBAAyB,CACvC,EAAiB,EACjB,KAAa;IAEb,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"session-rename.js","sourceRoot":"","sources":["../../src/core/session-rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAWnE;;kDAEkD;AAClD,MAAM,UAAU,qBAAqB,CAAC,EAAiB;IACrD,OAAO,CACL,EAAE,CAAC,UAAU,EAAE,KAAK;WACjB,EAAE,CAAC,WAAW,EAAE,KAAK;WACrB,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK;WAC7B,EAAE,CAAC,OAAO,CAAC,KAAK,CACC,CAAC;AACzB,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,yBAAyB,CACvC,EAAiB,EACjB,KAAa;IAEb,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,kDAAkD;IAClD,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC3E,IAAI,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QACzD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,oBAAoB,CAClC,KAAK,EACL,EAAE,CAAC,UAAU,EAAE,eAAe,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAC7D,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAC1C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAoB,CAAC,CAAC;QACjE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const SESSION_WAKE_TIMEOUT_MS = 15000;
|
|
2
|
+
export declare const SESSION_WAKE_DEADLINE_HEADER = "x-botmux-wake-deadline-ms";
|
|
3
|
+
/** Clamp an optional trusted-host deadline to the daemon's own maximum wait. */
|
|
4
|
+
export declare function sessionWakeAcquireTimeoutMs(header: string | string[] | undefined, nowMs?: number): number;
|
|
5
|
+
//# sourceMappingURL=session-wake-deadline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-wake-deadline.d.ts","sourceRoot":"","sources":["../../src/core/session-wake-deadline.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,4BAA4B,8BAA8B,CAAC;AAExE,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACrC,KAAK,SAAa,GACjB,MAAM,CAQR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const SESSION_WAKE_TIMEOUT_MS = 15_000;
|
|
2
|
+
export const SESSION_WAKE_DEADLINE_HEADER = 'x-botmux-wake-deadline-ms';
|
|
3
|
+
/** Clamp an optional trusted-host deadline to the daemon's own maximum wait. */
|
|
4
|
+
export function sessionWakeAcquireTimeoutMs(header, nowMs = Date.now()) {
|
|
5
|
+
const raw = Array.isArray(header) ? header[0] : header;
|
|
6
|
+
const requested = typeof raw === 'string' && raw.trim() ? Number(raw) : Number.NaN;
|
|
7
|
+
const localDeadlineMs = nowMs + SESSION_WAKE_TIMEOUT_MS;
|
|
8
|
+
const deadlineMs = Number.isSafeInteger(requested) && requested > 0
|
|
9
|
+
? Math.min(requested, localDeadlineMs)
|
|
10
|
+
: localDeadlineMs;
|
|
11
|
+
return Math.max(0, deadlineMs - nowMs);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=session-wake-deadline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-wake-deadline.js","sourceRoot":"","sources":["../../src/core/session-wake-deadline.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AAExE,gFAAgF;AAChF,MAAM,UAAU,2BAA2B,CACzC,MAAqC,EACrC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IAElB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACnF,MAAM,eAAe,GAAG,KAAK,GAAG,uBAAuB,CAAC;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QACjE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC;QACtC,CAAC,CAAC,eAAe,CAAC;IACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Graceful-shutdown budgets are shared with the CLI/PM2 supervisor. Keep the
|
|
3
|
-
* ordering monotonic:
|
|
3
|
+
* ordering monotonic: the longest pre-lineage remote operation is bounded at
|
|
4
|
+
* 10s (Riff create/follow-up; Mojo init waits at most 8s),
|
|
4
5
|
* admission restoration after a refused prepare at 11s, and ordinary worker
|
|
5
|
-
* exit at 3s. Shutdown never cancels accepted
|
|
6
|
+
* exit at 3s. Shutdown never cancels accepted remote work as a fallback.
|
|
6
7
|
*/
|
|
7
|
-
export declare const
|
|
8
|
+
export declare const REMOTE_SHUTDOWN_DRAIN_TIMEOUT_MS = 12000;
|
|
8
9
|
/** Admission restoration can wait for the same bounded 10s create/follow-up
|
|
9
10
|
* that prepare was draining. The daemon keeps its retirement fence throughout. */
|
|
10
|
-
export declare const
|
|
11
|
+
export declare const REMOTE_ADMISSION_RESTORE_TIMEOUT_MS = 11000;
|
|
11
12
|
/** Bounded acquisition of the bot-wide mutation lease. A timed-out waiter is
|
|
12
13
|
* removed and can never run after shutdown has already been refused. */
|
|
13
14
|
export declare const BOT_TURN_MUTATION_SHUTDOWN_ACQUIRE_TIMEOUT_MS = 1000;
|
|
14
15
|
/** Initial all-owner snapshot and phase-2 batch CAS each use one short lock. */
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const REMOTE_SHUTDOWN_INITIAL_SNAPSHOT_TIMEOUT_MS = 1000;
|
|
17
|
+
export declare const REMOTE_SHUTDOWN_BATCH_PERSIST_TIMEOUT_MS = 1000;
|
|
17
18
|
/** Scheduling/logging slack inside the supervisor-visible daemon budget. */
|
|
18
19
|
export declare const DAEMON_SHUTDOWN_OVERHEAD_MS = 2000;
|
|
19
20
|
export declare const DAEMON_WORKER_EXIT_GRACE_MS = 3000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-budgets.d.ts","sourceRoot":"","sources":["../../src/core/shutdown-budgets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shutdown-budgets.d.ts","sourceRoot":"","sources":["../../src/core/shutdown-budgets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD;kFACkF;AAClF,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D;wEACwE;AACxE,eAAO,MAAM,6CAA6C,OAAQ,CAAC;AAEnE,gFAAgF;AAChF,eAAO,MAAM,2CAA2C,OAAQ,CAAC;AACjE,eAAO,MAAM,wCAAwC,OAAQ,CAAC;AAE9D,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AACjD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AACjD,eAAO,MAAM,sBAAsB,QAMJ,CAAC;AAChC,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AACjD;+DAC+D;AAC/D,eAAO,MAAM,yBAAyB,QAAoC,CAAC;AAC3E,eAAO,MAAM,yBAAyB,QAAS,CAAC"}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Graceful-shutdown budgets are shared with the CLI/PM2 supervisor. Keep the
|
|
3
|
-
* ordering monotonic:
|
|
3
|
+
* ordering monotonic: the longest pre-lineage remote operation is bounded at
|
|
4
|
+
* 10s (Riff create/follow-up; Mojo init waits at most 8s),
|
|
4
5
|
* admission restoration after a refused prepare at 11s, and ordinary worker
|
|
5
|
-
* exit at 3s. Shutdown never cancels accepted
|
|
6
|
+
* exit at 3s. Shutdown never cancels accepted remote work as a fallback.
|
|
6
7
|
*/
|
|
7
|
-
export const
|
|
8
|
+
export const REMOTE_SHUTDOWN_DRAIN_TIMEOUT_MS = 12_000;
|
|
8
9
|
/** Admission restoration can wait for the same bounded 10s create/follow-up
|
|
9
10
|
* that prepare was draining. The daemon keeps its retirement fence throughout. */
|
|
10
|
-
export const
|
|
11
|
+
export const REMOTE_ADMISSION_RESTORE_TIMEOUT_MS = 11_000;
|
|
11
12
|
/** Bounded acquisition of the bot-wide mutation lease. A timed-out waiter is
|
|
12
13
|
* removed and can never run after shutdown has already been refused. */
|
|
13
14
|
export const BOT_TURN_MUTATION_SHUTDOWN_ACQUIRE_TIMEOUT_MS = 1_000;
|
|
14
15
|
/** Initial all-owner snapshot and phase-2 batch CAS each use one short lock. */
|
|
15
|
-
export const
|
|
16
|
-
export const
|
|
16
|
+
export const REMOTE_SHUTDOWN_INITIAL_SNAPSHOT_TIMEOUT_MS = 1_000;
|
|
17
|
+
export const REMOTE_SHUTDOWN_BATCH_PERSIST_TIMEOUT_MS = 1_000;
|
|
17
18
|
/** Scheduling/logging slack inside the supervisor-visible daemon budget. */
|
|
18
19
|
export const DAEMON_SHUTDOWN_OVERHEAD_MS = 2_000;
|
|
19
20
|
export const DAEMON_WORKER_EXIT_GRACE_MS = 3_000;
|
|
20
21
|
export const DAEMON_SHUTDOWN_MAX_MS = BOT_TURN_MUTATION_SHUTDOWN_ACQUIRE_TIMEOUT_MS
|
|
21
|
-
+
|
|
22
|
-
+
|
|
23
|
-
+
|
|
24
|
-
+ Math.max(
|
|
22
|
+
+ REMOTE_SHUTDOWN_INITIAL_SNAPSHOT_TIMEOUT_MS
|
|
23
|
+
+ REMOTE_SHUTDOWN_DRAIN_TIMEOUT_MS
|
|
24
|
+
+ REMOTE_SHUTDOWN_BATCH_PERSIST_TIMEOUT_MS
|
|
25
|
+
+ Math.max(REMOTE_ADMISSION_RESTORE_TIMEOUT_MS, DAEMON_WORKER_EXIT_GRACE_MS)
|
|
25
26
|
+ DAEMON_SHUTDOWN_OVERHEAD_MS;
|
|
26
27
|
export const PM2_DAEMON_KILL_TIMEOUT_MS = 29_000;
|
|
27
28
|
export const PM2_DAEMON_RESTART_DELAY_MS = 3_000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-budgets.js","sourceRoot":"","sources":["../../src/core/shutdown-budgets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shutdown-budgets.js","sourceRoot":"","sources":["../../src/core/shutdown-budgets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEvD;kFACkF;AAClF,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC;AAE1D;wEACwE;AACxE,MAAM,CAAC,MAAM,6CAA6C,GAAG,KAAK,CAAC;AAEnE,gFAAgF;AAChF,MAAM,CAAC,MAAM,2CAA2C,GAAG,KAAK,CAAC;AACjE,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAK,CAAC;AAE9D,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AACjD,MAAM,CAAC,MAAM,sBAAsB,GACjC,6CAA6C;MAC3C,2CAA2C;MAC3C,gCAAgC;MAChC,wCAAwC;MACxC,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,2BAA2B,CAAC;MAC1E,2BAA2B,CAAC;AAChC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AACjD;+DAC+D;AAC/D,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,GAAG,GAAG,CAAC;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,IAAI,0BAA0B,IAAI,sBAAsB,EAAE,CAAC;IACzD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC7F,CAAC;AACD,IAAI,sBAAsB,GAAG,MAAM,EAAE,CAAC;IACpC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACxF,CAAC;AACD,IAAI,yBAAyB,IAAI,0BAA0B,EAAE,CAAC;IAC5D,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAChF,CAAC;AACD,IAAI,yBAAyB,IAAI,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IACpF,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;AAC/F,CAAC;AACD,IAAI,yBAAyB,IAAI,0BAA0B,GAAG,yBAAyB,EAAE,CAAC;IACxF,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type TerminalControlScope = 'read' | 'write';
|
|
2
|
+
/**
|
|
3
|
+
* Audience of a grant that is allowed to travel in a browser-visible URL.
|
|
4
|
+
* `central` means: only the central dashboard front proxy may consume it, and
|
|
5
|
+
* only by presenting the matching forward proof below (P1-5). A grant without
|
|
6
|
+
* an audience is an internal loopback-hop credential and may never appear in a
|
|
7
|
+
* `?viewToken=`.
|
|
8
|
+
*/
|
|
9
|
+
export type TerminalGrantAudience = 'central';
|
|
10
|
+
export interface TerminalControlGrantClaims {
|
|
11
|
+
version: 1;
|
|
12
|
+
scope: TerminalControlScope;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
authSessionId: string;
|
|
16
|
+
grantId: string;
|
|
17
|
+
issuedAt: number;
|
|
18
|
+
expiresAt: number;
|
|
19
|
+
/** Set only on view capabilities minted for the browser (P1-5). */
|
|
20
|
+
audience?: TerminalGrantAudience;
|
|
21
|
+
/**
|
|
22
|
+
* Worker boot generation the capability was minted against (P1-5). The
|
|
23
|
+
* worker re-derives it from its own per-boot view token and refuses any
|
|
24
|
+
* mismatch, so a restart kills every grant issued to the previous boot even
|
|
25
|
+
* though verification itself stays stateless.
|
|
26
|
+
*/
|
|
27
|
+
workerGeneration?: string;
|
|
28
|
+
}
|
|
29
|
+
export type TerminalControlGrantVerification = {
|
|
30
|
+
ok: true;
|
|
31
|
+
claims: TerminalControlGrantClaims;
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
reason: 'missing' | 'malformed' | 'invalid' | 'expired' | 'session_mismatch';
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Mint a dashboard-to-worker grant. The returned capability is for the
|
|
38
|
+
* loopback proxy hop only and must never be returned in an API body or URL.
|
|
39
|
+
*/
|
|
40
|
+
export declare function issueTerminalControlGrant(secret: string, input: Omit<TerminalControlGrantClaims, 'version' | 'grantId'> & {
|
|
41
|
+
grantId?: string;
|
|
42
|
+
}): string;
|
|
43
|
+
/**
|
|
44
|
+
* Cheap shape probe: does this query/header value even claim to be a signed
|
|
45
|
+
* terminal grant? Lets hot paths skip the synchronous secret-file read for
|
|
46
|
+
* ordinary random capability tokens (worker per-boot view token, write token)
|
|
47
|
+
* that can never verify anyway.
|
|
48
|
+
*/
|
|
49
|
+
export declare function looksLikeTerminalControlGrant(value: string | null | undefined): value is string;
|
|
50
|
+
export declare function deriveWorkerViewGeneration(secret: string, workerViewToken: string | null | undefined): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* P1-5 — proof that a `?viewToken=` view capability reached the worker THROUGH
|
|
53
|
+
* the central dashboard front proxy.
|
|
54
|
+
*
|
|
55
|
+
* The audience claim above states the intent; this header carries the evidence.
|
|
56
|
+
* The worker has no channel to the dashboard's auth-session table, so it cannot
|
|
57
|
+
* re-check liveness itself — but it can demand that the only component which
|
|
58
|
+
* does (the front proxy) countersign the exact capability being presented. The
|
|
59
|
+
* value is an HMAC of the capability under the host-only dashboard secret, so a
|
|
60
|
+
* browser holding the raw URL cannot compute it and a direct dial to the worker
|
|
61
|
+
* port (or to the daemon's own `/s/` reverse proxy, which is network-bound)
|
|
62
|
+
* fails closed no matter what headers it forges.
|
|
63
|
+
*
|
|
64
|
+
* The proof is deterministic per capability, which is deliberate: it only ever
|
|
65
|
+
* exists on the 127.0.0.1 hops (dashboard → daemon proxy → worker) and is never
|
|
66
|
+
* written into a URL, a page or a log, so the only way to hold a (capability,
|
|
67
|
+
* proof) pair is to already own loopback on this host. Binding it to a time
|
|
68
|
+
* window would buy nothing against an attacker who is already there.
|
|
69
|
+
*/
|
|
70
|
+
export declare const TERMINAL_VIEW_FORWARD_HEADER = "x-botmux-terminal-view";
|
|
71
|
+
export declare function signTerminalViewForward(secret: string, viewGrant: string | null | undefined): string | null;
|
|
72
|
+
export declare function verifyTerminalViewForward(secret: string, viewGrant: string | null | undefined, proof: string | string[] | undefined): boolean;
|
|
73
|
+
export declare function verifyTerminalControlGrant(secret: string, token: string | string[] | undefined, expectedSessionId: string, now?: number): TerminalControlGrantVerification;
|
|
74
|
+
//# sourceMappingURL=terminal-control-grant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-control-grant.d.ts","sourceRoot":"","sources":["../../src/core/terminal-control-grant.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,gCAAgC,GACxC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAA;CAAE,GAChD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAAA;CAAE,CAAC;AA6ChG;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF,MAAM,CAoBR;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAE/F;AAmBD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACzC,MAAM,GAAG,IAAI,CASf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAGrE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI3G;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACnC,OAAO,CAOT;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,SAAa,GACf,gCAAgC,CA2BlC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
const TOKEN_PREFIX = 'bmxg1';
|
|
3
|
+
const GRANT_DOMAIN = 'botmux-terminal-control-grant-v1\0';
|
|
4
|
+
const MAX_GRANT_BYTES = 4_096;
|
|
5
|
+
function boundedIdentity(value) {
|
|
6
|
+
return value.length > 0 && value.length <= 512 && !/[\r\n\0]/.test(value);
|
|
7
|
+
}
|
|
8
|
+
const BASE_GRANT_KEYS = [
|
|
9
|
+
'authSessionId', 'expiresAt', 'grantId', 'issuedAt', 'scope', 'sessionId', 'userId', 'version',
|
|
10
|
+
];
|
|
11
|
+
/** A browser-visible view capability carries exactly two extra claims. */
|
|
12
|
+
const AUDIENCED_GRANT_KEYS = [...BASE_GRANT_KEYS, 'audience', 'workerGeneration'].sort();
|
|
13
|
+
function sameKeys(keys, expected) {
|
|
14
|
+
return keys.length === expected.length && keys.every((key, index) => key === expected[index]);
|
|
15
|
+
}
|
|
16
|
+
function exactGrantClaims(value) {
|
|
17
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
18
|
+
return false;
|
|
19
|
+
const record = value;
|
|
20
|
+
const keys = Object.keys(record).sort();
|
|
21
|
+
const audienced = sameKeys(keys, AUDIENCED_GRANT_KEYS);
|
|
22
|
+
if (!audienced && !sameKeys(keys, BASE_GRANT_KEYS))
|
|
23
|
+
return false;
|
|
24
|
+
if (audienced) {
|
|
25
|
+
// Only a READ capability may name an audience: the audience exists so a
|
|
26
|
+
// grant can be handed to a browser, and a write grant never may be.
|
|
27
|
+
if (record.audience !== 'central' || record.scope !== 'read')
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof record.workerGeneration !== 'string'
|
|
30
|
+
|| !/^[A-Za-z0-9_-]{16,128}$/.test(record.workerGeneration)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return record.version === 1
|
|
35
|
+
&& (record.scope === 'read' || record.scope === 'write')
|
|
36
|
+
&& typeof record.sessionId === 'string' && boundedIdentity(record.sessionId)
|
|
37
|
+
&& typeof record.userId === 'string' && boundedIdentity(record.userId)
|
|
38
|
+
&& typeof record.authSessionId === 'string' && boundedIdentity(record.authSessionId)
|
|
39
|
+
&& typeof record.grantId === 'string' && /^[A-Za-z0-9_-]{16,128}$/.test(record.grantId)
|
|
40
|
+
&& Number.isSafeInteger(record.issuedAt) && record.issuedAt >= 0
|
|
41
|
+
&& Number.isSafeInteger(record.expiresAt) && record.expiresAt > record.issuedAt;
|
|
42
|
+
}
|
|
43
|
+
function signature(secret, payload) {
|
|
44
|
+
return createHmac('sha256', secret).update(GRANT_DOMAIN).update(payload).digest();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mint a dashboard-to-worker grant. The returned capability is for the
|
|
48
|
+
* loopback proxy hop only and must never be returned in an API body or URL.
|
|
49
|
+
*/
|
|
50
|
+
export function issueTerminalControlGrant(secret, input) {
|
|
51
|
+
if (!secret)
|
|
52
|
+
throw new Error('terminal control secret is required');
|
|
53
|
+
const claims = {
|
|
54
|
+
version: 1,
|
|
55
|
+
scope: input.scope,
|
|
56
|
+
sessionId: input.sessionId,
|
|
57
|
+
userId: input.userId,
|
|
58
|
+
authSessionId: input.authSessionId,
|
|
59
|
+
grantId: input.grantId ?? randomBytes(18).toString('base64url'),
|
|
60
|
+
issuedAt: input.issuedAt,
|
|
61
|
+
expiresAt: input.expiresAt,
|
|
62
|
+
// Kept off the object entirely when absent so the signed key set stays
|
|
63
|
+
// exactly one of the two accepted shapes.
|
|
64
|
+
...(input.audience === undefined && input.workerGeneration === undefined
|
|
65
|
+
? {}
|
|
66
|
+
: { audience: input.audience, workerGeneration: input.workerGeneration }),
|
|
67
|
+
};
|
|
68
|
+
if (!exactGrantClaims(claims))
|
|
69
|
+
throw new Error('invalid terminal control grant claims');
|
|
70
|
+
const payload = Buffer.from(JSON.stringify(claims), 'utf8').toString('base64url');
|
|
71
|
+
return `${TOKEN_PREFIX}.${payload}.${signature(secret, payload).toString('base64url')}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Cheap shape probe: does this query/header value even claim to be a signed
|
|
75
|
+
* terminal grant? Lets hot paths skip the synchronous secret-file read for
|
|
76
|
+
* ordinary random capability tokens (worker per-boot view token, write token)
|
|
77
|
+
* that can never verify anyway.
|
|
78
|
+
*/
|
|
79
|
+
export function looksLikeTerminalControlGrant(value) {
|
|
80
|
+
return typeof value === 'string' && value.startsWith(`${TOKEN_PREFIX}.`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* P1-5 — worker boot generation pinned into a view capability.
|
|
84
|
+
*
|
|
85
|
+
* Derived one-way from the worker's PER-BOOT random view token, which the
|
|
86
|
+
* daemon already reports upward and which the worker still holds in memory.
|
|
87
|
+
* Both sides therefore agree on a generation id without any new plumbing, and
|
|
88
|
+
* the derived value is safe to publish inside a browser-visible grant: it is an
|
|
89
|
+
* HMAC under the host-only dashboard secret, so it cannot be inverted back into
|
|
90
|
+
* the boot token (which by itself opens the terminal read-only).
|
|
91
|
+
*
|
|
92
|
+
* A worker restart re-randomizes the boot token ⇒ a different generation ⇒
|
|
93
|
+
* every grant minted for the previous boot fails closed, statelessly.
|
|
94
|
+
* Returns null when there is nothing to derive from, or when the caller passed
|
|
95
|
+
* a signed grant where a boot token was expected (fail closed, never chain).
|
|
96
|
+
*/
|
|
97
|
+
const VIEW_GENERATION_DOMAIN = 'botmux-terminal-view-generation-v1\0';
|
|
98
|
+
export function deriveWorkerViewGeneration(secret, workerViewToken) {
|
|
99
|
+
if (!secret || typeof workerViewToken !== 'string' || !workerViewToken)
|
|
100
|
+
return null;
|
|
101
|
+
if (workerViewToken.length > MAX_GRANT_BYTES)
|
|
102
|
+
return null;
|
|
103
|
+
if (looksLikeTerminalControlGrant(workerViewToken))
|
|
104
|
+
return null;
|
|
105
|
+
return createHmac('sha256', secret)
|
|
106
|
+
.update(VIEW_GENERATION_DOMAIN)
|
|
107
|
+
.update(workerViewToken)
|
|
108
|
+
.digest('base64url')
|
|
109
|
+
.slice(0, 32);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* P1-5 — proof that a `?viewToken=` view capability reached the worker THROUGH
|
|
113
|
+
* the central dashboard front proxy.
|
|
114
|
+
*
|
|
115
|
+
* The audience claim above states the intent; this header carries the evidence.
|
|
116
|
+
* The worker has no channel to the dashboard's auth-session table, so it cannot
|
|
117
|
+
* re-check liveness itself — but it can demand that the only component which
|
|
118
|
+
* does (the front proxy) countersign the exact capability being presented. The
|
|
119
|
+
* value is an HMAC of the capability under the host-only dashboard secret, so a
|
|
120
|
+
* browser holding the raw URL cannot compute it and a direct dial to the worker
|
|
121
|
+
* port (or to the daemon's own `/s/` reverse proxy, which is network-bound)
|
|
122
|
+
* fails closed no matter what headers it forges.
|
|
123
|
+
*
|
|
124
|
+
* The proof is deterministic per capability, which is deliberate: it only ever
|
|
125
|
+
* exists on the 127.0.0.1 hops (dashboard → daemon proxy → worker) and is never
|
|
126
|
+
* written into a URL, a page or a log, so the only way to hold a (capability,
|
|
127
|
+
* proof) pair is to already own loopback on this host. Binding it to a time
|
|
128
|
+
* window would buy nothing against an attacker who is already there.
|
|
129
|
+
*/
|
|
130
|
+
export const TERMINAL_VIEW_FORWARD_HEADER = 'x-botmux-terminal-view';
|
|
131
|
+
const VIEW_FORWARD_DOMAIN = 'botmux-terminal-view-forward-v1\0';
|
|
132
|
+
export function signTerminalViewForward(secret, viewGrant) {
|
|
133
|
+
if (!secret || typeof viewGrant !== 'string' || !viewGrant)
|
|
134
|
+
return null;
|
|
135
|
+
if (viewGrant.length > MAX_GRANT_BYTES)
|
|
136
|
+
return null;
|
|
137
|
+
return createHmac('sha256', secret).update(VIEW_FORWARD_DOMAIN).update(viewGrant).digest('base64url');
|
|
138
|
+
}
|
|
139
|
+
export function verifyTerminalViewForward(secret, viewGrant, proof) {
|
|
140
|
+
if (typeof proof !== 'string' || !proof)
|
|
141
|
+
return false;
|
|
142
|
+
const expected = signTerminalViewForward(secret, viewGrant);
|
|
143
|
+
if (!expected)
|
|
144
|
+
return false;
|
|
145
|
+
const provided = Buffer.from(proof, 'utf8');
|
|
146
|
+
const wanted = Buffer.from(expected, 'utf8');
|
|
147
|
+
return provided.length === wanted.length && timingSafeEqual(provided, wanted);
|
|
148
|
+
}
|
|
149
|
+
export function verifyTerminalControlGrant(secret, token, expectedSessionId, now = Date.now()) {
|
|
150
|
+
if (typeof token !== 'string' || !token)
|
|
151
|
+
return { ok: false, reason: 'missing' };
|
|
152
|
+
if (!secret || token.length > MAX_GRANT_BYTES)
|
|
153
|
+
return { ok: false, reason: 'malformed' };
|
|
154
|
+
const parts = token.split('.');
|
|
155
|
+
if (parts.length !== 3 || parts[0] !== TOKEN_PREFIX || !/^[A-Za-z0-9_-]+$/.test(parts[1])
|
|
156
|
+
|| !/^[A-Za-z0-9_-]+$/.test(parts[2])) {
|
|
157
|
+
return { ok: false, reason: 'malformed' };
|
|
158
|
+
}
|
|
159
|
+
const expected = signature(secret, parts[1]);
|
|
160
|
+
const provided = Buffer.from(parts[2], 'base64url');
|
|
161
|
+
if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {
|
|
162
|
+
return { ok: false, reason: 'invalid' };
|
|
163
|
+
}
|
|
164
|
+
let parsed;
|
|
165
|
+
try {
|
|
166
|
+
const json = Buffer.from(parts[1], 'base64url').toString('utf8');
|
|
167
|
+
if (Buffer.byteLength(json) > MAX_GRANT_BYTES)
|
|
168
|
+
return { ok: false, reason: 'malformed' };
|
|
169
|
+
parsed = JSON.parse(json);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return { ok: false, reason: 'malformed' };
|
|
173
|
+
}
|
|
174
|
+
if (!exactGrantClaims(parsed))
|
|
175
|
+
return { ok: false, reason: 'malformed' };
|
|
176
|
+
if (parsed.sessionId !== expectedSessionId)
|
|
177
|
+
return { ok: false, reason: 'session_mismatch' };
|
|
178
|
+
if (!Number.isFinite(now) || now < parsed.issuedAt - 30_000 || now >= parsed.expiresAt) {
|
|
179
|
+
return { ok: false, reason: 'expired' };
|
|
180
|
+
}
|
|
181
|
+
return { ok: true, claims: parsed };
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=terminal-control-grant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-control-grant.js","sourceRoot":"","sources":["../../src/core/terminal-control-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-proxy.d.ts","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"terminal-proxy.d.ts","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiI3F"}
|