botmux 3.10.0 → 3.11.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/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/herdr-backend.d.ts +4 -3
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +11 -8
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/pty-backend.d.ts +1 -1
- package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
- package/dist/adapters/backend/pty-backend.js +4 -1
- package/dist/adapters/backend/pty-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +29 -5
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +302 -31
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +6 -0
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +7 -0
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +4 -1
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +37 -3
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +3 -3
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +9 -3
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +3 -3
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.js +12 -7
- package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +11 -2
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +35 -2
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +88 -7
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +15 -14
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +64 -26
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +20 -5
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +24 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +110 -5
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/fleet-shutdown.d.ts +47 -0
- package/dist/cli/fleet-shutdown.d.ts.map +1 -0
- package/dist/cli/fleet-shutdown.js +387 -0
- package/dist/cli/fleet-shutdown.js.map +1 -0
- package/dist/cli/pm2-descriptor-guard.d.ts +19 -0
- package/dist/cli/pm2-descriptor-guard.d.ts.map +1 -0
- package/dist/cli/pm2-descriptor-guard.js +122 -0
- package/dist/cli/pm2-descriptor-guard.js.map +1 -0
- package/dist/cli/pm2-exact-start.d.ts +16 -0
- package/dist/cli/pm2-exact-start.d.ts.map +1 -0
- package/dist/cli/pm2-exact-start.js +63 -0
- package/dist/cli/pm2-exact-start.js.map +1 -0
- package/dist/cli/pm2-god-admission.d.ts +8 -0
- package/dist/cli/pm2-god-admission.d.ts.map +1 -0
- package/dist/cli/pm2-god-admission.js +25 -0
- package/dist/cli/pm2-god-admission.js.map +1 -0
- package/dist/cli/pm2-jlist.d.ts +13 -0
- package/dist/cli/pm2-jlist.d.ts.map +1 -0
- package/dist/cli/pm2-jlist.js +108 -0
- package/dist/cli/pm2-jlist.js.map +1 -0
- package/dist/cli/pm2-preflight.d.ts +10 -0
- package/dist/cli/pm2-preflight.d.ts.map +1 -0
- package/dist/cli/pm2-preflight.js +23 -0
- package/dist/cli/pm2-preflight.js.map +1 -0
- package/dist/cli/pm2-shutdown-capability.d.ts +27 -0
- package/dist/cli/pm2-shutdown-capability.d.ts.map +1 -0
- package/dist/cli/pm2-shutdown-capability.js +161 -0
- package/dist/cli/pm2-shutdown-capability.js.map +1 -0
- package/dist/cli/pm2-start-transaction.d.ts +55 -0
- package/dist/cli/pm2-start-transaction.d.ts.map +1 -0
- package/dist/cli/pm2-start-transaction.js +220 -0
- package/dist/cli/pm2-start-transaction.js.map +1 -0
- package/dist/cli/send-dispatch.d.ts +12 -0
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +31 -4
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli/session-list-liveness.d.ts +1 -0
- package/dist/cli/session-list-liveness.d.ts.map +1 -1
- package/dist/cli/session-list-liveness.js +6 -0
- package/dist/cli/session-list-liveness.js.map +1 -1
- package/dist/cli/session-picker-layout.d.ts +26 -0
- package/dist/cli/session-picker-layout.d.ts.map +1 -0
- package/dist/cli/session-picker-layout.js +123 -0
- package/dist/cli/session-picker-layout.js.map +1 -0
- package/dist/cli/session-picker-viewport.d.ts +49 -0
- package/dist/cli/session-picker-viewport.d.ts.map +1 -0
- package/dist/cli/session-picker-viewport.js +46 -0
- package/dist/cli/session-picker-viewport.js.map +1 -0
- package/dist/cli/supervisor-shutdown-client.d.ts +31 -0
- package/dist/cli/supervisor-shutdown-client.d.ts.map +1 -0
- package/dist/cli/supervisor-shutdown-client.js +146 -0
- package/dist/cli/supervisor-shutdown-client.js.map +1 -0
- package/dist/cli/terminal-width.d.ts +48 -0
- package/dist/cli/terminal-width.d.ts.map +1 -0
- package/dist/cli/terminal-width.js +119 -0
- package/dist/cli/terminal-width.js.map +1 -0
- package/dist/cli/vc-agent.d.ts.map +1 -1
- package/dist/cli/vc-agent.js +1 -1
- package/dist/cli/vc-agent.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2269 -716
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +1630 -125
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/ask-api.d.ts +8 -1
- package/dist/core/ask-api.d.ts.map +1 -1
- package/dist/core/ask-api.js +18 -0
- package/dist/core/ask-api.js.map +1 -1
- package/dist/core/ask-broker.d.ts +20 -0
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +467 -47
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/ask-persist-store.d.ts +126 -0
- package/dist/core/ask-persist-store.d.ts.map +1 -0
- package/dist/core/ask-persist-store.js +188 -0
- package/dist/core/ask-persist-store.js.map +1 -0
- package/dist/core/ask-types.d.ts +80 -0
- package/dist/core/ask-types.d.ts.map +1 -1
- package/dist/core/ask-types.js +62 -0
- package/dist/core/ask-types.js.map +1 -1
- package/dist/core/cli-session-id-publisher.d.ts +20 -0
- package/dist/core/cli-session-id-publisher.d.ts.map +1 -0
- package/dist/core/cli-session-id-publisher.js +21 -0
- package/dist/core/cli-session-id-publisher.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +427 -255
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +13 -0
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +385 -26
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +9 -0
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +842 -288
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/explicit-session-backing-cleanup.d.ts +49 -0
- package/dist/core/explicit-session-backing-cleanup.d.ts.map +1 -0
- package/dist/core/explicit-session-backing-cleanup.js +76 -0
- package/dist/core/explicit-session-backing-cleanup.js.map +1 -0
- package/dist/core/idle-worker-sweeper.d.ts +20 -0
- package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
- package/dist/core/idle-worker-sweeper.js +18 -0
- package/dist/core/idle-worker-sweeper.js.map +1 -1
- package/dist/core/inflight-input-tracker.d.ts +10 -0
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js +7 -0
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/managed-origin-attestation.d.ts +51 -0
- package/dist/core/managed-origin-attestation.d.ts.map +1 -0
- package/dist/core/managed-origin-attestation.js +208 -0
- package/dist/core/managed-origin-attestation.js.map +1 -0
- package/dist/core/managed-origin-capability.d.ts +62 -3
- package/dist/core/managed-origin-capability.d.ts.map +1 -1
- package/dist/core/managed-origin-capability.js +419 -9
- package/dist/core/managed-origin-capability.js.map +1 -1
- package/dist/core/pending-repo-journal.d.ts +6 -0
- package/dist/core/pending-repo-journal.d.ts.map +1 -0
- package/dist/core/pending-repo-journal.js +85 -0
- package/dist/core/pending-repo-journal.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +6 -1
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +12 -6
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/process-start-identity.d.ts +3 -0
- package/dist/core/process-start-identity.d.ts.map +1 -0
- package/dist/core/process-start-identity.js +62 -0
- package/dist/core/process-start-identity.js.map +1 -0
- package/dist/core/raw-command-writer.d.ts +34 -0
- package/dist/core/raw-command-writer.d.ts.map +1 -0
- package/dist/core/raw-command-writer.js +48 -0
- package/dist/core/raw-command-writer.js.map +1 -0
- package/dist/core/reply-target.d.ts +85 -22
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +267 -32
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/resource-monitor/runtime.d.ts.map +1 -1
- package/dist/core/resource-monitor/runtime.js +4 -1
- package/dist/core/resource-monitor/runtime.js.map +1 -1
- package/dist/core/restart-report.d.ts +6 -1
- package/dist/core/restart-report.d.ts.map +1 -1
- package/dist/core/restart-report.js +22 -4
- package/dist/core/restart-report.js.map +1 -1
- package/dist/core/riff-shutdown-detach.d.ts +164 -0
- package/dist/core/riff-shutdown-detach.d.ts.map +1 -0
- package/dist/core/riff-shutdown-detach.js +787 -0
- package/dist/core/riff-shutdown-detach.js.map +1 -0
- package/dist/core/riff-worker-shutdown-readiness.d.ts +17 -0
- package/dist/core/riff-worker-shutdown-readiness.d.ts.map +1 -0
- package/dist/core/riff-worker-shutdown-readiness.js +21 -0
- package/dist/core/riff-worker-shutdown-readiness.js.map +1 -0
- package/dist/core/session-manager.d.ts +6 -6
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1227 -594
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-marker.d.ts +1 -1
- package/dist/core/session-marker.d.ts.map +1 -1
- package/dist/core/session-marker.js +2 -2
- package/dist/core/session-marker.js.map +1 -1
- package/dist/core/session-mutation-guard.d.ts +17 -0
- package/dist/core/session-mutation-guard.d.ts.map +1 -0
- package/dist/core/session-mutation-guard.js +33 -0
- package/dist/core/session-mutation-guard.js.map +1 -0
- package/dist/core/shutdown-budgets.d.ts +27 -0
- package/dist/core/shutdown-budgets.d.ts.map +1 -0
- package/dist/core/shutdown-budgets.js +47 -0
- package/dist/core/shutdown-budgets.js.map +1 -0
- package/dist/core/supervisor-shutdown-ipc.d.ts +10 -0
- package/dist/core/supervisor-shutdown-ipc.d.ts.map +1 -0
- package/dist/core/supervisor-shutdown-ipc.js +10 -0
- package/dist/core/supervisor-shutdown-ipc.js.map +1 -0
- package/dist/core/supervisor-shutdown-protocol.d.ts +16 -0
- package/dist/core/supervisor-shutdown-protocol.d.ts.map +1 -0
- package/dist/core/supervisor-shutdown-protocol.js +16 -0
- package/dist/core/supervisor-shutdown-protocol.js.map +1 -0
- package/dist/core/trigger-final-suppression.d.ts +4 -0
- package/dist/core/trigger-final-suppression.d.ts.map +1 -1
- package/dist/core/trigger-final-suppression.js +6 -11
- package/dist/core/trigger-final-suppression.js.map +1 -1
- package/dist/core/trigger-session.d.ts +70 -0
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +923 -145
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +94 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +194 -13
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2597 -547
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +76 -2
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +2255 -773
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +20 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +24 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/feed-groups.d.ts +17 -0
- package/dist/dashboard/feed-groups.d.ts.map +1 -0
- package/dist/dashboard/feed-groups.js +75 -0
- package/dist/dashboard/feed-groups.js.map +1 -0
- package/dist/dashboard/session-card-model.d.ts +1 -1
- package/dist/dashboard/session-card-model.d.ts.map +1 -1
- package/dist/dashboard/session-card-model.js +8 -5
- package/dist/dashboard/session-card-model.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +4 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +139 -46
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +4 -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/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +40 -3
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +95 -2
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +86 -40
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/kanban-model.js +1 -1
- package/dist/dashboard/web/kanban-model.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +3 -2
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/overview.d.ts +3 -0
- package/dist/dashboard/web/overview.d.ts.map +1 -1
- package/dist/dashboard/web/overview.js +2 -0
- package/dist/dashboard/web/overview.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-kanban.js +2 -0
- 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 +103 -2
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +3 -2
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +8 -0
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +15 -0
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-GED4FEMS.js +10 -0
- package/dist/dashboard-web/chunks/chunk-6J5LS5AU.js +51 -0
- package/dist/dashboard-web/chunks/{chunk-ZU3UUKAR.js → chunk-HK7NIBJG.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-3UE7S77S.js → chunk-KRHWZEXU.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-VBXJOJFH.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-EELM66G3.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-WKUV6E42.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-T2ZX2RWL.js → insights-page-54UBPPOC.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-YNVBAGR6.js → monitor-room-PORHVKRH.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-LHM55YWN.js → monitoring-page-XGA7AXNL.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-ATXVP7PW.js → office-page-AO3AFG45.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-F5BUTYR6.js +1 -0
- package/dist/dashboard-web/chunks/{roles-page-56VWM6CD.js → roles-page-M5GIASJU.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-S5K6U4EO.js → schedules-page-O232WQRR.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-YFRPSTIL.js +6 -0
- package/dist/dashboard-web/chunks/{settings-page-QUZDQARR.js → settings-page-OJAZLZQT.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-IFY7AEND.js → skills-page-EFZQPWV4.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-C7FJQPFZ.js → team-federation-page-ZJVAP7HW.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-2LMF3WWR.js → v3-page-GYWTRGO2.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-3XC6QRMY.js → whiteboards-page-MSDAG6P7.js} +1 -1
- package/dist/dashboard-web/style.css +255 -0
- package/dist/dashboard.js +172 -7
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/renderer/app.js +21 -0
- package/dist/desktop/renderer/app.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +35 -9
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +35 -9
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/ask-card.d.ts +23 -0
- package/dist/im/lark/ask-card.d.ts.map +1 -1
- package/dist/im/lark/ask-card.js +94 -4
- package/dist/im/lark/ask-card.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +6 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +112 -15
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +496 -310
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +7 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +39 -26
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/doc-comment.d.ts +7 -4
- package/dist/im/lark/doc-comment.d.ts.map +1 -1
- package/dist/im/lark/doc-comment.js +19 -6
- package/dist/im/lark/doc-comment.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +16 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +88 -23
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/forward-followup-content.d.ts.map +1 -1
- package/dist/im/lark/forward-followup-content.js +9 -1
- package/dist/im/lark/forward-followup-content.js.map +1 -1
- package/dist/im/lark/grant-command.d.ts.map +1 -1
- package/dist/im/lark/grant-command.js +7 -4
- package/dist/im/lark/grant-command.js.map +1 -1
- package/dist/im/lark/md-card.d.ts +11 -0
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +46 -0
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts +23 -2
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +58 -3
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +2 -1
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +6 -1
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +21 -0
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +23 -1
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +96 -13
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/bridge-fallback-gate.d.ts +40 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +124 -24
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/codex-app-runner-protocol.d.ts +8 -0
- package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
- package/dist/services/codex-app-runner-protocol.js +9 -2
- package/dist/services/codex-app-runner-protocol.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +1 -0
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +1 -0
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-service-tier.d.ts +2 -0
- package/dist/services/codex-service-tier.d.ts.map +1 -1
- package/dist/services/codex-service-tier.js +1 -0
- package/dist/services/codex-service-tier.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +27 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +340 -2
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/grant-policy.d.ts +3 -0
- package/dist/services/grant-policy.d.ts.map +1 -1
- package/dist/services/grant-policy.js +5 -0
- package/dist/services/grant-policy.js.map +1 -1
- package/dist/services/grant-prefs-store.d.ts +6 -3
- package/dist/services/grant-prefs-store.d.ts.map +1 -1
- package/dist/services/grant-prefs-store.js +42 -12
- package/dist/services/grant-prefs-store.js.map +1 -1
- package/dist/services/hook-runner.d.ts +20 -1
- package/dist/services/hook-runner.d.ts.map +1 -1
- package/dist/services/hook-runner.js +17 -13
- package/dist/services/hook-runner.js.map +1 -1
- package/dist/services/idempotency-store.d.ts +134 -0
- package/dist/services/idempotency-store.d.ts.map +1 -0
- package/dist/services/idempotency-store.js +299 -0
- package/dist/services/idempotency-store.js.map +1 -0
- package/dist/services/jsonl-cursor.d.ts +7 -3
- package/dist/services/jsonl-cursor.d.ts.map +1 -1
- package/dist/services/jsonl-cursor.js +55 -31
- package/dist/services/jsonl-cursor.js.map +1 -1
- package/dist/services/open-platform-rename.d.ts.map +1 -1
- package/dist/services/open-platform-rename.js +1 -108
- package/dist/services/open-platform-rename.js.map +1 -1
- package/dist/services/restart-intent-store.d.ts +22 -2
- package/dist/services/restart-intent-store.d.ts.map +1 -1
- package/dist/services/restart-intent-store.js +160 -18
- package/dist/services/restart-intent-store.js.map +1 -1
- package/dist/services/sandbox-store.d.ts +22 -0
- package/dist/services/sandbox-store.d.ts.map +1 -1
- package/dist/services/sandbox-store.js +37 -8
- package/dist/services/sandbox-store.js.map +1 -1
- package/dist/services/send-policy.d.ts +41 -33
- package/dist/services/send-policy.d.ts.map +1 -1
- package/dist/services/send-policy.js +39 -40
- package/dist/services/send-policy.js.map +1 -1
- package/dist/services/session-store.d.ts +66 -0
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +403 -67
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/submit-notification.d.ts +3 -0
- package/dist/services/submit-notification.d.ts.map +1 -0
- package/dist/services/submit-notification.js +15 -0
- package/dist/services/submit-notification.js.map +1 -0
- package/dist/services/traex-transcript.d.ts +25 -2
- package/dist/services/traex-transcript.d.ts.map +1 -1
- package/dist/services/traex-transcript.js +133 -1
- package/dist/services/traex-transcript.js.map +1 -1
- package/dist/services/trigger-types.d.ts +13 -1
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +39 -0
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/voice/index.d.ts +3 -2
- package/dist/services/voice/index.d.ts.map +1 -1
- package/dist/services/voice/index.js +5 -5
- package/dist/services/voice/index.js.map +1 -1
- package/dist/services/voice/openai.d.ts +2 -1
- package/dist/services/voice/openai.d.ts.map +1 -1
- package/dist/services/voice/openai.js +2 -1
- package/dist/services/voice/openai.js.map +1 -1
- package/dist/services/voice/sami.d.ts +5 -2
- package/dist/services/voice/sami.d.ts.map +1 -1
- package/dist/services/voice/sami.js +19 -4
- package/dist/services/voice/sami.js.map +1 -1
- package/dist/setup/bots-store.d.ts.map +1 -1
- package/dist/setup/bots-store.js +10 -4
- package/dist/setup/bots-store.js.map +1 -1
- package/dist/setup/lark-scopes.json +2 -0
- package/dist/setup/open-platform-automation.d.ts +9 -1
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +44 -15
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/open-platform-visibility.d.ts +42 -0
- package/dist/setup/open-platform-visibility.d.ts.map +1 -0
- package/dist/setup/open-platform-visibility.js +133 -0
- package/dist/setup/open-platform-visibility.js.map +1 -0
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +6 -0
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/skills/definitions.js +2 -2
- package/dist/types.d.ts +290 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/bot-routing.d.ts +1 -0
- package/dist/utils/bot-routing.d.ts.map +1 -1
- package/dist/utils/bot-routing.js +1 -1
- package/dist/utils/bot-routing.js.map +1 -1
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +9 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/codex-app-control.d.ts +438 -0
- package/dist/utils/codex-app-control.d.ts.map +1 -0
- package/dist/utils/codex-app-control.js +2336 -0
- package/dist/utils/codex-app-control.js.map +1 -0
- package/dist/utils/codex-app-dispatch-ledger.d.ts +78 -0
- package/dist/utils/codex-app-dispatch-ledger.d.ts.map +1 -0
- package/dist/utils/codex-app-dispatch-ledger.js +149 -0
- package/dist/utils/codex-app-dispatch-ledger.js.map +1 -0
- package/dist/utils/codex-app-turn-dispatch.d.ts +77 -0
- package/dist/utils/codex-app-turn-dispatch.d.ts.map +1 -0
- package/dist/utils/codex-app-turn-dispatch.js +141 -0
- package/dist/utils/codex-app-turn-dispatch.js.map +1 -0
- package/dist/utils/codex-app-turn-liveness.d.ts +125 -0
- package/dist/utils/codex-app-turn-liveness.d.ts.map +1 -0
- package/dist/utils/codex-app-turn-liveness.js +301 -0
- package/dist/utils/codex-app-turn-liveness.js.map +1 -0
- package/dist/utils/idle-detector.d.ts +12 -0
- package/dist/utils/idle-detector.d.ts.map +1 -1
- package/dist/utils/idle-detector.js +19 -0
- package/dist/utils/idle-detector.js.map +1 -1
- package/dist/utils/input-gate.d.ts +87 -0
- package/dist/utils/input-gate.d.ts.map +1 -1
- package/dist/utils/input-gate.js +86 -0
- package/dist/utils/input-gate.js.map +1 -1
- package/dist/utils/lark-upload.d.ts.map +1 -1
- package/dist/utils/lark-upload.js +52 -1
- package/dist/utils/lark-upload.js.map +1 -1
- package/dist/utils/pending-input-queue.d.ts +15 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +5 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +53 -2
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker-ipc-preload.d.ts +12 -0
- package/dist/worker-ipc-preload.d.ts.map +1 -0
- package/dist/worker-ipc-preload.js +44 -0
- package/dist/worker-ipc-preload.js.map +1 -0
- package/dist/worker.js +2604 -325
- package/dist/worker.js.map +1 -1
- package/dist/workflows/v3/session-relay-client.d.ts +1 -0
- package/dist/workflows/v3/session-relay-client.d.ts.map +1 -1
- package/dist/workflows/v3/session-relay-client.js +12 -3
- package/dist/workflows/v3/session-relay-client.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-LTVOUDIS.js +0 -10
- package/dist/dashboard-web/chunks/chunk-DCS35UMD.js +0 -1
- package/dist/dashboard-web/chunks/chunk-MFQPCVHY.js +0 -51
- package/dist/dashboard-web/chunks/connectors-page-5KWDIMKC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-FHOKYXMW.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-QYI3KBDD.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-WBP4N7D2.js +0 -6
|
@@ -1,35 +1,159 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
/** Merge participants by open_id, keeping the richest label (a later entry can
|
|
2
|
+
* fill a missing name / promote isBot). Order-stable on first appearance so a
|
|
3
|
+
* candidate list reads in arrival order. */
|
|
4
|
+
export function dedupeParticipants(list) {
|
|
5
|
+
const byId = new Map();
|
|
6
|
+
for (const p of list) {
|
|
7
|
+
if (!p?.openId)
|
|
8
|
+
continue;
|
|
9
|
+
const prev = byId.get(p.openId);
|
|
10
|
+
if (!prev) {
|
|
11
|
+
byId.set(p.openId, { openId: p.openId, ...(p.name ? { name: p.name } : {}), ...(p.isBot !== undefined ? { isBot: p.isBot } : {}) });
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (!prev.name && p.name)
|
|
15
|
+
prev.name = p.name;
|
|
16
|
+
if (prev.isBot === undefined && p.isBot !== undefined)
|
|
17
|
+
prev.isBot = p.isBot;
|
|
18
|
+
if (p.isBot === true)
|
|
19
|
+
prev.isBot = true; // a bot signal from any message wins
|
|
20
|
+
}
|
|
21
|
+
return [...byId.values()];
|
|
22
|
+
}
|
|
23
|
+
/** Pure core of a message's turn-window contribution (daemon wraps it with live
|
|
24
|
+
* deps). Its sender plus everyone it @-mentioned, excluding the answering bot
|
|
25
|
+
* (by `selfOpenId` OR `selfAppId` — a self @ often arrives in app_id form, so
|
|
26
|
+
* open_id alone would miss it and wrongly mark a plain 1v1 incomplete).
|
|
27
|
+
* `participants` holds ONLY executable receiver-scoped open_id candidates (so
|
|
28
|
+
* `botmux send` can hand them back as `--mention <open_id>`), each labelled bot
|
|
29
|
+
* (`isMentionBot` proves a known peer, or sender is a platform-stamped bot) /
|
|
30
|
+
* unknown (NOT provably human — `isMentionBot=false` does not prove a person; a
|
|
31
|
+
* third-party bot isn't in the cross-ref). Returns `incomplete: true` when a
|
|
32
|
+
* real, NON-self @-mention could not be reduced to a usable open_id (app_id /
|
|
33
|
+
* user_id / union_id form — parser leaves `openId` undefined): that counterpart
|
|
34
|
+
* is NOT listed as a candidate but forces the window ambiguous so the gate
|
|
35
|
+
* demands an explicit decision rather than risk a wrong single-target @. Sender
|
|
36
|
+
* name is best-effort — omitted when unknown. */
|
|
37
|
+
export function buildTurnParticipantsFrom(sender, mentions, selfOpenId, isMentionBot, selfAppId) {
|
|
38
|
+
const out = [];
|
|
39
|
+
let incomplete = false;
|
|
40
|
+
// A candidate open_id must be a real receiver-scoped user/bot id (`ou_`).
|
|
41
|
+
// Pseudo-ids like `all` (structured `{open_id:'all'}` OR post inline
|
|
42
|
+
// `user_id:'all'`) and any non-`ou_` shape are NOT executable `--mention`
|
|
43
|
+
// targets — never list them; mark the window incomplete instead. One check
|
|
44
|
+
// here covers BOTH the text (structured mentions) and post-at lanes.
|
|
45
|
+
const isExecutableOpenId = (id) => !!id && id.startsWith('ou_');
|
|
46
|
+
if (isExecutableOpenId(sender.openId)) {
|
|
47
|
+
if (sender.openId !== selfOpenId) {
|
|
48
|
+
out.push({
|
|
49
|
+
openId: sender.openId,
|
|
50
|
+
...(sender.name ? { name: sender.name } : {}),
|
|
51
|
+
...(sender.isBot !== undefined ? { isBot: sender.isBot } : {}),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// A real inbound message whose sender has no executable open_id (e.g. an
|
|
57
|
+
// app_id-only bot sender routed via realtime/message-listener). The sender
|
|
58
|
+
// is never the answering bot, so it is an unaccountable counterpart.
|
|
59
|
+
incomplete = true;
|
|
60
|
+
}
|
|
61
|
+
for (const m of mentions ?? []) {
|
|
62
|
+
// The answering bot itself — matched by open_id OR app_id (a self @ frequently
|
|
63
|
+
// arrives as an app_id-form mention with no open_id).
|
|
64
|
+
if (m.openId && m.openId === selfOpenId)
|
|
65
|
+
continue;
|
|
66
|
+
if (selfAppId && m.appId === selfAppId)
|
|
67
|
+
continue;
|
|
68
|
+
if (!isExecutableOpenId(m.openId)) {
|
|
69
|
+
// A NON-self @ we can't reduce to a `--mention <open_id>` candidate: an
|
|
70
|
+
// app_id / user_id / union_id-form @ (openId undefined), `all`, or any
|
|
71
|
+
// other pseudo-id. Don't fake it into the candidate list; mark the window
|
|
72
|
+
// incomplete so the gate fails toward an explicit decision.
|
|
73
|
+
incomplete = true;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
out.push({
|
|
77
|
+
openId: m.openId,
|
|
78
|
+
...(m.name ? { name: m.name } : {}),
|
|
79
|
+
...(isMentionBot(m.openId) ? { isBot: true } : {}),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return { participants: out, incomplete };
|
|
83
|
+
}
|
|
84
|
+
/** Bound on `Session.replyTargets`: long-lived sessions could otherwise grow
|
|
85
|
+
* without limit. An evicted turn may use a legacy slot only when its turnId
|
|
86
|
+
* still matches exactly; it never borrows a later turn's sender. */
|
|
87
|
+
export const REPLY_TARGETS_MAX = 32;
|
|
88
|
+
/** Prune `targets` down to REPLY_TARGETS_MAX oldest-first, IN PLACE, and return
|
|
89
|
+
* the new prune high-water mark = max(existing watermark, latest `updatedAt`
|
|
90
|
+
* among the entries actually evicted). Both replyTargets writers
|
|
91
|
+
* (beginReplyTargetTurn + trigger-final-suppression's inheritTriggerReplyAnchor)
|
|
92
|
+
* MUST route eviction through here so a pruned sibling can never silently
|
|
93
|
+
* under-count a turn's participant window — `botmux send` compares the returned
|
|
94
|
+
* watermark against the turn window to decide incompleteness. */
|
|
95
|
+
export function pruneReplyTargets(targets, prevPrunedThrough) {
|
|
96
|
+
const keys = Object.keys(targets);
|
|
97
|
+
if (keys.length <= REPLY_TARGETS_MAX)
|
|
98
|
+
return prevPrunedThrough;
|
|
99
|
+
const evict = keys
|
|
100
|
+
.sort((a, b) => (targets[a].updatedAt < targets[b].updatedAt ? -1 : 1))
|
|
101
|
+
.slice(0, keys.length - REPLY_TARGETS_MAX);
|
|
102
|
+
let watermark = prevPrunedThrough;
|
|
103
|
+
for (const k of evict) {
|
|
104
|
+
const ts = targets[k].updatedAt;
|
|
105
|
+
if (!watermark || watermark < ts)
|
|
106
|
+
watermark = ts;
|
|
107
|
+
delete targets[k];
|
|
108
|
+
}
|
|
109
|
+
return watermark;
|
|
110
|
+
}
|
|
111
|
+
/** Reply context for one exact turn. The per-turn entry is authoritative. Old
|
|
112
|
+
* persisted sessions may fall back to the single slots only when those slots
|
|
113
|
+
* explicitly identify the requested turn. */
|
|
10
114
|
export function pickTurnReplyTarget(s, currentTurnId) {
|
|
11
115
|
if (currentTurnId) {
|
|
12
116
|
const entry = s.replyTargets?.[currentTurnId];
|
|
13
|
-
|
|
14
|
-
|
|
117
|
+
// Legacy single-slot sender is trusted only when it explicitly names THIS
|
|
118
|
+
// turn (quoteTargetId === currentTurnId), so it never borrows a later
|
|
119
|
+
// turn's attribution.
|
|
120
|
+
const legacySender = s.quoteTargetId === currentTurnId
|
|
121
|
+
? s.quoteTargetSenderOpenId
|
|
122
|
+
: undefined;
|
|
123
|
+
if (entry) {
|
|
124
|
+
const senderOpenId = entry.senderOpenId ?? legacySender;
|
|
125
|
+
return { ...entry, turnId: currentTurnId, ...(senderOpenId ? { senderOpenId } : {}) };
|
|
15
126
|
}
|
|
127
|
+
const slot = s.currentReplyTarget?.turnId === currentTurnId
|
|
128
|
+
? s.currentReplyTarget
|
|
129
|
+
: undefined;
|
|
130
|
+
if (slot || legacySender) {
|
|
131
|
+
return { ...slot, turnId: currentTurnId, ...(legacySender ? { senderOpenId: legacySender } : {}) };
|
|
132
|
+
}
|
|
133
|
+
return undefined;
|
|
16
134
|
}
|
|
17
135
|
return s.currentReplyTarget;
|
|
18
136
|
}
|
|
19
|
-
/** Whether `turnId` is a substitute
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
137
|
+
/** Whether `turnId` is a chat-scope substitute turn that disables the
|
|
138
|
+
* streaming card. Thread-scope substitute turns keep their normal card. With
|
|
139
|
+
* no turn context, falls back to the latest-accepted chat turn's flag; callers
|
|
140
|
+
* with a turnId get an exact per-turn answer so queued normal/substitute turns
|
|
141
|
+
* cannot inherit each other's card state. */
|
|
23
142
|
export function isSubstituteTurn(ds, turnId) {
|
|
143
|
+
// Substitute (avatar-style) turns are a chat-scope-only concept: topic-group
|
|
144
|
+
// substitute sessions are thread-scope and keep their normal streaming card.
|
|
145
|
+
// Defense-in-depth alongside beginReplyTargetTurn NOT persisting the flag for
|
|
146
|
+
// thread scope — a thread-scope session is never card-off via this path.
|
|
147
|
+
if (ds.scope !== 'chat')
|
|
148
|
+
return false;
|
|
24
149
|
const slot = ds.currentReplyTarget ?? ds.session.currentReplyTarget;
|
|
25
150
|
if (turnId) {
|
|
26
151
|
const entry = ds.session.replyTargets?.[turnId];
|
|
27
152
|
if (entry)
|
|
28
153
|
return entry.substitute === true;
|
|
29
154
|
// With explicit turn context, the single slot only speaks for ITS OWN
|
|
30
|
-
// turn.
|
|
31
|
-
// slot
|
|
32
|
-
// turn overwrote the slot (and vice versa).
|
|
155
|
+
// turn. It must not inherit a later turn's flag after that turn overwrote
|
|
156
|
+
// the slot (and vice versa).
|
|
33
157
|
return !!slot && slot.turnId === turnId && slot.substitute === true;
|
|
34
158
|
}
|
|
35
159
|
return slot?.substitute === true;
|
|
@@ -70,6 +194,60 @@ export function resolveSendTarget(opts) {
|
|
|
70
194
|
return { mode: 'thread', rootMessageId: opts.rootMessageId };
|
|
71
195
|
}
|
|
72
196
|
export function beginReplyTargetTurn(ds, replyRootId, turnId, nowIso = new Date().toISOString(), opts) {
|
|
197
|
+
// #597: the frozen per-turn dispatch context — the authoritative reply target
|
|
198
|
+
// for THIS turn's Codex App dispatch (steer/queued/opening). Independent of the
|
|
199
|
+
// mention-back participant record below; both are written per turn.
|
|
200
|
+
const exactTarget = ds.scope === 'chat'
|
|
201
|
+
? replyRootId
|
|
202
|
+
? opts?.quoteOnly
|
|
203
|
+
? { mode: 'quote', rootMessageId: replyRootId }
|
|
204
|
+
: { mode: 'thread', rootMessageId: replyRootId }
|
|
205
|
+
: { mode: 'plain', chatId: ds.chatId }
|
|
206
|
+
: { mode: 'thread', rootMessageId: ds.session.rootMessageId };
|
|
207
|
+
const exactContexts = { ...(ds.session.turnReplyContexts ?? {}) };
|
|
208
|
+
// Re-insertion keeps the newest turn at the end for deterministic bounding.
|
|
209
|
+
delete exactContexts[turnId];
|
|
210
|
+
exactContexts[turnId] = {
|
|
211
|
+
target: exactTarget,
|
|
212
|
+
...(ds.session.quoteTargetId ? { quoteTargetId: ds.session.quoteTargetId } : {}),
|
|
213
|
+
...(ds.session.quoteTargetSenderOpenId
|
|
214
|
+
? { replyTargetSenderOpenId: ds.session.quoteTargetSenderOpenId }
|
|
215
|
+
: {}),
|
|
216
|
+
...(ds.session.quoteTargetSenderIsBot !== undefined
|
|
217
|
+
? { replyTargetSenderIsBot: ds.session.quoteTargetSenderIsBot }
|
|
218
|
+
: {}),
|
|
219
|
+
};
|
|
220
|
+
const overflow = Object.keys(exactContexts).length - 256;
|
|
221
|
+
if (overflow > 0) {
|
|
222
|
+
for (const staleTurnId of Object.keys(exactContexts).slice(0, overflow)) {
|
|
223
|
+
delete exactContexts[staleTurnId];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
ds.session.turnReplyContexts = exactContexts;
|
|
227
|
+
// #750: routing and sender are one atomic per-turn record. Thread-scope and
|
|
228
|
+
// rootless chat turns may have no rootMessageId, but still require their
|
|
229
|
+
// exact sender for --mention-back. Sender attribution (senderOpenId) and the
|
|
230
|
+
// turn-window participant set are written in ANY scope — bot→bot handoff
|
|
231
|
+
// happens in threads too. Everything else is chat-scope-only: quoteOnly/
|
|
232
|
+
// substitute are chat-scope semantics (topic-group substitute keeps its
|
|
233
|
+
// normal card; footer substitute addressing only applies to the shared
|
|
234
|
+
// chat-scope session), and a thread-scope turn routes off
|
|
235
|
+
// session.rootMessageId, never a per-turn root. So a thread entry carries
|
|
236
|
+
// ONLY sender attribution + participants + updatedAt — no chat routing
|
|
237
|
+
// metadata can leak in, or readers (isSubstituteTurn, footer isSubstitute)
|
|
238
|
+
// would misread it.
|
|
239
|
+
const isChatScope = ds.scope === 'chat';
|
|
240
|
+
const targets = { ...(ds.session.replyTargets ?? {}) };
|
|
241
|
+
targets[turnId] = {
|
|
242
|
+
...(isChatScope && replyRootId ? { rootMessageId: replyRootId } : {}),
|
|
243
|
+
updatedAt: nowIso,
|
|
244
|
+
...(isChatScope ? { quoteOnly: opts?.quoteOnly, substitute: opts?.substitute } : {}),
|
|
245
|
+
...(opts?.senderOpenId ? { senderOpenId: opts.senderOpenId } : {}),
|
|
246
|
+
...(opts?.participants?.length ? { participants: dedupeParticipants(opts.participants) } : {}),
|
|
247
|
+
...(opts?.participantsIncomplete ? { participantsIncomplete: true } : {}),
|
|
248
|
+
};
|
|
249
|
+
ds.session.replyTargetsPrunedThrough = pruneReplyTargets(targets, ds.session.replyTargetsPrunedThrough);
|
|
250
|
+
ds.session.replyTargets = targets;
|
|
73
251
|
if (ds.scope !== 'chat')
|
|
74
252
|
return;
|
|
75
253
|
if (replyRootId) {
|
|
@@ -83,25 +261,82 @@ export function beginReplyTargetTurn(ds, replyRootId, turnId, nowIso = new Date(
|
|
|
83
261
|
ds.currentReplyTarget = target;
|
|
84
262
|
ds.session.replyThreadAliases = aliases;
|
|
85
263
|
ds.session.currentReplyTarget = target;
|
|
86
|
-
// Per-turn map alongside the single slot: a later turn's begin no longer
|
|
87
|
-
// strands this turn's anchor (session-only field — persisted by the
|
|
88
|
-
// sessionStore.updateSession the daemon calls right after every begin,
|
|
89
|
-
// same lifecycle as docCommentTargets).
|
|
90
|
-
const targets = { ...(ds.session.replyTargets ?? {}) };
|
|
91
|
-
targets[turnId] = { rootMessageId: replyRootId, updatedAt: nowIso, quoteOnly: opts?.quoteOnly, substitute: opts?.substitute };
|
|
92
|
-
const keys = Object.keys(targets);
|
|
93
|
-
if (keys.length > REPLY_TARGETS_MAX) {
|
|
94
|
-
keys
|
|
95
|
-
.sort((a, b) => (targets[a].updatedAt < targets[b].updatedAt ? -1 : 1))
|
|
96
|
-
.slice(0, keys.length - REPLY_TARGETS_MAX)
|
|
97
|
-
.forEach(k => { delete targets[k]; });
|
|
98
|
-
}
|
|
99
|
-
ds.session.replyTargets = targets;
|
|
100
264
|
return;
|
|
101
265
|
}
|
|
102
266
|
ds.currentReplyTarget = undefined;
|
|
103
267
|
ds.session.currentReplyTarget = undefined;
|
|
104
268
|
}
|
|
269
|
+
/** Resolve a turn's immutable inbound destination, falling back only for
|
|
270
|
+
* legacy/non-Lark turns that predate the bounded registry. */
|
|
271
|
+
export function frozenReplyContextForTurn(ds, turnId) {
|
|
272
|
+
const frozen = turnId ? ds.session.turnReplyContexts?.[turnId] : undefined;
|
|
273
|
+
return frozen ?? { target: resolveSessionReplyTarget(ds, turnId) };
|
|
274
|
+
}
|
|
275
|
+
/** Window within which sibling turn records are treated as the SAME turn for
|
|
276
|
+
* --mention-back ambiguity. Type-ahead follow-ups each land as their own
|
|
277
|
+
* per-turn record (distinct message_id), and the model may resolve
|
|
278
|
+
* BOTMUX_TURN_ID to whichever was processed last — so `botmux send` unions the
|
|
279
|
+
* participants of every record updated within this window of the resolved
|
|
280
|
+
* turn. Deliberate conservative approximation: uncertainty (an incomplete
|
|
281
|
+
* window, a pruned sibling, no window at all) fails toward explicit addressing,
|
|
282
|
+
* and erring wide can only over-suggest an explicit --mention, never wrongly
|
|
283
|
+
* auto-@ the wrong single counterpart. 90s comfortably spans a busy CLI batch
|
|
284
|
+
* while not bleeding into an unrelated later conversation. */
|
|
285
|
+
export const TURN_WINDOW_MS = 90_000;
|
|
286
|
+
/** The turn-window counterpart set for `currentTurnId`: the resolved turn's own
|
|
287
|
+
* participants unioned with those of any sibling turn record updated within
|
|
288
|
+
* TURN_WINDOW_MS (covers type-ahead follow-ups that folded into this model
|
|
289
|
+
* turn under different message_ids). `incomplete` is set when the set can't be
|
|
290
|
+
* proven complete — no anchor, a window record self-marked incomplete
|
|
291
|
+
* (unresolved @), or the prune watermark reaches into the window (a pruned
|
|
292
|
+
* sibling may have carried an unseen counterpart). */
|
|
293
|
+
export function collectTurnWindowParticipants(s, currentTurnId) {
|
|
294
|
+
const map = s.replyTargets;
|
|
295
|
+
if (!map || !currentTurnId)
|
|
296
|
+
return { participants: [], incomplete: true };
|
|
297
|
+
const anchor = map[currentTurnId];
|
|
298
|
+
// No anchor record → we cannot bound the turn; a sender may still resolve from
|
|
299
|
+
// legacy slots, so the caller must treat this as ambiguous (fail toward
|
|
300
|
+
// explicit) rather than assume a lone counterpart.
|
|
301
|
+
if (!anchor)
|
|
302
|
+
return { participants: [], incomplete: true };
|
|
303
|
+
const anchorMs = Date.parse(anchor.updatedAt);
|
|
304
|
+
const collected = [];
|
|
305
|
+
let incomplete = false;
|
|
306
|
+
const windowLo = Number.isNaN(anchorMs) ? NaN : anchorMs - TURN_WINDOW_MS;
|
|
307
|
+
for (const entry of Object.values(map)) {
|
|
308
|
+
const ms = Date.parse(entry.updatedAt);
|
|
309
|
+
// In-window if within ±TURN_WINDOW_MS of the anchor (a follow-up may be
|
|
310
|
+
// stamped slightly before or after). Unparseable timestamps count as in.
|
|
311
|
+
const inWindow = Number.isNaN(ms) || Number.isNaN(anchorMs) || Math.abs(ms - anchorMs) <= TURN_WINDOW_MS;
|
|
312
|
+
if (!inWindow)
|
|
313
|
+
continue;
|
|
314
|
+
if (entry.participants) {
|
|
315
|
+
collected.push(...entry.participants);
|
|
316
|
+
if (entry.participantsIncomplete)
|
|
317
|
+
incomplete = true;
|
|
318
|
+
}
|
|
319
|
+
else if (entry.senderOpenId) {
|
|
320
|
+
// Pre-upgrade record (persisted before the participant set existed): it
|
|
321
|
+
// knows its sender but never recorded mentions. Surface the sender as a
|
|
322
|
+
// best-effort candidate AND mark incomplete — a hidden @-ed counterpart
|
|
323
|
+
// may exist, so the gate must still fail toward an explicit decision.
|
|
324
|
+
collected.push({ openId: entry.senderOpenId });
|
|
325
|
+
incomplete = true;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
// A window record with neither participants nor a sender we can name still
|
|
329
|
+
// represents an in-flight turn we cannot fully account for.
|
|
330
|
+
incomplete = true;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// A prune whose watermark reaches into this window means an evicted sibling
|
|
334
|
+
// could have carried a counterpart we can no longer see → under-count risk.
|
|
335
|
+
const prunedMs = s.replyTargetsPrunedThrough ? Date.parse(s.replyTargetsPrunedThrough) : NaN;
|
|
336
|
+
if (!Number.isNaN(prunedMs) && (Number.isNaN(windowLo) || prunedMs >= windowLo))
|
|
337
|
+
incomplete = true;
|
|
338
|
+
return { participants: dedupeParticipants(collected), incomplete };
|
|
339
|
+
}
|
|
105
340
|
/**
|
|
106
341
|
* Effective turnId for a daemon-side message. Callers that know their turn
|
|
107
342
|
* (worker final_output, placeholder cards) pass it explicitly and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reply-target.js","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reply-target.js","sourceRoot":"","sources":["../../src/core/reply-target.ts"],"names":[],"mappings":"AAGA;;6CAE6C;AAC7C,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,EAAE,MAAM;YAAE,SAAS;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7J,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC5E,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,qCAAqC;IAChF,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;kDAakD;AAClD,MAAM,UAAU,yBAAyB,CACvC,MAA2D,EAC3D,QAAmC,EACnC,UAA8B,EAC9B,YAAyC,EACzC,SAAkB;IAElB,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,0EAA0E;IAC1E,qEAAqE;IACrE,0EAA0E;IAC1E,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,kBAAkB,GAAG,CAAC,EAAsB,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,2EAA2E;QAC3E,qEAAqE;QACrE,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC/B,+EAA+E;QAC/E,sDAAsD;QACtD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS;QAClD,IAAI,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACjD,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,wEAAwE;YACxE,uEAAuE;YACvE,0EAA0E;YAC1E,4DAA4D;YAC5D,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC3C,CAAC;AAOD;;oEAEoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;;;;;kEAMkE;AAClE,MAAM,UAAU,iBAAiB,CAC/B,OAAyC,EACzC,iBAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI;SACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,iBAAiB,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,EAAE;YAAE,SAAS,GAAG,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD;;6CAE6C;AAC7C,MAAM,UAAU,mBAAmB,CACjC,CAAqG,EACrG,aAAiC;IAEjC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,CAAC;QAC9C,0EAA0E;QAC1E,sEAAsE;QACtE,sBAAsB;QACtB,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,KAAK,aAAa;YACpD,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC3B,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,YAAY,CAAC;YACxD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,KAAK,aAAa;YACzD,CAAC,CAAC,CAAC,CAAC,kBAAkB;YACtB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,CAAC,kBAAkB,CAAC;AAC9B,CAAC;AAED;;;;6CAI6C;AAC7C,MAAM,UAAU,gBAAgB,CAC9B,EAAmE,EACnE,MAAe;IAEf,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACpE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;QAC5C,sEAAsE;QACtE,0EAA0E;QAC1E,6BAA6B;QAC7B,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,EAA8E,EAC9E,MAAe;IAEf,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACxB,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,SAAS,EAAE,aAAa,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,SAAS;gBACxB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;gBAC3D,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACtE,IAAI,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClE,OAAO,MAAM,CAAC,SAAS;gBACrB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;gBACxD,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAUjC;IACC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACtG,OAAO,IAAI,CAAC,oBAAoB;gBAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBAC1D,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,EAAiB,EACjB,WAA+B,EAC/B,MAAc,EACd,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACjC,IAA+I;IAE/I,8EAA8E;IAC9E,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,WAAW,GAAuB,EAAE,CAAC,KAAK,KAAK,MAAM;QACzD,CAAC,CAAC,WAAW;YACX,CAAC,CAAC,IAAI,EAAE,SAAS;gBACf,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE;gBAC/C,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE;YAClD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;QACxC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE,CAAC;IAClE,4EAA4E;IAC5E,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,CAAC,MAAM,CAAC,GAAG;QACtB,MAAM,EAAE,WAAW;QACnB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,uBAAuB;YACpC,CAAC,CAAC,EAAE,uBAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;YACjD,CAAC,CAAC,EAAE,sBAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;IACzD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxE,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,aAAa,CAAC;IAC7C,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,0DAA0D;IAC1D,0EAA0E;IAC1E,uEAAuE;IACvE,2EAA2E;IAC3E,oBAAoB;IACpB,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC;IACxC,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,GAAG;QAChB,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,SAAS,EAAE,MAAM;QACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;IACF,EAAE,CAAC,OAAO,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxG,EAAE,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;IAElC,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO;IAChC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,WAAW,CAAC,GAAG;YACrB,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM;YACpD,UAAU,EAAE,MAAM;SACnB,CAAC;QACF,MAAM,MAAM,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACnI,EAAE,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAChC,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAC/B,EAAE,CAAC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC;QACxC,EAAE,CAAC,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACvC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAClC,EAAE,CAAC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;AAC5C,CAAC;AAED;8DAC8D;AAC9D,MAAM,UAAU,yBAAyB,CACvC,EAA8E,EAC9E,MAAe;IAEf,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,OAAO,MAAM,IAAI,EAAE,MAAM,EAAE,yBAAyB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;;;+DAS+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAWrC;;;;;;uDAMuD;AACvD,MAAM,UAAU,6BAA6B,CAC3C,CAA8D,EAC9D,aAAiC;IAEjC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,+EAA+E;IAC/E,wEAAwE;IACxE,mDAAmD;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,cAAc,CAAC;IAC1E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,wEAAwE;QACxE,yEAAyE;QACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,cAAc,CAAC;QACzG,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,sBAAsB;gBAAE,UAAU,GAAG,IAAI,CAAC;QACtD,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC9B,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,sEAAsE;YACtE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/C,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,2EAA2E;YAC3E,4DAA4D;YAC5D,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC;QAAE,UAAU,GAAG,IAAI,CAAC;IACnG,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;AACrE,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAyD,EACzD,MAA0B;IAE1B,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAiB,EAAE,CAAW;IACjE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC;IAC/B,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAClD,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/core/resource-monitor/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/core/resource-monitor/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AASD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,gBAAgB,CAAC,GAAG,oBAAoB,CAO1H;AAoCD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC,GAAG,qBAAqB,CAyCxB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
// `stalled` means no observable progress, not completion: the CLI/model/tool
|
|
2
|
+
// may still be executing. Keep it in active runtime pressure rather than
|
|
3
|
+
// misclassifying it as idle, human-waiting, or unknown.
|
|
4
|
+
const WORKING_STATUSES = new Set(['working', 'analyzing', 'active', 'stalled']);
|
|
2
5
|
const STARTING_STATUSES = new Set(['starting', 'queued']);
|
|
3
6
|
const IDLE_STATUSES = new Set(['idle', 'dormant']);
|
|
4
7
|
export function sessionRuntimeBucket(session) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/resource-monitor/runtime.ts"],"names":[],"mappings":"AAyBA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/resource-monitor/runtime.ts"],"names":[],"mappings":"AAyBA,6EAA6E;AAC7E,yEAAyE;AACzE,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAAC,OAA+D;IAClG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IACrD,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,OAA4B,EAAE,UAAkB;IAClE,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,QAA+B,EAAE,KAAa;IACpE,IAAI,IAAmC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS;QACpD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,GAAG,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,QAA+B,EAAE,KAAa;IACpE,IAAI,IAAmC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,oBAAoB,CAAC,OAAO,CAAC,KAAK,SAAS;YAAE,SAAS;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS;QACpD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,GAAG,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAO1C;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5F,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACF,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,YAAY,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEhF,OAAO;QACL,YAAY,EAAE;YACZ,MAAM,EAAE,YAAY;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B;QACD,OAAO,EAAE;YACP,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;YACxB,MAAM;YACN,OAAO;SACR;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;YAC5B,GAAG,OAAO;YACV,YAAY;YACZ,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;YAC3D,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;SAC5D;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -43,8 +43,13 @@ export interface RestartReportWiring {
|
|
|
43
43
|
/** Send the interactive card as a p2p DM to the owner. */
|
|
44
44
|
sendCard: (openId: string, cardJson: string) => Promise<void>;
|
|
45
45
|
githubAuth?: GithubAuthResolveOptions;
|
|
46
|
-
|
|
46
|
+
/** Injectable clock for deterministic tests. */
|
|
47
|
+
now?: number | (() => number);
|
|
47
48
|
log?: (msg: string) => void;
|
|
49
|
+
wait?: (ms: number) => Promise<void>;
|
|
50
|
+
/** Optional caller/test ceiling. Production leaves this unset so a durable
|
|
51
|
+
* prepared intent is followed until it commits, aborts, or becomes stale. */
|
|
52
|
+
preparedCommitWaitMs?: number;
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
50
55
|
* If an intentional-restart breadcrumb is pending, DM the owner a restart
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart-report.d.ts","sourceRoot":"","sources":["../../src/core/restart-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAIvE,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;4BAEwB;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wEAAwE;AACxE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBzF;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CASzF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;kCAC8B;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"restart-report.d.ts","sourceRoot":"","sources":["../../src/core/restart-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAIvE,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;4BAEwB;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wEAAwE;AACxE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBzF;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CASzF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;kCAC8B;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC;kFAC8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CtF;AAED;8EAC8E;AAC9E,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,wBAAwB,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACvF,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* daemon startup wiring.
|
|
8
8
|
*/
|
|
9
9
|
import { githubAuthHeaders } from './github-auth.js';
|
|
10
|
-
import {
|
|
10
|
+
import { claimRestartIntentForReport } from '../services/restart-intent-store.js';
|
|
11
11
|
import { countActiveSessionsOnDisk } from '../services/session-store.js';
|
|
12
12
|
import { botmuxVersion } from '../utils/install-info.js';
|
|
13
13
|
import { t, localeForBot } from '../i18n/index.js';
|
|
@@ -63,9 +63,27 @@ export function releasesUrl(version) {
|
|
|
63
63
|
*/
|
|
64
64
|
export async function sendRestartReportIfPending(w) {
|
|
65
65
|
const log = w.log ?? (() => { });
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
const now = () => typeof w.now === 'function' ? w.now() : w.now ?? Date.now();
|
|
67
|
+
const wait = w.wait ?? (ms => new Promise(resolve => setTimeout(resolve, ms)));
|
|
68
|
+
let claim = claimRestartIntentForReport(now());
|
|
69
|
+
let remainingPreparedWaitMs = w.preparedCommitWaitMs === undefined
|
|
70
|
+
? undefined
|
|
71
|
+
: Math.max(0, w.preparedCommitWaitMs);
|
|
72
|
+
const pollMs = 500;
|
|
73
|
+
while (claim.state === 'prepared') {
|
|
74
|
+
if (remainingPreparedWaitMs !== undefined && remainingPreparedWaitMs <= 0)
|
|
75
|
+
return;
|
|
76
|
+
const delayMs = remainingPreparedWaitMs === undefined
|
|
77
|
+
? pollMs
|
|
78
|
+
: Math.min(pollMs, remainingPreparedWaitMs);
|
|
79
|
+
await wait(delayMs);
|
|
80
|
+
if (remainingPreparedWaitMs !== undefined)
|
|
81
|
+
remainingPreparedWaitMs -= delayMs;
|
|
82
|
+
claim = claimRestartIntentForReport(now());
|
|
83
|
+
}
|
|
84
|
+
if (claim.state !== 'claimed')
|
|
85
|
+
return;
|
|
86
|
+
const intent = claim.intent;
|
|
69
87
|
if (!w.ownerOpenId) {
|
|
70
88
|
log('restart-report: no owner configured — skipping DM');
|
|
71
89
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart-report.js","sourceRoot":"","sources":["../../src/core/restart-report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAiC,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"restart-report.js","sourceRoot":"","sources":["../../src/core/restart-report.ts"],"names":[],"mappings":"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"}
|