botmux 3.15.0 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/destroy-result.d.ts +159 -0
- package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
- package/dist/adapters/backend/destroy-result.js +223 -0
- package/dist/adapters/backend/destroy-result.js.map +1 -0
- package/dist/adapters/backend/herdr-backend.d.ts +4 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +23 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/mojo-backend.d.ts +577 -0
- package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-backend.js +2471 -0
- package/dist/adapters/backend/mojo-backend.js.map +1 -0
- package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
- package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-budgets.js +22 -0
- package/dist/adapters/backend/mojo-budgets.js.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.js +486 -0
- package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
- package/dist/adapters/backend/mojo-types.d.ts +542 -0
- package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-types.js +682 -0
- package/dist/adapters/backend/mojo-types.js.map +1 -0
- package/dist/adapters/backend/reproduce-command.js +3 -3
- package/dist/adapters/backend/reproduce-command.js.map +1 -1
- package/dist/adapters/backend/riff-backend.js +1 -1
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +44 -7
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +30 -7
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
- package/dist/adapters/backend/session-backend-selector.js +82 -10
- package/dist/adapters/backend/session-backend-selector.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +101 -6
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zmx-backend.d.ts +11 -0
- package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zmx-backend.js +16 -1
- package/dist/adapters/backend/zmx-backend.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +2 -2
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +7 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/copilot.d.ts +3 -1
- package/dist/adapters/cli/copilot.d.ts.map +1 -1
- package/dist/adapters/cli/copilot.js +23 -5
- package/dist/adapters/cli/copilot.js.map +1 -1
- package/dist/adapters/cli/cursor.d.ts.map +1 -1
- package/dist/adapters/cli/cursor.js +13 -3
- package/dist/adapters/cli/cursor.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +24 -5
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/kimi.d.ts.map +1 -1
- package/dist/adapters/cli/kimi.js +19 -1
- package/dist/adapters/cli/kimi.js.map +1 -1
- package/dist/adapters/cli/mojo.d.ts +28 -0
- package/dist/adapters/cli/mojo.d.ts.map +1 -0
- package/dist/adapters/cli/mojo.js +58 -0
- package/dist/adapters/cli/mojo.js.map +1 -0
- package/dist/adapters/cli/pi.d.ts +6 -4
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +6 -4
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +251 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +254 -1
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +13 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +19 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +3 -3
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +4 -3
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +3 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +22 -6
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +29 -4
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +20 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +30 -4
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/arg-utils.d.ts +5 -0
- package/dist/cli/arg-utils.d.ts.map +1 -1
- package/dist/cli/arg-utils.js +7 -0
- package/dist/cli/arg-utils.js.map +1 -1
- package/dist/cli/bots-list-output.d.ts +130 -2
- package/dist/cli/bots-list-output.d.ts.map +1 -1
- package/dist/cli/bots-list-output.js +173 -27
- package/dist/cli/bots-list-output.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle-env.js +38 -11
- package/dist/cli/daemon-lifecycle-env.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +15 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -1
- package/dist/cli/dashboard-command.js +22 -0
- package/dist/cli/dashboard-command.js.map +1 -1
- package/dist/cli/log-tail.d.ts +54 -0
- package/dist/cli/log-tail.d.ts.map +1 -0
- package/dist/cli/log-tail.js +167 -0
- package/dist/cli/log-tail.js.map +1 -0
- package/dist/cli/pm2-env.d.ts +16 -0
- package/dist/cli/pm2-env.d.ts.map +1 -0
- package/dist/cli/pm2-env.js +63 -0
- package/dist/cli/pm2-env.js.map +1 -0
- package/dist/cli/pm2-fleet-lock.d.ts +26 -0
- package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
- package/dist/cli/pm2-fleet-lock.js +50 -0
- package/dist/cli/pm2-fleet-lock.js.map +1 -0
- package/dist/cli/pm2-god-retirement.d.ts +59 -0
- package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
- package/dist/cli/pm2-god-retirement.js +95 -0
- package/dist/cli/pm2-god-retirement.js.map +1 -0
- package/dist/cli/session-list-wake.d.ts +41 -0
- package/dist/cli/session-list-wake.d.ts.map +1 -0
- package/dist/cli/session-list-wake.js +102 -0
- package/dist/cli/session-list-wake.js.map +1 -0
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +26 -0
- package/dist/cli/workflow.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +933 -115
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +261 -49
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/cli-runtime-update.d.ts +8 -0
- package/dist/core/cli-runtime-update.d.ts.map +1 -1
- package/dist/core/cli-runtime-update.js +127 -8
- package/dist/core/cli-runtime-update.js.map +1 -1
- package/dist/core/close-residual.d.ts +64 -0
- package/dist/core/close-residual.d.ts.map +1 -0
- package/dist/core/close-residual.js +93 -0
- package/dist/core/close-residual.js.map +1 -0
- package/dist/core/closed-session-card.d.ts.map +1 -1
- package/dist/core/closed-session-card.js +11 -3
- package/dist/core/closed-session-card.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +129 -27
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +3 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +230 -1
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/daemon-background-close.d.ts +19 -0
- package/dist/core/daemon-background-close.d.ts.map +1 -0
- package/dist/core/daemon-background-close.js +39 -0
- package/dist/core/daemon-background-close.js.map +1 -0
- package/dist/core/dashboard-command/overview.d.ts +4 -0
- package/dist/core/dashboard-command/overview.d.ts.map +1 -1
- package/dist/core/dashboard-command/overview.js +8 -1
- package/dist/core/dashboard-command/overview.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +373 -41
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +4 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +3 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +37 -0
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +71 -0
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/deferred-schedule-settlement.d.ts +15 -1
- package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
- package/dist/core/deferred-schedule-settlement.js +4 -1
- package/dist/core/deferred-schedule-settlement.js.map +1 -1
- package/dist/core/device-isolation-daemon.d.ts +91 -1
- package/dist/core/device-isolation-daemon.d.ts.map +1 -1
- package/dist/core/device-isolation-daemon.js +346 -2
- package/dist/core/device-isolation-daemon.js.map +1 -1
- package/dist/core/local-terminal-opener.d.ts.map +1 -1
- package/dist/core/local-terminal-opener.js +5 -1
- package/dist/core/local-terminal-opener.js.map +1 -1
- package/dist/core/loopback-target.d.ts +14 -0
- package/dist/core/loopback-target.d.ts.map +1 -0
- package/dist/core/loopback-target.js +20 -0
- package/dist/core/loopback-target.js.map +1 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +16 -2
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/mojo-containment-command.d.ts +20 -0
- package/dist/core/mojo-containment-command.d.ts.map +1 -0
- package/dist/core/mojo-containment-command.js +266 -0
- package/dist/core/mojo-containment-command.js.map +1 -0
- package/dist/core/mojo-containment.d.ts +575 -0
- package/dist/core/mojo-containment.d.ts.map +1 -0
- package/dist/core/mojo-containment.js +1158 -0
- package/dist/core/mojo-containment.js.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.js +175 -0
- package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
- package/dist/core/mojo-session-identity.d.ts +3 -0
- package/dist/core/mojo-session-identity.d.ts.map +1 -0
- package/dist/core/mojo-session-identity.js +126 -0
- package/dist/core/mojo-session-identity.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +32 -8
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +55 -17
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/plugins/mcp/gateway.d.ts +14 -1
- package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
- package/dist/core/plugins/mcp/gateway.js +70 -3
- package/dist/core/plugins/mcp/gateway.js.map +1 -1
- package/dist/core/plugins/mcp/host.d.ts +2 -0
- package/dist/core/plugins/mcp/host.d.ts.map +1 -1
- package/dist/core/plugins/mcp/host.js +2 -0
- package/dist/core/plugins/mcp/host.js.map +1 -1
- package/dist/core/plugins/pm2.d.ts.map +1 -1
- package/dist/core/plugins/pm2.js +16 -3
- package/dist/core/plugins/pm2.js.map +1 -1
- package/dist/core/plugins/service-manager.d.ts +9 -0
- package/dist/core/plugins/service-manager.d.ts.map +1 -1
- package/dist/core/plugins/service-manager.js +33 -16
- package/dist/core/plugins/service-manager.js.map +1 -1
- package/dist/core/preview-port-owner.d.ts +109 -0
- package/dist/core/preview-port-owner.d.ts.map +1 -0
- package/dist/core/preview-port-owner.js +320 -0
- package/dist/core/preview-port-owner.js.map +1 -0
- package/dist/core/remote-cli-ids.d.ts +5 -0
- package/dist/core/remote-cli-ids.d.ts.map +1 -0
- package/dist/core/remote-cli-ids.js +24 -0
- package/dist/core/remote-cli-ids.js.map +1 -0
- package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
- package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
- package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
- package/dist/core/remote-shutdown-detach.js.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
- package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
- package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
- package/dist/core/reply-target.d.ts +16 -1
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +61 -0
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/session-group-birth.d.ts +26 -0
- package/dist/core/session-group-birth.d.ts.map +1 -1
- package/dist/core/session-group-birth.js +81 -4
- package/dist/core/session-group-birth.js.map +1 -1
- package/dist/core/session-manager.d.ts +15 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +259 -5
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-model.d.ts +46 -0
- package/dist/core/session-model.d.ts.map +1 -0
- package/dist/core/session-model.js +42 -0
- package/dist/core/session-model.js.map +1 -0
- package/dist/core/session-owner-reminder.d.ts +63 -0
- package/dist/core/session-owner-reminder.d.ts.map +1 -0
- package/dist/core/session-owner-reminder.js +196 -0
- package/dist/core/session-owner-reminder.js.map +1 -0
- package/dist/core/session-preview-registry.d.ts +53 -0
- package/dist/core/session-preview-registry.d.ts.map +1 -0
- package/dist/core/session-preview-registry.js +82 -0
- package/dist/core/session-preview-registry.js.map +1 -0
- package/dist/core/session-preview.d.ts +114 -0
- package/dist/core/session-preview.d.ts.map +1 -0
- package/dist/core/session-preview.js +184 -0
- package/dist/core/session-preview.js.map +1 -0
- package/dist/core/session-rename.d.ts.map +1 -1
- package/dist/core/session-rename.js +5 -3
- package/dist/core/session-rename.js.map +1 -1
- package/dist/core/session-wake-deadline.d.ts +5 -0
- package/dist/core/session-wake-deadline.d.ts.map +1 -0
- package/dist/core/session-wake-deadline.js +13 -0
- package/dist/core/session-wake-deadline.js.map +1 -0
- package/dist/core/shutdown-budgets.d.ts +7 -6
- package/dist/core/shutdown-budgets.d.ts.map +1 -1
- package/dist/core/shutdown-budgets.js +11 -10
- package/dist/core/shutdown-budgets.js.map +1 -1
- package/dist/core/terminal-control-grant.d.ts +74 -0
- package/dist/core/terminal-control-grant.d.ts.map +1 -0
- package/dist/core/terminal-control-grant.js +183 -0
- package/dist/core/terminal-control-grant.js.map +1 -0
- package/dist/core/terminal-proxy.d.ts.map +1 -1
- package/dist/core/terminal-proxy.js +4 -5
- package/dist/core/terminal-proxy.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +4 -11
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +19 -16
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +36 -29
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +88 -10
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -7
- package/dist/core/types.js.map +1 -1
- package/dist/core/workbench-link.d.ts +81 -0
- package/dist/core/workbench-link.d.ts.map +1 -0
- package/dist/core/workbench-link.js +109 -0
- package/dist/core/workbench-link.js.map +1 -0
- package/dist/core/worker-pool.d.ts +312 -11
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2494 -209
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +6 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +443 -106
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/aggregator.d.ts +33 -3
- package/dist/dashboard/aggregator.d.ts.map +1 -1
- package/dist/dashboard/aggregator.js +93 -17
- package/dist/dashboard/aggregator.js.map +1 -1
- package/dist/dashboard/auth-session-connections.d.ts +59 -0
- package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
- package/dist/dashboard/auth-session-connections.js +109 -0
- package/dist/dashboard/auth-session-connections.js.map +1 -0
- package/dist/dashboard/auth.d.ts +99 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +176 -64
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/control-audit.d.ts +112 -0
- package/dist/dashboard/control-audit.d.ts.map +1 -0
- package/dist/dashboard/control-audit.js +195 -0
- package/dist/dashboard/control-audit.js.map +1 -0
- package/dist/dashboard/control-csrf.d.ts +123 -0
- package/dist/dashboard/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/control-csrf.js +392 -0
- package/dist/dashboard/control-csrf.js.map +1 -0
- package/dist/dashboard/daemon-reconcile.d.ts +26 -0
- package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
- package/dist/dashboard/daemon-reconcile.js +46 -0
- package/dist/dashboard/daemon-reconcile.js.map +1 -0
- package/dist/dashboard/debug-terminal.d.ts.map +1 -1
- package/dist/dashboard/debug-terminal.js +18 -4
- package/dist/dashboard/debug-terminal.js.map +1 -1
- package/dist/dashboard/events-sse.d.ts +60 -0
- package/dist/dashboard/events-sse.d.ts.map +1 -0
- package/dist/dashboard/events-sse.js +63 -0
- package/dist/dashboard/events-sse.js.map +1 -0
- package/dist/dashboard/h5-auth.d.ts +256 -0
- package/dist/dashboard/h5-auth.d.ts.map +1 -0
- package/dist/dashboard/h5-auth.js +825 -0
- package/dist/dashboard/h5-auth.js.map +1 -0
- package/dist/dashboard/managed-spawn.d.ts +36 -0
- package/dist/dashboard/managed-spawn.d.ts.map +1 -0
- package/dist/dashboard/managed-spawn.js +169 -0
- package/dist/dashboard/managed-spawn.js.map +1 -0
- package/dist/dashboard/preview-content-capability.d.ts +41 -0
- package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
- package/dist/dashboard/preview-content-capability.js +127 -0
- package/dist/dashboard/preview-content-capability.js.map +1 -0
- package/dist/dashboard/preview-contract.d.ts +85 -0
- package/dist/dashboard/preview-contract.d.ts.map +1 -0
- package/dist/dashboard/preview-contract.js +198 -0
- package/dist/dashboard/preview-contract.js.map +1 -0
- package/dist/dashboard/preview-guard-page.d.ts +52 -0
- package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
- package/dist/dashboard/preview-guard-page.js +162 -0
- package/dist/dashboard/preview-guard-page.js.map +1 -0
- package/dist/dashboard/preview-interaction.d.ts +57 -0
- package/dist/dashboard/preview-interaction.d.ts.map +1 -0
- package/dist/dashboard/preview-interaction.js +198 -0
- package/dist/dashboard/preview-interaction.js.map +1 -0
- package/dist/dashboard/preview-proxy.d.ts +113 -0
- package/dist/dashboard/preview-proxy.d.ts.map +1 -0
- package/dist/dashboard/preview-proxy.js +543 -0
- package/dist/dashboard/preview-proxy.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts +23 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +90 -21
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/request-identity.d.ts +77 -0
- package/dist/dashboard/request-identity.d.ts.map +1 -0
- package/dist/dashboard/request-identity.js +72 -0
- package/dist/dashboard/request-identity.js.map +1 -0
- package/dist/dashboard/session-cleanup.d.ts +5 -0
- package/dist/dashboard/session-cleanup.d.ts.map +1 -1
- package/dist/dashboard/session-cleanup.js +4 -0
- package/dist/dashboard/session-cleanup.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +5 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +14 -0
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/standing-link.d.ts +76 -0
- package/dist/dashboard/standing-link.d.ts.map +1 -0
- package/dist/dashboard/standing-link.js +111 -0
- package/dist/dashboard/standing-link.js.map +1 -0
- package/dist/dashboard/terminal-control.d.ts +105 -0
- package/dist/dashboard/terminal-control.d.ts.map +1 -0
- package/dist/dashboard/terminal-control.js +296 -0
- package/dist/dashboard/terminal-control.js.map +1 -0
- package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
- package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
- package/dist/dashboard/terminal-front-proxy.js +397 -0
- package/dist/dashboard/terminal-front-proxy.js.map +1 -0
- package/dist/dashboard/terminal-view-capability.d.ts +97 -0
- package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
- package/dist/dashboard/terminal-view-capability.js +145 -0
- package/dist/dashboard/terminal-view-capability.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.js +227 -0
- package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
- package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.js +168 -0
- package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.js +529 -0
- package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.js +27 -0
- package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.js +468 -0
- package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
- package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.js +197 -0
- package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.js +96 -0
- package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.js +439 -0
- package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +63 -2
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +11 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +267 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +6 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/control-csrf.d.ts +4 -0
- package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/web/control-csrf.js +26 -0
- package/dist/dashboard/web/control-csrf.js.map +1 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +2 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +11 -2
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +132 -6
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +3 -2
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +41 -1
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +5 -1
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +3 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +56 -10
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +27 -2
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +43 -4
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +3 -0
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +11 -0
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard/web/update-action.d.ts +12 -0
- package/dist/dashboard/web/update-action.d.ts.map +1 -1
- package/dist/dashboard/web/update-action.js +11 -0
- package/dist/dashboard/web/update-action.js.map +1 -1
- package/dist/dashboard/workbench-doctor.d.ts +114 -0
- package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
- package/dist/dashboard/workbench-doctor.js +620 -0
- package/dist/dashboard/workbench-doctor.js.map +1 -0
- package/dist/dashboard/workbench-ticket.d.ts +165 -0
- package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
- package/dist/dashboard/workbench-ticket.js +495 -0
- package/dist/dashboard/workbench-ticket.js.map +1 -0
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
- package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
- package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
- package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7B3E3US.js → chunk-2W6SCN3M.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-VMWNR3SV.js → chunk-F6KNPF4R.js} +11 -9
- package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
- package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
- package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7DO42GJ.js → chunk-NACP7BMR.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-CPH6VVFY.js → connectors-page-VOISXXII.js} +1 -1
- package/dist/dashboard-web/chunks/{feedback-page-J2FKQ3LK.js → feedback-page-RN6HRZMS.js} +1 -1
- package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-A2LWTKJD.js → insights-page-HJFDYR5N.js} +3 -3
- package/dist/dashboard-web/chunks/{monitor-room-2YR752E3.js → monitor-room-V7PCP47V.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-BGYSKZGM.js → monitoring-page-NKEKVQAP.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-ZZHTEAE4.js → office-page-GVJF73XW.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
- package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-YUC4YLJG.js → roles-page-WQIRSOLZ.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-2L2NKTDJ.js → schedules-page-J2DEY2X6.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
- package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-DQPBBI3T.js → skills-page-HGIFR3IU.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-LQKLDV4K.js → team-federation-page-MR5ZPL4B.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-RVKQIMAP.js → v3-page-GBR5JWPE.js} +2 -2
- package/dist/dashboard-web/chunks/{whiteboards-page-S5K55HRZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
- package/dist/dashboard-web/index.html +8 -1
- package/dist/dashboard-web/style.css +2006 -10
- package/dist/dashboard.js +1006 -263
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +30 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +33 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +31 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +28 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +22 -6
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +118 -24
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +15 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +30 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +48 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +133 -22
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts +14 -6
- package/dist/im/lark/identity-cache.d.ts.map +1 -1
- package/dist/im/lark/identity-cache.js +69 -26
- package/dist/im/lark/identity-cache.js.map +1 -1
- package/dist/im/lark/lark-hosts.d.ts +13 -0
- package/dist/im/lark/lark-hosts.d.ts.map +1 -1
- package/dist/im/lark/lark-hosts.js +16 -0
- package/dist/im/lark/lark-hosts.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts +22 -0
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +53 -3
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/im/lark/sessions-card.d.ts.map +1 -1
- package/dist/im/lark/sessions-card.js +26 -3
- package/dist/im/lark/sessions-card.js.map +1 -1
- package/dist/im/lark/workflow-slash-command.d.ts +6 -0
- package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
- package/dist/im/lark/workflow-slash-command.js +7 -0
- package/dist/im/lark/workflow-slash-command.js.map +1 -1
- package/dist/index-daemon.js +27 -4
- package/dist/index-daemon.js.map +1 -1
- package/dist/index-dashboard.d.ts +3 -0
- package/dist/index-dashboard.d.ts.map +1 -0
- package/dist/index-dashboard.js +94 -0
- package/dist/index-dashboard.js.map +1 -0
- package/dist/platform/team-agents-client.d.ts +199 -0
- package/dist/platform/team-agents-client.d.ts.map +1 -0
- package/dist/platform/team-agents-client.js +263 -0
- package/dist/platform/team-agents-client.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +6 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -1
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +7 -3
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +28 -0
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +13 -4
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +55 -8
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +1 -11
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +27 -3
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bot-profile-store.d.ts +17 -2
- package/dist/services/bot-profile-store.d.ts.map +1 -1
- package/dist/services/bot-profile-store.js +93 -12
- package/dist/services/bot-profile-store.js.map +1 -1
- package/dist/services/bridge-turn-queue.d.ts +10 -1
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +29 -9
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/claude-transcript.d.ts +19 -0
- package/dist/services/claude-transcript.d.ts.map +1 -1
- package/dist/services/claude-transcript.js +57 -5
- package/dist/services/claude-transcript.js.map +1 -1
- package/dist/services/codex-app-threads.d.ts +2 -0
- package/dist/services/codex-app-threads.d.ts.map +1 -1
- package/dist/services/codex-app-threads.js +1 -1
- package/dist/services/codex-app-threads.js.map +1 -1
- package/dist/services/codex-reasoning-effort.d.ts +8 -0
- package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
- package/dist/services/codex-reasoning-effort.js +24 -0
- package/dist/services/codex-reasoning-effort.js.map +1 -1
- package/dist/services/cursor-resume-policy.d.ts.map +1 -1
- package/dist/services/cursor-resume-policy.js +15 -3
- package/dist/services/cursor-resume-policy.js.map +1 -1
- package/dist/services/open-platform-rename.d.ts.map +1 -1
- package/dist/services/open-platform-rename.js +3 -2
- package/dist/services/open-platform-rename.js.map +1 -1
- package/dist/services/ordinary-turn-recovery.d.ts +76 -0
- package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
- package/dist/services/ordinary-turn-recovery.js +349 -0
- package/dist/services/ordinary-turn-recovery.js.map +1 -0
- package/dist/services/resume-fresh-policy.d.ts +17 -0
- package/dist/services/resume-fresh-policy.d.ts.map +1 -0
- package/dist/services/resume-fresh-policy.js +24 -0
- package/dist/services/resume-fresh-policy.js.map +1 -0
- package/dist/services/session-group-title.d.ts +1 -0
- package/dist/services/session-group-title.d.ts.map +1 -1
- package/dist/services/session-group-title.js +16 -1
- package/dist/services/session-group-title.js.map +1 -1
- package/dist/services/session-groups-store.d.ts +30 -0
- package/dist/services/session-groups-store.d.ts.map +1 -1
- package/dist/services/session-groups-store.js +26 -4
- package/dist/services/session-groups-store.js.map +1 -1
- package/dist/services/session-owner-notification.d.ts +9 -0
- package/dist/services/session-owner-notification.d.ts.map +1 -0
- package/dist/services/session-owner-notification.js +10 -0
- package/dist/services/session-owner-notification.js.map +1 -0
- package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
- package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-config-store.js +24 -0
- package/dist/services/session-owner-reminder-config-store.js.map +1 -0
- package/dist/services/session-owner-reminder-store.d.ts +5 -0
- package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-store.js +54 -0
- package/dist/services/session-owner-reminder-store.js.map +1 -0
- package/dist/services/session-store.d.ts +98 -21
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +406 -48
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +9 -5
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +9 -4
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/transcript-resolver.d.ts +1 -1
- package/dist/services/transcript-resolver.d.ts.map +1 -1
- package/dist/services/transcript-resolver.js +6 -1
- package/dist/services/transcript-resolver.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +7 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
- package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
- package/dist/setup/ensure-herdr-integrations.js +21 -3
- package/dist/setup/ensure-herdr-integrations.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +1 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +107 -7
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/skills/definitions.d.ts +17 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +78 -8
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +24 -3
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +64 -15
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/skills/installer.d.ts +18 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +45 -1
- package/dist/skills/installer.js.map +1 -1
- package/dist/types.d.ts +221 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +92 -2
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +195 -1
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/cli-usage-limit.d.ts +25 -14
- package/dist/utils/cli-usage-limit.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.js +25 -15
- package/dist/utils/cli-usage-limit.js.map +1 -1
- package/dist/utils/daemon-rejection-guard.d.ts +35 -0
- package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
- package/dist/utils/daemon-rejection-guard.js +101 -0
- package/dist/utils/daemon-rejection-guard.js.map +1 -0
- package/dist/utils/dashboard-env.d.ts +53 -0
- package/dist/utils/dashboard-env.d.ts.map +1 -0
- package/dist/utils/dashboard-env.js +116 -0
- package/dist/utils/dashboard-env.js.map +1 -0
- package/dist/utils/global-install.d.ts.map +1 -1
- package/dist/utils/global-install.js +61 -5
- package/dist/utils/global-install.js.map +1 -1
- package/dist/utils/install-diagnostics.d.ts +14 -7
- package/dist/utils/install-diagnostics.d.ts.map +1 -1
- package/dist/utils/install-diagnostics.js +20 -11
- package/dist/utils/install-diagnostics.js.map +1 -1
- package/dist/utils/local-dev-update.d.ts +132 -0
- package/dist/utils/local-dev-update.d.ts.map +1 -0
- package/dist/utils/local-dev-update.js +176 -0
- package/dist/utils/local-dev-update.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +12 -1
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/worker.js +1284 -225
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +68 -68
- package/dist/workflows/events/payloads.d.ts +14 -14
- package/dist/workflows/events/schema.d.ts +312 -312
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +7 -0
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/goal-cli.d.ts +3 -0
- package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
- package/dist/workflows/v3/goal-cli.js +11 -0
- package/dist/workflows/v3/goal-cli.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +144 -144
- package/package.json +3 -2
- package/dist/cli/pm2-god-admission.d.ts +0 -8
- package/dist/cli/pm2-god-admission.d.ts.map +0 -1
- package/dist/cli/pm2-god-admission.js +0 -25
- package/dist/cli/pm2-god-admission.js.map +0 -1
- package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
- package/dist/core/riff-shutdown-detach.js.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-65SMZ4QY.js +0 -10
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
- package/dist/dashboard-web/chunks/chunk-IKN6WURK.js +0 -1
- package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-VDOOLS4M.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-7NYPKQSB.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-DYZZMKFL.js +0 -8
- package/dist/dashboard-web/chunks/settings-page-LIULUSMH.js +0 -2
package/README.en.md
CHANGED
|
@@ -60,9 +60,9 @@ More: [Roles & teams](https://deepcoldy.github.io/botmux/en/roles) · [File sand
|
|
|
60
60
|
|
|
61
61
|
## Supported CLIs & Agents
|
|
62
62
|
|
|
63
|
-
Switch with `cliId` in `bots.json`. **20+ adapters**, spanning local CLIs (process-isolated, reachable via `tmux attach`) and API / cloud agents (e.g. Mira, riff — reached over API / remote, not a local process). Representative ones:
|
|
63
|
+
Switch with `cliId` in `bots.json`. **20+ adapters**, spanning local CLIs (process-isolated, reachable via `tmux attach`) and API / cloud agents (e.g. Mira, riff — reached over API / remote, not a local process; mojo is API-driven but executes tools on the bot host by default, set cloud: true for the remote sandbox). Representative ones:
|
|
64
64
|
|
|
65
|
-
`claude-code` · `codex` · `gemini` · `cursor` · `opencode` · `opencode2` · `antigravity` · `copilot` · `grok` · `kimi` · `kiro-cli` · `reasonix` · `dsh` · `aiden` · `coco` (TRAE) · `hermes` · `mira` · `riff` (cloud agent) …
|
|
65
|
+
`claude-code` · `codex` · `gemini` · `cursor` · `opencode` · `opencode2` · `antigravity` · `copilot` · `grok` · `kimi` · `kiro-cli` · `reasonix` · `dsh` · `aiden` · `coco` (TRAE) · `hermes` · `mira` · `riff` (cloud agent) … · `mojo` (API-driven, host execution by default) …
|
|
66
66
|
|
|
67
67
|
The current full set of `cliId`s is authoritative in [`src/adapters/cli/registry.ts`](https://github.com/deepcoldy/botmux/blob/master/src/adapters/cli/registry.ts); per-CLI config and wrapper / gateway setups are in [CLI Adapters](https://deepcoldy.github.io/botmux/en/adapters).
|
|
68
68
|
|
package/README.md
CHANGED
|
@@ -60,9 +60,9 @@ botmux start # 启动 daemon(botmux autostart enable 设开机
|
|
|
60
60
|
|
|
61
61
|
## 支持的 CLI / Agent
|
|
62
62
|
|
|
63
|
-
`bots.json` 里用 `cliId` 一键切换。**20+ 适配器**,覆盖本地 CLI(进程隔离,`tmux attach` 可直连)和 API / 云 Agent(如 Mira、riff——通过 API /
|
|
63
|
+
`bots.json` 里用 `cliId` 一键切换。**20+ 适配器**,覆盖本地 CLI(进程隔离,`tmux attach` 可直连)和 API / 云 Agent(如 Mira、riff——通过 API / 远端接入,非本地进程;mojo 为 API 驱动、默认在宿主机执行工具,可配 cloud: true 走云沙箱)。代表项:
|
|
64
64
|
|
|
65
|
-
`claude-code` · `codex` · `gemini` · `cursor` · `opencode` · `opencode2` · `antigravity` · `copilot` · `grok` · `kimi` · `kiro-cli` · `reasonix` · `dsh` · `aiden` · `coco`(TRAE) · `hermes` · `mira` · `riff`(云 Agent) …
|
|
65
|
+
`claude-code` · `codex` · `gemini` · `cursor` · `opencode` · `opencode2` · `antigravity` · `copilot` · `grok` · `kimi` · `kiro-cli` · `reasonix` · `dsh` · `aiden` · `coco`(TRAE) · `hermes` · `mira` · `riff`(云 Agent) … · `mojo`(API 驱动,默认宿主机执行) …
|
|
66
66
|
|
|
67
67
|
当前完整 `cliId` 以 [`src/adapters/cli/registry.ts`](https://github.com/deepcoldy/botmux/blob/master/src/adapters/cli/registry.ts) 为准;各 CLI 的配置与套 wrapper / 网关方法见 [多 CLI 适配器](https://deepcoldy.github.io/botmux/adapters)。
|
|
68
68
|
|
package/dist/.runtime-build-id
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
fcbef93f36253ac754d6cd75cc01921945ebd0576db7947c727971d258a0ed82
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a worker must read a backend's destroySession() answer.
|
|
3
|
+
*
|
|
4
|
+
* Both decisions below used to be inline in worker.ts, where nothing could reach
|
|
5
|
+
* them from a test: the malformed-result branch had no coverage at all, and the
|
|
6
|
+
* rollback decision was a bare `if (!result.ok)`. They live here so the exact
|
|
7
|
+
* production logic is executable in isolation.
|
|
8
|
+
*/
|
|
9
|
+
import type { SessionDestroyResult } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Normalize a raw destroySession() return value.
|
|
12
|
+
*
|
|
13
|
+
* Local multiplexers legitimately return void: their destroy is a synchronous,
|
|
14
|
+
* already-completed teardown, so "no result" really does mean success.
|
|
15
|
+
*
|
|
16
|
+
* Remote backends (mojo, riff) are the opposite. Their teardown is an
|
|
17
|
+
* asynchronous cancellation reportable only through SessionDestroyResult, so a
|
|
18
|
+
* missing or malformed result is an UNKNOWN outcome -- and treating unknown as
|
|
19
|
+
* success is what lets the daemon publish a closed row while a credentialed
|
|
20
|
+
* remote session (and its local child) keeps running.
|
|
21
|
+
*/
|
|
22
|
+
export declare function normalizeDestroyResult(raw: unknown, opts: {
|
|
23
|
+
remote: boolean;
|
|
24
|
+
}): SessionDestroyResult;
|
|
25
|
+
/**
|
|
26
|
+
* Is the close itself retryable — i.e. did nothing irreversible happen?
|
|
27
|
+
*
|
|
28
|
+
* This is the CLOSE-side question only. It must never be used to decide whether
|
|
29
|
+
* writes may be admitted again; see mayRestoreWriteAdmission for why the two
|
|
30
|
+
* answers legitimately differ.
|
|
31
|
+
*/
|
|
32
|
+
export declare function mayRetryClose(result: SessionDestroyResult): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* May a FAILED prepare restore write admission?
|
|
35
|
+
*
|
|
36
|
+
* Deliberately keyed on `admission`, NOT on `recovery`. Reading `recovery` here
|
|
37
|
+
* conflated two different questions and produced a real fencing hole: an
|
|
38
|
+
* unproven local child termination is `retryable` (the irreversible remote
|
|
39
|
+
* cancel has not run, so the close may be retried) yet a credentialed process
|
|
40
|
+
* may still be alive, so admitting a write would layer a fresh turn on top of a
|
|
41
|
+
* live orphan. Rolling back on every ok:false was worse still — it re-opened
|
|
42
|
+
* writes on a lineage already cancelled remotely.
|
|
43
|
+
*
|
|
44
|
+
* When `admission` is absent it is derived from `recovery`, which keeps the
|
|
45
|
+
* historical behaviour for results that predate the field.
|
|
46
|
+
*/
|
|
47
|
+
export declare function mayRestoreWriteAdmission(result: SessionDestroyResult): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Did abortDestroySession() actually restore write admission?
|
|
50
|
+
*
|
|
51
|
+
* A rollback can be legitimately REFUSED (the backend is holding a latched fence
|
|
52
|
+
* because a credentialed local subtree could not be proven dead). The daemon used
|
|
53
|
+
* to infer success from "the worker answered without throwing", so a refused
|
|
54
|
+
* rollback was recorded durably as `admissionRestored: true` — the journal then
|
|
55
|
+
* claimed admission was back while write() kept returning false.
|
|
56
|
+
*
|
|
57
|
+
* Legacy backends return void from abortDestroySession, which genuinely means
|
|
58
|
+
* "restored"; that is the ONLY unknown shape treated as success. Anything else
|
|
59
|
+
* malformed fails closed, because a fence wrongly cleared is unrecoverable while
|
|
60
|
+
* a fence wrongly kept is merely retried.
|
|
61
|
+
*/
|
|
62
|
+
export declare function interpretAbortOutcome(raw: unknown): {
|
|
63
|
+
admissionRestored: boolean;
|
|
64
|
+
reason?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* How a restart's teardown ended.
|
|
68
|
+
*
|
|
69
|
+
* `absent` is the local-backend case: destroySession is synchronous (or missing),
|
|
70
|
+
* so there is no promise to race and nothing to be uncertain about.
|
|
71
|
+
*/
|
|
72
|
+
export type RestartTeardownOutcome = {
|
|
73
|
+
kind: 'absent';
|
|
74
|
+
} | {
|
|
75
|
+
kind: 'settled';
|
|
76
|
+
raw: unknown;
|
|
77
|
+
} | {
|
|
78
|
+
kind: 'rejected';
|
|
79
|
+
error: unknown;
|
|
80
|
+
} | {
|
|
81
|
+
kind: 'timeout';
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* May restartCliProcess() respawn after this teardown?
|
|
85
|
+
*
|
|
86
|
+
* restartCliProcess used to compute the teardown and throw it away:
|
|
87
|
+
*
|
|
88
|
+
* try { await Promise.race([teardown, sleep(22_000)]); } catch {}
|
|
89
|
+
* killCli(...); // respawns regardless
|
|
90
|
+
*
|
|
91
|
+
* which laundered three distinct failures into "clean close": a resolved
|
|
92
|
+
* `ok: false` (never read), a won timeout (the timeout IS the signal that teardown
|
|
93
|
+
* is unfinished), and a rejection (swallowed by `catch {}`). All three then reached
|
|
94
|
+
* killCli() + respawn, so a fresh lineage — and a fresh env nonce — was layered on
|
|
95
|
+
* top of a subtree that may still hold the injected credential, while the old tree
|
|
96
|
+
* became unenumerable.
|
|
97
|
+
*
|
|
98
|
+
* This is the same fail-closed rule the close path uses, applied to restart: an
|
|
99
|
+
* unproven teardown must not silently start a second lineage. Note the deliberate
|
|
100
|
+
* asymmetry with the close path — the answer here is only "may we respawn?" and it
|
|
101
|
+
* NEVER authorises abortDestroySession(), because rollback is not the legitimate
|
|
102
|
+
* exit from an uncertain teardown.
|
|
103
|
+
*/
|
|
104
|
+
export declare function classifyRestartTeardown(outcome: RestartTeardownOutcome, opts: {
|
|
105
|
+
remote: boolean;
|
|
106
|
+
}): {
|
|
107
|
+
mayRespawn: boolean;
|
|
108
|
+
reason?: string;
|
|
109
|
+
recovery?: 'retryable' | 'uncertain' | 'irreversible';
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Why a local termination could not be proven, and therefore what the close may do.
|
|
113
|
+
*
|
|
114
|
+
* Two failures look identical at the call site and must NOT be punished the same:
|
|
115
|
+
*
|
|
116
|
+
* - "the platform can never prove it" — there is no instrument. On a host with
|
|
117
|
+
* no /proc (Darwin), the scan answers `unsupported-platform` FOREVER, so a
|
|
118
|
+
* latched write fence turns into a permanent wedge: every close fails, every
|
|
119
|
+
* retry fails for the same unchangeable reason, and write() never returns true
|
|
120
|
+
* again. Nothing about that state is evidence of a survivor; it is evidence
|
|
121
|
+
* that we cannot look.
|
|
122
|
+
* - "it should have been provable and was not" — `alive` is a positive sighting,
|
|
123
|
+
* and `unscannable` is a transient or partial read failure on a host that CAN
|
|
124
|
+
* normally enumerate. Both mean a credentialed process may be running right
|
|
125
|
+
* now, and both may resolve on a retry, so both must keep the fence.
|
|
126
|
+
*
|
|
127
|
+
* The residual verdict is only safe because the credential-boundary question moves
|
|
128
|
+
* to the layer that can actually hold it: an unprovable containment handle is
|
|
129
|
+
* persisted and can NEVER be released, so the device-isolation blocker survives the
|
|
130
|
+
* closed row. Without that backstop this would be a fail-open hole, so do not reuse
|
|
131
|
+
* `residual-close` anywhere the blocker is not retained.
|
|
132
|
+
*
|
|
133
|
+
* Takes the kind as a plain string on purpose: this keeps the decision free of any
|
|
134
|
+
* import from the process-tree module, so the two files can be edited and merged
|
|
135
|
+
* independently. Unknown and absent kinds FAIL CLOSED.
|
|
136
|
+
*/
|
|
137
|
+
export declare function classifyUnprovenTermination(kind: string | undefined): {
|
|
138
|
+
outcome: 'residual-close' | 'fence';
|
|
139
|
+
reason: string;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* The `close_result` payload a worker sends back for a close prepare.
|
|
143
|
+
*
|
|
144
|
+
* This is a function, not an inline object literal, because the daemon owns the
|
|
145
|
+
* rollback decision: dropping `recovery` here silently laundered every
|
|
146
|
+
* `uncertain` / `irreversible` verdict back into `retryable` at the IPC boundary,
|
|
147
|
+
* and an inline literal inside worker.ts was not reachable from any test.
|
|
148
|
+
*/
|
|
149
|
+
export declare function buildCloseResultMessage(requestId: string, result: SessionDestroyResult): {
|
|
150
|
+
type: 'close_result';
|
|
151
|
+
requestId: string;
|
|
152
|
+
ok: boolean;
|
|
153
|
+
taskId?: string;
|
|
154
|
+
error?: string;
|
|
155
|
+
recovery?: 'retryable' | 'uncertain' | 'irreversible';
|
|
156
|
+
admission?: 'restorable' | 'fenced';
|
|
157
|
+
residual?: 'local_subtree_unprovable_on_platform' | 'local_subtree_boundary_unproven';
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=destroy-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy-result.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/destroy-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACxB,oBAAoB,CAuBtB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAGnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAI9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,iBAAiB,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAUnG;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACxB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,CAAA;CAAE,CA4BjG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB;IAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBzD;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,GAC3B;IACD,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC;IACtD,SAAS,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,EAAE,sCAAsC,GAAG,iCAAiC,CAAC;CACvF,CAqBA"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize a raw destroySession() return value.
|
|
3
|
+
*
|
|
4
|
+
* Local multiplexers legitimately return void: their destroy is a synchronous,
|
|
5
|
+
* already-completed teardown, so "no result" really does mean success.
|
|
6
|
+
*
|
|
7
|
+
* Remote backends (mojo, riff) are the opposite. Their teardown is an
|
|
8
|
+
* asynchronous cancellation reportable only through SessionDestroyResult, so a
|
|
9
|
+
* missing or malformed result is an UNKNOWN outcome -- and treating unknown as
|
|
10
|
+
* success is what lets the daemon publish a closed row while a credentialed
|
|
11
|
+
* remote session (and its local child) keeps running.
|
|
12
|
+
*/
|
|
13
|
+
export function normalizeDestroyResult(raw, opts) {
|
|
14
|
+
// typeof, NOT `'ok' in raw`: a truthy non-boolean such as { ok: 'yes' }
|
|
15
|
+
// satisfies the `in` test and then passes a plain `result.ok` check, so a
|
|
16
|
+
// malformed payload was read as a successful teardown.
|
|
17
|
+
const structured = !!raw
|
|
18
|
+
&& typeof raw === 'object'
|
|
19
|
+
&& typeof raw.ok === 'boolean';
|
|
20
|
+
if (structured)
|
|
21
|
+
return raw;
|
|
22
|
+
// `uncertain`, NOT `retryable`: the comment above already called this outcome
|
|
23
|
+
// UNKNOWN, but returning retryable told the caller to roll back and re-open
|
|
24
|
+
// write admission — on a session whose remote teardown may well have completed.
|
|
25
|
+
// An unknown outcome must fence, not roll back.
|
|
26
|
+
// `admission: 'fenced'` is stated EXPLICITLY rather than left to the
|
|
27
|
+
// recovery-derived default: this is the one outcome where we know nothing at
|
|
28
|
+
// all, so the fence must not depend on a second field keeping its value.
|
|
29
|
+
return opts.remote
|
|
30
|
+
? {
|
|
31
|
+
ok: false,
|
|
32
|
+
error: 'remote_close_result_missing',
|
|
33
|
+
recovery: 'uncertain',
|
|
34
|
+
admission: 'fenced',
|
|
35
|
+
}
|
|
36
|
+
: { ok: true };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Is the close itself retryable — i.e. did nothing irreversible happen?
|
|
40
|
+
*
|
|
41
|
+
* This is the CLOSE-side question only. It must never be used to decide whether
|
|
42
|
+
* writes may be admitted again; see mayRestoreWriteAdmission for why the two
|
|
43
|
+
* answers legitimately differ.
|
|
44
|
+
*/
|
|
45
|
+
export function mayRetryClose(result) {
|
|
46
|
+
if (result.ok)
|
|
47
|
+
return false;
|
|
48
|
+
return (result.recovery ?? 'retryable') !== 'irreversible';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* May a FAILED prepare restore write admission?
|
|
52
|
+
*
|
|
53
|
+
* Deliberately keyed on `admission`, NOT on `recovery`. Reading `recovery` here
|
|
54
|
+
* conflated two different questions and produced a real fencing hole: an
|
|
55
|
+
* unproven local child termination is `retryable` (the irreversible remote
|
|
56
|
+
* cancel has not run, so the close may be retried) yet a credentialed process
|
|
57
|
+
* may still be alive, so admitting a write would layer a fresh turn on top of a
|
|
58
|
+
* live orphan. Rolling back on every ok:false was worse still — it re-opened
|
|
59
|
+
* writes on a lineage already cancelled remotely.
|
|
60
|
+
*
|
|
61
|
+
* When `admission` is absent it is derived from `recovery`, which keeps the
|
|
62
|
+
* historical behaviour for results that predate the field.
|
|
63
|
+
*/
|
|
64
|
+
export function mayRestoreWriteAdmission(result) {
|
|
65
|
+
if (result.ok)
|
|
66
|
+
return false;
|
|
67
|
+
if (result.admission)
|
|
68
|
+
return result.admission === 'restorable';
|
|
69
|
+
return (result.recovery ?? 'retryable') === 'retryable';
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Did abortDestroySession() actually restore write admission?
|
|
73
|
+
*
|
|
74
|
+
* A rollback can be legitimately REFUSED (the backend is holding a latched fence
|
|
75
|
+
* because a credentialed local subtree could not be proven dead). The daemon used
|
|
76
|
+
* to infer success from "the worker answered without throwing", so a refused
|
|
77
|
+
* rollback was recorded durably as `admissionRestored: true` — the journal then
|
|
78
|
+
* claimed admission was back while write() kept returning false.
|
|
79
|
+
*
|
|
80
|
+
* Legacy backends return void from abortDestroySession, which genuinely means
|
|
81
|
+
* "restored"; that is the ONLY unknown shape treated as success. Anything else
|
|
82
|
+
* malformed fails closed, because a fence wrongly cleared is unrecoverable while
|
|
83
|
+
* a fence wrongly kept is merely retried.
|
|
84
|
+
*/
|
|
85
|
+
export function interpretAbortOutcome(raw) {
|
|
86
|
+
if (raw === undefined || raw === null)
|
|
87
|
+
return { admissionRestored: true };
|
|
88
|
+
if (typeof raw === 'object' && typeof raw.admissionRestored === 'boolean') {
|
|
89
|
+
const { admissionRestored, reason } = raw;
|
|
90
|
+
return {
|
|
91
|
+
admissionRestored,
|
|
92
|
+
...(typeof reason === 'string' && reason ? { reason } : {}),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return { admissionRestored: false, reason: 'abort_result_malformed' };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* May restartCliProcess() respawn after this teardown?
|
|
99
|
+
*
|
|
100
|
+
* restartCliProcess used to compute the teardown and throw it away:
|
|
101
|
+
*
|
|
102
|
+
* try { await Promise.race([teardown, sleep(22_000)]); } catch {}
|
|
103
|
+
* killCli(...); // respawns regardless
|
|
104
|
+
*
|
|
105
|
+
* which laundered three distinct failures into "clean close": a resolved
|
|
106
|
+
* `ok: false` (never read), a won timeout (the timeout IS the signal that teardown
|
|
107
|
+
* is unfinished), and a rejection (swallowed by `catch {}`). All three then reached
|
|
108
|
+
* killCli() + respawn, so a fresh lineage — and a fresh env nonce — was layered on
|
|
109
|
+
* top of a subtree that may still hold the injected credential, while the old tree
|
|
110
|
+
* became unenumerable.
|
|
111
|
+
*
|
|
112
|
+
* This is the same fail-closed rule the close path uses, applied to restart: an
|
|
113
|
+
* unproven teardown must not silently start a second lineage. Note the deliberate
|
|
114
|
+
* asymmetry with the close path — the answer here is only "may we respawn?" and it
|
|
115
|
+
* NEVER authorises abortDestroySession(), because rollback is not the legitimate
|
|
116
|
+
* exit from an uncertain teardown.
|
|
117
|
+
*/
|
|
118
|
+
export function classifyRestartTeardown(outcome, opts) {
|
|
119
|
+
switch (outcome.kind) {
|
|
120
|
+
case 'absent':
|
|
121
|
+
return { mayRespawn: true };
|
|
122
|
+
case 'timeout':
|
|
123
|
+
// Bounded wait expired: teardown is still in flight, so its side effects are
|
|
124
|
+
// unknown. Respawning here is what produced a second credentialed lineage.
|
|
125
|
+
return { mayRespawn: false, reason: 'restart_teardown_timeout', recovery: 'uncertain' };
|
|
126
|
+
case 'rejected':
|
|
127
|
+
return {
|
|
128
|
+
mayRespawn: false,
|
|
129
|
+
reason: outcome.error instanceof Error
|
|
130
|
+
? `restart_teardown_threw: ${outcome.error.message}`
|
|
131
|
+
: `restart_teardown_threw: ${String(outcome.error)}`,
|
|
132
|
+
recovery: 'uncertain',
|
|
133
|
+
};
|
|
134
|
+
case 'settled': {
|
|
135
|
+
// Reuses the close path's normalizer so a malformed remote answer is UNKNOWN
|
|
136
|
+
// here too, rather than a truthy object passing for success.
|
|
137
|
+
const result = normalizeDestroyResult(outcome.raw, { remote: opts.remote });
|
|
138
|
+
if (result.ok)
|
|
139
|
+
return { mayRespawn: true };
|
|
140
|
+
return {
|
|
141
|
+
mayRespawn: false,
|
|
142
|
+
reason: result.error ?? 'restart_teardown_failed',
|
|
143
|
+
recovery: result.recovery ?? 'retryable',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Why a local termination could not be proven, and therefore what the close may do.
|
|
150
|
+
*
|
|
151
|
+
* Two failures look identical at the call site and must NOT be punished the same:
|
|
152
|
+
*
|
|
153
|
+
* - "the platform can never prove it" — there is no instrument. On a host with
|
|
154
|
+
* no /proc (Darwin), the scan answers `unsupported-platform` FOREVER, so a
|
|
155
|
+
* latched write fence turns into a permanent wedge: every close fails, every
|
|
156
|
+
* retry fails for the same unchangeable reason, and write() never returns true
|
|
157
|
+
* again. Nothing about that state is evidence of a survivor; it is evidence
|
|
158
|
+
* that we cannot look.
|
|
159
|
+
* - "it should have been provable and was not" — `alive` is a positive sighting,
|
|
160
|
+
* and `unscannable` is a transient or partial read failure on a host that CAN
|
|
161
|
+
* normally enumerate. Both mean a credentialed process may be running right
|
|
162
|
+
* now, and both may resolve on a retry, so both must keep the fence.
|
|
163
|
+
*
|
|
164
|
+
* The residual verdict is only safe because the credential-boundary question moves
|
|
165
|
+
* to the layer that can actually hold it: an unprovable containment handle is
|
|
166
|
+
* persisted and can NEVER be released, so the device-isolation blocker survives the
|
|
167
|
+
* closed row. Without that backstop this would be a fail-open hole, so do not reuse
|
|
168
|
+
* `residual-close` anywhere the blocker is not retained.
|
|
169
|
+
*
|
|
170
|
+
* Takes the kind as a plain string on purpose: this keeps the decision free of any
|
|
171
|
+
* import from the process-tree module, so the two files can be edited and merged
|
|
172
|
+
* independently. Unknown and absent kinds FAIL CLOSED.
|
|
173
|
+
*/
|
|
174
|
+
export function classifyUnprovenTermination(kind) {
|
|
175
|
+
if (kind === 'unsupported-platform') {
|
|
176
|
+
return {
|
|
177
|
+
outcome: 'residual-close',
|
|
178
|
+
reason: 'mojo_local_termination_unprovable_on_platform',
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
// Everything else, including an unrecognised kind, keeps the fence. A fence
|
|
182
|
+
// wrongly kept costs a retry; a fence wrongly released strands a credentialed
|
|
183
|
+
// process behind a row that claims to be closed.
|
|
184
|
+
return {
|
|
185
|
+
outcome: 'fence',
|
|
186
|
+
reason: kind === 'alive'
|
|
187
|
+
? 'mojo_local_child_termination_unproven'
|
|
188
|
+
: kind === 'unscannable'
|
|
189
|
+
? 'mojo_local_termination_unscannable'
|
|
190
|
+
: 'mojo_local_child_termination_unproven',
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* The `close_result` payload a worker sends back for a close prepare.
|
|
195
|
+
*
|
|
196
|
+
* This is a function, not an inline object literal, because the daemon owns the
|
|
197
|
+
* rollback decision: dropping `recovery` here silently laundered every
|
|
198
|
+
* `uncertain` / `irreversible` verdict back into `retryable` at the IPC boundary,
|
|
199
|
+
* and an inline literal inside worker.ts was not reachable from any test.
|
|
200
|
+
*/
|
|
201
|
+
export function buildCloseResultMessage(requestId, result) {
|
|
202
|
+
return {
|
|
203
|
+
type: 'close_result',
|
|
204
|
+
requestId,
|
|
205
|
+
ok: result.ok,
|
|
206
|
+
...(result.taskId ? { taskId: result.taskId } : {}),
|
|
207
|
+
...(result.error ? { error: result.error } : {}),
|
|
208
|
+
...(result.recovery ? { recovery: result.recovery } : {}),
|
|
209
|
+
// `admission` must cross the IPC boundary for the same reason `recovery`
|
|
210
|
+
// does: dropping it here would let the daemon re-derive "retryable ⇒ writes
|
|
211
|
+
// are fine" and undo a fence the backend deliberately kept.
|
|
212
|
+
...(result.admission ? { admission: result.admission } : {}),
|
|
213
|
+
// `residual` must cross too, and dropping it was NOT symmetric with dropping
|
|
214
|
+
// `recovery`: an ok:true close whose local subtree was never proven gone would
|
|
215
|
+
// arrive as a bare success, so the daemon published an ORDINARY closed row.
|
|
216
|
+
// That is the fail-open this round exists to remove -- the backend kept the
|
|
217
|
+
// containment handle, the row said the session was fully gone, and the two
|
|
218
|
+
// disagreed about a still-credentialed process. The daemon cannot re-derive
|
|
219
|
+
// this: only the backend saw the evidence grade.
|
|
220
|
+
...(result.residual ? { residual: result.residual } : {}),
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=destroy-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy-result.js","sourceRoot":"","sources":["../../../src/adapters/backend/destroy-result.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAY,EACZ,IAAyB;IAEzB,wEAAwE;IACxE,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG;WACnB,OAAO,GAAG,KAAK,QAAQ;WACvB,OAAQ,GAAwB,CAAC,EAAE,KAAK,SAAS,CAAC;IACvD,IAAI,UAAU;QAAE,OAAO,GAA2B,CAAC;IACnD,8EAA8E;IAC9E,4EAA4E;IAC5E,gFAAgF;IAChF,gDAAgD;IAChD,qEAAqE;IACrE,6EAA6E;IAC7E,yEAAyE;IACzE,OAAO,IAAI,CAAC,MAAM;QAChB,CAAC,CAAC;YACA,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,6BAA6B;YACpC,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,QAAQ;SACpB;QACD,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAA4B;IACxD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,cAAc,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,WAAW,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAC1E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAQ,GAAuC,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC/G,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,GAAuD,CAAC;QAC9F,OAAO;YACL,iBAAiB;YACjB,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;AACxE,CAAC;AAcD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA+B,EAC/B,IAAyB;IAEzB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC9B,KAAK,SAAS;YACZ,6EAA6E;YAC7E,2EAA2E;YAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC1F,KAAK,UAAU;YACb,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,KAAK;oBACpC,CAAC,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;oBACpD,CAAC,CAAC,2BAA2B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtD,QAAQ,EAAE,WAAW;aACtB,CAAC;QACJ,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,6EAA6E;YAC7E,6DAA6D;YAC7D,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5E,IAAI,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC3C,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,yBAAyB;gBACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,WAAW;aACzC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAwB;IAExB,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,gBAAgB;YACzB,MAAM,EAAE,+CAA+C;SACxD,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,iDAAiD;IACjD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,IAAI,KAAK,OAAO;YACtB,CAAC,CAAC,uCAAuC;YACzC,CAAC,CAAC,IAAI,KAAK,aAAa;gBACtB,CAAC,CAAC,oCAAoC;gBACtC,CAAC,CAAC,uCAAuC;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,MAA4B;IAW5B,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,SAAS;QACT,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,yEAAyE;QACzE,4EAA4E;QAC5E,4DAA4D;QAC5D,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,6EAA6E;QAC7E,+EAA+E;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,4EAA4E;QAC5E,iDAAiD;QACjD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC"}
|
|
@@ -57,6 +57,10 @@ export declare class HerdrBackend implements SessionBackend {
|
|
|
57
57
|
claudeJsonlPath?: string;
|
|
58
58
|
cliPid?: number;
|
|
59
59
|
cliCwd?: string;
|
|
60
|
+
/** Default managed agent name for a Botmux-launched CLI (the single source of
|
|
61
|
+
* truth shared by the constructor default and the selector's agent-precise
|
|
62
|
+
* reattach probe). */
|
|
63
|
+
static defaultAgentName(): string;
|
|
60
64
|
constructor(sessionName: string, opts?: HerdrBackendOptions);
|
|
61
65
|
static isAvailable(): boolean;
|
|
62
66
|
static sessionName(sessionId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herdr-backend.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/herdr-backend.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKvF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqCD,QAAA,MAAM,gBAAgB,iDAAkD,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAsB/D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAqPD,qBAAa,YAAa,YAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"herdr-backend.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/herdr-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -315,10 +315,16 @@ export class HerdrBackend {
|
|
|
315
315
|
claudeJsonlPath;
|
|
316
316
|
cliPid;
|
|
317
317
|
cliCwd;
|
|
318
|
+
/** Default managed agent name for a Botmux-launched CLI (the single source of
|
|
319
|
+
* truth shared by the constructor default and the selector's agent-precise
|
|
320
|
+
* reattach probe). */
|
|
321
|
+
static defaultAgentName() {
|
|
322
|
+
return 'botmux';
|
|
323
|
+
}
|
|
318
324
|
constructor(sessionName, opts = {}) {
|
|
319
325
|
this.sessionName = sessionName;
|
|
320
326
|
this.opts = opts;
|
|
321
|
-
this.agentName = opts.agentName ??
|
|
327
|
+
this.agentName = opts.agentName ?? HerdrBackend.defaultAgentName();
|
|
322
328
|
if (opts.externalTarget?.paneId)
|
|
323
329
|
this.paneId = opts.externalTarget.paneId;
|
|
324
330
|
}
|
|
@@ -461,6 +467,22 @@ export class HerdrBackend {
|
|
|
461
467
|
this.actuallyReattached = true;
|
|
462
468
|
this.paneId = existing.pane_id;
|
|
463
469
|
}
|
|
470
|
+
else if (this.opts.isReattach) {
|
|
471
|
+
// FREEZE the reattach decision (mirrors ZmxBackend: "never turn a stale
|
|
472
|
+
// reattach into a new CLI after the backing session disappeared"). The
|
|
473
|
+
// worker predicted reattach from an earlier probe and therefore SKIPPED
|
|
474
|
+
// the cold-path setup that only runs on !willReattachPersistent — the
|
|
475
|
+
// PENDING generation proof AND the credential-only Seatbelt/bwrap wrapper.
|
|
476
|
+
// If the `botmux` agent vanished between that probe and here, silently
|
|
477
|
+
// `agent start`ing a fresh CLI would launch it WITHOUT the credential
|
|
478
|
+
// boundary (unsafe on an enrolled host) and leave the old committed marker
|
|
479
|
+
// in place to later reattach it as "isolated". Post-spawn teardown can't
|
|
480
|
+
// undo an already-executed unwrapped CLI, so we must refuse HERE: throw so
|
|
481
|
+
// the worker's next launch takes the cold path (write PENDING + assemble
|
|
482
|
+
// the wrapper BEFORE creating the agent).
|
|
483
|
+
throw new Error(`herdr agent ${this.agentName} in ${this.sessionName} disappeared before reattach; `
|
|
484
|
+
+ `refusing to silently start a fresh (unwrapped) generation`);
|
|
485
|
+
}
|
|
464
486
|
else if (herdrUsesPaneAgentStart()) {
|
|
465
487
|
this.paneId = this.startPaneAgent(bin, args, opts);
|
|
466
488
|
}
|