botmux 3.13.0 → 3.15.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 +34 -3
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +72 -9
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +7 -0
- 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 +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/cursor.d.ts.map +1 -1
- package/dist/adapters/cli/cursor.js +13 -1
- package/dist/adapters/cli/cursor.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 +100 -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/pi.d.ts +14 -1
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +21 -1
- package/dist/adapters/cli/pi.js.map +1 -1
- 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 +41 -23
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +28 -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 +138 -8
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +76 -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 +673 -402
- 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-discovery.d.ts.map +1 -1
- package/dist/core/command-discovery.js +4 -1
- package/dist/core/command-discovery.js.map +1 -1
- package/dist/core/command-handler.d.ts +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 +359 -11
- 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/skills/frontmatter.d.ts.map +1 -1
- package/dist/core/skills/frontmatter.js +6 -1
- package/dist/core/skills/frontmatter.js.map +1 -1
- package/dist/core/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 +262 -21
- 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 +904 -147
- 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 +9 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +5 -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 +11 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +368 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +8 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/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 +122 -22
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +4 -2
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/web/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-65SMZ4QY.js +10 -0
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +1 -0
- package/dist/dashboard-web/chunks/chunk-IKN6WURK.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-6JTZJRQJ.js → chunk-VMWNR3SV.js} +15 -15
- package/dist/dashboard-web/chunks/{chunk-CU4SUKK3.js → chunk-Z7B3E3US.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-5QJB24I2.js → chunk-Z7DO42GJ.js} +1 -1
- package/dist/dashboard-web/chunks/connectors-page-CPH6VVFY.js +1 -0
- package/dist/dashboard-web/chunks/feedback-page-J2FKQ3LK.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-VDOOLS4M.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-EVGGJI5L.js → insights-page-A2LWTKJD.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-HRGR2ENP.js → monitor-room-2YR752E3.js} +1 -1
- package/dist/dashboard-web/chunks/monitoring-page-BGYSKZGM.js +2 -0
- package/dist/dashboard-web/chunks/office-page-ZZHTEAE4.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-7NYPKQSB.js +1 -0
- package/dist/dashboard-web/chunks/roles-page-YUC4YLJG.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-2L2NKTDJ.js +1 -0
- package/dist/dashboard-web/chunks/{sessions-page-DXBCDWCS.js → sessions-page-DYZZMKFL.js} +1 -1
- package/dist/dashboard-web/chunks/settings-page-LIULUSMH.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-2QAVB2SA.js → skills-page-DQPBBI3T.js} +2 -2
- package/dist/dashboard-web/chunks/team-federation-page-LQKLDV4K.js +1 -0
- package/dist/dashboard-web/chunks/{v3-page-AY35LKCX.js → v3-page-RVKQIMAP.js} +1 -1
- package/dist/dashboard-web/chunks/whiteboards-page-S5K55HRZ.js +1 -0
- package/dist/dashboard-web/style.css +35 -0
- package/dist/dashboard.js +210 -13
- 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 +673 -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 +39 -31
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +39 -31
- 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 +41 -28
- 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 +29 -7
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +58 -16
- 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/peer-cross-ref-store.d.ts +8 -0
- package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
- package/dist/services/peer-cross-ref-store.js +95 -0
- package/dist/services/peer-cross-ref-store.js.map +1 -0
- package/dist/services/pi-transcript.d.ts.map +1 -1
- package/dist/services/pi-transcript.js +10 -6
- package/dist/services/pi-transcript.js.map +1 -1
- package/dist/services/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/structured-bridge-clis.d.ts +13 -4
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +13 -3
- package/dist/services/structured-bridge-clis.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 +11 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/bot-routing.d.ts +1 -1
- package/dist/utils/bot-routing.d.ts.map +1 -1
- package/dist/utils/bot-routing.js.map +1 -1
- package/dist/utils/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 +469 -86
- 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 +5 -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 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-policy.js","sourceRoot":"","sources":["../../src/services/feedback-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { FeedbackEventEnvelope, FrozenWebhookDestination } from './feedback-outbox.js';
|
|
2
|
+
import type { SkillFeedbackStore } from './skill-feedback-store.js';
|
|
3
|
+
export interface AddressRecord {
|
|
4
|
+
address: string;
|
|
5
|
+
family: 4 | 6;
|
|
6
|
+
}
|
|
7
|
+
type Lookup = (hostname: string) => Promise<AddressRecord[]>;
|
|
8
|
+
export declare function validateWebhookDestination(url: string, options?: {
|
|
9
|
+
lookup?: Lookup;
|
|
10
|
+
allowPrivateNetworks?: boolean;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
url: URL;
|
|
13
|
+
hostname: string;
|
|
14
|
+
addresses: AddressRecord[];
|
|
15
|
+
}>;
|
|
16
|
+
export declare class FeedbackWebhookSecretStore {
|
|
17
|
+
private readonly path;
|
|
18
|
+
constructor(dataDir: string);
|
|
19
|
+
private read;
|
|
20
|
+
put(destinationId: string, secret: string): string;
|
|
21
|
+
get(ref: string): string | undefined;
|
|
22
|
+
clear(ref: string): boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function classifyWebhookResponse(status: number): 'delivered' | 'retry' | 'failed';
|
|
25
|
+
export declare function computeRetryDelay(input: {
|
|
26
|
+
attempts: number;
|
|
27
|
+
retryAfter?: string;
|
|
28
|
+
now?: number;
|
|
29
|
+
random?: () => number;
|
|
30
|
+
baseDelayMs?: number;
|
|
31
|
+
maxDelayMs?: number;
|
|
32
|
+
}): number;
|
|
33
|
+
export interface WebhookRequestInput {
|
|
34
|
+
url: URL;
|
|
35
|
+
headers: Record<string, string>;
|
|
36
|
+
body: string;
|
|
37
|
+
timeoutMs: number;
|
|
38
|
+
redirect: 'error';
|
|
39
|
+
pinnedAddress: string;
|
|
40
|
+
signal?: AbortSignal;
|
|
41
|
+
}
|
|
42
|
+
export declare function dispatchWebhookAttempt(input: {
|
|
43
|
+
destination: FrozenWebhookDestination;
|
|
44
|
+
event: FeedbackEventEnvelope;
|
|
45
|
+
secret: string;
|
|
46
|
+
now?: () => number;
|
|
47
|
+
lookup?: Lookup;
|
|
48
|
+
request?: (input: WebhookRequestInput) => Promise<{
|
|
49
|
+
status: number;
|
|
50
|
+
headers: Record<string, string>;
|
|
51
|
+
body: string;
|
|
52
|
+
}>;
|
|
53
|
+
allowPrivateNetworks?: boolean;
|
|
54
|
+
signal?: AbortSignal;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
kind: 'delivered' | 'retry' | 'failed';
|
|
57
|
+
status?: number;
|
|
58
|
+
retryAfter?: string;
|
|
59
|
+
error?: string;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function startFeedbackWebhookDispatcher(options: {
|
|
62
|
+
store: SkillFeedbackStore;
|
|
63
|
+
readSecret: (ref: string) => string | undefined;
|
|
64
|
+
dispatch?: typeof dispatchWebhookAttempt;
|
|
65
|
+
intervalMs?: number;
|
|
66
|
+
staleClaimMs?: number;
|
|
67
|
+
batchSize?: number;
|
|
68
|
+
shutdownMs?: number;
|
|
69
|
+
allowPrivateNetworks?: boolean;
|
|
70
|
+
onError?: (error: unknown) => void;
|
|
71
|
+
}): {
|
|
72
|
+
ready: Promise<void>;
|
|
73
|
+
stop: (timeoutMs?: number) => Promise<void>;
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=feedback-webhook-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-webhook-dispatcher.d.ts","sourceRoot":"","sources":["../../src/services/feedback-webhook-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { createHash, createHmac, randomUUID } from 'node:crypto';
|
|
2
|
+
import { lookup as dnsLookup } from 'node:dns/promises';
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
4
|
+
import { request as httpsRequest } from 'node:https';
|
|
5
|
+
import { isIP } from 'node:net';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
8
|
+
function parseV4(value) {
|
|
9
|
+
const parts = value.split('.').map(Number);
|
|
10
|
+
return parts.length === 4 && parts.every(n => Number.isInteger(n) && n >= 0 && n <= 255) ? parts : undefined;
|
|
11
|
+
}
|
|
12
|
+
function v4Blocked(value) {
|
|
13
|
+
const p = parseV4(value);
|
|
14
|
+
if (!p)
|
|
15
|
+
return true;
|
|
16
|
+
const [a, b, c] = p;
|
|
17
|
+
return a === 0 || a === 10 || a === 127 || a >= 224 ||
|
|
18
|
+
(a === 100 && b >= 64 && b <= 127) || (a === 169 && b === 254) ||
|
|
19
|
+
(a === 172 && b >= 16 && b <= 31) || (a === 192 && b === 168) ||
|
|
20
|
+
(a === 192 && b === 0 && c === 0) || (a === 192 && b === 0 && c === 2) ||
|
|
21
|
+
(a === 198 && (b === 18 || b === 19)) || (a === 198 && b === 51 && c === 100) ||
|
|
22
|
+
(a === 203 && b === 0 && c === 113);
|
|
23
|
+
}
|
|
24
|
+
function addressBlocked(address) {
|
|
25
|
+
let normalized = address.toLowerCase().split('%')[0];
|
|
26
|
+
if (isIP(normalized) === 4)
|
|
27
|
+
return v4Blocked(normalized);
|
|
28
|
+
if (isIP(normalized) !== 6)
|
|
29
|
+
return true;
|
|
30
|
+
// Canonicalize every valid IPv6 spelling before classifying it. DNS can
|
|
31
|
+
// return expanded forms that are loopback/unspecified but evade textual
|
|
32
|
+
// ::/::1 checks. WHATWG URL normalization operates on parsed address words.
|
|
33
|
+
try {
|
|
34
|
+
normalized = new URL(`https://[${normalized}]/`).hostname.slice(1, -1);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const mapped = normalized.match(/^(?:0*:){5}ffff:(\d+\.\d+\.\d+\.\d+)$/);
|
|
40
|
+
if (mapped)
|
|
41
|
+
return v4Blocked(mapped[1]);
|
|
42
|
+
const mappedHex = normalized.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
|
|
43
|
+
if (mappedHex) {
|
|
44
|
+
const hi = Number.parseInt(mappedHex[1], 16), lo = Number.parseInt(mappedHex[2], 16);
|
|
45
|
+
return v4Blocked(`${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`);
|
|
46
|
+
}
|
|
47
|
+
return normalized === '::' || normalized === '::1' || normalized.startsWith('fc') || normalized.startsWith('fd') ||
|
|
48
|
+
/^fe[89ab]/.test(normalized) || normalized.startsWith('ff') || normalized.startsWith('2001:db8:');
|
|
49
|
+
}
|
|
50
|
+
export async function validateWebhookDestination(url, options = {}) {
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = new URL(url);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw new Error('webhook_destination_invalid');
|
|
57
|
+
}
|
|
58
|
+
if (parsed.protocol !== 'https:')
|
|
59
|
+
throw new Error('webhook_destination_https_required');
|
|
60
|
+
if (parsed.username || parsed.password)
|
|
61
|
+
throw new Error('webhook_destination_credentials_forbidden');
|
|
62
|
+
if (parsed.hash)
|
|
63
|
+
throw new Error('webhook_destination_fragment_forbidden');
|
|
64
|
+
if (!parsed.hostname)
|
|
65
|
+
throw new Error('webhook_destination_hostname_required');
|
|
66
|
+
const literal = isIP(parsed.hostname.replace(/^\[|\]$/g, ''));
|
|
67
|
+
const addresses = literal
|
|
68
|
+
? [{ address: parsed.hostname.replace(/^\[|\]$/g, ''), family: literal }]
|
|
69
|
+
: await (options.lookup ?? (async (host) => (await dnsLookup(host, { all: true, verbatim: true }))))(parsed.hostname);
|
|
70
|
+
if (addresses.length === 0)
|
|
71
|
+
throw new Error('webhook_destination_dns_empty');
|
|
72
|
+
if (!options.allowPrivateNetworks && addresses.some(record => addressBlocked(record.address)))
|
|
73
|
+
throw new Error('webhook_destination_address_blocked');
|
|
74
|
+
return { url: parsed, hostname: parsed.hostname, addresses };
|
|
75
|
+
}
|
|
76
|
+
export class FeedbackWebhookSecretStore {
|
|
77
|
+
path;
|
|
78
|
+
constructor(dataDir) { mkdirSync(dataDir, { recursive: true }); this.path = join(dataDir, 'feedback-webhook-secrets.json'); }
|
|
79
|
+
read() {
|
|
80
|
+
if (!existsSync(this.path))
|
|
81
|
+
return {};
|
|
82
|
+
const value = JSON.parse(readFileSync(this.path, 'utf8'));
|
|
83
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
84
|
+
throw new Error('feedback_webhook_secret_store_invalid');
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
put(destinationId, secret) {
|
|
88
|
+
if (!secret)
|
|
89
|
+
throw new Error('feedback_webhook_secret_empty');
|
|
90
|
+
const ref = `feedback-webhook:${createHash('sha256').update(destinationId).digest('hex')}`;
|
|
91
|
+
const all = this.read();
|
|
92
|
+
all[ref] = secret;
|
|
93
|
+
atomicWriteFileSync(this.path, JSON.stringify(all), { mode: 0o600, durable: true, followTargetSymlink: false });
|
|
94
|
+
return ref;
|
|
95
|
+
}
|
|
96
|
+
get(ref) { return this.read()[ref]; }
|
|
97
|
+
clear(ref) { const all = this.read(); if (!(ref in all))
|
|
98
|
+
return false; delete all[ref]; atomicWriteFileSync(this.path, JSON.stringify(all), { mode: 0o600, durable: true, followTargetSymlink: false }); return true; }
|
|
99
|
+
}
|
|
100
|
+
export function classifyWebhookResponse(status) {
|
|
101
|
+
if (status >= 200 && status < 300)
|
|
102
|
+
return 'delivered';
|
|
103
|
+
if (status === 408 || status === 429 || status >= 500)
|
|
104
|
+
return 'retry';
|
|
105
|
+
return 'failed';
|
|
106
|
+
}
|
|
107
|
+
export function computeRetryDelay(input) {
|
|
108
|
+
const cap = input.maxDelayMs ?? 300_000;
|
|
109
|
+
if (input.retryAfter) {
|
|
110
|
+
const seconds = Number(input.retryAfter);
|
|
111
|
+
const absolute = Date.parse(input.retryAfter);
|
|
112
|
+
const delay = Number.isFinite(seconds) ? seconds * 1000 : Number.isFinite(absolute) ? Math.max(0, absolute - (input.now ?? Date.now())) : 0;
|
|
113
|
+
if (delay > 0)
|
|
114
|
+
return Math.min(delay, cap);
|
|
115
|
+
}
|
|
116
|
+
const ceiling = Math.min((input.baseDelayMs ?? 1000) * 2 ** Math.max(0, input.attempts - 1), cap);
|
|
117
|
+
return Math.floor(ceiling * (input.random ?? Math.random)());
|
|
118
|
+
}
|
|
119
|
+
async function nativeRequest(input) {
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
const req = httpsRequest(input.url, {
|
|
122
|
+
method: 'POST', headers: input.headers, timeout: input.timeoutMs, signal: input.signal,
|
|
123
|
+
lookup: (_hostname, _options, callback) => callback(null, input.pinnedAddress, isIP(input.pinnedAddress)),
|
|
124
|
+
}, res => {
|
|
125
|
+
const chunks = [];
|
|
126
|
+
let size = 0;
|
|
127
|
+
res.on('data', chunk => { if (size < 16_384) {
|
|
128
|
+
const b = Buffer.from(chunk);
|
|
129
|
+
chunks.push(b.subarray(0, 16_384 - size));
|
|
130
|
+
size += b.length;
|
|
131
|
+
} });
|
|
132
|
+
res.on('end', () => resolve({ status: res.statusCode ?? 0, headers: Object.fromEntries(Object.entries(res.headers).map(([k, v]) => [k, Array.isArray(v) ? v[0] ?? '' : String(v ?? '')])), body: Buffer.concat(chunks).toString('utf8') }));
|
|
133
|
+
});
|
|
134
|
+
req.on('timeout', () => req.destroy(new Error('webhook_timeout')));
|
|
135
|
+
req.on('error', reject);
|
|
136
|
+
req.end(input.body);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
export async function dispatchWebhookAttempt(input) {
|
|
140
|
+
const target = await validateWebhookDestination(input.destination.url, { lookup: input.lookup, allowPrivateNetworks: input.allowPrivateNetworks });
|
|
141
|
+
const body = JSON.stringify(input.event);
|
|
142
|
+
if (Buffer.byteLength(body) > 256 * 1024)
|
|
143
|
+
return { kind: 'failed', error: 'webhook_body_too_large' };
|
|
144
|
+
const timestamp = String((input.now ?? Date.now)());
|
|
145
|
+
const signature = createHmac('sha256', input.secret).update(`v1.${timestamp}.${body}`).digest('hex');
|
|
146
|
+
try {
|
|
147
|
+
const response = await (input.request ?? nativeRequest)({
|
|
148
|
+
url: target.url, body, timeoutMs: Math.min(Math.max(input.destination.timeoutMs, 100), 30_000), redirect: 'error',
|
|
149
|
+
pinnedAddress: target.addresses[0].address, signal: input.signal,
|
|
150
|
+
headers: { 'Content-Type': 'application/json', 'Content-Length': String(Buffer.byteLength(body)), 'User-Agent': 'botmux-feedback-webhook/1', 'X-Botmux-Event-Id': input.event.eventId, 'X-Botmux-Event-Type': input.event.type, 'X-Botmux-Timestamp': timestamp, 'X-Botmux-Signature': `v1=${signature}` },
|
|
151
|
+
});
|
|
152
|
+
return { kind: classifyWebhookResponse(response.status), status: response.status, ...(response.headers['retry-after'] ? { retryAfter: response.headers['retry-after'] } : {}) };
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return { kind: 'retry', error: String(error?.message ?? error).slice(0, 500) };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export function startFeedbackWebhookDispatcher(options) {
|
|
159
|
+
let stopped = false, timer, running;
|
|
160
|
+
const controller = new AbortController();
|
|
161
|
+
const dispatch = options.dispatch ?? dispatchWebhookAttempt;
|
|
162
|
+
const tick = async () => {
|
|
163
|
+
if (stopped || running)
|
|
164
|
+
return;
|
|
165
|
+
running = (async () => {
|
|
166
|
+
const now = Date.now(), claimToken = randomUUID();
|
|
167
|
+
const rows = options.store.claimFeedbackOutbox({ now, limit: options.batchSize ?? 10, claimToken });
|
|
168
|
+
await Promise.all(rows.map(async (row) => {
|
|
169
|
+
try {
|
|
170
|
+
const secret = options.readSecret(row.destination.secretRef);
|
|
171
|
+
if (!secret) {
|
|
172
|
+
options.store.rescheduleFeedbackOutbox(row.outboxId, claimToken, { now, nextAttemptAt: now, error: 'webhook_secret_missing', permanent: true });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const result = await dispatch({ destination: row.destination, event: row.event, secret, allowPrivateNetworks: options.allowPrivateNetworks, signal: controller.signal });
|
|
176
|
+
if (result.kind === 'delivered') {
|
|
177
|
+
options.store.settleFeedbackOutboxDelivered(row.outboxId, claimToken, result.status ?? 200, new Date().toISOString());
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const delay = result.kind === 'retry' ? computeRetryDelay({ attempts: row.attempts, retryAfter: result.retryAfter }) : 0;
|
|
181
|
+
options.store.rescheduleFeedbackOutbox(row.outboxId, claimToken, { now, nextAttemptAt: now + delay, error: result.error ?? `webhook_http_${result.status ?? 0}`, httpStatus: result.status, permanent: result.kind === 'failed' });
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
options.onError?.(error);
|
|
185
|
+
const delay = computeRetryDelay({ attempts: row.attempts });
|
|
186
|
+
options.store.rescheduleFeedbackOutbox(row.outboxId, claimToken, { now, nextAttemptAt: now + delay, error: String(error?.message ?? error).slice(0, 500), permanent: false });
|
|
187
|
+
}
|
|
188
|
+
}));
|
|
189
|
+
})().finally(() => { running = undefined; });
|
|
190
|
+
await running;
|
|
191
|
+
};
|
|
192
|
+
const installInterval = () => {
|
|
193
|
+
if (stopped || timer)
|
|
194
|
+
return;
|
|
195
|
+
timer = setInterval(() => {
|
|
196
|
+
try {
|
|
197
|
+
options.store.resetExpiredFeedbackOutboxClaims(Date.now(), options.staleClaimMs ?? 60_000);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
options.onError?.(error);
|
|
201
|
+
}
|
|
202
|
+
void tick().catch(error => options.onError?.(error));
|
|
203
|
+
}, options.intervalMs ?? 5_000);
|
|
204
|
+
timer.unref?.();
|
|
205
|
+
};
|
|
206
|
+
const ready = (async () => {
|
|
207
|
+
// The recurring poll MUST be armed regardless of the bootstrap tick's fate:
|
|
208
|
+
// a transient SQLite BUSY during the first reset/tick previously threw
|
|
209
|
+
// before setInterval ran, leaving the outbox permanently unpolled (queued
|
|
210
|
+
// webhooks never delivered until process restart). Report the bootstrap
|
|
211
|
+
// failure but let the self-healing interval take over.
|
|
212
|
+
try {
|
|
213
|
+
options.store.resetExpiredFeedbackOutboxClaims(Date.now(), options.staleClaimMs ?? 60_000);
|
|
214
|
+
await tick();
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
options.onError?.(error);
|
|
218
|
+
}
|
|
219
|
+
finally {
|
|
220
|
+
installInterval();
|
|
221
|
+
}
|
|
222
|
+
})();
|
|
223
|
+
return { ready, stop: async (timeoutMs) => {
|
|
224
|
+
stopped = true;
|
|
225
|
+
if (timer)
|
|
226
|
+
clearInterval(timer);
|
|
227
|
+
controller.abort();
|
|
228
|
+
// Caller (daemon shutdown) passes the REMAINING shared deadline budget so
|
|
229
|
+
// this stop cannot add its own default window on top of the total shutdown
|
|
230
|
+
// deadline. Falls back to shutdownMs/5s only when called without a budget.
|
|
231
|
+
const budget = timeoutMs ?? options.shutdownMs ?? 5_000;
|
|
232
|
+
const pending = running;
|
|
233
|
+
if (pending && budget > 0)
|
|
234
|
+
await Promise.race([pending, new Promise(resolve => { setTimeout(resolve, budget); })]);
|
|
235
|
+
} };
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=feedback-webhook-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-webhook-dispatcher.js","sourceRoot":"","sources":["../../src/services/feedback-webhook-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ export interface BotGrantPrefs {
|
|
|
3
3
|
restrictGrantCommands: boolean;
|
|
4
4
|
/** 未授权 @ 被挡住时是否自动发 grant 申请卡。默认 true。 */
|
|
5
5
|
autoGrantRequestCards: boolean;
|
|
6
|
+
/** 私聊对话全开(talk-only,不授管理权)。默认 false。 */
|
|
7
|
+
p2pOpen: boolean;
|
|
6
8
|
/** 消息额度覆盖值:null = 授权卡内置 3 条、Oncall 不限;正整数 = 两者共同使用。 */
|
|
7
9
|
messageQuotaDefaultLimit: number | null;
|
|
8
10
|
/** 新授权默认有效期:null = 产品默认 1 小时;number = 卡片支持的有限时长(毫秒)。 */
|
|
@@ -14,6 +16,7 @@ export declare function getBotGrantPrefs(larkAppId: string): BotGrantPrefs;
|
|
|
14
16
|
* 持久化一次 grant-prefs 局部修改。只动 patch 里出现的 key。
|
|
15
17
|
* • restrictGrantCommands=false → 删 key(bots.json 保持干净,缺省即默认)
|
|
16
18
|
* • autoGrantRequestCards=true → 删 key(默认开启);false → 显式写 false
|
|
19
|
+
* • p2pOpen=false → 删 key(缺省即关闭);true → 显式写 true
|
|
17
20
|
* • messageQuotaDefaultLimit=null → 删整个 messageQuota(恢复授权卡内置 3 条、Oncall 不限;不动 quotaState)
|
|
18
21
|
* • messageQuotaDefaultLimit=1–1000 的整数 → 写入;其它值直接拒绝,返回 bad_quota
|
|
19
22
|
* • grantDefaultDurationMs=null → 删 key(恢复产品默认 1 小时);合法有限时长 → 写入
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grant-prefs-store.d.ts","sourceRoot":"","sources":["../../src/services/grant-prefs-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grant-prefs-store.d.ts","sourceRoot":"","sources":["../../src/services/grant-prefs-store.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yCAAyC;IACzC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAQD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAqBjE;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkG7E"}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
* 跨进程文件锁 + bots.json 原子写,外加内存 registry 同步,让 daemon 的
|
|
4
4
|
* 路由 / grant 处理不必重启即可生效。
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* 五个独立设置:
|
|
7
7
|
* • restrictGrantCommands — owner 开关:被授权人只能纯对话,拦截一切 slash 命令
|
|
8
8
|
* • autoGrantRequestCards — 未授权者/外部 bot @ 本 bot 但被权限闸挡住时,是否自动发
|
|
9
9
|
* /grant 申请卡给 owner(默认开启;false 显式关闭)
|
|
10
|
+
* • p2pOpen — 私聊对话全开:任何人都能私聊本 bot(talk-only),免逐个
|
|
11
|
+
* 加 globalGrants。只放行 canTalk,管理操作仍只认 allowedUsers。
|
|
10
12
|
* • messageQuota.defaultLimit — 消息额度覆盖值。缺省时授权卡使用内置 3 条、Oncall
|
|
11
13
|
* 不限额;正整数同时覆盖授权卡默认值并限制 Oncall。
|
|
12
14
|
* 显式 `/grant @x N` 恒生效,与此无关。
|
|
@@ -29,6 +31,7 @@ export function getBotGrantPrefs(larkAppId) {
|
|
|
29
31
|
return {
|
|
30
32
|
restrictGrantCommands: c.restrictGrantCommands === true,
|
|
31
33
|
autoGrantRequestCards: c.autoGrantRequestCards !== false,
|
|
34
|
+
p2pOpen: c.p2pOpen === true,
|
|
32
35
|
messageQuotaDefaultLimit: readQuotaLimit(c),
|
|
33
36
|
grantDefaultDurationMs: isGrantDurationOption(c.grantDefaultDurationMs)
|
|
34
37
|
? c.grantDefaultDurationMs
|
|
@@ -39,6 +42,7 @@ export function getBotGrantPrefs(larkAppId) {
|
|
|
39
42
|
return {
|
|
40
43
|
restrictGrantCommands: false,
|
|
41
44
|
autoGrantRequestCards: true,
|
|
45
|
+
p2pOpen: false,
|
|
42
46
|
messageQuotaDefaultLimit: null,
|
|
43
47
|
grantDefaultDurationMs: null,
|
|
44
48
|
};
|
|
@@ -48,6 +52,7 @@ export function getBotGrantPrefs(larkAppId) {
|
|
|
48
52
|
* 持久化一次 grant-prefs 局部修改。只动 patch 里出现的 key。
|
|
49
53
|
* • restrictGrantCommands=false → 删 key(bots.json 保持干净,缺省即默认)
|
|
50
54
|
* • autoGrantRequestCards=true → 删 key(默认开启);false → 显式写 false
|
|
55
|
+
* • p2pOpen=false → 删 key(缺省即关闭);true → 显式写 true
|
|
51
56
|
* • messageQuotaDefaultLimit=null → 删整个 messageQuota(恢复授权卡内置 3 条、Oncall 不限;不动 quotaState)
|
|
52
57
|
* • messageQuotaDefaultLimit=1–1000 的整数 → 写入;其它值直接拒绝,返回 bad_quota
|
|
53
58
|
* • grantDefaultDurationMs=null → 删 key(恢复产品默认 1 小时);合法有限时长 → 写入
|
|
@@ -86,6 +91,13 @@ export async function updateBotGrantPrefs(larkAppId, patch) {
|
|
|
86
91
|
else
|
|
87
92
|
delete entry.autoGrantRequestCards;
|
|
88
93
|
}
|
|
94
|
+
if (patch.p2pOpen !== undefined) {
|
|
95
|
+
// 与 parseBotConfigsFromText 一致:只落显式 true,关闭时删 key(bots.json 保持干净)。
|
|
96
|
+
if (patch.p2pOpen)
|
|
97
|
+
entry.p2pOpen = true;
|
|
98
|
+
else
|
|
99
|
+
delete entry.p2pOpen;
|
|
100
|
+
}
|
|
89
101
|
if (patch.messageQuotaDefaultLimit !== undefined) {
|
|
90
102
|
if (patch.messageQuotaDefaultLimit === null) {
|
|
91
103
|
// 恢复内置策略只删 messageQuota.defaultLimit,保留已有 quotaState 计数。
|
|
@@ -106,6 +118,7 @@ export async function updateBotGrantPrefs(larkAppId, patch) {
|
|
|
106
118
|
result: {
|
|
107
119
|
restrictGrantCommands: entry.restrictGrantCommands === true,
|
|
108
120
|
autoGrantRequestCards: entry.autoGrantRequestCards !== false,
|
|
121
|
+
p2pOpen: entry.p2pOpen === true,
|
|
109
122
|
messageQuotaDefaultLimit: readQuotaLimit(entry),
|
|
110
123
|
grantDefaultDurationMs: isGrantDurationOption(entry.grantDefaultDurationMs)
|
|
111
124
|
? entry.grantDefaultDurationMs
|
|
@@ -122,6 +135,21 @@ export async function updateBotGrantPrefs(larkAppId, patch) {
|
|
|
122
135
|
if (patch.autoGrantRequestCards !== undefined) {
|
|
123
136
|
bot.config.autoGrantRequestCards = patch.autoGrantRequestCards === false ? false : undefined;
|
|
124
137
|
}
|
|
138
|
+
if (patch.p2pOpen !== undefined) {
|
|
139
|
+
bot.config.p2pOpen = patch.p2pOpen || undefined;
|
|
140
|
+
// 与 bot-registry 加载期同款告警:只开 p2pOpen 而没有管理员 = 谁都能私聊,
|
|
141
|
+
// 但没人能执行需要 canOperate 的管理操作(p2pOpen 只授 canTalk)。⚠️ 唯一例外是
|
|
142
|
+
// canTalkDaemonCommands 里被显式降级到 canTalk 的命令——那份名单非空时,私聊者
|
|
143
|
+
// 也能执行它列出的命令,所以两个开关要一起权衡。
|
|
144
|
+
if (patch.p2pOpen && (bot.config.allowedUsers?.length ?? 0) === 0) {
|
|
145
|
+
const downgraded = bot.config.canTalkDaemonCommands ?? [];
|
|
146
|
+
logger.warn(`[grant-prefs:${larkAppId}] p2pOpen 已开启但未配 allowedUsers:`
|
|
147
|
+
+ '任何人都能私聊,但没有人能执行 /restart、/cd、卡片按钮等管理操作。请补上 allowedUsers。'
|
|
148
|
+
+ (downgraded.length
|
|
149
|
+
? ` 另注意 canTalkDaemonCommands=[${downgraded.join(' ')}] 已被降级到「能对话即可用」,私聊者可执行。`
|
|
150
|
+
: ''));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
125
153
|
if (patch.messageQuotaDefaultLimit !== undefined) {
|
|
126
154
|
bot.config.messageQuota = patch.messageQuotaDefaultLimit === null
|
|
127
155
|
? undefined
|
|
@@ -132,6 +160,7 @@ export async function updateBotGrantPrefs(larkAppId, patch) {
|
|
|
132
160
|
}
|
|
133
161
|
logger.info(`[grant-prefs:${larkAppId}] restrictGrantCommands=${r.result.restrictGrantCommands} ` +
|
|
134
162
|
`autoGrantRequestCards=${r.result.autoGrantRequestCards} ` +
|
|
163
|
+
`p2pOpen=${r.result.p2pOpen} ` +
|
|
135
164
|
`messageQuotaDefaultLimit=${r.result.messageQuotaDefaultLimit ?? 'built-in'} ` +
|
|
136
165
|
`grantDefaultDurationMs=${r.result.grantDefaultDurationMs ?? 'default'}`);
|
|
137
166
|
return { ok: true, prefs: r.result };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grant-prefs-store.js","sourceRoot":"","sources":["../../src/services/grant-prefs-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"grant-prefs-store.js","sourceRoot":"","sources":["../../src/services/grant-prefs-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAe3E,wEAAwE;AACxE,SAAS,cAAc,CAAC,CAA+C;IACrE,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC;IACvC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QACnC,OAAO;YACL,qBAAqB,EAAE,CAAC,CAAC,qBAAqB,KAAK,IAAI;YACvD,qBAAqB,EAAE,CAAC,CAAC,qBAAqB,KAAK,KAAK;YACxD,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI;YAC3B,wBAAwB,EAAE,cAAc,CAAC,CAAC,CAAC;YAC3C,sBAAsB,EAAE,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBACrE,CAAC,CAAC,CAAC,CAAC,sBAAsB;gBAC1B,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,qBAAqB,EAAE,KAAK;YAC5B,qBAAqB,EAAE,IAAI;YAC3B,OAAO,EAAE,KAAK;YACd,wBAAwB,EAAE,IAAI;YAC9B,sBAAsB,EAAE,IAAI;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,KAA6B;IAE7B,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAAC,CAAC;IAE9F,uCAAuC;IACvC,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,IAAI,KAAK,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QAC5F,MAAM,CAAC,GAAG,KAAK,CAAC,wBAAwB,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC;YACnF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS;WACzC,KAAK,CAAC,sBAAsB,KAAK,IAAI;WACrC,CAAC,qBAAqB,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,WAAW,CAAgB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC9D,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,qBAAqB;gBAAE,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;;gBAC/D,OAAO,KAAK,CAAC,qBAAqB,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,qBAAqB,KAAK,KAAK;gBAAE,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC;;gBAC1E,OAAO,KAAK,CAAC,qBAAqB,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,mEAAmE;YACnE,IAAI,KAAK,CAAC,OAAO;gBAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;;gBACnC,OAAO,KAAK,CAAC,OAAO,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;gBAC5C,yDAAyD;gBACzD,OAAO,KAAK,CAAC,YAAY,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACvG,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,sBAAsB,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC,sBAAsB,CAAC;;gBAC1E,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QACnE,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE;gBACN,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,KAAK,IAAI;gBAC3D,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,KAAK,KAAK;gBAC5D,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;gBAC/B,wBAAwB,EAAE,cAAc,CAAC,KAAK,CAAC;gBAC/C,sBAAsB,EAAE,qBAAqB,CAAC,KAAK,CAAC,sBAAsB,CAAC;oBACzE,CAAC,CAAC,KAAK,CAAC,sBAAsB;oBAC9B,CAAC,CAAC,IAAI;aACT;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAElD,mCAAmC;IACnC,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,IAAI,SAAS,CAAC;IAC9E,CAAC;IACD,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;QAChD,oDAAoD;QACpD,yDAAyD;QACzD,yDAAyD;QACzD,0BAA0B;QAC1B,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CACT,gBAAgB,SAAS,gCAAgC;kBACvD,0DAA0D;kBAC1D,CAAC,UAAU,CAAC,MAAM;oBAClB,CAAC,CAAC,+BAA+B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB;oBAC9E,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,wBAAwB,KAAK,IAAI;YAC/D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,IAAI,SAAS,CAAC;IAChF,CAAC;IACD,MAAM,CAAC,IAAI,CACT,gBAAgB,SAAS,2BAA2B,CAAC,CAAC,MAAM,CAAC,qBAAqB,GAAG;QACrF,yBAAyB,CAAC,CAAC,MAAM,CAAC,qBAAqB,GAAG;QAC1D,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG;QAC9B,4BAA4B,CAAC,CAAC,MAAM,CAAC,wBAAwB,IAAI,UAAU,GAAG;QAC9E,0BAA0B,CAAC,CAAC,MAAM,CAAC,sBAAsB,IAAI,SAAS,EAAE,CACzE,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -92,6 +92,20 @@ export declare function transferChatOwner(ownerLarkAppId: string, chatId: string
|
|
|
92
92
|
ok: false;
|
|
93
93
|
error: string;
|
|
94
94
|
}>;
|
|
95
|
+
/**
|
|
96
|
+
* Disband a chat the calling bot OWNS. Used by the session-group birth flow
|
|
97
|
+
* to clean up an orphan group when the initiating user's invite was rejected
|
|
98
|
+
* — the group can never serve as a conversation home, so leaving it behind
|
|
99
|
+
* would strand an empty bot-owned chat in the tenant (PR review).
|
|
100
|
+
*
|
|
101
|
+
* Calls DELETE /open-apis/im/v1/chats/:chat_id (owner-only).
|
|
102
|
+
*/
|
|
103
|
+
export declare function deleteChat(larkAppId: string, chatId: string): Promise<{
|
|
104
|
+
ok: true;
|
|
105
|
+
} | {
|
|
106
|
+
ok: false;
|
|
107
|
+
error: string;
|
|
108
|
+
}>;
|
|
95
109
|
/**
|
|
96
110
|
* Fetch the current owner of a chat (open_id by default, optionally union_id).
|
|
97
111
|
* Used by group-creator to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups-store.d.ts","sourceRoot":"","sources":["../../src/services/groups-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"groups-store.d.ts","sourceRoot":"","sources":["../../src/services/groups-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -199,6 +199,29 @@ export async function transferChatOwner(ownerLarkAppId, chatId, newOwnerId, user
|
|
|
199
199
|
return { ok: false, error: e?.message ?? String(e) };
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Disband a chat the calling bot OWNS. Used by the session-group birth flow
|
|
204
|
+
* to clean up an orphan group when the initiating user's invite was rejected
|
|
205
|
+
* — the group can never serve as a conversation home, so leaving it behind
|
|
206
|
+
* would strand an empty bot-owned chat in the tenant (PR review).
|
|
207
|
+
*
|
|
208
|
+
* Calls DELETE /open-apis/im/v1/chats/:chat_id (owner-only).
|
|
209
|
+
*/
|
|
210
|
+
export async function deleteChat(larkAppId, chatId) {
|
|
211
|
+
const client = getBotClient(larkAppId);
|
|
212
|
+
try {
|
|
213
|
+
const res = await client.im.v1.chat.delete({
|
|
214
|
+
path: { chat_id: chatId },
|
|
215
|
+
});
|
|
216
|
+
if (res.code !== 0 && res.code !== undefined) {
|
|
217
|
+
return { ok: false, error: `${res.msg ?? 'unknown'} (code: ${res.code})` };
|
|
218
|
+
}
|
|
219
|
+
return { ok: true };
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
return { ok: false, error: e?.message ?? String(e) };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
202
225
|
/**
|
|
203
226
|
* Fetch the current owner of a chat (open_id by default, optionally union_id).
|
|
204
227
|
* Used by group-creator to
|