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,183 @@
|
|
|
1
|
+
import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
const TOKEN_PREFIX = 'bmxg1';
|
|
3
|
+
const GRANT_DOMAIN = 'botmux-terminal-control-grant-v1\0';
|
|
4
|
+
const MAX_GRANT_BYTES = 4_096;
|
|
5
|
+
function boundedIdentity(value) {
|
|
6
|
+
return value.length > 0 && value.length <= 512 && !/[\r\n\0]/.test(value);
|
|
7
|
+
}
|
|
8
|
+
const BASE_GRANT_KEYS = [
|
|
9
|
+
'authSessionId', 'expiresAt', 'grantId', 'issuedAt', 'scope', 'sessionId', 'userId', 'version',
|
|
10
|
+
];
|
|
11
|
+
/** A browser-visible view capability carries exactly two extra claims. */
|
|
12
|
+
const AUDIENCED_GRANT_KEYS = [...BASE_GRANT_KEYS, 'audience', 'workerGeneration'].sort();
|
|
13
|
+
function sameKeys(keys, expected) {
|
|
14
|
+
return keys.length === expected.length && keys.every((key, index) => key === expected[index]);
|
|
15
|
+
}
|
|
16
|
+
function exactGrantClaims(value) {
|
|
17
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
18
|
+
return false;
|
|
19
|
+
const record = value;
|
|
20
|
+
const keys = Object.keys(record).sort();
|
|
21
|
+
const audienced = sameKeys(keys, AUDIENCED_GRANT_KEYS);
|
|
22
|
+
if (!audienced && !sameKeys(keys, BASE_GRANT_KEYS))
|
|
23
|
+
return false;
|
|
24
|
+
if (audienced) {
|
|
25
|
+
// Only a READ capability may name an audience: the audience exists so a
|
|
26
|
+
// grant can be handed to a browser, and a write grant never may be.
|
|
27
|
+
if (record.audience !== 'central' || record.scope !== 'read')
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof record.workerGeneration !== 'string'
|
|
30
|
+
|| !/^[A-Za-z0-9_-]{16,128}$/.test(record.workerGeneration)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return record.version === 1
|
|
35
|
+
&& (record.scope === 'read' || record.scope === 'write')
|
|
36
|
+
&& typeof record.sessionId === 'string' && boundedIdentity(record.sessionId)
|
|
37
|
+
&& typeof record.userId === 'string' && boundedIdentity(record.userId)
|
|
38
|
+
&& typeof record.authSessionId === 'string' && boundedIdentity(record.authSessionId)
|
|
39
|
+
&& typeof record.grantId === 'string' && /^[A-Za-z0-9_-]{16,128}$/.test(record.grantId)
|
|
40
|
+
&& Number.isSafeInteger(record.issuedAt) && record.issuedAt >= 0
|
|
41
|
+
&& Number.isSafeInteger(record.expiresAt) && record.expiresAt > record.issuedAt;
|
|
42
|
+
}
|
|
43
|
+
function signature(secret, payload) {
|
|
44
|
+
return createHmac('sha256', secret).update(GRANT_DOMAIN).update(payload).digest();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mint a dashboard-to-worker grant. The returned capability is for the
|
|
48
|
+
* loopback proxy hop only and must never be returned in an API body or URL.
|
|
49
|
+
*/
|
|
50
|
+
export function issueTerminalControlGrant(secret, input) {
|
|
51
|
+
if (!secret)
|
|
52
|
+
throw new Error('terminal control secret is required');
|
|
53
|
+
const claims = {
|
|
54
|
+
version: 1,
|
|
55
|
+
scope: input.scope,
|
|
56
|
+
sessionId: input.sessionId,
|
|
57
|
+
userId: input.userId,
|
|
58
|
+
authSessionId: input.authSessionId,
|
|
59
|
+
grantId: input.grantId ?? randomBytes(18).toString('base64url'),
|
|
60
|
+
issuedAt: input.issuedAt,
|
|
61
|
+
expiresAt: input.expiresAt,
|
|
62
|
+
// Kept off the object entirely when absent so the signed key set stays
|
|
63
|
+
// exactly one of the two accepted shapes.
|
|
64
|
+
...(input.audience === undefined && input.workerGeneration === undefined
|
|
65
|
+
? {}
|
|
66
|
+
: { audience: input.audience, workerGeneration: input.workerGeneration }),
|
|
67
|
+
};
|
|
68
|
+
if (!exactGrantClaims(claims))
|
|
69
|
+
throw new Error('invalid terminal control grant claims');
|
|
70
|
+
const payload = Buffer.from(JSON.stringify(claims), 'utf8').toString('base64url');
|
|
71
|
+
return `${TOKEN_PREFIX}.${payload}.${signature(secret, payload).toString('base64url')}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Cheap shape probe: does this query/header value even claim to be a signed
|
|
75
|
+
* terminal grant? Lets hot paths skip the synchronous secret-file read for
|
|
76
|
+
* ordinary random capability tokens (worker per-boot view token, write token)
|
|
77
|
+
* that can never verify anyway.
|
|
78
|
+
*/
|
|
79
|
+
export function looksLikeTerminalControlGrant(value) {
|
|
80
|
+
return typeof value === 'string' && value.startsWith(`${TOKEN_PREFIX}.`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* P1-5 — worker boot generation pinned into a view capability.
|
|
84
|
+
*
|
|
85
|
+
* Derived one-way from the worker's PER-BOOT random view token, which the
|
|
86
|
+
* daemon already reports upward and which the worker still holds in memory.
|
|
87
|
+
* Both sides therefore agree on a generation id without any new plumbing, and
|
|
88
|
+
* the derived value is safe to publish inside a browser-visible grant: it is an
|
|
89
|
+
* HMAC under the host-only dashboard secret, so it cannot be inverted back into
|
|
90
|
+
* the boot token (which by itself opens the terminal read-only).
|
|
91
|
+
*
|
|
92
|
+
* A worker restart re-randomizes the boot token ⇒ a different generation ⇒
|
|
93
|
+
* every grant minted for the previous boot fails closed, statelessly.
|
|
94
|
+
* Returns null when there is nothing to derive from, or when the caller passed
|
|
95
|
+
* a signed grant where a boot token was expected (fail closed, never chain).
|
|
96
|
+
*/
|
|
97
|
+
const VIEW_GENERATION_DOMAIN = 'botmux-terminal-view-generation-v1\0';
|
|
98
|
+
export function deriveWorkerViewGeneration(secret, workerViewToken) {
|
|
99
|
+
if (!secret || typeof workerViewToken !== 'string' || !workerViewToken)
|
|
100
|
+
return null;
|
|
101
|
+
if (workerViewToken.length > MAX_GRANT_BYTES)
|
|
102
|
+
return null;
|
|
103
|
+
if (looksLikeTerminalControlGrant(workerViewToken))
|
|
104
|
+
return null;
|
|
105
|
+
return createHmac('sha256', secret)
|
|
106
|
+
.update(VIEW_GENERATION_DOMAIN)
|
|
107
|
+
.update(workerViewToken)
|
|
108
|
+
.digest('base64url')
|
|
109
|
+
.slice(0, 32);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* P1-5 — proof that a `?viewToken=` view capability reached the worker THROUGH
|
|
113
|
+
* the central dashboard front proxy.
|
|
114
|
+
*
|
|
115
|
+
* The audience claim above states the intent; this header carries the evidence.
|
|
116
|
+
* The worker has no channel to the dashboard's auth-session table, so it cannot
|
|
117
|
+
* re-check liveness itself — but it can demand that the only component which
|
|
118
|
+
* does (the front proxy) countersign the exact capability being presented. The
|
|
119
|
+
* value is an HMAC of the capability under the host-only dashboard secret, so a
|
|
120
|
+
* browser holding the raw URL cannot compute it and a direct dial to the worker
|
|
121
|
+
* port (or to the daemon's own `/s/` reverse proxy, which is network-bound)
|
|
122
|
+
* fails closed no matter what headers it forges.
|
|
123
|
+
*
|
|
124
|
+
* The proof is deterministic per capability, which is deliberate: it only ever
|
|
125
|
+
* exists on the 127.0.0.1 hops (dashboard → daemon proxy → worker) and is never
|
|
126
|
+
* written into a URL, a page or a log, so the only way to hold a (capability,
|
|
127
|
+
* proof) pair is to already own loopback on this host. Binding it to a time
|
|
128
|
+
* window would buy nothing against an attacker who is already there.
|
|
129
|
+
*/
|
|
130
|
+
export const TERMINAL_VIEW_FORWARD_HEADER = 'x-botmux-terminal-view';
|
|
131
|
+
const VIEW_FORWARD_DOMAIN = 'botmux-terminal-view-forward-v1\0';
|
|
132
|
+
export function signTerminalViewForward(secret, viewGrant) {
|
|
133
|
+
if (!secret || typeof viewGrant !== 'string' || !viewGrant)
|
|
134
|
+
return null;
|
|
135
|
+
if (viewGrant.length > MAX_GRANT_BYTES)
|
|
136
|
+
return null;
|
|
137
|
+
return createHmac('sha256', secret).update(VIEW_FORWARD_DOMAIN).update(viewGrant).digest('base64url');
|
|
138
|
+
}
|
|
139
|
+
export function verifyTerminalViewForward(secret, viewGrant, proof) {
|
|
140
|
+
if (typeof proof !== 'string' || !proof)
|
|
141
|
+
return false;
|
|
142
|
+
const expected = signTerminalViewForward(secret, viewGrant);
|
|
143
|
+
if (!expected)
|
|
144
|
+
return false;
|
|
145
|
+
const provided = Buffer.from(proof, 'utf8');
|
|
146
|
+
const wanted = Buffer.from(expected, 'utf8');
|
|
147
|
+
return provided.length === wanted.length && timingSafeEqual(provided, wanted);
|
|
148
|
+
}
|
|
149
|
+
export function verifyTerminalControlGrant(secret, token, expectedSessionId, now = Date.now()) {
|
|
150
|
+
if (typeof token !== 'string' || !token)
|
|
151
|
+
return { ok: false, reason: 'missing' };
|
|
152
|
+
if (!secret || token.length > MAX_GRANT_BYTES)
|
|
153
|
+
return { ok: false, reason: 'malformed' };
|
|
154
|
+
const parts = token.split('.');
|
|
155
|
+
if (parts.length !== 3 || parts[0] !== TOKEN_PREFIX || !/^[A-Za-z0-9_-]+$/.test(parts[1])
|
|
156
|
+
|| !/^[A-Za-z0-9_-]+$/.test(parts[2])) {
|
|
157
|
+
return { ok: false, reason: 'malformed' };
|
|
158
|
+
}
|
|
159
|
+
const expected = signature(secret, parts[1]);
|
|
160
|
+
const provided = Buffer.from(parts[2], 'base64url');
|
|
161
|
+
if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {
|
|
162
|
+
return { ok: false, reason: 'invalid' };
|
|
163
|
+
}
|
|
164
|
+
let parsed;
|
|
165
|
+
try {
|
|
166
|
+
const json = Buffer.from(parts[1], 'base64url').toString('utf8');
|
|
167
|
+
if (Buffer.byteLength(json) > MAX_GRANT_BYTES)
|
|
168
|
+
return { ok: false, reason: 'malformed' };
|
|
169
|
+
parsed = JSON.parse(json);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return { ok: false, reason: 'malformed' };
|
|
173
|
+
}
|
|
174
|
+
if (!exactGrantClaims(parsed))
|
|
175
|
+
return { ok: false, reason: 'malformed' };
|
|
176
|
+
if (parsed.sessionId !== expectedSessionId)
|
|
177
|
+
return { ok: false, reason: 'session_mismatch' };
|
|
178
|
+
if (!Number.isFinite(now) || now < parsed.issuedAt - 30_000 || now >= parsed.expiresAt) {
|
|
179
|
+
return { ok: false, reason: 'expired' };
|
|
180
|
+
}
|
|
181
|
+
return { ok: true, claims: parsed };
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=terminal-control-grant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-control-grant.js","sourceRoot":"","sources":["../../src/core/terminal-control-grant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-proxy.d.ts","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"terminal-proxy.d.ts","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUtF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiI3F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { createServer,
|
|
1
|
+
import { createServer, } from 'node:http';
|
|
2
2
|
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { requestLiteralLoopback } from './loopback-target.js';
|
|
3
4
|
/**
|
|
4
5
|
* Split a request URL of the form `/s/{sessionId}{rest}` into its sessionId and
|
|
5
6
|
* the remainder that should be forwarded to the worker. The remainder always
|
|
@@ -50,7 +51,7 @@ export function startTerminalProxy(opts) {
|
|
|
50
51
|
res.end('session not running');
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
|
-
const upstream =
|
|
54
|
+
const upstream = requestLiteralLoopback({ host: '127.0.0.1', port }, { method: req.method, path: parsed.rest, headers: req.headers }, (up) => {
|
|
54
55
|
res.writeHead(up.statusCode ?? 502, up.headers);
|
|
55
56
|
up.pipe(res);
|
|
56
57
|
});
|
|
@@ -73,9 +74,7 @@ export function startTerminalProxy(opts) {
|
|
|
73
74
|
resolvePortMaybeWake(parsed.sessionId).then((port) => {
|
|
74
75
|
if (!port)
|
|
75
76
|
return clientSocket.destroy();
|
|
76
|
-
const upstream =
|
|
77
|
-
host: '127.0.0.1',
|
|
78
|
-
port,
|
|
77
|
+
const upstream = requestLiteralLoopback({ host: '127.0.0.1', port }, {
|
|
79
78
|
method: req.method,
|
|
80
79
|
path: parsed.rest,
|
|
81
80
|
headers: req.headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-proxy.js","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"terminal-proxy.js","sourceRoot":"","sources":["../../src/core/terminal-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,17 +19,10 @@ export interface TerminalAccessDecision {
|
|
|
19
19
|
platformReadonly: boolean;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* Derive a stable
|
|
23
|
-
* separator
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*/
|
|
27
|
-
export declare function deriveTerminalViewToken(secret: string, sessionId: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Derive a stable WRITE (operate) capability for one session. Mirrors
|
|
30
|
-
* deriveTerminalViewToken but uses a DISTINCT domain separator so the two
|
|
31
|
-
* capabilities can never collide — knowing the view token must never yield the
|
|
32
|
-
* write token (and vice versa) even for the same session+secret.
|
|
22
|
+
* Derive a stable WRITE (operate) capability for one session. Uses a DISTINCT
|
|
23
|
+
* domain separator from the retired stable view token so the two capabilities
|
|
24
|
+
* can never collide — knowing a read capability must never yield the write
|
|
25
|
+
* token (and vice versa) even for the same session+secret.
|
|
33
26
|
*
|
|
34
27
|
* Rationale: the write token used to be a per-process `randomBytes(16)`, so an
|
|
35
28
|
* already-issued 「操作链接」/write link (`?token=`) died the moment its worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-write-auth.d.ts","sourceRoot":"","sources":["../../src/core/terminal-write-auth.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,aAAa,EAAE,OAAO,CAAC;IACvB;kFAC8E;IAC9E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"terminal-write-auth.d.ts","sourceRoot":"","sources":["../../src/core/terminal-write-auth.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,aAAa,EAAE,OAAO,CAAC;IACvB;kFAC8E;IAC9E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,gFAAgF;IAChF,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlF;AAED,wBAAgB,oBAAoB,CAClC,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,kBAAkB,GACzE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,CAWlD;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,sBAAsB,CAUxF;AAED,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMvF;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAS9F;AAcD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,YAAY,EAAE,OAAO,EACrB,eAAe,EAAE,MAAM,OAAO,EAC9B,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,GACrC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,YAAY,EAAE,OAAO,EACrB,gBAAgB,EAAE,OAAO,EACzB,eAAe,EAAE,MAAM,OAAO,EAC9B,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,GACrC,sBAAsB,CAaxB"}
|
|
@@ -26,23 +26,26 @@
|
|
|
26
26
|
//
|
|
27
27
|
// Otherwise the role header is ignored and write falls back to `?token=`.
|
|
28
28
|
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
29
|
+
// NOTE(P1-5): the stable read capability (`deriveTerminalViewToken`, HMAC of
|
|
30
|
+
// secret+sessionId) was deliberately REMOVED. A stable view token could never
|
|
31
|
+
// be revoked: an H5 viewer who fetched it once kept terminal read access after
|
|
32
|
+
// logout/expiry, and a worker restart re-derived the very same value. Read
|
|
33
|
+
// access is now either
|
|
34
|
+
// • the worker's per-boot random `viewToken` (Feishu card links — dies with
|
|
35
|
+
// the worker generation), or
|
|
36
|
+
// • a short-lived signed read grant carried in `?viewToken=` (dashboard
|
|
37
|
+
// view-link API — bound to sessionId + authSessionId + expiresAt, plus
|
|
38
|
+
// `audience: central` and the worker's boot generation; the worker accepts
|
|
39
|
+
// it only when the central front proxy countersigned the hop, so a raw
|
|
40
|
+
// copied URL dialled straight at the worker/daemon port cannot spend it).
|
|
41
|
+
// Every previously issued stable view token therefore fails on new workers.
|
|
42
|
+
// The WRITE capability below intentionally stays stable — an explicitly issued
|
|
43
|
+
// 「操作链接」 is an independent capability that must survive restarts.
|
|
29
44
|
/**
|
|
30
|
-
* Derive a stable
|
|
31
|
-
* separator
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*/
|
|
35
|
-
export function deriveTerminalViewToken(secret, sessionId) {
|
|
36
|
-
return createHmac('sha256', secret)
|
|
37
|
-
.update('botmux-terminal-view-v1\0')
|
|
38
|
-
.update(sessionId)
|
|
39
|
-
.digest('base64url');
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Derive a stable WRITE (operate) capability for one session. Mirrors
|
|
43
|
-
* deriveTerminalViewToken but uses a DISTINCT domain separator so the two
|
|
44
|
-
* capabilities can never collide — knowing the view token must never yield the
|
|
45
|
-
* write token (and vice versa) even for the same session+secret.
|
|
45
|
+
* Derive a stable WRITE (operate) capability for one session. Uses a DISTINCT
|
|
46
|
+
* domain separator from the retired stable view token so the two capabilities
|
|
47
|
+
* can never collide — knowing a read capability must never yield the write
|
|
48
|
+
* token (and vice versa) even for the same session+secret.
|
|
46
49
|
*
|
|
47
50
|
* Rationale: the write token used to be a per-process `randomBytes(16)`, so an
|
|
48
51
|
* already-issued 「操作链接」/write link (`?token=`) died the moment its worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-write-auth.js","sourceRoot":"","sources":["../../src/core/terminal-write-auth.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,6CAA6C;AAC7C,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyB1D
|
|
1
|
+
{"version":3,"file":"terminal-write-auth.js","sourceRoot":"","sources":["../../src/core/terminal-write-auth.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,wDAAwD;AACxD,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,6CAA6C;AAC7C,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyB1D,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,uBAAuB;AACvB,8EAA8E;AAC9E,iCAAiC;AACjC,0EAA0E;AAC1E,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,kEAAkE;AAElE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,SAAiB;IACxE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAChC,MAAM,CAAC,4BAA4B,CAAC;SACpC,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,WAAW,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAsB;IAE1E,8EAA8E;IAC9E,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,YAAY;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrE,IAAI,aAAa,IAAI,eAAe,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC;QAClC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO;QACL,sEAAsE;QACtE,2EAA2E;QAC3E,wEAAwE;QACxE,oCAAoC;QACpC,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,eAAe;QAC1E,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,sBAAsB,CAAC,CAA4B,EAAE,CAAS;IAC5E,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,YAA2C;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACjF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;YAAE,SAAS;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,wBAAwB;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IACtG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;uCAGuC;AACvC,SAAS,sBAAsB,CAAC,iBAAsC;IACpE,IAAI,CAAC;QACH,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAsD,EACtD,YAAqB,EACrB,eAA8B,EAC9B,iBAAsC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,IAAI,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1F,OAAO,oBAAoB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;AACzG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAsD,EACtD,YAAqB,EACrB,gBAAyB,EACzB,eAA8B,EAC9B,iBAAsC;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,IAAI,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC1F,OAAO,qBAAqB,CAAC;QAC3B,IAAI;QACJ,YAAY;QACZ,gBAAgB;QAChB,aAAa,EAAE,eAAe,EAAE;QAChC,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-session.d.ts","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,gBAAgB,MAAM,kCAAkC,CAAC;AAKrE,OAAO,EAA4D,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAmBnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AASpF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C;AAED;;oEAEoE;AACpE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;oDAEgD;IAChD,cAAc,CAAC,EAAE,CACf,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,KACrD,IAAI,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC;;kBAEc;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;uEAEmE;IACnE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAOD;sEACsE;AACtE,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7F;AAED;0EAC0E;AAC1E,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASrG;AAED;;gFAEgF;AAChF,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAsBhF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIxF;AAED;;0EAE0E;AAC1E,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAkC5F;AAED;;;;;;mEAMmE;AACnE,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,GAAG,OAAO,CAEvG;AAuBD,KAAK,sBAAsB,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB;;;;2FAI2F;AAC3F,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,gBAAgB,CAAC,iBAAiB,EACvC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GACzC,sBAAsB,CAuExB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gCAAgC,CACpD,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAwC,GACzF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAmMtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAC9E,wBAAgB,uCAAuC,CACrD,EAAE,EAAE,aAAa,EACjB,uBAAuB,EAAE,MAAM,GAC9B,yBAAyB,CAkD3B;
|
|
1
|
+
{"version":3,"file":"trigger-session.d.ts","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { localeForBot, t } from '../i18n/index.js';
|
|
|
11
11
|
import { validateWorkingDir } from './working-dir.js';
|
|
12
12
|
import { buildFollowUpCliInput, buildNewTopicCliInput, ensureSessionWhiteboard, getAvailableBots, rememberLastCliInput } from './session-manager.js';
|
|
13
13
|
import { markSessionActivity } from './session-activity.js';
|
|
14
|
-
import {
|
|
14
|
+
import { closeSessionForBackgroundCleanup, forkWorker, getCurrentCliVersion, getDaemonBootId, hasQueuedActivationAdmissionGate, sendWorkerInput, withActiveSessionKeyLock, } from './worker-pool.js';
|
|
15
15
|
import { armTriggerFinalSuppression, disarmTriggerFinalSuppression, inheritTriggerReplyAnchor } from './trigger-final-suppression.js';
|
|
16
16
|
import { botAutoWorktreeEnabled } from '../services/default-worktree.js';
|
|
17
17
|
import { currentDeviceIsolationFreezeLease } from './device-isolation-activation.js';
|
|
@@ -22,7 +22,7 @@ import { logger } from '../utils/logger.js';
|
|
|
22
22
|
import { withBotTurnAdmission } from './bot-turn-mutation-gate.js';
|
|
23
23
|
import { stagePendingRepoSetup } from './pending-repo-journal.js';
|
|
24
24
|
import { hasProtectedSessionMutationOwnership } from './session-mutation-guard.js';
|
|
25
|
-
import {
|
|
25
|
+
import { cliModelSupportsReasoningEffort, isConfigurableReasoningCliId } from '../services/codex-reasoning-effort.js';
|
|
26
26
|
function triggerTitle(req) {
|
|
27
27
|
const name = req.envelope.sourceName || req.source.connectorId || req.source.type;
|
|
28
28
|
return `[External] ${name}`.slice(0, 50);
|
|
@@ -315,7 +315,7 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
315
315
|
// close, so restore never re-attaches a session the caller already saw failed.
|
|
316
316
|
quarantined.add(record.sessionId);
|
|
317
317
|
if (getSession(record.sessionId))
|
|
318
|
-
await
|
|
318
|
+
await closeSessionForBackgroundCleanup(record.sessionId, 'trigger-session cleanup');
|
|
319
319
|
continue;
|
|
320
320
|
}
|
|
321
321
|
if (record.state === 'attempting') {
|
|
@@ -324,7 +324,7 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
324
324
|
terminalizeAttempting(record);
|
|
325
325
|
quarantined.add(record.sessionId);
|
|
326
326
|
if (getSession(record.sessionId))
|
|
327
|
-
await
|
|
327
|
+
await closeSessionForBackgroundCleanup(record.sessionId, 'trigger-session cleanup');
|
|
328
328
|
continue;
|
|
329
329
|
}
|
|
330
330
|
// reserved: provably never dispatched → CAS-remove by path (only if the
|
|
@@ -368,7 +368,7 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
368
368
|
terminalizeAttempting(cur);
|
|
369
369
|
quarantined.add(cur.sessionId);
|
|
370
370
|
if (getSession(cur.sessionId))
|
|
371
|
-
await
|
|
371
|
+
await closeSessionForBackgroundCleanup(cur.sessionId, 'trigger-session cleanup');
|
|
372
372
|
continue;
|
|
373
373
|
}
|
|
374
374
|
throw new Error(`reserved lease advanced to an unexpected state under reconcile CAS (rev ${cur.revision} state ${cur.state} boot ${cur.ownerBootId}); cannot prove convergence`);
|
|
@@ -380,7 +380,7 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
380
380
|
logger.warn(`[idempotency] reconcile: reserved snapshot for ${record.sessionId} was replaced by a different winner (session=${cur.sessionId} boot=${cur.ownerBootId} state=${cur.state}); converging our orphan + classifying the winner on the spot`);
|
|
381
381
|
quarantined.add(record.sessionId);
|
|
382
382
|
if (getSession(record.sessionId))
|
|
383
|
-
await
|
|
383
|
+
await closeSessionForBackgroundCleanup(record.sessionId, 'trigger-session cleanup');
|
|
384
384
|
// Then classify the WINNER on the spot — it will never be re-scanned.
|
|
385
385
|
if (cur.ownerBootId === currentBootId)
|
|
386
386
|
continue; // in flight this boot → leave it
|
|
@@ -390,7 +390,7 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
390
390
|
terminalizeAttempting(cur);
|
|
391
391
|
quarantined.add(cur.sessionId);
|
|
392
392
|
if (getSession(cur.sessionId))
|
|
393
|
-
await
|
|
393
|
+
await closeSessionForBackgroundCleanup(cur.sessionId, 'trigger-session cleanup');
|
|
394
394
|
continue;
|
|
395
395
|
}
|
|
396
396
|
// Old-boot reserved winner: provably pre-dispatch → fenced remove against
|
|
@@ -405,12 +405,12 @@ export async function reconcileIdempotencyLeasesOnBoot(ownerLarkAppId, currentBo
|
|
|
405
405
|
}
|
|
406
406
|
quarantined.add(cur.sessionId);
|
|
407
407
|
if (getSession(cur.sessionId))
|
|
408
|
-
await
|
|
408
|
+
await closeSessionForBackgroundCleanup(cur.sessionId, 'trigger-session cleanup');
|
|
409
409
|
continue;
|
|
410
410
|
}
|
|
411
411
|
quarantined.add(record.sessionId);
|
|
412
412
|
if (getSession(record.sessionId))
|
|
413
|
-
await
|
|
413
|
+
await closeSessionForBackgroundCleanup(record.sessionId, 'trigger-session cleanup');
|
|
414
414
|
}
|
|
415
415
|
catch (err) {
|
|
416
416
|
// This lease could not be converged (strict-failed write threw, CAS-remove
|
|
@@ -1391,17 +1391,17 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1391
1391
|
return { ok: false, errorCode: 'trigger_failed', error: wd.error };
|
|
1392
1392
|
}
|
|
1393
1393
|
const bot = getBot(larkAppId);
|
|
1394
|
-
const
|
|
1394
|
+
const hasReasoningControl = isConfigurableReasoningCliId(bot.config.cliId);
|
|
1395
1395
|
const effectiveModel = typeof req.options?.model === 'string' && req.options.model.trim()
|
|
1396
1396
|
? req.options.model.trim()
|
|
1397
1397
|
: bot.config.model;
|
|
1398
1398
|
const effectiveReasoningEffort = req.options?.reasoningEffort ?? bot.config.reasoningEffort;
|
|
1399
|
-
if (
|
|
1400
|
-
&& !
|
|
1399
|
+
if (hasReasoningControl && effectiveReasoningEffort
|
|
1400
|
+
&& !cliModelSupportsReasoningEffort(bot.config.cliId, effectiveModel, effectiveReasoningEffort)) {
|
|
1401
1401
|
return {
|
|
1402
1402
|
ok: false,
|
|
1403
1403
|
errorCode: 'bad_request',
|
|
1404
|
-
error: `模型 ${effectiveModel || '(
|
|
1404
|
+
error: `模型 ${effectiveModel || '(Agent 默认模型)'} 不支持思考强度 ${effectiveReasoningEffort}`,
|
|
1405
1405
|
};
|
|
1406
1406
|
}
|
|
1407
1407
|
const chatMode = httpVirtual
|
|
@@ -1448,19 +1448,25 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1448
1448
|
session.lastMessageAt = new Date(now).toISOString();
|
|
1449
1449
|
session.workingDir = wd.workingDir;
|
|
1450
1450
|
session.cliId = bot.config.cliId;
|
|
1451
|
-
// Per-turn model / reasoning-effort override — scoped to
|
|
1452
|
-
//
|
|
1451
|
+
// Per-turn model / reasoning-effort override — scoped to CLIs with an
|
|
1452
|
+
// explicit reasoning control and to a freshly-created trigger session.
|
|
1453
1453
|
// Gating on cliId keeps the contract honest and bounded: it never silently
|
|
1454
1454
|
// changes the model of a Claude/Gemini/CoCo bot, and a fold-in to an existing
|
|
1455
|
-
// worker never reaches here.
|
|
1456
|
-
//
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1455
|
+
// worker never reaches here. Model is gated here so it cannot leak to
|
|
1456
|
+
// other CLIs whose adapters do not implement this contract.
|
|
1457
|
+
//
|
|
1458
|
+
// The model override lands on the in-memory DaemonSession below, NOT on the
|
|
1459
|
+
// persisted session record: the documented semantics are per-trigger, and a
|
|
1460
|
+
// persisted copy used to survive every later resume and outrank the bot's
|
|
1461
|
+
// configured model forever (see sessionAgentConfig). reasoningEffort stays
|
|
1462
|
+
// persisted with the session (unchanged by that PR).
|
|
1463
|
+
const triggerModelOverride = hasReasoningControl
|
|
1464
|
+
&& typeof req.options?.model === 'string'
|
|
1465
|
+
&& req.options.model.trim()
|
|
1466
|
+
? req.options.model.trim()
|
|
1467
|
+
: undefined;
|
|
1468
|
+
if (hasReasoningControl && req.options?.reasoningEffort) {
|
|
1469
|
+
session.reasoningEffort = req.options.reasoningEffort;
|
|
1464
1470
|
}
|
|
1465
1471
|
sessionStore.updateSession(session);
|
|
1466
1472
|
messageQueue.ensureQueue(anchor);
|
|
@@ -1478,6 +1484,7 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1478
1484
|
lastMessageAt: now,
|
|
1479
1485
|
hasHistory: false,
|
|
1480
1486
|
workingDir: wd.workingDir,
|
|
1487
|
+
...(triggerModelOverride ? { spawnModelOverride: triggerModelOverride } : {}),
|
|
1481
1488
|
};
|
|
1482
1489
|
// Retain the complete opening input until a worker or repo workflow has
|
|
1483
1490
|
// synchronously accepted it. This is both the route reservation and the
|
|
@@ -1617,7 +1624,7 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1617
1624
|
// down our just-created session and resolve from the winner's terminal
|
|
1618
1625
|
// evidence (via resolveIdempotencyHit → async-store), never dispatching.
|
|
1619
1626
|
const reuseExistingWinner = async (winner) => {
|
|
1620
|
-
await
|
|
1627
|
+
await closeSessionForBackgroundCleanup(session.sessionId, 'trigger-session cleanup');
|
|
1621
1628
|
const decision = resolveIdempotencyHit(winner, ownerBootId, deps.activeSessions);
|
|
1622
1629
|
const winnerChatId = (decision.kind !== 'takeover' && decision.chatId) ? decision.chatId : chatId;
|
|
1623
1630
|
if (decision.kind === 'terminal') {
|
|
@@ -1649,10 +1656,10 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1649
1656
|
}
|
|
1650
1657
|
catch (err) {
|
|
1651
1658
|
if (err instanceof idempotencyStore.IdempotencyConflictError) {
|
|
1652
|
-
await
|
|
1659
|
+
await closeSessionForBackgroundCleanup(session.sessionId, 'trigger-session cleanup');
|
|
1653
1660
|
return { ok: false, errorCode: 'idempotency_conflict', error: 'idempotencyKey already used with a different request payload', idempotencyKey };
|
|
1654
1661
|
}
|
|
1655
|
-
await
|
|
1662
|
+
await closeSessionForBackgroundCleanup(session.sessionId, 'trigger-session cleanup');
|
|
1656
1663
|
return { ok: false, errorCode: 'trigger_failed', error: `idempotency claim failed: ${err.message}` };
|
|
1657
1664
|
}
|
|
1658
1665
|
}
|
|
@@ -1738,7 +1745,7 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1738
1745
|
logger.error(`[idempotency] barrier-fail release could not converge the lease (${e.message}); left for reconcile`);
|
|
1739
1746
|
}
|
|
1740
1747
|
}
|
|
1741
|
-
await
|
|
1748
|
+
await closeSessionForBackgroundCleanup(session.sessionId, 'trigger-session cleanup');
|
|
1742
1749
|
if (terminalizedCrossedFence) {
|
|
1743
1750
|
// Observable terminal: the caller can poll this sessionId and get `failed`.
|
|
1744
1751
|
return {
|
|
@@ -1812,7 +1819,7 @@ async function triggerSessionTurnAdmitted(req, deps, internal) {
|
|
|
1812
1819
|
}
|
|
1813
1820
|
}
|
|
1814
1821
|
try {
|
|
1815
|
-
await
|
|
1822
|
+
await closeSessionForBackgroundCleanup(session.sessionId, 'trigger-session cleanup');
|
|
1816
1823
|
}
|
|
1817
1824
|
catch { /* best-effort; terminal already durable if terminalDurable */ }
|
|
1818
1825
|
if (idempotencyKey && !terminalDurable) {
|