botmux 3.13.0 → 3.14.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 +1 -1
- package/README.md +25 -1
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/adopt-route.d.ts +58 -0
- package/dist/adapters/adopt-route.d.ts.map +1 -1
- package/dist/adapters/adopt-route.js +136 -0
- package/dist/adapters/adopt-route.js.map +1 -1
- package/dist/adapters/backend/capabilities.js +1 -1
- package/dist/adapters/backend/capabilities.js.map +1 -1
- package/dist/adapters/backend/herdr-backend.d.ts +1 -1
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +2 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +97 -0
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +380 -66
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +8 -0
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +16 -2
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +12 -13
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +113 -53
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +4 -3
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +12 -9
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +2 -3
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +6 -13
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +2 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.js +6 -3
- package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
- package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zmx-backend.js +40 -18
- package/dist/adapters/backend/zmx-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +12 -1
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +3 -2
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/dsh.d.ts +4 -0
- package/dist/adapters/cli/dsh.d.ts.map +1 -0
- package/dist/adapters/cli/dsh.js +96 -0
- package/dist/adapters/cli/dsh.js.map +1 -0
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
- package/dist/adapters/cli/fs-policy.js +5 -0
- package/dist/adapters/cli/fs-policy.js.map +1 -1
- package/dist/adapters/cli/opencode.d.ts +52 -1
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +117 -76
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/opencode2.d.ts +4 -0
- package/dist/adapters/cli/opencode2.d.ts.map +1 -0
- package/dist/adapters/cli/opencode2.js +137 -0
- package/dist/adapters/cli/opencode2.js.map +1 -0
- package/dist/adapters/cli/read-isolation.d.ts +1 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +5 -2
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +7 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +19 -6
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +13 -0
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +24 -3
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/adapters/hook-command.d.ts +8 -0
- package/dist/adapters/hook-command.d.ts.map +1 -1
- package/dist/adapters/hook-command.js +11 -0
- package/dist/adapters/hook-command.js.map +1 -1
- package/dist/adapters/hook-installer.d.ts +16 -1
- package/dist/adapters/hook-installer.d.ts.map +1 -1
- package/dist/adapters/hook-installer.js +232 -2
- package/dist/adapters/hook-installer.js.map +1 -1
- package/dist/bot-registry.d.ts +116 -8
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +52 -4
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/pm2-start-transaction.d.ts +14 -0
- package/dist/cli/pm2-start-transaction.d.ts.map +1 -1
- package/dist/cli/pm2-start-transaction.js +25 -9
- package/dist/cli/pm2-start-transaction.js.map +1 -1
- package/dist/cli/restart-failure-notification.d.ts +54 -0
- package/dist/cli/restart-failure-notification.d.ts.map +1 -0
- package/dist/cli/restart-failure-notification.js +142 -0
- package/dist/cli/restart-failure-notification.js.map +1 -0
- package/dist/cli/restart-failure-owner.d.ts +20 -0
- package/dist/cli/restart-failure-owner.d.ts.map +1 -0
- package/dist/cli/restart-failure-owner.js +27 -0
- package/dist/cli/restart-failure-owner.js.map +1 -0
- package/dist/cli/restart-shutdown-preflight.d.ts +24 -0
- package/dist/cli/restart-shutdown-preflight.d.ts.map +1 -0
- package/dist/cli/restart-shutdown-preflight.js +105 -0
- package/dist/cli/restart-shutdown-preflight.js.map +1 -0
- package/dist/cli/send-dispatch.d.ts +26 -0
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +30 -0
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +665 -399
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +38 -15
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/codex-rpc-lifecycle.d.ts +14 -2
- package/dist/codex-rpc-lifecycle.d.ts.map +1 -1
- package/dist/codex-rpc-lifecycle.js +13 -3
- package/dist/codex-rpc-lifecycle.js.map +1 -1
- package/dist/core/ask-broker.d.ts +3 -0
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +29 -7
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/ask-hook/registry.d.ts.map +1 -1
- package/dist/core/ask-hook/registry.js +4 -0
- package/dist/core/ask-hook/registry.js.map +1 -1
- package/dist/core/ask-types.d.ts +5 -1
- package/dist/core/ask-types.d.ts.map +1 -1
- package/dist/core/ask-types.js.map +1 -1
- package/dist/core/browser-restart.d.ts +112 -0
- package/dist/core/browser-restart.d.ts.map +1 -0
- package/dist/core/browser-restart.js +233 -0
- package/dist/core/browser-restart.js.map +1 -0
- package/dist/core/command-handler.d.ts +19 -11
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +237 -43
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/current-turn-provenance.d.ts.map +1 -1
- package/dist/core/current-turn-provenance.js +7 -27
- package/dist/core/current-turn-provenance.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +317 -10
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dispatch-registry.d.ts.map +1 -1
- package/dist/core/dispatch-registry.js +6 -0
- package/dist/core/dispatch-registry.js.map +1 -1
- package/dist/core/dispatch-report-binding.d.ts +31 -0
- package/dist/core/dispatch-report-binding.d.ts.map +1 -0
- package/dist/core/dispatch-report-binding.js +88 -0
- package/dist/core/dispatch-report-binding.js.map +1 -0
- package/dist/core/doc-comment-prompt.d.ts +2 -0
- package/dist/core/doc-comment-prompt.d.ts.map +1 -1
- package/dist/core/doc-comment-prompt.js +6 -0
- package/dist/core/doc-comment-prompt.js.map +1 -1
- package/dist/core/host-overload-alert.d.ts +25 -1
- package/dist/core/host-overload-alert.d.ts.map +1 -1
- package/dist/core/host-overload-alert.js +69 -8
- package/dist/core/host-overload-alert.js.map +1 -1
- package/dist/core/local-terminal-opener.js +1 -1
- package/dist/core/local-terminal-opener.js.map +1 -1
- package/dist/core/managed-origin-capability.d.ts +7 -6
- package/dist/core/managed-origin-capability.d.ts.map +1 -1
- package/dist/core/managed-origin-capability.js +32 -1
- package/dist/core/managed-origin-capability.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +3 -2
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/plugins/materializer.d.ts.map +1 -1
- package/dist/core/plugins/materializer.js +1 -0
- package/dist/core/plugins/materializer.js.map +1 -1
- package/dist/core/producer-quiescence.d.ts +70 -0
- package/dist/core/producer-quiescence.d.ts.map +1 -0
- package/dist/core/producer-quiescence.js +90 -0
- package/dist/core/producer-quiescence.js.map +1 -0
- package/dist/core/raw-command-write-options.d.ts +10 -0
- package/dist/core/raw-command-write-options.d.ts.map +1 -0
- package/dist/core/raw-command-write-options.js +23 -0
- package/dist/core/raw-command-write-options.js.map +1 -0
- package/dist/core/raw-command-writer.d.ts +4 -0
- package/dist/core/raw-command-writer.d.ts.map +1 -1
- package/dist/core/raw-command-writer.js +15 -6
- package/dist/core/raw-command-writer.js.map +1 -1
- package/dist/core/reply-target.d.ts +11 -0
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +22 -7
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/report-session-relay.d.ts +53 -0
- package/dist/core/report-session-relay.d.ts.map +1 -0
- package/dist/core/report-session-relay.js +116 -0
- package/dist/core/report-session-relay.js.map +1 -0
- package/dist/core/session-discovery.d.ts +5 -0
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +13 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-group-birth.d.ts +7 -0
- package/dist/core/session-group-birth.d.ts.map +1 -0
- package/dist/core/session-group-birth.js +145 -0
- package/dist/core/session-group-birth.js.map +1 -0
- package/dist/core/session-manager.d.ts +16 -21
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +140 -21
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +18 -3
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +18 -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 +63 -11
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +241 -13
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +33 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +900 -137
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +20 -0
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +86 -1
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +5 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +4 -1
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +27 -3
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/feedback-analytics-api.d.ts +6 -0
- package/dist/dashboard/feedback-analytics-api.d.ts.map +1 -0
- package/dist/dashboard/feedback-analytics-api.js +39 -0
- package/dist/dashboard/feedback-analytics-api.js.map +1 -0
- package/dist/dashboard/session-action-timeout.d.ts +3 -0
- package/dist/dashboard/session-action-timeout.d.ts.map +1 -0
- package/dist/dashboard/session-action-timeout.js +12 -0
- package/dist/dashboard/session-action-timeout.js.map +1 -0
- package/dist/dashboard/vc-consumer-profiles-api.d.ts +9 -3
- package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
- package/dist/dashboard/vc-consumer-profiles-api.js +2 -1
- 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 +48 -5
- package/dist/dashboard/web/app.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 +273 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +6 -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/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +1 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/feedback-page.d.ts +3 -0
- package/dist/dashboard/web/feedback-page.d.ts.map +1 -0
- package/dist/dashboard/web/feedback-page.js +34 -0
- package/dist/dashboard/web/feedback-page.js.map +1 -0
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +7 -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 +114 -22
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation-page.js +26 -2
- package/dist/dashboard/web/team-federation-page.js.map +1 -1
- package/dist/dashboard/web/team-federation.d.ts +19 -0
- package/dist/dashboard/web/team-federation.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation.js +3 -0
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard/web/update-action.d.ts +8 -0
- package/dist/dashboard/web/update-action.d.ts.map +1 -1
- package/dist/dashboard/web/update-action.js +10 -0
- package/dist/dashboard/web/update-action.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 +58 -9
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-4RENHE7J.js +10 -0
- package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-CU4SUKK3.js → chunk-6O7KXFD2.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-6JTZJRQJ.js → chunk-Q2MT4VWH.js} +15 -15
- package/dist/dashboard-web/chunks/{chunk-5QJB24I2.js → chunk-U3ZFSO7E.js} +1 -1
- package/dist/dashboard-web/chunks/connectors-page-2KZO5KSJ.js +1 -0
- package/dist/dashboard-web/chunks/feedback-page-CLVTOLLO.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-EVGGJI5L.js → insights-page-4RPU2CRU.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-HRGR2ENP.js → monitor-room-OTKQ2CXK.js} +1 -1
- package/dist/dashboard-web/chunks/monitoring-page-IJPUB6JT.js +2 -0
- package/dist/dashboard-web/chunks/office-page-QSR3J44Y.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +1 -0
- package/dist/dashboard-web/chunks/roles-page-6NWJMOB5.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-6I3LNXD4.js +1 -0
- package/dist/dashboard-web/chunks/{sessions-page-DXBCDWCS.js → sessions-page-B2TXGJDO.js} +1 -1
- package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-2QAVB2SA.js → skills-page-M2Q6L5CB.js} +1 -1
- package/dist/dashboard-web/chunks/team-federation-page-7I7FDE3B.js +1 -0
- package/dist/dashboard-web/chunks/{v3-page-AY35LKCX.js → v3-page-HQXRL65L.js} +1 -1
- package/dist/dashboard-web/chunks/whiteboards-page-LQKC4TAZ.js +1 -0
- package/dist/dashboard-web/style.css +35 -0
- package/dist/dashboard.js +199 -12
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/shared/shell-path-probes.d.ts +1 -1
- package/dist/desktop/shared/shell-path-probes.js +2 -2
- package/dist/desktop/shared/shell-path-probes.js.map +1 -1
- package/dist/dsh-runner.d.ts +3 -0
- package/dist/dsh-runner.d.ts.map +1 -0
- package/dist/dsh-runner.js +666 -0
- package/dist/dsh-runner.js.map +1 -0
- package/dist/global-config.d.ts +24 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +35 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +25 -6
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +25 -6
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/ask-card.d.ts +3 -1
- package/dist/im/lark/ask-card.d.ts.map +1 -1
- package/dist/im/lark/ask-card.js +61 -5
- package/dist/im/lark/ask-card.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +13 -6
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +2 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +145 -5
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +18 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +36 -9
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/md-card.d.ts +18 -0
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +21 -0
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/relay-target-routing.d.ts.map +1 -1
- package/dist/im/lark/relay-target-routing.js +3 -2
- package/dist/im/lark/relay-target-routing.js.map +1 -1
- package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
- package/dist/im/lark/reply-mode-command.js +19 -8
- package/dist/im/lark/reply-mode-command.js.map +1 -1
- package/dist/im/lark/skill-feedback-card.d.ts +15 -0
- package/dist/im/lark/skill-feedback-card.d.ts.map +1 -0
- package/dist/im/lark/skill-feedback-card.js +149 -0
- package/dist/im/lark/skill-feedback-card.js.map +1 -0
- package/dist/services/bot-config-store.d.ts +10 -1
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +103 -3
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bridge-fallback-gate.d.ts +14 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +15 -0
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/codex-reasoning-effort.d.ts +9 -0
- package/dist/services/codex-reasoning-effort.d.ts.map +1 -0
- package/dist/services/codex-reasoning-effort.js +23 -0
- package/dist/services/codex-reasoning-effort.js.map +1 -0
- package/dist/services/codex-service-tier.d.ts +1 -1
- package/dist/services/codex-service-tier.d.ts.map +1 -1
- package/dist/services/codex-transcript.d.ts +9 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +13 -6
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/feed-group-tagger.d.ts +15 -0
- package/dist/services/feed-group-tagger.d.ts.map +1 -0
- package/dist/services/feed-group-tagger.js +348 -0
- package/dist/services/feed-group-tagger.js.map +1 -0
- package/dist/services/feedback-analytics.d.ts +82 -0
- package/dist/services/feedback-analytics.d.ts.map +1 -0
- package/dist/services/feedback-analytics.js +95 -0
- package/dist/services/feedback-analytics.js.map +1 -0
- package/dist/services/feedback-outbox.d.ts +24 -0
- package/dist/services/feedback-outbox.d.ts.map +1 -0
- package/dist/services/feedback-outbox.js +12 -0
- package/dist/services/feedback-outbox.js.map +1 -0
- package/dist/services/feedback-policy-resolver.d.ts +56 -0
- package/dist/services/feedback-policy-resolver.d.ts.map +1 -0
- package/dist/services/feedback-policy-resolver.js +156 -0
- package/dist/services/feedback-policy-resolver.js.map +1 -0
- package/dist/services/feedback-policy.d.ts +41 -0
- package/dist/services/feedback-policy.d.ts.map +1 -0
- package/dist/services/feedback-policy.js +102 -0
- package/dist/services/feedback-policy.js.map +1 -0
- package/dist/services/feedback-webhook-dispatcher.d.ts +76 -0
- package/dist/services/feedback-webhook-dispatcher.d.ts.map +1 -0
- package/dist/services/feedback-webhook-dispatcher.js +237 -0
- package/dist/services/feedback-webhook-dispatcher.js.map +1 -0
- package/dist/services/grant-prefs-store.d.ts +3 -0
- package/dist/services/grant-prefs-store.d.ts.map +1 -1
- package/dist/services/grant-prefs-store.js +30 -1
- package/dist/services/grant-prefs-store.js.map +1 -1
- package/dist/services/groups-store.d.ts +14 -0
- package/dist/services/groups-store.d.ts.map +1 -1
- package/dist/services/groups-store.js +23 -0
- package/dist/services/groups-store.js.map +1 -1
- package/dist/services/local-cli-opener.d.ts +1 -1
- package/dist/services/local-cli-opener.d.ts.map +1 -1
- package/dist/services/local-cli-opener.js +2 -0
- package/dist/services/local-cli-opener.js.map +1 -1
- package/dist/services/prompt-context-store.d.ts +29 -0
- package/dist/services/prompt-context-store.d.ts.map +1 -0
- package/dist/services/prompt-context-store.js +205 -0
- package/dist/services/prompt-context-store.js.map +1 -0
- package/dist/services/session-group-avatar.d.ts +6 -0
- package/dist/services/session-group-avatar.d.ts.map +1 -0
- package/dist/services/session-group-avatar.js +96 -0
- package/dist/services/session-group-avatar.js.map +1 -0
- package/dist/services/session-group-title.d.ts +47 -0
- package/dist/services/session-group-title.d.ts.map +1 -0
- package/dist/services/session-group-title.js +226 -0
- package/dist/services/session-group-title.js.map +1 -0
- package/dist/services/session-groups-store.d.ts +30 -0
- package/dist/services/session-groups-store.d.ts.map +1 -0
- package/dist/services/session-groups-store.js +132 -0
- package/dist/services/session-groups-store.js.map +1 -0
- package/dist/services/session-store.d.ts +58 -0
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +174 -0
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/skill-feedback-store.d.ts +252 -0
- package/dist/services/skill-feedback-store.d.ts.map +1 -0
- package/dist/services/skill-feedback-store.js +795 -0
- package/dist/services/skill-feedback-store.js.map +1 -0
- package/dist/services/skill-registry-store.d.ts +23 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +93 -7
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/team-store.d.ts +4 -0
- package/dist/services/team-store.d.ts.map +1 -1
- package/dist/services/team-store.js +16 -0
- package/dist/services/team-store.js.map +1 -1
- package/dist/services/traex-transcript.d.ts +32 -4
- package/dist/services/traex-transcript.d.ts.map +1 -1
- package/dist/services/traex-transcript.js +116 -8
- package/dist/services/traex-transcript.js.map +1 -1
- package/dist/services/trigger-types.d.ts +1 -1
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +2 -2
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/turn-completion-events.d.ts +57 -0
- package/dist/services/turn-completion-events.d.ts.map +1 -0
- package/dist/services/turn-completion-events.js +179 -0
- package/dist/services/turn-completion-events.js.map +1 -0
- package/dist/services/vc-meeting-consumer-isolation.d.ts +21 -12
- package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
- package/dist/services/vc-meeting-consumer-isolation.js +25 -19
- package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +8 -2
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js +18 -10
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +6 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/cli-availability.d.ts +2 -1
- package/dist/setup/cli-availability.d.ts.map +1 -1
- package/dist/setup/cli-availability.js +2 -1
- package/dist/setup/cli-availability.js.map +1 -1
- package/dist/setup/cli-selection.d.ts +8 -0
- package/dist/setup/cli-selection.d.ts.map +1 -1
- package/dist/setup/cli-selection.js +31 -0
- package/dist/setup/cli-selection.js.map +1 -1
- package/dist/setup/ensure-fonts.d.ts +5 -0
- package/dist/setup/ensure-fonts.d.ts.map +1 -1
- package/dist/setup/ensure-fonts.js +26 -1
- package/dist/setup/ensure-fonts.js.map +1 -1
- package/dist/setup/lark-scopes.json +3 -1
- package/dist/setup/open-platform-automation.d.ts +1 -1
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +15 -3
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/skills/definitions.d.ts +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +9 -2
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +10 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/user-token.d.ts +38 -0
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +76 -1
- package/dist/utils/user-token.js.map +1 -1
- package/dist/utils/web-terminal-scroll.d.ts +27 -0
- package/dist/utils/web-terminal-scroll.d.ts.map +1 -0
- package/dist/utils/web-terminal-scroll.js +60 -0
- package/dist/utils/web-terminal-scroll.js.map +1 -0
- package/dist/vc-agent/polling-source.d.ts +70 -0
- package/dist/vc-agent/polling-source.d.ts.map +1 -1
- package/dist/vc-agent/polling-source.js +115 -0
- package/dist/vc-agent/polling-source.js.map +1 -1
- package/dist/worker.js +237 -76
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +22 -22
- package/dist/workflows/events/payloads.d.ts +8 -8
- package/dist/workflows/events/schema.d.ts +20 -20
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +20 -20
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-NQJFJ45Z.js +0 -10
- package/dist/dashboard-web/chunks/chunk-KEEYQ3WF.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-HADHZXXZ.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-5TYF46RS.js +0 -8
- package/dist/dashboard-web/chunks/monitoring-page-LBU7TTTW.js +0 -2
- package/dist/dashboard-web/chunks/office-page-DF6RRBMN.js +0 -1
- package/dist/dashboard-web/chunks/overview-page-ZB6QH2EX.js +0 -1
- package/dist/dashboard-web/chunks/roles-page-ZBZGHIIF.js +0 -1
- package/dist/dashboard-web/chunks/schedules-page-NQVQC3QY.js +0 -1
- package/dist/dashboard-web/chunks/settings-page-E7NN4NVQ.js +0 -2
- package/dist/dashboard-web/chunks/team-federation-page-VGWL53AE.js +0 -1
- package/dist/dashboard-web/chunks/whiteboards-page-BNWUU4KG.js +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { RestartIntent } from '../services/restart-intent-store.js';
|
|
2
|
+
export type RestartFailureNotificationStatus = 'pending' | 'sent' | 'failed' | 'skipped';
|
|
3
|
+
export interface RestartFailureRecord {
|
|
4
|
+
schemaVersion: 1;
|
|
5
|
+
failureId: string;
|
|
6
|
+
code: 'bootstrap_shutdown_protocol_required';
|
|
7
|
+
at: string;
|
|
8
|
+
operation: 'restart';
|
|
9
|
+
detail: string;
|
|
10
|
+
unsafeDaemonNames: string[];
|
|
11
|
+
restartIntent?: RestartIntent;
|
|
12
|
+
notification: {
|
|
13
|
+
status: RestartFailureNotificationStatus;
|
|
14
|
+
attempts: number;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
larkAppId?: string;
|
|
17
|
+
ownerOpenId?: string;
|
|
18
|
+
messageId?: string;
|
|
19
|
+
error?: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface RestartFailureNotifierBot {
|
|
23
|
+
larkAppId: string;
|
|
24
|
+
larkAppSecret: string;
|
|
25
|
+
apiOnly?: boolean;
|
|
26
|
+
ownerOpenId?: string;
|
|
27
|
+
allowedUsers?: string[];
|
|
28
|
+
brand?: 'feishu' | 'lark';
|
|
29
|
+
}
|
|
30
|
+
export interface RestartFailureNotificationTarget {
|
|
31
|
+
larkAppId: string;
|
|
32
|
+
ownerOpenId: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RestartFailureNotificationWiring {
|
|
35
|
+
dataDir: string;
|
|
36
|
+
bots: RestartFailureNotifierBot[];
|
|
37
|
+
unsafeDaemonNames: string[];
|
|
38
|
+
detail: string;
|
|
39
|
+
restartIntent?: RestartIntent | null;
|
|
40
|
+
now?: number | (() => number);
|
|
41
|
+
resolveOwner: (bot: RestartFailureNotifierBot) => Promise<string | undefined>;
|
|
42
|
+
sendText: (target: RestartFailureNotificationTarget, text: string) => Promise<string>;
|
|
43
|
+
}
|
|
44
|
+
export declare function restartFailurePathIn(dir: string): string;
|
|
45
|
+
export declare function writeRestartFailureTo(dir: string, record: RestartFailureRecord): void;
|
|
46
|
+
export declare function readRestartFailureFrom(dir: string): RestartFailureRecord | null;
|
|
47
|
+
export declare function buildRestartBootstrapRequiredText(record: RestartFailureRecord, dataDir: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Persist the first-upgrade failure before attempting any external delivery.
|
|
50
|
+
* The selected owner is resolved independently inside each configured app;
|
|
51
|
+
* an app-scoped open_id is never copied from one bot to another.
|
|
52
|
+
*/
|
|
53
|
+
export declare function recordAndNotifyRestartBootstrapFailure(input: RestartFailureNotificationWiring): Promise<RestartFailureRecord>;
|
|
54
|
+
//# sourceMappingURL=restart-failure-notification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-failure-notification.d.ts","sourceRoot":"","sources":["../../src/cli/restart-failure-notification.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAKzE,MAAM,MAAM,gCAAgC,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzF,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,sCAAsC,CAAC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAE;QACZ,MAAM,EAAE,gCAAgC,CAAC;QACzC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,yBAAyB,EAAE,CAAC;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9E,QAAQ,EAAE,CAAC,MAAM,EAAE,gCAAgC,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAcD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAGrF;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAa/E;AAiBD,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,MAAM,GACd,MAAM,CAgBR;AAED;;;;GAIG;AACH,wBAAsB,sCAAsC,CAC1D,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAoE/B"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { withFileLockSync } from '../utils/file-lock.js';
|
|
5
|
+
const FILE = 'restart-failure.json';
|
|
6
|
+
export function restartFailurePathIn(dir) {
|
|
7
|
+
return join(dir, FILE);
|
|
8
|
+
}
|
|
9
|
+
function nowMs(input) {
|
|
10
|
+
return typeof input.now === 'function' ? input.now() : input.now ?? Date.now();
|
|
11
|
+
}
|
|
12
|
+
function writeRestartFailureUnlocked(dir, record) {
|
|
13
|
+
if (!existsSync(dir))
|
|
14
|
+
mkdirSync(dir, { recursive: true });
|
|
15
|
+
const path = restartFailurePathIn(dir);
|
|
16
|
+
const tmp = `${path}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`;
|
|
17
|
+
writeFileSync(tmp, JSON.stringify(record, null, 2) + '\n');
|
|
18
|
+
renameSync(tmp, path);
|
|
19
|
+
}
|
|
20
|
+
export function writeRestartFailureTo(dir, record) {
|
|
21
|
+
if (!existsSync(dir))
|
|
22
|
+
mkdirSync(dir, { recursive: true });
|
|
23
|
+
withFileLockSync(restartFailurePathIn(dir), () => writeRestartFailureUnlocked(dir, record));
|
|
24
|
+
}
|
|
25
|
+
export function readRestartFailureFrom(dir) {
|
|
26
|
+
try {
|
|
27
|
+
const value = JSON.parse(readFileSync(restartFailurePathIn(dir), 'utf8'));
|
|
28
|
+
if (value?.schemaVersion !== 1
|
|
29
|
+
|| value.code !== 'bootstrap_shutdown_protocol_required'
|
|
30
|
+
|| typeof value.failureId !== 'string'
|
|
31
|
+
|| typeof value.at !== 'string'
|
|
32
|
+
|| !value.notification
|
|
33
|
+
|| typeof value.notification.status !== 'string')
|
|
34
|
+
return null;
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function updateRestartFailureTo(dir, failureId, update) {
|
|
42
|
+
if (!existsSync(dir))
|
|
43
|
+
return null;
|
|
44
|
+
return withFileLockSync(restartFailurePathIn(dir), () => {
|
|
45
|
+
const current = readRestartFailureFrom(dir);
|
|
46
|
+
if (!current || current.failureId !== failureId)
|
|
47
|
+
return null;
|
|
48
|
+
const next = update(current);
|
|
49
|
+
writeRestartFailureUnlocked(dir, next);
|
|
50
|
+
return next;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export function buildRestartBootstrapRequiredText(record, dataDir) {
|
|
54
|
+
const daemonLine = record.unsafeDaemonNames.length > 0
|
|
55
|
+
? `\n受影响 daemon:${record.unsafeDaemonNames.join('、')}`
|
|
56
|
+
: '';
|
|
57
|
+
const versionLine = record.restartIntent?.oldVersion && record.restartIntent?.newVersion
|
|
58
|
+
? `\n版本:v${record.restartIntent.oldVersion.replace(/^v/, '')} → v${record.restartIntent.newVersion.replace(/^v/, '')}`
|
|
59
|
+
: '';
|
|
60
|
+
return 'Botmux 新版本已安装,但自动重启被安全检查阻止:当前运行的 daemon 仍使用旧的关停协议。'
|
|
61
|
+
+ versionLine
|
|
62
|
+
+ daemonLine
|
|
63
|
+
+ '\n请先确认所有 Session / Riff 工作均已空闲,再在机器终端执行:'
|
|
64
|
+
+ '\nbotmux restart --bootstrap-shutdown-protocol --yes'
|
|
65
|
+
// Report the ACTUAL failure-record location: dataDir may be redirected by
|
|
66
|
+
// SESSION_DATA_DIR or the `.data-dir` breadcrumb, and a literal `~` does not
|
|
67
|
+
// expand in Feishu text. See PR #843 R2 review.
|
|
68
|
+
+ `\n失败记录:${restartFailurePathIn(dataDir)}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Persist the first-upgrade failure before attempting any external delivery.
|
|
72
|
+
* The selected owner is resolved independently inside each configured app;
|
|
73
|
+
* an app-scoped open_id is never copied from one bot to another.
|
|
74
|
+
*/
|
|
75
|
+
export async function recordAndNotifyRestartBootstrapFailure(input) {
|
|
76
|
+
const atMs = nowMs(input);
|
|
77
|
+
const at = new Date(atMs).toISOString();
|
|
78
|
+
const record = {
|
|
79
|
+
schemaVersion: 1,
|
|
80
|
+
failureId: randomBytes(16).toString('hex'),
|
|
81
|
+
code: 'bootstrap_shutdown_protocol_required',
|
|
82
|
+
at,
|
|
83
|
+
operation: 'restart',
|
|
84
|
+
detail: input.detail,
|
|
85
|
+
unsafeDaemonNames: [...new Set(input.unsafeDaemonNames)].sort(),
|
|
86
|
+
...(input.restartIntent ? { restartIntent: input.restartIntent } : {}),
|
|
87
|
+
notification: { status: 'pending', attempts: 0, updatedAt: at },
|
|
88
|
+
};
|
|
89
|
+
writeRestartFailureTo(input.dataDir, record);
|
|
90
|
+
let target;
|
|
91
|
+
let resolutionError;
|
|
92
|
+
for (const bot of input.bots) {
|
|
93
|
+
if (bot.apiOnly === true || !bot.larkAppId || !bot.larkAppSecret)
|
|
94
|
+
continue;
|
|
95
|
+
try {
|
|
96
|
+
const ownerOpenId = await input.resolveOwner(bot);
|
|
97
|
+
if (ownerOpenId?.startsWith('ou_')) {
|
|
98
|
+
target = { larkAppId: bot.larkAppId, ownerOpenId };
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
resolutionError = error instanceof Error ? error.message : String(error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const pending = updateRestartFailureTo(input.dataDir, record.failureId, current => ({
|
|
107
|
+
...current,
|
|
108
|
+
notification: {
|
|
109
|
+
status: target ? 'pending' : 'skipped',
|
|
110
|
+
attempts: target ? 1 : 0,
|
|
111
|
+
updatedAt: new Date(nowMs(input)).toISOString(),
|
|
112
|
+
...(target ? { larkAppId: target.larkAppId, ownerOpenId: target.ownerOpenId } : {}),
|
|
113
|
+
...(!target ? { error: resolutionError ?? 'no transport-enabled bot with a resolvable owner' } : {}),
|
|
114
|
+
},
|
|
115
|
+
})) ?? record;
|
|
116
|
+
if (!target)
|
|
117
|
+
return pending;
|
|
118
|
+
try {
|
|
119
|
+
const messageId = await input.sendText(target, buildRestartBootstrapRequiredText(pending, input.dataDir));
|
|
120
|
+
return updateRestartFailureTo(input.dataDir, record.failureId, current => ({
|
|
121
|
+
...current,
|
|
122
|
+
notification: {
|
|
123
|
+
...current.notification,
|
|
124
|
+
status: 'sent',
|
|
125
|
+
updatedAt: new Date(nowMs(input)).toISOString(),
|
|
126
|
+
...(messageId ? { messageId } : {}),
|
|
127
|
+
},
|
|
128
|
+
})) ?? pending;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return updateRestartFailureTo(input.dataDir, record.failureId, current => ({
|
|
132
|
+
...current,
|
|
133
|
+
notification: {
|
|
134
|
+
...current.notification,
|
|
135
|
+
status: 'failed',
|
|
136
|
+
updatedAt: new Date(nowMs(input)).toISOString(),
|
|
137
|
+
error: error instanceof Error ? error.message : String(error),
|
|
138
|
+
},
|
|
139
|
+
})) ?? pending;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=restart-failure-notification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-failure-notification.js","sourceRoot":"","sources":["../../src/cli/restart-failure-notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the DM recipient for a first-upgrade restart failure, inside the SAME
|
|
3
|
+
* bot application that will send the notification.
|
|
4
|
+
*
|
|
5
|
+
* Critically, this ALSO registers the sending bot in the in-process bot
|
|
6
|
+
* registry on BOTH resolution paths. The fresh `botmux restart` CLI is a new
|
|
7
|
+
* process whose registry starts empty and is never populated elsewhere on the
|
|
8
|
+
* restart path (loadBotsJson only reads the file). Without registration here,
|
|
9
|
+
* the subsequent `sendUserMessage → getBotClient → getBot` throws
|
|
10
|
+
* `Bot not registered`, which would silently defeat the notification on the
|
|
11
|
+
* most common (persisted `ownerOpenId`) path. See PR #843 R2 review.
|
|
12
|
+
*/
|
|
13
|
+
export interface RestartFailureOwnerDeps {
|
|
14
|
+
/** Register the sending bot so getBotClient can build its Lark client. */
|
|
15
|
+
registerBot: (cfg: any) => void;
|
|
16
|
+
/** Resolve stable allowedUsers entries through the sending app itself. */
|
|
17
|
+
resolveAllowedUsers: (larkAppId: string, raw: string[]) => Promise<string[]>;
|
|
18
|
+
}
|
|
19
|
+
export declare function resolveRestartFailureOwner(bot: any, deps: RestartFailureOwnerDeps): Promise<string | undefined>;
|
|
20
|
+
//# sourceMappingURL=restart-failure-owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-failure-owner.d.ts","sourceRoot":"","sources":["../../src/cli/restart-failure-owner.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,0EAA0E;IAC1E,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9E;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4B7B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { normalizeBotConfig } from '../setup/bot-config-editor.js';
|
|
2
|
+
export async function resolveRestartFailureOwner(bot, deps) {
|
|
3
|
+
// The sending app must be registered before ANY delivery, regardless of which
|
|
4
|
+
// resolution branch wins — this is the blocker R2 flagged. registerBot is
|
|
5
|
+
// idempotent (it overwrites the same larkAppId entry), so registering here and
|
|
6
|
+
// again in a later fallback is harmless.
|
|
7
|
+
const registerSender = () => deps.registerBot(normalizeBotConfig(bot));
|
|
8
|
+
if (typeof bot?.ownerOpenId === 'string' && bot.ownerOpenId.startsWith('ou_')) {
|
|
9
|
+
registerSender();
|
|
10
|
+
return bot.ownerOpenId;
|
|
11
|
+
}
|
|
12
|
+
const allowedUsers = Array.isArray(bot?.allowedUsers)
|
|
13
|
+
? bot.allowedUsers.filter((entry) => (typeof entry === 'string'
|
|
14
|
+
&& !!entry.trim()
|
|
15
|
+
// A literal ou_ has no independent proof that it belongs to this app.
|
|
16
|
+
// Only the app's persisted ownerOpenId above may use that shape; all
|
|
17
|
+
// allowedUsers fallbacks must cross the stable email/mobile/union-id
|
|
18
|
+
// boundary and be resolved by the sending app itself.
|
|
19
|
+
&& !entry.startsWith('ou_')))
|
|
20
|
+
: [];
|
|
21
|
+
if (allowedUsers.length === 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
registerSender();
|
|
24
|
+
return (await deps.resolveAllowedUsers(bot.larkAppId, allowedUsers))
|
|
25
|
+
.find(openId => openId.startsWith('ou_'));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=restart-failure-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-failure-owner.js","sourceRoot":"","sources":["../../src/cli/restart-failure-owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAsBnE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAQ,EACR,IAA6B;IAE7B,8EAA8E;IAC9E,0EAA0E;IAC1E,+EAA+E;IAC/E,yCAAyC;IACzC,MAAM,cAAc,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7E,IAAI,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9E,cAAc,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC;QACnD,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAc,EAAmB,EAAE,CAAC,CAC3D,OAAO,KAAK,KAAK,QAAQ;eACtB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;YACjB,sEAAsE;YACtE,qEAAqE;YACrE,qEAAqE;YACrE,sDAAsD;eACnD,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAC5B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,cAAc,EAAE,CAAC;IACjB,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FleetProcessEntry } from './fleet-shutdown.js';
|
|
2
|
+
/** Injectable reader for tests. Production reads the live PM2 jlist. */
|
|
3
|
+
export type Pm2FleetProjectionReader = () => FleetProcessEntry[];
|
|
4
|
+
export interface RestartShutdownPreflight {
|
|
5
|
+
/** True when a normal restart will fail closed and the operator must run the
|
|
6
|
+
* one-time `--bootstrap-shutdown-protocol` upgrade first. */
|
|
7
|
+
bootstrapRequired: boolean;
|
|
8
|
+
/** Canonical PM2 names of the live daemon rows still on the old policy.
|
|
9
|
+
* Empty when bootstrapRequired is false. */
|
|
10
|
+
unsafeDaemonNames: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Inspect the currently live botmux daemons and decide whether a normal
|
|
14
|
+
* restart would be refused by the shutdown-capability boundary.
|
|
15
|
+
*
|
|
16
|
+
* Only ONLINE, OS-plausible daemon rows are considered: a fleet that is
|
|
17
|
+
* already fully retired (or a box where jlist is empty) reports
|
|
18
|
+
* bootstrapRequired=false. If the projection cannot be read, callers should
|
|
19
|
+
* treat that as "unknown, do not claim bootstrap is required" and fall back to
|
|
20
|
+
* the existing fire-and-forget behavior — this probe never fabricates a
|
|
21
|
+
* bootstrap requirement out of a read failure.
|
|
22
|
+
*/
|
|
23
|
+
export declare function evaluateRestartShutdownPreflight(read?: Pm2FleetProjectionReader): RestartShutdownPreflight;
|
|
24
|
+
//# sourceMappingURL=restart-shutdown-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-shutdown-preflight.d.ts","sourceRoot":"","sources":["../../src/cli/restart-shutdown-preflight.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA6C7D,wEAAwE;AACxE,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAwBjE,MAAM,WAAW,wBAAwB;IACvC;iEAC6D;IAC7D,iBAAiB,EAAE,OAAO,CAAC;IAC3B;gDAC4C;IAC5C,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,GAAE,wBAAgD,GACrD,wBAAwB,CAS1B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shutdown-capability preflight shared by the dashboard's read-only
|
|
3
|
+
* `/api/update/restart` guard and the newly installed CLI restart driver.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists: `botmux restart` fails closed at the shutdown-capability
|
|
6
|
+
* boundary when live daemons still run an old PM2 policy that cannot prove
|
|
7
|
+
* signal-death autorestart (see assertDaemonPm2GracefulExitPolicy). That
|
|
8
|
+
* refusal is correct, but the dashboard fires the real restart in a *detached*
|
|
9
|
+
* `botmux restart` child: its throw only lands in the maintenance-restart log,
|
|
10
|
+
* so the UI would report "restart is slow, refresh manually" for a restart
|
|
11
|
+
* that can never succeed. This probe lets the endpoint detect the boundary
|
|
12
|
+
* synchronously — before returning 202 — so it can surface a precise,
|
|
13
|
+
* actionable "one-time bootstrap upgrade required" instead.
|
|
14
|
+
*
|
|
15
|
+
* It is deliberately read-only: it never signals, starts, or mutates PM2.
|
|
16
|
+
*/
|
|
17
|
+
import { spawnSync } from 'node:child_process';
|
|
18
|
+
import { existsSync } from 'node:fs';
|
|
19
|
+
import { createRequire } from 'node:module';
|
|
20
|
+
import { homedir } from 'node:os';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { buildPm2SpawnCommand } from './pm2-command.js';
|
|
23
|
+
import { parsePm2JlistOutputStrict, parseCanonicalPm2Id, parsePm2Integer } from './pm2-jlist.js';
|
|
24
|
+
import { daemonRowsMissingSignalDeathAutorestart, normalizeRawPm2StopExitCodes, } from './pm2-start-transaction.js';
|
|
25
|
+
const PM2_NAME = 'botmux';
|
|
26
|
+
const PM2_HOME = join(homedir(), '.botmux', 'pm2');
|
|
27
|
+
const require = createRequire(import.meta.url);
|
|
28
|
+
function isBotmuxCoreProcessName(name) {
|
|
29
|
+
return name === PM2_NAME || (name.startsWith(`${PM2_NAME}-`) && !name.startsWith(`${PM2_NAME}-plugin-`));
|
|
30
|
+
}
|
|
31
|
+
/** The dashboard row is not a signal target: only worker daemons are subject
|
|
32
|
+
* to the shutdown-capability preflight. Mirrors isBotmuxDaemonProcessName in
|
|
33
|
+
* cli.ts. */
|
|
34
|
+
function isBotmuxDaemonProcessName(name) {
|
|
35
|
+
return isBotmuxCoreProcessName(name) && name !== 'botmux-dashboard';
|
|
36
|
+
}
|
|
37
|
+
function pm2Bin() {
|
|
38
|
+
if (process.platform === 'win32') {
|
|
39
|
+
const cmd = join(process.cwd(), 'node_modules', '.bin', 'pm2.cmd');
|
|
40
|
+
if (existsSync(cmd))
|
|
41
|
+
return cmd;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
return require.resolve('pm2/bin/pm2');
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return 'pm2';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function toFleetProcessEntry(app) {
|
|
51
|
+
const pmId = parseCanonicalPm2Id(app);
|
|
52
|
+
const exitCode = parsePm2Integer(app?.pm2_env?.exit_code);
|
|
53
|
+
return {
|
|
54
|
+
name: String(app?.name),
|
|
55
|
+
...(pmId !== undefined ? { pmId } : {}),
|
|
56
|
+
pid: Number(app?.pid) || 0,
|
|
57
|
+
online: app?.pm2_env?.status === 'online',
|
|
58
|
+
status: String(app?.pm2_env?.status ?? 'unknown'),
|
|
59
|
+
autorestart: app?.pm2_env?.autorestart,
|
|
60
|
+
stopExitCodes: normalizeRawPm2StopExitCodes(app?.pm2_env?.stop_exit_codes),
|
|
61
|
+
...(exitCode !== undefined ? { exitCode } : {}),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function readLivePm2Projection() {
|
|
65
|
+
const pm2 = buildPm2SpawnCommand(pm2Bin(), ['jlist']);
|
|
66
|
+
const result = spawnSync(pm2.command, pm2.args, {
|
|
67
|
+
encoding: 'utf-8',
|
|
68
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
69
|
+
env: { ...process.env, PM2_HOME },
|
|
70
|
+
shell: pm2.shell ?? false,
|
|
71
|
+
timeout: 10_000,
|
|
72
|
+
// Match cli.ts pm2Capture: jlist output scales with fleet size.
|
|
73
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
74
|
+
});
|
|
75
|
+
if (result.status !== 0) {
|
|
76
|
+
const detail = result.error?.message
|
|
77
|
+
?? ((result.stderr ? String(result.stderr).trim() : '') || `status ${result.status}`);
|
|
78
|
+
throw new Error(`pm2 jlist failed: ${detail}`);
|
|
79
|
+
}
|
|
80
|
+
const output = typeof result.stdout === 'string' ? result.stdout : '';
|
|
81
|
+
return parsePm2JlistOutputStrict(output)
|
|
82
|
+
.filter(app => app && isBotmuxCoreProcessName(String(app?.name)))
|
|
83
|
+
.map(toFleetProcessEntry);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Inspect the currently live botmux daemons and decide whether a normal
|
|
87
|
+
* restart would be refused by the shutdown-capability boundary.
|
|
88
|
+
*
|
|
89
|
+
* Only ONLINE, OS-plausible daemon rows are considered: a fleet that is
|
|
90
|
+
* already fully retired (or a box where jlist is empty) reports
|
|
91
|
+
* bootstrapRequired=false. If the projection cannot be read, callers should
|
|
92
|
+
* treat that as "unknown, do not claim bootstrap is required" and fall back to
|
|
93
|
+
* the existing fire-and-forget behavior — this probe never fabricates a
|
|
94
|
+
* bootstrap requirement out of a read failure.
|
|
95
|
+
*/
|
|
96
|
+
export function evaluateRestartShutdownPreflight(read = readLivePm2Projection) {
|
|
97
|
+
const projection = read();
|
|
98
|
+
const liveDaemons = projection.filter(entry => isBotmuxDaemonProcessName(entry.name) && entry.online && entry.pid > 1);
|
|
99
|
+
const unsafe = daemonRowsMissingSignalDeathAutorestart(liveDaemons);
|
|
100
|
+
return {
|
|
101
|
+
bootstrapRequired: unsafe.length > 0,
|
|
102
|
+
unsafeDaemonNames: unsafe.map(entry => entry.name),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=restart-shutdown-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-shutdown-preflight.js","sourceRoot":"","sources":["../../src/cli/restart-shutdown-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,32 @@ export type DispatchPrimaryDeps = {
|
|
|
15
15
|
};
|
|
16
16
|
/** First attachment path that aliases stdin, or null if none do. */
|
|
17
17
|
export declare function findStdinAliasAttachment(paths: readonly string[]): string | null;
|
|
18
|
+
export type SlashSendValidation = {
|
|
19
|
+
ok: true;
|
|
20
|
+
command: string;
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
error: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Validate the body of a `botmux send --slash "<cmd>"`.
|
|
27
|
+
*
|
|
28
|
+
* `--slash` exists so one bot can hand another a NATIVE slash command that the
|
|
29
|
+
* receiving daemon relays into the CLI verbatim (passthrough: /clear, /model,
|
|
30
|
+
* …) or routes as a daemon command (/close, …). The ordinary `send` path wraps
|
|
31
|
+
* every message in an interactive card whose body picks up a `[🔊 语音总结]`
|
|
32
|
+
* footer line, so the receiver sees a MULTI-LINE message and
|
|
33
|
+
* `parseSlashCommandInvocation` (which only treats /schedule|/role|/fork as
|
|
34
|
+
* multi-line commands) drops it to an ordinary prompt — the command never
|
|
35
|
+
* reaches the passthrough/daemon router. A `--slash` send therefore MUST go out
|
|
36
|
+
* as a single-line plain-`text` message.
|
|
37
|
+
*
|
|
38
|
+
* Fail LOUD rather than silently sending junk: the content has to be exactly one
|
|
39
|
+
* line and start with `/`. Leading/trailing whitespace is trimmed (a trailing
|
|
40
|
+
* newline from a heredoc is the common case); an interior newline is rejected so
|
|
41
|
+
* the caller notices instead of the daemon quietly treating it as prose.
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateSlashSend(raw: string): SlashSendValidation;
|
|
18
44
|
export type SendFileAttachmentsDeps = {
|
|
19
45
|
uploadFile: (appId: string, path: string) => Promise<string>;
|
|
20
46
|
dispatch: (content: string, msgType: string) => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-dispatch.d.ts","sourceRoot":"","sources":["../../src/cli/send-dispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"send-dispatch.d.ts","sourceRoot":"","sources":["../../src/cli/send-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,36 @@ export function findStdinAliasAttachment(paths) {
|
|
|
17
17
|
}
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate the body of a `botmux send --slash "<cmd>"`.
|
|
22
|
+
*
|
|
23
|
+
* `--slash` exists so one bot can hand another a NATIVE slash command that the
|
|
24
|
+
* receiving daemon relays into the CLI verbatim (passthrough: /clear, /model,
|
|
25
|
+
* …) or routes as a daemon command (/close, …). The ordinary `send` path wraps
|
|
26
|
+
* every message in an interactive card whose body picks up a `[🔊 语音总结]`
|
|
27
|
+
* footer line, so the receiver sees a MULTI-LINE message and
|
|
28
|
+
* `parseSlashCommandInvocation` (which only treats /schedule|/role|/fork as
|
|
29
|
+
* multi-line commands) drops it to an ordinary prompt — the command never
|
|
30
|
+
* reaches the passthrough/daemon router. A `--slash` send therefore MUST go out
|
|
31
|
+
* as a single-line plain-`text` message.
|
|
32
|
+
*
|
|
33
|
+
* Fail LOUD rather than silently sending junk: the content has to be exactly one
|
|
34
|
+
* line and start with `/`. Leading/trailing whitespace is trimmed (a trailing
|
|
35
|
+
* newline from a heredoc is the common case); an interior newline is rejected so
|
|
36
|
+
* the caller notices instead of the daemon quietly treating it as prose.
|
|
37
|
+
*/
|
|
38
|
+
export function validateSlashSend(raw) {
|
|
39
|
+
const command = raw.trim();
|
|
40
|
+
if (!command)
|
|
41
|
+
return { ok: false, error: '--slash 需要一条斜杠命令,例如 --slash "/clear"' };
|
|
42
|
+
if (/[\r\n]/.test(command)) {
|
|
43
|
+
return { ok: false, error: '--slash 只能发送单行斜杠命令(收到含换行的多行内容)' };
|
|
44
|
+
}
|
|
45
|
+
if (!command.startsWith('/')) {
|
|
46
|
+
return { ok: false, error: `--slash 内容必须以 / 开头(收到 ${JSON.stringify(command.slice(0, 24))})` };
|
|
47
|
+
}
|
|
48
|
+
return { ok: true, command };
|
|
49
|
+
}
|
|
20
50
|
/**
|
|
21
51
|
* Upload + post each file as its own message, best-effort. By the time this
|
|
22
52
|
* runs the primary message has already been delivered, so a failure on one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-dispatch.js","sourceRoot":"","sources":["../../src/cli/send-dispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"send-dispatch.js","sourceRoot":"","sources":["../../src/cli/send-dispatch.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -29,7 +29,10 @@ export type StopBotLiveResult = {
|
|
|
29
29
|
* 缺省时使用真实 resolveAdoptRoute(查祖先 PID → daemon)
|
|
30
30
|
* @returns { stdout: string } 应写到 stdout 的内容
|
|
31
31
|
*/
|
|
32
|
-
export declare function runHook(payload: unknown, env: Record<string, string | undefined>, postAskFn: (body: Record<string, unknown>) => Promise<import('./core/ask-types.js').AskResult>, cliId: string, resolveAdoptRouteFn?: () => Promise<import('./adapters/adopt-route.js').AdoptRoute | null
|
|
32
|
+
export declare function runHook(payload: unknown, env: Record<string, string | undefined>, postAskFn: (body: Record<string, unknown>) => Promise<import('./core/ask-types.js').AskResult>, cliId: string, resolveAdoptRouteFn?: () => Promise<import('./adapters/adopt-route.js').AdoptRoute | null>,
|
|
33
|
+
/** 按 OpenCode 原生会话 id(payload.session_id,ses_*)反查所属 botmux 会话;
|
|
34
|
+
* 缺省用真实实现(在线 daemon 并发查询 + budget 封顶)。测试注入 stub。 */
|
|
35
|
+
resolveCliSessionRouteFn?: (cliSessionId: string) => Promise<import('./adapters/adopt-route.js').AdoptRoute | null>): Promise<{
|
|
33
36
|
stdout: string;
|
|
34
37
|
}>;
|
|
35
38
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA6vHA,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA+mPtE;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,qBAAqB,EAAE,SAAS,CAAC,EAC9F,KAAK,EAAE,MAAM,EACb,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC;AAC1F;qDACqD;AACrD,wBAAwB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,GAAG,IAAI,CAAC,GAClH,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuL7B"}
|