botmux 3.5.2 → 3.6.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 +56 -396
- package/README.md +55 -396
- package/dist/.runtime-build-id +1 -0
- package/dist/adapters/cli/claude-code.d.ts +6 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +197 -11
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/coco.js +4 -4
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +9 -6
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.js +5 -5
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
- package/dist/adapters/cli/fs-policy.js +5 -7
- package/dist/adapters/cli/fs-policy.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts +2 -1
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +2 -1
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/hermes.d.ts.map +1 -1
- package/dist/adapters/cli/hermes.js +8 -4
- package/dist/adapters/cli/hermes.js.map +1 -1
- package/dist/adapters/cli/mtr.d.ts.map +1 -1
- package/dist/adapters/cli/mtr.js +3 -2
- package/dist/adapters/cli/mtr.js.map +1 -1
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +5 -4
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/relay.js +2 -2
- package/dist/adapters/cli/relay.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +2 -2
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +9 -6
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/seed.d.ts.map +1 -1
- package/dist/adapters/cli/seed.js +2 -1
- package/dist/adapters/cli/seed.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +3 -2
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +25 -18
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +28 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +75 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +272 -86
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +85 -192
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/config.d.ts +0 -16
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -30
- package/dist/config.js.map +1 -1
- package/dist/core/ask-broker.d.ts +12 -0
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +41 -0
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/bot-turn-mutation-gate.d.ts +24 -0
- package/dist/core/bot-turn-mutation-gate.d.ts.map +1 -0
- package/dist/core/bot-turn-mutation-gate.js +369 -0
- package/dist/core/bot-turn-mutation-gate.js.map +1 -0
- package/dist/core/command-handler.d.ts +5 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +38 -16
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +330 -57
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +8 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/host-overload-alert.d.ts +157 -0
- package/dist/core/host-overload-alert.d.ts.map +1 -0
- package/dist/core/host-overload-alert.js +251 -0
- package/dist/core/host-overload-alert.js.map +1 -0
- package/dist/core/passthrough-commands.d.ts +8 -0
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +19 -0
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/restart-coordinator.d.ts +28 -0
- package/dist/core/restart-coordinator.d.ts.map +1 -0
- package/dist/core/restart-coordinator.js +82 -0
- package/dist/core/restart-coordinator.js.map +1 -0
- package/dist/core/restart-followup-policy.d.ts +112 -0
- package/dist/core/restart-followup-policy.d.ts.map +1 -0
- package/dist/core/restart-followup-policy.js +49 -0
- package/dist/core/restart-followup-policy.js.map +1 -0
- package/dist/core/role-library.d.ts +1 -1
- package/dist/core/role-library.js +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-cwd.js +8 -0
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-discovery.d.ts +14 -0
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +25 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-liveness.d.ts +15 -0
- package/dist/core/session-liveness.d.ts.map +1 -0
- package/dist/core/session-liveness.js +76 -0
- package/dist/core/session-liveness.js.map +1 -0
- package/dist/core/session-row-enrichment.d.ts +15 -0
- package/dist/core/session-row-enrichment.d.ts.map +1 -0
- package/dist/core/session-row-enrichment.js +93 -0
- package/dist/core/session-row-enrichment.js.map +1 -0
- package/dist/core/slash-inject.js +1 -1
- package/dist/core/slash-inject.js.map +1 -1
- package/dist/core/trigger-final-suppression.d.ts +24 -0
- package/dist/core/trigger-final-suppression.d.ts.map +1 -0
- package/dist/core/trigger-final-suppression.js +97 -0
- package/dist/core/trigger-final-suppression.js.map +1 -0
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +64 -4
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +20 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +283 -32
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +5 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +520 -35
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/aggregator.d.ts +1 -0
- package/dist/dashboard/aggregator.d.ts.map +1 -1
- package/dist/dashboard/aggregator.js +34 -6
- package/dist/dashboard/aggregator.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +3 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/compat.d.ts +102 -2
- package/dist/dashboard/compat.d.ts.map +1 -1
- package/dist/dashboard/compat.js +78 -14
- package/dist/dashboard/compat.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +1 -0
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/desktop-asks.d.ts +21 -0
- package/dist/dashboard/desktop-asks.d.ts.map +1 -0
- package/dist/dashboard/desktop-asks.js +49 -0
- package/dist/dashboard/desktop-asks.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts +7 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +35 -3
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/session-presentation.d.ts +16 -0
- package/dist/dashboard/session-presentation.d.ts.map +1 -0
- package/dist/dashboard/session-presentation.js +62 -0
- package/dist/dashboard/session-presentation.js.map +1 -0
- package/dist/dashboard/settings-write-applier.d.ts +2 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +19 -1
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/trigger-api.d.ts.map +1 -1
- package/dist/dashboard/trigger-api.js +19 -1
- package/dist/dashboard/trigger-api.js.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.d.ts +7 -2
- package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.js +13 -0
- package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +18 -5
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +97 -35
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +3 -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/client-shell.d.ts +29 -0
- package/dist/dashboard/web/client-shell.d.ts.map +1 -0
- package/dist/dashboard/web/client-shell.js +89 -0
- package/dist/dashboard/web/client-shell.js.map +1 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +5 -1
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +100 -8
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +7 -0
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +32 -0
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-kanban.js +1 -1
- package/dist/dashboard/web/sessions-kanban.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +77 -23
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +4 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +14 -1
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +6 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +55 -30
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +1 -2
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +69 -20
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.js +128 -42
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +9 -2
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-VQMPUJ4Y.js +10 -0
- package/dist/dashboard-web/chunks/chunk-AGCPF6MT.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-KPQAUX7V.js → chunk-JMRGZQDB.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-R7IAKAYX.js → chunk-NP4JUBGS.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-NRL6CVAS.js → chunk-P327LXOT.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-X2L65IOM.js → chunk-SNKATZWK.js} +15 -15
- package/dist/dashboard-web/chunks/connectors-page-DOY4J3ZL.js +1 -0
- package/dist/dashboard-web/chunks/{groups-page-6DKXBYOM.js → groups-page-74TS2DIH.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-NWARTJ6J.js → insights-page-AYCO65JC.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-AGX3XRJX.js → monitor-room-YKYLTSAN.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-GGGIWN4C.js → monitoring-page-QBIUNRBR.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-6SIVKSK3.js → office-page-4PH2A26P.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-H73D5UT4.js +1 -0
- package/dist/dashboard-web/chunks/{roles-page-WE2YB7KN.js → roles-page-U4BTOQ7F.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-TB3I24XN.js → schedules-page-RHRHX7R7.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-VSC6AM5G.js +2 -0
- package/dist/dashboard-web/chunks/settings-page-LF3RKM5P.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-3QAT2IWD.js → skills-page-SYOIGGXH.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-K4VVAVAK.js → team-federation-page-RMBLASTW.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-V6IOJR2B.js → v3-page-XJXKKJRN.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-V6CGKRNX.js → whiteboards-page-K3YVSTHJ.js} +1 -1
- package/dist/dashboard-web/style.css +551 -0
- package/dist/dashboard.js +153 -9
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +11 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +23 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +5 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +5 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +1 -1
- package/dist/im/lark/card-builder.js +1 -1
- package/dist/im/lark/card-handler.d.ts +10 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +163 -17
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +11 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +47 -18
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +13 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +20 -0
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts +25 -1
- package/dist/im/lark/identity-cache.d.ts.map +1 -1
- package/dist/im/lark/identity-cache.js +47 -1
- package/dist/im/lark/identity-cache.js.map +1 -1
- package/dist/im/lark/overload-nonce.d.ts +19 -0
- package/dist/im/lark/overload-nonce.d.ts.map +1 -0
- package/dist/im/lark/overload-nonce.js +72 -0
- package/dist/im/lark/overload-nonce.js.map +1 -0
- package/dist/im/lark/v3-progress-card.d.ts.map +1 -1
- package/dist/im/lark/v3-progress-card.js +5 -0
- package/dist/im/lark/v3-progress-card.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +82 -0
- package/dist/services/async-trigger-state.d.ts.map +1 -0
- package/dist/services/async-trigger-state.js +95 -0
- package/dist/services/async-trigger-state.js.map +1 -0
- package/dist/services/async-trigger-store.d.ts +28 -0
- package/dist/services/async-trigger-store.d.ts.map +1 -0
- package/dist/services/async-trigger-store.js +120 -0
- package/dist/services/async-trigger-store.js.map +1 -0
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +34 -2
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bridge-fallback-gate.d.ts +32 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +39 -0
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +15 -1
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/card-prefs-store.d.ts +4 -0
- package/dist/services/card-prefs-store.d.ts.map +1 -1
- package/dist/services/card-prefs-store.js +8 -0
- package/dist/services/card-prefs-store.js.map +1 -1
- package/dist/services/claude-transcript.d.ts +23 -0
- package/dist/services/claude-transcript.d.ts.map +1 -1
- package/dist/services/claude-transcript.js +33 -0
- package/dist/services/claude-transcript.js.map +1 -1
- package/dist/services/codex-app-runner-protocol.d.ts +61 -0
- package/dist/services/codex-app-runner-protocol.d.ts.map +1 -0
- package/dist/services/codex-app-runner-protocol.js +170 -0
- package/dist/services/codex-app-runner-protocol.js.map +1 -0
- package/dist/services/codex-app-turn-controller.d.ts +72 -0
- package/dist/services/codex-app-turn-controller.d.ts.map +1 -0
- package/dist/services/codex-app-turn-controller.js +524 -0
- package/dist/services/codex-app-turn-controller.js.map +1 -0
- package/dist/services/codex-runner-freshness.d.ts +39 -0
- package/dist/services/codex-runner-freshness.d.ts.map +1 -0
- package/dist/services/codex-runner-freshness.js +78 -0
- package/dist/services/codex-runner-freshness.js.map +1 -0
- package/dist/services/connector-store.d.ts +6 -0
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/grant-store.d.ts.map +1 -1
- package/dist/services/grant-store.js +16 -0
- package/dist/services/grant-store.js.map +1 -1
- package/dist/services/hermes-transcript.d.ts +1 -0
- package/dist/services/hermes-transcript.d.ts.map +1 -1
- package/dist/services/hermes-transcript.js +49 -0
- package/dist/services/hermes-transcript.js.map +1 -1
- package/dist/services/schedule-split-migration.d.ts +2 -0
- package/dist/services/schedule-split-migration.d.ts.map +1 -0
- package/dist/services/schedule-split-migration.js +159 -0
- package/dist/services/schedule-split-migration.js.map +1 -0
- package/dist/services/schedule-store.d.ts +28 -4
- package/dist/services/schedule-store.d.ts.map +1 -1
- package/dist/services/schedule-store.js +118 -33
- package/dist/services/schedule-store.js.map +1 -1
- package/dist/services/trigger-types.d.ts +18 -1
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +3 -0
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-store.js +1 -0
- package/dist/services/vc-meeting-consumer-profile-store.js.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-templates.d.ts +32 -0
- package/dist/services/vc-meeting-consumer-profile-templates.d.ts.map +1 -0
- package/dist/services/vc-meeting-consumer-profile-templates.js +106 -0
- package/dist/services/vc-meeting-consumer-profile-templates.js.map +1 -0
- package/dist/services/vc-meeting-delivery-feed.d.ts +1 -1
- package/dist/services/vc-meeting-delivery-feed.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-feed.js +2 -1
- package/dist/services/vc-meeting-delivery-feed.js.map +1 -1
- package/dist/services/vc-meeting-delivery-hub-store.d.ts +3 -1
- package/dist/services/vc-meeting-delivery-hub-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-hub-store.js +11 -0
- package/dist/services/vc-meeting-delivery-hub-store.js.map +1 -1
- package/dist/services/vc-meeting-delivery-protocol.d.ts +9 -2
- package/dist/services/vc-meeting-delivery-protocol.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-protocol.js +10 -1
- package/dist/services/vc-meeting-delivery-protocol.js.map +1 -1
- package/dist/services/vc-meeting-delivery-receiver.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-receiver.js +10 -1
- package/dist/services/vc-meeting-delivery-receiver.js.map +1 -1
- package/dist/services/vc-meeting-delivery-store.d.ts +12 -2
- package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-delivery-store.js +14 -2
- package/dist/services/vc-meeting-delivery-store.js.map +1 -1
- package/dist/services/vc-meeting-im-reply.d.ts +2 -1
- package/dist/services/vc-meeting-im-reply.d.ts.map +1 -1
- package/dist/services/vc-meeting-im-reply.js +19 -3
- package/dist/services/vc-meeting-im-reply.js.map +1 -1
- package/dist/services/vc-meeting-listener-output-protocol.d.ts +27 -0
- package/dist/services/vc-meeting-listener-output-protocol.d.ts.map +1 -0
- package/dist/services/vc-meeting-listener-output-protocol.js +58 -0
- package/dist/services/vc-meeting-listener-output-protocol.js.map +1 -0
- package/dist/services/vc-meeting-listener-topic-store.d.ts +31 -0
- package/dist/services/vc-meeting-listener-topic-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-listener-topic-store.js +120 -0
- package/dist/services/vc-meeting-listener-topic-store.js.map +1 -0
- package/dist/services/vc-meeting-runtime-store.d.ts +2 -1
- package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-runtime-store.js +8 -0
- package/dist/services/vc-meeting-runtime-store.js.map +1 -1
- package/dist/services/vc-meeting-send-policy.d.ts +8 -1
- package/dist/services/vc-meeting-send-policy.d.ts.map +1 -1
- package/dist/services/vc-meeting-send-policy.js +8 -0
- package/dist/services/vc-meeting-send-policy.js.map +1 -1
- package/dist/types.d.ts +40 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/allowed-users-apply.d.ts +76 -0
- package/dist/utils/allowed-users-apply.d.ts.map +1 -0
- package/dist/utils/allowed-users-apply.js +123 -0
- package/dist/utils/allowed-users-apply.js.map +1 -0
- package/dist/utils/allowed-users-cache.d.ts +29 -0
- package/dist/utils/allowed-users-cache.d.ts.map +1 -0
- package/dist/utils/allowed-users-cache.js +82 -0
- package/dist/utils/allowed-users-cache.js.map +1 -0
- package/dist/utils/child-env.d.ts +2 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +2 -1
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/cli-usage-limit.d.ts +27 -1
- package/dist/utils/cli-usage-limit.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.js +92 -20
- package/dist/utils/cli-usage-limit.js.map +1 -1
- package/dist/utils/input-gate.d.ts +2 -0
- package/dist/utils/input-gate.d.ts.map +1 -1
- package/dist/utils/input-gate.js +2 -0
- package/dist/utils/input-gate.js.map +1 -1
- package/dist/utils/runtime-build-id.d.ts +21 -0
- package/dist/utils/runtime-build-id.d.ts.map +1 -0
- package/dist/utils/runtime-build-id.js +83 -0
- package/dist/utils/runtime-build-id.js.map +1 -0
- package/dist/utils/terminal-renderer.d.ts +3 -3
- package/dist/utils/terminal-renderer.js +3 -3
- package/dist/vc-agent/cards.d.ts.map +1 -1
- package/dist/vc-agent/cards.js +21 -1
- package/dist/vc-agent/cards.js.map +1 -1
- package/dist/worker.js +601 -179
- package/dist/worker.js.map +1 -1
- package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/botmux-schedule.js +13 -1
- package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +20 -20
- package/dist/workflows/migration/v2-to-v3.d.ts.map +1 -1
- package/dist/workflows/migration/v2-to-v3.js +5 -1
- package/dist/workflows/migration/v2-to-v3.js.map +1 -1
- package/dist/workflows/v3/architect.d.ts.map +1 -1
- package/dist/workflows/v3/architect.js +1 -0
- package/dist/workflows/v3/architect.js.map +1 -1
- package/dist/workflows/v3/cli-run.d.ts +9 -0
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +17 -2
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/goal-cli.d.ts +58 -0
- package/dist/workflows/v3/goal-cli.d.ts.map +1 -0
- package/dist/workflows/v3/goal-cli.js +430 -0
- package/dist/workflows/v3/goal-cli.js.map +1 -0
- package/dist/workflows/v3/library-materialize.d.ts.map +1 -1
- package/dist/workflows/v3/library-materialize.js +5 -1
- package/dist/workflows/v3/library-materialize.js.map +1 -1
- package/dist/workflows/v3/library-schema.d.ts +21 -0
- package/dist/workflows/v3/library-schema.d.ts.map +1 -1
- package/dist/workflows/v3/library-schema.js +95 -1
- package/dist/workflows/v3/library-schema.js.map +1 -1
- package/dist/workflows/v3/progress-projection.d.ts +3 -0
- package/dist/workflows/v3/progress-projection.d.ts.map +1 -1
- package/dist/workflows/v3/progress-projection.js +23 -1
- package/dist/workflows/v3/progress-projection.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +46 -1
- package/dist/workflows/v3/run-envelope.d.ts.map +1 -1
- package/dist/workflows/v3/run-envelope.js +32 -1
- package/dist/workflows/v3/run-envelope.js.map +1 -1
- package/package.json +2 -2
- package/dist/dashboard-web/chunks/bot-defaults-page-AUKV7P4L.js +0 -10
- package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-HDQFEXZI.js +0 -1
- package/dist/dashboard-web/chunks/overview-page-FVR3NKAF.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-KOOOASIL.js +0 -2
- package/dist/dashboard-web/chunks/settings-page-IEBR7TGN.js +0 -2
- package/dist/utils/screen-analyzer.d.ts +0 -75
- package/dist/utils/screen-analyzer.d.ts.map +0 -1
- package/dist/utils/screen-analyzer.js +0 -333
- package/dist/utils/screen-analyzer.js.map +0 -1
package/dist/dashboard.js
CHANGED
|
@@ -13,6 +13,8 @@ import { listenWithProbe } from './utils/listen-with-probe.js';
|
|
|
13
13
|
import { generateToken, parseCookie, buildSetCookie, verifyHmac, cliAuthBind, decideDashboardAuth, loadPersistedToken, persistToken, loadDashboardSecret, loadOrCreateDashboardSecret, } from './dashboard/auth.js';
|
|
14
14
|
import { DaemonRegistry, botsRosterSignature } from './dashboard/registry.js';
|
|
15
15
|
import { Aggregator, subscribeDaemon } from './dashboard/aggregator.js';
|
|
16
|
+
import { createSessionPresentationCoordinator } from './dashboard/session-presentation.js';
|
|
17
|
+
import { parseDashboardAskAnswerRequest, proxyDashboardAskAnswer, } from './dashboard/desktop-asks.js';
|
|
16
18
|
import { createDebugTerminalManager } from './dashboard/debug-terminal.js';
|
|
17
19
|
import { pickCreatorForGroup } from './dashboard/operator-selector.js';
|
|
18
20
|
import { buildTeamGroupCreatePayload, planGroupCreator } from './dashboard/team-group.js';
|
|
@@ -22,7 +24,7 @@ import { defaultRunsDir as v3RunsDir } from './workflows/v3/ops-projection.js';
|
|
|
22
24
|
import { verifyWorkflowDaemonIpcResponse, workflowDaemonIpcHeaders, WORKFLOW_DAEMON_IPC_ROUTE_PREFIX, } from './workflows/v3/daemon-ipc-auth.js';
|
|
23
25
|
import { handleDashboardTriggerApi } from './dashboard/trigger-api.js';
|
|
24
26
|
import { handleConnectorApi } from './dashboard/connector-api.js';
|
|
25
|
-
import { redactGroupsForPublic, redactSchedulesForPublic, redactSettingsForPublic, } from './dashboard/public-redact.js';
|
|
27
|
+
import { redactGroupsForPublic, redactSchedulesForPublic, redactSessionEventForPublic, redactSessionsForPublic, redactSettingsForPublic, } from './dashboard/public-redact.js';
|
|
26
28
|
import { handleWebhookRoute } from './dashboard/webhook-routes.js';
|
|
27
29
|
import { handleFederationApi } from './dashboard/federation-api.js';
|
|
28
30
|
import { handleFederationSpokeApi, syncAllMemberships, autoBindOwnerIfUnambiguous } from './dashboard/federation-spoke-api.js';
|
|
@@ -36,6 +38,7 @@ import { hostLocalTimeZone, scheduleTimeZone } from './utils/timezone.js';
|
|
|
36
38
|
import { buildDashboardUrls } from './core/dashboard-url.js';
|
|
37
39
|
import { resolveBotmuxDataDir } from './core/data-dir.js';
|
|
38
40
|
import { dashboardSecretPath } from './core/dashboard-secret.js';
|
|
41
|
+
import { getGitRepoInfo } from './core/session-row-enrichment.js';
|
|
39
42
|
import { deleteWhiteboard, listWhiteboards, readWhiteboard, whiteboardEnabled } from './services/whiteboard-store.js';
|
|
40
43
|
import { isLocalDevInstall, botmuxVersionAt, botmuxCliEntry, botmuxInstallRoot } from './utils/install-info.js';
|
|
41
44
|
import { checkNode, detectBotmuxInstalls, resolveCurrentVersion } from './utils/install-diagnostics.js';
|
|
@@ -74,7 +77,7 @@ import { startPlatformTunnelClient } from './platform/tunnel-client.js';
|
|
|
74
77
|
import { applyPlatformTeamSync, getPlatformTeamSyncRev, listPlatformTeams } from './services/platform-team-store.js';
|
|
75
78
|
import { getBotUnionId } from './services/bot-union-ids-store.js';
|
|
76
79
|
import { cleanupIdleSessions, parseIdleCleanupHours } from './dashboard/session-cleanup.js';
|
|
77
|
-
import { handleDesktopCompat } from './dashboard/compat.js';
|
|
80
|
+
import { compatMachineIdForAuthenticatedRequest, handleDesktopCompat, } from './dashboard/compat.js';
|
|
78
81
|
import { isDashboardChunkJsPath, missingDashboardChunkModule } from './dashboard/stale-chunk-module.js';
|
|
79
82
|
import { aggregateRoleBatch, parseRoleBatchTargets } from './dashboard/roles-batch.js';
|
|
80
83
|
import { automateOpenPlatformSetup, vcListenerEventGateError } from './setup/open-platform-automation.js';
|
|
@@ -191,6 +194,13 @@ function verifyDashboardBinding(port) {
|
|
|
191
194
|
mkdirSync(REGISTRY_DIR, { recursive: true });
|
|
192
195
|
const registry = new DaemonRegistry(REGISTRY_DIR);
|
|
193
196
|
const aggregator = new Aggregator();
|
|
197
|
+
const sessionPresentation = createSessionPresentationCoordinator(aggregator, getGitRepoInfo);
|
|
198
|
+
// Keep Git-derived fields in the central read-model so REST snapshots and SSE
|
|
199
|
+
// share one row shape. Idle/limited turn boundaries force a branch refresh
|
|
200
|
+
// after the CLI has had a chance to change repositories — that is one
|
|
201
|
+
// `git rev-parse` per session per turn, bounded by the resolver's concurrency
|
|
202
|
+
// cap, NOT a slow background poll.
|
|
203
|
+
aggregator.on(sessionPresentation.onEvent);
|
|
194
204
|
// 调试终端(owner-only 裸 bash)。默认工作目录取当前所有 session 的工作目录去重,
|
|
195
205
|
// 让 owner 从熟悉的目录起终端复现问题;都没有时模块内退回 homedir。
|
|
196
206
|
const debugTerminalManager = createDebugTerminalManager({
|
|
@@ -227,7 +237,7 @@ function listDirLocally(rawPath) {
|
|
|
227
237
|
// worker's sandbox binds use. On a symlinked-$HOME host (/home/u →
|
|
228
238
|
// /data00/home/u) the lexical homedir() would make `~/.claude` expand to
|
|
229
239
|
// /home/u/.claude while the tree's child nodes come back as /data00/... — the
|
|
230
|
-
// picker would then never match
|
|
240
|
+
// picker would then never match `~`-relative tier entries.
|
|
231
241
|
let home = homedir();
|
|
232
242
|
try {
|
|
233
243
|
home = realpathSync(home);
|
|
@@ -838,6 +848,7 @@ function resolveDashboardSettings() {
|
|
|
838
848
|
const codexNotifierState = readCodexNotifierWorkerState(config.session.dataDir);
|
|
839
849
|
const larkCli = checkLarkCliVersion();
|
|
840
850
|
return {
|
|
851
|
+
groupNamePrefix: global.groupNamePrefix ?? '',
|
|
841
852
|
publicReadOnly: dashboard.publicReadOnly ?? config.dashboard.publicReadOnly,
|
|
842
853
|
openTerminalInFeishu: dashboard.openTerminalInFeishu === true,
|
|
843
854
|
enableLocalCliOpen: dashboard.enableLocalCliOpen === true,
|
|
@@ -1086,7 +1097,10 @@ async function attachDaemon(d) {
|
|
|
1086
1097
|
]);
|
|
1087
1098
|
const s = await sRes.json();
|
|
1088
1099
|
const sch = await schRes.json();
|
|
1089
|
-
|
|
1100
|
+
const rows = (s.sessions ?? []).map((row) => (d.botAvatarUrl ? { ...row, botAvatarUrl: d.botAvatarUrl } : row));
|
|
1101
|
+
aggregator.hydrateSessions(d.larkAppId, rows);
|
|
1102
|
+
for (const row of rows)
|
|
1103
|
+
sessionPresentation.schedule(d.larkAppId, row);
|
|
1090
1104
|
aggregator.hydrateSchedules(sch.schedules ?? []);
|
|
1091
1105
|
}
|
|
1092
1106
|
catch (e) {
|
|
@@ -1102,14 +1116,26 @@ async function attachDaemon(d) {
|
|
|
1102
1116
|
}
|
|
1103
1117
|
}
|
|
1104
1118
|
function syncSubscriptions() {
|
|
1105
|
-
const
|
|
1119
|
+
const daemons = registry.list();
|
|
1120
|
+
const online = new Set(daemons.map(d => d.larkAppId));
|
|
1106
1121
|
// Attach (hydrate + subscribe) any newly-online daemon. Fire-and-forget
|
|
1107
1122
|
// because the registry callback is sync and the attach is per-daemon
|
|
1108
1123
|
// independent.
|
|
1109
|
-
for (const d of
|
|
1124
|
+
for (const d of daemons) {
|
|
1110
1125
|
if (!subs.has(d.larkAppId)) {
|
|
1111
1126
|
void attachDaemon(d);
|
|
1112
1127
|
}
|
|
1128
|
+
// Push avatar changes in BOTH directions: gating on `d.botAvatarUrl` would
|
|
1129
|
+
// leave the stale image on every row when a bot's avatar is cleared.
|
|
1130
|
+
const avatar = d.botAvatarUrl ?? null;
|
|
1131
|
+
for (const row of aggregator.getSessions()) {
|
|
1132
|
+
if (row.larkAppId !== d.larkAppId || (row.botAvatarUrl ?? null) === avatar)
|
|
1133
|
+
continue;
|
|
1134
|
+
aggregator.applyEvent(d.larkAppId, {
|
|
1135
|
+
type: 'session.update',
|
|
1136
|
+
body: { sessionId: row.sessionId, patch: { botAvatarUrl: avatar } },
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1113
1139
|
}
|
|
1114
1140
|
// Close subscriptions for daemons that went offline. Cache entries are
|
|
1115
1141
|
// intentionally retained — the user may still want to see the last-known
|
|
@@ -2207,7 +2233,13 @@ const server = createServer(async (req, res) => {
|
|
|
2207
2233
|
// Desktop shell compatibility probe (read-only, no token required). Keep it
|
|
2208
2234
|
// outside the browser auth gate so packaged desktop apps can decide whether
|
|
2209
2235
|
// this runtime speaks their dashboard protocol before loading the SPA.
|
|
2210
|
-
if (
|
|
2236
|
+
if (req.method === 'GET' && url.pathname === '/__desktop/compat') {
|
|
2237
|
+
const presentedToken = authedToken(req, url);
|
|
2238
|
+
const boundMachineId = activeToken && presentedToken === activeToken
|
|
2239
|
+
? readPlatformBinding()?.machineId
|
|
2240
|
+
: null;
|
|
2241
|
+
const compatMachineId = compatMachineIdForAuthenticatedRequest(presentedToken, activeToken, boundMachineId);
|
|
2242
|
+
handleDesktopCompat(req, res, url, { machineId: compatMachineId ?? undefined });
|
|
2211
2243
|
return;
|
|
2212
2244
|
}
|
|
2213
2245
|
// Web terminal reverse-proxy: `/s/<sessionId>/*` → the owning bot daemon's
|
|
@@ -2459,7 +2491,52 @@ const server = createServer(async (req, res) => {
|
|
|
2459
2491
|
? { ...s, botName: n }
|
|
2460
2492
|
: s;
|
|
2461
2493
|
});
|
|
2462
|
-
return jsonRes(res, 200, {
|
|
2494
|
+
return jsonRes(res, 200, {
|
|
2495
|
+
sessions: authed ? sessions : redactSessionsForPublic(sessions),
|
|
2496
|
+
});
|
|
2497
|
+
}
|
|
2498
|
+
// Desktop / operator UI: aggregate pending ask-hooks across daemons.
|
|
2499
|
+
if (req.method === 'GET' && url.pathname === '/api/asks/pending') {
|
|
2500
|
+
const daemons = registry.list();
|
|
2501
|
+
const asks = [];
|
|
2502
|
+
await Promise.all(daemons.map(async (d) => {
|
|
2503
|
+
try {
|
|
2504
|
+
const upstream = await fetchDaemonIpc(d.ipcPort, '/api/asks/pending', {
|
|
2505
|
+
signal: AbortSignal.timeout(2_000),
|
|
2506
|
+
});
|
|
2507
|
+
if (!upstream.ok)
|
|
2508
|
+
return;
|
|
2509
|
+
const body = await upstream.json();
|
|
2510
|
+
for (const a of body.asks ?? []) {
|
|
2511
|
+
asks.push({
|
|
2512
|
+
...(typeof a === 'object' && a ? a : {}),
|
|
2513
|
+
botName: d.botName,
|
|
2514
|
+
larkAppId: d.larkAppId,
|
|
2515
|
+
});
|
|
2516
|
+
}
|
|
2517
|
+
}
|
|
2518
|
+
catch {
|
|
2519
|
+
/* offline daemon */
|
|
2520
|
+
}
|
|
2521
|
+
}));
|
|
2522
|
+
return jsonRes(res, 200, { asks });
|
|
2523
|
+
}
|
|
2524
|
+
if (req.method === 'POST' && url.pathname === '/api/asks/answer') {
|
|
2525
|
+
let body;
|
|
2526
|
+
try {
|
|
2527
|
+
body = await readJsonBody(req);
|
|
2528
|
+
}
|
|
2529
|
+
catch {
|
|
2530
|
+
return jsonRes(res, 400, { ok: false, error: 'bad_json' });
|
|
2531
|
+
}
|
|
2532
|
+
const parsed = parseDashboardAskAnswerRequest(body);
|
|
2533
|
+
if (!parsed.ok) {
|
|
2534
|
+
return jsonRes(res, 400, { ok: false, error: parsed.error });
|
|
2535
|
+
}
|
|
2536
|
+
const upstream = await proxyDashboardAskAnswer(parsed.value, proxyToDaemon);
|
|
2537
|
+
res.writeHead(upstream.status, { 'content-type': upstream.contentType });
|
|
2538
|
+
res.end(upstream.body);
|
|
2539
|
+
return;
|
|
2463
2540
|
}
|
|
2464
2541
|
if (req.method === 'POST' && url.pathname === '/api/sessions/cleanup-idle') {
|
|
2465
2542
|
let body;
|
|
@@ -3495,6 +3572,35 @@ const server = createServer(async (req, res) => {
|
|
|
3495
3572
|
res.end(await upstream.text());
|
|
3496
3573
|
return;
|
|
3497
3574
|
}
|
|
3575
|
+
// 单会话元信息(状态/标题/cli/工作目录等)。dashboard 之前只代理了
|
|
3576
|
+
// GET /api/sessions(列表),没有单会话 :id 路由,编程式调用方(如任务
|
|
3577
|
+
// 编排器的「任务详情」面板)走 getMeta 会落到最底的 404 not_found_yet。
|
|
3578
|
+
// owner-only;ownerOf 对已关闭会话仍可解析。放在 trigger-result 之后,
|
|
3579
|
+
// 避免把 /trigger-result、/insight 等子路径吞进这个单段匹配。
|
|
3580
|
+
if (req.method === 'GET' && (m = url.pathname.match(/^\/api\/sessions\/([^/]+)$/))) {
|
|
3581
|
+
const sid = decodeURIComponent(m[1]);
|
|
3582
|
+
const owner = aggregator.ownerOf(sid);
|
|
3583
|
+
if (!owner)
|
|
3584
|
+
return jsonRes(res, 404, { ok: false, error: 'unknown_session' });
|
|
3585
|
+
const upstream = await proxyToDaemon(owner, `/api/sessions/${sid}`, { method: 'GET' });
|
|
3586
|
+
res.writeHead(upstream.status, { 'content-type': 'application/json' });
|
|
3587
|
+
res.end(await upstream.text());
|
|
3588
|
+
return;
|
|
3589
|
+
}
|
|
3590
|
+
// 异步 trigger 结果轮询(asyncReturnSessionId 模式的权威查询端点)。
|
|
3591
|
+
// 四态 running/completed/failed/not_found,daemon 重启后从持久化结果兜底
|
|
3592
|
+
// 重建 completed。owner-only(写权限 cookie),代理到 owner daemon 同名 IPC。
|
|
3593
|
+
// ownerOf 对已关闭会话仍可解析(aggregator 的 /api/sessions 含 closed)。
|
|
3594
|
+
if (req.method === 'GET' && (m = url.pathname.match(/^\/api\/sessions\/([^/]+)\/trigger-result$/))) {
|
|
3595
|
+
const sid = decodeURIComponent(m[1]);
|
|
3596
|
+
const owner = aggregator.ownerOf(sid);
|
|
3597
|
+
if (!owner)
|
|
3598
|
+
return jsonRes(res, 404, { ok: false, error: 'unknown_session' });
|
|
3599
|
+
const upstream = await proxyToDaemon(owner, `/api/sessions/${sid}/trigger-result${url.search ?? ''}`, { method: 'GET' });
|
|
3600
|
+
res.writeHead(upstream.status, { 'content-type': 'application/json' });
|
|
3601
|
+
res.end(await upstream.text());
|
|
3602
|
+
return;
|
|
3603
|
+
}
|
|
3498
3604
|
// 会话 insight(只读 trace 分析:动作 span / 失败聚合 / 规则建议)。
|
|
3499
3605
|
// owner-only:不在公开读白名单 → decideDashboardAuth 已对只读访客 401,
|
|
3500
3606
|
// 公开/联邦访客看不到 tab 也拿不到 span。代理到 owner daemon 的同名 IPC。
|
|
@@ -4076,6 +4182,42 @@ const server = createServer(async (req, res) => {
|
|
|
4076
4182
|
res.end(await upstream.text());
|
|
4077
4183
|
return;
|
|
4078
4184
|
}
|
|
4185
|
+
// PUT /api/bots/:appId/custom-passthrough — proxy to that bot's daemon. Body
|
|
4186
|
+
// `{ customPassthroughCommands: string }` (raw text, comma/space separated; '' = clear).
|
|
4187
|
+
let mBotPassthrough;
|
|
4188
|
+
if (req.method === 'PUT' && (mBotPassthrough = url.pathname.match(/^\/api\/bots\/([^/]+)\/custom-passthrough$/))) {
|
|
4189
|
+
const appId = decodeURIComponent(mBotPassthrough[1]);
|
|
4190
|
+
const chunks = [];
|
|
4191
|
+
for await (const c of req)
|
|
4192
|
+
chunks.push(c);
|
|
4193
|
+
const raw = Buffer.concat(chunks).toString('utf8') || '{}';
|
|
4194
|
+
const upstream = await proxyToDaemon(appId, `/api/bot-custom-passthrough`, {
|
|
4195
|
+
method: 'PUT',
|
|
4196
|
+
headers: { 'content-type': 'application/json' },
|
|
4197
|
+
body: raw,
|
|
4198
|
+
});
|
|
4199
|
+
res.writeHead(upstream.status, { 'content-type': 'application/json' });
|
|
4200
|
+
res.end(await upstream.text());
|
|
4201
|
+
return;
|
|
4202
|
+
}
|
|
4203
|
+
// PUT /api/bots/:appId/cantalk-daemon-commands — proxy to that bot's daemon. Body
|
|
4204
|
+
// `{ canTalkDaemonCommands: string }` (raw text, comma/space separated; '' = clear).
|
|
4205
|
+
let mBotCanTalk;
|
|
4206
|
+
if (req.method === 'PUT' && (mBotCanTalk = url.pathname.match(/^\/api\/bots\/([^/]+)\/cantalk-daemon-commands$/))) {
|
|
4207
|
+
const appId = decodeURIComponent(mBotCanTalk[1]);
|
|
4208
|
+
const chunks = [];
|
|
4209
|
+
for await (const c of req)
|
|
4210
|
+
chunks.push(c);
|
|
4211
|
+
const raw = Buffer.concat(chunks).toString('utf8') || '{}';
|
|
4212
|
+
const upstream = await proxyToDaemon(appId, `/api/bot-cantalk-daemon-commands`, {
|
|
4213
|
+
method: 'PUT',
|
|
4214
|
+
headers: { 'content-type': 'application/json' },
|
|
4215
|
+
body: raw,
|
|
4216
|
+
});
|
|
4217
|
+
res.writeHead(upstream.status, { 'content-type': 'application/json' });
|
|
4218
|
+
res.end(await upstream.text());
|
|
4219
|
+
return;
|
|
4220
|
+
}
|
|
4079
4221
|
// PUT /api/bots/:appId/launch-shell — proxy to that bot's daemon. Body
|
|
4080
4222
|
// `{ launchShell: string }` (shell name or absolute path; '' = clear → $SHELL).
|
|
4081
4223
|
let mBotLaunchShell;
|
|
@@ -4663,7 +4805,9 @@ const server = createServer(async (req, res) => {
|
|
|
4663
4805
|
// full task object — strip the prompt AND workingDir for anonymous SSE
|
|
4664
4806
|
// listeners, or the REST-side scrub would be trivially bypassed by
|
|
4665
4807
|
// `/events`.
|
|
4666
|
-
let body =
|
|
4808
|
+
let body = authed
|
|
4809
|
+
? ev.body
|
|
4810
|
+
: redactSessionEventForPublic(ev.type, ev.body);
|
|
4667
4811
|
if (!authed && (ev.type === 'schedule.created' || ev.type === 'schedule.updated')) {
|
|
4668
4812
|
const b = body;
|
|
4669
4813
|
body = {
|