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,145 @@
|
|
|
1
|
+
import { deriveWorkerViewGeneration, issueTerminalControlGrant, looksLikeTerminalControlGrant, signTerminalViewForward, verifyTerminalControlGrant, } from '../core/terminal-control-grant.js';
|
|
2
|
+
/**
|
|
3
|
+
* Short-lived read capability for the `/api/sessions/:id/view-link` URL.
|
|
4
|
+
*
|
|
5
|
+
* The link used to embed the worker's STABLE view token — an irrevocable
|
|
6
|
+
* bearer capability: an H5 viewer who fetched it once could keep reading the
|
|
7
|
+
* terminal long after logout/expiry, and a worker restart re-derived the same
|
|
8
|
+
* value. The view-link URL now carries a signed read grant instead, bound to
|
|
9
|
+
* sessionId + authSessionId + expiresAt.
|
|
10
|
+
*
|
|
11
|
+
* That alone was still bypassable (P1-5, second round): the returned URL kept
|
|
12
|
+
* the DAEMON/WORKER origin, so a copied raw URL — or a direct dial to the
|
|
13
|
+
* worker port / the daemon's own network-bound `/s/` reverse proxy — reached a
|
|
14
|
+
* stateless verifier that knew nothing about logout. Central revocation was
|
|
15
|
+
* decoration on a road nobody had to drive. Two changes close it, and the
|
|
16
|
+
* capability now names both of them in its own claims:
|
|
17
|
+
*
|
|
18
|
+
* • CENTRAL-ONLY CONSUMPTION. `centralViewLinkPath` returns a same-origin
|
|
19
|
+
* path on the central dashboard (`/s/<id>/?viewToken=…`) — the daemon /
|
|
20
|
+
* worker origin never leaves this process. The capability is minted with
|
|
21
|
+
* `audience: 'central'`, and the front proxy countersigns each accepted
|
|
22
|
+
* capability with a forward proof the browser cannot compute. The worker
|
|
23
|
+
* demands both, so a raw URL pointed at any other entry point fails closed
|
|
24
|
+
* even though its signature and expiry are perfectly valid.
|
|
25
|
+
* • WORKER GENERATION PINNING. The capability carries the worker's per-boot
|
|
26
|
+
* generation (derived one-way from the boot view token the daemon already
|
|
27
|
+
* reports). A worker restart re-randomizes it, so grants issued to a dead
|
|
28
|
+
* boot die with it instead of surviving on the shared `.dashboard-secret`.
|
|
29
|
+
*
|
|
30
|
+
* Revocation therefore has two independent fences: the front proxy refuses a
|
|
31
|
+
* capability whose auth session ended (and closes its bridged sockets), and the
|
|
32
|
+
* worker refuses one that did not come through that proxy or that outlived the
|
|
33
|
+
* boot it was minted for.
|
|
34
|
+
*
|
|
35
|
+
* The TTL doubles as the periodic reconnect boundary for read sockets, so it
|
|
36
|
+
* is deliberately longer than the old 60s per-request read grants (which now
|
|
37
|
+
* share this constant) but still short enough that a copied URL dies quickly.
|
|
38
|
+
*/
|
|
39
|
+
export const TERMINAL_VIEW_CAPABILITY_TTL_MS = 10 * 60_000;
|
|
40
|
+
/** Mint the short-lived, identity-bound read capability for one session.
|
|
41
|
+
* `workerGeneration` pins the capability to the worker boot it was minted
|
|
42
|
+
* against — see `upstreamWorkerViewGeneration`. */
|
|
43
|
+
export function mintTerminalViewCapability(secret, sessionId, identity, workerGeneration, now = Date.now()) {
|
|
44
|
+
const expiresAt = Math.min(identity.expiresAt, now + TERMINAL_VIEW_CAPABILITY_TTL_MS);
|
|
45
|
+
if (!Number.isSafeInteger(expiresAt) || expiresAt <= now)
|
|
46
|
+
return null;
|
|
47
|
+
try {
|
|
48
|
+
return {
|
|
49
|
+
token: issueTerminalControlGrant(secret, {
|
|
50
|
+
scope: 'read',
|
|
51
|
+
sessionId,
|
|
52
|
+
userId: identity.userId,
|
|
53
|
+
authSessionId: identity.authSessionId,
|
|
54
|
+
issuedAt: now,
|
|
55
|
+
expiresAt,
|
|
56
|
+
audience: 'central',
|
|
57
|
+
workerGeneration,
|
|
58
|
+
}),
|
|
59
|
+
expiresAt,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Out-of-shape identities (empty ids, control chars) and a missing/blank
|
|
64
|
+
// worker generation fail closed: the caller returns an error instead of
|
|
65
|
+
// falling back to any stable token or to an unpinned capability.
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Read the worker boot generation out of the daemon-built view-link URL.
|
|
71
|
+
*
|
|
72
|
+
* That upstream URL still carries the worker's per-boot card token in
|
|
73
|
+
* `?viewToken=` — the one value that identifies the live worker generation and
|
|
74
|
+
* that this process must never pass through to a browser. We convert it to a
|
|
75
|
+
* one-way generation id here and drop the token itself.
|
|
76
|
+
*
|
|
77
|
+
* Fails closed (null) on a malformed URL, a non-http(s) scheme, a missing
|
|
78
|
+
* token, or an upstream that already handed us a signed grant: without a
|
|
79
|
+
* generation the caller must return an error rather than mint an unpinned
|
|
80
|
+
* capability.
|
|
81
|
+
*/
|
|
82
|
+
export function upstreamWorkerViewGeneration(secret, upstreamUrl) {
|
|
83
|
+
if (typeof upstreamUrl !== 'string' || !upstreamUrl)
|
|
84
|
+
return null;
|
|
85
|
+
let parsed;
|
|
86
|
+
try {
|
|
87
|
+
parsed = new URL(upstreamUrl);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
|
|
93
|
+
return null;
|
|
94
|
+
return deriveWorkerViewGeneration(secret, parsed.searchParams.get('viewToken'));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Build the browser-facing view link: a CENTRAL-ORIGIN RELATIVE path, never an
|
|
98
|
+
* absolute URL. The daemon's terminal-proxy port and the worker port are both
|
|
99
|
+
* reachable on the network and neither knows anything about auth-session
|
|
100
|
+
* liveness, so publishing either origin is the whole bypass — a relative path
|
|
101
|
+
* cannot name them, and cannot be repointed by a poisoned `Host` header the way
|
|
102
|
+
* a server-rebuilt absolute URL could.
|
|
103
|
+
*
|
|
104
|
+
* The path shape matches the front proxy's `/s/<sessionId>` route, which is
|
|
105
|
+
* also what the daemon's proxy and the worker accept after the loopback hops.
|
|
106
|
+
*/
|
|
107
|
+
export function centralViewLinkPath(sessionId, token) {
|
|
108
|
+
if (!sessionId || !token)
|
|
109
|
+
return null;
|
|
110
|
+
if (sessionId.length > 512 || token.length > 4_096)
|
|
111
|
+
return null;
|
|
112
|
+
if (/[\r\n\0]/.test(sessionId) || /[\r\n\0]/.test(token))
|
|
113
|
+
return null;
|
|
114
|
+
return `/s/${encodeURIComponent(sessionId)}/?viewToken=${encodeURIComponent(token)}`;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Resolve which auth session a bound `?viewToken=` capability belongs to, or
|
|
118
|
+
* null when the value is not a valid bound read capability for this session.
|
|
119
|
+
* Used by the front proxy to (a) refuse capabilities whose auth session was
|
|
120
|
+
* already revoked and (b) index the bridged socket for logout-time closing.
|
|
121
|
+
*
|
|
122
|
+
* A grant without `audience: 'central'` is an internal loopback credential that
|
|
123
|
+
* was never meant to travel in a URL; it resolves to null so the proxy neither
|
|
124
|
+
* blesses it nor countersigns it.
|
|
125
|
+
*/
|
|
126
|
+
export function terminalViewCapabilityAuthSession(secret, sessionId, viewToken, now = Date.now()) {
|
|
127
|
+
if (!looksLikeTerminalControlGrant(viewToken))
|
|
128
|
+
return null;
|
|
129
|
+
const verified = verifyTerminalControlGrant(secret, viewToken, sessionId, now);
|
|
130
|
+
if (!verified.ok || verified.claims.scope !== 'read')
|
|
131
|
+
return null;
|
|
132
|
+
if (verified.claims.audience !== 'central')
|
|
133
|
+
return null;
|
|
134
|
+
return verified.claims.authSessionId;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Countersign one accepted view capability for the loopback hop. Only the front
|
|
138
|
+
* proxy calls this, and only after the capability's auth session was confirmed
|
|
139
|
+
* live — the proof is what tells the worker "this request came through the
|
|
140
|
+
* component that holds the revocation state".
|
|
141
|
+
*/
|
|
142
|
+
export function terminalViewForwardProof(secret, viewToken) {
|
|
143
|
+
return signTerminalViewForward(secret, viewToken) ?? undefined;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=terminal-view-capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-view-capability.js","sourceRoot":"","sources":["../../src/dashboard/terminal-view-capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { WorkbenchH5Context } from './agent-workbench-chat.js';
|
|
2
|
+
export interface TerminalControlState {
|
|
3
|
+
mode: 'readonly' | 'controlled';
|
|
4
|
+
owned: boolean;
|
|
5
|
+
expiresAt?: number;
|
|
6
|
+
reused?: boolean;
|
|
7
|
+
/** Trusted platform owners have a fixed role, not a releasable takeover lease. */
|
|
8
|
+
fixed?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PreviewInteractionState {
|
|
11
|
+
mode: 'preview' | 'interactive';
|
|
12
|
+
label: string;
|
|
13
|
+
securityNotice: string;
|
|
14
|
+
idleExpiresAt?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkbenchApi {
|
|
17
|
+
getTerminalControl(sessionId: string, signal?: AbortSignal): Promise<TerminalControlState>;
|
|
18
|
+
takeoverTerminal(sessionId: string, signal?: AbortSignal): Promise<TerminalControlState>;
|
|
19
|
+
releaseTerminal(sessionId: string, signal?: AbortSignal): Promise<TerminalControlState>;
|
|
20
|
+
getPreviewInteraction(sessionId: string, signal?: AbortSignal): Promise<PreviewInteractionState>;
|
|
21
|
+
unlockPreview(sessionId: string, signal?: AbortSignal): Promise<PreviewInteractionState>;
|
|
22
|
+
touchPreview(sessionId: string, signal?: AbortSignal): Promise<PreviewInteractionState>;
|
|
23
|
+
lockPreview(sessionId: string, signal?: AbortSignal): Promise<PreviewInteractionState>;
|
|
24
|
+
getH5Context(signal?: AbortSignal): Promise<WorkbenchH5Context | null>;
|
|
25
|
+
/** Capability URL for the read-only terminal (viewToken-bearing). The frame
|
|
26
|
+
* authenticates by this capability, so it also works where no Dashboard
|
|
27
|
+
* cookie exists — a Feishu WebView being the case that motivated it.
|
|
28
|
+
* The server answers with a same-origin path and this client refuses
|
|
29
|
+
* anything else (P1-5) — see `sameOriginViewLink`.
|
|
30
|
+
* The capability is short-lived and bound to this login (P1-5): `expiresAt`
|
|
31
|
+
* is when the server stops honoring it, so callers should fetch a fresh
|
|
32
|
+
* link shortly before then (null when the server did not say). */
|
|
33
|
+
getTerminalViewLink(sessionId: string, signal?: AbortSignal): Promise<{
|
|
34
|
+
url: string;
|
|
35
|
+
expiresAt: number | null;
|
|
36
|
+
} | null>;
|
|
37
|
+
/** 让 bot 在会话原话题里发一条 @ 拥有者的定位标记。服务端对每个会话有 30s
|
|
38
|
+
* 限流,超了返回 429 + `retry-after`(见 WorkbenchApiError.retryAfterSeconds)。 */
|
|
39
|
+
locateSession(sessionId: string, signal?: AbortSignal): Promise<void>;
|
|
40
|
+
/** owner 自取的**常驻**工作台入口(`<base>/workbench?t=<当前活跃 token>`),
|
|
41
|
+
* 用来收藏进浏览器书签。只有本机完整管理身份取得到;其它身份服务端 401/404,
|
|
42
|
+
* 这里一律回落 null——「取不到」就是「没有这个入口」,绝不半开。
|
|
43
|
+
* 与 view-link 那条短时能力 URL 不同,这里返回的是长期凭证,所以调用方只在
|
|
44
|
+
* 用户显式点开弹层时才请求,不做预取。 */
|
|
45
|
+
getStandingLink(signal?: AbortSignal): Promise<{
|
|
46
|
+
url: string;
|
|
47
|
+
} | null>;
|
|
48
|
+
}
|
|
49
|
+
export declare class WorkbenchApiError extends Error {
|
|
50
|
+
readonly status: number;
|
|
51
|
+
readonly code: string;
|
|
52
|
+
/** 仅 429 有值:还要等多少秒才能重试。调用方据此显示冷却而不是报错。 */
|
|
53
|
+
readonly retryAfterSeconds?: number | undefined;
|
|
54
|
+
constructor(status: number, code: string,
|
|
55
|
+
/** 仅 429 有值:还要等多少秒才能重试。调用方据此显示冷却而不是报错。 */
|
|
56
|
+
retryAfterSeconds?: number | undefined);
|
|
57
|
+
}
|
|
58
|
+
export declare function createWorkbenchApi(fetchImpl?: typeof fetch): WorkbenchApi;
|
|
59
|
+
//# sourceMappingURL=agent-workbench-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-workbench-api.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3F,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxF,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxF,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvF,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACvE;;;;;;;uEAOmE;IACnE,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC7D;8EAC0E;IAC1E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;;;6BAIyB;IACzB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACxE;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;IAC5B,0CAA0C;aAC1B,iBAAiB,CAAC,EAAE,MAAM;gBAH1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;IAC5B,0CAA0C;IAC1B,iBAAiB,CAAC,EAAE,MAAM,YAAA;CAK7C;AA6ID,wBAAgB,kBAAkB,CAAC,SAAS,GAAE,OAAO,KAAa,GAAG,YAAY,CAuGhF"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { controlCsrfHeaders } from './control-csrf.js';
|
|
2
|
+
export class WorkbenchApiError extends Error {
|
|
3
|
+
status;
|
|
4
|
+
code;
|
|
5
|
+
retryAfterSeconds;
|
|
6
|
+
constructor(status, code,
|
|
7
|
+
/** 仅 429 有值:还要等多少秒才能重试。调用方据此显示冷却而不是报错。 */
|
|
8
|
+
retryAfterSeconds) {
|
|
9
|
+
super(code);
|
|
10
|
+
this.status = status;
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.retryAfterSeconds = retryAfterSeconds;
|
|
13
|
+
this.name = 'WorkbenchApiError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** 限流响应把等待时长放在 `retry-after` 头(秒)里,body 另带 `retryAfterMs`。
|
|
17
|
+
* 取头优先、body 兜底,两者都没有就返回 undefined(调用方退化成普通错误)。 */
|
|
18
|
+
function parseRetryAfter(response, body) {
|
|
19
|
+
if (response.status !== 429)
|
|
20
|
+
return undefined;
|
|
21
|
+
const header = Number(response.headers?.get?.('retry-after'));
|
|
22
|
+
if (Number.isFinite(header) && header > 0)
|
|
23
|
+
return Math.ceil(header);
|
|
24
|
+
const ms = Number(body?.retryAfterMs);
|
|
25
|
+
if (Number.isFinite(ms) && ms > 0)
|
|
26
|
+
return Math.ceil(ms / 1000);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
async function jsonRequest(fetchImpl, path, init = {}) {
|
|
30
|
+
// P1-11:写请求(takeover/release、preview 解锁、locate)带上页面注入的一次性
|
|
31
|
+
// CSRF 票据。读请求不需要,服务端也不校验。
|
|
32
|
+
const method = String(init.method ?? 'GET').toUpperCase();
|
|
33
|
+
const headers = method === 'GET'
|
|
34
|
+
? init.headers
|
|
35
|
+
: { ...controlCsrfHeaders(), ...init.headers };
|
|
36
|
+
const response = await fetchImpl(path, { cache: 'no-store', ...init, headers });
|
|
37
|
+
const body = await response.json().catch(() => null);
|
|
38
|
+
if (!response.ok || !body || body.ok === false) {
|
|
39
|
+
throw new WorkbenchApiError(response.status, String(body?.error ?? `http_${response.status}`), parseRetryAfter(response, body));
|
|
40
|
+
}
|
|
41
|
+
return body;
|
|
42
|
+
}
|
|
43
|
+
function responseObject(value, code) {
|
|
44
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
45
|
+
throw new WorkbenchApiError(502, code);
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function optionalDeadline(value, code) {
|
|
50
|
+
if (value === undefined)
|
|
51
|
+
return undefined;
|
|
52
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0) {
|
|
53
|
+
throw new WorkbenchApiError(502, code);
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
function terminalControlState(value, fallbackOwned) {
|
|
58
|
+
const body = responseObject(value, 'invalid_control_response');
|
|
59
|
+
if (body.mode !== 'readonly' && body.mode !== 'controlled') {
|
|
60
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
61
|
+
}
|
|
62
|
+
const owned = typeof body.owned === 'boolean' ? body.owned : fallbackOwned;
|
|
63
|
+
if (typeof owned !== 'boolean')
|
|
64
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
65
|
+
const expiresAt = optionalDeadline(body.expiresAt, 'invalid_control_response');
|
|
66
|
+
const fixed = body.fixed === undefined ? undefined : body.fixed;
|
|
67
|
+
if (fixed !== undefined && typeof fixed !== 'boolean') {
|
|
68
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
69
|
+
}
|
|
70
|
+
if ((body.mode === 'readonly' && (owned || expiresAt !== undefined))
|
|
71
|
+
|| (body.mode === 'controlled' && expiresAt === undefined && fixed !== true)) {
|
|
72
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
73
|
+
}
|
|
74
|
+
const reused = body.reused === undefined ? undefined : body.reused;
|
|
75
|
+
if (reused !== undefined && typeof reused !== 'boolean') {
|
|
76
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
77
|
+
}
|
|
78
|
+
if (fixed === true && (body.mode !== 'controlled' || !owned || expiresAt !== undefined)) {
|
|
79
|
+
throw new WorkbenchApiError(502, 'invalid_control_response');
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
mode: body.mode,
|
|
83
|
+
owned,
|
|
84
|
+
...(expiresAt === undefined ? {} : { expiresAt }),
|
|
85
|
+
...(reused === undefined ? {} : { reused }),
|
|
86
|
+
...(fixed === undefined ? {} : { fixed }),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function previewInteractionState(value) {
|
|
90
|
+
const body = responseObject(value, 'invalid_preview_interaction_response');
|
|
91
|
+
if (body.mode !== 'preview' && body.mode !== 'interactive') {
|
|
92
|
+
throw new WorkbenchApiError(502, 'invalid_preview_interaction_response');
|
|
93
|
+
}
|
|
94
|
+
if (typeof body.label !== 'string' || !body.label || body.label.length > 256
|
|
95
|
+
|| typeof body.securityNotice !== 'string' || !body.securityNotice || body.securityNotice.length > 1_024) {
|
|
96
|
+
throw new WorkbenchApiError(502, 'invalid_preview_interaction_response');
|
|
97
|
+
}
|
|
98
|
+
const idleExpiresAt = optionalDeadline(body.idleExpiresAt, 'invalid_preview_interaction_response');
|
|
99
|
+
if ((body.mode === 'preview' && idleExpiresAt !== undefined)
|
|
100
|
+
|| (body.mode === 'interactive' && idleExpiresAt === undefined)) {
|
|
101
|
+
throw new WorkbenchApiError(502, 'invalid_preview_interaction_response');
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
mode: body.mode,
|
|
105
|
+
label: body.label,
|
|
106
|
+
securityNotice: body.securityNotice,
|
|
107
|
+
...(idleExpiresAt === undefined ? {} : { idleExpiresAt }),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** 当前工作台页面的 origin。无 window(SSR、或注入 fetchImpl 的单测)时返回 null,
|
|
111
|
+
* 此时「同源」无从谈起,调用方原样保留上游地址。 */
|
|
112
|
+
function currentPageOrigin() {
|
|
113
|
+
const origin = globalThis
|
|
114
|
+
.window?.location?.origin;
|
|
115
|
+
return typeof origin === 'string' && origin ? origin : null;
|
|
116
|
+
}
|
|
117
|
+
/** 只接受「工作台页面同源」的 view-link,并在有 origin 时拼成绝对地址。
|
|
118
|
+
*
|
|
119
|
+
* P1-5 之后服务端只回同源相对路径(形如 `/s/<id>/?viewToken=…`),绝不再回
|
|
120
|
+
* daemon/worker 自身端口上的绝对 URL。这不只是可达性问题(早先踩过的案例:手机所在办公
|
|
121
|
+
* 网只放行 dashboard 端口,对反代端口没有任何可达连接,iframe 一片空白),更是撤销问题:
|
|
122
|
+
* daemon 反代和 worker 端口都在网络上开着,且都看不到 dashboard 的登出状态,凭证一旦被
|
|
123
|
+
* 指到那两个 origin 上,中央的吊销检查就形同虚设。所以这里对任何非同源地址一律拒绝,
|
|
124
|
+
* 不再「改写洗白」——服务端本就不会给,真给了也说明链路被人动过手脚。
|
|
125
|
+
*
|
|
126
|
+
* origin 缺失(SSR / 注入 fetchImpl 的测试环境)或拼接失败(沙箱 iframe 的不透明 origin,
|
|
127
|
+
* `window.location.origin` 为 "null")时保留相对路径:相对地址同样只会打到当前源,
|
|
128
|
+
* iframe 直接用即可。 */
|
|
129
|
+
function sameOriginViewLink(path) {
|
|
130
|
+
const origin = currentPageOrigin();
|
|
131
|
+
if (!origin)
|
|
132
|
+
return path;
|
|
133
|
+
try {
|
|
134
|
+
const rebased = new URL(path, origin);
|
|
135
|
+
if (rebased.protocol !== 'http:' && rebased.protocol !== 'https:')
|
|
136
|
+
return path;
|
|
137
|
+
return rebased.toString();
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return path;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function controlPath(sessionId, action) {
|
|
144
|
+
return `/api/sessions/${encodeURIComponent(sessionId)}/control${action ? `/${action}` : ''}`;
|
|
145
|
+
}
|
|
146
|
+
function previewPath(sessionId, action) {
|
|
147
|
+
return `/api/sessions/${encodeURIComponent(sessionId)}/preview-interaction${action ? `/${action}` : ''}`;
|
|
148
|
+
}
|
|
149
|
+
export function createWorkbenchApi(fetchImpl = fetch) {
|
|
150
|
+
return {
|
|
151
|
+
getTerminalControl: async (sessionId, signal) => terminalControlState(await jsonRequest(fetchImpl, controlPath(sessionId), { signal })),
|
|
152
|
+
takeoverTerminal: async (sessionId, signal) => terminalControlState(await jsonRequest(fetchImpl, controlPath(sessionId, 'takeover'), { method: 'POST', signal }), true),
|
|
153
|
+
releaseTerminal: async (sessionId, signal) => terminalControlState(await jsonRequest(fetchImpl, controlPath(sessionId, 'release'), { method: 'POST', signal }), false),
|
|
154
|
+
getPreviewInteraction: async (sessionId, signal) => previewInteractionState(await jsonRequest(fetchImpl, previewPath(sessionId), { signal })),
|
|
155
|
+
unlockPreview: async (sessionId, signal) => previewInteractionState(await jsonRequest(fetchImpl, previewPath(sessionId, 'unlock'), { method: 'POST', signal })),
|
|
156
|
+
touchPreview: async (sessionId, signal) => previewInteractionState(await jsonRequest(fetchImpl, previewPath(sessionId, 'activity'), { method: 'POST', signal })),
|
|
157
|
+
lockPreview: async (sessionId, signal) => previewInteractionState(await jsonRequest(fetchImpl, previewPath(sessionId, 'lock'), { method: 'POST', signal })),
|
|
158
|
+
async locateSession(sessionId, signal) {
|
|
159
|
+
await jsonRequest(fetchImpl, `/api/sessions/${encodeURIComponent(sessionId)}/locate`, { method: 'POST', signal });
|
|
160
|
+
},
|
|
161
|
+
async getTerminalViewLink(sessionId, signal) {
|
|
162
|
+
try {
|
|
163
|
+
const body = responseObject(await jsonRequest(fetchImpl, `/api/sessions/${encodeURIComponent(sessionId)}/view-link`, { signal }), 'invalid_view_link_response');
|
|
164
|
+
// P1-5: the only shape allowed to reach the DOM is a same-origin
|
|
165
|
+
// terminal path. `//host/...` is a protocol-relative ABSOLUTE URL and
|
|
166
|
+
// `/\host` is treated the same way by browsers, so both are rejected
|
|
167
|
+
// along with every explicit scheme — an absolute link would hand this
|
|
168
|
+
// capability to an origin that cannot enforce revocation.
|
|
169
|
+
if (typeof body.url !== 'string' || body.url.length > 2_048)
|
|
170
|
+
return null;
|
|
171
|
+
if (!/^\/s\/[^/\\]/.test(body.url))
|
|
172
|
+
return null;
|
|
173
|
+
// Malformed expiry degrades to "unknown" rather than rejecting the
|
|
174
|
+
// link: expiry-driven refresh is an optimization, not the gate.
|
|
175
|
+
const expiresAt = typeof body.expiresAt === 'number'
|
|
176
|
+
&& Number.isSafeInteger(body.expiresAt) && body.expiresAt > 0
|
|
177
|
+
? body.expiresAt
|
|
178
|
+
: null;
|
|
179
|
+
return { url: sameOriginViewLink(body.url), expiresAt };
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
async getStandingLink(signal) {
|
|
186
|
+
try {
|
|
187
|
+
const body = responseObject(await jsonRequest(fetchImpl, '/api/workbench/standing-link', { signal }), 'invalid_standing_link_response');
|
|
188
|
+
// 这条 URL 会被放进输入框交给用户复制粘贴,所以只接受**绝对的 http(s)**
|
|
189
|
+
// 地址:`javascript:` 之类的伪协议、超长串一律当没有拿到。服务端本就只
|
|
190
|
+
// 会给 `<base>/workbench?t=…`,形状不对说明链路被人动过手脚。
|
|
191
|
+
if (typeof body.url !== 'string' || !body.url || body.url.length > 2_048)
|
|
192
|
+
return null;
|
|
193
|
+
const parsed = new URL(body.url);
|
|
194
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
|
|
195
|
+
return null;
|
|
196
|
+
return { url: body.url };
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// 401 / 403 / 404(无权身份)与 503(还没有活跃 token)走同一条回落:
|
|
200
|
+
// 前端只知道「没有这个入口」,不区分原因。
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
async getH5Context(signal) {
|
|
205
|
+
try {
|
|
206
|
+
const body = responseObject(await jsonRequest(fetchImpl, '/api/workbench/h5-context', { signal }), 'invalid_h5_context_response');
|
|
207
|
+
const h5 = responseObject(body.h5, 'invalid_h5_context_response');
|
|
208
|
+
if (typeof h5.enabled !== 'boolean'
|
|
209
|
+
|| typeof h5.appId !== 'string' || h5.appId.length > 256
|
|
210
|
+
|| (h5.brand !== 'feishu' && h5.brand !== 'lark')
|
|
211
|
+
|| typeof h5.entryPath !== 'string' || !/^\/[A-Za-z0-9/_-]{1,127}$/.test(h5.entryPath)) {
|
|
212
|
+
throw new WorkbenchApiError(502, 'invalid_h5_context_response');
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
enabled: h5.enabled,
|
|
216
|
+
appId: h5.appId,
|
|
217
|
+
brand: h5.brand,
|
|
218
|
+
entryPath: h5.entryPath,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=agent-workbench-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-workbench-api.js","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type WorkbenchApi } from './agent-workbench-api.js';
|
|
2
|
+
import type { ThemeMode } from './preferences.js';
|
|
3
|
+
import { type WorkbenchAppearanceSnapshot, type WorkbenchSkinId, type WorkbenchTermStyle } from './agent-workbench-appearance.js';
|
|
4
|
+
/** 读当前外观。store 缓存快照对象,未变化时引用不变,不会引起额外重渲染。 */
|
|
5
|
+
export declare function useWorkbenchAppearance(): WorkbenchAppearanceSnapshot;
|
|
6
|
+
/**
|
|
7
|
+
* 工作台表面(完整工作台 / 会话坞)挂载期间把外观落到文档根上,离开时原样还回去 ——
|
|
8
|
+
* 这 4 套配色是工作台的局部调色板,不该在 Dashboard 其它页面继续生效。
|
|
9
|
+
*/
|
|
10
|
+
export declare function useWorkbenchAppearanceRoot(): WorkbenchAppearanceSnapshot;
|
|
11
|
+
export declare function setWorkbenchSkin(skin: WorkbenchSkinId): void;
|
|
12
|
+
export declare function setWorkbenchMode(mode: ThemeMode): void;
|
|
13
|
+
export declare function setWorkbenchTermStyle(termStyle: WorkbenchTermStyle): void;
|
|
14
|
+
/** 「阅读|经典」分段控件。终端标题栏右侧和外观面板里用的是同一个组件、同一状态源。 */
|
|
15
|
+
export declare function WorkbenchTermStyleSegment(props: {
|
|
16
|
+
termStyle: WorkbenchTermStyle;
|
|
17
|
+
}): JSX.Element;
|
|
18
|
+
/** 面板正文。桌面浮层和移动 sheet 共用,只有外层容器不同。 */
|
|
19
|
+
export declare function WorkbenchAppearanceControls(): JSX.Element;
|
|
20
|
+
export interface WorkbenchStandingLinkPanelProps {
|
|
21
|
+
api: WorkbenchApi;
|
|
22
|
+
onClose(): void;
|
|
23
|
+
/** 测试注入用的复制实现。生产默认是 web/clipboard.ts 的 `copyText`:先
|
|
24
|
+
* `navigator.clipboard.writeText`,被拒或不可用时降级到
|
|
25
|
+
* `document.execCommand('copy')`。 */
|
|
26
|
+
copy?: (text: string) => Promise<boolean>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 「常驻链接」面板正文:显示完整链接(只读、聚焦即全选)、一键复制、以及一句
|
|
30
|
+
* 说明它为什么安全可用(收藏进书签长期用;怀疑泄漏时 `botmux dashboard rotate`
|
|
31
|
+
* 立刻作废)。
|
|
32
|
+
*
|
|
33
|
+
* 链接**只在这里现取**(点开才请求),拿不到就只显示一行「暂时取不到」——绝不
|
|
34
|
+
* 显示半截链接,也不区分「无权」和「服务端还没有 token」:对前端来说都是没有
|
|
35
|
+
* 这个入口。
|
|
36
|
+
*/
|
|
37
|
+
export declare function WorkbenchStandingLinkPanel(props: WorkbenchStandingLinkPanelProps): JSX.Element;
|
|
38
|
+
export interface WorkbenchAppearanceSheetProps {
|
|
39
|
+
open: boolean;
|
|
40
|
+
onClose(): void;
|
|
41
|
+
/** 只有本机完整管理身份才渲染「常驻链接」入口(见文件头注释)。 */
|
|
42
|
+
standingLink?: boolean;
|
|
43
|
+
api?: WorkbenchApi;
|
|
44
|
+
}
|
|
45
|
+
/** 移动端:同一块内容的底部 sheet(列表页顶栏 `◐` 直达)。owner 的常驻链接也挂在
|
|
46
|
+
* 这里——手机浏览器同样能把工作台收进书签,不必回到桌面端。 */
|
|
47
|
+
export declare function WorkbenchAppearanceSheet(props: WorkbenchAppearanceSheetProps): JSX.Element | null;
|
|
48
|
+
export interface WorkbenchAppearanceMenuProps {
|
|
49
|
+
/** 只有本机完整管理身份才渲染「常驻链接」项(见文件头注释)。 */
|
|
50
|
+
standingLink?: boolean;
|
|
51
|
+
api?: WorkbenchApi;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 桌面 / 会话坞头部的 `⋯` 菜单。第一项是「外观」,owner 还多一项「常驻链接」,
|
|
55
|
+
* 两项点开的都是同一族下拉浮层(`.wb-appearance-pop`)。
|
|
56
|
+
* 菜单和浮层都能用键盘走:Esc 关闭并把焦点还给 `⋯`,方向键在单选组里移动。
|
|
57
|
+
*/
|
|
58
|
+
export declare function WorkbenchAppearanceMenu(props?: WorkbenchAppearanceMenuProps): JSX.Element;
|
|
59
|
+
//# sourceMappingURL=agent-workbench-appearance-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-workbench-appearance-menu.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-appearance-menu.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAOL,KAAK,2BAA2B,EAChC,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAmCzC,6CAA6C;AAC7C,wBAAgB,sBAAsB,IAAI,2BAA2B,CAEpE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,2BAA2B,CAMxE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAEtD;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAEzE;AAmBD,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,kBAAkB,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAqB/F;AAED,sCAAsC;AACtC,wBAAgB,2BAA2B,IAAI,GAAG,CAAC,OAAO,CAoEzD;AAOD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;IAChB;;0CAEsC;IACtC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,GAAG,GAAG,CAAC,OAAO,CAiE9F;AAoBD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAED;oCACoC;AACpC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAsCjG;AAED,MAAM,WAAW,4BAA4B;IAC3C,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,GAAE,4BAAiC,GAAG,GAAG,CAAC,OAAO,CA+D7F"}
|