botmux 3.14.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/tmux-pipe-backend.d.ts +30 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +60 -0
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +108 -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 +26 -4
- package/dist/adapters/cli/cursor.js.map +1 -1
- package/dist/adapters/cli/dsh.d.ts.map +1 -1
- package/dist/adapters/cli/dsh.js +5 -1
- package/dist/adapters/cli/dsh.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 +20 -5
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +27 -5
- 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 +51 -30
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +33 -4
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +42 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +54 -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 +941 -118
- 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-discovery.d.ts.map +1 -1
- package/dist/core/command-discovery.js +4 -1
- package/dist/core/command-discovery.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 +415 -42
- 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/skills/frontmatter.d.ts.map +1 -1
- package/dist/core/skills/frontmatter.js +6 -1
- package/dist/core/skills/frontmatter.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 +2515 -217
- 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 +447 -116
- 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 +5 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +4 -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 +18 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +362 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +8 -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 +140 -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/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +4 -2
- package/dist/dashboard/web/skills-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-6O7KXFD2.js → chunk-2W6SCN3M.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Q2MT4VWH.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-U3ZFSO7E.js → chunk-NACP7BMR.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-2KZO5KSJ.js → connectors-page-VOISXXII.js} +1 -1
- package/dist/dashboard-web/chunks/{feedback-page-CLVTOLLO.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-4RPU2CRU.js → insights-page-HJFDYR5N.js} +3 -3
- package/dist/dashboard-web/chunks/{monitor-room-OTKQ2CXK.js → monitor-room-V7PCP47V.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-IJPUB6JT.js → monitoring-page-NKEKVQAP.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-QSR3J44Y.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-6NWJMOB5.js → roles-page-WQIRSOLZ.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-6I3LNXD4.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-M2Q6L5CB.js → skills-page-HGIFR3IU.js} +2 -2
- package/dist/dashboard-web/chunks/{team-federation-page-7I7FDE3B.js → team-federation-page-MR5ZPL4B.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-HQXRL65L.js → v3-page-GBR5JWPE.js} +2 -2
- package/dist/dashboard-web/chunks/{whiteboards-page-LQKC4TAZ.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 +1017 -264
- package/dist/dashboard.js.map +1 -1
- package/dist/dsh-runner.js +8 -1
- package/dist/dsh-runner.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 +46 -27
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +43 -27
- 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 +138 -41
- 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-fallback-gate.d.ts +15 -7
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +43 -16
- package/dist/services/bridge-fallback-gate.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/peer-cross-ref-store.d.ts +8 -0
- package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
- package/dist/services/peer-cross-ref-store.js +95 -0
- package/dist/services/peer-cross-ref-store.js.map +1 -0
- package/dist/services/pi-transcript.d.ts.map +1 -1
- package/dist/services/pi-transcript.js +10 -6
- package/dist/services/pi-transcript.js.map +1 -1
- 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 +15 -2
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +16 -1
- 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 +222 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/bot-routing.d.ts +1 -1
- package/dist/utils/bot-routing.d.ts.map +1 -1
- package/dist/utils/bot-routing.js.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 +1517 -236
- 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 +7 -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-4RENHE7J.js +0 -10
- package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +0 -1
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
- package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-B2TXGJDO.js +0 -8
- package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-tail.js","sourceRoot":"","sources":["../../src/cli/log-tail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scrub the env handed to a pm2 invocation, in place.
|
|
3
|
+
*
|
|
4
|
+
* pm2 persists the CALLER's environment into every managed app it starts or
|
|
5
|
+
* restarts — and into dump.pm2, which `pm2 resurrect` replays after a reboot,
|
|
6
|
+
* bypassing this function entirely. So anything left here is not just handed to
|
|
7
|
+
* the fleet, it is written to disk under ~/.botmux/pm2 and readable from
|
|
8
|
+
* `pm2 describe` / `pm2 jlist` output for as long as that dump survives.
|
|
9
|
+
*
|
|
10
|
+
* Extracted from cli.ts's pm2Env() so the resulting env is assertable in a test
|
|
11
|
+
* (cli.ts is a multi-thousand-line command module with top-level side effects).
|
|
12
|
+
*/
|
|
13
|
+
export declare function scrubPm2CallerEnv(env: NodeJS.ProcessEnv): void;
|
|
14
|
+
/** Build the env for a pm2 invocation with an isolated PM2_HOME. */
|
|
15
|
+
export declare function pm2CallerEnv(base: NodeJS.ProcessEnv, home: string): NodeJS.ProcessEnv;
|
|
16
|
+
//# sourceMappingURL=pm2-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-env.d.ts","sourceRoot":"","sources":["../../src/cli/pm2-env.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CA0C9D;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAIrF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { scrubClaudeSessionMarkerEnv, scrubInvokerTerminalEnv, scrubSessionCliHomeEnv, scrubSessionTurnMarkerEnv, scrubWorkflowWorkerEnv, stripDashboardH5Env, } from '../utils/child-env.js';
|
|
2
|
+
/**
|
|
3
|
+
* Scrub the env handed to a pm2 invocation, in place.
|
|
4
|
+
*
|
|
5
|
+
* pm2 persists the CALLER's environment into every managed app it starts or
|
|
6
|
+
* restarts — and into dump.pm2, which `pm2 resurrect` replays after a reboot,
|
|
7
|
+
* bypassing this function entirely. So anything left here is not just handed to
|
|
8
|
+
* the fleet, it is written to disk under ~/.botmux/pm2 and readable from
|
|
9
|
+
* `pm2 describe` / `pm2 jlist` output for as long as that dump survives.
|
|
10
|
+
*
|
|
11
|
+
* Extracted from cli.ts's pm2Env() so the resulting env is assertable in a test
|
|
12
|
+
* (cli.ts is a multi-thousand-line command module with top-level side effects).
|
|
13
|
+
*/
|
|
14
|
+
export function scrubPm2CallerEnv(env) {
|
|
15
|
+
// A `botmux start/restart` invoked from ANY process that carries a
|
|
16
|
+
// session-level CLI home pointer — most commonly a bot's own session during
|
|
17
|
+
// self-upgrade, whose env holds its injected CLAUDE_CONFIG_DIR — would poison
|
|
18
|
+
// ALL workers, making every non-isolated bot read/write a sibling bot's home.
|
|
19
|
+
// Strip at this boundary so the daemon stays session-agnostic; daemon/worker
|
|
20
|
+
// boot scrub the same keys against stale dumps (see SESSION_CLI_HOME_ENV_KEYS
|
|
21
|
+
// for the full story, including why GROK_HOME is exempt and why deleting
|
|
22
|
+
// beats pinning a default).
|
|
23
|
+
scrubSessionCliHomeEnv(env);
|
|
24
|
+
// Claude session markers ride the same pm2 env-persistence vector; baked in
|
|
25
|
+
// they eventually flip transcript saving off fleet-wide once the tmux server
|
|
26
|
+
// respawns from a poisoned daemon (see CLAUDE_SESSION_MARKER_ENV_KEYS).
|
|
27
|
+
scrubClaudeSessionMarkerEnv(env);
|
|
28
|
+
// Workflow/goal markers identify one short-lived node worker. Persisting
|
|
29
|
+
// them in PM2 would make every daemon — and then every ordinary chat worker
|
|
30
|
+
// it forks — run in workflow mode after a restart initiated from that node.
|
|
31
|
+
scrubWorkflowWorkerEnv(env);
|
|
32
|
+
// Dashboard-only Feishu H5 login family (BOTMUX_DASHBOARD_FEISHU_H5_*,
|
|
33
|
+
// APP_SECRET included). It is deliberately kept OUT of the baked PM2 env
|
|
34
|
+
// block (DAEMON_ENV_KEYS) so it never lands in ecosystem.config.json — but
|
|
35
|
+
// that is defeated if it rides in through the caller instead: `botmux
|
|
36
|
+
// restart` issued from the dashboard process (update/restart button) or from
|
|
37
|
+
// a shell that exported the family would bake the app secret into every
|
|
38
|
+
// managed app's pm2 metadata and into dump.pm2. The dashboard has the one
|
|
39
|
+
// legitimate consumer and loads the family itself (index-dashboard.ts), so
|
|
40
|
+
// nothing needs it here.
|
|
41
|
+
stripDashboardH5Env(env);
|
|
42
|
+
// Invoker-terminal fingerprints (NO_COLOR=1 / CODEX_CI=1 / PAGER=cat from
|
|
43
|
+
// an agent's non-interactive shell) ride the same persistence vector; baked
|
|
44
|
+
// in they turn every session PTY on the machine colorless. Same class, same
|
|
45
|
+
// boundary — see INVOKER_TERMINAL_ENV_KEYS.
|
|
46
|
+
scrubInvokerTerminalEnv(env);
|
|
47
|
+
// Turn-scoped session identity and capabilities of the invoking bot session
|
|
48
|
+
// must not become fleet-wide daemon env — the daemon stays session-agnostic
|
|
49
|
+
// (see SESSION_TURN_MARKER_ENV_KEYS for the per-key rationale).
|
|
50
|
+
scrubSessionTurnMarkerEnv(env);
|
|
51
|
+
// Re-pin TERM to the constant every botmux PTY already forces. Deleting it
|
|
52
|
+
// outright would make pm2 CLIENT output (e.g. `botmux status` on a real
|
|
53
|
+
// TTY) fail supports-color detection and render colorless; pinning keeps
|
|
54
|
+
// the baked value deterministic and invoker-independent instead of absent.
|
|
55
|
+
env.TERM = 'xterm-256color';
|
|
56
|
+
}
|
|
57
|
+
/** Build the env for a pm2 invocation with an isolated PM2_HOME. */
|
|
58
|
+
export function pm2CallerEnv(base, home) {
|
|
59
|
+
const env = { ...base, PM2_HOME: home };
|
|
60
|
+
scrubPm2CallerEnv(env);
|
|
61
|
+
return env;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=pm2-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-env.js","sourceRoot":"","sources":["../../src/cli/pm2-env.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,mEAAmE;IACnE,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,4BAA4B;IAC5B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjC,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,uEAAuE;IACvE,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,6EAA6E;IAC7E,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,yBAAyB;IACzB,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,4CAA4C;IAC5C,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7B,4EAA4E;IAC5E,4EAA4E;IAC5E,gEAAgE;IAChE,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAC9B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,IAAuB,EAAE,IAAY;IAChE,MAAM,GAAG,GAAsB,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One lock for every botmux-internal mutation of the shared PM2_HOME
|
|
3
|
+
* (~/.botmux/pm2): core fleet stop/start/restart AND plugin service
|
|
4
|
+
* lifecycle. Core and plugin apps live under the same God, so two separate
|
|
5
|
+
* locks would let a concurrent plugin start slip between an include-pm2
|
|
6
|
+
* restart's plugin stop and its `pm2 kill`, or between the kill and the fresh
|
|
7
|
+
* fleet start. Computed lazily so tests can repoint HOME.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pm2FleetMutationLockTarget(): string;
|
|
10
|
+
/** True only within the async call chain that currently holds the lock. */
|
|
11
|
+
export declare function pm2FleetMutationLockHeld(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Serialize a PM2_HOME mutation against every other botmux flow — other
|
|
14
|
+
* processes via the file lock, other async chains in THIS process via the
|
|
15
|
+
* same file lock (file-lock treats a live same-pid holder as held, not
|
|
16
|
+
* stale). Lock order is fixed: fleet lock FIRST, then the plugin service
|
|
17
|
+
* lock — never the reverse.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withPm2FleetMutationLock<T>(fn: () => Promise<T> | T, opts?: {
|
|
20
|
+
maxWaitMs?: number;
|
|
21
|
+
}): Promise<T>;
|
|
22
|
+
/** Sync variant for sync call sites (plugin service lock wrapper). */
|
|
23
|
+
export declare function withPm2FleetMutationLockSync<T>(fn: () => T, opts?: {
|
|
24
|
+
maxWaitMs?: number;
|
|
25
|
+
}): T;
|
|
26
|
+
//# sourceMappingURL=pm2-fleet-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-fleet-lock.d.ts","sourceRoot":"","sources":["../../src/cli/pm2-fleet-lock.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAeD,2EAA2E;AAC3E,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACxB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED,sEAAsE;AACtE,wBAAgB,4BAA4B,CAAC,CAAC,EAC5C,EAAE,EAAE,MAAM,CAAC,EACX,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,CAAC,CAOH"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
4
|
+
import { withFileLock, withFileLockSync } from '../utils/file-lock.js';
|
|
5
|
+
/**
|
|
6
|
+
* One lock for every botmux-internal mutation of the shared PM2_HOME
|
|
7
|
+
* (~/.botmux/pm2): core fleet stop/start/restart AND plugin service
|
|
8
|
+
* lifecycle. Core and plugin apps live under the same God, so two separate
|
|
9
|
+
* locks would let a concurrent plugin start slip between an include-pm2
|
|
10
|
+
* restart's plugin stop and its `pm2 kill`, or between the kill and the fresh
|
|
11
|
+
* fleet start. Computed lazily so tests can repoint HOME.
|
|
12
|
+
*/
|
|
13
|
+
export function pm2FleetMutationLockTarget() {
|
|
14
|
+
return join(homedir(), '.botmux', 'pm2-fleet-mutation');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Re-entrancy ownership is bound to the ASYNC CALL CHAIN, not the process: a
|
|
18
|
+
* module-level counter would let an unrelated concurrent flow in the same
|
|
19
|
+
* process (the dashboard serves POST /api/plugins/:id/services/* handlers
|
|
20
|
+
* concurrently) mistake "someone in this process holds the lock" for "I hold
|
|
21
|
+
* the lock" and skip the file lock entirely. AsyncLocalStorage context only
|
|
22
|
+
* flows into calls awaited UNDER the holder's callback, so nested calls
|
|
23
|
+
* (cmdRestart stopping plugin services while holding the lock) short-circuit
|
|
24
|
+
* while independent concurrent flows queue on the file lock like any other
|
|
25
|
+
* process.
|
|
26
|
+
*/
|
|
27
|
+
const lockOwnership = new AsyncLocalStorage();
|
|
28
|
+
/** True only within the async call chain that currently holds the lock. */
|
|
29
|
+
export function pm2FleetMutationLockHeld() {
|
|
30
|
+
return lockOwnership.getStore() !== undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Serialize a PM2_HOME mutation against every other botmux flow — other
|
|
34
|
+
* processes via the file lock, other async chains in THIS process via the
|
|
35
|
+
* same file lock (file-lock treats a live same-pid holder as held, not
|
|
36
|
+
* stale). Lock order is fixed: fleet lock FIRST, then the plugin service
|
|
37
|
+
* lock — never the reverse.
|
|
38
|
+
*/
|
|
39
|
+
export async function withPm2FleetMutationLock(fn, opts = {}) {
|
|
40
|
+
if (lockOwnership.getStore())
|
|
41
|
+
return await fn();
|
|
42
|
+
return withFileLock(pm2FleetMutationLockTarget(), () => lockOwnership.run({ held: true }, async () => fn()), opts);
|
|
43
|
+
}
|
|
44
|
+
/** Sync variant for sync call sites (plugin service lock wrapper). */
|
|
45
|
+
export function withPm2FleetMutationLockSync(fn, opts = {}) {
|
|
46
|
+
if (lockOwnership.getStore())
|
|
47
|
+
return fn();
|
|
48
|
+
return withFileLockSync(pm2FleetMutationLockTarget(), () => lockOwnership.run({ held: true }, fn), opts);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=pm2-fleet-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-fleet-lock.js","sourceRoot":"","sources":["../../src/cli/pm2-fleet-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAE9D,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,aAAa,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAwB,EACxB,OAA+B,EAAE;IAEjC,IAAI,aAAa,CAAC,QAAQ,EAAE;QAAE,OAAO,MAAM,EAAE,EAAE,CAAC;IAChD,OAAO,YAAY,CACjB,0BAA0B,EAAE,EAC5B,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EACzD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,4BAA4B,CAC1C,EAAW,EACX,OAA+B,EAAE;IAEjC,IAAI,aAAa,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,EAAE,CAAC;IAC1C,OAAO,gBAAgB,CACrB,0BAA0B,EAAE,EAC5B,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAC3C,IAAI,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `restart --include-pm2` God retirement.
|
|
3
|
+
*
|
|
4
|
+
* A PID-addressed kill(2) cannot bind a signal to a PID+birth generation, so
|
|
5
|
+
* this module never signals the God by PID. The kill is addressed to the
|
|
6
|
+
* PM2_HOME control socket (`pm2 kill`) — i.e. to
|
|
7
|
+
* "whichever God owns this home", which is exactly the object being retired —
|
|
8
|
+
* and the recorded pid+birth identity is used only to VERIFY disappearance
|
|
9
|
+
* afterwards. Callers must run this strictly AFTER the managed core fleet has
|
|
10
|
+
* been retired and verified gone (and plugin services stopped): with an empty
|
|
11
|
+
* fleet the God holds no session state, so retiring it cannot interrupt a
|
|
12
|
+
* Riff prepare/persist/commit handshake.
|
|
13
|
+
*/
|
|
14
|
+
export interface Pm2GodRetirementRuntime {
|
|
15
|
+
/** Scan for God processes owning this PM2_HOME (cmdline-marker based). */
|
|
16
|
+
listGodPids(): number[];
|
|
17
|
+
/** Birth identity for verification only — never signalling authority. */
|
|
18
|
+
readStartIdentity(pid: number): string | undefined;
|
|
19
|
+
isAlive(pid: number): boolean;
|
|
20
|
+
/** Bounded `pm2 kill` against this PM2_HOME's control socket. */
|
|
21
|
+
pm2Kill(): void;
|
|
22
|
+
sleep(ms: number): Promise<void>;
|
|
23
|
+
now(): number;
|
|
24
|
+
}
|
|
25
|
+
export declare const PM2_GOD_RETIREMENT_VERIFY_TIMEOUT_MS = 15000;
|
|
26
|
+
export interface RetiredPm2God {
|
|
27
|
+
pid: number;
|
|
28
|
+
startIdentity: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
export interface Pm2RegistryRowLiveness {
|
|
31
|
+
name: string;
|
|
32
|
+
status: string | undefined;
|
|
33
|
+
pid: number | undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `pm2 kill` slaughters every process the God still manages without any
|
|
37
|
+
* graceful handshake, so the God may only be retired once the WHOLE registry
|
|
38
|
+
* is quiescent: every row — core, plugin, or an orphaned row a plugin
|
|
39
|
+
* uninstall left behind — must be in a terminal status with no live pid. A
|
|
40
|
+
* plugin stop that failed (stop errors are collected into reports, not
|
|
41
|
+
* rethrown) or a leftover running `botmux-plugin-*` row therefore blocks the
|
|
42
|
+
* kill here, fail-closed, instead of being silently killed with the God.
|
|
43
|
+
*/
|
|
44
|
+
export declare function assertPm2RegistryQuiescentForGodRetirement(rows: readonly Pm2RegistryRowLiveness[]): void;
|
|
45
|
+
/**
|
|
46
|
+
* Between God retirement and the fresh `pm2 start`, any pm2 client invocation
|
|
47
|
+
* (even a read-only jlist from another shell) lazily births a God from ITS
|
|
48
|
+
* environment, not from this restart's cleaned one. Accepting it would defeat
|
|
49
|
+
* the whole point of --include-pm2, so the start transaction refuses.
|
|
50
|
+
*/
|
|
51
|
+
export declare function assertNoReplacementPm2God(pids: readonly number[]): void;
|
|
52
|
+
/**
|
|
53
|
+
* Retire the sole live PM2 God, or return null when none is alive. Fails
|
|
54
|
+
* closed — without mutating anything — on an invalid scan or multiple visible
|
|
55
|
+
* Gods, and fails closed after `pm2 kill` if the God's disappearance cannot
|
|
56
|
+
* be proven within the timeout.
|
|
57
|
+
*/
|
|
58
|
+
export declare function retireSoleLivePm2God(rt: Pm2GodRetirementRuntime, timeoutMs?: number): Promise<RetiredPm2God | null>;
|
|
59
|
+
//# sourceMappingURL=pm2-god-retirement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-god-retirement.d.ts","sourceRoot":"","sources":["../../src/cli/pm2-god-retirement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,WAAW,IAAI,MAAM,EAAE,CAAC;IACxB,yEAAyE;IACzE,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,iEAAiE;IACjE,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,GAAG,IAAI,MAAM,CAAC;CACf;AAED,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAG3D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,IAAI,CAeN;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAOvE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,uBAAuB,EAC3B,SAAS,GAAE,MAA6C,GACvD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqC/B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `restart --include-pm2` God retirement.
|
|
3
|
+
*
|
|
4
|
+
* A PID-addressed kill(2) cannot bind a signal to a PID+birth generation, so
|
|
5
|
+
* this module never signals the God by PID. The kill is addressed to the
|
|
6
|
+
* PM2_HOME control socket (`pm2 kill`) — i.e. to
|
|
7
|
+
* "whichever God owns this home", which is exactly the object being retired —
|
|
8
|
+
* and the recorded pid+birth identity is used only to VERIFY disappearance
|
|
9
|
+
* afterwards. Callers must run this strictly AFTER the managed core fleet has
|
|
10
|
+
* been retired and verified gone (and plugin services stopped): with an empty
|
|
11
|
+
* fleet the God holds no session state, so retiring it cannot interrupt a
|
|
12
|
+
* Riff prepare/persist/commit handshake.
|
|
13
|
+
*/
|
|
14
|
+
export const PM2_GOD_RETIREMENT_VERIFY_TIMEOUT_MS = 15_000;
|
|
15
|
+
const VERIFY_POLL_INTERVAL_MS = 200;
|
|
16
|
+
/** Registry statuses that prove no process is running for the row. */
|
|
17
|
+
const TERMINAL_PM2_ROW_STATUSES = new Set(['stopped', 'errored']);
|
|
18
|
+
/**
|
|
19
|
+
* `pm2 kill` slaughters every process the God still manages without any
|
|
20
|
+
* graceful handshake, so the God may only be retired once the WHOLE registry
|
|
21
|
+
* is quiescent: every row — core, plugin, or an orphaned row a plugin
|
|
22
|
+
* uninstall left behind — must be in a terminal status with no live pid. A
|
|
23
|
+
* plugin stop that failed (stop errors are collected into reports, not
|
|
24
|
+
* rethrown) or a leftover running `botmux-plugin-*` row therefore blocks the
|
|
25
|
+
* kill here, fail-closed, instead of being silently killed with the God.
|
|
26
|
+
*/
|
|
27
|
+
export function assertPm2RegistryQuiescentForGodRetirement(rows) {
|
|
28
|
+
const live = rows.filter(row => {
|
|
29
|
+
const status = (row.status ?? '').trim();
|
|
30
|
+
const pidLive = typeof row.pid === 'number' && Number.isSafeInteger(row.pid) && row.pid > 0;
|
|
31
|
+
return pidLive || !TERMINAL_PM2_ROW_STATUSES.has(status);
|
|
32
|
+
});
|
|
33
|
+
if (live.length === 0)
|
|
34
|
+
return;
|
|
35
|
+
const detail = live
|
|
36
|
+
.map(row => `${row.name}:${row.status ?? 'unknown'}${row.pid ? `:pid ${row.pid}` : ''}`)
|
|
37
|
+
.join(', ');
|
|
38
|
+
throw new Error(`[restart --include-pm2] refusing pm2 kill: PM2 registry still has live/unproven row(s): ${detail}; `
|
|
39
|
+
+ 'stop or delete them first (e.g. a plugin service that failed to stop, or a leftover '
|
|
40
|
+
+ 'botmux-plugin-* row from an uninstalled plugin); the God and every remaining process were left untouched');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Between God retirement and the fresh `pm2 start`, any pm2 client invocation
|
|
44
|
+
* (even a read-only jlist from another shell) lazily births a God from ITS
|
|
45
|
+
* environment, not from this restart's cleaned one. Accepting it would defeat
|
|
46
|
+
* the whole point of --include-pm2, so the start transaction refuses.
|
|
47
|
+
*/
|
|
48
|
+
export function assertNoReplacementPm2God(pids) {
|
|
49
|
+
if (pids.length === 0)
|
|
50
|
+
return;
|
|
51
|
+
throw new Error(`[restart --include-pm2] a replacement PM2 God (pid ${pids.join(', ')}) appeared between God `
|
|
52
|
+
+ 'retirement and the fleet start; it was not born from this restart\'s cleaned environment — '
|
|
53
|
+
+ 'rerun `botmux restart --include-pm2`');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Retire the sole live PM2 God, or return null when none is alive. Fails
|
|
57
|
+
* closed — without mutating anything — on an invalid scan or multiple visible
|
|
58
|
+
* Gods, and fails closed after `pm2 kill` if the God's disappearance cannot
|
|
59
|
+
* be proven within the timeout.
|
|
60
|
+
*/
|
|
61
|
+
export async function retireSoleLivePm2God(rt, timeoutMs = PM2_GOD_RETIREMENT_VERIFY_TIMEOUT_MS) {
|
|
62
|
+
const scanned = rt.listGodPids();
|
|
63
|
+
const canonical = [...new Set(scanned)]
|
|
64
|
+
.filter(pid => Number.isSafeInteger(pid) && pid > 1)
|
|
65
|
+
.sort((a, b) => a - b);
|
|
66
|
+
if (canonical.length !== scanned.length) {
|
|
67
|
+
throw new Error('[restart --include-pm2] PM2 God scan returned invalid/duplicate PIDs; no process was signalled');
|
|
68
|
+
}
|
|
69
|
+
if (canonical.length === 0)
|
|
70
|
+
return null;
|
|
71
|
+
if (canonical.length > 1) {
|
|
72
|
+
throw new Error(`[restart --include-pm2] multiple PM2 God daemons are visible `
|
|
73
|
+
+ `(pids: ${canonical.join(', ')}); no process was signalled`);
|
|
74
|
+
}
|
|
75
|
+
const pid = canonical[0];
|
|
76
|
+
const startIdentity = rt.readStartIdentity(pid);
|
|
77
|
+
rt.pm2Kill();
|
|
78
|
+
const deadline = rt.now() + timeoutMs;
|
|
79
|
+
for (;;) {
|
|
80
|
+
// Two independent proofs: the marker scan finds no God for this home, and
|
|
81
|
+
// the original pid is gone (or its slot was reused by a different birth).
|
|
82
|
+
const scanEmpty = rt.listGodPids().length === 0;
|
|
83
|
+
const originalGone = !rt.isAlive(pid)
|
|
84
|
+
|| (startIdentity !== undefined && rt.readStartIdentity(pid) !== startIdentity);
|
|
85
|
+
if (scanEmpty && originalGone)
|
|
86
|
+
return { pid, startIdentity };
|
|
87
|
+
if (rt.now() >= deadline) {
|
|
88
|
+
throw new Error(`[restart --include-pm2] PM2 God pid ${pid} is still observable after pm2 kill; `
|
|
89
|
+
+ 'the core fleet is already retired and nothing further was mutated — '
|
|
90
|
+
+ 'inspect the God process, then rerun `botmux restart` (with or without --include-pm2) to bring the fleet back');
|
|
91
|
+
}
|
|
92
|
+
await rt.sleep(VERIFY_POLL_INTERVAL_MS);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=pm2-god-retirement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2-god-retirement.js","sourceRoot":"","sources":["../../src/cli/pm2-god-retirement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,MAAM,CAAC,MAAM,oCAAoC,GAAG,MAAM,CAAC;AAC3D,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAapC,sEAAsE;AACtE,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,UAAU,0CAA0C,CACxD,IAAuC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5F,OAAO,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACvF,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,IAAI,KAAK,CACb,2FAA2F,MAAM,IAAI;UACnG,sFAAsF;UACtF,0GAA0G,CAC7G,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAuB;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB;UAC5F,6FAA6F;UAC7F,sCAAsC,CACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAA2B,EAC3B,YAAoB,oCAAoC;IAExD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;SACpC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+DAA+D;cAC7D,UAAU,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAC9D,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,aAAa,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChD,EAAE,CAAC,OAAO,EAAE,CAAC;IAEb,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC;QACR,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;eAChC,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,CAAC;QAClF,IAAI,SAAS,IAAI,YAAY;YAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG,uCAAuC;kBAC/E,sEAAsE;kBACtE,8GAA8G,CACjH,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { PersistentBackendTarget, SessionProbe } from '../adapters/backend/types.js';
|
|
2
|
+
export interface SessionListWakeRequestContext {
|
|
3
|
+
signal: AbortSignal;
|
|
4
|
+
deadlineMs: number;
|
|
5
|
+
}
|
|
6
|
+
export type SessionListWakeRequest = (context: SessionListWakeRequestContext) => Promise<{
|
|
7
|
+
ok: true;
|
|
8
|
+
} | {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type SessionListWakeResult = {
|
|
13
|
+
ok: true;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
error: string;
|
|
17
|
+
lastProbe?: SessionProbe;
|
|
18
|
+
};
|
|
19
|
+
export declare function canWakeDormantBackendForAttach(input: {
|
|
20
|
+
isAdopt: boolean;
|
|
21
|
+
probe: SessionProbe;
|
|
22
|
+
realManagedSession: boolean;
|
|
23
|
+
attachBackend?: 'tmux' | 'zmx';
|
|
24
|
+
target?: PersistentBackendTarget;
|
|
25
|
+
}): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Ask the owning daemon to materialize a dormant session, then wait until its
|
|
28
|
+
* exact persistent backend target is attachable. The daemon request is the
|
|
29
|
+
* concurrency fence; this helper only observes the backing target afterwards.
|
|
30
|
+
*/
|
|
31
|
+
export declare function wakeDormantBackendForAttach(options: {
|
|
32
|
+
target: PersistentBackendTarget;
|
|
33
|
+
wake: SessionListWakeRequest;
|
|
34
|
+
probe: (target: PersistentBackendTarget) => SessionProbe;
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
pollIntervalMs?: number;
|
|
37
|
+
sleep?: (ms: number) => Promise<void>;
|
|
38
|
+
signal?: AbortSignal;
|
|
39
|
+
now?: () => number;
|
|
40
|
+
}): Promise<SessionListWakeResult>;
|
|
41
|
+
//# sourceMappingURL=session-list-wake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-list-wake.d.ts","sourceRoot":"","sources":["../../src/cli/session-list-wake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG1F,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,6BAA6B,KAAK,OAAO,CACpF;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC,GAAG,OAAO,CAMV;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,YAAY,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4EjC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { SESSION_WAKE_TIMEOUT_MS } from '../core/session-wake-deadline.js';
|
|
2
|
+
export function canWakeDormantBackendForAttach(input) {
|
|
3
|
+
return !input.isAdopt
|
|
4
|
+
&& input.probe === 'missing'
|
|
5
|
+
&& input.realManagedSession
|
|
6
|
+
&& !!input.attachBackend
|
|
7
|
+
&& !!input.target;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Ask the owning daemon to materialize a dormant session, then wait until its
|
|
11
|
+
* exact persistent backend target is attachable. The daemon request is the
|
|
12
|
+
* concurrency fence; this helper only observes the backing target afterwards.
|
|
13
|
+
*/
|
|
14
|
+
export async function wakeDormantBackendForAttach(options) {
|
|
15
|
+
const now = options.now ?? Date.now;
|
|
16
|
+
const timeoutMs = Math.max(0, options.timeoutMs ?? SESSION_WAKE_TIMEOUT_MS);
|
|
17
|
+
const deadlineMs = now() + timeoutMs;
|
|
18
|
+
const pollIntervalMs = Math.max(1, options.pollIntervalMs ?? 100);
|
|
19
|
+
const sleep = options.sleep ?? ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
let deadlineExpired = false;
|
|
22
|
+
let lastProbe;
|
|
23
|
+
const aborted = Symbol('aborted');
|
|
24
|
+
const onCallerAbort = () => controller.abort(options.signal?.reason);
|
|
25
|
+
if (options.signal?.aborted)
|
|
26
|
+
onCallerAbort();
|
|
27
|
+
else
|
|
28
|
+
options.signal?.addEventListener('abort', onCallerAbort, { once: true });
|
|
29
|
+
const deadlineTimer = setTimeout(() => {
|
|
30
|
+
deadlineExpired = true;
|
|
31
|
+
controller.abort(new Error('session wake deadline exceeded'));
|
|
32
|
+
}, Math.max(0, deadlineMs - now()));
|
|
33
|
+
deadlineTimer.unref?.();
|
|
34
|
+
const abortPromise = new Promise(resolve => {
|
|
35
|
+
if (controller.signal.aborted)
|
|
36
|
+
resolve(aborted);
|
|
37
|
+
else
|
|
38
|
+
controller.signal.addEventListener('abort', () => resolve(aborted), { once: true });
|
|
39
|
+
});
|
|
40
|
+
const interrupted = () => ({
|
|
41
|
+
ok: false,
|
|
42
|
+
error: deadlineExpired || now() >= deadlineMs ? '恢复超时' : '恢复已取消',
|
|
43
|
+
...(lastProbe ? { lastProbe } : {}),
|
|
44
|
+
});
|
|
45
|
+
const probeTimeout = () => ({
|
|
46
|
+
ok: false,
|
|
47
|
+
error: lastProbe === 'unknown'
|
|
48
|
+
? '后端已唤醒,但持久后端状态无法确认'
|
|
49
|
+
: '后端已唤醒,但等待持久会话启动超时',
|
|
50
|
+
...(lastProbe ? { lastProbe } : {}),
|
|
51
|
+
});
|
|
52
|
+
try {
|
|
53
|
+
if (controller.signal.aborted)
|
|
54
|
+
return interrupted();
|
|
55
|
+
if (now() >= deadlineMs) {
|
|
56
|
+
deadlineExpired = true;
|
|
57
|
+
controller.abort(new Error('session wake deadline exceeded'));
|
|
58
|
+
return interrupted();
|
|
59
|
+
}
|
|
60
|
+
const wake = await Promise.race([
|
|
61
|
+
options.wake({ signal: controller.signal, deadlineMs }),
|
|
62
|
+
abortPromise,
|
|
63
|
+
]);
|
|
64
|
+
if (wake === aborted)
|
|
65
|
+
return interrupted();
|
|
66
|
+
if (now() >= deadlineMs) {
|
|
67
|
+
deadlineExpired = true;
|
|
68
|
+
controller.abort(new Error('session wake deadline exceeded'));
|
|
69
|
+
return interrupted();
|
|
70
|
+
}
|
|
71
|
+
if (!wake.ok)
|
|
72
|
+
return wake;
|
|
73
|
+
for (;;) {
|
|
74
|
+
if (controller.signal.aborted)
|
|
75
|
+
return interrupted();
|
|
76
|
+
if (now() >= deadlineMs)
|
|
77
|
+
return probeTimeout();
|
|
78
|
+
lastProbe = options.probe(options.target);
|
|
79
|
+
if (lastProbe === 'exists')
|
|
80
|
+
return { ok: true };
|
|
81
|
+
const remainingMs = deadlineMs - now();
|
|
82
|
+
if (remainingMs <= 0)
|
|
83
|
+
return probeTimeout();
|
|
84
|
+
const wait = await Promise.race([
|
|
85
|
+
sleep(Math.min(pollIntervalMs, remainingMs)).then(() => 'slept'),
|
|
86
|
+
abortPromise,
|
|
87
|
+
]);
|
|
88
|
+
if (wait === aborted)
|
|
89
|
+
return interrupted();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
if (controller.signal.aborted)
|
|
94
|
+
return interrupted();
|
|
95
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
clearTimeout(deadlineTimer);
|
|
99
|
+
options.signal?.removeEventListener('abort', onCallerAbort);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=session-list-wake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-list-wake.js","sourceRoot":"","sources":["../../src/cli/session-list-wake.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/cli/workflow.ts"],"names":[],"mappings":"AAAA,iEAAiE;
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/cli/workflow.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAmCjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC5E;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5E"}
|
package/dist/cli/workflow.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
/** Workflow command dispatch after the v2 runtime retirement. */
|
|
2
|
+
import { isWorkflowFeatureEnabled } from '../global-config.js';
|
|
3
|
+
const WORKFLOW_DISABLED_CLI_MESSAGE = '⛔ 本机已关闭「工作流(Workflow)」功能:即兴 grill、architect 编排与 Saved Workflow 的运行/保存均不可用。' +
|
|
4
|
+
'如需开启,请在 Dashboard 设置页打开「工作流功能」开关,或设置环境变量 BOTMUX_WORKFLOW_ENABLED=true。' +
|
|
5
|
+
'(进行中的 run 仍可用 `botmux workflow cancel/retry/grant` 管理。)';
|
|
2
6
|
const LEGACY_TEMPLATE_RETIRED = 'v2 workflow runtime 已下线;请先用 `botmux template migrate-v3` 迁移定义,' +
|
|
3
7
|
'再用 `botmux workflow run <名称|workflowId>` 执行 Saved Workflow。';
|
|
4
8
|
const V3_HOST_SUBCOMMANDS = new Set([
|
|
@@ -22,6 +26,17 @@ const RETIRED_TEMPLATE_SUBCOMMANDS = new Set([
|
|
|
22
26
|
'show',
|
|
23
27
|
]);
|
|
24
28
|
export async function cmdWorkflow(sub, rest) {
|
|
29
|
+
// Machine-wide workflow kill-switch. Authoring (host verbs) and launching
|
|
30
|
+
// (saved `run` / `save`) are refused when the feature is off; read-only
|
|
31
|
+
// `list`/`show` and `help` stay available so an operator can still inspect
|
|
32
|
+
// existing definitions. In-flight run management (`cancel`/`retry`/`grant`)
|
|
33
|
+
// is handled by cli.ts before reaching here and is intentionally NOT gated.
|
|
34
|
+
const workflowEnabled = isWorkflowFeatureEnabled();
|
|
35
|
+
const isAuthoringOrLaunch = V3_HOST_SUBCOMMANDS.has(sub) || sub === 'run' || sub === 'save';
|
|
36
|
+
if (!workflowEnabled && isAuthoringOrLaunch) {
|
|
37
|
+
console.error(WORKFLOW_DISABLED_CLI_MESSAGE);
|
|
38
|
+
process.exit(2);
|
|
39
|
+
}
|
|
25
40
|
if (V3_HOST_SUBCOMMANDS.has(sub)) {
|
|
26
41
|
const { cmdWorkflowHost } = await import('../workflows/v3/host.js');
|
|
27
42
|
await cmdWorkflowHost(sub, rest);
|
|
@@ -76,6 +91,17 @@ function failRetired(command) {
|
|
|
76
91
|
process.exit(1);
|
|
77
92
|
}
|
|
78
93
|
function printWorkflowHelp() {
|
|
94
|
+
// Surface the machine-wide kill-switch in the CLI help too, so `botmux
|
|
95
|
+
// workflow help` on a disabled host doesn't advertise commands that refuse
|
|
96
|
+
// (mirrors the IM `/help` omission). In-flight management stays listed since
|
|
97
|
+
// cancel/retry/grant remain available.
|
|
98
|
+
if (!isWorkflowFeatureEnabled()) {
|
|
99
|
+
console.log(`⛔ 本机已关闭「工作流(Workflow)」功能:即兴编排与 Saved Workflow 的运行/保存不可用(如需开启,见 Dashboard 设置页「工作流功能」或设置 BOTMUX_WORKFLOW_ENABLED=true)。
|
|
100
|
+
进行中的 run 仍可管理: botmux workflow <cancel|retry|grant> [...]
|
|
101
|
+
v2 资产离线处理: botmux template <migrate-v3|archive-runs>
|
|
102
|
+
`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
79
105
|
console.log(`用法: botmux workflow <目标控制|save|run|list|show|start|cancel|retry|grant> [...]
|
|
80
106
|
|
|
81
107
|
Saved Workflow:
|
package/dist/cli/workflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/cli/workflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/cli/workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAy0HA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA6mQtE;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC;AAC1F;qDACqD;AACrD,wBAAwB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GAClH,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuL7B"}
|