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,353 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState, } from 'react';
|
|
3
|
+
import { WORKBENCH_GROUP_DIMENSIONS, attentionSummary, computeVirtualWindow, flattenWorkbenchGroups, formatWorkbenchRelativeTime, groupWorkbenchSessionsForDimension, isWorkbenchGroupDimension, sessionActivityAt, workbenchListItemHeight, workbenchSessionKind, workbenchSessionTitle, } from './agent-workbench-model.js';
|
|
4
|
+
import { loadWorkbenchCollapsedGroups, saveWorkbenchCollapsedGroups, } from './agent-workbench-storage.js';
|
|
5
|
+
import { buildChatAppLink } from './agent-workbench-chat.js';
|
|
6
|
+
import { t } from './ui.js';
|
|
7
|
+
/** 行操作按钮用短文字,不用图标——图标要靠猜,两个字直接说清楚做什么。 */
|
|
8
|
+
/** 会话类型徽标文案。键与 workbenchSessionKind 的返回值一一对应。 */
|
|
9
|
+
const KIND_COPY = {
|
|
10
|
+
thread: { label: '话题', title: '话题会话' },
|
|
11
|
+
group: { label: '群', title: '群会话' },
|
|
12
|
+
p2p: { label: '单聊', title: '单聊会话' },
|
|
13
|
+
};
|
|
14
|
+
/** 与服务端 locateLimiter 对齐的按钮侧冷却;成功态只是短暂的视觉确认。 */
|
|
15
|
+
const LOCATE_COOLDOWN_MS = 30_000;
|
|
16
|
+
const LOCATE_SUCCESS_MS = 2_000;
|
|
17
|
+
/** 429 会把还需等待的秒数挂在错误对象上(WorkbenchApiError.retryAfterSeconds)。
|
|
18
|
+
* 这里刻意用鸭子类型读取,避免展示组件反向依赖 api 模块。 */
|
|
19
|
+
function locateRetryAfterMs(error) {
|
|
20
|
+
const seconds = Number(error?.retryAfterSeconds);
|
|
21
|
+
return Number.isFinite(seconds) && seconds > 0 ? Math.min(seconds * 1000, LOCATE_COOLDOWN_MS) : null;
|
|
22
|
+
}
|
|
23
|
+
function locateErrorText(error) {
|
|
24
|
+
const message = error instanceof Error ? error.message : String(error ?? '');
|
|
25
|
+
return message.trim() || '未知错误';
|
|
26
|
+
}
|
|
27
|
+
/** 行前的状态记号。分组名本身由 model 给(动态维度下就是机器人名/会话名),
|
|
28
|
+
* 这里只留图标,避免同一份文案在两处各写一遍、日子久了对不上。 */
|
|
29
|
+
const GROUP_ICON = {
|
|
30
|
+
'needs-you': '!',
|
|
31
|
+
active: '●',
|
|
32
|
+
recent: '↺',
|
|
33
|
+
};
|
|
34
|
+
/** 未读但没有 attention 理由时,行里说这一句——它替的是「有什么事」那一格。 */
|
|
35
|
+
const UNREAD_REASON = '有新回复';
|
|
36
|
+
/** 没传 unreadIds 时用同一个空集合,memo 依赖才不会每次渲染都变。 */
|
|
37
|
+
const NO_UNREAD = new Set();
|
|
38
|
+
/** 折叠状态是浏览器本地的一句偏好,列表自己读写(工作台和会话坞共用同一份)。
|
|
39
|
+
* 没有 window(组件测试跑在 node 上)就当没存过,一切照常展开。 */
|
|
40
|
+
function browserStorage() {
|
|
41
|
+
if (typeof window === 'undefined')
|
|
42
|
+
return null;
|
|
43
|
+
try {
|
|
44
|
+
return window.localStorage;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** 组头是真按钮,Enter / Space 该由浏览器派给它自己。列表的 keydown 挂在滚动容器
|
|
51
|
+
* 上,事件会冒泡上来,不认一下就会「折叠一次 + 再选中一次」两件事一起发生。 */
|
|
52
|
+
function fromGroupToggle(target) {
|
|
53
|
+
const node = target;
|
|
54
|
+
return typeof node?.closest === 'function' && node.closest('.wb-session-group-toggle') !== null;
|
|
55
|
+
}
|
|
56
|
+
/** 分组头的图标:动态维度(机器人/会话/CLI)的组没有语义颜色,用中性圆点。 */
|
|
57
|
+
function headerIcon(item) {
|
|
58
|
+
if (item.isNeedsYou)
|
|
59
|
+
return GROUP_ICON['needs-you'];
|
|
60
|
+
if (item.groupKey === 'active')
|
|
61
|
+
return GROUP_ICON.active;
|
|
62
|
+
if (item.groupKey === 'recent')
|
|
63
|
+
return GROUP_ICON.recent;
|
|
64
|
+
return '·';
|
|
65
|
+
}
|
|
66
|
+
/** 只有这三个保留 key 才允许拼进 class 名——bot/chat/cli 的组名是数据里的自由
|
|
67
|
+
* 文本,绝不能直接拼类名。「待你处理」保留红色高亮,其余组走 .wb-session-group 默认色。 */
|
|
68
|
+
function headerClassName(item) {
|
|
69
|
+
if (item.isNeedsYou)
|
|
70
|
+
return 'wb-session-group wb-session-group-needs-you';
|
|
71
|
+
if (item.groupKey === 'active')
|
|
72
|
+
return 'wb-session-group wb-session-group-active';
|
|
73
|
+
if (item.groupKey === 'recent')
|
|
74
|
+
return 'wb-session-group wb-session-group-recent';
|
|
75
|
+
return 'wb-session-group';
|
|
76
|
+
}
|
|
77
|
+
/** The one chat-opening element every Workbench surface shares. It must stay
|
|
78
|
+
* a plain anchor with exactly these semantics — the Dashboard's session page
|
|
79
|
+
* proved this shape (a real user click on target=_blank rel=noopener) is the
|
|
80
|
+
* only unsigned dispatch the Feishu client gives standard treatment; every
|
|
81
|
+
* scripted variant (window.open, hidden .click(), enterChat) gets demoted. */
|
|
82
|
+
function FeishuChatAnchor(props) {
|
|
83
|
+
return (_jsx("a", { className: props.className, href: props.href, target: "_blank", rel: "noopener", title: props.title, "aria-label": props.ariaLabel, onClick: event => {
|
|
84
|
+
event.stopPropagation();
|
|
85
|
+
props.onActivate?.();
|
|
86
|
+
}, children: props.children }));
|
|
87
|
+
}
|
|
88
|
+
function useViewportHeight(ref) {
|
|
89
|
+
const [height, setHeight] = useState(560);
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
const node = ref.current;
|
|
92
|
+
if (!node)
|
|
93
|
+
return undefined;
|
|
94
|
+
const update = () => setHeight(Math.max(120, node.clientHeight || 560));
|
|
95
|
+
update();
|
|
96
|
+
if (typeof ResizeObserver === 'undefined')
|
|
97
|
+
return undefined;
|
|
98
|
+
const observer = new ResizeObserver(update);
|
|
99
|
+
observer.observe(node);
|
|
100
|
+
return () => observer.disconnect();
|
|
101
|
+
}, [ref]);
|
|
102
|
+
return height;
|
|
103
|
+
}
|
|
104
|
+
function sessionOptionId(sessionId) {
|
|
105
|
+
let hash = 2166136261;
|
|
106
|
+
for (let index = 0; index < sessionId.length; index += 1) {
|
|
107
|
+
hash ^= sessionId.charCodeAt(index);
|
|
108
|
+
hash = Math.imul(hash, 16777619);
|
|
109
|
+
}
|
|
110
|
+
return `wb-session-${(hash >>> 0).toString(36)}`;
|
|
111
|
+
}
|
|
112
|
+
function sessionSecondary(session) {
|
|
113
|
+
return [session.botName, session.cliId, session.repoName].filter(Boolean).join(' · ') || session.sessionId;
|
|
114
|
+
}
|
|
115
|
+
/** Mirrors the 620px breakpoint the stylesheet uses for taller touch rows, so
|
|
116
|
+
* virtualisation and CSS never disagree about how tall a row is. */
|
|
117
|
+
function useTouchRowMetrics() {
|
|
118
|
+
const [touch, setTouch] = useState(false);
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (typeof window === 'undefined' || !window.matchMedia)
|
|
121
|
+
return undefined;
|
|
122
|
+
const query = window.matchMedia('(max-width: 620px)');
|
|
123
|
+
const sync = () => setTouch(query.matches);
|
|
124
|
+
sync();
|
|
125
|
+
query.addEventListener('change', sync);
|
|
126
|
+
return () => query.removeEventListener('change', sync);
|
|
127
|
+
}, []);
|
|
128
|
+
return touch;
|
|
129
|
+
}
|
|
130
|
+
export function WorkbenchSessionList(props) {
|
|
131
|
+
const touchRows = useTouchRowMetrics();
|
|
132
|
+
const [query, setQuery] = useState('');
|
|
133
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
134
|
+
const scrollerRef = useRef(null);
|
|
135
|
+
const lastScrolledSelectionRef = useRef(props.selectedSessionId ?? null);
|
|
136
|
+
const viewportHeight = useViewportHeight(scrollerRef);
|
|
137
|
+
// 冷却状态挂在列表上而不是按钮上:行是虚拟滚动的,按钮滚出视口就卸载,
|
|
138
|
+
// 状态放按钮里会被一次滚动清空,用户就能连点绕过 30s 限流。
|
|
139
|
+
const [locateAt, setLocateAt] = useState(() => new Map());
|
|
140
|
+
const [locateError, setLocateError] = useState(() => new Map());
|
|
141
|
+
const [, setLocateTick] = useState(0);
|
|
142
|
+
// 折叠的组 key。存的是 model 给的稳定 key(`bot:Builder` 这种带维度前缀的),
|
|
143
|
+
// 全维度唯一,所以一份集合天然按维度隔离,切维度不会互相影响。
|
|
144
|
+
const [collapsedGroups, setCollapsedGroups] = useState(() => new Set(loadWorkbenchCollapsedGroups(browserStorage()) ?? []));
|
|
145
|
+
const unreadIds = props.unreadIds ?? NO_UNREAD;
|
|
146
|
+
const dimension = props.dimension ?? 'status';
|
|
147
|
+
// 时间维度只认「今天/昨天/本周」这种天级边界。父级的 now 每渲染一次都是新值,
|
|
148
|
+
// 直接进依赖会让 300+ 会话的列表每帧重排一次;量化到分钟就够用了。
|
|
149
|
+
const bucketNow = Math.floor((props.now ?? Date.now()) / 60_000) * 60_000;
|
|
150
|
+
const groups = useMemo(() => groupWorkbenchSessionsForDimension(props.sessions, { query, dimension, unreadIds, now: bucketNow }), [bucketNow, dimension, props.sessions, query, unreadIds]);
|
|
151
|
+
const items = useMemo(() => flattenWorkbenchGroups(groups, collapsedGroups), [collapsedGroups, groups]);
|
|
152
|
+
const visible = useMemo(() => computeVirtualWindow(items, scrollTop, viewportHeight, 240, touchRows), [items, scrollTop, touchRows, viewportHeight]);
|
|
153
|
+
// 折叠掉的会话不在 items 里,j/k 于是自动跳过它们——这正是我们要的。
|
|
154
|
+
const sessionItems = useMemo(() => items.filter((item) => item.kind === 'session'), [items]);
|
|
155
|
+
// 「有没有匹配的会话」和收起态角标都要看折叠前的真实条数:全组折叠起来只是把行
|
|
156
|
+
// 藏了,不代表搜不到东西,更不代表没有会话在等你。
|
|
157
|
+
const matchedCount = useMemo(() => groups.reduce((total, group) => total + group.sessions.length, 0), [groups]);
|
|
158
|
+
const needsYouCount = useMemo(() => groups.find(group => group.kind === 'needs-you')?.sessions.length ?? 0, [groups]);
|
|
159
|
+
// 定位只在选中会话变化时发生一次,避免每次重渲染都把 scrollTop 拽回选中行、和用户滚动打架。
|
|
160
|
+
// 初始选中不定位(列表保持置顶的「待你处理」可见),只有用户切换选中才滚动定位。
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
if (!props.selectedSessionId) {
|
|
163
|
+
lastScrolledSelectionRef.current = null;
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (lastScrolledSelectionRef.current === props.selectedSessionId)
|
|
167
|
+
return;
|
|
168
|
+
if (!sessionItems.some(item => item.session.sessionId === props.selectedSessionId))
|
|
169
|
+
return;
|
|
170
|
+
lastScrolledSelectionRef.current = props.selectedSessionId;
|
|
171
|
+
const index = items.findIndex(item => item.kind === 'session' && item.session.sessionId === props.selectedSessionId);
|
|
172
|
+
const top = visible.positions[index] ?? 0;
|
|
173
|
+
const bottom = top + workbenchListItemHeight(items[index], touchRows);
|
|
174
|
+
const node = scrollerRef.current;
|
|
175
|
+
if (!node || (top >= node.scrollTop && bottom <= node.scrollTop + node.clientHeight))
|
|
176
|
+
return;
|
|
177
|
+
node.scrollTop = Math.max(0, top - Math.round(node.clientHeight / 3));
|
|
178
|
+
}, [items, props.selectedSessionId, sessionItems, visible.positions]);
|
|
179
|
+
// 冷却和成功态都是时间推导出来的,需要一个心跳把它们重绘掉。心跳只在真的有
|
|
180
|
+
// 冷却时存在:过期条目在这里被剪掉,Map 空了 effect 自然清掉定时器。
|
|
181
|
+
// 用裸的 setInterval 而不是 window.setInterval:这个 effect 在首次成功定位后
|
|
182
|
+
// 才挂载,走 window 会让整个列表在没有 window 的环境(组件测试跑在 node 上)
|
|
183
|
+
// 一点定位就崩。同目录的 panes 一直是这么写的,计时本来也不需要 DOM。
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
if (locateAt.size === 0)
|
|
186
|
+
return undefined;
|
|
187
|
+
const timer = setInterval(() => {
|
|
188
|
+
setLocateAt(previous => {
|
|
189
|
+
const now = Date.now();
|
|
190
|
+
const next = new Map([...previous].filter(([, at]) => now - at < LOCATE_COOLDOWN_MS));
|
|
191
|
+
return next.size === previous.size ? previous : next;
|
|
192
|
+
});
|
|
193
|
+
setLocateTick(value => value + 1);
|
|
194
|
+
}, 500);
|
|
195
|
+
return () => clearInterval(timer);
|
|
196
|
+
}, [locateAt]);
|
|
197
|
+
const onLocate = props.onLocate;
|
|
198
|
+
const startLocate = (sessionId) => {
|
|
199
|
+
if (!onLocate)
|
|
200
|
+
return;
|
|
201
|
+
// 乐观进入冷却:请求还在飞的时候按钮就不可点,失败再放开。
|
|
202
|
+
setLocateAt(previous => new Map(previous).set(sessionId, Date.now()));
|
|
203
|
+
setLocateError(previous => {
|
|
204
|
+
if (!previous.has(sessionId))
|
|
205
|
+
return previous;
|
|
206
|
+
const next = new Map(previous);
|
|
207
|
+
next.delete(sessionId);
|
|
208
|
+
return next;
|
|
209
|
+
});
|
|
210
|
+
void onLocate(sessionId).then(() => {
|
|
211
|
+
// 成功后把时间戳推到「此刻」:成功态从这里开始算 2s,冷却也从服务端
|
|
212
|
+
// 真正受理的时刻开始算 30s,不会比服务端的限流窗口短。
|
|
213
|
+
setLocateAt(previous => new Map(previous).set(sessionId, Date.now()));
|
|
214
|
+
}, (error) => {
|
|
215
|
+
setLocateError(previous => new Map(previous).set(sessionId, locateErrorText(error)));
|
|
216
|
+
const retryAfterMs = locateRetryAfterMs(error);
|
|
217
|
+
setLocateAt(previous => {
|
|
218
|
+
const next = new Map(previous);
|
|
219
|
+
// 429 说明服务端还在限流窗口里,按它给的剩余时间继续禁用;
|
|
220
|
+
// 其它错误立刻恢复可点,让用户能重试。
|
|
221
|
+
if (retryAfterMs === null)
|
|
222
|
+
next.delete(sessionId);
|
|
223
|
+
else
|
|
224
|
+
next.set(sessionId, Date.now() - (LOCATE_COOLDOWN_MS - retryAfterMs));
|
|
225
|
+
return next;
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
/** 折叠/展开一个组,并立刻落盘——这是用户按一下就该记住的偏好,没必要攒批。 */
|
|
230
|
+
const toggleGroup = (groupKey) => {
|
|
231
|
+
const next = new Set(collapsedGroups);
|
|
232
|
+
// 新折叠的组加在末尾:数组按加入序存,封顶时先丢最早折叠的那些。
|
|
233
|
+
if (!next.delete(groupKey))
|
|
234
|
+
next.add(groupKey);
|
|
235
|
+
setCollapsedGroups(next);
|
|
236
|
+
saveWorkbenchCollapsedGroups(browserStorage(), next);
|
|
237
|
+
};
|
|
238
|
+
const moveSelection = (delta) => {
|
|
239
|
+
if (sessionItems.length === 0)
|
|
240
|
+
return;
|
|
241
|
+
const current = sessionItems.findIndex(item => item.session.sessionId === props.selectedSessionId);
|
|
242
|
+
const next = current < 0
|
|
243
|
+
? (delta > 0 ? 0 : sessionItems.length - 1)
|
|
244
|
+
: Math.max(0, Math.min(sessionItems.length - 1, current + delta));
|
|
245
|
+
props.onSelect(sessionItems[next].session.sessionId);
|
|
246
|
+
};
|
|
247
|
+
const changeQuery = (value) => {
|
|
248
|
+
setQuery(value);
|
|
249
|
+
setScrollTop(0);
|
|
250
|
+
if (scrollerRef.current)
|
|
251
|
+
scrollerRef.current.scrollTop = 0;
|
|
252
|
+
};
|
|
253
|
+
const onListKeyDown = (event) => {
|
|
254
|
+
if (event.altKey || event.ctrlKey || event.metaKey)
|
|
255
|
+
return;
|
|
256
|
+
// 焦点在组头按钮上时,Enter / Space 是它自己的激活键,列表别再抢一次。
|
|
257
|
+
// j/k 和方向键照旧生效,从组头也能直接开始上下走。
|
|
258
|
+
if ((event.key === 'Enter' || event.key === ' ') && fromGroupToggle(event.target))
|
|
259
|
+
return;
|
|
260
|
+
if (event.key === 'j' || event.key === 'ArrowDown') {
|
|
261
|
+
event.preventDefault();
|
|
262
|
+
moveSelection(1);
|
|
263
|
+
}
|
|
264
|
+
else if (event.key === 'k' || event.key === 'ArrowUp') {
|
|
265
|
+
event.preventDefault();
|
|
266
|
+
moveSelection(-1);
|
|
267
|
+
}
|
|
268
|
+
else if (event.key === 'Enter' && props.selectedSessionId) {
|
|
269
|
+
event.preventDefault();
|
|
270
|
+
props.onSelect(props.selectedSessionId);
|
|
271
|
+
// Hand focus to the row's real chat anchor; the user's next Enter is the
|
|
272
|
+
// browser's own activation of a focused link — a trusted event. A script
|
|
273
|
+
// .click() here would be isTrusted=false, the demoted dispatch again.
|
|
274
|
+
if (props.chatFollowNavigates && typeof document !== 'undefined') {
|
|
275
|
+
document.getElementById(sessionOptionId(props.selectedSessionId))
|
|
276
|
+
?.querySelector('a.wb-session-copy-link')
|
|
277
|
+
?.focus();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
if (props.collapsed) {
|
|
282
|
+
const collapsedLabel = (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", children: "\u00BB" }), _jsx("span", { className: "wb-rail-vertical-label", children: "\u4F1A\u8BDD" })] }));
|
|
283
|
+
return (_jsxs("aside", { className: "wb-session-rail is-collapsed", "aria-label": "\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09", children: [props.onToggleCollapsed ? (_jsx("button", { type: "button", className: "wb-rail-expand", "aria-label": "\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868", title: "\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868", onClick: props.onToggleCollapsed, children: collapsedLabel })) : _jsx("div", { className: "wb-rail-expand", "aria-label": "\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09", children: collapsedLabel }), _jsx("span", { className: "wb-rail-count", "aria-label": `${needsYouCount} 个会话需要处理`, children: needsYouCount })] }));
|
|
284
|
+
}
|
|
285
|
+
return (_jsxs("aside", { className: "wb-session-rail", "aria-label": "\u4F1A\u8BDD\u5217\u8868", children: [_jsxs("div", { className: "wb-rail-heading", children: [_jsxs("div", { children: [_jsx("span", { className: props.online ? 'is-online' : 'is-offline', title: props.online ? '实时连接正常' : '已离线,显示最后快照', "aria-hidden": "true", children: props.online ? '●' : '○' }), _jsx("strong", { children: "\u4F1A\u8BDD" }), _jsx("span", { children: props.sessions.length })] }), props.onDimensionChange ? (_jsx("select", { className: "wb-group-dim", "aria-label": "\u5206\u7EC4\u7EF4\u5EA6", value: dimension, onChange: event => {
|
|
286
|
+
const value = event.currentTarget.value;
|
|
287
|
+
if (isWorkbenchGroupDimension(value))
|
|
288
|
+
props.onDimensionChange?.(value);
|
|
289
|
+
}, children: WORKBENCH_GROUP_DIMENSIONS.map(option => (_jsx("option", { value: option.value, children: option.label }, option.value))) })) : null, props.onOpenAppearance ? (_jsx("button", { type: "button", className: "wb-appearance-btn", "aria-haspopup": "dialog", "aria-label": t('workbench.appearance.title'), title: t('workbench.appearance.title'), onClick: props.onOpenAppearance, children: "\u25D0" })) : null, props.onToggleCollapsed ? (_jsx("button", { type: "button", "aria-label": "\u6536\u8D77\u4F1A\u8BDD\u5217\u8868", title: "\u6536\u8D77\u4F1A\u8BDD\u5217\u8868", onClick: props.onToggleCollapsed, children: "\u00AB" })) : null] }), _jsxs("label", { className: "wb-session-search", children: [_jsx("span", { className: "wb-visually-hidden", children: "\u641C\u7D22\u4F1A\u8BDD" }), _jsx("span", { "aria-hidden": "true", children: "\u2315" }), _jsx("input", { type: "search", placeholder: "\u641C\u7D22\u2026", value: query, onChange: event => changeQuery(event.currentTarget.value), onKeyDown: event => {
|
|
290
|
+
if (event.key === 'ArrowDown') {
|
|
291
|
+
event.preventDefault();
|
|
292
|
+
scrollerRef.current?.focus();
|
|
293
|
+
moveSelection(1);
|
|
294
|
+
}
|
|
295
|
+
} }), query ? _jsx("button", { type: "button", "aria-label": "\u6E05\u9664\u641C\u7D22", onClick: () => changeQuery(''), children: "\u00D7" }) : null] }), _jsxs("div", { ref: scrollerRef, className: "wb-session-list", role: "listbox", tabIndex: 0, "aria-label": "\u5DE5\u4F5C\u53F0\u4F1A\u8BDD", "aria-activedescendant": props.selectedSessionId ? sessionOptionId(props.selectedSessionId) : undefined, onScroll: event => setScrollTop(event.currentTarget.scrollTop), onKeyDown: onListKeyDown, children: [_jsx("div", { className: "wb-session-list-space", style: { height: visible.totalHeight }, children: items.slice(visible.start, visible.end).map((item, sliceIndex) => {
|
|
296
|
+
const index = visible.start + sliceIndex;
|
|
297
|
+
const style = { top: visible.positions[index], height: workbenchListItemHeight(item, touchRows) };
|
|
298
|
+
if (item.kind === 'header') {
|
|
299
|
+
const groupCollapsed = item.collapsed === true;
|
|
300
|
+
return (_jsxs("button", { type: "button", className: `${headerClassName(item)} wb-session-group-toggle`, style: style, "aria-expanded": !groupCollapsed, title: groupCollapsed ? `展开「${item.label}」` : `折叠「${item.label}」`, onClick: () => toggleGroup(item.groupKey), children: [_jsx("span", { className: "wb-session-group-caret", "aria-hidden": "true", children: groupCollapsed ? '▸' : '▾' }), _jsx("span", { "aria-hidden": "true", children: headerIcon(item) }), _jsx("strong", { children: item.label }), _jsx("span", { children: item.count })] }, item.key));
|
|
301
|
+
}
|
|
302
|
+
const session = item.session;
|
|
303
|
+
const title = workbenchSessionTitle(session);
|
|
304
|
+
const unread = unreadIds.has(session.sessionId);
|
|
305
|
+
// attention 理由优先——它说的是「卡住了」,比「有新回复」重要得多。
|
|
306
|
+
const reason = attentionSummary(session) ?? (unread ? UNREAD_REASON : null);
|
|
307
|
+
const selected = session.sessionId === props.selectedSessionId;
|
|
308
|
+
const statusText = item.group === 'needs-you' ? '待你处理' : item.group === 'active' ? session.status : '最近';
|
|
309
|
+
const openSurface = props.onOpenSurface;
|
|
310
|
+
const chatHref = session.feishuChatLink
|
|
311
|
+
|| (session.chatId ? buildChatAppLink(session.chatId) : null);
|
|
312
|
+
const kind = workbenchSessionKind(session);
|
|
313
|
+
return (_jsxs("div", { id: sessionOptionId(session.sessionId), className: `wb-session-row wb-session-row-${item.group}${selected ? ' is-selected' : ''}${unread ? ' is-unread' : ''}`, role: "option", tabIndex: -1, "aria-selected": selected, "aria-label": `${title}. ${statusText}${reason ? `. ${reason}` : ''}`, style: style, onClick: () => props.onSelect(session.sessionId), children: [_jsx("span", { className: "wb-session-state-mark", "aria-hidden": "true", children: GROUP_ICON[item.group] }), (() => {
|
|
314
|
+
const copy = (_jsxs(_Fragment, { children: [_jsx("span", { className: "wb-session-title", title: title, children: title }), _jsxs("span", { className: "wb-session-meta", title: sessionSecondary(session), children: [kind ? (_jsx("span", { className: `wb-session-kind is-${kind}`, title: KIND_COPY[kind].title, children: KIND_COPY[kind].label })) : null, reason ? _jsx("span", { className: "wb-session-reason", children: reason }) : _jsx("span", { children: sessionSecondary(session) }), unread ? _jsx("span", { className: "wb-unread-dot", role: "img", "aria-label": UNREAD_REASON }) : null, _jsx("time", { dateTime: new Date(sessionActivityAt(session)).toISOString(), children: formatWorkbenchRelativeTime(sessionActivityAt(session), props.now, props.locale) })] })] }));
|
|
315
|
+
if (!props.chatFollowNavigates || !chatHref) {
|
|
316
|
+
return _jsx("span", { className: "wb-session-copy", children: copy });
|
|
317
|
+
}
|
|
318
|
+
return (_jsx(FeishuChatAnchor, { className: "wb-session-copy wb-session-copy-link", href: chatHref, ariaLabel: `选中并打开飞书聊天 — ${title}`, onActivate: () => props.onSelect(session.sessionId), children: copy }));
|
|
319
|
+
})(), openSurface ? (_jsxs("span", { className: "wb-session-row-actions", children: [chatHref ? (_jsx(FeishuChatAnchor, { className: "wb-session-row-action is-chat", href: chatHref, title: "\u6253\u5F00\u98DE\u4E66\u804A\u5929", ariaLabel: `打开飞书聊天 — ${title}`,
|
|
320
|
+
// 去飞书看聊天就是看过了;但不动选中态——移动端选中会直接
|
|
321
|
+
// 钻进工作区,一次点击给两个目的地。
|
|
322
|
+
onActivate: () => props.onSeen?.(session.sessionId), children: "\u804A\u5929" })) : null, kind === 'thread' && onLocate ? (() => {
|
|
323
|
+
const at = locateAt.get(session.sessionId) ?? 0;
|
|
324
|
+
const elapsed = Date.now() - at;
|
|
325
|
+
const cooling = at > 0 && elapsed < LOCATE_COOLDOWN_MS;
|
|
326
|
+
const failure = locateError.get(session.sessionId);
|
|
327
|
+
const located = cooling && !failure && elapsed < LOCATE_SUCCESS_MS;
|
|
328
|
+
const label = cooling
|
|
329
|
+
? '定位已发送,30 秒后可再次使用'
|
|
330
|
+
: failure
|
|
331
|
+
? `定位失败:${failure}`
|
|
332
|
+
: '在话题里 @ 我定位';
|
|
333
|
+
return (_jsx("button", { type: "button", className: `wb-session-row-action is-locate${located ? ' is-located' : ''}`, title: label, "aria-label": `${label} — ${title}`, disabled: cooling, onClick: event => {
|
|
334
|
+
event.stopPropagation();
|
|
335
|
+
props.onSeen?.(session.sessionId);
|
|
336
|
+
startLocate(session.sessionId);
|
|
337
|
+
}, children: located ? '已发送' : '定位' }));
|
|
338
|
+
})() : null, ([
|
|
339
|
+
['terminal', '打开只读终端', '终端'],
|
|
340
|
+
// 接管捷径只对有 canControl 能力的身份渲染(P1-4);
|
|
341
|
+
// undefined(dock/旧调用方)保持旧行为。
|
|
342
|
+
...(props.canControlTerminal !== false
|
|
343
|
+
? [['terminal-control', '打开终端并接管输入', '接管']]
|
|
344
|
+
: []),
|
|
345
|
+
]).map(([surface, label, text]) => (_jsx("button", { type: "button", className: `wb-session-row-action is-${surface}`, title: label, "aria-label": `${label} — ${title}`, onClick: event => {
|
|
346
|
+
// The row itself selects; without this the click would
|
|
347
|
+
// also bubble and fire a redundant selection.
|
|
348
|
+
event.stopPropagation();
|
|
349
|
+
openSurface(session.sessionId, surface);
|
|
350
|
+
}, children: text }, surface)))] })) : null] }, item.key));
|
|
351
|
+
}) }), matchedCount === 0 ? _jsx("p", { className: "wb-session-empty", children: "\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD" }) : null] })] }));
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=agent-workbench-session-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-workbench-session-list.js","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-session-list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type WorkbenchGroupDimension, type WorkbenchLayoutState } from './agent-workbench-model.js';
|
|
2
|
+
export interface WorkbenchStorage {
|
|
3
|
+
getItem(key: string): string | null;
|
|
4
|
+
setItem(key: string, value: string): void;
|
|
5
|
+
removeItem?(key: string): void;
|
|
6
|
+
}
|
|
7
|
+
export declare function workbenchLayoutStorageKey(sessionId: string): string;
|
|
8
|
+
export declare function loadWorkbenchLayout(sessionId: string, storage: WorkbenchStorage | null | undefined): WorkbenchLayoutState;
|
|
9
|
+
/** Persists layout primitives only. URLs, grants, cookies and frame state are never serialised. */
|
|
10
|
+
export declare function saveWorkbenchLayout(sessionId: string, layout: WorkbenchLayoutState, storage: WorkbenchStorage | null | undefined): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Rail geometry belongs to the window, not to a session. Keeping it per session
|
|
13
|
+
* made the sidebar jump to a different width on every selection change, so the
|
|
14
|
+
* width and the collapsed flag live in one global record instead.
|
|
15
|
+
*/
|
|
16
|
+
export interface WorkbenchRailPrefs {
|
|
17
|
+
railWidth: number;
|
|
18
|
+
railCollapsed: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function loadWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined): WorkbenchRailPrefs | null;
|
|
21
|
+
export declare function saveWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined, prefs: WorkbenchRailPrefs): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 未读账本,纯前端的一份小记录:
|
|
24
|
+
* - `seen[sessionId]` —— 你最后一次「点开」这个会话的时刻,未读的清零线。
|
|
25
|
+
* - `unread[sessionId]` —— 本地侦测到 bot 干完活(working→idle)的时刻。
|
|
26
|
+
* 两者都是 epoch 毫秒。`unread > seen` 即未读;页面关闭期间的动静另有活动时间兜底。
|
|
27
|
+
* 只存 id 和时间戳,不存标题、聊天内容或任何链接。
|
|
28
|
+
*/
|
|
29
|
+
export interface WorkbenchSeenLedger {
|
|
30
|
+
seen: Record<string, number>;
|
|
31
|
+
unread: Record<string, number>;
|
|
32
|
+
}
|
|
33
|
+
export declare function emptyWorkbenchSeenLedger(): WorkbenchSeenLedger;
|
|
34
|
+
export declare function pruneWorkbenchSeenLedger(ledger: WorkbenchSeenLedger, max?: number): WorkbenchSeenLedger;
|
|
35
|
+
/** 坏数据(不是 JSON、不是对象、两张表都不成形)一律回 null,让调用方走首次基线。 */
|
|
36
|
+
export declare function loadWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined): WorkbenchSeenLedger | null;
|
|
37
|
+
export declare function saveWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined, ledger: WorkbenchSeenLedger): boolean;
|
|
38
|
+
/** 分组维度是全局偏好(不分会话)。白名单外的值一律当没存过。 */
|
|
39
|
+
export declare function loadWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined): WorkbenchGroupDimension | null;
|
|
40
|
+
export declare function saveWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined, dimension: WorkbenchGroupDimension): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 折叠起来的分组 key(`bot:Builder` 这种带维度前缀的稳定 key,全维度唯一,
|
|
43
|
+
* 所以一份平铺的数组就够,不需要按维度分表)。
|
|
44
|
+
* 坏 JSON 或压根不是数组 → null,让调用方走「全部展开」的默认;数组里混进
|
|
45
|
+
* 非字符串只剔掉那一项,不为一颗老鼠屎丢掉整份记忆。
|
|
46
|
+
*/
|
|
47
|
+
export declare function loadWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined): string[] | null;
|
|
48
|
+
export declare function saveWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined, keys: Iterable<string>): boolean;
|
|
49
|
+
//# sourceMappingURL=agent-workbench-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-workbench-storage.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAcD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,oBAAoB,CAQtB;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,OAAO,CAQT;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,kBAAkB,GAAG,IAAI,CAe3B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAWT;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D;AAsBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,SAA0B,GAC5B,mBAAmB,CAKrB;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,mBAAmB,GAAG,IAAI,CAe5B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAQT;AAED,oCAAoC;AACpC,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,uBAAuB,GAAG,IAAI,CAQhC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAQT;AASD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,MAAM,EAAE,GAAG,IAAI,CAWjB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrB,OAAO,CAQT"}
|