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,575 @@
|
|
|
1
|
+
import type { TurnQuiescence } from '../adapters/backend/mojo-process-tree.js';
|
|
2
|
+
export interface StrongContainmentHandle {
|
|
3
|
+
kind: 'cgroup';
|
|
4
|
+
sessionId: string;
|
|
5
|
+
/** Worker generation that acquired it; kept for operator-facing logs only. */
|
|
6
|
+
generation: number;
|
|
7
|
+
/** Absolute cgroup v2 directory owning the turn subtree. */
|
|
8
|
+
cgroupPath: string;
|
|
9
|
+
/** Env nonce injected into the tree, so a degraded scan can still corroborate. */
|
|
10
|
+
nonce: string;
|
|
11
|
+
/**
|
|
12
|
+
* Boot id at mint time. A reboot provably kills the whole tree — including the
|
|
13
|
+
* same-UID sibling/parent migrant that cgroup emptiness cannot see — so a
|
|
14
|
+
* changed boot id is the ONE thing that lets a cgroup handle release (it is
|
|
15
|
+
* the same unforgeable fact a weak handle uses). Optional so a handle written
|
|
16
|
+
* by an older daemon (no bootId) still parses; such a legacy handle simply
|
|
17
|
+
* never gets the reboot proof and waits for an operator revoke.
|
|
18
|
+
*/
|
|
19
|
+
bootId?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface WeakContainmentHandle {
|
|
22
|
+
kind: 'tree-identity';
|
|
23
|
+
sessionId: string;
|
|
24
|
+
generation: number;
|
|
25
|
+
rootPid: number;
|
|
26
|
+
/** Boot identity, so a pid from a previous boot is never re-signalled. */
|
|
27
|
+
bootId: string;
|
|
28
|
+
/** `/proc/<pid>/stat` field 22, which makes pid reuse detectable. */
|
|
29
|
+
startTime: number;
|
|
30
|
+
nonce: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A tree we can neither contain nor describe.
|
|
34
|
+
*
|
|
35
|
+
* Reached when the host offers NO usable mechanism: no cgroup v2 delegation, and
|
|
36
|
+
* no readable boot id / starttime (a non-Linux host, or a locked-down /proc). The
|
|
37
|
+
* turn still spawned a credentialed child, so the honest record is not "nothing to
|
|
38
|
+
* track" — it is "something exists here that this host can never prove gone".
|
|
39
|
+
*
|
|
40
|
+
* Why this exists rather than returning null
|
|
41
|
+
* -----------------------------------------
|
|
42
|
+
* `acquireContainmentHandle` used to return null in this case, which meant the
|
|
43
|
+
* caller recorded NOTHING and `hasUnprovenContainment()` answered false — so the
|
|
44
|
+
* device-isolation blocker was not retained on exactly the platform that cannot
|
|
45
|
+
* prove anything. That inverted the intended fail-closed direction, and it did so
|
|
46
|
+
* silently, because "no handle" is indistinguishable from "no turn ever ran".
|
|
47
|
+
*
|
|
48
|
+
* An unprovable handle is deliberately a DEAD END: `proveContainmentQuiescent`
|
|
49
|
+
* can never return `proven: true` for it, so the type-level guard on
|
|
50
|
+
* `releaseContainmentHandle` makes it impossible to release. The session's blocker
|
|
51
|
+
* therefore stays for the lifetime of the record, which is the correct answer when
|
|
52
|
+
* a credentialed subtree existed and the host cannot ever demonstrate its death.
|
|
53
|
+
*
|
|
54
|
+
* The platform is recorded so an operator can tell "macOS, no cgroups" apart from
|
|
55
|
+
* "Linux with /proc unreadable" without re-deriving it.
|
|
56
|
+
*/
|
|
57
|
+
export interface UnprovableContainmentHandle {
|
|
58
|
+
kind: 'unprovable';
|
|
59
|
+
sessionId: string;
|
|
60
|
+
generation: number;
|
|
61
|
+
nonce: string;
|
|
62
|
+
/** `process.platform` at acquisition time. */
|
|
63
|
+
platform: string;
|
|
64
|
+
/** Why nothing stronger could be minted, for operator-facing logs. */
|
|
65
|
+
reason: string;
|
|
66
|
+
}
|
|
67
|
+
export type ContainmentHandle = StrongContainmentHandle | WeakContainmentHandle | UnprovableContainmentHandle;
|
|
68
|
+
/**
|
|
69
|
+
* Result of asking "is everything this handle owns gone?".
|
|
70
|
+
*
|
|
71
|
+
* `proven: false` deliberately carries no "probably fine" variant: every
|
|
72
|
+
* non-proof (alive, unreadable, unsupported, timed out) is the same verdict to a
|
|
73
|
+
* caller, because all of them must keep the blocker.
|
|
74
|
+
*/
|
|
75
|
+
export type QuiescenceVerdict = {
|
|
76
|
+
proven: true;
|
|
77
|
+
handle: ContainmentHandle;
|
|
78
|
+
reason?: string;
|
|
79
|
+
evidence?: QuiescenceEvidence;
|
|
80
|
+
} | {
|
|
81
|
+
proven: false;
|
|
82
|
+
handle: ContainmentHandle;
|
|
83
|
+
reason: string;
|
|
84
|
+
residualPids?: number[];
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* WHICH fact settled a `proven: true` verdict. The distinction is the entire
|
|
88
|
+
* safety argument of this module, so it is carried in the data instead of being
|
|
89
|
+
* re-derived by every caller:
|
|
90
|
+
*
|
|
91
|
+
* - `boot-id-changed`: the recorded tree cannot have survived the reboot that
|
|
92
|
+
* changed the kernel boot id, and a same-user child cannot fake a boot id ->
|
|
93
|
+
* THE boundary proof (the only one). Applies to a weak handle and, once its
|
|
94
|
+
* bootId is stamped, to a cgroup handle too.
|
|
95
|
+
* - `cgroup-empty` / `cgroup-zombie-only`: kernel membership shows the leaf
|
|
96
|
+
* subtree empty. DIAGNOSTIC ONLY, NOT a boundary proof: mojo runs at the
|
|
97
|
+
* daemon's UID and cgroup v2 lets a same-UID process migrate ITSELF out of
|
|
98
|
+
* the leaf (to the parent slice or a sibling), invisible to the leaf-down
|
|
99
|
+
* read. Good for stopping signals + killing (cgroup.kill), never for dropping
|
|
100
|
+
* device isolation.
|
|
101
|
+
* - `scan-clean`: a /proc subtree scan came back empty. DIAGNOSTIC ONLY: a
|
|
102
|
+
* descendant that calls setsid(), scrubs its own environ and reparents to
|
|
103
|
+
* init evades enumeration entirely, so this can never authorise dropping
|
|
104
|
+
* device isolation.
|
|
105
|
+
*
|
|
106
|
+
* An absent field is read as "the strongest thing this handle KIND could prove",
|
|
107
|
+
* for compatibility with hand-built verdicts; it can never be read as stronger
|
|
108
|
+
* than the handle kind allows.
|
|
109
|
+
*/
|
|
110
|
+
export type QuiescenceEvidence = 'cgroup-empty' | 'cgroup-zombie-only' | 'boot-id-changed' | 'scan-clean';
|
|
111
|
+
/** What stays isolated after a close that could not prove its boundary. */
|
|
112
|
+
export interface ContainmentResidual {
|
|
113
|
+
/** True keeps the device-isolation blocker even though the session may close. */
|
|
114
|
+
deviceIsolation: boolean;
|
|
115
|
+
/** Pids the evidence named, when it named any. */
|
|
116
|
+
pids?: number[];
|
|
117
|
+
/** Operator-facing explanation of what is still unproven. */
|
|
118
|
+
reason?: string;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* The single authority on "may this handle be forgotten, and may the blocker go?".
|
|
122
|
+
*
|
|
123
|
+
* `boundaryProof` is the only field that answer may consult, and unlike the
|
|
124
|
+
* previous revision that statement now has a real production consumer:
|
|
125
|
+
* `releaseContainmentHandle` branches on `releaseAuthorised` below, so a clean
|
|
126
|
+
* weak scan cannot reach the removal path at all.
|
|
127
|
+
*/
|
|
128
|
+
export interface ContainmentReleaseDecision {
|
|
129
|
+
/** Unforgeable boundary evidence. The gate. */
|
|
130
|
+
boundaryProof: boolean;
|
|
131
|
+
/** `verdict.proven && boundaryProof` - the only state that removes a handle. */
|
|
132
|
+
releaseAuthorised: boolean;
|
|
133
|
+
/** Which fact was available, or `not-proven` when quiescence itself failed. */
|
|
134
|
+
evidence: QuiescenceEvidence | 'not-proven';
|
|
135
|
+
/** Non-null whenever the handle stays behind; null only on a real release. */
|
|
136
|
+
residual: ContainmentResidual | null;
|
|
137
|
+
/** May the caller stop re-signalling? True once quiescence itself is proven. */
|
|
138
|
+
signalsStopped: boolean;
|
|
139
|
+
}
|
|
140
|
+
/** Thrown instead of degrading to an empty (fail-open) handle store. */
|
|
141
|
+
export declare class MojoContainmentUnavailableError extends Error {
|
|
142
|
+
readonly cause?: unknown | undefined;
|
|
143
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Boot identity of the running kernel.
|
|
147
|
+
*
|
|
148
|
+
* Returns null when it cannot be read (non-Linux, or a locked-down /proc).
|
|
149
|
+
* Callers must treat null as "cannot mint a trustworthy weak handle", NOT as a
|
|
150
|
+
* blank value to store: a handle whose bootId is empty would compare equal
|
|
151
|
+
* across reboots and across hosts, resurrecting exactly the pid-reuse confusion
|
|
152
|
+
* the field exists to prevent.
|
|
153
|
+
*/
|
|
154
|
+
export declare function readBootId(opts?: {
|
|
155
|
+
procRoot?: string;
|
|
156
|
+
}): string | null;
|
|
157
|
+
/**
|
|
158
|
+
* `/proc/<pid>/stat` field 22 (starttime, in clock ticks since boot).
|
|
159
|
+
*
|
|
160
|
+
* null means the pid is not currently live (or is unreadable), which is why the
|
|
161
|
+
* caller may never read null as "the tree is gone": the ROOT exiting says
|
|
162
|
+
* nothing about a descendant that called setsid().
|
|
163
|
+
*
|
|
164
|
+
* Field indexing has the same comm hazard as the scanner: field 2 is
|
|
165
|
+
* parenthesised and may contain spaces or ')', so the split starts after the LAST
|
|
166
|
+
* ')'. From there, index 0 is state (field 3), hence starttime (field 22) sits at
|
|
167
|
+
* index 19.
|
|
168
|
+
*/
|
|
169
|
+
export declare function readProcStartTime(pid: number, opts?: {
|
|
170
|
+
procRoot?: string;
|
|
171
|
+
}): number | null;
|
|
172
|
+
/**
|
|
173
|
+
* Is a usable cgroup v2 hierarchy mounted?
|
|
174
|
+
*
|
|
175
|
+
* `cgroup.controllers` exists only on the v2 unified hierarchy, so its presence
|
|
176
|
+
* is the cheap discriminator against a v1-only host (where per-session
|
|
177
|
+
* containment via this module is not available).
|
|
178
|
+
*/
|
|
179
|
+
export declare function cgroupV2Available(opts?: {
|
|
180
|
+
cgroupRoot?: string;
|
|
181
|
+
}): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Process state from `/proc/<pid>/stat` field 3, for zombie classification.
|
|
184
|
+
*
|
|
185
|
+
* 'zombie' — state Z: the process has exited and is only waiting to be
|
|
186
|
+
* reaped. It executes no instructions and cannot use a
|
|
187
|
+
* credential, but it REMAINS a member of its cgroup until the
|
|
188
|
+
* parent reaps it (and `rmdir` keeps failing while it does).
|
|
189
|
+
* 'running' — any other state. Treated as executing.
|
|
190
|
+
* 'gone' — ENOENT: the pid vanished between listing and reading, i.e.
|
|
191
|
+
* genuinely not a member any more (same race rule the scanner
|
|
192
|
+
* applies).
|
|
193
|
+
* 'unreadable' — anything else. Deliberately NOT merged into 'zombie': a state
|
|
194
|
+
* we cannot read must count as executing, or an EACCES becomes
|
|
195
|
+
* a free pass.
|
|
196
|
+
*
|
|
197
|
+
* DUPLICATED RULE — read before changing any of the three cases
|
|
198
|
+
* ------------------------------------------------------------
|
|
199
|
+
* The same zombie rule has to hold in TWO places that deliberately do not share
|
|
200
|
+
* code: here, for cgroup members read out of `cgroup.procs`, and in the /proc
|
|
201
|
+
* subtree scanner (mojo-process-tree), for members found by enumeration. They stay
|
|
202
|
+
* separate because they start from different inputs, but they must agree, and
|
|
203
|
+
* nothing enforces that agreement automatically.
|
|
204
|
+
*
|
|
205
|
+
* Why the agreement matters more than the rule itself: if one side discounts a
|
|
206
|
+
* zombie and the other does not, the SAME tree gets two verdicts. That is not a
|
|
207
|
+
* cosmetic inconsistency — ProcTree hit it for real while wiring 7-A. A SIGKILLed
|
|
208
|
+
* child sat in state Z awaiting reap; the in-memory ladder discounted it and
|
|
209
|
+
* reported clean, while the pid list handed to `proveContainmentQuiescent` still
|
|
210
|
+
* carried it, so this module judged the tree alive. The close was then refused
|
|
211
|
+
* forever and the handle could never be discharged: a permanent wedge produced
|
|
212
|
+
* purely by two definitions of "running".
|
|
213
|
+
*
|
|
214
|
+
* So: change one side and you MUST change the other. The rule is exactly
|
|
215
|
+
* - state 'Z' -> discounted (a zombie executes nothing, holds no credential)
|
|
216
|
+
* - ENOENT -> gone, skipped (raced away; not a member)
|
|
217
|
+
* - anything else -> EXECUTING, including any state we cannot read
|
|
218
|
+
* The last case is the one that must never be relaxed on either side: turning an
|
|
219
|
+
* unreadable state into "harmless" is a fail-open, and it is reachable by the very
|
|
220
|
+
* process being policed.
|
|
221
|
+
*/
|
|
222
|
+
export type ProcLiveness = 'zombie' | 'running' | 'gone' | 'unreadable';
|
|
223
|
+
export declare function readProcLiveness(pid: number, opts?: {
|
|
224
|
+
procRoot?: string;
|
|
225
|
+
}): ProcLiveness;
|
|
226
|
+
export interface AcquireContainmentInput {
|
|
227
|
+
sessionId: string;
|
|
228
|
+
generation: number;
|
|
229
|
+
/** Root pid of the turn (the direct child this backend spawned). */
|
|
230
|
+
rootPid: number;
|
|
231
|
+
/** The env nonce already injected into that tree. */
|
|
232
|
+
nonce: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* A cgroup boundary created BEFORE the turn child is spawned.
|
|
236
|
+
*
|
|
237
|
+
* The strong handle used to be minted post-spawn by migrating the root pid into
|
|
238
|
+
* a fresh cgroup. That left a spawn→enrolment window: cgroup v2 migration does
|
|
239
|
+
* not retroactively move a process's already-forked descendants
|
|
240
|
+
* (admin-guide/cgroup-v2: "Migration of a process doesn't affect already
|
|
241
|
+
* existing descendant processes"), so a descendant forked (and setsid'd) inside
|
|
242
|
+
* the window was outside the cgroup while `cgroup.procs` — the whole strong
|
|
243
|
+
* proof — read empty after the root exited. The proof went false-green and the
|
|
244
|
+
* device-isolation blocker was cleared with a credentialed escapee still alive.
|
|
245
|
+
*
|
|
246
|
+
* The boundary is therefore prepared first, and the child enrols ITSELF into it
|
|
247
|
+
* before exec'ing the target binary (see MOJO_CGROUP_ENROLL_SHIM in
|
|
248
|
+
* mojo-backend). Between fork and enrolment the process runs only our trusted
|
|
249
|
+
* shim, which forks nothing, so every descendant of the target binary is born
|
|
250
|
+
* inside the cgroup — that is the precondition the strong proof relies on.
|
|
251
|
+
*/
|
|
252
|
+
export interface PreparedContainmentBoundary {
|
|
253
|
+
sessionId: string;
|
|
254
|
+
generation: number;
|
|
255
|
+
cgroupPath: string;
|
|
256
|
+
nonce: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Create the cgroup directory for a turn about to be spawned.
|
|
260
|
+
*
|
|
261
|
+
* Returns null when the host cannot support a strong boundary (no cgroup v2, or
|
|
262
|
+
* the slice is not writable) — the caller falls back to the weak post-spawn
|
|
263
|
+
* handle, which never claims boundary proof.
|
|
264
|
+
*/
|
|
265
|
+
export declare function prepareContainmentBoundary(input: {
|
|
266
|
+
sessionId: string;
|
|
267
|
+
generation: number;
|
|
268
|
+
nonce: string;
|
|
269
|
+
}, opts?: {
|
|
270
|
+
cgroupRoot?: string;
|
|
271
|
+
procRoot?: string;
|
|
272
|
+
}): PreparedContainmentBoundary | null;
|
|
273
|
+
/** Mint the strong handle for a boundary the child has enrolled itself into. */
|
|
274
|
+
export declare function strongHandleFromPreparedBoundary(prepared: PreparedContainmentBoundary, opts?: {
|
|
275
|
+
procRoot?: string;
|
|
276
|
+
}): ContainmentHandle;
|
|
277
|
+
/**
|
|
278
|
+
* Kill every process currently enrolled in a prepared boundary (cgroup.kill),
|
|
279
|
+
* then remove the directory if that emptied it.
|
|
280
|
+
*
|
|
281
|
+
* For the caller who spawned a child through the enrolment shim and then FAILED
|
|
282
|
+
* to record the handle durably: the subtree must not be left running behind a
|
|
283
|
+
* blocker nobody recorded. Returns true only when the boundary is provably
|
|
284
|
+
* empty (or already gone) afterwards — false means the caller must keep its
|
|
285
|
+
* own fence up.
|
|
286
|
+
*/
|
|
287
|
+
export declare function killPreparedBoundary(prepared: PreparedContainmentBoundary): Promise<boolean>;
|
|
288
|
+
/**
|
|
289
|
+
* Mint the strongest POST-SPAWN handle this host can describe a turn with.
|
|
290
|
+
*
|
|
291
|
+
* Deliberately NEVER a cgroup handle: migrating an already-running root into a
|
|
292
|
+
* cgroup does not capture descendants it forked before the write, so a strong
|
|
293
|
+
* handle minted here would claim a boundary that provably has a hole (the P0
|
|
294
|
+
* this module was rewritten for). Strong handles exist only via
|
|
295
|
+
* prepareContainmentBoundary + the pre-exec enrolment shim. This function is
|
|
296
|
+
* the fallback for hosts (or spawn paths) where that was not possible, and the
|
|
297
|
+
* handles it mints never carry boundary proof.
|
|
298
|
+
*/
|
|
299
|
+
export declare function acquireContainmentHandle(input: AcquireContainmentInput, opts?: {
|
|
300
|
+
cgroupRoot?: string;
|
|
301
|
+
procRoot?: string;
|
|
302
|
+
platform?: string;
|
|
303
|
+
}): ContainmentHandle;
|
|
304
|
+
/**
|
|
305
|
+
* Outcome of a degraded, /proc-based enumeration, supplied by the caller.
|
|
306
|
+
*
|
|
307
|
+
* Deliberately a callback rather than a direct import of `scanMojoTree`: the
|
|
308
|
+
* scanner is owned by mojo-process-tree.ts and this module must stay a leaf that
|
|
309
|
+
* a unit test can drive with a synthetic world. `scanned: false` is the scanner's
|
|
310
|
+
* fail-closed signal and MUST NOT be collapsed into an empty pid list by the
|
|
311
|
+
* caller.
|
|
312
|
+
*/
|
|
313
|
+
export interface TreeScanEvidence {
|
|
314
|
+
scanned: boolean;
|
|
315
|
+
pids: readonly number[];
|
|
316
|
+
reason?: string;
|
|
317
|
+
}
|
|
318
|
+
export interface ProveContainmentOpts {
|
|
319
|
+
procRoot?: string;
|
|
320
|
+
/** Required to prove a WEAK handle; ignored for a strong one. */
|
|
321
|
+
scan?: (handle: WeakContainmentHandle) => TreeScanEvidence;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Can we prove that nothing this handle owns is still executing?
|
|
325
|
+
*
|
|
326
|
+
* STRONG handle: `cgroup.procs` is authoritative. An absent directory also counts
|
|
327
|
+
* as proof, because the kernel refuses `rmdir` on a non-empty cgroup and this
|
|
328
|
+
* module only removes one after a proven verdict — so "gone" can only mean
|
|
329
|
+
* "was empty when it went". Any OTHER read error is a non-proof.
|
|
330
|
+
*
|
|
331
|
+
* WEAK handle:
|
|
332
|
+
* - a bootId mismatch is genuine, cheap proof: the recorded tree cannot have
|
|
333
|
+
* survived the reboot that changed the id;
|
|
334
|
+
* - otherwise the only available evidence is a /proc scan, which the caller
|
|
335
|
+
* must supply. No scan, or a failed scan, or any surviving pid → not proven.
|
|
336
|
+
* - the root pid being gone is explicitly NOT accepted on its own: a descendant
|
|
337
|
+
* that called setsid() outlives its parent, which is the whole reason the
|
|
338
|
+
* scanner unions three signals.
|
|
339
|
+
*
|
|
340
|
+
* A clean weak verdict is the best this host can do, not an unforgeable
|
|
341
|
+
* boundary — see the trust-domain note in mojo-process-tree. Callers that need
|
|
342
|
+
* certainty need a strong handle.
|
|
343
|
+
*/
|
|
344
|
+
export declare function proveContainmentQuiescent(handle: ContainmentHandle, opts?: ProveContainmentOpts): QuiescenceVerdict;
|
|
345
|
+
/**
|
|
346
|
+
* Is the recorded root pid still the ORIGINAL process?
|
|
347
|
+
*
|
|
348
|
+
* Used before signalling: a weak handle names a pid, and pids are reused. Sending
|
|
349
|
+
* SIGKILL to a recycled pid would kill an unrelated process, so a caller must
|
|
350
|
+
* confirm identity first. False therefore means "do not signal this pid", NOT
|
|
351
|
+
* "the tree is gone".
|
|
352
|
+
*/
|
|
353
|
+
export declare function weakHandleRootStillOriginal(handle: WeakContainmentHandle, opts?: {
|
|
354
|
+
procRoot?: string;
|
|
355
|
+
}): boolean;
|
|
356
|
+
/** Stable identity of a handle, so union/removal cannot double-count or mis-hit. */
|
|
357
|
+
export declare function containmentHandleKey(handle: ContainmentHandle): string;
|
|
358
|
+
/**
|
|
359
|
+
* Record a handle as OWNED AND UNPROVEN.
|
|
360
|
+
*
|
|
361
|
+
* Call this at spawn time, before the child can do anything: a crash between
|
|
362
|
+
* spawn and record is exactly the window that used to lose the tree entirely.
|
|
363
|
+
* Monotonic union by handle identity, so re-recording is idempotent and a later
|
|
364
|
+
* call can never retract an earlier one.
|
|
365
|
+
*
|
|
366
|
+
* THROWS on any read/write failure — the caller must not proceed believing the
|
|
367
|
+
* tree was recorded.
|
|
368
|
+
*/
|
|
369
|
+
export declare function recordContainmentHandle(handle: ContainmentHandle, dataDir?: string): void;
|
|
370
|
+
/**
|
|
371
|
+
* Handles this session still owns. Empty ONLY when nothing is outstanding.
|
|
372
|
+
*
|
|
373
|
+
* THROWS when the store cannot be read, so isolation callers fail closed instead
|
|
374
|
+
* of reading an error as "clean".
|
|
375
|
+
*/
|
|
376
|
+
export declare function containmentHandles(sessionId: string, dataDir?: string): ContainmentHandle[];
|
|
377
|
+
/**
|
|
378
|
+
* Session ids with an outstanding handle, INCLUDING sessions whose row is gone.
|
|
379
|
+
*
|
|
380
|
+
* The residual path needs this: an explicit `/close` deletes the row, so without
|
|
381
|
+
* it the inventory would lose every trace of an unproven credentialed subtree.
|
|
382
|
+
*/
|
|
383
|
+
export declare function containmentSessionIds(dataDir?: string): string[];
|
|
384
|
+
/**
|
|
385
|
+
* Does this session still have a tree we cannot prove is gone?
|
|
386
|
+
*
|
|
387
|
+
* This is the predicate the device-isolation blocker hangs off. It THROWS on an
|
|
388
|
+
* unreadable store rather than answering false.
|
|
389
|
+
*/
|
|
390
|
+
export declare function hasUnprovenContainment(sessionId: string, dataDir?: string): boolean;
|
|
391
|
+
/**
|
|
392
|
+
* Release every durable handle a REBOOT has provably killed, and report what
|
|
393
|
+
* stayed. Run once per daemon boot, BEFORE the device-isolation activation
|
|
394
|
+
* inventory is built.
|
|
395
|
+
*
|
|
396
|
+
* Why this exists (round-11 P1-1): `proveContainmentQuiescent` gained a
|
|
397
|
+
* boot-id-changed branch for cgroup handles, but its only production callers are
|
|
398
|
+
* live-worker teardown and workerless close — NEITHER runs for a session that is
|
|
399
|
+
* already `closed_with_residual` and exists only as a durable handle. So after a
|
|
400
|
+
* host reboot (which truly kills the whole tree, migrant included) that handle
|
|
401
|
+
* lingered forever and device isolation kept synthesising an `activation_blocked`
|
|
402
|
+
* from it — the new bootId proof had no consumer. This is that consumer: it
|
|
403
|
+
* enumerates the store and RELEASES only handles whose verdict is
|
|
404
|
+
* `boot-id-changed`. A same-boot handle, a legacy handle with no bootId, an
|
|
405
|
+
* unprovable handle, or a still-live cgroup are all RETAINED.
|
|
406
|
+
*
|
|
407
|
+
* Fail-CLOSED throughout: an unreadable store, an unreadable /proc, or a handle
|
|
408
|
+
* whose proof throws leaves that handle in place. Releasing on a "cannot tell"
|
|
409
|
+
* is exactly the unblock this whole module refuses.
|
|
410
|
+
*/
|
|
411
|
+
export declare function reconcileContainmentHandlesOnBoot(opts?: {
|
|
412
|
+
procRoot?: string;
|
|
413
|
+
dataDir?: string;
|
|
414
|
+
}): {
|
|
415
|
+
released: number;
|
|
416
|
+
retained: number;
|
|
417
|
+
storeUnreadable: boolean;
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* Is this verdict strong enough to FORGET the tree, and how much stays behind?
|
|
421
|
+
*
|
|
422
|
+
* This is the production gate on `boundaryProof`. It exists because a
|
|
423
|
+
* `proven: true` verdict is NOT one thing: on a cgroup host it is kernel state,
|
|
424
|
+
* on a plain Linux host it can be nothing more than "the scan saw nobody", and
|
|
425
|
+
* those two must not share a code path.
|
|
426
|
+
*
|
|
427
|
+
* Truth table, all of it pinned by unit tests:
|
|
428
|
+
*
|
|
429
|
+
* verdict evidence boundaryProof release residual
|
|
430
|
+
* ---------------- -------------------- ------------- ------- --------
|
|
431
|
+
* proven, weak boot-id-changed true yes null
|
|
432
|
+
* proven, cgroup boot-id-changed true yes null
|
|
433
|
+
* proven, cgroup cgroup-empty FALSE NO deviceIsolation
|
|
434
|
+
* proven, cgroup cgroup-zombie-only FALSE NO deviceIsolation
|
|
435
|
+
* proven, weak scan-clean FALSE NO deviceIsolation
|
|
436
|
+
* not proven n/a false NO deviceIsolation
|
|
437
|
+
*
|
|
438
|
+
* Only a reboot (boot-id-changed) authorises forgetting a tree — for BOTH handle
|
|
439
|
+
* kinds since the strong handle gained a stamped bootId (a reboot kills the
|
|
440
|
+
* whole tree, sibling-migrant included, and resets cgroupfs). A cgroup being
|
|
441
|
+
* empty is NOT a boundary proof — a same-UID process can migrate itself out of
|
|
442
|
+
* the leaf, invisible to the leaf-down read — so an emptiness verdict behaves
|
|
443
|
+
* exactly like a weak scan-clean: it lets the caller stop re-signalling
|
|
444
|
+
* (`signalsStopped: true`) and lets the SESSION close, but authorises nothing
|
|
445
|
+
* else. The handle stays in the durable store, so `hasUnprovenContainment` keeps
|
|
446
|
+
* answering true and the device-isolation blocker survives the close.
|
|
447
|
+
*/
|
|
448
|
+
export declare function containmentReleaseDecision(verdict: QuiescenceVerdict): ContainmentReleaseDecision;
|
|
449
|
+
/**
|
|
450
|
+
* Release a handle — the ONLY removal path, and it demands the proof.
|
|
451
|
+
*
|
|
452
|
+
* Taking the verdict (rather than a boolean, or nothing at all) is deliberate: it
|
|
453
|
+
* makes "clear the blocker without proving quiescence" unrepresentable at the type
|
|
454
|
+
* level, which is the invariant this whole module exists to enforce. A caller
|
|
455
|
+
* holding a `proven: false` verdict has no way to spend it here.
|
|
456
|
+
*
|
|
457
|
+
* The ONE evidence that authorises release is `boot-id-changed`, for either
|
|
458
|
+
* handle kind (a strong handle carries a stamped bootId since round 10).
|
|
459
|
+
* Emptiness verdicts (cgroup-empty / cgroup-zombie-only / scan-clean) resolve to
|
|
460
|
+
* `releaseAuthorised: false` and return below with the handle and the
|
|
461
|
+
* device-isolation blocker retained — cgroup emptiness is not a boundary proof
|
|
462
|
+
* (a same-UID process can migrate out of the leaf; see
|
|
463
|
+
* containmentReleaseDecision). No cgroup directory is reclaimed on the release
|
|
464
|
+
* path: `boot-id-changed` means the host rebooted and cgroupfs came back empty,
|
|
465
|
+
* so there is nothing to remove. Within a boot the tree is killed via
|
|
466
|
+
* `cgroup.kill` during teardown and the handle waits for reboot or operator
|
|
467
|
+
* revoke.
|
|
468
|
+
*/
|
|
469
|
+
export declare function releaseContainmentHandle(verdict: QuiescenceVerdict, dataDir?: string): ContainmentReleaseDecision;
|
|
470
|
+
/**
|
|
471
|
+
* OPERATOR OVERRIDE: drop handles without quiescence proof.
|
|
472
|
+
*
|
|
473
|
+
* releaseContainmentHandle is deliberately unreachable without a proven verdict,
|
|
474
|
+
* and on a non-cgroup host a weak handle's scan-clean is never a boundary proof
|
|
475
|
+
* — so after one mojo session runs and closes there, its handle (and with it the
|
|
476
|
+
* whole-machine device-isolation `activation_blocked` 409) persists FOREVER,
|
|
477
|
+
* with no operational path out short of hand-editing the ledger JSON. An
|
|
478
|
+
* `unprovable` handle is like that by design. Both are correct fail-closed
|
|
479
|
+
* defaults and both still need an explicit, auditable exit.
|
|
480
|
+
*
|
|
481
|
+
* This is that exit, and only for a human operator (the `botmux mojo-containment
|
|
482
|
+
* revoke` command): it removes the named handles while logging exactly what was
|
|
483
|
+
* dropped, so the decision that "these trees are acceptable to forget" is a
|
|
484
|
+
* recorded human judgement, never something the runtime can reach on its own.
|
|
485
|
+
* Nothing in daemon/worker code may call this.
|
|
486
|
+
*/
|
|
487
|
+
export declare function revokeContainmentHandles(sessionId: string, opts?: {
|
|
488
|
+
handleKey?: string;
|
|
489
|
+
dataDir?: string;
|
|
490
|
+
auditNote?: string;
|
|
491
|
+
}): {
|
|
492
|
+
removed: ContainmentHandle[];
|
|
493
|
+
remaining: ContainmentHandle[];
|
|
494
|
+
};
|
|
495
|
+
/**
|
|
496
|
+
* Executing (non-zombie) pids anywhere in a cgroup handle's subtree, for the
|
|
497
|
+
* operator revoke safety gate. `unreadable` is the fail-closed signal — the gate
|
|
498
|
+
* must surface it rather than read "cannot enumerate" as "nobody there".
|
|
499
|
+
*/
|
|
500
|
+
export declare function cgroupHandleLiveMembers(handle: StrongContainmentHandle, opts?: {
|
|
501
|
+
procRoot?: string;
|
|
502
|
+
}): {
|
|
503
|
+
live: number[];
|
|
504
|
+
unreadable: boolean;
|
|
505
|
+
};
|
|
506
|
+
/**
|
|
507
|
+
* Hand every outstanding handle of a session to a new worker generation.
|
|
508
|
+
*
|
|
509
|
+
* Inheritance is a UNION and it is unconditional: replacement does not prove
|
|
510
|
+
* anything about the old tree, so the new generation becomes responsible for
|
|
511
|
+
* proving it later. The generation stamp is refreshed for logging while the
|
|
512
|
+
* IDENTITY fields (cgroup path, pid/boot/starttime, nonce) are preserved
|
|
513
|
+
* verbatim — rewriting those would invent a handle that proves nothing about the
|
|
514
|
+
* tree actually left behind.
|
|
515
|
+
*
|
|
516
|
+
* Nothing is removed here, so a crash mid-inheritance is safe: the handles are
|
|
517
|
+
* still recorded under the same session id.
|
|
518
|
+
*/
|
|
519
|
+
export declare function inheritContainmentHandles(sessionId: string, nextGeneration: number, dataDir?: string): ContainmentHandle[];
|
|
520
|
+
/**
|
|
521
|
+
* Map a containment verdict onto ProcTree's `TurnQuiescence`.
|
|
522
|
+
*
|
|
523
|
+
* This function is the single place in the codebase allowed to mint
|
|
524
|
+
* `{ kind: 'contained-proven', boundaryProof: true }`, and it does so for exactly
|
|
525
|
+
* ONE evidence — `boot-id-changed`. That is the whole point of the contracts
|
|
526
|
+
* meeting here:
|
|
527
|
+
*
|
|
528
|
+
* - `quiescenceFromScan()` can never produce `boundaryProof: true`; a clean
|
|
529
|
+
* /proc scan is a diagnostic signal, because a descendant that both setsids
|
|
530
|
+
* AND scrubs its own environ evades enumeration entirely.
|
|
531
|
+
* - An empty (or zombie-only) `cgroup.procs` is ALSO only a diagnostic signal,
|
|
532
|
+
* NOT a boundary proof: mojo runs at the daemon's UID and cgroup v2 lets a
|
|
533
|
+
* same-UID process migrate itself out of the leaf, invisible to the leaf-down
|
|
534
|
+
* read. cgroup emptiness is good for stopping signals and for killing
|
|
535
|
+
* (cgroup.kill), never for dropping device isolation.
|
|
536
|
+
* - `boot-id-changed` is the only unforgeable release: a reboot kills the whole
|
|
537
|
+
* tree, migrant included. It applies to a weak handle and to a cgroup handle
|
|
538
|
+
* once its bootId is stamped.
|
|
539
|
+
*
|
|
540
|
+
* So a STRONG (cgroup) proven-empty verdict maps to `diagnostic-clean`, exactly
|
|
541
|
+
* like a weak `scan-clean`, and `containmentReleaseDecision` refuses to authorise
|
|
542
|
+
* removal for either — the handle stays in the durable store and the blocker
|
|
543
|
+
* survives the close. The gate lives in `containmentReleaseDecision`, a real
|
|
544
|
+
* production consumer.
|
|
545
|
+
*/
|
|
546
|
+
/**
|
|
547
|
+
* The ONE place a `boundaryProof: true` TurnQuiescence is constructed.
|
|
548
|
+
*
|
|
549
|
+
* Round 4 claimed this property in a comment while three separate sites minted
|
|
550
|
+
* the value, which is why the claim was rejected as unverifiable. It is now
|
|
551
|
+
* structural: `boundaryProof: true` is minted here and in the release-decision
|
|
552
|
+
* gate (`containmentReleaseDecision`), and nowhere else — `git grep -n
|
|
553
|
+
* "boundaryProof: true" -- src/` returns those two sites plus type definitions.
|
|
554
|
+
* It is exported for the backend, which decides WHETHER a proven boundary applies
|
|
555
|
+
* but must not decide what one looks like.
|
|
556
|
+
*/
|
|
557
|
+
export declare function containedProvenQuiescence(): TurnQuiescence;
|
|
558
|
+
export declare function containmentQuiescence(verdict: QuiescenceVerdict): TurnQuiescence;
|
|
559
|
+
/**
|
|
560
|
+
* Strongest quiescence statement available for a session, across ALL of its
|
|
561
|
+
* outstanding handles.
|
|
562
|
+
*
|
|
563
|
+
* Semantics are intentionally pessimistic, because a session is only as contained
|
|
564
|
+
* as its WEAKEST outstanding tree:
|
|
565
|
+
* - any handle that is not proven → that handle's non-proof is the answer
|
|
566
|
+
* - no handles at all → `diagnostic-clean`; nothing is recorded,
|
|
567
|
+
* but "nothing recorded" is not a kernel-level boundary proof either
|
|
568
|
+
* - every handle proven, at least one only diagnostically → `diagnostic-clean`
|
|
569
|
+
* - every handle proven WITH a boundary proof → `contained-proven`
|
|
570
|
+
*
|
|
571
|
+
* A store that cannot be read THROWS (via `containmentHandles`), so an
|
|
572
|
+
* unreadable store can never present itself as a clean session.
|
|
573
|
+
*/
|
|
574
|
+
export declare function sessionContainmentQuiescence(sessionId: string, prove: (handle: ContainmentHandle) => QuiescenceVerdict, dataDir?: string): TurnQuiescence;
|
|
575
|
+
//# sourceMappingURL=mojo-containment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mojo-containment.d.ts","sourceRoot":"","sources":["../../src/core/mojo-containment.ts"],"names":[],"mappings":"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"}
|