botmux 3.7.1 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/capabilities.d.ts +17 -0
- package/dist/adapters/backend/capabilities.d.ts.map +1 -0
- package/dist/adapters/backend/capabilities.js +22 -0
- package/dist/adapters/backend/capabilities.js.map +1 -0
- package/dist/adapters/backend/critical-control-key.d.ts +19 -0
- package/dist/adapters/backend/critical-control-key.d.ts.map +1 -0
- package/dist/adapters/backend/critical-control-key.js +34 -0
- package/dist/adapters/backend/critical-control-key.js.map +1 -0
- package/dist/adapters/backend/herdr-backend.d.ts +9 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +23 -4
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +3 -2
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/session-backend-selector.d.ts +61 -6
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
- package/dist/adapters/backend/session-backend-selector.js +173 -9
- package/dist/adapters/backend/session-backend-selector.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +10 -3
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +25 -8
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +3 -2
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +45 -4
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js +11 -0
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +3 -2
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zmx-backend.d.ts +286 -0
- package/dist/adapters/backend/zmx-backend.d.ts.map +1 -0
- package/dist/adapters/backend/zmx-backend.js +2396 -0
- package/dist/adapters/backend/zmx-backend.js.map +1 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +3 -0
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +5 -1
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +26 -1
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/fs-policy.d.ts +79 -1
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
- package/dist/adapters/cli/fs-policy.js +290 -13
- package/dist/adapters/cli/fs-policy.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +4 -1
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
- package/dist/adapters/cli/oh-my-pi.js +5 -3
- package/dist/adapters/cli/oh-my-pi.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +7 -4
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +52 -35
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/strict-input-handle.d.ts +13 -0
- package/dist/adapters/cli/strict-input-handle.d.ts.map +1 -0
- package/dist/adapters/cli/strict-input-handle.js +39 -0
- package/dist/adapters/cli/strict-input-handle.js.map +1 -0
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +6 -4
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +16 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +137 -8
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +298 -12
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/session-list-liveness.d.ts +1 -1
- package/dist/cli/session-list-liveness.js +1 -1
- package/dist/cli/zmx-managed-attach.d.ts +41 -0
- package/dist/cli/zmx-managed-attach.d.ts.map +1 -0
- package/dist/cli/zmx-managed-attach.js +72 -0
- package/dist/cli/zmx-managed-attach.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +780 -131
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +90 -2
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/codex-rpc-engine.d.ts.map +1 -1
- package/dist/codex-rpc-engine.js +22 -6
- package/dist/codex-rpc-engine.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -1
- package/dist/config.js.map +1 -1
- package/dist/core/ask-broker.d.ts +22 -1
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +12 -5
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/botmux-wrapper.d.ts +18 -0
- package/dist/core/botmux-wrapper.d.ts.map +1 -1
- package/dist/core/botmux-wrapper.js +25 -1
- package/dist/core/botmux-wrapper.js.map +1 -1
- package/dist/core/chat-rename.d.ts +27 -0
- package/dist/core/chat-rename.d.ts.map +1 -0
- package/dist/core/chat-rename.js +53 -0
- package/dist/core/chat-rename.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +160 -12
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +25 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +102 -4
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +16 -2
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +611 -62
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +22 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +61 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +6 -0
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +11 -1
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/device-isolation-daemon.d.ts +28 -6
- package/dist/core/device-isolation-daemon.d.ts.map +1 -1
- package/dist/core/device-isolation-daemon.js +96 -13
- package/dist/core/device-isolation-daemon.js.map +1 -1
- package/dist/core/host-overload-alert.d.ts +75 -0
- package/dist/core/host-overload-alert.d.ts.map +1 -1
- package/dist/core/host-overload-alert.js +103 -0
- package/dist/core/host-overload-alert.js.map +1 -1
- package/dist/core/idle-worker-sweeper.js +1 -1
- package/dist/core/idle-worker-sweeper.js.map +1 -1
- package/dist/core/inflight-input-tracker.d.ts +3 -0
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js +9 -0
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +10 -0
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/persistent-backend.d.ts +32 -4
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +75 -6
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/plugins/mcp/gateway.js +2 -2
- package/dist/core/plugins/mcp/gateway.js.map +1 -1
- package/dist/core/plugins/runtime.d.ts +3 -0
- package/dist/core/plugins/runtime.d.ts.map +1 -1
- package/dist/core/plugins/runtime.js.map +1 -1
- package/dist/core/plugins/service-manager.d.ts +4 -1
- package/dist/core/plugins/service-manager.d.ts.map +1 -1
- package/dist/core/plugins/service-manager.js +11 -6
- package/dist/core/plugins/service-manager.js.map +1 -1
- package/dist/core/role-library.d.ts +48 -1
- package/dist/core/role-library.d.ts.map +1 -1
- package/dist/core/role-library.js +111 -3
- package/dist/core/role-library.js.map +1 -1
- package/dist/core/role-resolver.d.ts +14 -2
- package/dist/core/role-resolver.d.ts.map +1 -1
- package/dist/core/role-resolver.js +47 -4
- package/dist/core/role-resolver.js.map +1 -1
- package/dist/core/session-activity.d.ts +14 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +46 -1
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/session-board.d.ts +5 -2
- package/dist/core/session-board.d.ts.map +1 -1
- package/dist/core/session-board.js +5 -2
- package/dist/core/session-board.js.map +1 -1
- package/dist/core/session-liveness.d.ts +6 -5
- package/dist/core/session-liveness.d.ts.map +1 -1
- package/dist/core/session-liveness.js +34 -13
- package/dist/core/session-liveness.js.map +1 -1
- package/dist/core/session-manager.d.ts +3 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +397 -103
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-marker.d.ts +11 -2
- package/dist/core/session-marker.d.ts.map +1 -1
- package/dist/core/session-marker.js +50 -11
- package/dist/core/session-marker.js.map +1 -1
- package/dist/core/session-message-preview.d.ts +20 -0
- package/dist/core/session-message-preview.d.ts.map +1 -0
- package/dist/core/session-message-preview.js +188 -0
- package/dist/core/session-message-preview.js.map +1 -0
- package/dist/core/session-title.d.ts +5 -1
- package/dist/core/session-title.d.ts.map +1 -1
- package/dist/core/session-title.js +20 -3
- package/dist/core/session-title.js.map +1 -1
- package/dist/core/startup-commands.d.ts +1 -1
- package/dist/core/startup-commands.js +1 -1
- package/dist/core/terminal-url.d.ts.map +1 -1
- package/dist/core/terminal-url.js +3 -2
- package/dist/core/terminal-url.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +75 -12
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +35 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +23 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-ipc.d.ts +11 -0
- package/dist/core/worker-ipc.d.ts.map +1 -0
- package/dist/core/worker-ipc.js +26 -0
- package/dist/core/worker-ipc.js.map +1 -0
- package/dist/core/worker-pool.d.ts +179 -29
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2118 -331
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +132 -3
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +1327 -449
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +2 -0
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +9 -0
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +4 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +5 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/federation-api.d.ts.map +1 -1
- package/dist/dashboard/federation-api.js +4 -0
- package/dist/dashboard/federation-api.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +32 -5
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/public-redact.d.ts +8 -2
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +34 -7
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/session-card-model.d.ts.map +1 -1
- package/dist/dashboard/session-card-model.js +10 -2
- package/dist/dashboard/session-card-model.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +35 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +88 -1
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +0 -1
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +15 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +212 -58
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +3 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts +2 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/clipboard.d.ts +2 -0
- package/dist/dashboard/web/clipboard.d.ts.map +1 -0
- package/dist/dashboard/web/clipboard.js +42 -0
- package/dist/dashboard/web/clipboard.js.map +1 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +12 -8
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/dashboard-components.d.ts +17 -16
- package/dist/dashboard/web/dashboard-components.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-components.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +7 -3
- 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 +205 -12
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -1
- package/dist/dashboard/web/icon-tooltip.js +16 -1
- package/dist/dashboard/web/icon-tooltip.js.map +1 -1
- package/dist/dashboard/web/listener-filters.d.ts +23 -0
- package/dist/dashboard/web/listener-filters.d.ts.map +1 -0
- package/dist/dashboard/web/listener-filters.js +36 -0
- package/dist/dashboard/web/listener-filters.js.map +1 -0
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/plugin-page.d.ts.map +1 -1
- package/dist/dashboard/web/plugin-page.js.map +1 -1
- package/dist/dashboard/web/preview-markdown.d.ts +5 -0
- package/dist/dashboard/web/preview-markdown.d.ts.map +1 -0
- package/dist/dashboard/web/preview-markdown.js +52 -0
- package/dist/dashboard/web/preview-markdown.js.map +1 -0
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +535 -10
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard/web/roles.d.ts +77 -0
- package/dist/dashboard/web/roles.d.ts.map +1 -1
- package/dist/dashboard/web/roles.js +98 -0
- package/dist/dashboard/web/roles.js.map +1 -1
- package/dist/dashboard/web/session-terminal.d.ts.map +1 -1
- package/dist/dashboard/web/session-terminal.js +6 -4
- package/dist/dashboard/web/session-terminal.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts +4 -1
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-kanban.js +1 -1
- package/dist/dashboard/web/sessions-kanban.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts +3 -2
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +163 -28
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +25 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +58 -7
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +28 -3
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +61 -1
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts +6 -5
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +2 -0
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/web/v3-components.d.ts +3 -2
- package/dist/dashboard/web/v3-components.d.ts.map +1 -1
- package/dist/dashboard/web/v3-components.js.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +12 -2
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.js +0 -9
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
- package/dist/dashboard/web/webhook-logs-page.d.ts +2 -1
- package/dist/dashboard/web/webhook-logs-page.d.ts.map +1 -1
- package/dist/dashboard/web/webhook-logs-page.js +4 -1
- package/dist/dashboard/web/webhook-logs-page.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-FAPIMQV3.js +10 -0
- package/dist/dashboard-web/chunks/{chunk-QFMH6ITB.js → chunk-5CJMHTT4.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-KQB42ML5.js → chunk-DLZK52JU.js} +14 -12
- package/dist/dashboard-web/chunks/chunk-FDZ7WOBW.js +16 -0
- package/dist/dashboard-web/chunks/{chunk-3QAUJXAS.js → chunk-GTAJV5YC.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-FNPGOZMX.js → chunk-IHNG6KE6.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-FLGXZJTD.js → chunk-VA6QWSGQ.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +1 -0
- package/dist/dashboard-web/chunks/chunk-ZJVTGU5X.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-LKWRT3GS.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-V6654ICQ.js +8 -0
- package/dist/dashboard-web/chunks/insights-page-237RMFQ5.js +7 -0
- package/dist/dashboard-web/chunks/{monitor-room-7IVIS75W.js → monitor-room-OO5Y4FRQ.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-5SSJRQZF.js → monitoring-page-OUEITM5P.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-EOND3L5D.js → office-page-4KNAHQ4Q.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-NISBVBBJ.js → overview-page-QDP4YK2S.js} +1 -1
- package/dist/dashboard-web/chunks/{plugin-page-JXC5F5YV.js → plugin-page-VEGTCEAS.js} +1 -1
- package/dist/dashboard-web/chunks/roles-page-PGXNZZNP.js +1 -0
- package/dist/dashboard-web/chunks/{schedules-page-AVOOKLUH.js → schedules-page-BJNC5TID.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-M2ZYYCMO.js +6 -0
- package/dist/dashboard-web/chunks/settings-page-IJFZKUUW.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-5MW54PCC.js → skills-page-YRAIRZOQ.js} +3 -3
- package/dist/dashboard-web/chunks/{team-federation-page-2SNIMVXI.js → team-federation-page-DEU27GRU.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-W6SBXXQC.js → v3-page-6KHEW2YL.js} +5 -5
- package/dist/dashboard-web/chunks/{whiteboards-page-STC54KTP.js → whiteboards-page-VDECAALH.js} +1 -1
- package/dist/dashboard-web/style.css +12545 -11432
- package/dist/dashboard.js +215 -36
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +41 -2
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +47 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +71 -19
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +71 -19
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/callback-button-marker.d.ts +34 -0
- package/dist/im/lark/callback-button-marker.d.ts.map +1 -0
- package/dist/im/lark/callback-button-marker.js +99 -0
- package/dist/im/lark/callback-button-marker.js.map +1 -0
- package/dist/im/lark/card-builder.d.ts +46 -10
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +299 -78
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +3 -4
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +380 -148
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +24 -1
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +101 -8
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/doc-comment.d.ts.map +1 -1
- package/dist/im/lark/doc-comment.js +6 -1
- package/dist/im/lark/doc-comment.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +115 -3
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +534 -147
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/grant-command.d.ts +16 -12
- package/dist/im/lark/grant-command.d.ts.map +1 -1
- package/dist/im/lark/grant-command.js +48 -151
- package/dist/im/lark/grant-command.js.map +1 -1
- package/dist/im/lark/grant-pending.d.ts +12 -4
- package/dist/im/lark/grant-pending.d.ts.map +1 -1
- package/dist/im/lark/grant-pending.js +31 -8
- package/dist/im/lark/grant-pending.js.map +1 -1
- package/dist/im/lark/invite-command.d.ts +20 -0
- package/dist/im/lark/invite-command.d.ts.map +1 -0
- package/dist/im/lark/invite-command.js +239 -0
- package/dist/im/lark/invite-command.js.map +1 -0
- package/dist/im/lark/md-card.d.ts +66 -4
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +201 -31
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/mention-targets.d.ts +43 -0
- package/dist/im/lark/mention-targets.d.ts.map +1 -0
- package/dist/im/lark/mention-targets.js +190 -0
- package/dist/im/lark/mention-targets.js.map +1 -0
- package/dist/im/lark/message-parser.d.ts +31 -0
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +305 -32
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/reply-card-footer-signature.d.ts +7 -0
- package/dist/im/lark/reply-card-footer-signature.d.ts.map +1 -0
- package/dist/im/lark/reply-card-footer-signature.js +7 -0
- package/dist/im/lark/reply-card-footer-signature.js.map +1 -0
- package/dist/im/lark/sessions-card.d.ts.map +1 -1
- package/dist/im/lark/sessions-card.js +4 -1
- package/dist/im/lark/sessions-card.js.map +1 -1
- package/dist/im/lark/substitute-command.d.ts.map +1 -1
- package/dist/im/lark/substitute-command.js +8 -0
- package/dist/im/lark/substitute-command.js.map +1 -1
- package/dist/im/lark/topic-root-context.d.ts +35 -0
- package/dist/im/lark/topic-root-context.d.ts.map +1 -0
- package/dist/im/lark/topic-root-context.js +37 -0
- package/dist/im/lark/topic-root-context.js.map +1 -0
- package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
- package/dist/im/lark/v3-blocked-card.js +2 -1
- package/dist/im/lark/v3-blocked-card.js.map +1 -1
- package/dist/im/lark/v3-gate-card.d.ts.map +1 -1
- package/dist/im/lark/v3-gate-card.js +2 -1
- package/dist/im/lark/v3-gate-card.js.map +1 -1
- package/dist/im/lark/v3-loop-grant-card.d.ts.map +1 -1
- package/dist/im/lark/v3-loop-grant-card.js +2 -1
- package/dist/im/lark/v3-loop-grant-card.js.map +1 -1
- package/dist/im/lark/v3-progress-card.d.ts.map +1 -1
- package/dist/im/lark/v3-progress-card.js +2 -1
- package/dist/im/lark/v3-progress-card.js.map +1 -1
- package/dist/im/lark/v3-revisit-grant-card.d.ts.map +1 -1
- package/dist/im/lark/v3-revisit-grant-card.js +2 -1
- package/dist/im/lark/v3-revisit-grant-card.js.map +1 -1
- package/dist/index-core-only.d.ts +3 -0
- package/dist/index-core-only.d.ts.map +1 -0
- package/dist/index-core-only.js +107 -0
- package/dist/index-core-only.js.map +1 -0
- package/dist/services/async-trigger-state.d.ts +8 -0
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +3 -2
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +10 -2
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +3 -2
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/backend-availability.d.ts +3 -1
- package/dist/services/backend-availability.d.ts.map +1 -1
- package/dist/services/backend-availability.js +14 -1
- package/dist/services/backend-availability.js.map +1 -1
- package/dist/services/backend-type-store.d.ts.map +1 -1
- package/dist/services/backend-type-store.js +1 -1
- package/dist/services/backend-type-store.js.map +1 -1
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +2 -1
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bridge-fallback-gate.d.ts +14 -1
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +65 -1
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/card-prefs-store.d.ts +7 -2
- package/dist/services/card-prefs-store.d.ts.map +1 -1
- package/dist/services/card-prefs-store.js +30 -4
- package/dist/services/card-prefs-store.js.map +1 -1
- package/dist/services/codex-app-runner-protocol.d.ts +9 -0
- package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
- package/dist/services/codex-app-runner-protocol.js +17 -0
- package/dist/services/codex-app-runner-protocol.js.map +1 -1
- package/dist/services/codex-app-token-usage.d.ts +93 -0
- package/dist/services/codex-app-token-usage.d.ts.map +1 -0
- package/dist/services/codex-app-token-usage.js +190 -0
- package/dist/services/codex-app-token-usage.js.map +1 -0
- package/dist/services/codex-transcript.d.ts +6 -1
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +103 -32
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/federation-roster.d.ts +4 -0
- package/dist/services/federation-roster.d.ts.map +1 -1
- package/dist/services/federation-roster.js +3 -0
- package/dist/services/federation-roster.js.map +1 -1
- package/dist/services/federation-store.d.ts +6 -0
- package/dist/services/federation-store.d.ts.map +1 -1
- package/dist/services/federation-store.js.map +1 -1
- package/dist/services/grant-policy.d.ts +13 -0
- package/dist/services/grant-policy.d.ts.map +1 -0
- package/dist/services/grant-policy.js +40 -0
- package/dist/services/grant-policy.js.map +1 -0
- package/dist/services/grant-store.d.ts +24 -3
- package/dist/services/grant-store.d.ts.map +1 -1
- package/dist/services/grant-store.js +196 -12
- package/dist/services/grant-store.js.map +1 -1
- package/dist/services/groups-store.d.ts +36 -0
- package/dist/services/groups-store.d.ts.map +1 -1
- package/dist/services/groups-store.js +123 -1
- package/dist/services/groups-store.js.map +1 -1
- package/dist/services/jsonl-cursor.d.ts.map +1 -1
- package/dist/services/jsonl-cursor.js +8 -2
- package/dist/services/jsonl-cursor.js.map +1 -1
- package/dist/services/local-cli-opener.d.ts.map +1 -1
- package/dist/services/local-cli-opener.js +32 -0
- package/dist/services/local-cli-opener.js.map +1 -1
- package/dist/services/message-listener-run-preview-store.d.ts +43 -0
- package/dist/services/message-listener-run-preview-store.d.ts.map +1 -0
- package/dist/services/message-listener-run-preview-store.js +152 -0
- package/dist/services/message-listener-run-preview-store.js.map +1 -0
- package/dist/services/message-listener-store.d.ts +26 -0
- package/dist/services/message-listener-store.d.ts.map +1 -0
- package/dist/services/message-listener-store.js +138 -0
- package/dist/services/message-listener-store.js.map +1 -0
- package/dist/services/message-listener.d.ts +112 -0
- package/dist/services/message-listener.d.ts.map +1 -0
- package/dist/services/message-listener.js +391 -0
- package/dist/services/message-listener.js.map +1 -0
- package/dist/services/overload-alert-migration.d.ts +15 -0
- package/dist/services/overload-alert-migration.d.ts.map +1 -0
- package/dist/services/overload-alert-migration.js +115 -0
- package/dist/services/overload-alert-migration.js.map +1 -0
- package/dist/services/send-policy.d.ts +38 -0
- package/dist/services/send-policy.d.ts.map +1 -1
- package/dist/services/send-policy.js +34 -0
- package/dist/services/send-policy.js.map +1 -1
- package/dist/services/session-store.d.ts +12 -1
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +44 -2
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +87 -12
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/substitute-mode-normalize.d.ts +3 -0
- package/dist/services/substitute-mode-normalize.d.ts.map +1 -1
- package/dist/services/substitute-mode-normalize.js +8 -0
- package/dist/services/substitute-mode-normalize.js.map +1 -1
- package/dist/services/substitute-mode-store.d.ts.map +1 -1
- package/dist/services/substitute-mode-store.js +8 -1
- package/dist/services/substitute-mode-store.js.map +1 -1
- package/dist/services/transcript-resolver.d.ts +6 -1
- package/dist/services/transcript-resolver.d.ts.map +1 -1
- package/dist/services/transcript-resolver.js +145 -29
- package/dist/services/transcript-resolver.js.map +1 -1
- package/dist/services/trigger-types.d.ts +16 -0
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +6 -0
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/setup/bot-config-editor.js +2 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-zmx.d.ts +31 -0
- package/dist/setup/ensure-zmx.d.ts.map +1 -0
- package/dist/setup/ensure-zmx.js +161 -0
- package/dist/setup/ensure-zmx.js.map +1 -0
- package/dist/setup/index.d.ts +1 -1
- package/dist/setup/index.js +1 -1
- package/dist/setup/open-platform-automation.d.ts +9 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +15 -2
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/setup-args.d.ts +1 -1
- package/dist/setup/setup-args.d.ts.map +1 -1
- package/dist/setup/setup-args.js +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +32 -0
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +6 -2
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +10 -5
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/types.d.ts +79 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +4 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/effort-confirm-dialog.d.ts +40 -0
- package/dist/utils/effort-confirm-dialog.d.ts.map +1 -0
- package/dist/utils/effort-confirm-dialog.js +74 -0
- package/dist/utils/effort-confirm-dialog.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +56 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +80 -0
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/utils/render-dimensions.d.ts +8 -0
- package/dist/utils/render-dimensions.d.ts.map +1 -1
- package/dist/utils/render-dimensions.js +10 -0
- package/dist/utils/render-dimensions.js.map +1 -1
- package/dist/utils/stuck-key-guard.d.ts +3 -2
- package/dist/utils/stuck-key-guard.d.ts.map +1 -1
- package/dist/utils/stuck-key-guard.js +3 -3
- package/dist/utils/stuck-key-guard.js.map +1 -1
- package/dist/utils/terminal-renderer.d.ts +6 -0
- package/dist/utils/terminal-renderer.d.ts.map +1 -1
- package/dist/utils/terminal-renderer.js +15 -0
- package/dist/utils/terminal-renderer.js.map +1 -1
- package/dist/utils/tui-input-delivery.d.ts +32 -0
- package/dist/utils/tui-input-delivery.d.ts.map +1 -0
- package/dist/utils/tui-input-delivery.js +53 -0
- package/dist/utils/tui-input-delivery.js.map +1 -0
- package/dist/utils/xml.d.ts +19 -0
- package/dist/utils/xml.d.ts.map +1 -0
- package/dist/utils/xml.js +26 -0
- package/dist/utils/xml.js.map +1 -0
- package/dist/worker.js +1852 -374
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +8 -8
- package/dist/workflows/events/payloads.d.ts +8 -8
- package/dist/workflows/events/schema.d.ts +160 -160
- package/dist/workflows/v3/session-relay-client.js +1 -1
- package/dist/workflows/v3/session-relay-client.js.map +1 -1
- package/dist/workflows/v3/worker-fence.d.ts.map +1 -1
- package/dist/workflows/v3/worker-fence.js +15 -10
- package/dist/workflows/v3/worker-fence.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-UKA7K4JV.js +0 -10
- package/dist/dashboard-web/chunks/chunk-DFLNXQNT.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-A77YAB5Y.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-RUZNVXQB.js +0 -8
- package/dist/dashboard-web/chunks/insights-page-RF7U7RTA.js +0 -22
- package/dist/dashboard-web/chunks/roles-page-BUMKD7Y4.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-6HLSEAB7.js +0 -2
- package/dist/dashboard-web/chunks/settings-page-MJDZHQ4X.js +0 -2
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
* disk and threads them through here.
|
|
9
9
|
*
|
|
10
10
|
* Rules:
|
|
11
|
+
* - Non-adopt + no-reply sentinel terminator: suppress the whole turn.
|
|
12
|
+
* Botmux-aware models use this explicit protocol when a turn genuinely
|
|
13
|
+
* needs no chat response. The signal is the LAST non-empty line of the
|
|
14
|
+
* final being exactly `BOTMUX_NO_REPLY` — models almost always explain
|
|
15
|
+
* the silence first and then append the token on its own line, so a
|
|
16
|
+
* full-string exact match leaked the literal token into Lark. A token
|
|
17
|
+
* that only appears inline (mid-sentence, or with prose after it) is
|
|
18
|
+
* still a normal answer and is NOT guessed away. See isBridgeNoReplyFinal.
|
|
11
19
|
* - Adopt mode never suppresses: in /adopt the model in the adopted
|
|
12
20
|
* session is unaware of botmux, so transcript drain is the ONLY
|
|
13
21
|
* channel from model to Lark. There's no `botmux send` to compete
|
|
@@ -33,11 +41,65 @@
|
|
|
33
41
|
import { normaliseForFingerprint } from './bridge-turn-queue.js';
|
|
34
42
|
const MATERIAL_FINAL_LENGTH_RATIO = 2;
|
|
35
43
|
const MATERIAL_FINAL_MIN_EXTRA_CHARS = 120;
|
|
44
|
+
export const BRIDGE_NO_REPLY_SENTINEL = 'BOTMUX_NO_REPLY';
|
|
45
|
+
export function isBridgeNoReplyFinal(finalText) {
|
|
46
|
+
if (finalText === undefined)
|
|
47
|
+
return false;
|
|
48
|
+
// Suppress the whole turn when the model's final ENDS WITH a standalone
|
|
49
|
+
// no-reply sentinel line. We look at the LAST non-empty line only:
|
|
50
|
+
// - pure `BOTMUX_NO_REPLY` → suppress
|
|
51
|
+
// - `<prose>\n\nBOTMUX_NO_REPLY` → suppress the whole turn
|
|
52
|
+
// - a final whose last non-empty line is prose → NOT a no-reply signal
|
|
53
|
+
// (the token inline in a sentence, or followed by more prose, still posts)
|
|
54
|
+
// Full-string exact match was too brittle: botmux-aware models almost always
|
|
55
|
+
// explain the silence first ("...no reply needed.") and then append the token
|
|
56
|
+
// on its own line, which exact match let leak the literal token into Lark.
|
|
57
|
+
// Trade-off (accepted): a genuine answer that happens to end with a bare
|
|
58
|
+
// sentinel line is dropped WHOLE — the product wants a fully silent no-reply
|
|
59
|
+
// turn over the safer strip-and-forward. The last-non-empty-line rule (not a
|
|
60
|
+
// substring / endsWith test) keeps that risk to finals the model deliberately
|
|
61
|
+
// terminated with the sentinel.
|
|
62
|
+
const lines = finalText.split('\n');
|
|
63
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
64
|
+
const line = lines[i].trim();
|
|
65
|
+
if (line.length === 0)
|
|
66
|
+
continue;
|
|
67
|
+
return line === BRIDGE_NO_REPLY_SENTINEL;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const BRIDGE_SEND_PREVIEW_MAX_CHARS = 4_000;
|
|
72
|
+
/** Bounded, newline-preserving copy of a `botmux send` body for dashboard
|
|
73
|
+
* previews. Unlike the fingerprint normaliser (which collapses ALL whitespace
|
|
74
|
+
* incl. newlines into single spaces — right for dedup, wrong for display), this
|
|
75
|
+
* keeps line breaks so the dashboard can render the reply's Markdown structure
|
|
76
|
+
* (paragraphs / lists / code blocks). Horizontal runs of spaces/tabs within a
|
|
77
|
+
* line are collapsed and trailing spaces trimmed to keep the stored copy tidy;
|
|
78
|
+
* blank-line runs are capped at one to bound size without flattening structure. */
|
|
79
|
+
export function buildBridgeSendPreviewText(content) {
|
|
80
|
+
const tidy = String(content ?? '')
|
|
81
|
+
.replace(/\r\n?/g, '\n')
|
|
82
|
+
.replace(/[^\S\n]+\n/g, '\n')
|
|
83
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
84
|
+
.replace(/^\n+/, '')
|
|
85
|
+
.replace(/\s+$/, '');
|
|
86
|
+
if (!tidy)
|
|
87
|
+
return undefined;
|
|
88
|
+
return tidy.length > BRIDGE_SEND_PREVIEW_MAX_CHARS
|
|
89
|
+
? `${tidy.slice(0, BRIDGE_SEND_PREVIEW_MAX_CHARS - 1)}…`
|
|
90
|
+
: tidy;
|
|
91
|
+
}
|
|
36
92
|
export function buildBridgeSendMarkerContent(content) {
|
|
37
93
|
const normalized = normaliseForFingerprint(content);
|
|
38
94
|
if (!normalized)
|
|
39
95
|
return undefined;
|
|
40
|
-
return {
|
|
96
|
+
return {
|
|
97
|
+
// Length stays fingerprint-normalized: the fallback gate compares it against
|
|
98
|
+
// normalise(finalText).length, so it must not count preview-only newlines.
|
|
99
|
+
contentLength: normalized.length,
|
|
100
|
+
// Preview keeps newlines — derive it from the raw body, NOT `normalized`.
|
|
101
|
+
previewText: buildBridgeSendPreviewText(content),
|
|
102
|
+
};
|
|
41
103
|
}
|
|
42
104
|
function hasStructuredContentMarker(marker) {
|
|
43
105
|
return typeof marker.contentLength === 'number';
|
|
@@ -63,6 +125,8 @@ function markerSetCoversFinal(markers, finalText) {
|
|
|
63
125
|
export function shouldSuppressBridgeEmit(turn, nextBoundaryMs, markers, adoptMode) {
|
|
64
126
|
if (adoptMode)
|
|
65
127
|
return false;
|
|
128
|
+
if (isBridgeNoReplyFinal(turn.finalText))
|
|
129
|
+
return true;
|
|
66
130
|
if (turn.isLocal)
|
|
67
131
|
return true;
|
|
68
132
|
if (turn.markTimeMs === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-fallback-gate.js","sourceRoot":"","sources":["../../src/services/bridge-fallback-gate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bridge-fallback-gate.js","sourceRoot":"","sources":["../../src/services/bridge-fallback-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { type ChatReplyMode } from '../bot-registry.js';
|
|
1
|
+
import { type ChatReplyMode, type UsageDisplayMode } from '../bot-registry.js';
|
|
2
2
|
export interface BotCardPrefs {
|
|
3
|
+
/** Where to show native Context / Token usage:
|
|
4
|
+
* 'streaming' (default) = live streaming card body, 'footer' = ordinary
|
|
5
|
+
* reply-card footer, 'off' = nowhere. */
|
|
6
|
+
usageDisplay: UsageDisplayMode;
|
|
3
7
|
disableStreamingCard: boolean;
|
|
4
8
|
silentTurnReactions: boolean;
|
|
5
9
|
/** Experimental Codex App presentation mode. Default false preserves the
|
|
@@ -29,7 +33,8 @@ export interface BotCardPrefs {
|
|
|
29
33
|
/** 文档订阅新订阅默认评论触发范围(default 'mention-only')。 */
|
|
30
34
|
docSubscribeDefaultMode: 'mention-only' | 'all';
|
|
31
35
|
}
|
|
32
|
-
/** Current card prefs for a bot (
|
|
36
|
+
/** Current card prefs for a bot (`usageDisplay` defaults to 'streaming';
|
|
37
|
+
* `botToBotSameDir` defaults true; other booleans default false). */
|
|
33
38
|
export declare function getBotCardPrefs(larkAppId: string): BotCardPrefs;
|
|
34
39
|
/**
|
|
35
40
|
* Persist a partial card-prefs change. Only the keys present in `patch` are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-prefs-store.d.ts","sourceRoot":"","sources":["../../src/services/card-prefs-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"card-prefs-store.d.ts","sourceRoot":"","sources":["../../src/services/card-prefs-store.ts"],"names":[],"mappings":"AAyBA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,YAAY;IAC3B;;8CAE0C;IAC1C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;wDAEoD;IACpD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB;;8EAE0E;IAC1E,aAAa,EAAE,OAAO,CAAC;IACvB;;kFAE8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,0BAA0B,EAAE,MAAM,CAAC;IACnC,kEAAkE;IAClE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2FAA2F;IAC3F,qBAAqB,EAAE,aAAa,CAAC;IACrC,iFAAiF;IACjF,uBAAuB,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAClE,+CAA+C;IAC/C,uBAAuB,EAAE,cAAc,GAAG,KAAK,CAAC;CACjD;AAED;qEACqE;AACrE,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAsC/D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4J5E"}
|
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
* in-memory registry sync so the daemon's own card builders pick up the change
|
|
5
5
|
* without a restart.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Per-bot card and related session preferences:
|
|
8
|
+
* • usageDisplay — where to show native Context / Token usage:
|
|
9
|
+
* 'streaming' (default) = live streaming card
|
|
10
|
+
* body, 'footer' = ordinary reply-card footer,
|
|
11
|
+
* 'off' = nowhere
|
|
8
12
|
* • disableStreamingCard — suppress the live streaming session card
|
|
9
13
|
* • silentTurnReactions — in card-off sessions, also drop the ✋→✅
|
|
10
14
|
* lightweight status reactions on the trigger
|
|
@@ -19,13 +23,15 @@
|
|
|
19
23
|
* (see chat-reply-mode-store). Default 'chat'.
|
|
20
24
|
*/
|
|
21
25
|
import { rmwBotEntry } from './config-store.js';
|
|
22
|
-
import { getBot } from '../bot-registry.js';
|
|
26
|
+
import { getBot, normalizeUsageDisplay, DEFAULT_USAGE_DISPLAY, } from '../bot-registry.js';
|
|
23
27
|
import { logger } from '../utils/logger.js';
|
|
24
|
-
/** Current card prefs for a bot (
|
|
28
|
+
/** Current card prefs for a bot (`usageDisplay` defaults to 'streaming';
|
|
29
|
+
* `botToBotSameDir` defaults true; other booleans default false). */
|
|
25
30
|
export function getBotCardPrefs(larkAppId) {
|
|
26
31
|
try {
|
|
27
32
|
const c = getBot(larkAppId).config;
|
|
28
33
|
return {
|
|
34
|
+
usageDisplay: normalizeUsageDisplay(c),
|
|
29
35
|
disableStreamingCard: c.disableStreamingCard === true,
|
|
30
36
|
silentTurnReactions: c.silentTurnReactions === true,
|
|
31
37
|
codexAppCleanInput: c.codexAppCleanInput === true,
|
|
@@ -44,6 +50,7 @@ export function getBotCardPrefs(larkAppId) {
|
|
|
44
50
|
}
|
|
45
51
|
catch {
|
|
46
52
|
return {
|
|
53
|
+
usageDisplay: DEFAULT_USAGE_DISPLAY,
|
|
47
54
|
disableStreamingCard: false,
|
|
48
55
|
silentTurnReactions: false,
|
|
49
56
|
codexAppCleanInput: false,
|
|
@@ -130,7 +137,18 @@ export async function updateBotCardPrefs(larkAppId, patch) {
|
|
|
130
137
|
else
|
|
131
138
|
delete entry[key];
|
|
132
139
|
};
|
|
140
|
+
// 用量显示位置:只存非默认模式;'streaming'(默认)删键保持 bots.json 干净
|
|
141
|
+
// (absent === 'streaming')。
|
|
142
|
+
const applyUsageDisplay = (entry, key, val) => {
|
|
143
|
+
if (val === undefined)
|
|
144
|
+
return;
|
|
145
|
+
if (val === 'footer' || val === 'off')
|
|
146
|
+
entry[key] = val;
|
|
147
|
+
else
|
|
148
|
+
delete entry[key];
|
|
149
|
+
};
|
|
133
150
|
const r = await rmwBotEntry(larkAppId, (entry) => {
|
|
151
|
+
applyUsageDisplay(entry, 'usageDisplay', patch.usageDisplay);
|
|
134
152
|
apply(entry, 'disableStreamingCard', patch.disableStreamingCard);
|
|
135
153
|
apply(entry, 'silentTurnReactions', patch.silentTurnReactions);
|
|
136
154
|
apply(entry, 'codexAppCleanInput', patch.codexAppCleanInput);
|
|
@@ -147,6 +165,7 @@ export async function updateBotCardPrefs(larkAppId, patch) {
|
|
|
147
165
|
return {
|
|
148
166
|
write: true,
|
|
149
167
|
result: {
|
|
168
|
+
usageDisplay: normalizeUsageDisplay(entry),
|
|
150
169
|
disableStreamingCard: entry.disableStreamingCard === true,
|
|
151
170
|
silentTurnReactions: entry.silentTurnReactions === true,
|
|
152
171
|
codexAppCleanInput: entry.codexAppCleanInput === true,
|
|
@@ -170,6 +189,12 @@ export async function updateBotCardPrefs(larkAppId, patch) {
|
|
|
170
189
|
if (!r.ok)
|
|
171
190
|
return { ok: false, reason: r.reason };
|
|
172
191
|
// Sync in-memory config so live card builders / routing react without a restart.
|
|
192
|
+
if (patch.usageDisplay !== undefined) {
|
|
193
|
+
// Store only a non-default mode; 'streaming' (default) clears the key.
|
|
194
|
+
bot.config.usageDisplay = (patch.usageDisplay && patch.usageDisplay !== DEFAULT_USAGE_DISPLAY)
|
|
195
|
+
? patch.usageDisplay
|
|
196
|
+
: undefined;
|
|
197
|
+
}
|
|
173
198
|
if (patch.disableStreamingCard !== undefined) {
|
|
174
199
|
bot.config.disableStreamingCard = patch.disableStreamingCard || undefined;
|
|
175
200
|
}
|
|
@@ -214,7 +239,8 @@ export async function updateBotCardPrefs(larkAppId, patch) {
|
|
|
214
239
|
if (patch.docSubscribeDefaultMode !== undefined) {
|
|
215
240
|
bot.config.docSubscribeDefaultMode = patch.docSubscribeDefaultMode === 'all' ? 'all' : undefined;
|
|
216
241
|
}
|
|
217
|
-
logger.info(`[card-prefs:${larkAppId}]
|
|
242
|
+
logger.info(`[card-prefs:${larkAppId}] usageDisplay=${r.result.usageDisplay} ` +
|
|
243
|
+
`disableStreamingCard=${r.result.disableStreamingCard} ` +
|
|
218
244
|
`silentTurnReactions=${r.result.silentTurnReactions} ` +
|
|
219
245
|
`codexAppCleanInput=${r.result.codexAppCleanInput} ` +
|
|
220
246
|
`writableTerminalLinkInCard=${r.result.writableTerminalLinkInCard} privateCard=${r.result.privateCard} ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-prefs-store.js","sourceRoot":"","sources":["../../src/services/card-prefs-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"card-prefs-store.js","sourceRoot":"","sources":["../../src/services/card-prefs-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,15 @@ export interface CodexAppFinalMarker {
|
|
|
17
17
|
replyTurnId?: string;
|
|
18
18
|
/** Pre-steer Codex App and Mira markers used one id for both domains. */
|
|
19
19
|
legacyTurnId?: string;
|
|
20
|
+
/** Per-turn token usage (four mutually-exclusive buckets), when the turn's
|
|
21
|
+
* thread/tokenUsage/updated notifications yielded a coherent total. Omitted
|
|
22
|
+
* when no usage was observed / a protocol anomaly was detected. */
|
|
23
|
+
usage?: {
|
|
24
|
+
inputTokens: number;
|
|
25
|
+
outputTokens: number;
|
|
26
|
+
cacheReadTokens: number;
|
|
27
|
+
cacheCreateTokens: number;
|
|
28
|
+
};
|
|
20
29
|
}
|
|
21
30
|
interface CodexAppLifecycleBase {
|
|
22
31
|
atMs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-runner-protocol.d.ts","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-app-runner-protocol.d.ts","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,8 +65,25 @@ export function normalizeAppRunnerFinalMarker(payload) {
|
|
|
65
65
|
appTurnId: optionalNonEmptyString(payload.appTurnId),
|
|
66
66
|
replyTurnId: optionalNonEmptyString(payload.replyTurnId),
|
|
67
67
|
legacyTurnId: optionalNonEmptyString(payload.turnId),
|
|
68
|
+
usage: normalizeFinalUsage(payload.usage),
|
|
68
69
|
};
|
|
69
70
|
}
|
|
71
|
+
/** Accept the four-bucket usage only when every field is a non-negative integer
|
|
72
|
+
* (a token count), else drop it (daemon omits usage rather than persisting a
|
|
73
|
+
* negative/fractional/partial value that a compromised or buggy runner sent). */
|
|
74
|
+
function normalizeFinalUsage(raw) {
|
|
75
|
+
if (!isRecord(raw))
|
|
76
|
+
return undefined;
|
|
77
|
+
const keys = ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheCreateTokens'];
|
|
78
|
+
const out = {};
|
|
79
|
+
for (const k of keys) {
|
|
80
|
+
const v = raw[k];
|
|
81
|
+
if (typeof v !== 'number' || !Number.isInteger(v) || v < 0)
|
|
82
|
+
return undefined;
|
|
83
|
+
out[k] = v;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
70
87
|
export function normalizeCodexAppLifecycleEvent(payload) {
|
|
71
88
|
if (!isRecord(payload) || typeof payload.kind !== 'string')
|
|
72
89
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-app-runner-protocol.js","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-app-runner-protocol.js","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-turn token-usage accumulator for the codex app-server protocol.
|
|
3
|
+
*
|
|
4
|
+
* codex emits token usage via `thread/tokenUsage/updated` notifications, NOT on
|
|
5
|
+
* `turn/completed` (whose Turn object carries no usage). A single codex turn can
|
|
6
|
+
* produce MANY upstream completions (tool-call loops), so the notification's
|
|
7
|
+
* `tokenUsage.last` is only the LAST completion's usage — never the whole turn.
|
|
8
|
+
* The authoritative per-turn figure is a delta of the cumulative `total`:
|
|
9
|
+
*
|
|
10
|
+
* - on the first notification for a turn, derive baseline = total - last
|
|
11
|
+
* (per field), so a resumed session needs no prior session-total knowledge;
|
|
12
|
+
* - the turn's usage so far = latestTotal - baseline (per field);
|
|
13
|
+
* - later notifications only advance latestTotal (total-delta is idempotent
|
|
14
|
+
* against duplicate notifications — never sum `last`, never overwrite).
|
|
15
|
+
*
|
|
16
|
+
* Fail-closed: if `total` regresses or any derived field goes negative, the
|
|
17
|
+
* usage is dropped (returns null) and the caller logs a protocol warning rather
|
|
18
|
+
* than reporting corrupt numbers.
|
|
19
|
+
*
|
|
20
|
+
* Ref: codex protocol TokenUsageInfo::append_last_usage (total += last; last =
|
|
21
|
+
* this completion) and app-server ThreadTokenUsageUpdatedNotification /
|
|
22
|
+
* TokenUsageBreakdown (0.145 generated types).
|
|
23
|
+
*/
|
|
24
|
+
/** codex TokenUsageBreakdown (0.145). All numbers; cumulative on `total`. */
|
|
25
|
+
export interface CodexTokenBreakdown {
|
|
26
|
+
totalTokens: number;
|
|
27
|
+
inputTokens: number;
|
|
28
|
+
cachedInputTokens: number;
|
|
29
|
+
cacheWriteInputTokens: number;
|
|
30
|
+
outputTokens: number;
|
|
31
|
+
reasoningOutputTokens: number;
|
|
32
|
+
}
|
|
33
|
+
/** riff-facing four-bucket usage (mutually exclusive input buckets). */
|
|
34
|
+
export interface TurnTokenUsage {
|
|
35
|
+
inputTokens: number;
|
|
36
|
+
outputTokens: number;
|
|
37
|
+
cacheReadTokens: number;
|
|
38
|
+
cacheCreateTokens: number;
|
|
39
|
+
}
|
|
40
|
+
/** Validate a raw notification payload's breakdown into a typed one, or null.
|
|
41
|
+
* 0.145 fields are REQUIRED except `cacheWriteInputTokens` (added later, so a
|
|
42
|
+
* compat default of 0 is honest for it only). Any other missing/non-numeric
|
|
43
|
+
* field returns null — defaulting them to 0 would misreport a protocol gap as a
|
|
44
|
+
* real 0.
|
|
45
|
+
*
|
|
46
|
+
* NOTE: when `total` and `last` are consumed together (the accumulator), prefer
|
|
47
|
+
* `parseTokenUsagePair` — it additionally enforces that the back-compat
|
|
48
|
+
* cacheWrite default is only honored when BOTH sides omit the field. A lone
|
|
49
|
+
* breakdown parsed here cannot see its counterpart, so a `cacheWrite=0` default
|
|
50
|
+
* here is provisional until the pair check confirms symmetry. */
|
|
51
|
+
export declare function parseCodexTokenBreakdown(raw: unknown): CodexTokenBreakdown | null;
|
|
52
|
+
/** Parse the `{ total, last }` pair from one notification, enforcing the
|
|
53
|
+
* cross-breakdown invariant the single parser can't see: the back-compat
|
|
54
|
+
* `cacheWriteInputTokens → 0` default is honest ONLY when BOTH breakdowns omit
|
|
55
|
+
* the field (a genuinely old codex). If exactly one side carries it, the two
|
|
56
|
+
* disagree (version skew / corruption): silently defaulting the missing side to
|
|
57
|
+
* 0 would misattribute real cache-create tokens into fresh input AND poison the
|
|
58
|
+
* baseline for later completions with a plausible-looking undercount. Return
|
|
59
|
+
* null so the caller poisons the turn instead of emitting corrupt buckets. */
|
|
60
|
+
export declare function parseTokenUsagePair(rawTotal: unknown, rawLast: unknown): {
|
|
61
|
+
total: CodexTokenBreakdown;
|
|
62
|
+
last: CodexTokenBreakdown;
|
|
63
|
+
} | null;
|
|
64
|
+
/** Map a cumulative-delta codex breakdown to riff's four mutually-exclusive
|
|
65
|
+
* buckets. codex `inputTokens` INCLUDES cached-read + cache-write, so the
|
|
66
|
+
* fresh-input bucket subtracts both. Returns null if the split is incoherent
|
|
67
|
+
* (buckets exceed input) — caller drops usage + warns rather than emit garbage. */
|
|
68
|
+
export declare function toFourBucket(d: CodexTokenBreakdown): TurnTokenUsage | null;
|
|
69
|
+
/** Accumulates per-turn usage from `thread/tokenUsage/updated` notifications for
|
|
70
|
+
* ONE appTurnId, using the total-delta algorithm. */
|
|
71
|
+
export declare class TurnTokenUsageAccumulator {
|
|
72
|
+
private baseline;
|
|
73
|
+
private latestTotal;
|
|
74
|
+
private protocolWarning;
|
|
75
|
+
/** Feed a notification's `tokenUsage` = { total, last, ... }. `total` is
|
|
76
|
+
* cumulative; `last` is the most recent completion's usage. */
|
|
77
|
+
update(total: CodexTokenBreakdown, last: CodexTokenBreakdown): void;
|
|
78
|
+
/** Mark this turn's usage as unusable (sticky). Called when a notification for
|
|
79
|
+
* the turn arrives but its breakdown is malformed: skipping it silently would
|
|
80
|
+
* let a LATER valid notification rebuild a fresh baseline and report only the
|
|
81
|
+
* last completion — a plausible-looking undercount. Poisoning makes result()
|
|
82
|
+
* omit + warn instead. */
|
|
83
|
+
poison(reason: string): void;
|
|
84
|
+
/** The turn's usage so far as four buckets, or null if no usage seen / a
|
|
85
|
+
* protocol anomaly was detected / the bucket split is incoherent. When usage
|
|
86
|
+
* is dropped for an incoherent delta or bucket split (as opposed to simply
|
|
87
|
+
* never having seen a notification), a warning is recorded so the caller can
|
|
88
|
+
* surface the omission rather than dropping it silently. */
|
|
89
|
+
result(): TurnTokenUsage | null;
|
|
90
|
+
/** Non-null when the accumulator gave up on usage for a protocol reason. */
|
|
91
|
+
get warning(): string | undefined;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=codex-app-token-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-token-usage.d.ts","sourceRoot":"","sources":["../../src/services/codex-app-token-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAYD;;;;;;;;;;kEAUkE;AAClE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAgBjF;AAUD;;;;;;;+EAO+E;AAC/E,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,GACf;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG,IAAI,CAQlE;AAED;;;oFAGoF;AACpF,wBAAgB,YAAY,CAAC,CAAC,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAO1E;AAED;sDACsD;AACtD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,eAAe,CAAqB;IAE5C;oEACgE;IAChE,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAuBnE;;;;+BAI2B;IAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;iEAI6D;IAC7D,MAAM,IAAI,cAAc,GAAG,IAAI;IAe/B,4EAA4E;IAC5E,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAAiC;CACnE"}
|