cli-jaw 2.17.38 → 2.17.39
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.md +40 -1
- package/dist/bin/commands/chat.js +19 -2
- package/dist/bin/commands/chat.js.map +1 -1
- package/dist/bin/commands/dashboard.js +27 -10
- package/dist/bin/commands/dashboard.js.map +1 -1
- package/dist/bin/commands/init.js +10 -1
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/tui/activity-answer-read.js +122 -0
- package/dist/bin/commands/tui/activity-answer-read.js.map +1 -0
- package/dist/bin/commands/tui/activity-fallback.js +40 -0
- package/dist/bin/commands/tui/activity-fallback.js.map +1 -0
- package/dist/bin/commands/tui/activity-handler.js +273 -0
- package/dist/bin/commands/tui/activity-handler.js.map +1 -0
- package/dist/bin/commands/tui/activity-history.js +245 -0
- package/dist/bin/commands/tui/activity-history.js.map +1 -0
- package/dist/bin/commands/tui/activity-http.js +88 -0
- package/dist/bin/commands/tui/activity-http.js.map +1 -0
- package/dist/bin/commands/tui/activity-replay.js +250 -0
- package/dist/bin/commands/tui/activity-replay.js.map +1 -0
- package/dist/bin/commands/tui/api.js +48 -1
- package/dist/bin/commands/tui/api.js.map +1 -1
- package/dist/bin/commands/tui/channel.js +11 -1
- package/dist/bin/commands/tui/channel.js.map +1 -1
- package/dist/bin/commands/tui/fullscreen-mode.js +78 -12
- package/dist/bin/commands/tui/fullscreen-mode.js.map +1 -1
- package/dist/bin/commands/tui/input-handler.js +7 -0
- package/dist/bin/commands/tui/input-handler.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +6 -3
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/renderer.js +27 -15
- package/dist/bin/commands/tui/renderer.js.map +1 -1
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/commands/tui/ws-handler.js +158 -13
- package/dist/bin/commands/tui/ws-handler.js.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/src/agent/claude-runtime-pool.js +386 -0
- package/dist/src/agent/claude-runtime-pool.js.map +1 -0
- package/dist/src/agent/claude-runtime-run.js +366 -0
- package/dist/src/agent/claude-runtime-run.js.map +1 -0
- package/dist/src/agent/codex-app-events.js +3 -1
- package/dist/src/agent/codex-app-events.js.map +1 -1
- package/dist/src/agent/events/claude.js +11 -9
- package/dist/src/agent/events/claude.js.map +1 -1
- package/dist/src/agent/events/codex.js +2 -0
- package/dist/src/agent/events/codex.js.map +1 -1
- package/dist/src/agent/events/cursor.js +49 -21
- package/dist/src/agent/events/cursor.js.map +1 -1
- package/dist/src/agent/events/grok.js +33 -5
- package/dist/src/agent/events/grok.js.map +1 -1
- package/dist/src/agent/events/helpers.js +9 -0
- package/dist/src/agent/events/helpers.js.map +1 -1
- package/dist/src/agent/events/index.js +13 -1
- package/dist/src/agent/events/index.js.map +1 -1
- package/dist/src/agent/events/opencode.js +65 -1
- package/dist/src/agent/events/opencode.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +185 -62
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/merge-tool-log.js +77 -0
- package/dist/src/agent/merge-tool-log.js.map +1 -0
- package/dist/src/agent/native-runtime-run.js +235 -0
- package/dist/src/agent/native-runtime-run.js.map +1 -0
- package/dist/src/agent/pi-runtime.js +468 -101
- package/dist/src/agent/pi-runtime.js.map +1 -1
- package/dist/src/agent/prompt-context.js +88 -2
- package/dist/src/agent/prompt-context.js.map +1 -1
- package/dist/src/agent/runtime/acp/callbacks.js +223 -0
- package/dist/src/agent/runtime/acp/callbacks.js.map +1 -0
- package/dist/src/agent/runtime/acp/config.js +182 -0
- package/dist/src/agent/runtime/acp/config.js.map +1 -0
- package/dist/src/agent/runtime/acp/connection.js +254 -0
- package/dist/src/agent/runtime/acp/connection.js.map +1 -0
- package/dist/src/agent/runtime/acp/content.js +63 -0
- package/dist/src/agent/runtime/acp/content.js.map +1 -0
- package/dist/src/agent/runtime/acp/cursor-session.js +92 -0
- package/dist/src/agent/runtime/acp/cursor-session.js.map +1 -0
- package/dist/src/agent/runtime/acp/grok-control.js +3 -0
- package/dist/src/agent/runtime/acp/grok-control.js.map +1 -0
- package/dist/src/agent/runtime/acp/grok-events.js +28 -0
- package/dist/src/agent/runtime/acp/grok-events.js.map +1 -0
- package/dist/src/agent/runtime/acp/grok-options.js +63 -0
- package/dist/src/agent/runtime/acp/grok-options.js.map +1 -0
- package/dist/src/agent/runtime/acp/grok-session.js +118 -0
- package/dist/src/agent/runtime/acp/grok-session.js.map +1 -0
- package/dist/src/agent/runtime/acp/notification-queue.js +107 -0
- package/dist/src/agent/runtime/acp/notification-queue.js.map +1 -0
- package/dist/src/agent/runtime/acp/permissions.js +133 -0
- package/dist/src/agent/runtime/acp/permissions.js.map +1 -0
- package/dist/src/agent/runtime/acp/projection.js +162 -0
- package/dist/src/agent/runtime/acp/projection.js.map +1 -0
- package/dist/src/agent/runtime/acp/replacement-turn.js +187 -0
- package/dist/src/agent/runtime/acp/replacement-turn.js.map +1 -0
- package/dist/src/agent/runtime/acp/replacement.js +159 -0
- package/dist/src/agent/runtime/acp/replacement.js.map +1 -0
- package/dist/src/agent/runtime/acp/runtime-session.js +245 -0
- package/dist/src/agent/runtime/acp/runtime-session.js.map +1 -0
- package/dist/src/agent/runtime/acp/session.js +426 -0
- package/dist/src/agent/runtime/acp/session.js.map +1 -0
- package/dist/src/agent/runtime/acp/wire.js +46 -0
- package/dist/src/agent/runtime/acp/wire.js.map +1 -0
- package/dist/src/agent/runtime/claude-run-controls.js +41 -0
- package/dist/src/agent/runtime/claude-run-controls.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-children.js +405 -0
- package/dist/src/agent/runtime/claude-sdk-children.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-close.js +43 -0
- package/dist/src/agent/runtime/claude-sdk-close.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-content.js +42 -0
- package/dist/src/agent/runtime/claude-sdk-content.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-events.js +337 -0
- package/dist/src/agent/runtime/claude-sdk-events.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-hooks.js +32 -0
- package/dist/src/agent/runtime/claude-sdk-hooks.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-input.js +58 -0
- package/dist/src/agent/runtime/claude-sdk-input.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-loader.js +21 -0
- package/dist/src/agent/runtime/claude-sdk-loader.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-messages.js +133 -0
- package/dist/src/agent/runtime/claude-sdk-messages.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-metadata.js +40 -0
- package/dist/src/agent/runtime/claude-sdk-metadata.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-options.js +70 -0
- package/dist/src/agent/runtime/claude-sdk-options.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-owners.js +113 -0
- package/dist/src/agent/runtime/claude-sdk-owners.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-permissions.js +283 -0
- package/dist/src/agent/runtime/claude-sdk-permissions.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-process.js +72 -0
- package/dist/src/agent/runtime/claude-sdk-process.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-roots.js +103 -0
- package/dist/src/agent/runtime/claude-sdk-roots.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-session.js +518 -0
- package/dist/src/agent/runtime/claude-sdk-session.js.map +1 -0
- package/dist/src/agent/runtime/codex-projection.js +126 -0
- package/dist/src/agent/runtime/codex-projection.js.map +1 -0
- package/dist/src/agent/runtime/events.js +39 -0
- package/dist/src/agent/runtime/events.js.map +1 -0
- package/dist/src/agent/runtime/grok-main.js +7 -0
- package/dist/src/agent/runtime/grok-main.js.map +1 -0
- package/dist/src/agent/runtime/outcome.js +28 -0
- package/dist/src/agent/runtime/outcome.js.map +1 -0
- package/dist/src/agent/runtime/pi-projection.js +97 -0
- package/dist/src/agent/runtime/pi-projection.js.map +1 -0
- package/dist/src/agent/runtime/pi-raw-trace.js +87 -0
- package/dist/src/agent/runtime/pi-raw-trace.js.map +1 -0
- package/dist/src/agent/runtime/pi-turn.js +159 -0
- package/dist/src/agent/runtime/pi-turn.js.map +1 -0
- package/dist/src/agent/runtime/print-activity.js +47 -0
- package/dist/src/agent/runtime/print-activity.js.map +1 -0
- package/dist/src/agent/runtime/print-projection.js +51 -0
- package/dist/src/agent/runtime/print-projection.js.map +1 -0
- package/dist/src/agent/runtime/projection.js +283 -0
- package/dist/src/agent/runtime/projection.js.map +1 -0
- package/dist/src/agent/runtime/replace-turn.js +36 -0
- package/dist/src/agent/runtime/replace-turn.js.map +1 -0
- package/dist/src/agent/runtime/requests.js +207 -0
- package/dist/src/agent/runtime/requests.js.map +1 -0
- package/dist/src/agent/runtime/selection.js +31 -0
- package/dist/src/agent/runtime/selection.js.map +1 -0
- package/dist/src/agent/runtime/session.js +2 -0
- package/dist/src/agent/runtime/session.js.map +1 -0
- package/dist/src/agent/runtime-pool-contract.js +2 -0
- package/dist/src/agent/runtime-pool-contract.js.map +1 -0
- package/dist/src/agent/runtime-pool.js +317 -9
- package/dist/src/agent/runtime-pool.js.map +1 -1
- package/dist/src/agent/session-persistence.js +10 -2
- package/dist/src/agent/session-persistence.js.map +1 -1
- package/dist/src/agent/spawn.js +990 -143
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/agent/steer-input-guard.js +33 -0
- package/dist/src/agent/steer-input-guard.js.map +1 -0
- package/dist/src/cli/acp-client.js +20 -21
- package/dist/src/cli/acp-client.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +21 -12
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/registry.js +2 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/tui/activity-answer.js +97 -0
- package/dist/src/cli/tui/activity-answer.js.map +1 -0
- package/dist/src/cli/tui/activity-history.js +364 -0
- package/dist/src/cli/tui/activity-history.js.map +1 -0
- package/dist/src/cli/tui/activity-linear.js +29 -0
- package/dist/src/cli/tui/activity-linear.js.map +1 -0
- package/dist/src/cli/tui/activity-terminal-text.js +111 -0
- package/dist/src/cli/tui/activity-terminal-text.js.map +1 -0
- package/dist/src/cli/tui/activity.js +95 -0
- package/dist/src/cli/tui/activity.js.map +1 -0
- package/dist/src/cli/tui/cell-width.js +41 -0
- package/dist/src/cli/tui/cell-width.js.map +1 -0
- package/dist/src/cli/tui/events.js +15 -0
- package/dist/src/cli/tui/events.js.map +1 -1
- package/dist/src/cli/tui/keymap.js +2 -0
- package/dist/src/cli/tui/keymap.js.map +1 -1
- package/dist/src/cli/tui/render/composer-box.js +12 -14
- package/dist/src/cli/tui/render/composer-box.js.map +1 -1
- package/dist/src/cli/tui/render/viewport.js +9 -5
- package/dist/src/cli/tui/render/viewport.js.map +1 -1
- package/dist/src/cli/tui/renderers.js +119 -139
- package/dist/src/cli/tui/renderers.js.map +1 -1
- package/dist/src/cli/tui/settings-screen.js +11 -0
- package/dist/src/cli/tui/settings-screen.js.map +1 -1
- package/dist/src/cli/tui/store.js +3 -0
- package/dist/src/cli/tui/store.js.map +1 -1
- package/dist/src/cli/tui/transcript.js +68 -0
- package/dist/src/cli/tui/transcript.js.map +1 -1
- package/dist/src/core/bus.js +8 -0
- package/dist/src/core/bus.js.map +1 -1
- package/dist/src/core/chat-sessions.js +1 -0
- package/dist/src/core/chat-sessions.js.map +1 -1
- package/dist/src/core/compact.js +10 -3
- package/dist/src/core/compact.js.map +1 -1
- package/dist/src/core/config.js +21 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +26 -0
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/runtime-settings.js +44 -3
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/session-ops.js +40 -9
- package/dist/src/core/session-ops.js.map +1 -1
- package/dist/src/core/settings-merge.js +31 -1
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/core/settings-watch.js +8 -1
- package/dist/src/core/settings-watch.js.map +1 -1
- package/dist/src/discord/bot.js +28 -9
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/send-only-client.js +4 -0
- package/dist/src/discord/send-only-client.js.map +1 -1
- package/dist/src/manager/routes/telegram-hub.js +2 -1
- package/dist/src/manager/routes/telegram-hub.js.map +1 -1
- package/dist/src/manager/scan.js +12 -0
- package/dist/src/manager/scan.js.map +1 -1
- package/dist/src/manager/server.js +89 -13
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/manager/telegram-hub/hub-bot.js +9 -3
- package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
- package/dist/src/orchestrator/collect.js +80 -6
- package/dist/src/orchestrator/collect.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +13 -10
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +68 -29
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/request-registry.js +2 -0
- package/dist/src/orchestrator/request-registry.js.map +1 -1
- package/dist/src/orchestrator/scope.js +15 -0
- package/dist/src/orchestrator/scope.js.map +1 -1
- package/dist/src/routes/memory.js +2 -2
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/messages.js +51 -18
- package/dist/src/routes/messages.js.map +1 -1
- package/dist/src/routes/orchestrate.js +29 -17
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/runtime-request-notices.js +23 -0
- package/dist/src/routes/runtime-request-notices.js.map +1 -0
- package/dist/src/routes/runtime-requests.js +43 -0
- package/dist/src/routes/runtime-requests.js.map +1 -0
- package/dist/src/routes/settings.js +7 -1
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/traces.js +93 -6
- package/dist/src/routes/traces.js.map +1 -1
- package/dist/src/shared/activity-read.js +158 -0
- package/dist/src/shared/activity-read.js.map +1 -0
- package/dist/src/shared/activity-replay.js +279 -0
- package/dist/src/shared/activity-replay.js.map +1 -0
- package/dist/src/shared/activity-state.js +144 -0
- package/dist/src/shared/activity-state.js.map +1 -0
- package/dist/src/shared/isolated-qa.js +132 -0
- package/dist/src/shared/isolated-qa.js.map +1 -0
- package/dist/src/shared/presentation.js +21 -0
- package/dist/src/shared/presentation.js.map +1 -0
- package/dist/src/shared/runtime-contract.js +2 -0
- package/dist/src/shared/runtime-contract.js.map +1 -0
- package/dist/src/shared/runtime-event-parse.js +99 -0
- package/dist/src/shared/runtime-event-parse.js.map +1 -0
- package/dist/src/shared/runtime-request-notice.js +9 -0
- package/dist/src/shared/runtime-request-notice.js.map +1 -0
- package/dist/src/shared/tool-log-sanitize.js +11 -5
- package/dist/src/shared/tool-log-sanitize.js.map +1 -1
- package/dist/src/slack/bot.js +20 -7
- package/dist/src/slack/bot.js.map +1 -1
- package/dist/src/slack/send-only-client.js +3 -0
- package/dist/src/slack/send-only-client.js.map +1 -1
- package/dist/src/telegram/bot.js +27 -5
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/rich-message.js +47 -1
- package/dist/src/telegram/rich-message.js.map +1 -1
- package/dist/src/trace/activity-control.js +87 -0
- package/dist/src/trace/activity-control.js.map +1 -0
- package/dist/src/trace/activity-journal.js +155 -0
- package/dist/src/trace/activity-journal.js.map +1 -0
- package/dist/src/trace/activity-retention.js +55 -0
- package/dist/src/trace/activity-retention.js.map +1 -0
- package/dist/src/trace/runtime-body-codec.js +162 -0
- package/dist/src/trace/runtime-body-codec.js.map +1 -0
- package/dist/src/trace/store.js +65 -22
- package/dist/src/trace/store.js.map +1 -1
- package/package.json +8 -5
- package/public/css/activity.css +211 -0
- package/public/css/chat-search.css +13 -1
- package/public/css/chat.css +10 -0
- package/public/css/native-requests.css +55 -0
- package/public/css/trace-drawer.css +15 -8
- package/public/dist/assets/AdvancedExport-q4DnVxpT.js +1 -0
- package/public/dist/assets/Agent-CI1AfYOA.js +1 -0
- package/public/dist/assets/Browser-D9kwPJfN.js +1 -0
- package/public/dist/assets/BrowserPanel-CVZyvbth.js +3 -0
- package/public/dist/assets/{ChannelEnablementControl-B9KiYDZZ.js → ChannelEnablementControl-BkxeZonM.js} +1 -1
- package/public/dist/assets/ChannelsDiscord-CulKFTiX.js +1 -0
- package/public/dist/assets/ChannelsSlack-D09H8GKC.js +1 -0
- package/public/dist/assets/ChannelsTelegram-yA_NMLfM.js +1 -0
- package/public/dist/assets/CodeCanvas-DUaLWPBe.js +3 -0
- package/public/dist/assets/{DashboardEmbeddingSection-CIOwsVB5.js → DashboardEmbeddingSection-R9vUu9X2.js} +1 -1
- package/public/dist/assets/{DashboardMeta-D6nJsY8n.js → DashboardMeta-BKutQ9Ps.js} +1 -1
- package/public/dist/assets/DesignPanel-CE5jvzt4.js +2 -0
- package/public/dist/assets/{DiffPanel-ZaDoV7qS.js → DiffPanel-D9Cch5FG.js} +2 -2
- package/public/dist/assets/Display-BPYZ295k.js +1 -0
- package/public/dist/assets/DocPanel-DvtFw8AP.js +1 -0
- package/public/dist/assets/{Employees-CR41RcWo.js → Employees-bxErTlcA.js} +1 -1
- package/public/dist/assets/FolderPanel-u2YeiFFr.js +3 -0
- package/public/dist/assets/HealthBadge-CDPKdSXc.js +1 -0
- package/public/dist/assets/{Heartbeat-CD1R95Kv.js → Heartbeat-BCt4mFWz.js} +1 -1
- package/public/dist/assets/{InlineWarn-B3bJfG-Z.js → InlineWarn-DakL-ThS.js} +1 -1
- package/public/dist/assets/MarkdownRenderer-Cc3DeHvm.js +1 -0
- package/public/dist/assets/MarkdownRenderer-DzN66XVb.js +15 -0
- package/public/dist/assets/{Mcp-DSIEQZfH.js → Mcp-Cp1ffHWt.js} +2 -2
- package/public/dist/assets/{Memory-CpZIdE1o.js → Memory-Rq4fHjZv.js} +1 -1
- package/public/dist/assets/MilkdownWysiwygEditor-xObhviw7.js +160 -0
- package/public/dist/assets/ModelProvider-BNDxlWHC.js +1 -0
- package/public/dist/assets/Network-D_OYGb_C.js +1 -0
- package/public/dist/assets/NotesGraphWorkspace-DO9LtVGF.js +1 -0
- package/public/dist/assets/PanelLayoutProvider-BFxal5fZ.js +1 -0
- package/public/dist/assets/Permissions-DZ3ADB4i.js +1 -0
- package/public/dist/assets/Permissions-wj06yuy6.js +1 -0
- package/public/dist/assets/Profile-BQiNETCP.js +1 -0
- package/public/dist/assets/Prompts-DrMb2Kom.js +1 -0
- package/public/dist/assets/{SpeechKeys-CIq4c1iz.js → SpeechKeys-DqMhN-bl.js} +1 -1
- package/public/dist/assets/{TelegramHub-BrCeAZEf.js → TelegramHub-BSZ3xTdS.js} +1 -1
- package/public/dist/assets/TerminalPanel-Dwfd6Mhs.js +16 -0
- package/public/dist/assets/TerminalPanel-muGat3B1.css +1 -0
- package/public/dist/assets/{abnfDiagram-VCTEODGH-DOF68zXc.js → abnfDiagram-VCTEODGH-Bh3YzulT.js} +1 -1
- package/public/dist/assets/api-CLHen33W.js +1 -0
- package/public/dist/assets/api-CUtiCd2-.js +1 -0
- package/public/dist/assets/{apl-CYLd9I-9.js → apl-gfMMiTNf.js} +1 -1
- package/public/dist/assets/app-Dskscukr.css +1 -0
- package/public/dist/assets/app-ckFtOSgc.js +55 -0
- package/public/dist/assets/architecture-7GRP2DOG-Bp3iCG16.js +1 -0
- package/public/dist/assets/architectureDiagram-5GKGNRK7-COhidFYz.js +36 -0
- package/public/dist/assets/asciiarmor-C_eisQCp.js +1 -0
- package/public/dist/assets/{asn1-BlhHp3qx.js → asn1-DCl_8MCW.js} +1 -1
- package/public/dist/assets/{asterisk-Q0-IBwUt.js → asterisk-BEn0Cwpx.js} +1 -1
- package/public/dist/assets/{bgtask-badge-Cu1w7rg2.js → bgtask-badge-BmSGU6nQ.js} +1 -1
- package/public/dist/assets/bgtask-badge-DKpNEyny.js +1 -0
- package/public/dist/assets/{blockDiagram-OSKFZWR5-CRNzDJwU.js → blockDiagram-OSKFZWR5--OxgY2yr.js} +4 -4
- package/public/dist/assets/bounded-api-DdpT93LB.js +1 -0
- package/public/dist/assets/{bounded-set-DXkYOGnQ.js → bounded-set-BELTet1M.js} +1 -1
- package/public/dist/assets/c4Diagram-7LVT6UL2-C0DocmNb.js +38 -0
- package/public/dist/assets/channel-DO94Q0oH.js +1 -0
- package/public/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/public/dist/assets/{chunk-2ZTRR5NV-DF9qGbFc.js → chunk-2ZTRR5NV-BFt7Dm5O.js} +1 -1
- package/public/dist/assets/chunk-3NF5O7KM-FbOqoUnr.js +168 -0
- package/public/dist/assets/{chunk-3Z5EZCMW-D-umBnbE.js → chunk-3Z5EZCMW-udVqggne.js} +1 -1
- package/public/dist/assets/{chunk-4HAMMTFA-BzeIXjef.js → chunk-4HAMMTFA-UBUVs5kk.js} +2 -2
- package/public/dist/assets/{chunk-5V3GS4D5-DB7RMaO_.js → chunk-5V3GS4D5-ecLo0f1p.js} +1 -1
- package/public/dist/assets/{chunk-5VM5RSS4-CEUkek2W.js → chunk-5VM5RSS4-ZNzvKenW.js} +1 -1
- package/public/dist/assets/{chunk-6AZGARVD-qPN7cVYY.js → chunk-6AZGARVD-Cou1D2Ji.js} +1 -1
- package/public/dist/assets/{chunk-6EIED4P4-Bt6lS0r9.js → chunk-6EIED4P4-DeqPLKcQ.js} +1 -1
- package/public/dist/assets/{chunk-6K3QC6MW-BC_6hNGf.js → chunk-6K3QC6MW-Cn9odKk7.js} +1 -1
- package/public/dist/assets/{chunk-6TQVIW2G-NQr1OdRE.js → chunk-6TQVIW2G-IVBzI7O8.js} +1 -1
- package/public/dist/assets/{chunk-747NJXEK-CukETSeX.js → chunk-747NJXEK-Bxgd5wfl.js} +1 -1
- package/public/dist/assets/{chunk-75Z2AOVW-BLiFJXcr.js → chunk-75Z2AOVW-B1-fK2mN.js} +1 -1
- package/public/dist/assets/chunk-CLGD4ZFX-CotBINqH.js +1 -0
- package/public/dist/assets/{chunk-DU6HZSFF-CqT8wcBs.js → chunk-DU6HZSFF-vsD_dO7e.js} +3 -3
- package/public/dist/assets/{chunk-F27PBJKO-Ccrogyxp.js → chunk-F27PBJKO-C3O21Si2.js} +1 -1
- package/public/dist/assets/{chunk-FOHPRMQF--f9XSh-3.js → chunk-FOHPRMQF-CoA4358r.js} +35 -35
- package/public/dist/assets/{chunk-GMAD6QVW-BJLz4nC-.js → chunk-GMAD6QVW-BSVfzVP1.js} +2 -2
- package/public/dist/assets/chunk-GVQU2GXP-CsYaquup.js +1 -0
- package/public/dist/assets/chunk-H2I77ZZE-ytBKuGMS.js +1 -0
- package/public/dist/assets/{chunk-HLEWEB6X-BKWwzzZJ.js → chunk-HLEWEB6X-bHrMh27k.js} +3 -3
- package/public/dist/assets/{chunk-I5DQTOEV-B46sdKHC.js → chunk-I5DQTOEV-BYKVfZyL.js} +1 -1
- package/public/dist/assets/{chunk-ICYGCRZG-CSu4gXtC.js → chunk-ICYGCRZG-hvV-gq8M.js} +1 -1
- package/public/dist/assets/{chunk-IH6LHLGP-B2m3mWfU.js → chunk-IH6LHLGP-DTNFuJiP.js} +1 -1
- package/public/dist/assets/{chunk-JWPE2WC7-D-FE5omP.js → chunk-JWPE2WC7-DVXcaiue.js} +1 -1
- package/public/dist/assets/{chunk-KI3K4JFJ-Bfn6wbch.js → chunk-KI3K4JFJ-B4ZziqcX.js} +1 -1
- package/public/dist/assets/chunk-L3NEJ4N5-DxbPaCWe.js +1 -0
- package/public/dist/assets/{chunk-LNGE3PJU-Dyjtq0ks.js → chunk-LNGE3PJU-5-SxdO55.js} +7 -7
- package/public/dist/assets/chunk-LQGUR6SS-C7emO-i3.js +2 -0
- package/public/dist/assets/chunk-OSK3NFVY-D_HWIC0H.js +10 -0
- package/public/dist/assets/{chunk-OUJLGHUK-DkWSHliq.js → chunk-OUJLGHUK-CTWiVXba.js} +1 -1
- package/public/dist/assets/{chunk-P2QGCYS3-B-9ymCdr.js → chunk-P2QGCYS3-D9LpOEME.js} +1 -1
- package/public/dist/assets/{chunk-POPQ4Y6H-Df0_Odad.js → chunk-POPQ4Y6H-BzSgf7pO.js} +1 -1
- package/public/dist/assets/{chunk-PWAF6VOD-B1cuaLs-.js → chunk-PWAF6VOD-CqSJPGBE.js} +1 -1
- package/public/dist/assets/{chunk-SVP7TREG-DCh4QTp-.js → chunk-SVP7TREG-NOSK04BT.js} +1 -1
- package/public/dist/assets/{chunk-UY3FDG6J--uyeDRt4.js → chunk-UY3FDG6J-BVPsKpVN.js} +1 -1
- package/public/dist/assets/{chunk-X3CZISLH-C1s9nTVF.js → chunk-X3CZISLH-ChyOdCnY.js} +1 -1
- package/public/dist/assets/{chunk-XHIXRSVI-CQtpMKYq.js → chunk-XHIXRSVI-CQipzMEr.js} +1 -1
- package/public/dist/assets/chunk-XXDRQBXY-Uq2wLB4L.js +1 -0
- package/public/dist/assets/{chunk-ZLD2IHE6-DOKyEMMC.js → chunk-ZLD2IHE6-CWSP7frq.js} +3 -3
- package/public/dist/assets/classDiagram-CYGNFDIV-C1ssjdiH.js +1 -0
- package/public/dist/assets/classDiagram-v2-TLXNO2FR-C1ssjdiH.js +1 -0
- package/public/dist/assets/clike-D_6L3tnO.js +1 -0
- package/public/dist/assets/cmake-84nbDH0I.js +1 -0
- package/public/dist/assets/cobol-DHLQUbN7.js +1 -0
- package/public/dist/assets/coffeescript-De_zI4J0.js +1 -0
- package/public/dist/assets/commonlisp-DgAKBe0r.js +1 -0
- package/public/dist/assets/{constants-BfYYzHNr.js → constants-TRkDoXvF.js} +1 -1
- package/public/dist/assets/{copy-text-Dy0kfmb9.js → copy-text-WsUHYigB.js} +1 -1
- package/public/dist/assets/cose-bilkent-JH36ORCC-BqCMCbxR.js +1 -0
- package/public/dist/assets/crystal-Bsdphhtm.js +1 -0
- package/public/dist/assets/css-CnaYoQib.js +1 -0
- package/public/dist/assets/cynefin-OW5HDTMX-57vG-IQU.js +1 -0
- package/public/dist/assets/cynefinDiagram-5FMLGOSQ-UAM-DZmU.js +62 -0
- package/public/dist/assets/cytoscape.esm-Ql0ZPabT.js +321 -0
- package/public/dist/assets/{d-BfHF1VVF.js → d-DWkQyNnU.js} +1 -1
- package/public/dist/assets/dagre-Fg-GCROL.js +1 -0
- package/public/dist/assets/{dagre-OS7QT2EB-c-JkA4ju.js → dagre-OS7QT2EB-CflcJHKB.js} +2 -2
- package/public/dist/assets/{diagram-S7CK7UJ4-CgObZnGW.js → diagram-S7CK7UJ4-Dzl9sLZD.js} +1 -1
- package/public/dist/assets/{diagram-UQ7AKVKN-DTiko3yH.js → diagram-UQ7AKVKN-BhpfQUAt.js} +2 -2
- package/public/dist/assets/{diagram-VSXAHHWV-BtwoQsOH.js → diagram-VSXAHHWV-CnuHIxOm.js} +1 -1
- package/public/dist/assets/{diagram-VX7I27RA-BvFpphqo.js → diagram-VX7I27RA-CQzbjtqd.js} +13 -13
- package/public/dist/assets/{diagram-Z3DM3KII-Zq8iJClC.js → diagram-Z3DM3KII-DR3Ie5C2.js} +1 -1
- package/public/dist/assets/dist--wUCkuiC.js +9 -0
- package/public/dist/assets/dist-B2ugUS7T.js +1 -0
- package/public/dist/assets/dist-B6-H00Bu.js +1 -0
- package/public/dist/assets/{dist-CD7tjeNO.js → dist-B_o5XbiL.js} +1 -1
- package/public/dist/assets/{dist-D8Zky4R1.js → dist-Bn361Kgk.js} +2 -2
- package/public/dist/assets/{dist-BspKh_Zg.js → dist-Box-O1ow.js} +1 -1
- package/public/dist/assets/dist-Bp7q5-Qc.js +39 -0
- package/public/dist/assets/dist-C9i-hLBK.js +1 -0
- package/public/dist/assets/{dist-JnCmAxGR.js → dist-CGUtB2hn.js} +1 -1
- package/public/dist/assets/dist-CHO5CBK1.js +1 -0
- package/public/dist/assets/dist-CJNnOuaA.js +1 -0
- package/public/dist/assets/dist-CPYD5RoF.js +1 -0
- package/public/dist/assets/dist-CW1HDUim.js +1 -0
- package/public/dist/assets/dist-Cbkb9LHa.js +1 -0
- package/public/dist/assets/dist-CcmA2WLJ.js +2 -0
- package/public/dist/assets/dist-ClT6EIJP.js +1 -0
- package/public/dist/assets/dist-D011G-p-.js +13 -0
- package/public/dist/assets/dist-DBX5LjYY.js +6 -0
- package/public/dist/assets/dist-DBpt7gM8.js +1 -0
- package/public/dist/assets/{dist-CgIOBybm.js → dist-DJGc9cyj.js} +1 -1
- package/public/dist/assets/{dist-CTpw6PFT.js → dist-DUl4SBwX.js} +1 -1
- package/public/dist/assets/{dist-DKd_hdkE.js → dist-DWvaIPaS.js} +1 -1
- package/public/dist/assets/{dist-DS7cuuIk.js → dist-Ds6qQDMC.js} +1 -1
- package/public/dist/assets/dist-Dxy8kUAu.js +1 -0
- package/public/dist/assets/{dist-Bg80xGMJ.js → dist-OaQUa3cd.js} +1 -1
- package/public/dist/assets/dist-Ohtnri73.js +11 -0
- package/public/dist/assets/dist-TN2_Nms3.js +2 -0
- package/public/dist/assets/dist-XM8qpb8C.js +1 -0
- package/public/dist/assets/dist-Y0iINzVl.js +1 -0
- package/public/dist/assets/{dist-uSfGXqs6.js → dist-kYfyPZP9.js} +1 -1
- package/public/dist/assets/{dist-D3ShDeDU.js → dist-lsEiXLAb.js} +1 -1
- package/public/dist/assets/{dockerfile-DkX5AHzr.js → dockerfile-DJkHQgkl.js} +1 -1
- package/public/dist/assets/{dylan-BQ0i5j3T.js → dylan-BCDoL_-p.js} +1 -1
- package/public/dist/assets/{ebnfDiagram-PWID7BFC-_fcO3z5G.js → ebnfDiagram-PWID7BFC-D_FcQuZg.js} +1 -1
- package/public/dist/assets/{ecl-oXh4vhiy.js → ecl-BVIeWmwY.js} +1 -1
- package/public/dist/assets/{employees-qLLnQlAv.js → employees-BJRRI3rV.js} +3 -3
- package/public/dist/assets/{erDiagram-2YWLMYGG-YIq0Go-p.js → erDiagram-2YWLMYGG-CLpGDU8-.js} +3 -3
- package/public/dist/assets/{erlang-GRIYhTbY.js → erlang-BV0c4Hdn.js} +1 -1
- package/public/dist/assets/{error-normalize-CLRJh19F.js → error-normalize-UHvG8s92.js} +1 -1
- package/public/dist/assets/esm-Q6VOkDbn.js +4 -0
- package/public/dist/assets/eventmodeling-NTZA5JFV-Dz1yjNT-.js +1 -0
- package/public/dist/assets/{factor-Xro2mWdw.js → factor-LKH5gN8L.js} +1 -1
- package/public/dist/assets/fields-CSdFjOgg.js +1 -0
- package/public/dist/assets/flowDiagram-T62WH6J4-jooH4x9e.js +1 -0
- package/public/dist/assets/forth-D6RzAl64.js +1 -0
- package/public/dist/assets/ganttDiagram-EL5Y4UJY-B9_NJDV6.js +292 -0
- package/public/dist/assets/gitGraph-4MIJSDKK-NIO2XoGv.js +1 -0
- package/public/dist/assets/{gitGraphDiagram-WWUBYQGX-Bg3OM_0S.js → gitGraphDiagram-WWUBYQGX-BO0vc7Qh.js} +4 -4
- package/public/dist/assets/graphlib-CGJNr7IJ.js +1 -0
- package/public/dist/assets/groovy-CUpZ7dEl.js +1 -0
- package/public/dist/assets/{haxe-BrZpr4Ca.js → haxe-DjVOVvNP.js} +1 -1
- package/public/dist/assets/idb-cache-BRpjf_a8.js +1 -0
- package/public/dist/assets/idb-cache-CFBnPfHz.js +1 -0
- package/public/dist/assets/iframe-renderer-BngLCbh9.js +1 -0
- package/public/dist/assets/iframe-renderer-CFD7rXuQ.js +142 -0
- package/public/dist/assets/info-A6RAGUB7-yRMwEr76.js +1 -0
- package/public/dist/assets/{infoDiagram-FKFFQAWI-Dbi9pIPw.js → infoDiagram-FKFFQAWI-BM2g31_p.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-5VMMS53U-C1FUP-sO.js → ishikawaDiagram-5VMMS53U-BZvjesKs.js} +2 -2
- package/public/dist/assets/javascript-B9I2pbsP.js +1 -0
- package/public/dist/assets/javascript-DctB8BJo.js +1 -0
- package/public/dist/assets/{journeyDiagram-EYS64GPL-CaEEa3uT.js → journeyDiagram-EYS64GPL-CqtePaqZ.js} +3 -3
- package/public/dist/assets/{jsx-runtime-CYoNlHAD.js → jsx-runtime-CkEUZM6i.js} +1 -1
- package/public/dist/assets/{kanban-definition-UXKFOSKX-DQjqFxtj.js → kanban-definition-UXKFOSKX-ChZA_T7a.js} +5 -5
- package/public/dist/assets/katex-DL-Py6bk.js +1 -0
- package/public/dist/assets/{lua-CxVmDfKg.js → lua-zbJo2mq3.js} +1 -1
- package/public/dist/assets/manager-Bfy42VgJ.css +1 -0
- package/public/dist/assets/manager-CTX6I1Jk.js +13 -0
- package/public/dist/assets/memory-BXcwokaP.js +1 -0
- package/public/dist/assets/{memory-I_6c8skr.js → memory-D2wwkOUi.js} +10 -10
- package/public/dist/assets/mermaid-loader-Beqble_i.js +1 -0
- package/public/dist/assets/{mermaid-parser.core-CBiGpWk6.js → mermaid-parser.core-J035_CYr.js} +1 -1
- package/public/dist/assets/{mermaid-preprocess-4oGDpf1X.js → mermaid-preprocess-D8xe5R2A.js} +1 -1
- package/public/dist/assets/mermaid.core-D1YZrgc_.js +11 -0
- package/public/dist/assets/mermaid.core-DSXunyto.js +1 -0
- package/public/dist/assets/message-history-C2JH-y2v.js +1 -0
- package/public/dist/assets/message-history-CYp7fqXy.js +4 -0
- package/public/dist/assets/{mindmap-definition-THT77NOG-CXOyjall.js → mindmap-definition-THT77NOG-C4c47DPO.js} +3 -3
- package/public/dist/assets/{mumps-BdPrWvs5.js → mumps-BSzj6Xyz.js} +1 -1
- package/public/dist/assets/{nginx-C7cLiM4x.js → nginx-8H7HVH4w.js} +1 -1
- package/public/dist/assets/{notes-graph-settings-Cl4lMj-A.js → notes-graph-settings-BUoTzvqs.js} +1 -1
- package/public/dist/assets/{nsis-iX94j4T9.js → nsis-CfSuhXs5.js} +1 -1
- package/public/dist/assets/{ntriples-DLMpvgb1.js → ntriples-B9h1VB_g.js} +1 -1
- package/public/dist/assets/packet-AYTQ26CC-BreuCLNh.js +1 -0
- package/public/dist/assets/{page-shell-DZ1lls_P.js → page-shell-Bs0RBRoD.js} +1 -1
- package/public/dist/assets/{pegDiagram-XKGWAZYB-DVD3P7WU.js → pegDiagram-XKGWAZYB-BHiELbRn.js} +1 -1
- package/public/dist/assets/perl-BkSkiI9m.js +1 -0
- package/public/dist/assets/pi-settings-B7e38HJP.js +1 -0
- package/public/dist/assets/{pi-settings-DEuKgvIj.js → pi-settings-BmvRWRpc.js} +1 -1
- package/public/dist/assets/pie-WAS4IAKB-Co3_rQ80.js +1 -0
- package/public/dist/assets/{pieDiagram-E7YTZNPT-DEH6UJP4.js → pieDiagram-E7YTZNPT-BEKTktaH.js} +2 -2
- package/public/dist/assets/{powershell-Dfw2t4-B.js → powershell-BcIto6Sf.js} +1 -1
- package/public/dist/assets/preload-helper-CfbQpVni.js +1 -0
- package/public/dist/assets/presentation-DWHWElFr.js +1 -0
- package/public/dist/assets/presentation-preference-BYEPPRPg.js +1 -0
- package/public/dist/assets/presentation-preference-D9u6LD07.js +1 -0
- package/public/dist/assets/{pug-C8nPBT90.js → pug-CqqUmdG7.js} +1 -1
- package/public/dist/assets/puppet-BZyAS7I4.js +1 -0
- package/public/dist/assets/python-B_1Jd8HM.js +1 -0
- package/public/dist/assets/{quadrantDiagram-AXDQQJYC-CAbCNOON.js → quadrantDiagram-AXDQQJYC-CeJGAkDA.js} +2 -2
- package/public/dist/assets/r-CxDmU1I4.js +1 -0
- package/public/dist/assets/radar-RG4KPBEZ-C2cOxc85.js +1 -0
- package/public/dist/assets/railroad-74A4TZTK-BZ4umY4g.js +1 -0
- package/public/dist/assets/railroad-abnf-HS5TGJTU-DxbXiuYs.js +1 -0
- package/public/dist/assets/railroad-ebnf-LZEXJU2U-Bthp2_-B.js +1 -0
- package/public/dist/assets/railroad-peg-WCYAUIDC-YcQ4ouxQ.js +1 -0
- package/public/dist/assets/{railroadDiagram-O6MQD6OU-CEs81LrU.js → railroadDiagram-O6MQD6OU-CsT34rgN.js} +1 -1
- package/public/dist/assets/{render-Cc0Y43E3.js → render-DRweFDYR.js} +13 -13
- package/public/dist/assets/{requirementDiagram-IS5BZ75X-DsPApdKv.js → requirementDiagram-IS5BZ75X-4PwTKQWK.js} +2 -2
- package/public/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/public/dist/assets/{rough.esm-DQG0wzX4.js → rough.esm-Dy-Kn_BL.js} +1 -1
- package/public/dist/assets/ruby-BjXV7-Qa.js +1 -0
- package/public/dist/assets/{sankeyDiagram-P5KCCOFB-Im52Eou9.js → sankeyDiagram-P5KCCOFB-BykRKMDj.js} +2 -2
- package/public/dist/assets/scheme-D9qYN0V5.js +1 -0
- package/public/dist/assets/sequenceDiagram-WJ2MYXX4-Dyj787ok.js +162 -0
- package/public/dist/assets/settings-2diaN51W.js +1 -0
- package/public/dist/assets/{settings-DpjZSu2J.js → settings-DuqNWkxS.js} +3 -3
- package/public/dist/assets/settings-client-CSHmzyxv.js +1 -0
- package/public/dist/assets/settings-core-CIPKFBNN.js +162 -0
- package/public/dist/assets/settings-core-DiYr5EbU.js +1 -0
- package/public/dist/assets/{shell-BBoIO9l0.js → shell-DwuoZtxw.js} +1 -1
- package/public/dist/assets/sidebar-DumxhgAD.js +49 -0
- package/public/dist/assets/{sieve-8oEe6gDx.js → sieve-tLWDfEkZ.js} +1 -1
- package/public/dist/assets/{simple-mode-BNw0K2rL.js → simple-mode-DXiLM1-G.js} +1 -1
- package/public/dist/assets/{sizeCapture-INFHLROL-D9Rpk-aA.js → sizeCapture-INFHLROL-B0uUizjq.js} +1 -1
- package/public/dist/assets/skills-CCXE-bXK.js +1 -0
- package/public/dist/assets/skills-D3AfzYbP.js +12 -0
- package/public/dist/assets/slash-commands-Cn9AWqF6.js +1 -0
- package/public/dist/assets/slash-commands-DCHYDCYa.js +20 -0
- package/public/dist/assets/solr-B78wSQJQ.js +1 -0
- package/public/dist/assets/sql-DuQMFDvy.js +1 -0
- package/public/dist/assets/state-Dl-xxPoS.js +1 -0
- package/public/dist/assets/{stateDiagram-XQSTLZYL-B5CxGVqv.js → stateDiagram-XQSTLZYL-6p5Yrm8S.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-IH3M54BS-DfXrMbZg.js +1 -0
- package/public/dist/assets/{stex-32iK7T_9.js → stex-DNzd62Q_.js} +1 -1
- package/public/dist/assets/{stylus-C689wDNM.js → stylus-BOVgKnng.js} +1 -1
- package/public/dist/assets/swimlanes-V6O3JKXN-Pyw_hrrE.js +1 -0
- package/public/dist/assets/swimlanesDiagram-JKAHXJPX-R-OHp34K.js +8 -0
- package/public/dist/assets/textile-C4jVoHG1.js +1 -0
- package/public/dist/assets/tiki-AK6FwT8q.js +1 -0
- package/public/dist/assets/timeline-definition-24CTP7MA-V_LwIXs0.js +120 -0
- package/public/dist/assets/toml-BPTmHmyx.js +1 -0
- package/public/dist/assets/trace-drawer-B05Fa2ja.js +20 -0
- package/public/dist/assets/treeView-Q6P3EWNA-CDjnLfDO.js +1 -0
- package/public/dist/assets/treemap-WGGIJYW6-CbGUwvA1.js +1 -0
- package/public/dist/assets/{ttcn-CPOduycD.js → ttcn-PPSTk1ow.js} +1 -1
- package/public/dist/assets/{ttcn-cfg-DmA__-R_.js → ttcn-cfg-2b4Gb5sE.js} +1 -1
- package/public/dist/assets/turtle-Cx3rYX2g.js +1 -0
- package/public/dist/assets/ui-BO9pdl-p.js +1 -0
- package/public/dist/assets/ui-CCXcKDL5.js +2 -0
- package/public/dist/assets/vendor-render-Cmfl_oW8.js +383 -0
- package/public/dist/assets/vendor-render-DSSkXCir.css +1 -0
- package/public/dist/assets/vendor-utils-C1xaEGmb.js +1 -0
- package/public/dist/assets/{vennDiagram-4TSXK5OY-fVndHq7T.js → vennDiagram-4TSXK5OY-ZagiHlwi.js} +3 -3
- package/public/dist/assets/{verilog-DMw8DKoT.js → verilog-CjI9Y6RI.js} +1 -1
- package/public/dist/assets/vhdl-kS471soi.js +1 -0
- package/public/dist/assets/wardley-WFR3VGLG-Cj73o4Iq.js +1 -0
- package/public/dist/assets/{wardleyDiagram-VM6X3IG4-CXIfS7ZF.js → wardleyDiagram-VM6X3IG4-BBAHdIq-.js} +35 -35
- package/public/dist/assets/wiki-link-resolver-CbJATnBn.js +22 -0
- package/public/dist/assets/wiki-link-suggestions-BcEfThgf.js +2 -0
- package/public/dist/assets/{xquery-CYbd_YmJ.js → xquery-BKJx4mf9.js} +1 -1
- package/public/dist/assets/{xychartDiagram-S5SC5T6Z-CqC-Uvuc.js → xychartDiagram-S5SC5T6Z-C43SenTd.js} +4 -4
- package/public/dist/assets/z80-Co3PbHdE.js +1 -0
- package/public/dist/index.html +4 -4
- package/public/dist/manager/index.html +3 -3
- package/public/index.html +3 -1
- package/public/js/api.ts +2 -2
- package/public/js/bounded-api.ts +49 -0
- package/public/js/features/activity-discovery.ts +142 -0
- package/public/js/features/activity-history.ts +334 -0
- package/public/js/features/activity-http.ts +17 -0
- package/public/js/features/activity-live.ts +330 -0
- package/public/js/features/activity-view.ts +218 -0
- package/public/js/features/chat-messages.ts +13 -4
- package/public/js/features/idb-cache.ts +37 -3
- package/public/js/features/message-history.ts +144 -16
- package/public/js/features/message-item-html.ts +7 -3
- package/public/js/features/native-request-bridge.ts +133 -0
- package/public/js/features/native-requests.ts +337 -0
- package/public/js/features/presentation-preference.ts +52 -0
- package/public/js/features/process-block.ts +35 -1
- package/public/js/features/process-log-adapter.ts +11 -1
- package/public/js/features/settings-core.ts +20 -1
- package/public/js/features/settings-types.ts +5 -1
- package/public/js/features/trace-drawer.ts +145 -43
- package/public/js/features/ui-status.ts +5 -0
- package/public/js/state.ts +3 -0
- package/public/js/ui.ts +41 -8
- package/public/js/virtual-scroll.ts +66 -4
- package/public/js/ws.ts +324 -29
- package/public/manager/src/settings/fields/SelectField.tsx +7 -5
- package/public/manager/src/settings/pages/Agent.tsx +3 -2
- package/public/manager/src/settings/pages/Display.tsx +100 -19
- package/public/manager/src/settings/pages/ModelProvider.tsx +133 -45
- package/public/manager/src/settings/pages/Permissions.tsx +18 -10
- package/public/manager/src/settings/pages/components/PerCliRow.tsx +42 -6
- package/public/manager/src/settings/pages/components/PiProfileDialog.tsx +59 -6
- package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +9 -6
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +3 -0
- package/public/manager/src/settings/pages/components/runtime-transport-field.tsx +68 -0
- package/public/manager/src/settings-controls.css +43 -0
- package/public/manager/src/settings-shell.css +21 -1
- package/scripts/bundle-sidecar.sh +282 -37
- package/scripts/check-sidecar-smoke.mjs +250 -137
- package/scripts/sidecar-smoke-probe.mjs +171 -0
- package/public/dist/assets/AdvancedExport-tXydxVAh.js +0 -1
- package/public/dist/assets/Agent-CHaTUS7c.js +0 -1
- package/public/dist/assets/Browser-Dm5J1gXP.js +0 -1
- package/public/dist/assets/BrowserPanel-0b3deLGR.js +0 -3
- package/public/dist/assets/ChannelsDiscord-D6jmfyHe.js +0 -1
- package/public/dist/assets/ChannelsSlack-BcykASIN.js +0 -1
- package/public/dist/assets/ChannelsTelegram-XkNtVi8o.js +0 -1
- package/public/dist/assets/CodeCanvas-D-JH2Ikl.js +0 -3
- package/public/dist/assets/DesignPanel-SuUOoyQN.js +0 -2
- package/public/dist/assets/Display-B25HqCMH.js +0 -1
- package/public/dist/assets/DocPanel-qiqo6365.js +0 -1
- package/public/dist/assets/FolderPanel-BkggPdTP.js +0 -3
- package/public/dist/assets/HealthBadge-D7BQ-LHD.js +0 -1
- package/public/dist/assets/MarkdownRenderer-DZ-hWmCB.js +0 -15
- package/public/dist/assets/MarkdownRenderer-uwE0Wam5.js +0 -1
- package/public/dist/assets/MilkdownWysiwygEditor-DanGAZL5.js +0 -160
- package/public/dist/assets/ModelProvider-tL42E5dy.js +0 -1
- package/public/dist/assets/Network-ByNu-VCZ.js +0 -1
- package/public/dist/assets/NotesGraphWorkspace-Be6ctzYE.js +0 -1
- package/public/dist/assets/PanelLayoutProvider-B9fYsunp.js +0 -1
- package/public/dist/assets/Permissions-B-74b-nO.js +0 -1
- package/public/dist/assets/Permissions-x_6_kLC1.js +0 -1
- package/public/dist/assets/Profile-Bf9-QN2Y.js +0 -1
- package/public/dist/assets/Prompts-DGDw56NQ.js +0 -1
- package/public/dist/assets/TerminalPanel-DdE69MNo.css +0 -1
- package/public/dist/assets/TerminalPanel-gXH7bTXQ.js +0 -36
- package/public/dist/assets/api-DNnX8m0u.js +0 -1
- package/public/dist/assets/api-tVoG39dL.js +0 -1
- package/public/dist/assets/app-CXraFyoA.js +0 -55
- package/public/dist/assets/app-DuyLYRC6.css +0 -1
- package/public/dist/assets/architecture-7GRP2DOG-DxLizWvy.js +0 -1
- package/public/dist/assets/architectureDiagram-5GKGNRK7-BpxFEoT5.js +0 -36
- package/public/dist/assets/asciiarmor-7YwhfGDq.js +0 -1
- package/public/dist/assets/bgtask-badge-BjyAbBio.js +0 -1
- package/public/dist/assets/c4Diagram-7LVT6UL2-Bg0DdRYW.js +0 -38
- package/public/dist/assets/channel-BjgXjYj8.js +0 -1
- package/public/dist/assets/chunk-2Q5K7J3B-BClkI2P5.js +0 -1
- package/public/dist/assets/chunk-3NF5O7KM-DXOprKA_.js +0 -168
- package/public/dist/assets/chunk-CLGD4ZFX-B5zkZ8n6.js +0 -1
- package/public/dist/assets/chunk-GVQU2GXP-BlVn1fMW.js +0 -1
- package/public/dist/assets/chunk-H2I77ZZE-BXf4_vA2.js +0 -1
- package/public/dist/assets/chunk-L3NEJ4N5-FGXu31jw.js +0 -1
- package/public/dist/assets/chunk-LQGUR6SS-qUTD5FMI.js +0 -2
- package/public/dist/assets/chunk-OSK3NFVY-CrXjNywV.js +0 -10
- package/public/dist/assets/chunk-XXDRQBXY-DEwmqeYc.js +0 -1
- package/public/dist/assets/classDiagram-CYGNFDIV-hbaxbeYd.js +0 -1
- package/public/dist/assets/classDiagram-v2-TLXNO2FR-_OfX3b6Y.js +0 -1
- package/public/dist/assets/clike-BcV5UqGE.js +0 -1
- package/public/dist/assets/cmake-DhPsEu0W.js +0 -1
- package/public/dist/assets/cobol-BEekiT-v.js +0 -1
- package/public/dist/assets/coffeescript-Bgk4ZVWF.js +0 -1
- package/public/dist/assets/commonlisp-Dw4PRJwx.js +0 -1
- package/public/dist/assets/cose-bilkent-JH36ORCC-HnUYAhwC.js +0 -1
- package/public/dist/assets/crystal-CJ-iCD_G.js +0 -1
- package/public/dist/assets/css-BDUaiSMY.js +0 -1
- package/public/dist/assets/cynefin-OW5HDTMX-VXYSLvft.js +0 -1
- package/public/dist/assets/cynefinDiagram-5FMLGOSQ-D0dmg5fA.js +0 -62
- package/public/dist/assets/cytoscape.esm-CS3SmpXd.js +0 -321
- package/public/dist/assets/dagre-DDTOgfwg.js +0 -1
- package/public/dist/assets/dist-BCCaGGDY.js +0 -1
- package/public/dist/assets/dist-BPE4W9iX.js +0 -6
- package/public/dist/assets/dist-BQMBTYXL.js +0 -1
- package/public/dist/assets/dist-BaPGPaX4.js +0 -1
- package/public/dist/assets/dist-CBnlLSQZ.js +0 -1
- package/public/dist/assets/dist-CINTuhik.js +0 -2
- package/public/dist/assets/dist-CX7KjpF3.js +0 -39
- package/public/dist/assets/dist-CczLsP0o.js +0 -9
- package/public/dist/assets/dist-CdfDDy4r.js +0 -1
- package/public/dist/assets/dist-Cl_pRobr.js +0 -1
- package/public/dist/assets/dist-CruwQXwE.js +0 -1
- package/public/dist/assets/dist-CvE8Qa9r.js +0 -2
- package/public/dist/assets/dist-Cy3mcP1e.js +0 -1
- package/public/dist/assets/dist-CzCFEnHw.js +0 -1
- package/public/dist/assets/dist-D2h9T4I9.js +0 -13
- package/public/dist/assets/dist-DLOg6n0b.js +0 -1
- package/public/dist/assets/dist-DW0I56_o.js +0 -1
- package/public/dist/assets/dist-TombgBki.js +0 -11
- package/public/dist/assets/dist-hBRIxDzG.js +0 -1
- package/public/dist/assets/dist-z5Z70wW8.js +0 -1
- package/public/dist/assets/esm-CT1xxdH5.js +0 -4
- package/public/dist/assets/eventmodeling-NTZA5JFV-Csqcv5T_.js +0 -1
- package/public/dist/assets/fields-E1L8aEhU.js +0 -1
- package/public/dist/assets/flowDiagram-T62WH6J4-Del9dfOW.js +0 -1
- package/public/dist/assets/forth-DNnBFTm6.js +0 -1
- package/public/dist/assets/ganttDiagram-EL5Y4UJY-CezfIvti.js +0 -292
- package/public/dist/assets/gitGraph-4MIJSDKK-D_1mlgPm.js +0 -1
- package/public/dist/assets/graphlib-Cjg_soTo.js +0 -1
- package/public/dist/assets/groovy-Cm4gdIYU.js +0 -1
- package/public/dist/assets/idb-cache-B5PX63p7.js +0 -1
- package/public/dist/assets/idb-cache-lOntwU3S.js +0 -1
- package/public/dist/assets/iframe-renderer-BLP8Army.js +0 -1
- package/public/dist/assets/iframe-renderer-vuNrU6aI.js +0 -142
- package/public/dist/assets/info-A6RAGUB7-ce7F80NR.js +0 -1
- package/public/dist/assets/javascript-DD7UxIxH.js +0 -1
- package/public/dist/assets/javascript-DZFdG8BN.js +0 -1
- package/public/dist/assets/katex-BoGadFcG.js +0 -1
- package/public/dist/assets/manager-BspQvGAC.js +0 -13
- package/public/dist/assets/manager-Cmu0aKPb.css +0 -1
- package/public/dist/assets/memory-CRji7xpO.js +0 -1
- package/public/dist/assets/mermaid-loader-BcReSszT.js +0 -1
- package/public/dist/assets/mermaid.core-BJIXJ0Ir.js +0 -11
- package/public/dist/assets/mermaid.core-J6tiqiVK.js +0 -1
- package/public/dist/assets/message-history-C1ThtA4i.js +0 -1
- package/public/dist/assets/message-history-CXg12lcd.js +0 -1
- package/public/dist/assets/packet-AYTQ26CC-86oNpyWh.js +0 -1
- package/public/dist/assets/perl-DfpfXWOH.js +0 -1
- package/public/dist/assets/pi-settings-5HVg1sXJ.js +0 -1
- package/public/dist/assets/pie-WAS4IAKB-CMzmzfvT.js +0 -1
- package/public/dist/assets/preload-helper-DFYRRz9w.js +0 -1
- package/public/dist/assets/puppet-DnsvBfcg.js +0 -1
- package/public/dist/assets/python-mfoZJSDM.js +0 -1
- package/public/dist/assets/r-FO7GgXB8.js +0 -1
- package/public/dist/assets/radar-RG4KPBEZ-CsDBxCx4.js +0 -1
- package/public/dist/assets/railroad-74A4TZTK-B6s85Oul.js +0 -1
- package/public/dist/assets/railroad-abnf-HS5TGJTU-jnABoAnr.js +0 -1
- package/public/dist/assets/railroad-ebnf-LZEXJU2U-C_VWXbk9.js +0 -1
- package/public/dist/assets/railroad-peg-WCYAUIDC-y3jeoP_s.js +0 -1
- package/public/dist/assets/rolldown-runtime-XQCOJYun.js +0 -1
- package/public/dist/assets/ruby-Cg1fwXaw.js +0 -1
- package/public/dist/assets/scheme-DGFmPoR2.js +0 -1
- package/public/dist/assets/sequenceDiagram-WJ2MYXX4-BChOR6yh.js +0 -162
- package/public/dist/assets/settings-B2Ix6Y7k.js +0 -1
- package/public/dist/assets/settings-client-D9KY2Ufl.js +0 -1
- package/public/dist/assets/settings-core-Bkb0BoYY.js +0 -1
- package/public/dist/assets/settings-core-DWYQIIoe.js +0 -162
- package/public/dist/assets/sidebar-C8WKweCz.js +0 -49
- package/public/dist/assets/skills-QWf6vRIB.js +0 -12
- package/public/dist/assets/skills-bEGqvmiQ.js +0 -1
- package/public/dist/assets/slash-commands-BbA0Y1up.js +0 -1
- package/public/dist/assets/slash-commands-qD6yScsx.js +0 -20
- package/public/dist/assets/solr-BwGyzi2H.js +0 -1
- package/public/dist/assets/sql-B6Phvk1R.js +0 -1
- package/public/dist/assets/state-DxpgDKMO.js +0 -1
- package/public/dist/assets/stateDiagram-v2-IH3M54BS-BmdRqxzy.js +0 -1
- package/public/dist/assets/swimlanes-V6O3JKXN-Ckem4dQh.js +0 -1
- package/public/dist/assets/swimlanesDiagram-JKAHXJPX-DW_0PiOk.js +0 -8
- package/public/dist/assets/textile-xOWO1SH7.js +0 -1
- package/public/dist/assets/tiki-OG7n6UAo.js +0 -1
- package/public/dist/assets/timeline-definition-24CTP7MA-CJRsjFnd.js +0 -120
- package/public/dist/assets/toml-DkxT-aUR.js +0 -1
- package/public/dist/assets/trace-drawer-Ct8sP4j-.js +0 -15
- package/public/dist/assets/treeView-Q6P3EWNA-ChnMvz2a.js +0 -1
- package/public/dist/assets/treemap-WGGIJYW6-DZJ4jE42.js +0 -1
- package/public/dist/assets/turtle-CEzrJHdY.js +0 -1
- package/public/dist/assets/ui-BZxyyJUk.js +0 -1
- package/public/dist/assets/ui-xoW9x-Pz.js +0 -2
- package/public/dist/assets/vendor-render-BpGO1zp3.js +0 -383
- package/public/dist/assets/vendor-render-kIxHrxDV.css +0 -1
- package/public/dist/assets/vendor-utils-BUFU5ypz.js +0 -1
- package/public/dist/assets/vhdl-M4wLPuJt.js +0 -1
- package/public/dist/assets/wardley-WFR3VGLG-CGM_JiX0.js +0 -1
- package/public/dist/assets/wiki-link-resolver-BGpGBLMp.js +0 -22
- package/public/dist/assets/wiki-link-suggestions-cvpqJp6c.js +0 -2
- package/public/dist/assets/z80-nGsPT_fm.js +0 -1
- /package/public/dist/assets/{agent-meta-KPnVam9G.js → agent-meta-WqLP4HPi.js} +0 -0
- /package/public/dist/assets/{api-FOqKQ9fm.js → api-B9RiiOMM.js} +0 -0
- /package/public/dist/assets/{brainfuck-CM8jf4Gu.js → brainfuck-D5EjA2JK.js} +0 -0
- /package/public/dist/assets/{chunk-Y2CYZVJY-DlLjK0OJ.js → chunk-Y2CYZVJY-DsF7k-Jl.js} +0 -0
- /package/public/dist/assets/{clojure-XHu9GAjV.js → clojure-BflJGmDX.js} +0 -0
- /package/public/dist/assets/{cypher-CJ05ZgAu.js → cypher-p9eYesGn.js} +0 -0
- /package/public/dist/assets/{desktop-bridge-DtydAvqu.js → desktop-bridge-DbRfkg8l.js} +0 -0
- /package/public/dist/assets/{diff-BVcHwfdB.js → diff-ChtP43wD.js} +0 -0
- /package/public/dist/assets/{dtd-Bg0TgBY9.js → dtd-DTF72YNO.js} +0 -0
- /package/public/dist/assets/{ebnf-QSFUkOiT.js → ebnf-D4c0_ac3.js} +0 -0
- /package/public/dist/assets/{eiffel-S15DDWzw.js → eiffel-BEjRio4Q.js} +0 -0
- /package/public/dist/assets/{elm-B746ZFPi.js → elm-Cshzl8qu.js} +0 -0
- /package/public/dist/assets/{fcl-DjQMeb0v.js → fcl-ClOhbFR7.js} +0 -0
- /package/public/dist/assets/{folder-drag-payload-CJ0dxhZa.js → folder-drag-payload-BhV9yzhH.js} +0 -0
- /package/public/dist/assets/{fortran-yg6K9z9n.js → fortran-Bt6PBEDR.js} +0 -0
- /package/public/dist/assets/{gas-fbsH19hy.js → gas-BHEdbvp9.js} +0 -0
- /package/public/dist/assets/{gherkin-BCy9haeT.js → gherkin-oBAE_ms0.js} +0 -0
- /package/public/dist/assets/{haskell-Dq28dVw2.js → haskell-BRsoo5mP.js} +0 -0
- /package/public/dist/assets/{http-B3zr0y0o.js → http-CLVgA2GD.js} +0 -0
- /package/public/dist/assets/{idl-C9CL9hdG.js → idl-BUZw3wgd.js} +0 -0
- /package/public/dist/assets/{julia-CjwfSXBk.js → julia-CQfgDRfP.js} +0 -0
- /package/public/dist/assets/{livescript-vRjI6jFU.js → livescript-BXxG0Yva.js} +0 -0
- /package/public/dist/assets/{locale-DC-ZsWOf.js → locale-B9w_kUtW.js} +0 -0
- /package/public/dist/assets/{mathematica-DJZPFt8k.js → mathematica-u8YMmbU0.js} +0 -0
- /package/public/dist/assets/{mbox-CxBBnlIA.js → mbox-BEMVcqjs.js} +0 -0
- /package/public/dist/assets/{mirc-CBWc0vcU.js → mirc-C9zpzAZU.js} +0 -0
- /package/public/dist/assets/{mllike-DYddHpeS.js → mllike-B45xgp2S.js} +0 -0
- /package/public/dist/assets/{modelica-B94rrYMn.js → modelica-CqHI_q-D.js} +0 -0
- /package/public/dist/assets/{mscgen-D0PO0iPT.js → mscgen-qgSLujhx.js} +0 -0
- /package/public/dist/assets/{octave-DeJPElAr.js → octave-D2Q8cUp1.js} +0 -0
- /package/public/dist/assets/{oz-4dtXWqwe.js → oz-BwTct_5T.js} +0 -0
- /package/public/dist/assets/{pascal-TdeXcL-o.js → pascal-Dp_KdFgX.js} +0 -0
- /package/public/dist/assets/{path-utils-QbjARuCC.js → path-utils-B6vBr0DD.js} +0 -0
- /package/public/dist/assets/{pig-xQ4essgV.js → pig-AF4Hwhju.js} +0 -0
- /package/public/dist/assets/{properties-CrJLOvU2.js → properties-C357ku5U.js} +0 -0
- /package/public/dist/assets/{protobuf-BYv78GYU.js → protobuf-D1ij_kNL.js} +0 -0
- /package/public/dist/assets/{provider-icons-CXA2mnPO.js → provider-icons-Det0fC-4.js} +0 -0
- /package/public/dist/assets/{q-BrTIu4PU.js → q-B9NhS7L_.js} +0 -0
- /package/public/dist/assets/{rpm-D8Wbdep5.js → rpm-gpDK5sbt.js} +0 -0
- /package/public/dist/assets/{sas-Ch1GEx-n.js → sas-C2OyD2Y6.js} +0 -0
- /package/public/dist/assets/{settings-types-DPhhM-cj.js → settings-types-B09BmpYe.js} +0 -0
- /package/public/dist/assets/{smalltalk-ChbxX23N.js → smalltalk-BLp5-jwC.js} +0 -0
- /package/public/dist/assets/{sparql-D9wgprRx.js → sparql-Dz-mlCAC.js} +0 -0
- /package/public/dist/assets/{spreadsheet-BySehl32.js → spreadsheet-CTIncYxj.js} +0 -0
- /package/public/dist/assets/{swift-DZwxTp-L.js → swift-DKB6_1j6.js} +0 -0
- /package/public/dist/assets/{tcl-BSOjIY_8.js → tcl-BGfruO1u.js} +0 -0
- /package/public/dist/assets/{tiddlywiki-B8jhOxrf.js → tiddlywiki-VlUiK86J.js} +0 -0
- /package/public/dist/assets/{troff-vE5gOX7Y.js → troff-C2dAgh7P.js} +0 -0
- /package/public/dist/assets/{vb-Cii5IQTv.js → vb-BthdM_4N.js} +0 -0
- /package/public/dist/assets/{vbscript-DcZWGZ_S.js → vbscript-D9f6rSsU.js} +0 -0
- /package/public/dist/assets/{velocity-BEag7EnK.js → velocity-CqftRsjg.js} +0 -0
- /package/public/dist/assets/{vendor-icons-Begb5v1n.js → vendor-icons-CNcMX6Ac.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-hgmz1BF7.js → w3c-keyname-BOAvb0qz.js} +0 -0
- /package/public/dist/assets/{webidl-CjehKbx5.js → webidl-D5jiJvOU.js} +0 -0
- /package/public/dist/assets/{yacas-ClBNsli2.js → yacas-CXXgtw0p.js} +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import{a as e,i as t,n,r,t as i}from"./api-CUtiCd2-.js";import{N as a,O as o,S as s,k as c,z as l}from"./render-DRweFDYR.js";import{n as u}from"./locale-B9w_kUtW.js";import{a as d,i as f,n as p,o as m,t as h}from"./constants-TRkDoXvF.js";import{i as ee}from"./settings-types-B09BmpYe.js";import{a as te,c as ne,l as re,u as ie}from"./pi-settings-BmvRWRpc.js";import{n as ae,r as oe}from"./provider-icons-Det0fC-4.js";import{n as se,t as ce}from"./presentation-preference-D9u6LD07.js";function le(e){let n=document.getElementById(`sttEngine`),r=document.getElementById(`sttGeminiKey`),i=document.getElementById(`sttGeminiModel`),a=document.getElementById(`sttGeminiModelCustom`),o=document.getElementById(`sttWhisperModel`),s=document.getElementById(`sttOpenaiBaseUrl`),c=document.getElementById(`sttOpenaiKey`),l=document.getElementById(`sttOpenaiModel`),u=document.getElementById(`sttVertexJson`);if(n&&(n.value=e.engine||`auto`),r&&(r.placeholder=e.geminiKeySet?g(e.geminiKeyLast4):`AIza...`),i){let t=e.geminiModel||`gemini-2.5-flash-lite`;Array.from(i.options).some(e=>e.value===t)?i.value=t:(i.value=`__custom__`,a&&(a.value=t,a.style.display=``))}o&&(o.value=e.whisperModel||`mlx-community/whisper-large-v3-turbo`),s&&(s.value=e.openaiBaseUrl||``),c&&(c.placeholder=e.openaiKeySet?g(e.openaiKeyLast4):`sk-...`),l&&(l.value=e.openaiModel||``),u&&(u.value=e.vertexConfig||``);function d(){let e=n?.value||`auto`,t=e===`auto`||e===`gemini`,r=e===`openai`,i=e===`vertex`,a=e===`auto`||e===`whisper`;document.querySelectorAll(`.stt-gemini`).forEach(e=>e.style.display=t?``:`none`),document.querySelectorAll(`.stt-openai`).forEach(e=>e.style.display=r?``:`none`),document.querySelectorAll(`.stt-vertex`).forEach(e=>e.style.display=i?``:`none`),document.querySelectorAll(`.stt-whisper`).forEach(e=>e.style.display=a?``:`none`)}d();async function f(){let e={stt:{engine:n?.value||`auto`,geminiModel:(i?.value===`__custom__`?a?.value:i?.value)||`gemini-2.5-flash-lite`,whisperModel:o?.value||``,openaiBaseUrl:s?.value||``,openaiModel:l?.value||``,vertexConfig:u?.value||``}};r?.value&&(e.stt.geminiApiKey=r.value),c?.value&&(e.stt.openaiApiKey=c.value),console.log(`[stt] saving:`,{engine:e.stt.engine,hasGeminiKey:!!e.stt.geminiApiKey,hasOpenaiKey:!!e.stt.openaiApiKey});try{if(await t(`/api/settings`,`PUT`,e),r?.value){let e=r.value.slice(-4);r.value=``,r.placeholder=g(e)}if(c?.value){let e=c.value.slice(-4);c.value=``,c.placeholder=g(e)}}catch(e){console.error(`[stt] save failed:`,e)}}n?.addEventListener(`change`,()=>{d(),f()}),i?.addEventListener(`change`,()=>{a&&(a.style.display=i.value===`__custom__`?``:`none`),i.value!==`__custom__`&&f()}),a?.addEventListener(`blur`,f),r?.addEventListener(`blur`,()=>{r.value&&f()}),c?.addEventListener(`blur`,()=>{c.value&&f()}),s?.addEventListener(`blur`,f),l?.addEventListener(`blur`,f),o?.addEventListener(`blur`,f),u?.addEventListener(`blur`,f)}function g(e){return l(`stt.key.savedPlaceholder`,{last4:e||``})}function ue(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.configured==`boolean`&&typeof t.activeInbound==`boolean`&&typeof t.sendCapable==`boolean`}function de(e){return e===`telegram`||e===`discord`||e===`slack`}function fe(e){if(!e||typeof e!=`object`)return null;let t=e.channels;if(!t||typeof t!=`object`)return null;let n=t,r=n.activeInboundChannels,i;if(r!==void 0)i=Array.isArray(r)&&r.every(de)?[...new Set(r)]:null;else{let e=n.activeInbound;i=de(e)?[e]:null}if(!i)return null;let a=n.activeInbound;if(!de(a)||!ue(n.telegram)||!ue(n.discord))return null;let o=ue(n.slack)?n.slack:{configured:!1,activeInbound:!1,sendCapable:!1,reason:`unavailable`};return{activeInbound:a,activeInboundChannels:i,telegram:n.telegram,discord:n.discord,slack:o}}function pe(e){let t=[];return t.push(e.configured?l(`settings.channel.configured`):l(`settings.channel.notConfigured`)),e.sendCapable&&t.push(l(`settings.channel.sendCapable`)),e.activeInbound&&t.push(l(`settings.channel.activeInbound`)),t}function me(e,t,n){let r=pe(t).map(e=>`<span class="transport-status-chip">${a(e)}</span>`).join(``),i=t.reason===`not_attach_instance`?`<p class="transport-status-hint">${a(l(`settings.channel.notAttachInstanceHint`))}</p>`:n&&t.configured&&t.sendCapable&&!t.activeInbound?`<p class="transport-status-hint">${a(l(`settings.channel.sendOnlyHint`))}</p>`:``;return`
|
|
2
|
+
<div class="transport-status-block">
|
|
3
|
+
<div class="transport-status-label">${a(e)}</div>
|
|
4
|
+
<div class="transport-status-chips">${r}</div>
|
|
5
|
+
${i}
|
|
6
|
+
</div>`}function he(e,t){e.innerHTML=`
|
|
7
|
+
<h4 class="section-title-row">
|
|
8
|
+
<span><span data-icon="radio"></span> ${a(l(`settings.channel.statusTitle`))}</span>
|
|
9
|
+
</h4>
|
|
10
|
+
${me(`Telegram`,t.telegram,!0)}
|
|
11
|
+
${me(`Discord`,t.discord,!0)}
|
|
12
|
+
${me(`Slack`,t.slack,!0)}
|
|
13
|
+
`}async function _(){let e=document.getElementById(`channelTransportStatus`);if(e)try{let t=fe(await n(`/api/health`));if(!t){e.innerHTML=``,e.style.display=`none`;return}he(e,t),e.style.display=``}catch{e.innerHTML=``,e.style.display=`none`}}var ge={telegram:[{key:`botToken`,settingsId:`tgToken`,secret:!0,example:`8123456789:AAH...`}],discord:[{key:`botToken`,settingsId:`dcToken`,secret:!0,example:`MTIzNDU2Nzg5...`},{key:`guildId`,settingsId:`dcGuildId`,secret:!1,example:`123456789012345678`}],slack:[{key:`botToken`,settingsId:`slBotToken`,secret:!0,prefix:`xoxb-`,example:`xoxb-1234-5678-abcd...`},{key:`appToken`,settingsId:`slAppToken`,secret:!0,optional:!0,prefix:`xapp-`,example:`xapp-1-A01...`}]},_e={telegram:`https://t.me/BotFather`,discord:`https://discord.com/developers/applications`,slack:`https://api.slack.com/apps?new_app=1`};function ve(e,t={}){return{channel:e,step:1,draft:{...t},slackSetupStage:`manifest`,validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[],saved:!1}}function v(e){return ge[e]}function ye(e,t){for(let n of v(e)){let e=(t[n.key]||``).trim();if(!e){if(n.optional)continue;return n.key===`guildId`?`guild_required`:`token_required`}if(n.prefix&&!e.startsWith(n.prefix))return n.key===`appToken`?`app_prefix`:`bot_prefix`}return null}function be(e){return e.step===1?e.channel===`slack`&&e.slackSetupStage!==`ready`?`slack_setup_required`:null:e.step===2?ye(e.channel,e.draft):e.step===3?e.validatedIdentity?null:`validation_required`:null}function xe(e){return e.step<4&&be(e)===null}function Se(e){if(e.step>=4)return e;let t=be(e);return t?{...e,error:t}:{...e,step:e.step+1,error:null}}function Ce(e){return e.step<=1?e:{...e,step:e.step-1,error:null}}function we(e){return e.channel===`slack`?{...e,slackSetupStage:`issuer`,error:null}:e}function Te(e){return e.channel!==`slack`||e.slackSetupStage===`manifest`?e:{...e,slackSetupStage:`ready`,error:null}}function Ee(e){return e.channel===`slack`?{...e,slackSetupStage:`manifest`,error:null}:e}function De(e,t,n){return(e.draft[t]??``)===n?e:{...e,draft:{...e.draft,[t]:n},validatedIdentity:null,validatedTeamId:``,error:null,missingScopes:[],missingCapabilities:[]}}function Oe(e,t){return t?.ok?{...e,validatedIdentity:t.identity||`ok`,validatedTeamId:t.teamId||``,error:null,missingScopes:[],missingCapabilities:Array.isArray(t.missingCapabilities)?t.missingCapabilities:[]}:{...e,validatedIdentity:null,validatedTeamId:``,error:t?.error||`network`,missingScopes:Array.isArray(t?.missing)?t.missing:[],missingCapabilities:[]}}function ke(e){return{...e,saved:!0,step:4,error:null}}function Ae(e){let t={channel:e.channel};for(let n of v(e.channel))t[n.key]=(e.draft[n.key]||``).trim();return t}function je(e){let t=t=>(e.draft[t]||``).trim();return e.channel===`telegram`?{telegram:{enabled:!0,token:t(`botToken`)}}:e.channel===`discord`?{discord:{enabled:!0,token:t(`botToken`),guildId:t(`guildId`)}}:{slack:{enabled:!0,botToken:t(`botToken`),appToken:t(`appToken`),...e.validatedTeamId?{teamId:e.validatedTeamId}:{}}}}var Me=`jaw:notificationsAsked`;function Ne(){try{return localStorage.getItem(Me)===`1`}catch{return!0}}function Pe(){try{localStorage.setItem(Me,`1`)}catch{}}async function Fe(){if(typeof Notification>`u`)return null;if(Notification.permission!=="default")return Notification.permission;if(Ne())return null;Pe();try{return await Notification.requestPermission()}catch{return null}}var y=null,b=null,x=!1,S=!1,C=`cli-jaw`,w=0;function Ie(){document.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-onboard-channel]`);t&&(e.preventDefault(),Le(t.getAttribute(`data-onboard-channel`)))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&b&&(e.preventDefault(),e.stopImmediatePropagation(),Re())},!0),document.addEventListener(`keydown`,e=>{if(e.key!==`Tab`||!b||!y)return;let t=[...y.querySelectorAll(`button:not([disabled]), input:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])`)];if(!t.length)return;let n=t[0],r=t[t.length-1],i=document.activeElement;e.shiftKey&&(i===n||!y.contains(i))?(e.preventDefault(),r.focus()):!e.shiftKey&&i===r&&(e.preventDefault(),n.focus())},!0)}function Le(e){if(e!==`telegram`&&e!==`discord`&&e!==`slack`)return;let t={};for(let n of v(e))t[n.key]=ze(n.settingsId);b=ve(e,t),e===`slack`&&(C=`cli-jaw`),x=!1,S=!1,w+=1,Ve(),T(),y?.classList.add(`open`)}function Re(){y?.classList.remove(`open`),b=null}function ze(e){return document.getElementById(e)?.value.trim()||``}function Be(e,t){let n=document.getElementById(e);n&&(n.value=t)}function Ve(){y||(y=document.createElement(`div`),y.className=`modal-overlay onboarding-overlay`,y.addEventListener(`click`,e=>{e.target===y&&Re()}),document.body.appendChild(y))}function He(e){if(e.step===1){let t=e.slackSetupStage;return`
|
|
14
|
+
${e.channel===`slack`?`
|
|
15
|
+
<div class="onboarding-field">
|
|
16
|
+
<label for="onboard-slack-app-name">${a(l(`onboarding.slackAppName`))}</label>
|
|
17
|
+
<input id="onboard-slack-app-name" data-onboard-app-name="1" class="input-sm"
|
|
18
|
+
type="text" autocomplete="off"
|
|
19
|
+
spellcheck="false"
|
|
20
|
+
aria-describedby="onboard-slack-app-name-hint onboard-slack-manifest-status"
|
|
21
|
+
value="${a(C)}">
|
|
22
|
+
<span class="onboarding-hint" id="onboard-slack-app-name-hint">${a(l(`onboarding.slackAppNameHint`))}</span>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="onboarding-actions">
|
|
25
|
+
<button type="button" class="perm-btn ${t===`manifest`?`active`:``}" data-onboard-generate-manifest="1">
|
|
26
|
+
${a(l(`onboarding.slackGenerateManifest`))}
|
|
27
|
+
</button>
|
|
28
|
+
<span class="onboarding-manifest-status" id="onboard-slack-manifest-status"
|
|
29
|
+
data-onboard-manifest-status="1" role="status" aria-live="polite"></span>
|
|
30
|
+
</div>`:``}
|
|
31
|
+
<p class="onboarding-guide">${a(l(`onboarding.guide.${e.channel}`))}</p>
|
|
32
|
+
<div class="onboarding-actions">
|
|
33
|
+
<button type="button" class="perm-btn ${e.channel===`slack`&&t===`issuer`?`active`:``}"
|
|
34
|
+
data-onboard-issuer="1" ${e.channel===`slack`&&t===`manifest`?`disabled`:``}>
|
|
35
|
+
${a(l(`onboarding.openIssuer`))}
|
|
36
|
+
</button>
|
|
37
|
+
</div>`}return e.step===2?v(e.channel).map(t=>{let n=l(`onboarding.token.${t.key}`)+(t.optional?` (${l(`onboarding.optional`)})`:``);return`
|
|
38
|
+
<div class="onboarding-field">
|
|
39
|
+
<label for="onboard-${t.key}">${a(n)}</label>
|
|
40
|
+
<input id="onboard-${t.key}" data-onboard-field="${t.key}" class="input-sm"
|
|
41
|
+
type="${t.secret?`password`:`text`}"
|
|
42
|
+
placeholder="${a(t.example)}"
|
|
43
|
+
autocomplete="off" spellcheck="false"
|
|
44
|
+
value="${a(e.draft[t.key]||``)}">
|
|
45
|
+
<span class="onboarding-hint">${a(l(`onboarding.hint.${e.channel}.${t.key}`))}</span>
|
|
46
|
+
</div>`}).join(``):e.step===3?`${x?`<p class="onboarding-guide">${a(l(`onboarding.validating`))}</p>`:e.validatedIdentity?`<p class="onboarding-identity">${a(l(`onboarding.valid`,{identity:e.validatedIdentity}))}</p>`:`<p class="onboarding-guide">${a(l(`onboarding.validateHint`))}</p>`}
|
|
47
|
+
<div class="onboarding-actions">
|
|
48
|
+
<button type="button" class="perm-btn" data-onboard-validate="1" ${x?`disabled`:``}>
|
|
49
|
+
${a(l(`onboarding.validate`))}
|
|
50
|
+
</button>
|
|
51
|
+
</div>`:`<p class="onboarding-next">${a(l(e.saved?`onboarding.next.${e.channel}`:`onboarding.saveHint`))}</p>`}function Ue(e){return e.step===4&&e.saved?`<button type="button" class="perm-btn active" data-onboard-close="1">${a(l(`onboarding.close`))}</button>`:`${e.step>1?`<button type="button" class="perm-btn" data-onboard-back="1">${a(l(`onboarding.back`))}</button>`:``}${e.step===4?`<button type="button" class="perm-btn active" data-onboard-save="1">${a(l(`onboarding.save`))}</button>`:`<button type="button" class="perm-btn ${xe(e)?`active`:``}" data-onboard-next="1"
|
|
52
|
+
${e.channel===`slack`&&e.step===1&&!xe(e)?`disabled`:``}>${a(l(`onboarding.next`))}</button>`}`}function T(){if(!y||!b)return;let e=b;y.innerHTML=`
|
|
53
|
+
<div class="modal-box onboarding-box" role="dialog" aria-modal="true"
|
|
54
|
+
aria-labelledby="onboarding-title" aria-describedby="onboarding-step-title">
|
|
55
|
+
<div class="onboarding-head">
|
|
56
|
+
<span class="onboarding-title" id="onboarding-title">${a(l(`onboarding.title.${e.channel}`))}</span>
|
|
57
|
+
<span class="onboarding-progress" role="status" aria-live="polite"
|
|
58
|
+
aria-label="${a(l(`onboarding.progressLabel`,{step:e.step,total:4}))}">${e.step}/4</span>
|
|
59
|
+
<button type="button" class="help-trigger onboarding-close" data-onboard-close="1"
|
|
60
|
+
aria-label="${a(l(`onboarding.close`))}">✕</button>
|
|
61
|
+
</div>
|
|
62
|
+
<div class="onboarding-steps" aria-hidden="true">
|
|
63
|
+
${Array.from({length:4},(t,n)=>`<span class="onboarding-dot${n+1===e.step?` is-active`:``}${n+1<e.step?` is-done`:``}"></span>`).join(``)}
|
|
64
|
+
</div>
|
|
65
|
+
<div class="onboarding-step-title" id="onboarding-step-title">${a(l(`onboarding.step.${e.step}`))}</div>
|
|
66
|
+
${He(e)}
|
|
67
|
+
<div class="onboarding-error" role="alert" style="display:${e.error?``:`none`}">
|
|
68
|
+
${e.error?a(l(`onboarding.error.${e.error}`)):``}
|
|
69
|
+
${e.missingScopes.length?`<span class="onboarding-scopes">${a(e.missingScopes.join(`, `))}</span>`:``}
|
|
70
|
+
</div>
|
|
71
|
+
<div class="onboarding-capability-warning" role="status" style="display:${e.missingCapabilities.length?``:`none`}">
|
|
72
|
+
${e.missingCapabilities.length?a(l(`onboarding.warning.missingCapabilities`,{capabilities:e.missingCapabilities.join(`, `)})):``}
|
|
73
|
+
</div>
|
|
74
|
+
<div class="onboarding-actions onboarding-footer">${Ue(e)}</div>
|
|
75
|
+
</div>`,y.querySelectorAll(`[data-onboard-close]`).forEach(e=>e.addEventListener(`click`,Re)),y.querySelector(`[data-onboard-issuer]`)?.addEventListener(`click`,()=>{b&&(window.open(_e[b.channel],`_blank`,`noopener`),b.channel===`slack`&&(b=Te(b),E()))}),y.querySelector(`[data-onboard-generate-manifest]`)?.addEventListener(`click`,()=>{Ke()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`input`,e=>{C=e.currentTarget.value,b?.channel===`slack`&&(b=Ee(b));let t=y?.querySelector(`[data-onboard-manifest-status]`);t?.classList.remove(`is-error`),t&&(t.textContent=``),E()}),y.querySelector(`[data-onboard-app-name]`)?.addEventListener(`keydown`,e=>{let t=e;t.key!==`Enter`||t.shiftKey||t.isComposing||(t.preventDefault(),Ke())}),y.querySelector(`[data-onboard-back]`)?.addEventListener(`click`,()=>{b&&(b=Ce(b),T())}),y.querySelector(`[data-onboard-next]`)?.addEventListener(`click`,()=>{b&&(qe(),b=Se(b),T())}),y.querySelector(`[data-onboard-validate]`)?.addEventListener(`click`,()=>{Je()}),y.querySelector(`[data-onboard-save]`)?.addEventListener(`click`,()=>{Ye()}),y.querySelectorAll(`[data-onboard-field]`).forEach(e=>{e.addEventListener(`input`,()=>{if(!b)return;let t=e.getAttribute(`data-onboard-field`)||``;b=De(b,t,e.value)}),e.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||(e.preventDefault(),We())})}),Ge()}function E(){if(!y||b?.channel!==`slack`||b.step!==1)return;let e=b.slackSetupStage,t=y.querySelector(`[data-onboard-generate-manifest]`),n=y.querySelector(`[data-onboard-issuer]`),r=y.querySelector(`[data-onboard-next]`);t?.classList.toggle(`active`,e===`manifest`),n?.classList.toggle(`active`,e===`issuer`),n&&(n.disabled=e===`manifest`),r?.classList.toggle(`active`,e===`ready`),r&&(r.disabled=e!==`ready`)}function We(){if(b){if(b.step===3){Je();return}if(b.step===4){b.saved||Ye();return}qe(),b=Se(b),T()}}function Ge(){let e=[...y?.querySelectorAll(`[data-onboard-app-name], [data-onboard-field]`)??[]];if(!e.length)return;let t=e.find(e=>!e.value.trim())??e[0];t?.focus();let n=t?.value.length??0;t?.setSelectionRange?.(n,n)}async function Ke(){if(!y||b?.channel!==`slack`)return;let e=w,t=y.querySelector(`[data-onboard-app-name]`),r=y.querySelector(`[data-onboard-generate-manifest]`),i=y.querySelector(`[data-onboard-manifest-status]`);if(!t||!r||!i)return;let a=t.value.trim();if(C=a,!a||Array.from(a).length>35){i.classList.add(`is-error`),i.textContent=l(`onboarding.slackAppNameError`),t.focus();return}i.classList.remove(`is-error`),i.textContent=``,r.disabled=!0,r.textContent=l(`onboarding.slackManifestGenerating`);try{let t=await n(`/api/slack/manifest?name=${encodeURIComponent(a)}`);if(e!==w||b?.channel!==`slack`||C.trim()!==a)return;let r=t?.json||``;if(!r)throw Error(`empty manifest`);let s=await o(r);if(!s.ok)throw Error(s.error||`copy failed`);if(e!==w||b?.channel!==`slack`||C.trim()!==a)return;b=we(b);let c=t?.botDisplayName;i.textContent=c&&c!==a?l(`onboarding.slackManifestCopiedWithBot`,{bot:c}):l(`onboarding.slackManifestReady`),E()}catch{i.classList.add(`is-error`),i.textContent=l(`onboarding.slackManifestError`)}finally{r.disabled=!1,r.textContent=l(`onboarding.slackGenerateManifest`),E()}}function qe(){if(b)for(let e of y?.querySelectorAll(`[data-onboard-field]`)??[]){let t=e.getAttribute(`data-onboard-field`)||``;b=De(b,t,e.value)}}async function Je(){if(!b||x)return;let e=w;x=!0,T();let t=await n(`/api/channels/validate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(Ae(b))});e===w&&(x=!1,b&&(b=Oe(b,t||{ok:!1,error:`network`}),T()))}async function Ye(){if(!b||S)return;let e=be({...b,step:3});if(e){b={...b,step:3,error:e},T();return}for(let e of v(b.channel))Be(e.settingsId,(b.draft[e.key]||``).trim());let n=w;S=!0;try{await t(`/api/settings`,`PUT`,je(b))}finally{S=!1}n===w&&b&&(b=ke(b),T(),_(),Fe())}function Xe(e){return e.trim().length>0}function Ze(e,t){return e.trim().length>0&&t.trim().length>0}function Qe(e){return e.trim().length>0}function $e(e){return e.trim().startsWith(`xoxb-`)}function et(e){return e.trim().startsWith(`xapp-`)}function D(e){return document.getElementById(e)?.value??``}function O(e){(e===`telegram`?Xe(D(`tgToken`)):e===`discord`?Ze(D(`dcToken`),D(`dcGuildId`)):Qe(D(`slBotToken`)))||Le(e)}async function tt(){let e=document.getElementById(`tgToken`)?.value.trim()||``,n=document.getElementById(`tgChatIds`)?.value.trim()||``,r=n?n.split(`,`).map(e=>parseInt(e.trim(),10)).filter(e=>!isNaN(e)):[];await t(`/api/settings`,`PUT`,{telegram:{token:e,allowedChatIds:r}})}async function nt(e){document.getElementById(`tgOn`)?.classList.toggle(`active`,e),document.getElementById(`tgOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{enabled:e}}),e&&O(`telegram`)}async function rt(e){document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{forwardAll:e}})}async function it(e){document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{telegram:{mentionOnly:e}})}function at(e){if(!e.telegram)return;let t=e.telegram;document.getElementById(`tgOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`tgOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`tgToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`tgChatIds`);t.allowedChatIds?.length&&r&&(r.value=t.allowedChatIds.join(`, `));let i=t.forwardAll!==!1;document.getElementById(`tgForwardOn`)?.classList.toggle(`active`,i),document.getElementById(`tgForwardOff`)?.classList.toggle(`active`,!i);let a=t.mentionOnly!==!1;document.getElementById(`tgMentionOn`)?.classList.toggle(`active`,a),document.getElementById(`tgMentionOff`)?.classList.toggle(`active`,!a)}async function ot(){let e=document.getElementById(`dcToken`)?.value.trim()||``,n=document.getElementById(`dcGuildId`)?.value.trim()||``,r=document.getElementById(`dcChannelIds`)?.value.trim()||``,i=r?r.split(`,`).map(e=>e.trim()).filter(Boolean):[];await t(`/api/settings`,`PUT`,{discord:{token:e,guildId:n,channelIds:i}})}async function st(e){document.getElementById(`dcOn`)?.classList.toggle(`active`,e),document.getElementById(`dcOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{enabled:e}}),e&&O(`discord`)}async function ct(e){document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{forwardAll:e}})}async function lt(e){document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{allowBots:e}})}async function ut(e){document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{discord:{mentionOnly:e}})}function dt(e){if(!e.discord)return;let t=e.discord;document.getElementById(`dcOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`dcOff`)?.classList.toggle(`active`,!t.enabled);let n=document.getElementById(`dcToken`);t.token&&n&&(n.value=t.token);let r=document.getElementById(`dcGuildId`);t.guildId&&r&&(r.value=t.guildId);let i=document.getElementById(`dcChannelIds`);t.channelIds?.length&&i&&(i.value=t.channelIds.join(`, `));let a=t.forwardAll!==!1;document.getElementById(`dcForwardOn`)?.classList.toggle(`active`,a),document.getElementById(`dcForwardOff`)?.classList.toggle(`active`,!a);let o=!!t.allowBots;document.getElementById(`dcAllowBotsOn`)?.classList.toggle(`active`,o),document.getElementById(`dcAllowBotsOff`)?.classList.toggle(`active`,!o);let s=!!t.mentionOnly;document.getElementById(`dcMentionOn`)?.classList.toggle(`active`,s),document.getElementById(`dcMentionOff`)?.classList.toggle(`active`,!s)}var ft=!1,pt=!1,k=[];async function mt(){try{let t=await e();return await(await fetch(`${i}/api/settings/slack/reset`,{method:`POST`,headers:t?{Authorization:`Bearer ${t}`}:{}})).json().catch(()=>null)}catch{return null}}function ht(e){let t=e?.slack;return!t?.enabled&&!t?.botToken&&!t?.appToken&&!t?.teamId&&!t?.channelIds?.length&&!t?.attachPort}function gt(){return l(`settings.slack.resetManagedByEnvironment`,{variables:k.join(`, `)||`SLACK_*`})}function _t(){ft||(ft=!0,yt(`slBotToken`,`slack-bot-token-error`,$e),yt(`slAppToken`,`slack-app-token-error`,et),document.getElementById(`slack-reset-connection`)?.addEventListener(`click`,()=>{vt()}))}async function vt(){if(pt)return;if(k.length>0){window.alert(gt());return}let e=document.getElementById(`slBotToken`),t=document.getElementById(`slAppToken`);if(!e?.value.trim()&&!t?.value.trim()){window.alert(l(`settings.slack.resetEmpty`));return}if(!window.confirm(l(`settings.slack.resetConfirm`)))return;let r=document.getElementById(`slack-reset-connection`);pt=!0,r&&(r.disabled=!0);try{let e=await mt(),t=await n(`/api/settings`);if(t&&Et(t),await _(),e?.error===`slack_connection_managed_by_environment`){let t=Array.isArray(e.environmentVariables)?e.environmentVariables.join(`, `):`SLACK_*`;window.alert(l(`settings.slack.resetManagedByEnvironment`,{variables:t}));return}if(!ht(t)){window.alert(l(`settings.slack.resetFailed`));return}for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`])document.getElementById(e)?.classList.remove(`input-error`);for(let e of[`slack-bot-token-error`,`slack-app-token-error`]){let t=document.getElementById(e);t&&(t.style.display=`none`)}document.getElementById(`slOff`)?.classList.add(`active`),document.getElementById(`slOn`)?.classList.remove(`active`)}finally{pt=!1,r&&(r.disabled=k.length>0)}}function yt(e,t,n){let r=document.getElementById(e),i=document.getElementById(t);if(!r||!i)return;let a=()=>{let e=r.value.trim().length>0&&!n(r.value);i.style.display=e?``:`none`,r.classList.toggle(`input-error`,e)};r.addEventListener(`blur`,a),r.addEventListener(`input`,()=>{i.style.display!==`none`&&a()})}async function bt(){if(k.length>0){window.alert(gt());return}let e=document.getElementById(`slBotToken`)?.value.trim()||``,n=document.getElementById(`slAppToken`)?.value.trim()||``,r=document.getElementById(`slTeamId`)?.value.trim()||``,i=document.getElementById(`slChannelIds`)?.value.trim()||``,a=document.getElementById(`slAttachPort`)?.value.trim()||``,o=i?i.split(`,`).map(e=>e.trim()).filter(Boolean):[];await t(`/api/settings`,`PUT`,{slack:{botToken:e,appToken:n,teamId:r,channelIds:o,attachPort:a}})}async function xt(e){if(k.length>0){window.alert(gt());return}document.getElementById(`slOn`)?.classList.toggle(`active`,e),document.getElementById(`slOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{enabled:e}}),e&&O(`slack`)}async function St(e){document.getElementById(`slForwardOn`)?.classList.toggle(`active`,e),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{forwardAll:e}})}async function Ct(e){document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,e),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{allowBots:e}})}async function wt(e){document.getElementById(`slMentionOn`)?.classList.toggle(`active`,e),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{mentionOnly:e}})}async function Tt(e){document.getElementById(`slThreadOn`)?.classList.toggle(`active`,e),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!e),await t(`/api/settings`,`PUT`,{slack:{replyInThread:e}})}function Et(e){if(!e.slack)return;let t=e.slack;k=Array.isArray(e.slackEnvironmentVariables)?e.slackEnvironmentVariables:[];let n=k.length>0,r=document.getElementById(`slack-environment-managed`);r&&(r.style.display=n?``:`none`,r.textContent=n?l(`settings.slack.managedByEnvironment`,{variables:k.join(`, `)}):``);for(let e of[`slBotToken`,`slAppToken`,`slTeamId`,`slChannelIds`,`slAttachPort`]){let t=document.getElementById(e);t&&(t.disabled=n)}for(let e of[`slOff`,`slOn`,`slack-reset-connection`,`slack-onboarding-trigger`]){let t=document.getElementById(e);t&&(t.disabled=n)}document.getElementById(`slOn`)?.classList.toggle(`active`,!!t.enabled),document.getElementById(`slOff`)?.classList.toggle(`active`,!t.enabled);let i=document.getElementById(`slBotToken`);i&&(i.value=n?``:t.botToken||``);let a=document.getElementById(`slAppToken`);a&&(a.value=n?``:t.appToken||``);let o=document.getElementById(`slTeamId`);o&&(o.value=n?``:t.teamId||``);let s=document.getElementById(`slChannelIds`);s&&(s.value=n?``:t.channelIds?.join(`, `)||``);let c=document.getElementById(`slAttachPort`);c&&(c.value=n?``:t.attachPort||``);let u=t.forwardAll!==!1;document.getElementById(`slForwardOn`)?.classList.toggle(`active`,u),document.getElementById(`slForwardOff`)?.classList.toggle(`active`,!u);let d=!!t.allowBots;document.getElementById(`slAllowBotsOn`)?.classList.toggle(`active`,d),document.getElementById(`slAllowBotsOff`)?.classList.toggle(`active`,!d);let f=t.mentionOnly!==!1;document.getElementById(`slMentionOn`)?.classList.toggle(`active`,f),document.getElementById(`slMentionOff`)?.classList.toggle(`active`,!f);let p=t.replyInThread!==!1;document.getElementById(`slThreadOn`)?.classList.toggle(`active`,p),document.getElementById(`slThreadOff`)?.classList.toggle(`active`,!p)}var Dt=[`telegram`,`discord`,`slack`];async function Ot(){try{let e=(await n(`/api/settings`))?.messaging?.enabledChannels;return Array.isArray(e)?e.filter(e=>Dt.includes(e)):[]}catch{return[]}}async function kt(e,n){let r=await Ot(),i=n?[...new Set([...r,e])]:r.filter(t=>t!==e);await t(`/api/settings`,`PUT`,{messaging:{enabledChannels:i}}),await _()}async function At(e){document.getElementById(`chTelegram`)?.classList.toggle(`active`,e===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,e===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,e===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,e===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,e===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,e===`slack`?``:`none`),await t(`/api/settings`,`PUT`,{messaging:{homeChannel:e}}),await _()}async function jt(e){await kt(e,!0),await At(e),O(e)}function Mt(e){let t=e.messaging,n=t?.homeChannel&&Dt.includes(t.homeChannel)?t.homeChannel:`telegram`;document.getElementById(`chTelegram`)?.classList.toggle(`active`,n===`telegram`),document.getElementById(`chDiscord`)?.classList.toggle(`active`,n===`discord`),document.getElementById(`chSlack`)?.classList.toggle(`active`,n===`slack`),document.getElementById(`channelTelegramSettings`)?.style.setProperty(`display`,n===`telegram`?``:`none`),document.getElementById(`channelDiscordSettings`)?.style.setProperty(`display`,n===`discord`?``:`none`),document.getElementById(`channelSlackSettings`)?.style.setProperty(`display`,n===`slack`?``:`none`),_()}function Nt(e){let t=document.getElementById(`fallbackOrderList`);if(!t)return;let n=Object.keys(e.perCli||{}),r=e.fallbackOrder||[],i=Math.min(n.length-1,3),o=``;for(let e=0;e<i;e++){let t=r[e]||``,i=n.map(e=>`<option value="${a(e)}" ${e===t?`selected`:``}>${a(d(e)?.label||oe(e))}</option>`).join(``);o+=`
|
|
76
|
+
<div class="settings-row sub-row">
|
|
77
|
+
<label style="min-width:60px">Fallback ${e+1}</label>
|
|
78
|
+
<select id="fallback${e}"
|
|
79
|
+
style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;flex:1">
|
|
80
|
+
<option value="">${l(`settings.none`)}</option>
|
|
81
|
+
${i}
|
|
82
|
+
</select>
|
|
83
|
+
</div>`}t.innerHTML=o}async function Pt(){let e=[...document.querySelectorAll(`#fallbackOrderList select`)].map(e=>e.value).filter(Boolean);await t(`/api/settings`,`PUT`,{fallbackOrder:e})}function Ft(e){if(e.url)return`remote`;if(!e.command)return null;let t=e.command;return t===`npx`||t.endsWith(`/npx`)?`npx`:t===`uvx`||t===`uv`||t.endsWith(`/uvx`)?`uvx`:t===`docker`||t.endsWith(`/docker`)?`docker`:null}function It(e){return Object.values(e).filter(e=>e.command===`npx`||e.command===`uv`||e.command===`uvx`).length}var A=null;async function j(){try{let e=await n(`/api/mcp`);if(!e)return;A=e;let t=document.getElementById(`mcpServerList`);if(!t)return;let r=Object.entries(e.servers||{});if(!r.length){t.textContent=l(`mcp.noServers`),Lt(0);return}t.innerHTML=r.map(([e,t])=>{let n=Ft(t),r=t.url||[t.command,...(t.args||[]).slice(0,2)].filter(Boolean).map(e=>a(e)).join(` `),i=n?` <span style="opacity:.5;font-size:0.85em">[${a(n)}]</span>`:``;return`<div style="padding:2px 0">• <b>${a(e)}</b> <span style="opacity:.6">${r}</span>${i}</div>`}).join(``),Lt(It(e.servers))}catch{}}function Lt(e){let t=document.getElementById(`installBundleLabel`);t&&(t.textContent=`Install bundle (${e})`);let n=t?.closest(`button`);n&&(n.disabled=e===0)}async function Rt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=l(`mcp.syncing`);try{let n=await t(`/api/mcp/sync`,`POST`,{});if(!n){e.innerHTML=`${c.error} sync failed`;return}let r=n.results||{};e.innerHTML=Object.entries(r).map(([e,t])=>`${t?c.check:c.skip} ${a(e)}`).join(` `)}catch(t){e.innerHTML=`${c.error} ${a(t.message)}`}}}async function zt(){let e=document.getElementById(`mcpSyncResult`);if(e){e.style.display=`block`,e.textContent=l(`mcp.installing`);try{let n=await t(`/api/mcp/install`,`POST`,{});if(!n){e.innerHTML=`${c.error} install failed`;return}e.innerHTML=Object.entries(n.results||{}).map(([e,t])=>`${t.status===`installed`?c.check:t.status===`skip`?c.skip:c.error} <b>${a(e)}</b>: ${a(t.status)}${t.bin?` ${c.arrowRight} `+a(t.bin):``}`).join(`<br>`),j()}catch(t){e.innerHTML=`${c.error} ${a(t.message)}`}}}var M=null,N=null,P=null,F=null,I=null,L=null,R=`local`,z=!1,Bt=[];function Vt(){if(M)return;M=document.createElement(`div`),M.id=`mcpModal`,M.className=`modal-overlay mcp-modal-overlay`,M.setAttribute(`role`,`presentation`),M.setAttribute(`aria-hidden`,`true`),M.addEventListener(`click`,e=>{e.target===M&&U()});let e=document.createElement(`div`);e.className=`modal-box mcp-modal-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-label`,`MCP Server Management`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header`;let n=document.createElement(`span`);n.textContent=`MCP Server Management`;let r=document.createElement(`button`);r.type=`button`,r.className=`help-trigger`,r.textContent=`?`,r.setAttribute(`aria-label`,`MCP help`),r.addEventListener(`click`,()=>Zt());let i=document.createElement(`button`);i.type=`button`,i.className=`btn-modal-close`,i.setAttribute(`aria-label`,`Close`),i.textContent=`x`,i.addEventListener(`click`,()=>U());let a=document.createElement(`div`);a.style.cssText=`display:flex;align-items:center;gap:6px`,a.append(n,r),t.append(a,i),N=document.createElement(`div`),N.style.cssText=`padding:16px;overflow-y:auto;flex:1`;let o=document.createElement(`div`);o.style.cssText=`display:flex;gap:4px;margin-bottom:12px`;let s=Ht(`Active Servers`,!0),c=Ht(`Add New`,!1),l=Ht(`Browse`,!1);Bt=[s,c,l],s.addEventListener(`click`,()=>B(`active`)),c.addEventListener(`click`,()=>B(`add`)),l.addEventListener(`click`,()=>B(`browse`)),o.append(s,c,l),P=document.createElement(`div`),L=document.createElement(`div`),L.style.display=`none`,L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,F=document.createElement(`div`),F.style.display=`none`,F.innerHTML=Ut(),F.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.addEventListener(`click`,()=>{R=e.dataset.mcpSubtab,Wt()})}),I=F.querySelector(`#mcpAddError`);let u=F.querySelector(`[data-action="mcpAddAndSync"]`);u&&u.addEventListener(`click`,()=>void Xt());let d=F.querySelector(`[data-action="closeMcpModal"]`);d&&d.addEventListener(`click`,()=>U()),N.append(o,P,L,F);let f=document.createElement(`div`);f.className=`modal-footer`;let p=document.createElement(`button`);p.type=`button`,p.className=`btn-save`,p.textContent=`Close`,p.addEventListener(`click`,()=>U()),f.append(p),e.append(t,N,f),M.append(e),document.body.append(M)}function Ht(e,t){let n=document.createElement(`button`);return n.type=`button`,n.className=`btn-clear btn-tab${t?` is-active`:``}`,n.textContent=e,n}function Ut(){return`
|
|
84
|
+
<div style="display:flex;gap:4px;margin-bottom:8px">
|
|
85
|
+
<button type="button" class="btn-clear btn-tab is-active" data-mcp-subtab="local">Local</button>
|
|
86
|
+
<button type="button" class="btn-clear btn-tab" data-mcp-subtab="remote">Remote</button>
|
|
87
|
+
</div>
|
|
88
|
+
<div id="mcpAddLocal">
|
|
89
|
+
<div class="settings-row"><label>Name</label><input type="text" id="mcpAddName" placeholder="my-server"></div>
|
|
90
|
+
<div class="settings-row"><label>Command</label><input type="text" id="mcpAddCommand" placeholder="npx"></div>
|
|
91
|
+
<div class="settings-row"><label>Args (comma separated)</label><input type="text" id="mcpAddArgs" placeholder="-y, @upstash/context7-mcp"></div>
|
|
92
|
+
<div class="settings-row"><label>Env (KEY=value per line)</label><textarea id="mcpAddEnv" rows="2" placeholder="API_KEY=xxx"></textarea></div>
|
|
93
|
+
</div>
|
|
94
|
+
<div id="mcpAddRemote" style="display:none">
|
|
95
|
+
<div class="settings-row"><label>Name</label><input type="text" id="mcpAddRemoteName" placeholder="my-api"></div>
|
|
96
|
+
<div class="settings-row"><label>URL</label><input type="text" id="mcpAddUrl" placeholder="https://mcp.example.com/sse"></div>
|
|
97
|
+
<div class="settings-row"><label>Headers (KEY=value per line)</label><textarea id="mcpAddHeaders" rows="2"></textarea></div>
|
|
98
|
+
</div>
|
|
99
|
+
<div id="mcpAddError" class="text-error text-xs py-1" style="display:none"></div>
|
|
100
|
+
<div style="display:flex;gap:8px;margin-top:12px;justify-content:flex-end">
|
|
101
|
+
<button type="button" class="btn-clear" data-action="closeMcpModal">Cancel</button>
|
|
102
|
+
<button type="button" class="btn-clear btn-save" data-action="mcpAddAndSync">Add & Sync</button>
|
|
103
|
+
</div>`}function B(e){P&&(P.style.display=e===`active`?``:`none`),F&&(F.style.display=e===`add`?``:`none`),L&&(L.style.display=e===`browse`?``:`none`),Bt.forEach((t,n)=>{let r=[`active`,`add`,`browse`][n];t.classList.toggle(`is-active`,r===e)}),e===`active`&&Gt(),e===`add`&&qt(),e===`browse`&&Qt()}function Wt(){let e=F?.querySelector(`#mcpAddLocal`),t=F?.querySelector(`#mcpAddRemote`);e&&(e.style.display=R===`local`?``:`none`),t&&(t.style.display=R===`remote`?``:`none`),F?.querySelectorAll(`[data-mcp-subtab]`).forEach(e=>{e.classList.toggle(`is-active`,e.dataset.mcpSubtab===R)})}function Gt(){if(!P||!A)return;let e=Object.entries(A.servers||{});if(!e.length){P.innerHTML=`<p style="opacity:.5">No active MCP servers.</p>`;return}P.innerHTML=e.map(([e,t])=>{let n=Ft(t),r=n?`<span class="mcp-active-tag">[${a(n)}]</span>`:``,i=t.command?a(t.command)+(t.args?.length?` `+t.args.map(e=>a(e)).join(` `):``):``,o=t.url?a(t.url):``,s=t.env?Object.keys(t.env):[],c=t.headers?Object.keys(t.headers):[],l=``;return o&&(l+=`<div class="mcp-active-detail">URL: ${o}</div>`),i&&(l+=`<div class="mcp-active-detail">Command: ${i}</div>`),s.length&&(l+=`<div class="mcp-active-detail">Env: ${s.map(e=>a(e)).join(`, `)}</div>`),c.length&&(l+=`<div class="mcp-active-detail">Headers: ${c.map(e=>a(e)).join(`, `)}</div>`),`<div class="mcp-active-row">
|
|
104
|
+
<div style="flex:1">
|
|
105
|
+
<div style="display:flex;align-items:center;gap:6px">
|
|
106
|
+
<span class="mcp-active-name">${a(e)}</span>
|
|
107
|
+
${r}
|
|
108
|
+
</div>
|
|
109
|
+
${l}
|
|
110
|
+
</div>
|
|
111
|
+
<button type="button" class="btn-clear mcp-active-remove" data-mcp-remove="${a(e)}">Remove</button>
|
|
112
|
+
</div>`}).join(``),P.querySelectorAll(`[data-mcp-remove]`).forEach(e=>{e.addEventListener(`click`,()=>{let t=e.dataset.mcpRemove;t&&Kt(t)})})}async function Kt(e){if(!A)return;let n={...A.servers};delete n[e];try{await t(`/api/mcp`,`PUT`,{...A,servers:n}),await t(`/api/mcp/sync`,`POST`,{}),await j(),Gt()}catch(e){V(e.message)}}function qt(){for(let e of[`mcpAddName`,`mcpAddCommand`,`mcpAddArgs`,`mcpAddEnv`,`mcpAddRemoteName`,`mcpAddUrl`,`mcpAddHeaders`]){let t=(F??document).querySelector(`#${e}`);t&&(t.value=``)}Jt()}function V(e){I&&(I.style.display=`block`,I.textContent=e)}function Jt(){I&&(I.style.display=`none`)}function Yt(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r).trim()]=e.slice(r+1))}return t}function H(e){return(F??document).querySelector(`#${e}`)?.value?.trim()??``}async function Xt(){if(!A)return;let e=R===`remote`,n,r;if(e){n=H(`mcpAddRemoteName`);let e=H(`mcpAddUrl`),t=H(`mcpAddHeaders`);if(!n){V(`Name is required.`);return}if(!e){V(`URL is required.`);return}r={url:e};let i=Yt(t);Object.keys(i).length>0&&(r.headers=i)}else{n=H(`mcpAddName`);let e=H(`mcpAddCommand`),t=H(`mcpAddArgs`),i=H(`mcpAddEnv`);if(!n){V(`Name is required.`);return}if(!e){V(`Command is required.`);return}r={command:e};let a=t.split(/,|\n/).map(e=>e.trim()).filter(Boolean);a.length>0&&(r.args=a);let o=Yt(i);Object.keys(o).length>0&&(r.env=o)}if(A.servers[n]){V(`Server "${n}" already exists.`);return}try{let e={...A,servers:{...A.servers,[n]:r}};await t(`/api/mcp`,`PUT`,e),await t(`/api/mcp/sync`,`POST`,{}),await j(),U()}catch(e){V(e.message)}}function Zt(){let e=document.getElementById(`mcpHelpOverlay`);if(e){e.remove();return}let t=document.createElement(`div`);t.id=`mcpHelpOverlay`,t.className=`mcp-help-overlay`,t.addEventListener(`click`,e=>{e.target===t&&t.remove()});let n=document.createElement(`div`);n.className=`mcp-help-inner`,n.innerHTML=`
|
|
113
|
+
<h4>MCP Server</h4>
|
|
114
|
+
<p>MCP (Model Context Protocol) adds capabilities to AI agents — like installing apps on a phone.</p>
|
|
115
|
+
|
|
116
|
+
<h4>Local Server</h4>
|
|
117
|
+
<p>Runs on your machine. Provide a command and args.</p>
|
|
118
|
+
<pre>Name: context7
|
|
119
|
+
Command: npx
|
|
120
|
+
Args: -y, @upstash/context7-mcp</pre>
|
|
121
|
+
|
|
122
|
+
<h4>Remote Server</h4>
|
|
123
|
+
<p>Connects to an external URL (SSE or Streamable HTTP).</p>
|
|
124
|
+
<pre>Name: my-api
|
|
125
|
+
URL: https://mcp.example.com/sse</pre>
|
|
126
|
+
|
|
127
|
+
<h4>Server Types</h4>
|
|
128
|
+
<p><code>[npx]</code> Node.js package (npx -y ...)<br>
|
|
129
|
+
<code>[uvx]</code> Python package (uvx ...)<br>
|
|
130
|
+
<code>[docker]</code> Docker container<br>
|
|
131
|
+
<code>[remote]</code> External URL</p>
|
|
132
|
+
|
|
133
|
+
<h4>After Adding</h4>
|
|
134
|
+
<p>The server is automatically synced to all installed CLIs (Claude, Codex, Gemini, Cursor, Copilot, OpenCode).</p>
|
|
135
|
+
<p><code>Install bundle</code> converts npx/uvx servers to global binaries for faster startup.</p>
|
|
136
|
+
|
|
137
|
+
<div style="text-align:right;margin-top:12px">
|
|
138
|
+
<button type="button" class="btn-save" id="mcpHelpClose">OK</button>
|
|
139
|
+
</div>
|
|
140
|
+
`,t.append(n),document.body.append(t),n.querySelector(`#mcpHelpClose`)?.addEventListener(`click`,()=>t.remove())}async function Qt(){if(L){L.innerHTML=`<p style="opacity:.5">Loading registry...</p>`,A||await j();try{let e=await n(`/api/mcp/registry`);if(!e?.entries?.length&&!e?.builtins?.length){L.innerHTML=`<p style="opacity:.5">No MCP servers in registry.</p>`;return}let t=A?Object.keys(A.servers):[],r=``;r+=e.entries.map(e=>{let n=t.includes(e.id),r=e.tags?.slice(0,3).map(e=>`<span style="background:var(--border);padding:1px 4px;border-radius:3px;font-size:10px">${a(e)}</span>`).join(` `)||``;return`<div style="padding:10px 0;border-bottom:1px solid var(--border)">
|
|
141
|
+
<div style="display:flex;align-items:center;gap:8px">
|
|
142
|
+
<b>${a(e.name)}</b>
|
|
143
|
+
<span style="opacity:.5;font-size:0.85em">[${a(e.type)}]</span>
|
|
144
|
+
<span style="opacity:.4;font-size:0.85em">${a(e.category)}</span>
|
|
145
|
+
${n?`<span style="color:var(--success);font-size:11px">Installed</span>`:`<button type="button" class="btn-clear text-xs" style="color:var(--accent)" data-registry-install="${a(e.id)}">+ Install</button>`}
|
|
146
|
+
</div>
|
|
147
|
+
<p style="margin:4px 0 4px 0;font-size:12px;opacity:.75">${a(e.description)}</p>
|
|
148
|
+
<div style="display:flex;gap:4px;align-items:center">
|
|
149
|
+
${r}
|
|
150
|
+
${e.url?`<a href="${a(e.url)}" target="_blank" rel="noopener noreferrer" style="font-size:10px;opacity:.5;margin-left:auto">source</a>`:``}
|
|
151
|
+
</div>
|
|
152
|
+
</div>`}).join(``),e.builtins?.length&&(r+=`<div style="margin-top:16px;padding-top:12px;border-top:2px solid var(--border)">
|
|
153
|
+
<h4 style="font-size:12px;opacity:.6;margin:0 0 8px">Harness Built-ins (omo / omx)</h4>
|
|
154
|
+
<p style="font-size:11px;opacity:.4;margin:0 0 8px">Not installable via registry — built into harness runtimes. Listed for reference.</p>`,r+=e.builtins.map(e=>{let t=e.standalone_config&&Object.keys(e.standalone_config).length>0;return`<div style="padding:6px 0;border-bottom:1px solid var(--border)">
|
|
155
|
+
<div style="display:flex;align-items:center;gap:6px">
|
|
156
|
+
<b style="font-size:12px">${a(e.name)}</b>
|
|
157
|
+
<span style="opacity:.4;font-size:0.8em">${a(e.harness)}</span>
|
|
158
|
+
${t?`<button type="button" class="btn-clear text-xs" style="color:var(--accent)" data-builtin-install="${a(e.id)}">+ Install standalone</button>`:``}
|
|
159
|
+
</div>
|
|
160
|
+
<p style="margin:2px 0;font-size:11px;opacity:.65">${a(e.description)}</p>
|
|
161
|
+
</div>`}).join(``),r+=`</div>`),L.innerHTML=r,L.querySelectorAll(`[data-registry-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.registryInstall,r=e.entries.find(e=>e.id===n);r&&$t(r,t)})}),L.querySelectorAll(`[data-builtin-install]`).forEach(t=>{t.addEventListener(`click`,()=>{let n=t.dataset.builtinInstall,r=e.builtins?.find(e=>e.id===n);r?.standalone_config&&$t({id:r.id,name:r.name,description:r.description,category:`harness`,type:`remote`,config:r.standalone_config,tags:[],url:r.source},t)})})}catch(e){L.innerHTML=`<p style="color:var(--color-error)">${a(e.message)}</p>`}}}async function $t(e,n){if(A){n.disabled=!0,n.textContent=`Installing...`;try{let r=e.config,i={...A,servers:{...A.servers,[e.id]:r}};await t(`/api/mcp`,`PUT`,i),await t(`/api/mcp/sync`,`POST`,{}),await j(),n.textContent=`Installed`,n.style.color=`var(--success)`}catch(e){n.textContent=`Error`,n.disabled=!1,console.error(`[mcp-registry] install failed:`,e.message)}}}function en(){Vt(),M?.classList.add(`open`),M?.setAttribute(`aria-hidden`,`false`),z=!0,B(`active`)}function U(){z&&(M?.classList.remove(`open`),M?.setAttribute(`aria-hidden`,`true`),z=!1,qt(),document.getElementById(`mcpHelpOverlay`)?.remove())}var tn=!1;function nn(){tn||(tn=!0,document.addEventListener(`keydown`,e=>{if(document.getElementById(`mcpHelpOverlay`)&&e.key===`Escape`){e.preventDefault(),document.getElementById(`mcpHelpOverlay`)?.remove();return}z&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),U())},!0))}var rn=/^\/(?:Users|home)\/[^/]+/,an=32;function on(e){return e.replace(rn,`~`)}function sn(e){if(e.length<=an)return e;let t=e.split(`/`);return t.length<=3?e:`${t.slice(0,2).join(`/`)}/…/${t[t.length-1]}`}function cn(e){let t=(e||[]).filter(e=>typeof e==`string`&&e.trim());return t.length===0?null:{text:`${sn(on(t[0]))}${t.length>1?` +${t.length-1}`:``}`,title:t.join(`
|
|
162
|
+
`)}}function ln(){return document.getElementById(`headerGitStatus`)}function un(){let e=ln();e&&(e.hidden=!0,e.textContent=``,e.removeAttribute(`title`),e.removeAttribute(`aria-label`))}function dn(e){if(!e?.available)return null;let t=e.branch||e.head;if(!t)return null;let n=[`/`,`⑂ ${t}`];e.trackedChangedCount>0&&n.push(`*${e.trackedChangedCount}`),e.untrackedCount>0&&n.push(`?${e.untrackedCount}`);let r=[`Git: ${e.branch?`branch ${e.branch}`:`detached ${e.head}`}`];return e.trackedChangedCount>0&&r.push(`${e.trackedChangedCount} tracked changes`),e.untrackedCount>0&&r.push(`${e.untrackedCount} untracked files`),{text:n.join(` `),title:r.join(`, `)}}function fn(e){let t=ln();if(!t)return;let n=dn(e);if(!n){un();return}t.hidden=!1,t.textContent=n.text,t.title=n.title,t.setAttribute(`aria-label`,n.title)}async function pn(){fn(await n(`/api/project/git-summary`))}function mn(e){(Array.isArray(e.changedKeys)?e.changedKeys:[]).includes(`projectDirs`)&&pn()}var W=null;function hn(e){return!e||typeof e!=`object`?null:`settings`in e&&e.settings?e.settings:`data`in e&&e.data?e.data:e}async function gn(t){if(t.runtimeDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`신규 설치의 기본 런타임이 Codex App으로 변경되었습니다. 지금 Codex App을 사용하시겠습니까?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/runtime-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ee(a.status))return hn(o)??t;window.alert(`런타임 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`런타임 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}async function _n(t){if(t.multiSessionDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`이제 대화 세션을 여러 개 열 수 있습니다. 켜면 동시 실행도 2로 올라가서, 두 번째 세션이 첫 번째가 끝나기를 기다리지 않습니다. 지금 켤까요?`)?`accept`:`keep`;try{let r=await e(),a=await fetch(`${i}/api/settings/multi-session-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(ee(a.status))return hn(o)??t;window.alert(`세션 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`세션 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}function vn(e){let t=document.getElementById(`headerCli`);if(!t)return;let n=ae(e),r=G(e);t.innerHTML=n?`${n} ${a(r)}`:a(r)}function yn(e){let t=document.getElementById(`headerProject`);if(!t)return;bn(t),t.hidden=!1;let n=cn(e);if(!n){t.classList.add(`is-empty`),t.textContent=`Project: not set`,t.title=`Click to choose the project root folder`;return}t.classList.remove(`is-empty`),t.textContent=`Project ${n.text}`,t.title=`${n.title}\n(click to change)`}function bn(e){if(e.dataset.pickerBound)return;e.dataset.pickerBound=`1`,e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`);let n=async()=>{if(e.classList.contains(`is-picking`))return;e.classList.add(`is-picking`);let n=e.textContent;e.textContent=`Choosing folder…`;try{let n=await t(`/api/project/pick`,`POST`,{});if(n&&!n.cancelled&&`projectDirs`in n){e.classList.remove(`is-picking`),yn(n.projectDirs);return}}catch{}e.classList.remove(`is-picking`),e.textContent=n};e.addEventListener(`click`,()=>{n()}),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})}function xn(e){typeof e.cli==`string`&&e.cli&&vn(e.cli),`projectDirs`in e&&yn(e.projectDirs),mn(e)}function G(e){return d(e)?.label||oe(e)||e}function Sn(e){let t=e.finally(()=>{W===t&&(W=null)});return W=t,t}async function Cn(){let e=W;e&&await e}function wn(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function K(e){return document.getElementById(`model`+wn(e))}function Tn(e){return document.getElementById(`customModel`+wn(e))}function En(e){return document.getElementById(`effort`+wn(e))}function q(e,t,{includeCustom:n=!1,includeDefault:r=!1,selected:i=``}={}){if(!e)return;let o=r?`<option value="default">default</option>`:``,s=n?`<option value="__custom__">${l(`model.customOption`)}</option>`:``;e.innerHTML=o+(t||[]).map(e=>`<option value="${a(e)}">${a(e)}</option>`).join(``)+s,i&&Array.from(e.options).some(e=>e.value===i)&&(e.value=i)}function J(e,t){if(!e||!t||Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t;let r=e.querySelector(`option[value="__custom__"]`);r?e.insertBefore(n,r):e.appendChild(n)}function Dn(e=null){let t=f(),n=document.getElementById(`selCli`);if(n){let r=e?.cli||n.value||t[0]||`claude`,i=e=>p.includes(e),o=!i(r)&&t.includes(r),s=n.dataset.expanded===`1`,c=t.filter(i),u=t.filter(e=>!i(e)),f=c.length===0||o||s,m=c.map(e=>{let t=d(e)?.label||e;return`<option value="${a(e)}">${a(t)}</option>`}).join(``);u.length>0&&(f?(m+=`<option disabled>──────</option>`,m+=u.map(e=>{let t=d(e)?.label||e;return`<option value="${a(e)}">${a(t)}</option>`}).join(``)):m+=`<option value="__show_more__">${l(`cli.showMore`)}</option>`),n.innerHTML=m,Array.from(n.options).some(e=>e.value===r)&&(n.value=r)}let r=document.getElementById(`flushCli`);if(r){let n=e?.memory?.cli||r.value||``;r.innerHTML=`<option value="">(active CLI)</option>`+t.map(e=>`<option value="${a(e)}">${a(G(e))}</option>`).join(``),Array.from(r.options).some(e=>e.value===n)&&(r.value=n)}}function Y(e,t){return(t||``).trim()}function On(e,t,n,r){let i=(t||``).trim();if(r){let t=e?.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e?.effortsByModel?.[i]||n||e?.efforts||[]}function kn(e,t,n){let r=(t||``).trim();return(n?e?.defaultEffortByModelByProvider?.[n]?.[r]:void 0)??e?.defaultEffortByModel?.[r]??``}function An(e=null){for(let t of f()){let n=d(t),r=t!==`pi`&&n?.providers?.length?Z(t):``,i=K(t);if(i){if(n?.modelNote)i.innerHTML=`<option value="">${a(n.modelNote)}</option>`,i.title=n.modelNote,i.disabled=!0;else{let a=Y(t,e?.perCli?.[t]?.model||i.value||``),o=t===`pi`&&e?.perCli?.pi?.provider||``,s=t===`pi`&&o?te(e?.pi,o):[];q(i,t===`pi`&&s.length?s:r?n?.modelsByProvider?.[r]||h[t]||[]:h[t]||[],{includeCustom:!0,selected:a}),a&&!Array.from(i.options).some(e=>e.value===a)&&(J(i,a),i.value=a),i.disabled=!1}}let o=En(t);if(o){let i=r?n?.effortsByProvider?.[r]||[]:null,s=Y(t,e?.perCli?.[t]?.model||K(t)?.value||``),c=On(n,s,i,r||void 0),l=[``].concat(c),u=e?.perCli?.[t]?.effort??o.value??``,d=!u||c.includes(u)?u:kn(n,s,r||void 0),f=[...new Set(l)],p=f.length===1&&!f[0]&&n?.effortNote?n.effortNote:`— none`;o.innerHTML=f.map(e=>e?`<option value="${a(e)}">${a(e)}</option>`:`<option value="">${a(p)}</option>`).join(``),n?.effortNote&&(o.title=n.effortNote),o.disabled=f.length===1&&!f[0],Array.from(o.options).some(e=>e.value===d)&&(o.value=d)}}}function jn(){return document.getElementById(`selEffort`)?.value||``}function X(e,t=``,n){let r=document.getElementById(`selEffort`);if(!r)return;let i=d(e),o=e!==`pi`&&i?.providers?.length?Z(e):``,s=o?i?.effortsByProvider?.[o]||[]:null,c=Y(e,n??document.getElementById(`selModel`)?.value??``),l=On(i,c,s,o||void 0);if(l.length===0){let e=i?.effortNote||`— none`;r.innerHTML=`<option value="">${a(e)}</option>`,r.title=e,r.disabled=!0;return}let u=[``].concat(l);r.innerHTML=[...new Set(u)].map(e=>e?`<option value="${a(e)}">${a(e)}</option>`:`<option value="">— none</option>`).join(``),r.disabled=!1,r.title=i?.effortNote||``;let f=!t||l.includes(t)?t:kn(i,c,o||void 0);Array.from(r.options).some(e=>e.value===f)&&(r.value=f)}function Mn(e,t,n){return e?(e.innerHTML=n.map(e=>`<option value="${a(e)}">${a(oe(e)||e)}</option>`).join(``),Array.from(e.options).some(e=>e.value===t)?e.value=t:e.options.length>0&&(e.value=e.options[0]?.value||t),e.value||t):t}function Z(e){let t=document.getElementById(`selCliProvider`),n=document.getElementById(`provider${e.charAt(0).toUpperCase()+e.slice(1).replace(/-./g,e=>e[1].toUpperCase())}`),r=d(e);return t?.value||n?.value||r?.defaultProvider||``}function Nn(e,t){let n=document.getElementById(`cliProviderWrap`),r=document.getElementById(`selCliProvider`),i=document.getElementById(`cliProviderLabel`),a=d(t);if(!(t!==`pi`&&(a?.providers?.length??0)>0))return n&&(n.style.display=`none`),a?.defaultProvider||``;i&&(i.textContent=`Provider`);let o=Mn(r,e?.perCli?.[t]?.provider||r?.value||a?.defaultProvider||``,a.providers);return n&&(n.style.display=``),o}async function Pn(){await m();let e=se(),t=await n(`/api/settings`);if(!t)return;ce(t,e),t=await gn(t),t=await _n(t),u(t.locale??``),Dn(t),ne(t.pi),ie(t.pi,t.perCli?.pi?.provider),t.perCli?.pi?.provider&&re(t.perCli.pi.provider,t.pi),Nn(t,t.cli||``),An(t);let r=document.getElementById(`selCli`);r&&Array.from(r.options).some(e=>e.value===t.cli)&&(r.value=t.cli,r.dataset.prev=t.cli);let i=document.getElementById(`inpCwd`);i&&(i.textContent=t.workingDir);let o=document.getElementById(`headerCli`);if(o){let e=ae(t.cli),n=G(t.cli);o.innerHTML=e?`${e} ${a(n)}`:a(n)}if(yn(t.projectDirs),await pn(),Ln(t.permissions,!1),t.perCli)for(let[e,n]of Object.entries(t.perCli)){let t=K(e),r=En(e);if(t&&n.model){let r=Y(e,n.model);J(t,r),t.value=r}if(r&&(r.value=n.effort||``),e===`codex`&&n.fastMode!==void 0&&(document.getElementById(`codexFastOn`)?.classList.toggle(`active`,n.fastMode),document.getElementById(`codexFastOff`)?.classList.toggle(`active`,!n.fastMode)),e===`codex`){let e=!!n.contextWindow;document.getElementById(`codexCtxOn`)?.classList.toggle(`active`,e),document.getElementById(`codexCtxOff`)?.classList.toggle(`active`,!e);let t=document.getElementById(`codexCtxValues`);t&&(t.style.display=e?``:`none`);let r=document.getElementById(`codexCtxWindow`),i=document.getElementById(`codexCtxCompact`);r&&n.contextWindowSize&&(r.value=String(n.contextWindowSize)),i&&n.contextCompactLimit&&(i.value=String(n.contextCompactLimit))}if(e===`claude`){let e=!!(n.model&&String(n.model).endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,e),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!e)}}$(!1);let s=t.activeOverrides?.[t.cli]||{},c=t.perCli?.[t.cli]||{},l=s.model||c.model,d=s.effort??c.effort??``,f=document.getElementById(`selModel`);if(l&&f){let e=Y(t.cli,l);e&&!Array.from(f.options).some(t=>t.value===e)&&J(f,e),f.value=e}X(t.cli,d),at(t),dt(t),Et(t),Mt(t),Nt(t),j(),le(t.stt||{})}async function Fn(){let e=document.getElementById(`selCli`)?.value||`claude`,n={cli:e},r=d(e);return e!==`pi`&&r?.providers?.length&&(n.perCli={[e]:{provider:Z(e)}}),Sn((async()=>{let r=await t(`/api/settings`,`PUT`,n);if(!r){await Pn();return}let i=r.cli||e,a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===i)&&(a.value=i,a.dataset.prev=i),vn(i),s([`instances`],`active-cli-changed`)})())}function In(e){return e===`auto`?`Auto`:e===`safe`?`Safe`:e==null?`Not provided`:Array.isArray(e)&&e.every(e=>typeof e==`string`)?`Custom (${e.length} ${e.length===1?`entry`:`entries`})`:`Unrecognized`}function Ln(e,t=!0){if(!t){let t=document.getElementById(`configuredPermText`);t&&(t.textContent=`Configured policy: ${In(e)}`);let n=document.getElementById(`configuredPerm`);n?.classList.toggle(`active`,e===`auto`),n?.classList.toggle(`perm-auto`,e===`auto`)}t&&r(`/api/settings`,`PUT`,{permissions:`auto`})}function Rn(e){let t=K(e);return t?t.value===`__custom__`?Tn(e)?.value?.trim()||t.options[0]?.value||`default`:t.value:`default`}function zn(e,t){let n=Tn(e);n&&(t.value===`__custom__`?(n.style.display=`block`,n.focus()):(n.style.display=`none`,e===`claude`&&Bn(t.value),Q()))}function Bn(e){let t=!!(e&&e.endsWith(`[1m]`));document.getElementById(`claude1mOn`)?.classList.toggle(`active`,t),document.getElementById(`claude1mOff`)?.classList.toggle(`active`,!t)}function Vn(e,t){let n=t.value.trim();if(!n)return;let r=K(e);r&&(J(r,n),r.value=n,t.style.display=`none`,e===`claude`&&Bn(n),Q())}function Hn(){let e=document.getElementById(`selCli`)?.value||``,t=Z(e),n=document.getElementById(`selCliProvider`);n&&Array.from(n.options).some(e=>e.value===t)&&(n.value=t),An(null),d(e)?.providers?.length&&$(!1),Q()}async function Q(){let e={};for(let t of f()){if(!K(t))continue;let n=En(t),r={model:Rn(t),effort:n?n.value:``},i=d(t);if(t!==`pi`&&i?.providers?.length&&(r.provider=Z(t)),t===`pi`){let e=document.getElementById(`providerPi`);e?.value&&(r.provider=e.value)}if(t===`codex`){r.fastMode=document.getElementById(`codexFastOn`)?.classList.contains(`active`)??!1,r.contextWindow=document.getElementById(`codexCtxOn`)?.classList.contains(`active`)??!1;let e=document.getElementById(`codexCtxWindow`),t=document.getElementById(`codexCtxCompact`);r.contextWindowSize=parseInt(e?.value||`1000000`,10),r.contextCompactLimit=parseInt(t?.value||`900000`,10)}e[t]=r}await t(`/api/settings`,`PUT`,{perCli:e})}function $(e=!0){let t=document.getElementById(`selCli`);if(!t)return;if(t.value===`__show_more__`){let e=t.dataset.prev||f()[0]||`claude`;t.dataset.expanded=`1`,Dn(null),Array.from(t.options).some(t=>t.value===e)&&(t.value=e);try{t.showPicker()}catch{}return}t.dataset.prev=t.value;let r=t.value||`claude`,i=Nn(null,r),o=d(r),s=i&&o?.modelsByProvider?.[i]?o.modelsByProvider[i]:h[r]||[],c=document.getElementById(`selModel`);o?.modelNote&&c?(c.innerHTML=`<option value="">${a(o.modelNote)}</option>`,c.title=o.modelNote,c.disabled=!0):(q(c,s,{includeCustom:!0,includeDefault:!0}),c&&(c.disabled=!1,c.title=``)),vn(r),X(r);let u=document.getElementById(`selModelCustom`);u&&u.remove();let p=document.createElement(`input`);if(p.type=`text`,p.id=`selModelCustom`,p.className=`custom-model-input`,p.placeholder=l(`model.placeholder`),p.style.display=`none`,p.onchange=function(){let e=this.value.trim();e&&c&&(J(c,e),c.value=e,this.style.display=`none`,X(r,jn(),e),Un())},!c){e&&Fn();return}c.parentElement?.appendChild(p),c.onchange=function(){this.value===`__custom__`?(p.style.display=`block`,p.focus()):(p.style.display=`none`,X(r,jn(),this.value),Un())},n(`/api/settings`).then(e=>{if(!e)return;let t=e.activeOverrides?.[r]||{},n=e.perCli?.[r]||{},i=t.model||n.model,a=t.effort??n.effort??``;if(i&&c){let t=d(r);if(r!==`pi`&&t?.providers?.length&&(e.perCli?.[r]?.provider||t.defaultProvider||``)!==Z(r)){X(r,a);return}let n=Y(r,i);J(c,n),c.value=n}X(r,a)}),e&&Fn()}async function Un(){let e=document.getElementById(`selCli`)?.value||`claude`,n=document.getElementById(`selModel`)?.value||`default`;n===`__custom__`&&(n=document.getElementById(`selModelCustom`)?.value?.trim()||`default`);let r=document.getElementById(`selEffort`),i={};i[e]={model:n},r&&!r.disabled&&(i[e].effort=r.value||``);let a={activeOverrides:i},o=d(e);e!==`pi`&&o?.providers?.length&&(a.perCli={[e]:{provider:Z(e)}}),await t(`/api/settings`,`PUT`,a)&&s([`instances`],`active-cli-changed`)}function Wn(){let e=document.getElementById(`flushCli`)?.value||document.getElementById(`selCli`)?.value||`claude`,t=h[e]||[];q(document.getElementById(`flushModel`),t,{includeDefault:!0}),qn(),Kn()}async function Gn(){let e=await n(`/api/memory-files`);if(!e)return;let t=document.getElementById(`flushCli`),r=document.getElementById(`flushModel`);t&&e.cli&&(t.value=e.cli);let i=e.cli||document.getElementById(`selCli`)?.value||`claude`;q(r,h[i]||[],{includeDefault:!0}),r&&e.model&&(J(r,e.model),r.value=e.model),qn()}async function Kn(){let e=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``;await t(`/api/memory-files/settings`,`PUT`,{cli:e,model:n})}function qn(){let e=document.getElementById(`flushAgentBadge`);if(!e)return;let t=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``,r=t||document.getElementById(`selCli`)?.value||``,i=[];r&&i.push(t?G(r):`${G(r)}*`),n&&n!=="default"&&i.push(n),e.textContent=i.length?`(${i.join(` / `)})`:``}export{ot as A,le as B,_t as C,St as D,Ct as E,tt as F,rt as I,nt as L,lt as M,ct as N,wt as O,ut as P,it as R,jt as S,xt as T,j as _,Pn as a,Nt as b,Hn as c,Q as d,Ln as f,zt as g,nn as h,Gn as i,st as j,Tt as k,xn as l,Cn as m,Rn as n,$ as o,Fn as p,zn as r,Wn as s,Vn as t,Un as u,en as v,bt as w,Pt as x,Rt as y,Ie as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as e,l as t}from"./settings-core-CIPKFBNN.js";export{t as refreshHeaderFromSettingsChange,e as savePerCli};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={};function t(t,n){for(var r=0;r<n.length;r++)e[n[r]]=t}var n=[`true`,`false`],r=[`if`,`then`,`do`,`else`,`elif`,`while`,`until`,`for`,`in`,`esac`,`fi`,`fin`,`fil`,`done`,`exit`,`set`,`unset`,`export`,`function`],i=`ab.awk.bash.beep.cat.cc.cd.chown.chmod.chroot.clear.cp.curl.cut.diff.echo.find.gawk.gcc.get.git.grep.hg.kill.killall.ln.ls.make.mkdir.openssl.mv.nc.nl.node.npm.ping.ps.restart.rm.rmdir.sed.service.sh.shopt.shred.source.sort.sleep.ssh.start.stop.su.sudo.svn.tee.telnet.top.touch.vi.vim.wall.wc.wget.who.write.yes.zsh`.split(`.`);t(`atom`,n),t(`keyword`,r),t(`builtin`,i);function a(t,n){if(t.eatSpace())return null;var r=t.sol(),i=t.next();if(i===`\\`)return t.next(),null;if(i===`'`||i===`"`||i==="`")return n.tokens.unshift(o(i,i==="`"?`quote`:`string`)),u(t,n);if(i===`#`)return r&&t.eat(`!`)?(t.skipToEnd(),`meta`):(t.skipToEnd(),`comment`);if(i===`$`)return n.tokens.unshift(c),u(t,n);if(i===`+`||i===`=`)return`operator`;if(i===`-`)return t.eat(`-`),t.eatWhile(/\w/),`attribute`;if(i==`<`){if(t.match(`<<`))return`operator`;var a=t.match(/^<-?\s*(?:['"]([^'"]*)['"]|([^'"\s]*))/);if(a)return n.tokens.unshift(l(a[1]||a[2])),`string.special`}if(/\d/.test(i)&&(t.eatWhile(/\d/),t.eol()||!/\w/.test(t.peek())))return`number`;t.eatWhile(/[\w-]/);var s=t.current();return t.peek()===`=`&&/\w+/.test(s)?`def`:e.hasOwnProperty(s)?e[s]:null}function o(e,t){var n=e==`(`?`)`:e==`{`?`}`:e;return function(r,i){for(var a,l=!1;(a=r.next())!=null;){if(a===n&&!l){i.tokens.shift();break}
|
|
1
|
+
var e={};function t(t,n){for(var r=0;r<n.length;r++)e[n[r]]=t}var n=[`true`,`false`],r=[`if`,`then`,`do`,`else`,`elif`,`while`,`until`,`for`,`in`,`esac`,`fi`,`fin`,`fil`,`done`,`exit`,`set`,`unset`,`export`,`function`],i=`ab.awk.bash.beep.cat.cc.cd.chown.chmod.chroot.clear.cp.curl.cut.diff.echo.find.gawk.gcc.get.git.grep.hg.kill.killall.ln.ls.make.mkdir.openssl.mv.nc.nl.node.npm.ping.ps.restart.rm.rmdir.sed.service.sh.shopt.shred.source.sort.sleep.ssh.start.stop.su.sudo.svn.tee.telnet.top.touch.vi.vim.wall.wc.wget.who.write.yes.zsh`.split(`.`);t(`atom`,n),t(`keyword`,r),t(`builtin`,i);function a(t,n){if(t.eatSpace())return null;var r=t.sol(),i=t.next();if(i===`\\`)return t.next(),null;if(i===`'`||i===`"`||i==="`")return n.tokens.unshift(o(i,i==="`"?`quote`:`string`)),u(t,n);if(i===`#`)return r&&t.eat(`!`)?(t.skipToEnd(),`meta`):(t.skipToEnd(),`comment`);if(i===`$`)return n.tokens.unshift(c),u(t,n);if(i===`+`||i===`=`)return`operator`;if(i===`-`)return t.eat(`-`),t.eatWhile(/\w/),`attribute`;if(i==`<`){if(t.match(`<<`))return`operator`;var a=t.match(/^<-?\s*(?:['"]([^'"]*)['"]|([^'"\s]*))/);if(a)return n.tokens.unshift(l(a[1]||a[2])),`string.special`}if(/\d/.test(i)&&(t.eatWhile(/\d/),t.eol()||!/\w/.test(t.peek())))return`number`;t.eatWhile(/[\w-]/);var s=t.current();return t.peek()===`=`&&/\w+/.test(s)?`def`:e.hasOwnProperty(s)?e[s]:null}function o(e,t){var n=e==`(`?`)`:e==`{`?`}`:e;return function(r,i){for(var a,l=!1;(a=r.next())!=null;){if(a===n&&!l){i.tokens.shift();break}if(a===`$`&&!l&&e!==`'`&&r.peek()!=n){l=!0,r.backUp(1),i.tokens.unshift(c);break}if(!l&&e!==n&&a===e)return i.tokens.unshift(o(e,t)),u(r,i);if(!l&&/['"]/.test(a)&&!/['"]/.test(e)){i.tokens.unshift(s(a,`string`)),r.backUp(1);break}l=!l&&a===`\\`}return t}}function s(e,t){return function(n,r){return r.tokens[0]=o(e,t),n.next(),u(n,r)}}var c=function(e,t){t.tokens.length>1&&e.eat(`$`);var n=e.next();return/['"({]/.test(n)?(t.tokens[0]=o(n,n==`(`?`quote`:n==`{`?`def`:`string`),u(e,t)):(/\d/.test(n)||e.eatWhile(/\w/),t.tokens.shift(),`def`)};function l(e){return function(t,n){return t.sol()&&t.string==e&&n.tokens.shift(),t.skipToEnd(),`string.special`}}function u(e,t){return(t.tokens[0]||a)(e,t)}var d={name:`shell`,startState:function(){return{tokens:[]}},token:function(e,t){return u(e,t)},languageData:{autocomplete:n.concat(r,i),closeBrackets:{brackets:[`(`,`[`,`{`,`'`,`"`,"`"]},commentTokens:{line:`#`}}};export{d as shell};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-DSSkXCir.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./state-Dl-xxPoS.js";import{i as t,t as n}from"./api-CUtiCd2-.js";import{n as r,t as i}from"./bounded-api-DdpT93LB.js";import{t as a}from"./preload-helper-CfbQpVni.js";import{I as o,N as s,O as c,f as l,g as u,k as d,n as f,z as p}from"./render-DRweFDYR.js";import{_ as m,g as h,p as g}from"./iframe-renderer-CFD7rXuQ.js";import{A as _,C as v,D as y,E as b,F as x,H as S,I as C,M as w,N as T,O as ee,S as te,T as ne,U as E,_ as re,b as ie,d as D,f as ae,g as O,h as oe,j as se,k as ce,m as le,p as ue,u as de,v as k,w as A,x as j,y as M}from"./message-history-CYp7fqXy.js";import{n as N}from"./presentation-DWHWElFr.js";import{a as P,d as fe,f as F,i as pe,l as me,n as he,r as ge,s as _e,t as ve,u as ye}from"./ui-CCXcKDL5.js";var I=null,be=0,xe=[],Se=2e3,Ce=3e4,we=1.5,Te=null,Ee=4e4,De=1e4,Oe=0,ke=!1,Ae=null,je=null;function Me(e){je=e}function Ne(){let e=null;try{e=je?.()??null}catch{e=null}return e?`&scope=${encodeURIComponent(e)}`:``}function Pe(){Ae||=setInterval(()=>{I&&Ie&&ke&&(Date.now()-Oe<=Ee||(console.warn(`[sse] stalled channel (no ping in`,Ee,`ms) — forcing reconnect`),I.close(),I=null,Ie=!1,He?.(),Xe(Fe)))},De)}var Fe=``,Ie=!1,Le=!1,Re=!1,ze=!1,Be=!1,Ve=null,He=null,Ue=null;function We(e){Ve=e}function Ge(e){He=e}function Ke(e){Ue=e}function qe(e,t,n){let r={topic:e,event:t,handler:n};return xe.push(r),()=>{let e=xe.indexOf(r);e>=0&&xe.splice(e,1)}}function Je(e,t,n){for(let r of xe)if((r.topic===`*`||r.topic===e)&&(r.event===null||r.event===t))try{r.handler(n)}catch(e){console.warn(`[sse] handler error:`,e.message)}}function Ye(){Le||Te||(Te=setTimeout(()=>{Te=null,Xe(Fe)},Se),Se=Math.min(Se*we,Ce))}function Xe(e){Fe=e,Le=!1,Te&&=(clearTimeout(Te),null),I&&I.close();let t=`${n}/api/events?lang=${encodeURIComponent(e)}`+Ne()+(be?`&lastEventId=${be}`:``);ze=!1,Be=!1,I=new EventSource(t),Pe(),I.onopen=()=>{Se=2e3,Ie=!0,Re=!0,ze=!0,Oe=Date.now(),Ve?.()},I.onerror=()=>{if(I?.close(),I=null,!ze&&!Re&&Ue){Be||(Be=!0,Ue());return}Ie&&(Ie=!1,He?.()),Ye()},I.onmessage=e=>{be=parseInt(e.lastEventId||`0`,10)||be;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[sse] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.topic!=`string`||typeof t.event!=`string`){console.warn(`[sse] invalid message shape:`,t);return}if(Oe=Date.now(),t.topic===`system`&&t.event===`ping`){ke=!0;return}Je(t.topic,t.event,t)}}var Ze=3e3,L=new Map,R=[],Qe=(e,t)=>`${e}:${t}`;function $e(e=[]){let t=document.getElementById(`pendingQueue`);if(t){if(R=e.slice(),!e.length){at(new Set),t.classList.remove(`visible`),t.innerHTML=``;return}t.classList.add(`visible`),t.innerHTML=`
|
|
3
|
+
<div class="pending-queue-header">
|
|
4
|
+
<span class="pending-queue-title">${d.hourglass} <span data-i18n="queue.pendingTitle">${s(p(`queue.pendingTitle`))}</span> <span class="pending-queue-count">${e.length}</span></span>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="pending-queue-list">
|
|
7
|
+
${e.map(et).join(``)}
|
|
8
|
+
</div>
|
|
9
|
+
`,at(new Set(e.map(e=>e.id))),it()}}function et(e){let t=(e.prompt||``).replace(/\s+/g,` `).trim(),n=t.length>140?t.slice(0,140)+`…`:t,r=e.source?`<span class="pending-row-source">${s(e.source)}</span>`:``,i=s(p(`queue.copy`)),a=s(p(`queue.steer`)),o=s(p(`queue.delete`));return`<div class="pending-row" data-pending-id="${s(e.id)}" title="${s(t)}">
|
|
10
|
+
<span class="pending-row-text">${s(n)}</span>
|
|
11
|
+
${r}
|
|
12
|
+
<button class="pending-row-btn pending-row-copy" data-pending-action="copy" title="${i}" aria-label="${i}"><span class="pending-btn-content">${d.copy}</span></button>
|
|
13
|
+
<button class="pending-row-btn pending-row-steer" data-pending-action="steer" data-i18n-title="queue.steer" title="${a}" aria-label="${a}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content"><span class="pending-steer-arrow" aria-hidden="true">↳</span><span class="pending-steer-label">${a}</span></span></button>
|
|
14
|
+
<button class="pending-row-btn pending-row-delete" data-pending-action="delete" data-i18n-title="queue.delete" title="${o}" aria-label="${o}"><span class="pending-arm-fill" aria-hidden="true"></span><span class="pending-btn-content">${d.trash}</span></button>
|
|
15
|
+
</div>`}function tt(e,t){let n=document.querySelector(`.pending-row[data-pending-id="${CSS.escape(e)}"]`);return n?n.querySelector(`[data-pending-action="${t}"]`):null}function nt(e,t){let n=tt(e,t);if(!n)return;n.classList.add(`armed`),n.setAttribute(`title`,p(`queue.cancelArm`));let r=n.querySelector(`.pending-arm-fill`);r&&(r.style.animation=`none`,r.offsetWidth,r.style.animation=``)}function rt(e,t){let n=tt(e,t);n&&(n.classList.remove(`armed`),n.setAttribute(`title`,p(t===`steer`?`queue.steer`:`queue.delete`)))}function it(){for(let e of L.values()){let t=tt(e.id,e.action);t&&(t.classList.add(`armed`),t.setAttribute(`title`,p(`queue.cancelArm`)))}}function at(e){for(let[t,n]of L)e.has(n.id)||(clearTimeout(n.timerId),L.delete(t))}function ot(e,n){let r=Qe(e,n),i=setTimeout(()=>ct(e,n),Ze);L.set(r,{id:e,action:n,timerId:i}),nt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`POST`,{}).catch(()=>{})}function st(e,n){let r=Qe(e,n),i=L.get(r);i&&(clearTimeout(i.timerId),L.delete(r),rt(e,n),n===`steer`&&t(`/api/orchestrate/queue/${encodeURIComponent(e)}/hold`,`DELETE`,{}).catch(()=>{}))}async function ct(e,n){L.delete(Qe(e,n));let r=n===`steer`?`/api/orchestrate/queue/${encodeURIComponent(e)}/steer`:`/api/orchestrate/queue/${encodeURIComponent(e)}`,i=n===`steer`?`POST`:`DELETE`;if(n===`steer`&&x(`running`),await t(r,i,{})==null){R=R.filter(t=>t.id!==e),$e(R),n===`steer`&&Z(`steer-fire-miss`).catch(()=>{});return}R=R.filter(t=>t.id!==e),$e(R)}function lt(e,t){if(L.has(Qe(e,t))){st(e,t);return}ot(e,t)}function ut(){let e=document.getElementById(`pendingQueue`);e&&e.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-pending-action]`);if(!t)return;let n=t.closest(`.pending-row`)?.dataset.pendingId;if(!n)return;let r=t.dataset.pendingAction;if(r===`copy`){let e=R.find(e=>e.id===n);if(e?.prompt&&(await c(e.prompt)).ok){let e=t.querySelector(`.pending-btn-content`);e&&(e.innerHTML=d.checkSimple,setTimeout(()=>{e.innerHTML=d.copy},600))}return}lt(n,r===`steer`?`steer`:`delete`)})}var dt=800,ft=64,pt=`CLI-JAW`,mt=!1,z=0,ht=pt,B=null,gt=``,_t=!1,vt=0;function yt(){return navigator}function bt(){return document.visibilityState!==`visible`||!document.hasFocus()}function xt(e){return e-vt<dt}function St(){if(B)return B;let e=document.querySelector(`link[rel~="icon"]`);if(e)return B=e,gt=e.href||e.getAttribute(`href`)||``,e;let t=document.createElement(`link`);return t.rel=`icon`,document.head.appendChild(t),B=t,_t=!0,t}function Ct(e){let t=document.createElement(`canvas`);t.width=ft,t.height=ft;let n=t.getContext(`2d`);return n?(n.clearRect(0,0,ft,ft),n.font=`44px "Apple Color Emoji", "Segoe UI Emoji", sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(`🦈`,28,36),n.beginPath(),n.arc(50,15,e>1?12:9,0,Math.PI*2),n.fillStyle=`#ff335f`,n.fill(),n.lineWidth=4,n.strokeStyle=`#ffffff`,n.stroke(),e>1&&(n.fillStyle=`#ffffff`,n.font=`bold 15px sans-serif`,n.textAlign=`center`,n.textBaseline=`middle`,n.fillText(String(Math.min(e,9)),50,16)),t.toDataURL(`image/png`)):gt}async function wt(e){let t=yt();if(typeof t.setAppBadge==`function`)try{await t.setAppBadge(e)}catch{}}async function Tt(){let e=yt();if(typeof e.clearAppBadge==`function`)try{await e.clearAppBadge()}catch{}}function Et(){document.title=`(${z}) ${ht}`;let e=St();e&&(e.href=Ct(z)),wt(z)}function Dt(){document.title=ht}function Ot(){if(B){if(_t){B.remove(),B=null,_t=!1;return}B.href=gt}}function kt(){mt||(mt=!0,ht=document.title||pt,St(),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&jt()}),window.addEventListener(`focus`,()=>jt()))}function At(){if(!mt||!bt())return;let e=Date.now();xt(e)||(vt=e,z+=1,Et())}function jt(){mt&&z!==0&&(z=0,vt=0,Dt(),Ot(),Tt())}function Mt(e,t){return!e||!t||e===`all`||e===t}function Nt(e){let t=N(e);return!t||e.version!==1?null:{version:1,...t}}var Pt=6291456,Ft=e=>typeof e==`object`&&!!e&&!Array.isArray(e),V=e=>typeof e==`string`&&e.length>0&&e.length<=240;function It(e){let{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s}=e;if(!V(t)||!V(n)||!V(r)||!V(i)||!V(a)||o!==`approval`&&o!==`question`||typeof s!=`number`||!Number.isSafeInteger(s))return null;let c=M(e.view);return c?{runId:t,sessionId:n,scope:r,turnId:i,requestId:a,requestType:o,expiresAt:s,view:c}:null}function Lt(e){return JSON.stringify([e.runId,e.sessionId,e.scope,e.turnId,e.requestId,e.requestType,e.view])}function Rt(e){let t=e.view.fields;return t.length>0&&(e.requestType===`approval`?t.length===1&&!t[0].multiSelect&&!t[0].allowFreeform&&t[0].options.length>0:t.every(e=>e.options.length>0||e.allowFreeform))}function zt(e,t,n={}){let a={...t},o=e.ownerDocument,s=o.createElement(`section`);s.className=`native-requests`,s.hidden=!0,s.setAttribute(`aria-label`,`Live runtime requests`);let c=o.createElement(`p`);c.className=`native-request-status`;let l=o.createElement(`p`);l.className=`native-request-announcer`,l.setAttribute(`role`,`status`),l.setAttribute(`aria-live`,`polite`),l.setAttribute(`aria-atomic`,`true`);let u=o.createElement(`h2`);u.className=`native-request-title`;let d=o.createElement(`p`);d.className=`native-request-context`;let f=o.createElement(`div`);f.className=`native-request-controls`;let p=k(`Refresh requests`,()=>{n.onRefresh?n.onRefresh():F()});s.append(u,d,c,f,p);let m=[...e.children].find(e=>e.classList.contains(`chat-input-area`));e.insertBefore(l,m??null),e.insertBefore(s,m??null);let h=null,g=null,_=null,v,y=0,b=0,x=!1,S=!1,C=!1,w=!1,T=n.health??`healthy`,ee=0,te=!1,ne=!1,E=()=>!x&&(n.isCurrent?.()??!0),re=0,ie=null,D=null,ae=!1,O=null,oe=o.defaultView,se=()=>{ae=!0,++re,D=null},ce=()=>{ae=!1},le=e=>{s.contains(e.target)||(++re,D=null)};o.addEventListener(`focusin`,le),oe?.addEventListener(`blur`,se),oe?.addEventListener(`focus`,ce);function ue(){return ae?null:s.contains(o.activeElement)?re:C&&o.activeElement===o.body?ie:null}function de(t=!0){if(D===null)return;if(ae||D!==re){D=null;return}let n=s.isConnected&&!s.hidden?f.querySelector(`input:not(:disabled), textarea:not(:disabled), button:not(:disabled)[aria-disabled="false"]`)??p:e.querySelector(`#chatInput`)??o.getElementById(`chatInput`);n?.isConnected&&!n.hasAttribute(`disabled`)&&n.focus({preventScroll:!0}),t&&!C&&(D=null)}function k(e,t){let n=o.createElement(`button`);return n.type=`button`,n.textContent=e,n.addEventListener(`click`,t),n}function A(e,t=!1){t&&(O=e);let n=(T===`healthy`?``:T===`unknown`?`Live request updates not connected. `:`Connection lost. Live request updates unavailable. `)+(te&&T!==`healthy`?`Manually refreshed; updates remain unavailable. `:``)+e;c.textContent!==n&&(c.textContent=n);let r=T===`healthy`&&e===`No pending runtime requests.`?O??e:n;l.textContent!==r&&(l.textContent=r)}function j(){f.querySelectorAll(`button`).forEach(e=>{let t=w||C||!S;e.disabled=w||C||!S&&o.activeElement!==e,e.setAttribute(`aria-disabled`,String(t))}),f.querySelectorAll(`input, textarea`).forEach(e=>{e.disabled=C}),s.setAttribute(`aria-busy`,String(C))}function M(e=ue()){D=e,clearTimeout(v),v=void 0,h=null,S=!1,b++,u.textContent=``,d.textContent=``,f.replaceChildren(),de(!1)}function N(){clearTimeout(v),h&&!w&&(v=setTimeout(()=>{if(E()){if(h&&h.expiresAt>Date.now()){N();return}M(),A(T===`healthy`?`Request expired. Checking pending requests.`:`Request expired. Refresh requests to check what is pending.`,!0),F(`auto`)}},Math.min(2147483647,Math.max(0,h.expiresAt-Date.now()))))}function P(e){u.textContent=e.view.title,d.textContent=`Execution scope: ${e.scope} · Run: ${e.runId}`;let t=e.view.fields;if(!Rt(e))return;let n=b,r=e=>{b===n&&fe(e)},i=o.createElement(`form`);i.noValidate=!0;let a=[];for(let[n,s]of t.entries()){let t=o.createElement(`fieldset`),c=o.createElement(`legend`);c.textContent=s.label,t.append(c);let l=[];for(let i of s.options)if(e.requestType===`approval`)t.append(k(i.label,()=>r({optionId:i.id})));else{let e=o.createElement(`label`),r=o.createElement(`input`);r.type=s.multiSelect?`checkbox`:`radio`,r.name=`native-question-${n}`,r.value=i.id,e.append(r,o.createTextNode(i.label)),t.append(e),l.push({id:i.id,input:r})}let u=null;if(e.requestType===`question`&&s.allowFreeform){!s.multiSelect&&l.length&&t.append(k(`Clear selection`,()=>{l.forEach(e=>{e.input.checked=!1})}));let e=o.createElement(`label`);e.append(o.createTextNode(`Other answer`)),u=o.createElement(`textarea`),u.maxLength=2e3,e.append(u),t.append(e)}if(e.requestType===`question`){let e=o.createElement(`p`);e.textContent=s.multiSelect?`Choose at least one answer.`:`Choose exactly one answer.`,t.append(e)}a.push({field:s,choices:l,text:u}),i.append(t)}if(e.requestType===`question`){let e=o.createElement(`button`);e.type=`submit`,e.textContent=`Submit answers`,i.append(e)}i.addEventListener(`submit`,t=>{if(t.preventDefault(),e.requestType!==`question`||!E()||w||C||!S||b!==n)return;let i=0,o=[];for(let{field:e,choices:t,text:n}of a){let r=t.filter(e=>e.input.checked).map(e=>e.id),a=n?.value??``,s=a.length>0,c=r.length+(s&&a.trim()?1:0);if(s&&(!e.allowFreeform||!a.trim()||a.length>2e3)||(e.multiSelect?c<1||r.length>e.options.length:c!==1)){A(`Answer every question. Choose one answer for single-choice questions; other answers must be nonblank and at most 2,000 characters.`);return}i+=a.length,o.push([e.id,{selected:r,...s?{text:a}:{}}])}if(i>8e3){A(`Keep all other answers within 8,000 characters in total.`);return}r({answers:Object.fromEntries(o)})}),i.append(k(`Cancel request`,()=>r({optionId:null}))),f.append(i)}async function fe(e){let t=h;if(!E()||w||C||!S||!t)return;if(t.expiresAt<=Date.now()){M(),A(`Request expired.`,!0),await F(`auto`);return}ie=ue();let n=ie;C=!0,S=!1;let a=b,o=ee;++y,g?.abort();let s=new AbortController;_=s,O=null,j(),A(`Sending response.`);let c=`optionId`in e&&e.optionId===null?`Request cancelled.`:`Response accepted.`,l=!1;try{let n=await r(`/api/runtime/requests/`+encodeURIComponent(t.requestId),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:t.runId,sessionId:t.sessionId,scope:t.scope,turnId:t.turnId,response:e})},s.signal,65536);if(!Ft(n)||n.ok!==!0||!Ft(n.data)||n.data.accepted!==!0)throw Error(`unconfirmed`);l=!0}catch(e){c=e instanceof i&&e.status===409?`Request expired or was already answered. Pending requests refreshed.`:`Response could not be confirmed. Check pending requests before trying again.`}finally{_===s&&(_=null),C=!1}if(!E())return;if(w||o!==ee){j();return}if(b!==a){j(),de();return}l?M(n):S=!1,j(),A(c,!0);let u=y+1;await F(`auto`),!x&&!w&&S&&y===u&&!l&&h&&Lt(h)===Lt(t)&&A(c)}async function F(e=`manual`){if(!E()||e===`auto`&&T!==`healthy`)return;let t=++y;g?.abort();let n=new AbortController;g=n,S=!1,j(),!h&&!ne&&(s.hidden=!1,A(`Loading pending requests.`));try{if(!V(a.sessionId)||!V(a.scope))throw Error(`invalid_identity`);let i=await r(`/api/runtime/requests?sessionId=`+encodeURIComponent(a.sessionId),{method:`GET`},n.signal,Pt);if(!E()||t!==y||n.signal.aborted)return;if(!Ft(i)||i.ok!==!0||!Ft(i.data))throw Error(`invalid_list`);let o=i.data.requests;if(!Array.isArray(o)||o.length>128)throw Error(`invalid_list`);let c=new Set,l=null,u=null,d=!1;for(let e of o){if(!Ft(e)){d=!0;continue}if(V(e.requestId)){if(c.has(e.requestId))throw Error(`duplicate_request`);c.add(e.requestId)}if(e.sessionId!==a.sessionId)continue;let t=It(e);if(!t){d=!0;continue}t.expiresAt<=Date.now()||(l??=t,h&&Lt(h)===Lt(t)&&(u=t))}let f=u??l;h&&!u&&A(h.expiresAt<=Date.now()?`Request expired.`:`Request is no longer pending.`,!0),u||M(),h=f,S=!0,w=!1,ne=!0,te=e===`manual`,s.hidden=!h&&!d&&T===`healthy`,h?(u||(O=null),A(Rt(h)?(O?O+` `:``)+`Runtime is waiting for your response.`:`This request cannot be answered here. Refresh requests or use Stop.`),u||P(h),N()):A(d?`This request cannot be displayed safely. Refresh requests or use Stop.`:`No pending runtime requests.`),j(),de()}catch{if(!E()||t!==y||n.signal.aborted)return;s.hidden=!1,j(),A(`Pending requests could not be loaded. Refresh requests to retry.`)}finally{g===n&&(g=null)}}function pe(e){x||(T=e,te=!1,++ee,w=!0,S=!1,++y,g?.abort(),g=null,clearTimeout(v),v=void 0,s.hidden=!1,j(),A(`Your draft is kept. Refresh requests to check what is pending.`))}return T!==`healthy`&&pe(T),n.autoStart!==!1&&F(`auto`),{refresh:F,setStreamHealth:pe,suspend(){pe(`unavailable`)},dispose(){x||(x=!0,++y,g?.abort(),_?.abort(),M(),s.remove(),l.remove(),de(),o.removeEventListener(`focusin`,le),oe?.removeEventListener(`blur`,se),oe?.removeEventListener(`focus`,ce))}}}function Bt(t){let n=`unknown`,r=0,i=0,a=null,o=``,s=null,c=null,l=!1,d=null,f=()=>u(`/api/orchestrate/snapshot`),p=e=>a?.sessionId===e.sessionId&&a.scope===e.scope;function m(e){let n=t.host();if(n&&!s){if(!c){let e=n.ownerDocument;c=e.createElement(`section`),c.className=`native-requests`,c.setAttribute(`aria-label`,`Live runtime requests`);let t=e.createElement(`p`);t.className=`native-request-status`,t.setAttribute(`role`,`status`);let r=e.createElement(`button`);r.type=`button`,r.textContent=`Refresh requests`,r.addEventListener(`click`,()=>{_()}),c.append(t,r);let i=[...n.children].find(e=>e.classList.contains(`chat-input-area`));n.insertBefore(c,i??null)}c.querySelector(`p`).textContent=e}}function h(){s?.dispose(),s=null,a=null,e.activityIdentity=null}function g(){if(l||n!==`healthy`||!s||d?.epoch===r&&d.path===o&&(!d.panel||d.panel===s))return;l=!0;let e=r;queueMicrotask(()=>{l=!1,e===r&&n===`healthy`&&o===f()&&s?.refresh(`auto`)})}async function _(){if(d?.epoch===r&&d.path===f()&&d.panel===s)return;let e={epoch:r,path:f(),panel:s};d=e;try{(!s||o!==f())&&await t.refreshSnapshot(),e.epoch===r&&e.path===f()&&o===e.path&&(!e.panel||e.panel===s)&&await s?.refresh(`manual`)}catch{m(`Request identity could not be loaded. Refresh requests to retry.`)}finally{d===e&&(d=null)}}function v(e){n=e,++r,s?.setStreamHealth(e),m(e===`healthy`?`Loading request identity.`:`Live request updates unavailable. Refresh requests to check pending requests manually.`)}return{channelChanged(){v(`unknown`)},unavailable(){v(`unavailable`)},sseOpened(){v(`healthy`)},invalidateIdentity(){++r,++i,h(),m(`Request identity changed. Refresh requests to check this conversation.`)},beginSnapshot(){let l=f();o&&o!==l&&h();let u=r,d=++i,v=()=>u===r&&d===i&&l===f();return{path:l,isCurrent:v,accept(r){if(!v())return;let i=N(r);if(!i){h(),m(`Request identity unavailable. Refresh requests to retry.`);return}if(!p(i)){h(),a=i,o=l;let e=t.host();e&&(c?.remove(),c=null,s=zt(e,i,{health:n,autoStart:!1,onRefresh:()=>{_()},isCurrent:()=>a===i&&o===f()}))}e.activityIdentity=i,g()},fail(){v()&&(h(),m(`Request identity could not be loaded. Refresh requests to retry.`))}}},event(e,t){if(n!==`healthy`||!a||o!==f())return;let r=e===`agent_runtime_requests_changed`?Nt(t):null,i=e===`agent_runtime`?k(t):null,s=typeof t==`object`&&!!t&&t.sseReplay===!0;(r&&p(r)||i&&p(i)&&(i.kind===`request`||i.kind===`request-settled`||i.kind===`turn-end`&&!s))&&g()},dispose(){++r,++i,h(),c?.remove(),c=null}}}te({currentMessage:()=>e.currentAgentDiv,useMessage:t=>{e.currentAgentDiv=t},createMessage:Vt,reconcileMessage:(e,t)=>m().reconcileMessage(e,t),replaceAnswer:fe,evicted:ue,closeTrace:()=>{a(()=>import(`./trace-drawer-B05Fa2ja.js`).then(e=>e.closeTraceDrawer()),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace close unavailable`,e))},inspectTrace:(e,t)=>{a(()=>import(`./trace-drawer-B05Fa2ja.js`).then(n=>n.openTraceDrawer(e,void 0,t)),__vite__mapDeps([0])).catch(e=>console.warn(`[activity] trace unavailable`,e))}});function Vt(){return ge(),S(`agent`,``)}var H=Bt({host:()=>document.querySelector(`.chat-area`),refreshSnapshot:()=>Z(`native-request-retry`,{hydrateRun:!0})}),U=[`I`,`P`,`A`,`B`,`C`],W=null;function Ht(e,t,n){let r=U.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=U[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.transform=`translateX(${r-i.left-a/2}px)`}else{let e=o.getBoundingClientRect();t.style.transform=`translateX(${e.left-i.left+e.width/2-a/2}px)`}}var Ut={},Wt=8,Gt=64,G=null,K=0,Kt=[],qt=new Map;function Jt(e){return e!==null&&(Kt.includes(e)||ne(e)||!!A(e)?.answerSource)}function Yt(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.floor(t):null}function Xt(e,t){if(e&&t!=null)for(t>(qt.get(e)||0)&&qt.set(e,t);qt.size>Gt;){let e=null;for(let t of qt.keys())if(t!==G){e=t;break}if(!e)break;qt.delete(e)}}function Zt(e){let t=new Map;for(let n of e?.toolLog||[]){let e=typeof n?.traceRunId==`string`&&n.traceRunId?n.traceRunId:null,r=Yt(n?.traceSeq);e&&r!=null&&r>(t.get(e)||0)&&t.set(e,r)}return t}function Qt(e,t,n){return!n||!e||t==null?!1:t<=(qt.get(e)||0)}function $t(e){++q;let t=e??G;G=null,K=0,t&&!Kt.includes(t)&&(Kt.push(t),Kt.length>Wt&&Kt.shift())}function en(e){e&&e!==G&&(++q,G=e,K=0)}function tn(e){if(e?.running){typeof e.traceRunId==`string`&&e.traceRunId&&(G=e.traceRunId),K=typeof e.textLen==`number`?e.textLen:(e.text||``).length;for(let[t,n]of Zt(e))Xt(t,n)}}var nn=``,q=0,J=!1,rn=!1,an=0,on=[],sn=!1;function Y(){J=!1,_(!1),O(!1),G&&v(G)}function cn(){j(),on=[],an=0,sn=!1}function ln(t,n=`Activity preview is unavailable at its retention limit. The final answer will still appear here.`){let r=e.currentAgentDiv;if((!r||r.dataset.traceRunId!==t)&&(r=Vt(),e.currentAgentDiv=r,r.dataset.traceRunId=t),!r.querySelector(`.activity-unavailable`)){let e=r.ownerDocument.createElement(`p`);e.className=`activity-unavailable`,e.setAttribute(`role`,`status`),e.textContent=n,r.querySelector(`.agent-body`)?.prepend(e)}en(t)}function un(e){let t=new TextEncoder().encode(JSON.stringify(e)).length;if(on.length>=256||an+t>1048576){on=[],an=0,sn=!0;return}on.push(e),an+=t}function dn(t){let n=e.activityIdentity;if(!J||!n){un({gap:t});return}t.sessionId===n.sessionId&&t.scope===n.scope&&(A(t.runId)?v(t.runId):G===t.runId&&e.currentAgentDiv&&ln(t.runId,`Activity is incomplete. Runtime updates were not recorded; the final answer remains available separately.`))}function fn(t,n=!1){let r=e.activityIdentity;if(!J||!r){un({event:t,replay:n});return}if(t.sessionId!==r.sessionId||t.scope!==r.scope)return;let i=A(t.runId);if(i&&i.model.identity.turnId!==t.turnId)return;let a=Jt(t.runId);if(a&&!i||!i&&G&&G!==t.runId&&(t.kind!==`turn-start`||n))return;let o;try{o=b(t,!G||G===t.runId)??(t.kind===`turn-end`&&i?.model.end?.seq===t.seq?i:null)}catch(e){if(!(e instanceof ie))throw e;!n&&(!G||G===t.runId||t.kind===`turn-start`)&&ln(t.runId);return}if(o){if(++q,sn&&v(t.runId),t.kind!==`turn-end`){!a&&!n&&en(t.runId);return}a||G&&G!==t.runId||e.currentAgentDiv!==o.message||(o.answerSource=`canonical`,$t(t.runId),P(t.finalText,void 0,t.finalText===null?`absent`:`present`,t.runId,o.cacheScope,t.sessionId),At())}}function pn(t){if(t.isEmployee===!0)return;let n=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,r=t.runtimeFinality===`present`||t.runtimeFinality===`absent`?t.runtimeFinality:void 0;if(!n&&!r&&(t.error===!0||G&&A(G))){typeof t.text==`string`&&t.text&&E(s(t.text),`tool-activity`);return}let i=n?A(n):void 0,a=!!i&&r!==`absent`&&typeof t.text==`string`;if(Jt(n)){if(a&&n)ee(n,t.text);else if(!i&&n&&r!==`absent`&&typeof t.text==`string`){let r=N(t);r&&r.sessionId===e.activityIdentity?.sessionId&&ce({...r,runId:n,text:t.text})}return}if(n&&G&&n!==G)return;w(n,t.runtimeStatus??(t.error===!0?`error`:void 0)),i&&(i.answerSource=`compatibility`),$t(n);let o=t.type===`agent_done`?t.toolLog:void 0;i&&n?(P(r===`absent`?null:t.text||``,o,r??(a?`present`:void 0),n,i.cacheScope,i.model.identity.sessionId),r===`absent`&&typeof t.text==`string`&&t.text&&E(s(t.text.slice(0,500)),`activity-diagnostic`)):P(t.text||``,o,r),At()}function mn(t){let n=e.currentAgentDiv,r=A(t.runId);if(n&&G===t.runId&&e.activityIdentity?.sessionId===t.sessionId&&n===t.message&&n.dataset.traceRunId===t.runId&&!Jt(t.runId)&&!(r&&(r.model.identity.sessionId!==t.sessionId||r.model.identity.scope!==t.scope||t.turnId!==void 0&&r.model.identity.turnId!==t.turnId))){if(w(t.runId,t.status),$t(t.runId),n.dataset.activitySaved===`true`){r&&(r.answerSource=`saved`),delete n.dataset.activityRecovering,ge(),x(`idle`);return}r?r.answerSource=t.answer.kind===`saved`?`saved`:`unavailable`:t.answer.kind!==`saved`&&e.activityIdentity&&T({runId:t.runId,sessionId:t.sessionId,scope:e.activityIdentity.scope,message:n,cacheScope:t.cacheScope}),P(t.answer.kind===`saved`?t.answer.message.content:null,void 0,t.answer.kind===`saved`?`present`:`absent`,t.runId,t.cacheScope,t.sessionId),At()}}function hn(){oe(e.activityIdentity,{terminal:mn,refreshIdentity:()=>Z(`history-identity`,{hydrateRun:!0})}),O(J)}function gn(){let t=on;on=[],an=0;for(let e of t)`event`in e?fn(e.event,e.replay):dn(e.gap);sn&&G&&e.currentAgentDiv&&!A(G)&&ln(G,`Activity is incomplete. Updates were dropped while reconnecting; the final answer remains available separately.`),sn=!1}var X=0,_n=null,vn=0,yn=!1,bn=0,xn=750,Sn=750;async function Cn(t={}){let n=H.beginSnapshot(),i=q,o;try{o=await r(n.path,{method:`GET`},new AbortController().signal,16777216)}catch(e){throw n.isCurrent()&&Y(),n.fail(),e}if(!n.isCurrent())return;n.accept(o?.activityIdentity),J=rn&&e.activityIdentity!==null,se(e.activityIdentity),_(J),hn(),nn=String(o.orc.scope||``),zn(o.orc.state),jn(o.orc.ctx||null),An(o.heartbeat||{pending:0,deferredPending:0}),kn(o.workers),C(o.runtime.queuePending),he(o.queued||[]),$e(o.queued||[]);let s=Jt(o.activeRun?.traceRunId??null),c=i===q;t.hydrateRun&&c&&!s&&(_e(o.activeRun),tn(o.activeRun),o.activeRun?.running&&o.activeRun.traceRunId&&e.currentAgentDiv&&(e.currentAgentDiv.dataset.traceRunId=o.activeRun.traceRunId,e.activityIdentity&&(e.currentAgentDiv.dataset.messageSessionId=e.activityIdentity.sessionId),y(o.activeRun.traceRunId,e.currentAgentDiv))),Ln(),c&&(o.runtime.busy&&!s?x(`running`):me()||x(`idle`)),J&&gn();let l=document.getElementById(`chatMessages`);l&&le(l),J&&t.hydrateRun&&(e.currentAgentDiv&&G&&(c||A(G)?.degraded)&&ae(e.currentAgentDiv,G,!0),de()),a(()=>import(`./employees-BJRRI3rV.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}function Z(e=`manual`,t={}){let n=Date.now();return t.hydrateRun?Cn(t):_n||(n-vn<xn?Promise.resolve():(vn=n,_n=Cn(t).catch(t=>{throw console.warn(`[ws] orchestrate snapshot sync failed (${e})`,t),t}).finally(()=>{_n=null}),_n))}function wn(e){return e===`iframe-visible`||e===`pageshow`||e===`discard`||e===`visibilitychange`}function Tn(e){h(e),a(()=>import(`./ui-BO9pdl-p.js`).then(async t=>{if(wn(e)&&X>0)try{await t.loadMessages(),X=Date.now()}catch(t){console.warn(`[ws] restore loadMessages failed (${e})`,t)}await Z(e,{hydrateRun:!0})}),__vite__mapDeps([0])).catch(()=>{}).finally(()=>{g(e)})}function En(e){let t=Date.now();!wn(e)&&t-bn<Sn||(bn=t,Tn(e))}function Dn(e){let t=Array.isArray(e.changedKeys)?e.changedKeys:[];if(t.includes(`presentation`)&&a(()=>import(`./presentation-preference-BYEPPRPg.js`).then(e=>e.refreshPresentationSettings()),[]).catch(e=>console.warn(`[ws] presentation refresh failed`,e)),t.includes(`multiSession`)){window.location.reload();return}t.includes(`workingDir`)||t.includes(`projectDirs`)?a(()=>import(`./ui-BO9pdl-p.js`).then(async e=>{try{await e.loadMessages(),X=Date.now()}catch(e){console.warn(`[ws] settings scope loadMessages failed`,e)}await Z(`settings_change`).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`settings_change`))}),__vite__mapDeps([0])):Z(`settings_change`).catch(()=>{}),a(()=>import(`./settings-core-DiYr5EbU.js`).then(t=>t.refreshHeaderFromSettingsChange(e)),__vite__mapDeps([0])).catch(()=>{})}function On(){yn||(yn=!0,window.addEventListener(`focus`,()=>{En(`focus`)}),window.addEventListener(`pageshow`,e=>{e.persisted&&En(`pageshow`)}),document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&En(`visibilitychange`)}),document.addEventListener(`resume`,()=>{En(`resume`)}),`wasDiscarded`in document&&document.wasDiscarded&&En(`discard`),window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-visibility`&&e.data.visible&&En(`iframe-visible`)}))}function kn(e){for(let e of Object.keys(Ut))delete Ut[e];for(let t of e)t.state===`running`&&t.phase&&(Ut[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function An(t){let n={pending:Number(t?.pending||0),deferredPending:Number(t?.deferredPending||0),...t?.reason?{reason:t.reason}:{},...t?.policy?{policy:t.policy}:{},...t?.jobId?{jobId:t.jobId}:{},...t?.jobName?{jobName:t.jobName}:{}};e.heartbeatRuntime=n;let r=document.getElementById(`pabcHeartbeatStatus`);if(r){if(n.reason===`pabcd_active`&&n.deferredPending>0){let e=n.jobName?`: ${n.jobName}`:``;r.textContent=`heartbeat deferred (${n.deferredPending})${e}`,r.hidden=!1}else r.textContent=``,r.hidden=!0}}function jn(t){e.orcTaskAnchor=String(t?.taskAnchor||``).trim(),e.orcResolvedSelection=t?.resolvedSelection||null;let n=document.getElementById(`pabcTaskAnchor`);n&&(e.orcTaskAnchor?(n.textContent=`anchor: ${e.orcResolvedSelection?.index?`${e.orcResolvedSelection.index}. `:``}${e.orcTaskAnchor}`,n.hidden=!1):(n.textContent=``,n.hidden=!0),Fn(t?.interview||null))}var Mn=(()=>{try{return localStorage.getItem(`jaw:interviewCollapsed`)===`1`}catch{return!1}})();function Nn(e){Mn=e;try{localStorage.setItem(`jaw:interviewCollapsed`,e?`1`:`0`)}catch{}let t=document.getElementById(`interviewPanel`);if(!t)return;t.classList.toggle(`collapsed`,e);let n=t.querySelector(`.iv-toggle`);n&&n.setAttribute(`aria-expanded`,String(!e))}function Pn(e){let t=e=>{switch(e){case`max`:return 1;case`xhigh`:return .8;case`high`:return .6;case`medium`:return .4;default:return .2}},n=e=>{switch(e){case`max`:return`#2196f3`;case`xhigh`:return`#4caf50`;case`high`:return`#8bc34a`;case`medium`:return`#ff9800`;default:return`#f44336`}},r=[t(e.goal),t(e.constraint),t(e.success),t(e.ontology)],i=1-r.reduce((e,t)=>e+t,0)/r.length,a=Object.values(e).every(e=>e===`max`)||i<=.2?`🟢 Ready`:i<=.4?`🟡 Almost`:`🔴 Needs work`,o=(e,r)=>{let i=t(r);return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
|
|
16
|
+
<span style="width:70px;color:var(--text-secondary)">${e}</span>
|
|
17
|
+
<div style="flex:1;height:5px;background:var(--bg-tertiary);border-radius:3px">
|
|
18
|
+
<div style="width:${i*100}%;height:100%;background:${n(r)};border-radius:3px;transition:width .3s"></div>
|
|
19
|
+
</div>
|
|
20
|
+
<span style="width:60px;text-align:right;font-weight:600;font-size:11px">${i.toFixed(1)} ${r.toUpperCase()}</span>
|
|
21
|
+
</div>`};return`<div style="display:flex;flex-direction:column;gap:3px;margin:6px 0">
|
|
22
|
+
<div style="display:flex;justify-content:space-between;font-size:11px;margin-bottom:2px">
|
|
23
|
+
<span style="color:var(--text-secondary)">Ambiguity: ${i.toFixed(2)}</span>
|
|
24
|
+
<span>${a}</span>
|
|
25
|
+
</div>
|
|
26
|
+
${o(`Goal`,e.goal)}
|
|
27
|
+
${o(`Constraint`,e.constraint)}
|
|
28
|
+
${o(`Success`,e.success)}
|
|
29
|
+
${o(`Ontology`,e.ontology)}
|
|
30
|
+
</div>`}function Fn(e){let t=document.getElementById(`interviewPanel`);if(!t)return;if(!e||!e.known.length&&!e.unknown.length){t.hidden=!0;return}t.hidden=!1,t.classList.toggle(`collapsed`,Mn);let n=e=>{switch(e){case`user_statement`:return`🟢`;case`repo_fact`:return`🔵`;case`inference`:return`🟡`;case`assumption`:return`🟠`;case`default`:return`⚪`;default:return`·`}},r=e.known.map(e=>{if(typeof e==`string`)return`<li class="iv-known">· ${s(e)}</li>`;let t=e,r=n(t.source),i=t.dimension?` <span class="iv-dim">[${t.dimension}]</span>`:``;return`<li class="iv-known">${r} ${s(t.fact)}${i}</li>`}).join(``),i=e.unknown.map(e=>`<li class="iv-unknown">❓ ${s(typeof e==`string`?e:JSON.stringify(e))}</li>`).join(``);t.innerHTML=`
|
|
31
|
+
<button type="button" class="iv-toggle" aria-expanded="${!Mn}" aria-controls="interviewBody" title="인터뷰 트래커 접기/펼치기">
|
|
32
|
+
<span class="iv-chevron" aria-hidden="true">▸</span>
|
|
33
|
+
<span class="iv-summary">Interview · <span class="iv-known-count">Known ${e.known.length}</span> · <span class="iv-unknown-count">Unknown ${e.unknown.length}</span>${e.known.filter(e=>typeof e==`object`&&e&&`source`in e&&e.source===`assumption`).length>0?` · <span class="iv-assumption-count">⚠️ ${e.known.filter(e=>typeof e==`object`&&e&&`source`in e&&e.source===`assumption`).length} assumptions</span>`:``} · Round ${e.round}</span>
|
|
34
|
+
</button>
|
|
35
|
+
<div class="iv-body" id="interviewBody">
|
|
36
|
+
${e.assessment?`<div class="iv-section iv-section-ambiguity">${Pn(e.assessment)}</div>`:``}
|
|
37
|
+
<div class="iv-section iv-section-known"><strong>Known (${e.known.length})</strong><ul>${r}</ul></div>
|
|
38
|
+
<div class="iv-section iv-section-unknown"><strong>Unknown (${e.unknown.length})</strong><ul>${i}</ul></div>
|
|
39
|
+
</div>
|
|
40
|
+
`,t.dataset.toggleBound||(t.dataset.toggleBound=`1`,t.addEventListener(`click`,e=>{e.target.closest(`.iv-toggle`)&&Nn(!Mn)}))}function In(e,t){let n=document.getElementById(`budgetPanel`);if(!n)return;if(!e||t!==`B`){n.hidden=!0;return}n.hidden=!1;let r=(e,t,n)=>{let r=n>0?Math.min(t/n*100,100):0;return`<div style="display:flex;align-items:center;gap:6px;font-size:12px">
|
|
41
|
+
<span style="width:70px;color:var(--text-secondary)">${e}</span>
|
|
42
|
+
<div style="flex:1;height:5px;background:var(--bg-tertiary);border-radius:3px">
|
|
43
|
+
<div style="width:${r}%;height:100%;background:${r>=100?`#f44336`:r>=66?`#ff9800`:`#4caf50`};border-radius:3px"></div>
|
|
44
|
+
</div>
|
|
45
|
+
<span style="width:30px;text-align:right;font-size:11px">${t}/${n}</span>
|
|
46
|
+
</div>`};n.innerHTML=`<div style="font-size:11px;font-weight:600;margin-bottom:4px;color:var(--text-secondary)">Build Budget</div>
|
|
47
|
+
${r(`Workers`,e.spent.workerDispatches,e.maxWorkerDispatches)}
|
|
48
|
+
${r(`Self-heal`,e.spent.selfHealRetries,e.maxSelfHealRetries)}
|
|
49
|
+
${r(`Verify`,e.spent.verificationRounds,e.maxVerificationRounds)}`}async function Ln(){try{let t=await fetch(`${n}/api/goal`);if(!t.ok)return;let r=await t.json();r.goal?e.activeGoal={id:r.goal.id,objective:r.goal.objective,status:r.goal.status,createdAt:r.goal.createdAt,updatedAt:r.goal.updatedAt,lastCheckpointSummary:r.goal.lastCheckpoint?.summary,nextAction:r.goal.lastCheckpoint?.nextAction}:e.activeGoal=null,Rn()}catch{}}function Rn(){let t=document.getElementById(`goalCockpit`);if(!t)return;let n=e.activeGoal;if(!n||n.status===`complete`||n.status===`cancelled`){t.hidden=!0,t.innerHTML=``;return}t.hidden=!1,t.replaceChildren();let r=n.status===`paused`?`paused`:n.status===`blocked`?`blocked`:`active`,i=document.createElement(`span`);i.className=`goal-objective`,i.title=n.objective,i.textContent=n.objective;let a=document.createElement(`span`);if(a.className=`goal-status goal-status--${r}`,a.textContent=n.status,t.append(i,a),n.nextAction){let e=document.createElement(`span`);e.className=`goal-next`,e.textContent=n.nextAction,t.append(e)}}function zn(t,n){let r=new Set([`IDLE`,`I`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,I:`INTERVIEW`,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{W&&o.classList.contains(`running`)&&Ht(a,o,W)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{W&&o.classList.contains(`running`)&&Ht(a,o,W)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),W=null;else if(r===`D`){U.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<U.length;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),W=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=U.indexOf(r);U.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<U.length;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}W=r,requestAnimationFrame(()=>Ht(a,o,r))}s&&n&&(s.textContent=n)}}var Bn=!1,Vn=Promise.resolve(),Hn=0;function Un(){rn=!1,Y(),H.channelChanged(),On(),Bn||(Bn=!0,tr()),$n(),Xe(o())}var Wn=Un;function Gn(e){rn=e===`sse`,Y(),e===`sse`&&H.sseOpened(),console.log(`[${e}] connected`),Zn=2e3,Jn();let t=Date.now()-X<1e4;Vn=a(()=>import(`./ui-BO9pdl-p.js`).then(async n=>{if(n.cleanupToolActivity(),!t)try{await n.loadMessages(),X=Date.now()}catch(t){console.error(`[${e}] loadMessages failed`,t)}await Z(`reconnect`,{hydrateRun:!0}).catch(()=>{}).finally(()=>n.reconcileChatBottomAfterRestore(`reconnect`)),a(()=>import(`./memory-BXcwokaP.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0])).catch(()=>{}),a(()=>import(`./bgtask-badge-DKpNEyny.js`).then(e=>e.refreshBgtaskBadge()),__vite__mapDeps([0])).catch(()=>{})}),__vite__mapDeps([0]))}function Kn(){Y(),sn=!0,h(`replay_gap`),Vn=a(()=>import(`./ui-BO9pdl-p.js`).then(async e=>{try{await e.loadMessages(),X=Date.now()}catch(e){console.error(`[sse] replay gap loadMessages failed`,e)}await Z(`replay_gap`,{hydrateRun:!0}).catch(()=>{}).finally(()=>e.reconcileChatBottomAfterRestore(`replay_gap`))}),__vite__mapDeps([0]))}var qn=8e3,Q=null;function Jn(){Q!==null&&(window.clearTimeout(Q),Q=null)}function Yn(){rn=!1,Y(),H.unavailable(),console.log(`[channel] disconnected`),ge(),Q===null&&(Q=window.setTimeout(()=>{Q=null,x(`idle`),E(`${d.exec} ${p(`ws.disconnected`)}`,`tool-activity`)},qn))}var $=null,Xn=!1,Zn=2e3,Qn=3e4;function $n(){if($){Xn=!0;try{$.close()}catch{}$=null}}function er(){if($)return;console.warn(`[channel] /api/events unavailable — falling back to legacy WebSocket`);let e=`ws://${location.host}`,t=new WebSocket(`${e}${n}/?lang=${o()}`);$=t,Xn=!1,t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!t||typeof t!=`object`||typeof t.type!=`string`){console.warn(`[ws] invalid message shape:`,t);return}nr(t)};let r=!1;t.onopen=()=>{r=!0,Zn=2e3,Gn(`ws`)},t.onclose=()=>{if($===t&&($=null),Xn){Xn=!1;return}if(r){Yn(),setTimeout(Un,2e3);return}Zn=Math.min(Zn*2,Qn),setTimeout(Un,Zn)}}function tr(){qe(`widget`,`widget_updated`,e=>{let t=e.chatId,n=e.widgetId;typeof t==`string`&&typeof n==`string`&&a(()=>import(`./iframe-renderer-BngLCbh9.js`).then(e=>e.refreshFileWidget(t,n)),__vite__mapDeps([0])).catch(e=>console.warn(`[widget] refresh failed:`,e.message))}),qe(`*`,null,e=>{H.event(String(e.event),e),nr({...e,type:e.event})}),We(()=>Gn(`sse`)),Ge(()=>Yn()),Ke(()=>{rn=!1,Y(),H.unavailable(),er()})}function nr(t){if(t.type===`agent_runtime`){let e=k(t);e&&fn(e,t.sseReplay===!0);return}if(t.type===`agent_runtime_gap`){let e=t,n=N(e);n&&typeof e.runId==`string`&&e.runId.length>0&&e.runId.length<=240&&dn({...n,runId:e.runId});return}if(t.type===`agent_tool`){if(me())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null,n=Yt(t.traceSeq);if(Jt(e)||Qt(e,n,t.sseReplay===!0))return;++q,t.isEmployee!==!0&&en(e);let r=t.toolType===`thinking`?`thinking`:t.toolType===`search`?`search`:t.toolType===`subagent`?`subagent`:`tool`;F({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:r,icon:t.icon||d.tool,rawIcon:t.rawIcon||t.icon||``,label:t.label||``,isEmployee:t.isEmployee===!0,detail:t.detail||``,stepRef:t.stepRef||``,traceRunId:t.traceRunId||``,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status||`running`,startTime:typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:Date.now()},typeof t.startedAt==`number`&&t.startedAt>0?t.startedAt:void 0),Xt(e,n)}else if(t.type===`agent_output`||t.type===`agent_chunk`){if(me())return;let e=typeof t.traceRunId==`string`&&t.traceRunId?t.traceRunId:null;if(Jt(e))return;en(e);let n=t.text||``;if(e&&typeof t.textLen==`number`){if(t.textLen<=K){t.sseReplay!==!0&&t.textLen<K&&(console.warn(`[ws] live agent_output behind applied cursor — resync (${t.textLen} < ${K})`),K=t.textLen);return}let e=t.textLen-K;e<n.length&&(n=n.slice(-e)),K=t.textLen}++q,ve(n)}else if(t.type===`agent_status`){if(!t.running&&me())return;t.running&&me()&&pe(),++q,t.running===void 0?x(t.status||`idle`):x(t.running?`running`:`idle`),t.agentId&&t.phase&&(Ut[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``},a(()=>import(`./employees-BJRRI3rV.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])))}else if(t.type===`bgtask_update`)a(()=>import(`./bgtask-badge-DKpNEyny.js`).then(e=>e.applyBgtaskUpdate(t)),__vite__mapDeps([0])).catch(()=>{});else if(t.type===`queue_update`)C(t.pending||0),Array.isArray(t.queued)&&$e(t.queued),Z(`queue_update`).catch(()=>{});else if(t.type===`agent_retry`){let e=Number(t.delay??0),n=t.reason,r=s(String(n||`429`));E(p(e>0?`ws.retry`:`ws.retryNow`,{cli:s(t.cli||``),reason:r,delay:e}),`tool-activity`)}else if(t.type===`agent_fallback`)E(p(`ws.fallback`,{from:s(t.from||``),to:s(t.to||``)}),`tool-activity`);else if(t.type===`agent_smoke`)E(`${d.warning} ${s(t.cli||`agent`)}: smoke response detected — auto-continuing`,`tool-activity`);else if(t.type===`goal_done`)e.activeGoal=null,Rn(),E(`🎯 Goal completed${t.source===`ai_output`?` (detected from AI output)`:``}`,`tool-activity`);else if(t.type===`goal_cancel`)e.activeGoal=null,Rn(),E(`🎯 Goal cancelled`,`tool-activity`);else if(t.type===`schedule_wakeup`)E(`⏰ Wakeup scheduled in ${t.delaySeconds}s — ${s(String(t.reason||``))}`,`tool-activity`);else if(t.type===`goal_continuation_limit`)E(`⚠️ Goal continuation limit reached (${t.attempts} attempts)`,`tool-activity`);else if(t.type===`goal_continuation`)E(`🎯 Active goal — auto-continuing`,`tool-activity`);else if(t.type===`agent_done`)t.steered||me()||pn(t);else if(t.type===`orchestrate_done`)pn(t);else if(t.type===`clear`){++q,D(),cn(),se(e.activityIdentity),f(),ge(),m().clear();let t=document.getElementById(`chatMessages`);t&&(t.innerHTML=``),hn(),re(e.activityIdentity?.sessionId??null,new Set),a(()=>import(`./idb-cache-CFBnPfHz.js`).then(e=>e.clearScopedCache()),[]).catch(()=>{})}else if(t.type===`session_reset`)E(`${d.refresh} Session reset — history preserved`,`tool-activity`);else if(t.type===`agent_added`||t.type===`agent_updated`||t.type===`agent_deleted`)a(()=>import(`./employees-BJRRI3rV.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0]));else if(t.type===`heartbeat_pending`){let e={pending:t.pending||0,deferredPending:t.deferredPending||0};t.reason!==void 0&&(e.reason=t.reason),t.policy!==void 0&&(e.policy=t.policy),t.jobId!==void 0&&(e.jobId=t.jobId),t.jobName!==void 0&&(e.jobName=t.jobName),An(e)}else if(t.type===`orc_state`)rr(t);else if(t.type===`memory_status`)a(()=>import(`./memory-BXcwokaP.js`).then(e=>e.refreshMemorySidebar()),__vite__mapDeps([0]));else if(t.type===`steer_started`){if(t.mode===`native-input`||t.mode===`cancel-reprompt`||G&&A(G))return;ye(),$t(null),P(``),x(`steering`)}else if(t.type===`new_message`&&(t.source===`telegram`||t.source===`discord`||t.source===`slack`||t.source===`bgtask`||t.source===`cli`||t.source===`goal`||t.external===!0||t.fromQueue===!0)){let e=t.role===`assistant`?`agent`:t.role||`user`,n=t.content||``,r=t.cli;a(()=>import(`./message-history-C2JH-y2v.js`).then(t=>{if(t.historyReloadInFlight()){t.loadMessages().then(()=>t.loadMessages()).catch(e=>console.warn(`[ws] new_message reload after in-flight failed`,e));return}S(e,n,r)}),__vite__mapDeps([0]))}else t.type===`system_notice`?E(`ℹ️ ${s(t.text||``)}`,`tool-activity`):t.type===`replay_gap`?Kn():t.type===`worker_stalled`?E(`⚠️ Worker stalled: ${s(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`steer_context_lost`?E(`⚠️ 이전 턴의 진행 내용을 살리지 못했습니다 — 새 턴은 그 맥락 없이 시작합니다.`,`tool-activity`):t.type===`worker_disconnected`?E(`🔌 Worker disconnected: ${s(t.agentId||``)} (exit ${s(String(t.exitCode??`?`))})`,`tool-activity`):t.type===`worker_timeout`?E(`⏱️ Worker timed out: ${s(t.employeeName||t.agentId||``)}`,`tool-activity`):t.type===`alert_escalation`?E(s(t.message||``),`tool-activity`):t.type===`schedule_wakeup_failed`?E(`⚠️ Wakeup failed — ${s(String(t.reason||``))}: ${s(String(t.error||``))}`,`tool-activity`):t.type===`goal_continuation_failed`?E(`⚠️ Goal continuation failed: ${s(String(t.error||``))}`,`tool-activity`):t.type===`settings_change`?Dn(t):t.type===`session_list`?l(t):(t.type===`session_switched`||t.type===`session_created`)&&(D(),Y(),cn(),H.invalidateIdentity(),window.location.reload())}function rr(e){let t=++Hn;Vn.then(()=>{t===Hn&&Mt(e.scope,nn)&&(zn(typeof e.state==`string`?e.state:`IDLE`,e.title),jn({taskAnchor:e.taskAnchor||null,resolvedSelection:e.resolvedSelection||null,interview:e.interview||null}),In(e.buildBudget||null,typeof e.state==`string`?e.state:`IDLE`))})}function ir(e){return Ut[e]||null}var ar=`sidebarState`,or=900,sr=768;function cr(){return window.innerWidth<=sr}function lr(){document.body.classList.remove(`left-expanded`,`right-expanded`)}function ur(e){let t=`${e}-expanded`,n=e===`left`?`right-expanded`:`left-expanded`,r=!document.body.classList.contains(t);document.body.classList.remove(n),document.body.classList.toggle(t,r)}function dr(){let e={};try{e=JSON.parse(localStorage.getItem(ar)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`);let t=cr();document.getElementById(`toggleLeft`)?.addEventListener(`click`,pr),document.getElementById(`toggleRight`)?.addEventListener(`click`,mr),window.addEventListener(`resize`,()=>{let e=cr();if(window.innerWidth>or){lr();let e={};try{e=JSON.parse(localStorage.getItem(ar)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`),e!==t&&lr();t=e,_r()}),window.innerWidth<=or&&(document.body.classList.remove(`left-collapsed`,`right-collapsed`),cr()&&lr()),_r()}function fr(){return window.innerWidth<=or}function pr(){fr()?ur(`left`):document.body.classList.toggle(`left-collapsed`),vr(),_r()}function mr(){fr()?ur(`right`):document.body.classList.toggle(`right-collapsed`),gr()&&document.getElementById(`tabAgents`)?.classList.contains(`active`)&&a(()=>import(`./employees-BJRRI3rV.js`).then(e=>e.loadEmployees(!0)),__vite__mapDeps([0])),vr(),_r()}function hr(){return fr()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function gr(){return fr()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function _r(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.innerHTML=hr()?d.chevronLeft:d.chevronRight),t&&(t.innerHTML=gr()?d.chevronRight:d.chevronLeft)}function vr(){localStorage.setItem(ar,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}export{Un as a,Z as c,ut as d,Me as f,mr as i,jt as l,gr as n,ir as o,pr as r,Wn as s,dr as t,kt as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){for(var t={},n=e.split(` `),r=0;r<n.length;++r)t[n[r]]=!0;return t}var t=e(`if elsif else stop require`),n=e(`true false not`);function r(e,r){var s=e.next();if(s==`/`&&e.eat(`*`))return r.tokenize=a,a(e,r);if(s===`#`)return e.skipToEnd(),`comment`;if(s==`"`)return r.tokenize=o(s),r.tokenize(e,r);if(s==`(`)return r._indent.push(`(`),r._indent.push(`{`),null;if(s===`{`)return r._indent.push(`{`),null;if(s==`)`&&(r._indent.pop(),r._indent.pop()),s===`}`)return r._indent.pop(),null;if(s==`,`||s==`;`||/[{}\(\),;]/.test(s))return null;if(/\d/.test(s))return e.eatWhile(/[\d]/),e.eat(/[KkMmGg]/),`number`;if(s==`:`)return e.eatWhile(/[a-zA-Z_]/),e.eatWhile(/[a-zA-Z0-9_]/),`operator`;e.eatWhile(/\w/);var c=e.current();return c==`text`&&e.eat(`:`)?(r.tokenize=i,`string`):t.propertyIsEnumerable(c)?`keyword`:n.propertyIsEnumerable(c)?`atom`:null}function i(e,t){return t._multiLineString=!0,e.sol()?(e.next()==`.`&&e.eol()&&(t._multiLineString=!1,t.tokenize=r),`string`):(e.eatSpace(),e.peek()==`#`?(e.skipToEnd(),`comment`):(e.skipToEnd(),`string`))}function a(e,t){for(var n=!1,i;(i=e.next())!=null;){if(n&&i==`/`){t.tokenize=r;break}n=i==`*`}return`comment`}function o(e){return function(t,n){for(var i=!1,a;(a=t.next())!=null
|
|
1
|
+
function e(e){for(var t={},n=e.split(` `),r=0;r<n.length;++r)t[n[r]]=!0;return t}var t=e(`if elsif else stop require`),n=e(`true false not`);function r(e,r){var s=e.next();if(s==`/`&&e.eat(`*`))return r.tokenize=a,a(e,r);if(s===`#`)return e.skipToEnd(),`comment`;if(s==`"`)return r.tokenize=o(s),r.tokenize(e,r);if(s==`(`)return r._indent.push(`(`),r._indent.push(`{`),null;if(s===`{`)return r._indent.push(`{`),null;if(s==`)`&&(r._indent.pop(),r._indent.pop()),s===`}`)return r._indent.pop(),null;if(s==`,`||s==`;`||/[{}\(\),;]/.test(s))return null;if(/\d/.test(s))return e.eatWhile(/[\d]/),e.eat(/[KkMmGg]/),`number`;if(s==`:`)return e.eatWhile(/[a-zA-Z_]/),e.eatWhile(/[a-zA-Z0-9_]/),`operator`;e.eatWhile(/\w/);var c=e.current();return c==`text`&&e.eat(`:`)?(r.tokenize=i,`string`):t.propertyIsEnumerable(c)?`keyword`:n.propertyIsEnumerable(c)?`atom`:null}function i(e,t){return t._multiLineString=!0,e.sol()?(e.next()==`.`&&e.eol()&&(t._multiLineString=!1,t.tokenize=r),`string`):(e.eatSpace(),e.peek()==`#`?(e.skipToEnd(),`comment`):(e.skipToEnd(),`string`))}function a(e,t){for(var n=!1,i;(i=e.next())!=null;){if(n&&i==`/`){t.tokenize=r;break}n=i==`*`}return`comment`}function o(e){return function(t,n){for(var i=!1,a;(a=t.next())!=null&&(a!=e||i);)i=!i&&a==`\\`;return i||(n.tokenize=r),`string`}}var s={name:`sieve`,startState:function(e){return{tokenize:r,baseIndent:e||0,_indent:[]}},token:function(e,t){return e.eatSpace()?null:(t.tokenize||r)(e,t)},indent:function(e,t,n){var r=e._indent.length;return t&&t[0]==`}`&&r--,r<0&&(r=0),r*n.unit},languageData:{indentOnInput:/^\s*\}$/}};export{s as sieve};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e){t(e,`start`);var n={},r=e.languageData||{},s=!1;for(var c in e)if(c!=r&&e.hasOwnProperty(c))for(var l=n[c]=[],u=e[c],d=0;d<u.length;d++){var f=u[d];l.push(new i(f,e)),(f.indent||f.dedent)&&(s=!0)}return{name:r.name,startState:function(){return{state:`start`,pending:null,indent:s?[]:null}},copyState:function(e){var t={state:e.state,pending:e.pending,indent:e.indent&&e.indent.slice(0)};return e.stack&&(t.stack=e.stack.slice(0)),t},token:a(n),indent:o(n,r),mergeTokens:r.mergeTokens,languageData:r}}function t(e,t){if(!e.hasOwnProperty(t))throw Error(`Undefined state `+t+` in simple mode`)}function n(e,t){if(!e)return/(?:)/;var n=``;return e instanceof RegExp?(e.ignoreCase&&(n=`i`),e.unicode&&(n+=`u`),e=e.source):e=String(e),RegExp((t===!1?``:`^`)+`(?:`+e+`)`,n)}function r(e){if(!e)return null;if(e.apply)return e;if(typeof e==`string`)return e.replace(/\./g,` `);for(var t=[],n=0;n<e.length;n++)t.push(e[n]&&e[n].replace(/\./g,` `));return t}function i(e,i){(e.next||e.push)&&t(i,e.next||e.push),this.regex=n(e.regex),this.token=r(e.token),this.data=e}function a(e){return function(t,n){if(n.pending){var r=n.pending.shift();return n.pending.length==0&&(n.pending=null),t.pos+=r.text.length,r.token}for(var i=e[n.state],a=0;a<i.length;a++){var o=i[a],s=(!o.data.sol||t.sol())&&t.match(o.regex);if(s){o.data.next?n.state=o.data.next:o.data.push?((n.stack||=[]).push(n.state),n.state=o.data.push):o.data.pop&&n.stack&&n.stack.length&&(n.state=n.stack.pop()),o.data.indent&&n.indent.push(t.indentation()+t.indentUnit),o.data.dedent&&n.indent.pop();var c=o.token;if(c&&c.apply&&(c=c(s)),s.length>2&&o.token&&typeof o.token!=`string`){n.pending=[];for(var l=2;l<s.length;l++)s[l]&&n.pending.push({text:s[l],token:o.token[l-1]});return t.backUp(s[0].length-(s[1]?s[1].length:0)),c[0]}
|
|
1
|
+
function e(e){t(e,`start`);var n={},r=e.languageData||{},s=!1;for(var c in e)if(c!=r&&e.hasOwnProperty(c))for(var l=n[c]=[],u=e[c],d=0;d<u.length;d++){var f=u[d];l.push(new i(f,e)),(f.indent||f.dedent)&&(s=!0)}return{name:r.name,startState:function(){return{state:`start`,pending:null,indent:s?[]:null}},copyState:function(e){var t={state:e.state,pending:e.pending,indent:e.indent&&e.indent.slice(0)};return e.stack&&(t.stack=e.stack.slice(0)),t},token:a(n),indent:o(n,r),mergeTokens:r.mergeTokens,languageData:r}}function t(e,t){if(!e.hasOwnProperty(t))throw Error(`Undefined state `+t+` in simple mode`)}function n(e,t){if(!e)return/(?:)/;var n=``;return e instanceof RegExp?(e.ignoreCase&&(n=`i`),e.unicode&&(n+=`u`),e=e.source):e=String(e),RegExp((t===!1?``:`^`)+`(?:`+e+`)`,n)}function r(e){if(!e)return null;if(e.apply)return e;if(typeof e==`string`)return e.replace(/\./g,` `);for(var t=[],n=0;n<e.length;n++)t.push(e[n]&&e[n].replace(/\./g,` `));return t}function i(e,i){(e.next||e.push)&&t(i,e.next||e.push),this.regex=n(e.regex),this.token=r(e.token),this.data=e}function a(e){return function(t,n){if(n.pending){var r=n.pending.shift();return n.pending.length==0&&(n.pending=null),t.pos+=r.text.length,r.token}for(var i=e[n.state],a=0;a<i.length;a++){var o=i[a],s=(!o.data.sol||t.sol())&&t.match(o.regex);if(s){o.data.next?n.state=o.data.next:o.data.push?((n.stack||=[]).push(n.state),n.state=o.data.push):o.data.pop&&n.stack&&n.stack.length&&(n.state=n.stack.pop()),o.data.indent&&n.indent.push(t.indentation()+t.indentUnit),o.data.dedent&&n.indent.pop();var c=o.token;if(c&&c.apply&&(c=c(s)),s.length>2&&o.token&&typeof o.token!=`string`){n.pending=[];for(var l=2;l<s.length;l++)s[l]&&n.pending.push({text:s[l],token:o.token[l-1]});return t.backUp(s[0].length-(s[1]?s[1].length:0)),c[0]}return c&&c.join?c[0]:c}}return t.next(),null}}function o(e,t){return function(n,r){if(n.indent==null||t.dontIndentStates&&t.dontIndentStates.indexOf(n.state)>-1)return null;var i=n.indent.length-1,a=e[n.state];scan:for(;;){for(var o=0;o<a.length;o++){var s=a[o];if(s.data.dedent&&s.data.dedentIfLineStart!==!1){var c=s.regex.exec(r);if(c&&c[0]){i--,(s.next||s.push)&&(a=e[s.next||s.push]),r=r.slice(c[0].length);continue scan}}}break}return i<0?0:n.indent[i]}}export{e as t};
|
package/public/dist/assets/{sizeCapture-INFHLROL-D9Rpk-aA.js → sizeCapture-INFHLROL-B0uUizjq.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";var t=1;function n(){if(!(typeof globalThis>`u`))return globalThis}e(n,`getCaptureGlobal`);function r(){return!!n()?.mermaidCaptureSizes}e(r,`shouldCaptureSizes`);function i(){return typeof location>`u`?`browser-dev`:`${location.pathname}${location.search}`}e(i,`capturedFromLocation`);function a(e,t){let r=n();if(!r)return;let i=t.node(),a=((i&&`ownerSVGElement`in i?i.ownerSVGElement:null)??i)?.id??`(unknown)`;r.mermaidCapturedSizes??=[];let o={svgId:a,sizes:e};r.mermaidCapturedSizes.push(o),r.mermaidLastCapturedSizes=o}e(a,`emitCapturedSizes`);function o(e,n){let r=[];for(let e of n.nodes)e.isGroup||r.push({id:e.id,width:e.width??0,height:e.height??0});r.length!==0&&a({metadata:{captureVersion:t,capturedAt:new Date().toISOString(),capturedFrom:i()},nodes:r},e)}e(o,`captureNodeSizes`);export{o as captureNodeSizes};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./skills-D3AfzYbP.js";export{e as loadSkills};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{t as e}from"./state-Dl-xxPoS.js";import{i as t}from"./api-CUtiCd2-.js";import{F as n,M as r,N as i,k as a,z as o}from"./render-DRweFDYR.js";var s=[`productivity`,`communication`,`devtools`,`ai-media`,`utility`,`smarthome`,`automation`];function c(e,t){return!t||[e.id,e.name,e.description,e.category,e.requires?.env?.join(` `),e.requires?.bins?.join(` `),e.install].filter(Boolean).join(` `).toLowerCase().includes(t)}async function l(){try{let t=await n(`/api/skills`);e.allSkills=await t.json(),u()}catch{let e=document.getElementById(`skillsList`);e&&(e.innerHTML=`<div style="color:var(--text-dim);font-size:11px">${o(`skill.loadFail`)}</div>`)}}function u(){let t=document.getElementById(`skillsList`),n=document.getElementById(`skillsCount`);if(!t||!n)return;let l=e.allSkills,u=l;e.currentSkillFilter===`installed`?u=l.filter(e=>e.enabled):e.currentSkillFilter===`other`?u=l.filter(e=>!s.includes(e.category||``)):e.currentSkillFilter!==`all`&&(u=l.filter(t=>t.category===e.currentSkillFilter));let d=e.currentSkillSearch.trim().toLowerCase();u=u.filter(e=>c(e,d));let f=l.filter(e=>e.enabled).length;if(n.textContent=d?o(`skill.countFiltered`,{shown:u.length,active:f,total:l.length}):o(`skill.count`,{active:f,total:l.length}),!u.length){t.innerHTML=`<div class="skill-empty">${i(o(`skill.search.empty`))}</div>`;return}t.innerHTML=u.map(e=>{let t=[];return e.requires?.env&&t.push(`${a.key} `+e.requires.env.map(e=>i(e)).join(`, `)),e.requires?.bins&&t.push(`${a.settings} `+e.requires.bins.map(e=>i(e)).join(`, `)),e.install&&t.push(i(e.install)),`
|
|
2
|
+
<div class="skill-card ${e.enabled?`enabled`:``}">
|
|
3
|
+
<div class="skill-card-header">
|
|
4
|
+
<span class="skill-emoji">${e.emoji?r(e.emoji):a.tool}</span>
|
|
5
|
+
<span class="skill-name">${i(e.name||e.id)}</span>
|
|
6
|
+
<button class="skill-toggle ${e.enabled?`on`:`off`}"
|
|
7
|
+
data-skill-id="${i(e.id)}" data-skill-enabled="${e.enabled}"
|
|
8
|
+
aria-label="${i((e.name||e.id)+` toggle`)}"></button>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="skill-desc">${i(e.description||``)}</div>
|
|
11
|
+
${t.length?`<div class="skill-req">${t.join(` · `)}</div>`:``}
|
|
12
|
+
</div>`}).join(``)}async function d(e,n){let r=n?`/api/skills/disable`:`/api/skills/enable`;try{await t(r,`POST`,{id:e}),await l()}catch(e){console.error(`toggleSkill error:`,e)}}function f(t,n){e.currentSkillFilter=t,document.querySelectorAll(`.skill-filter`).forEach(e=>e.classList.remove(`active`)),n&&n.classList.add(`active`),u()}function p(t){e.currentSkillSearch=t,u()}export{d as a,p as i,l as n,u as r,f as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./slash-commands-DCHYDCYa.js";export{e as loadCommands};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import{n as e}from"./api-CUtiCd2-.js";import{N as t,z as n}from"./render-DRweFDYR.js";import{t as r}from"./locale-B9w_kUtW.js";var i={activeCli:o(`activeCli`,2,1,2,2,1,3),model:o(`model`,2,1,1,2,1,2),effort:o(`effort`,2,1,1),permissions:o(`permissions`,2,1,1),flushAgent:o(`flushAgent`,2,1,1,2,1,3),employees:o(`employees`,3,3,2,4,1,2),skills:o(`skills`,2,1,1,4,1,3),activeChannel:o(`activeChannel`,2,1,1),telegram:{...o(`telegram`,2,1,2,8),docLinks:[{url:`https://t.me/BotFather`,labelKey:`help.telegram.link.botfather`},{url:`https://core.telegram.org/bots/tutorial`,labelKey:`help.telegram.link.docs`}]},discord:{...o(`discord`,2,1,2,9),docLinks:[{url:`https://discord.com/developers/applications`,labelKey:`help.discord.link.portal`},{url:`https://discord.com/developers/docs/getting-started`,labelKey:`help.discord.link.docs`}]},slack:{...o(`slack`,2,1,2,9),docLinks:[{url:`https://api.slack.com/apps`,labelKey:`help.slack.link.portal`},{url:`https://docs.slack.dev/apis/events-api/using-socket-mode/`,labelKey:`help.slack.link.docs`}]},fallbackOrder:o(`fallbackOrder`,2,1,1,2,1,3),mcp:o(`mcp`,2,1,1,4,1,5),memory:o(`memory`,2,1,2,4,1,2),stt:o(`stt`,2,1,1),promptTemplates:o(`promptTemplates`,2,1,1),chatInput:o(`chatInput`,3,2,2),orchestration:o(`orchestration`,3,2,2,8,1,8),attachments:o(`attachments`,3,2,2),diagrams:o(`diagrams`,3,2,2),keyboardShortcuts:o(`keyboardShortcuts`,3,2,2,3,2,3),session:o(`session`,3,1,2,8,1,9),cliTools:o(`cliTools`,3,1,2,6,1,9),agentControl:o(`agentControl`,3,1,2,6,1,6),goals:o(`goals`,3,1,2,10,1,25)};function a(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(i,e)}function o(e,t,n,r,i=2,a=1,o=0){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:s(`help.${e}.use`,t),howToKeys:s(`help.${e}.howTo`,i),exampleKeys:s(`help.${e}.example`,a),avoidWhenKeys:s(`help.${e}.avoid`,n),relatedKeys:s(`help.${e}.related`,r),...o>0?{subcmdKeys:s(`help.${e}.subcmd`,o)}:{}}}function s(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var c=!1,l=null,u=null,d=null,f=null,p=null,m=!1;function h(){c||(c=!0,document.addEventListener(`click`,v),document.addEventListener(`keydown`,y,!0))}function g(e,t=null,n=[e]){if(!i[e]){console.warn(`[help-dialog] unknown topic:`,e);return}b(),p=t,x(e,T(n,e)),l?.classList.add(`open`),l?.setAttribute(`aria-hidden`,`false`),m=!0,requestAnimationFrame(()=>f?.focus())}function _(){if(!m)return;l?.classList.remove(`open`),l?.setAttribute(`aria-hidden`,`true`),m=!1;let e=p;p=null,e?.focus()}function v(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!a(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),g(n,t,w(t.getAttribute(`data-help-topics`),n))}function y(e){m&&e.key===`Escape`&&(e.preventDefault(),e.stopImmediatePropagation(),_())}function b(){if(l&&u&&d&&f)return;l=document.createElement(`div`),l.id=`helpDialog`,l.className=`modal-overlay help-dialog-overlay`,l.setAttribute(`role`,`presentation`),l.setAttribute(`aria-hidden`,`true`),l.addEventListener(`click`,e=>{e.target===l&&_()});let e=document.createElement(`div`);e.className=`modal-box help-dialog-box`,e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,`helpDialogTitle`),e.addEventListener(`click`,e=>e.stopPropagation());let t=document.createElement(`div`);t.className=`modal-header help-dialog-header`,u=document.createElement(`span`),u.id=`helpDialogTitle`,f=document.createElement(`button`),f.type=`button`,f.className=`btn-modal-close help-dialog-close`,f.setAttribute(`aria-label`,n(`help.close`)),f.textContent=`x`,f.addEventListener(`click`,()=>_()),d=document.createElement(`div`),d.className=`help-dialog-body`;let r=document.createElement(`div`);r.className=`modal-footer help-dialog-footer`;let i=document.createElement(`button`);i.type=`button`,i.className=`btn-save help-dialog-done`,i.textContent=n(`help.close`),i.addEventListener(`click`,()=>_()),t.append(u,f),r.append(i),e.append(t,d,r),l.append(e),document.body.append(l)}function x(e,t=[e]){if(!u||!d||!f)return;let r=i[e];u.textContent=n(r.titleKey),f.setAttribute(`aria-label`,n(`help.close`)),d.replaceChildren();let a=document.createElement(`div`);if(a.className=`help-dialog-content`,S(a,r),t.length<=1){d.append(a);return}let o=document.createElement(`div`);o.className=`help-dialog-layout`,o.append(C(t,e),a),d.append(o)}function S(e,t){t.docLinks?.length&&E(e,t.docLinks),D(e,n(`help.section.what`),n(t.introKey)),D(e,n(`help.section.effect`),n(t.effectKey),`help-effect-text`),O(e,n(`help.section.useWhen`),t.useWhenKeys),A(e,n(`help.section.howTo`),t.howToKeys),O(e,n(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&O(e,n(`help.section.avoidWhen`),t.avoidWhenKeys),t.subcmdKeys?.length&&j(e,n(`help.section.commands`),t.subcmdKeys),t.relatedKeys?.length&&O(e,n(`help.section.related`),t.relatedKeys,!0)}function C(e,t){let r=document.createElement(`nav`);r.className=`help-dialog-nav`,r.setAttribute(`aria-label`,n(`help.section.related`));for(let a of e){let o=i[a],s=document.createElement(`button`);s.type=`button`,s.className=`help-dialog-nav-item`,s.textContent=n(o.titleKey),a===t&&(s.classList.add(`active`),s.setAttribute(`aria-current`,`page`)),s.addEventListener(`click`,()=>x(a,e)),r.append(s)}return r}function w(e,t){return T(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function T(e,t){let n=[];for(let t of e)a(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function E(e,t){let r=document.createElement(`section`);r.className=`help-dialog-section help-doc-links`;let i=document.createElement(`nav`);i.className=`help-doc-links-nav`;for(let e of t){let t=document.createElement(`a`);t.href=e.url,t.target=`_blank`,t.rel=`noopener noreferrer`,t.className=`help-doc-link`,t.textContent=n(e.labelKey);let r=document.createElement(`span`);r.className=`help-doc-link-icon`,r.textContent=`↗`,t.append(r),i.append(t)}r.append(i),e.append(r)}function D(e,t,n,r){let i=k(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function O(e,t,r,i=!1,a){let o=k(t),s=document.createElement(`ul`);s.className=a??(i?`help-related-list`:`help-dialog-list`);for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),s.append(t)}o.append(s),e.append(o)}function k(e){let t=document.createElement(`section`);t.className=`help-dialog-section`;let n=document.createElement(`h3`);return n.textContent=e,t.append(n),t}function A(e,t,r){let i=k(t),a=document.createElement(`ol`);a.className=`help-dialog-list help-howto-list`;for(let e of r){let t=document.createElement(`li`);t.textContent=n(e),a.append(t)}i.append(a),e.append(i)}function j(e,t,r){let i=k(t),a=document.createElement(`dl`);a.className=`help-subcmd-list`;for(let e of r){let t=n(e),r=t.indexOf(` — `),i=r>=0?t.slice(0,r):t,o=r>=0?t.slice(r+3):``,s=document.createElement(`dt`);s.className=`help-subcmd-cmd`;let c=document.createElement(`code`);c.textContent=i,s.append(c);let l=document.createElement(`dd`);l.className=`help-subcmd-desc`,l.textContent=o,a.append(s,l)}i.append(a),e.append(i)}var M={mcp:`mcp`,memory:`memory`,model:`model`,effort:`effort`,cli:`activeCli`,skill:`skills`,employee:`employees`,orchestrate:`orchestration`,pabcd:`orchestration`,flush:`flushAgent`,fallback:`fallbackOrder`,prompt:`promptTemplates`,browser:`mcp`,status:`activeCli`,steer:`chatInput`,clear:`session`,compact:`session`,reset:`session`,purge:`session`,new:`session`,switch:`session`,sw:`session`,sessions:`session`,ss:`session`,version:`cliTools`,project:`cliTools`,proj:`cliTools`,ide:`cliTools`,file:`cliTools`,forward:`agentControl`,thought:`agentControl`,goal:`goals`,goalplan:`goals`,gd:`goals`,plan:`goals`,interview:`goals`,deliberate:`goals`,planaudit:`goals`,review:`goals`,search:`mcp`,team:`goals`,task:`goals`,help:`keyboardShortcuts`,h:`keyboardShortcuts`,commands:`keyboardShortcuts`,cmd:`keyboardShortcuts`,fork:`session`,quit:`session`,q:`session`,exit:`session`,telegram:`telegram`,discord:`discord`,slack:`slack`,stt:`stt`,attachments:`attachments`,diagrams:`diagrams`};function N(e){let t=e.replace(/^\//,``).trim().split(/\s+/);if(t.length<2||t[t.length-1].toLowerCase()!==`info`)return!1;let n=M[t[0].toLowerCase()];return n?(g(n),!0):!1}var P=[],F=[],I=-1,L=!1,R=null;function z(e){let t=String(e||``).slice(1).trim().split(/\s+/)[0]||``;return t.includes(`/`)||t.includes(`\\`)}var B=()=>document.getElementById(`cmdDropdown`),V=()=>document.getElementById(`chatInput`);function H(e){let t=String(e||``).toLowerCase();return P.filter(e=>`/${e.name}`.startsWith(t))}function U(e){let t=e.workflow?.workflowArgs||[];return t.length?t.map(e=>e.required?`<${e.name}>`:`[${e.name}]`).join(` `):e.args||``}function W(e){let n=e.workflow;return n?`<span class="cmd-meta">
|
|
2
|
+
<span class="cmd-chip">${t(n.phase)}</span>
|
|
3
|
+
<span class="cmd-chip cmd-risk-${t(n.risk)}">${t(n.risk)}</span>
|
|
4
|
+
<span class="cmd-chip">${t(n.output)}</span>
|
|
5
|
+
</span>`:``}function G(){let e=B(),t=V();e&&t&&(R&&=(clearTimeout(R),null),e.style.display=`block`,requestAnimationFrame(()=>e.classList.add(`visible`)),L=!0,t.setAttribute(`aria-expanded`,`true`))}function K(){let e=B(),r=V();if(!e||!r)return;if(!F.length){if(!r.value.startsWith(`/`)||z(r.value)){Y();return}e.innerHTML=`
|
|
6
|
+
<div class="cmd-item cmd-empty" role="option" aria-disabled="true">
|
|
7
|
+
${n(`cmd.noMatch`)}
|
|
8
|
+
</div>
|
|
9
|
+
`,G(),r.setAttribute(`aria-activedescendant`,``);return}e.innerHTML=F.map((e,n)=>{let r=n===I,i=U(e),a=W(e),o=M[e.name]?`<button type="button" class="cmd-info-btn" data-cmd-info="${t(e.name)}" aria-label="Info" tabindex="-1">?</button>`:``;return`<div class="cmd-item${r?` selected`:``}"
|
|
10
|
+
role="option"
|
|
11
|
+
id="cmd-item-${n}"
|
|
12
|
+
aria-selected="${r}"
|
|
13
|
+
data-index="${n}">
|
|
14
|
+
<span class="cmd-name">/${t(e.name)}</span>
|
|
15
|
+
<span class="cmd-desc">${t(e.desc)}</span>
|
|
16
|
+
${a}
|
|
17
|
+
${i?`<span class="cmd-args">${t(i)}</span>`:``}
|
|
18
|
+
${o}
|
|
19
|
+
</div>`}).join(``),G(),r.setAttribute(`aria-activedescendant`,I>=0?`cmd-item-${I}`:``);let i=e.querySelector(`.selected`);i&&i.scrollIntoView({block:`nearest`})}function q(e){let t=F[I],n=V();if(!t||!n){Y();return}if(Y(),t.args||!e){n.value=`/${t.name} `,n.focus(),n.selectionStart=n.selectionEnd=n.value.length;return}n.value=`/${t.name}`,n.dispatchEvent(new Event(`cmd-execute`,{bubbles:!0}))}async function J(){try{let t=r(),n=`/api/commands?interface=web&locale=${encodeURIComponent(t)}`;P=await e(n,{headers:{"Accept-Language":t}})||[]}catch(e){console.warn(`[slash-commands] loadCommands failed:`,e.message),P=[]}}function Y(){let e=B();R&&=(clearTimeout(R),null),e&&(e.classList.remove(`visible`),R=setTimeout(()=>{e.classList.contains(`visible`)||(e.style.display=`none`,e.innerHTML=``)},150)),L=!1,I=-1,F=[];let t=V();t&&(t.setAttribute(`aria-expanded`,`false`),t.setAttribute(`aria-activedescendant`,``))}function X(e){let t=String(e||``);if(!t.startsWith(`/`)||t.includes(` `)||t.includes(`
|
|
20
|
+
`)||z(t)){Y();return}F=H(t),I=F.length?0:-1,K()}function Z(e){return L?F.length?e.key===`ArrowDown`?(e.preventDefault(),I=Math.min(F.length-1,I+1),K(),!0):e.key===`ArrowUp`?(e.preventDefault(),I=Math.max(0,I-1),K(),!0):e.key===`Tab`?(e.preventDefault(),q(!1),!0):e.key===`Enter`&&!e.shiftKey&&!e.isComposing?(e.preventDefault(),q(!0),!0):e.key===`Escape`&&(e.preventDefault(),Y(),!0):e.key===`Escape`&&(e.preventDefault(),Y(),!0):(e.key===`ArrowDown`||e.key===`ArrowUp`)&&!e.isComposing&&(X(V()?.value||``),L?(I=e.key===`ArrowUp`?F.length-1:0,K(),e.preventDefault(),!0):!1)}function Q(e){let t=e.target,n=t.closest(`.cmd-info-btn`);if(n){e.preventDefault(),e.stopPropagation();let t=M[n.getAttribute(`data-cmd-info`)||``];t&&a(t)&&(Y(),g(t));return}let r=t.closest(`.cmd-item`);if(!r)return;let i=parseInt(r.dataset.index||`-1`,10);Number.isNaN(i)||i<0||(I=Math.min(i,F.length-1),q(!0))}function $(e){if(!L)return;let t=B(),n=V();if(!t||!n)return;let r=e.target;!t.contains(r)&&r!==n&&Y()}export{J as a,h as c,$ as i,Q as n,X as o,Z as r,N as s,Y as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,t=/[\|\!\+\-\*\?\~\^\&]/,n=/^(OR|AND|NOT|TO)$/;function r(e){return parseFloat(e).toString()===e}function i(e){return function(t,n){for(var r=!1,i;(i=t.next())!=null&&(i!=e||r);)r=!r&&i==`\\`;return r||(n.tokenize=s),`string`}}function a(e){return function(t,n){return e==`|`?t.eat(/\|/):e==`&`&&t.eat(/\&/),n.tokenize=s,`operator`}}function o(t){return function(i,a){for(var o=t;(t=i.peek())&&t.match(e)!=null;)o+=i.next();return a.tokenize=s,n.test(o)?`operator`:r(o)?`number`:i.peek()==`:`?`propertyName`:`string`}}function s(n,r){var c=n.next();return c==`"`?r.tokenize=i(c):t.test(c)?r.tokenize=a(c):e.test(c)&&(r.tokenize=o(c)),r.tokenize==s?null:r.tokenize(n,r)}var c={name:`solr`,startState:function(){return{tokenize:s}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)}};export{c as solr};
|