botmux 3.10.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/herdr-backend.d.ts +4 -3
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +11 -8
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/pty-backend.d.ts +1 -1
- package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
- package/dist/adapters/backend/pty-backend.js +4 -1
- package/dist/adapters/backend/pty-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +29 -5
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +302 -31
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +6 -0
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +7 -0
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +4 -1
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +37 -3
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +3 -3
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +9 -3
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +3 -3
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.js +12 -7
- package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +11 -2
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +35 -2
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +88 -7
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +15 -14
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +64 -26
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +20 -5
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +24 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +110 -5
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/fleet-shutdown.d.ts +47 -0
- package/dist/cli/fleet-shutdown.d.ts.map +1 -0
- package/dist/cli/fleet-shutdown.js +387 -0
- package/dist/cli/fleet-shutdown.js.map +1 -0
- package/dist/cli/pm2-descriptor-guard.d.ts +19 -0
- package/dist/cli/pm2-descriptor-guard.d.ts.map +1 -0
- package/dist/cli/pm2-descriptor-guard.js +122 -0
- package/dist/cli/pm2-descriptor-guard.js.map +1 -0
- package/dist/cli/pm2-exact-start.d.ts +16 -0
- package/dist/cli/pm2-exact-start.d.ts.map +1 -0
- package/dist/cli/pm2-exact-start.js +63 -0
- package/dist/cli/pm2-exact-start.js.map +1 -0
- package/dist/cli/pm2-god-admission.d.ts +8 -0
- package/dist/cli/pm2-god-admission.d.ts.map +1 -0
- package/dist/cli/pm2-god-admission.js +25 -0
- package/dist/cli/pm2-god-admission.js.map +1 -0
- package/dist/cli/pm2-jlist.d.ts +13 -0
- package/dist/cli/pm2-jlist.d.ts.map +1 -0
- package/dist/cli/pm2-jlist.js +108 -0
- package/dist/cli/pm2-jlist.js.map +1 -0
- package/dist/cli/pm2-preflight.d.ts +10 -0
- package/dist/cli/pm2-preflight.d.ts.map +1 -0
- package/dist/cli/pm2-preflight.js +23 -0
- package/dist/cli/pm2-preflight.js.map +1 -0
- package/dist/cli/pm2-shutdown-capability.d.ts +27 -0
- package/dist/cli/pm2-shutdown-capability.d.ts.map +1 -0
- package/dist/cli/pm2-shutdown-capability.js +161 -0
- package/dist/cli/pm2-shutdown-capability.js.map +1 -0
- package/dist/cli/pm2-start-transaction.d.ts +55 -0
- package/dist/cli/pm2-start-transaction.d.ts.map +1 -0
- package/dist/cli/pm2-start-transaction.js +220 -0
- package/dist/cli/pm2-start-transaction.js.map +1 -0
- package/dist/cli/send-dispatch.d.ts +12 -0
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +31 -4
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli/session-list-liveness.d.ts +1 -0
- package/dist/cli/session-list-liveness.d.ts.map +1 -1
- package/dist/cli/session-list-liveness.js +6 -0
- package/dist/cli/session-list-liveness.js.map +1 -1
- package/dist/cli/session-picker-layout.d.ts +26 -0
- package/dist/cli/session-picker-layout.d.ts.map +1 -0
- package/dist/cli/session-picker-layout.js +123 -0
- package/dist/cli/session-picker-layout.js.map +1 -0
- package/dist/cli/session-picker-viewport.d.ts +49 -0
- package/dist/cli/session-picker-viewport.d.ts.map +1 -0
- package/dist/cli/session-picker-viewport.js +46 -0
- package/dist/cli/session-picker-viewport.js.map +1 -0
- package/dist/cli/supervisor-shutdown-client.d.ts +31 -0
- package/dist/cli/supervisor-shutdown-client.d.ts.map +1 -0
- package/dist/cli/supervisor-shutdown-client.js +146 -0
- package/dist/cli/supervisor-shutdown-client.js.map +1 -0
- package/dist/cli/terminal-width.d.ts +48 -0
- package/dist/cli/terminal-width.d.ts.map +1 -0
- package/dist/cli/terminal-width.js +119 -0
- package/dist/cli/terminal-width.js.map +1 -0
- package/dist/cli/vc-agent.d.ts.map +1 -1
- package/dist/cli/vc-agent.js +1 -1
- package/dist/cli/vc-agent.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2269 -716
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +1630 -125
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/ask-api.d.ts +8 -1
- package/dist/core/ask-api.d.ts.map +1 -1
- package/dist/core/ask-api.js +18 -0
- package/dist/core/ask-api.js.map +1 -1
- package/dist/core/ask-broker.d.ts +20 -0
- package/dist/core/ask-broker.d.ts.map +1 -1
- package/dist/core/ask-broker.js +467 -47
- package/dist/core/ask-broker.js.map +1 -1
- package/dist/core/ask-persist-store.d.ts +126 -0
- package/dist/core/ask-persist-store.d.ts.map +1 -0
- package/dist/core/ask-persist-store.js +188 -0
- package/dist/core/ask-persist-store.js.map +1 -0
- package/dist/core/ask-types.d.ts +80 -0
- package/dist/core/ask-types.d.ts.map +1 -1
- package/dist/core/ask-types.js +62 -0
- package/dist/core/ask-types.js.map +1 -1
- package/dist/core/cli-session-id-publisher.d.ts +20 -0
- package/dist/core/cli-session-id-publisher.d.ts.map +1 -0
- package/dist/core/cli-session-id-publisher.js +21 -0
- package/dist/core/cli-session-id-publisher.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +427 -255
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +13 -0
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +385 -26
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +9 -0
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +842 -288
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/explicit-session-backing-cleanup.d.ts +49 -0
- package/dist/core/explicit-session-backing-cleanup.d.ts.map +1 -0
- package/dist/core/explicit-session-backing-cleanup.js +76 -0
- package/dist/core/explicit-session-backing-cleanup.js.map +1 -0
- package/dist/core/idle-worker-sweeper.d.ts +20 -0
- package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
- package/dist/core/idle-worker-sweeper.js +18 -0
- package/dist/core/idle-worker-sweeper.js.map +1 -1
- package/dist/core/inflight-input-tracker.d.ts +10 -0
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js +7 -0
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/managed-origin-attestation.d.ts +51 -0
- package/dist/core/managed-origin-attestation.d.ts.map +1 -0
- package/dist/core/managed-origin-attestation.js +208 -0
- package/dist/core/managed-origin-attestation.js.map +1 -0
- package/dist/core/managed-origin-capability.d.ts +62 -3
- package/dist/core/managed-origin-capability.d.ts.map +1 -1
- package/dist/core/managed-origin-capability.js +419 -9
- package/dist/core/managed-origin-capability.js.map +1 -1
- package/dist/core/pending-repo-journal.d.ts +6 -0
- package/dist/core/pending-repo-journal.d.ts.map +1 -0
- package/dist/core/pending-repo-journal.js +85 -0
- package/dist/core/pending-repo-journal.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +6 -1
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +12 -6
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/process-start-identity.d.ts +3 -0
- package/dist/core/process-start-identity.d.ts.map +1 -0
- package/dist/core/process-start-identity.js +62 -0
- package/dist/core/process-start-identity.js.map +1 -0
- package/dist/core/raw-command-writer.d.ts +34 -0
- package/dist/core/raw-command-writer.d.ts.map +1 -0
- package/dist/core/raw-command-writer.js +48 -0
- package/dist/core/raw-command-writer.js.map +1 -0
- package/dist/core/reply-target.d.ts +85 -22
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +267 -32
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/resource-monitor/runtime.d.ts.map +1 -1
- package/dist/core/resource-monitor/runtime.js +4 -1
- package/dist/core/resource-monitor/runtime.js.map +1 -1
- package/dist/core/restart-report.d.ts +6 -1
- package/dist/core/restart-report.d.ts.map +1 -1
- package/dist/core/restart-report.js +22 -4
- package/dist/core/restart-report.js.map +1 -1
- package/dist/core/riff-shutdown-detach.d.ts +164 -0
- package/dist/core/riff-shutdown-detach.d.ts.map +1 -0
- package/dist/core/riff-shutdown-detach.js +787 -0
- package/dist/core/riff-shutdown-detach.js.map +1 -0
- package/dist/core/riff-worker-shutdown-readiness.d.ts +17 -0
- package/dist/core/riff-worker-shutdown-readiness.d.ts.map +1 -0
- package/dist/core/riff-worker-shutdown-readiness.js +21 -0
- package/dist/core/riff-worker-shutdown-readiness.js.map +1 -0
- package/dist/core/session-manager.d.ts +6 -6
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1227 -594
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-marker.d.ts +1 -1
- package/dist/core/session-marker.d.ts.map +1 -1
- package/dist/core/session-marker.js +2 -2
- package/dist/core/session-marker.js.map +1 -1
- package/dist/core/session-mutation-guard.d.ts +17 -0
- package/dist/core/session-mutation-guard.d.ts.map +1 -0
- package/dist/core/session-mutation-guard.js +33 -0
- package/dist/core/session-mutation-guard.js.map +1 -0
- package/dist/core/shutdown-budgets.d.ts +27 -0
- package/dist/core/shutdown-budgets.d.ts.map +1 -0
- package/dist/core/shutdown-budgets.js +47 -0
- package/dist/core/shutdown-budgets.js.map +1 -0
- package/dist/core/supervisor-shutdown-ipc.d.ts +10 -0
- package/dist/core/supervisor-shutdown-ipc.d.ts.map +1 -0
- package/dist/core/supervisor-shutdown-ipc.js +10 -0
- package/dist/core/supervisor-shutdown-ipc.js.map +1 -0
- package/dist/core/supervisor-shutdown-protocol.d.ts +16 -0
- package/dist/core/supervisor-shutdown-protocol.d.ts.map +1 -0
- package/dist/core/supervisor-shutdown-protocol.js +16 -0
- package/dist/core/supervisor-shutdown-protocol.js.map +1 -0
- package/dist/core/trigger-final-suppression.d.ts +4 -0
- package/dist/core/trigger-final-suppression.d.ts.map +1 -1
- package/dist/core/trigger-final-suppression.js +6 -11
- package/dist/core/trigger-final-suppression.js.map +1 -1
- package/dist/core/trigger-session.d.ts +70 -0
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +923 -145
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +94 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +194 -13
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2597 -547
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +76 -2
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +2255 -773
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +20 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +24 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/feed-groups.d.ts +17 -0
- package/dist/dashboard/feed-groups.d.ts.map +1 -0
- package/dist/dashboard/feed-groups.js +75 -0
- package/dist/dashboard/feed-groups.js.map +1 -0
- package/dist/dashboard/session-card-model.d.ts +1 -1
- package/dist/dashboard/session-card-model.d.ts.map +1 -1
- package/dist/dashboard/session-card-model.js +8 -5
- package/dist/dashboard/session-card-model.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +4 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +139 -46
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +4 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +40 -3
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +95 -2
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +86 -40
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/kanban-model.js +1 -1
- package/dist/dashboard/web/kanban-model.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts.map +1 -1
- package/dist/dashboard/web/overview-page.js +3 -2
- package/dist/dashboard/web/overview-page.js.map +1 -1
- package/dist/dashboard/web/overview.d.ts +3 -0
- package/dist/dashboard/web/overview.d.ts.map +1 -1
- package/dist/dashboard/web/overview.js +2 -0
- package/dist/dashboard/web/overview.js.map +1 -1
- package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-kanban.js +2 -0
- package/dist/dashboard/web/sessions-kanban.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +103 -2
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +3 -2
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +8 -0
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +15 -0
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-GED4FEMS.js +10 -0
- package/dist/dashboard-web/chunks/chunk-6J5LS5AU.js +51 -0
- package/dist/dashboard-web/chunks/{chunk-ZU3UUKAR.js → chunk-HK7NIBJG.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-3UE7S77S.js → chunk-KRHWZEXU.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-VBXJOJFH.js +1 -0
- package/dist/dashboard-web/chunks/connectors-page-EELM66G3.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-WKUV6E42.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-T2ZX2RWL.js → insights-page-54UBPPOC.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-YNVBAGR6.js → monitor-room-PORHVKRH.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-LHM55YWN.js → monitoring-page-XGA7AXNL.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-ATXVP7PW.js → office-page-AO3AFG45.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-F5BUTYR6.js +1 -0
- package/dist/dashboard-web/chunks/{roles-page-56VWM6CD.js → roles-page-M5GIASJU.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-S5K6U4EO.js → schedules-page-O232WQRR.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-YFRPSTIL.js +6 -0
- package/dist/dashboard-web/chunks/{settings-page-QUZDQARR.js → settings-page-OJAZLZQT.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-IFY7AEND.js → skills-page-EFZQPWV4.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-C7FJQPFZ.js → team-federation-page-ZJVAP7HW.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-2LMF3WWR.js → v3-page-GYWTRGO2.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-3XC6QRMY.js → whiteboards-page-MSDAG6P7.js} +1 -1
- package/dist/dashboard-web/style.css +255 -0
- package/dist/dashboard.js +172 -7
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/renderer/app.js +21 -0
- package/dist/desktop/renderer/app.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +35 -9
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +35 -9
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/ask-card.d.ts +23 -0
- package/dist/im/lark/ask-card.d.ts.map +1 -1
- package/dist/im/lark/ask-card.js +94 -4
- package/dist/im/lark/ask-card.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +6 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +112 -15
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +496 -310
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +7 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +39 -26
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/doc-comment.d.ts +7 -4
- package/dist/im/lark/doc-comment.d.ts.map +1 -1
- package/dist/im/lark/doc-comment.js +19 -6
- package/dist/im/lark/doc-comment.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +16 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +88 -23
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/forward-followup-content.d.ts.map +1 -1
- package/dist/im/lark/forward-followup-content.js +9 -1
- package/dist/im/lark/forward-followup-content.js.map +1 -1
- package/dist/im/lark/grant-command.d.ts.map +1 -1
- package/dist/im/lark/grant-command.js +7 -4
- package/dist/im/lark/grant-command.js.map +1 -1
- package/dist/im/lark/md-card.d.ts +11 -0
- package/dist/im/lark/md-card.d.ts.map +1 -1
- package/dist/im/lark/md-card.js +46 -0
- package/dist/im/lark/md-card.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts +23 -2
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +58 -3
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +2 -1
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +6 -1
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +21 -0
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +23 -1
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +96 -13
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/bridge-fallback-gate.d.ts +40 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +124 -24
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/codex-app-runner-protocol.d.ts +8 -0
- package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
- package/dist/services/codex-app-runner-protocol.js +9 -2
- package/dist/services/codex-app-runner-protocol.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +1 -0
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +1 -0
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-service-tier.d.ts +2 -0
- package/dist/services/codex-service-tier.d.ts.map +1 -1
- package/dist/services/codex-service-tier.js +1 -0
- package/dist/services/codex-service-tier.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +27 -0
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +340 -2
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/grant-policy.d.ts +3 -0
- package/dist/services/grant-policy.d.ts.map +1 -1
- package/dist/services/grant-policy.js +5 -0
- package/dist/services/grant-policy.js.map +1 -1
- package/dist/services/grant-prefs-store.d.ts +6 -3
- package/dist/services/grant-prefs-store.d.ts.map +1 -1
- package/dist/services/grant-prefs-store.js +42 -12
- package/dist/services/grant-prefs-store.js.map +1 -1
- package/dist/services/hook-runner.d.ts +20 -1
- package/dist/services/hook-runner.d.ts.map +1 -1
- package/dist/services/hook-runner.js +17 -13
- package/dist/services/hook-runner.js.map +1 -1
- package/dist/services/idempotency-store.d.ts +134 -0
- package/dist/services/idempotency-store.d.ts.map +1 -0
- package/dist/services/idempotency-store.js +299 -0
- package/dist/services/idempotency-store.js.map +1 -0
- package/dist/services/jsonl-cursor.d.ts +7 -3
- package/dist/services/jsonl-cursor.d.ts.map +1 -1
- package/dist/services/jsonl-cursor.js +55 -31
- package/dist/services/jsonl-cursor.js.map +1 -1
- package/dist/services/open-platform-rename.d.ts.map +1 -1
- package/dist/services/open-platform-rename.js +1 -108
- package/dist/services/open-platform-rename.js.map +1 -1
- package/dist/services/restart-intent-store.d.ts +22 -2
- package/dist/services/restart-intent-store.d.ts.map +1 -1
- package/dist/services/restart-intent-store.js +160 -18
- package/dist/services/restart-intent-store.js.map +1 -1
- package/dist/services/sandbox-store.d.ts +22 -0
- package/dist/services/sandbox-store.d.ts.map +1 -1
- package/dist/services/sandbox-store.js +37 -8
- package/dist/services/sandbox-store.js.map +1 -1
- package/dist/services/send-policy.d.ts +41 -33
- package/dist/services/send-policy.d.ts.map +1 -1
- package/dist/services/send-policy.js +39 -40
- package/dist/services/send-policy.js.map +1 -1
- package/dist/services/session-store.d.ts +66 -0
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +403 -67
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/submit-notification.d.ts +3 -0
- package/dist/services/submit-notification.d.ts.map +1 -0
- package/dist/services/submit-notification.js +15 -0
- package/dist/services/submit-notification.js.map +1 -0
- package/dist/services/traex-transcript.d.ts +25 -2
- package/dist/services/traex-transcript.d.ts.map +1 -1
- package/dist/services/traex-transcript.js +133 -1
- package/dist/services/traex-transcript.js.map +1 -1
- package/dist/services/trigger-types.d.ts +13 -1
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js +39 -0
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/voice/index.d.ts +3 -2
- package/dist/services/voice/index.d.ts.map +1 -1
- package/dist/services/voice/index.js +5 -5
- package/dist/services/voice/index.js.map +1 -1
- package/dist/services/voice/openai.d.ts +2 -1
- package/dist/services/voice/openai.d.ts.map +1 -1
- package/dist/services/voice/openai.js +2 -1
- package/dist/services/voice/openai.js.map +1 -1
- package/dist/services/voice/sami.d.ts +5 -2
- package/dist/services/voice/sami.d.ts.map +1 -1
- package/dist/services/voice/sami.js +19 -4
- package/dist/services/voice/sami.js.map +1 -1
- package/dist/setup/bots-store.d.ts.map +1 -1
- package/dist/setup/bots-store.js +10 -4
- package/dist/setup/bots-store.js.map +1 -1
- package/dist/setup/lark-scopes.json +2 -0
- package/dist/setup/open-platform-automation.d.ts +9 -1
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +44 -15
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/open-platform-visibility.d.ts +42 -0
- package/dist/setup/open-platform-visibility.d.ts.map +1 -0
- package/dist/setup/open-platform-visibility.js +133 -0
- package/dist/setup/open-platform-visibility.js.map +1 -0
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +6 -0
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/skills/definitions.js +2 -2
- package/dist/types.d.ts +290 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/bot-routing.d.ts +1 -0
- package/dist/utils/bot-routing.d.ts.map +1 -1
- package/dist/utils/bot-routing.js +1 -1
- package/dist/utils/bot-routing.js.map +1 -1
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +9 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/codex-app-control.d.ts +438 -0
- package/dist/utils/codex-app-control.d.ts.map +1 -0
- package/dist/utils/codex-app-control.js +2336 -0
- package/dist/utils/codex-app-control.js.map +1 -0
- package/dist/utils/codex-app-dispatch-ledger.d.ts +78 -0
- package/dist/utils/codex-app-dispatch-ledger.d.ts.map +1 -0
- package/dist/utils/codex-app-dispatch-ledger.js +149 -0
- package/dist/utils/codex-app-dispatch-ledger.js.map +1 -0
- package/dist/utils/codex-app-turn-dispatch.d.ts +77 -0
- package/dist/utils/codex-app-turn-dispatch.d.ts.map +1 -0
- package/dist/utils/codex-app-turn-dispatch.js +141 -0
- package/dist/utils/codex-app-turn-dispatch.js.map +1 -0
- package/dist/utils/codex-app-turn-liveness.d.ts +125 -0
- package/dist/utils/codex-app-turn-liveness.d.ts.map +1 -0
- package/dist/utils/codex-app-turn-liveness.js +301 -0
- package/dist/utils/codex-app-turn-liveness.js.map +1 -0
- package/dist/utils/idle-detector.d.ts +12 -0
- package/dist/utils/idle-detector.d.ts.map +1 -1
- package/dist/utils/idle-detector.js +19 -0
- package/dist/utils/idle-detector.js.map +1 -1
- package/dist/utils/input-gate.d.ts +87 -0
- package/dist/utils/input-gate.d.ts.map +1 -1
- package/dist/utils/input-gate.js +86 -0
- package/dist/utils/input-gate.js.map +1 -1
- package/dist/utils/lark-upload.d.ts.map +1 -1
- package/dist/utils/lark-upload.js +52 -1
- package/dist/utils/lark-upload.js.map +1 -1
- package/dist/utils/pending-input-queue.d.ts +15 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +5 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/utils/user-token.d.ts.map +1 -1
- package/dist/utils/user-token.js +53 -2
- package/dist/utils/user-token.js.map +1 -1
- package/dist/worker-ipc-preload.d.ts +12 -0
- package/dist/worker-ipc-preload.d.ts.map +1 -0
- package/dist/worker-ipc-preload.js +44 -0
- package/dist/worker-ipc-preload.js.map +1 -0
- package/dist/worker.js +2604 -325
- package/dist/worker.js.map +1 -1
- package/dist/workflows/v3/session-relay-client.d.ts +1 -0
- package/dist/workflows/v3/session-relay-client.d.ts.map +1 -1
- package/dist/workflows/v3/session-relay-client.js +12 -3
- package/dist/workflows/v3/session-relay-client.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-LTVOUDIS.js +0 -10
- package/dist/dashboard-web/chunks/chunk-DCS35UMD.js +0 -1
- package/dist/dashboard-web/chunks/chunk-MFQPCVHY.js +0 -51
- package/dist/dashboard-web/chunks/connectors-page-5KWDIMKC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-FHOKYXMW.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-QYI3KBDD.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-WBP4N7D2.js +0 -6
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
3
4
|
import { openBotOnboarding } from './bot-onboarding.js';
|
|
4
5
|
import { agentSelectionKey, cliIdOf, createRefreshGate, displayCliId, fallbackCliOptionsState, fetchBotDefaults, fetchCliOptions, fmtSince, modelSuggestionsForOption, resolveSubstituteTarget, selectedCliOption, } from './bot-defaults.js';
|
|
5
6
|
import { mountReactPage } from './react-mount.js';
|
|
6
7
|
import { useT } from './react-hooks.js';
|
|
7
8
|
import { store } from './store.js';
|
|
8
9
|
import { CreateActionButton, DropdownMenu, Html, InfoTip as BaseInfoTip, LoadingState, OverflowText, RefreshIconButton, dropdownLabel, } from './dashboard-components.js';
|
|
9
|
-
import { botAvatarHtml, loadNameMaps, overrideBotAvatar, ui } from './ui.js';
|
|
10
|
+
import { botAvatarHtml, larkConsoleUrl, loadNameMaps, overrideBotAvatar, ui } from './ui.js';
|
|
11
|
+
import { DEFAULT_GRANT_DURATION_MS, DEFAULT_GRANT_QUOTA, GRANT_DURATION_OPTIONS, MAX_GRANT_QUOTA, } from '../../services/grant-policy.js';
|
|
10
12
|
function runtimeDraftFromBot(bot) {
|
|
11
13
|
const runtime = bot.cliRuntime;
|
|
12
14
|
if (!runtime || typeof runtime !== 'object') {
|
|
@@ -177,7 +179,7 @@ function statusClass(status, extra = '') {
|
|
|
177
179
|
return `oncall-status${extra ? ` ${extra}` : ''}${suffix}`;
|
|
178
180
|
}
|
|
179
181
|
function StatusSpan(props) {
|
|
180
|
-
return _jsx("span", { className: statusClass(props.status), ...(props.attr ?? {}), children: props.status?.text ?? '' });
|
|
182
|
+
return _jsx("span", { role: "status", "aria-live": "polite", className: statusClass(props.status), ...(props.attr ?? {}), children: props.status?.text ?? '' });
|
|
181
183
|
}
|
|
182
184
|
function InfoTip(props) {
|
|
183
185
|
const ariaLabel = typeof props.children === 'string' ? props.children : undefined;
|
|
@@ -191,7 +193,7 @@ function DropdownField(props) {
|
|
|
191
193
|
return (_jsxs(_Fragment, { children: [_jsx(DropdownMenu, { id: `bd-menu-${props.dataInput}`, className: ['bd-field-menu', props.className].filter(Boolean).join(' '), ariaLabel: props.ariaLabel, disabled: props.disabled, label: dropdownLabel(props.options, props.value), value: props.value, options: props.options, searchable: props.searchable, searchPlaceholder: props.searchable ? tr('common.dropdownSearch') : undefined, searchEmptyLabel: props.searchable ? tr('common.dropdownSearchEmpty') : undefined, onChange: props.onChange }), _jsx("input", { type: "hidden", "data-input": props.dataInput, value: props.value, readOnly: true })] }));
|
|
192
194
|
}
|
|
193
195
|
function ToggleRow(props) {
|
|
194
|
-
return (_jsxs("label", { className:
|
|
196
|
+
return (_jsxs("label", { className: props.className ? `toggle-row ${props.className}` : 'toggle-row', children: [_jsx("input", { type: "checkbox", "data-action": props.dataAction, checked: props.checked, disabled: props.disabled, onChange: event => props.onChange(event.currentTarget.checked) }), _jsx("span", { className: "switch", "aria-hidden": "true" }), _jsxs("span", { className: "toggle-tx", children: [_jsx("strong", { children: _jsx(FieldTitle, { help: props.help, children: props.title }) }), props.description ? _jsx("small", { children: props.description }) : null] })] }));
|
|
195
197
|
}
|
|
196
198
|
async function sendJson(method, url, body) {
|
|
197
199
|
const r = await fetch(url, {
|
|
@@ -270,11 +272,7 @@ function brandStateLabel(brand, tr) {
|
|
|
270
272
|
return tr('botDefaults.brandStateDefault');
|
|
271
273
|
return brand.trim() === '' ? tr('botDefaults.brandStateOff') : tr('botDefaults.brandStateCustom');
|
|
272
274
|
}
|
|
273
|
-
|
|
274
|
-
return quota == null
|
|
275
|
-
? tr('botDefaults.quotaStateOff')
|
|
276
|
-
: tr('botDefaults.quotaStateOn', { count: quota });
|
|
277
|
-
}
|
|
275
|
+
const GRANT_DURATION_VALUES = GRANT_DURATION_OPTIONS;
|
|
278
276
|
function sessionCapStateLabel(cap, tr) {
|
|
279
277
|
return cap == null
|
|
280
278
|
? tr('botDefaults.maxLiveWorkersStateDefault')
|
|
@@ -442,7 +440,7 @@ function BotDefaultsCard(props) {
|
|
|
442
440
|
return (_jsxs("article", { className: "bd-card bd-profile", "data-appid": bot.larkAppId, children: [_jsxs("header", { className: "bd-profile-head", children: [_jsx(Html, { html: botAvatarHtml({ name, larkAppId: bot.larkAppId }) }), _jsxs("div", { className: "bd-profile-id", children: [_jsx("strong", { children: name }), _jsx("code", { children: bot.larkAppId })] })] }), _jsxs("p", { className: "hint-warn-inline", children: ["\u67E5\u8BE2\u5931\u8D25\uFF1A", bot.error] })] }));
|
|
443
441
|
}
|
|
444
442
|
const def = bot.defaultOncall ?? { enabled: false, workingDir: '', since: 0 };
|
|
445
|
-
return (_jsxs("article", { className: "bd-card bd-profile", "data-appid": bot.larkAppId, children: [_jsxs("div", { className: "bd-profile-chrome", children: [_jsxs("header", { className: "bd-profile-head", children: [_jsx(BotAvatarControl, { bot: bot, name: name, patchBot: patchBot }), _jsx("div", { className: "bd-profile-main", children: _jsx(BotProfileIdentity, { bot: bot, cli: cli, patchBot: patchBot, meta: (_jsxs(_Fragment, { children: [_jsxs("small", { className: "bd-meta-ok", children: ["\u25CF ", tr('botDefaults.metaOnline')] }), (def.since ?? 0) > 0 ? _jsxs("small", { "data-oncall-since": true, children: [tr('botDefaults.lastEnabled'), ": ", fmtSince(def.since ?? 0)] }) : null, (bot.autoboundChatCount ?? 0) > 0 ? _jsx("small", { children: tr('botDefaults.autobound', { count: bot.autoboundChatCount ?? 0 }) }) : null] })) }) })] }), _jsx(BotDefaultsTabs, { active: props.activeTab, onChange: props.onTabChange })] }), _jsxs("div", { className: "bd-body bd-tab-panels", children: [_jsx("div", { id: "bd-panel-common", role: "tabpanel", "aria-labelledby": "bd-tab-common", className: "bd-tab-panel", hidden: props.activeTab !== 'common', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(BotAgentSection, { bot: bot, sessionFallback: cli, cliState: cliState, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(WorkingDirSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(RoleSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-sessions", role: "tabpanel", "aria-labelledby": "bd-tab-sessions", className: "bd-tab-panel", hidden: props.activeTab !== 'sessions', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(SessionModeSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SubstituteModeSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(CrossBotSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SessionCapSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(StartupCommandsSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SummaryTriggerSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) })] }) }), _jsx("div", { id: "bd-panel-security", role: "tabpanel", "aria-labelledby": "bd-tab-security", className: "bd-tab-panel", hidden: props.activeTab !== 'security', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(SandboxSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId !== 'riff' && bot.sandbox === true ? (_jsx("section", { className: "bd-tile bd-tile-wide", children: _jsx(SandboxPathsSection, { bot: bot, patchBot: patchBot }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(GrantSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SlashCommandPermissionsSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-cards", role: "tabpanel", "aria-labelledby": "bd-tab-cards", className: "bd-tab-panel", hidden: props.activeTab !== 'cards', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(CardBehaviorSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(BrandSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-advanced", role: "tabpanel", "aria-labelledby": "bd-tab-advanced", className: "bd-tab-panel", hidden: props.activeTab !== 'advanced', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(BackendTypeSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId === 'codex-app' ? (_jsx("section", { className: "bd-tile", children: _jsx(CodexAppDisplaySection, { bot: bot, putCardPref: putCardPref }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(RuntimeEnvironmentSection, { bot: bot, patchBot: patchBot }) })] }) })] })] }));
|
|
443
|
+
return (_jsxs("article", { className: "bd-card bd-profile", "data-appid": bot.larkAppId, children: [_jsxs("div", { className: "bd-profile-chrome", children: [_jsxs("header", { className: "bd-profile-head", children: [_jsx(BotAvatarControl, { bot: bot, name: name, patchBot: patchBot }), _jsx("div", { className: "bd-profile-main", children: _jsx(BotProfileIdentity, { bot: bot, cli: cli, patchBot: patchBot, meta: (_jsxs(_Fragment, { children: [_jsxs("small", { className: "bd-meta-ok", children: ["\u25CF ", tr('botDefaults.metaOnline')] }), (def.since ?? 0) > 0 ? _jsxs("small", { "data-oncall-since": true, children: [tr('botDefaults.lastEnabled'), ": ", fmtSince(def.since ?? 0)] }) : null, (bot.autoboundChatCount ?? 0) > 0 ? _jsx("small", { children: tr('botDefaults.autobound', { count: bot.autoboundChatCount ?? 0 }) }) : null] })) }) })] }), _jsx(BotDefaultsTabs, { active: props.activeTab, onChange: props.onTabChange })] }), _jsxs("div", { className: "bd-body bd-tab-panels", children: [_jsx("div", { id: "bd-panel-common", role: "tabpanel", "aria-labelledby": "bd-tab-common", className: "bd-tab-panel", hidden: props.activeTab !== 'common', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(BotAgentSection, { bot: bot, sessionFallback: cli, cliState: cliState, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(WorkingDirSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(RoleSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-sessions", role: "tabpanel", "aria-labelledby": "bd-tab-sessions", className: "bd-tab-panel", hidden: props.activeTab !== 'sessions', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(SessionModeSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SubstituteModeSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(CrossBotSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SessionCapSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(StartupCommandsSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SummaryTriggerSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) })] }) }), _jsx("div", { id: "bd-panel-security", role: "tabpanel", "aria-labelledby": "bd-tab-security", className: "bd-tab-panel", hidden: props.activeTab !== 'security', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(SandboxSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId !== 'riff' && bot.sandbox === true ? (_jsx("section", { className: "bd-tile bd-tile-wide", children: _jsx(SandboxPathsSection, { bot: bot, patchBot: patchBot }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(GrantSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SlashCommandPermissionsSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-cards", role: "tabpanel", "aria-labelledby": "bd-tab-cards", className: "bd-tab-panel", hidden: props.activeTab !== 'cards', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile bd-tile-wide", children: _jsx(CardBehaviorSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(BrandSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-advanced", role: "tabpanel", "aria-labelledby": "bd-tab-advanced", className: "bd-tab-panel", hidden: props.activeTab !== 'advanced', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(BackendTypeSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId === 'codex-app' ? (_jsx("section", { className: "bd-tile", children: _jsx(CodexAppDisplaySection, { bot: bot, putCardPref: putCardPref }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(RuntimeEnvironmentSection, { bot: bot, patchBot: patchBot }) })] }) })] })] }));
|
|
446
444
|
}
|
|
447
445
|
function RuntimeEnvironmentSection(props) {
|
|
448
446
|
const tr = useT();
|
|
@@ -626,7 +624,7 @@ function BotProfileIdentity(props) {
|
|
|
626
624
|
else if (event.key === 'Escape') {
|
|
627
625
|
setEditMode(false);
|
|
628
626
|
}
|
|
629
|
-
} }), _jsx("button", { type: "button", className: "primary", "data-action": "save-bot-name", disabled: busy, onClick: () => void submitRename(), children: tr('botDefaults.renameSave') }), _jsx("button", { type: "button", "data-action": "cancel-bot-name", disabled: busy, onClick: () => setEditMode(false), children: tr('botDefaults.renameCancel') })] })), _jsx("code", { children: bot.larkAppId }), _jsx("small", { className: statusClass(status, 'bd-name-status'), "data-name-status": true, children: status?.text ?? '' }), _jsx("button", { type: "button", className: "bd-feishu-login", "data-action": "feishu-login", hidden: !loginVisible, onClick: () => setLoginOpen(true), children: tr('feishuLogin.entry') }), loginOpen ? (_jsx(FeishuLoginModal, { onClose: () => setLoginOpen(false), onSuccess: () => {
|
|
627
|
+
} }), _jsx("button", { type: "button", className: "primary", "data-action": "save-bot-name", disabled: busy, onClick: () => void submitRename(), children: tr('botDefaults.renameSave') }), _jsx("button", { type: "button", "data-action": "cancel-bot-name", disabled: busy, onClick: () => setEditMode(false), children: tr('botDefaults.renameCancel') })] })), _jsxs("div", { className: "bd-profile-appid-row", children: [_jsx("code", { children: bot.larkAppId }), larkConsoleUrl(bot.larkAppId, bot.brand) ? (_jsxs("a", { className: "bd-console-link", href: larkConsoleUrl(bot.larkAppId, bot.brand), target: "_blank", rel: "noopener noreferrer", children: [tr('botDefaults.openConsole'), _jsx("svg", { viewBox: "0 0 24 24", width: "12", height: "12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M7 17 17 7M9 7h8v8" }) })] })) : null] }), _jsx("small", { className: statusClass(status, 'bd-name-status'), "data-name-status": true, children: status?.text ?? '' }), _jsx("button", { type: "button", className: "bd-feishu-login", "data-action": "feishu-login", hidden: !loginVisible, onClick: () => setLoginOpen(true), children: tr('feishuLogin.entry') }), loginOpen ? (_jsx(FeishuLoginModal, { onClose: () => setLoginOpen(false), onSuccess: () => {
|
|
630
628
|
setLoginVisible(false);
|
|
631
629
|
setLoginOpen(false);
|
|
632
630
|
void submitRename();
|
|
@@ -713,10 +711,20 @@ function FeishuLoginModal(props) {
|
|
|
713
711
|
window.clearTimeout(successTimerRef.current);
|
|
714
712
|
};
|
|
715
713
|
}, [begin, stopTimer]);
|
|
716
|
-
|
|
714
|
+
if (typeof document === 'undefined')
|
|
715
|
+
return null;
|
|
716
|
+
// Portal 到 body:此弹层内联渲染在头像组件(位于 .page 页面容器)的 DOM 里。
|
|
717
|
+
// 祖先 .page 有 `animation: dashboard-page-enter … both`,其关键帧动画 transform
|
|
718
|
+
// (translateY→none);fill-mode:both 下动画结束后持续「填充」,浏览器把 .page 的
|
|
719
|
+
// computed transform 算成 identity matrix(而非关键字 none)——「非 none 的 transform」
|
|
720
|
+
// 会为后代 position:fixed 建立包含块,于是弹层不再相对视口、被约束进 .page 的几何
|
|
721
|
+
// 范围,顶到视口下方,用户得滚动才看得到二维码(与主题无关,light/dark 均复现;
|
|
722
|
+
// 注意不是 .app-shell 的 overflow:hidden——overflow 不建立 fixed 包含块)。挂到
|
|
723
|
+
// body 顶层后逃出任何祖先包含块,与 auth-expired-overlay 一致,稳定居中。
|
|
724
|
+
return createPortal(_jsx("div", { className: "feishu-login-overlay", onClick: event => {
|
|
717
725
|
if (event.currentTarget === event.target)
|
|
718
726
|
onClose();
|
|
719
|
-
}, children: _jsxs("div", { className: "feishu-login-modal", role: "dialog", "aria-modal": "true", children: [_jsx("button", { type: "button", className: "feishu-login-close", "data-close": true, "aria-label": tr('feishuLogin.close'), onClick: onClose, children: "x" }), _jsx("h3", { className: "feishu-login-title", children: tr('feishuLogin.title') }), _jsx("p", { className: "feishu-login-hint", "data-hint": true, children: hint }), _jsx("div", { className: "feishu-login-qr", "data-qr": true, children: qrDataUrl ? _jsx("img", { className: "qr-image", src: qrDataUrl, alt: tr('feishuLogin.qrAlt') }) : null }), _jsx("div", { className: "feishu-login-actions", children: _jsx("button", { type: "button", className: "primary", "data-retry": true, hidden: !retry, onClick: () => void begin(), children: tr('feishuLogin.retry') }) })] }) }));
|
|
727
|
+
}, children: _jsxs("div", { className: "feishu-login-modal", role: "dialog", "aria-modal": "true", children: [_jsx("button", { type: "button", className: "feishu-login-close", "data-close": true, "aria-label": tr('feishuLogin.close'), onClick: onClose, children: "x" }), _jsx("h3", { className: "feishu-login-title", children: tr('feishuLogin.title') }), _jsx("p", { className: "feishu-login-hint", "data-hint": true, children: hint }), _jsx("div", { className: "feishu-login-qr", "data-qr": true, children: qrDataUrl ? _jsx("img", { className: "qr-image", src: qrDataUrl, alt: tr('feishuLogin.qrAlt') }) : null }), _jsx("div", { className: "feishu-login-actions", children: _jsx("button", { type: "button", className: "primary", "data-retry": true, hidden: !retry, onClick: () => void begin(), children: tr('feishuLogin.retry') }) })] }) }), document.body);
|
|
720
728
|
}
|
|
721
729
|
export function BotAgentSection(props) {
|
|
722
730
|
const tr = useT();
|
|
@@ -1572,23 +1580,29 @@ export function CardBehaviorSection(props) {
|
|
|
1572
1580
|
{ value: 'footer', label: tr('botDefaults.usageDisplayFooter') },
|
|
1573
1581
|
{ value: 'off', label: tr('botDefaults.usageDisplayOff') },
|
|
1574
1582
|
];
|
|
1575
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionCard') }),
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1583
|
+
return (_jsxs("section", { className: "bd-section", "aria-busy": busy !== null, children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionCard') }), _jsxs("div", { className: "bd-card-settings", children: [_jsxs("section", { className: "bd-card-setting-group", "data-card-feedback-group": true, children: [_jsx("h4", { className: "bd-card-setting-heading", children: tr('botDefaults.cardFeedbackGroup') }), _jsx(ToggleRow, { className: "bd-card-primary-toggle", checked: !disableStreaming, disabled: busy !== null, dataAction: "toggle-disable-streaming", title: tr('botDefaults.autoStreaming'), description: tr('botDefaults.autoStreamingDescription'), help: tr('botDefaults.autoStreamingHelp'), onChange: checked => {
|
|
1584
|
+
const previous = disableStreaming;
|
|
1585
|
+
const nextDisabled = !checked;
|
|
1586
|
+
setDisableStreaming(nextDisabled);
|
|
1587
|
+
void savePatch({ disableStreamingCard: nextDisabled }, 'streaming', () => setDisableStreaming(previous));
|
|
1588
|
+
} }), _jsxs("div", { className: "bd-card-dependent", "data-card-off-options": true, hidden: !disableStreaming, children: [_jsx(ToggleRow, { checked: !silentReactions, disabled: busy !== null, dataAction: "toggle-silent-reactions", title: tr('botDefaults.silentTurnReactions'), description: tr('botDefaults.silentTurnReactionsDescription'), help: tr('botDefaults.silentTurnReactionsHelp'), onChange: checked => {
|
|
1589
|
+
const previous = silentReactions;
|
|
1590
|
+
const nextSilent = !checked;
|
|
1591
|
+
setSilentReactions(nextSilent);
|
|
1592
|
+
void savePatch({ silentTurnReactions: nextSilent }, 'silent', () => setSilentReactions(previous));
|
|
1593
|
+
} }), _jsx("p", { role: "status", "data-card-pref-moot": true, className: "bd-card-mode-note", children: tr('botDefaults.manualCardHint') })] })] }), _jsxs("section", { className: "bd-card-setting-group", "data-card-content-group": true, children: [_jsx("h4", { className: "bd-card-setting-heading", children: tr('botDefaults.cardContentGroup') }), bot.usageSupported === true && (_jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.usageDisplayHelp'), children: tr('botDefaults.usageDisplay') }), _jsx(DropdownField, { dataInput: "usageDisplay", ariaLabel: tr('botDefaults.usageDisplay'), value: usageDisplay, disabled: busy !== null, options: usageDisplayOptions, onChange: next => {
|
|
1594
|
+
const previous = usageDisplay;
|
|
1595
|
+
setUsageDisplay(next);
|
|
1596
|
+
void savePatch({ usageDisplay: next }, 'usage', () => setUsageDisplay(previous));
|
|
1597
|
+
} })] }) })), _jsx("div", { className: "bd-card-control-list", children: _jsx(ToggleRow, { checked: writableLink, disabled: busy !== null, dataAction: "toggle-writable-link", title: tr('botDefaults.writableLink'), description: tr('botDefaults.writableLinkDescription'), help: tr('botDefaults.writableLinkHelp'), onChange: checked => {
|
|
1598
|
+
const previous = writableLink;
|
|
1599
|
+
setWritableLink(checked);
|
|
1600
|
+
void savePatch({ writableTerminalLinkInCard: checked }, 'writable', () => setWritableLink(previous));
|
|
1601
|
+
} }) })] }), _jsxs("section", { className: "bd-card-setting-group", "data-card-manual-group": true, children: [_jsx("h4", { className: "bd-card-setting-heading", children: tr('botDefaults.cardManualGroup') }), _jsx("p", { className: "bd-card-setting-copy", children: tr('botDefaults.manualCardIntro') }), _jsx("div", { className: "bd-card-control-list", children: _jsx(ToggleRow, { checked: privateCard, disabled: busy !== null, dataAction: "toggle-private-card", title: tr('botDefaults.privateCard'), description: tr('botDefaults.privateCardDescription'), help: tr('botDefaults.privateCardHelp'), onChange: checked => {
|
|
1602
|
+
const previous = privateCard;
|
|
1603
|
+
setPrivateCard(checked);
|
|
1604
|
+
void savePatch({ privateCard: checked }, 'private', () => setPrivateCard(previous));
|
|
1605
|
+
} }) })] })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: status, attr: { 'data-card-pref-status': '' } }) })] }));
|
|
1592
1606
|
}
|
|
1593
1607
|
export function CodexAppDisplaySection(props) {
|
|
1594
1608
|
const tr = useT();
|
|
@@ -2419,66 +2433,145 @@ function BrandSection(props) {
|
|
|
2419
2433
|
}
|
|
2420
2434
|
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionBrand') }), _jsxs("div", { className: "bd-row bd-brand", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.brandLabelHelp'), children: tr('botDefaults.brandLabel') }), _jsx("input", { type: "text", "data-input": "brandLabel", placeholder: tr('botDefaults.brandLabelPlaceholder'), value: input, disabled: busy, onChange: event => setInput(event.currentTarget.value) })] }), _jsx("small", { "data-brand-state": true, children: brandStateLabel(brand, tr) })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-brand", disabled: busy, onClick: () => void save(input), children: tr('botDefaults.brandSave') }), _jsx("button", { type: "button", "data-action": "reset-brand", disabled: busy, onClick: () => void save(null), children: tr('botDefaults.brandReset') }), _jsx(StatusSpan, { status: status, attr: { 'data-brand-status': '' } })] })] }));
|
|
2421
2435
|
}
|
|
2422
|
-
function GrantSection(props) {
|
|
2436
|
+
export function GrantSection(props) {
|
|
2423
2437
|
const tr = useT();
|
|
2424
2438
|
const [autoCard, setAutoCard] = useState(props.bot.autoGrantRequestCards !== false);
|
|
2425
2439
|
const [restrict, setRestrict] = useState(props.bot.restrictGrantCommands === true);
|
|
2440
|
+
const [duration, setDuration] = useState(typeof props.bot.grantDefaultDurationMs === 'number' ? props.bot.grantDefaultDurationMs : null);
|
|
2441
|
+
const [durationInput, setDurationInput] = useState(String(props.bot.grantDefaultDurationMs ?? DEFAULT_GRANT_DURATION_MS));
|
|
2426
2442
|
const [quota, setQuota] = useState(typeof props.bot.messageQuotaDefaultLimit === 'number' ? props.bot.messageQuotaDefaultLimit : null);
|
|
2427
2443
|
const [quotaInput, setQuotaInput] = useState(typeof props.bot.messageQuotaDefaultLimit === 'number' ? String(props.bot.messageQuotaDefaultLimit) : '');
|
|
2428
2444
|
const [status, setStatus] = useState(null);
|
|
2445
|
+
const [quotaError, setQuotaError] = useState(null);
|
|
2429
2446
|
const [busy, setBusy] = useState(null);
|
|
2430
2447
|
useEffect(() => {
|
|
2431
2448
|
setAutoCard(props.bot.autoGrantRequestCards !== false);
|
|
2449
|
+
}, [props.bot.autoGrantRequestCards]);
|
|
2450
|
+
useEffect(() => {
|
|
2432
2451
|
setRestrict(props.bot.restrictGrantCommands === true);
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2452
|
+
}, [props.bot.restrictGrantCommands]);
|
|
2453
|
+
useEffect(() => {
|
|
2454
|
+
const nextDuration = typeof props.bot.grantDefaultDurationMs === 'number' ? props.bot.grantDefaultDurationMs : null;
|
|
2455
|
+
setDuration(nextDuration);
|
|
2456
|
+
setDurationInput(String(nextDuration ?? DEFAULT_GRANT_DURATION_MS));
|
|
2457
|
+
}, [props.bot.grantDefaultDurationMs]);
|
|
2458
|
+
useEffect(() => {
|
|
2459
|
+
const nextQuota = typeof props.bot.messageQuotaDefaultLimit === 'number' ? props.bot.messageQuotaDefaultLimit : null;
|
|
2460
|
+
setQuota(nextQuota);
|
|
2461
|
+
setQuotaInput(nextQuota === null ? '' : String(nextQuota));
|
|
2462
|
+
}, [props.bot.messageQuotaDefaultLimit]);
|
|
2463
|
+
async function savePatch(patch, key, rollback) {
|
|
2438
2464
|
setBusy(key);
|
|
2439
2465
|
setStatus(null);
|
|
2440
2466
|
try {
|
|
2441
2467
|
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/grant-prefs`, patch);
|
|
2442
2468
|
if (res.ok && res.body.ok) {
|
|
2469
|
+
const nextDuration = typeof res.body.grantDefaultDurationMs === 'number' ? res.body.grantDefaultDurationMs : null;
|
|
2443
2470
|
const nextQuota = typeof res.body.messageQuotaDefaultLimit === 'number' ? res.body.messageQuotaDefaultLimit : null;
|
|
2444
2471
|
setAutoCard(res.body.autoGrantRequestCards !== false);
|
|
2445
2472
|
setRestrict(res.body.restrictGrantCommands === true);
|
|
2473
|
+
setDuration(nextDuration);
|
|
2446
2474
|
setQuota(nextQuota);
|
|
2447
|
-
if ('
|
|
2448
|
-
|
|
2475
|
+
if ('grantDefaultDurationMs' in patch)
|
|
2476
|
+
setDurationInput(String(nextDuration ?? DEFAULT_GRANT_DURATION_MS));
|
|
2477
|
+
if ('messageQuotaDefaultLimit' in patch) {
|
|
2478
|
+
setQuotaInput(nextQuota === null ? '' : String(nextQuota));
|
|
2479
|
+
}
|
|
2449
2480
|
props.patchBot(props.bot.larkAppId, {
|
|
2450
2481
|
autoGrantRequestCards: res.body.autoGrantRequestCards !== false,
|
|
2451
2482
|
restrictGrantCommands: res.body.restrictGrantCommands === true,
|
|
2483
|
+
grantDefaultDurationMs: nextDuration,
|
|
2452
2484
|
messageQuotaDefaultLimit: nextQuota,
|
|
2453
2485
|
});
|
|
2486
|
+
if (key === 'defaults')
|
|
2487
|
+
setQuotaError(null);
|
|
2454
2488
|
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2455
2489
|
}
|
|
2456
2490
|
else {
|
|
2491
|
+
rollback?.();
|
|
2457
2492
|
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2458
2493
|
}
|
|
2459
2494
|
}
|
|
2460
2495
|
catch (e) {
|
|
2496
|
+
rollback?.();
|
|
2461
2497
|
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2462
2498
|
}
|
|
2463
2499
|
finally {
|
|
2464
2500
|
setBusy(null);
|
|
2465
2501
|
}
|
|
2466
2502
|
}
|
|
2467
|
-
function
|
|
2503
|
+
function saveDefaults() {
|
|
2468
2504
|
const parsed = positiveIntegerOrNull(quotaInput);
|
|
2469
|
-
|
|
2470
|
-
|
|
2505
|
+
const quotaChanged = parsed !== quota;
|
|
2506
|
+
setStatus(null);
|
|
2507
|
+
if (quotaChanged && (parsed === 'invalid'
|
|
2508
|
+
|| (typeof parsed === 'number' && parsed > MAX_GRANT_QUOTA))) {
|
|
2509
|
+
setQuotaError(tr('botDefaults.quotaInvalid'));
|
|
2510
|
+
return;
|
|
2511
|
+
}
|
|
2512
|
+
setQuotaError(null);
|
|
2513
|
+
const durationMs = Number(durationInput);
|
|
2514
|
+
if (!GRANT_DURATION_VALUES.includes(durationMs)) {
|
|
2515
|
+
setStatus({ text: `✗ ${tr('botDefaults.grantDurationInvalid')}` });
|
|
2471
2516
|
return;
|
|
2472
2517
|
}
|
|
2473
|
-
|
|
2518
|
+
const patch = {};
|
|
2519
|
+
if (durationMs !== (duration ?? DEFAULT_GRANT_DURATION_MS)) {
|
|
2520
|
+
patch.grantDefaultDurationMs = durationMs === DEFAULT_GRANT_DURATION_MS ? null : durationMs;
|
|
2521
|
+
}
|
|
2522
|
+
if (quotaChanged) {
|
|
2523
|
+
patch.messageQuotaDefaultLimit = parsed;
|
|
2524
|
+
}
|
|
2525
|
+
if (Object.keys(patch).length > 0)
|
|
2526
|
+
void savePatch(patch, 'defaults');
|
|
2474
2527
|
}
|
|
2475
|
-
|
|
2528
|
+
const durationOptions = [
|
|
2529
|
+
{ value: String(DEFAULT_GRANT_DURATION_MS), label: tr('botDefaults.grantDuration1Hour') },
|
|
2530
|
+
{ value: String(8 * 60 * 60 * 1000), label: tr('botDefaults.grantDuration8Hours') },
|
|
2531
|
+
{ value: String(24 * 60 * 60 * 1000), label: tr('botDefaults.grantDuration1Day') },
|
|
2532
|
+
{ value: String(7 * 24 * 60 * 60 * 1000), label: tr('botDefaults.grantDuration7Days') },
|
|
2533
|
+
];
|
|
2534
|
+
const currentDuration = duration ?? DEFAULT_GRANT_DURATION_MS;
|
|
2535
|
+
const currentDurationLabel = currentDuration === DEFAULT_GRANT_DURATION_MS
|
|
2536
|
+
? tr('botDefaults.grantDuration1HourValue')
|
|
2537
|
+
: String(durationOptions.find(option => option.value === String(currentDuration))?.label ?? '');
|
|
2538
|
+
const parsedQuotaInput = positiveIntegerOrNull(quotaInput);
|
|
2539
|
+
const quotaInputDirty = parsedQuotaInput === 'invalid' || parsedQuotaInput !== quota;
|
|
2540
|
+
const defaultsDirty = durationInput !== String(currentDuration) || quotaInputDirty;
|
|
2541
|
+
const currentState = quota === null
|
|
2542
|
+
? tr('botDefaults.grantDefaultsCurrentBuiltIn', {
|
|
2543
|
+
duration: currentDurationLabel,
|
|
2544
|
+
count: DEFAULT_GRANT_QUOTA,
|
|
2545
|
+
})
|
|
2546
|
+
: quota > MAX_GRANT_QUOTA
|
|
2547
|
+
? tr('botDefaults.grantDefaultsCurrentLegacy', {
|
|
2548
|
+
duration: currentDurationLabel,
|
|
2549
|
+
cardCount: MAX_GRANT_QUOTA,
|
|
2550
|
+
oncallCount: quota,
|
|
2551
|
+
})
|
|
2552
|
+
: tr('botDefaults.grantDefaultsCurrentCustom', {
|
|
2553
|
+
duration: currentDurationLabel,
|
|
2554
|
+
count: quota,
|
|
2555
|
+
});
|
|
2556
|
+
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionGrant') }), _jsxs("div", { className: "bd-toggle-grid bd-grant-toggle-grid", children: [_jsx(ToggleRow, { checked: autoCard, disabled: busy !== null, dataAction: "toggle-auto-grant-card", title: tr('botDefaults.autoGrantCard'), help: tr('botDefaults.autoGrantCardHelp'), onChange: checked => {
|
|
2557
|
+
const previous = autoCard;
|
|
2476
2558
|
setAutoCard(checked);
|
|
2477
|
-
void savePatch({ autoGrantRequestCards: checked }, 'autoGrant');
|
|
2478
|
-
} }), _jsx(ToggleRow, { checked: restrict, disabled: busy
|
|
2559
|
+
void savePatch({ autoGrantRequestCards: checked }, 'autoGrant', () => setAutoCard(previous));
|
|
2560
|
+
} }), _jsx(ToggleRow, { checked: restrict, disabled: busy !== null, dataAction: "toggle-restrict-grant", title: tr('botDefaults.restrictGrant'), help: tr('botDefaults.restrictGrantHelp'), onChange: checked => {
|
|
2561
|
+
const previous = restrict;
|
|
2479
2562
|
setRestrict(checked);
|
|
2480
|
-
void savePatch({ restrictGrantCommands: checked }, 'restrict');
|
|
2481
|
-
} })] }), _jsxs("
|
|
2563
|
+
void savePatch({ restrictGrantCommands: checked }, 'restrict', () => setRestrict(previous));
|
|
2564
|
+
} })] }), _jsxs("form", { className: "bd-grant-defaults", noValidate: true, onSubmit: event => {
|
|
2565
|
+
event.preventDefault();
|
|
2566
|
+
saveDefaults();
|
|
2567
|
+
}, children: [_jsx("div", { className: "bd-row bd-grant-duration", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.grantDurationHelp'), children: tr('botDefaults.grantDurationDefault') }), _jsx(DropdownField, { dataInput: "grantDefaultDurationMs", value: durationInput, options: durationOptions, disabled: busy !== null, ariaLabel: tr('botDefaults.grantDurationDefault'), onChange: value => {
|
|
2568
|
+
setDurationInput(value);
|
|
2569
|
+
setStatus(null);
|
|
2570
|
+
} })] }) }), _jsxs("div", { className: "bd-row bd-quota", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.quotaHelp'), children: tr('botDefaults.quotaDefault') }), _jsx("input", { type: "number", min: 1, max: MAX_GRANT_QUOTA, step: 1, "data-input": "quotaLimit", placeholder: tr('botDefaults.quotaPlaceholder'), value: quotaInput, disabled: busy !== null, "aria-label": tr('botDefaults.quotaDefault'), "aria-invalid": quotaError ? true : undefined, "aria-describedby": quotaError ? 'grant-defaults-state grant-default-quota-error' : 'grant-defaults-state', onChange: event => {
|
|
2571
|
+
setQuotaInput(event.currentTarget.value);
|
|
2572
|
+
setQuotaError(null);
|
|
2573
|
+
setStatus(null);
|
|
2574
|
+
} })] }), quotaError ? _jsx("small", { id: "grant-default-quota-error", className: "bd-field-error", role: "alert", children: quotaError }) : null, _jsx("small", { id: "grant-defaults-state", "data-grant-defaults-state": true, children: currentState })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "submit", className: "primary", "data-action": "save-grant-defaults", disabled: busy !== null || !defaultsDirty, children: busy === 'defaults' ? tr('botDefaults.grantDefaultsSaving') : tr('botDefaults.grantDefaultsSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-grant-status': '' } })] })] })] }));
|
|
2482
2575
|
}
|
|
2483
2576
|
export function renderBotDefaultsPage(root) {
|
|
2484
2577
|
return mountReactPage(root, _jsx(BotDefaultsPage, {}));
|