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":"mojo-containment.js","sourceRoot":"","sources":["../../src/core/mojo-containment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Thrown instead of degrading to an empty (fail-open) ledger. */
|
|
2
|
+
export declare class MojoQuarantineUnavailableError extends Error {
|
|
3
|
+
readonly cause?: unknown | undefined;
|
|
4
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Fold unprovable launcher-env key names into this session's durable record.
|
|
8
|
+
*
|
|
9
|
+
* Monotonic union — callers pass whatever the session was handed, and a later
|
|
10
|
+
* clean payload never retracts an earlier dangerous one.
|
|
11
|
+
*
|
|
12
|
+
* THROWS on any read/write failure: the caller must not proceed believing the
|
|
13
|
+
* risk was recorded.
|
|
14
|
+
*/
|
|
15
|
+
export declare function recordQuarantinedLauncherEnvKeys(sessionId: string, keys: readonly string[], dataDir?: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Durable key names for one session (empty only when nothing was ever recorded).
|
|
18
|
+
*
|
|
19
|
+
* THROWS when the ledger cannot be read — callers on the isolation path must
|
|
20
|
+
* fail closed rather than interpret the error as "clean".
|
|
21
|
+
*/
|
|
22
|
+
export declare function quarantinedLauncherEnvKeys(sessionId: string, dataDir?: string): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Session ids with a durable record, INCLUDING sessions whose row is gone.
|
|
25
|
+
*
|
|
26
|
+
* The closed/residual path needs this: an explicit `/close` deletes the row, so
|
|
27
|
+
* the inventory would otherwise lose every trace of an unproven hooked child.
|
|
28
|
+
*/
|
|
29
|
+
export declare function quarantinedSessionIds(dataDir?: string): string[];
|
|
30
|
+
//# sourceMappingURL=mojo-launcher-env-quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mojo-launcher-env-quarantine.d.ts","sourceRoot":"","sources":["../../src/core/mojo-launcher-env-quarantine.ts"],"names":[],"mappings":"AAqDA,kEAAkE;AAClE,qBAAa,8BAA+B,SAAQ,KAAK;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAAzC,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,OAAO,YAAA;CAItD;AA6FD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAaN;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhE"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AUDIT RECORD of dangerous mojo launcher-env KEY NAMES. NOT a security boundary.
|
|
3
|
+
*
|
|
4
|
+
* Trust domain — read this before relying on anything here
|
|
5
|
+
* -------------------------------------------------------
|
|
6
|
+
* This is an ordinary file owned by the same user as the daemon, while the threat
|
|
7
|
+
* it describes is a mojo child hijacked via `PATH` / `LD_PRELOAD` — running as
|
|
8
|
+
* THAT SAME USER. Such a child can simply delete this file. So it cannot be, and
|
|
9
|
+
* is not, the authority for device isolation: an earlier design let a missing file
|
|
10
|
+
* flip `resolveRemoteExecutionProven` from false to true, a credential-boundary
|
|
11
|
+
* fail-open reachable by the very process being policed.
|
|
12
|
+
*
|
|
13
|
+
* The authority lives on evidence the CLI cannot forge or delete:
|
|
14
|
+
* - the private parent<->worker attestation IPC (`local_process_attestation`)
|
|
15
|
+
* - live bot config, read at classification time
|
|
16
|
+
* - the daemon's in-memory per-generation ledger, untouchable by any child
|
|
17
|
+
* within a daemon lifetime
|
|
18
|
+
* and the rule is POSITIVE proof: a mojo session is `safe_remote` only while all
|
|
19
|
+
* of that is present, otherwise it is blocked (see mojoRemoteExecutionAttested).
|
|
20
|
+
*
|
|
21
|
+
* What this file is still good for
|
|
22
|
+
* - operator-facing audit: WHICH keys a session was handed, across restarts
|
|
23
|
+
* - defence in depth: it may only ever ADD a blocker. Its absence must never
|
|
24
|
+
* unblock anything — which is precisely why safety no longer depends on it.
|
|
25
|
+
*
|
|
26
|
+
* Integrity rules (an honest audit record still has to be honest)
|
|
27
|
+
* - only KEY NAMES are stored, never values (they routinely carry credentials;
|
|
28
|
+
* `X_JWT_TOKEN` is the one allowlisted name and is never recorded)
|
|
29
|
+
* - unreadable / malformed / unknown-version content THROWS rather than reading
|
|
30
|
+
* as "nothing recorded" — including EACCES, which must not be mistaken for
|
|
31
|
+
* "file absent"
|
|
32
|
+
* - every mutation is a FRESH read-modify-write inside a cross-process file
|
|
33
|
+
* lock, so per-bot daemons sharing a data dir cannot lose updates
|
|
34
|
+
* - there is deliberately NO clearing API: removal would assert the injected
|
|
35
|
+
* process is gone, and proving that needs trustworthy termination of the whole
|
|
36
|
+
* mojo PROCESS GROUP (SIGKILL escalation + group quiescence), which does not
|
|
37
|
+
* exist yet
|
|
38
|
+
*/
|
|
39
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
40
|
+
import { randomBytes } from 'node:crypto';
|
|
41
|
+
import { dirname, join } from 'node:path';
|
|
42
|
+
import { config } from '../config.js';
|
|
43
|
+
import { withFileLockSync } from '../utils/file-lock.js';
|
|
44
|
+
const FILE_NAME = 'mojo-launcher-env-quarantine.json';
|
|
45
|
+
/** Thrown instead of degrading to an empty (fail-open) ledger. */
|
|
46
|
+
export class MojoQuarantineUnavailableError extends Error {
|
|
47
|
+
cause;
|
|
48
|
+
constructor(message, cause) {
|
|
49
|
+
super(message);
|
|
50
|
+
this.cause = cause;
|
|
51
|
+
this.name = 'MojoQuarantineUnavailableError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function filePath(dataDir) {
|
|
55
|
+
return join(dataDir ?? config.session.dataDir, FILE_NAME);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Read the ledger from disk. No caching, by design: a cached snapshot would both
|
|
59
|
+
* hide another daemon's writes and let a lost update drop a recorded risk.
|
|
60
|
+
*
|
|
61
|
+
* A missing file is a legitimate empty ledger; anything unparseable is not.
|
|
62
|
+
*/
|
|
63
|
+
function readStrict(dataDir) {
|
|
64
|
+
const path = filePath(dataDir);
|
|
65
|
+
let raw;
|
|
66
|
+
try {
|
|
67
|
+
raw = readFileSync(path, 'utf8');
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
// ONLY a genuinely absent file is an empty record. `existsSync` also returns
|
|
71
|
+
// false for EACCES, so gating on it turned "cannot read this" into "nothing is
|
|
72
|
+
// quarantined" — the fail-open direction, and trivially arranged by a
|
|
73
|
+
// same-user process chmod-ing the file.
|
|
74
|
+
if (err.code === 'ENOENT') {
|
|
75
|
+
return { version: 1, sessions: {} };
|
|
76
|
+
}
|
|
77
|
+
throw new MojoQuarantineUnavailableError(`cannot read mojo launcher-env quarantine at ${path} `
|
|
78
|
+
+ `(${err.code ?? 'unknown'}); `
|
|
79
|
+
+ 'refusing to treat sessions as unquarantined', err);
|
|
80
|
+
}
|
|
81
|
+
let parsed;
|
|
82
|
+
try {
|
|
83
|
+
parsed = JSON.parse(raw);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
throw new MojoQuarantineUnavailableError(`mojo launcher-env quarantine at ${path} is corrupt; refusing to treat sessions as unquarantined`, err);
|
|
87
|
+
}
|
|
88
|
+
// An unknown version means a writer this build does not understand; applying
|
|
89
|
+
// today's rules could silently drop entries it does not recognise.
|
|
90
|
+
const version = parsed?.version;
|
|
91
|
+
if (version !== 1) {
|
|
92
|
+
throw new MojoQuarantineUnavailableError(`mojo launcher-env quarantine at ${path} has unsupported version ${JSON.stringify(version)}`);
|
|
93
|
+
}
|
|
94
|
+
const sessionsRaw = parsed?.sessions;
|
|
95
|
+
if (!parsed || typeof parsed !== 'object' || !sessionsRaw || typeof sessionsRaw !== 'object') {
|
|
96
|
+
throw new MojoQuarantineUnavailableError(`mojo launcher-env quarantine at ${path} has an unexpected shape; refusing to treat sessions as unquarantined`);
|
|
97
|
+
}
|
|
98
|
+
const sessions = {};
|
|
99
|
+
for (const [sessionId, keys] of Object.entries(sessionsRaw)) {
|
|
100
|
+
if (!Array.isArray(keys)) {
|
|
101
|
+
throw new MojoQuarantineUnavailableError(`mojo launcher-env quarantine at ${path} has a non-array entry for ${sessionId}`);
|
|
102
|
+
}
|
|
103
|
+
// Filtering these out silently EMPTIED that session's quarantine, so one junk
|
|
104
|
+
// element (`{"sid":[42]}`) unblocked it. Reject the whole file instead.
|
|
105
|
+
for (const k of keys) {
|
|
106
|
+
if (typeof k !== 'string' || k.length === 0) {
|
|
107
|
+
throw new MojoQuarantineUnavailableError(`mojo launcher-env quarantine at ${path} has a non-string key name for ${sessionId}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
sessions[sessionId] = [...new Set(keys)];
|
|
111
|
+
}
|
|
112
|
+
return { version: 1, sessions };
|
|
113
|
+
}
|
|
114
|
+
/** Atomic replace via a UNIQUE temp file — a shared `.tmp` name races between daemons. */
|
|
115
|
+
function writeStrict(data, dataDir) {
|
|
116
|
+
const path = filePath(dataDir);
|
|
117
|
+
const tmp = `${path}.${process.pid}.${randomBytes(6).toString('hex')}.tmp`;
|
|
118
|
+
try {
|
|
119
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
120
|
+
writeFileSync(tmp, `${JSON.stringify(data, null, 2)}\n`, { mode: 0o600 });
|
|
121
|
+
renameSync(tmp, path);
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
try {
|
|
125
|
+
if (existsSync(tmp))
|
|
126
|
+
unlinkSync(tmp);
|
|
127
|
+
}
|
|
128
|
+
catch { /* best-effort cleanup */ }
|
|
129
|
+
throw new MojoQuarantineUnavailableError(`cannot persist mojo launcher-env quarantine at ${path}; the recorded risk would be lost`, err);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Fold unprovable launcher-env key names into this session's durable record.
|
|
134
|
+
*
|
|
135
|
+
* Monotonic union — callers pass whatever the session was handed, and a later
|
|
136
|
+
* clean payload never retracts an earlier dangerous one.
|
|
137
|
+
*
|
|
138
|
+
* THROWS on any read/write failure: the caller must not proceed believing the
|
|
139
|
+
* risk was recorded.
|
|
140
|
+
*/
|
|
141
|
+
export function recordQuarantinedLauncherEnvKeys(sessionId, keys, dataDir) {
|
|
142
|
+
if (keys.length === 0)
|
|
143
|
+
return;
|
|
144
|
+
const path = filePath(dataDir);
|
|
145
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
146
|
+
withFileLockSync(path, () => {
|
|
147
|
+
// Fresh read INSIDE the lock: another daemon may have added entries since.
|
|
148
|
+
const data = readStrict(dataDir);
|
|
149
|
+
const before = data.sessions[sessionId] ?? [];
|
|
150
|
+
const merged = [...new Set([...before, ...keys])];
|
|
151
|
+
if (merged.length === before.length)
|
|
152
|
+
return; // nothing new
|
|
153
|
+
data.sessions[sessionId] = merged;
|
|
154
|
+
writeStrict(data, dataDir);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Durable key names for one session (empty only when nothing was ever recorded).
|
|
159
|
+
*
|
|
160
|
+
* THROWS when the ledger cannot be read — callers on the isolation path must
|
|
161
|
+
* fail closed rather than interpret the error as "clean".
|
|
162
|
+
*/
|
|
163
|
+
export function quarantinedLauncherEnvKeys(sessionId, dataDir) {
|
|
164
|
+
return readStrict(dataDir).sessions[sessionId] ?? [];
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Session ids with a durable record, INCLUDING sessions whose row is gone.
|
|
168
|
+
*
|
|
169
|
+
* The closed/residual path needs this: an explicit `/close` deletes the row, so
|
|
170
|
+
* the inventory would otherwise lose every trace of an unproven hooked child.
|
|
171
|
+
*/
|
|
172
|
+
export function quarantinedSessionIds(dataDir) {
|
|
173
|
+
return Object.keys(readStrict(dataDir).sessions);
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=mojo-launcher-env-quarantine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mojo-launcher-env-quarantine.js","sourceRoot":"","sources":["../../src/core/mojo-launcher-env-quarantine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mojo-session-identity.d.ts","sourceRoot":"","sources":["../../src/core/mojo-session-identity.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA+C3C,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAyEtF"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Freezing the mojo control-plane identity onto a session row.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately its OWN module rather than living in worker-pool: session-manager
|
|
5
|
+
* needs it during restore and resume, and many tests mock worker-pool wholesale —
|
|
6
|
+
* importing it from there made every one of those mocks incomplete, breaking ~40
|
|
7
|
+
* unrelated tests. A small leaf module with no worker/spawn dependencies is also
|
|
8
|
+
* far cheaper for those tests to pull in.
|
|
9
|
+
*/
|
|
10
|
+
import { getBot } from '../bot-registry.js';
|
|
11
|
+
import * as sessionStore from '../services/session-store.js';
|
|
12
|
+
import { logger } from '../utils/logger.js';
|
|
13
|
+
import { pickMojoSessionIdentity } from '../adapters/backend/mojo-types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Freeze (or quarantine) the mojo control-plane identity of ONE session row,
|
|
16
|
+
* operating on the bare Session so it can run BEFORE the row is registered into
|
|
17
|
+
* the active map.
|
|
18
|
+
*
|
|
19
|
+
* Ordering is the whole point: restoreActiveSessions runs with the dispatcher
|
|
20
|
+
* already live, so a row that becomes visible before it is frozen can be woken —
|
|
21
|
+
* or `/close`d — while still reading live bot config, which is how a lineage
|
|
22
|
+
* created on tenant A could be paired with tenant B.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent: a row that already carries an identity is left untouched.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Is this row a mojo session?
|
|
28
|
+
*
|
|
29
|
+
* Must NOT read `session.backendType` alone. forkWorker builds initMsg — and
|
|
30
|
+
* therefore calls the freeze — BEFORE it stamps `backendType`/`cliId` onto the
|
|
31
|
+
* row (worker-pool: sessionMojoConfig at initMsg construction vs. the stamp
|
|
32
|
+
* after `worker.send`), and createSession() never writes those fields. So on the
|
|
33
|
+
* one path EVERY new mojo session takes, both are still `undefined` and a
|
|
34
|
+
* `!== 'mojo'` guard early-returns: the freeze silently no-ops, leaving the
|
|
35
|
+
* "control plane edited after creation" window wide open and causing the next
|
|
36
|
+
* restart to quarantine a lineage whose control plane was fully known.
|
|
37
|
+
*
|
|
38
|
+
* Precedence:
|
|
39
|
+
* - a STAMPED backendType is authoritative (a riff row stays untouched even if
|
|
40
|
+
* the bot has since been switched to mojo);
|
|
41
|
+
* - otherwise fall back to the live bot config, which is what decides the
|
|
42
|
+
* session's backend in the first place.
|
|
43
|
+
*/
|
|
44
|
+
function isMojoSessionRow(session, larkAppId) {
|
|
45
|
+
if (session.backendType)
|
|
46
|
+
return session.backendType === 'mojo';
|
|
47
|
+
if (session.cliId === 'mojo')
|
|
48
|
+
return true;
|
|
49
|
+
try {
|
|
50
|
+
const cfg = getBot(larkAppId).config;
|
|
51
|
+
return cfg.backendType === 'mojo' || cfg.cliId === 'mojo';
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Bot deregistered — cannot classify, so do nothing rather than freeze a row
|
|
55
|
+
// that may not be mojo at all.
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function freezeMojoIdentityForSession(session, larkAppId) {
|
|
60
|
+
if (!isMojoSessionRow(session, larkAppId))
|
|
61
|
+
return;
|
|
62
|
+
// BACKFILL, before the early return below. A row quarantined by an earlier
|
|
63
|
+
// build already has an identity, so it would return here and never get the
|
|
64
|
+
// notice flag — the user would never learn their context was parked. Runs as
|
|
65
|
+
// its own step so it is independent of whether a freeze is needed.
|
|
66
|
+
if (session.mojoQuarantinedLineage
|
|
67
|
+
&& session.mojoQuarantineNoticePending === undefined) {
|
|
68
|
+
session.mojoQuarantineNoticePending = true;
|
|
69
|
+
sessionStore.updateSession(session);
|
|
70
|
+
logger.info(`[mojo] session ${session.sessionId} was quarantined by an earlier build; `
|
|
71
|
+
+ 'queued the user-visible notice');
|
|
72
|
+
}
|
|
73
|
+
if (session.mojoIdentity)
|
|
74
|
+
return;
|
|
75
|
+
let liveMojo;
|
|
76
|
+
try {
|
|
77
|
+
liveMojo = getBot(larkAppId).config.mojo;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Bot deregistered — nothing to freeze from. Leave the row so a later
|
|
81
|
+
// re-registration can migrate it.
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Only reached for an UNFROZEN row, where any lineage is unverifiable by
|
|
85
|
+
// definition. Prefer the active slot; if a stale parked id is also present and
|
|
86
|
+
// differs, keep both rather than silently overwriting an audit record.
|
|
87
|
+
const active = session.riffParentTaskId;
|
|
88
|
+
const alreadyParked = session.mojoQuarantinedLineage;
|
|
89
|
+
const lineage = active ?? alreadyParked;
|
|
90
|
+
if (lineage) {
|
|
91
|
+
if (active && alreadyParked && active !== alreadyParked) {
|
|
92
|
+
logger.warn(`[mojo] session ${session.sessionId} carries two unverifiable lineages `
|
|
93
|
+
+ `(active + previously parked); parking both for manual cleanup.`);
|
|
94
|
+
session.mojoQuarantinedLineage = `${alreadyParked},${active}`;
|
|
95
|
+
session.riffParentTaskId = undefined;
|
|
96
|
+
session.mojoQuarantineNoticePending = true;
|
|
97
|
+
session.mojoIdentity = pickMojoSessionIdentity(liveMojo);
|
|
98
|
+
session.mojoIdentityHostDefault = true;
|
|
99
|
+
sessionStore.updateSession(session);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Unverifiable: created before the identity existed, so nothing records which
|
|
103
|
+
// control plane holds it. Park it instead of deleting — the id is the only
|
|
104
|
+
// handle left for manual inspection/cleanup, and the user can be told.
|
|
105
|
+
session.mojoQuarantinedLineage = lineage;
|
|
106
|
+
session.riffParentTaskId = undefined;
|
|
107
|
+
// Flag for a user-visible notice. This module runs during restore/resume where
|
|
108
|
+
// there is no reply context, so the actual delivery happens on the next turn
|
|
109
|
+
// (see deliverPendingMojoQuarantineNotice); a log line alone would leave the
|
|
110
|
+
// user unaware that their context was parked.
|
|
111
|
+
session.mojoQuarantineNoticePending = true;
|
|
112
|
+
logger.warn(`[mojo] session ${session.sessionId} has a remote lineage but no frozen `
|
|
113
|
+
+ 'control plane; quarantined it (no automatic resume or cancel).');
|
|
114
|
+
}
|
|
115
|
+
// Persist even an EMPTY snapshot: `{}` means "frozen with nothing configured"
|
|
116
|
+
// and must stay distinguishable from `undefined` ("predates this field"),
|
|
117
|
+
// otherwise the row is migrated again on every boot.
|
|
118
|
+
session.mojoIdentity = pickMojoSessionIdentity(liveMojo);
|
|
119
|
+
// Stamp the default era. An unstamped `{}` identity was frozen by a build
|
|
120
|
+
// whose double-unset default was the CLOUD SANDBOX; sessionMojoConfig pins
|
|
121
|
+
// those to localDaemon=false so an upgrade cannot silently move a live
|
|
122
|
+
// session's tools onto the host (review F1).
|
|
123
|
+
session.mojoIdentityHostDefault = true;
|
|
124
|
+
sessionStore.updateSession(session);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=mojo-session-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mojo-session-identity.js","sourceRoot":"","sources":["../../src/core/mojo-session-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,14 +43,30 @@ export declare function getSessionPersistentBackendType(ds: DaemonSession): Pers
|
|
|
43
43
|
*/
|
|
44
44
|
export declare function resolveSpawnBackendType(sessionStamp: BackendType | undefined, botType: BackendType | undefined, defaultType: BackendType): BackendType;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* CLIs that are NOT local processes: they have an empty `resolvedBin` and their
|
|
47
|
+
* backend translates write() into remote API / headless-CLI calls. For each of
|
|
48
|
+
* these the cliId and the backendType share a name and must stay paired.
|
|
49
|
+
*
|
|
50
|
+
* Adding a remote CLI means adding it here — the alternative (another
|
|
51
|
+
* hardcoded `=== 'riff'` chain in every helper below) is exactly what made this
|
|
52
|
+
* generalization necessary.
|
|
53
|
+
*/
|
|
54
|
+
/** True for a backend that runs the agent off-box (no local PTY to own). */
|
|
55
|
+
export declare function isRemoteBackendType(type: BackendType): boolean;
|
|
56
|
+
export { isRemoteCliId } from './remote-cli-ids.js';
|
|
57
|
+
/**
|
|
58
|
+
* Enforce the `cliId === <remote> ⇔ backendType === <remote>` pairing invariant
|
|
59
|
+
* at the ONE spawn chokepoint, so every config entry point (dashboard, `/config
|
|
48
60
|
* set cli|backendType`, `botmux setup`, hand-edited bots.json) converges:
|
|
49
|
-
* -
|
|
50
|
-
* on the empty resolvedBin);
|
|
51
|
-
* - non-
|
|
52
|
-
* CLI's PTY chunked writes would otherwise fan out into
|
|
53
|
-
* Manual pty/tmux/herdr/zellij overrides for
|
|
61
|
+
* - a remote CLI on a local backend → force its own backend (a pty/tmux spawn
|
|
62
|
+
* would fail on the empty resolvedBin);
|
|
63
|
+
* - a non-remote CLI on a remote backend → fall back to the daemon default
|
|
64
|
+
* (the CLI's PTY chunked writes would otherwise fan out into remote tasks).
|
|
65
|
+
* Manual pty/tmux/herdr/zellij overrides for local CLIs pass through.
|
|
66
|
+
*
|
|
67
|
+
* NOTE: kept under its historical name `reconcileRiffBackendType` on purpose —
|
|
68
|
+
* it is imported by name in several modules and renaming it would bloat this
|
|
69
|
+
* behaviour-preserving refactor into a cross-cutting rename.
|
|
54
70
|
*/
|
|
55
71
|
export declare function reconcileRiffBackendType(cliId: string, resolved: BackendType, defaultType: BackendType): BackendType;
|
|
56
72
|
/** Resolve the frozen/live/default backend precedence and then enforce the
|
|
@@ -62,6 +78,14 @@ export declare function resolvePairedSpawnBackendType(cliId: string, sessionStam
|
|
|
62
78
|
* current config: changing a bot later must not make an existing Riff
|
|
63
79
|
* generation look locally restartable. */
|
|
64
80
|
export declare function isRiffBackendSession(ds: DaemonSession): boolean;
|
|
81
|
+
/** Whether the live/persisted session is frozen onto ANY remote backend.
|
|
82
|
+
* Same frozen-stamp rule as isRiffBackendSession. Used by the guards that
|
|
83
|
+
* must reject BEFORE mutating persisted state (e.g. /cd repin): killWorker
|
|
84
|
+
* refuses unprepared live retirement for every remote backend, so a caller
|
|
85
|
+
* that mutates first and retires after would report success while the live
|
|
86
|
+
* generation keeps running against the old state — the split-brain the riff
|
|
87
|
+
* guard has always prevented, now needed for mojo too. */
|
|
88
|
+
export declare function isRemoteBackendSession(ds: DaemonSession): boolean;
|
|
65
89
|
/**
|
|
66
90
|
* How a session's worker is torn down at daemon shutdown, branched on the
|
|
67
91
|
* session's FROZEN backend (via getSessionPersistentBackendType), NOT live config:
|
|
@@ -71,7 +95,7 @@ export declare function isRiffBackendSession(ds: DaemonSession): boolean;
|
|
|
71
95
|
* Freezing here stops a live backendType edit from changing how a running session
|
|
72
96
|
* tears down — e.g. detach-preserving a "herdr" session whose real pane is tmux.
|
|
73
97
|
*/
|
|
74
|
-
export declare function shutdownBackendDisposition(ds: DaemonSession): '
|
|
98
|
+
export declare function shutdownBackendDisposition(ds: DaemonSession): 'remote-drain-detach' | 'detach' | 'close';
|
|
75
99
|
/** Deterministic backing-session name (`bmx-<sid8>`, same rule across backends). */
|
|
76
100
|
export declare function persistentSessionName(backendType: PersistentBackendType, sessionId: string): string;
|
|
77
101
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-backend.d.ts","sourceRoot":"","sources":["../../src/core/persistent-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"persistent-backend.d.ts","sourceRoot":"","sources":["../../src/core/persistent-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* import cycle with each other.
|
|
13
13
|
*/
|
|
14
14
|
import { getBot } from '../bot-registry.js';
|
|
15
|
+
import { isRemoteBackendId } from './remote-cli-ids.js';
|
|
15
16
|
import { TmuxBackend } from '../adapters/backend/tmux-backend.js';
|
|
16
17
|
import { HerdrBackend } from '../adapters/backend/herdr-backend.js';
|
|
17
18
|
import { ZellijBackend } from '../adapters/backend/zellij-backend.js';
|
|
@@ -72,21 +73,44 @@ export function resolveSpawnBackendType(sessionStamp, botType, defaultType) {
|
|
|
72
73
|
return sessionStamp ?? botType ?? defaultType;
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
76
|
+
* CLIs that are NOT local processes: they have an empty `resolvedBin` and their
|
|
77
|
+
* backend translates write() into remote API / headless-CLI calls. For each of
|
|
78
|
+
* these the cliId and the backendType share a name and must stay paired.
|
|
79
|
+
*
|
|
80
|
+
* Adding a remote CLI means adding it here — the alternative (another
|
|
81
|
+
* hardcoded `=== 'riff'` chain in every helper below) is exactly what made this
|
|
82
|
+
* generalization necessary.
|
|
83
|
+
*/
|
|
84
|
+
// The set itself now lives in the dependency-free core/remote-cli-ids leaf so
|
|
85
|
+
// light consumers (e.g. the Lark card builder) can share it without pulling in
|
|
86
|
+
// every PTY backend class through this module.
|
|
87
|
+
/** True for a backend that runs the agent off-box (no local PTY to own). */
|
|
88
|
+
export function isRemoteBackendType(type) {
|
|
89
|
+
return isRemoteBackendId(type);
|
|
90
|
+
}
|
|
91
|
+
export { isRemoteCliId } from './remote-cli-ids.js';
|
|
92
|
+
/**
|
|
93
|
+
* Enforce the `cliId === <remote> ⇔ backendType === <remote>` pairing invariant
|
|
94
|
+
* at the ONE spawn chokepoint, so every config entry point (dashboard, `/config
|
|
77
95
|
* set cli|backendType`, `botmux setup`, hand-edited bots.json) converges:
|
|
78
|
-
* -
|
|
79
|
-
* on the empty resolvedBin);
|
|
80
|
-
* - non-
|
|
81
|
-
* CLI's PTY chunked writes would otherwise fan out into
|
|
82
|
-
* Manual pty/tmux/herdr/zellij overrides for
|
|
96
|
+
* - a remote CLI on a local backend → force its own backend (a pty/tmux spawn
|
|
97
|
+
* would fail on the empty resolvedBin);
|
|
98
|
+
* - a non-remote CLI on a remote backend → fall back to the daemon default
|
|
99
|
+
* (the CLI's PTY chunked writes would otherwise fan out into remote tasks).
|
|
100
|
+
* Manual pty/tmux/herdr/zellij overrides for local CLIs pass through.
|
|
101
|
+
*
|
|
102
|
+
* NOTE: kept under its historical name `reconcileRiffBackendType` on purpose —
|
|
103
|
+
* it is imported by name in several modules and renaming it would bloat this
|
|
104
|
+
* behaviour-preserving refactor into a cross-cutting rename.
|
|
83
105
|
*/
|
|
84
106
|
export function reconcileRiffBackendType(cliId, resolved, defaultType) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
107
|
+
// A remote CLI dictates its own backend (same name by construction).
|
|
108
|
+
if (isRemoteBackendId(cliId))
|
|
109
|
+
return cliId;
|
|
110
|
+
// defaultType 本身被误配成远端后端时兜底到确定可用的本地后端(pty 无外部依赖)。
|
|
111
|
+
if (isRemoteBackendType(resolved)) {
|
|
112
|
+
return !isRemoteBackendType(defaultType) ? defaultType : 'pty';
|
|
113
|
+
}
|
|
90
114
|
return resolved;
|
|
91
115
|
}
|
|
92
116
|
/** Resolve the frozen/live/default backend precedence and then enforce the
|
|
@@ -102,6 +126,17 @@ export function resolvePairedSpawnBackendType(cliId, sessionStamp, botType, defa
|
|
|
102
126
|
export function isRiffBackendSession(ds) {
|
|
103
127
|
return (ds.initConfig?.backendType ?? ds.session.backendType) === 'riff';
|
|
104
128
|
}
|
|
129
|
+
/** Whether the live/persisted session is frozen onto ANY remote backend.
|
|
130
|
+
* Same frozen-stamp rule as isRiffBackendSession. Used by the guards that
|
|
131
|
+
* must reject BEFORE mutating persisted state (e.g. /cd repin): killWorker
|
|
132
|
+
* refuses unprepared live retirement for every remote backend, so a caller
|
|
133
|
+
* that mutates first and retires after would report success while the live
|
|
134
|
+
* generation keeps running against the old state — the split-brain the riff
|
|
135
|
+
* guard has always prevented, now needed for mojo too. */
|
|
136
|
+
export function isRemoteBackendSession(ds) {
|
|
137
|
+
const frozen = ds.initConfig?.backendType ?? ds.session.backendType;
|
|
138
|
+
return frozen !== undefined && isRemoteBackendType(frozen);
|
|
139
|
+
}
|
|
105
140
|
/**
|
|
106
141
|
* How a session's worker is torn down at daemon shutdown, branched on the
|
|
107
142
|
* session's FROZEN backend (via getSessionPersistentBackendType), NOT live config:
|
|
@@ -112,11 +147,14 @@ export function isRiffBackendSession(ds) {
|
|
|
112
147
|
* tears down — e.g. detach-preserving a "herdr" session whose real pane is tmux.
|
|
113
148
|
*/
|
|
114
149
|
export function shutdownBackendDisposition(ds) {
|
|
115
|
-
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
150
|
+
const frozen = ds.initConfig?.backendType ?? ds.session.backendType;
|
|
151
|
+
// Every remote backend must publish its exact final lineage before the local
|
|
152
|
+
// worker exits. Riff may wait for create/follow-up HTTP; Mojo may wait for the
|
|
153
|
+
// first `system/init`. Their backend-specific implementations stay behind the
|
|
154
|
+
// common prepare/abort/commit interface, while the daemon owns one atomic
|
|
155
|
+
// fleet transaction. Detach never cancels the remote session.
|
|
156
|
+
if (frozen && isRemoteBackendType(frozen))
|
|
157
|
+
return 'remote-drain-detach';
|
|
120
158
|
return getSessionPersistentBackendType(ds) ? 'detach' : 'close';
|
|
121
159
|
}
|
|
122
160
|
/** Deterministic backing-session name (`bmx-<sid8>`, same rule across backends). */
|