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
|
@@ -74,6 +74,14 @@ export interface SessionRow {
|
|
|
74
74
|
/** Riff AIO Sandbox web terminal link. When set, the dashboard "Web终端"
|
|
75
75
|
* button opens this URL directly instead of building a local port link. */
|
|
76
76
|
riffAccessUrl?: string;
|
|
77
|
+
/** Presentation enrichment stamped by the central dashboard read-model:
|
|
78
|
+
* bot avatar URL from the live daemon descriptor.
|
|
79
|
+
* Absent on older daemons — consumers must fall back. */
|
|
80
|
+
botAvatarUrl?: string;
|
|
81
|
+
/** Repo top-level dir name of workingDir, when it is a git repo. */
|
|
82
|
+
repoName?: string;
|
|
83
|
+
/** Current branch of workingDir; absent for detached HEAD / non-repo. */
|
|
84
|
+
gitBranch?: string;
|
|
77
85
|
}
|
|
78
86
|
export declare function feishuChatLink(chatId: string, brand?: Brand): string;
|
|
79
87
|
export declare function setBotName(name: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-rows.d.ts","sourceRoot":"","sources":["../../src/core/dashboard-rows.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;iFAG6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;gFAG4E;IAC5E,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;4BACwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;8EAG0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB;mDAC+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;6CACyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;mDAC+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;wEAIoE;IACpE,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;gFAC4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-rows.d.ts","sourceRoot":"","sources":["../../src/core/dashboard-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-rows.js","sourceRoot":"","sources":["../../src/core/dashboard-rows.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAc,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAA0B,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-rows.js","sourceRoot":"","sources":["../../src/core/dashboard-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-overload alerting: watch the machine's 15-minute load average and memory
|
|
3
|
+
* pressure, and fire a single Feishu DM to the bot owner when the host crosses
|
|
4
|
+
* into an overloaded state (and one more when it recovers).
|
|
5
|
+
*
|
|
6
|
+
* Motivation: botmux already samples load/cpu/mem for the dashboard
|
|
7
|
+
* (dashboard/resource-monitor-service.ts), but that path is purely passive — it
|
|
8
|
+
* only feeds charts and never warns anyone. A cold-start that misses the 15s
|
|
9
|
+
* readiness window (see the "bare-shell" false-death path) usually traces back
|
|
10
|
+
* to the machine being overloaded, not to a config bug. This module turns the
|
|
11
|
+
* already-collected signal into an actionable heads-up.
|
|
12
|
+
*
|
|
13
|
+
* Design:
|
|
14
|
+
* - Pure decision function {@link evaluateOverload} maps a reading + previous
|
|
15
|
+
* state to a next state and an optional alert action. No I/O, no timers, no
|
|
16
|
+
* Node globals — trivially unit-testable.
|
|
17
|
+
* - Hysteresis: enter at `load15 > cpuCount * enterLoadRatio` (or mem/swap over
|
|
18
|
+
* their enter thresholds); only clear once BELOW a lower exit threshold so a
|
|
19
|
+
* load hovering around the line can't flap and spam the owner.
|
|
20
|
+
* - Edge-triggered: exactly one "entered" alert per overload episode and one
|
|
21
|
+
* "recovered" alert when it ends. Steady-state (still overloaded / still
|
|
22
|
+
* healthy) produces no action.
|
|
23
|
+
* - A minimum re-alert interval guards against a long episode that dips just
|
|
24
|
+
* under the exit line and back repeatedly within a short window.
|
|
25
|
+
*/
|
|
26
|
+
export interface OverloadThresholds {
|
|
27
|
+
/** Logical CPU count used to normalise load average (os.cpus().length). */
|
|
28
|
+
cpuCount: number;
|
|
29
|
+
/** Enter overload when load15 > cpuCount * this. Default 1.5. */
|
|
30
|
+
enterLoadRatio: number;
|
|
31
|
+
/** Leave overload only when load15 <= cpuCount * this. Default 1.0. Must be <= enterLoadRatio. */
|
|
32
|
+
exitLoadRatio: number;
|
|
33
|
+
/** Enter overload when used memory fraction (0..1) >= this. Default 0.92. */
|
|
34
|
+
enterMemUsedFrac: number;
|
|
35
|
+
/** Leave overload only when used memory fraction <= this. Default 0.85. */
|
|
36
|
+
exitMemUsedFrac: number;
|
|
37
|
+
/** Enter overload when swap-used fraction (0..1) >= this. Default 0.5. 0 disables. */
|
|
38
|
+
enterSwapUsedFrac: number;
|
|
39
|
+
/** Leave overload only when swap-used fraction <= this. Default 0.25. */
|
|
40
|
+
exitSwapUsedFrac: number;
|
|
41
|
+
/**
|
|
42
|
+
* Minimum ms between two "entered" alerts. Even if the state machine leaves
|
|
43
|
+
* and re-enters overload, suppress a fresh entered-alert within this window.
|
|
44
|
+
* Default 15 min. The recovered-alert is never rate-limited (it ends noise).
|
|
45
|
+
*/
|
|
46
|
+
minReAlertMs: number;
|
|
47
|
+
}
|
|
48
|
+
export declare const DEFAULT_OVERLOAD_THRESHOLDS: Omit<OverloadThresholds, 'cpuCount'>;
|
|
49
|
+
/** A single sampled reading of host pressure. */
|
|
50
|
+
export interface HostReading {
|
|
51
|
+
/** 15-minute load average (os.loadavg()[2]). */
|
|
52
|
+
load15: number;
|
|
53
|
+
/** Total physical memory in bytes (os.totalmem()). */
|
|
54
|
+
memTotalBytes: number;
|
|
55
|
+
/** Free physical memory in bytes (os.freemem()). */
|
|
56
|
+
memFreeBytes: number;
|
|
57
|
+
/**
|
|
58
|
+
* Swap total/used in bytes, if known. macOS/Node has no built-in swap read;
|
|
59
|
+
* pass undefined to skip the swap dimension entirely.
|
|
60
|
+
*/
|
|
61
|
+
swapTotalBytes?: number;
|
|
62
|
+
swapUsedBytes?: number;
|
|
63
|
+
}
|
|
64
|
+
/** Which dimension(s) tripped the enter threshold — used for the alert copy. */
|
|
65
|
+
export type OverloadReason = 'load' | 'memory' | 'swap';
|
|
66
|
+
export interface OverloadState {
|
|
67
|
+
overloaded: boolean;
|
|
68
|
+
/** ms timestamp of the last "entered" alert we emitted (0 = never). */
|
|
69
|
+
lastEnteredAlertAt: number;
|
|
70
|
+
}
|
|
71
|
+
export declare const INITIAL_OVERLOAD_STATE: OverloadState;
|
|
72
|
+
export interface OverloadAlertAction {
|
|
73
|
+
kind: 'entered' | 'recovered';
|
|
74
|
+
reasons: OverloadReason[];
|
|
75
|
+
reading: HostReading;
|
|
76
|
+
/** Derived, human-friendly numbers for the alert copy. */
|
|
77
|
+
metrics: {
|
|
78
|
+
load15: number;
|
|
79
|
+
loadPerCpu: number;
|
|
80
|
+
cpuCount: number;
|
|
81
|
+
memUsedFrac: number;
|
|
82
|
+
swapUsedFrac: number | undefined;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export interface OverloadEvaluation {
|
|
86
|
+
nextState: OverloadState;
|
|
87
|
+
/** Present only on a state edge that should notify the owner. */
|
|
88
|
+
action?: OverloadAlertAction;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Core state-machine step. Given the previous state, the current reading and
|
|
92
|
+
* thresholds (plus `now` for rate-limiting), return the next state and, on a
|
|
93
|
+
* notable edge, the alert action to deliver.
|
|
94
|
+
*
|
|
95
|
+
* Transitions:
|
|
96
|
+
* - healthy → overloaded: any enter reason trips. Emit `entered` UNLESS a prior
|
|
97
|
+
* entered-alert fired within `minReAlertMs` (then flip state silently).
|
|
98
|
+
* - overloaded → healthy: only once `fullyRecovered` (all dims under exit bar).
|
|
99
|
+
* Always emit `recovered`.
|
|
100
|
+
* - no change: no action.
|
|
101
|
+
*/
|
|
102
|
+
export declare function evaluateOverload(prev: OverloadState, reading: HostReading, thresholds: OverloadThresholds, now: number): OverloadEvaluation;
|
|
103
|
+
/** Build the Feishu text body for an alert action. Kept here so it's testable. */
|
|
104
|
+
export declare function formatOverloadAlert(action: OverloadAlertAction, hostLabel?: string): string;
|
|
105
|
+
/** action.value.action strings emitted by the alert card buttons; the daemon's
|
|
106
|
+
* card handler matches on these. Exported so the handler and tests share the
|
|
107
|
+
* exact literals (typo-proof). */
|
|
108
|
+
export declare const OVERLOAD_ACTION_CLEAN_STOPPED = "overload_clean_stopped";
|
|
109
|
+
export declare const OVERLOAD_ACTION_SUSPEND_IDLE = "overload_suspend_idle";
|
|
110
|
+
/** Fail-safe action on a disabled (already-run) button — clients that don't
|
|
111
|
+
* suppress disabled callbacks just get a harmless toast, no side effect. */
|
|
112
|
+
export declare const OVERLOAD_ACTION_NOOP = "overload_noop";
|
|
113
|
+
/**
|
|
114
|
+
* Per-button state carried on the card so any daemon can rebuild it after a
|
|
115
|
+
* click without external storage. `done`/`n` record whether an action already
|
|
116
|
+
* ran and how many sessions it affected (−1 = not yet run). Counts are the
|
|
117
|
+
* machine-wide candidate totals shown in the button labels before clicking.
|
|
118
|
+
*/
|
|
119
|
+
export interface OverloadCardState {
|
|
120
|
+
nonce: string;
|
|
121
|
+
/** metrics for the summary line (kept compact). */
|
|
122
|
+
load15: number;
|
|
123
|
+
cpu: number;
|
|
124
|
+
mem: number;
|
|
125
|
+
swap?: number;
|
|
126
|
+
reasons: OverloadReason[];
|
|
127
|
+
/** machine-wide candidate counts (refreshed on every rebuild). */
|
|
128
|
+
stopped: number;
|
|
129
|
+
idle: number;
|
|
130
|
+
/** result of each action once run; -1 = not run yet. */
|
|
131
|
+
cleanedN: number;
|
|
132
|
+
suspendedN: number;
|
|
133
|
+
}
|
|
134
|
+
/** Seed initial card state from an `entered` action + counts + nonce. */
|
|
135
|
+
export declare function initialOverloadCardState(action: OverloadAlertAction, counts: {
|
|
136
|
+
stopped: number;
|
|
137
|
+
idle: number;
|
|
138
|
+
}, nonce: string): OverloadCardState;
|
|
139
|
+
/**
|
|
140
|
+
* Build the interactive Feishu overload card from card state (returns a JSON
|
|
141
|
+
* string). This one builder renders BOTH the initial alert and every post-click
|
|
142
|
+
* rebuild: it always shows two buttons so clicking one never removes the other.
|
|
143
|
+
*
|
|
144
|
+
* - Not-yet-run button → live callback, label shows the candidate count
|
|
145
|
+
* (「🧹 清僵尸会话 (N)」). Carries the full `st` so the handler can rebuild.
|
|
146
|
+
* - Already-run button → disabled + a `✓ 已清理 X 个` label (with a `noop`
|
|
147
|
+
* fail-safe action for clients that don't suppress disabled callbacks).
|
|
148
|
+
*
|
|
149
|
+
* Each button also carries its own nonce claim (one-shot per action), so the
|
|
150
|
+
* owner can click both buttons on one card, but neither twice.
|
|
151
|
+
*/
|
|
152
|
+
export declare function buildOverloadAlertCard(st: OverloadCardState, hostLabel?: string): string;
|
|
153
|
+
/** Display-only card for the `recovered` edge (no buttons). */
|
|
154
|
+
export declare function buildOverloadRecoveredCard(action: OverloadAlertAction, hostLabel?: string): string;
|
|
155
|
+
/** Grey "this alert card has expired" card (daemon restart lost the nonce, etc.). */
|
|
156
|
+
export declare function buildOverloadExpiredCard(detail?: string): string;
|
|
157
|
+
//# sourceMappingURL=host-overload-alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-overload-alert.d.ts","sourceRoot":"","sources":["../../src/core/host-overload-alert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-overload alerting: watch the machine's 15-minute load average and memory
|
|
3
|
+
* pressure, and fire a single Feishu DM to the bot owner when the host crosses
|
|
4
|
+
* into an overloaded state (and one more when it recovers).
|
|
5
|
+
*
|
|
6
|
+
* Motivation: botmux already samples load/cpu/mem for the dashboard
|
|
7
|
+
* (dashboard/resource-monitor-service.ts), but that path is purely passive — it
|
|
8
|
+
* only feeds charts and never warns anyone. A cold-start that misses the 15s
|
|
9
|
+
* readiness window (see the "bare-shell" false-death path) usually traces back
|
|
10
|
+
* to the machine being overloaded, not to a config bug. This module turns the
|
|
11
|
+
* already-collected signal into an actionable heads-up.
|
|
12
|
+
*
|
|
13
|
+
* Design:
|
|
14
|
+
* - Pure decision function {@link evaluateOverload} maps a reading + previous
|
|
15
|
+
* state to a next state and an optional alert action. No I/O, no timers, no
|
|
16
|
+
* Node globals — trivially unit-testable.
|
|
17
|
+
* - Hysteresis: enter at `load15 > cpuCount * enterLoadRatio` (or mem/swap over
|
|
18
|
+
* their enter thresholds); only clear once BELOW a lower exit threshold so a
|
|
19
|
+
* load hovering around the line can't flap and spam the owner.
|
|
20
|
+
* - Edge-triggered: exactly one "entered" alert per overload episode and one
|
|
21
|
+
* "recovered" alert when it ends. Steady-state (still overloaded / still
|
|
22
|
+
* healthy) produces no action.
|
|
23
|
+
* - A minimum re-alert interval guards against a long episode that dips just
|
|
24
|
+
* under the exit line and back repeatedly within a short window.
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_OVERLOAD_THRESHOLDS = {
|
|
27
|
+
enterLoadRatio: 1.5,
|
|
28
|
+
exitLoadRatio: 1.0,
|
|
29
|
+
enterMemUsedFrac: 0.92,
|
|
30
|
+
exitMemUsedFrac: 0.85,
|
|
31
|
+
enterSwapUsedFrac: 0.5,
|
|
32
|
+
exitSwapUsedFrac: 0.25,
|
|
33
|
+
minReAlertMs: 15 * 60_000,
|
|
34
|
+
};
|
|
35
|
+
export const INITIAL_OVERLOAD_STATE = { overloaded: false, lastEnteredAlertAt: 0 };
|
|
36
|
+
function memUsedFrac(reading) {
|
|
37
|
+
if (reading.memTotalBytes <= 0)
|
|
38
|
+
return 0;
|
|
39
|
+
const used = reading.memTotalBytes - reading.memFreeBytes;
|
|
40
|
+
return Math.max(0, Math.min(1, used / reading.memTotalBytes));
|
|
41
|
+
}
|
|
42
|
+
function swapUsedFrac(reading) {
|
|
43
|
+
if (reading.swapTotalBytes === undefined || reading.swapUsedBytes === undefined)
|
|
44
|
+
return undefined;
|
|
45
|
+
if (reading.swapTotalBytes <= 0)
|
|
46
|
+
return 0;
|
|
47
|
+
return Math.max(0, Math.min(1, reading.swapUsedBytes / reading.swapTotalBytes));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Which dimensions are over their ENTER thresholds right now. Non-empty ⇒ the
|
|
51
|
+
* reading looks overloaded (used to trip a healthy→overloaded transition).
|
|
52
|
+
*/
|
|
53
|
+
function enterReasons(reading, t) {
|
|
54
|
+
const reasons = [];
|
|
55
|
+
if (t.cpuCount > 0 && reading.load15 > t.cpuCount * t.enterLoadRatio)
|
|
56
|
+
reasons.push('load');
|
|
57
|
+
if (memUsedFrac(reading) >= t.enterMemUsedFrac)
|
|
58
|
+
reasons.push('memory');
|
|
59
|
+
const swap = swapUsedFrac(reading);
|
|
60
|
+
if (t.enterSwapUsedFrac > 0 && swap !== undefined && swap >= t.enterSwapUsedFrac)
|
|
61
|
+
reasons.push('swap');
|
|
62
|
+
return reasons;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* True when EVERY dimension has fallen back under its EXIT threshold — i.e. the
|
|
66
|
+
* host is comfortably healthy again. Requiring all dimensions to clear (with a
|
|
67
|
+
* lower exit bar than the enter bar) is the hysteresis that prevents flapping.
|
|
68
|
+
*/
|
|
69
|
+
function fullyRecovered(reading, t) {
|
|
70
|
+
const loadOk = t.cpuCount <= 0 || reading.load15 <= t.cpuCount * t.exitLoadRatio;
|
|
71
|
+
const memOk = memUsedFrac(reading) <= t.exitMemUsedFrac;
|
|
72
|
+
const swap = swapUsedFrac(reading);
|
|
73
|
+
const swapOk = t.enterSwapUsedFrac <= 0 || swap === undefined || swap <= t.exitSwapUsedFrac;
|
|
74
|
+
return loadOk && memOk && swapOk;
|
|
75
|
+
}
|
|
76
|
+
function metricsFor(reading, t) {
|
|
77
|
+
return {
|
|
78
|
+
load15: reading.load15,
|
|
79
|
+
loadPerCpu: t.cpuCount > 0 ? reading.load15 / t.cpuCount : 0,
|
|
80
|
+
cpuCount: t.cpuCount,
|
|
81
|
+
memUsedFrac: memUsedFrac(reading),
|
|
82
|
+
swapUsedFrac: swapUsedFrac(reading),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Core state-machine step. Given the previous state, the current reading and
|
|
87
|
+
* thresholds (plus `now` for rate-limiting), return the next state and, on a
|
|
88
|
+
* notable edge, the alert action to deliver.
|
|
89
|
+
*
|
|
90
|
+
* Transitions:
|
|
91
|
+
* - healthy → overloaded: any enter reason trips. Emit `entered` UNLESS a prior
|
|
92
|
+
* entered-alert fired within `minReAlertMs` (then flip state silently).
|
|
93
|
+
* - overloaded → healthy: only once `fullyRecovered` (all dims under exit bar).
|
|
94
|
+
* Always emit `recovered`.
|
|
95
|
+
* - no change: no action.
|
|
96
|
+
*/
|
|
97
|
+
export function evaluateOverload(prev, reading, thresholds, now) {
|
|
98
|
+
const reasons = enterReasons(reading, thresholds);
|
|
99
|
+
if (!prev.overloaded) {
|
|
100
|
+
if (reasons.length === 0)
|
|
101
|
+
return { nextState: prev };
|
|
102
|
+
// healthy → overloaded edge.
|
|
103
|
+
const suppressed = now - prev.lastEnteredAlertAt < thresholds.minReAlertMs && prev.lastEnteredAlertAt > 0;
|
|
104
|
+
const nextState = {
|
|
105
|
+
overloaded: true,
|
|
106
|
+
lastEnteredAlertAt: suppressed ? prev.lastEnteredAlertAt : now,
|
|
107
|
+
};
|
|
108
|
+
if (suppressed)
|
|
109
|
+
return { nextState };
|
|
110
|
+
return {
|
|
111
|
+
nextState,
|
|
112
|
+
action: { kind: 'entered', reasons, reading, metrics: metricsFor(reading, thresholds) },
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Currently overloaded: stay until fully recovered.
|
|
116
|
+
if (!fullyRecovered(reading, thresholds))
|
|
117
|
+
return { nextState: prev };
|
|
118
|
+
// overloaded → healthy edge; always announce recovery.
|
|
119
|
+
return {
|
|
120
|
+
nextState: { overloaded: false, lastEnteredAlertAt: prev.lastEnteredAlertAt },
|
|
121
|
+
action: {
|
|
122
|
+
kind: 'recovered',
|
|
123
|
+
// On recovery the reasons list is whatever was still elevated at the last
|
|
124
|
+
// sample; report the (now-cleared) dimensions best-effort as empty.
|
|
125
|
+
reasons: [],
|
|
126
|
+
reading,
|
|
127
|
+
metrics: metricsFor(reading, thresholds),
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const REASON_LABEL = {
|
|
132
|
+
load: 'CPU 负载',
|
|
133
|
+
memory: '内存',
|
|
134
|
+
swap: 'Swap',
|
|
135
|
+
};
|
|
136
|
+
/** Build the Feishu text body for an alert action. Kept here so it's testable. */
|
|
137
|
+
export function formatOverloadAlert(action, hostLabel) {
|
|
138
|
+
const m = action.metrics;
|
|
139
|
+
const host = hostLabel ? `(${hostLabel})` : '';
|
|
140
|
+
const load = `load15 ${m.load15.toFixed(1)} / ${m.cpuCount} 核 = 每核 ${m.loadPerCpu.toFixed(2)}`;
|
|
141
|
+
const mem = `内存已用 ${(m.memUsedFrac * 100).toFixed(0)}%`;
|
|
142
|
+
const swap = m.swapUsedFrac === undefined ? '' : ` · Swap ${(m.swapUsedFrac * 100).toFixed(0)}%`;
|
|
143
|
+
if (action.kind === 'recovered') {
|
|
144
|
+
return `✅ 机器负载已恢复${host}\n${load} · ${mem}${swap}\n(botmux 会话可以正常冷启动了)`;
|
|
145
|
+
}
|
|
146
|
+
const why = action.reasons.map(r => REASON_LABEL[r]).join(' + ') || '资源';
|
|
147
|
+
return (`⚠️ 机器过载告警${host}\n` +
|
|
148
|
+
`触发维度:${why}\n` +
|
|
149
|
+
`${load} · ${mem}${swap}\n` +
|
|
150
|
+
`此时 botmux 会话冷启动可能超时假死。建议:\`botmux delete stopped\` 清僵尸、挂起闲置会话、或调低各 bot 的 maxLiveWorkers。`);
|
|
151
|
+
}
|
|
152
|
+
/** action.value.action strings emitted by the alert card buttons; the daemon's
|
|
153
|
+
* card handler matches on these. Exported so the handler and tests share the
|
|
154
|
+
* exact literals (typo-proof). */
|
|
155
|
+
export const OVERLOAD_ACTION_CLEAN_STOPPED = 'overload_clean_stopped';
|
|
156
|
+
export const OVERLOAD_ACTION_SUSPEND_IDLE = 'overload_suspend_idle';
|
|
157
|
+
/** Fail-safe action on a disabled (already-run) button — clients that don't
|
|
158
|
+
* suppress disabled callbacks just get a harmless toast, no side effect. */
|
|
159
|
+
export const OVERLOAD_ACTION_NOOP = 'overload_noop';
|
|
160
|
+
/** One-line metrics summary reused by both the text and card renderers. */
|
|
161
|
+
function metricsLine(m) {
|
|
162
|
+
const load = `load15 ${m.load15.toFixed(1)} / ${m.cpuCount} 核 = 每核 ${m.loadPerCpu.toFixed(2)}`;
|
|
163
|
+
const mem = `内存已用 ${(m.memUsedFrac * 100).toFixed(0)}%`;
|
|
164
|
+
const swap = m.swapUsedFrac === undefined ? '' : ` · Swap ${(m.swapUsedFrac * 100).toFixed(0)}%`;
|
|
165
|
+
return `${load} · ${mem}${swap}`;
|
|
166
|
+
}
|
|
167
|
+
/** Build the machine-wide summary/metrics line from card state. */
|
|
168
|
+
function stateMetricsLine(st) {
|
|
169
|
+
const load = `load15 ${st.load15.toFixed(1)} / ${st.cpu} 核 = 每核 ${(st.cpu > 0 ? st.load15 / st.cpu : 0).toFixed(2)}`;
|
|
170
|
+
const mem = `内存已用 ${(st.mem * 100).toFixed(0)}%`;
|
|
171
|
+
const swap = st.swap === undefined ? '' : ` · Swap ${(st.swap * 100).toFixed(0)}%`;
|
|
172
|
+
return `${load} · ${mem}${swap}`;
|
|
173
|
+
}
|
|
174
|
+
/** Seed initial card state from an `entered` action + counts + nonce. */
|
|
175
|
+
export function initialOverloadCardState(action, counts, nonce) {
|
|
176
|
+
return {
|
|
177
|
+
nonce,
|
|
178
|
+
load15: action.metrics.load15,
|
|
179
|
+
cpu: action.metrics.cpuCount,
|
|
180
|
+
mem: action.metrics.memUsedFrac,
|
|
181
|
+
...(action.metrics.swapUsedFrac === undefined ? {} : { swap: action.metrics.swapUsedFrac }),
|
|
182
|
+
reasons: action.reasons,
|
|
183
|
+
stopped: counts.stopped,
|
|
184
|
+
idle: counts.idle,
|
|
185
|
+
cleanedN: -1,
|
|
186
|
+
suspendedN: -1,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Build the interactive Feishu overload card from card state (returns a JSON
|
|
191
|
+
* string). This one builder renders BOTH the initial alert and every post-click
|
|
192
|
+
* rebuild: it always shows two buttons so clicking one never removes the other.
|
|
193
|
+
*
|
|
194
|
+
* - Not-yet-run button → live callback, label shows the candidate count
|
|
195
|
+
* (「🧹 清僵尸会话 (N)」). Carries the full `st` so the handler can rebuild.
|
|
196
|
+
* - Already-run button → disabled + a `✓ 已清理 X 个` label (with a `noop`
|
|
197
|
+
* fail-safe action for clients that don't suppress disabled callbacks).
|
|
198
|
+
*
|
|
199
|
+
* Each button also carries its own nonce claim (one-shot per action), so the
|
|
200
|
+
* owner can click both buttons on one card, but neither twice.
|
|
201
|
+
*/
|
|
202
|
+
export function buildOverloadAlertCard(st, hostLabel) {
|
|
203
|
+
const host = hostLabel ? `(${hostLabel})` : '';
|
|
204
|
+
const why = st.reasons.map(r => REASON_LABEL[r]).join(' + ') || '资源';
|
|
205
|
+
const cleanBtn = st.cleanedN >= 0
|
|
206
|
+
? { tag: 'button', type: 'default', disabled: true,
|
|
207
|
+
text: { tag: 'plain_text', content: `✓ 已清理 ${st.cleanedN} 个僵尸` },
|
|
208
|
+
value: { action: OVERLOAD_ACTION_NOOP } }
|
|
209
|
+
: { tag: 'button', type: 'primary',
|
|
210
|
+
text: { tag: 'plain_text', content: `🧹 清僵尸会话 (${st.stopped})` },
|
|
211
|
+
value: { action: OVERLOAD_ACTION_CLEAN_STOPPED, st: JSON.stringify(st) } };
|
|
212
|
+
const suspendBtn = st.suspendedN >= 0
|
|
213
|
+
? { tag: 'button', type: 'default', disabled: true,
|
|
214
|
+
text: { tag: 'plain_text', content: `✓ 已挂起 ${st.suspendedN} 个闲置` },
|
|
215
|
+
value: { action: OVERLOAD_ACTION_NOOP } }
|
|
216
|
+
: { tag: 'button', type: 'default',
|
|
217
|
+
text: { tag: 'plain_text', content: `💤 挂起闲置会话 (${st.idle})` },
|
|
218
|
+
value: { action: OVERLOAD_ACTION_SUSPEND_IDLE, st: JSON.stringify(st) } };
|
|
219
|
+
return JSON.stringify({
|
|
220
|
+
config: { wide_screen_mode: true },
|
|
221
|
+
header: { template: 'red', title: { tag: 'plain_text', content: `⚠️ 机器过载告警${host}` } },
|
|
222
|
+
elements: [
|
|
223
|
+
{ tag: 'div', text: { tag: 'lark_md', content: `**触发维度:**${why}\n${stateMetricsLine(st)}` } },
|
|
224
|
+
{ tag: 'div', text: { tag: 'lark_md', content: `当前可降压:**僵尸会话 ${st.stopped} 个** · **闲置会话 ${st.idle} 个**` } },
|
|
225
|
+
{ tag: 'hr' },
|
|
226
|
+
{ tag: 'action', actions: [cleanBtn, suspendBtn] },
|
|
227
|
+
{ tag: 'note', elements: [{ tag: 'lark_md', content: '清僵尸=关闭进程已退出的僵尸会话;挂起闲置=挂起空闲可恢复会话(下条消息冷恢复)。仅管理员可操作,每个按钮可点一次。' }] },
|
|
228
|
+
],
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/** Display-only card for the `recovered` edge (no buttons). */
|
|
232
|
+
export function buildOverloadRecoveredCard(action, hostLabel) {
|
|
233
|
+
const host = hostLabel ? `(${hostLabel})` : '';
|
|
234
|
+
return JSON.stringify({
|
|
235
|
+
config: { wide_screen_mode: true },
|
|
236
|
+
header: { template: 'green', title: { tag: 'plain_text', content: `✅ 机器负载已恢复${host}` } },
|
|
237
|
+
elements: [
|
|
238
|
+
{ tag: 'div', text: { tag: 'lark_md', content: metricsLine(action.metrics) } },
|
|
239
|
+
{ tag: 'note', elements: [{ tag: 'lark_md', content: 'botmux 会话可以正常冷启动了。' }] },
|
|
240
|
+
],
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/** Grey "this alert card has expired" card (daemon restart lost the nonce, etc.). */
|
|
244
|
+
export function buildOverloadExpiredCard(detail = '') {
|
|
245
|
+
return JSON.stringify({
|
|
246
|
+
config: { wide_screen_mode: true },
|
|
247
|
+
header: { template: 'grey', title: { tag: 'plain_text', content: '⏳ 操作已失效' } },
|
|
248
|
+
elements: [{ tag: 'div', text: { tag: 'lark_md', content: detail || '这张告警卡已过期(daemon 重启或超时)。等待下一次告警即可。' } }],
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=host-overload-alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-overload-alert.js","sourceRoot":"","sources":["../../src/core/host-overload-alert.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,4 +45,12 @@ export declare function normalizePassthroughCommand(cmd: unknown): string | null
|
|
|
45
45
|
* when loading bots.json, so a round-trip through the card is stable.
|
|
46
46
|
*/
|
|
47
47
|
export declare function parseCustomPassthroughInput(raw: string): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Parse free-text input for `canTalkDaemonCommands` — the inverse filter of
|
|
50
|
+
* {@link parseCustomPassthroughInput}: after the same normalization (lowercase,
|
|
51
|
+
* auto `/`), keep ONLY entries that ARE daemon commands. The default stringList
|
|
52
|
+
* parser (parseCustomPassthroughInput) rejects every daemon command, so wiring
|
|
53
|
+
* it to this field would silently drop all valid input.
|
|
54
|
+
*/
|
|
55
|
+
export declare function parseCanTalkDaemonCommandsInput(raw: string): string[];
|
|
48
56
|
//# sourceMappingURL=passthrough-commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-commands.d.ts","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAqW,CAAC;AAElY;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAQ/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjE"}
|
|
1
|
+
{"version":3,"file":"passthrough-commands.d.ts","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAqW,CAAC;AAElY;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAQ/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjE;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CASrE"}
|
|
@@ -74,4 +74,23 @@ export function parseCustomPassthroughInput(raw) {
|
|
|
74
74
|
}
|
|
75
75
|
return [...new Set(out)];
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Parse free-text input for `canTalkDaemonCommands` — the inverse filter of
|
|
79
|
+
* {@link parseCustomPassthroughInput}: after the same normalization (lowercase,
|
|
80
|
+
* auto `/`), keep ONLY entries that ARE daemon commands. The default stringList
|
|
81
|
+
* parser (parseCustomPassthroughInput) rejects every daemon command, so wiring
|
|
82
|
+
* it to this field would silently drop all valid input.
|
|
83
|
+
*/
|
|
84
|
+
export function parseCanTalkDaemonCommandsInput(raw) {
|
|
85
|
+
const out = [];
|
|
86
|
+
for (const tok of String(raw ?? '').split(/[\s,]+/)) {
|
|
87
|
+
const trimmed = tok.trim().toLowerCase();
|
|
88
|
+
if (!trimmed)
|
|
89
|
+
continue;
|
|
90
|
+
const withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
91
|
+
if (DAEMON_COMMANDS.has(withSlash))
|
|
92
|
+
out.push(withSlash);
|
|
93
|
+
}
|
|
94
|
+
return [...new Set(out)];
|
|
95
|
+
}
|
|
77
96
|
//# sourceMappingURL=passthrough-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passthrough-commands.js","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAElY;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IACnD,MAAM;IACN,yBAAyB;IACzB,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACpC,cAAc,EAAE,kBAAkB,EAAE,SAAS;IAC7C,8BAA8B;IAC9B,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"passthrough-commands.js","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type RestartSource = 'slash' | 'card';
|
|
2
|
+
export type RestartTerminalStatus = 'succeeded' | 'failed' | 'timed_out';
|
|
3
|
+
export type RestartObserverStatus = 'in_progress' | RestartTerminalStatus;
|
|
4
|
+
export interface RestartObserver {
|
|
5
|
+
source: RestartSource;
|
|
6
|
+
notify(status: RestartObserverStatus): void | Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class RestartCoordinator {
|
|
9
|
+
private readonly options;
|
|
10
|
+
private readonly attempts;
|
|
11
|
+
private readonly notifications;
|
|
12
|
+
constructor(options?: {
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
createAttemptId?: () => string;
|
|
15
|
+
});
|
|
16
|
+
request(sessionId: string, observer: RestartObserver, startPhysicalRestart: (attemptId: string) => void | Promise<void>): {
|
|
17
|
+
attemptId: string;
|
|
18
|
+
joined: boolean;
|
|
19
|
+
};
|
|
20
|
+
resolve(sessionId: string, attemptId: string, status: RestartTerminalStatus): boolean;
|
|
21
|
+
failSession(sessionId: string): boolean;
|
|
22
|
+
cancelSession(sessionId: string): boolean;
|
|
23
|
+
activeAttemptId(sessionId: string): string | undefined;
|
|
24
|
+
reset(): void;
|
|
25
|
+
private notify;
|
|
26
|
+
private enqueueNotify;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=restart-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.d.ts","sourceRoot":"","sources":["../../src/core/restart-coordinator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAC7C,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AACzE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAQD,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiD;gBAElD,OAAO,GAAE;QACpC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;KAC3B;IAEN,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EACzB,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAChE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IA8BzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO;IASrF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKvC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQzC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAItD,KAAK,IAAI,IAAI;YAKC,MAAM;IAQpB,OAAO,CAAC,aAAa;CAQtB"}
|