cli-jaw 2.0.10 → 2.0.16
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.ja.md +8 -5
- package/README.ko.md +8 -5
- package/README.md +31 -14
- package/README.zh-CN.md +8 -5
- package/dist/bin/commands/browser-web-ai.js +1 -0
- package/dist/bin/commands/browser-web-ai.js.map +1 -1
- package/dist/bin/commands/browser.js +1 -1
- package/dist/bin/commands/dashboard-memory.js +1 -0
- package/dist/bin/commands/dashboard-memory.js.map +1 -1
- package/dist/bin/commands/dispatch.js +34 -7
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +12 -6
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +1 -2
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/orchestrate.js +6 -4
- package/dist/bin/commands/orchestrate.js.map +1 -1
- package/dist/bin/commands/serve.js +3 -1
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +4 -4
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/types.js +2 -0
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/postinstall.js +0 -176
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/scripts/fresh-install-smoke.js +1 -2
- package/dist/scripts/fresh-install-smoke.js.map +1 -1
- package/dist/server.js +52 -18
- package/dist/server.js.map +1 -1
- package/dist/src/agent/agy-runtime.js +4 -0
- package/dist/src/agent/agy-runtime.js.map +1 -1
- package/dist/src/agent/alert-escalation.js +8 -2
- package/dist/src/agent/alert-escalation.js.map +1 -1
- package/dist/src/agent/args.js +35 -2
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/codex-app-client.js +3 -0
- package/dist/src/agent/codex-app-client.js.map +1 -1
- package/dist/src/agent/cursor-runtime.js +240 -0
- package/dist/src/agent/cursor-runtime.js.map +1 -0
- package/dist/src/agent/events/acp.js +7 -3
- package/dist/src/agent/events/acp.js.map +1 -1
- package/dist/src/agent/events/claude.js +5 -2
- package/dist/src/agent/events/claude.js.map +1 -1
- package/dist/src/agent/events/codex.js +21 -13
- package/dist/src/agent/events/codex.js.map +1 -1
- package/dist/src/agent/events/cursor.js +176 -0
- package/dist/src/agent/events/cursor.js.map +1 -0
- package/dist/src/agent/events/grok.js +13 -3
- package/dist/src/agent/events/grok.js.map +1 -1
- package/dist/src/agent/events/index.js +27 -0
- package/dist/src/agent/events/index.js.map +1 -1
- package/dist/src/agent/events/tool-labels.js +13 -6
- package/dist/src/agent/events/tool-labels.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +150 -5
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/resume-classifier.js +2 -0
- package/dist/src/agent/resume-classifier.js.map +1 -1
- package/dist/src/agent/spawn/resume.js +13 -2
- package/dist/src/agent/spawn/resume.js.map +1 -1
- package/dist/src/agent/spawn.js +44 -17
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/claude-models.js +3 -0
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/commands.js +66 -10
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +2 -2
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers-workflows.js +339 -0
- package/dist/src/cli/handlers-workflows.js.map +1 -0
- package/dist/src/cli/handlers.js +11 -1
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/readiness.js +22 -1
- package/dist/src/cli/readiness.js.map +1 -1
- package/dist/src/cli/registry.js +12 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +2 -2
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/command-contract/catalog.js +3 -1
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/cli-detection.js +203 -0
- package/dist/src/core/cli-detection.js.map +1 -0
- package/dist/src/core/config.js +2 -140
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/runtime-settings.js +31 -0
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/discord/bot.js +47 -26
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/commands.js +4 -10
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/send-only-client.js +79 -0
- package/dist/src/discord/send-only-client.js.map +1 -0
- package/dist/src/goal/heartbeat.js +51 -0
- package/dist/src/goal/heartbeat.js.map +1 -0
- package/dist/src/goal/runtime.js +31 -0
- package/dist/src/goal/runtime.js.map +1 -0
- package/dist/src/goal/store.js +153 -0
- package/dist/src/goal/store.js.map +1 -0
- package/dist/src/goal/types.js +2 -0
- package/dist/src/goal/types.js.map +1 -0
- package/dist/src/goal-run/controller.js +113 -0
- package/dist/src/goal-run/controller.js.map +1 -0
- package/dist/src/goal-run/events.js +25 -0
- package/dist/src/goal-run/events.js.map +1 -0
- package/dist/src/goal-run/failure-matrix.js +26 -0
- package/dist/src/goal-run/failure-matrix.js.map +1 -0
- package/dist/src/goal-run/policy.js +46 -0
- package/dist/src/goal-run/policy.js.map +1 -0
- package/dist/src/goal-run/types.js +2 -0
- package/dist/src/goal-run/types.js.map +1 -0
- package/dist/src/manager/git/diff-service.js +202 -0
- package/dist/src/manager/git/diff-service.js.map +1 -0
- package/dist/src/manager/notes/assets.js +11 -4
- package/dist/src/manager/notes/assets.js.map +1 -1
- package/dist/src/manager/notes/auth.js +123 -0
- package/dist/src/manager/notes/auth.js.map +1 -0
- package/dist/src/manager/notes/git.js +154 -0
- package/dist/src/manager/notes/git.js.map +1 -0
- package/dist/src/manager/notes/plugins.js +107 -0
- package/dist/src/manager/notes/plugins.js.map +1 -0
- package/dist/src/manager/notes/routes.js +91 -2
- package/dist/src/manager/notes/routes.js.map +1 -1
- package/dist/src/manager/notes/store.js +71 -1
- package/dist/src/manager/notes/store.js.map +1 -1
- package/dist/src/manager/notes/watcher.js +40 -4
- package/dist/src/manager/notes/watcher.js.map +1 -1
- package/dist/src/manager/notes/wiki-links.js +99 -10
- package/dist/src/manager/notes/wiki-links.js.map +1 -1
- package/dist/src/manager/notes/ws.js +62 -0
- package/dist/src/manager/notes/ws.js.map +1 -0
- package/dist/src/manager/preview-link-policy.js +46 -0
- package/dist/src/manager/preview-link-policy.js.map +1 -0
- package/dist/src/manager/preview-origin-proxy.js +28 -5
- package/dist/src/manager/preview-origin-proxy.js.map +1 -1
- package/dist/src/manager/preview-ports.js +12 -0
- package/dist/src/manager/preview-ports.js.map +1 -0
- package/dist/src/manager/proxy.js +15 -3
- package/dist/src/manager/proxy.js.map +1 -1
- package/dist/src/manager/registry.js +115 -0
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/dashboard-git.js +106 -0
- package/dist/src/manager/routes/dashboard-git.js.map +1 -0
- package/dist/src/manager/server.js +60 -4
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/memory/heartbeat.js +4 -1
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/messaging/channel-health.js +54 -0
- package/dist/src/messaging/channel-health.js.map +1 -0
- package/dist/src/messaging/runtime.js +1 -0
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send-result.js +9 -0
- package/dist/src/messaging/send-result.js.map +1 -0
- package/dist/src/orchestrator/pipeline.js +45 -0
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +50 -1
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +16 -8
- package/dist/src/prompt/templates/employee.md +3 -1
- package/dist/src/prompt/templates/orchestration.md +15 -5
- package/dist/src/routes/goal-run.js +86 -0
- package/dist/src/routes/goal-run.js.map +1 -0
- package/dist/src/routes/goal.js +118 -0
- package/dist/src/routes/goal.js.map +1 -0
- package/dist/src/routes/messaging.js +17 -11
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +47 -17
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/quota-agy-reverse.js +133 -0
- package/dist/src/routes/quota-agy-reverse.js.map +1 -0
- package/dist/src/routes/quota-cursor-dashboard.js +200 -0
- package/dist/src/routes/quota-cursor-dashboard.js.map +1 -0
- package/dist/src/routes/settings.js +6 -6
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/team/collector.js +45 -0
- package/dist/src/team/collector.js.map +1 -0
- package/dist/src/team/dispatcher.js +35 -0
- package/dist/src/team/dispatcher.js.map +1 -0
- package/dist/src/team/planner.js +58 -0
- package/dist/src/team/planner.js.map +1 -0
- package/dist/src/team/preflight.js +46 -0
- package/dist/src/team/preflight.js.map +1 -0
- package/dist/src/team/types.js +12 -0
- package/dist/src/team/types.js.map +1 -0
- package/dist/src/telegram/bot.js +41 -10
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/types/cli-engine.js +1 -0
- package/dist/src/types/cli-engine.js.map +1 -1
- package/dist/src/types/cli-events.js +1 -1
- package/dist/src/types/cli-events.js.map +1 -1
- package/dist/src/workflows/artifacts.js +148 -0
- package/dist/src/workflows/artifacts.js.map +1 -0
- package/dist/src/workflows/browser-web-ai.js +18 -0
- package/dist/src/workflows/browser-web-ai.js.map +1 -0
- package/dist/src/workflows/checkpoint/store.js +31 -0
- package/dist/src/workflows/checkpoint/store.js.map +1 -0
- package/dist/src/workflows/checkpoint/types.js +4 -0
- package/dist/src/workflows/checkpoint/types.js.map +1 -0
- package/dist/src/workflows/competitive-gap.js +96 -0
- package/dist/src/workflows/competitive-gap.js.map +1 -0
- package/dist/src/workflows/context-map/builder.js +61 -0
- package/dist/src/workflows/context-map/builder.js.map +1 -0
- package/dist/src/workflows/context.js +19 -0
- package/dist/src/workflows/context.js.map +1 -0
- package/dist/src/workflows/deliberate.js +67 -0
- package/dist/src/workflows/deliberate.js.map +1 -0
- package/dist/src/workflows/employee-boundary.js +33 -0
- package/dist/src/workflows/employee-boundary.js.map +1 -0
- package/dist/src/workflows/events.js +24 -0
- package/dist/src/workflows/events.js.map +1 -0
- package/dist/src/workflows/guards.js +18 -0
- package/dist/src/workflows/guards.js.map +1 -0
- package/dist/src/workflows/handoff.js +48 -0
- package/dist/src/workflows/handoff.js.map +1 -0
- package/dist/src/workflows/index.js +6 -0
- package/dist/src/workflows/index.js.map +1 -0
- package/dist/src/workflows/permissions/policy.js +25 -0
- package/dist/src/workflows/permissions/policy.js.map +1 -0
- package/dist/src/workflows/permissions/types.js +26 -0
- package/dist/src/workflows/permissions/types.js.map +1 -0
- package/dist/src/workflows/plan.js +70 -0
- package/dist/src/workflows/plan.js.map +1 -0
- package/dist/src/workflows/planaudit.js +64 -0
- package/dist/src/workflows/planaudit.js.map +1 -0
- package/dist/src/workflows/runtime-guards.js +46 -0
- package/dist/src/workflows/runtime-guards.js.map +1 -0
- package/dist/src/workflows/runtime.js +25 -0
- package/dist/src/workflows/runtime.js.map +1 -0
- package/dist/src/workflows/status.js +49 -0
- package/dist/src/workflows/status.js.map +1 -0
- package/dist/src/workflows/types.js +4 -0
- package/dist/src/workflows/types.js.map +1 -0
- package/dist/src/workflows/web-ai-guards.js +22 -0
- package/dist/src/workflows/web-ai-guards.js.map +1 -0
- package/package.json +9 -4
- package/public/assets/providers/cursor-color.svg +2 -0
- package/public/assets/providers/cursor.svg +2 -0
- package/public/css/chat.css +99 -0
- package/public/css/orc-state.css +11 -1
- package/public/css/sidebar.css +34 -0
- package/public/css/variables.css +23 -2
- package/public/css/workflow-cockpit.css +62 -0
- package/public/dist/assets/{AdvancedExport-CZEVPqHb.js → AdvancedExport-DLCgT_ZP.js} +1 -1
- package/public/dist/assets/{Agent-BBrJGd5m.js → Agent-CIUGaUVn.js} +1 -1
- package/public/dist/assets/{Browser-dBaU9G9D.js → Browser-C4TCAhKR.js} +1 -1
- package/public/dist/assets/BrowserPanel-BN01Lfc5.css +1 -0
- package/public/dist/assets/BrowserPanel-weeCb2qu.js +1 -0
- package/public/dist/assets/ChannelsDiscord-Bwt2-Jva.js +1 -0
- package/public/dist/assets/ChannelsTelegram-xjA3-Mr8.js +1 -0
- package/public/dist/assets/{DashboardMeta-LVAL7TtE.js → DashboardMeta-CBckkL_V.js} +1 -1
- package/public/dist/assets/DiffPanel-BHvC0wCX.css +1 -0
- package/public/dist/assets/DiffPanel-DZ4-3QSH.js +3 -0
- package/public/dist/assets/{Display-CFm1UmEo.js → Display-BPbCVOoi.js} +1 -1
- package/public/dist/assets/DocPanel-C1pGgE-S.js +1 -0
- package/public/dist/assets/DocPanel-CL1scIfq.css +1 -0
- package/public/dist/assets/Employees-BL9MAzzx.js +1 -0
- package/public/dist/assets/FolderPanel-DSkanaGN.js +1 -0
- package/public/dist/assets/FolderPanel-XCno5AI9.css +1 -0
- package/public/dist/assets/Heartbeat-D64JCg4t.js +1 -0
- package/public/dist/assets/MarkdownRenderer-CS6jvLpf.js +15 -0
- package/public/dist/assets/{Mcp-9NU4YkKO.js → Mcp-wYwJA_61.js} +1 -1
- package/public/dist/assets/{Memory-uZT30fww.js → Memory-BgN8djV4.js} +1 -1
- package/public/dist/assets/MilkdownWysiwygEditor-Btwmr5Re.js +160 -0
- package/public/dist/assets/{ModelProvider-CsIOyoZP.js → ModelProvider-DHQ1Zvw0.js} +1 -1
- package/public/dist/assets/{Network-D7hGwnyG.js → Network-B-WvB6R5.js} +1 -1
- package/public/dist/assets/NotesGraphWorkspace-CK8kKY8A.js +1 -0
- package/public/dist/assets/{Permissions-DwdU3wi8.js → Permissions-BvtVczZS.js} +1 -1
- package/public/dist/assets/Permissions-QxvByCop.js +1 -0
- package/public/dist/assets/{Profile-BNTKD_Ex.js → Profile-D_6kFj73.js} +1 -1
- package/public/dist/assets/{Prompts-D_mCfYiu.js → Prompts--4CM3enz.js} +1 -1
- package/public/dist/assets/{SpeechKeys-BTXCM-Fs.js → SpeechKeys-Cx4_SXTM.js} +1 -1
- package/public/dist/assets/TerminalPanel-AKKXu8dJ.js +36 -0
- package/public/dist/assets/TerminalPanel-DdE69MNo.css +1 -0
- package/public/dist/assets/TransportStatusChips-BwR7Sq4s.js +1 -0
- package/public/dist/assets/agent-meta-BhEbjy4P.js +1 -0
- package/public/dist/assets/api-30EcU_Lb.js +1 -0
- package/public/dist/assets/app-DLDdZ41k.js +48 -0
- package/public/dist/assets/app-RpnKs-sT.css +1 -0
- package/public/dist/assets/architecture-7EHR7CIX-GHIeXYpv.js +1 -0
- package/public/dist/assets/{architectureDiagram-3BPJPVTR-CJCPEsxo.js → architectureDiagram-3BPJPVTR-ByOUFrxp.js} +1 -1
- package/public/dist/assets/{blockDiagram-GPEHLZMM-CO1bkn0E.js → blockDiagram-GPEHLZMM-BcefwseF.js} +2 -2
- package/public/dist/assets/{c4Diagram-AAUBKEIU-D2R36Xu6.js → c4Diagram-AAUBKEIU-C9FinBRA.js} +1 -1
- package/public/dist/assets/channel-5QxFRU5l.js +1 -0
- package/public/dist/assets/{chunk-2J33WTMH-xiPJWKcl.js → chunk-2J33WTMH-N9wxleFR.js} +1 -1
- package/public/dist/assets/{chunk-3OPIFGDE-DixnEkZw.js → chunk-3OPIFGDE-B1qdy3mP.js} +1 -1
- package/public/dist/assets/{chunk-4BX2VUAB-6lTRwyT0.js → chunk-4BX2VUAB-Dbg5PjGD.js} +1 -1
- package/public/dist/assets/{chunk-4EGX6M5U-DXtAEgX6.js → chunk-4EGX6M5U-BIFnMXqg.js} +1 -1
- package/public/dist/assets/chunk-55IACEB6-C9gRJHcb.js +1 -0
- package/public/dist/assets/{chunk-5DO6E6H7-DDcMHB95.js → chunk-5DO6E6H7-Dc9k92pO.js} +1 -1
- package/public/dist/assets/{chunk-5ZQYHXKU-Bli4k6GI.js → chunk-5ZQYHXKU-BOYB4Qmp.js} +2 -2
- package/public/dist/assets/{chunk-727SXJPM-sp4W8bhf.js → chunk-727SXJPM-2OgKkBMF.js} +1 -1
- package/public/dist/assets/{chunk-AQP2D5EJ-Co6ucdGq.js → chunk-AQP2D5EJ-CIXopxD6.js} +1 -1
- package/public/dist/assets/{chunk-BR22UD5L-CVuYkAd1.js → chunk-BR22UD5L-DlNCrhSA.js} +1 -1
- package/public/dist/assets/{chunk-BSJP7CBP-B47GpxcW.js → chunk-BSJP7CBP-CpgaSqhR.js} +1 -1
- package/public/dist/assets/{chunk-CSCIHK7Q-CAE1p4Em.js → chunk-CSCIHK7Q-R-Y9ue5N.js} +1 -1
- package/public/dist/assets/{chunk-FHYWG6QK-CxZt-yZZ.js → chunk-FHYWG6QK-DVrRFYRd.js} +1 -1
- package/public/dist/assets/{chunk-FMBD7UC4-CwqBlx0l.js → chunk-FMBD7UC4-jn5b6_kv.js} +1 -1
- package/public/dist/assets/{chunk-KSCS5N6A-Beq1s5eO.js → chunk-KSCS5N6A-DayXQgYz.js} +2 -2
- package/public/dist/assets/{chunk-L5ZTLDWV-DfUlBdXN.js → chunk-L5ZTLDWV-CtcQ12uz.js} +1 -1
- package/public/dist/assets/{chunk-LZXEDZCA-B_yP4UKw.js → chunk-LZXEDZCA-BuEa86aU.js} +1 -1
- package/public/dist/assets/{chunk-MPE355IW-Bp4qAOUf.js → chunk-MPE355IW-Be8tT5FQ.js} +1 -1
- package/public/dist/assets/{chunk-MZUSXYTE-DAU-v-0c.js → chunk-MZUSXYTE-bFnwST0F.js} +1 -1
- package/public/dist/assets/{chunk-N66VUXT2-CpPz1L5u.js → chunk-N66VUXT2-BSpsJq6A.js} +1 -1
- package/public/dist/assets/{chunk-ND2GUHAM-3qbNb7I9.js → chunk-ND2GUHAM-CnEcVn6T.js} +1 -1
- package/public/dist/assets/{chunk-NZK2D7GU-CTqFQ8K5.js → chunk-NZK2D7GU-asW9Yrwq.js} +1 -1
- package/public/dist/assets/{chunk-O5CBEL6O-D-jDqsN2.js → chunk-O5CBEL6O-BVoXQ09V.js} +1 -1
- package/public/dist/assets/{chunk-PUPMXCY4-ppZvktf-.js → chunk-PUPMXCY4-BU48euO5.js} +1 -1
- package/public/dist/assets/chunk-QZHKN3VN-CC7ecfZE.js +1 -0
- package/public/dist/assets/{chunk-UIBZB4QT-rJZEVBX0.js → chunk-UIBZB4QT-aXCea_7h.js} +1 -1
- package/public/dist/assets/{chunk-WCWK7LTN-CGvUyB8h.js → chunk-WCWK7LTN-fR0CutHV.js} +1 -1
- package/public/dist/assets/chunk-WU5MYG2G-CDC6hlhk.js +1 -0
- package/public/dist/assets/{chunk-XPW4576I-BaQfzRci.js → chunk-XPW4576I-CFkDqujt.js} +1 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-Bfu4_8Yk.js +1 -0
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-_XyS72AY.js +1 -0
- package/public/dist/assets/constants-ahKI_aEG.js +1 -0
- package/public/dist/assets/{cose-bilkent-S5V4N54A-Bt9AAJCx.js → cose-bilkent-S5V4N54A-CZbCTJt4.js} +1 -1
- package/public/dist/assets/{dagre-BM42HDAG-CXEA1wvZ.js → dagre-BM42HDAG-BB0IJKjW.js} +1 -1
- package/public/dist/assets/{dagre-Ve-IAfyz.js → dagre-D4AB5Dyv.js} +1 -1
- package/public/dist/assets/desktop-bridge-CrqidwSb.js +1 -0
- package/public/dist/assets/{diagram-2AECGRRQ-CCB0OKc2.js → diagram-2AECGRRQ-CHUQ78BD.js} +1 -1
- package/public/dist/assets/{diagram-5GNKFQAL-Cki9HABy.js → diagram-5GNKFQAL-onxHMGMn.js} +1 -1
- package/public/dist/assets/{diagram-KO2AKTUF-DNBDjE2o.js → diagram-KO2AKTUF-BlgkTTwi.js} +1 -1
- package/public/dist/assets/{diagram-LMA3HP47-Cy23RDPa.js → diagram-LMA3HP47-BVWYubzU.js} +1 -1
- package/public/dist/assets/{diagram-OG6HWLK6-CT_YF8cA.js → diagram-OG6HWLK6-BM7IcJ6z.js} +1 -1
- package/public/dist/assets/dist-2S2B_MeU.js +1 -0
- package/public/dist/assets/dist-B2d2NOJ3.js +1 -0
- package/public/dist/assets/dist-BSF2Z7j1.js +6 -0
- package/public/dist/assets/dist-BZh7LRrp.js +1 -0
- package/public/dist/assets/dist-BaazPVzw.js +1 -0
- package/public/dist/assets/dist-Bn4kv_Se.js +1 -0
- package/public/dist/assets/dist-CB1fgeSN.js +1 -0
- package/public/dist/assets/dist-CG0XIeov.js +1 -0
- package/public/dist/assets/dist-CG65f_qI.js +1 -0
- package/public/dist/assets/dist-CJwXuDux.js +39 -0
- package/public/dist/assets/dist-CU9b0vPA.js +1 -0
- package/public/dist/assets/dist-CkWMWu5F.js +23 -0
- package/public/dist/assets/dist-CsK9fYYW.js +1 -0
- package/public/dist/assets/dist-CuNACpdD.js +1 -0
- package/public/dist/assets/dist-CzDHA1yv.js +1 -0
- package/public/dist/assets/dist-D0mdXpwq.js +1 -0
- package/public/dist/assets/{dist-3R3GxjCf.js → dist-DCefgfkj.js} +5 -5
- package/public/dist/assets/dist-DJ5byDHS2.js +1 -0
- package/public/dist/assets/dist-DLSl_Nbu.js +1 -0
- package/public/dist/assets/dist-DLa7--1u.js +1 -0
- package/public/dist/assets/dist-DZ1vWpde.js +1 -0
- package/public/dist/assets/dist-D_ULP6ER.js +1 -0
- package/public/dist/assets/dist-Dgo6P711.js +1 -0
- package/public/dist/assets/dist-DtkJvqbT.js +9 -0
- package/public/dist/assets/dist-DwzmyMDC.js +1 -0
- package/public/dist/assets/dist-H3yurMdo.js +11 -0
- package/public/dist/assets/dist-HtoUbUb4.js +1 -0
- package/public/dist/assets/dist-P76w4V8t.js +2 -0
- package/public/dist/assets/{dist-DuuoJfRB.js → dist-SWkyI5gN.js} +2 -2
- package/public/dist/assets/dist-w85EQGWO.js +1 -0
- package/public/dist/assets/{dockerfile-DAfh5qoE.js → dockerfile-O79f3xVO.js} +1 -1
- package/public/dist/assets/employees-DZSPGlaH.js +33 -0
- package/public/dist/assets/{erDiagram-TEJ5UH35-Cq7oHdXg.js → erDiagram-TEJ5UH35-Dr-3ziJG.js} +1 -1
- package/public/dist/assets/eventmodeling-FCH6USID-Du0rADZ8.js +1 -0
- package/public/dist/assets/{factor-BpoYJieo.js → factor-2MJ0aFHQ.js} +1 -1
- package/public/dist/assets/{flowDiagram-I6XJVG4X-D8CdEnfM.js → flowDiagram-I6XJVG4X-COxvv8bU.js} +1 -1
- package/public/dist/assets/{ganttDiagram-6RSMTGT7-B1rzKXi_.js → ganttDiagram-6RSMTGT7-BztWk1Ow.js} +2 -2
- package/public/dist/assets/gitGraph-WXDBUCRP-Cw5oPUI1.js +1 -0
- package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CqLh-joi.js → gitGraphDiagram-PVQCEYII-Dw-pLiB8.js} +1 -1
- package/public/dist/assets/{graphlib-W5bESv3F.js → graphlib-DCNdUnXF.js} +1 -1
- package/public/dist/assets/info-J43DQDTF-bda--3fv.js +1 -0
- package/public/dist/assets/{infoDiagram-5YYISTIA-C1zVxumj.js → infoDiagram-5YYISTIA-BSM5RFYV.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-x-9J6xPM.js → ishikawaDiagram-YF4QCWOH-DGqEaMN9.js} +1 -1
- package/public/dist/assets/javascript-BIzwdG_f.js +1 -0
- package/public/dist/assets/{journeyDiagram-JHISSGLW-BDYzHrtn.js → journeyDiagram-JHISSGLW-CBGlHr__.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-BJ-06i6Z.js → kanban-definition-UN3LZRKU-CtvwD90I.js} +1 -1
- package/public/dist/assets/manager-CFxbpg7j.css +1 -0
- package/public/dist/assets/manager-wAHlX68t.js +12 -0
- package/public/dist/assets/memory-B4RpXXJ7.js +20 -0
- package/public/dist/assets/memory-C9EVOb_D.js +1 -0
- package/public/dist/assets/mermaid-loader-BPeAxEES.js +1 -0
- package/public/dist/assets/{mermaid-parser.core-C62NUJRb.js → mermaid-parser.core-BB62R3s0.js} +1 -1
- package/public/dist/assets/mermaid.core-86z3EI0c.js +1 -0
- package/public/dist/assets/{mermaid.core-D8VnfThU.js → mermaid.core-Eh0d41ge.js} +2 -2
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-D8NDuIhn.js → mindmap-definition-RKZ34NQL-Cg1Nirgc.js} +1 -1
- package/public/dist/assets/notes-graph-settings-CznA-Qu0.js +1 -0
- package/public/dist/assets/{nsis-Ch4QINLN.js → nsis-CVYtDIFk.js} +1 -1
- package/public/dist/assets/packet-YPE3B663-CdmMldz9.js +1 -0
- package/public/dist/assets/pie-LRSECV5Y-Bh7evnjl.js +1 -0
- package/public/dist/assets/{pieDiagram-4H26LBE5-CpBePil_.js → pieDiagram-4H26LBE5--PRag7Te.js} +1 -1
- package/public/dist/assets/{provider-icons-ClVd2suJ.js → provider-icons-XEfJPGTe.js} +9 -5
- package/public/dist/assets/{pug-CXYqmmpP.js → pug-DplZiQL-.js} +1 -1
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-C1WWpn88.js → quadrantDiagram-W4KKPZXB-BTql-Bsn.js} +1 -1
- package/public/dist/assets/radar-GUYGQ44K-Bi6iY53d.js +1 -0
- package/public/dist/assets/render-DnylWKO1.js +28 -0
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-C_D5VbNk.js → requirementDiagram-4Y6WPE33-43_zBMme.js} +1 -1
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP--RH3Es8R.js → sankeyDiagram-5OEKKPKP-Bhvu7fVp.js} +1 -1
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-CVI4AjhN.js → sequenceDiagram-3UESZ5HK-DiT6UbHL.js} +1 -1
- package/public/dist/assets/settings-DIG_i79X.js +1 -0
- package/public/dist/assets/settings-VCXKhhhz.js +66 -0
- package/public/dist/assets/sidebar-Bi_ktFVw.js +18 -0
- package/public/dist/assets/{skills-DbRVI-zf.js → skills-CW7NEhew.js} +2 -2
- package/public/dist/assets/skills-RjRqvykb.js +1 -0
- package/public/dist/assets/slash-commands-CAydTUgf.js +19 -0
- package/public/dist/assets/slash-commands-DdXu96Zd.js +1 -0
- package/public/dist/assets/{state-xhhyIPlq.js → state-D04-chBy.js} +1 -1
- package/public/dist/assets/{stateDiagram-AJRCARHV-4bx1rPZ3.js → stateDiagram-AJRCARHV-EdHNB699.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CwXjV0-w.js +1 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-DeQoGRE2.js → timeline-definition-PNZ67QCA-DLCG8ciJ.js} +1 -1
- package/public/dist/assets/{trace-drawer-CIVBXyRH.js → trace-drawer-G-KP3IbQ.js} +1 -1
- package/public/dist/assets/treeView-BLDUP644-gIRuNooA.js +1 -0
- package/public/dist/assets/treemap-LRROVOQU-DGFQnuQ3.js +1 -0
- package/public/dist/assets/ui-CIQjTLzc.js +1 -0
- package/public/dist/assets/ui-CkHB9Jmo.js +140 -0
- package/public/dist/assets/vendor-utils-BydMkEGM.js +1 -0
- package/public/dist/assets/{vennDiagram-CIIHVFJN-CejyJK0L.js → vennDiagram-CIIHVFJN-C93tL0id.js} +1 -1
- package/public/dist/assets/wardley-L42UT6IY-D7Pv8rzC.js +1 -0
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-DqXV0sa1.js → wardleyDiagram-YWT4CUSO-BQQr2bW2.js} +1 -1
- package/public/dist/assets/wiki-link-resolver-CQwLeKpN.js +22 -0
- package/public/dist/assets/wiki-link-suggestions-DnVtu7Jb.js +2 -0
- package/public/dist/assets/{xychartDiagram-2RQKCTM6-CWLoVl2b.js → xychartDiagram-2RQKCTM6-DGZ5VpP9.js} +2 -2
- package/public/dist/index.html +36 -10
- package/public/dist/manager/index.html +2 -2
- package/public/index.html +35 -8
- package/public/js/constants.ts +22 -1
- package/public/js/diagram/iframe-renderer.ts +2 -1
- package/public/js/features/chat-messages.ts +2 -2
- package/public/js/features/chat.ts +144 -17
- package/public/js/features/copy-text.ts +39 -0
- package/public/js/features/employees.ts +5 -5
- package/public/js/features/memory.ts +3 -4
- package/public/js/features/message-actions.ts +3 -2
- package/public/js/features/message-history.ts +2 -2
- package/public/js/features/pending-queue.ts +3 -2
- package/public/js/features/preview-shortcut-bridge.ts +25 -10
- package/public/js/features/settings-channel.ts +3 -0
- package/public/js/features/settings-cli-status.ts +254 -45
- package/public/js/features/settings-core.ts +8 -0
- package/public/js/features/settings.ts +1 -1
- package/public/js/features/slash-commands.ts +34 -2
- package/public/js/features/theme.ts +34 -6
- package/public/js/features/transport-status-row.ts +91 -0
- package/public/js/features/workflow-event-adapter.ts +77 -0
- package/public/js/main.ts +21 -4
- package/public/js/preview-parent-origin.ts +38 -0
- package/public/js/provider-icons.ts +6 -1
- package/public/js/render/code-copy.ts +16 -18
- package/public/js/render/file-links.ts +127 -30
- package/public/js/render/notes-vault-path.ts +64 -0
- package/public/js/render/post-render.ts +2 -2
- package/public/js/render/svg-actions.ts +4 -1
- package/public/js/render.ts +1 -0
- package/public/js/state.ts +19 -1
- package/public/js/ws.ts +121 -8
- package/public/locales/en.json +40 -0
- package/public/locales/ja.json +31 -0
- package/public/locales/ko.json +40 -0
- package/public/locales/zh.json +31 -0
- package/public/manager/src/App.tsx +65 -64
- package/public/manager/src/AppChrome.tsx +14 -5
- package/public/manager/src/InstancePreview.tsx +113 -2
- package/public/manager/src/SidebarRailRouter.tsx +67 -4
- package/public/manager/src/api.ts +46 -0
- package/public/manager/src/browser-panel/BrowserPanel.tsx +445 -0
- package/public/manager/src/browser-panel/browser-panel.css +241 -0
- package/public/manager/src/browser-panel/browser-url.ts +55 -0
- package/public/manager/src/clipboard/copy-text.ts +27 -0
- package/public/manager/src/components/CommandBar.tsx +2 -0
- package/public/manager/src/components/CommandCenter.tsx +3 -1
- package/public/manager/src/components/DesktopPanelControls.tsx +79 -0
- package/public/manager/src/components/SidebarRail.tsx +1 -1
- package/public/manager/src/components/WorkspaceLayout.tsx +71 -1
- package/public/manager/src/dashboard-settings/DashboardDeveloperSettingsSection.tsx +123 -0
- package/public/manager/src/dashboard-settings/DashboardSettingsSidebar.tsx +6 -2
- package/public/manager/src/dashboard-settings/DashboardSettingsWorkspace.tsx +4 -1
- package/public/manager/src/dashboard-settings/dashboard-settings-ui.ts +8 -0
- package/public/manager/src/desktop-link.tsx +6 -1
- package/public/manager/src/diff-panel/DiffPanel.tsx +219 -0
- package/public/manager/src/diff-panel/diff-client.ts +46 -0
- package/public/manager/src/diff-panel/diff-panel.css +163 -0
- package/public/manager/src/diff-panel/diff-root-candidates.ts +54 -0
- package/public/manager/src/doc-panel/DocPanel.tsx +113 -0
- package/public/manager/src/doc-panel/doc-panel.css +57 -0
- package/public/manager/src/folder-panel/FolderPanel.tsx +144 -0
- package/public/manager/src/folder-panel/folder-panel.css +82 -0
- package/public/manager/src/folder-panel/folder-sources.ts +93 -0
- package/public/manager/src/help/helpContent.tsx +3 -0
- package/public/manager/src/hooks/useDashboardView.ts +22 -1
- package/public/manager/src/main.tsx +2 -0
- package/public/manager/src/manager-components.css +12 -0
- package/public/manager/src/manager-dashboard-reminders-priority.css +11 -0
- package/public/manager/src/manager-dashboard-reminders.css +29 -0
- package/public/manager/src/manager-layout.css +68 -22
- package/public/manager/src/manager-notes.css +181 -0
- package/public/manager/src/manager-p0-1-1.css +118 -1
- package/public/manager/src/manager-polish.css +15 -12
- package/public/manager/src/manager-shortcuts.ts +17 -0
- package/public/manager/src/manager-tokens.css +25 -0
- package/public/manager/src/notes/MarkdownEditor.tsx +26 -3
- package/public/manager/src/notes/NotesFileTree.tsx +24 -2
- package/public/manager/src/notes/NotesGraphView.tsx +1 -145
- package/public/manager/src/notes/NotesSidebar.tsx +4 -0
- package/public/manager/src/notes/NotesThemeLoader.tsx +104 -0
- package/public/manager/src/notes/NotesWorkspace.tsx +33 -5
- package/public/manager/src/notes/graph/NotesGraphCanvas.tsx +195 -0
- package/public/manager/src/notes/graph/NotesGraphControlsPanel.tsx +172 -0
- package/public/manager/src/notes/graph/NotesGraphWorkspace.tsx +116 -0
- package/public/manager/src/notes/graph/notes-graph-filter.ts +192 -0
- package/public/manager/src/notes/graph/notes-graph-force.ts +36 -0
- package/public/manager/src/notes/graph/notes-graph-settings.ts +121 -0
- package/public/manager/src/notes/notes-graph.css +382 -0
- package/public/manager/src/notes/rendering/CodeBlock.tsx +5 -4
- package/public/manager/src/notes/rendering/MarkdownRenderer.tsx +3 -0
- package/public/manager/src/notes/useNoteSync.ts +67 -0
- package/public/manager/src/notes/wysiwyg/MilkdownWysiwygEditor.tsx +4 -0
- package/public/manager/src/notes/wysiwyg/milkdown-code-block-view.ts +5 -1
- package/public/manager/src/notes/wysiwyg/milkdown-slash-menu.ts +192 -0
- package/public/manager/src/notes/wysiwyg/milkdown-table-menu.ts +120 -0
- package/public/manager/src/panels/BottomPanel.tsx +61 -0
- package/public/manager/src/panels/BottomPanelTabBar.tsx +71 -0
- package/public/manager/src/panels/PanelLayoutProvider.tsx +288 -0
- package/public/manager/src/panels/PanelResizer.tsx +71 -0
- package/public/manager/src/panels/RightSidebar.tsx +192 -0
- package/public/manager/src/panels/desktop-bridge.ts +112 -0
- package/public/manager/src/panels/panel-capabilities.ts +44 -0
- package/public/manager/src/panels/panel-layout-registry-state.ts +38 -0
- package/public/manager/src/panels/panel-shortcut-bus.ts +15 -0
- package/public/manager/src/panels/panels.css +274 -0
- package/public/manager/src/panels/types.ts +16 -0
- package/public/manager/src/preview.ts +11 -1
- package/public/manager/src/settings/pages/ChannelsDiscord.tsx +3 -1
- package/public/manager/src/settings/pages/ChannelsTelegram.tsx +3 -1
- package/public/manager/src/settings/pages/components/ActiveChannelToggle.tsx +2 -2
- package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +108 -0
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +22 -3
- package/public/manager/src/settings/pages/components/employees-helpers.ts +1 -0
- package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +1 -0
- package/public/manager/src/settings-controls.css +57 -0
- package/public/manager/src/settings-embedding.css +3 -3
- package/public/manager/src/terminal/TerminalPanel.tsx +362 -0
- package/public/manager/src/terminal/terminal-bridge.ts +12 -0
- package/public/manager/src/terminal/terminal.css +175 -0
- package/public/manager/src/types.ts +66 -2
- package/public/manager/src/usePreviewShortcutMessages.ts +12 -3
- package/scripts/fresh-install-smoke.ts +1 -2
- package/scripts/install-risk-gate.mjs +0 -18
- package/scripts/install-wsl.sh +0 -46
- package/scripts/install.sh +0 -28
- package/scripts/release-gates.mjs +52 -0
- package/scripts/release.sh +9 -1
- package/scripts/require-release-evidence.mjs +0 -2
- package/public/dist/assets/ChannelsDiscord-CbmWms9-.js +0 -1
- package/public/dist/assets/ChannelsTelegram-BD4Eyztg.js +0 -1
- package/public/dist/assets/Employees-DcMChleU.js +0 -1
- package/public/dist/assets/HealthBadge-CfLTPTPW.js +0 -1
- package/public/dist/assets/Heartbeat-BoobN35p.js +0 -1
- package/public/dist/assets/MilkdownWysiwygEditor-Otw40DDF.js +0 -160
- package/public/dist/assets/NotesGraphView-CwdEnL7d.js +0 -1
- package/public/dist/assets/Permissions-CcIBptg3.js +0 -1
- package/public/dist/assets/agent-meta-BC7mLqo6.js +0 -1
- package/public/dist/assets/app-C7MAcAMu.js +0 -39
- package/public/dist/assets/app-CkFBKUf8.css +0 -1
- package/public/dist/assets/architecture-7EHR7CIX-wVaUQezY.js +0 -1
- package/public/dist/assets/channel-CCQujL1n.js +0 -1
- package/public/dist/assets/chunk-55IACEB6-DhWWzzdj.js +0 -1
- package/public/dist/assets/chunk-QZHKN3VN-CBAtPPT7.js +0 -1
- package/public/dist/assets/chunk-WU5MYG2G-DlBJtD7-.js +0 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-DmPJvqRM.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-ECmTUt7U.js +0 -1
- package/public/dist/assets/constants-BXWl7LTi.js +0 -1
- package/public/dist/assets/dist-BLd7xdyq.js +0 -1
- package/public/dist/assets/dist-BaRrwDy3.js +0 -1
- package/public/dist/assets/dist-Bbsp4OF7.js +0 -1
- package/public/dist/assets/dist-BkBGlG70.js +0 -1
- package/public/dist/assets/dist-BkJ_1mj9.js +0 -1
- package/public/dist/assets/dist-BxCRVW5D.js +0 -1
- package/public/dist/assets/dist-C-v7Rm67.js +0 -23
- package/public/dist/assets/dist-CNgDEAy8.js +0 -1
- package/public/dist/assets/dist-CO_W5rr2.js +0 -1
- package/public/dist/assets/dist-ChAUfTbO.js +0 -1
- package/public/dist/assets/dist-D-k-lzQT.js +0 -1
- package/public/dist/assets/dist-D1hPukqY.js +0 -1
- package/public/dist/assets/dist-D5Qx-jQQ.js +0 -1
- package/public/dist/assets/dist-D7VNzYBv.js +0 -6
- package/public/dist/assets/dist-DAxnodoa.js +0 -1
- package/public/dist/assets/dist-DHSyODkR.js +0 -1
- package/public/dist/assets/dist-DaYTPjbb2.js +0 -1
- package/public/dist/assets/dist-DlWi9tVO.js +0 -1
- package/public/dist/assets/dist-Dv36UUXz.js +0 -1
- package/public/dist/assets/dist-F4CVhitP.js +0 -9
- package/public/dist/assets/dist-LHbJYy3N.js +0 -1
- package/public/dist/assets/dist-VIlx7JdU.js +0 -1
- package/public/dist/assets/dist-cgDt2PmY.js +0 -11
- package/public/dist/assets/dist-eW2LjRIK.js +0 -1
- package/public/dist/assets/dist-vGn3_sWA.js +0 -1
- package/public/dist/assets/employees-BmxY8Mw3.js +0 -33
- package/public/dist/assets/eventmodeling-FCH6USID-Cq0nylxO.js +0 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-DDq6-3D3.js +0 -1
- package/public/dist/assets/info-J43DQDTF-OUnqwpUV.js +0 -1
- package/public/dist/assets/javascript-CZjRNq5R.js +0 -1
- package/public/dist/assets/manager-B2NWzG7j.css +0 -1
- package/public/dist/assets/manager-q68thm66.js +0 -25
- package/public/dist/assets/memory-BqqibBIE.js +0 -1
- package/public/dist/assets/memory-CRL72HB-.js +0 -20
- package/public/dist/assets/mermaid-loader-Dqb4ZUz6.js +0 -1
- package/public/dist/assets/mermaid.core-DYHvk6Pd.js +0 -1
- package/public/dist/assets/packet-YPE3B663-Bb9hBQ06.js +0 -1
- package/public/dist/assets/pie-LRSECV5Y-CNRQnRNZ.js +0 -1
- package/public/dist/assets/radar-GUYGQ44K-BxngU2v0.js +0 -1
- package/public/dist/assets/render-o_YEiCEO.js +0 -28
- package/public/dist/assets/settings-B0RlyAkI.js +0 -1
- package/public/dist/assets/settings-CCXRL5Ar.js +0 -46
- package/public/dist/assets/sidebar-DRJffqO1.js +0 -14
- package/public/dist/assets/skills-CFdzXbtK.js +0 -1
- package/public/dist/assets/slash-commands-BUM6u-Ex.js +0 -1
- package/public/dist/assets/slash-commands-C2YBMaQV.js +0 -14
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CrfGPzHb.js +0 -1
- package/public/dist/assets/treeView-BLDUP644-cXRzPGzz.js +0 -1
- package/public/dist/assets/treemap-LRROVOQU-BsZE5HPE.js +0 -1
- package/public/dist/assets/ui-C3ArwMhv.js +0 -140
- package/public/dist/assets/ui-CboUuc_E.js +0 -1
- package/public/dist/assets/vendor-utils-rVejrfMR.js +0 -1
- package/public/dist/assets/wardley-L42UT6IY-D_qm0cZD.js +0 -1
- package/public/dist/assets/wiki-link-suggestions-e5BzJAZH.js +0 -23
- /package/public/dist/assets/{DashboardEmbeddingSection-6F8zSSja.js → DashboardEmbeddingSection-ChF63KXJ.js} +0 -0
- /package/public/dist/assets/{InlineWarn-C7ISyzDI.js → InlineWarn-CY6dBBMq.js} +0 -0
- /package/public/dist/assets/{apl-CieDeb7B.js → apl-CQGZdmVU.js} +0 -0
- /package/public/dist/assets/{asciiarmor-BRTyulZY.js → asciiarmor-6rdc1JOx.js} +0 -0
- /package/public/dist/assets/{asn1-DoNAtQ5o.js → asn1-D8iCH-On.js} +0 -0
- /package/public/dist/assets/{asterisk-CR7oKPxi.js → asterisk-ChqZLgq_.js} +0 -0
- /package/public/dist/assets/{brainfuck-abzPcrOz.js → brainfuck-CDmGO_27.js} +0 -0
- /package/public/dist/assets/{chunk-AGHRB4JF-CYdXVA2-.js → chunk-AGHRB4JF-BgIXD8KY.js} +0 -0
- /package/public/dist/assets/{chunk-NNHCCRGN-BaiX9a5F.js → chunk-NNHCCRGN-BPmsUfnh.js} +0 -0
- /package/public/dist/assets/{clike-B71Zq38G.js → clike-CSGpadKW.js} +0 -0
- /package/public/dist/assets/{clojure-Zm0UzHPq.js → clojure-CST35Ic-.js} +0 -0
- /package/public/dist/assets/{cmake-D3UNdg6L.js → cmake-BVvLLL-M.js} +0 -0
- /package/public/dist/assets/{cobol-4fYvwQR0.js → cobol-Ck6DkJOz.js} +0 -0
- /package/public/dist/assets/{coffeescript-Ct6bZdRU.js → coffeescript-D_Wxovbg.js} +0 -0
- /package/public/dist/assets/{commonlisp-CrgXVPcd.js → commonlisp-B8ANOF1p.js} +0 -0
- /package/public/dist/assets/{crystal-bGOl67VM.js → crystal-Daoo63FI.js} +0 -0
- /package/public/dist/assets/{css-B_EV3Xq2.js → css-BLiiJuyL.js} +0 -0
- /package/public/dist/assets/{cypher-DXDlHTYf.js → cypher-BMqftmWo.js} +0 -0
- /package/public/dist/assets/{cytoscape.esm-BK7ao2Ti.js → cytoscape.esm-Dgu56jtY.js} +0 -0
- /package/public/dist/assets/{d-RL5ynsiz.js → d-DOGkwbDi.js} +0 -0
- /package/public/dist/assets/{diff-B5McBGjz.js → diff-VsLDmRbo.js} +0 -0
- /package/public/dist/assets/{dist-DrIWh2fi.js → dist-DJlNCT5R.js} +0 -0
- /package/public/dist/assets/{dtd-l3sK4p_C.js → dtd-CxrLPib8.js} +0 -0
- /package/public/dist/assets/{dylan-WjJGY-rW.js → dylan-QB82VE9N.js} +0 -0
- /package/public/dist/assets/{ebnf-BGY79HOS.js → ebnf-B6cp6Red.js} +0 -0
- /package/public/dist/assets/{ecl-BKh7OE1d.js → ecl-zYbBq-k7.js} +0 -0
- /package/public/dist/assets/{eiffel-Bzvlg3oK.js → eiffel-DnQZC9e4.js} +0 -0
- /package/public/dist/assets/{elm-5_BqNmKu.js → elm-Cx44SA5e.js} +0 -0
- /package/public/dist/assets/{erlang-BdVwz8I8.js → erlang-CEHBsR_g.js} +0 -0
- /package/public/dist/assets/{fcl-B9cnfODD.js → fcl-D0vOEWq5.js} +0 -0
- /package/public/dist/assets/{fields-BwD_NGxe.js → fields-C-y_8RgA.js} +0 -0
- /package/public/dist/assets/{forth-wZbbnGzb.js → forth-KL0mdDBU.js} +0 -0
- /package/public/dist/assets/{fortran-BAJZrRfU.js → fortran-Dq4mvV2Z.js} +0 -0
- /package/public/dist/assets/{gas-D60ZhBat.js → gas-C1IQIiP2.js} +0 -0
- /package/public/dist/assets/{gherkin-B8tKjAAi.js → gherkin-DJavHCGq.js} +0 -0
- /package/public/dist/assets/{groovy-BAG9eJUD.js → groovy-DYXu3zX-.js} +0 -0
- /package/public/dist/assets/{haskell-Cj4TmWbg.js → haskell-CEbLR9qt.js} +0 -0
- /package/public/dist/assets/{haxe-8chnvz-o.js → haxe-BpJF7A4A.js} +0 -0
- /package/public/dist/assets/{http-DDYeO71z.js → http-DWdENtd1.js} +0 -0
- /package/public/dist/assets/{idl-D1hY-Gp_.js → idl-CE1kS3NQ.js} +0 -0
- /package/public/dist/assets/{javascript-Sh0ZUMP2.js → javascript-CJNkmBfh.js} +0 -0
- /package/public/dist/assets/{julia-BibioBF2.js → julia-BJgPYrDa.js} +0 -0
- /package/public/dist/assets/{livescript-CSZrB6F4.js → livescript-DsrJVqPX.js} +0 -0
- /package/public/dist/assets/{lua-BvTlo5w3.js → lua-C7UuQSXZ.js} +0 -0
- /package/public/dist/assets/{mathematica-Bexv8BWZ.js → mathematica-DUerNKxF.js} +0 -0
- /package/public/dist/assets/{mbox-BAhbA8z2.js → mbox-l0MV8RAb.js} +0 -0
- /package/public/dist/assets/{mirc-BzT5Kh4S.js → mirc-Bs-bacTk.js} +0 -0
- /package/public/dist/assets/{mllike-DeoJnUZQ.js → mllike-DDa-ra-x.js} +0 -0
- /package/public/dist/assets/{modelica-FD_-Fxlc.js → modelica-DorVekoh.js} +0 -0
- /package/public/dist/assets/{mscgen-C-OyhbwB.js → mscgen-Bu9Rmf5j.js} +0 -0
- /package/public/dist/assets/{mumps-BxkCDTK7.js → mumps-BERv0OoY.js} +0 -0
- /package/public/dist/assets/{nginx-2JaV__gC.js → nginx-Bsa-KRWy.js} +0 -0
- /package/public/dist/assets/{ntriples--rhhCzqb.js → ntriples-CQMTRhrZ.js} +0 -0
- /package/public/dist/assets/{octave-rS4nMzRe.js → octave-Bl83K6Ag.js} +0 -0
- /package/public/dist/assets/{oz-I4fMb_NC.js → oz-CCTboWOh.js} +0 -0
- /package/public/dist/assets/{page-shell-uNOxwdbr.js → page-shell-k5-hYhKb.js} +0 -0
- /package/public/dist/assets/{pascal-BEghJs8t.js → pascal-D-i7gVLf.js} +0 -0
- /package/public/dist/assets/{path-utils-h2GAj3hH.js → path-utils-ztBHV7MX.js} +0 -0
- /package/public/dist/assets/{perl-BRO9ZFo9.js → perl-BiLLXF9c.js} +0 -0
- /package/public/dist/assets/{pig-L4Ii6KI0.js → pig-D_F2azNe.js} +0 -0
- /package/public/dist/assets/{powershell-BBeqUCRp.js → powershell-AJ59gf0u.js} +0 -0
- /package/public/dist/assets/{properties-Boi0jF2J.js → properties-CPYgUZZu.js} +0 -0
- /package/public/dist/assets/{protobuf-fB2aGypX.js → protobuf-BTkGCn64.js} +0 -0
- /package/public/dist/assets/{puppet-BRmsErtO.js → puppet-CQcFSvge.js} +0 -0
- /package/public/dist/assets/{python-Be4P9Dgp.js → python-txj4co98.js} +0 -0
- /package/public/dist/assets/{q-DZGhDLYt.js → q-D48iiS-J.js} +0 -0
- /package/public/dist/assets/{r-B4NERjRM.js → r-KvgSjvcw.js} +0 -0
- /package/public/dist/assets/{rough.esm-C0Gkx4O1.js → rough.esm-DEk5_dnJ.js} +0 -0
- /package/public/dist/assets/{rpm-e-QbHJ1q.js → rpm-BcHYZFkz.js} +0 -0
- /package/public/dist/assets/{ruby-BSVP_v59.js → ruby-C_Hj_59H.js} +0 -0
- /package/public/dist/assets/{sas-DHlU4v4g.js → sas-iqYBvleh.js} +0 -0
- /package/public/dist/assets/{scheme-BGXbz5Hz.js → scheme-BIcb4en6.js} +0 -0
- /package/public/dist/assets/{shell-yonx6xY2.js → shell-CJbQRqgD.js} +0 -0
- /package/public/dist/assets/{sieve-ClPJUZyi.js → sieve-CEVqHONw.js} +0 -0
- /package/public/dist/assets/{simple-mode-CjViblDK.js → simple-mode-CyEi8-qy.js} +0 -0
- /package/public/dist/assets/{smalltalk-CHXubeqS.js → smalltalk-CzJ9RPAW.js} +0 -0
- /package/public/dist/assets/{solr-C6q6YwPz.js → solr-DhrIF5tD.js} +0 -0
- /package/public/dist/assets/{sparql-CcspZvEd.js → sparql-p9uHdCLs.js} +0 -0
- /package/public/dist/assets/{spreadsheet-DH3a4LBS.js → spreadsheet-BEYojJ7u.js} +0 -0
- /package/public/dist/assets/{sql-meoY6gNi.js → sql-CnA4GIza.js} +0 -0
- /package/public/dist/assets/{stex-D2bn6Zsh.js → stex-6IVJg-2X.js} +0 -0
- /package/public/dist/assets/{stylus-DbXGih0S.js → stylus-fqPouKsv.js} +0 -0
- /package/public/dist/assets/{swift-Ch391uOd.js → swift-DHXFQ55a.js} +0 -0
- /package/public/dist/assets/{tcl-CQBgGWDP.js → tcl-DI621_2I.js} +0 -0
- /package/public/dist/assets/{textile-4i3oG3tg.js → textile-CpiPRB46.js} +0 -0
- /package/public/dist/assets/{tiddlywiki-CXG1-CcK.js → tiddlywiki-DASPoia0.js} +0 -0
- /package/public/dist/assets/{tiki-DJqKUhA-.js → tiki-H2_-xfcb.js} +0 -0
- /package/public/dist/assets/{toml-C1FnyICQ.js → toml-BLGegqRu.js} +0 -0
- /package/public/dist/assets/{troff-Cp8NvRO0.js → troff-BH_j1MPi.js} +0 -0
- /package/public/dist/assets/{ttcn-cfg-BVuxfGZf.js → ttcn-cfg-kxhuYjqY.js} +0 -0
- /package/public/dist/assets/{ttcn-NlmW_fji.js → ttcn-q84VxP8I.js} +0 -0
- /package/public/dist/assets/{turtle-Ba9ERlnm.js → turtle-COu2Ajrp.js} +0 -0
- /package/public/dist/assets/{vb-DDs4gjJb.js → vb-7GRadaxb.js} +0 -0
- /package/public/dist/assets/{vbscript-gOFmdMJN.js → vbscript-Bibo3Rcb.js} +0 -0
- /package/public/dist/assets/{velocity-DtSNZA7i.js → velocity-CRfDkZn8.js} +0 -0
- /package/public/dist/assets/{verilog-Pldmtxe7.js → verilog-B1kgqsBR.js} +0 -0
- /package/public/dist/assets/{vhdl-BFfSgWGp.js → vhdl-qL7iOc7c.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-BggQEPNo.js → w3c-keyname-BkTDclMX.js} +0 -0
- /package/public/dist/assets/{webidl-B6ZFYE2L.js → webidl-Bpu8XQq2.js} +0 -0
- /package/public/dist/assets/{xquery-DhxUT98N.js → xquery-C_ocxvPR.js} +0 -0
- /package/public/dist/assets/{yacas-jSkQeF1Q.js → yacas-DByFiVRK.js} +0 -0
- /package/public/dist/assets/{z80-D7Lt6v61.js → z80-CKuzqVbN.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:underline double}.xterm-underline-3{text-decoration:underline wavy}.xterm-underline-4{text-decoration:underline dotted}.xterm-underline-5{text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.terminal-panel{color:#e5edf8;background:#0b1020;flex-direction:column;height:100%;font-family:SF Mono,Menlo,Monaco,Consolas,monospace;font-size:13px;display:flex}.terminal-unavailable{color:var(--text-dim);justify-content:center;align-items:center;font-size:12px;display:flex}.terminal-tab-bar{background:var(--surface-raised);border-bottom:1px solid var(--border-subtle);flex-shrink:0;align-items:center;gap:4px;min-height:30px;padding:0 4px;display:flex}.terminal-tab-item{border-bottom:2px solid #0000;align-items:center;min-height:28px;display:inline-flex}.terminal-tab-item.is-active{border-bottom-color:#2563eb}.terminal-tab{all:unset;cursor:pointer;color:var(--text-secondary);padding:2px 8px;font-size:11px}.terminal-tab:hover,.terminal-tab-item.is-active .terminal-tab{color:var(--text-primary)}.terminal-new-tab{font-size:14px;font-weight:600}.terminal-tab-close{all:unset;box-sizing:border-box;cursor:pointer;width:22px;height:22px;color:var(--text-secondary);border-radius:4px;justify-content:center;align-items:center;font-size:14px;line-height:1;display:inline-flex}.terminal-tab-close:hover,.terminal-tab-close:focus-visible{color:var(--text-primary);background:var(--row-bg-hover)}.terminal-output{outline:none;flex:1;min-height:0;padding:8px;overflow:auto}.terminal-pre{white-space:pre-wrap;word-break:break-all;font-family:inherit;font-size:inherit;margin:0;line-height:1.4}.terminal-hidden{display:none}.terminal-xterm-host{background:#0b1020;flex:1;min-height:0;padding:6px 8px;position:relative;overflow:hidden}.terminal-xterm-surface{min-width:0;min-height:0;display:none;position:absolute;inset:6px 8px}.terminal-xterm-surface.is-active{display:block}.terminal-a11y-input{opacity:0;resize:none;border:0;width:1px;height:1px;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.terminal-xterm-surface .xterm{height:100%}.terminal-xterm-surface .xterm-viewport{background:0 0!important}.terminal-status{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-secondary);margin-left:auto;font-size:11px;overflow:hidden}.terminal-collapse-button{all:unset;box-sizing:border-box;cursor:pointer;width:24px;height:24px;color:var(--text-secondary);border-radius:4px;flex:none;justify-content:center;align-items:center;font-size:11px;line-height:1;display:inline-flex}.terminal-collapse-button:hover,.terminal-collapse-button:focus-visible{color:var(--text-primary);background:var(--row-bg-hover)}.terminal-empty{color:var(--text-dim);justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:6px 8px}.terminal-empty button{all:unset;cursor:pointer;color:#e5edf8;background:#111827;border:1px solid #334155;border-radius:5px;padding:6px 10px}.terminal-empty button:hover,.terminal-empty button:focus-visible{background:#1f2937}.terminal-error{border-top:1px solid var(--border-subtle);color:var(--danger,#f87171);background:color-mix(in srgb, var(--danger,#f87171) 8%, transparent);flex-shrink:0;padding:6px 8px;font-size:12px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{t as r}from"./settings-client-DPuJroyk.js";var i=e(t(),1),a=n(),o=[{value:`telegram`,label:`Telegram`},{value:`discord`,label:`Discord`}];function s({original:e,dirty:t,idPrefix:n=`channel`}){let[r,s]=(0,i.useState)(e??`telegram`),c=(0,i.useCallback)(n=>{s(n),t.set(`channel`,{value:n,original:e??`telegram`,valid:!0})},[t,e]);return(0,a.jsxs)(`fieldset`,{className:`settings-field settings-field-active-channel`,"aria-label":`Active inbound channel`,children:[(0,a.jsx)(`legend`,{className:`settings-field-label`,children:`Active inbound channel (chat replies)`}),(0,a.jsx)(`div`,{className:`settings-active-channel-options`,role:`radiogroup`,children:o.map(e=>{let t=`${n}-${e.value}`,i=r===e.value;return(0,a.jsxs)(`label`,{htmlFor:t,className:`settings-radio`,children:[(0,a.jsx)(`input`,{id:t,type:`radio`,name:n,value:e.value,checked:i,onChange:()=>c(e.value)}),(0,a.jsx)(`span`,{children:e.label})]},e.value)})})]})}function c({client:e,label:t,endpoint:n,method:o=`GET`,interpret:s,auto:c=!1}){let[d,f]=(0,i.useState)({kind:`idle`}),p=(0,i.useRef)(null),m=(0,i.useRef)(!0),h=(0,i.useCallback)(async()=>{p.current?.abort();let t=new AbortController;p.current=t,f({kind:`checking`});try{let r=o===`POST`?await e.post(n,{},{signal:t.signal}):await e.get(n,{signal:t.signal});if(!m.current||t.signal.aborted)return;f(s(r))}catch(e){if(!m.current||t.signal.aborted)return;if(e instanceof r&&e.status===404){f({kind:`unknown`,reason:`Probe endpoint not implemented on this instance.`});return}f({kind:`error`,reason:e instanceof Error?e.message:String(e)})}},[e,n,s,o]);return(0,i.useEffect)(()=>(m.current=!0,c&&h(),()=>{m.current=!1,p.current?.abort()}),[c,h]),(0,a.jsxs)(`div`,{className:`settings-health-badge`,role:`status`,"aria-live":`polite`,children:[(0,a.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void h(),disabled:d.kind===`checking`,children:d.kind===`checking`?`Checking…`:`Check ${t}`}),(0,a.jsx)(`span`,{className:`settings-health-pill is-${d.kind}`,children:l(d)}),u(d)?(0,a.jsx)(`span`,{className:`settings-health-detail`,children:u(d)}):null]})}function l(e){switch(e.kind){case`idle`:return`Not checked`;case`checking`:return`Checking`;case`ok`:return`Healthy`;case`degraded`:return`Degraded`;case`unknown`:return`Unknown`;case`error`:return`Error`}}function u(e){return e.kind===`ok`&&e.detail||e.kind===`degraded`?e.detail:e.kind===`unknown`||e.kind===`error`?e.reason:null}function d(e){if(!e||typeof e!=`object`)return{kind:`unknown`,reason:`Empty probe response.`};let t=e;if(t.ok===!0){let e=typeof t.username==`string`?t.username:void 0;return e?{kind:`ok`,detail:`@${e}`}:{kind:`ok`}}return{kind:`error`,reason:typeof t.error==`string`?t.error:`Probe failed.`}}function f(e){if(!e||typeof e!=`object`)return{kind:`unknown`,reason:`Empty health response.`};let t=e,n=t.discord&&typeof t.discord==`object`?t.discord:null;return n?n.ready===!0&&n.degraded!==!0?{kind:`ok`}:n.degraded===!0?{kind:`degraded`,detail:typeof n.degradedReason==`string`?n.degradedReason:`MESSAGE_CONTENT intent missing — slash commands only.`}:n.ready===!1?{kind:`error`,reason:typeof n.error==`string`?n.error:`Bot not connected.`}:{kind:`unknown`,reason:`Discord status indeterminate.`}:{kind:`unknown`,reason:`No discord block in /api/health.`}}function p(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 m(e){if(!e||typeof e!=`object`)return null;let t=e.channels;if(!t||typeof t!=`object`)return null;let n=t;return n.activeInbound!==`telegram`&&n.activeInbound!==`discord`||!p(n.telegram)||!p(n.discord)?null:{activeInbound:n.activeInbound,telegram:n.telegram,discord:n.discord}}function h(e){let t=[];return t.push(e.configured?`Configured`:`Not configured`),e.sendCapable&&t.push(`Send-capable`),e.activeInbound&&t.push(`Active inbound`),t}function g({client:e,channel:t}){let[n,r]=(0,i.useState)(null),[o,s]=(0,i.useState)(null),c=(0,i.useRef)(!0),l=(0,i.useCallback)(async()=>{try{let t=await e.get(`/api/health`);if(!c.current)return;let n=m(t);r(n),s(n?null:`Channel health unavailable on this instance.`)}catch(e){if(!c.current)return;r(null),s(e instanceof Error?e.message:String(e))}},[e]);(0,i.useEffect)(()=>(c.current=!0,l(),()=>{c.current=!1}),[l]);let u=n?.[t]??null,d=!!(u?.configured&&u.sendCapable&&!u.activeInbound);return(0,a.jsxs)(`div`,{className:`settings-transport-status`,role:`status`,"aria-live":`polite`,children:[o?(0,a.jsx)(`p`,{className:`settings-field-hint`,children:o}):null,u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`div`,{className:`settings-transport-chips`,children:h(u).map(e=>(0,a.jsx)(`span`,{className:`settings-health-pill is-ok`,children:e},e))}),d?(0,a.jsx)(`p`,{className:`settings-field-hint`,children:`This transport is not receiving inbound messages, but send-only delivery remains available.`}):null]}):null,(0,a.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void l(),children:`Refresh transport status`})]})}export{s as a,d as i,c as n,f as r,g as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[`claude`,`claude-e`,`agy`,`codex`,`cursor`,`gemini`],t={agy:{label:`Antigravity`,models:[`gemini-3.5-flash`],efforts:[],effortNote:`AGY print mode uses the current AGY-selected model; switch models in native AGY UI, no --model/--effort flags in agy 1.0.0`},"ai-e":{label:`AI-E`,defaultProvider:`claude`,providers:[`claude`,`codex`,`gemini`,`grok`,`copilot`],models:[`opus`,`sonnet`,`haiku`,`gpt-5.4`,`gpt-5.4-mini`,`gemini-3-flash-preview`,`grok-build`,`gpt-5-mini`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`],modelsByProvider:{claude:[`opus`,`sonnet`,`haiku`],codex:[`gpt-5.4`,`gpt-5.4-mini`],gemini:[`gemini-3-flash-preview`],grok:[`grok-build`],copilot:[`gpt-5-mini`]},effortsByProvider:{claude:[`low`,`medium`,`high`,`xhigh`,`max`],codex:[`low`,`medium`,`high`,`xhigh`],gemini:[],grok:[],copilot:[`low`,`medium`,`high`]}},claude:{label:`Claude`,models:[`opus`,`sonnet`,`sonnet[1m]`,`haiku`,`claude-opus-4-8`,`claude-opus-4-8[1m]`,`claude-opus-4-7`,`claude-opus-4-7[1m]`,`claude-opus-4-6`,`claude-opus-4-6[1m]`,`claude-sonnet-4-6`,`claude-sonnet-4-6[1m]`,`claude-haiku-4-5`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`]},"claude-e":{label:`Claude E`,models:[`opus`,`sonnet`,`haiku`,`claude-opus-4-8`,`claude-opus-4-7`,`claude-sonnet-4-6`,`claude-haiku-4-5`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`]},codex:{label:`Codex`,models:[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex`],efforts:[`low`,`medium`,`high`,`xhigh`]},"codex-app":{label:`Codex App`,models:[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex`],efforts:[`low`,`medium`,`high`,`xhigh`]},cursor:{label:`Cursor`,models:`auto,composer-2.5,composer-2,gpt-5.5,gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.3-codex,gpt-5.2,gpt-5.2-codex,gpt-5.1-codex-max,gpt-5.1-codex-mini,gpt-5.1,claude-opus-4-8,claude-opus-4-8-thinking,claude-opus-4-7,claude-opus-4-7-thinking,claude-4.6-opus,claude-4.6-sonnet,claude-4.5-opus-high,claude-4.5-sonnet,claude-4-sonnet,gemini-3.1-pro,gemini-3-flash,gemini-3.5-flash,grok-4.3,grok-build-0.1,gpt-5-mini,kimi-k2.5`.split(`,`),efforts:[`none`,`none-fast`,`low`,`low-fast`,`medium`,`medium-fast`,`high`,`high-fast`,`xhigh`,`xhigh-fast`,`max`,`max-fast`],effortNote:`Cursor effort resolves to model IDs; no separate --effort flag`},gemini:{label:`Gemini`,models:[`gemini-3-pro-preview`,`gemini-2.5-pro`,`gemini-3-flash-preview`],efforts:[]},grok:{label:`Grok`,models:[`grok-build`],efforts:[],effortNote:`unsupported by grok-build; do not pass --effort`},opencode:{label:`OpenCode`,models:[`opencode-go/kimi-k2.6`,`opencode-go/glm-5.1`],efforts:[`minimal`,`low`,`high`,`max`]},copilot:{label:`Copilot`,models:[`gpt-5.5`,`claude-opus-4.8`,`claude-opus-4.7`,`claude-sonnet-4.6`,`gpt-5.4`],efforts:[`low`,`medium`,`high`]}};function n(e){return t[e]||{label:e,models:[],efforts:[]}}function r(e,t={},n={}){return n[e]?.model||t[e]?.model||``}function i(e,t={},n={}){return n[e]?.effort||t[e]?.effort||``}function a(e,t=``){let n=new Set;t&&n.add(t);for(let t of e)n.add(t);return Array.from(n).map(e=>({value:e,label:e}))}export{r as a,i,n,a as r,e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class extends Error{status;code;constructor(e,t,n=null){super(e),this.name=`DashboardApiError`,this.status=t,this.code=n}};async function t(e=!1){let t=await fetch(e?`/api/dashboard/instances?showHidden=1`:`/api/dashboard/instances`);if(!t.ok)throw Error(`scan failed: ${t.status}`);return await t.json()}async function n(){let e=await fetch(`/api/dashboard/registry`);if(!e.ok)throw Error(`registry load failed: ${e.status}`);return await e.json()}async function r(e){let t=await fetch(`/api/dashboard/registry`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(`registry save failed: ${t.status}`);return await t.json()}async function i(e,t,n){let r=await fetch(`/api/dashboard/lifecycle/${e}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({port:t,...n?.trim()?{home:n.trim()}:{}})}),i=await r.json();if(!r.ok||!i.ok)throw Error(i.message||`${e} failed: ${r.status}`);return i}async function a(){let e=await fetch(`/api/dashboard/process-control`);if(!e.ok)throw Error(`process control fetch failed: ${e.status}`);return(await e.json()).state}async function o(){let e=await fetch(`/api/dashboard/process-control/adopt`,{method:`POST`});if(!e.ok)throw Error(`adopt managed failed: ${e.status}`);return(await e.json()).state}async function s(){let e=await fetch(`/api/dashboard/process-control/stop-managed`,{method:`POST`});if(!e.ok)throw Error(`stop managed failed: ${e.status}`);return(await e.json()).state}async function c(e,t={}){let n={};t.signal!==void 0&&(n.signal=t.signal);let r=await fetch(`/api/dashboard/instances/${e}`,n);if(!r.ok)throw Error(`status fetch failed: ${r.status}`);return(await r.json()).instance}async function l(e,t){let n=await fetch(`/api/dashboard/instances/${e}/message`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({prompt:t})}),r=await n.json().catch(()=>({}));return{ok:n.ok,status:n.status,data:r}}async function u(e=null){let t=e?`/api/manager/events?since=${encodeURIComponent(e)}`:`/api/manager/events`,n=await fetch(t);if(!n.ok)throw Error(`events fetch failed: ${n.status}`);return(await n.json()).events}async function d(t,n){let r=await t.text(),i=null;if(r.trim())try{i=JSON.parse(r)}catch{throw new e(`${n}: response was not JSON`,t.status,`invalid_json`)}if(!t.ok){let r=typeof i==`object`&&i&&`error`in i?String(i.error):n,a=typeof i==`object`&&i&&`code`in i&&typeof i.code==`string`?i.code:null;throw new e(r||n,t.status,a)}return i}async function f(){let e=await fetch(`/api/dashboard/notes/info`);return await d(e,`notes info fetch failed: ${e.status}`)}async function p(){let e=await fetch(`/api/dashboard/notes/version`);return(await d(e,`notes version fetch failed: ${e.status}`)).version}async function m(){let e=await fetch(`/api/dashboard/notes/tree`);return await d(e,`notes tree fetch failed: ${e.status}`)}async function h(){let e=await fetch(`/api/dashboard/notes/templates`);return await d(e,`note templates fetch failed: ${e.status}`)}async function g(e){let t=await fetch(`/api/dashboard/notes/template?name=${encodeURIComponent(e)}`);return await d(t,`note template fetch failed: ${t.status}`)}async function _(){let e=await fetch(`/api/dashboard/notes/snippets`);return await d(e,`note snippets fetch failed: ${e.status}`)}async function v(t){let n=await fetch(`/api/dashboard/notes/snippets/file?name=${encodeURIComponent(t)}`);if(!n.ok)throw new e(`snippet fetch failed: ${n.status}`,n.status);return await n.text()}async function y(t,n){let r=await fetch(`/api/dashboard/notes/snippets/toggle`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t,enabled:n})});if(!r.ok)throw new e(`snippet toggle failed: ${r.status}`,r.status)}async function b(t){let n=await fetch(`/api/dashboard/notes/theme`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({theme:t})});if(!n.ok)throw new e(`theme set failed: ${n.status}`,n.status)}async function x(){let e=await fetch(`/api/dashboard/notes/index`);return await d(e,`notes index fetch failed: ${e.status}`)}async function S(e,t={}){let n=new URLSearchParams({q:e});t.limit!==void 0&&n.set(`limit`,String(t.limit)),t.regex&&n.set(`regex`,`true`);let r={};t.signal&&(r.signal=t.signal);let i=await fetch(`/api/dashboard/notes/search?${n}`,r);return await d(i,`notes search failed: ${i.status}`)}async function C(e){let t=await fetch(`/api/dashboard/notes/file?path=${encodeURIComponent(e)}`);return await d(t,`note fetch failed: ${t.status}`)}async function w(e,t=``){let n=await fetch(`/api/dashboard/notes/file`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e,content:t})});return await d(n,`note create failed: ${n.status}`)}async function T(e){let t=await fetch(`/api/dashboard/notes/file`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});return await d(t,`note save failed: ${t.status}`)}function E(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}async function D(e,t){let n=new Uint8Array(await t.arrayBuffer()),r=await fetch(`/api/dashboard/notes/asset`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({notePath:e,mime:t.type,dataBase64:E(n)})});return await d(r,`note asset upload failed: ${r.status}`)}async function O(e,t){let n=await fetch(`/api/dashboard/notes/asset/remote`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({notePath:e,url:t})});return await d(n,`remote note asset upload failed: ${n.status}`)}async function k(e){let t=await fetch(`/api/dashboard/notes/folder`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e})});return await d(t,`note folder create failed: ${t.status}`)}async function A(e,t){let n=await fetch(`/api/dashboard/notes/rename`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({from:e,to:t})});return await d(n,`note rename failed: ${n.status}`)}async function j(e,t=`file`){let n=await fetch(`/api/dashboard/notes/trash`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e,kind:t})});return await d(n,`note trash failed: ${n.status}`)}export{O as A,S as C,y as D,s as E,j as O,T as S,b as T,a as _,c as a,A as b,C as c,g as d,h as f,p as g,m as h,k as i,D as k,v as l,f as m,o as n,t as o,x as p,w as r,u as s,e as t,_ as u,n as v,l as w,i as x,r as y};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t}from"./vendor-render-DCb9B75Q.js";import{t as n}from"./state-D04-chBy.js";import{a as r,i,n as a,r as o,t as s}from"./api-tVoG39dL.js";import{t as c}from"./preload-helper-DuH3-WbD.js";import{S as l,a as u,b as d,d as f,g as p,i as m,l as ee,m as te,n as ne,o as re,u as ie,x as ae,y as oe}from"./render-DnylWKO1.js";import{C as se,D as ce,O as le,S as ue,_ as de,a as fe,g as h,h as g,s as pe,u as me,v as he,x as ge}from"./ui-CkHB9Jmo.js";import{a as _,n as _e}from"./idb-cache-CZ3JdK8r.js";import{a as ve,c as ye,i as be,l as xe,r as Se,s as Ce,t as we,u as Te}from"./sidebar-Bi_ktFVw.js";import{t as Ee}from"./provider-icons-XEfJPGTe.js";import{t as De}from"./locale-DT1WRaeJ.js";import{a as Oe,i as ke,n as Ae,o as je,r as Me,t as Ne}from"./slash-commands-CAydTUgf.js";import{i as Pe,o as Fe}from"./constants-ahKI_aEG.js";import{A as Ie,B as Le,C as Re,E as v,F as ze,H as Be,I as Ve,L as He,M as Ue,P as We,R as Ge,S as Ke,T as qe,U as Je,V as Ye,W as Xe,_ as Ze,a as Qe,b as $e,c as et,d as tt,f as nt,g as rt,h as it,i as at,k as ot,l as st,m as ct,n as lt,o as ut,p as dt,r as ft,s as pt,t as y,u as mt,w as ht,x as gt,y as _t,z as vt}from"./settings-VCXKhhhz.js";import{a as yt,i as bt,t as xt}from"./skills-CW7NEhew.js";import{a as St,c as Ct,d as wt,f as Tt,i as Et,l as Dt,m as Ot,n as kt,o as At,p as jt,r as Mt,s as Nt,t as Pt,u as Ft}from"./memory-B4RpXXJ7.js";var b=[],It=8e3;function Lt(e){return/^\/compact(?:\s|$)/i.test(String(e||``).trim())?300*1e3:1e4}function Rt(e){let t=u();return t?new Promise(n=>{let r=`preview-send-${Date.now()}-${Math.random().toString(36).slice(2)}`,i=!1,a=()=>{window.removeEventListener(`message`,s),window.clearTimeout(c)},o=e=>{i||(i=!0,a(),n(e))},s=e=>{if(e.source!==window.parent||!m(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-send-result`||t.requestId!==r||o({ok:!!t.ok,status:Number.isInteger(t.status)?t.status:t.ok?200:502,data:t.data||(t.error?{error:t.error}:{})})},c=window.setTimeout(()=>o(null),It);window.addEventListener(`message`,s);try{window.parent.postMessage({type:`jaw-preview-send-message`,requestId:r,prompt:e},t)}catch{o(null)}}):Promise.resolve(null)}async function zt(e){let t=await Rt(e);if(t?.ok)return t;try{let t=await fetch(`${s}/api/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e})}),n=await t.json().catch(()=>({}));return{ok:t.ok,status:t.status,data:n}}catch(e){return{ok:!1,status:0,data:{error:e.message}}}}function Bt(e){let t=e.recovery;if(!t?.originalText)return e.text?p(e.text):``;let n=(t.suggestedCommands||[]).slice(0,5),r=n.length?`<div class="cmd-recovery-suggestions">${n.map(e=>`<code>${p(e)}</code>`).join(` `)}</div>`:``,i=p(t.originalText);return`${e.text?`<div>${p(e.text)}</div>`:``}
|
|
3
|
+
<div class="cmd-recovery" data-cmd-recovery>
|
|
4
|
+
<div class="cmd-recovery-label">${p(l(`cmd.recovery.originalPrompt`))}</div>
|
|
5
|
+
<pre class="cmd-recovery-text">${i}</pre>
|
|
6
|
+
${r}
|
|
7
|
+
<div class="cmd-recovery-actions">
|
|
8
|
+
<button type="button" class="cmd-recovery-btn" data-cmd-recovery-action="reinsert" data-cmd-text="${i}">${p(l(`cmd.artifact.action.reinsert`))}</button>
|
|
9
|
+
<button type="button" class="cmd-recovery-btn" data-cmd-recovery-action="copy" data-cmd-text="${i}">${p(l(`cmd.artifact.action.copy`))}</button>
|
|
10
|
+
</div>
|
|
11
|
+
</div>`}document.addEventListener(`click`,async e=>{let t=e.target?.closest(`[data-cmd-recovery-action]`);if(!t)return;let n=t.dataset.cmdRecoveryAction||``,r=t.dataset.cmdText||``;if(r){if(n===`reinsert`){let e=document.getElementById(`chatInput`);if(!e)return;e.value=r,e.focus(),e.selectionStart=e.selectionEnd=e.value.length,e.dispatchEvent(new Event(`input`,{bubbles:!0}));return}n===`copy`&&await ie(r)}});var Vt=!1;async function Ht(e=`enter`){let t=document.getElementById(`chatInput`),a=document.getElementById(`btnSend`);if(!t||!a)return;let u=e===`button`;if(a.classList.contains(`stop-mode`)&&u){o(`/api/stop`,`POST`);return}if(Vt)return;let d=t.value.trim();if(!d&&!n.attachedFiles.length)return;ye(),Vt=!0;let m=a,ee=m.disabled;m.disabled=!0;try{await ot();let e=d.slice(1).trim().split(/\s+/)[0]||``,a=e.includes(`/`)||e.includes(`\\`);if(d.startsWith(`/`)&&!n.attachedFiles.length&&!a){t.value=``,S(),Ne();try{let e,t,n=Lt(d);if(typeof AbortSignal?.timeout==`function`)e=AbortSignal.timeout(n);else{let r=new AbortController;e=r.signal,t=setTimeout(()=>r.abort(),n)}let a=De(),o=await r(),c=await fetch(`${s}/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`,"Accept-Language":a,...o?{Authorization:`Bearer ${o}`}:{}},body:JSON.stringify({text:d,locale:a}),signal:e});t&&clearTimeout(t);let l=await c.json().catch(()=>({}));if(l?.code===`not_command`){g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),await i(`/api/message`,`POST`,{prompt:d});return}if(!c.ok&&!l?.text)throw Error(`HTTP ${c.status}`);if(l?.code===`clear_screen`){ne(),ce().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``)}(l?.text||l?.recovery)&&h(Bt(l),``,l.type),l?.steerPrompt&&await i(`/api/message`,`POST`,{prompt:l.steerPrompt})}catch(e){h(l(`chat.cmd.fail`,{msg:e.message}),``,`error`)}finally{Ce(`command`).catch(()=>{})}return}if(n.attachedFiles.length){let e=`📎 [${n.attachedFiles.map(e=>e.name).join(`, `)}] ${d}`;g(`user`,e),_({role:`user`,content:e,timestamp:Date.now()}),t.value=``,S();try{let e=(await Promise.all(n.attachedFiles.map(e=>Wt(e)))).map(e=>l(`chat.file.sent`,{path:e})).join(`
|
|
12
|
+
`);d&&(e+=l(`chat.file.sentWithMsg`,{text:d})),x(),await i(`/api/message`,`POST`,{prompt:e})}catch(e){h(l(`chat.file.uploadFail`,{msg:e.message})),x()}}else{t.value=``,S();let e=await zt(d),n=e.data;if(e.status===409&&n.error===`duplicate`)return;if(!e.ok){h(`${f.error} ${p(n.error||l(`chat.requestFail`,{status:e.status}))}`,``,`error`);return}if(n.queued){let{updateQueueBadge:e}=await c(async()=>{let{updateQueueBadge:e}=await import(`./ui-CIQjTLzc.js`);return{updateQueueBadge:e}},__vite__mapDeps([0]));e(n.pending||1)}else n.noPendingContinue?(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),se(!0)):n.continued?(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),h(l(`chat.continue`)),se(!0)):(g(`user`,d),_({role:`user`,content:d,timestamp:Date.now()}),se(!0))}}finally{Vt=!1,m.disabled=ee}}function Ut(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),Ht(`enter`))}async function Wt(e){let t=await fetch(`${s}/api/upload`,{method:`POST`,headers:{"X-Filename":encodeURIComponent(e.name)},body:e});if(!t.ok)throw Error(`upload failed`);return(await t.json()).path}function Gt(e){for(let t of e)n.attachedFiles.some(e=>e.name===t.name)||n.attachedFiles.push(t);qt(),document.getElementById(`chatInput`)?.focus()}function Kt(e){n.attachedFiles.splice(e,1),qt()}function x(){b.forEach(e=>URL.revokeObjectURL(e)),b=[],n.attachedFiles=[],qt();let e=document.getElementById(`fileInput`);e&&(e.value=``)}function qt(){let e=document.getElementById(`filePreview`),t=document.getElementById(`filePreviewList`);if(e){if(b.forEach(e=>URL.revokeObjectURL(e)),b=[],!n.attachedFiles.length){e.classList.remove(`visible`),t&&(t.innerHTML=``);return}e.classList.add(`visible`),t&&(t.innerHTML=n.attachedFiles.map((e,t)=>{let n=(e.size/1024).toFixed(1),r=e.type.startsWith(`image/`),i=``;if(r){let t=URL.createObjectURL(e);b.push(t),i=`<img src="${t}" class="file-chip-thumb" alt="">`}return`<div class="file-chip">
|
|
13
|
+
${i}
|
|
14
|
+
<span class="file-chip-name">${f.paperclip} ${p(e.name)} (${n}KB)</span>
|
|
15
|
+
<button class="file-chip-remove" data-file-idx="${t}" title="Remove">${f.close}</button>
|
|
16
|
+
</div>`}).join(``))}}async function Jt(){ne(),ce().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``);let{cleanupToolActivity:t}=await c(async()=>{let{cleanupToolActivity:e}=await import(`./ui-CIQjTLzc.js`);return{cleanupToolActivity:e}},__vite__mapDeps([0]));t(),_e().catch(()=>{}),ye()}var Yt=0;function Xt(e){if(Yt)return;let t=ge();Yt=requestAnimationFrame(()=>{if(Yt=0,e.style.height=`auto`,e.style.height=e.scrollHeight+`px`,t){let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,ue())}})}function Zt(){let e=document.getElementById(`chatInput`);e&&e.addEventListener(`input`,()=>Xt(e))}function S(){let e=document.getElementById(`chatInput`),t=ge();if(e&&(e.style.height=`auto`),t){let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,ue())}}function Qt(){let e=document.querySelector(`.chat-area`),t=document.getElementById(`dragOverlay`);if(!e||!t)return;let n=0;e.addEventListener(`dragenter`,e=>{e.preventDefault(),n++,t.classList.add(`visible`)}),e.addEventListener(`dragleave`,e=>{e.preventDefault(),n--,n<=0&&(n=0,t.classList.remove(`visible`))}),e.addEventListener(`dragover`,e=>e.preventDefault()),e.addEventListener(`drop`,e=>{e.preventDefault(),n=0,t.classList.remove(`visible`);let r=[...e.dataTransfer?.files||[]];r.length&&Gt(r)}),document.getElementById(`fileInput`)?.addEventListener(`change`,e=>{let t=e.target,n=[...t.files||[]];n.length&&Gt(n),t.value=``}),document.addEventListener(`paste`,e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(t)if(!t.name||t.name===`image.png`){let e=new Date().toISOString().replace(/[:.]/g,`-`),r=t.type.split(`/`)[1]||`png`,i=new File([t],`pasted-${e}.${r}`,{type:t.type});n.push(i)}else n.push(t)}n.length&&(e.preventDefault(),Gt(n))})}async function $t(e,t,r){let a=document.getElementById(`chatInput`),o=a?.value.trim()||``,c=[...n.attachedFiles],u=[l(`chat.voice.label`)];c.length&&u.push(`📎 [${c.map(e=>e.name).join(`, `)}]`),o&&u.push(o),g(`user`,u.join(` `)),_({role:`user`,content:u.join(` `),timestamp:Date.now()}),a&&o&&(a.value=``,S()),c.length&&x();try{let n=await fetch(`${s}/api/voice`,{method:`POST`,headers:{"Content-Type":r,"X-Voice-Ext":t,"X-STT-Only":`true`},body:e});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`HTTP ${n.status}`)}let a=await n.json().catch(()=>null);if(!a?.text)throw Error(`Empty STT result`);h(`${f.mic} STT (${p(a.engine||``)}, ${a.elapsed?.toFixed(1)}s): "${p(a.text.slice(0,100))}"`,``,`info`);let u=[];c.length&&(u=await Promise.all(c.map(e=>Wt(e))));let d=[];for(let e of u)d.push(l(`chat.file.sent`,{path:e}));d.push(`🎤 ${a.text}`),o&&d.push(o),await i(`/api/message`,`POST`,{prompt:d.join(`
|
|
17
|
+
`)})}catch(e){h(l(`voice.sttFail`,{msg:e.message}),``,`error`)}}var en={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},tn={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};function nn(e){let t=typeof e==`string`?e.trim():``;if(t)try{return new Intl.DateTimeFormat(`en-US`,{timeZone:t}).format(new Date),t}catch{return}}function rn(e){let t=e&&typeof e==`object`?e:{},n=t.kind,r=typeof t.timeZone==`string`?t.timeZone.trim():``,i=nn(t.timeZone);if(r&&!i)return{ok:!1,code:`invalid_timezone`,error:`invalid timeZone "${r}"`};if(n===`cron`){let e=typeof t.cron==`string`?t.cron.trim().replace(/\s+/g,` `):``;if(!e)return{ok:!1,code:`invalid_cron`,error:`cron expression required`};let n=an(e);return n?{ok:!1,code:`invalid_cron`,error:n}:{ok:!0,schedule:i?{kind:`cron`,cron:e,timeZone:i}:{kind:`cron`,cron:e}}}if(n==null||n===`every`){let e=typeof t.minutes==`number`?t.minutes:Number(t.minutes);if(!Number.isInteger(e)||e<1)return{ok:!1,code:`invalid_minutes`,error:`minutes must be an integer >= 1`};let n=Math.max(1,Math.floor(e));return{ok:!0,schedule:i?{kind:`every`,minutes:n,timeZone:i}:{kind:`every`,minutes:n}}}return{ok:!1,code:`invalid_kind`,error:`invalid heartbeat schedule kind "${String(n)}"`}}function an(e){try{let[t,n,r,i,a]=on(e);return C(t,{min:0,max:59}),C(n,{min:0,max:23}),C(r,{min:1,max:31}),C(i,{min:1,max:12,aliases:tn}),C(a,{min:0,max:7,aliases:en,normalize:un}),null}catch(e){return e.message}}function on(e){let t=String(e||``).trim().replace(/\s+/g,` `).split(` `);if(t.length!==5)throw Error(`cron must have 5 fields, got ${t.length}`);return t}function C(e,t){for(let n of e.split(`,`))sn(n.trim(),t)}function sn(e,t){if(!e)throw Error(`empty cron segment`);let n=e;if(e.includes(`/`)){let[t,r,...i]=e.split(`/`);if(!t||!r||i.length>0)throw Error(`invalid cron step segment "${e}"`);n=t,ln(r,`invalid cron step "${r}"`)}if(n!==`*`){if(n.includes(`-`)){let[e,r,...i]=n.split(`-`);if(!e||!r||i.length>0||cn(e,t)>cn(r,t))throw Error(`invalid cron range "${n}"`);return}cn(n,t)}}function cn(e,t){let n=e.trim().toLowerCase(),r=t.aliases?.[n]??Number(n);if(!Number.isInteger(r))throw Error(`invalid cron value "${e}"`);let i=t.normalize?t.normalize(r):r;if(!dn(i,t.min,t.max))throw Error(`cron value "${e}" out of range ${t.min}-${t.max}`);return i}function ln(e,t){let n=Number(e);if(!Number.isInteger(n)||n<=0)throw Error(t);return n}function un(e){return e===7?0:e}function dn(e,t,n){return e>=t&&e<=n}async function fn(){n.heartbeatJobs=((await a(`/api/heartbeat`))?.jobs||[]).map(E),n.heartbeatErrors=D(n.heartbeatJobs),w(),document.getElementById(`heartbeatModal`)?.classList.add(`open`)}function pn(e){e&&e.target!==e.currentTarget||document.getElementById(`heartbeatModal`)?.classList.remove(`open`)}function w(){let e=document.getElementById(`hbJobsList`);if(!e)return;let t=n.heartbeatJobs.map(E);n.heartbeatJobs=t,n.heartbeatErrors=D(t),t.length===0?e.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">${l(`hb.empty`)}</p>`:e.innerHTML=t.map((e,t)=>{let r=vn(e.schedule),i=r.kind===`cron`,a=n.heartbeatErrors[e.id],o=a||Tn(r),s=a?`hb-schedule-meta hb-error`:`hb-schedule-meta hb-help`,c=i?`<input type="text" value="${p(r.cron)}" placeholder="${p(l(`hb.cronPlaceholder`))}"
|
|
18
|
+
data-hb-cron="${t}">`:`<input type="number" value="${r.minutes}" min="1" data-hb-minutes="${t}">`,u=i?`<span class="hb-chip">${p(l(`hb.cronLabel`))}</span>`:`<span class="hb-chip">${p(l(`hb.minutesLabel`))}</span>`;return`
|
|
19
|
+
<div class="hb-job-card">
|
|
20
|
+
<div class="hb-job-header">
|
|
21
|
+
<input type="text" value="${p(String(e.name||``))}" placeholder="${p(l(`hb.name`))}"
|
|
22
|
+
data-hb-name="${t}">
|
|
23
|
+
<button class="hb-toggle ${e.enabled?`on`:`off`}"
|
|
24
|
+
data-hb-toggle="${t}" aria-label="${p(String(e.name||`job`)+` toggle`)}"></button>
|
|
25
|
+
<button class="hb-del" data-hb-remove="${t}">${f.close}</button>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="hb-job-schedule">
|
|
28
|
+
<select data-hb-kind="${t}">
|
|
29
|
+
<option value="every"${i?``:` selected`}>${p(l(`hb.kindEvery`))}</option>
|
|
30
|
+
<option value="cron"${i?` selected`:``}>${p(l(`hb.kindCron`))}</option>
|
|
31
|
+
</select>
|
|
32
|
+
${c}
|
|
33
|
+
${u}
|
|
34
|
+
<input type="text" value="${p(r.timeZone||``)}" placeholder="${p(Sn())}"
|
|
35
|
+
data-hb-timezone="${t}">
|
|
36
|
+
</div>
|
|
37
|
+
<p class="${s}">${p(o)}</p>
|
|
38
|
+
<textarea class="hb-prompt" rows="2" placeholder="${p(l(`hb.prompt`))}"
|
|
39
|
+
data-hb-prompt="${t}">${p(String(e.prompt||``))}</textarea>
|
|
40
|
+
</div>
|
|
41
|
+
`}).join(``);let r=t.filter(e=>e.enabled).length,i=document.getElementById(`hbSidebarBtn`);i&&(i.innerHTML=`${f.heartPulse} Heartbeat (${r})`)}function mn(){n.heartbeatJobs.push({id:`hb_`+Date.now(),name:``,enabled:!0,schedule:bn({kind:`every`,minutes:5}),prompt:``}),w(),T()}function hn(e){n.heartbeatJobs.splice(e,1),w(),T()}function gn(e){let t=n.heartbeatJobs[e];t&&(t.enabled=!t.enabled,w(),T())}async function T(){let e=n.heartbeatJobs.map(E);if(n.heartbeatJobs=e,n.heartbeatErrors=D(e),Object.keys(n.heartbeatErrors).length>0){w();return}let t=await i(`/api/heartbeat`,`PUT`,{jobs:e});t?.jobs&&(n.heartbeatJobs=t.jobs.map(E),n.heartbeatErrors=D(n.heartbeatJobs),w())}async function _n(){try{let e=((await a(`/api/heartbeat`))?.jobs||[]).map(E).filter(e=>e.enabled).length,t=document.getElementById(`hbSidebarBtn`);t&&(t.innerHTML=`${f.heartPulse} Heartbeat (${e})`)}catch{}}function E(e){return{id:String(e.id||`hb_${Date.now()}`),name:String(e.name||``),enabled:e.enabled!==!1,schedule:vn(e.schedule),prompt:String(e.prompt||``)}}function vn(e){let t=yn(e?.timeZone);if(e?.kind===`cron`){let n=typeof e.cron==`string`?e.cron.trim().replace(/\s+/g,` `):`0 9 * * *`;return t?{kind:`cron`,cron:n,timeZone:t}:{kind:`cron`,cron:n}}let n=typeof e?.minutes==`number`&&Number.isFinite(e.minutes)&&e.minutes>0?Math.max(1,Math.floor(e.minutes)):5;return t?{kind:`every`,minutes:n,timeZone:t}:{kind:`every`,minutes:n}}function yn(e){return(typeof e==`string`?e.trim():``)||void 0}function bn(e){let t=xn();return t?{...e,timeZone:t}:e}function xn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Sn(){let e=xn();return e?`${l(`hb.timezoneAuto`)} ${e}`:l(`hb.timezoneAuto`)}function D(e){let t={};for(let n of e){let e=Cn(n);e&&(t[n.id]=e)}return t}function Cn(e){let t=rn(e.schedule);return t.ok?null:wn(t.code,t.error)}function wn(e,t){switch(e){case`invalid_cron`:return l(`hb.invalidCron`);case`invalid_timezone`:return l(`hb.invalidTimeZone`);case`invalid_minutes`:return l(`hb.invalidMinutes`);default:return t||l(`hb.invalidSchedule`)}}function Tn(e){let t=e.timeZone||xn()||`Asia/Seoul`;return e.kind===`cron`?l(`hb.scheduleHintCron`,{cron:`0 9 * * *`,timeZone:t}):l(`hb.scheduleHintEvery`,{minutes:e.minutes,timeZone:t})}var O=`jaw.uiTheme`,k=null;function En(e){return e===`dark`||e===`light`||e===`auto`}function Dn(e){return e===`light`||e===`auto`&&typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function On(n){let r=n===`light`?e:t;k||(k=document.createElement(`style`),k.id=`hljsTheme`,document.head.appendChild(k)),k.textContent=r}function kn(){!localStorage.getItem(O)&&localStorage.getItem(`theme`)&&(localStorage.setItem(O,localStorage.getItem(`theme`)),localStorage.removeItem(`theme`));let e=jn(),t=localStorage.getItem(O),n=window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;A(e||t||n),document.getElementById(`toggleTheme`)?.addEventListener(`click`,An),window.addEventListener(`message`,Nn),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=localStorage.getItem(O);(!e||e===`auto`)&&A(e||`auto`)}),window.addEventListener(`storage`,e=>{e.key===O&&e.newValue&&A(e.newValue)})}function An(){let e=(document.documentElement.getAttribute(`data-theme`)||`dark`)===`dark`?`light`:`dark`;A(e),localStorage.setItem(O,e)}function A(e){let t=Dn(e);document.documentElement.setAttribute(`data-theme`,t);let n=document.getElementById(`toggleTheme`);n&&n.classList.toggle(`is-light`,t===`light`),On(t),he(),ee()}function jn(){let e=new URLSearchParams(window.location.search).get(`jawTheme`);return En(e)?e:null}function Mn(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Nn(e){if(window.parent===window||e.source!==window.parent||!Mn(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-theme-sync`||!En(t.theme)||A(t.theme)}var Pn=new Set([`j`,`k`,`i`,`n`,`p`]);function Fn(e){if(e.altKey&&!e.ctrlKey&&!e.metaKey){let t=e.key.toLowerCase();return(t.length!==1||!Pn.has(t))&&e.code?.startsWith(`Key`)&&(t=e.code.slice(3).toLowerCase()),Pn.has(t)}return e.ctrlKey&&e.shiftKey&&!e.metaKey&&!e.altKey?e.code===`Backquote`:!!(e.metaKey&&!e.ctrlKey&&!e.altKey&&(!e.shiftKey&&(e.code===`Backquote`||e.code===`KeyB`||e.code===`KeyJ`)||e.shiftKey&&(e.code===`KeyB`||e.code===`KeyD`||e.code===`KeyE`)))}function In(){window.parent!==window&&document.addEventListener(`keydown`,e=>{if(Fn(e)){e.preventDefault();try{window.parent.postMessage({type:`jaw-preview-shortcut`,key:e.key,code:e.code,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey},`*`)}catch{}}})}var Ln=50,Rn=30,zn=80,Bn=500,j=null,Vn=!1;function Hn(){if(Vn||!(`ontouchstart`in window))return;Vn=!0;let e=document.querySelector(`.chat-area`);e&&(e.addEventListener(`touchstart`,Un,{passive:!0}),e.addEventListener(`touchend`,Wn,{passive:!0}))}function Un(e){let t=e.touches[0],n=window.innerWidth,r=null;t.clientX<Rn?r=`left`:t.clientX>n-Rn&&(r=`right`),j={startX:t.clientX,startY:t.clientY,startTime:Date.now(),isEdge:r}}function Wn(e){if(!j)return;let t=e.changedTouches[0],n=t.clientX-j.startX,r=Math.abs(t.clientY-j.startY),i=Date.now()-j.startTime,a=j;j=null,!(r>zn||i>Bn||Math.abs(n)<Ln)&&(n>0&&a.isEdge===`left`&&Se(),n<0&&a.isEdge===`right`&&be())}var M=!1,N=null,P=[],Gn=null,Kn=null,qn=0,F=!1,I=`stopped`,Jn=15e3;function Yn(){if(typeof MediaRecorder>`u`)return``;for(let e of[`audio/webm;codecs=opus`,`audio/mp4`,`audio/ogg;codecs=opus`])if(MediaRecorder.isTypeSupported(e))return e;return``}function Xn(e){let t=e;switch(t.name){case`NotAllowedError`:return l(`voice.micDenied`);case`NotFoundError`:return l(`voice.micNotFound`);case`NotReadableError`:case`AbortError`:return l(`voice.micBusy`);case`TimeoutError`:return tr();default:return t instanceof TypeError||!navigator.mediaDevices?l(`voice.httpsRequired`):l(`voice.micDenied`)}}function Zn(){let e=document;return e.permissionsPolicy||e.featurePolicy||null}function Qn(){try{return Zn()?.allowsFeature?.(`microphone`)===!1}catch{return!1}}async function $n(){try{return navigator.permissions?.query?(await navigator.permissions.query({name:`microphone`})).state:null}catch{return null}}function er(){let e=new URL(window.location.href),t=new URL(e.href);e.hostname===`127.0.0.1`?t.hostname=`localhost`:e.hostname===`localhost`&&(t.hostname=`127.0.0.1`);let n=t.origin===e.origin?``:t.origin;return{origin:e.origin,alternateOrigin:n}}function tr(){let e=er();return e.alternateOrigin?l(`voice.requestTimeoutLoopback`,e):l(`voice.requestTimeout`,e)}function nr(e){let t=e;return t.name===`NotSupportedError`?l(`voice.unsupported`):t.name===`NotReadableError`||t.name===`AbortError`?l(`voice.micBusy`):t instanceof TypeError?l(`voice.httpsRequired`):l(`voice.interrupted`)}function L(e){if(window.parent!==window)try{window.parent.postMessage({type:`jaw-preview-stt-recording`,action:e},`*`)}catch{}}function rr(){return new DOMException(`Timed out waiting for microphone permission prompt`,`TimeoutError`)}async function ir(){let e=!1,t=null,n=navigator.mediaDevices.getUserMedia({audio:!0}).then(t=>e?(t.getTracks().forEach(e=>e.stop()),null):t,t=>{if(e)return null;throw t}),r=new Promise((n,r)=>{t=setTimeout(()=>{e=!0,r(rr())},Jn)});try{let e=await Promise.race([n,r]);if(!e)throw rr();return e}finally{t!==null&&clearTimeout(t)}}async function ar(){if(n.isRecording||F)return;if(typeof MediaRecorder>`u`||!navigator.mediaDevices?.getUserMedia){h(l(`voice.unsupported`),``,`error`);return}if(Qn()){h(l(`voice.policyBlocked`),``,`error`);return}if(await $n()===`denied`){h(l(`voice.permissionDeniedBrowser`,er()),``,`error`);return}F=!0,M=!1,I=`stopped`,z(!1),L(`request`);let e=null;try{e=await ir(),Gn=e}catch(e){F=!1,z(!1),L(`failed`),h(Xn(e),``,`error`);return}try{let t=Yn(),r=new MediaRecorder(e,t?{mimeType:t}:{});N=r,P=[],r.ondataavailable=e=>{e.data.size>0&&P.push(e.data)},r.onerror=()=>{M=!0,I=`failed`,n.isRecording=!1,ur(),z(!1),r.state===`recording`?r.stop():(P=[],R(),N=null,L(`failed`)),h(l(`voice.interrupted`),``,`error`)},r.onstop=async()=>{let e=I,n=M||e!==`stopped`;if(I=`stopped`,n){P=[],R(),N=null,M=!1,L(e);return}let i=r.mimeType||t||`audio/webm`,a=i.includes(`mp4`)?`.m4a`:i.includes(`ogg`)?`.ogg`:`.webm`,o=new Blob(P,{type:i});if(P=[],R(),N=null,M=!1,L(`stopped`),o.size>20*1024*1024){h(l(`voice.tooLarge`),``,`error`);return}if(o.size<1e3){h(l(`voice.tooShort`),``,`error`);return}await $t(o,a,i)},r.start(),n.isRecording=!0,F=!1,qn=Date.now(),z(!0),lr(),L(`started`)}catch(e){F=!1,n.isRecording=!1,P=[],N=null,R(),z(!1),L(`failed`),h(nr(e),``,`error`)}}function or(){!n.isRecording||!N||(I=`stopped`,N.state===`recording`?N.stop():(R(),N=null,L(`stopped`)),n.isRecording=!1,ur(),z(!1))}function sr(){!n.isRecording||!N||(M=!0,I=`cancelled`,N.state===`recording`?N.stop():(P=[],R(),N=null,L(`cancelled`)),n.isRecording=!1,ur(),z(!1))}function cr(){n.isRecording?or():ar()}function R(){Gn?.getTracks().forEach(e=>e.stop()),Gn=null}function lr(){let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`inline`,Kn=setInterval(()=>{let t=Math.floor((Date.now()-qn)/1e3);e.textContent=`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},500))}function ur(){Kn&&=(clearInterval(Kn),null);let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`none`,e.textContent=`00:00`)}function z(e){let t=document.getElementById(`btnVoice`),n=document.getElementById(`btnVoiceCancel`),r=F&&!e;t&&(t.classList.toggle(`recording`,e),t.classList.toggle(`arming`,r),t.innerHTML=e?f.stop:f.mic,t.title=l(r?`voice.requesting`:e?`voice.stop`:`voice.start`),t.toggleAttribute(`aria-busy`,r),t instanceof HTMLButtonElement&&(t.disabled=r)),n&&(n.style.display=e?`inline-block`:`none`)}var B={activeCli:V(`activeCli`,2,1,2),model:V(`model`,2,1,1),effort:V(`effort`,2,1,1),permissions:V(`permissions`,2,1,1),flushAgent:V(`flushAgent`,2,1,1),employees:V(`employees`,3,3,2),skills:V(`skills`,2,1,1),activeChannel:V(`activeChannel`,2,1,1),telegram:{...V(`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:{...V(`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`}]},fallbackOrder:V(`fallbackOrder`,2,1,1),mcp:V(`mcp`,2,1,1),memory:V(`memory`,2,1,2),stt:V(`stt`,2,1,1),promptTemplates:V(`promptTemplates`,2,1,1),chatInput:V(`chatInput`,3,2,2),orchestration:V(`orchestration`,3,2,2),attachments:V(`attachments`,3,2,2),diagrams:V(`diagrams`,3,2,2),keyboardShortcuts:V(`keyboardShortcuts`,3,2,2,3,2)};function dr(e){return typeof e==`string`&&Object.prototype.hasOwnProperty.call(B,e)}function V(e,t,n,r,i=2,a=1){return{titleKey:`help.${e}.title`,introKey:`help.${e}.intro`,effectKey:`help.${e}.effect`,useWhenKeys:H(`help.${e}.use`,t),howToKeys:H(`help.${e}.howTo`,i),exampleKeys:H(`help.${e}.example`,a),avoidWhenKeys:H(`help.${e}.avoid`,n),relatedKeys:H(`help.${e}.related`,r)}}function H(e,t){return Array.from({length:t},(t,n)=>`${e}.${n+1}`)}var fr=!1,U=null,W=null,G=null,K=null,pr=null,q=!1;function mr(){fr||(fr=!0,document.addEventListener(`click`,gr),document.addEventListener(`keydown`,_r,!0))}function hr(e,t=null,n=[e]){if(!B[e]){console.warn(`[help-dialog] unknown topic:`,e);return}vr(),pr=t,yr(e,Cr(n,e)),U?.classList.add(`open`),U?.setAttribute(`aria-hidden`,`false`),q=!0,requestAnimationFrame(()=>K?.focus())}function J(){if(!q)return;U?.classList.remove(`open`),U?.setAttribute(`aria-hidden`,`true`),q=!1;let e=pr;pr=null,e?.focus()}function gr(e){let t=e.target?.closest(`[data-help-topic]`);if(!t)return;let n=t.getAttribute(`data-help-topic`);if(!dr(n)){console.warn(`[help-dialog] invalid topic:`,n);return}e.preventDefault(),hr(n,t,Sr(t.getAttribute(`data-help-topics`),n))}function _r(e){!q||e.key!==`Escape`||(e.preventDefault(),e.stopImmediatePropagation(),J())}function vr(){if(U&&W&&G&&K)return;U=document.createElement(`div`),U.id=`helpDialog`,U.className=`modal-overlay help-dialog-overlay`,U.setAttribute(`role`,`presentation`),U.setAttribute(`aria-hidden`,`true`),U.addEventListener(`click`,e=>{e.target===U&&J()});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`,W=document.createElement(`span`),W.id=`helpDialogTitle`,K=document.createElement(`button`),K.type=`button`,K.className=`btn-modal-close help-dialog-close`,K.setAttribute(`aria-label`,l(`help.close`)),K.textContent=`x`,K.addEventListener(`click`,()=>J()),G=document.createElement(`div`),G.className=`help-dialog-body`;let n=document.createElement(`div`);n.className=`modal-footer help-dialog-footer`;let r=document.createElement(`button`);r.type=`button`,r.className=`btn-save help-dialog-done`,r.textContent=l(`help.close`),r.addEventListener(`click`,()=>J()),t.append(W,K),n.append(r),e.append(t,G,n),U.append(e),document.body.append(U)}function yr(e,t=[e]){if(!W||!G||!K)return;let n=B[e];W.textContent=l(n.titleKey),K.setAttribute(`aria-label`,l(`help.close`)),G.replaceChildren();let r=document.createElement(`div`);if(r.className=`help-dialog-content`,br(r,n),t.length<=1){G.append(r);return}let i=document.createElement(`div`);i.className=`help-dialog-layout`,i.append(xr(t,e),r),G.append(i)}function br(e,t){t.docLinks?.length&&wr(e,t.docLinks),Tr(e,l(`help.section.what`),l(t.introKey)),Tr(e,l(`help.section.effect`),l(t.effectKey),`help-effect-text`),Y(e,l(`help.section.useWhen`),t.useWhenKeys),Dr(e,l(`help.section.howTo`),t.howToKeys),Y(e,l(`help.section.example`),t.exampleKeys,!1,`help-example-list`),t.avoidWhenKeys?.length&&Y(e,l(`help.section.avoidWhen`),t.avoidWhenKeys),t.relatedKeys?.length&&Y(e,l(`help.section.related`),t.relatedKeys,!0)}function xr(e,t){let n=document.createElement(`nav`);n.className=`help-dialog-nav`,n.setAttribute(`aria-label`,l(`help.section.related`));for(let r of e){let i=B[r],a=document.createElement(`button`);a.type=`button`,a.className=`help-dialog-nav-item`,a.textContent=l(i.titleKey),r===t&&(a.classList.add(`active`),a.setAttribute(`aria-current`,`page`)),a.addEventListener(`click`,()=>yr(r,e)),n.append(a)}return n}function Sr(e,t){return Cr(e?.split(/[\s,]+/).filter(Boolean)??[],t)}function Cr(e,t){let n=[];for(let t of e)dr(t)&&!n.includes(t)&&n.push(t);return n.includes(t)||n.unshift(t),n}function wr(e,t){let n=document.createElement(`section`);n.className=`help-dialog-section help-doc-links`;let r=document.createElement(`nav`);r.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=l(e.labelKey);let n=document.createElement(`span`);n.className=`help-doc-link-icon`,n.textContent=`↗`,t.append(n),r.append(t)}n.append(r),e.append(n)}function Tr(e,t,n,r){let i=Er(t),a=document.createElement(`p`);r&&(a.className=r),a.textContent=n,i.append(a),e.append(i)}function Y(e,t,n,r=!1,i){let a=Er(t),o=document.createElement(`ul`);o.className=i??(r?`help-related-list`:`help-dialog-list`);for(let e of n){let t=document.createElement(`li`);t.textContent=l(e),o.append(t)}a.append(o),e.append(a)}function Er(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 Dr(e,t,n){let r=Er(t),i=document.createElement(`ol`);i.className=`help-dialog-list help-howto-list`;for(let e of n){let t=document.createElement(`li`);t.textContent=l(e),i.append(t)}r.append(i),e.append(r)}window.parent;var Or=null,kr=``,X=null;function Ar(){let e=document.getElementById(`chatSearchInput`),t=document.getElementById(`chatSearchClose`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);!e||!t||!n||!r||(window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-search`&&jr()}),e.addEventListener(`input`,()=>{let t=e.value.trim();if(Or&&clearTimeout(Or),!t){zr(n,r);return}Or=setTimeout(()=>void Nr(t,n,r),250)}),e.addEventListener(`keydown`,e=>{if(e.key===`Escape`){Z();return}e.key===`Enter`&&(e.preventDefault(),n.querySelector(`.chat-search-result`)?.click()),e.key===`ArrowDown`&&(e.preventDefault(),Rr(n,1)),e.key===`ArrowUp`&&(e.preventDefault(),Rr(n,-1))}),n.addEventListener(`wheel`,e=>{let t=n,r=t.scrollTop===0&&e.deltaY<0,i=t.scrollTop+t.clientHeight>=t.scrollHeight&&e.deltaY>0;!r&&!i&&e.stopPropagation(),(r||i)&&e.preventDefault()},{passive:!1}),t.addEventListener(`click`,Z))}function jr(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`);!e||!t||(e.classList.contains(`open`)?Z():(e.classList.add(`open`),t.focus(),Mr()))}function Z(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);e&&(e.classList.remove(`open`),t&&(t.value=``),n&&r&&zr(n,r),kr=``)}function Mr(){X=new Map,a(`/api/messages`).then(e=>{e&&(X=new Map,e.forEach((e,t)=>X.set(e.id,t)))}).catch(()=>{})}async function Nr(e,t,n){kr=e;let r=await a(`/api/messages/search?q=${encodeURIComponent(e)}&limit=20`);if(!(!r||kr!==e)){if(n.textContent=r.length>0?`${r.length} found`:`no results`,r.length===0){t.classList.remove(`has-results`),t.innerHTML=``;return}t.innerHTML=r.map(t=>Pr(t,e)).join(``),t.classList.add(`has-results`),t.querySelectorAll(`.chat-search-result`).forEach(e=>{e.addEventListener(`click`,()=>{Lr(Number(e.dataset.msgId))})})}}function Pr(e,t){let n=e.role===`assistant`?`agent`:e.role,r=n===`agent`?e.cli||`agent`:`you`,i=e.match_field===`tool_log`,a=i?`<span class="chat-search-result-badge">tool</span>`:``,o=Ir(i?Fr(e.tool_log,t):e.content,t),s=Br(e.created_at);return`<div class="chat-search-result" data-msg-id="${e.id}" tabindex="-1">
|
|
42
|
+
<div class="chat-search-result-meta">
|
|
43
|
+
<span class="chat-search-result-role ${n}">${p(r)}</span>
|
|
44
|
+
${a}
|
|
45
|
+
<span>${p(s)}</span>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="chat-search-result-snippet">${o}</div>
|
|
48
|
+
</div>`}function Fr(e,t){if(!e)return``;try{let n=JSON.parse(e),r=t.toLowerCase();for(let e of n){let t=`${e.label||``} ${e.detail||``}`;if(t.toLowerCase().includes(r))return t}}catch{}return e.slice(0,300)}function Ir(e,t){let n=e.toLowerCase().indexOf(t.toLowerCase());if(n===-1)return p(e.slice(0,120));let r=Math.max(0,n-40),i=Math.min(e.length,n+t.length+80),a=p(e.slice(r,n)),o=p(e.slice(n,n+t.length)),s=p(e.slice(n+t.length,i));return`${r>0?`…`:``}${a}<mark>${o}</mark>${s}${i<e.length?`…`:``}`}function Lr(e){if(!X)return;let t=X.get(e);t!=null&&(ce().scrollToIndex(t,`center`),requestAnimationFrame(()=>{setTimeout(()=>{let e=document.getElementById(`chatMessages`);if(!e)return;e.querySelectorAll(`.msg.search-highlight`).forEach(e=>e.classList.remove(`search-highlight`));let n=e.querySelectorAll(`.msg`);for(let e of n){let n=e.getAttribute(`data-turn-index`);if(n!=null&&Number(n)===t){e.classList.add(`search-highlight`);break}}},150)}))}function Rr(e,t){let n=Array.from(e.querySelectorAll(`.chat-search-result`));if(n.length===0)return;let r=e.querySelector(`.chat-search-result.active`),i=r?n.indexOf(r)+t:0;i<0&&(i=n.length-1),i>=n.length&&(i=0),n.forEach(e=>e.classList.remove(`active`)),n[i].classList.add(`active`),n[i].scrollIntoView({block:`nearest`}),n[i].click()}function zr(e,t){e.classList.remove(`has-results`),e.innerHTML=``,t.textContent=``}function Br(e){try{let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})+` `+t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}var Vr=`jaw:stale-bundle-reload-pending`;function Hr(e){let t=typeof e==`string`?e:e instanceof Error||typeof e?.message==`string`?e.message:``;if(!/(failed to fetch dynamically imported module|error loading dynamically imported module|importing a module script failed|chunkloaderror)/i.test(t))return!1;console.warn(`[stale-bundle] detected dynamic import failure:`,t);try{if(sessionStorage.getItem(Vr)===`1`)return!0;sessionStorage.setItem(Vr,`1`)}catch{}let n=()=>window.location.reload();return`serviceWorker`in navigator?(navigator.serviceWorker.getRegistration().then(e=>e?.update()).catch(()=>{}).finally(n),!0):(n(),!0)}window.addEventListener(`unhandledrejection`,e=>{if(Hr(e.reason)){e.preventDefault();return}console.error(`[unhandled]`,e.reason),e.preventDefault()}),window.addEventListener(`error`,e=>{if(Hr(e.error||e.message)){e.preventDefault();return}console.error(`[error]`,e.message,e.filename,e.lineno)});var{loadEmployees:Ur,addEmployee:Wr,deleteEmployee:Gr,updateEmployee:Q,onEmpCliChange:Kr,onEmpRoleChange:qr}=await c(async()=>{let{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}=await import(`./employees-DZSPGlaH.js`);return{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}},__vite__mapDeps([0]));function Jr(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Yr(e){let t=(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.code===`Space`,n=e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&e.code===`KeyM`;return t||n}document.getElementById(`btnSend`)?.addEventListener(`click`,()=>{Ht(`button`)});var Xr=document.getElementById(`chatInput`);Xr?.addEventListener(`keydown`,e=>{Me(e)||Ut(e)});var $=0;Xr?.addEventListener(`input`,e=>{e.isComposing||($&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{je(e.target?.value||``),$=0}))}),Xr?.addEventListener(`cmd-execute`,()=>{Ht(`cmd-execute`)}),document.getElementById(`cmdDropdown`)?.addEventListener(`click`,Ae),document.addEventListener(`click`,ke),Te(),document.getElementById(`filePreviewClear`)?.addEventListener(`click`,x),document.getElementById(`filePreviewList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-file-idx]`);t&&Kt(+(t.dataset.fileIdx||`0`))}),document.querySelector(`.btn-attach`)?.addEventListener(`click`,()=>{document.getElementById(`fileInput`)?.click()}),document.getElementById(`btnVoice`)?.addEventListener(`click`,()=>cr()),document.getElementById(`btnVoiceCancel`)?.addEventListener(`click`,()=>sr()),window.addEventListener(`message`,e=>{if(window.parent===window||e.source!==window.parent||!Jr(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-stt-toggle`||cr()}),document.getElementById(`memorySidebarBtn`)?.addEventListener(`click`,Et),document.getElementById(`btnClearChat`)?.addEventListener(`click`,Jt),document.getElementById(`hbSidebarBtn`)?.addEventListener(`click`,fn),document.getElementById(`langSelect`)?.addEventListener(`change`,async e=>{let t=e.target.value;[`ko`,`en`,`zh`,`ja`].includes(t)&&(await ae(t),n.ws&&n.ws.close())}),document.querySelector(`.tab-bar`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.tab-btn`);if(!t)return;let n=[...t.parentElement?.children||[]].filter(e=>e.classList.contains(`tab-btn`)).indexOf(t),r=[`agents`,`skills`,`settings`];r[n]&&me(r[n],t)}),document.querySelector(`.sidebar-save-bar .btn-save`)?.addEventListener(`click`,fe);function Zr(e){let t=(e instanceof HTMLSelectElement?e:document.getElementById(`selAiEProvider`))?.value||``,n=document.getElementById(`providerAiE`);!t||!n||Array.from(n.options).some(e=>e.value===t)&&(n.value=t)}document.getElementById(`selCli`)?.addEventListener(`change`,()=>Ke()),document.getElementById(`selAiEProvider`)?.addEventListener(`change`,e=>{Zr(e.target),Ke(),qe()}),document.getElementById(`selModel`)?.addEventListener(`change`,()=>qe()),document.getElementById(`selEffort`)?.addEventListener(`change`,()=>qe()),document.getElementById(`flushCli`)?.addEventListener(`change`,()=>Re()),document.getElementById(`flushModel`)?.addEventListener(`change`,()=>Re()),document.querySelector(`[data-action="addEmployee"]`)?.addEventListener(`click`,Wr),document.getElementById(`employeesList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-emp-delete]`);if(t){Gr(t.dataset.empDelete||``);return}}),document.getElementById(`employeesList`)?.addEventListener(`change`,e=>{let t=e.target,n=t.closest(`[data-emp-name]`);if(n){Q(n.dataset.empName||``,{name:t.value});return}let r=t.closest(`[data-emp-cli]`);if(r){Kr(r.dataset.empCli||``,t.value);return}let i=t.closest(`[data-emp-model]`);if(i){if(t.value===`__custom__`){let e=prompt(l(`model.promptInput`));if(e?.trim()){let n=document.createElement(`option`);n.value=e.trim(),n.textContent=e.trim();let r=t.querySelector(`option[value="__custom__"]`);r&&t.insertBefore(n,r),t.value=e.trim(),Q(i.dataset.empModel||``,{model:e.trim()})}else t.value=`default`}else Q(i.dataset.empModel||``,{model:t.value});return}let a=t.closest(`[data-emp-role]`);if(a){qr(a.dataset.empRole||``,t.value);return}let o=t.closest(`[data-emp-custom]`);if(o){Q(o.dataset.empCustom||``,{role:t.value});return}}),document.getElementById(`skillsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-skill-id]`);t&&yt(t.dataset.skillId||``,t.dataset.skillEnabled===`true`)}),document.querySelector(`#tabSkills`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.skill-filter`);t&&xt(t.dataset.filter||`all`,t)}),document.getElementById(`skillSearchInput`)?.addEventListener(`input`,e=>{bt(e.target.value)}),document.querySelector(`[data-action="openPrompt"]`)?.addEventListener(`click`,ft),document.getElementById(`tgOff`)?.addEventListener(`click`,()=>Je(!1)),document.getElementById(`tgOn`)?.addEventListener(`click`,()=>Je(!0)),document.getElementById(`tgForwardOff`)?.addEventListener(`click`,()=>Be(!1)),document.getElementById(`tgForwardOn`)?.addEventListener(`click`,()=>Be(!0)),document.getElementById(`tgMentionOff`)?.addEventListener(`click`,()=>Xe(!1)),document.getElementById(`tgMentionOn`)?.addEventListener(`click`,()=>Xe(!0)),document.getElementById(`tgToken`)?.addEventListener(`change`,Ye),document.getElementById(`tgChatIds`)?.addEventListener(`change`,Ye),document.getElementById(`chTelegram`)?.addEventListener(`click`,()=>ze(`telegram`)),document.getElementById(`chDiscord`)?.addEventListener(`click`,()=>ze(`discord`)),document.getElementById(`dcOff`)?.addEventListener(`click`,()=>He(!1)),document.getElementById(`dcOn`)?.addEventListener(`click`,()=>He(!0)),document.getElementById(`dcForwardOff`)?.addEventListener(`click`,()=>vt(!1)),document.getElementById(`dcForwardOn`)?.addEventListener(`click`,()=>vt(!0)),document.getElementById(`dcAllowBotsOff`)?.addEventListener(`click`,()=>Ge(!1)),document.getElementById(`dcAllowBotsOn`)?.addEventListener(`click`,()=>Ge(!0)),document.getElementById(`dcMentionOff`)?.addEventListener(`click`,()=>Le(!1)),document.getElementById(`dcMentionOn`)?.addEventListener(`click`,()=>Le(!0)),document.getElementById(`dcToken`)?.addEventListener(`change`,Ve),document.getElementById(`dcGuildId`)?.addEventListener(`change`,Ve),document.getElementById(`dcChannelIds`)?.addEventListener(`change`,Ve),document.getElementById(`fallbackOrderList`)?.addEventListener(`change`,We);function Qr(e){let t=document.getElementById(`codexFastOn`),n=document.getElementById(`codexFastOff`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),v()}document.getElementById(`codexFastOn`)?.addEventListener(`click`,()=>Qr(!0)),document.getElementById(`codexFastOff`)?.addEventListener(`click`,()=>Qr(!1));function $r(e){let t=document.getElementById(`codexCtxOn`),n=document.getElementById(`codexCtxOff`),r=document.getElementById(`codexCtxValues`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),r&&(r.style.display=e?``:`none`),v()}document.getElementById(`codexCtxOn`)?.addEventListener(`click`,()=>$r(!0)),document.getElementById(`codexCtxOff`)?.addEventListener(`click`,()=>$r(!1)),document.getElementById(`codexCtxWindow`)?.addEventListener(`change`,v),document.getElementById(`codexCtxCompact`)?.addEventListener(`change`,v);function ei(e){let t=document.getElementById(`claude1mOn`),n=document.getElementById(`claude1mOff`),r=document.getElementById(`modelClaude`),i=e;if(r){let t=r.value||``;if(e&&!t.endsWith(`[1m]`)){let e=t+`[1m]`;Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!1}else if(!e&&t.endsWith(`[1m]`)){let e=t.replace(/\[1m\]$/,``);Array.from(r.options).some(t=>t.value===e)?r.value=e:i=!0}else i=t.endsWith(`[1m]`)}t&&n&&(t.classList.toggle(`active`,i),n.classList.toggle(`active`,!i)),v()}document.getElementById(`claude1mOn`)?.addEventListener(`click`,()=>ei(!0)),document.getElementById(`claude1mOff`)?.addEventListener(`click`,()=>ei(!1));function ti(e){return e.split(/[^a-zA-Z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function ni(){for(let e of Pe()){let t=ti(e),n=document.getElementById(`model`+t);n&&n.addEventListener(`change`,function(){_t(e,this)});let r=document.getElementById(`customModel`+t);r&&r.addEventListener(`change`,function(){Ze(e,this)});let i=document.getElementById(`effort`+t);i&&i.addEventListener(`change`,v)}document.getElementById(`providerAiE`)?.addEventListener(`change`,ht)}document.querySelector(`[data-action="syncMcp"]`)?.addEventListener(`click`,Ue),document.querySelector(`[data-action="installMcp"]`)?.addEventListener(`click`,Ie),document.querySelector(`[data-action="refreshCli"]`)?.addEventListener(`click`,()=>{nt()?ct(!0):st()}),document.getElementById(`cliStatusInterval`)?.addEventListener(`change`,function(){rt(this.value)}),document.getElementById(`promptModal`)?.addEventListener(`click`,e=>y(e)),document.querySelector(`#promptModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closePrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="cancelPrompt"]`)?.addEventListener(`click`,()=>y()),document.querySelector(`[data-action="savePrompt"]`)?.addEventListener(`click`,Qe),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!n.isRecording&&y()}),document.querySelector(`[data-action="openTemplates"]`)?.addEventListener(`click`,at),document.querySelector(`[data-action="saveTemplate"]`)?.addEventListener(`click`,ut),document.querySelector(`[data-action="closeTemplate"]`)?.addEventListener(`click`,()=>lt()),document.getElementById(`templateModal`)?.addEventListener(`click`,e=>lt(e)),document.querySelector(`#templateModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.getElementById(`templateBack`)?.addEventListener(`click`,pt),document.getElementById(`templateDevToggle`)?.addEventListener(`click`,et),document.getElementById(`heartbeatModal`)?.addEventListener(`click`,e=>pn(e)),document.querySelector(`#heartbeatModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeHeartbeat"]`)?.addEventListener(`click`,()=>pn()),document.querySelector(`[data-action="addHeartbeat"]`)?.addEventListener(`click`,mn),document.getElementById(`hbJobsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-hb-toggle]`);if(t){gn(+(t.dataset.hbToggle||`0`));return}let n=e.target?.closest(`[data-hb-remove]`);if(n){hn(+(n.dataset.hbRemove||`0`));return}}),document.getElementById(`hbJobsList`)?.addEventListener(`change`,e=>{let t=e.target,r=t.closest(`[data-hb-name]`);if(r){n.heartbeatJobs[+(r.dataset.hbName||`0`)].name=t.value,T();return}let i=t.closest(`[data-hb-kind]`);if(i){let e=+(i.dataset.hbKind||`0`),r=n.heartbeatJobs[e]?.schedule,a=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule=t.value===`cron`?{kind:`cron`,cron:typeof r?.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...a?{timeZone:a}:{}}:{kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...a?{timeZone:a}:{}},w(),T();return}let a=t.closest(`[data-hb-minutes]`);if(a){let e=+(a.dataset.hbMinutes||`0`),r=n.heartbeatJobs[e]?.schedule,i=Math.max(1,Math.floor(Number(t.value)||5)),o=typeof r?.timeZone==`string`?r.timeZone:void 0;n.heartbeatJobs[e].schedule={kind:`every`,minutes:i,...o?{timeZone:o}:{}},w(),T();return}let o=t.closest(`[data-hb-cron]`);if(o){let e=+(o.dataset.hbCron||`0`),r=n.heartbeatJobs[e]?.schedule,i=typeof r?.timeZone==`string`?r.timeZone:void 0,a=t.value.trim().replace(/\s+/g,` `);n.heartbeatJobs[e].schedule={kind:`cron`,cron:a,...i?{timeZone:i}:{}},w(),T();return}let s=t.closest(`[data-hb-timezone]`);if(s){let e=+(s.dataset.hbTimezone||`0`),r=n.heartbeatJobs[e]?.schedule;r?.kind===`cron`?n.heartbeatJobs[e].schedule={kind:`cron`,cron:typeof r.cron==`string`&&r.cron.trim()?r.cron:`0 9 * * *`,...t.value.trim()?{timeZone:t.value.trim()}:{}}:n.heartbeatJobs[e].schedule={kind:`every`,minutes:typeof r?.minutes==`number`&&r.minutes>0?Math.floor(r.minutes):5,...t.value.trim()?{timeZone:t.value.trim()}:{}},w(),T();return}let c=t.closest(`[data-hb-prompt]`);if(c){n.heartbeatJobs[+(c.dataset.hbPrompt||`0`)].prompt=t.value,T();return}}),document.getElementById(`memoryModal`)?.addEventListener(`click`,e=>Pt(e)),document.querySelector(`#memoryModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeMemory"]`)?.addEventListener(`click`,()=>Pt()),document.getElementById(`memTabBtnSettings`)?.addEventListener(`click`,()=>Ft(`settings`)),document.getElementById(`memTabBtnAdvOps`)?.addEventListener(`click`,()=>Ft(`status`)),document.getElementById(`memTabBtnFiles`)?.addEventListener(`click`,()=>Ft(`files`)),document.getElementById(`memOn`)?.addEventListener(`click`,()=>Dt(!0)),document.getElementById(`memOff`)?.addEventListener(`click`,()=>Dt(!1)),document.getElementById(`memFlushEvery`)?.addEventListener(`change`,Ct),document.getElementById(`memRetention`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushLang`)?.addEventListener(`change`,Ct),document.getElementById(`memFlushNowBtn`)?.addEventListener(`click`,Tt),document.getElementById(`advBootstrapBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advReindexBtn`)?.addEventListener(`click`,At),document.getElementById(`advReimportBtn`)?.addEventListener(`click`,Nt),document.getElementById(`advOpenCorruptedBtn`)?.addEventListener(`click`,Mt),document.getElementById(`advStatusBanner`)?.addEventListener(`click`,e=>{e.target?.id===`advUpgradeSoulBtn`&&jt(),e.target?.id===`advSynthesizeSoulBtn`&&wt()}),document.getElementById(`basicMemoryFiles`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-mem-delete]`);if(t){e.stopPropagation(),kt(t.dataset.memDelete||``);return}let n=e.target?.closest(`[data-mem-view]`);if(n){Ot(n.dataset.memView||``);return}if(e.target?.closest(`[data-mem-back]`)){Et();return}});async function ri(){te(),Ee(),kn(),In(),await d();let e=document.getElementById(`langSelect`);e&&(e.value=oe()),await Fe(),ni(),mr(),Ar(),document.getElementById(`chatSearchTrigger`)?.addEventListener(`click`,jr),xe(),ve(),Qt(),Zt(),await Oe(),await gt(),$e(),it(),tt(),mt(),nt()&&ct(),we(),Ur(),_n(),St(),de(),await le(),pe(),Hn();try{sessionStorage.removeItem(Vr)}catch{}re(),`serviceWorker`in navigator&&!dt()&&navigator.serviceWorker.register(`/sw.js`).catch(()=>{})}ri().catch(e=>{console.error(`[bootstrap]`,e)}),document.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key===`f`&&(e.preventDefault(),e.stopPropagation(),jr())},!0),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(document.getElementById(`chatSearch`)?.classList.contains(`open`)){e.preventDefault(),Z();return}if(n.isRecording){e.preventDefault(),sr();return}document.querySelectorAll(`.modal-overlay.open`).forEach(e=>{e.classList.remove(`open`)})}Yr(e)&&(e.preventDefault(),cr())}),document.getElementById(`mobileMenuLeft`)?.addEventListener(`click`,Se),document.getElementById(`mobileMenuRight`)?.addEventListener(`click`,be);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--bg:oklch(7% .01 280);--surface:oklch(11% .01 280);--border:oklch(17% .01 270);--text:oklch(92% .01 270);--text-dim:oklch(53% .02 270);--accent:oklch(78% .14 200);--accent2:oklch(70% .13 200);--green:oklch(78% .16 150);--user-bg:oklch(15% .02 270);--agent-bg:oklch(9% .01 270);--status-idle-bg:oklch(15% .02 150);--status-running-bg:oklch(17% .02 75);--status-running-color:oklch(81% .14 85);--code-bg:oklch(9% .01 250);--link-color:oklch(72% .12 250);--table-border:oklch(70% .13 200);--stop-btn:var(--error);--stop-btn-hover:oklch(57% .21 25);--toggle-off:oklch(35% 0 0);--toggle-on:oklch(100% 0 0);--delete-color:var(--error);--code-label-color:oklch(66% .01 250);--modal-bg:oklch(0% 0 0/.6);--font-display:"Chakra Petch", "Outfit", "Pretendard", "Noto Sans CJK SC", "Noto Sans CJK JP", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--font-ui:"Outfit", "Pretendard", "Noto Sans CJK SC", "Noto Sans CJK JP", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", -apple-system, system-ui, sans-serif;--font-mono:"SF Mono", "JetBrains Mono", "Fira Code", monospace;--sidebar-left-w:220px;--sidebar-right-w:260px;--sidebar-collapsed-w:48px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--text-xs:11px;--text-sm:13px;--text-base:16px;--text-md:17px;--text-lg:19px;--text-xl:22px;--text-2xl:26px;--text-3xl:34px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-base:.25s;--duration-slow:.4s;--error:oklch(63% .21 25);--error-dim:oklch(63% .21 25/.15);--success:oklch(72% .17 150);--success-dim:oklch(72% .17 150/.15);--warning:oklch(78% .16 75);--warning-dim:oklch(78% .16 75/.15);--info:oklch(72% .12 220);--phase-1:#60a5fa;--phase-2:#a78bfa;--phase-3:#34d399;--phase-4:#fbbf24;--phase-5:#f472b6;--text-on-accent:#000;--noise-opacity:.03;--scanline-pct:1.2%;--glow-strength:5%;--toggle-w:36px;--toggle-h:20px;--toggle-knob:16px;--orc-glow:transparent;--orc-glow-I:oklch(70% .15 200);--orc-glow-P:oklch(63% .17 260);--orc-glow-A:oklch(78% .16 75);--orc-glow-B:oklch(72% .17 150);--orc-glow-C:oklch(60% .2 300);--orc-glow-D:transparent}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui);background:var(--bg);color:var(--text);grid-template-columns:var(--sidebar-left-w) 1fr var(--sidebar-right-w);will-change:grid-template-columns;height:100vh;transition:grid-template-columns .2s cubic-bezier(.4,0,.2,1),background-color .2s,color .2s;display:grid}:lang(zh),:lang(ja){letter-spacing:0}body.left-collapsed{--sidebar-left-w:var(--sidebar-collapsed-w)}body.right-collapsed{--sidebar-right-w:var(--sidebar-collapsed-w)}[data-theme=light]{--bg:oklch(97% 0 0);--surface:oklch(100% 0 0);--border:oklch(90% .01 270);--text:oklch(15% .02 270);--text-dim:oklch(53% .02 270);--accent:oklch(62% .11 200);--accent2:oklch(52% .1 200);--green:oklch(62% .16 150);--user-bg:oklch(95% .01 270);--agent-bg:oklch(98% .005 270);--status-idle-bg:oklch(96% .04 150);--status-running-bg:oklch(97% .06 90);--status-running-color:oklch(56% .12 70);--code-bg:oklch(96% .005 250);--link-color:oklch(56% .18 260);--table-border:oklch(56% .18 260);--stop-btn:var(--error);--stop-btn-hover:oklch(48% .19 25);--toggle-off:oklch(80% 0 0);--toggle-on:oklch(100% 0 0);--delete-color:var(--error);--code-label-color:oklch(53% .02 270);--modal-bg:oklch(0% 0 0/.3);--error:oklch(57% .21 25);--error-dim:oklch(57% .21 25/.15);--success:oklch(62% .16 150);--success-dim:oklch(62% .16 150/.15);--warning:oklch(63% .15 70);--warning-dim:oklch(63% .15 70/.15);--info:oklch(56% .12 220);--phase-1:#3b82f6;--phase-2:#8b5cf6;--phase-3:#10b981;--phase-4:#f59e0b;--phase-5:#ec4899;--text-on-accent:#fff;--noise-opacity:.015;--scanline-pct:0.8%;--glow-strength:3%;--orc-glow-I:oklch(58% .14 200);--orc-glow-P:oklch(56% .18 260);--orc-glow-A:oklch(63% .15 70);--orc-glow-B:oklch(62% .16 150);--orc-glow-C:oklch(53% .22 300);--orc-glow-D:transparent}label{color:var(--text-dim);margin-bottom:4px;font-size:11px;display:block}select,input[type=text]{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:6px 10px;font-family:inherit;font-size:12px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:color-mix(in oklch, var(--accent) 30%, var(--text-dim))}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@keyframes revealUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes revealLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes revealRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes breathe{0%,to{opacity:.5}50%{opacity:.8}}@keyframes dotPing{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.hidden{display:none}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.w-full{width:100%}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-dim{color:var(--text-dim)}.mono{font-family:var(--font-mono)}.fallback-desc{margin:2px 0 6px}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.ml-6{margin-left:var(--space-6)}.mr-auto{margin-right:auto}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.w-auto{width:auto}.input-sm{width:100%;padding:var(--space-1) var(--space-2);font-size:11px}.input-compact{width:100px;padding:3px var(--space-2);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:11px}.btn-action-sm{padding:var(--space-1) var(--space-3);margin:0;font-size:11px}.btn-action-block{width:100%;padding:var(--space-2);font-size:var(--text-sm);margin:0}.hr-divider{border:none;border-top:1px solid var(--border);margin:var(--space-1) 0}.btn-modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:16px}.btn-refresh{justify-content:center;align-items:center;gap:var(--space-1);flex:1;height:32px;margin:0;padding:6px;font-size:11px;display:flex}.select-sm{padding:var(--space-1);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:11px}.select-status-interval{min-width:60px;height:32px;padding:6px 8px}.input-agent-name{font-family:var(--font-display);font-size:var(--text-base);padding:var(--space-1) var(--space-2);flex:1;font-weight:600}.perm-auto{cursor:default;width:100%;padding:6px 14px}.text-status{color:var(--text-dim);font-size:11px}.text-shortcut-hint{color:var(--text-dim);font-size:9px}.mono-path{font-family:var(--font-mono);word-break:break-all}.label-wide{min-width:120px;font-size:11px}.mem-tab-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 12px;font-size:12px}.mem-tab-btn.active,.mem-tab.active .mem-tab-btn{color:var(--text)}.info-box{margin-top:var(--space-2);background:var(--bg);border-radius:var(--radius-sm);color:var(--text-dim);padding:6px;font-size:11px}.adv-status-banner{border-bottom:1px solid var(--border);color:var(--text-dim);padding:10px 12px;font-size:11px}.tab-strip{border-bottom:1px solid var(--border);padding:0 12px;display:flex}.section-header{margin-bottom:6px;font-size:12px;font-weight:600}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.pb-3{padding-bottom:var(--space-3)}.p-3{padding:var(--space-3)}.mt-3{margin-top:var(--space-3)}.modal-template{flex-direction:column;width:640px;max-width:90vw;max-height:85vh;display:flex}.modal-scrollable{max-height:80vh;overflow-y:auto}.template-tree-area{flex:1;padding:12px 16px;overflow-y:auto}.template-editor-view{flex-direction:column}.template-editor-bar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);display:flex}.btn-back{border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;background:0 0;font-size:11px}.btn-dev-toggle{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font-size:11px}.template-textarea{min-height:350px;font-family:var(--font-mono);flex:1;font-size:12px}.template-hint{padding:var(--space-2) 0;color:var(--text-dim);font-size:11px}.queue-badge{background:var(--warning);color:var(--bg);border-radius:var(--radius-full);font-size:var(--text-xs);z-index:10;min-width:18px;height:18px;box-shadow:0 0 0 2px var(--bg);justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;top:-6px;right:-6px}.sidebar-left{background:linear-gradient(180deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 95%, #000) 100%);border-right:1px solid color-mix(in oklch, var(--border) 80%, var(--accent) 20%);box-shadow:inset -1px 0 0 var(--border);animation:revealLeft .4s var(--ease-out-expo) 50ms both;flex-direction:column;gap:16px;padding:48px 16px 16px;display:flex;overflow-y:auto}.sidebar-left:before,.sidebar-right:before{content:"";pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg, transparent, transparent 2px, color-mix(in oklch, var(--accent) var(--scanline-pct), transparent) 2px, color-mix(in oklch, var(--accent) var(--scanline-pct), transparent) 4px), linear-gradient(180deg, color-mix(in oklch, var(--accent) var(--glow-strength), transparent) 0%, transparent 200px);position:absolute;inset:0}.logo{color:var(--accent);font-size:26px;font-weight:700;font-family:var(--font-display);letter-spacing:1px;text-shadow:0 0 20px color-mix(in oklch, var(--accent) 30%, transparent)}.section-title{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.5px;font-size:11px;font-family:var(--font-display);margin-bottom:4px;font-weight:600}.memory-list{font-size:12px;list-style:none}.memory-list li{border-bottom:1px solid var(--border);padding:4px 0}.memory-key{color:var(--accent2)}.stat{color:var(--text-dim);margin:2px 0;font-size:12px}.status-badge{letter-spacing:.5px;font-size:10px;font-weight:600;font-family:var(--font-display);border-radius:10px;align-items:center;padding:2px 8px;transition:background .3s,color .3s;display:inline-flex}.status-idle{background:var(--status-idle-bg);color:var(--green);box-shadow:0 0 6px color-mix(in oklch, var(--success) 20%, transparent)}.status-running{background:var(--status-running-bg);color:var(--status-running-color);box-shadow:0 0 6px color-mix(in oklch, var(--warning) 30%, transparent)}.btn-clear{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:12px;font-family:var(--font-display);background:0 0;border-radius:6px;margin-top:auto;padding:8px;transition:border-color .15s,color .15s,transform .1s}.btn-clear:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.btn-clear:active{transform:translateY(0)}.sidebar-right{background:linear-gradient(180deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 95%, #000) 100%);border-left:1px solid color-mix(in oklch, var(--border) 80%, var(--accent) 20%);box-shadow:inset 1px 0 0 var(--border);animation:revealRight .4s var(--ease-out-expo) .1s both;flex-direction:column;padding-top:48px;display:flex;overflow-y:auto}.tab-bar{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.tab-btn{color:var(--text-dim);font-size:11px;font-family:var(--font-display);cursor:pointer;text-transform:uppercase;letter-spacing:1px;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px 8px;transition:color .15s,border-bottom-color .15s}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-content{flex-direction:column;gap:12px;padding:16px;display:none}.tab-content.active{display:flex}.sidebar-save-bar{border-bottom:1px solid var(--border);flex-shrink:0;padding:6px 16px}.btn-save{background:var(--accent);color:#fff;width:100%;font-size:11px;font-family:var(--font-display);cursor:pointer;border:none;border-radius:6px;padding:6px;font-weight:600}.btn-save:hover{opacity:.9}.sidebar-hb-btn{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;text-align:left;font-size:12px;font-family:var(--font-display);border-radius:6px;align-items:center;gap:4px;padding:6px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.sidebar-hb-btn.w-auto{flex-shrink:0;width:auto}.sidebar-hb-btn:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.sidebar-lang-row{align-items:center;width:100%;display:flex;position:relative}.sidebar-lang-row .sidebar-lang-icon{pointer-events:none;color:var(--text);align-items:center;display:inline-flex;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.sidebar-lang-select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-dim) 50%), linear-gradient(135deg, var(--text-dim) 50%, transparent 50%);background-position:calc(100% - 12px),calc(100% - 8px);background-repeat:no-repeat;background-size:4px 4px,4px 4px;padding-left:26px;padding-right:22px}.sidebar-lang-select:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.sidebar-toggle{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;transition:border-color .15s,color .15s;display:flex}.sidebar-toggle:hover{border-color:var(--accent);color:var(--accent)}.sidebar-bottom{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:auto;padding-top:12px;display:flex}.avatar-row{justify-content:center;gap:12px;display:flex}.avatar-card{flex-direction:column;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.avatar-preview{cursor:default;width:48px;height:48px;font-size:28px;line-height:48px}.avatar-card-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:500}.avatar-card-actions{gap:4px;display:flex}.avatar-action-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:28px;height:28px;color:var(--text-dim);cursor:pointer;transition:all var(--duration-fast);place-items:center;display:grid}.avatar-action-btn:hover{background:var(--surface-hover,color-mix(in oklch, var(--surface) 90%, var(--accent) 10%));color:var(--text);border-color:var(--accent)}.sidebar-left,.sidebar-right{contain:layout style;position:relative}.sidebar-left>:not(.sidebar-toggle),.sidebar-right>:not(.sidebar-toggle){opacity:1;transition:opacity .15s ease-in 50ms}.sidebar-left .sidebar-toggle,.sidebar-right .sidebar-toggle{z-index:2;position:absolute;top:10px}.sidebar-left .sidebar-toggle{left:10px}.sidebar-right .sidebar-toggle{right:10px}body.left-collapsed .sidebar-left>:not(.sidebar-toggle){opacity:0;pointer-events:none;transition:opacity .1s ease-out}body.left-collapsed .sidebar-left{padding:16px 10px;overflow:hidden}body.right-collapsed .sidebar-right>:not(.sidebar-toggle){opacity:0;pointer-events:none;transition:opacity .1s ease-out}body.right-collapsed .sidebar-right{padding:16px 10px;overflow:hidden}@media (width<=900px){body:not(.left-expanded){--sidebar-left-w:var(--sidebar-collapsed-w)}body:not(.left-expanded) .sidebar-left>:not(.sidebar-toggle){opacity:0;pointer-events:none}body:not(.left-expanded) .sidebar-left{padding:16px 10px;overflow:hidden}body:not(.right-expanded){--sidebar-right-w:var(--sidebar-collapsed-w)}body:not(.right-expanded) .sidebar-right>:not(.sidebar-toggle){opacity:0;pointer-events:none}body:not(.right-expanded) .sidebar-right{padding:16px 10px;overflow:hidden}}@media (width<=768px){body{grid-template-columns:1fr;grid-template-areas:"main";height:100dvh}.sidebar-left,.sidebar-right{z-index:100;width:min(280px,80vw);transition:transform .25s var(--ease-out-expo);padding-top:calc(48px + env(safe-area-inset-top,0px));padding-bottom:env(safe-area-inset-bottom,0px);visibility:hidden;pointer-events:none;position:fixed;top:0;bottom:0;transform:translate(-100%);min-width:unset!important}.sidebar-right{left:auto;right:0;transform:translate(100%)}body.left-expanded .sidebar-left,body.right-expanded .sidebar-right{visibility:visible;pointer-events:auto;transform:translate(0)}body.left-expanded:after,body.right-expanded:after{content:"";background:var(--modal-bg);z-index:99;animation:.2s fadeIn;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}body:not(.left-expanded) .sidebar-left>:not(.sidebar-toggle){display:block}.sidebar-toggle{display:none}.chat-input-area{padding-bottom:env(safe-area-inset-bottom,0px)}.message.agent-message,.message.user-message{max-width:95%!important}}.mobile-nav{display:none}.lucide,[data-icon] svg,.icon-hydrated svg,.cli-provider-icon svg,.skill-emoji svg{vertical-align:-.125em;flex-shrink:0;width:1em;height:1em;display:inline-block}[data-icon],.icon-hydrated{align-items:center;line-height:1;display:inline-flex}.chat-area{border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--bg);flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.chat-area:after{content:"";pointer-events:none;z-index:0;opacity:var(--noise-opacity);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;position:absolute;inset:0}[data-theme=light] .chat-area:after{display:none}.theme-switch{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;flex-shrink:0;width:44px;height:24px;padding:0;transition:background .3s,border-color .3s;position:relative}.theme-switch:hover{border-color:var(--accent)}.theme-switch-knob{background:var(--text);border-radius:50%;width:16px;height:16px;transition:left .3s cubic-bezier(.4,0,.2,1),background .3s;position:absolute;top:3px;left:3px}.theme-switch-knob:after{content:"";width:10px;height:10px;box-shadow:-3px 0 0 var(--surface);background:0 0;border-radius:50%;transition:all .3s;position:absolute;top:3px;left:5px}.theme-switch.is-light .theme-switch-knob{background:var(--warning);left:23px}.theme-switch.is-light .theme-switch-knob:after{box-shadow:none;background:color-mix(in oklch, var(--warning) 80%, #fff);width:4px;height:4px;top:6px;left:6px}.chat-header{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--border);font-size:var(--text-md);font-weight:600;font-family:var(--font-display);letter-spacing:.5px;z-index:2;animation:revealUp .35s var(--ease-out-expo) .15s both;justify-content:space-between;align-items:center;display:flex;position:relative;box-shadow:0 1px 3px #0003}.chat-header-actions{align-items:center;gap:var(--space-2);display:inline-flex}#headerCli{align-items:center;gap:4px;display:inline-flex}#headerCli svg{flex-shrink:0;width:1.1em;height:1.1em}.chat-messages{padding:var(--space-4) var(--space-5);gap:var(--space-3);z-index:1;animation:revealUp .4s var(--ease-out-expo) .2s both;contain:layout style paint;will-change:scroll-position;overflow-anchor:none;flex-direction:column;flex:1;display:flex;position:relative;overflow-y:auto}.chat-messages.vs-active{gap:0}.chat-restore-indicator{left:50%;bottom:var(--space-4);z-index:3;align-items:center;gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch, var(--surface) 88%, transparent);color:var(--text-dim);box-shadow:var(--shadow-md);font-size:var(--text-xs);pointer-events:none;padding:6px 10px;display:inline-flex;position:absolute;transform:translate(-50%)}.chat-restore-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite processDotPulse}.scroll-to-bottom-fab{background:var(--surface);border:1px solid var(--border);width:36px;height:36px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;z-index:10;border-radius:50%;justify-content:center;align-items:center;transition:opacity .2s,transform .2s;display:flex;position:absolute;bottom:80px;right:20px;transform:translateY(8px);box-shadow:0 2px 8px #0000001f}.scroll-to-bottom-fab.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.scroll-to-bottom-fab:hover{color:var(--text);border-color:var(--accent)}.scroll-to-bottom-fab:active{transform:scale(.92)}.chat-messages.vs-active>.vs-inner{flex:none;width:100%;position:relative}.vs-active .vs-inner>.msg{margin-bottom:var(--space-3);contain:style;position:absolute;top:0;left:0;right:0}.vs-active .vs-inner>.msg-user{left:auto}.vs-active .vs-inner>.msg-system{width:fit-content;margin-left:auto;margin-right:auto;left:0;right:0}.msg{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-base);word-wrap:break-word;overflow-wrap:break-word;max-width:85%;transition:box-shadow var(--duration-base);contain:layout style;line-height:1.75;position:relative}@keyframes msgEnterAgent{0%{opacity:0;transform:translate(-8px)translateY(4px)}to{opacity:1;transform:none}}@keyframes msgEnterUser{0%{opacity:0;transform:translate(8px)translateY(4px)}to{opacity:1;transform:none}}@keyframes msgEnterSystem{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.msg-user{background:color-mix(in oklch, var(--accent) 10%, var(--surface));border:1px solid color-mix(in oklch, var(--accent) 18%, var(--border));border-radius:var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg);white-space:pre-wrap;align-self:flex-end;gap:var(--space-2);max-width:75%;animation:.25s cubic-bezier(.16,1,.3,1) msgEnterUser;display:flex}.user-icon{text-align:center;width:24px;height:24px;transition:opacity var(--duration-fast);flex-shrink:0;margin-top:2px;font-size:18px;line-height:24px}.user-body{flex:1;min-width:0;position:relative}.msg-agent{align-self:flex-start;gap:var(--space-2);max-width:100%;padding:var(--space-2) 0;transition:padding var(--duration-base);background:0 0;border:none;border-radius:0;animation:.25s cubic-bezier(.16,1,.3,1) msgEnterAgent;display:flex}.agent-icon{text-align:center;width:24px;height:24px;transition:opacity var(--duration-fast);flex-shrink:0;margin-top:2px;font-size:18px;line-height:24px}.agent-icon,.user-icon{background:color-mix(in oklch, var(--surface) 88%, var(--accent) 12%);box-shadow:inset 0 0 0 1px color-mix(in oklch, var(--border) 80%, var(--accent) 20%);border-radius:999px;place-items:center;display:grid;overflow:hidden}.avatar-image{object-fit:cover;border-radius:inherit;width:100%;height:100%;display:block}.agent-body{flex:1;min-width:0;position:relative}.msg-system{border:1px dashed var(--border);text-align:center;font-size:var(--text-xs);color:var(--text-dim);padding:var(--space-1) var(--space-3);background:0 0;align-self:center;max-width:80%;animation:.2s ease-out msgEnterSystem}.msg-user:after{content:"";top:var(--space-2);bottom:var(--space-2);background:var(--accent);opacity:0;width:3px;transition:opacity var(--duration-fast);border-radius:2px;position:absolute}.msg-agent:after{content:"";top:var(--space-2);bottom:var(--space-2);background:var(--accent);opacity:0;width:2px;transition:opacity var(--duration-fast);border-radius:1px;position:absolute;left:-4px}.msg-user:after{right:calc(-1 * var(--space-2))}.msg-agent:hover:after,.msg-user:hover:after{opacity:.3}.msg-user:hover{box-shadow:0 2px 12px color-mix(in oklch, var(--bg) 85%, transparent)}.msg-agent:hover{box-shadow:none}.msg-label{font-size:var(--text-xs);letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--space-1);align-items:center;gap:var(--space-1);font-weight:600;display:flex}.msg-user .msg-label:before{content:"";background:var(--success);border-radius:50%;width:6px;height:6px}.msg-type-success{border-color:var(--success);color:var(--success)}.msg-type-error{border-color:var(--error);color:var(--error)}.msg-type-info{border-color:var(--link-color);color:var(--link-color)}.msg-error{border-left:3px solid var(--error);background:var(--error-dim);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm) var(--radius-md) var(--radius-md) var(--radius-sm)}.msg-error .msg-label,.msg-error .msg-content a{color:var(--error)}.msg-error .msg-content code{border-color:var(--error)}.msg-actions{bottom:var(--space-2);align-items:center;gap:var(--space-2);opacity:0;transition:opacity var(--duration-fast);display:inline-flex;position:absolute}.msg-agent .msg-actions{right:0}.msg-user .msg-actions{left:var(--space-2)}.msg:hover .msg-actions,.msg-actions:focus-within{opacity:.85}.msg-copy,.msg-pin-reminder{cursor:pointer;opacity:.9;width:12px;height:12px;transition:transform .1s, background var(--duration-fast), border-color var(--duration-fast);background:0 0;padding:0;position:relative}.msg-copy{border:1.5px solid var(--text-dim);border-radius:2px}.msg-pin-reminder{color:var(--text-dim);border:0}.msg-pin-reminder:before{content:"";border:1.5px solid;border-bottom:0;width:6px;height:8px;position:absolute;top:1px;left:3px;transform:skew(-8deg)}.msg-pin-reminder:after{content:"";background:currentColor;width:1.5px;height:4px;position:absolute;top:8px;left:5px}.msg-copy:hover,.msg-pin-reminder:hover{color:var(--text);transform:scale(1.35)}.msg-copy:active{background:var(--accent);border-color:var(--accent);transform:scale(.75)}.msg-copy.copied{background:var(--accent);border-color:var(--accent);color:var(--bg);text-align:center;width:auto;min-width:12px;font-size:10px;line-height:12px;opacity:1!important}.msg-pin-reminder.is-pinning{opacity:1;color:var(--accent)}.msg-pin-reminder.is-pinned{color:var(--success)}.stream-cursor{background:color-mix(in oklch, var(--accent) 40%, transparent);vertical-align:text-bottom;border-radius:2px;width:3px;height:1.1em;margin-left:2px;animation:1s ease-in-out infinite cursorPulse;display:inline-block}@keyframes cursorPulse{0%,to{opacity:.3}50%{opacity:.8}}.math-placeholder{color:var(--text-dim);opacity:.7;font-family:KaTeX_Math,Times New Roman,serif}div.math-placeholder{text-align:center;padding:.5em 0;display:block}.empty-state{justify-content:center;align-items:center;gap:var(--space-3);opacity:.4;user-select:none;flex-direction:column;height:100%;display:none}.chat-messages:empty~.empty-state,.empty-state.visible{display:flex}.empty-icon{font-size:48px;font-family:var(--font-display);color:var(--accent);text-shadow:0 0 20px color-mix(in oklch, var(--accent) 30%, transparent)}.empty-title{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:2px;color:var(--text);font-weight:700}.empty-subtitle{font-size:var(--text-sm);color:var(--text-dim)}.skeleton-msg{padding:var(--space-4);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-sm);background:var(--agent-bg);border:1px solid var(--border);max-width:65%}.skeleton-line{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--accent) 15%, var(--border)) 40%, var(--border) 80%);height:10px;margin-bottom:var(--space-2);background-size:300% 100%;border-radius:5px;animation:2s ease-in-out infinite shimmer}.skeleton-line:last-child{width:55%;margin-bottom:0}.skeleton-line:nth-child(2){width:80%;animation-delay:.15s}@keyframes shimmer{0%{background-position:300% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.msg-agent,.msg-user,.msg-system,.stream-cursor,.skeleton-line{animation:none}}.chat-input-area{padding:var(--space-3) var(--space-5);border-top:1px solid var(--border);gap:var(--space-2);z-index:1;animation:revealUp .35s var(--ease-out-expo) .3s both;display:flex;position:relative;box-shadow:0 -1px 3px #00000026}.chat-input-shell{flex:1;min-width:0;display:flex;position:relative}.chat-input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-mono);resize:none;max-height:192px;transition:height .1s ease, border-color var(--duration-fast), box-shadow var(--duration-base);flex:1;padding:10px 42px 10px 14px;overflow-y:auto}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--accent) 12%, transparent), 0 0 20px color-mix(in oklch, var(--accent) 8%, transparent);outline:none}.chat-input:disabled{opacity:.5}.chat-input-help-trigger{z-index:2;position:absolute;top:8px;right:10px}.btn-send{background:linear-gradient(135deg, var(--accent) 0%, var(--accent2) 100%);color:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-base);font-weight:700;font-family:var(--font-display);letter-spacing:.5px;transition:transform var(--duration-fast), box-shadow var(--duration-base), filter var(--duration-fast);border:none;padding:10px 18px;position:relative;overflow:visible}.btn-send:hover{box-shadow:0 4px 20px color-mix(in oklch, var(--accent) 45%, transparent), 0 0 40px color-mix(in oklch, var(--accent) 15%, transparent);filter:brightness(1.15);transform:translateY(-2px)}.btn-send:active{box-shadow:0 0 30px color-mix(in oklch, var(--accent) 50%, transparent);filter:brightness(1.3);transform:scale(.95)}.btn-send.stop-mode{background:var(--stop-btn);font-size:16px;transition:background .2s}.btn-send.stop-mode:hover{background:var(--stop-btn-hover)}.btn-send:disabled{opacity:.4;cursor:not-allowed}.btn-attach{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:10px 12px;font-size:16px;line-height:1;transition:border-color .2s,color .2s}.btn-attach:hover{border-color:var(--accent);color:var(--accent)}.drag-overlay{background:var(--error-dim);border:2px dashed var(--accent);z-index:100;color:var(--accent);pointer-events:none;border-radius:8px;justify-content:center;align-items:center;font-size:14px;display:none;position:absolute;inset:0}.drag-overlay.visible{display:flex}.pending-queue{border-top:1px solid var(--border);background:var(--surface);color:var(--text-dim);flex-direction:column;gap:2px;max-height:35vh;padding:4px 12px 6px;font-size:12px;display:none;overflow-y:auto}.pending-queue.visible{display:flex}.pending-queue-header{justify-content:space-between;align-items:center;padding:2px 4px;display:flex}.pending-queue-title{text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;font-size:10px;font-weight:600;display:inline-flex}.pending-queue-title svg{width:12px;height:12px}.pending-queue-count{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:0 6px;font-size:10px;line-height:1.4}.pending-queue-list{flex-direction:column;gap:2px;display:flex}.pending-row{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;min-height:26px;padding:3px 8px;line-height:1.4;animation:.15s ease-out msgEnterSystem;display:flex}.pending-row--busy{opacity:.5;pointer-events:none}.pending-row-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:auto;font-size:12px;overflow:hidden}.pending-row-source{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);border:1px solid var(--border);border-radius:8px;flex:none;padding:0 5px;font-size:10px}.pending-row-btn{cursor:pointer;color:var(--text-dim);isolation:isolate;background:0 0;border:1px solid #0000;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:2px 6px;transition:color .15s,background .15s,border-color .15s;display:inline-flex;position:relative;overflow:hidden}.pending-row-btn svg{width:14px;height:14px}.pending-btn-content{z-index:1;align-items:center;gap:4px;display:inline-flex;position:relative}.pending-steer-label{font-size:11px;font-weight:500}.pending-steer-arrow{font-size:12px;line-height:1}.pending-row-steer:hover{color:var(--accent);background:var(--surface)}.pending-row-delete:hover{color:var(--delete-color);background:var(--error-dim)}.pending-arm-fill{transform-origin:0;pointer-events:none;opacity:0;z-index:0;position:absolute;inset:0;transform:scaleX(0)}.pending-row-btn.armed{border-color:currentColor}.pending-row-steer.armed{color:var(--accent)}.pending-row-delete.armed{color:var(--delete-color)}.pending-row-steer.armed .pending-arm-fill{background:color-mix(in oklch, var(--accent) 28%, transparent)}.pending-row-delete.armed .pending-arm-fill{background:color-mix(in oklch, var(--delete-color) 28%, transparent)}.pending-row-btn.armed .pending-arm-fill{opacity:1;animation:3s linear forwards pendingArmFill}@keyframes pendingArmFill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.file-preview{border-top:1px solid var(--border);background:var(--surface);color:var(--text-dim);flex-direction:column;gap:6px;padding:6px 20px;font-size:12px;display:none}.file-preview.visible{display:flex}.file-preview-header{justify-content:space-between;align-items:center;display:flex}.file-preview-title-group{align-items:center;gap:6px;display:flex}.file-preview-title{text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.file-preview-clear{color:var(--delete-color);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:11px;transition:background .15s}.file-preview-clear:hover{background:var(--error-dim)}.file-preview-list{flex-wrap:wrap;gap:6px;display:flex}.file-chip{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;animation:.15s ease-out msgEnterSystem;display:inline-flex}.file-chip-thumb{border-radius:3px;height:24px}.file-chip-name{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.file-chip-remove{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:12px;line-height:1;transition:color .15s}.file-chip-remove:hover{color:var(--delete-color)}.btn-voice{border:1px solid var(--border);cursor:pointer;min-width:44px;min-height:44px;color:var(--text);background:0 0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:6px 10px;font-size:1.1rem;transition:all .2s;display:inline-flex}.btn-voice svg{width:20px;height:20px}.btn-voice:hover{border-color:var(--accent);background:var(--surface)}.btn-voice.recording{background:var(--error-dim);border-color:var(--error);animation:1.5s ease-in-out infinite pulse-recording}.btn-voice.arming{background:var(--surface);border-color:var(--accent);cursor:progress;opacity:.75}@keyframes pulse-recording{0%,to{box-shadow:0 0 0 0 color-mix(in oklch, var(--error) 40%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklch, var(--error) 0%, transparent)}}.voice-timer{font-family:var(--font-mono);color:var(--error);text-align:center;min-width:36px;font-size:11px;animation:1.5s ease-in-out infinite pulse-recording}.btn-voice-cancel{background:var(--error-dim);border:1px solid var(--error);cursor:pointer;min-width:44px;min-height:44px;color:var(--error);border-radius:8px;flex-shrink:0;padding:8px 12px;font-size:.9rem;transition:all .2s}.btn-voice-cancel:hover{background:color-mix(in oklch, var(--error) 30%, transparent)}.cmd-dropdown{background:var(--surface);border:1px solid var(--border);z-index:150;opacity:0;pointer-events:none;border-radius:10px 10px 0 0;max-height:280px;transition:opacity .15s ease-out,transform .15s ease-out;position:absolute;bottom:calc(100% + 2px);left:20px;right:20px;overflow-y:auto;transform:translateY(4px);box-shadow:0 -4px 14px #00000040}.cmd-dropdown.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.cmd-item{cursor:pointer;border-left:3px solid #0000;align-items:center;gap:10px;padding:9px 12px;display:flex}.cmd-item:hover,.cmd-item.selected{background:color-mix(in oklch, var(--accent) 10%, transparent)}.cmd-item.selected{border-left-color:var(--accent);scroll-margin-block:4px}.cmd-name{min-width:96px;color:var(--accent);font-weight:700;font-family:var(--font-mono);flex-shrink:0}.cmd-desc{min-width:0;color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.cmd-meta{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px;min-width:0;display:inline-flex}.cmd-chip{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;border-radius:6px;padding:1px 5px;font-size:11px;line-height:1.4}.cmd-risk-high{color:var(--error,#b42318)}.cmd-risk-medium{color:var(--warning,#925400)}.cmd-args{color:var(--text-dim);opacity:.8;white-space:nowrap;flex-shrink:0;font-size:11px}.cmd-empty{color:var(--text-dim);cursor:default;font-style:italic}.cmd-dropdown::-webkit-scrollbar{width:4px}.cmd-dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.cmd-recovery{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 80%, var(--bg));border-radius:8px;margin-top:8px;padding:8px}.cmd-recovery-label{color:var(--text-dim);margin-bottom:4px;font-size:11px;font-weight:700}.cmd-recovery-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;color:var(--text);font-family:var(--font-mono);margin:0;font-size:12px;line-height:1.45;overflow:auto}.cmd-recovery-suggestions{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.cmd-recovery-suggestions code{border:1px solid var(--border);color:var(--text-dim);border-radius:6px;padding:1px 5px;font-size:11px}.cmd-recovery-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.cmd-recovery-btn{border:1px solid var(--border);background:var(--surface);min-height:28px;color:var(--text);cursor:pointer;border-radius:6px;padding:3px 8px;font-size:12px}.cmd-recovery-btn:hover,.cmd-recovery-btn:focus-visible{border-color:var(--accent)}.typing-indicator{align-items:center;gap:4px;padding:8px 14px;display:none}.typing-indicator.active{display:flex}.typing-indicator .label{color:var(--text-dim);margin-right:6px;font-size:11px}.typing-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite bounce}.typing-dot:nth-child(3){animation-delay:.15s}.typing-dot:nth-child(4){animation-delay:.3s}.typing-dot:nth-child(5){animation-delay:.45s}@keyframes bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:.7;transform:translateY(-3px)}}.streaming-shimmer{background:linear-gradient(90deg, transparent, var(--accent), transparent);background-size:200% 100%;border-radius:2px;height:3px;animation:1.5s ease-in-out infinite streaming-shimmer}@keyframes streaming-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.status-badge{transition:background-color var(--duration-base) ease, scale .15s ease}.status-badge.status-running{animation:none}.status-badge.status-running:before{content:"";background:var(--status-running-color,var(--warning));border-radius:50%;width:6px;height:6px;margin-right:4px;animation:1.5s ease-in-out infinite dotPing;display:inline-block}.status-badge.status-idle{opacity:.7;animation:none}::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}@supports (animation-timeline:view()){.chat-messages:not(.vs-active) .msg{animation:linear both scroll-fade-in view();animation-range:entry entry 30%}@keyframes scroll-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}.file-path-link{cursor:pointer;color:var(--accent);text-underline-offset:3px;border-radius:2px;margin:0 -2px;padding:0 2px;text-decoration:underline 1px dotted;transition:background .15s,text-decoration-style .15s}.file-path-link:hover,.file-path-link:focus-visible{background:color-mix(in oklch, var(--accent) 12%, transparent);outline:none;text-decoration-style:solid}.file-path-link:active{background:color-mix(in oklch, var(--accent) 20%, transparent)}.file-path-link.opening{opacity:.6;animation:.6s ease-in-out infinite alternate file-path-pulse}.file-path-link.opened{background:oklch(72.2746% .192007 149.579/.15);text-decoration-color:#22c55e}.file-path-link.open-failed{background:oklch(63.6834% .207849 25.3313/.15);text-decoration-style:wavy;text-decoration-color:#ef4444}@keyframes file-path-pulse{0%{opacity:.6}to{opacity:1}}.chat-search-trigger{cursor:pointer;border-radius:var(--radius-sm);opacity:.6;transition:opacity var(--duration-fast);background:0 0;border:none;padding:2px 4px;font-size:14px;line-height:1}.chat-search-trigger:hover{opacity:1}.chat-search{align-items:center;display:none;position:relative}.chat-search.open{flex-direction:column;display:flex}.chat-search-input-wrap{align-items:center;gap:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);min-width:260px;transition:border-color var(--duration-fast);display:flex}.chat-search-input-wrap:focus-within{border-color:var(--accent)}.chat-search-icon{opacity:.5;font-size:var(--text-sm);flex-shrink:0}.chat-search-icon:before{content:"🔍";font-size:12px}.chat-search-input{color:var(--text);font-family:var(--font-ui);font-size:var(--text-sm);background:0 0;border:none;outline:none;width:100%;min-width:160px}.chat-search-input::placeholder{color:var(--text-dim)}.chat-search-count{font-size:var(--text-xs);color:var(--text-dim);white-space:nowrap;flex-shrink:0}.chat-search-close{color:var(--text-dim);cursor:pointer;font-size:var(--text-base);padding:0 var(--space-1);transition:color var(--duration-fast);background:0 0;border:none;line-height:1}.chat-search-close:hover{color:var(--text)}.chat-search-results{z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:var(--space-1);overscroll-behavior:contain;width:380px;max-height:320px;display:none;position:absolute;top:100%;right:0;overflow-y:auto;box-shadow:0 4px 16px #0000004d}.chat-search-results.has-results{display:block}.chat-search-result{padding:var(--space-2) var(--space-3);cursor:pointer;border-bottom:1px solid var(--border);transition:background var(--duration-fast);flex-direction:column;gap:2px;display:flex}.chat-search-result:last-child{border-bottom:none}.chat-search-result:hover,.chat-search-result.active{background:oklch(15% .02 270)}.chat-search-result-meta{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-dim);display:flex}.chat-search-result-role{text-transform:uppercase;letter-spacing:.5px;font-weight:600}.chat-search-result-role.user{color:var(--accent)}.chat-search-result-role.agent{color:var(--green)}.chat-search-result-badge{border-radius:var(--radius-sm);background:var(--warning-dim);color:var(--warning);padding:1px 5px;font-size:10px}.chat-search-result-snippet{font-size:var(--text-sm);color:var(--text);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.chat-search-result-snippet mark{color:var(--warning);background:oklch(78% .16 75/.3);border-radius:2px;padding:0 1px}.msg.search-highlight{animation:1.5s ease-out searchPulse}@keyframes searchPulse{0%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px #0000}}@media (prefers-reduced-motion:reduce){.msg.search-highlight{box-shadow:inset 0 0 0 2px var(--accent);animation:none}}#chatMessages{transition:box-shadow .4s,border-color .4s}body[data-orc-state] #chatMessages{box-shadow:inset 0 0 30px -10px var(--orc-glow);border-color:var(--orc-glow)}body[data-orc-state] .chat-input-area{border-top:2px solid var(--orc-glow)}body:not([data-orc-state]) .chat-input-area{border-top:2px solid #0000;transition:border-color .4s}@keyframes orc-pulse{0%{box-shadow:inset 0 0 60px -10px var(--orc-glow)}50%{box-shadow:inset 0 0 20px -10px var(--orc-glow)}to{box-shadow:inset 0 0 30px -10px var(--orc-glow)}}body[data-orc-state].orc-pulse #chatMessages{animation:.6s ease-out orc-pulse}.orc-state-badge{font-size:10px;font-weight:700;font-family:var(--font-mono);letter-spacing:1px;background:color-mix(in oklch, var(--orc-glow) 20%, var(--surface));color:var(--orc-glow);border:1px solid var(--orc-glow);text-transform:uppercase;border-radius:4px;padding:2px 8px;display:inline-block}.pabc-roadmap{background:linear-gradient(135deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 90%, #000) 100%);border:1px solid var(--border);border-radius:10px;align-items:center;padding:12px 22px;display:none;position:relative;overflow:visible;box-shadow:0 2px 16px #0000004d,inset 0 1px #ffffff08}.pabc-roadmap.visible{animation:.5s cubic-bezier(.22,1,.36,1) pabc-fadeSlideIn;display:flex}@keyframes pabc-fadeSlideIn{0%{opacity:0;transform:translateY(-12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.pabc-dot{width:26px;height:26px;font-family:var(--font-display,var(--font-mono));z-index:2;letter-spacing:.5px;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:700;transition:all .5s cubic-bezier(.22,1,.36,1);display:flex}.pabc-dot.future{background:var(--surface);color:var(--text-dim);border:1px solid var(--border)}.pabc-dot.active{color:var(--bg);border:2px solid;transform:scale(1.1);box-shadow:0 0 14px -3px,0 0 4px -1px}.pabc-dot.done{color:color-mix(in oklch, var(--bg) 90%, transparent);border:1px solid color-mix(in oklch, var(--text) 10%, transparent);opacity:.65}.pabc-dot[data-phase=I].active,.pabc-dot[data-phase=I].done{background:var(--orc-glow-I)}.pabc-dot[data-phase=P].active,.pabc-dot[data-phase=P].done{background:var(--orc-glow-P)}.pabc-dot[data-phase=A].active,.pabc-dot[data-phase=A].done{background:var(--orc-glow-A)}.pabc-dot[data-phase=B].active,.pabc-dot[data-phase=B].done{background:var(--orc-glow-B)}.pabc-dot[data-phase=C].active,.pabc-dot[data-phase=C].done{background:var(--orc-glow-C)}.pabc-connector{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--border) 60%, var(--surface)) 50%, var(--border) 100%);border-radius:1px;flex:1;min-width:44px;height:2px;transition:all .5s}.pabc-connector.done{background:linear-gradient(90deg, var(--text-dim) 0%, color-mix(in oklch, var(--text-dim) 70%, var(--surface)) 50%, var(--text-dim) 100%);box-shadow:0 0 6px -2px var(--text-dim)}.pabc-center{flex-direction:column;flex-shrink:0;align-items:center;padding:0 20px;display:flex}.pabc-brand{font-family:var(--font-display,var(--font-mono));letter-spacing:4px;background:linear-gradient(90deg, var(--orc-glow-I), var(--orc-glow-P), var(--orc-glow-A), var(--orc-glow-B), var(--orc-glow-C));-webkit-text-fill-color:transparent;filter:brightness(1.1);background-clip:text;font-size:13px;font-weight:700}.pabc-tagline{font-family:var(--font-mono);color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;opacity:.7;margin-top:2px;font-size:7px}.shark-runner{z-index:10;pointer-events:none;filter:drop-shadow(0 2px 4px #0006);background:url(/dist/assets/shark-sprite-B3AAuERd.png) 0 0/360px 24px no-repeat;width:36px;height:24px;transition:left 1.4s cubic-bezier(.25,.46,.45,.94);display:none;position:absolute;top:-13px;left:0}.shark-runner.running{animation:1s steps(10,end) infinite shark-run;display:block}@keyframes shark-run{to{background-position:-360px 0}}@keyframes pabc-shimmer{0%{opacity:1;filter:brightness()}25%{opacity:1;filter:brightness(1.4);box-shadow:0 0 24px #a855f733}to{opacity:0;transform:translateY(-8px)scale(.98)}}.pabc-roadmap.shimmer-out{animation:1s ease-out forwards pabc-shimmer}.pabc-meta{min-height:22px;font-family:var(--font-mono);color:var(--text-dim);align-items:center;gap:8px;padding:4px 18px 0;font-size:10px;display:flex}.pabc-meta span[hidden]{display:none}.pabc-anchor,.pabc-heartbeat-status{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 88%, var(--text) 12%);border-radius:4px;max-width:min(42vw,420px);padding:3px 7px;overflow:hidden}.pabc-heartbeat-status{color:var(--orc-glow-A);border-color:color-mix(in oklch, var(--orc-glow-A) 45%, var(--border))}[data-theme=light] .pabc-roadmap{background:linear-gradient(135deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 90%, #000) 100%);box-shadow:0 2px 12px #00000014,inset 0 1px #fff9}[data-theme=light] .pabc-dot.future{background:var(--surface);color:var(--text-dim)}[data-theme=light] .pabc-dot.active{color:var(--bg)}[data-theme=light] .pabc-dot.done{color:var(--bg);border-color:#0000000f}[data-theme=light] .pabc-connector{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--border) 60%, var(--surface)) 50%, var(--border) 100%)}[data-theme=light] .pabc-connector.done{background:linear-gradient(90deg, var(--text-dim) 0%, color-mix(in oklch, var(--text-dim) 70%, var(--surface)) 50%, var(--text-dim) 100%);box-shadow:none}[data-theme=light] .shark-runner{filter:drop-shadow(0 1px 2px #00000026)}.interview-panel{gap:16px;max-width:600px;margin:0 auto 8px;font-size:.82rem;display:flex}.interview-panel[hidden]{display:none}.iv-section{flex:1}.iv-section ul{margin:4px 0;padding:0;list-style:none}.iv-known:before{content:"✓ ";color:var(--accent-green,#4caf50)}.iv-unknown:before{content:"? ";color:var(--accent-yellow,#ff9800)}.iv-round{opacity:.6;align-self:flex-end;font-size:.75rem}.goal-cockpit{font-family:var(--font-mono);background:color-mix(in oklch, var(--surface) 92%, var(--orc-glow-I) 8%);border-bottom:1px solid var(--border);align-items:center;gap:8px;min-height:0;padding:6px 16px;font-size:11px;display:flex;overflow:hidden}.goal-cockpit[hidden]{display:none}.goal-objective{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1 1 0;font-weight:600;overflow:hidden}.goal-status{text-transform:uppercase;letter-spacing:.5px;border-radius:3px;flex-shrink:0;padding:1px 6px;font-size:9px;font-weight:700}.goal-status--active{background:color-mix(in oklch, var(--orc-glow-P) 20%, var(--surface));color:var(--orc-glow-P);border:1px solid var(--orc-glow-P)}.goal-status--paused{background:color-mix(in oklch, var(--orc-glow-A) 20%, var(--surface));color:var(--orc-glow-A);border:1px solid var(--orc-glow-A)}.goal-status--blocked{background:color-mix(in oklch, oklch(65% .2 30) 20%, var(--surface));color:oklch(65% .2 30);border:1px solid oklch(65% .2 30)}.goal-next{text-overflow:ellipsis;white-space:nowrap;max-width:min(30vw,280px);color:var(--text-dim);flex-shrink:0;font-size:10px;overflow:hidden}[data-theme=light] .goal-cockpit{background:color-mix(in oklch, var(--surface) 95%, var(--orc-glow-I) 5%)}.cli-status-header{cursor:pointer;user-select:none;justify-content:space-between;align-items:center;display:flex}.cli-status-header:after{content:"▸";color:var(--text-dim);margin-left:8px;font-size:12px}.cli-status-header.expanded:after{content:"▾"}.cli-status-row{align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.cli-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.cli-dot.ok{background:var(--green)}.cli-dot.warn{background:var(--warning);animation:2s ease-in-out infinite pulse-warn}@keyframes pulse-warn{0%,to{opacity:1}50%{opacity:.5}}.cli-dot.missing{background:var(--error)}.cli-provider-icon{flex-shrink:0;align-items:center;width:16px;height:16px;display:inline-flex}.cli-provider-icon svg{width:100%;height:100%}.cli-name{flex:1}.cli-path{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:10px;overflow:hidden}.settings-group{border:1px solid var(--border);border-radius:6px;padding:10px;transition:border-color .2s}.settings-group:hover{border-color:color-mix(in oklch, var(--border) 60%, var(--accent))}.settings-group h4{color:var(--text-dim);font-size:11px;font-family:var(--font-display);letter-spacing:.5px;align-items:center;gap:4px;margin-bottom:8px;display:flex}.settings-row{margin-bottom:6px}.settings-row:last-child{margin-bottom:0}.sub-row{border-left:2px solid var(--border);padding-left:8px}.perm-toggle{gap:8px;display:flex}.perm-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;text-align:center;background:0 0;border-radius:6px;flex:1;padding:6px;font-family:inherit;font-size:11px}.perm-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 10%, var(--bg))}.channel-transport-status .transport-status-block+.transport-status-block{margin-top:10px}.transport-status-label{color:var(--text-dim);margin-bottom:4px;font-size:11px}.transport-status-chips{flex-wrap:wrap;gap:6px;display:flex}.transport-status-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;align-items:center;padding:2px 8px;font-size:10px;display:inline-flex}.transport-status-hint{color:var(--text-dim);margin:6px 0 0;font-size:10px;line-height:1.4}textarea.prompt-editor{background:var(--bg);border:1px solid var(--border);width:100%;height:120px;color:var(--text);resize:vertical;border-radius:6px;padding:8px;font-family:inherit;font-size:11px}.skill-search{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;width:100%;margin-bottom:8px;padding:6px 9px;transition:border-color .2s,box-shadow .2s;display:flex}.skill-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklch, var(--accent) 14%, transparent)}.skill-search-icon{width:14px;height:14px;color:var(--text-dim);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.skill-search-input{width:100%;min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:0;font-size:11px}.skill-search-input::placeholder{color:var(--text-dim)}.skill-filter{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:12px;padding:4px 10px;font-family:inherit;font-size:10px}.skill-filter.active{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 10%, var(--bg))}.skill-empty{color:var(--text-dim);text-align:center;padding:12px 4px;font-size:11px}.skill-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:8px;padding:10px;transition:border-color .2s,transform .15s,box-shadow .15s}.skill-card:hover{border-color:var(--accent2);transform:translateY(-1px);box-shadow:0 2px 8px #0003}.skill-card.enabled{border-left:3px solid var(--green)}.skill-card-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.skill-emoji{flex-shrink:0;align-items:center;width:20px;height:20px;font-size:16px;display:inline-flex}.skill-name{flex:1;font-size:12px;font-weight:600}.skill-toggle{width:var(--toggle-w);height:var(--toggle-h);border-radius:calc(var(--toggle-h) / 2);cursor:pointer;border:none;transition:background .2s;position:relative}.skill-toggle.on{background:var(--green)}.skill-toggle.off{background:var(--toggle-off)}.skill-toggle:after{content:"";top:calc((var(--toggle-h) - var(--toggle-knob)) / 2);width:var(--toggle-knob);height:var(--toggle-knob);background:var(--toggle-on);border-radius:50%;transition:left .2s;position:absolute}.skill-toggle.on:after{left:calc(var(--toggle-w) - var(--toggle-knob) - (var(--toggle-h) - var(--toggle-knob)) / 2)}.skill-toggle.off:after{left:calc((var(--toggle-h) - var(--toggle-knob)) / 2)}.skill-desc{color:var(--text-dim);margin-bottom:4px;font-size:11px;line-height:1.4}.skill-req{color:var(--accent2);font-size:10px}.custom-model-input{background:var(--surface);width:100%;color:var(--text);border:1px solid var(--accent);font-size:11px;font-family:var(--font-mono);border-radius:4px;margin-top:4px;padding:4px 6px}.custom-model-input:focus{border-color:var(--accent2);outline:none}.cwd-display{font-family:var(--font-mono);color:var(--text-dim);background:var(--bg);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:6px 8px;font-size:11px;display:block;overflow:hidden}.settings-fieldset{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3)}.settings-fieldset legend{font-weight:600;font-size:var(--text-sm);padding:0 var(--space-2);color:var(--text)}.modal-overlay{background:var(--modal-bg);-webkit-backdrop-filter:blur(10px)saturate(1.2);z-index:999;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.open{animation:.2s ease-out overlayIn;display:flex}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal-box{background:color-mix(in oklch, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(24px)saturate(1.5);border:1px solid color-mix(in oklch, var(--accent) 10%, var(--border));border-radius:var(--radius-xl);box-shadow:0 16px 48px #00000080, 0 0 0 1px #ffffff0a inset, 0 0 60px -20px color-mix(in oklch, var(--accent) 6%, transparent);width:500px;max-width:90vw;max-height:80vh;animation:modalBounce .35s var(--ease-spring);flex-direction:column;display:flex}@keyframes modalBounce{0%{opacity:0;transform:translateY(24px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;font-size:13px;font-weight:600;display:flex}.modal-textarea{background:var(--bg);min-height:250px;color:var(--text);resize:none;border:none;flex:1;padding:12px 16px;font-family:inherit;font-size:12px}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:10px 16px;display:flex}.modal-footer .btn-save{width:auto;padding:6px 20px}.label-with-help,.section-title-row,.sidebar-action-row{align-items:center;gap:6px;display:flex}.label-with-help,.section-title-row{justify-content:space-between}.sidebar-action-row .sidebar-hb-btn{flex:1}.help-trigger{--help-trigger-visual-size:20px;--help-trigger-hit-size:44px;width:var(--help-trigger-visual-size);height:var(--help-trigger-visual-size);min-width:var(--help-trigger-visual-size);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);cursor:pointer;opacity:.78;border-radius:999px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11px;line-height:1;transition:border-color .15s,color .15s,background .15s,opacity .15s;display:inline-flex}.help-trigger:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 8%, transparent);opacity:1}.help-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px;opacity:1}.help-dialog-box{background:var(--surface);-webkit-backdrop-filter:none;width:640px;max-width:calc(100vw - 32px);max-height:min(80vh,640px)}.help-dialog-body{padding:14px 16px;overflow-y:auto}.help-dialog-content{min-width:0}.help-dialog-layout{grid-template-columns:minmax(132px,.34fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.help-dialog-nav{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);flex-direction:column;gap:4px;padding:4px;display:flex}.help-dialog-nav-item{border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:8px 9px;font-size:12px;line-height:1.3}.help-dialog-nav-item:hover,.help-dialog-nav-item.active{background:color-mix(in oklch, var(--accent) 10%, transparent);color:var(--text)}.help-dialog-nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.help-dialog-section{margin-bottom:14px}.help-dialog-section:last-child{margin-bottom:0}.help-dialog-section h3{color:var(--text);margin:0 0 6px;font-size:12px;font-weight:600}.help-dialog-section p,.help-dialog-section li{color:var(--text-dim);font-size:12px;line-height:1.55}.help-effect-text,.help-example-list{margin:0}.help-dialog-list,.help-related-list,.help-example-list{margin:0;padding-left:18px}.help-howto-list{margin:0;padding-left:1.6em;list-style:decimal}.help-howto-list li{margin-bottom:3px;line-height:1.5}.help-dialog-done{width:auto;padding:6px 18px}.help-doc-links-nav{flex-wrap:wrap;gap:8px;margin-bottom:4px;display:flex}.help-doc-link{background:var(--accent,#22d3ee);color:var(--surface,#1a1a2e);border-radius:6px;align-items:center;gap:4px;padding:6px 14px;font-size:.85rem;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-flex}.help-doc-link:hover{opacity:.85}.help-doc-link-icon{opacity:.7;font-size:.75rem}@media (width<=768px){.help-trigger{width:var(--help-trigger-visual-size);height:var(--help-trigger-visual-size);min-width:var(--help-trigger-visual-size);position:relative}.help-trigger:before{content:"";inset:calc((var(--help-trigger-visual-size) - var(--help-trigger-hit-size)) / 2);position:absolute}.help-dialog-box{max-width:calc(100vw - 24px);max-height:min(84vh,640px)}.help-dialog-layout{grid-template-columns:1fr;gap:12px}.help-dialog-nav{flex-direction:row;overflow-x:auto}.help-dialog-nav-item{white-space:nowrap}}.hb-job-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:8px;padding:10px}.hb-job-header{align-items:center;gap:6px;margin-bottom:6px;display:flex}.hb-job-header input[type=text]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;flex:1;padding:4px 6px;font-size:11px}.hb-job-header select,.hb-job-header input[type=number]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:4px;font-size:11px}.hb-job-header input[type=number]{width:50px}.hb-job-schedule{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.hb-job-schedule select,.hb-job-schedule input[type=number],.hb-job-schedule input[type=text]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:4px 6px;font-size:11px}.hb-job-schedule input[type=number]{width:72px}.hb-job-schedule input[type=text]{flex:120px}.hb-chip{color:var(--text-dim);font-size:11px}.hb-schedule-meta{margin:-2px 0 6px;font-size:11px}.hb-help{color:var(--text-dim)}.hb-error{color:var(--error)}.hb-toggle{width:var(--toggle-w);height:var(--toggle-h);border-radius:calc(var(--toggle-h) / 2);cursor:pointer;border:none;transition:background .2s;position:relative}.hb-toggle.on{background:var(--accent)}.hb-toggle.off{background:var(--toggle-off)}.hb-toggle:after{content:"";top:calc((var(--toggle-h) - var(--toggle-knob)) / 2);width:var(--toggle-knob);height:var(--toggle-knob);background:var(--toggle-on);border-radius:50%;transition:left .2s;position:absolute}.hb-toggle.on:after{left:calc(var(--toggle-w) - var(--toggle-knob) - 2px)}.hb-toggle.off:after{left:2px}.hb-del{color:var(--delete-color);cursor:pointer;background:0 0;border:none;font-size:14px}.hb-prompt{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);resize:vertical;border-radius:4px;padding:4px 6px;font-size:11px}.hb-add{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;margin-top:4px;padding:8px;font-size:12px}.hb-add:hover{opacity:.9}.table-wrapper{margin:var(--space-3) 0;border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.table-wrapper table{border-collapse:collapse;width:100%;font-size:var(--text-sm);border:none;margin:0}.table-wrapper th,.table-wrapper td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border)}.table-wrapper th{background:color-mix(in oklch, var(--accent) 8%, var(--surface));white-space:nowrap;border-bottom:2px solid color-mix(in oklch, var(--accent) 25%, var(--border));font-weight:600}.table-wrapper tr:nth-child(2n) td{background:color-mix(in oklch, var(--text) 2%, transparent)}.msg-content table{border-collapse:collapse;width:auto;font-size:var(--text-sm);border:1px solid var(--border);margin:8px 0}.msg-content th,.msg-content td{border:1px solid var(--border);text-align:left;padding:5px 12px}.msg-content th{background:color-mix(in oklch, var(--accent) 8%, var(--surface));white-space:nowrap;border-bottom:2px solid var(--border);font-weight:600}.msg-content tr:nth-child(2n){background:color-mix(in oklch, var(--text) 2%, transparent)}.code-block{border:1px solid var(--border);border-radius:var(--radius-md);margin:var(--space-3) 0;overflow:hidden}.code-header{padding:var(--space-1) var(--space-3);background:color-mix(in oklch, var(--text) 8%, var(--surface));border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);letter-spacing:.5px;justify-content:space-between;align-items:center;display:flex}.code-copy-btn{align-items:center;gap:var(--space-1);color:var(--text-dim);cursor:pointer;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-family:var(--font-mono);transition:color var(--duration-fast), background var(--duration-fast);opacity:0;background:0 0;border:none;display:flex}.code-block:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{color:var(--text);background:color-mix(in oklch, var(--text) 8%, transparent)}.code-copy-btn.copied{color:var(--success)}.code-block pre{padding:var(--space-3) var(--space-4);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:0;margin:0;line-height:1.5;overflow-x:auto}.code-block pre code{font-family:var(--font-mono);background:0 0;border-radius:0;padding:0}.msg-content pre:not(.code-block pre){background:var(--code-bg);border-radius:var(--radius-md);font-size:var(--text-sm);margin:8px 0;padding:12px;line-height:1.45;overflow-x:auto}.msg-content pre:not(.code-block pre) code{font-family:var(--font-mono);background:0 0;border-radius:0;padding:0}.msg-content .code-block pre{padding:var(--space-3) var(--space-4);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:0;margin:0;line-height:1.5;overflow-x:auto}.msg-content code:not(pre code){font-family:var(--font-mono);background:color-mix(in oklch, var(--accent) 6%, var(--surface));padding:1px var(--space-1);border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text);word-break:break-word;overflow-wrap:break-word;font-size:.875em}.msg-content blockquote{border-left:3px solid var(--accent);color:var(--text-dim);background:color-mix(in oklch, var(--text) 2%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:8px 0;padding:4px 12px}.msg-content ul,.msg-content ol{margin:4px 0;padding-left:20px}.msg-content li{margin:2px 0}.msg-content a{color:var(--link-color);text-decoration:none}.msg-content a:hover{text-decoration:underline}.msg-content hr{border:none;border-top:1px solid var(--border);margin:12px 0}.msg-content h1{font-size:var(--text-xl);margin:var(--space-5) 0 var(--space-2);letter-spacing:-.02em;color:var(--text);font-weight:700;line-height:1.3}.msg-content h2{font-size:var(--text-lg);margin:var(--space-4) 0 var(--space-2);letter-spacing:-.01em;color:var(--text);font-weight:600}.msg-content h3{font-size:var(--text-md);margin:var(--space-3) 0 var(--space-1);color:var(--text);font-weight:600}.msg-content h4,.msg-content h5,.msg-content h6{font-size:var(--text-base);margin:var(--space-2) 0 var(--space-1);color:var(--text-dim);font-weight:600}.msg-content p{margin:.75em 0}.msg-content p:first-child{margin-top:0}.msg-content p:last-child{margin-bottom:0}.msg-content .katex-display{margin:var(--space-3) 0;padding:var(--space-2) 0;overflow:auto hidden}.msg-content .katex{font-size:1em}.msg-content .katex-display>.katex{font-size:1.1em}.msg-content .mermaid-container{text-align:center;background:color-mix(in oklch, var(--surface) 60%, transparent);border:1px solid var(--border);border-radius:var(--radius-lg);margin:8px 0;padding:16px 12px;position:relative;overflow-x:auto}.msg-content .mermaid-container svg{max-width:100%}.mermaid-skeleton{color:var(--text-dim);justify-content:center;align-items:center;gap:12px;padding:24px 12px;display:flex}.mermaid-skeleton-spinner{border:2px solid color-mix(in oklch, var(--text) 15%, transparent);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite mermaid-spin}.mermaid-skeleton-text{font-size:13px;font-style:italic}@keyframes mermaid-spin{to{transform:rotate(360deg)}}.mermaid-zoom-btn{background:color-mix(in oklch, var(--text) 10%, transparent);border:1px solid color-mix(in oklch, var(--text) 15%, transparent);color:var(--text-dim);border-radius:var(--radius-md);cursor:pointer;width:28px;height:28px;transition:background var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;top:6px;right:6px}.mermaid-zoom-btn:hover{background:color-mix(in oklch, var(--text) 20%, transparent);color:var(--text)}.mermaid-copy-btn,.mermaid-save-btn{background:color-mix(in oklch, var(--text) 10%, transparent);border:1px solid color-mix(in oklch, var(--text) 15%, transparent);color:var(--text-dim);border-radius:var(--radius-md);cursor:pointer;opacity:0;pointer-events:none;width:28px;height:28px;transition:opacity var(--duration-fast), background var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;top:6px}.mermaid-copy-btn{right:38px}.mermaid-save-btn{right:70px}.mermaid-container:hover .mermaid-zoom-btn,.mermaid-container:hover .mermaid-copy-btn,.mermaid-container:hover .mermaid-save-btn{opacity:1;pointer-events:auto}.mermaid-copy-btn:hover,.mermaid-save-btn:hover{background:color-mix(in oklch, var(--text) 20%, transparent);color:var(--text)}.mermaid-copy-btn.copied,.mermaid-save-btn.copied{color:var(--success)}.mermaid-overlay{z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mermaid-overlay-backdrop{backdrop-filter:blur(6px);background:#000000bf;position:absolute;inset:0}.mermaid-overlay-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:95vw;max-height:95vh;padding:20px;animation:.2s ease-out mermaid-pop;position:relative;overflow:auto;box-shadow:0 20px 60px #00000080}@keyframes mermaid-pop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.mermaid-overlay-close{background:color-mix(in oklch, var(--text) 15%, transparent);color:var(--text);border-radius:var(--radius-lg);cursor:pointer;width:36px;height:36px;transition:background var(--duration-fast);z-index:10;pointer-events:auto;border:none;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:8px;right:8px}.mermaid-overlay-close:hover{background:color-mix(in oklch, var(--text) 30%, transparent);color:var(--text)}.mermaid-overlay-svg{z-index:0;justify-content:center;align-items:center;min-width:min(400px,90vw);min-height:200px;display:flex;position:relative}.msg-content .code-block-wrapper{position:relative}.msg-content .code-lang-label{font-size:var(--text-xs);color:var(--code-label-color);background:color-mix(in oklch, var(--text) 5%, transparent);border-radius:0 var(--radius-md) 0 var(--radius-sm);font-family:var(--font-mono);cursor:pointer;user-select:none;transition:background var(--duration-fast), transform var(--duration-fast), color var(--duration-fast);padding:2px 8px;position:absolute;top:0;right:0}.msg-content .code-lang-label:hover{background:color-mix(in oklch, var(--text) 12%, transparent);transform:scale(1.05)}.msg-content .code-lang-label.copied{color:var(--success)}.mermaid-error{border:1px solid var(--error);border-radius:var(--radius-md);padding:var(--space-2);margin:var(--space-1) 0}.mermaid-error-title{color:var(--error);font-size:var(--text-xs);margin-bottom:var(--space-1)}.mermaid-error-msg{color:var(--warning);font-size:var(--text-xs);margin-bottom:var(--space-2)}.mermaid-error-code{font-size:var(--text-xs);margin:0;overflow-x:auto}.tool-group{margin:0 0 var(--space-3);font-size:var(--text-sm)}.tool-group-summary{align-items:center;gap:var(--space-2);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-dim);cursor:pointer;padding:var(--space-1) var(--space-3);font-family:var(--font-ui);font-size:var(--text-xs);transition:color var(--duration-fast), border-color var(--duration-fast);text-align:left;background:0 0;width:100%;display:flex}.tool-group-summary:hover{color:var(--text);border-color:color-mix(in oklch, var(--accent) 40%, var(--border))}.tool-group-summary-text{flex:1}.tool-group-duration{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim)}.tool-group-chevron{font-size:var(--text-xs);transition:transform var(--duration-fast);display:inline-block}.tool-group.expanded .tool-group-chevron{transform:rotate(180deg)}.tool-status-dot,.tool-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.tool-status-dot.running,.tool-dot.running{background:var(--warning);animation:1.5s ease-in-out infinite toolDotPulse}.tool-status-dot.done,.tool-dot.done{background:var(--success)}.tool-dot.pending{background:var(--text-dim);opacity:.5}.tool-status-dot.error,.tool-dot.error{background:var(--error)}@keyframes toolDotPulse{0%,to{opacity:1}50%{opacity:.4}}.tool-details{max-height:2000px;transition:max-height var(--duration-slow) ease-out, opacity var(--duration-base);padding-left:var(--space-4);border-left:1px solid var(--border);margin-left:var(--space-1);margin-top:var(--space-1);overflow:hidden}.tool-details.collapsed{opacity:0;pointer-events:none;max-height:0;margin-top:0}.tool-item{padding:var(--space-1) 0}.tool-item+.tool-item{border-top:1px solid color-mix(in oklch, var(--border) 50%, transparent)}.tool-item-header{align-items:center;gap:var(--space-2);font-size:var(--text-xs);display:flex}.tool-item-icon{flex-shrink:0}.tool-item-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tool-item-toggle{align-items:start;gap:var(--space-2);width:100%;color:inherit;text-align:left;cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;padding:0;display:grid}.tool-item-main{gap:2px;min-width:0;display:grid}.tool-item-expandable .tool-item-label{white-space:normal;word-break:break-word}.tool-item-snippet{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);word-break:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tool-item-chevron{color:var(--text-dim);transition:transform var(--duration-fast);font-size:10px}.tool-item.expanded .tool-item-chevron{transform:rotate(90deg)}.tool-item-details{border-left:1px solid color-mix(in oklch, var(--border) 70%, transparent);background:color-mix(in oklch, var(--surface) 70%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-left:22px;padding:8px 10px}.tool-item-details.collapsed{display:none}.tool-item-full{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:260px;margin:0;overflow-x:auto}.tool-item-time{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);flex-shrink:0}.tool-activity-live{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--text-dim);border:1px dashed var(--border);border-radius:var(--radius-md);margin-bottom:var(--space-2);animation:.2s ease-out msgEnterAgent;display:flex}.tool-activity-live .tool-status-dot{background:var(--warning);animation:1.5s ease-in-out infinite toolDotPulse}.tool-summary{font-size:var(--text-xs);color:var(--text-dim);margin-bottom:var(--space-2);border:1px dashed var(--border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3)}.tool-summary summary{cursor:pointer;user-select:none;align-items:center;gap:var(--space-1);display:flex}.tool-summary summary:before{content:"";background:var(--success);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.tool-summary .tool-log{margin-top:var(--space-1);padding-top:var(--space-1);border-top:1px dashed var(--border);white-space:pre-wrap;line-height:1.6;font-family:var(--font-mono)}.vs-active .tool-details{transition:none}@media (prefers-reduced-motion:reduce){.tool-status-dot.running,.tool-dot.running,.tool-activity-live .tool-status-dot{animation:none}}.process-block{margin:0 0 var(--space-1);font-size:var(--text-sm);white-space:normal;line-height:1.3}.process-block+.msg-content .orchestrate-placeholder{display:none}.orchestrate-placeholder{font-size:var(--text-xs);opacity:.6}.process-summary{align-items:center;gap:var(--space-2);background:color-mix(in oklch, var(--surface) 50%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-dim);cursor:pointer;padding:var(--space-1) var(--space-3);font-size:var(--text-xs);transition:border-color var(--duration-fast);display:flex}.process-summary:hover{border-color:color-mix(in oklch, var(--accent) 40%, var(--border))}.process-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.process-dot.running{background:var(--warning);will-change:opacity;animation:1.5s ease-in-out infinite processDotPulse}.process-dot.done{background:var(--success)}@keyframes processDotPulse{0%,to{opacity:1}50%{opacity:.4}}.process-summary-text{text-align:left;flex:1}.process-duration{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim)}.process-chevron{color:var(--text-dim);transition:transform var(--duration-fast);font-size:10px}.process-details{padding-left:var(--space-3);border-left:1px solid var(--border);transition:grid-template-rows var(--duration-slow);grid-template-rows:1fr;margin-top:2px;margin-left:3px;display:grid}.process-block.collapsed .process-details{grid-template-rows:0fr}.process-details>.process-steps-inner{overflow:hidden}.process-step{font-size:var(--text-xs);gap:4px;padding:2px 0;display:grid}.process-step-toggle{align-items:start;gap:var(--space-2);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 16px auto minmax(0,1fr) auto auto;padding:0;display:grid}.process-step-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.process-step-dot.running{background:var(--warning);animation:1.5s ease-in-out infinite processDotPulse}.process-step-dot.done{background:var(--success)}.process-step-dot.error{background:var(--error)}.process-step-icon{width:16px;height:16px;color:var(--text-dim);justify-content:center;align-items:center;display:flex}.process-step-icon svg{width:14px;height:14px}.process-step-badge{letter-spacing:.5px;text-transform:uppercase;font-size:9px;font-weight:700;font-family:var(--font-mono);border-radius:3px;padding:1px 5px}.process-step-badge.thinking{background:color-mix(in oklch, var(--accent) 15%, transparent);color:var(--accent)}.process-step-badge.tool{background:color-mix(in oklch, var(--warning) 15%, transparent);color:var(--warning)}.process-step-badge.search{background:color-mix(in oklch, var(--success) 15%, transparent);color:var(--success)}.process-step-badge.subagent{background:color-mix(in oklch, var(--accent) 12%, transparent);color:var(--accent)}.process-step-main{gap:2px;min-width:0;display:grid}.process-step-label{color:var(--text);word-break:break-word}.process-step-snippet{color:var(--text-dim);word-break:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.process-step-chevron{color:var(--text-dim);transition:transform var(--duration-fast);place-self:start end}.process-step.expanded .process-step-chevron{transform:rotate(90deg)}.process-step-details{border-left:1px solid color-mix(in oklch, var(--border) 70%, transparent);background:color-mix(in oklch, var(--surface) 70%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-left:22px;padding:8px 10px}.process-step-details.collapsed{display:none}.process-step-full{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:600px;margin:0;overflow-x:auto}.process-step-label{word-break:break-word;overflow-wrap:break-word;white-space:normal}.vs-active .process-details{transition:none}@media (prefers-reduced-motion:reduce){.process-dot.running,.process-step-dot.running{animation:none}}details.tool-block summary{cursor:pointer;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);font-size:var(--text-sm);color:var(--text-dim);border-radius:var(--radius-sm);transition:background var(--duration-fast);list-style:none;display:flex}details.tool-block summary:hover{background:color-mix(in oklch, var(--accent) 8%, transparent)}details.tool-block summary:before{content:"";width:.5em;height:.5em;transition:transform var(--duration-fast);border-bottom:2px solid;border-right:2px solid;flex-shrink:0;display:inline-block;transform:rotate(-45deg)}details.tool-block[open] summary:before{transform:rotate(45deg)}details.tool-block .tool-content{content-visibility:auto;contain-intrinsic-size:auto 200px}.trace-drawer-overlay{z-index:120;background:oklch(0% 0 0/.42);display:none;position:fixed;inset:0}.trace-drawer-overlay.open{display:block}.trace-drawer{background:var(--bg);border-left:1px solid var(--border);grid-template-rows:auto auto minmax(0,1fr) auto;width:min(980px,94vw);height:100dvh;display:grid;position:absolute;top:0;right:0;box-shadow:-20px 0 60px oklch(0% 0 0/.28)}.trace-drawer-header,.trace-drawer-footer{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.trace-drawer-footer{border-top:1px solid var(--border);border-bottom:0}.trace-drawer-kicker{color:var(--text-dim);font:600 var(--text-xs)/1 var(--font-mono);margin:0 0 2px}.trace-drawer h2{font-size:var(--text-lg);margin:0}.trace-drawer-close,.trace-load-more,.process-step-trace{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.trace-drawer-close{border-radius:6px;width:34px;height:34px;font-size:22px}.trace-drawer-meta{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;padding:10px 16px;display:flex}.trace-drawer-meta span,.process-step-trace{color:var(--text-muted);font:600 var(--text-xs)/1.2 var(--font-mono);white-space:nowrap;border-radius:6px;align-self:start;padding:4px 7px}.trace-drawer-meta b{color:var(--text-dim);margin-right:6px}.trace-drawer-body{grid-template-columns:minmax(260px,.42fr) minmax(0,.58fr);min-height:0;display:grid}.trace-event-list{border-right:1px solid var(--border);overflow:auto}.trace-event-row{border:0;border-bottom:1px solid var(--border);width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;grid-template-columns:52px 74px 110px minmax(0,1fr);gap:8px;padding:9px 10px;display:grid}.trace-event-row:hover,.process-step-trace:hover{background:var(--surface-hover)}.trace-event-seq,.trace-event-source,.trace-event-type{color:var(--text-dim);font:600 var(--text-xs)/1.4 var(--font-mono)}.trace-event-preview{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:var(--text-sm);overflow:hidden}.trace-event-raw{min-width:0;color:var(--text);background:var(--code-bg);font:500 var(--text-sm)/1.55 var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:14px;overflow:auto}.trace-load-more{font:600 var(--text-sm)/1 var(--font-mono);border-radius:6px;padding:7px 10px}.trace-load-more:disabled{opacity:.4;cursor:default}@media (width<=760px){.trace-drawer{width:100vw}.trace-drawer-body{grid-template-rows:minmax(160px,.42fr) minmax(0,.58fr);grid-template-columns:1fr}.trace-event-list{border-right:0;border-bottom:1px solid var(--border)}.trace-event-row{grid-template-columns:46px 64px minmax(0,1fr)}.trace-event-type{display:none}}.diagram-container{border-radius:var(--radius-md);margin:1rem 0;position:relative;overflow:hidden}.diagram-svg{background:var(--surface);border:1px solid var(--border);padding:var(--space-4);max-width:calc(680px + 2 * var(--space-4))}.diagram-svg svg{width:100%;height:auto;display:block}.diagram-widget{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.diagram-widget iframe{border:none;width:100%;min-height:60px;display:block}.diagram-loading{background:var(--surface);border:1px solid var(--border);justify-content:center;align-items:center;min-height:120px;display:flex}.diagram-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite diagram-spin}@keyframes diagram-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.diagram-spinner{animation:none}}.diagram-error{padding:var(--space-4);color:var(--text-dim);text-align:center;font-size:14px}.diagram-widget-pending{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:center;align-items:center;min-height:120px;display:flex}.diagram-zoom-btn{top:var(--space-2);right:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast);z-index:2;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute}.diagram-container:hover .diagram-zoom-btn,.diagram-container:focus-within .diagram-zoom-btn{opacity:1;pointer-events:auto}.diagram-zoom-btn:hover{background:var(--bg);color:var(--text)}.diagram-copy-btn,.diagram-save-btn{top:var(--space-2);right:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute}.diagram-widget .diagram-zoom-btn{right:var(--space-2)}.diagram-widget .diagram-copy-btn{right:calc(var(--space-2) + 36px)}.diagram-widget .diagram-save-btn{right:calc(var(--space-2) + 72px)}.diagram-svg .diagram-copy-btn{right:calc(var(--space-2) + 36px)}.diagram-svg .diagram-save-btn{right:calc(var(--space-2) + 72px)}.diagram-container:hover .diagram-copy-btn,.diagram-container:hover .diagram-save-btn,.diagram-container:focus-within .diagram-copy-btn,.diagram-container:focus-within .diagram-save-btn{opacity:1;pointer-events:auto}.diagram-copy-btn:hover,.diagram-save-btn:hover{background:var(--bg);color:var(--text)}.diagram-copy-btn.copied,.diagram-save-btn.copied{color:var(--success)}.diagram-overlay{z-index:9999;backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.diagram-overlay-content{background:var(--surface);border-radius:var(--radius-lg);min-width:min(680px,90vw);max-width:95vw;max-height:90vh;padding:var(--space-6);overflow:auto;box-shadow:0 20px 60px #00000080}.diagram-overlay-content svg{width:100%;max-width:1200px;height:auto;display:block}.diagram-widget-overlay .diagram-overlay-content{width:min(1100px,94vw)}.diagram-widget-overlay.maximized .diagram-overlay-content{width:min(1500px,98vw);height:min(1000px,94vh)}.diagram-widget-expanded{margin:0}.diagram-widget-expanded iframe{min-height:420px}.diagram-widget-overlay.maximized .diagram-widget-expanded,.diagram-widget-overlay.maximized .diagram-widget-expanded iframe{height:100%}.diagram-size-toggle-btn{top:var(--space-4);right:calc(var(--space-4) + 48px);background:var(--surface);border:1px solid var(--border);width:40px;height:40px;color:var(--text);cursor:pointer;z-index:10000;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute}.diagram-size-toggle-btn:hover{background:var(--bg)}.diagram-overlay-close{top:var(--space-4);right:var(--space-4);background:var(--surface);border:1px solid var(--border);width:40px;height:40px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:flex;position:absolute}.diagram-overlay-close:hover{background:var(--bg)}.c-blue-fill{fill:#1e3a5f}.c-blue-stroke{stroke:#3b82f6;fill:none}.c-blue-text{fill:#93c5fd}.c-blue-bg{fill:#1e3a5f;stroke:#3b82f6;stroke-width:.5px}.c-purple-fill{fill:#3b1f5e}.c-purple-stroke{stroke:#8b5cf6;fill:none}.c-purple-text{fill:#c4b5fd}.c-purple-bg{fill:#3b1f5e;stroke:#8b5cf6;stroke-width:.5px}.c-green-fill{fill:#14532d}.c-green-stroke{stroke:#22c55e;fill:none}.c-green-text{fill:#86efac}.c-green-bg{fill:#14532d;stroke:#22c55e;stroke-width:.5px}.c-amber-fill{fill:#451a03}.c-amber-stroke{stroke:#f59e0b;fill:none}.c-amber-text{fill:#fcd34d}.c-amber-bg{fill:#451a03;stroke:#f59e0b;stroke-width:.5px}.c-red-fill{fill:#450a0a}.c-red-stroke{stroke:#ef4444;fill:none}.c-red-text{fill:#fca5a5}.c-red-bg{fill:#450a0a;stroke:#ef4444;stroke-width:.5px}.c-cyan-fill{fill:#083344}.c-cyan-stroke{stroke:#06b6d4;fill:none}.c-cyan-text{fill:#67e8f9}.c-cyan-bg{fill:#083344;stroke:#06b6d4;stroke-width:.5px}.c-pink-fill{fill:#500724}.c-pink-stroke{stroke:#ec4899;fill:none}.c-pink-text{fill:#f9a8d4}.c-pink-bg{fill:#500724;stroke:#ec4899;stroke-width:.5px}.c-slate-fill{fill:#1e293b}.c-slate-stroke{stroke:#64748b;fill:none}.c-slate-text{fill:#94a3b8}.c-slate-bg{fill:#1e293b;stroke:#64748b;stroke-width:.5px}.c-orange-fill{fill:#431407}.c-orange-stroke{stroke:#f97316;fill:none}.c-orange-text{fill:#fdba74}.c-orange-bg{fill:#431407;stroke:#f97316;stroke-width:.5px}:where(.diagram-svg,.diagram-svg-overlay) .node{rx:8;ry:8}:where(.diagram-svg,.diagram-svg-overlay) .connector{stroke:var(--text-dim);stroke-width:.5px;fill:none}:where(.diagram-svg,.diagram-svg-overlay) .label{text-anchor:middle;dominant-baseline:central;font-size:14px}:where(.diagram-svg,.diagram-svg-overlay) .label-start{text-anchor:start;dominant-baseline:central;font-size:14px}:where(.diagram-svg,.diagram-svg-overlay) .diagram-title{text-anchor:middle;font-size:16px;font-weight:600}[data-theme=light] .c-blue-fill{fill:#dbeafe}[data-theme=light] .c-blue-stroke{stroke:#2563eb}[data-theme=light] .c-blue-text{fill:#1e40af}[data-theme=light] .c-blue-bg{fill:#dbeafe;stroke:#2563eb}[data-theme=light] .c-purple-fill{fill:#ede9fe}[data-theme=light] .c-purple-stroke{stroke:#7c3aed}[data-theme=light] .c-purple-text{fill:#5b21b6}[data-theme=light] .c-purple-bg{fill:#ede9fe;stroke:#7c3aed}[data-theme=light] .c-green-fill{fill:#dcfce7}[data-theme=light] .c-green-stroke{stroke:#16a34a}[data-theme=light] .c-green-text{fill:#15803d}[data-theme=light] .c-green-bg{fill:#dcfce7;stroke:#16a34a}[data-theme=light] .c-amber-fill{fill:#fef3c7}[data-theme=light] .c-amber-stroke{stroke:#d97706}[data-theme=light] .c-amber-text{fill:#92400e}[data-theme=light] .c-amber-bg{fill:#fef3c7;stroke:#d97706}[data-theme=light] .c-red-fill{fill:#fee2e2}[data-theme=light] .c-red-stroke{stroke:#dc2626}[data-theme=light] .c-red-text{fill:#991b1b}[data-theme=light] .c-red-bg{fill:#fee2e2;stroke:#dc2626}[data-theme=light] .c-cyan-fill{fill:#cffafe}[data-theme=light] .c-cyan-stroke{stroke:#0891b2}[data-theme=light] .c-cyan-text{fill:#155e75}[data-theme=light] .c-cyan-bg{fill:#cffafe;stroke:#0891b2}[data-theme=light] .c-pink-fill{fill:#fce7f3}[data-theme=light] .c-pink-stroke{stroke:#db2777}[data-theme=light] .c-pink-text{fill:#9d174d}[data-theme=light] .c-pink-bg{fill:#fce7f3;stroke:#db2777}[data-theme=light] .c-slate-fill{fill:#f1f5f9}[data-theme=light] .c-slate-stroke{stroke:#475569}[data-theme=light] .c-slate-text{fill:#334155}[data-theme=light] .c-slate-bg{fill:#f1f5f9;stroke:#475569}[data-theme=light] .c-orange-fill{fill:#ffedd5}[data-theme=light] .c-orange-stroke{stroke:#ea580c}[data-theme=light] .c-orange-text{fill:#9a3412}[data-theme=light] .c-orange-bg{fill:#ffedd5;stroke:#ea580c}[data-theme=light] :where(.diagram-svg,.diagram-svg-overlay) .connector{stroke:#64748b}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-NNHCCRGN-BPmsUfnh.js";import{n as e}from"./chunk-4EGX6M5U-BIFnMXqg.js";export{e as createArchitectureServices};
|