cli-jaw 1.4.11 β 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +56 -26
- package/README.md +30 -24
- package/README.zh-CN.md +56 -26
- package/dist/bin/commands/browser.js +3 -1
- package/dist/bin/commands/browser.js.map +1 -1
- package/dist/bin/commands/chat.js +358 -9
- package/dist/bin/commands/chat.js.map +1 -1
- package/dist/bin/commands/doctor.js +80 -2
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +88 -6
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/serve.js +1 -0
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/lib/mcp-sync.js +101 -51
- package/dist/lib/mcp-sync.js.map +1 -1
- package/dist/lib/quota-copilot.js +4 -0
- package/dist/lib/quota-copilot.js.map +1 -1
- package/dist/server.js +131 -35
- package/dist/server.js.map +1 -1
- package/dist/src/agent/events.js +198 -29
- package/dist/src/agent/events.js.map +1 -1
- package/dist/src/agent/smoke-detector.js +111 -0
- package/dist/src/agent/smoke-detector.js.map +1 -0
- package/dist/src/agent/spawn.js +157 -26
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/browser/connection.js +9 -1
- package/dist/src/browser/connection.js.map +1 -1
- package/dist/src/browser/launch-policy.js +32 -0
- package/dist/src/browser/launch-policy.js.map +1 -0
- package/dist/src/cli/claude-models.js +46 -0
- package/dist/src/cli/claude-models.js.map +1 -0
- package/dist/src/cli/command-context.js +19 -8
- package/dist/src/cli/command-context.js.map +1 -1
- package/dist/src/cli/commands.js +16 -13
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/compact.js +93 -0
- package/dist/src/cli/compact.js.map +1 -0
- package/dist/src/cli/handlers.js +94 -32
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/readiness.js +69 -0
- package/dist/src/cli/readiness.js.map +1 -0
- package/dist/src/cli/registry.js +3 -2
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/tui/composer.js +6 -4
- package/dist/src/cli/tui/composer.js.map +1 -1
- package/dist/src/cli/tui/keymap.js +2 -0
- package/dist/src/cli/tui/keymap.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +170 -0
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/cli/tui/store.js +25 -0
- package/dist/src/cli/tui/store.js.map +1 -1
- package/dist/src/cli/tui/transcript.js +46 -0
- package/dist/src/cli/tui/transcript.js.map +1 -0
- package/dist/src/command-contract/catalog.js +8 -4
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/bus.js +1 -0
- package/dist/src/core/bus.js.map +1 -1
- package/dist/src/core/compact.js +70 -0
- package/dist/src/core/compact.js.map +1 -0
- package/dist/src/core/config.js +109 -3
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +13 -4
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/main-session.js +15 -0
- package/dist/src/core/main-session.js.map +1 -1
- package/dist/src/core/runtime-settings.js +19 -4
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/settings-merge.js +1 -1
- package/dist/src/core/settings-merge.js.map +1 -1
- package/dist/src/discord/bot.js +274 -0
- package/dist/src/discord/bot.js.map +1 -0
- package/dist/src/discord/commands.js +103 -0
- package/dist/src/discord/commands.js.map +1 -0
- package/dist/src/discord/discord-file.js +43 -0
- package/dist/src/discord/discord-file.js.map +1 -0
- package/dist/src/discord/forwarder.js +45 -0
- package/dist/src/discord/forwarder.js.map +1 -0
- package/dist/src/memory/bootstrap.js +341 -0
- package/dist/src/memory/bootstrap.js.map +1 -0
- package/dist/src/memory/heartbeat.js +11 -22
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/memory/indexing.js +329 -0
- package/dist/src/memory/indexing.js.map +1 -0
- package/dist/src/memory/keyword-expand.js +247 -0
- package/dist/src/memory/keyword-expand.js.map +1 -0
- package/dist/src/memory/runtime.js +56 -1090
- package/dist/src/memory/runtime.js.map +1 -1
- package/dist/src/memory/shared.js +167 -0
- package/dist/src/memory/shared.js.map +1 -0
- package/dist/src/messaging/runtime.js +122 -0
- package/dist/src/messaging/runtime.js.map +1 -0
- package/dist/src/messaging/send.js +120 -0
- package/dist/src/messaging/send.js.map +1 -0
- package/dist/src/messaging/session-key.js +25 -0
- package/dist/src/messaging/session-key.js.map +1 -0
- package/dist/src/messaging/types.js +6 -0
- package/dist/src/messaging/types.js.map +1 -0
- package/dist/src/orchestrator/collect.js +5 -0
- package/dist/src/orchestrator/collect.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +34 -8
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +18 -12
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/parser.js +0 -28
- package/dist/src/orchestrator/parser.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +94 -75
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +23 -20
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/worker-monitor.js +50 -0
- package/dist/src/orchestrator/worker-monitor.js.map +1 -0
- package/dist/src/orchestrator/worker-registry.js +107 -0
- package/dist/src/orchestrator/worker-registry.js.map +1 -0
- package/dist/src/prompt/builder.js +78 -6
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +52 -10
- package/dist/src/prompt/templates/employee.md +17 -5
- package/dist/src/prompt/templates/orchestration.md +11 -10
- package/dist/src/prompt/templates/research-worker.md +1 -1
- package/dist/src/prompt/templates/worker-context.md +4 -4
- package/dist/src/routes/browser.js +14 -3
- package/dist/src/routes/browser.js.map +1 -1
- package/dist/src/telegram/bot.js +92 -8
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/types/agent.js +4 -0
- package/dist/src/types/agent.js.map +1 -0
- package/package.json +27 -15
- package/public/css/chat.css +365 -127
- package/public/css/layout.css +67 -10
- package/public/css/markdown.css +219 -54
- package/public/css/modals.css +35 -15
- package/public/css/orc-state.css +16 -16
- package/public/css/sidebar.css +12 -12
- package/public/css/tool-ui.css +483 -0
- package/public/css/variables.css +334 -6
- package/public/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/public/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/public/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/public/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/public/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/public/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/public/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/public/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/public/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/public/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/public/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/public/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/public/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/public/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/public/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/public/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/public/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/public/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/public/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/public/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/public/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/public/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/public/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/public/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/public/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/public/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/public/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/public/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/public/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/public/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/public/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/public/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/public/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/public/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/public/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/public/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/public/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/public/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/public/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/public/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/public/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/public/dist/assets/api-B8XKQ4OT.js +1 -0
- package/public/dist/assets/api-BlPw3bUI.js +1 -0
- package/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
- package/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
- package/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
- package/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
- package/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
- package/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
- package/public/dist/assets/constants-DshMUJbo.js +1 -0
- package/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
- package/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
- package/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
- package/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
- package/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
- package/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
- package/public/dist/assets/employees-CFRlsbHm.js +39 -0
- package/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
- package/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
- package/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
- package/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
- package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
- package/public/dist/assets/icon-192-CwXPIYF5.png +0 -0
- package/public/dist/assets/index-1Gg-6jeC.css +1 -0
- package/public/dist/assets/index-CQHqXjrK.js +49 -0
- package/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
- package/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
- package/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
- package/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
- package/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
- package/public/dist/assets/katex-DZLS_HFU.js +1 -0
- package/public/dist/assets/locale-BjoAcbis.js +1 -0
- package/public/dist/assets/manifest-Bw-LRm-c.json +20 -0
- package/public/dist/assets/mermaid.core-CHuluSlD.js +1 -0
- package/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
- package/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
- package/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
- package/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
- package/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
- package/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
- package/public/dist/assets/render-YHvL5VM_.js +6 -0
- package/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
- package/public/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
- package/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
- package/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
- package/public/dist/assets/settings-BQF_u5px.js +37 -0
- package/public/dist/assets/settings-C5Q9IPjJ.js +1 -0
- package/public/dist/assets/shark-sprite-B3AAuERd.png +0 -0
- package/public/dist/assets/skills-9Pd2rOw-.js +1 -0
- package/public/dist/assets/skills-BI7sQAdk.js +12 -0
- package/public/dist/assets/slash-commands-DMsE88bu.js +14 -0
- package/public/dist/assets/slash-commands-FMpJzlDB.js +1 -0
- package/public/dist/assets/state-O6NVkWcL.js +1 -0
- package/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
- package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
- package/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
- package/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
- package/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
- package/public/dist/assets/ui-BukgLHuh.js +29 -0
- package/public/dist/assets/ui-Bvz1JfTE.js +1 -0
- package/public/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
- package/public/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
- package/public/dist/assets/vendor-render-D2YP6GiF.js +322 -0
- package/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
- package/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
- package/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
- package/public/dist/assets/ws-S_AZgx7L.js +2 -0
- package/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
- package/public/dist/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/public/dist/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/public/dist/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/public/dist/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/public/dist/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/public/dist/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/public/dist/dist/assets/api-B8XKQ4OT.js +1 -0
- package/public/dist/dist/assets/api-BlPw3bUI.js +1 -0
- package/public/dist/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
- package/public/dist/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
- package/public/dist/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
- package/public/dist/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
- package/public/dist/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
- package/public/dist/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
- package/public/dist/dist/assets/constants-DshMUJbo.js +1 -0
- package/public/dist/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
- package/public/dist/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
- package/public/dist/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
- package/public/dist/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
- package/public/dist/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
- package/public/dist/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
- package/public/dist/dist/assets/employees-CFRlsbHm.js +39 -0
- package/public/dist/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
- package/public/dist/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
- package/public/dist/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
- package/public/dist/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
- package/public/dist/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
- package/public/dist/dist/assets/icon-192-CwXPIYF5.png +0 -0
- package/public/dist/dist/assets/index-1Gg-6jeC.css +1 -0
- package/public/dist/dist/assets/index-CQHqXjrK.js +49 -0
- package/public/dist/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
- package/public/dist/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
- package/public/dist/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
- package/public/dist/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
- package/public/dist/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
- package/public/dist/dist/assets/katex-DZLS_HFU.js +1 -0
- package/public/dist/dist/assets/locale-BjoAcbis.js +1 -0
- package/public/dist/dist/assets/manifest-Bw-LRm-c.json +20 -0
- package/public/dist/dist/assets/mermaid.core-CHuluSlD.js +1 -0
- package/public/dist/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
- package/public/dist/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
- package/public/dist/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
- package/public/dist/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
- package/public/dist/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
- package/public/dist/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
- package/public/dist/dist/assets/render-YHvL5VM_.js +6 -0
- package/public/dist/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
- package/public/dist/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
- package/public/dist/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
- package/public/dist/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
- package/public/dist/dist/assets/settings-BQF_u5px.js +37 -0
- package/public/dist/dist/assets/settings-C5Q9IPjJ.js +1 -0
- package/public/dist/dist/assets/shark-sprite-B3AAuERd.png +0 -0
- package/public/dist/dist/assets/skills-9Pd2rOw-.js +1 -0
- package/public/dist/dist/assets/skills-BI7sQAdk.js +12 -0
- package/public/dist/dist/assets/slash-commands-DMsE88bu.js +14 -0
- package/public/dist/dist/assets/slash-commands-FMpJzlDB.js +1 -0
- package/public/dist/dist/assets/state-O6NVkWcL.js +1 -0
- package/public/dist/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
- package/public/dist/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
- package/public/dist/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
- package/public/dist/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
- package/public/dist/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
- package/public/dist/dist/assets/ui-BukgLHuh.js +29 -0
- package/public/dist/dist/assets/ui-Bvz1JfTE.js +1 -0
- package/public/dist/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
- package/public/dist/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
- package/public/dist/dist/assets/vendor-render-D2YP6GiF.js +322 -0
- package/public/dist/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
- package/public/dist/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
- package/public/dist/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
- package/public/dist/dist/assets/ws-S_AZgx7L.js +2 -0
- package/public/dist/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
- package/public/dist/dist/index.html +708 -0
- package/public/dist/index.html +708 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512-maskable.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/index.html +178 -125
- package/public/js/constants.ts +6 -6
- package/public/js/features/chat.ts +23 -3
- package/public/js/features/employees.ts +12 -12
- package/public/js/features/gesture.ts +61 -0
- package/public/js/features/heartbeat.ts +1 -1
- package/public/js/features/idb-cache.ts +89 -0
- package/public/js/features/memory.ts +4 -1
- package/public/js/features/process-block.ts +236 -0
- package/public/js/features/settings-channel.ts +53 -0
- package/public/js/features/settings-cli-status.ts +164 -0
- package/public/js/features/settings-core.ts +357 -0
- package/public/js/features/settings-discord.ts +52 -0
- package/public/js/features/settings-mcp.ts +54 -0
- package/public/js/features/settings-stt.ts +78 -0
- package/public/js/features/settings-telegram.ts +40 -0
- package/public/js/features/settings-templates.ts +129 -0
- package/public/js/features/settings-types.ts +24 -0
- package/public/js/features/settings.ts +9 -815
- package/public/js/features/sidebar.ts +4 -2
- package/public/js/features/skills.ts +5 -4
- package/public/js/features/slash-commands.ts +1 -8
- package/public/js/features/theme.ts +16 -10
- package/public/js/features/tool-ui.ts +113 -0
- package/public/js/main.ts +67 -8
- package/public/js/render.ts +128 -90
- package/public/js/state.ts +4 -0
- package/public/js/streaming-render.ts +55 -0
- package/public/js/ui.ts +289 -46
- package/public/js/virtual-scroll.ts +189 -0
- package/public/js/ws.ts +175 -112
- package/public/locales/en.json +6 -1
- package/public/locales/ko.json +6 -1
- package/public/manifest.json +20 -0
- package/public/public/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/public/public/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/public/public/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/public/public/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/public/public/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/public/public/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/public/public/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/public/public/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/public/public/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/public/public/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/public/public/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/public/public/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/public/public/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/public/public/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/public/public/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/public/public/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/public/public/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/public/public/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/public/public/dist/assets/api-B8XKQ4OT.js +1 -0
- package/public/public/dist/assets/api-BlPw3bUI.js +1 -0
- package/public/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
- package/public/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
- package/public/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
- package/public/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
- package/public/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
- package/public/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
- package/public/public/dist/assets/constants-DshMUJbo.js +1 -0
- package/public/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
- package/public/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
- package/public/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
- package/public/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
- package/public/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
- package/public/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
- package/public/public/dist/assets/employees-CFRlsbHm.js +39 -0
- package/public/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
- package/public/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
- package/public/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
- package/public/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
- package/public/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
- package/public/public/dist/assets/icon-192-CwXPIYF5.png +0 -0
- package/public/public/dist/assets/index-1Gg-6jeC.css +1 -0
- package/public/public/dist/assets/index-CQHqXjrK.js +49 -0
- package/public/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
- package/public/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
- package/public/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
- package/public/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
- package/public/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
- package/public/public/dist/assets/katex-DZLS_HFU.js +1 -0
- package/public/public/dist/assets/locale-BjoAcbis.js +1 -0
- package/public/public/dist/assets/manifest-Bw-LRm-c.json +20 -0
- package/public/public/dist/assets/mermaid.core-CHuluSlD.js +1 -0
- package/public/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
- package/public/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
- package/public/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
- package/public/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
- package/public/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
- package/public/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
- package/public/public/dist/assets/render-YHvL5VM_.js +6 -0
- package/public/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
- package/public/public/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
- package/public/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
- package/public/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
- package/public/public/dist/assets/settings-BQF_u5px.js +37 -0
- package/public/public/dist/assets/settings-C5Q9IPjJ.js +1 -0
- package/public/public/dist/assets/shark-sprite-B3AAuERd.png +0 -0
- package/public/public/dist/assets/skills-9Pd2rOw-.js +1 -0
- package/public/public/dist/assets/skills-BI7sQAdk.js +12 -0
- package/public/public/dist/assets/slash-commands-DMsE88bu.js +14 -0
- package/public/public/dist/assets/slash-commands-FMpJzlDB.js +1 -0
- package/public/public/dist/assets/state-O6NVkWcL.js +1 -0
- package/public/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
- package/public/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
- package/public/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
- package/public/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
- package/public/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
- package/public/public/dist/assets/ui-BukgLHuh.js +29 -0
- package/public/public/dist/assets/ui-Bvz1JfTE.js +1 -0
- package/public/public/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
- package/public/public/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
- package/public/public/dist/assets/vendor-render-D2YP6GiF.js +322 -0
- package/public/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
- package/public/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
- package/public/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
- package/public/public/dist/assets/ws-S_AZgx7L.js +2 -0
- package/public/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
- package/public/public/dist/index.html +708 -0
- package/public/sw.js +104 -0
- package/scripts/install-officecli.sh +145 -0
- package/scripts/release-preview.sh +18 -10
- package/scripts/release.sh +3 -3
- package/public/dist/bundle.js +0 -151
- package/public/dist/bundle.js.map +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as e}from"./vendor-mermaid-COidH9HB.js";export{e as createWardleyServices};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1,2 @@
|
|
|
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{t as e}from"./state-O6NVkWcL.js";import{Z as t}from"./vendor-mermaid-COidH9HB.js";import{a as n,c as r}from"./render-YHvL5VM_.js";import{a as i,d as a,f as o,h as s,i as c,m as l,n as u,r as d,t as f}from"./ui-BukgLHuh.js";var p=[`P`,`A`,`B`,`C`],m=null;function h(e,t,n){let r=p.indexOf(n);if(r<0)return;let i=e.getBoundingClientRect(),a=t.offsetWidth||36,o=document.getElementById(`dot-${n}`);if(!o)return;let s=p[r+1],c=s?document.getElementById(`dot-${s}`):null;if(c){let e=o.getBoundingClientRect(),n=c.getBoundingClientRect(),r=(e.right+n.left)/2;t.style.left=r-i.left-a/2+`px`}else{let e=o.getBoundingClientRect();t.style.left=e.left-i.left+e.width/2-a/2+`px`}}var g={};function _(e){for(let e of Object.keys(g))delete g[e];for(let t of e)t.state===`running`&&t.phase&&(g[t.agentId]={phase:t.phase,phaseLabel:t.phaseLabel||``})}function v(t,n){let r=new Set([`IDLE`,`P`,`A`,`B`,`C`,`D`]).has(t)?t:`IDLE`;if(e.orcState=r,r===`IDLE`||r===`D`)document.body.removeAttribute(`data-orc-state`),document.body.style.removeProperty(`--orc-glow`);else{document.body.setAttribute(`data-orc-state`,r);let e=`--orc-glow-${r}`,t=getComputedStyle(document.documentElement).getPropertyValue(e).trim();document.body.style.setProperty(`--orc-glow`,t)}document.body.classList.add(`orc-pulse`),setTimeout(()=>document.body.classList.remove(`orc-pulse`),700);let i=document.getElementById(`orcStateBadge`);i&&(i.textContent={IDLE:``,P:`PLAN`,A:`AUDIT`,B:`BUILD`,C:`CHECK`,D:`DONE`}[r],i.style.display=r===`IDLE`?`none`:`inline-block`);let a=document.getElementById(`pabcRoadmap`),o=document.getElementById(`sharkRunner`),s=document.getElementById(`pabcBrand`);if(a&&o){if(!a.dataset.resizeObserved){a.dataset.resizeObserved=`1`,new ResizeObserver(()=>{m&&o.classList.contains(`running`)&&h(a,o,m)}).observe(a);let e=0;window.addEventListener(`resize`,()=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{m&&o.classList.contains(`running`)&&h(a,o,m)})})}if(r===`IDLE`)a.classList.remove(`visible`,`shimmer-out`),o.classList.remove(`running`),m=null;else if(r===`D`){p.forEach(e=>{let t=document.getElementById(`dot-${e}`);t&&(t.className=`pabc-dot done`,t.setAttribute(`data-phase`,e))});for(let e=0;e<4;e++){let t=document.getElementById(`pabc-conn-${e}`);t&&(t.className=`pabc-connector done`)}o.classList.remove(`running`),m=null,a.classList.add(`shimmer-out`),setTimeout(()=>a.classList.remove(`visible`,`shimmer-out`),1e3)}else{a.classList.remove(`shimmer-out`),a.classList.add(`visible`),o.classList.add(`running`);let e=p.indexOf(r);p.forEach((t,n)=>{let r=document.getElementById(`dot-${t}`);r&&(r.className=`pabc-dot ${n<e?`done`:n===e?`active`:`future`}`,r.setAttribute(`data-phase`,t))});for(let t=0;t<4;t++){let n=document.getElementById(`pabc-conn-${t}`);n&&(n.className=`pabc-connector ${t<e?`done`:``}`)}m=r,requestAnimationFrame(()=>h(a,o,r))}s&&n&&(s.textContent=n)}}function y(){let p=`ws://${location.host}`;e.ws=new WebSocket(`${p}?lang=${n()}`),e.ws.onmessage=e=>{let n;try{n=JSON.parse(e.data)}catch{console.warn(`[ws] malformed message:`,e.data);return}if(!n||typeof n!=`object`||typeof n.type!=`string`){console.warn(`[ws] invalid message shape:`,n);return}if(n.type===`agent_status`)n.running===void 0?a(n.status||`idle`):a(n.running?`running`:`idle`),n.agentId&&n.phase&&(g[n.agentId]={phase:n.phase,phaseLabel:n.phaseLabel||``},t(()=>import(`./employees-CFRlsbHm.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])));else if(n.type===`queue_update`)l(n.pending||0);else if(n.type===`worklog_created`)u(`π Worklog: ${n.path||``}`);else if(n.type===`round_start`){let e=n.agentPhases||n.subtasks||[],t=e.map(e=>e.agent||e.name||``).join(`, `);u(r(`ws.roundStart`,{round:n.round||0,count:e.length,names:t}))}else if(n.type===`round_done`)n.action===`complete`?u(r(`ws.roundDone`,{round:n.round||0})):n.action===`next`?u(r(`ws.roundNext`,{round:n.round||0})):u(r(`ws.roundRetry`,{round:n.round||0}));else if(n.type===`agent_tool`){let e=n.toolType===`thinking`?`thinking`:n.toolType===`search`?`search`:`tool`;o({id:`step-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,type:e,icon:n.icon||`π§`,label:n.label||``,detail:n.detail||``,stepRef:n.stepRef||``,status:`running`,startTime:Date.now()})}else if(n.type===`agent_output`)d(n.text||``);else if(n.type===`agent_retry`)u(r(`ws.retry`,{cli:n.cli||``,delay:n.delay||10}),`tool-activity`);else if(n.type===`agent_fallback`)u(r(`ws.fallback`,{from:n.from||``,to:n.to||``}),`tool-activity`);else if(n.type===`agent_smoke`)u(`β οΈ ${n.cli||`agent`}: smoke response detected β auto-continuing`,`tool-activity`);else if(n.type===`agent_done`)i(n.text||``,n.toolLog);else if(n.type===`orchestrate_done`)i(n.text||``);else if(n.type===`clear`){c(),s().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``)}else n.type===`session_reset`?u(`π Session reset β history preserved`,`tool-activity`):n.type===`agent_added`||n.type===`agent_updated`||n.type===`agent_deleted`?t(()=>import(`./employees-CFRlsbHm.js`).then(e=>e.loadEmployees()),__vite__mapDeps([0])):n.type===`orc_state`?v(typeof n.state==`string`?n.state:`IDLE`,n.title):n.type===`new_message`&&(n.source===`telegram`||n.source===`discord`)&&f(n.role===`assistant`?`agent`:n.role||`user`,n.content||``)},e.ws.onopen=()=>{console.log(`[ws] connected`),t(()=>import(`./ui-Bvz1JfTE.js`).then(e=>{e.cleanupToolActivity(),e.loadMessages(),e.setStatus(`idle`)}),__vite__mapDeps([0])),fetch(`/api/orchestrate/snapshot`).then(e=>e.json()).then(e=>{v(e.orc.state),_(e.workers),l(e.runtime.queuePending),a(e.runtime.busy?`running`:`idle`),t(()=>import(`./employees-CFRlsbHm.js`).then(e=>{typeof e.renderEmployees==`function`&&e.renderEmployees()}),__vite__mapDeps([0]))}).catch(()=>{})},e.ws.onclose=()=>{console.log(`[ws] disconnected, reconnecting in 2s...`),t(()=>import(`./ui-Bvz1JfTE.js`).then(e=>e.cleanupToolActivity()),__vite__mapDeps([0])),a(`idle`),u(`β‘ μ°κ²° λκΉ β μ¬μ°κ²° μ€...`,`tool-activity`),setTimeout(y,2e3)}}function b(e){return g[e]||null}export{b as n,y as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
async function e(e,t={}){try{let n=await fetch(e,t);if(!n.ok)return console.warn(`[api] ${t.method||`GET`} ${e} β ${n.status}`),null;if(!(n.headers.get(`content-type`)||``).includes(`json`))return null;let r=await n.json();return r&&typeof r==`object`&&`ok`in r&&`data`in r?r.ok?r.data:(console.warn(`[api] ${e} β ok:false`,r.error||``),null):r}catch(t){return console.warn(`[api] ${e} failed:`,t.message),null}}async function t(t,n,r){return e(t,{method:n,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)})}function n(e,t=`POST`,n){let r={method:t};n&&(r.headers={"Content-Type":`application/json`},r.body=JSON.stringify(n)),fetch(e,r).catch(()=>{})}export{n,t as r,e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./api-B8XKQ4OT.js";export{e as api};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as e}from"./vendor-mermaid-COidH9HB.js";export{e as createArchitectureServices};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{k as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./api-B8XKQ4OT.js";var t={claude:{label:`Claude`,efforts:[`low`,`medium`,`high`],models:[`sonnet`,`opus`,`sonnet[1m]`,`opus[1m]`,`haiku`]},codex:{label:`Codex`,efforts:[`low`,`medium`,`high`,`xhigh`],models:[`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.3-codex-spark`,`gpt-5.2-codex`,`gpt-5.1-codex-max`,`gpt-5.1-codex-mini`]},gemini:{label:`Gemini`,efforts:[],models:[`gemini-3.0-pro-preview`,`gemini-3.1-pro-preview`,`gemini-2.5-pro`,`gemini-3-flash-preview`,`gemini-2.5-flash`]},opencode:{label:`OpenCode`,efforts:[`minimal`,`low`,`high`,`max`],models:[`anthropic/claude-opus-4-6-thinking`,`anthropic/claude-sonnet-4-6-thinking`,`anthropic/claude-sonnet-4-6`,`openai/gpt-5.4-xhigh`,`openai/gpt-5.4-high`,`openai/gpt-5.3-codex-xhigh`,`openai/gpt-5.3-codex-high`,`opencode/big-pickle`,`opencode/GLM-5 Free`,`opencode/MiniMax M2.5 Free`,`opencode/Kimi K2.5 Free`,`opencode/GPT 5 Nano Free`,`opencode/Grok Code Fast 1 Free`]},copilot:{label:`Copilot`,efforts:[`low`,`medium`,`high`],effortNote:`β ~/.copilot/config.json`,models:[`claude-sonnet-4.6`,`claude-opus-4.6`,`claude-opus-4.6-fast`,`claude-haiku-4.5`,`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.2-codex`,`gpt-5.1-codex`,`gpt-4.1`,`gpt-5-mini`,`gemini-3-pro-preview`]}};function n(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r?.models)?[...r.models]:[];return t}function r(e){let t={};for(let[n,r]of Object.entries(e||{})){if(!r||typeof r!=`object`)continue;let e=r,i={label:e.label||n,efforts:Array.isArray(e.efforts)?[...e.efforts]:[],models:Array.isArray(e.models)?[...e.models]:[]};typeof e.effortNote==`string`&&e.effortNote.trim()&&(i.effortNote=e.effortNote),t[n]=i}return t}var i=r(t),a=Object.keys(i),o=n(i);function s(e){let t=r(e);return Object.keys(t).length?(i=t,a=Object.keys(t),o=n(t),!0):!1}async function c(){try{let t=await e(`/api/cli-registry`);if(!t||!s(t))throw Error(`invalid registry`)}catch(e){console.warn(`[cli-registry] fallback:`,e.message),s(t)}return i}function l(){return a}function u(e){return i[e]||null}var d=[{value:`frontend`,labelKey:`role.label.frontend`,label:`Frontend`,prompt:`Frontend employee β UI/UX, CSS, components`,skill:`dev-frontend`},{value:`backend`,labelKey:`role.label.backend`,label:`Backend`,prompt:`Backend employee β API, DB, server logic`,skill:`dev-backend`},{value:`research`,labelKey:`role.label.research`,label:`Research`,prompt:`Research employee β search, codebase exploration, uncertainty reduction, read-only reports`,skill:`research-worker`},{value:`data`,labelKey:`role.label.data`,label:`Data`,prompt:`Data employee β data pipeline, analysis, ML`,skill:`dev-data`},{value:`docs`,labelKey:`role.label.docs`,label:`Docs`,prompt:`Docs employee β documentation, README, API docs`,skill:`documentation`},{value:`custom`,labelKey:`role.label.custom`,label:`Custom...`,prompt:``,skill:null}];export{c as a,u as i,d as n,l as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as e}from"./vendor-mermaid-COidH9HB.js";export{e as render};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as e}from"./vendor-mermaid-COidH9HB.js";export{e as render};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{w as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{S as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import{t as e}from"./state-O6NVkWcL.js";import{c as t,t as n}from"./render-YHvL5VM_.js";import{n as r,r as i,t as a}from"./api-B8XKQ4OT.js";import{n as o}from"./ws-S_AZgx7L.js";import{n as s,r as c,t as l}from"./constants-DshMUJbo.js";var u={"React/Vue κΈ°λ° UI μ»΄ν¬λνΈ κ°λ°, μ€νμΌλ§":`frontend`,"API μλ², DB μ€ν€λ§, λΉμ¦λμ€ λ‘μ§ κ΅¬ν":`backend`,"νλ‘ νΈμλμ λ°±μλ λͺ¨λ λ΄λΉ":`frontend`,"CI/CD, Docker, μΈνλΌ μλν":`backend`,"ν
μ€νΈ μμ±, λ²κ·Έ μ¬ν, νμ§ κ΄λ¦¬":`custom`,"λ°μ΄ν° νμ΄νλΌμΈ, ETL, λΆμ 쿼리":`data`,"API λ¬Έμν, README, κ°μ΄λ μμ±":`docs`,"UI/UX ꡬν, CSS, μ»΄ν¬λνΈ κ°λ°":`frontend`,"API, DB, μλ² λ‘μ§ κ΅¬ν":`backend`,"λ°μ΄ν° νμ΄νλΌμΈ, λΆμ, ML":`data`,"λ¬Έμν, README, API docs":`docs`,"UI/UX, CSS, components":`frontend`,"API, DB, server logic":`backend`,"Search, codebase exploration, uncertainty reduction, read-only reports":`research`,"Search, codebase exploration, uncertainty reduction, read-only":`research`,"Data pipeline, analysis, ML":`data`,"Documentation, README, API docs":`docs`},d={1:`#60a5fa`,2:`#a78bfa`,3:`#34d399`,4:`#fbbf24`,5:`#f472b6`};async function f(){e.employees=await a(`/api/employees`)||[],p()}function p(){let r=document.getElementById(`employeesList`);if(!r)return;let i=e.employees;if(i.length===0){r.innerHTML=`<div style="color:var(--text-dim);font-size:11px;padding:4px 0">${t(`emp.addPrompt`)}</div>`;return}let a=c();r.innerHTML=i.map(e=>{let r=l[e.cli]||[],i=u[e.role||``],c=i?s.find(e=>e.value===i):s.find(t=>t.prompt===e.role),f=c?c.value:e.role?`custom`:`frontend`,p=f===`custom`,m=o(e.id),h=m?.phase||e.phase,g=m?.phaseLabel||e.phaseLabel,_=h?`<span style="background:${d[h]||`#888`};color:#000;padding:1px 6px;border-radius:9px;font-size:9px">${n(g||`P`+h)}</span>`:``;return`
|
|
2
|
+
<div class="settings-group" style="margin-bottom:8px;padding:8px 10px">
|
|
3
|
+
<div style="display:flex;align-items:center;gap:6px;margin-bottom:6px">
|
|
4
|
+
<span style="width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;flex-shrink:0"></span>
|
|
5
|
+
<input style="flex:1;background:none;border:none;color:var(--text);font-size:12px;font-weight:600;font-family:inherit;outline:none"
|
|
6
|
+
value="${n(e.name||`Agent`)}"
|
|
7
|
+
data-emp-name="${n(e.id)}">
|
|
8
|
+
<button style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px" data-emp-delete="${n(e.id)}" title="${t(`emp.delete`)}">β</button>
|
|
9
|
+
</div>
|
|
10
|
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:4px">
|
|
11
|
+
<div>
|
|
12
|
+
<label>CLI</label>
|
|
13
|
+
<select data-emp-cli="${n(e.id)}">
|
|
14
|
+
${a.map(t=>`<option${e.cli===t?` selected`:``}>${n(t)}</option>`).join(``)}
|
|
15
|
+
</select>
|
|
16
|
+
</div>
|
|
17
|
+
<div>
|
|
18
|
+
<label>Model</label>
|
|
19
|
+
<select data-emp-model="${n(e.id)}">
|
|
20
|
+
<option value="default"${!e.model||e.model===`default`?` selected`:``}>default</option>
|
|
21
|
+
${r.map(t=>`<option${e.model===t?` selected`:``}>${n(t)}</option>`).join(``)}
|
|
22
|
+
${e.model&&e.model!==`default`&&!r.includes(e.model)?`<option selected>${n(e.model)}</option>`:``}
|
|
23
|
+
<option value="__custom__">${t(`emp.customModel`)}</option>
|
|
24
|
+
</select>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div>
|
|
28
|
+
<label>Role</label>
|
|
29
|
+
<select data-emp-role="${n(e.id)}">
|
|
30
|
+
${s.map(e=>`<option value="${e.value}"${f===e.value?` selected`:``}>${e.label}</option>`).join(``)}
|
|
31
|
+
</select>
|
|
32
|
+
<textarea data-emp-custom="${n(e.id)}" style="display:${p?`block`:`none`};margin-top:4px;width:100%;height:40px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:10px;font-family:inherit;resize:vertical"
|
|
33
|
+
placeholder="${t(`emp.customRole`)}">${p?n(e.role||``):``}</textarea>
|
|
34
|
+
</div>
|
|
35
|
+
<div style="margin-top:4px;font-size:10px;display:flex;align-items:center;gap:6px">
|
|
36
|
+
<span style="color:${e.status===`running`?`#fbbf24`:`var(--green)`}">β ${n(e.status||`idle`)}</span>
|
|
37
|
+
${_}
|
|
38
|
+
</div>
|
|
39
|
+
</div>`}).join(``)}async function m(){await i(`/api/employees`,`POST`,{})}async function h(e,t){await i(`/api/employees/${e}`,`PUT`,t)}async function g(e){r(`/api/employees/${e}`,`DELETE`)}function _(e,r){let i=l[r]||[],a=document.querySelector(`[data-emp-model="${e}"]`);a&&(a.innerHTML=`<option value="default" selected>default</option>`+i.map(e=>`<option>${n(e)}</option>`).join(``)+`<option value="__custom__">${t(`emp.customModel`)}</option>`),h(e,{cli:r,model:r===`claude`?`sonnet`:`default`})}function v(e,t){let n=s.find(e=>e.value===t),r=document.querySelector(`[data-emp-custom="${e}"]`);r&&(t===`custom`?(r.style.display=`block`,r.focus()):(r.style.display=`none`,r.value=``,h(e,{role:n?.prompt||``})))}export{m as addEmployee,g as deleteEmployee,f as loadEmployees,_ as onEmpCliChange,v as onEmpRoleChange,p as renderEmployees,h as updateEmployee};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{x as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{y as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e}from"./vendor-mermaid-COidH9HB.js";export{e as createGitGraphServices};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{v as e}from"./vendor-mermaid-COidH9HB.js";export{e as diagram};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--bg:#0a0a0f;--surface:#12121a;--border:#1e1e2e;--text:#e4e4ef;--text-dim:#6e6e8a;--accent:#22d3ee;--accent2:#06b6d4;--green:#4ade80;--user-bg:#1a1a2e;--agent-bg:#0f0f1a;--status-idle-bg:#1a2e1a;--status-running-bg:#2e2a1a;--status-running-color:#fbbf24;--code-bg:#0d1117;--link-color:#60a5fa;--table-border:#06b6d4;--stop-btn:var(--error);--stop-btn-hover:#dc2626;--toggle-off:#444;--toggle-on:#fff;--delete-color:var(--error);--code-label-color:#8b949e;--modal-bg:#0009;--font-display:"Chakra Petch", "Outfit", "Pretendard", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--font-ui:"Outfit", "Pretendard", "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:#ef4444;--error-dim:#ef444426;--success:#22c55e;--success-dim:#22c55e26;--warning:#f59e0b;--warning-dim:#f59e0b26;--noise-opacity:.03;--scanline-pct:1.2%;--glow-strength:5%;--toggle-w:36px;--toggle-h:20px;--toggle-knob:16px;--orc-glow:transparent;--orc-glow-P:#3b82f6;--orc-glow-A:#f59e0b;--orc-glow-B:#22c55e;--orc-glow-C:#a855f7;--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);display:grid}body.left-collapsed{--sidebar-left-w:var(--sidebar-collapsed-w)}body.right-collapsed{--sidebar-right-w:var(--sidebar-collapsed-w)}[data-theme=light]{--bg:#f5f5f7;--surface:#fff;--border:#e0e0e6;--text:#1a1a2e;--text-dim:#6e6e8a;--accent:#0891b2;--accent2:#0e7490;--green:#16a34a;--user-bg:#eef0f8;--agent-bg:#f8f8fc;--status-idle-bg:#dcfce7;--status-running-bg:#fef9c3;--status-running-color:#a16207;--code-bg:#f0f2f5;--link-color:#2563eb;--table-border:#2563eb;--stop-btn:var(--error);--stop-btn-hover:#b91c1c;--toggle-off:silver;--toggle-on:#fff;--delete-color:var(--error);--code-label-color:#6e6e8a;--modal-bg:#0000004d;--error:#dc2626;--error-dim:#dc262626;--success:#16a34a;--success-dim:#16a34a26;--warning:#d97706;--warning-dim:#d9770626;--noise-opacity:.015;--scanline-pct:0.8%;--glow-strength:3%;--orc-glow-P:#2563eb;--orc-glow-A:#d97706;--orc-glow-B:#16a34a;--orc-glow-C:#9333ea;--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 srgb, 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);justify-content:center;align-items:center;min-width:18px;height:18px;font-weight:700;display:flex;position:absolute;top:-6px;right:-6px}.sidebar-left{background:linear-gradient(180deg, var(--surface) 0%, color-mix(in srgb, var(--surface) 95%, #000) 100%);border-right:1px solid color-mix(in srgb, 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 srgb, var(--accent) var(--scanline-pct), transparent) 2px, color-mix(in srgb, var(--accent) var(--scanline-pct), transparent) 4px), linear-gradient(180deg, color-mix(in srgb, 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 srgb, 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 srgb, var(--success) 20%, transparent)}.status-running{background:var(--status-running-bg);color:var(--status-running-color);box-shadow:0 0 6px color-mix(in srgb, 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 srgb, var(--surface) 95%, #000) 100%);border-left:1px solid color-mix(in srgb, 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;padding:6px;transition:border-color .15s,box-shadow .15s}.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-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}.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);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{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}.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}.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 srgb, 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:1;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-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:content;will-change:scroll-position;flex-direction:column;flex:1;display:flex;position:relative;overflow-y:auto}.chat-messages:before{content:"";background:linear-gradient(180deg, var(--bg) 0%, transparent 100%);pointer-events:none;z-index:10;flex-shrink:0;height:40px;margin-bottom:-40px;display:block;position:sticky;top:0}.chat-messages:after{content:"";background:linear-gradient(0deg, var(--bg) 0%, transparent 100%);pointer-events:none;z-index:10;flex-shrink:0;height:30px;margin-top:-30px;display:block;position:sticky;bottom:0}.chat-messages:not(:has(.msg)):before,.chat-messages:not(:has(.msg)):after{display:none}.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;white-space:pre-wrap;max-width:85%;transition:box-shadow var(--duration-base);contain:layout style;line-height:1.3;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 srgb, var(--accent) 10%, var(--surface));border:1px solid color-mix(in srgb, var(--accent) 18%, var(--border));border-radius:var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg);align-self:flex-end;max-width:75%;animation:.25s cubic-bezier(.16,1,.3,1) msgEnterUser}.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-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 srgb, 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-copy{bottom:var(--space-2);border:1.5px solid var(--text-dim);cursor:pointer;opacity:0;width:12px;height:12px;transition:opacity var(--duration-fast), transform .1s, background var(--duration-fast);background:0 0;border-radius:2px;padding:0;position:absolute}.msg:hover .msg-copy{opacity:.7}.msg-copy:hover{opacity:1;color:var(--text);transform:scale(1.5)}.msg-agent .msg-copy{right:0;bottom:var(--space-2);top:auto;left:auto}.msg-user .msg-copy{left:var(--space-2)}.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}.stream-cursor{background:color-mix(in srgb, 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}}.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 srgb, 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 srgb, 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{background:var(--surface);border:1px solid var(--border);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 14px;overflow-y:auto}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent), 0 0 20px color-mix(in srgb, var(--accent) 8%, transparent);outline:none}.chat-input:disabled{opacity:.5}.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:hidden}.btn-send:hover{box-shadow:0 4px 20px color-mix(in srgb, var(--accent) 45%, transparent), 0 0 40px color-mix(in srgb, var(--accent) 15%, transparent);filter:brightness(1.15);transform:translateY(-2px)}.btn-send:active{box-shadow:0 0 30px color-mix(in srgb, 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}.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{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;padding:6px 10px;font-size:1.1rem;transition:all .2s}.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}@keyframes pulse-recording{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--error) 40%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb, 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 srgb, 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 srgb, 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)}.cmd-desc{color:var(--text-dim);flex:1;font-size:12px}.cmd-args{color:var(--text-dim);opacity:.8;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}.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(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:.7;transform:translateY(-3px)}}.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}#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 srgb, 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 srgb, 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 srgb, var(--bg) 90%, transparent);border:1px solid color-mix(in srgb, var(--text) 10%, transparent);opacity:.65}.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 srgb, 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 srgb, 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-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}[data-theme=light] .pabc-roadmap{background:linear-gradient(135deg, var(--surface) 0%, color-mix(in srgb, 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 srgb, 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 srgb, 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)}.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-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 srgb, var(--border) 60%, var(--accent))}.settings-group h4{color:var(--text-dim);font-size:11px;font-family:var(--font-display);letter-spacing:.5px;margin-bottom:8px}.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 srgb, var(--accent) 10%, var(--bg))}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-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 srgb, var(--accent) 10%, var(--bg))}.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{font-size:16px}.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}.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 srgb, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(24px)saturate(1.5);border:1px solid color-mix(in srgb, 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 srgb, 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}.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 srgb, var(--accent) 8%, var(--surface));white-space:nowrap;border-bottom:2px solid color-mix(in srgb, var(--accent) 25%, var(--border));font-weight:600}.table-wrapper tr:nth-child(2n) td{background:color-mix(in srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, 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:4px 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 srgb, 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-zoom-btn{background:color-mix(in srgb, var(--text) 10%, transparent);border:1px solid color-mix(in srgb, 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 srgb, var(--text) 20%, transparent);color:var(--text)}.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 srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, 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 srgb, var(--border) 70%, transparent);background:color-mix(in srgb, 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)}@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 srgb, 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 srgb, 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 auto minmax(0,1fr) 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-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 srgb, var(--accent) 15%, transparent);color:var(--accent)}.process-step-badge.tool{background:color-mix(in srgb, var(--warning) 15%, transparent);color:var(--warning)}.process-step-badge.search{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success)}.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)}.process-step.expanded .process-step-chevron{transform:rotate(90deg)}.process-step-details{border-left:1px solid color-mix(in srgb, var(--border) 70%, transparent);background:color-mix(in srgb, 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}@media (prefers-reduced-motion:reduce){.process-dot.running,.process-step-dot.running{animation:none}}
|
|
@@ -0,0 +1,49 @@
|
|
|
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,t}from"./vendor-render-D2YP6GiF.js";import{t as n}from"./state-O6NVkWcL.js";import{Z as r}from"./vendor-mermaid-COidH9HB.js";import{a as i,c as a,o,s,t as c}from"./render-YHvL5VM_.js";import{_ as l,g as ee,h as u,n as d,o as te,p as ne,s as re,t as f}from"./ui-BukgLHuh.js";import{n as ie,r as p,t as m}from"./api-B8XKQ4OT.js";import{t as ae}from"./ws-S_AZgx7L.js";import{t as oe}from"./locale-BjoAcbis.js";import{a as se,i as ce,n as le,o as ue,r as de,t as fe}from"./slash-commands-DMsE88bu.js";import{i as pe,t as me}from"./skills-BI7sQAdk.js";import{a as he,r as ge}from"./constants-DshMUJbo.js";import{A as _e,C as ve,D as ye,E as be,O as xe,T as h,a as Se,c as Ce,f as we,g,h as Te,i as Ee,j as De,k as Oe,l as ke,m as Ae,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as _,u as Ie,w as Le,x as Re,y as ze}from"./settings-BQF_u5px.js";var v=[];async function y(){let e=document.getElementById(`chatInput`),t=document.getElementById(`btnSend`);if(!e||!t)return;let i=document.activeElement===t;if(t.classList.contains(`stop-mode`)&&i&&!e.value.trim()&&!n.attachedFiles.length){ie(`/api/stop`,`POST`);return}let o=e.value.trim();if(!o&&!n.attachedFiles.length)return;let s=o.slice(1).trim().split(/\s+/)[0]||``,c=s.includes(`/`)||s.includes(`\\`);if(o.startsWith(`/`)&&!n.attachedFiles.length&&!c){e.value=``,C(),fe();try{let e,t;if(typeof AbortSignal?.timeout==`function`)e=AbortSignal.timeout(1e4);else{let n=new AbortController;e=n.signal,t=setTimeout(()=>n.abort(),1e4)}let n=oe(),r=await fetch(`/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`,"Accept-Language":n},body:JSON.stringify({text:o,locale:n}),signal:e});t&&clearTimeout(t);let i=await r.json().catch(()=>({}));if(i?.code===`not_command`){f(`user`,o),await p(`/api/message`,`POST`,{prompt:o});return}if(!r.ok&&!i?.text)throw Error(`HTTP ${r.status}`);if(i?.code===`clear_screen`){u().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``)}i?.text&&d(i.text,``,i.type)}catch(e){d(a(`chat.cmd.fail`,{msg:e.message}),``,`error`)}return}if(n.attachedFiles.length){f(`user`,`[π ${n.attachedFiles.map(e=>e.name).join(`, `)}] ${o}`),e.value=``,C();try{let e=(await Promise.all(n.attachedFiles.map(e=>Ve(e)))).map(e=>a(`chat.file.sent`,{path:e})).join(`
|
|
3
|
+
`);o&&(e+=a(`chat.file.sentWithMsg`,{text:o})),x(),await p(`/api/message`,`POST`,{prompt:e})}catch(e){d(a(`chat.file.uploadFail`,{msg:e.message})),x()}}else{f(`user`,o),e.value=``,C();let t=await fetch(`/api/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:o})}),n=await t.json().catch(()=>({}));if(!t.ok){d(`β ${n.error||a(`chat.requestFail`,{status:t.status})}`,``,`error`);return}if(n.queued){let{updateQueueBadge:e}=await r(async()=>{let{updateQueueBadge:e}=await import(`./ui-Bvz1JfTE.js`);return{updateQueueBadge:e}},__vite__mapDeps([0]));e(n.pending||1)}else n.continued&&d(a(`chat.continue`))}}function Be(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),y())}async function Ve(e){let t=await fetch(`/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 b(e){for(let t of e)n.attachedFiles.some(e=>e.name===t.name)||n.attachedFiles.push(t);S(),document.getElementById(`chatInput`)?.focus()}function He(e){n.attachedFiles.splice(e,1),S()}function x(){v.forEach(e=>URL.revokeObjectURL(e)),v=[],n.attachedFiles=[],S();let e=document.getElementById(`fileInput`);e&&(e.value=``)}function S(){let e=document.getElementById(`filePreview`),t=document.getElementById(`filePreviewList`);if(e){if(v.forEach(e=>URL.revokeObjectURL(e)),v=[],!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);v.push(t),i=`<img src="${t}" class="file-chip-thumb" alt="">`}return`<div class="file-chip">
|
|
4
|
+
${i}
|
|
5
|
+
<span class="file-chip-name">π ${c(e.name)} (${n}KB)</span>
|
|
6
|
+
<button class="file-chip-remove" data-file-idx="${t}" title="Remove">β</button>
|
|
7
|
+
</div>`}).join(``))}}async function Ue(){ie(`/api/clear`,`POST`),u().clear();let e=document.getElementById(`chatMessages`);e&&(e.innerHTML=``);let{cleanupToolActivity:t}=await r(async()=>{let{cleanupToolActivity:e}=await import(`./ui-Bvz1JfTE.js`);return{cleanupToolActivity:e}},__vite__mapDeps([0]));t(),ee().catch(()=>{})}function We(e){e.style.height=`auto`,e.style.height=e.scrollHeight+`px`}function Ge(){let e=document.getElementById(`chatInput`);e&&e.addEventListener(`input`,()=>We(e))}function C(){let e=document.getElementById(`chatInput`);e&&(e.style.height=`auto`)}function Ke(){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&&b(r)}),document.getElementById(`fileInput`)?.addEventListener(`change`,e=>{let t=e.target,n=[...t.files||[]];n.length&&b(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(),b(n))})}async function qe(e,t,r){let i=document.getElementById(`chatInput`),o=i?.value.trim()||``,s=[...n.attachedFiles],c=[`π€ [μμ± λ©μμ§]`];s.length&&c.push(`[π ${s.map(e=>e.name).join(`, `)}]`),o&&c.push(o),f(`user`,c.join(` `)),i&&o&&(i.value=``,C()),s.length&&x();try{let n=await fetch(`/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 i=await n.json().catch(()=>null);if(!i?.text)throw Error(`Empty STT result`);d(`π€ STT (${i.engine}, ${i.elapsed?.toFixed(1)}s): "${i.text.slice(0,100)}"`,``,`info`);let c=[];s.length&&(c=await Promise.all(s.map(e=>Ve(e))));let l=[];for(let e of c)l.push(a(`chat.file.sent`,{path:e}));l.push(`π€ ${i.text}`),o&&l.push(o),await p(`/api/message`,`POST`,{prompt:l.join(`
|
|
8
|
+
`)})}catch(e){d(a(`voice.sttFail`,{msg:e.message}),``,`error`)}}var Je={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},Ye={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 Xe(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 Ze(e){let t=e&&typeof e==`object`?e:{},n=t.kind,r=typeof t.timeZone==`string`?t.timeZone.trim():``,i=Xe(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=Qe(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 Qe(e){try{let[t,n,r,i,a]=$e(e);return w(t,{min:0,max:59}),w(n,{min:0,max:23}),w(r,{min:1,max:31}),w(i,{min:1,max:12,aliases:Ye}),w(a,{min:0,max:7,aliases:Je,normalize:nt}),null}catch(e){return e.message}}function $e(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 w(e,t){for(let n of e.split(`,`))et(n.trim(),t)}function et(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,tt(r,`invalid cron step "${r}"`)}if(n!==`*`){if(n.includes(`-`)){let[e,r,...i]=n.split(`-`);if(!e||!r||i.length>0||T(e,t)>T(r,t))throw Error(`invalid cron range "${n}"`);return}T(n,t)}}function T(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(!rt(i,t.min,t.max))throw Error(`cron value "${e}" out of range ${t.min}-${t.max}`);return i}function tt(e,t){let n=Number(e);if(!Number.isInteger(n)||n<=0)throw Error(t);return n}function nt(e){return e===7?0:e}function rt(e,t,n){return e>=t&&e<=n}async function it(){n.heartbeatJobs=((await m(`/api/heartbeat`))?.jobs||[]).map(O),n.heartbeatErrors=A(n.heartbeatJobs),E(),document.getElementById(`heartbeatModal`)?.classList.add(`open`)}function at(e){e&&e.target!==e.currentTarget||document.getElementById(`heartbeatModal`)?.classList.remove(`open`)}function E(){let e=document.getElementById(`hbJobsList`);if(!e)return;let t=n.heartbeatJobs.map(O);n.heartbeatJobs=t,n.heartbeatErrors=A(t),t.length===0?e.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">${a(`hb.empty`)}</p>`:e.innerHTML=t.map((e,t)=>{let r=ut(e.schedule),i=r.kind===`cron`,o=n.heartbeatErrors[e.id],s=o||gt(r),l=o?`hb-schedule-meta hb-error`:`hb-schedule-meta hb-help`,ee=i?`<input type="text" value="${c(r.cron)}" placeholder="${c(a(`hb.cronPlaceholder`))}"
|
|
9
|
+
data-hb-cron="${t}">`:`<input type="number" value="${r.minutes}" min="1" data-hb-minutes="${t}">`,u=i?`<span class="hb-chip">${c(a(`hb.cronLabel`))}</span>`:`<span class="hb-chip">${c(a(`hb.minutesLabel`))}</span>`;return`
|
|
10
|
+
<div class="hb-job-card">
|
|
11
|
+
<div class="hb-job-header">
|
|
12
|
+
<input type="text" value="${c(String(e.name||``))}" placeholder="${c(a(`hb.name`))}"
|
|
13
|
+
data-hb-name="${t}">
|
|
14
|
+
<button class="hb-toggle ${e.enabled?`on`:`off`}"
|
|
15
|
+
data-hb-toggle="${t}" aria-label="${c(String(e.name||`job`)+` toggle`)}"></button>
|
|
16
|
+
<button class="hb-del" data-hb-remove="${t}">β</button>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="hb-job-schedule">
|
|
19
|
+
<select data-hb-kind="${t}">
|
|
20
|
+
<option value="every"${i?``:` selected`}>${c(a(`hb.kindEvery`))}</option>
|
|
21
|
+
<option value="cron"${i?` selected`:``}>${c(a(`hb.kindCron`))}</option>
|
|
22
|
+
</select>
|
|
23
|
+
${ee}
|
|
24
|
+
${u}
|
|
25
|
+
<input type="text" value="${c(r.timeZone||``)}" placeholder="${c(pt())}"
|
|
26
|
+
data-hb-timezone="${t}">
|
|
27
|
+
</div>
|
|
28
|
+
<p class="${l}">${c(s)}</p>
|
|
29
|
+
<textarea class="hb-prompt" rows="2" placeholder="${c(a(`hb.prompt`))}"
|
|
30
|
+
data-hb-prompt="${t}">${c(String(e.prompt||``))}</textarea>
|
|
31
|
+
</div>
|
|
32
|
+
`}).join(``);let r=t.filter(e=>e.enabled).length,i=document.getElementById(`hbSidebarBtn`);i&&(i.textContent=`π Heartbeat (${r})`)}function ot(){n.heartbeatJobs.push({id:`hb_`+Date.now(),name:``,enabled:!0,schedule:ft({kind:`every`,minutes:5}),prompt:``}),E(),D()}function st(e){n.heartbeatJobs.splice(e,1),E(),D()}function ct(e){let t=n.heartbeatJobs[e];t&&(t.enabled=!t.enabled,E(),D())}async function D(){let e=n.heartbeatJobs.map(O);if(n.heartbeatJobs=e,n.heartbeatErrors=A(e),Object.keys(n.heartbeatErrors).length>0){E();return}let t=await p(`/api/heartbeat`,`PUT`,{jobs:e});t?.jobs&&(n.heartbeatJobs=t.jobs.map(O),n.heartbeatErrors=A(n.heartbeatJobs),E())}async function lt(){try{let e=((await m(`/api/heartbeat`))?.jobs||[]).map(O).filter(e=>e.enabled).length,t=document.getElementById(`hbSidebarBtn`);t&&(t.textContent=`π Heartbeat (${e})`)}catch{}}function O(e){return{id:String(e.id||`hb_${Date.now()}`),name:String(e.name||``),enabled:e.enabled!==!1,schedule:ut(e.schedule),prompt:String(e.prompt||``)}}function ut(e){let t=dt(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 dt(e){return(typeof e==`string`?e.trim():``)||void 0}function ft(e){let t=k();return t?{...e,timeZone:t}:e}function k(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function pt(){let e=k();return e?`${a(`hb.timezoneAuto`)} ${e}`:a(`hb.timezoneAuto`)}function A(e){let t={};for(let n of e){let e=mt(n);e&&(t[n.id]=e)}return t}function mt(e){let t=Ze(e.schedule);return t.ok?null:ht(t.code,t.error)}function ht(e,t){switch(e){case`invalid_cron`:return a(`hb.invalidCron`);case`invalid_timezone`:return a(`hb.invalidTimeZone`);case`invalid_minutes`:return a(`hb.invalidMinutes`);default:return t||a(`hb.invalidSchedule`)}}function gt(e){let t=e.timeZone||k()||`Asia/Seoul`;return e.kind===`cron`?a(`hb.scheduleHintCron`,{cron:`0 9 * * *`,timeZone:t}):a(`hb.scheduleHintEvery`,{minutes:e.minutes,timeZone:t})}function j(e){return document.getElementById(e)}function M(e,t){let n=j(e);n&&(n.textContent=t==null?``:String(t))}function N(e,t){let n=j(e);n&&(n.value=t==null?``:String(t))}function _t(e,t){let n=j(`memorySidebarBtn`);n&&(n.textContent=`π§ Memory Β· ${e?.indexState===`ready`?`Ready`:e?.state===`not_initialized`?`Indexing`:e?.state||`(${t})`}`)}function vt(e){let t=j(`advStatusBanner`);if(t){if(!e?.enabled){t.style.display=`none`,t.textContent=``;return}if(t.style.display=``,e.state===`not_initialized`){t.textContent=`Integrated memory is preparing its index. Temporary fallback memory context is active until initialization completes.`;return}if(e.indexState===`not_indexed`){t.textContent=`Integrated memory is configured. Indexed search/read will activate after indexing becomes available.`;return}t.textContent=`Memory active. search/read=${e.routing?.searchRead||`basic`} / save=${e.routing?.save||`basic`}`}}function yt(e,t=!0){let n=j(`advStatusBanner`);n&&(n.style.display=t?``:`none`,n.textContent=e)}function P(e){for(let t of[`advBootstrapBtn`,`advReindexBtn`,`advReimportBtn`,`advOpenCorruptedBtn`]){let n=j(t);n&&(n.disabled=e)}}function bt(e){j(`memOn`)?.classList.toggle(`active`,e.enabled),j(`memOff`)?.classList.toggle(`active`,!e.enabled),N(`memFlushEvery`,e.flushEvery),N(`memCli`,e.cli||``),N(`memModel`,e.model||``),N(`memRetention`,e.retentionDays),M(`memPath`,e.path),M(`memCounter`,e.counter),M(`memThreshold`,e.flushEvery)}function xt(e){let t=j(`memTabBtnSettings`),n=j(`memTabSettings`);!t||!n||(t.style.display=``,n.style.display||(n.style.display=``))}function St(e){M(`advIndexState`,e?.indexState||e?.state||`-`),M(`advStorageRoot`,e?.storageRoot||`-`),M(`advIndexedFiles`,e?.indexedFiles||0),M(`advIndexedChunks`,e?.indexedChunks||0),M(`advLastIndexedAt`,e?.lastIndexedAt||`-`),M(`advImportStatus`,e?.importStatus||`-`),M(`advCorruptedCount`,e?.corruptedCount||0),M(`advLastExpansion`,(e?.lastExpansion||[]).join(`, `)||`-`),M(`advLastError`,e?.lastError||`-`);let t=e?.importedCounts||{};M(`advImportStatus`,`${e?.importStatus||`-`} (core:${t.core||0} md:${t.markdown||0} kv:${t.kv||0} claude:${t.claude||0})`)}function Ct(e){let t=j(`basicMemoryFiles`);if(t){if(!e?.length){t.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">No memory files yet</p>`;return}t.innerHTML=e.map(e=>`
|
|
33
|
+
<div style="display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border:1px solid var(--border);border-radius:4px;margin-bottom:4px;cursor:pointer"
|
|
34
|
+
data-mem-view="${c(e.name)}">
|
|
35
|
+
<div>
|
|
36
|
+
<span style="font-size:12px;font-family:monospace">${c(e.name)}</span>
|
|
37
|
+
<span style="font-size:10px;color:var(--accent);margin-left:6px">${e.entries} entries</span>
|
|
38
|
+
</div>
|
|
39
|
+
<button data-mem-delete="${c(e.name)}" style="background:none;border:none;color:#f55;cursor:pointer;font-size:14px">ποΈ</button>
|
|
40
|
+
</div>
|
|
41
|
+
`).join(``)}}function F(e,t){let n=j(e);if(n){if(!t?.length){n.innerHTML=`<p style="color:var(--text-dim);font-size:12px;text-align:center">No files</p>`;return}n.innerHTML=t.map(e=>`<div style="padding:6px 8px;border:1px solid var(--border);border-radius:4px;margin-bottom:4px">
|
|
42
|
+
<span style="font-size:12px;font-family:monospace">${c(e)}</span>
|
|
43
|
+
</div>`).join(``)}}function wt(e){F(`advancedMemoryFiles`,[...e?.sections?.profile||[],...e?.sections?.shared||[],...e?.sections?.episodes||[],...e?.sections?.semantic||[],...e?.sections?.procedures||[],...e?.sections?.sessions||[]]),F(`corruptedMemoryFiles`,e?.sections?.corrupted||[]),F(`legacyUnmappedFiles`,e?.sections?.legacyUnmapped||[])}function Tt(){return{importCore:j(`advImportCore`)?.checked!==!1,importMarkdown:j(`advImportMarkdown`)?.checked!==!1,importKv:j(`advImportKv`)?.checked!==!1,importClaudeSession:j(`advImportClaudeSession`)?.checked!==!1}}async function Et(){let[e,t,n]=await Promise.all([m(`/api/memory-files`),m(`/api/memory/status`),m(`/api/memory/files`)]);return{basic:e,status:t,files:n}}async function I(){let{basic:e,status:t,files:n}=await Et();e&&(bt(e),xt(t),vt(t),St(t),Ct(e.files),wt(n),_t(t,e.files.length),j(`memoryModal`)?.classList.add(`open`),L(`status`))}function Dt(e){e&&e.target!==e.currentTarget||j(`memoryModal`)?.classList.remove(`open`)}function L(e){let t={settings:`memTabSettings`,status:`memTabAdvOps`,files:`memTabFiles`};for(let n of Object.values(t)){let r=j(n);r&&(r.style.display=n===t[e]?``:`none`)}j(`memTabBtnSettings`)?.classList.toggle(`active`,e===`settings`),j(`memTabBtnAdvOps`)?.classList.toggle(`active`,e===`status`),j(`memTabBtnFiles`)?.classList.toggle(`active`,e===`files`),j(`memTabBtnSettings`)?.setAttribute(`aria-selected`,String(e===`settings`)),j(`memTabBtnAdvOps`)?.setAttribute(`aria-selected`,String(e===`status`)),j(`memTabBtnFiles`)?.setAttribute(`aria-selected`,String(e===`files`))}async function Ot(e){j(`memOn`)?.classList.toggle(`active`,e),j(`memOff`)?.classList.toggle(`active`,!e),await p(`/api/memory-files/settings`,`PUT`,{enabled:e})}async function R(){let e=j(`memFlushEvery`),t=j(`memCli`),n=j(`memModel`),r=j(`memRetention`);await p(`/api/memory-files/settings`,`PUT`,{flushEvery:+(e?.value||10),cli:t?.value||``,model:n?.value||``,retentionDays:+(r?.value||30)});let i=j(`memThreshold`);i&&e&&(i.textContent=e.value)}async function kt(){P(!0),yt(`λ©λͺ¨λ¦¬ bootstrapμ λ€μ μ€ννλ μ€...`,!0);let e=await p(`/api/memory/bootstrap`,`POST`,Tt());P(!1),e?.message&&alert(e.message),await I(),L(`status`)}async function At(){P(!0),yt(`λ©λͺ¨λ¦¬ μΈλ±μ€λ₯Ό μ¬μμ±νλ μ€...`,!0);let e=await p(`/api/memory/reindex`,`POST`,{});P(!1),e?.message&&alert(e.message),await I(),L(`status`)}function jt(){let e=j(`advStorageRoot`)?.textContent||``,t=e?`${e}/corrupted`:`JAW_HOME/memory/structured/corrupted`;navigator.clipboard?.writeText&&navigator.clipboard.writeText(t).catch(()=>{}),alert(`Corrupted folder path copied/shown:\n${t}`)}async function Mt(e){confirm(`Delete `+e+`?`)&&(await p(`/api/memory-file?path=`+encodeURIComponent(e),`DELETE`,{}),I())}async function Nt(e){let t=await m(`/api/memory-file?path=`+encodeURIComponent(e));if(!t)return;let n=j(`basicMemoryFiles`);n&&(n.innerHTML=`
|
|
44
|
+
<div style="margin-bottom:8px;display:flex;justify-content:space-between;align-items:center">
|
|
45
|
+
<span style="font-size:12px;font-weight:600">${c(t.name)}</span>
|
|
46
|
+
<button data-mem-back style="background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px">β back</button>
|
|
47
|
+
</div>
|
|
48
|
+
<pre style="background:var(--bg);padding:8px;border-radius:4px;font-size:11px;white-space:pre-wrap;max-height:50vh;overflow-y:auto;color:var(--text)">${c(t.content)}</pre>
|
|
49
|
+
`)}var z=`sidebarState`,B=900;function Pt(){let e={};try{e=JSON.parse(localStorage.getItem(z)||`{}`)}catch{}e.left&&document.body.classList.add(`left-collapsed`),e.right&&document.body.classList.add(`right-collapsed`),document.getElementById(`toggleLeft`)?.addEventListener(`click`,H),document.getElementById(`toggleRight`)?.addEventListener(`click`,U),window.addEventListener(`resize`,()=>{if(window.innerWidth>B){document.body.classList.remove(`left-expanded`,`right-expanded`);let e={};try{e=JSON.parse(localStorage.getItem(z)||`{}`)}catch{}document.body.classList.toggle(`left-collapsed`,!!e.left),document.body.classList.toggle(`right-collapsed`,!!e.right)}else document.body.classList.remove(`left-collapsed`,`right-collapsed`);W()}),window.innerWidth<=B&&document.body.classList.remove(`left-collapsed`,`right-collapsed`),W()}function V(){return window.innerWidth<=B}function H(){V()?document.body.classList.toggle(`left-expanded`):document.body.classList.toggle(`left-collapsed`),Lt(),W()}function U(){V()?document.body.classList.toggle(`right-expanded`):document.body.classList.toggle(`right-collapsed`),Lt(),W()}function Ft(){return V()?document.body.classList.contains(`left-expanded`):!document.body.classList.contains(`left-collapsed`)}function It(){return V()?document.body.classList.contains(`right-expanded`):!document.body.classList.contains(`right-collapsed`)}function W(){let e=document.getElementById(`toggleLeft`),t=document.getElementById(`toggleRight`);e&&(e.textContent=Ft()?`β`:`βΆ`),t&&(t.textContent=It()?`βΆ`:`β`)}function Lt(){localStorage.setItem(z,JSON.stringify({left:document.body.classList.contains(`left-collapsed`),right:document.body.classList.contains(`right-collapsed`)}))}var Rt=`theme`,G=null;function zt(n){let r=n===`light`?t:e;G||(G=document.createElement(`style`),G.id=`hljsTheme`,document.head.appendChild(G)),G.textContent=r}function Bt(){let e=localStorage.getItem(Rt),t=window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;Ht(e||t),document.getElementById(`toggleTheme`)?.addEventListener(`click`,Vt)}function Vt(){let e=(document.documentElement.getAttribute(`data-theme`)||`dark`)===`dark`?`light`:`dark`;Ht(e),localStorage.setItem(Rt,e)}function Ht(e){document.documentElement.setAttribute(`data-theme`,e);let t=document.getElementById(`toggleTheme`);t&&t.classList.toggle(`is-light`,e===`light`),zt(e)}var Ut=50,Wt=30,Gt=80,Kt=500,K=null,qt=!1;function Jt(){if(qt||!(`ontouchstart`in window))return;qt=!0;let e=document.querySelector(`.chat-area`);e&&(e.addEventListener(`touchstart`,Yt,{passive:!0}),e.addEventListener(`touchend`,Xt,{passive:!0}))}function Yt(e){let t=e.touches[0],n=window.innerWidth,r=null;t.clientX<Wt?r=`left`:t.clientX>n-Wt&&(r=`right`),K={startX:t.clientX,startY:t.clientY,startTime:Date.now(),isEdge:r}}function Xt(e){if(!K)return;let t=e.changedTouches[0],n=t.clientX-K.startX,r=Math.abs(t.clientY-K.startY),i=Date.now()-K.startTime,a=K;K=null,!(r>Gt||i>Kt||Math.abs(n)<Ut)&&(n>0&&a.isEdge===`left`&&H(),n<0&&a.isEdge===`right`&&U())}var q=!1,J=null,Y=[],X=null,Zt=null,Qt=0;function $t(){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 en(e){let t=e;switch(t.name){case`NotAllowedError`:return a(`voice.micDenied`);case`NotFoundError`:return a(`voice.micNotFound`);case`NotReadableError`:case`AbortError`:return a(`voice.micBusy`);default:return t instanceof TypeError||!navigator.mediaDevices?a(`voice.httpsRequired`):a(`voice.micDenied`)}}async function tn(){if(n.isRecording)return;if(typeof MediaRecorder>`u`||!navigator.mediaDevices?.getUserMedia){d(a(`voice.unsupported`),``,`error`);return}try{X=await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){d(en(e),``,`error`);return}let e=$t();J=new MediaRecorder(X,e?{mimeType:e}:{}),Y=[],J.ondataavailable=e=>{e.data.size>0&&Y.push(e.data)},J.onerror=()=>{nn(),d(a(`voice.interrupted`),``,`error`)},J.onstop=async()=>{if(q){Y=[],on(),q=!1;return}let t=J?.mimeType||e||`audio/webm`,n=t.includes(`mp4`)?`.m4a`:t.includes(`ogg`)?`.ogg`:`.webm`,r=new Blob(Y,{type:t});if(Y=[],on(),r.size>20*1024*1024){d(a(`voice.tooLarge`),``,`error`);return}if(r.size<1e3){d(a(`voice.tooShort`),``,`error`);return}await qe(r,n,t)},J.start(),n.isRecording=!0,Qt=Date.now(),ln(!0),sn()}function nn(){!n.isRecording||!J||(J.state===`recording`&&J.stop(),n.isRecording=!1,cn(),ln(!1))}function rn(){!n.isRecording||!J||(q=!0,J.state===`recording`&&J.stop(),n.isRecording=!1,cn(),ln(!1))}function an(){n.isRecording?nn():tn()}function on(){X?.getTracks().forEach(e=>e.stop()),X=null}function sn(){let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`inline`,Zt=setInterval(()=>{let t=Math.floor((Date.now()-Qt)/1e3);e.textContent=`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},500))}function cn(){Zt&&=(clearInterval(Zt),null);let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`none`,e.textContent=`00:00`)}function ln(e){let t=document.getElementById(`btnVoice`),n=document.getElementById(`btnVoiceCancel`);t&&(t.classList.toggle(`recording`,e),t.textContent=e?`βΉ`:`π€`,t.title=a(e?`voice.stop`:`voice.start`)),n&&(n.style.display=e?`inline-block`:`none`)}window.addEventListener(`unhandledrejection`,e=>{console.error(`[unhandled]`,e.reason),e.preventDefault()}),window.addEventListener(`error`,e=>{console.error(`[error]`,e.message,e.filename,e.lineno)});var{loadEmployees:un,addEmployee:dn,deleteEmployee:fn,updateEmployee:Z,onEmpCliChange:pn,onEmpRoleChange:mn}=await r(async()=>{let{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}=await import(`./employees-CFRlsbHm.js`);return{loadEmployees:e,addEmployee:t,deleteEmployee:n,updateEmployee:r,onEmpCliChange:i,onEmpRoleChange:a}},__vite__mapDeps([0]));document.getElementById(`btnSend`)?.addEventListener(`click`,y);var Q=document.getElementById(`chatInput`);Q?.addEventListener(`keydown`,e=>{de(e)||Be(e)});var $=0;Q?.addEventListener(`input`,e=>{e.isComposing||($&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{ue(e.target?.value||``),$=0}))}),Q?.addEventListener(`cmd-execute`,()=>{y()}),document.getElementById(`cmdDropdown`)?.addEventListener(`click`,le),document.addEventListener(`click`,ce),document.getElementById(`filePreviewClear`)?.addEventListener(`click`,x),document.getElementById(`filePreviewList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-file-idx]`);t&&He(+(t.dataset.fileIdx||`0`))}),document.querySelector(`.btn-attach`)?.addEventListener(`click`,()=>{document.getElementById(`fileInput`)?.click()}),document.getElementById(`btnVoice`)?.addEventListener(`click`,()=>an()),document.getElementById(`btnVoiceCancel`)?.addEventListener(`click`,()=>rn()),document.getElementById(`memorySidebarBtn`)?.addEventListener(`click`,I),document.getElementById(`btnClearChat`)?.addEventListener(`click`,Ue),document.getElementById(`hbSidebarBtn`)?.addEventListener(`click`,it),document.getElementById(`langToggle`)?.addEventListener(`click`,async()=>{let e=i()===`ko`?`en`:`ko`;await s(e);let t=document.getElementById(`langToggle`);t&&(t.textContent=`π ${a(`lang.`+e)}`),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]&&ne(r[n],t)}),document.querySelector(`.sidebar-save-bar .btn-save`)?.addEventListener(`click`,te),document.getElementById(`selCli`)?.addEventListener(`change`,()=>Ae()),document.getElementById(`selModel`)?.addEventListener(`change`,()=>Te()),document.getElementById(`selEffort`)?.addEventListener(`change`,()=>Te()),document.querySelector(`[data-action="addEmployee"]`)?.addEventListener(`click`,dn),document.getElementById(`employeesList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-emp-delete]`);if(t){fn(t.dataset.empDelete||``);return}}),document.getElementById(`employeesList`)?.addEventListener(`change`,e=>{let t=e.target,n=t.closest(`[data-emp-name]`);if(n){Z(n.dataset.empName||``,{name:t.value});return}let r=t.closest(`[data-emp-cli]`);if(r){pn(r.dataset.empCli||``,t.value);return}let i=t.closest(`[data-emp-model]`);if(i){if(t.value===`__custom__`){let e=prompt(a(`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(),Z(i.dataset.empModel||``,{model:e.trim()})}else t.value=`default`}else Z(i.dataset.empModel||``,{model:t.value});return}let o=t.closest(`[data-emp-role]`);if(o){mn(o.dataset.empRole||``,t.value);return}let s=t.closest(`[data-emp-custom]`);if(s){Z(s.dataset.empCustom||``,{role:t.value});return}}),document.getElementById(`skillsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-skill-id]`);t&&pe(t.dataset.skillId||``,t.dataset.skillEnabled===`true`)}),document.querySelector(`#tabSkills`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`.skill-filter`);t&&me(t.dataset.filter||`all`,t)}),document.querySelector(`[data-action="openPrompt"]`)?.addEventListener(`click`,Pe),document.getElementById(`tgOff`)?.addEventListener(`click`,()=>De(!1)),document.getElementById(`tgOn`)?.addEventListener(`click`,()=>De(!0)),document.getElementById(`tgForwardOff`)?.addEventListener(`click`,()=>_e(!1)),document.getElementById(`tgForwardOn`)?.addEventListener(`click`,()=>_e(!0)),document.getElementById(`tgToken`)?.addEventListener(`change`,Oe),document.getElementById(`tgChatIds`)?.addEventListener(`change`,Oe),document.getElementById(`chTelegram`)?.addEventListener(`click`,()=>Le(`telegram`)),document.getElementById(`chDiscord`)?.addEventListener(`click`,()=>Le(`discord`)),document.getElementById(`dcOff`)?.addEventListener(`click`,()=>be(!1)),document.getElementById(`dcOn`)?.addEventListener(`click`,()=>be(!0)),document.getElementById(`dcForwardOff`)?.addEventListener(`click`,()=>xe(!1)),document.getElementById(`dcForwardOn`)?.addEventListener(`click`,()=>xe(!0)),document.getElementById(`dcAllowBotsOff`)?.addEventListener(`click`,()=>ye(!1)),document.getElementById(`dcAllowBotsOn`)?.addEventListener(`click`,()=>ye(!0)),document.getElementById(`dcToken`)?.addEventListener(`change`,h),document.getElementById(`dcGuildId`)?.addEventListener(`change`,h),document.getElementById(`dcChannelIds`)?.addEventListener(`change`,h),document.getElementById(`fallbackOrderList`)?.addEventListener(`change`,ve);function hn(e){let t=document.getElementById(`codexFastOn`),n=document.getElementById(`codexFastOff`);t&&n&&(t.classList.toggle(`active`,e),n.classList.toggle(`active`,!e)),g()}document.getElementById(`codexFastOn`)?.addEventListener(`click`,()=>hn(!0)),document.getElementById(`codexFastOff`)?.addEventListener(`click`,()=>hn(!1));function gn(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`),g()}document.getElementById(`codexCtxOn`)?.addEventListener(`click`,()=>gn(!0)),document.getElementById(`codexCtxOff`)?.addEventListener(`click`,()=>gn(!1)),document.getElementById(`codexCtxWindow`)?.addEventListener(`change`,g),document.getElementById(`codexCtxCompact`)?.addEventListener(`change`,g);function _n(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)),g()}document.getElementById(`claude1mOn`)?.addEventListener(`click`,()=>_n(!0)),document.getElementById(`claude1mOff`)?.addEventListener(`click`,()=>_n(!1));function vn(){for(let e of ge()){let t=e.charAt(0).toUpperCase()+e.slice(1),n=document.getElementById(`model`+t);n&&n.addEventListener(`change`,function(){we(e,this)});let r=document.getElementById(`customModel`+t);r&&r.addEventListener(`change`,function(){Ie(e,this)});let i=document.getElementById(`effort`+t);i&&i.addEventListener(`change`,g)}}document.querySelector(`[data-action="syncMcp"]`)?.addEventListener(`click`,Re),document.querySelector(`[data-action="installMcp"]`)?.addEventListener(`click`,ze),document.querySelector(`[data-action="refreshCli"]`)?.addEventListener(`click`,()=>ke(!0)),document.getElementById(`cliStatusInterval`)?.addEventListener(`change`,function(){localStorage.setItem(`cliStatusInterval`,this.value)}),document.getElementById(`promptModal`)?.addEventListener(`click`,e=>_(e)),document.querySelector(`#promptModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closePrompt"]`)?.addEventListener(`click`,()=>_()),document.querySelector(`[data-action="cancelPrompt"]`)?.addEventListener(`click`,()=>_()),document.querySelector(`[data-action="savePrompt"]`)?.addEventListener(`click`,Se),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!n.isRecording&&_()}),document.querySelector(`[data-action="openTemplates"]`)?.addEventListener(`click`,Ee),document.querySelector(`[data-action="saveTemplate"]`)?.addEventListener(`click`,Me),document.querySelector(`[data-action="closeTemplate"]`)?.addEventListener(`click`,()=>je()),document.getElementById(`templateModal`)?.addEventListener(`click`,e=>je(e)),document.querySelector(`#templateModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.getElementById(`templateBack`)?.addEventListener(`click`,Fe),document.getElementById(`templateDevToggle`)?.addEventListener(`click`,Ce),document.getElementById(`heartbeatModal`)?.addEventListener(`click`,e=>at(e)),document.querySelector(`#heartbeatModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeHeartbeat"]`)?.addEventListener(`click`,()=>at()),document.querySelector(`[data-action="addHeartbeat"]`)?.addEventListener(`click`,ot),document.getElementById(`hbJobsList`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-hb-toggle]`);if(t){ct(+(t.dataset.hbToggle||`0`));return}let n=e.target?.closest(`[data-hb-remove]`);if(n){st(+(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,D();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}:{}},E(),D();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}:{}},E(),D();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}:{}},E(),D();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()}:{}},E(),D();return}let c=t.closest(`[data-hb-prompt]`);if(c){n.heartbeatJobs[+(c.dataset.hbPrompt||`0`)].prompt=t.value,D();return}}),document.getElementById(`memoryModal`)?.addEventListener(`click`,e=>Dt(e)),document.querySelector(`#memoryModal .modal-box`)?.addEventListener(`click`,e=>e.stopPropagation()),document.querySelector(`[data-action="closeMemory"]`)?.addEventListener(`click`,()=>Dt()),document.getElementById(`memTabBtnSettings`)?.addEventListener(`click`,()=>L(`settings`)),document.getElementById(`memTabBtnAdvOps`)?.addEventListener(`click`,()=>L(`status`)),document.getElementById(`memTabBtnFiles`)?.addEventListener(`click`,()=>L(`files`)),document.getElementById(`memOn`)?.addEventListener(`click`,()=>Ot(!0)),document.getElementById(`memOff`)?.addEventListener(`click`,()=>Ot(!1)),document.getElementById(`memFlushEvery`)?.addEventListener(`change`,R),document.getElementById(`memCli`)?.addEventListener(`change`,R),document.getElementById(`memModel`)?.addEventListener(`change`,R),document.getElementById(`memRetention`)?.addEventListener(`change`,R),document.getElementById(`advBootstrapBtn`)?.addEventListener(`click`,kt),document.getElementById(`advReindexBtn`)?.addEventListener(`click`,At),document.getElementById(`advReimportBtn`)?.addEventListener(`click`,kt),document.getElementById(`advOpenCorruptedBtn`)?.addEventListener(`click`,jt),document.getElementById(`basicMemoryFiles`)?.addEventListener(`click`,e=>{let t=e.target?.closest(`[data-mem-delete]`);if(t){e.stopPropagation(),Mt(t.dataset.memDelete||``);return}let n=e.target?.closest(`[data-mem-view]`);if(n){Nt(n.dataset.memView||``);return}if(e.target?.closest(`[data-mem-back]`)){I();return}});async function yn(){await o();let e=document.getElementById(`langToggle`);e&&(e.textContent=`π ${a(`lang.`+i())}`),await he(),vn(),ae(),Ke(),Ge(),await se(),await Ne(),ke(),un(),lt(),l(),Pt(),Bt(),re(),Jt(),`serviceWorker`in navigator&&navigator.serviceWorker.register(`/sw.js`).catch(()=>{})}yn().catch(e=>{console.error(`[bootstrap]`,e)}),document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){if(n.isRecording){e.preventDefault(),rn();return}document.querySelectorAll(`.modal-overlay.open`).forEach(e=>{e.classList.remove(`open`)})}(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.code===`Space`&&(e.preventDefault(),an())}),document.getElementById(`mobileMenuLeft`)?.addEventListener(`click`,H),document.getElementById(`mobileMenuRight`)?.addEventListener(`click`,U);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{K as e}from"./vendor-mermaid-COidH9HB.js";export{e as createInfoServices};
|