botmux 3.15.0 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/destroy-result.d.ts +159 -0
- package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
- package/dist/adapters/backend/destroy-result.js +223 -0
- package/dist/adapters/backend/destroy-result.js.map +1 -0
- package/dist/adapters/backend/herdr-backend.d.ts +4 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +23 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/mojo-backend.d.ts +577 -0
- package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-backend.js +2471 -0
- package/dist/adapters/backend/mojo-backend.js.map +1 -0
- package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
- package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-budgets.js +22 -0
- package/dist/adapters/backend/mojo-budgets.js.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
- package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
- package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
- package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-process-tree.js +486 -0
- package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
- package/dist/adapters/backend/mojo-types.d.ts +542 -0
- package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
- package/dist/adapters/backend/mojo-types.js +682 -0
- package/dist/adapters/backend/mojo-types.js.map +1 -0
- package/dist/adapters/backend/reproduce-command.js +3 -3
- package/dist/adapters/backend/reproduce-command.js.map +1 -1
- package/dist/adapters/backend/riff-backend.js +1 -1
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +44 -7
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +30 -7
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
- package/dist/adapters/backend/session-backend-selector.js +82 -10
- package/dist/adapters/backend/session-backend-selector.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +101 -6
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zmx-backend.d.ts +11 -0
- package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zmx-backend.js +16 -1
- package/dist/adapters/backend/zmx-backend.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +2 -2
- 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 +7 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/copilot.d.ts +3 -1
- package/dist/adapters/cli/copilot.d.ts.map +1 -1
- package/dist/adapters/cli/copilot.js +23 -5
- package/dist/adapters/cli/copilot.js.map +1 -1
- package/dist/adapters/cli/cursor.d.ts.map +1 -1
- package/dist/adapters/cli/cursor.js +13 -3
- package/dist/adapters/cli/cursor.js.map +1 -1
- package/dist/adapters/cli/grok.d.ts.map +1 -1
- package/dist/adapters/cli/grok.js +24 -5
- package/dist/adapters/cli/grok.js.map +1 -1
- package/dist/adapters/cli/kimi.d.ts.map +1 -1
- package/dist/adapters/cli/kimi.js +19 -1
- package/dist/adapters/cli/kimi.js.map +1 -1
- package/dist/adapters/cli/mojo.d.ts +28 -0
- package/dist/adapters/cli/mojo.d.ts.map +1 -0
- package/dist/adapters/cli/mojo.js +58 -0
- package/dist/adapters/cli/mojo.js.map +1 -0
- package/dist/adapters/cli/pi.d.ts +6 -4
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +6 -4
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +251 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +254 -1
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/registry.d.ts +13 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +19 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +3 -3
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +4 -3
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +3 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +22 -6
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +29 -4
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +20 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +30 -4
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/arg-utils.d.ts +5 -0
- package/dist/cli/arg-utils.d.ts.map +1 -1
- package/dist/cli/arg-utils.js +7 -0
- package/dist/cli/arg-utils.js.map +1 -1
- package/dist/cli/bots-list-output.d.ts +130 -2
- package/dist/cli/bots-list-output.d.ts.map +1 -1
- package/dist/cli/bots-list-output.js +173 -27
- package/dist/cli/bots-list-output.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle-env.js +38 -11
- package/dist/cli/daemon-lifecycle-env.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +15 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -1
- package/dist/cli/dashboard-command.js +22 -0
- package/dist/cli/dashboard-command.js.map +1 -1
- package/dist/cli/log-tail.d.ts +54 -0
- package/dist/cli/log-tail.d.ts.map +1 -0
- package/dist/cli/log-tail.js +167 -0
- package/dist/cli/log-tail.js.map +1 -0
- package/dist/cli/pm2-env.d.ts +16 -0
- package/dist/cli/pm2-env.d.ts.map +1 -0
- package/dist/cli/pm2-env.js +63 -0
- package/dist/cli/pm2-env.js.map +1 -0
- package/dist/cli/pm2-fleet-lock.d.ts +26 -0
- package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
- package/dist/cli/pm2-fleet-lock.js +50 -0
- package/dist/cli/pm2-fleet-lock.js.map +1 -0
- package/dist/cli/pm2-god-retirement.d.ts +59 -0
- package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
- package/dist/cli/pm2-god-retirement.js +95 -0
- package/dist/cli/pm2-god-retirement.js.map +1 -0
- package/dist/cli/session-list-wake.d.ts +41 -0
- package/dist/cli/session-list-wake.d.ts.map +1 -0
- package/dist/cli/session-list-wake.js +102 -0
- package/dist/cli/session-list-wake.js.map +1 -0
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +26 -0
- package/dist/cli/workflow.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +933 -115
- package/dist/cli.js.map +1 -1
- package/dist/codex-app-runner.js +261 -49
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/cli-runtime-update.d.ts +8 -0
- package/dist/core/cli-runtime-update.d.ts.map +1 -1
- package/dist/core/cli-runtime-update.js +127 -8
- package/dist/core/cli-runtime-update.js.map +1 -1
- package/dist/core/close-residual.d.ts +64 -0
- package/dist/core/close-residual.d.ts.map +1 -0
- package/dist/core/close-residual.js +93 -0
- package/dist/core/close-residual.js.map +1 -0
- package/dist/core/closed-session-card.d.ts.map +1 -1
- package/dist/core/closed-session-card.js +11 -3
- package/dist/core/closed-session-card.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +129 -27
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +3 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +230 -1
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/daemon-background-close.d.ts +19 -0
- package/dist/core/daemon-background-close.d.ts.map +1 -0
- package/dist/core/daemon-background-close.js +39 -0
- package/dist/core/daemon-background-close.js.map +1 -0
- package/dist/core/dashboard-command/overview.d.ts +4 -0
- package/dist/core/dashboard-command/overview.d.ts.map +1 -1
- package/dist/core/dashboard-command/overview.js +8 -1
- package/dist/core/dashboard-command/overview.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +373 -41
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +4 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +3 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dashboard-url.d.ts +37 -0
- package/dist/core/dashboard-url.d.ts.map +1 -1
- package/dist/core/dashboard-url.js +71 -0
- package/dist/core/dashboard-url.js.map +1 -1
- package/dist/core/deferred-schedule-settlement.d.ts +15 -1
- package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
- package/dist/core/deferred-schedule-settlement.js +4 -1
- package/dist/core/deferred-schedule-settlement.js.map +1 -1
- package/dist/core/device-isolation-daemon.d.ts +91 -1
- package/dist/core/device-isolation-daemon.d.ts.map +1 -1
- package/dist/core/device-isolation-daemon.js +346 -2
- package/dist/core/device-isolation-daemon.js.map +1 -1
- package/dist/core/local-terminal-opener.d.ts.map +1 -1
- package/dist/core/local-terminal-opener.js +5 -1
- package/dist/core/local-terminal-opener.js.map +1 -1
- package/dist/core/loopback-target.d.ts +14 -0
- package/dist/core/loopback-target.d.ts.map +1 -0
- package/dist/core/loopback-target.js +20 -0
- package/dist/core/loopback-target.js.map +1 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +16 -2
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/mojo-containment-command.d.ts +20 -0
- package/dist/core/mojo-containment-command.d.ts.map +1 -0
- package/dist/core/mojo-containment-command.js +266 -0
- package/dist/core/mojo-containment-command.js.map +1 -0
- package/dist/core/mojo-containment.d.ts +575 -0
- package/dist/core/mojo-containment.d.ts.map +1 -0
- package/dist/core/mojo-containment.js +1158 -0
- package/dist/core/mojo-containment.js.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
- package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
- package/dist/core/mojo-launcher-env-quarantine.js +175 -0
- package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
- package/dist/core/mojo-session-identity.d.ts +3 -0
- package/dist/core/mojo-session-identity.d.ts.map +1 -0
- package/dist/core/mojo-session-identity.js +126 -0
- package/dist/core/mojo-session-identity.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +32 -8
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +55 -17
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/plugins/mcp/gateway.d.ts +14 -1
- package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
- package/dist/core/plugins/mcp/gateway.js +70 -3
- package/dist/core/plugins/mcp/gateway.js.map +1 -1
- package/dist/core/plugins/mcp/host.d.ts +2 -0
- package/dist/core/plugins/mcp/host.d.ts.map +1 -1
- package/dist/core/plugins/mcp/host.js +2 -0
- package/dist/core/plugins/mcp/host.js.map +1 -1
- package/dist/core/plugins/pm2.d.ts.map +1 -1
- package/dist/core/plugins/pm2.js +16 -3
- package/dist/core/plugins/pm2.js.map +1 -1
- package/dist/core/plugins/service-manager.d.ts +9 -0
- package/dist/core/plugins/service-manager.d.ts.map +1 -1
- package/dist/core/plugins/service-manager.js +33 -16
- package/dist/core/plugins/service-manager.js.map +1 -1
- package/dist/core/preview-port-owner.d.ts +109 -0
- package/dist/core/preview-port-owner.d.ts.map +1 -0
- package/dist/core/preview-port-owner.js +320 -0
- package/dist/core/preview-port-owner.js.map +1 -0
- package/dist/core/remote-cli-ids.d.ts +5 -0
- package/dist/core/remote-cli-ids.d.ts.map +1 -0
- package/dist/core/remote-cli-ids.js +24 -0
- package/dist/core/remote-cli-ids.js.map +1 -0
- package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
- package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
- package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
- package/dist/core/remote-shutdown-detach.js.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
- package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
- package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
- package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
- package/dist/core/reply-target.d.ts +16 -1
- package/dist/core/reply-target.d.ts.map +1 -1
- package/dist/core/reply-target.js +61 -0
- package/dist/core/reply-target.js.map +1 -1
- package/dist/core/session-group-birth.d.ts +26 -0
- package/dist/core/session-group-birth.d.ts.map +1 -1
- package/dist/core/session-group-birth.js +81 -4
- package/dist/core/session-group-birth.js.map +1 -1
- package/dist/core/session-manager.d.ts +15 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +259 -5
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-model.d.ts +46 -0
- package/dist/core/session-model.d.ts.map +1 -0
- package/dist/core/session-model.js +42 -0
- package/dist/core/session-model.js.map +1 -0
- package/dist/core/session-owner-reminder.d.ts +63 -0
- package/dist/core/session-owner-reminder.d.ts.map +1 -0
- package/dist/core/session-owner-reminder.js +196 -0
- package/dist/core/session-owner-reminder.js.map +1 -0
- package/dist/core/session-preview-registry.d.ts +53 -0
- package/dist/core/session-preview-registry.d.ts.map +1 -0
- package/dist/core/session-preview-registry.js +82 -0
- package/dist/core/session-preview-registry.js.map +1 -0
- package/dist/core/session-preview.d.ts +114 -0
- package/dist/core/session-preview.d.ts.map +1 -0
- package/dist/core/session-preview.js +184 -0
- package/dist/core/session-preview.js.map +1 -0
- package/dist/core/session-rename.d.ts.map +1 -1
- package/dist/core/session-rename.js +5 -3
- package/dist/core/session-rename.js.map +1 -1
- package/dist/core/session-wake-deadline.d.ts +5 -0
- package/dist/core/session-wake-deadline.d.ts.map +1 -0
- package/dist/core/session-wake-deadline.js +13 -0
- package/dist/core/session-wake-deadline.js.map +1 -0
- package/dist/core/shutdown-budgets.d.ts +7 -6
- package/dist/core/shutdown-budgets.d.ts.map +1 -1
- package/dist/core/shutdown-budgets.js +11 -10
- package/dist/core/shutdown-budgets.js.map +1 -1
- package/dist/core/terminal-control-grant.d.ts +74 -0
- package/dist/core/terminal-control-grant.d.ts.map +1 -0
- package/dist/core/terminal-control-grant.js +183 -0
- package/dist/core/terminal-control-grant.js.map +1 -0
- package/dist/core/terminal-proxy.d.ts.map +1 -1
- package/dist/core/terminal-proxy.js +4 -5
- package/dist/core/terminal-proxy.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +4 -11
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +19 -16
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +36 -29
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +88 -10
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -7
- package/dist/core/types.js.map +1 -1
- package/dist/core/workbench-link.d.ts +81 -0
- package/dist/core/workbench-link.d.ts.map +1 -0
- package/dist/core/workbench-link.js +109 -0
- package/dist/core/workbench-link.js.map +1 -0
- package/dist/core/worker-pool.d.ts +312 -11
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +2494 -209
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +6 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +443 -106
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/aggregator.d.ts +33 -3
- package/dist/dashboard/aggregator.d.ts.map +1 -1
- package/dist/dashboard/aggregator.js +93 -17
- package/dist/dashboard/aggregator.js.map +1 -1
- package/dist/dashboard/auth-session-connections.d.ts +59 -0
- package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
- package/dist/dashboard/auth-session-connections.js +109 -0
- package/dist/dashboard/auth-session-connections.js.map +1 -0
- package/dist/dashboard/auth.d.ts +99 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +176 -64
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/control-audit.d.ts +112 -0
- package/dist/dashboard/control-audit.d.ts.map +1 -0
- package/dist/dashboard/control-audit.js +195 -0
- package/dist/dashboard/control-audit.js.map +1 -0
- package/dist/dashboard/control-csrf.d.ts +123 -0
- package/dist/dashboard/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/control-csrf.js +392 -0
- package/dist/dashboard/control-csrf.js.map +1 -0
- package/dist/dashboard/daemon-reconcile.d.ts +26 -0
- package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
- package/dist/dashboard/daemon-reconcile.js +46 -0
- package/dist/dashboard/daemon-reconcile.js.map +1 -0
- package/dist/dashboard/debug-terminal.d.ts.map +1 -1
- package/dist/dashboard/debug-terminal.js +18 -4
- package/dist/dashboard/debug-terminal.js.map +1 -1
- package/dist/dashboard/events-sse.d.ts +60 -0
- package/dist/dashboard/events-sse.d.ts.map +1 -0
- package/dist/dashboard/events-sse.js +63 -0
- package/dist/dashboard/events-sse.js.map +1 -0
- package/dist/dashboard/h5-auth.d.ts +256 -0
- package/dist/dashboard/h5-auth.d.ts.map +1 -0
- package/dist/dashboard/h5-auth.js +825 -0
- package/dist/dashboard/h5-auth.js.map +1 -0
- package/dist/dashboard/managed-spawn.d.ts +36 -0
- package/dist/dashboard/managed-spawn.d.ts.map +1 -0
- package/dist/dashboard/managed-spawn.js +169 -0
- package/dist/dashboard/managed-spawn.js.map +1 -0
- package/dist/dashboard/preview-content-capability.d.ts +41 -0
- package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
- package/dist/dashboard/preview-content-capability.js +127 -0
- package/dist/dashboard/preview-content-capability.js.map +1 -0
- package/dist/dashboard/preview-contract.d.ts +85 -0
- package/dist/dashboard/preview-contract.d.ts.map +1 -0
- package/dist/dashboard/preview-contract.js +198 -0
- package/dist/dashboard/preview-contract.js.map +1 -0
- package/dist/dashboard/preview-guard-page.d.ts +52 -0
- package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
- package/dist/dashboard/preview-guard-page.js +162 -0
- package/dist/dashboard/preview-guard-page.js.map +1 -0
- package/dist/dashboard/preview-interaction.d.ts +57 -0
- package/dist/dashboard/preview-interaction.d.ts.map +1 -0
- package/dist/dashboard/preview-interaction.js +198 -0
- package/dist/dashboard/preview-interaction.js.map +1 -0
- package/dist/dashboard/preview-proxy.d.ts +113 -0
- package/dist/dashboard/preview-proxy.d.ts.map +1 -0
- package/dist/dashboard/preview-proxy.js +543 -0
- package/dist/dashboard/preview-proxy.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts +23 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +90 -21
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/request-identity.d.ts +77 -0
- package/dist/dashboard/request-identity.d.ts.map +1 -0
- package/dist/dashboard/request-identity.js +72 -0
- package/dist/dashboard/request-identity.js.map +1 -0
- package/dist/dashboard/session-cleanup.d.ts +5 -0
- package/dist/dashboard/session-cleanup.d.ts.map +1 -1
- package/dist/dashboard/session-cleanup.js +4 -0
- package/dist/dashboard/session-cleanup.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +5 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +14 -0
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/standing-link.d.ts +76 -0
- package/dist/dashboard/standing-link.d.ts.map +1 -0
- package/dist/dashboard/standing-link.js +111 -0
- package/dist/dashboard/standing-link.js.map +1 -0
- package/dist/dashboard/terminal-control.d.ts +105 -0
- package/dist/dashboard/terminal-control.d.ts.map +1 -0
- package/dist/dashboard/terminal-control.js +296 -0
- package/dist/dashboard/terminal-control.js.map +1 -0
- package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
- package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
- package/dist/dashboard/terminal-front-proxy.js +397 -0
- package/dist/dashboard/terminal-front-proxy.js.map +1 -0
- package/dist/dashboard/terminal-view-capability.d.ts +97 -0
- package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
- package/dist/dashboard/terminal-view-capability.js +145 -0
- package/dist/dashboard/terminal-view-capability.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-api.js +227 -0
- package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
- package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
- package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
- package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
- package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
- package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
- package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-chat.js +168 -0
- package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
- package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
- package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
- package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
- package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-model.js +529 -0
- package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
- package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-page.js +27 -0
- package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-panes.js +468 -0
- package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
- package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
- package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
- package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-storage.js +197 -0
- package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
- package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-touch.js +96 -0
- package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
- package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
- package/dist/dashboard/web/agent-workbench-view.js +439 -0
- package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +63 -2
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +11 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +267 -36
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +6 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/control-csrf.d.ts +4 -0
- package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
- package/dist/dashboard/web/control-csrf.js +26 -0
- package/dist/dashboard/web/control-csrf.js.map +1 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
- package/dist/dashboard/web/dashboard-routes.js +2 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -1
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +11 -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 +132 -6
- package/dist/dashboard/web/i18n.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/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +41 -1
- 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 +5 -1
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +3 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +56 -10
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +27 -2
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +43 -4
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts +3 -0
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +11 -0
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard/web/update-action.d.ts +12 -0
- package/dist/dashboard/web/update-action.d.ts.map +1 -1
- package/dist/dashboard/web/update-action.js +11 -0
- package/dist/dashboard/web/update-action.js.map +1 -1
- package/dist/dashboard/workbench-doctor.d.ts +114 -0
- package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
- package/dist/dashboard/workbench-doctor.js +620 -0
- package/dist/dashboard/workbench-doctor.js.map +1 -0
- package/dist/dashboard/workbench-ticket.d.ts +165 -0
- package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
- package/dist/dashboard/workbench-ticket.js +495 -0
- package/dist/dashboard/workbench-ticket.js.map +1 -0
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
- package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
- package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
- package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7B3E3US.js → chunk-2W6SCN3M.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-VMWNR3SV.js → chunk-F6KNPF4R.js} +11 -9
- package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
- package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
- package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-Z7DO42GJ.js → chunk-NACP7BMR.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-CPH6VVFY.js → connectors-page-VOISXXII.js} +1 -1
- package/dist/dashboard-web/chunks/{feedback-page-J2FKQ3LK.js → feedback-page-RN6HRZMS.js} +1 -1
- package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-A2LWTKJD.js → insights-page-HJFDYR5N.js} +3 -3
- package/dist/dashboard-web/chunks/{monitor-room-2YR752E3.js → monitor-room-V7PCP47V.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-BGYSKZGM.js → monitoring-page-NKEKVQAP.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-ZZHTEAE4.js → office-page-GVJF73XW.js} +1 -1
- package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
- package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-YUC4YLJG.js → roles-page-WQIRSOLZ.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-2L2NKTDJ.js → schedules-page-J2DEY2X6.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
- package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-DQPBBI3T.js → skills-page-HGIFR3IU.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-LQKLDV4K.js → team-federation-page-MR5ZPL4B.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-RVKQIMAP.js → v3-page-GBR5JWPE.js} +2 -2
- package/dist/dashboard-web/chunks/{whiteboards-page-S5K55HRZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
- package/dist/dashboard-web/index.html +8 -1
- package/dist/dashboard-web/style.css +2006 -10
- package/dist/dashboard.js +1006 -263
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +30 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +33 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +31 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +28 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +22 -6
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +118 -24
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +15 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +30 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +48 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +133 -22
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts +14 -6
- package/dist/im/lark/identity-cache.d.ts.map +1 -1
- package/dist/im/lark/identity-cache.js +69 -26
- package/dist/im/lark/identity-cache.js.map +1 -1
- package/dist/im/lark/lark-hosts.d.ts +13 -0
- package/dist/im/lark/lark-hosts.d.ts.map +1 -1
- package/dist/im/lark/lark-hosts.js +16 -0
- package/dist/im/lark/lark-hosts.js.map +1 -1
- package/dist/im/lark/overview-card.d.ts +22 -0
- package/dist/im/lark/overview-card.d.ts.map +1 -1
- package/dist/im/lark/overview-card.js +53 -3
- package/dist/im/lark/overview-card.js.map +1 -1
- package/dist/im/lark/sessions-card.d.ts.map +1 -1
- package/dist/im/lark/sessions-card.js +26 -3
- package/dist/im/lark/sessions-card.js.map +1 -1
- package/dist/im/lark/workflow-slash-command.d.ts +6 -0
- package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
- package/dist/im/lark/workflow-slash-command.js +7 -0
- package/dist/im/lark/workflow-slash-command.js.map +1 -1
- package/dist/index-daemon.js +27 -4
- package/dist/index-daemon.js.map +1 -1
- package/dist/index-dashboard.d.ts +3 -0
- package/dist/index-dashboard.d.ts.map +1 -0
- package/dist/index-dashboard.js +94 -0
- package/dist/index-dashboard.js.map +1 -0
- package/dist/platform/team-agents-client.d.ts +199 -0
- package/dist/platform/team-agents-client.d.ts.map +1 -0
- package/dist/platform/team-agents-client.js +263 -0
- package/dist/platform/team-agents-client.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +6 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -1
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/async-trigger-state.d.ts +7 -3
- package/dist/services/async-trigger-state.d.ts.map +1 -1
- package/dist/services/async-trigger-state.js +28 -0
- package/dist/services/async-trigger-state.js.map +1 -1
- package/dist/services/async-trigger-store.d.ts +13 -4
- package/dist/services/async-trigger-store.d.ts.map +1 -1
- package/dist/services/async-trigger-store.js +55 -8
- package/dist/services/async-trigger-store.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +1 -11
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +27 -3
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/bot-profile-store.d.ts +17 -2
- package/dist/services/bot-profile-store.d.ts.map +1 -1
- package/dist/services/bot-profile-store.js +93 -12
- package/dist/services/bot-profile-store.js.map +1 -1
- package/dist/services/bridge-turn-queue.d.ts +10 -1
- package/dist/services/bridge-turn-queue.d.ts.map +1 -1
- package/dist/services/bridge-turn-queue.js +29 -9
- package/dist/services/bridge-turn-queue.js.map +1 -1
- package/dist/services/claude-transcript.d.ts +19 -0
- package/dist/services/claude-transcript.d.ts.map +1 -1
- package/dist/services/claude-transcript.js +57 -5
- package/dist/services/claude-transcript.js.map +1 -1
- package/dist/services/codex-app-threads.d.ts +2 -0
- package/dist/services/codex-app-threads.d.ts.map +1 -1
- package/dist/services/codex-app-threads.js +1 -1
- package/dist/services/codex-app-threads.js.map +1 -1
- package/dist/services/codex-reasoning-effort.d.ts +8 -0
- package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
- package/dist/services/codex-reasoning-effort.js +24 -0
- package/dist/services/codex-reasoning-effort.js.map +1 -1
- package/dist/services/cursor-resume-policy.d.ts.map +1 -1
- package/dist/services/cursor-resume-policy.js +15 -3
- package/dist/services/cursor-resume-policy.js.map +1 -1
- package/dist/services/open-platform-rename.d.ts.map +1 -1
- package/dist/services/open-platform-rename.js +3 -2
- package/dist/services/open-platform-rename.js.map +1 -1
- package/dist/services/ordinary-turn-recovery.d.ts +76 -0
- package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
- package/dist/services/ordinary-turn-recovery.js +349 -0
- package/dist/services/ordinary-turn-recovery.js.map +1 -0
- package/dist/services/resume-fresh-policy.d.ts +17 -0
- package/dist/services/resume-fresh-policy.d.ts.map +1 -0
- package/dist/services/resume-fresh-policy.js +24 -0
- package/dist/services/resume-fresh-policy.js.map +1 -0
- package/dist/services/session-group-title.d.ts +1 -0
- package/dist/services/session-group-title.d.ts.map +1 -1
- package/dist/services/session-group-title.js +16 -1
- package/dist/services/session-group-title.js.map +1 -1
- package/dist/services/session-groups-store.d.ts +30 -0
- package/dist/services/session-groups-store.d.ts.map +1 -1
- package/dist/services/session-groups-store.js +26 -4
- package/dist/services/session-groups-store.js.map +1 -1
- package/dist/services/session-owner-notification.d.ts +9 -0
- package/dist/services/session-owner-notification.d.ts.map +1 -0
- package/dist/services/session-owner-notification.js +10 -0
- package/dist/services/session-owner-notification.js.map +1 -0
- package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
- package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-config-store.js +24 -0
- package/dist/services/session-owner-reminder-config-store.js.map +1 -0
- package/dist/services/session-owner-reminder-store.d.ts +5 -0
- package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
- package/dist/services/session-owner-reminder-store.js +54 -0
- package/dist/services/session-owner-reminder-store.js.map +1 -0
- package/dist/services/session-store.d.ts +98 -21
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +406 -48
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +9 -5
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +9 -4
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/transcript-resolver.d.ts +1 -1
- package/dist/services/transcript-resolver.d.ts.map +1 -1
- package/dist/services/transcript-resolver.js +6 -1
- package/dist/services/transcript-resolver.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +7 -2
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
- package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
- package/dist/setup/ensure-herdr-integrations.js +21 -3
- package/dist/setup/ensure-herdr-integrations.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +1 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +107 -7
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/skills/definitions.d.ts +17 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +78 -8
- package/dist/skills/definitions.js.map +1 -1
- package/dist/skills/injection-mode.d.ts +24 -3
- package/dist/skills/injection-mode.d.ts.map +1 -1
- package/dist/skills/injection-mode.js +64 -15
- package/dist/skills/injection-mode.js.map +1 -1
- package/dist/skills/installer.d.ts +18 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +45 -1
- package/dist/skills/installer.js.map +1 -1
- package/dist/types.d.ts +221 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +92 -2
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +195 -1
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/cli-usage-limit.d.ts +25 -14
- package/dist/utils/cli-usage-limit.d.ts.map +1 -1
- package/dist/utils/cli-usage-limit.js +25 -15
- package/dist/utils/cli-usage-limit.js.map +1 -1
- package/dist/utils/daemon-rejection-guard.d.ts +35 -0
- package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
- package/dist/utils/daemon-rejection-guard.js +101 -0
- package/dist/utils/daemon-rejection-guard.js.map +1 -0
- package/dist/utils/dashboard-env.d.ts +53 -0
- package/dist/utils/dashboard-env.d.ts.map +1 -0
- package/dist/utils/dashboard-env.js +116 -0
- package/dist/utils/dashboard-env.js.map +1 -0
- package/dist/utils/global-install.d.ts.map +1 -1
- package/dist/utils/global-install.js +61 -5
- package/dist/utils/global-install.js.map +1 -1
- package/dist/utils/install-diagnostics.d.ts +14 -7
- package/dist/utils/install-diagnostics.d.ts.map +1 -1
- package/dist/utils/install-diagnostics.js +20 -11
- package/dist/utils/install-diagnostics.js.map +1 -1
- package/dist/utils/local-dev-update.d.ts +132 -0
- package/dist/utils/local-dev-update.d.ts.map +1 -0
- package/dist/utils/local-dev-update.js +176 -0
- package/dist/utils/local-dev-update.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +12 -1
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/worker.js +1284 -225
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +68 -68
- package/dist/workflows/events/payloads.d.ts +14 -14
- package/dist/workflows/events/schema.d.ts +312 -312
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +7 -0
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/goal-cli.d.ts +3 -0
- package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
- package/dist/workflows/v3/goal-cli.js +11 -0
- package/dist/workflows/v3/goal-cli.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +144 -144
- package/package.json +3 -2
- package/dist/cli/pm2-god-admission.d.ts +0 -8
- package/dist/cli/pm2-god-admission.d.ts.map +0 -1
- package/dist/cli/pm2-god-admission.js +0 -25
- package/dist/cli/pm2-god-admission.js.map +0 -1
- package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
- package/dist/core/riff-shutdown-detach.js.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
- package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-65SMZ4QY.js +0 -10
- package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
- package/dist/dashboard-web/chunks/chunk-IKN6WURK.js +0 -1
- package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-VDOOLS4M.js +0 -8
- package/dist/dashboard-web/chunks/overview-page-7NYPKQSB.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-DYZZMKFL.js +0 -8
- package/dist/dashboard-web/chunks/settings-page-LIULUSMH.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as t}from"./chunk-24ONYQMR.js";import{w as s,x as i}from"./chunk-F6KNPF4R.js";import{a as h}from"./chunk-5THX4DI2.js";import{c as f}from"./chunk-7SZRL6FY.js";var o=f(h(),1);function l(e){return t.on(e)}function p(){return t.getSnapshot()}function T(){return(0,o.useSyncExternalStore)(l,p,p)}function x(e){let u=(0,o.useRef)(e),r=(0,o.useRef)(null);u.current=e;let a=()=>{let n=t.getSnapshot();if(r.current&&r.current.version===n.version)return r.current.value;let c=u.current(n);return r.current={version:n.version,value:c},c};return(0,o.useSyncExternalStore)(l,a,a)}function v(e){return s.on(e)}function S(){return s.locale}function b(){return(0,o.useSyncExternalStore)(v,S,S)}function D(){return b(),i}export{T as a,x as b,b as c,D as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function f(r){return r.restartRequired===!0||r.changed===!0}async function d(r){let t=await r.json().catch(()=>null);return t&&typeof t=="object"?t:{}}function u(r,t){let n=t.detail??t.error;return new Error(typeof n=="string"?n:`HTTP ${r.status}`)}async function h(r,t=()=>{},n){t("updating");let a=await r(n?"/api/update/rollback":"/api/update/run",n?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({version:n})}:{method:"POST"}),e=await d(a);if(!a.ok||e.ok===!1)throw u(a,e);if(e.ok!==!0||typeof e.oldVersion!="string"||typeof e.newVersion!="string"||typeof e.changed!="boolean")throw new Error("Invalid update response");if(n&&(e.newVersion!==n||e.changed!==!0))throw new Error("Invalid rollback response");let o={oldVersion:e.oldVersion,newVersion:e.newVersion,changed:e.changed,restarted:!1};if(t("restarting"),n)return{...o,restarted:!0};let i=await r("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({update:{oldVersion:o.oldVersion,newVersion:o.newVersion}})}),s=await d(i);if(s.error==="bootstrap_shutdown_protocol_required"){let p=Array.isArray(s.unsafeDaemons)?s.unsafeDaemons.filter(l=>typeof l=="string"):[];return{...o,restarted:!1,bootstrapRequired:!0,unsafeDaemons:p}}if(!i.ok||s.ok===!1)return{...o,restarted:!1,restartError:u(i,s).message};if(s.ok!==!0)throw new Error("Invalid restart response");return s.alreadyScheduled===!0?{...o,restarted:!0,alreadyScheduled:!0}:{...o,restarted:!0}}export{f as a,h as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=new Set(["riff","mojo"]);function o(e){return e!==void 0&&n.has(e)}export{o as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{H as i,L as c,b as r}from"./chunk-F6KNPF4R.js";var l={chats:[],bots:[]};async function A(){try{l=await r()}catch{}}var p=new Set(["working","analyzing","active","starting"]);function m(d){let s=new Map,e=t=>{let a=s.get(t);return a||(a={botName:t,larkAppId:t,cliId:"unknown",online:!1,sessions:[],active:[],busy:[],attention:[],lastActiveAt:0},s.set(t,a)),a};for(let t of l.bots??[]){let a=e(t.larkAppId??t.botName??"-");a.online=!0,t.botName&&(a.botName=t.botName),t.botAvatarUrl&&(a.botAvatarUrl=t.botAvatarUrl),t.cliId&&(a.cliId=t.cliId),t.brand&&(a.brand=t.brand)}let b=[...d].sort((t,a)=>+(t.status==="closed")-+(a.status==="closed"));for(let t of b){let a=t.larkAppId??t.botName??"-";if(t.status==="closed"&&!s.has(a))continue;let o=e(a);t.botName&&(o.botName===o.larkAppId||!o.botName)&&(o.botName=t.botName),o.sessions.push(t),t.cliId&&o.cliId==="unknown"&&(o.cliId=t.cliId),o.lastActiveAt=Math.max(o.lastActiveAt,Number(t.lastMessageAt??0)),t.status!=="closed"&&(o.active.push(t),p.has(t.status)&&o.busy.push(t),c(t)&&o.attention.push(t))}for(let t of s.values())if(t.botName===t.larkAppId){let a=i(t.larkAppId);a&&(t.botName=a)}return[...s.values()].sort((t,a)=>{let o=n=>n.attention.length?0:n.busy.length?1:n.online||n.active.length?2:3;return o(t)!==o(a)?o(t)-o(a):a.lastActiveAt-t.lastActiveAt})}export{A as a,m as b};
|
package/dist/dashboard-web/chunks/{connectors-page-CPH6VVFY.js → connectors-page-VOISXXII.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as q,b as V}from"./chunk-EVK77ASG.js";import{a as ue}from"./chunk-ZJVTGU5X.js";import{c as _}from"./chunk-IKN6WURK.js";import{a as le,c as ie,g as Se,l as T,q as de}from"./chunk-5CJMHTT4.js";import"./chunk-G5XGBCM6.js";import"./chunk-VMWNR3SV.js";import{a as re}from"./chunk-SYC6D5XU.js";import{a as Pe,d as ce}from"./chunk-5THX4DI2.js";import{c as j}from"./chunk-7SZRL6FY.js";var i=j(Pe(),1);var p=j(Pe(),1);var n=j(ce(),1),Ge=50,Ne={total:0,ok:0,error:0,successRate:0};function We(o,e=Date.now()){if(o==="all")return;let s=o==="24h"?24:o==="7d"?168:720;return new Date(e-s*60*60*1e3).toISOString()}function _e(o,e=0){let s=new URLSearchParams({limit:String(Ge),offset:String(e)});o.connectorId&&s.set("connectorId",o.connectorId),o.status&&s.set("status",o.status);let d=We(o.timeWindow);return d&&s.set("since",d),o.query.trim()&&s.set("q",o.query.trim()),s}function Fe(o){if(!o)return"\u2014";let e=new Date(o);return Number.isFinite(e.getTime())?e.toLocaleString():o}function ge(o){return o===void 0||!Number.isFinite(o)?"\u2014":o<1e3?`${Math.round(o)} ms`:o<6e4?`${(o/1e3).toFixed(o<1e4?1:0)} s`:`${(o/6e4).toFixed(1)} min`}function Ue(o){return o===void 0?"\u2014":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/1024/1024).toFixed(1)} MB`}function Le(o){return o.value===void 0||o.value===null?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):typeof o.value=="object"&&!Array.isArray(o.value)&&Object.keys(o.value).length===0?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):(0,n.jsx)("pre",{className:`webhook-log-json${o.fullHeight?" full-height":""}`,children:(0,n.jsx)("code",{children:JSON.stringify(o.value,null,2)})})}function Je(o){let e=[["kind",o.value?.kind],["mode",o.value?.mode],["botId",o.value?.botId],["chatId",o.value?.chatId],["sessionId",o.value?.sessionId],["rootMessageId",o.value?.rootMessageId],["workflowId",o.value?.workflowId]].filter(([,s])=>s!=null&&s!=="");return e.length?(0,n.jsx)("dl",{className:"webhook-log-target-facts",children:e.map(([s,d])=>(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:s}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:String(d)})})]},s))}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:"\u2014"})}function Ie(o){return(0,n.jsx)(de,{id:o.id,className:"webhook-log-filter-menu",ariaLabel:o.label,style:{width:"100%",minWidth:0},value:o.value,label:le(o.options,o.value),options:o.options,onChange:o.onChange})}function me(o){return(0,n.jsxs)("article",{className:`card webhook-log-metric${o.tone?` ${o.tone}`:""}`,children:[(0,n.jsx)("span",{children:o.label}),(0,n.jsx)("strong",{children:o.value}),(0,n.jsx)("small",{children:o.hint||"\xA0"})]})}function Ee(o={}){let e=_(),s=(0,p.useRef)(!1),d=(0,p.useRef)([]),[f,N]=(0,p.useState)([]),[y,I]=(0,p.useState)([]),[k,R]=(0,p.useState)(Ne),[L,$]=(0,p.useState)({connectorId:"",status:"",timeWindow:"7d",query:""}),[u,r]=(0,p.useState)(null),[E,U]=(0,p.useState)(!0),[w,J]=(0,p.useState)(!1),[A,X]=(0,p.useState)(!1),[Y,Z]=(0,p.useState)(0),[B,x]=(0,p.useState)(""),[K,ee]=(0,p.useState)(!1),M=(0,p.useMemo)(()=>new Map(f.map(c=>[c.id,c.name])),[f]),g=(0,p.useMemo)(()=>y.find(c=>c.triggerId===u)??y[0]??null,[y,u]),te=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allConnectors")},...f.map(c=>({value:c.id,label:c.name}))],[f,e]),G=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allStatuses")},{value:"ok",label:e("webhookLogs.success")},{value:"error",label:e("webhookLogs.failed")}],[e]),fe=(0,p.useMemo)(()=>[{value:"24h",label:e("webhookLogs.last24h")},{value:"7d",label:e("webhookLogs.last7d")},{value:"30d",label:e("webhookLogs.last30d")},{value:"all",label:e("webhookLogs.allTime")}],[e]),H=(0,p.useCallback)(async(c=!1,v=!1)=>{v?J(!0):U(!0),x("");let Q=c?d.current.length:0,oe=_e(L,Q),h=new URLSearchParams(oe);h.delete("limit"),h.delete("offset");try{let[S,ne]=await Promise.all([q(`/api/trigger-logs?${oe}`),c?Promise.resolve(null):q(`/api/trigger-logs/summary?${h}`)]);if(!s.current)return;if(S.status!==200)throw new Error(String(S.body?.error||S.status));let P=Array.isArray(S.body?.logs)?S.body.logs:[],ae=c?[...d.current,...P]:P;d.current=ae,I(ae),Z(Number(S.body?.total??P.length)),X(S.body?.hasMore===!0),c||(R(ne?.status===200?ne.body?.summary??Ne:Ne),r(se=>P.some(ve=>ve.triggerId===se)?se:P[0]?.triggerId??null))}catch(S){s.current&&x(S?.message||e("webhookLogs.loadFailed"))}finally{s.current&&(U(!1),J(!1))}},[L,e]);(0,p.useEffect)(()=>(s.current=!0,q("/api/connectors").then(c=>{s.current&&c.status===200&&N(Array.isArray(c.body?.connectors)?c.body.connectors:[])}),()=>{s.current=!1}),[]),(0,p.useEffect)(()=>{let c=setTimeout(()=>{H(!1)},L.query?260:0);return()=>clearTimeout(c)},[L,H]),(0,p.useEffect)(()=>{let c=setInterval(()=>{H(!1,!0)},15e3);return()=>clearInterval(c)},[H]);async function ye(){!g||!await ue(JSON.stringify(g,null,2),e("webhookLogs.copyJson"))||(ee(!0),setTimeout(()=>s.current&&ee(!1),1200))}let ke=g?.request?.payloadOmittedReason==="disabled"?e("webhookLogs.payloadDisabled"):g?.request?.payloadOmittedReason==="too_large"?e("webhookLogs.payloadTooLarge"):e("webhookLogs.payloadUnavailable"),z=(0,n.jsxs)(n.Fragment,{children:[o.embedded?null:(0,n.jsxs)("div",{className:"page-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,n.jsx)("h1",{children:e("nav.webhookLogs")}),(0,n.jsx)("p",{className:"webhook-log-heading-copy",children:e("webhookLogs.subtitle")})]}),(0,n.jsxs)("div",{className:"page-heading-actions",children:[(0,n.jsxs)("span",{className:`webhook-log-live${w?" refreshing":""}`,children:[(0,n.jsx)("i",{}),e("webhookLogs.autoRefresh")]}),(0,n.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})]})]}),(0,n.jsxs)("section",{className:"webhook-log-metrics","aria-label":e("webhookLogs.summary"),children:[(0,n.jsx)(me,{label:e("webhookLogs.total"),value:k.total,hint:e("webhookLogs.filteredRange")}),(0,n.jsx)(me,{label:e("webhookLogs.successRate"),value:`${k.successRate.toFixed(k.successRate%1?1:0)}%`,tone:"ok",hint:`${k.ok} ${e("webhookLogs.calls")}`}),(0,n.jsx)(me,{label:e("webhookLogs.failures"),value:k.error,tone:k.error?"error":void 0,hint:k.error?e("webhookLogs.needsReview"):e("webhookLogs.noFailures")}),(0,n.jsx)(me,{label:e("webhookLogs.p95"),value:ge(k.p95DurationMs),hint:`${e("webhookLogs.average")} ${ge(k.avgDurationMs)}`})]}),(0,n.jsxs)("form",{className:"filters dashboard-toolbar webhook-log-toolbar",onSubmit:c=>c.preventDefault(),children:[(0,n.jsx)("input",{type:"search",name:"q","aria-label":e("webhookLogs.search"),placeholder:e("webhookLogs.searchPlaceholder"),value:L.query,onChange:c=>{let v=c.currentTarget.value;$(Q=>({...Q,query:v}))}}),(0,n.jsx)(Ie,{id:"webhook-log-connector",label:e("webhookLogs.connector"),value:L.connectorId,options:te,onChange:c=>$(v=>({...v,connectorId:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-status",label:e("webhookLogs.status"),value:L.status,options:G,onChange:c=>$(v=>({...v,status:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-window",label:e("webhookLogs.timeRange"),value:L.timeWindow,options:fe,onChange:c=>$(v=>({...v,timeWindow:c}))}),(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-refresh",disabled:w,onClick:()=>{H(!1,!0)},children:e("webhookLogs.refresh")})]}),B?(0,n.jsxs)("p",{className:"err webhook-log-error",children:[e("webhookLogs.loadFailed"),": ",B]}):null,(0,n.jsxs)("section",{className:"webhook-log-workspace",children:[(0,n.jsxs)("article",{className:"card webhook-log-list-panel",children:[(0,n.jsx)("header",{className:"webhook-log-panel-head",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:e("webhookLogs.records")}),(0,n.jsx)("span",{children:e("webhookLogs.matching",{count:Y})})]})}),E&&!y.length?(0,n.jsx)(ie,{label:e("webhookLogs.loading"),compact:!0}):null,!E&&!y.length?(0,n.jsxs)("div",{className:"webhook-log-empty",children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"\u25CE"}),(0,n.jsx)("strong",{children:e("webhookLogs.empty")}),(0,n.jsx)("p",{children:e("webhookLogs.emptyHint")})]}):null,(0,n.jsx)("div",{className:"webhook-log-list",role:"listbox","aria-label":e("webhookLogs.records"),children:y.map(c=>{let v=g?.triggerId===c.triggerId;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":v,className:`webhook-log-row${v?" active":""}`,onClick:()=>r(c.triggerId),children:[(0,n.jsx)("span",{className:`webhook-log-status-dot ${c.status}`,"aria-hidden":"true"}),(0,n.jsxs)("span",{className:"webhook-log-row-main",children:[(0,n.jsxs)("span",{className:"webhook-log-row-title",children:[(0,n.jsx)("strong",{children:M.get(c.connectorId||"")||c.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsx)("code",{children:c.request?.method||"POST"})]}),(0,n.jsxs)("span",{className:"webhook-log-row-meta",children:[(0,n.jsx)("span",{children:Fe(c.createdAt)}),(0,n.jsx)("span",{children:c.errorCode||c.action})]})]}),(0,n.jsxs)("span",{className:"webhook-log-row-result",children:[(0,n.jsx)("b",{className:c.status,children:c.response?.httpStatus??(c.status==="ok"?"2xx":"ERR")}),(0,n.jsx)("small",{children:ge(c.response?.durationMs)})]})]},`${c.triggerId}-${c.createdAt}`)})}),A?(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-more",disabled:E,onClick:()=>{H(!0)},children:e("webhookLogs.loadMore")}):null]}),(0,n.jsx)("article",{className:"card webhook-log-detail-panel",children:g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("header",{className:"webhook-log-detail-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{className:`webhook-log-result-pill ${g.status}`,children:g.status==="ok"?e("webhookLogs.success"):e("webhookLogs.failed")}),(0,n.jsx)("h2",{children:M.get(g.connectorId||"")||g.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsxs)("p",{children:[Fe(g.createdAt)," \xB7 ",g.request?.method||"POST"," ",g.request?.path||"/webhook/\u2026"]})]}),(0,n.jsx)("button",{type:"button",className:"ghost",onClick:()=>{ye()},children:e(K?"webhookLogs.copied":"webhookLogs.copyJson")})]}),g.error?(0,n.jsxs)("div",{className:"webhook-log-failure",children:[(0,n.jsx)("strong",{children:g.errorCode||e("webhookLogs.failureReason")}),(0,n.jsx)("span",{children:g.error})]}):null,(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.overview")}),(0,n.jsxs)("dl",{className:"webhook-log-facts",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.httpStatus")}),(0,n.jsx)("dd",{children:g.response?.httpStatus??"\u2014"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.duration")}),(0,n.jsx)("dd",{children:ge(g.response?.durationMs)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.action")}),(0,n.jsx)("dd",{children:g.action})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.bodySize")}),(0,n.jsx)("dd",{children:Ue(g.request?.bodyBytes)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Trigger ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.triggerId})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Request ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.requestId||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.remoteAddress")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.request?.remoteAddress||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.target")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.target?.chatId||g.target?.sessionId||g.response?.chatId||"\u2014"})})]})]})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.queryParams")}),(0,n.jsx)(Le,{value:g.request?.query,empty:e("webhookLogs.none")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.headers"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),(0,n.jsx)(Le,{value:g.request?.headers,empty:e("webhookLogs.headersNotStored")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.payload"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),g.request?.payloadStored?(0,n.jsx)(Le,{value:g.request.payload,empty:e("webhookLogs.none")}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:ke})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.routeTarget")}),(0,n.jsx)(Je,{value:g.target})]})]}):(0,n.jsx)("div",{className:"webhook-log-empty",children:(0,n.jsx)("strong",{children:e("webhookLogs.selectRecord")})})})]})]});return o.embedded?(0,n.jsx)("section",{className:"webhook-logs-content webhook-logs-panel",children:z}):(0,n.jsx)("section",{className:"page webhook-logs-content webhook-logs-page",children:z})}var t=j(ce(),1);function Xe(o,e){return o.map(s=>s.id===e.id?e:s)}var Re={name:"",botId:"",kind:"turn",workflowId:"",mode:"dynamic",chatId:"",manualChat:!1,manualChatId:"",allowChats:[],deduplicate:!1,dedup:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,verify:"token",secret:"",storePayload:!0};function ut(o,e){return{promptEnvelope:{sourceName:o.promptEnvelope?.sourceName||o.name,instruction:e}}}function Ke(o,e,s){let d=e.trim();if(o!=="template")return{ok:!0,value:o==="custom"?{mode:o,text:d}:{mode:o}};try{let f=JSON.parse(s);return!f||typeof f!="object"||Array.isArray(f)?{ok:!1,error:"connectors.errTopicExtractors"}:{ok:!0,value:{mode:o,text:d,extractors:f}}}catch{return{ok:!1,error:"connectors.errTopicExtractors"}}}function je(o){return[{value:"turn",label:o("connectors.kindTurn")},{value:"workflow",label:o("connectors.kindWorkflowRetiring"),disabled:!0}]}function be(o){return`${location.origin}/webhook/${encodeURIComponent(o)}`}function pe(o){return(0,t.jsx)(de,{id:o.id,className:"connector-form-menu",ariaLabel:o.label,value:o.value,label:le(o.options,o.value),options:o.options,onChange:o.onChange})}function De(o){let e=(0,i.useRef)(null),[s,d]=(0,i.useState)(!1),[f,N]=(0,i.useState)(""),y=Array.isArray(o.value)?o.value:o.value?[o.value]:[],I=(0,i.useMemo)(()=>new Set(y),[y]),k=f.trim().toLocaleLowerCase(),R=(0,i.useMemo)(()=>k?o.groups.filter(u=>`${u.name} ${u.chatId}`.toLocaleLowerCase().includes(k)):o.groups,[k,o.groups]),L=o.multiple?y.length===0?o.allLabel||o.placeholder:o.selectedCountLabel(y.length):o.groups.find(u=>u.chatId===y[0])?.name||y[0]||o.placeholder;(0,i.useEffect)(()=>{if(!s)return;let u=r=>{e.current?.contains(r.target)||d(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[s]);function $(u){if(!o.multiple){o.onChange(u),d(!1),N("");return}o.onChange(I.has(u)?y.filter(r=>r!==u):[...y,u])}return(0,t.jsxs)("div",{ref:e,className:`connector-group-picker${s?" open":""}`,children:[(0,t.jsxs)("button",{id:o.id,type:"button",className:"connector-group-picker-trigger","aria-label":o.label,"aria-haspopup":"listbox","aria-expanded":s,onClick:()=>d(u=>!u),children:[(0,t.jsx)("span",{className:y.length||o.multiple&&o.allLabel?"":"muted",children:L}),(0,t.jsx)("span",{className:"connector-group-picker-chevron","aria-hidden":"true"})]}),s?(0,t.jsxs)("div",{className:"connector-group-picker-popover",children:[(0,t.jsxs)("label",{className:"connector-group-search",htmlFor:`${o.id}-search`,children:[(0,t.jsx)("span",{className:"connector-group-search-icon","aria-hidden":"true"}),(0,t.jsx)("input",{id:`${o.id}-search`,type:"search",autoComplete:"off",autoFocus:!0,value:f,placeholder:o.searchPlaceholder,onChange:u=>N(u.currentTarget.value),onKeyDown:u=>{u.key==="Escape"&&(u.preventDefault(),d(!1))}})]}),(0,t.jsxs)("div",{className:"connector-group-options",role:"listbox","aria-label":o.label,"aria-multiselectable":o.multiple||void 0,children:[o.multiple&&o.allLabel&&!k?(0,t.jsxs)("button",{type:"button",className:`connector-group-option connector-group-option-all${y.length===0?" selected":""}`,role:"option","aria-selected":y.length===0,onClick:()=>o.onChange([]),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:o.allLabel}),(0,t.jsx)("small",{children:o.placeholder})]})]}):null,R.map(u=>{let r=I.has(u.chatId);return(0,t.jsxs)("button",{type:"button",className:`connector-group-option${r?" selected":""}`,role:"option","aria-selected":r,onClick:()=>$(u.chatId),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:u.name||u.chatId}),u.name?(0,t.jsx)("small",{children:u.chatId}):null]})]},u.chatId)}),R.length?null:(0,t.jsx)("p",{className:"connector-group-empty",children:o.emptyLabel})]})]}):null]})}function he(o,e){return o.filter(s=>s.bots.includes(e))}function ze(o,e){let s=o.target.chatId||"",d=s&&he(e,o.target.botId).some(f=>f.chatId===s);return{name:o.name,botId:o.target.botId,kind:o.target.kind,workflowId:o.target.workflowId||"",mode:o.target.mode,chatId:d?s:"",manualChat:!!(s&&!d),manualChatId:d?"":s,allowChats:o.target.allowChats||[],deduplicate:!!o.lifecycleExtractors?.dedupKey,dedup:o.lifecycleExtractors?.dedupKey||"",instruction:o.promptEnvelope?.instruction||"",topicMessageMode:o.topicMessage?.mode||"default",topicMessageText:o.topicMessage?.text||"",topicMessageExtractors:JSON.stringify(o.topicMessage?.extractors||{},null,2),suppressFinalOutput:o.suppressFinalOutput===!0,verify:o.verify?.type||"token",secret:"",storePayload:o.loggingPolicy?.storePayload!==!1}}function Qe(o){let e=_(),s=o.active==="webhooks",d=o.active==="logs";return(0,t.jsxs)("nav",{className:"connectors-subnav-slot connectors-subnav insight-tabs",role:"tablist","aria-label":e("nav.connectors"),children:[(0,t.jsx)("a",{href:"#/connectors",className:`itab${s?" on":""}`,role:"tab","aria-selected":s,children:e("connectors.tabWebhooks")}),(0,t.jsx)("a",{href:"#/connectors/logs",className:`itab${d?" on":""}`,role:"tab","aria-selected":d,children:e("connectors.tabLogs")})]})}function Oe(o){let e=_(),s=(0,i.useRef)(!1),d=(0,i.useRef)(null),f=(0,i.useRef)(null),[N,y]=(0,i.useState)([]),[I,k]=(0,i.useState)([]),[R,L]=(0,i.useState)([]),[$,u]=(0,i.useState)(!0),[r,E]=(0,i.useState)(Re),[U,w]=(0,i.useState)(null),[J,A]=(0,i.useState)(null),[X,Y]=(0,i.useState)(!1),[Z,B]=(0,i.useState)(!1),[x,K]=(0,i.useState)(null),[ee,M]=(0,i.useState)(null),[g,te]=(0,i.useState)(null),G=(0,i.useMemo)(()=>he(I,r.botId),[I,r.botId]),fe=(0,i.useMemo)(()=>N.length?N.map(a=>({value:a.larkAppId,label:a.botName})):[{value:"",label:e("connectors.noOnlineBots")}],[N,e]),H=(0,i.useMemo)(()=>je(e),[e]),ye=(0,i.useMemo)(()=>[{value:"dynamic",label:e("connectors.modeDynamic")},{value:"fixed",label:e("connectors.modeFixed")},{value:"new-group",label:e("connectors.modeNewGroup")}],[e]),ke=(0,i.useMemo)(()=>[{value:"token",label:e("connectors.verifyToken")},{value:"hmac-sha256",label:e("connectors.verifyHmac")}],[e]),z=(0,i.useCallback)(a=>I.find(b=>b.chatId===a)?.name||a,[I]),c=(0,i.useCallback)((a,l)=>{E(b=>{let F=b.botId&&a.some(O=>O.larkAppId===b.botId)?b.botId:a[0]?.larkAppId??"",C=he(l,F),m=b.chatId&&C.some(O=>O.chatId===b.chatId)?b.chatId:C[0]?.chatId??"",D=new Set(C.map(O=>O.chatId));return{...b,botId:F,chatId:m,allowChats:b.allowChats.filter(O=>D.has(O))}})},[]),v=(0,i.useCallback)(async()=>{u(!0);try{let[a,l,b]=await Promise.all([q("/api/bots"),q("/api/connectors"),q("/api/groups")]);if(!s.current)return;let F=(a.body?.bots||[]).map(m=>({larkAppId:m.larkAppId,botName:m.botName||m.larkAppId})),C=(b.body?.chats||[]).map(m=>({chatId:m.chatId,name:m.name||"",bots:(m.memberBots||[]).filter(D=>D.inChat).map(D=>D.larkAppId)}));y(F),k(C),L(Array.isArray(l.body?.connectors)?l.body.connectors:[]),c(F,C)}finally{s.current&&u(!1)}},[c]);(0,i.useEffect)(()=>(s.current=!0,v(),()=>{s.current=!1,d.current&&clearTimeout(d.current)}),[v]),(0,i.useEffect)(()=>{let a=new Set(G.map(l=>l.chatId));E(l=>({...l,chatId:l.chatId&&a.has(l.chatId)?l.chatId:G[0]?.chatId??"",allowChats:l.allowChats.filter(b=>a.has(b))}))},[G]),(0,i.useEffect)(()=>{let a=f.current;if(a)if(Z){if(!a.open)try{a.showModal()}catch{}let l=a.querySelector(".connector-modal-body");l&&(l.scrollTop=0)}else a.open&&a.close()},[Z]),(0,i.useEffect)(()=>()=>{let a=f.current;a?.open&&a.close()},[]);function Q(a){return e(a==="fixed"?"connectors.modeLabelFixed":a==="new-group"?"connectors.modeLabelNewGroup":"connectors.modeLabelDynamic")}function oe(a){return e(a==="workflow"?"connectors.kindLabelWorkflow":"connectors.kindLabelTurn")}function h(a){E(l=>({...l,...a}))}function S(){w(null),A(null),K(null),E(a=>{let l=a.botId||N[0]?.larkAppId||"";return{...Re,botId:l,chatId:he(I,l)[0]?.chatId||""}}),B(!0)}function ne(a){w(null),A(null),M(null),K(a),E(ze(a,I)),B(!0)}function P(){X||(B(!1),w(null),A(null),K(null))}async function ae(){w(null),A(null);let a=r.name.trim(),l=r.botId;if(!a){w({text:e("connectors.errName"),error:!0});return}if(!l){w({text:e("connectors.errBot"),error:!0});return}if(r.kind==="workflow"){w({text:e("connectors.errLegacyWorkflowRetired"),error:!0});return}let b=r.topicMessageText.trim();if((r.topicMessageMode==="custom"||r.topicMessageMode==="template")&&!b){w({text:e("connectors.errTopicMessage"),error:!0});return}let F=Ke(r.topicMessageMode,b,r.topicMessageExtractors);if(!F.ok){w({text:e(F.error),error:!0});return}let C={name:a,enabled:x?.enabled??!0,target:{kind:r.kind,mode:r.mode,botId:l},promptEnvelope:{sourceName:a,instruction:r.instruction.trim()},topicMessage:F.value,suppressFinalOutput:r.suppressFinalOutput,verify:{type:r.verify},loggingPolicy:{storePayload:r.storePayload,storeHeaders:!0,retentionDays:14}};if(r.mode==="fixed"){let m=r.manualChat?r.manualChatId.trim():r.chatId;if(!m){w({text:e("connectors.errChat"),error:!0});return}C.target.chatId=m}else r.mode==="dynamic"&&(C.target.allowChats=r.allowChats);if(r.mode==="new-group"){let m=r.dedup.trim();if(r.deduplicate&&!m){w({text:e("connectors.errDedup"),error:!0});return}C.lifecycleExtractors=r.deduplicate?{dedupKey:m}:null}else C.lifecycleExtractors=null;r.secret.trim()&&(C.secret=r.secret.trim()),Y(!0),w({text:e(x?"connectors.saving":"connectors.creating")});try{let m=await V(x?"PUT":"POST",x?`/api/connectors/${encodeURIComponent(x.id)}`:"/api/connectors",C);if(!s.current)return;if((m.status===201||m.status===200)&&m.body?.ok){if(x){let we=x.id,W=m.body.connector;L(Ce=>Xe(Ce,W));let Te=m.body.secret??C.secret;if(Te){let Ce=m.body.webhookUrl||be(W.id),qe=(W.verify?.type??"token")==="token",xe=W.target.mode==="dynamic",Be=xe?W.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:W.target.mode,chatId:W.target.chatId,url:Ce,secret:Te,isToken:qe,isDynamic:xe,exampleChat:Be,rotated:!0}),await v();return}M({id:we,text:e("connectors.updated")}),B(!1),K(null);return}let D=m.body.webhookUrl||be(m.body.connector.id),O=(m.body.connector?.verify?.type??"token")==="token",Me=r.mode==="dynamic",He=Me?C.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:r.mode,chatId:C.target.chatId,url:D,secret:m.body.secret,isToken:O,isDynamic:Me,exampleChat:He}),E(we=>({...we,name:"",workflowId:"",manualChatId:"",dedup:"",secret:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,allowChats:[],storePayload:!0})),await v()}else{let D=m.body?.error||m.status;w({text:e("connectors.createFailed",{error:String(D)}),error:!0})}}finally{s.current&&Y(!1)}}async function se(a){M({id:a.id,text:e(a.enabled?"connectors.disabling":"connectors.enabling")});let l=await V("PATCH",`/api/connectors/${encodeURIComponent(a.id)}`,{enabled:!a.enabled});if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.toggleFailed",{error:String(b)}),error:!0})}}async function ve(a){let l=a.loggingPolicy?.storePayload!==!1;M({id:a.id,text:e("connectors.saving")});let b=await V("PUT",`/api/connectors/${encodeURIComponent(a.id)}`,{loggingPolicy:{storePayload:!l,storeHeaders:a.loggingPolicy?.storeHeaders!==!1,retentionDays:a.loggingPolicy?.retentionDays??14}});if(s.current)if(b.status===200&&b.body?.ok)M(null),await v();else{let F=b.body?.error||b.status;M({id:a.id,text:e("connectors.saveFailed",{error:String(F)}),error:!0})}}async function $e(a){if(!confirm(e("connectors.delConfirm")))return;M({id:a.id,text:e("connectors.deleting")});let l=await V("DELETE",`/api/connectors/${encodeURIComponent(a.id)}`);if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.deleteFailed",{error:String(b)}),error:!0})}}function Ae(a){ue(be(a.id),e("connectors.copy")).then(l=>{!l||!s.current||(te(a.id),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{s.current&&te(null)},1200))})}return(0,t.jsxs)("section",{className:"page connectors-page",children:[(0,t.jsxs)("div",{className:"page-heading",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,t.jsx)("h1",{children:e("nav.connectors")})]}),(0,t.jsx)("div",{className:"page-heading-actions",children:o.tab==="webhooks"?(0,t.jsx)(Se,{className:"page-primary-action connector-create-trigger",onClick:S,children:e("connectors.createTitle")}):(0,t.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})})]}),(0,t.jsx)(Qe,{active:o.tab}),o.tab==="webhooks"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dialog",{ref:f,className:"connector-create-modal",onCancel:a=>{a.preventDefault(),P()},onClose:P,onClick:a=>{a.target===a.currentTarget&&P()},children:(0,t.jsxs)("article",{className:"connector-modal-card",children:[(0,t.jsxs)("header",{className:"connector-modal-header",children:[(0,t.jsx)("h3",{children:e(x?"connectors.editTitle":"connectors.createTitle")}),(0,t.jsx)("button",{type:"button",className:"connector-modal-close","aria-label":e("connectors.close"),title:e("connectors.close"),disabled:X,onClick:P,children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]}),(0,t.jsx)("div",{className:"connector-modal-body",children:J?(0,t.jsx)(Ve,{created:J,groupName:z}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"cn-form",children:[(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-name",children:[(0,t.jsx)(T,{children:e("connectors.fName")}),(0,t.jsx)("input",{id:"cn-name",value:r.name,onChange:a=>h({name:a.currentTarget.value}),placeholder:e("connectors.fNamePh")})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fBot")}),(0,t.jsx)(pe,{id:"cn-bot",label:e("connectors.fBot"),value:r.botId,options:fe,onChange:a=>h({botId:a})})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fKind")}),(0,t.jsx)(pe,{id:"cn-kind",label:e("connectors.fKind"),value:r.kind,options:H,onChange:a=>h({kind:a})})]}),r.kind==="workflow"?(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-wf",children:[(0,t.jsx)(T,{children:e("connectors.fWf")}),(0,t.jsx)("input",{id:"cn-wf",value:r.workflowId,onChange:a=>h({workflowId:a.currentTarget.value}),placeholder:"workflowId"})]}):null,(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fMode")}),(0,t.jsx)(pe,{id:"cn-mode",label:e("connectors.fMode"),value:r.mode,options:ye,onChange:a=>h({mode:a})})]}),r.mode==="fixed"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsx)(T,{children:e("connectors.fFixedChat")}),(0,t.jsxs)("div",{className:"connector-chat-control",children:[r.manualChat?(0,t.jsx)("input",{id:"cn-chat",value:r.manualChatId,onChange:a=>h({manualChatId:a.currentTarget.value}),placeholder:e("connectors.fChatManualPh")}):(0,t.jsx)(De,{id:"cn-chat-sel",label:e("connectors.fFixedChat"),groups:G,value:r.chatId,placeholder:e("connectors.groupPickerPlaceholder"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({chatId:a})}),(0,t.jsx)("button",{type:"button",className:"ghost connector-inline-link",onClick:()=>h({manualChat:!r.manualChat}),children:r.manualChat?e("connectors.chatListLink"):e("connectors.chatManualLink")})]})]}):r.mode==="dynamic"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsxs)(T,{help:e("connectors.allowHint"),children:[e("connectors.fAllow"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)(De,{id:"cn-allow-chats",label:e("connectors.fAllow"),groups:G,value:r.allowChats,multiple:!0,allLabel:e("connectors.allowAll"),placeholder:e("connectors.allowAllHint"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({allowChats:a})})]}):null,r.mode==="dynamic"?(0,t.jsx)("div",{className:"cn-field-wide",children:(0,t.jsx)("div",{className:"muted connector-form-hint",dangerouslySetInnerHTML:{__html:e("connectors.dynamicHint")}})}):null,r.mode==="new-group"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-new-group-config",children:[(0,t.jsx)(T,{children:e("connectors.newGroupStrategy")}),(0,t.jsxs)("div",{className:"connector-strategy-options",role:"radiogroup","aria-label":e("connectors.newGroupStrategy"),children:[(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":!r.deduplicate,className:`connector-strategy-option${r.deduplicate?"":" selected"}`,onClick:()=>h({deduplicate:!1}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupFresh")}),(0,t.jsx)("small",{children:e("connectors.newGroupFreshHint")})]})]}),(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.deduplicate,className:`connector-strategy-option${r.deduplicate?" selected":""}`,onClick:()=>h({deduplicate:!0}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupReuse")}),(0,t.jsx)("small",{children:e("connectors.newGroupReuseHint")})]})]})]}),r.deduplicate?(0,t.jsxs)("label",{className:"connector-dedup-field",htmlFor:"cn-dedup",children:[(0,t.jsx)(T,{help:(0,t.jsx)("span",{dangerouslySetInnerHTML:{__html:e("connectors.dedupHint")}}),children:e("connectors.fDedup")}),(0,t.jsx)("input",{id:"cn-dedup",value:r.dedup,onChange:a=>h({dedup:a.currentTarget.value}),placeholder:e("connectors.fDedupPh")})]}):null,(0,t.jsx)("p",{className:"connector-new-group-note",children:e("connectors.newGroupNotice")})]}):null,(0,t.jsxs)("label",{className:"cn-field cn-field-wide",htmlFor:"cn-instruction",children:[(0,t.jsxs)(T,{help:e("connectors.fInstructionPh"),children:[e("connectors.fInstruction"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)("textarea",{id:"cn-instruction",rows:3,value:r.instruction,onChange:a=>h({instruction:a.currentTarget.value}),placeholder:e("connectors.fInstructionPh")})]}),(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-topic-message-config",children:[(0,t.jsx)(T,{help:e("connectors.topicMessageHint"),children:e("connectors.topicMessage")}),(0,t.jsx)("div",{className:"connector-topic-message-options",role:"radiogroup","aria-label":e("connectors.topicMessage"),children:["default","custom","template","none"].map(a=>{let l=a==="default"?"Default":a==="custom"?"Custom":a==="template"?"Template":"None";return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.topicMessageMode===a,className:`connector-topic-message-option${r.topicMessageMode===a?" selected":""}`,onClick:()=>h({topicMessageMode:a}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e(`connectors.topicMessage${l}`)}),(0,t.jsx)("small",{children:e(`connectors.topicMessage${l}Hint`)})]})]},a)})}),r.topicMessageMode==="custom"||r.topicMessageMode==="template"?(0,t.jsxs)("div",{className:"connector-topic-message-input",children:[(0,t.jsx)("input",{id:"cn-topic-message",type:"text",maxLength:200,value:r.topicMessageText,onChange:a=>h({topicMessageText:a.currentTarget.value}),"aria-label":e(r.topicMessageMode==="template"?"connectors.topicMessageTemplate":"connectors.topicMessageCustom"),placeholder:e(r.topicMessageMode==="template"?"connectors.topicMessageTemplatePh":"connectors.topicMessageCustomPh")}),(0,t.jsxs)("small",{children:[e(r.topicMessageMode==="template"?"connectors.topicMessageTemplateHelp":"connectors.topicMessageCustomHelp"),(0,t.jsxs)("span",{children:[Array.from(r.topicMessageText).length,"/200"]})]}),r.topicMessageMode==="template"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("textarea",{id:"cn-topic-message-extractors",className:"connector-topic-message-extractors",rows:8,value:r.topicMessageExtractors,onChange:a=>h({topicMessageExtractors:a.currentTarget.value}),placeholder:e("connectors.topicMessageExtractorsPh"),"aria-label":e("connectors.topicMessageExtractors")}),(0,t.jsx)("small",{children:e("connectors.topicMessageExtractorsHelp")})]}):null]}):(0,t.jsx)("p",{className:`connector-topic-message-preview${r.topicMessageMode==="none"?" muted":""}`,children:r.topicMessageMode==="none"?e("connectors.topicMessageNonePreview"):e("connectors.topicMessagePreview",{source:r.name.trim()||e("connectors.topicMessageSourceFallback")})})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-store-payload",children:[(0,t.jsx)("input",{id:"cn-store-payload",type:"checkbox",checked:r.storePayload,onChange:a=>h({storePayload:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.storePayload")}),(0,t.jsx)("small",{children:e("connectors.storePayloadHint")})]})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-suppress-final",children:[(0,t.jsx)("input",{id:"cn-suppress-final",type:"checkbox",checked:r.suppressFinalOutput,onChange:a=>h({suppressFinalOutput:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.suppressFinalOutput")}),(0,t.jsx)("small",{children:e("connectors.suppressFinalOutputHint")})]})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fVerify")}),(0,t.jsx)(pe,{id:"cn-verify",label:e("connectors.fVerify"),value:r.verify,options:ke,onChange:a=>h({verify:a})})]}),(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-secret",children:[(0,t.jsx)(T,{children:e("connectors.fSecret")}),(0,t.jsx)("input",{id:"cn-secret",value:r.secret,onChange:a=>h({secret:a.currentTarget.value}),placeholder:e(x?"connectors.fSecretEditPh":"connectors.fSecretPh")})]})]}),U?(0,t.jsx)("p",{className:`connector-create-message${U.error?" err":""}`,children:U.text}):null]})}),(0,t.jsx)("footer",{className:"connector-modal-actions",children:J?(0,t.jsx)("button",{type:"button",className:"primary",onClick:P,children:e("connectors.close")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",disabled:X,onClick:P,children:e("connectors.cancel")}),(0,t.jsx)("button",{id:"cn-create",type:"button",className:"primary",disabled:X,onClick:()=>{ae()},children:e(x?"connectors.btnSave":"connectors.btnCreate")})]})})]})}),(0,t.jsx)("section",{className:"overview-block connector-section connector-list-section",children:(0,t.jsx)("div",{className:"card connector-list-card",children:$?(0,t.jsx)(ie,{className:"connector-list-loading",label:e("connectors.loading"),compact:!0}):(0,t.jsx)(Ye,{connectors:R,bots:N,copiedId:g,editMsg:ee,groupName:z,modeLabel:Q,kindLabel:oe,onCopy:Ae,onEdit:ne,onToggle:a=>{se(a)},onTogglePayloadLogging:a=>{ve(a)},onDelete:a=>{$e(a)}})})})]}):(0,t.jsx)(Ee,{embedded:!0})]})}function Ve(o){let e=_(),s=o.created,d=s.isDynamic?`${s.url}?chatId=${s.exampleChat}`:s.url,f=s.exampleChat!=="<chatId>"?`\uFF08${o.groupName(s.exampleChat)}\uFF09`:"";return(0,t.jsx)("div",{className:"connector-created-wrap",children:(0,t.jsxs)("div",{className:"card connector-created-card",children:[(0,t.jsxs)("p",{className:"connector-created-title ok",children:[e(s.rotated?"connectors.rotatedPrefix":"connectors.createdPrefix",{name:s.name}),s.mode==="fixed"&&s.chatId?(0,t.jsxs)("span",{className:"muted",children:[" \xB7 ",e("connectors.createdDest",{name:o.groupName(s.chatId)})]}):null]}),(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsx)("code",{children:s.url})]}),s.secret?(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsxs)("span",{className:"muted",children:[s.isToken?e("connectors.tokenLabel"):e("connectors.signLabel"),e("connectors.secretOnce")]}),(0,t.jsx)("code",{children:s.secret})]}):null,s.isToken&&s.isDynamic?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageDynamicLede",{gn:f})}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageDynamicNote")}})]}):s.isToken?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageTokenLede")}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageTokenNote")}})]}):(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageHmac")+(s.isDynamic?e("connectors.usageHmacDynamic"):"")}})]})})}function Ye(o){let e=_();return o.connectors.length?(0,t.jsx)(t.Fragment,{children:o.connectors.map(s=>{let d=o.bots.find(L=>L.larkAppId===s.target.botId),f=be(s.id),N=(s.verify?.type??"token")==="token",y=e(N?"connectors.badgeToken":"connectors.badgeSign"),I=s.target.mode==="fixed"&&s.target.chatId?e("connectors.dest",{name:o.groupName(s.target.chatId)}):"",k=o.editMsg?.id===s.id?o.editMsg:null,R=o.copiedId===s.id;return(0,t.jsxs)("div",{className:"card connector-item-card",children:[(0,t.jsxs)("div",{className:"connector-item-head",children:[(0,t.jsxs)("div",{className:"connector-item-main",children:[(0,t.jsxs)("div",{className:"connector-item-title",children:[(0,t.jsx)("b",{children:s.name}),(0,t.jsx)("span",{className:s.enabled?"connector-status-pill ok":"connector-status-pill muted",children:s.enabled?e("connectors.enabled"):e("connectors.disabled")})]}),(0,t.jsxs)("div",{className:"connector-item-meta",children:[(0,t.jsx)("span",{children:d?.botName||s.target.botId}),(0,t.jsx)("span",{children:o.kindLabel(s.target.kind)}),(0,t.jsx)("span",{children:o.modeLabel(s.target.mode)}),I?(0,t.jsx)("span",{children:I}):null,(0,t.jsx)("span",{children:y}),(0,t.jsx)("span",{children:s.loggingPolicy?.storePayload!==!1?e("connectors.payloadLogged",{days:s.loggingPolicy?.retentionDays??14}):e("connectors.metadataOnly")})]})]}),(0,t.jsx)("button",{className:`ghost connector-copy-button${R?" copied":""}`,type:"button",onClick:()=>o.onCopy(s),children:e(R?"connectors.copied":"connectors.copy")})]}),(0,t.jsxs)("div",{className:"connector-url-row",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsxs)("code",{children:[f,N?"/<token>":""]})]}),N?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.tokenHint")}}):null,s.target.kind==="workflow"?(0,t.jsx)("div",{className:"muted connector-item-note",children:e("connectors.legacyWorkflowNote")}):null,s.target.mode==="dynamic"?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.dynamicReqHint")}}):null,s.promptEnvelope?.instruction?(0,t.jsxs)("div",{className:"muted connector-item-note",children:[e("connectors.instructionPrefix"),s.promptEnvelope.instruction]}):null,(0,t.jsx)("div",{className:"muted connector-item-note",children:s.topicMessage?.mode==="none"?e("connectors.topicMessageListNone"):s.topicMessage?.mode==="custom"||s.topicMessage?.mode==="template"?e("connectors.topicMessageListCustom",{text:s.topicMessage.text||""}):e("connectors.topicMessageListDefault")}),k?(0,t.jsx)("div",{className:k.error?"err connector-item-note":"muted connector-item-note",children:k.text}):null,(0,t.jsxs)("div",{className:"connector-item-actions",children:[(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onEdit(s),children:e("connectors.btnEdit")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onTogglePayloadLogging(s),children:s.loggingPolicy?.storePayload!==!1?e("connectors.btnDisablePayloadLog"):e("connectors.btnEnablePayloadLog")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onToggle(s),children:s.enabled?e("connectors.btnDisable"):e("connectors.btnEnable")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onDelete(s),children:e("connectors.btnDel")})]})]},s.id)})}):(0,t.jsx)("p",{className:"muted connector-list-empty",children:e("connectors.empty")})}function gt(o){return re(o,(0,t.jsx)(Oe,{tab:"webhooks"}))}function mt(o){return re(o,(0,t.jsx)(Oe,{tab:"logs"}))}export{ut as buildConnectorInstructionUpdateBody,je as buildConnectorKindOptions,Ke as buildConnectorTopicMessageConfig,mt as renderConnectorsLogsPage,gt as renderConnectorsPage,Xe as replaceConnectorById};
|
|
1
|
+
import{a as q,b as V}from"./chunk-EVK77ASG.js";import{a as ce}from"./chunk-ZJVTGU5X.js";import{a as ie,c as de,g as Se,l as T,q as ue}from"./chunk-5CJMHTT4.js";import{d as _}from"./chunk-FXW3V4JR.js";import"./chunk-24ONYQMR.js";import"./chunk-F6KNPF4R.js";import{a as re}from"./chunk-SYC6D5XU.js";import{a as Pe,d as le}from"./chunk-5THX4DI2.js";import{c as j}from"./chunk-7SZRL6FY.js";var i=j(Pe(),1);var p=j(Pe(),1);var n=j(le(),1),Ge=50,Ne={total:0,ok:0,error:0,successRate:0};function We(o,e=Date.now()){if(o==="all")return;let s=o==="24h"?24:o==="7d"?168:720;return new Date(e-s*60*60*1e3).toISOString()}function _e(o,e=0){let s=new URLSearchParams({limit:String(Ge),offset:String(e)});o.connectorId&&s.set("connectorId",o.connectorId),o.status&&s.set("status",o.status);let d=We(o.timeWindow);return d&&s.set("since",d),o.query.trim()&&s.set("q",o.query.trim()),s}function Fe(o){if(!o)return"\u2014";let e=new Date(o);return Number.isFinite(e.getTime())?e.toLocaleString():o}function ge(o){return o===void 0||!Number.isFinite(o)?"\u2014":o<1e3?`${Math.round(o)} ms`:o<6e4?`${(o/1e3).toFixed(o<1e4?1:0)} s`:`${(o/6e4).toFixed(1)} min`}function Ue(o){return o===void 0?"\u2014":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/1024/1024).toFixed(1)} MB`}function Le(o){return o.value===void 0||o.value===null?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):typeof o.value=="object"&&!Array.isArray(o.value)&&Object.keys(o.value).length===0?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):(0,n.jsx)("pre",{className:`webhook-log-json${o.fullHeight?" full-height":""}`,children:(0,n.jsx)("code",{children:JSON.stringify(o.value,null,2)})})}function Je(o){let e=[["kind",o.value?.kind],["mode",o.value?.mode],["botId",o.value?.botId],["chatId",o.value?.chatId],["sessionId",o.value?.sessionId],["rootMessageId",o.value?.rootMessageId],["workflowId",o.value?.workflowId]].filter(([,s])=>s!=null&&s!=="");return e.length?(0,n.jsx)("dl",{className:"webhook-log-target-facts",children:e.map(([s,d])=>(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:s}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:String(d)})})]},s))}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:"\u2014"})}function Ie(o){return(0,n.jsx)(ue,{id:o.id,className:"webhook-log-filter-menu",ariaLabel:o.label,style:{width:"100%",minWidth:0},value:o.value,label:ie(o.options,o.value),options:o.options,onChange:o.onChange})}function me(o){return(0,n.jsxs)("article",{className:`card webhook-log-metric${o.tone?` ${o.tone}`:""}`,children:[(0,n.jsx)("span",{children:o.label}),(0,n.jsx)("strong",{children:o.value}),(0,n.jsx)("small",{children:o.hint||"\xA0"})]})}function Ee(o={}){let e=_(),s=(0,p.useRef)(!1),d=(0,p.useRef)([]),[f,N]=(0,p.useState)([]),[y,I]=(0,p.useState)([]),[k,R]=(0,p.useState)(Ne),[L,$]=(0,p.useState)({connectorId:"",status:"",timeWindow:"7d",query:""}),[u,r]=(0,p.useState)(null),[E,U]=(0,p.useState)(!0),[w,J]=(0,p.useState)(!1),[A,X]=(0,p.useState)(!1),[Y,Z]=(0,p.useState)(0),[B,x]=(0,p.useState)(""),[K,ee]=(0,p.useState)(!1),M=(0,p.useMemo)(()=>new Map(f.map(c=>[c.id,c.name])),[f]),g=(0,p.useMemo)(()=>y.find(c=>c.triggerId===u)??y[0]??null,[y,u]),te=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allConnectors")},...f.map(c=>({value:c.id,label:c.name}))],[f,e]),G=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allStatuses")},{value:"ok",label:e("webhookLogs.success")},{value:"error",label:e("webhookLogs.failed")}],[e]),fe=(0,p.useMemo)(()=>[{value:"24h",label:e("webhookLogs.last24h")},{value:"7d",label:e("webhookLogs.last7d")},{value:"30d",label:e("webhookLogs.last30d")},{value:"all",label:e("webhookLogs.allTime")}],[e]),H=(0,p.useCallback)(async(c=!1,v=!1)=>{v?J(!0):U(!0),x("");let Q=c?d.current.length:0,oe=_e(L,Q),h=new URLSearchParams(oe);h.delete("limit"),h.delete("offset");try{let[S,ne]=await Promise.all([q(`/api/trigger-logs?${oe}`),c?Promise.resolve(null):q(`/api/trigger-logs/summary?${h}`)]);if(!s.current)return;if(S.status!==200)throw new Error(String(S.body?.error||S.status));let P=Array.isArray(S.body?.logs)?S.body.logs:[],ae=c?[...d.current,...P]:P;d.current=ae,I(ae),Z(Number(S.body?.total??P.length)),X(S.body?.hasMore===!0),c||(R(ne?.status===200?ne.body?.summary??Ne:Ne),r(se=>P.some(ve=>ve.triggerId===se)?se:P[0]?.triggerId??null))}catch(S){s.current&&x(S?.message||e("webhookLogs.loadFailed"))}finally{s.current&&(U(!1),J(!1))}},[L,e]);(0,p.useEffect)(()=>(s.current=!0,q("/api/connectors").then(c=>{s.current&&c.status===200&&N(Array.isArray(c.body?.connectors)?c.body.connectors:[])}),()=>{s.current=!1}),[]),(0,p.useEffect)(()=>{let c=setTimeout(()=>{H(!1)},L.query?260:0);return()=>clearTimeout(c)},[L,H]),(0,p.useEffect)(()=>{let c=setInterval(()=>{H(!1,!0)},15e3);return()=>clearInterval(c)},[H]);async function ye(){!g||!await ce(JSON.stringify(g,null,2),e("webhookLogs.copyJson"))||(ee(!0),setTimeout(()=>s.current&&ee(!1),1200))}let ke=g?.request?.payloadOmittedReason==="disabled"?e("webhookLogs.payloadDisabled"):g?.request?.payloadOmittedReason==="too_large"?e("webhookLogs.payloadTooLarge"):e("webhookLogs.payloadUnavailable"),z=(0,n.jsxs)(n.Fragment,{children:[o.embedded?null:(0,n.jsxs)("div",{className:"page-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,n.jsx)("h1",{children:e("nav.webhookLogs")}),(0,n.jsx)("p",{className:"webhook-log-heading-copy",children:e("webhookLogs.subtitle")})]}),(0,n.jsxs)("div",{className:"page-heading-actions",children:[(0,n.jsxs)("span",{className:`webhook-log-live${w?" refreshing":""}`,children:[(0,n.jsx)("i",{}),e("webhookLogs.autoRefresh")]}),(0,n.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})]})]}),(0,n.jsxs)("section",{className:"webhook-log-metrics","aria-label":e("webhookLogs.summary"),children:[(0,n.jsx)(me,{label:e("webhookLogs.total"),value:k.total,hint:e("webhookLogs.filteredRange")}),(0,n.jsx)(me,{label:e("webhookLogs.successRate"),value:`${k.successRate.toFixed(k.successRate%1?1:0)}%`,tone:"ok",hint:`${k.ok} ${e("webhookLogs.calls")}`}),(0,n.jsx)(me,{label:e("webhookLogs.failures"),value:k.error,tone:k.error?"error":void 0,hint:k.error?e("webhookLogs.needsReview"):e("webhookLogs.noFailures")}),(0,n.jsx)(me,{label:e("webhookLogs.p95"),value:ge(k.p95DurationMs),hint:`${e("webhookLogs.average")} ${ge(k.avgDurationMs)}`})]}),(0,n.jsxs)("form",{className:"filters dashboard-toolbar webhook-log-toolbar",onSubmit:c=>c.preventDefault(),children:[(0,n.jsx)("input",{type:"search",name:"q","aria-label":e("webhookLogs.search"),placeholder:e("webhookLogs.searchPlaceholder"),value:L.query,onChange:c=>{let v=c.currentTarget.value;$(Q=>({...Q,query:v}))}}),(0,n.jsx)(Ie,{id:"webhook-log-connector",label:e("webhookLogs.connector"),value:L.connectorId,options:te,onChange:c=>$(v=>({...v,connectorId:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-status",label:e("webhookLogs.status"),value:L.status,options:G,onChange:c=>$(v=>({...v,status:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-window",label:e("webhookLogs.timeRange"),value:L.timeWindow,options:fe,onChange:c=>$(v=>({...v,timeWindow:c}))}),(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-refresh",disabled:w,onClick:()=>{H(!1,!0)},children:e("webhookLogs.refresh")})]}),B?(0,n.jsxs)("p",{className:"err webhook-log-error",children:[e("webhookLogs.loadFailed"),": ",B]}):null,(0,n.jsxs)("section",{className:"webhook-log-workspace",children:[(0,n.jsxs)("article",{className:"card webhook-log-list-panel",children:[(0,n.jsx)("header",{className:"webhook-log-panel-head",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:e("webhookLogs.records")}),(0,n.jsx)("span",{children:e("webhookLogs.matching",{count:Y})})]})}),E&&!y.length?(0,n.jsx)(de,{label:e("webhookLogs.loading"),compact:!0}):null,!E&&!y.length?(0,n.jsxs)("div",{className:"webhook-log-empty",children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"\u25CE"}),(0,n.jsx)("strong",{children:e("webhookLogs.empty")}),(0,n.jsx)("p",{children:e("webhookLogs.emptyHint")})]}):null,(0,n.jsx)("div",{className:"webhook-log-list",role:"listbox","aria-label":e("webhookLogs.records"),children:y.map(c=>{let v=g?.triggerId===c.triggerId;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":v,className:`webhook-log-row${v?" active":""}`,onClick:()=>r(c.triggerId),children:[(0,n.jsx)("span",{className:`webhook-log-status-dot ${c.status}`,"aria-hidden":"true"}),(0,n.jsxs)("span",{className:"webhook-log-row-main",children:[(0,n.jsxs)("span",{className:"webhook-log-row-title",children:[(0,n.jsx)("strong",{children:M.get(c.connectorId||"")||c.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsx)("code",{children:c.request?.method||"POST"})]}),(0,n.jsxs)("span",{className:"webhook-log-row-meta",children:[(0,n.jsx)("span",{children:Fe(c.createdAt)}),(0,n.jsx)("span",{children:c.errorCode||c.action})]})]}),(0,n.jsxs)("span",{className:"webhook-log-row-result",children:[(0,n.jsx)("b",{className:c.status,children:c.response?.httpStatus??(c.status==="ok"?"2xx":"ERR")}),(0,n.jsx)("small",{children:ge(c.response?.durationMs)})]})]},`${c.triggerId}-${c.createdAt}`)})}),A?(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-more",disabled:E,onClick:()=>{H(!0)},children:e("webhookLogs.loadMore")}):null]}),(0,n.jsx)("article",{className:"card webhook-log-detail-panel",children:g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("header",{className:"webhook-log-detail-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{className:`webhook-log-result-pill ${g.status}`,children:g.status==="ok"?e("webhookLogs.success"):e("webhookLogs.failed")}),(0,n.jsx)("h2",{children:M.get(g.connectorId||"")||g.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsxs)("p",{children:[Fe(g.createdAt)," \xB7 ",g.request?.method||"POST"," ",g.request?.path||"/webhook/\u2026"]})]}),(0,n.jsx)("button",{type:"button",className:"ghost",onClick:()=>{ye()},children:e(K?"webhookLogs.copied":"webhookLogs.copyJson")})]}),g.error?(0,n.jsxs)("div",{className:"webhook-log-failure",children:[(0,n.jsx)("strong",{children:g.errorCode||e("webhookLogs.failureReason")}),(0,n.jsx)("span",{children:g.error})]}):null,(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.overview")}),(0,n.jsxs)("dl",{className:"webhook-log-facts",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.httpStatus")}),(0,n.jsx)("dd",{children:g.response?.httpStatus??"\u2014"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.duration")}),(0,n.jsx)("dd",{children:ge(g.response?.durationMs)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.action")}),(0,n.jsx)("dd",{children:g.action})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.bodySize")}),(0,n.jsx)("dd",{children:Ue(g.request?.bodyBytes)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Trigger ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.triggerId})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Request ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.requestId||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.remoteAddress")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.request?.remoteAddress||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.target")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.target?.chatId||g.target?.sessionId||g.response?.chatId||"\u2014"})})]})]})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.queryParams")}),(0,n.jsx)(Le,{value:g.request?.query,empty:e("webhookLogs.none")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.headers"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),(0,n.jsx)(Le,{value:g.request?.headers,empty:e("webhookLogs.headersNotStored")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.payload"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),g.request?.payloadStored?(0,n.jsx)(Le,{value:g.request.payload,empty:e("webhookLogs.none")}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:ke})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.routeTarget")}),(0,n.jsx)(Je,{value:g.target})]})]}):(0,n.jsx)("div",{className:"webhook-log-empty",children:(0,n.jsx)("strong",{children:e("webhookLogs.selectRecord")})})})]})]});return o.embedded?(0,n.jsx)("section",{className:"webhook-logs-content webhook-logs-panel",children:z}):(0,n.jsx)("section",{className:"page webhook-logs-content webhook-logs-page",children:z})}var t=j(le(),1);function Xe(o,e){return o.map(s=>s.id===e.id?e:s)}var Re={name:"",botId:"",kind:"turn",workflowId:"",mode:"dynamic",chatId:"",manualChat:!1,manualChatId:"",allowChats:[],deduplicate:!1,dedup:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,verify:"token",secret:"",storePayload:!0};function ut(o,e){return{promptEnvelope:{sourceName:o.promptEnvelope?.sourceName||o.name,instruction:e}}}function Ke(o,e,s){let d=e.trim();if(o!=="template")return{ok:!0,value:o==="custom"?{mode:o,text:d}:{mode:o}};try{let f=JSON.parse(s);return!f||typeof f!="object"||Array.isArray(f)?{ok:!1,error:"connectors.errTopicExtractors"}:{ok:!0,value:{mode:o,text:d,extractors:f}}}catch{return{ok:!1,error:"connectors.errTopicExtractors"}}}function je(o){return[{value:"turn",label:o("connectors.kindTurn")},{value:"workflow",label:o("connectors.kindWorkflowRetiring"),disabled:!0}]}function be(o){return`${location.origin}/webhook/${encodeURIComponent(o)}`}function pe(o){return(0,t.jsx)(ue,{id:o.id,className:"connector-form-menu",ariaLabel:o.label,value:o.value,label:ie(o.options,o.value),options:o.options,onChange:o.onChange})}function De(o){let e=(0,i.useRef)(null),[s,d]=(0,i.useState)(!1),[f,N]=(0,i.useState)(""),y=Array.isArray(o.value)?o.value:o.value?[o.value]:[],I=(0,i.useMemo)(()=>new Set(y),[y]),k=f.trim().toLocaleLowerCase(),R=(0,i.useMemo)(()=>k?o.groups.filter(u=>`${u.name} ${u.chatId}`.toLocaleLowerCase().includes(k)):o.groups,[k,o.groups]),L=o.multiple?y.length===0?o.allLabel||o.placeholder:o.selectedCountLabel(y.length):o.groups.find(u=>u.chatId===y[0])?.name||y[0]||o.placeholder;(0,i.useEffect)(()=>{if(!s)return;let u=r=>{e.current?.contains(r.target)||d(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[s]);function $(u){if(!o.multiple){o.onChange(u),d(!1),N("");return}o.onChange(I.has(u)?y.filter(r=>r!==u):[...y,u])}return(0,t.jsxs)("div",{ref:e,className:`connector-group-picker${s?" open":""}`,children:[(0,t.jsxs)("button",{id:o.id,type:"button",className:"connector-group-picker-trigger","aria-label":o.label,"aria-haspopup":"listbox","aria-expanded":s,onClick:()=>d(u=>!u),children:[(0,t.jsx)("span",{className:y.length||o.multiple&&o.allLabel?"":"muted",children:L}),(0,t.jsx)("span",{className:"connector-group-picker-chevron","aria-hidden":"true"})]}),s?(0,t.jsxs)("div",{className:"connector-group-picker-popover",children:[(0,t.jsxs)("label",{className:"connector-group-search",htmlFor:`${o.id}-search`,children:[(0,t.jsx)("span",{className:"connector-group-search-icon","aria-hidden":"true"}),(0,t.jsx)("input",{id:`${o.id}-search`,type:"search",autoComplete:"off",autoFocus:!0,value:f,placeholder:o.searchPlaceholder,onChange:u=>N(u.currentTarget.value),onKeyDown:u=>{u.key==="Escape"&&(u.preventDefault(),d(!1))}})]}),(0,t.jsxs)("div",{className:"connector-group-options",role:"listbox","aria-label":o.label,"aria-multiselectable":o.multiple||void 0,children:[o.multiple&&o.allLabel&&!k?(0,t.jsxs)("button",{type:"button",className:`connector-group-option connector-group-option-all${y.length===0?" selected":""}`,role:"option","aria-selected":y.length===0,onClick:()=>o.onChange([]),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:o.allLabel}),(0,t.jsx)("small",{children:o.placeholder})]})]}):null,R.map(u=>{let r=I.has(u.chatId);return(0,t.jsxs)("button",{type:"button",className:`connector-group-option${r?" selected":""}`,role:"option","aria-selected":r,onClick:()=>$(u.chatId),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:u.name||u.chatId}),u.name?(0,t.jsx)("small",{children:u.chatId}):null]})]},u.chatId)}),R.length?null:(0,t.jsx)("p",{className:"connector-group-empty",children:o.emptyLabel})]})]}):null]})}function he(o,e){return o.filter(s=>s.bots.includes(e))}function ze(o,e){let s=o.target.chatId||"",d=s&&he(e,o.target.botId).some(f=>f.chatId===s);return{name:o.name,botId:o.target.botId,kind:o.target.kind,workflowId:o.target.workflowId||"",mode:o.target.mode,chatId:d?s:"",manualChat:!!(s&&!d),manualChatId:d?"":s,allowChats:o.target.allowChats||[],deduplicate:!!o.lifecycleExtractors?.dedupKey,dedup:o.lifecycleExtractors?.dedupKey||"",instruction:o.promptEnvelope?.instruction||"",topicMessageMode:o.topicMessage?.mode||"default",topicMessageText:o.topicMessage?.text||"",topicMessageExtractors:JSON.stringify(o.topicMessage?.extractors||{},null,2),suppressFinalOutput:o.suppressFinalOutput===!0,verify:o.verify?.type||"token",secret:"",storePayload:o.loggingPolicy?.storePayload!==!1}}function Qe(o){let e=_(),s=o.active==="webhooks",d=o.active==="logs";return(0,t.jsxs)("nav",{className:"connectors-subnav-slot connectors-subnav insight-tabs",role:"tablist","aria-label":e("nav.connectors"),children:[(0,t.jsx)("a",{href:"#/connectors",className:`itab${s?" on":""}`,role:"tab","aria-selected":s,children:e("connectors.tabWebhooks")}),(0,t.jsx)("a",{href:"#/connectors/logs",className:`itab${d?" on":""}`,role:"tab","aria-selected":d,children:e("connectors.tabLogs")})]})}function Oe(o){let e=_(),s=(0,i.useRef)(!1),d=(0,i.useRef)(null),f=(0,i.useRef)(null),[N,y]=(0,i.useState)([]),[I,k]=(0,i.useState)([]),[R,L]=(0,i.useState)([]),[$,u]=(0,i.useState)(!0),[r,E]=(0,i.useState)(Re),[U,w]=(0,i.useState)(null),[J,A]=(0,i.useState)(null),[X,Y]=(0,i.useState)(!1),[Z,B]=(0,i.useState)(!1),[x,K]=(0,i.useState)(null),[ee,M]=(0,i.useState)(null),[g,te]=(0,i.useState)(null),G=(0,i.useMemo)(()=>he(I,r.botId),[I,r.botId]),fe=(0,i.useMemo)(()=>N.length?N.map(a=>({value:a.larkAppId,label:a.botName})):[{value:"",label:e("connectors.noOnlineBots")}],[N,e]),H=(0,i.useMemo)(()=>je(e),[e]),ye=(0,i.useMemo)(()=>[{value:"dynamic",label:e("connectors.modeDynamic")},{value:"fixed",label:e("connectors.modeFixed")},{value:"new-group",label:e("connectors.modeNewGroup")}],[e]),ke=(0,i.useMemo)(()=>[{value:"token",label:e("connectors.verifyToken")},{value:"hmac-sha256",label:e("connectors.verifyHmac")}],[e]),z=(0,i.useCallback)(a=>I.find(b=>b.chatId===a)?.name||a,[I]),c=(0,i.useCallback)((a,l)=>{E(b=>{let F=b.botId&&a.some(O=>O.larkAppId===b.botId)?b.botId:a[0]?.larkAppId??"",C=he(l,F),m=b.chatId&&C.some(O=>O.chatId===b.chatId)?b.chatId:C[0]?.chatId??"",D=new Set(C.map(O=>O.chatId));return{...b,botId:F,chatId:m,allowChats:b.allowChats.filter(O=>D.has(O))}})},[]),v=(0,i.useCallback)(async()=>{u(!0);try{let[a,l,b]=await Promise.all([q("/api/bots"),q("/api/connectors"),q("/api/groups")]);if(!s.current)return;let F=(a.body?.bots||[]).map(m=>({larkAppId:m.larkAppId,botName:m.botName||m.larkAppId})),C=(b.body?.chats||[]).map(m=>({chatId:m.chatId,name:m.name||"",bots:(m.memberBots||[]).filter(D=>D.inChat).map(D=>D.larkAppId)}));y(F),k(C),L(Array.isArray(l.body?.connectors)?l.body.connectors:[]),c(F,C)}finally{s.current&&u(!1)}},[c]);(0,i.useEffect)(()=>(s.current=!0,v(),()=>{s.current=!1,d.current&&clearTimeout(d.current)}),[v]),(0,i.useEffect)(()=>{let a=new Set(G.map(l=>l.chatId));E(l=>({...l,chatId:l.chatId&&a.has(l.chatId)?l.chatId:G[0]?.chatId??"",allowChats:l.allowChats.filter(b=>a.has(b))}))},[G]),(0,i.useEffect)(()=>{let a=f.current;if(a)if(Z){if(!a.open)try{a.showModal()}catch{}let l=a.querySelector(".connector-modal-body");l&&(l.scrollTop=0)}else a.open&&a.close()},[Z]),(0,i.useEffect)(()=>()=>{let a=f.current;a?.open&&a.close()},[]);function Q(a){return e(a==="fixed"?"connectors.modeLabelFixed":a==="new-group"?"connectors.modeLabelNewGroup":"connectors.modeLabelDynamic")}function oe(a){return e(a==="workflow"?"connectors.kindLabelWorkflow":"connectors.kindLabelTurn")}function h(a){E(l=>({...l,...a}))}function S(){w(null),A(null),K(null),E(a=>{let l=a.botId||N[0]?.larkAppId||"";return{...Re,botId:l,chatId:he(I,l)[0]?.chatId||""}}),B(!0)}function ne(a){w(null),A(null),M(null),K(a),E(ze(a,I)),B(!0)}function P(){X||(B(!1),w(null),A(null),K(null))}async function ae(){w(null),A(null);let a=r.name.trim(),l=r.botId;if(!a){w({text:e("connectors.errName"),error:!0});return}if(!l){w({text:e("connectors.errBot"),error:!0});return}if(r.kind==="workflow"){w({text:e("connectors.errLegacyWorkflowRetired"),error:!0});return}let b=r.topicMessageText.trim();if((r.topicMessageMode==="custom"||r.topicMessageMode==="template")&&!b){w({text:e("connectors.errTopicMessage"),error:!0});return}let F=Ke(r.topicMessageMode,b,r.topicMessageExtractors);if(!F.ok){w({text:e(F.error),error:!0});return}let C={name:a,enabled:x?.enabled??!0,target:{kind:r.kind,mode:r.mode,botId:l},promptEnvelope:{sourceName:a,instruction:r.instruction.trim()},topicMessage:F.value,suppressFinalOutput:r.suppressFinalOutput,verify:{type:r.verify},loggingPolicy:{storePayload:r.storePayload,storeHeaders:!0,retentionDays:14}};if(r.mode==="fixed"){let m=r.manualChat?r.manualChatId.trim():r.chatId;if(!m){w({text:e("connectors.errChat"),error:!0});return}C.target.chatId=m}else r.mode==="dynamic"&&(C.target.allowChats=r.allowChats);if(r.mode==="new-group"){let m=r.dedup.trim();if(r.deduplicate&&!m){w({text:e("connectors.errDedup"),error:!0});return}C.lifecycleExtractors=r.deduplicate?{dedupKey:m}:null}else C.lifecycleExtractors=null;r.secret.trim()&&(C.secret=r.secret.trim()),Y(!0),w({text:e(x?"connectors.saving":"connectors.creating")});try{let m=await V(x?"PUT":"POST",x?`/api/connectors/${encodeURIComponent(x.id)}`:"/api/connectors",C);if(!s.current)return;if((m.status===201||m.status===200)&&m.body?.ok){if(x){let we=x.id,W=m.body.connector;L(Ce=>Xe(Ce,W));let Te=m.body.secret??C.secret;if(Te){let Ce=m.body.webhookUrl||be(W.id),qe=(W.verify?.type??"token")==="token",xe=W.target.mode==="dynamic",Be=xe?W.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:W.target.mode,chatId:W.target.chatId,url:Ce,secret:Te,isToken:qe,isDynamic:xe,exampleChat:Be,rotated:!0}),await v();return}M({id:we,text:e("connectors.updated")}),B(!1),K(null);return}let D=m.body.webhookUrl||be(m.body.connector.id),O=(m.body.connector?.verify?.type??"token")==="token",Me=r.mode==="dynamic",He=Me?C.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:r.mode,chatId:C.target.chatId,url:D,secret:m.body.secret,isToken:O,isDynamic:Me,exampleChat:He}),E(we=>({...we,name:"",workflowId:"",manualChatId:"",dedup:"",secret:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,allowChats:[],storePayload:!0})),await v()}else{let D=m.body?.error||m.status;w({text:e("connectors.createFailed",{error:String(D)}),error:!0})}}finally{s.current&&Y(!1)}}async function se(a){M({id:a.id,text:e(a.enabled?"connectors.disabling":"connectors.enabling")});let l=await V("PATCH",`/api/connectors/${encodeURIComponent(a.id)}`,{enabled:!a.enabled});if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.toggleFailed",{error:String(b)}),error:!0})}}async function ve(a){let l=a.loggingPolicy?.storePayload!==!1;M({id:a.id,text:e("connectors.saving")});let b=await V("PUT",`/api/connectors/${encodeURIComponent(a.id)}`,{loggingPolicy:{storePayload:!l,storeHeaders:a.loggingPolicy?.storeHeaders!==!1,retentionDays:a.loggingPolicy?.retentionDays??14}});if(s.current)if(b.status===200&&b.body?.ok)M(null),await v();else{let F=b.body?.error||b.status;M({id:a.id,text:e("connectors.saveFailed",{error:String(F)}),error:!0})}}async function $e(a){if(!confirm(e("connectors.delConfirm")))return;M({id:a.id,text:e("connectors.deleting")});let l=await V("DELETE",`/api/connectors/${encodeURIComponent(a.id)}`);if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.deleteFailed",{error:String(b)}),error:!0})}}function Ae(a){ce(be(a.id),e("connectors.copy")).then(l=>{!l||!s.current||(te(a.id),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{s.current&&te(null)},1200))})}return(0,t.jsxs)("section",{className:"page connectors-page",children:[(0,t.jsxs)("div",{className:"page-heading",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,t.jsx)("h1",{children:e("nav.connectors")})]}),(0,t.jsx)("div",{className:"page-heading-actions",children:o.tab==="webhooks"?(0,t.jsx)(Se,{className:"page-primary-action connector-create-trigger",onClick:S,children:e("connectors.createTitle")}):(0,t.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})})]}),(0,t.jsx)(Qe,{active:o.tab}),o.tab==="webhooks"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dialog",{ref:f,className:"connector-create-modal",onCancel:a=>{a.preventDefault(),P()},onClose:P,onClick:a=>{a.target===a.currentTarget&&P()},children:(0,t.jsxs)("article",{className:"connector-modal-card",children:[(0,t.jsxs)("header",{className:"connector-modal-header",children:[(0,t.jsx)("h3",{children:e(x?"connectors.editTitle":"connectors.createTitle")}),(0,t.jsx)("button",{type:"button",className:"connector-modal-close","aria-label":e("connectors.close"),title:e("connectors.close"),disabled:X,onClick:P,children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]}),(0,t.jsx)("div",{className:"connector-modal-body",children:J?(0,t.jsx)(Ve,{created:J,groupName:z}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"cn-form",children:[(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-name",children:[(0,t.jsx)(T,{children:e("connectors.fName")}),(0,t.jsx)("input",{id:"cn-name",value:r.name,onChange:a=>h({name:a.currentTarget.value}),placeholder:e("connectors.fNamePh")})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fBot")}),(0,t.jsx)(pe,{id:"cn-bot",label:e("connectors.fBot"),value:r.botId,options:fe,onChange:a=>h({botId:a})})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fKind")}),(0,t.jsx)(pe,{id:"cn-kind",label:e("connectors.fKind"),value:r.kind,options:H,onChange:a=>h({kind:a})})]}),r.kind==="workflow"?(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-wf",children:[(0,t.jsx)(T,{children:e("connectors.fWf")}),(0,t.jsx)("input",{id:"cn-wf",value:r.workflowId,onChange:a=>h({workflowId:a.currentTarget.value}),placeholder:"workflowId"})]}):null,(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fMode")}),(0,t.jsx)(pe,{id:"cn-mode",label:e("connectors.fMode"),value:r.mode,options:ye,onChange:a=>h({mode:a})})]}),r.mode==="fixed"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsx)(T,{children:e("connectors.fFixedChat")}),(0,t.jsxs)("div",{className:"connector-chat-control",children:[r.manualChat?(0,t.jsx)("input",{id:"cn-chat",value:r.manualChatId,onChange:a=>h({manualChatId:a.currentTarget.value}),placeholder:e("connectors.fChatManualPh")}):(0,t.jsx)(De,{id:"cn-chat-sel",label:e("connectors.fFixedChat"),groups:G,value:r.chatId,placeholder:e("connectors.groupPickerPlaceholder"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({chatId:a})}),(0,t.jsx)("button",{type:"button",className:"ghost connector-inline-link",onClick:()=>h({manualChat:!r.manualChat}),children:r.manualChat?e("connectors.chatListLink"):e("connectors.chatManualLink")})]})]}):r.mode==="dynamic"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsxs)(T,{help:e("connectors.allowHint"),children:[e("connectors.fAllow"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)(De,{id:"cn-allow-chats",label:e("connectors.fAllow"),groups:G,value:r.allowChats,multiple:!0,allLabel:e("connectors.allowAll"),placeholder:e("connectors.allowAllHint"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({allowChats:a})})]}):null,r.mode==="dynamic"?(0,t.jsx)("div",{className:"cn-field-wide",children:(0,t.jsx)("div",{className:"muted connector-form-hint",dangerouslySetInnerHTML:{__html:e("connectors.dynamicHint")}})}):null,r.mode==="new-group"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-new-group-config",children:[(0,t.jsx)(T,{children:e("connectors.newGroupStrategy")}),(0,t.jsxs)("div",{className:"connector-strategy-options",role:"radiogroup","aria-label":e("connectors.newGroupStrategy"),children:[(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":!r.deduplicate,className:`connector-strategy-option${r.deduplicate?"":" selected"}`,onClick:()=>h({deduplicate:!1}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupFresh")}),(0,t.jsx)("small",{children:e("connectors.newGroupFreshHint")})]})]}),(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.deduplicate,className:`connector-strategy-option${r.deduplicate?" selected":""}`,onClick:()=>h({deduplicate:!0}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupReuse")}),(0,t.jsx)("small",{children:e("connectors.newGroupReuseHint")})]})]})]}),r.deduplicate?(0,t.jsxs)("label",{className:"connector-dedup-field",htmlFor:"cn-dedup",children:[(0,t.jsx)(T,{help:(0,t.jsx)("span",{dangerouslySetInnerHTML:{__html:e("connectors.dedupHint")}}),children:e("connectors.fDedup")}),(0,t.jsx)("input",{id:"cn-dedup",value:r.dedup,onChange:a=>h({dedup:a.currentTarget.value}),placeholder:e("connectors.fDedupPh")})]}):null,(0,t.jsx)("p",{className:"connector-new-group-note",children:e("connectors.newGroupNotice")})]}):null,(0,t.jsxs)("label",{className:"cn-field cn-field-wide",htmlFor:"cn-instruction",children:[(0,t.jsxs)(T,{help:e("connectors.fInstructionPh"),children:[e("connectors.fInstruction"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)("textarea",{id:"cn-instruction",rows:3,value:r.instruction,onChange:a=>h({instruction:a.currentTarget.value}),placeholder:e("connectors.fInstructionPh")})]}),(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-topic-message-config",children:[(0,t.jsx)(T,{help:e("connectors.topicMessageHint"),children:e("connectors.topicMessage")}),(0,t.jsx)("div",{className:"connector-topic-message-options",role:"radiogroup","aria-label":e("connectors.topicMessage"),children:["default","custom","template","none"].map(a=>{let l=a==="default"?"Default":a==="custom"?"Custom":a==="template"?"Template":"None";return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.topicMessageMode===a,className:`connector-topic-message-option${r.topicMessageMode===a?" selected":""}`,onClick:()=>h({topicMessageMode:a}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e(`connectors.topicMessage${l}`)}),(0,t.jsx)("small",{children:e(`connectors.topicMessage${l}Hint`)})]})]},a)})}),r.topicMessageMode==="custom"||r.topicMessageMode==="template"?(0,t.jsxs)("div",{className:"connector-topic-message-input",children:[(0,t.jsx)("input",{id:"cn-topic-message",type:"text",maxLength:200,value:r.topicMessageText,onChange:a=>h({topicMessageText:a.currentTarget.value}),"aria-label":e(r.topicMessageMode==="template"?"connectors.topicMessageTemplate":"connectors.topicMessageCustom"),placeholder:e(r.topicMessageMode==="template"?"connectors.topicMessageTemplatePh":"connectors.topicMessageCustomPh")}),(0,t.jsxs)("small",{children:[e(r.topicMessageMode==="template"?"connectors.topicMessageTemplateHelp":"connectors.topicMessageCustomHelp"),(0,t.jsxs)("span",{children:[Array.from(r.topicMessageText).length,"/200"]})]}),r.topicMessageMode==="template"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("textarea",{id:"cn-topic-message-extractors",className:"connector-topic-message-extractors",rows:8,value:r.topicMessageExtractors,onChange:a=>h({topicMessageExtractors:a.currentTarget.value}),placeholder:e("connectors.topicMessageExtractorsPh"),"aria-label":e("connectors.topicMessageExtractors")}),(0,t.jsx)("small",{children:e("connectors.topicMessageExtractorsHelp")})]}):null]}):(0,t.jsx)("p",{className:`connector-topic-message-preview${r.topicMessageMode==="none"?" muted":""}`,children:r.topicMessageMode==="none"?e("connectors.topicMessageNonePreview"):e("connectors.topicMessagePreview",{source:r.name.trim()||e("connectors.topicMessageSourceFallback")})})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-store-payload",children:[(0,t.jsx)("input",{id:"cn-store-payload",type:"checkbox",checked:r.storePayload,onChange:a=>h({storePayload:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.storePayload")}),(0,t.jsx)("small",{children:e("connectors.storePayloadHint")})]})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-suppress-final",children:[(0,t.jsx)("input",{id:"cn-suppress-final",type:"checkbox",checked:r.suppressFinalOutput,onChange:a=>h({suppressFinalOutput:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.suppressFinalOutput")}),(0,t.jsx)("small",{children:e("connectors.suppressFinalOutputHint")})]})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fVerify")}),(0,t.jsx)(pe,{id:"cn-verify",label:e("connectors.fVerify"),value:r.verify,options:ke,onChange:a=>h({verify:a})})]}),(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-secret",children:[(0,t.jsx)(T,{children:e("connectors.fSecret")}),(0,t.jsx)("input",{id:"cn-secret",value:r.secret,onChange:a=>h({secret:a.currentTarget.value}),placeholder:e(x?"connectors.fSecretEditPh":"connectors.fSecretPh")})]})]}),U?(0,t.jsx)("p",{className:`connector-create-message${U.error?" err":""}`,children:U.text}):null]})}),(0,t.jsx)("footer",{className:"connector-modal-actions",children:J?(0,t.jsx)("button",{type:"button",className:"primary",onClick:P,children:e("connectors.close")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",disabled:X,onClick:P,children:e("connectors.cancel")}),(0,t.jsx)("button",{id:"cn-create",type:"button",className:"primary",disabled:X,onClick:()=>{ae()},children:e(x?"connectors.btnSave":"connectors.btnCreate")})]})})]})}),(0,t.jsx)("section",{className:"overview-block connector-section connector-list-section",children:(0,t.jsx)("div",{className:"card connector-list-card",children:$?(0,t.jsx)(de,{className:"connector-list-loading",label:e("connectors.loading"),compact:!0}):(0,t.jsx)(Ye,{connectors:R,bots:N,copiedId:g,editMsg:ee,groupName:z,modeLabel:Q,kindLabel:oe,onCopy:Ae,onEdit:ne,onToggle:a=>{se(a)},onTogglePayloadLogging:a=>{ve(a)},onDelete:a=>{$e(a)}})})})]}):(0,t.jsx)(Ee,{embedded:!0})]})}function Ve(o){let e=_(),s=o.created,d=s.isDynamic?`${s.url}?chatId=${s.exampleChat}`:s.url,f=s.exampleChat!=="<chatId>"?`\uFF08${o.groupName(s.exampleChat)}\uFF09`:"";return(0,t.jsx)("div",{className:"connector-created-wrap",children:(0,t.jsxs)("div",{className:"card connector-created-card",children:[(0,t.jsxs)("p",{className:"connector-created-title ok",children:[e(s.rotated?"connectors.rotatedPrefix":"connectors.createdPrefix",{name:s.name}),s.mode==="fixed"&&s.chatId?(0,t.jsxs)("span",{className:"muted",children:[" \xB7 ",e("connectors.createdDest",{name:o.groupName(s.chatId)})]}):null]}),(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsx)("code",{children:s.url})]}),s.secret?(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsxs)("span",{className:"muted",children:[s.isToken?e("connectors.tokenLabel"):e("connectors.signLabel"),e("connectors.secretOnce")]}),(0,t.jsx)("code",{children:s.secret})]}):null,s.isToken&&s.isDynamic?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageDynamicLede",{gn:f})}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageDynamicNote")}})]}):s.isToken?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageTokenLede")}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageTokenNote")}})]}):(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageHmac")+(s.isDynamic?e("connectors.usageHmacDynamic"):"")}})]})})}function Ye(o){let e=_();return o.connectors.length?(0,t.jsx)(t.Fragment,{children:o.connectors.map(s=>{let d=o.bots.find(L=>L.larkAppId===s.target.botId),f=be(s.id),N=(s.verify?.type??"token")==="token",y=e(N?"connectors.badgeToken":"connectors.badgeSign"),I=s.target.mode==="fixed"&&s.target.chatId?e("connectors.dest",{name:o.groupName(s.target.chatId)}):"",k=o.editMsg?.id===s.id?o.editMsg:null,R=o.copiedId===s.id;return(0,t.jsxs)("div",{className:"card connector-item-card",children:[(0,t.jsxs)("div",{className:"connector-item-head",children:[(0,t.jsxs)("div",{className:"connector-item-main",children:[(0,t.jsxs)("div",{className:"connector-item-title",children:[(0,t.jsx)("b",{children:s.name}),(0,t.jsx)("span",{className:s.enabled?"connector-status-pill ok":"connector-status-pill muted",children:s.enabled?e("connectors.enabled"):e("connectors.disabled")})]}),(0,t.jsxs)("div",{className:"connector-item-meta",children:[(0,t.jsx)("span",{children:d?.botName||s.target.botId}),(0,t.jsx)("span",{children:o.kindLabel(s.target.kind)}),(0,t.jsx)("span",{children:o.modeLabel(s.target.mode)}),I?(0,t.jsx)("span",{children:I}):null,(0,t.jsx)("span",{children:y}),(0,t.jsx)("span",{children:s.loggingPolicy?.storePayload!==!1?e("connectors.payloadLogged",{days:s.loggingPolicy?.retentionDays??14}):e("connectors.metadataOnly")})]})]}),(0,t.jsx)("button",{className:`ghost connector-copy-button${R?" copied":""}`,type:"button",onClick:()=>o.onCopy(s),children:e(R?"connectors.copied":"connectors.copy")})]}),(0,t.jsxs)("div",{className:"connector-url-row",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsxs)("code",{children:[f,N?"/<token>":""]})]}),N?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.tokenHint")}}):null,s.target.kind==="workflow"?(0,t.jsx)("div",{className:"muted connector-item-note",children:e("connectors.legacyWorkflowNote")}):null,s.target.mode==="dynamic"?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.dynamicReqHint")}}):null,s.promptEnvelope?.instruction?(0,t.jsxs)("div",{className:"muted connector-item-note",children:[e("connectors.instructionPrefix"),s.promptEnvelope.instruction]}):null,(0,t.jsx)("div",{className:"muted connector-item-note",children:s.topicMessage?.mode==="none"?e("connectors.topicMessageListNone"):s.topicMessage?.mode==="custom"||s.topicMessage?.mode==="template"?e("connectors.topicMessageListCustom",{text:s.topicMessage.text||""}):e("connectors.topicMessageListDefault")}),k?(0,t.jsx)("div",{className:k.error?"err connector-item-note":"muted connector-item-note",children:k.text}):null,(0,t.jsxs)("div",{className:"connector-item-actions",children:[(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onEdit(s),children:e("connectors.btnEdit")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onTogglePayloadLogging(s),children:s.loggingPolicy?.storePayload!==!1?e("connectors.btnDisablePayloadLog"):e("connectors.btnEnablePayloadLog")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onToggle(s),children:s.enabled?e("connectors.btnDisable"):e("connectors.btnEnable")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onDelete(s),children:e("connectors.btnDel")})]})]},s.id)})}):(0,t.jsx)("p",{className:"muted connector-list-empty",children:e("connectors.empty")})}function gt(o){return re(o,(0,t.jsx)(Oe,{tab:"webhooks"}))}function mt(o){return re(o,(0,t.jsx)(Oe,{tab:"logs"}))}export{ut as buildConnectorInstructionUpdateBody,je as buildConnectorKindOptions,Ke as buildConnectorTopicMessageConfig,mt as renderConnectorsLogsPage,gt as renderConnectorsPage,Xe as replaceConnectorById};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{x as n}from"./chunk-F6KNPF4R.js";import{a as v}from"./chunk-SYC6D5XU.js";import{a as F,d as f}from"./chunk-5THX4DI2.js";import{c as m}from"./chunk-7SZRL6FY.js";var r=m(F(),1);var e=m(f(),1);function C(){let s=new Date,o=new Date(s.getTime()-30*864e5);return new URLSearchParams({from:o.toISOString(),to:s.toISOString()})}async function c(s,o){let i=await fetch(`${s}?${o}`);if(!i.ok)throw new Error(await i.text());return i.json()}function E(){let[s,o]=(0,r.useState)(),[i,k]=(0,r.useState)([]),[l,y]=(0,r.useState)([]),[h,S]=(0,r.useState)([]),[u,R]=(0,r.useState)(),[b,p]=(0,r.useState)(""),g=async a=>{try{p("");let t=C(),[I,D,T,d]=await Promise.all([c("/api/feedback/analytics/summary",t),c("/api/feedback/analytics/trend",t),c("/api/feedback/analytics/reasons",t),c("/api/feedback/analytics/deliveries",new URLSearchParams([...t,["limit","25"],...a?[["cursor",a]]:[]]))]);o(I),k(D.items),y(T.items),S(x=>a?[...x,...d.items]:d.items),R(d.nextCursor)}catch(t){p(t instanceof Error?t.message:String(t))}};(0,r.useEffect)(()=>{g()},[]);let N=Math.max(1,...i.map(a=>a.ratings)),P=Math.max(1,...l.map(a=>a.count));return(0,e.jsxs)("div",{className:"page feedback-page",children:[(0,e.jsx)("header",{className:"sect-header",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{children:n("feedback.title")}),(0,e.jsx)("p",{children:n("feedback.subtitle")})]})}),b&&(0,e.jsx)("p",{className:"error-banner",children:b}),(0,e.jsx)("section",{className:"feedback-kpis",children:[["feedback.delivered",s?.delivered],["feedback.rated",s?.ratedDeliveries],["feedback.coverage",s?`${Math.round(s.ratingCoverage*100)}%`:void 0],["feedback.positiveRate",s?`${Math.round(s.positiveRate*100)}%`:void 0],["feedback.deliveryFailures",s?.deliveryFailures],["feedback.outboxFailures",s?.outboxFailures]].map(([a,t])=>(0,e.jsxs)("article",{children:[(0,e.jsx)("span",{children:n(String(a))}),(0,e.jsx)("strong",{children:t??"\u2014"})]},String(a)))}),(0,e.jsxs)("div",{className:"feedback-grid",children:[(0,e.jsxs)("section",{className:"panel",children:[(0,e.jsx)("h2",{children:n("feedback.trend")}),i.map(a=>(0,e.jsxs)("div",{className:"feedback-bar",children:[(0,e.jsx)("span",{children:a.bucket}),(0,e.jsx)("i",{style:{width:`${a.ratings/N*100}%`}}),(0,e.jsxs)("b",{children:[a.positive,"/",a.ratings]})]},a.bucket))]}),(0,e.jsxs)("section",{className:"panel",children:[(0,e.jsx)("h2",{children:n("feedback.reasons")}),l.map(a=>(0,e.jsxs)("div",{className:"feedback-bar negative",children:[(0,e.jsx)("span",{children:a.reasonKey}),(0,e.jsx)("i",{style:{width:`${a.count/P*100}%`}}),(0,e.jsx)("b",{children:a.count})]},a.reasonKey))]})]}),(0,e.jsxs)("section",{className:"panel",children:[(0,e.jsx)("h2",{children:n("feedback.deliveries")}),(0,e.jsx)("div",{className:"feedback-deliveries",children:h.map(a=>(0,e.jsxs)("div",{children:[(0,e.jsx)("code",{children:a.deliveryId}),(0,e.jsx)("span",{children:a.createdAt}),(0,e.jsxs)("span",{children:[a.botAppId??"\u2014"," \xB7 ",a.model??a.cliId??"\u2014"]}),(0,e.jsx)("b",{children:a.semantic??a.status??"unrated"})]},a.deliveryId))}),u&&(0,e.jsx)("button",{className:"btn-link feedback-more",onClick:()=>{g(u)},children:n("feedback.loadMore")})]})]})}function w(s){return v(s,(0,e.jsx)(E,{}))}export{w as renderFeedbackPage};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{a as ke,b as Se,c as Pe,d as Ie}from"./chunk-R3FXBFQH.js";import{c as oe,d as ye,e as we}from"./chunk-4XNJX6B3.js";import{a as pe}from"./chunk-ZJVTGU5X.js";import{c as Q,g as ee,h as fe,m as te,n as me,o as he,p as ve,q as be}from"./chunk-5CJMHTT4.js";import{d as de}from"./chunk-FXW3V4JR.js";import"./chunk-24ONYQMR.js";import{A as le,D as ce,a as z,b as K,x as Z}from"./chunk-F6KNPF4R.js";import{a as ue}from"./chunk-SYC6D5XU.js";import{a as Ue,d as ge}from"./chunk-5THX4DI2.js";import{c as Y}from"./chunk-7SZRL6FY.js";var l=Y(Ue(),1);var He=/^[A-Za-z0-9._-]{1,64}$/,Ne=6,Ce=30;function re(o,t){return Pe(o,t)}function Ge(o,t,r=Ce){let n=Number.isFinite(r)?Math.max(1,Math.floor(r)):Ce,a=o.length,c=Math.max(1,Math.ceil(a/n)),s=Number.isFinite(t)?Math.floor(t):1,p=Math.min(c,Math.max(1,s)),v=(p-1)*n,x=Math.min(a,v+n);return{rows:o.slice(v,x),page:p,totalPages:c,from:a===0?0:v+1,to:x,total:a}}async function Re(o,t,r){if(o.length===0)return[];let n=new Array(o.length),a=0,c=Math.min(Math.max(1,t),o.length);return await Promise.all(Array.from({length:c},async()=>{for(;a<o.length;){let s=a++;n[s]=await r(o[s])}})),n}function ne(o){return He.test(o)&&o!=="."&&o!==".."}function ae(o){let t=String(o??"").trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64);return ne(t)?t:"profile"}async function X(){let t=await(await fetch("/api/role-profiles")).json().catch(()=>({}));return Array.isArray(t.profiles)?t.profiles:[]}async function xe(o){let t=await X(),r=await Re(t,Ne,async s=>{try{let v=await(await fetch(`/api/role-profiles/${encodeURIComponent(s.profileId)}`)).json().catch(()=>({}));return[s.profileId,Array.isArray(v.entries)?v.entries:[]]}catch{return[s.profileId,[]]}}),n=new Set,a=[];for(let s of o.chats??[])for(let p of s.memberBots??[]){if(!p?.inChat||!p?.hasRole||!p?.larkAppId)continue;let v=re(p.larkAppId,s.chatId);n.has(v)||(n.add(v),a.push({chatId:s.chatId,larkAppId:p.larkAppId}))}let c=await Ie(a);return{profiles:t,entriesById:new Map(r),groupRoleContentByBot:c,loaded:!0}}async function Ae(o){let t=(o.memberBots??[]).filter(r=>r?.inChat&&r?.larkAppId);return Re(t,Ne,async r=>{try{let a=await(await fetch(`/api/roles/${encodeURIComponent(r.larkAppId)}/${encodeURIComponent(o.chatId)}`)).json().catch(()=>({})),c=a?.hasEffectiveRole??a?.hasRole,s="effectiveContent"in a?a.effectiveContent:a.content,p=c?String(s??"").trim():"",v=a?.effectiveSource==="chat"||a?.effectiveSource==="team"?a.effectiveSource:null;return{larkAppId:r.larkAppId,botName:r.botName,content:p,status:p?v??"chat":"empty"}}catch{return{larkAppId:r.larkAppId,botName:r.botName,content:"",status:"error"}}})}function Be(o,t){return o.filter(r=>!t||!t.has(r.larkAppId))}function Te(o,t){let r=t.q.trim().toLowerCase();return o.filter(n=>!r||(n.name??"").toLowerCase().includes(r)||n.chatId.toLowerCase().includes(r)||(n.ownerId??"").toLowerCase().includes(r)).filter(n=>!t.missingOnly||(n.memberBots??[]).some(a=>!a.inChat))}function Ee(o,t){if(t.size===0)return!0;let r=o?.memberBots??[];for(let n of t)if(!r.some(a=>a.larkAppId===n&&a.inChat))return!1;return!0}function $e(o){let t=Array.isArray(o)?o:[],r=t.filter(n=>!!n?.ok).length;return{rows:t,okCount:r,failed:t.length-r}}function Le(o,t,r){let n=String(o??"").trim();if(!n)return null;if(r)return{kind:"warn",text:Z("groups.roleProfileBootstrapFailed",{name:n,reason:String(r)})};let a=typeof t=="string"&&t.trim()?t.trim():"";return a?{kind:"ok",text:Z("groups.roleProfileBootstrapSent",{name:n,messageId:a})}:{kind:"ok",text:Z("groups.roleProfileBootstrapDone",{name:n})}}function Me(o,t,r,n,a){let c=new Set(n);a&&c.add(a);let s={chatId:t,name:r,ownerId:a??null,memberBots:o.bots.map(p=>({larkAppId:p.larkAppId,botName:p.botName,inChat:c.has(p.larkAppId),oncallChat:null}))};return{bots:o.bots,chats:[s,...o.chats.filter(p=>p.chatId!==t)]}}var e=Y(ge(),1);function Oe(){return{profiles:[],entriesById:new Map,groupRoleContentByBot:new Map,loaded:!1}}function _e(o){let t={};for(let r of le(o).split(";")){if(!r)continue;let n=r.indexOf(":");n<=0||(t[r.slice(0,n)]=r.slice(n+1))}return t}function We(o){let t=o.chat,r=t.avatar??ce(t.chatId),[n,a]=(0,l.useState)(!1);(0,l.useEffect)(()=>{a(!1)},[r]);let c=t.name??t.chatId,s=!!r&&!n;return(0,e.jsx)("span",{className:`orb-avatar orb-square orb-avatar-sm${s?" orb-has-img":""}`,style:_e(c),"aria-hidden":"true",children:s?(0,e.jsx)("img",{className:"orb-img",src:r,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:()=>a(!0)}):null})}function se(o){return(0,e.jsxs)("p",{className:"hint-warn",children:[(0,e.jsx)("strong",{children:o.title}),(0,e.jsx)("br",{}),(0,e.jsx)("small",{children:String(o.reason??"unknown")})]})}function Fe(o){let t=Be(o.bots,o.excludeIds),r=o.tr;return(0,e.jsx)(we,{bots:t,selected:o.selected,onToggle:o.onToggle,searchPlaceholder:r("botPicker.searchPlaceholder"),noMatchLabel:r("botPicker.noMatch"),emptyLabel:r("botPicker.empty"),selectedCountLabel:n=>r("botPicker.selectedCount",{n:String(n)})})}function Je(o){let t=o.summary;return t.rows.length?(0,e.jsxs)("div",{className:t.failed?"hint-warn":"hint-ok",children:[(0,e.jsxs)("strong",{children:["\u6DFB\u52A0\u7ED3\u679C\uFF1A\u6210\u529F ",t.okCount,"/",t.rows.length,t.failed?`\uFF0C\u5931\u8D25 ${t.failed}`:""]}),(0,e.jsx)("ul",{children:t.rows.map((r,n)=>{let a=String(r?.id??"?");return(0,e.jsxs)("li",{children:[(0,e.jsx)("code",{children:a}),": ",r?.ok?"OK":`failed (${String(r?.error??"unknown")})`]},`${a}-${n}`)})})]}):(0,e.jsx)("p",{className:"hint-warn",children:"\u6CA1\u6709\u8FD4\u56DE\u6DFB\u52A0\u7ED3\u679C\u3002"})}function qe(o){let{chat:t,context:r,tr:n}=o;if(!r.profiles.length||!r.loaded)return null;let a=new Map;for(let v of t.memberBots??[])v?.inChat&&a.set(v.larkAppId,r.groupRoleContentByBot.get(re(v.larkAppId,t.chatId))??null);if(!ke(a))return null;let s=Se(t.memberBots??[],r.profiles,r.entriesById,a)[0];if(!s)return(0,e.jsx)("div",{className:"g-profile-status muted",children:n("groups.profileStatusUnmatched")});let p=s.kind==="full"?"groups.profileStatusFullChat":"groups.profileStatusPartial";return(0,e.jsx)("div",{className:`g-profile-status ${s.kind}`,children:n(p,{name:s.profileId,matched:s.matched,total:s.total,chat:s.chatMatched})})}function ze(o){return o?o.error?"error":o.inChat?"in":"out":"unknown"}function Ve(o,t){switch(o){case"in":return t("groups.botStatusIn");case"out":return t("groups.botStatusOut");case"error":return t("groups.botStatusError");default:return t("groups.botStatusUnknown")}}function Ke(o){let t=new Map((o.chat.memberBots??[]).map(r=>[r.larkAppId,r]));return(0,e.jsx)("div",{className:"groups-bot-strip","aria-label":o.tr("groups.botCoverage"),children:o.bots.map(r=>{let n=t.get(r.larkAppId),a=ze(n),c=Ve(a,o.tr),s=r.botName??r.larkAppId;return(0,e.jsxs)("span",{className:`groups-bot-pill groups-bot-${a}`,title:`${s}: ${c}${n?.error?` (${String(n.error)})`:""}`,children:[(0,e.jsx)("i",{"aria-hidden":"true"}),(0,e.jsx)("span",{className:"groups-bot-name",children:s}),(0,e.jsx)("span",{className:"groups-bot-state",children:c})]},r.larkAppId)})})}var De=(0,l.memo)(function(t){let{chat:r,tr:n}=t,c=(r.memberBots??[]).filter(s=>s.inChat).length;return(0,e.jsxs)(me,{kind:"group",className:"groups-list-row","data-chat":r.chatId,children:[(0,e.jsx)(We,{chat:r}),(0,e.jsxs)(he,{children:[(0,e.jsxs)("div",{className:"groups-row-head",children:[(0,e.jsx)("b",{children:r.name??r.chatId}),(0,e.jsxs)("span",{className:"groups-row-meta",children:[(0,e.jsx)("span",{className:"groups-row-tag",children:(0,e.jsx)("code",{children:r.chatId})}),r.ownerId?(0,e.jsxs)("span",{className:"groups-row-tag groups-row-owner-tag",children:[(0,e.jsx)("span",{children:n("groups.owner")}),(0,e.jsx)("code",{children:r.ownerId})]}):null]})]}),(0,e.jsx)(qe,{chat:r,context:t.roleContext,tr:n})]}),(0,e.jsx)("span",{className:"groups-row-count",children:n("groups.memberSummary",{count:c,total:t.bots.length})}),(0,e.jsxs)("div",{className:"groups-row-lower",children:[(0,e.jsx)(Ke,{chat:r,bots:t.bots,tr:n}),(0,e.jsxs)(ve,{children:[(0,e.jsx)(ee,{className:"add-bots",onClick:()=>t.onAddBots(r),children:n("groups.addBots")}),(0,e.jsx)("button",{className:"save-profile",type:"button",onClick:()=>t.onSaveProfile(r),children:n("groups.saveAsProfile")}),(0,e.jsx)("button",{className:"manage-chat",type:"button",onClick:()=>t.onManage(r),children:n("groups.manage")})]})]})]})});function Ze(o){let{tr:t}=o,[r,n]=(0,l.useState)(!1),[a,c]=(0,l.useState)(null),[s,p]=(0,l.useState)(null),[v,x]=(0,l.useState)(!1),[g,C]=(0,l.useState)(new Set),[I,u]=(0,l.useState)(""),[k,m]=(0,l.useState)([]),[S,T]=(0,l.useState)(""),[A,E]=(0,l.useState)(""),[N,U]=(0,l.useState)(""),[M,J]=(0,l.useState)(!0),[B,$]=(0,l.useState)(""),[D,q]=(0,l.useState)(!1),[F,O]=(0,l.useState)(""),[d,w]=(0,l.useState)("");(0,l.useEffect)(()=>{let f=!0;return fetch("/api/feed-groups").then(async b=>{let P=await b.json().catch(()=>({}));if(!b.ok||!P.ok)throw new Error(P.message??P.error??`HTTP ${b.status}`);f&&(m(Array.isArray(P.groups)?P.groups:[]),T(typeof P.larkAppId=="string"?P.larkAppId:""))}).catch(b=>{f&&$(b instanceof Error?b.message:String(b))}).finally(()=>{f&&J(!1)}),()=>{f=!1}},[]),(0,l.useEffect)(()=>{if(!F)return;let f=!0,b=window.setInterval(()=>{fetch("/api/feed-groups").then(async P=>{let G=await P.json().catch(()=>({}));!P.ok||!G.ok||!f||(m(Array.isArray(G.groups)?G.groups:[]),T(typeof G.larkAppId=="string"?G.larkAppId:""),$(""),O(""),w(""))}).catch(()=>{})},1e3);return()=>{f=!1,window.clearInterval(b)}},[F]);async function j(){let f=S?`?larkAppId=${encodeURIComponent(S)}`:"",b=await fetch(`/api/feed-groups/auth-url${f}`),P=await b.json().catch(()=>({}));if(!b.ok||!P.authUrl){c({title:"\u65E0\u6CD5\u53D1\u8D77\u6807\u7B7E\u6388\u6743",reason:P.error??`HTTP ${b.status}`});return}O(String(P.authUrl)),w("")}async function H(f){q(!0);try{let b=await fetch("/api/feed-groups/oauth-callback",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({callbackUrl:f.trim()})}),P=await b.json().catch(()=>({}));if(!b.ok||!P.ok)throw new Error(P.message??P.error??`HTTP ${b.status}`);let G=await fetch("/api/feed-groups"),i=await G.json().catch(()=>({}));if(!G.ok||!i.ok)throw new Error(i.message??i.error??`HTTP ${G.status}`);m(Array.isArray(i.groups)?i.groups:[]),T(typeof i.larkAppId=="string"?i.larkAppId:""),$(""),O(""),w("")}catch(b){c({title:"\u6807\u7B7E\u6388\u6743\u5931\u8D25",reason:b instanceof Error?b.message:String(b)})}finally{q(!1)}}async function _(f){f.preventDefault();let b=new FormData(f.currentTarget),P=String(b.get("name")??"").trim(),G=String(b.get("bindWorkingDir")??"").trim(),i=String(b.get("roleProfileId")??"").trim(),h=[...g];if(h.length===0){c({title:"\u8BF7\u9009\u62E9 bot",reason:"\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A bot \u540E\u518D\u521B\u5EFA\u7FA4\u804A\u3002"});return}n(!0),c(null);try{let y=await fetch("/api/groups/create",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:P||void 0,larkAppIds:h,bindWorkingDir:G||void 0,roleProfileId:i||void 0,feedGroupId:A||void 0,newFeedGroupName:N||void 0,feedGroupAppId:A||N?S:void 0})}),R=await y.json().catch(()=>({ok:!1,error:`HTTP ${y.status}`}));R.ok&&R.chatId?(p(R),o.onCreated(R,h,P)):(c({title:"\u521B\u5EFA\u5931\u8D25",reason:R.error??`HTTP ${y.status}`}),n(!1))}catch(y){c({title:"\u7F51\u7EDC\u9519\u8BEF",reason:y}),n(!1)}}if(s){let f=String(s.chatId),b=typeof s.shareLink=="string"&&s.shareLink?s.shareLink:`https://applink.feishu.cn/client/chat/open?openChatId=${encodeURIComponent(f)}`,P=s.invalidBotIds??[],G=s.invalidUserIds??[],i=Array.isArray(s.oncallBindings)?s.oncallBindings:[],h=i.filter(L=>L?.ok).length,y=i.filter(L=>!L?.ok),R=Le(typeof s.roleProfileId=="string"?s.roleProfileId:"",s.roleProfileBootstrapMessageId,s.roleProfileBootstrapError);return(0,e.jsxs)("article",{className:"g-create-dialog g-create-success",children:[(0,e.jsx)("header",{children:(0,e.jsx)("h3",{children:t("groups.successTitle")})}),(0,e.jsxs)("p",{children:[(0,e.jsx)("b",{children:"chatId:"})," ",(0,e.jsx)("code",{children:f})," ",(0,e.jsx)("button",{type:"button","data-copy":f,onClick:()=>{pe(f,t("sessions.copy")).then(L=>{L&&(x(!0),o.setTimer(()=>x(!1),800))})},children:t(v?"sessions.copied":"sessions.copy")})]}),(0,e.jsxs)("p",{children:[(0,e.jsx)("b",{children:"\u521B\u5EFA\u8005:"})," ",(0,e.jsx)("code",{children:String(s.creator??"?")})]}),s.feedGroupId?(0,e.jsxs)("p",{className:"hint-ok",children:["\u5DF2\u52A0\u5165\u98DE\u4E66\u6807\u7B7E",s.feedGroupName?`\u300C${String(s.feedGroupName)}\u300D`:"","\u3002"]}):null,s.feedGroupError?(0,e.jsxs)("p",{className:"hint-warn",children:["\u7FA4\u804A\u5DF2\u521B\u5EFA\uFF0C\u4F46\u6807\u7B7E\u8BBE\u7F6E\u5931\u8D25\uFF1A",String(s.feedGroupError)]}):null,(0,e.jsx)(Xe,{resp:s}),i.length>0?y.length===0?(0,e.jsxs)("p",{className:"hint-ok",children:["\u5DF2\u7ED1\u5B9A\u76EE\u5F55\uFF1A",(0,e.jsx)("code",{children:String(s.bindResolvedPath??"")}),"\uFF08",h,"/",i.length," bots\uFF09"]}):(0,e.jsxs)("p",{className:"hint-warn",children:["\u76EE\u5F55\u7ED1\u5B9A\u90E8\u5206\u5931\u8D25\uFF1A\u6210\u529F ",h,"/",i.length,"\u3002",y.map((L,W)=>(0,e.jsxs)("span",{children:[(0,e.jsx)("br",{}),(0,e.jsx)("code",{children:String(L?.larkAppId??"?")}),": ",String(L?.error??"unknown")]},`${L?.larkAppId??"?"}-${W}`))]}):null,R?(0,e.jsx)("p",{className:R.kind==="ok"?"hint-ok":"hint-warn",children:R.text}):null,P.length||G.length?(0,e.jsxs)("ul",{children:[P.length?(0,e.jsxs)("li",{children:["\u65E0\u6548 bot id: ",(0,e.jsx)("code",{children:P.join(", ")})]}):null,G.length?(0,e.jsxs)("li",{children:["\u65E0\u6548\u7528\u6237 open_id: ",(0,e.jsx)("code",{children:G.join(", ")})]}):null]}):null,(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",id:"g-create-close",onClick:o.onClose,children:t("sessions.dismiss")}),(0,e.jsx)("a",{className:"btn-link primary",href:b,target:"_blank",rel:"noopener",children:t("groups.openGroup")})]})]})}return(0,e.jsxs)("article",{className:"g-create-dialog",children:[(0,e.jsxs)("header",{className:"g-create-head",children:[(0,e.jsx)("h3",{children:t("groups.createTitle")}),(0,e.jsx)("p",{children:t("groups.createHelp")})]}),(0,e.jsxs)("form",{id:"g-createform",className:"g-create-form",onSubmit:f=>{_(f)},children:[(0,e.jsxs)("fieldset",{className:"g-modal-field g-create-bots",children:[(0,e.jsx)("legend",{children:t("groups.botPicker")}),(0,e.jsx)("div",{className:"g-bot-picker",children:(0,e.jsx)(Fe,{bots:o.bots,tr:t,selected:g,onToggle:(f,b)=>C(P=>{let G=new Set(P);return b?G.add(f):G.delete(f),G})})})]}),(0,e.jsxs)("div",{className:"g-create-fields",children:[(0,e.jsxs)("fieldset",{className:"g-modal-field",children:[(0,e.jsx)("legend",{children:t("groups.name")}),(0,e.jsx)("input",{type:"text",name:"name",placeholder:t("groups.namePlaceholder"),maxLength:60})]}),(0,e.jsxs)("fieldset",{className:"g-modal-field",children:[(0,e.jsx)("legend",{children:t("groups.bindDir")}),(0,e.jsx)("input",{type:"text",name:"bindWorkingDir",placeholder:"e.g. ~/projects/botmux"}),(0,e.jsx)("small",{children:t("groups.bindDirHelp")})]}),(0,e.jsxs)("fieldset",{className:"g-modal-field g-profile-field",children:[(0,e.jsx)("legend",{children:t("groups.roleProfile")}),(0,e.jsx)("input",{type:"hidden",name:"roleProfileId",value:I}),(0,e.jsx)(be,{className:"g-profile-menu",ariaLabel:t("groups.roleProfile"),label:I||t("groups.roleProfileNone"),value:I,options:[{value:"",label:t("groups.roleProfileNone")},...o.roleProfiles.map(f=>({value:f.profileId,label:f.profileId}))],onChange:u}),(0,e.jsx)("small",{children:t("groups.roleProfileHelp")})]}),(0,e.jsxs)("fieldset",{className:"g-modal-field g-feed-group-field",children:[(0,e.jsx)("legend",{children:"\u98DE\u4E66\u6807\u7B7E\uFF08\u53EF\u9009\uFF09"}),(0,e.jsx)("input",{type:"hidden",name:"feedGroupId",value:A}),(0,e.jsx)(ye,{groups:k,selectedId:A,newName:N,disabled:M||!!B,onChange:(f,b)=>{E(f),U(b)}}),(0,e.jsx)("small",{children:"\u5C55\u5F00\u540E\u53EF\u5728\u7B2C\u4E00\u884C\u8F93\u5165\u65B0\u6807\u7B7E\u540D\u79F0\uFF0C\u6216\u9009\u62E9\u4E0B\u65B9\u5DF2\u6709\u6807\u7B7E\u3002"}),M?(0,e.jsx)("small",{children:"\u6B63\u5728\u8BFB\u53D6\u98DE\u4E66\u6807\u7B7E\u2026"}):null,B?(0,e.jsxs)("div",{className:"hint-warn-inline",children:[(0,e.jsx)("small",{children:B})," ",(0,e.jsx)("button",{type:"button",disabled:D,onClick:()=>{j()},children:D?"\u6B63\u5728\u5B8C\u6210\u6388\u6743\u2026":"\u7ACB\u5373\u6388\u6743"}),(0,e.jsx)("small",{children:" \u6388\u6743\u540E\u4F1A\u5F39\u7A97\u63D0\u793A\u4F60\u7C98\u8D34\u56DE\u8C03\u5730\u5740\u3002"})]}):null,!M&&!B&&k.length===0?(0,e.jsx)("small",{children:"\u5F53\u524D\u6CA1\u6709\u6807\u7B7E\uFF0C\u53EF\u76F4\u63A5\u521B\u5EFA\u4E00\u4E2A\u3002"}):null]})]}),F?(0,e.jsx)("div",{className:"feed-group-auth-overlay",children:(0,e.jsxs)("section",{className:"feed-group-auth-card",role:"dialog","aria-modal":"true","aria-labelledby":"feed-group-auth-title",children:[(0,e.jsx)("h3",{id:"feed-group-auth-title",children:"\u6388\u6743\u98DE\u4E66\u6807\u7B7E"}),(0,e.jsxs)("p",{children:["\u70B9\u51FB\u4E0B\u9762\u7684\u6309\u94AE\uFF0C\u5728\u98DE\u4E66\u9875\u9762\u786E\u8BA4\u6388\u6743\u3002\u5982\u679C BotMux \u4E0E\u6D4F\u89C8\u5668\u5728\u540C\u4E00\u53F0\u7535\u8111\uFF0C\u786E\u8BA4\u540E\u4F1A\u81EA\u52A8\u5B8C\u6210\u6388\u6743\u3002\u5982\u679C BotMux \u8FD0\u884C\u5728\u8FDC\u7A0B\u865A\u62DF\u673A\u4E0A\uFF0C\u6D4F\u89C8\u5668\u4F1A\u56E0\u65E0\u6CD5\u8BBF\u95EE\u672C\u673A\u5730\u5740 ",(0,e.jsx)("code",{children:"127.0.0.1:9768"})," \u800C\u663E\u793A\u201C\u65E0\u6CD5\u8BBF\u95EE\u201D\uFF1B\u6B64\u65F6\u8BF7\u590D\u5236\u5730\u5740\u680F\u4E2D\u7684\u5B8C\u6574\u94FE\u63A5\u5E76\u7C98\u8D34\u5230\u4E0B\u65B9\u3002"]}),(0,e.jsx)("button",{type:"button",className:"primary feed-group-auth-open",onClick:()=>window.open(F,"_blank","noopener"),children:"\u8DF3\u8F6C\u98DE\u4E66\u6388\u6743"}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:"\u8BF7\u628A\u70B9\u51FB\u6388\u6743\u540E\u7684\u5B8C\u6574\u94FE\u63A5\u7C98\u8D34\u5728\u8FD9\u91CC"}),(0,e.jsx)("input",{type:"url",value:d,placeholder:"http://127.0.0.1:9768/callback?code=\u2026&state=\u2026",onChange:f=>w(f.currentTarget.value)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",onClick:()=>{O(""),w("")},children:"\u53D6\u6D88"}),(0,e.jsx)("button",{type:"button",className:"primary",disabled:!d.trim()||D,onClick:()=>{H(d)},children:D?"\u6B63\u5728\u5B8C\u6210\u6388\u6743\u2026":"\u5B8C\u6210\u6388\u6743"})]})]})}):null,(0,e.jsx)("div",{className:"g-create-status","data-create-status":!0,"aria-live":"polite",children:a?(0,e.jsx)(se,{...a}):null}),(0,e.jsxs)("div",{className:"actions g-create-actions",children:[(0,e.jsx)("button",{type:"button",id:"g-create-cancel",onClick:o.onClose,children:t("groups.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary",disabled:r,children:r?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("i",{className:"button-spinner","aria-hidden":"true"}),t("groups.createSubmitting")]}):t("groups.createSubmit")})]})]})]})}function Xe(o){let t=o.resp,r=t.autoInvitedOpenId,n=!!t.autoInviteRejected,a=t.ownerTransferredTo,c=t.transferError,s=t.notifyMessageId,p=t.notifyError;return r?(0,e.jsxs)("p",{className:"hint-ok",children:["\u5DF2\u81EA\u52A8\u9080\u8BF7\u4F60\uFF08",(0,e.jsx)("code",{children:r}),"\uFF09\u4F5C\u4E3A\u6210\u5458\u3002",a?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("br",{}),(0,e.jsx)("small",{children:"\u7FA4\u4E3B\u5DF2\u4ECE\u673A\u5668\u4EBA\u8F6C\u8BA9\u7ED9\u4F60\u3002"})]}):null,c?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("br",{}),(0,e.jsxs)("small",{className:"hint-warn-inline",children:["\u26A0 \u81EA\u52A8\u8F6C\u8BA9\u7FA4\u4E3B\u5931\u8D25\uFF08",c,"\uFF09\uFF0C\u4F60\u73B0\u5728\u662F\u6210\u5458\u4F46\u7FA4\u4E3B\u4ECD\u662F\u673A\u5668\u4EBA\u3002"]})]}):null,s?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("br",{}),(0,e.jsxs)("small",{children:["\u673A\u5668\u4EBA\u5DF2\u5728\u7FA4\u91CC @ \u4E86\u4F60\uFF08\u6D88\u606F id ",(0,e.jsx)("code",{children:s}),"\uFF09\uFF0C\u770B\u98DE\u4E66\u901A\u77E5\u5C31\u80FD\u8FDB\u7FA4\u3002"]})]}):null,p?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("br",{}),(0,e.jsxs)("small",{className:"hint-warn-inline",children:["\u26A0 \u81EA\u52A8 @ \u901A\u77E5\u5931\u8D25\uFF08",p,"\uFF09\uFF0C\u65B0\u7FA4\u53EF\u80FD\u4E0D\u4F1A\u4E3B\u52A8\u51FA\u73B0\u5728\u4F60\u4FA7\u8FB9\u680F\uFF0C\u5EFA\u8BAE\u4ECE\u4E0B\u9762\u6309\u94AE\u8DF3\u8FDB\u53BB\u3002"]})]}):null]}):n?(0,e.jsxs)("p",{className:"hint-warn",children:["\u98DE\u4E66\u62D2\u7EDD\u4E86\u81EA\u52A8\u9080\u8BF7\uFF08\u4F60\u7684 open_id \u5728\u521B\u5EFA\u8005 bot \u7684 scope \u4E0B\u4E0D\u53EF\u7528\uFF09\u3002",(0,e.jsx)("strong",{children:"\u4F60\u76EE\u524D\u4E0D\u662F\u65B0\u7FA4\u6210\u5458"}),"\uFF0C\u9700\u8981\u8BA9\u7FA4\u91CC\u7684\u67D0\u4E2A\u673A\u5668\u4EBA\u624B\u52A8\u628A\u4F60\u52A0\u8FDB\u6765\u3002"]}):(0,e.jsxs)("p",{className:"hint-warn",children:["\u6CA1\u5728 dashboard \u7F13\u5B58\u91CC\u627E\u5230 ownerOpenId\uFF0C",(0,e.jsx)("strong",{children:"\u6CA1\u6709\u81EA\u52A8\u9080\u8BF7\u4F60"}),"\u3002\u70B9\u5F00\u4E0B\u9762\u94FE\u63A5\u524D\uFF0C\u5148\u8BA9\u7FA4\u91CC\u4EFB\u4E00\u673A\u5668\u4EBA\u624B\u52A8\u628A\u4F60\u52A0\u8FDB\u53BB\u3002"]})}function Ye(o){let{chat:t,tr:r}=o,[n,a]=(0,l.useState)(!1),[c,s]=(0,l.useState)(null),[p,v]=(0,l.useState)(null),[x,g]=(0,l.useState)(new Set),C=(0,l.useMemo)(()=>new Set((t.memberBots??[]).filter(u=>u.inChat).map(u=>u.larkAppId)),[t]);async function I(u){u.preventDefault();let k=[...x];if(k.length===0){s({title:"\u8BF7\u9009\u62E9 bot",reason:"\u81F3\u5C11\u9009\u62E9\u4E00\u4E2A bot \u540E\u518D\u6DFB\u52A0\u3002"}),v(null);return}a(!0),s(null),v(null);try{let S=await(await fetch(`/api/groups/${encodeURIComponent(t.chatId)}/add-bots`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({larkAppIds:k})})).json();if(S.error==="no_proxy_bot")s({title:"\u65E0\u6CD5\u6DFB\u52A0 bot",reason:"\u5F53\u524D\u7FA4\u91CC\u6CA1\u6709\u53EF\u4EE3\u7406\u64CD\u4F5C\u7684 bot\u3002\u8BF7\u5148\u5728\u98DE\u4E66\u91CC\u624B\u52A8\u62C9\u5165\u4E00\u4E2A bot\uFF0C\u7136\u540E\u91CD\u8BD5\u3002"});else if(S.result){let T=$e(S.result);try{await o.onReloadGroups({force:!0}),v({result:T})}catch(A){v({result:T,refreshError:`\u6DFB\u52A0\u7ED3\u679C\u5DF2\u8FD4\u56DE\uFF0C\u4F46\u5237\u65B0\u7FA4\u7EC4\u5217\u8868\u5931\u8D25\uFF1A${A}`})}}else s({title:"\u54CD\u5E94\u5F02\u5E38",reason:JSON.stringify(S)})}catch(m){s({title:"\u7F51\u7EDC\u9519\u8BEF",reason:m})}finally{a(!1)}}return(0,e.jsxs)("article",{className:"g-add-bots-dialog",children:[(0,e.jsx)("header",{children:(0,e.jsxs)("h3",{children:[r("groups.addBots")," \xB7 ",t.name??t.chatId]})}),(0,e.jsx)("p",{children:r("groups.createHelp")}),(0,e.jsxs)("form",{id:"g-addform",onSubmit:u=>{I(u)},children:[(0,e.jsx)(Fe,{bots:o.bots,excludeIds:C,tr:r,selected:x,onToggle:(u,k)=>g(m=>{let S=new Set(m);return k?S.add(u):S.delete(u),S})}),(0,e.jsxs)("div",{"data-add-status":!0,"aria-live":"polite",children:[c?(0,e.jsx)(se,{...c}):null,p?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Je,{summary:p.result}),p.refreshError?(0,e.jsx)(se,{title:"\u5237\u65B0\u5931\u8D25",reason:p.refreshError}):null]}):null]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",id:"g-cancel",onClick:o.onClose,children:r("groups.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary",disabled:n,children:n?"Adding...":r("groups.addBots")})]})]})]})}function Qe(o){let{tr:t}=o,[r,n]=(0,l.useState)([]),[a,c]=(0,l.useState)([]),[s,p]=(0,l.useState)(!0),[v,x]=(0,l.useState)(null),g=(0,l.useMemo)(()=>[...a].sort((d,w)=>d.profileId.localeCompare(w.profileId)),[a]),C=g.length>0,I=r.filter(d=>d.status==="empty").length,u=r.filter(d=>d.status==="error").length,k=!s&&!v&&r.length>0&&u===0,[m,S]=(0,l.useState)("new"),[T,A]=(0,l.useState)(o.suggestedProfileId),[E,N]=(0,l.useState)(""),[U,M]=(0,l.useState)(!1),[J,B]=(0,l.useState)(null),$=m==="overwrite"?E:T.trim(),D=t(m==="overwrite"?"groups.saveProfileOverwriteSubmit":"groups.saveProfileSubmit"),q=v||(s?t("groups.saveProfilePreparing"):u?t("groups.saveProfileFailedLoadSummary",{count:u}):r.length?I?t("groups.saveProfileEntrySummaryWithEmpty",{count:r.length,emptyCount:I}):t("groups.saveProfileEntrySummary",{count:r.length}):t("groups.saveProfileNoRoles"));(0,l.useEffect)(()=>{let d=!0;return p(!0),x(null),B(null),(async()=>{try{let[w,j]=await Promise.all([Ae(o.chat),X().catch(()=>[])]);if(!d)return;let H=[...j].sort((_,f)=>_.profileId.localeCompare(f.profileId));n(w),c(j),N(_=>H.some(f=>f.profileId===_)?_:H[0]?.profileId??"")}catch(w){if(!d)return;n([]),c([]),N(""),x(w instanceof Error?w.message:String(w))}finally{d&&p(!1)}})(),()=>{d=!1}},[o.chat]);async function F(d){if(d.preventDefault(),!!k){if(!ne($)){B({text:t("groups.saveProfileInvalid"),className:"error"});return}M(!0),B({text:t("groups.saveProfileSaving")});try{let j=(await Promise.all(r.map(async H=>(await fetch(`/api/role-profiles/${encodeURIComponent($)}/${encodeURIComponent(H.larkAppId)}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({content:H.content,allowEmpty:!0})})).ok))).filter(Boolean).length;if(j!==r.length){B({text:t("groups.saveProfileFailed",{saved:j,total:r.length}),className:"error"}),M(!1);return}B({text:t("groups.saveProfileDone",{name:$,count:j}),className:"ok"}),await o.onRefreshRoleContext(),o.setTimer(o.onClose,700)}catch(w){B({text:String(w),className:"error"}),M(!1)}}}function O(d){d==="overwrite"&&!C||(S(d),B(null))}return(0,e.jsxs)("article",{className:"g-save-profile-dialog",children:[(0,e.jsxs)("header",{children:[(0,e.jsx)("h3",{children:t("groups.saveProfileTitle")}),(0,e.jsx)("p",{children:t("groups.saveProfileIntro",{name:o.chat.name??o.chat.chatId,count:s?"-":r.length})})]}),(0,e.jsxs)("form",{id:"g-save-profile-form",onSubmit:d=>{F(d)},children:[(0,e.jsxs)("section",{className:"g-save-profile-panel",children:[(0,e.jsxs)("div",{className:"g-save-profile-section-head",children:[(0,e.jsx)("span",{children:t("groups.saveProfileScope")}),(0,e.jsx)("small",{children:t("groups.saveProfileScopeHelp")})]}),(0,e.jsxs)("div",{className:"g-save-profile-stats",children:[(0,e.jsxs)("span",{children:[t("groups.saveProfileBotCount")," ",(0,e.jsx)("strong",{children:s?"-":r.length})]}),u?(0,e.jsxs)("span",{className:"warn",children:[t("groups.saveProfileLoadFailed")," ",(0,e.jsx)("strong",{children:u})]}):null]}),(0,e.jsx)("div",{className:"g-save-profile-entry-list",children:s?(0,e.jsx)("div",{className:"g-save-profile-loading",children:(0,e.jsx)(Q,{label:t("common.loading")})}):v?(0,e.jsx)("div",{className:"g-save-profile-empty",children:v}):r.length?r.map(d=>(0,e.jsxs)("div",{className:`g-save-profile-entry ${d.status==="error"?"error":""}`,children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:d.botName??d.larkAppId}),(0,e.jsx)("code",{children:d.larkAppId})]}),(0,e.jsx)("span",{className:`g-save-profile-entry-status ${d.status==="error"?"error":"ok"}`,children:t(d.status==="error"?"groups.saveProfileStatus.error":"groups.saveProfileStatus.entry")})]},d.larkAppId)):(0,e.jsx)("div",{className:"g-save-profile-empty",children:t("groups.saveProfileNoRoles")})})]}),(0,e.jsxs)("div",{className:"form-row",children:[(0,e.jsx)("span",{children:t("groups.saveProfileMode")}),(0,e.jsxs)("div",{className:"g-save-profile-switch",role:"tablist","aria-label":t("groups.saveProfileMode"),children:[(0,e.jsx)("button",{type:"button",className:m==="new"?"active":"","data-save-profile-mode":"new","aria-pressed":m==="new",onClick:()=>O("new"),children:t("groups.saveProfileNew")}),(0,e.jsx)("button",{type:"button",className:m==="overwrite"?"active":"","data-save-profile-mode":"overwrite","aria-pressed":m==="overwrite",disabled:!C,onClick:()=>O("overwrite"),children:t("groups.saveProfileOverwrite")})]})]}),(0,e.jsxs)("label",{className:"form-row","data-profile-mode-row":"new",hidden:m!=="new",children:[(0,e.jsx)("span",{children:t("groups.saveProfileIdLabel")}),(0,e.jsx)("input",{type:"text",name:"profileId",value:T,maxLength:64,autoComplete:"off",onChange:d=>{A(d.currentTarget.value),B(null)}}),(0,e.jsx)("small",{children:t("groups.saveProfileInvalid")})]}),(0,e.jsxs)("div",{className:"form-row","data-profile-mode-row":"overwrite",hidden:m!=="overwrite",children:[(0,e.jsx)("span",{children:t("groups.saveProfileExistingLabel")}),C?(0,e.jsx)("div",{className:"g-save-profile-picker",children:g.map(d=>(0,e.jsxs)("button",{type:"button",className:`g-save-profile-pick ${d.profileId===E?"selected":""}`,"data-profile-id":d.profileId,"aria-pressed":d.profileId===E,onClick:()=>{N(d.profileId),S("overwrite"),B(null)},children:[(0,e.jsx)("span",{children:d.profileId}),(0,e.jsx)("small",{children:t("groups.saveProfileExistingMeta",{count:d.entryCount??0})})]},d.profileId))}):(0,e.jsx)("div",{className:"g-save-profile-summary warn",children:t("groups.saveProfileExistingEmpty")}),(0,e.jsx)("small",{children:t("groups.saveProfileOverwriteHelp")})]}),(0,e.jsxs)("div",{className:"g-save-profile-target",children:[(0,e.jsx)("span",{children:t("groups.saveProfileTarget")}),(0,e.jsx)("code",{"data-save-profile-target":!0,children:$||"-"}),(0,e.jsx)("small",{"data-save-profile-target-mode":!0,children:t(m==="overwrite"?"groups.saveProfileTargetOverwrite":"groups.saveProfileTargetNew")})]}),(0,e.jsx)("div",{className:`g-save-profile-summary ${k?"":"warn"}`,children:q}),(0,e.jsx)("div",{className:`g-save-profile-status ${J?.className??""}`,"data-save-profile-status":!0,children:J?.text??""}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",id:"g-save-profile-cancel",onClick:o.onClose,children:t("groups.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary",disabled:!k||U||m==="overwrite"&&!E,children:U?t("groups.saveProfileSaving"):D})]})]})]})}function et(o){let{member:t,tr:r}=o,n=(0,l.useRef)(null),[a,c]=(0,l.useState)(!!t.oncallChat),[s,p]=(0,l.useState)(t.oncallChat?.workingDir??""),[v,x]=(0,l.useState)(!1),[g,C]=(0,l.useState)(null);async function I(){C(null);let u=s.trim();if(a&&!u){C({text:r("groups.needWorkingDir"),className:"hint-warn-inline"});return}x(!0);try{let k=`/api/groups/${encodeURIComponent(o.chat.chatId)}/oncall/${encodeURIComponent(t.larkAppId)}`,m=a?await fetch(k,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({workingDir:u})}):await fetch(k,{method:"DELETE"}),S=await m.json().catch(()=>({}));if(m.ok&&S.ok){C({text:a?`\u2713 \u5DF2\u7ED1\u5B9A \u2192 ${S.resolvedPath??u}`:"\u2713 \u5DF2\u89E3\u7ED1",className:"hint-ok"});try{await o.onSaved()}catch{}}else C({text:`\u2717 ${S.error??m.status}`,className:"hint-warn-inline"})}catch(k){C({text:`\u2717 ${k?.message??k}`,className:"hint-warn-inline"})}finally{x(!1)}}return(0,e.jsxs)("div",{className:"oncall-row","data-bot":t.larkAppId,children:[(0,e.jsxs)("label",{className:"checkbox-row",children:[(0,e.jsx)("input",{type:"checkbox","data-action":"toggle",checked:a,onChange:u=>{c(u.currentTarget.checked),u.currentTarget.checked&&window.setTimeout(()=>n.current?.focus(),0)}}),(0,e.jsx)("strong",{children:t.botName??t.larkAppId}),(0,e.jsxs)("small",{children:["(",t.larkAppId,")"]})]}),(0,e.jsxs)("div",{className:"oncall-row-body",children:[(0,e.jsx)("input",{ref:n,type:"text","data-input":"workingDir",placeholder:"e.g. /root/iserver/botmux",value:s,disabled:!a,onChange:u=>p(u.currentTarget.value)}),(0,e.jsx)("button",{type:"button","data-action":"save",disabled:v,onClick:()=>{I()},children:r("groups.save")}),(0,e.jsx)("span",{className:`oncall-status ${g?.className??""}`,"data-status":!0,children:g?.text??""})]})]})}function tt(o){let{chat:t,tr:r}=o,n=(t.memberBots??[]).filter(g=>g.inChat),a=typeof t.ownerId=="string"?t.ownerId:"",[c,s]=(0,l.useState)(()=>new Set);function p(g,C){s(I=>{let u=new Set(I);return C?u.add(g):u.delete(g),u})}async function v(){let g=[...c];if(g.length===0){alert("\u81F3\u5C11\u9009\u4E00\u4E2A\u673A\u5668\u4EBA");return}if(confirm(`\u786E\u5B9A\u8BA9 ${g.length} \u4E2A\u673A\u5668\u4EBA\u9000\u51FA\u7FA4\u804A\uFF1F\u8BE5 bot \u5728\u6B64\u7FA4\u7684\u4F1A\u8BDD\u4F1A\u4E00\u5E76\u5173\u95ED\u3002`))try{let I=await(await fetch(`/api/groups/${encodeURIComponent(t.chatId)}/leave`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({larkAppIds:g})})).json(),u=(I.result??[]).map(k=>{if(!k.ok)return`${k.larkAppId}: \u5931\u8D25 (${k.error??"unknown"})`;let m=k.closedSessions??[],S=m.filter(N=>!N.ok).length,T=m.length-S,A=m.filter(N=>N.ok&&N.residual).map(N=>oe(N.residual)),E=m.length===0?"":`\uFF08\u5173\u95ED ${T} \u4E2A\u4F1A\u8BDD${S?`\uFF0C${S} \u4E2A\u5931\u8D25`:""}${A.length?`\uFF0C${A.length} \u4E2A\u6709\u6B8B\u7559\u9700\u4EBA\u5DE5\u6E05\u7406\uFF1A${A.join(", ")}`:""}\uFF09`;return`${k.larkAppId}: OK${E}`}).join(`
|
|
2
|
+
`);alert(u||`Unexpected: ${JSON.stringify(I)}`),await o.onReloadGroups({force:!0})}catch(C){alert("Network error: "+C)}finally{o.onClose()}}async function x(){if(n.length===0||!confirm(`\u786E\u5B9A\u89E3\u6563\u7FA4\u804A\u300C${t.name??t.chatId}\u300D\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\uFF0C\u672C\u7FA4\u6240\u6709\u673A\u5668\u4EBA\u4F1A\u8BDD\u4E5F\u4F1A\u4E00\u5E76\u5173\u95ED\u3002`))return;let g=[...n].sort((I,u)=>(u.larkAppId===a?1:0)-(I.larkAppId===a?1:0)),C=[];for(let I of g)try{let u=await fetch(`/api/groups/${encodeURIComponent(t.chatId)}/disband`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({larkAppId:I.larkAppId})}),k=await u.json();if(k.ok){let m=k.closedSessions??[],S=m.filter(N=>!N.ok).length,T=m.length-S,A=m.filter(N=>N.ok&&N.residual).map(N=>oe(N.residual)),E=m.length===0?"":`
|
|
3
|
+
\u5173\u95ED\u4E86 ${T} \u4E2A\u4F1A\u8BDD${S?`\uFF0C${S} \u4E2A\u4F1A\u8BDD\u5173\u95ED\u5931\u8D25`:""}${A.length?`
|
|
4
|
+
\u26A0\uFE0F ${A.length} \u4E2A\u6709\u6B8B\u7559\u9700\u4EBA\u5DE5\u6E05\u7406\uFF1A${A.join(", ")}`:""}\u3002`;alert(`\u5DF2\u89E3\u6563\uFF08\u7531 ${I.botName??I.larkAppId} \u6267\u884C\uFF09${E}`),await o.onReloadGroups({force:!0}),o.onClose();return}C.push(`${I.botName??I.larkAppId}: ${k.error??u.status}`)}catch(u){C.push(`${I.botName??I.larkAppId}: ${u}`)}alert(`\u6240\u6709\u5728\u7FA4\u673A\u5668\u4EBA\u5747\u65E0\u6CD5\u89E3\u6563\uFF1A
|
|
5
|
+
${C.join(`
|
|
6
|
+
`)}
|
|
7
|
+
|
|
8
|
+
\u5EFA\u8BAE\u6539\u7528\u300C\u9000\u51FA\u7FA4\u804A\u300D\u3002`)}return(0,e.jsxs)("article",{className:"g-manage-dialog",children:[(0,e.jsx)("header",{children:(0,e.jsx)("h3",{children:r("groups.manageTitle",{name:t.name??t.chatId})})}),(0,e.jsxs)("div",{className:"g-manage-meta",children:[(0,e.jsxs)("span",{children:[(0,e.jsx)("b",{children:"chatId"}),(0,e.jsx)("code",{children:t.chatId})]}),(0,e.jsxs)("span",{children:[(0,e.jsx)("b",{children:r("groups.owner")}),(0,e.jsx)("code",{children:t.ownerId??r("common.unknown")})]})]}),(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:r("groups.oncall")}),(0,e.jsx)("p",{children:(0,e.jsx)("small",{children:r("groups.oncallHelp")})}),n.length===0?(0,e.jsx)("p",{className:"empty",children:"\u6CA1\u6709\u673A\u5668\u4EBA\u5728\u7FA4\u91CC"}):n.map(g=>(0,e.jsx)(et,{chat:t,member:g,tr:r,onSaved:async()=>{await o.onReloadGroups({force:!0})}},g.larkAppId))]}),(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:r("groups.leaveTitle")}),n.length===0?(0,e.jsx)("p",{className:"empty",children:"\u6CA1\u6709\u673A\u5668\u4EBA\u5728\u7FA4\u91CC"}):(0,e.jsx)("div",{className:"g-leave-picker",children:n.map(g=>(0,e.jsxs)("label",{className:"checkbox-row",children:[(0,e.jsx)("input",{type:"checkbox",name:"leave-bot",value:g.larkAppId,checked:c.has(g.larkAppId),onChange:C=>p(g.larkAppId,C.currentTarget.checked)}),(0,e.jsxs)("span",{className:"checkbox-row-main",children:[(0,e.jsx)("strong",{children:g.botName??g.larkAppId}),g.larkAppId===a?(0,e.jsx)("small",{children:"\xB7 \u7FA4\u4E3B"}):null]})]},g.larkAppId))})]}),(0,e.jsx)("p",{className:"g-manage-danger-hint",children:r("groups.dangerHint")}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",onClick:o.onClose,children:r("sessions.dismiss")}),(0,e.jsx)("button",{id:"g-leave-btn",type:"button",disabled:n.length===0,onClick:()=>{v()},children:r("groups.leaveSelected")}),(0,e.jsx)("button",{id:"g-disband-btn",type:"button",className:"contrast",disabled:n.length===0,onClick:()=>{x()},children:r("groups.disband")})]})]})}function ot(o){let t=(0,l.useRef)(null);(0,l.useEffect)(()=>{let a=t.current;if(!a)return;let c=()=>o.onClose();return a.addEventListener("close",c),()=>a.removeEventListener("close",c)},[o.onClose]),(0,l.useEffect)(()=>{let a=t.current;a&&(o.dialog&&!a.open&&a.showModal(),!o.dialog&&a.open&&a.close())},[o.dialog]);let r=null;o.dialog?.type==="create"?r=(0,e.jsx)(Ze,{bots:o.snapshot.bots,roleProfiles:o.dialog.roleProfiles,tr:o.tr,onClose:o.onClose,onCreated:o.onCreated,setTimer:o.setTimer}):o.dialog?.type==="add-bots"?r=(0,e.jsx)(Ye,{chat:o.dialog.chat,bots:o.snapshot.bots,tr:o.tr,onClose:o.onClose,onReloadGroups:o.onReloadGroups}):o.dialog?.type==="save-profile"?r=(0,e.jsx)(Qe,{chat:o.dialog.chat,suggestedProfileId:o.dialog.suggestedProfileId,tr:o.tr,onClose:o.onClose,onRefreshRoleContext:o.onRefreshRoleContext,setTimer:o.setTimer}):o.dialog?.type==="manage"&&(r=(0,e.jsx)(tt,{chat:o.dialog.chat,tr:o.tr,onClose:o.onClose,onReloadGroups:o.onReloadGroups}));let n=o.dialog?.type==="create"?"groups-create-modal":void 0;return(0,e.jsx)("dialog",{id:"g-drawer",className:n,ref:t,onMouseDown:a=>{a.target===a.currentTarget&&a.currentTarget.close()},children:r})}function rt(){let o=de(),t=(0,l.useRef)(!1),r=(0,l.useRef)(z),n=(0,l.useRef)(new Set),a=(0,l.useRef)(new Map),c=(0,l.useRef)(0),[s,p]=(0,l.useState)(z),[v,x]=(0,l.useState)(()=>Oe()),[g,C]=(0,l.useState)({q:"",missingOnly:!1}),[I,u]=(0,l.useState)(!0),[k,m]=(0,l.useState)(null),[S,T]=(0,l.useState)(!1),[A,E]=(0,l.useState)(null),[N,U]=(0,l.useState)(1),M=(0,l.useCallback)(i=>{p(h=>{let y=typeof i=="function"?i(h):i;return r.current=y,y})},[]),J=(0,l.useCallback)((i,h)=>{let y=window.setTimeout(()=>{n.current.delete(y),t.current&&i()},h);return n.current.add(y),y},[]),B=(0,l.useCallback)(i=>new Promise(h=>{let y=window.setTimeout(()=>{n.current.delete(y),a.current.delete(y),h()},i);n.current.add(y),a.current.set(y,h)}),[]),$=(0,l.useCallback)(async i=>{let h=++c.current;try{let y=await xe(i??r.current);t.current&&h===c.current&&x(y)}catch{t.current&&h===c.current&&x({...Oe(),loaded:!0})}},[]),D=(0,l.useCallback)(async i=>{let h=await K({force:i?.force});return t.current&&(M(h),m(null),$(h)),h},[$,M]),q=(0,l.useCallback)(async(i,h)=>{let y=[600,1200,1200,1200,1200,1200];for(let R of y){if(await B(R),!t.current)return;let L;try{L=await K({force:!0})}catch{continue}if(!t.current)return;let W=(L.chats??[]).find(V=>V.chatId===i);if(W&&Ee(W,h)){M(L),$(L);return}}},[B,$,M]);(0,l.useEffect)(()=>(t.current=!0,(async()=>{u(!0);try{await D()}catch(i){t.current&&(M(z),m(i instanceof Error?i.message:String(i)),$(z))}finally{t.current&&u(!1)}})(),()=>{t.current=!1,c.current+=1;for(let i of n.current)window.clearTimeout(i);n.current.clear();for(let i of a.current.values())i();a.current.clear()}),[D]);let F=(0,l.useMemo)(()=>Te(s.chats,g),[s.chats,g]),O=(0,l.useMemo)(()=>F.filter(i=>!i.sessionGroup),[F]),d=(0,l.useMemo)(()=>F.filter(i=>i.sessionGroup),[F]),w=(0,l.useMemo)(()=>Ge(O,N),[O,N]);(0,l.useEffect)(()=>{N!==w.page&&U(w.page)},[N,w.page]);async function j(){T(!0);try{await D({force:!0})}catch(i){m(i instanceof Error?i.message:String(i))}finally{t.current&&T(!1)}}async function H(){if(r.current.bots.length===0){alert(o("groups.noBotsOnline"));return}let i=[];try{i=await X()}catch{}t.current&&E({type:"create",roleProfiles:i})}function _(i,h,y){let R=String(i.chatId),L=Array.isArray(i.invalidBotIds)?i.invalidBotIds:[],W=h.filter(je=>!L.includes(je)),V=new Set(W);typeof i.creator=="string"&&i.creator&&V.add(i.creator);let ie=Me(r.current,R,y||R,W,i.creator);M(ie),$(ie),q(R,V).catch(()=>{})}let f=(0,l.useCallback)(i=>{let h=new Set((i.memberBots??[]).filter(R=>R.inChat).map(R=>R.larkAppId));if(!r.current.bots.filter(R=>!h.has(R.larkAppId)).length){alert("All configured bots are already in this chat.");return}E({type:"add-bots",chat:i})},[]),b=(0,l.useCallback)(i=>{let h=ae(i.name??""),y=h==="profile"?ae(i.chatId):h;E({type:"save-profile",chat:i,suggestedProfileId:y})},[]),P=(0,l.useCallback)(i=>{E({type:"manage",chat:i})},[]);function G(i){let h=document.getElementById("g-body");h&&(h.scrollTop=0),U(i)}return(0,e.jsxs)("section",{className:"page groups-page",children:[(0,e.jsxs)("div",{className:"page-heading",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"eyebrow",children:o("nav.groups")}),(0,e.jsx)("h1",{children:o("groups.title")})]}),(0,e.jsx)("div",{className:"page-heading-actions",children:(0,e.jsx)(ee,{id:"g-create",className:"page-primary-action",onClick:()=>{H()},children:o("groups.create")})})]}),(0,e.jsxs)("form",{id:"g-filters",className:"filters dashboard-toolbar groups-toolbar",onSubmit:i=>i.preventDefault(),children:[(0,e.jsx)("input",{type:"search",name:"q",placeholder:o("groups.search"),value:g.q,onChange:i=>{let h=i.currentTarget.value;U(1),C(y=>({...y,q:h}))}}),(0,e.jsxs)("label",{className:"filter-toggle",children:[(0,e.jsx)("input",{type:"checkbox",name:"missing",checked:g.missingOnly,onChange:i=>{let h=i.currentTarget.checked;U(1),C(y=>({...y,missingOnly:h}))}}),(0,e.jsx)("span",{className:"filter-toggle-label",children:o("groups.missingOnly")}),(0,e.jsx)("span",{className:"filter-toggle-switch","aria-hidden":"true"})]}),(0,e.jsx)("span",{className:"groups-toolbar-spacer","aria-hidden":"true"}),(0,e.jsxs)("span",{className:"groups-toolbar-count",children:[o("groups.matrixTitle")," ",I?"-/-":`${O.length}/${s.chats.length}`]}),(0,e.jsx)(fe,{id:"g-refresh",label:o("groups.refresh"),busy:S,disabled:S,onClick:()=>{j()}})]}),k?(0,e.jsxs)("p",{className:"hint-warn",children:["\u52A0\u8F7D\u7FA4\u7EC4\u5931\u8D25\uFF1A",k]}):null,(0,e.jsx)("section",{className:"overview-block groups-matrix-section",children:I?(0,e.jsx)("div",{id:"g-loading",children:(0,e.jsx)(Q,{label:o("common.loading")})}):(0,e.jsxs)("div",{className:"groups-list-wrap",id:"g-table-wrap",children:[O.length===0?(0,e.jsx)("div",{className:"empty groups-list-empty",id:"g-body",children:o("groups.empty")}):(0,e.jsx)(te,{id:"g-body",className:"groups-list",children:w.rows.map(i=>(0,e.jsx)(De,{chat:i,bots:s.bots,roleContext:v,tr:o,onAddBots:f,onSaveProfile:b,onManage:P},i.chatId))}),O.length>0&&w.totalPages>1?(0,e.jsxs)("nav",{className:"groups-pagination","aria-label":o("groups.paginationLabel"),children:[(0,e.jsx)("span",{className:"groups-pagination-status","aria-live":"polite",children:o("groups.pageStatus",{page:w.page,pages:w.totalPages,from:w.from,to:w.to,total:w.total})}),(0,e.jsxs)("div",{className:"groups-pagination-actions",children:[(0,e.jsx)("button",{type:"button",disabled:w.page<=1,onClick:()=>G(w.page-1),children:o("groups.prevPage")}),(0,e.jsx)("button",{type:"button",disabled:w.page>=w.totalPages,onClick:()=>G(w.page+1),children:o("groups.nextPage")})]})]}):null]})}),!I&&d.length>0?(0,e.jsxs)("details",{className:"overview-block groups-session-section",open:!!g.q,"data-session-groups":!0,children:[(0,e.jsxs)("summary",{style:{cursor:"pointer",padding:"10px 4px",fontWeight:600,opacity:.85},children:["\u{1F916} ",o("groups.sessionSection"),"\uFF08",d.length,"\uFF09",(0,e.jsx)("span",{style:{fontWeight:400,opacity:.7,marginLeft:8},children:o("groups.sessionSectionHint")})]}),(0,e.jsx)(te,{id:"g-session-body",className:"groups-list",children:d.map(i=>(0,e.jsx)(De,{chat:i,bots:s.bots,roleContext:v,tr:o,onAddBots:f,onSaveProfile:b,onManage:P},i.chatId))})]}):null,(0,e.jsx)(ot,{dialog:A,snapshot:s,tr:o,onClose:()=>E(null),onCreated:_,onReloadGroups:D,onRefreshRoleContext:()=>$(),setTimer:J})]})}function bt(o){return ue(o,(0,e.jsx)(rt,{}))}export{Ye as AddBotsDialog,bt as renderGroupsPage};
|