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
|
@@ -22,7 +22,16 @@ export declare class Aggregator {
|
|
|
22
22
|
applyEvent(larkAppId: string, ev: DashboardEvent): void;
|
|
23
23
|
/** Bulk-load on dashboard start before SSE catches up. Idempotent. */
|
|
24
24
|
hydrateSessions(larkAppId: string, rows: Row[]): void;
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Per-daemon reconcile for schedules. Upserts `rows` and REMOVES schedules
|
|
27
|
+
* owned by `larkAppId` that are absent from the snapshot: a
|
|
28
|
+
* `schedule.deleted` missed while the SSE stream was down would otherwise
|
|
29
|
+
* ghost forever, since upsert alone can't delete. Schedules owned by other
|
|
30
|
+
* daemons (and ownerless rows) are untouched. Rows missing `larkAppId`
|
|
31
|
+
* are tagged with the hydrating daemon, which is authoritative for them
|
|
32
|
+
* (they came from its /api/schedules).
|
|
33
|
+
*/
|
|
34
|
+
hydrateSchedules(larkAppId: string, rows: Sched[]): void;
|
|
26
35
|
getSessions(): Row[];
|
|
27
36
|
getSession(sessionId: string): Row | undefined;
|
|
28
37
|
getSchedules(): Sched[];
|
|
@@ -52,8 +61,29 @@ export declare class Aggregator {
|
|
|
52
61
|
}
|
|
53
62
|
/**
|
|
54
63
|
* Subscribe to one daemon's SSE stream and feed events into the aggregator.
|
|
55
|
-
* Auto-reconnects on error with 1s backoff. Returns an abort
|
|
64
|
+
* Auto-reconnects on error OR clean EOF with 1s backoff. Returns an abort
|
|
65
|
+
* function.
|
|
66
|
+
*
|
|
67
|
+
* `onConnected` fires after EVERY successful stream establishment — the first
|
|
68
|
+
* connection included — BEFORE any frame is read, and receives the
|
|
69
|
+
* subscription's abort signal. While it runs, incoming frames stay queued in
|
|
70
|
+
* the stream; once it resolves, reading begins and the queued frames are
|
|
71
|
+
* applied in order. The caller uses it to install an authoritative snapshot
|
|
72
|
+
* (GET /api/sessions) that is therefore at least as fresh as every frame
|
|
73
|
+
* applied afterwards: a slow snapshot response can never clobber state that
|
|
74
|
+
* a faster SSE event already delivered (the reverse race of a naive
|
|
75
|
+
* post-subscribe hydrate). The same barrier on reconnect recovers events
|
|
76
|
+
* missed while the stream was down.
|
|
77
|
+
*
|
|
78
|
+
* The signal is also the generation arbitration: if this subscription is
|
|
79
|
+
* aborted (daemon offline, superseded by a newer generation) while the
|
|
80
|
+
* callback is in flight, the callback MUST discard its result instead of
|
|
81
|
+
* applying it — otherwise the stale generation's snapshot reverse-clobbers
|
|
82
|
+
* the newer one. The callback should fetch with
|
|
83
|
+
* `AbortSignal.any([signal, timeout])` and re-check `signal.aborted` before
|
|
84
|
+
* every aggregator mutation. If `onConnected` throws, frames are still read
|
|
85
|
+
* (best-effort).
|
|
56
86
|
*/
|
|
57
|
-
export declare function subscribeDaemon(d: DaemonInfo, agg: Aggregator, onError: (e: Error) => void, fetchImpl?: typeof fetch): () => void;
|
|
87
|
+
export declare function subscribeDaemon(d: DaemonInfo, agg: Aggregator, onError: (e: Error) => void, fetchImpl?: typeof fetch, onConnected?: (signal: AbortSignal) => Promise<void> | void): () => void;
|
|
58
88
|
export {};
|
|
59
89
|
//# sourceMappingURL=aggregator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../../src/dashboard/aggregator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,KAAK,GAAG,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAC1E,KAAK,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAelD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAkE;IAEnF,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../../src/dashboard/aggregator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,KAAK,GAAG,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAC1E,KAAK,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAelD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAkE;IAEnF,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAwDvD,sEAAsE;IACtE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAKrD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI;IAWxD,WAAW,IAAI,GAAG,EAAE;IACpB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAC9C,YAAY,IAAI,KAAK,EAAE;IAEvB,sEAAsE;IACtE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;;gFAG4E;IAC5E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1D;;;;uDAImD;IACnD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAGzC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/C;;;;yEAIqE;IACrE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAInC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;CAIxE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,UAAU,EACb,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,EAC3B,SAAS,GAAE,OAAO,KAAa,EAC/B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC1D,MAAM,IAAI,CA+EZ"}
|
|
@@ -50,9 +50,16 @@ export class Aggregator {
|
|
|
50
50
|
this.sessions.set(ev.body.sessionId, { ...cur, status: 'closed' });
|
|
51
51
|
break;
|
|
52
52
|
}
|
|
53
|
-
case 'schedule.created':
|
|
54
|
-
|
|
53
|
+
case 'schedule.created': {
|
|
54
|
+
const schedule = ev.body.schedule;
|
|
55
|
+
// Tag ownerless rows with the reporting daemon so scoped reconcile
|
|
56
|
+
// (hydrateSchedules) can account for them.
|
|
57
|
+
this.schedules.set(schedule.id, {
|
|
58
|
+
...schedule,
|
|
59
|
+
larkAppId: schedule.larkAppId ?? larkAppId,
|
|
60
|
+
});
|
|
55
61
|
break;
|
|
62
|
+
}
|
|
56
63
|
case 'schedule.updated': {
|
|
57
64
|
const cur = this.schedules.get(ev.body.id);
|
|
58
65
|
if (cur)
|
|
@@ -77,9 +84,25 @@ export class Aggregator {
|
|
|
77
84
|
this.sessions.set(r.sessionId, mergeSpawnedRow(this.sessions.get(r.sessionId), r, larkAppId));
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Per-daemon reconcile for schedules. Upserts `rows` and REMOVES schedules
|
|
89
|
+
* owned by `larkAppId` that are absent from the snapshot: a
|
|
90
|
+
* `schedule.deleted` missed while the SSE stream was down would otherwise
|
|
91
|
+
* ghost forever, since upsert alone can't delete. Schedules owned by other
|
|
92
|
+
* daemons (and ownerless rows) are untouched. Rows missing `larkAppId`
|
|
93
|
+
* are tagged with the hydrating daemon, which is authoritative for them
|
|
94
|
+
* (they came from its /api/schedules).
|
|
95
|
+
*/
|
|
96
|
+
hydrateSchedules(larkAppId, rows) {
|
|
97
|
+
const incoming = new Set(rows.map(r => r.id));
|
|
98
|
+
for (const r of rows) {
|
|
99
|
+
const owner = r.larkAppId ?? larkAppId;
|
|
100
|
+
this.schedules.set(r.id, { ...r, larkAppId: owner });
|
|
101
|
+
}
|
|
102
|
+
for (const [id, cur] of this.schedules) {
|
|
103
|
+
if (cur.larkAppId === larkAppId && !incoming.has(id))
|
|
104
|
+
this.schedules.delete(id);
|
|
105
|
+
}
|
|
83
106
|
}
|
|
84
107
|
getSessions() { return [...this.sessions.values()]; }
|
|
85
108
|
getSession(sessionId) { return this.sessions.get(sessionId); }
|
|
@@ -121,25 +144,80 @@ export class Aggregator {
|
|
|
121
144
|
}
|
|
122
145
|
/**
|
|
123
146
|
* Subscribe to one daemon's SSE stream and feed events into the aggregator.
|
|
124
|
-
* Auto-reconnects on error with 1s backoff. Returns an abort
|
|
147
|
+
* Auto-reconnects on error OR clean EOF with 1s backoff. Returns an abort
|
|
148
|
+
* function.
|
|
149
|
+
*
|
|
150
|
+
* `onConnected` fires after EVERY successful stream establishment — the first
|
|
151
|
+
* connection included — BEFORE any frame is read, and receives the
|
|
152
|
+
* subscription's abort signal. While it runs, incoming frames stay queued in
|
|
153
|
+
* the stream; once it resolves, reading begins and the queued frames are
|
|
154
|
+
* applied in order. The caller uses it to install an authoritative snapshot
|
|
155
|
+
* (GET /api/sessions) that is therefore at least as fresh as every frame
|
|
156
|
+
* applied afterwards: a slow snapshot response can never clobber state that
|
|
157
|
+
* a faster SSE event already delivered (the reverse race of a naive
|
|
158
|
+
* post-subscribe hydrate). The same barrier on reconnect recovers events
|
|
159
|
+
* missed while the stream was down.
|
|
160
|
+
*
|
|
161
|
+
* The signal is also the generation arbitration: if this subscription is
|
|
162
|
+
* aborted (daemon offline, superseded by a newer generation) while the
|
|
163
|
+
* callback is in flight, the callback MUST discard its result instead of
|
|
164
|
+
* applying it — otherwise the stale generation's snapshot reverse-clobbers
|
|
165
|
+
* the newer one. The callback should fetch with
|
|
166
|
+
* `AbortSignal.any([signal, timeout])` and re-check `signal.aborted` before
|
|
167
|
+
* every aggregator mutation. If `onConnected` throws, frames are still read
|
|
168
|
+
* (best-effort).
|
|
125
169
|
*/
|
|
126
|
-
export function subscribeDaemon(d, agg, onError, fetchImpl = fetch) {
|
|
170
|
+
export function subscribeDaemon(d, agg, onError, fetchImpl = fetch, onConnected) {
|
|
127
171
|
const ctrl = new AbortController();
|
|
128
172
|
const url = `http://127.0.0.1:${d.ipcPort}/api/events`;
|
|
173
|
+
let reconnectTimer;
|
|
174
|
+
// Clear the reconnect backoff immediately on abort so the loop exits
|
|
175
|
+
// without waiting the full second.
|
|
176
|
+
ctrl.signal.addEventListener('abort', () => {
|
|
177
|
+
if (reconnectTimer)
|
|
178
|
+
clearTimeout(reconnectTimer);
|
|
179
|
+
}, { once: true });
|
|
180
|
+
const applyFrame = (evt, body) => {
|
|
181
|
+
if (evt === 'session.spawned' && d.botAvatarUrl && body?.session) {
|
|
182
|
+
const session = body.session;
|
|
183
|
+
body.session = { ...session, botAvatarUrl: d.botAvatarUrl };
|
|
184
|
+
}
|
|
185
|
+
agg.applyEvent(d.larkAppId, { type: evt, body });
|
|
186
|
+
};
|
|
129
187
|
(async () => {
|
|
130
188
|
while (!ctrl.signal.aborted) {
|
|
131
189
|
try {
|
|
132
190
|
const res = await fetchImpl(url, { signal: ctrl.signal });
|
|
133
191
|
if (!res.ok || !res.body)
|
|
134
192
|
throw new Error(`bad status ${res.status}`);
|
|
193
|
+
// Snapshot barrier: install the caller's authoritative snapshot
|
|
194
|
+
// before any frame is applied. Frames arriving during this call
|
|
195
|
+
// remain queued in the stream and are applied afterwards, in order,
|
|
196
|
+
// so the snapshot can never overwrite fresher SSE-delivered state.
|
|
197
|
+
// The subscription signal is passed through as the generation
|
|
198
|
+
// arbitration — the callback must not apply after abort.
|
|
199
|
+
if (onConnected) {
|
|
200
|
+
try {
|
|
201
|
+
await onConnected(ctrl.signal);
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
onError(e instanceof Error ? e : new Error(String(e)));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (ctrl.signal.aborted)
|
|
208
|
+
break;
|
|
135
209
|
const reader = res.body.getReader();
|
|
136
210
|
const dec = new TextDecoder();
|
|
137
211
|
let buf = '';
|
|
138
212
|
let evt = '';
|
|
139
213
|
for (;;) {
|
|
140
214
|
const { value, done } = await reader.read();
|
|
141
|
-
if (done)
|
|
142
|
-
|
|
215
|
+
if (done) {
|
|
216
|
+
// Clean EOF of an established stream means the daemon went away.
|
|
217
|
+
// Treat it as a disconnect: fall through to the backoff +
|
|
218
|
+
// barrier re-run path instead of silently tight-looping.
|
|
219
|
+
throw new Error('sse stream ended (clean EOF)');
|
|
220
|
+
}
|
|
143
221
|
buf += dec.decode(value, { stream: true });
|
|
144
222
|
let nl;
|
|
145
223
|
while ((nl = buf.indexOf('\n')) >= 0) {
|
|
@@ -150,11 +228,7 @@ export function subscribeDaemon(d, agg, onError, fetchImpl = fetch) {
|
|
|
150
228
|
else if (line.startsWith('data:') && evt) {
|
|
151
229
|
const data = line.slice(5).trim();
|
|
152
230
|
try {
|
|
153
|
-
|
|
154
|
-
if (evt === 'session.spawned' && d.botAvatarUrl && body?.session) {
|
|
155
|
-
body.session = { ...body.session, botAvatarUrl: d.botAvatarUrl };
|
|
156
|
-
}
|
|
157
|
-
agg.applyEvent(d.larkAppId, { type: evt, body });
|
|
231
|
+
applyFrame(evt, JSON.parse(data));
|
|
158
232
|
}
|
|
159
233
|
catch {
|
|
160
234
|
// Skip malformed frame
|
|
@@ -165,9 +239,11 @@ export function subscribeDaemon(d, agg, onError, fetchImpl = fetch) {
|
|
|
165
239
|
}
|
|
166
240
|
}
|
|
167
241
|
catch (e) {
|
|
168
|
-
if (
|
|
169
|
-
|
|
170
|
-
|
|
242
|
+
if (ctrl.signal.aborted)
|
|
243
|
+
break;
|
|
244
|
+
onError(e);
|
|
245
|
+
await new Promise(r => { reconnectTimer = setTimeout(r, 1_000); });
|
|
246
|
+
reconnectTimer = undefined;
|
|
171
247
|
}
|
|
172
248
|
}
|
|
173
249
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/dashboard/aggregator.ts"],"names":[],"mappings":"AAMA,MAAM,2BAA2B,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAEvF,SAAS,eAAe,CAAC,OAAwB,EAAE,QAAa,EAAE,SAAiB;IACjF,MAAM,IAAI,GAAQ,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC7C,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACtD,KAAK,MAAM,KAAK,IAAI,2BAA2B,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACb,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IAClC,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,SAAS,GAAG,IAAI,GAAG,EAAuD,CAAC;IAEnF,UAAU,CAAC,SAAiB,EAAE,EAAkB;QAC9C,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAc,CAAC;gBACjC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC3E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACrC,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC7C,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjD,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnC,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;2BACtD,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,EACtC,CAAC;wBACD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACtB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;oBACzB,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;oBAC3D,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACnD,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjD,IAAI,GAAG;oBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5E,MAAM;YACR,CAAC;YACD,KAAK,kBAAkB;
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../src/dashboard/aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P1-8:把「长连接」挂到签发它的认证会话下,认证一结束就立刻掐断。
|
|
3
|
+
*
|
|
4
|
+
* 背景:H5 logout / 会话到期、legacy token rotate、平台解绑之后,短请求会立刻
|
|
5
|
+
* 401,但**已经建立的流**不会——`/events` SSE、Preview 的 SSE/长响应、Preview
|
|
6
|
+
* WebSocket 都是登出前握好的手,握完就一直流,直到对端自己断开。这等于登出只
|
|
7
|
+
* 关了前门,后窗还开着:一台被借走的手机、一个已经交接掉的工作台页面,仍然能持
|
|
8
|
+
* 续看到会话板与预览内容,旧的 management SSE 甚至会收到**登出之后新产生**的
|
|
9
|
+
* `riffAccessUrl`(Riff 沙箱写凭据)。
|
|
10
|
+
*
|
|
11
|
+
* 这里只做一件事:authSessionId → 一组「关闭器」。建流时登记,流自然结束时注销,
|
|
12
|
+
* 身份结束时遍历关闭。它不认识 HTTP,也不认识 WebSocket——调用方给什么关闭动作
|
|
13
|
+
* 就执行什么(`res.destroy()` / `socket.destroy()`),因此同一份索引可以同时管
|
|
14
|
+
* SSE 响应和 WS 桥接 socket。
|
|
15
|
+
*
|
|
16
|
+
* 与 `TerminalControlManager.registerReadSocket` 的关系:那份索引是终端读流专用
|
|
17
|
+
* 的(P1-5),语义与写租约耦合;本索引是通用的,覆盖终端之外的所有长连接。两者
|
|
18
|
+
* 都由 `dashboardSessions.onEnd` / rotate / unbind 同一批钩子驱动。
|
|
19
|
+
*/
|
|
20
|
+
/** 关闭一条已建立的长连接。必须幂等:可能与对端自己断开竞争。 */
|
|
21
|
+
export type AuthSessionConnectionCloser = () => void;
|
|
22
|
+
export declare class AuthSessionConnectionRegistry {
|
|
23
|
+
private readonly byAuthSession;
|
|
24
|
+
/**
|
|
25
|
+
* P1-13:同一批连接的第二个索引——按被预览的**业务会话** id。
|
|
26
|
+
*
|
|
27
|
+
* 身份还在、但预览目标没了(worker 换代 / 切 CLI / 会话关闭 / 端口被别的进程接管)
|
|
28
|
+
* 时,authSession 那把钥匙开不了这扇门:登录用户完全合法,只是他正在看的那条流已经
|
|
29
|
+
* 指向一个不再属于这个会话的进程。必须能按 sessionId 单独把这批流掐掉,且不碰同一
|
|
30
|
+
* 认证会话名下其它会话的连接。
|
|
31
|
+
*/
|
|
32
|
+
private readonly bySession;
|
|
33
|
+
/**
|
|
34
|
+
* 登记一条属于 `authSessionId` 的长连接,返回注销闭包。
|
|
35
|
+
* 调用方必须在连接自然关闭时调用注销闭包,否则 Map 会随连接数无限增长。
|
|
36
|
+
*
|
|
37
|
+
* `sessionId` 可选:预览类长连接传它,好让预览目标失效时能定点断流。
|
|
38
|
+
*/
|
|
39
|
+
register(authSessionId: string, close: AuthSessionConnectionCloser, sessionId?: string): () => void;
|
|
40
|
+
private add;
|
|
41
|
+
private drop;
|
|
42
|
+
/**
|
|
43
|
+
* 身份结束(logout / 到期 / rotate / 解绑)时调用:关闭该认证会话名下的全部
|
|
44
|
+
* 长连接,返回关闭条数。先把整组摘下来再逐个关,避免关闭回调同步触发注销时
|
|
45
|
+
* 改动正在遍历的集合。别的认证会话的连接一条都不动。
|
|
46
|
+
*/
|
|
47
|
+
closeAuthSession(authSessionId: string): number;
|
|
48
|
+
/**
|
|
49
|
+
* P1-13:预览目标失效(换代 / 关闭 / 端口易主)时,关闭这个业务会话名下的全部
|
|
50
|
+
* 长连接。注销闭包会把它们同时从 authSession 索引里摘掉,两个索引不会漂移。
|
|
51
|
+
*/
|
|
52
|
+
closeSessionStreams(sessionId: string): number;
|
|
53
|
+
private closeAll;
|
|
54
|
+
/** 当前登记的连接数:不传参是全量,传参是单个认证会话。仅用于测试与自检。 */
|
|
55
|
+
count(authSessionId?: string): number;
|
|
56
|
+
/** 某个业务会话名下的连接数。仅用于测试与自检。 */
|
|
57
|
+
countSessionStreams(sessionId: string): number;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=auth-session-connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-session-connections.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth-session-connections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,oCAAoC;AACpC,MAAM,MAAM,2BAA2B,GAAG,MAAM,IAAI,CAAC;AAErD,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuD;IACrF;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuD;IAEjF;;;;;OAKG;IACH,QAAQ,CACN,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,2BAA2B,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,IAAI;IASb,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,IAAI;IAWZ;;;;OAIG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAI/C;;;OAGG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C,OAAO,CAAC,QAAQ;IAiBhB,0CAA0C;IAC1C,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IAOrC,6BAA6B;IAC7B,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAG/C"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P1-8:把「长连接」挂到签发它的认证会话下,认证一结束就立刻掐断。
|
|
3
|
+
*
|
|
4
|
+
* 背景:H5 logout / 会话到期、legacy token rotate、平台解绑之后,短请求会立刻
|
|
5
|
+
* 401,但**已经建立的流**不会——`/events` SSE、Preview 的 SSE/长响应、Preview
|
|
6
|
+
* WebSocket 都是登出前握好的手,握完就一直流,直到对端自己断开。这等于登出只
|
|
7
|
+
* 关了前门,后窗还开着:一台被借走的手机、一个已经交接掉的工作台页面,仍然能持
|
|
8
|
+
* 续看到会话板与预览内容,旧的 management SSE 甚至会收到**登出之后新产生**的
|
|
9
|
+
* `riffAccessUrl`(Riff 沙箱写凭据)。
|
|
10
|
+
*
|
|
11
|
+
* 这里只做一件事:authSessionId → 一组「关闭器」。建流时登记,流自然结束时注销,
|
|
12
|
+
* 身份结束时遍历关闭。它不认识 HTTP,也不认识 WebSocket——调用方给什么关闭动作
|
|
13
|
+
* 就执行什么(`res.destroy()` / `socket.destroy()`),因此同一份索引可以同时管
|
|
14
|
+
* SSE 响应和 WS 桥接 socket。
|
|
15
|
+
*
|
|
16
|
+
* 与 `TerminalControlManager.registerReadSocket` 的关系:那份索引是终端读流专用
|
|
17
|
+
* 的(P1-5),语义与写租约耦合;本索引是通用的,覆盖终端之外的所有长连接。两者
|
|
18
|
+
* 都由 `dashboardSessions.onEnd` / rotate / unbind 同一批钩子驱动。
|
|
19
|
+
*/
|
|
20
|
+
export class AuthSessionConnectionRegistry {
|
|
21
|
+
byAuthSession = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* P1-13:同一批连接的第二个索引——按被预览的**业务会话** id。
|
|
24
|
+
*
|
|
25
|
+
* 身份还在、但预览目标没了(worker 换代 / 切 CLI / 会话关闭 / 端口被别的进程接管)
|
|
26
|
+
* 时,authSession 那把钥匙开不了这扇门:登录用户完全合法,只是他正在看的那条流已经
|
|
27
|
+
* 指向一个不再属于这个会话的进程。必须能按 sessionId 单独把这批流掐掉,且不碰同一
|
|
28
|
+
* 认证会话名下其它会话的连接。
|
|
29
|
+
*/
|
|
30
|
+
bySession = new Map();
|
|
31
|
+
/**
|
|
32
|
+
* 登记一条属于 `authSessionId` 的长连接,返回注销闭包。
|
|
33
|
+
* 调用方必须在连接自然关闭时调用注销闭包,否则 Map 会随连接数无限增长。
|
|
34
|
+
*
|
|
35
|
+
* `sessionId` 可选:预览类长连接传它,好让预览目标失效时能定点断流。
|
|
36
|
+
*/
|
|
37
|
+
register(authSessionId, close, sessionId) {
|
|
38
|
+
this.add(this.byAuthSession, authSessionId, close);
|
|
39
|
+
if (sessionId !== undefined)
|
|
40
|
+
this.add(this.bySession, sessionId, close);
|
|
41
|
+
return () => {
|
|
42
|
+
this.drop(this.byAuthSession, authSessionId, close);
|
|
43
|
+
if (sessionId !== undefined)
|
|
44
|
+
this.drop(this.bySession, sessionId, close);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
add(index, key, close) {
|
|
48
|
+
let closers = index.get(key);
|
|
49
|
+
if (!closers) {
|
|
50
|
+
closers = new Set();
|
|
51
|
+
index.set(key, closers);
|
|
52
|
+
}
|
|
53
|
+
closers.add(close);
|
|
54
|
+
}
|
|
55
|
+
drop(index, key, close) {
|
|
56
|
+
const current = index.get(key);
|
|
57
|
+
if (!current)
|
|
58
|
+
return;
|
|
59
|
+
current.delete(close);
|
|
60
|
+
if (current.size === 0)
|
|
61
|
+
index.delete(key);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 身份结束(logout / 到期 / rotate / 解绑)时调用:关闭该认证会话名下的全部
|
|
65
|
+
* 长连接,返回关闭条数。先把整组摘下来再逐个关,避免关闭回调同步触发注销时
|
|
66
|
+
* 改动正在遍历的集合。别的认证会话的连接一条都不动。
|
|
67
|
+
*/
|
|
68
|
+
closeAuthSession(authSessionId) {
|
|
69
|
+
return this.closeAll(this.byAuthSession, authSessionId);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* P1-13:预览目标失效(换代 / 关闭 / 端口易主)时,关闭这个业务会话名下的全部
|
|
73
|
+
* 长连接。注销闭包会把它们同时从 authSession 索引里摘掉,两个索引不会漂移。
|
|
74
|
+
*/
|
|
75
|
+
closeSessionStreams(sessionId) {
|
|
76
|
+
return this.closeAll(this.bySession, sessionId);
|
|
77
|
+
}
|
|
78
|
+
closeAll(index, key) {
|
|
79
|
+
const closers = index.get(key);
|
|
80
|
+
if (!closers)
|
|
81
|
+
return 0;
|
|
82
|
+
// 先把整组摘下来再逐个关:关闭回调会同步触发注销闭包,那会改动这个集合。
|
|
83
|
+
index.delete(key);
|
|
84
|
+
let closed = 0;
|
|
85
|
+
for (const close of [...closers]) {
|
|
86
|
+
closed++;
|
|
87
|
+
// 单条关闭失败(socket 已被对端销毁等)不能拖垮同批其它连接的撤销。
|
|
88
|
+
try {
|
|
89
|
+
close();
|
|
90
|
+
}
|
|
91
|
+
catch { /* already gone */ }
|
|
92
|
+
}
|
|
93
|
+
return closed;
|
|
94
|
+
}
|
|
95
|
+
/** 当前登记的连接数:不传参是全量,传参是单个认证会话。仅用于测试与自检。 */
|
|
96
|
+
count(authSessionId) {
|
|
97
|
+
if (authSessionId !== undefined)
|
|
98
|
+
return this.byAuthSession.get(authSessionId)?.size ?? 0;
|
|
99
|
+
let total = 0;
|
|
100
|
+
for (const closers of this.byAuthSession.values())
|
|
101
|
+
total += closers.size;
|
|
102
|
+
return total;
|
|
103
|
+
}
|
|
104
|
+
/** 某个业务会话名下的连接数。仅用于测试与自检。 */
|
|
105
|
+
countSessionStreams(sessionId) {
|
|
106
|
+
return this.bySession.get(sessionId)?.size ?? 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=auth-session-connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-session-connections.js","sourceRoot":"","sources":["../../src/dashboard/auth-session-connections.ts"],"names":[],"mappings":"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"}
|
package/dist/dashboard/auth.d.ts
CHANGED
|
@@ -40,9 +40,26 @@ export declare function generateToken(): string;
|
|
|
40
40
|
/**
|
|
41
41
|
* Load a dashboard HMAC secret from disk. Empty / whitespace-only files are
|
|
42
42
|
* treated as missing so callers never sign requests with an empty key.
|
|
43
|
+
*
|
|
44
|
+
* Goes through the same strict host-authority primitives as the persisted
|
|
45
|
+
* token: the leaf must be a regular 0600 file owned by the current user and
|
|
46
|
+
* must not be a symlink, and its directory (`~/.botmux`) must not be
|
|
47
|
+
* group/other-writable. An unsafe shape throws
|
|
48
|
+
* {@link UnsafeHostAuthorityFileError} (fail-closed) instead of being followed:
|
|
49
|
+
* a symlinked or loose-perms secret could be planted by a local attacker who
|
|
50
|
+
* can replace the credential directory, letting them forge CLI HMAC headers
|
|
51
|
+
* and mint dashboard tokens.
|
|
43
52
|
*/
|
|
44
53
|
export declare function loadDashboardSecret(secretPath: string): string | null;
|
|
45
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Load the dashboard HMAC secret, creating a fresh 0600 secret when absent or
|
|
56
|
+
* empty. The credential directory is pinned once (Linux: via an open directory
|
|
57
|
+
* descriptor) and the lock, the read, and the write all resolve through that
|
|
58
|
+
* same anchor — so a symlinked HOME / shared-drive ancestor still works while
|
|
59
|
+
* an ancestor rename mid-section cannot redirect the secret into a substituted
|
|
60
|
+
* directory, and a leaf symlink is refused. The file lock makes get-or-create
|
|
61
|
+
* linearizable across dashboard processes.
|
|
62
|
+
*/
|
|
46
63
|
export declare function loadOrCreateDashboardSecret(secretPath: string): string;
|
|
47
64
|
/**
|
|
48
65
|
* Load the persisted active dashboard token from `tokenPath`, or `null` when
|
|
@@ -113,6 +130,8 @@ export declare function buildSetCookie(token: string): string;
|
|
|
113
130
|
* - `GET/HEAD /`, `/assets/*`, root icons — static SPA shell
|
|
114
131
|
* - `GET /api/workflows/*` — zero-I/O legacy retirement
|
|
115
132
|
* tombstone (HTTP 410).
|
|
133
|
+
* - `GET /workbench-ticket/<ticket>` — 短时票据兑换(票据即凭证,
|
|
134
|
+
* 处理器自行验票,P2-1)。
|
|
116
135
|
*
|
|
117
136
|
* Outside those always-public surfaces, the explicit `publicReadOnly`
|
|
118
137
|
* allow-list controls tokenless observation. Mutations and private reads still
|
|
@@ -128,6 +147,25 @@ export type AuthDecision = {
|
|
|
128
147
|
} | {
|
|
129
148
|
kind: 'deny401';
|
|
130
149
|
};
|
|
150
|
+
/**
|
|
151
|
+
* Feishu/Lark H5 sessions are deliberately narrower than the legacy owner
|
|
152
|
+
* cookie. They can render the Workbench, observe its session stream, and use
|
|
153
|
+
* the two explicitly leased interaction surfaces; they can never fall through
|
|
154
|
+
* into Dashboard administration merely because a new route was added.
|
|
155
|
+
*
|
|
156
|
+
* Keep this as a positive capability map. In particular, broad rules such as
|
|
157
|
+
* "all GETs" would expose config/secrets, while "all POSTs under /api/sessions"
|
|
158
|
+
* would turn an H5 viewer into a host operator.
|
|
159
|
+
*/
|
|
160
|
+
export type WorkbenchH5Capability = 'workbench.view' | 'terminal.view' | 'terminal.operate' | 'preview.view' | 'preview.operate';
|
|
161
|
+
export declare function workbenchH5Capability(method: string, pathname: string): WorkbenchH5Capability | null;
|
|
162
|
+
/** Fail-closed auth decision for an already-authenticated H5/readonly-platform
|
|
163
|
+
* identity. Static shell reads retain the ordinary public behavior; everything
|
|
164
|
+
* else must name one of the Workbench capabilities above. */
|
|
165
|
+
export declare function decideWorkbenchH5Auth(opts: {
|
|
166
|
+
method: string;
|
|
167
|
+
pathname: string;
|
|
168
|
+
}): AuthDecision;
|
|
131
169
|
export declare function decideDashboardAuth(opts: {
|
|
132
170
|
method: string;
|
|
133
171
|
pathname: string;
|
|
@@ -141,4 +179,64 @@ export declare function decideDashboardAuth(opts: {
|
|
|
141
179
|
* all writes) still requires the active token. */
|
|
142
180
|
publicReadOnly?: boolean;
|
|
143
181
|
}): AuthDecision;
|
|
182
|
+
/**
|
|
183
|
+
* 前端可见的"最小操作能力集"。`workbenchAuthed` 只能证明可进工作台,不代表任何
|
|
184
|
+
* 一项操作权限;三布尔各自对应一条真实路由的门禁:
|
|
185
|
+
*
|
|
186
|
+
* - `canLocate` → `POST /api/sessions/:id/locate`(话题定位)。
|
|
187
|
+
* - `canControl` → `POST /api/sessions/:id/control/takeover|release`
|
|
188
|
+
* (终端接管/释放)。
|
|
189
|
+
* - `canInteract` → `POST /api/sessions/:id/preview-interaction/unlock|
|
|
190
|
+
* activity|lock`(Preview 交互解锁)。
|
|
191
|
+
*
|
|
192
|
+
* 边界(P1-6 write token):`canControl` 只描述该身份**不带显式 token 时**在
|
|
193
|
+
* Dashboard control API 上的默认能力。显式 `?token=`(write token)走终端前置
|
|
194
|
+
* 代理的独立授权链——它既不经过这三条 API,也不受本投影影响;一个 teammate 被
|
|
195
|
+
* 递了显式 write token 仍可直接写终端,本投影不试图(也不可能)描述那条通道。
|
|
196
|
+
*/
|
|
197
|
+
export interface WorkbenchOperationCapabilities {
|
|
198
|
+
canLocate: boolean;
|
|
199
|
+
canControl: boolean;
|
|
200
|
+
canInteract: boolean;
|
|
201
|
+
}
|
|
202
|
+
/** 匿名 / 解析失败时的 fail-closed 值:三项全 false。 */
|
|
203
|
+
export declare const WORKBENCH_NO_OPERATION_CAPABILITIES: Readonly<WorkbenchOperationCapabilities>;
|
|
204
|
+
/**
|
|
205
|
+
* 处理器级角色门禁:谁能对预览交互做写操作(unlock / activity / lock)。
|
|
206
|
+
*
|
|
207
|
+
* 这一条判据同时被三处消费,必须只有一份实现,否则「画不画解锁按钮」和「POST 会
|
|
208
|
+
* 不会 403」会各走各的:
|
|
209
|
+
* 1. `dashboard.ts` 的 `/api/sessions/:id/preview-interaction/*` 路由(唯一权威,
|
|
210
|
+
* false → 403 `preview_operation_forbidden`);
|
|
211
|
+
* 2. 下面 {@link projectWorkbenchOperationCapabilities} 的 `canInteract`;
|
|
212
|
+
* 3. 由 2 驱动的工作台「开启交互」按钮与 Preview guard 壳里的解锁按钮。
|
|
213
|
+
*
|
|
214
|
+
* 身份缺失或 `previewCapability` 不是明确的 `'operate'` 一律 false(fail closed)。
|
|
215
|
+
*/
|
|
216
|
+
export declare function previewInteractionWriteAllowed(identity: {
|
|
217
|
+
previewCapability?: 'operate' | 'readonly';
|
|
218
|
+
} | null | undefined): boolean;
|
|
219
|
+
/** 投影所需的最小身份切面——与 dashboard.ts 的 DashboardRequestIdentity 结构兼容
|
|
220
|
+
* (kind 枚举 + terminal-control.ts 的角色能力字段)。 */
|
|
221
|
+
export interface WorkbenchCapabilityActor {
|
|
222
|
+
kind: 'legacy-dashboard' | 'platform-dashboard' | 'feishu-h5';
|
|
223
|
+
terminalCapability?: 'controlled' | 'owner' | 'readonly';
|
|
224
|
+
previewCapability: 'operate' | 'readonly';
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* 由身份投影三布尔能力集。**不是一张平行的权限表**:每一项都通过复算真实路由
|
|
228
|
+
* 的两层门禁得出——
|
|
229
|
+
*
|
|
230
|
+
* 1. 路由级 auth 决策:workbench-only 身份(H5 / platform)走
|
|
231
|
+
* {@link decideWorkbenchH5Auth}(capability 表里没有 /locate,所以 H5 与
|
|
232
|
+
* platform 全员 canLocate=false);legacy owner 走
|
|
233
|
+
* {@link decideDashboardAuth}(cookie == active token,等价于 allow)。
|
|
234
|
+
* 2. 处理器级角色检查:dashboard.ts 对 control/preview-interaction 写操作分别
|
|
235
|
+
* 用 `terminalCapability === 'readonly'` / `previewCapability === 'readonly'`
|
|
236
|
+
* 403,这里逐字复用同一判据。
|
|
237
|
+
*
|
|
238
|
+
* 因此「投影为 true 而路由 401/403」或反向漂移只可能来自这两层规则本身的改动,
|
|
239
|
+
* 而 test/dashboard-auth.test.ts 的矩阵测试把两边钉在一起。
|
|
240
|
+
*/
|
|
241
|
+
export declare function projectWorkbenchOperationCapabilities(identity: WorkbenchCapabilityActor | null): WorkbenchOperationCapabilities;
|
|
144
242
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAExE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvF;AAED;;gFAEgF;AAChF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAM5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BlC;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEnE;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUpE;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAaD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,EAClD,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAoDnD;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,iBAAiB,CAAC;AAEtB,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAyCpG;AAED;;6DAE6D;AAC7D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CAaf;AAsBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;uDAImD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,YAAY,CA4Ef;AAID;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2CAA2C;AAC3C,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC,8BAA8B,CACb,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE;IAAE,iBAAiB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC1E,OAAO,CAET;AAED;+CAC+C;AAC/C,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,WAAW,CAAC;IAC9D,kBAAkB,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;IACzD,iBAAiB,EAAE,SAAS,GAAG,UAAU,CAAC;CAC3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GACxC,8BAA8B,CA2BhC"}
|