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
|
@@ -12,7 +12,8 @@ const STORAGE_KEY = 'sidebarState';
|
|
|
12
12
|
const BREAKPOINT = 900;
|
|
13
13
|
|
|
14
14
|
export function initSidebar(): void {
|
|
15
|
-
|
|
15
|
+
let saved: SidebarState = {};
|
|
16
|
+
try { saved = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}'); } catch { /* corrupted */ }
|
|
16
17
|
if (saved.left) document.body.classList.add('left-collapsed');
|
|
17
18
|
if (saved.right) document.body.classList.add('right-collapsed');
|
|
18
19
|
|
|
@@ -23,7 +24,8 @@ export function initSidebar(): void {
|
|
|
23
24
|
window.addEventListener('resize', () => {
|
|
24
25
|
if (window.innerWidth > BREAKPOINT) {
|
|
25
26
|
document.body.classList.remove('left-expanded', 'right-expanded');
|
|
26
|
-
|
|
27
|
+
let s: SidebarState = {};
|
|
28
|
+
try { s = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}'); } catch { /* corrupted */ }
|
|
27
29
|
document.body.classList.toggle('left-collapsed', !!s.left);
|
|
28
30
|
document.body.classList.toggle('right-collapsed', !!s.right);
|
|
29
31
|
} else {
|
|
@@ -46,16 +46,17 @@ export function renderSkills(): void {
|
|
|
46
46
|
|
|
47
47
|
list.innerHTML = filtered.map(s => {
|
|
48
48
|
const reqParts: string[] = [];
|
|
49
|
-
if (s.requires?.env) reqParts.push('🔑 ' + s.requires.env.join(', '));
|
|
50
|
-
if (s.requires?.bins) reqParts.push('⚙️ ' + s.requires.bins.join(', '));
|
|
51
|
-
if (s.install) reqParts.push(s.install);
|
|
49
|
+
if (s.requires?.env) reqParts.push('🔑 ' + s.requires.env.map(e => escapeHtml(e)).join(', '));
|
|
50
|
+
if (s.requires?.bins) reqParts.push('⚙️ ' + s.requires.bins.map(b => escapeHtml(b)).join(', '));
|
|
51
|
+
if (s.install) reqParts.push(escapeHtml(s.install));
|
|
52
52
|
return `
|
|
53
53
|
<div class="skill-card ${s.enabled ? 'enabled' : ''}">
|
|
54
54
|
<div class="skill-card-header">
|
|
55
55
|
<span class="skill-emoji">${escapeHtml(s.emoji || '🔧')}</span>
|
|
56
56
|
<span class="skill-name">${escapeHtml(s.name || s.id)}</span>
|
|
57
57
|
<button class="skill-toggle ${s.enabled ? 'on' : 'off'}"
|
|
58
|
-
data-skill-id="${escapeHtml(s.id)}" data-skill-enabled="${s.enabled}"
|
|
58
|
+
data-skill-id="${escapeHtml(s.id)}" data-skill-enabled="${s.enabled}"
|
|
59
|
+
aria-label="${escapeHtml((s.name || s.id) + ' toggle')}"></button>
|
|
59
60
|
</div>
|
|
60
61
|
<div class="skill-desc">${escapeHtml(s.description || '')}</div>
|
|
61
62
|
${reqParts.length ? `<div class="skill-req">${reqParts.join(' · ')}</div>` : ''}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { getPreferredLocale } from '../locale.js';
|
|
3
3
|
import { t } from './i18n.js';
|
|
4
4
|
import { api } from '../api.js';
|
|
5
|
+
import { escapeHtml } from '../render.js';
|
|
5
6
|
|
|
6
7
|
interface SlashCommand {
|
|
7
8
|
name: string;
|
|
@@ -25,14 +26,6 @@ function looksLikeFilePath(text: string): boolean {
|
|
|
25
26
|
const dropdown = (): HTMLElement | null => document.getElementById('cmdDropdown');
|
|
26
27
|
const input = (): HTMLTextAreaElement | null => document.getElementById('chatInput') as HTMLTextAreaElement | null;
|
|
27
28
|
|
|
28
|
-
function escapeHtml(str: string): string {
|
|
29
|
-
return String(str || '')
|
|
30
|
-
.replace(/&/g, '&')
|
|
31
|
-
.replace(/</g, '<')
|
|
32
|
-
.replace(/>/g, '>')
|
|
33
|
-
.replace(/"/g, '"');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
29
|
function filterCommands(partial: string): SlashCommand[] {
|
|
37
30
|
const prefix = String(partial || '').toLowerCase();
|
|
38
31
|
return cmdList.filter(c => (`/${c.name}`).startsWith(prefix));
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
// ── Theme Toggle ──
|
|
2
2
|
// Dark/Light theme switching with localStorage persistence
|
|
3
|
-
//
|
|
3
|
+
// hljs themes bundled via npm (no CDN dependency)
|
|
4
|
+
|
|
5
|
+
import githubDark from 'highlight.js/styles/github-dark.css?inline';
|
|
6
|
+
import githubLight from 'highlight.js/styles/github.css?inline';
|
|
4
7
|
|
|
5
8
|
const STORAGE_KEY = 'theme';
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
let hljsStyleEl: HTMLStyleElement | null = null;
|
|
10
|
+
|
|
11
|
+
function applyHljsTheme(theme: string): void {
|
|
12
|
+
const css = theme === 'light' ? githubLight : githubDark;
|
|
13
|
+
if (!hljsStyleEl) {
|
|
14
|
+
hljsStyleEl = document.createElement('style');
|
|
15
|
+
hljsStyleEl.id = 'hljsTheme';
|
|
16
|
+
document.head.appendChild(hljsStyleEl);
|
|
17
|
+
}
|
|
18
|
+
hljsStyleEl.textContent = css;
|
|
19
|
+
}
|
|
8
20
|
|
|
9
21
|
export function initTheme(): void {
|
|
10
|
-
// Detect: localStorage → OS preference → default dark
|
|
11
22
|
const saved = localStorage.getItem(STORAGE_KEY);
|
|
12
23
|
const prefer = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
|
|
13
24
|
const theme = saved || prefer;
|
|
@@ -26,15 +37,10 @@ function toggleTheme(): void {
|
|
|
26
37
|
function applyTheme(theme: string): void {
|
|
27
38
|
document.documentElement.setAttribute('data-theme', theme);
|
|
28
39
|
|
|
29
|
-
// Update button icon (SVG sun/moon swap)
|
|
30
40
|
const btn = document.getElementById('toggleTheme');
|
|
31
41
|
if (btn) {
|
|
32
42
|
btn.classList.toggle('is-light', theme === 'light');
|
|
33
43
|
}
|
|
34
44
|
|
|
35
|
-
|
|
36
|
-
const hljsLink = document.getElementById('hljsTheme') as HTMLLinkElement | null;
|
|
37
|
-
if (hljsLink) {
|
|
38
|
-
hljsLink.href = theme === 'dark' ? HLJS_DARK : HLJS_LIGHT;
|
|
39
|
-
}
|
|
45
|
+
applyHljsTheme(theme);
|
|
40
46
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// ── Tool Use UI ──
|
|
2
|
+
// Phase 4/8: Tool call group rendering for agent messages
|
|
3
|
+
// Extracted from ui.ts for modularity.
|
|
4
|
+
|
|
5
|
+
import { escapeHtml } from '../render.js';
|
|
6
|
+
|
|
7
|
+
export interface ToolLogEntry {
|
|
8
|
+
icon: string;
|
|
9
|
+
label: string;
|
|
10
|
+
detail?: string;
|
|
11
|
+
toolType?: string;
|
|
12
|
+
stepRef?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function hasExpandableDetail(tl: ToolLogEntry): boolean {
|
|
16
|
+
const detail = (tl.detail || '').trim();
|
|
17
|
+
if (!detail) return false;
|
|
18
|
+
return detail !== (tl.label || '').trim();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function previewText(text: string, max = 100): string {
|
|
22
|
+
const singleLine = text.replace(/\s+/g, ' ').trim();
|
|
23
|
+
if (!singleLine) return '';
|
|
24
|
+
return singleLine.length > max ? `${singleLine.slice(0, max - 1)}…` : singleLine;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function renderToolItem(tl: ToolLogEntry, idx: number): string {
|
|
28
|
+
const icon = escapeHtml(tl.icon);
|
|
29
|
+
const label = escapeHtml(tl.label);
|
|
30
|
+
const detail = tl.detail || '';
|
|
31
|
+
const detailId = `tool-detail-${Date.now()}-${idx}`;
|
|
32
|
+
|
|
33
|
+
if (hasExpandableDetail(tl)) {
|
|
34
|
+
const snippet = previewText(detail);
|
|
35
|
+
const snippetHtml = snippet
|
|
36
|
+
? `<span class="tool-item-snippet">${escapeHtml(snippet)}</span>`
|
|
37
|
+
: '';
|
|
38
|
+
return `<div class="tool-item tool-item-expandable">
|
|
39
|
+
<button class="tool-item-toggle" aria-expanded="false" aria-controls="${detailId}">
|
|
40
|
+
<span class="tool-item-icon">${icon}</span>
|
|
41
|
+
<span class="tool-item-main">
|
|
42
|
+
<span class="tool-item-label">${label}</span>
|
|
43
|
+
${snippetHtml}
|
|
44
|
+
</span>
|
|
45
|
+
<span class="tool-item-chevron">▸</span>
|
|
46
|
+
</button>
|
|
47
|
+
<div class="tool-item-details collapsed" id="${detailId}">
|
|
48
|
+
<pre class="tool-item-full">${escapeHtml(detail)}</pre>
|
|
49
|
+
</div>
|
|
50
|
+
</div>`;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return `<div class="tool-item"><div class="tool-item-header"><span class="tool-item-icon">${icon}</span><span class="tool-item-label">${label}</span></div></div>`;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Build tool group HTML from finalized tool log entries */
|
|
57
|
+
export function buildToolGroupHtml(toolLog: ToolLogEntry[]): string {
|
|
58
|
+
if (!toolLog || toolLog.length === 0) return '';
|
|
59
|
+
|
|
60
|
+
const counts: Record<string, number> = {};
|
|
61
|
+
toolLog.forEach(tl => {
|
|
62
|
+
counts[tl.icon] = (counts[tl.icon] || 0) + 1;
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const summaryParts = Object.entries(counts)
|
|
66
|
+
.map(([icon, n]) => `${escapeHtml(icon)}×${n}`)
|
|
67
|
+
.join(' ');
|
|
68
|
+
|
|
69
|
+
const toolId = `td-${Date.now()}`;
|
|
70
|
+
|
|
71
|
+
const logLines = toolLog.map((tl, i) => renderToolItem(tl, i)).join('');
|
|
72
|
+
|
|
73
|
+
return `<div class="tool-group"><button class="tool-group-summary" aria-expanded="false" aria-controls="${toolId}"><span class="tool-status-dot done"></span><span class="tool-group-summary-text">${summaryParts}</span><span class="tool-group-chevron">▾</span></button><div class="tool-details collapsed" id="${toolId}">${logLines}</div></div>`;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Bind expand/collapse click handlers for tool items within a container */
|
|
77
|
+
export function bindToolItemInteractions(root: HTMLElement): void {
|
|
78
|
+
if (root.dataset.toolItemBound === '1') return;
|
|
79
|
+
root.addEventListener('click', (event) => {
|
|
80
|
+
const target = event.target as HTMLElement | null;
|
|
81
|
+
if (!target) return;
|
|
82
|
+
const toggle = target.closest('.tool-item-toggle') as HTMLElement | null;
|
|
83
|
+
if (!toggle) return;
|
|
84
|
+
const wrapper = toggle.closest('.tool-item');
|
|
85
|
+
const details = wrapper?.querySelector('.tool-item-details') as HTMLElement | null;
|
|
86
|
+
const chevron = toggle.querySelector('.tool-item-chevron');
|
|
87
|
+
if (!wrapper || !details) return;
|
|
88
|
+
const expanding = details.classList.contains('collapsed');
|
|
89
|
+
details.classList.toggle('collapsed', !expanding);
|
|
90
|
+
wrapper.classList.toggle('expanded', expanding);
|
|
91
|
+
toggle.setAttribute('aria-expanded', expanding ? 'true' : 'false');
|
|
92
|
+
if (chevron) chevron.textContent = expanding ? '▾' : '▸';
|
|
93
|
+
});
|
|
94
|
+
root.dataset.toolItemBound = '1';
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Show live tool activity indicator inside the current agent message */
|
|
98
|
+
export function renderLiveToolActivity(msgDiv: HTMLElement, label: string): void {
|
|
99
|
+
let liveEl = msgDiv.querySelector('.tool-activity-live') as HTMLElement | null;
|
|
100
|
+
if (!liveEl) {
|
|
101
|
+
liveEl = document.createElement('div');
|
|
102
|
+
liveEl.className = 'tool-activity-live';
|
|
103
|
+
const content = msgDiv.querySelector('.msg-content');
|
|
104
|
+
if (content) content.before(liveEl);
|
|
105
|
+
}
|
|
106
|
+
liveEl.innerHTML = `<span class="tool-status-dot running"></span><span>${escapeHtml(label)}</span>`;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Clean up all live tool activity indicators */
|
|
110
|
+
export function cleanupToolElements(): void {
|
|
111
|
+
document.querySelectorAll('.tool-activity-live').forEach(el => el.remove());
|
|
112
|
+
document.querySelectorAll('.msg-system.tool-activity').forEach(el => el.remove());
|
|
113
|
+
}
|
package/public/js/main.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// ── App Entry Point ──
|
|
2
2
|
// All event bindings happen here (no inline onclick in HTML)
|
|
3
3
|
|
|
4
|
+
// CSS imports — bundled by Vite
|
|
5
|
+
import 'katex/dist/katex.min.css';
|
|
6
|
+
|
|
4
7
|
// ── Global Error Boundary ──
|
|
5
8
|
window.addEventListener('unhandledrejection', (e) => {
|
|
6
9
|
console.error('[unhandled]', e.reason);
|
|
@@ -11,24 +14,26 @@ window.addEventListener('error', (e) => {
|
|
|
11
14
|
});
|
|
12
15
|
|
|
13
16
|
import { connect } from './ws.js';
|
|
14
|
-
import { switchTab, handleSave,
|
|
17
|
+
import { switchTab, handleSave, loadMessages, initMsgCopy } from './ui.js';
|
|
15
18
|
import { sendMessage, handleKey, clearAttachedFiles, removeAttachedFile, clearChat, initDragDrop, initAutoResize } from './features/chat.js';
|
|
16
19
|
import {
|
|
17
20
|
loadCommands, update as updateSlashDropdown, handleKeydown as handleSlashKeydown,
|
|
18
21
|
handleClick as handleSlashClick, handleOutsideClick as handleSlashOutsideClick,
|
|
19
22
|
} from './features/slash-commands.js';
|
|
20
|
-
import {
|
|
23
|
+
import { toggleSkill, filterSkills } from './features/skills.js';
|
|
21
24
|
import {
|
|
22
|
-
loadSettings,
|
|
23
|
-
saveActiveCliSettings, savePerCli,
|
|
25
|
+
loadSettings, handleModelSelect, applyCustomModel, onCliChange,
|
|
26
|
+
saveActiveCliSettings, savePerCli, openPromptModal,
|
|
24
27
|
closePromptModal, savePromptFromModal, syncMcpServers, installMcpGlobal,
|
|
25
|
-
loadCliStatus, setTelegram, setForwardAll, saveTelegramSettings,
|
|
28
|
+
loadCliStatus, setTelegram, setForwardAll, saveTelegramSettings,
|
|
29
|
+
setDiscord, setDiscordForwardAll, setDiscordAllowBots, saveDiscordSettings, setActiveChannel,
|
|
30
|
+
saveFallbackOrder,
|
|
26
31
|
openTemplateModal, saveTemplateFromModal, closeTemplateModal, templateGoBack, toggleDevMode
|
|
27
32
|
} from './features/settings.js';
|
|
28
|
-
|
|
33
|
+
const {
|
|
29
34
|
loadEmployees, addEmployee, deleteEmployee, updateEmployee,
|
|
30
35
|
onEmpCliChange, onEmpRoleChange
|
|
31
|
-
}
|
|
36
|
+
} = await import('./features/employees.js');
|
|
32
37
|
import {
|
|
33
38
|
openHeartbeatModal, closeHeartbeatModal, addHeartbeatJob,
|
|
34
39
|
removeHeartbeatJob, renderHeartbeatJobs, toggleHeartbeatJob, saveHeartbeatJobs,
|
|
@@ -45,6 +50,7 @@ import { loadCliRegistry, getCliKeys } from './constants.js';
|
|
|
45
50
|
import { initAppName } from './features/appname.js';
|
|
46
51
|
import { initSidebar, toggleLeft, toggleRight } from './features/sidebar.js';
|
|
47
52
|
import { initTheme } from './features/theme.js';
|
|
53
|
+
import { initGestures } from './features/gesture.js';
|
|
48
54
|
import { initI18n, setLang, getLang, t } from './features/i18n.js';
|
|
49
55
|
import { toggleRecording, cancelRecording } from './features/voice-recorder.js';
|
|
50
56
|
|
|
@@ -170,6 +176,18 @@ document.getElementById('tgForwardOff')?.addEventListener('click', () => setForw
|
|
|
170
176
|
document.getElementById('tgForwardOn')?.addEventListener('click', () => setForwardAll(true));
|
|
171
177
|
document.getElementById('tgToken')?.addEventListener('change', saveTelegramSettings);
|
|
172
178
|
document.getElementById('tgChatIds')?.addEventListener('change', saveTelegramSettings);
|
|
179
|
+
// Discord
|
|
180
|
+
document.getElementById('chTelegram')?.addEventListener('click', () => setActiveChannel('telegram'));
|
|
181
|
+
document.getElementById('chDiscord')?.addEventListener('click', () => setActiveChannel('discord'));
|
|
182
|
+
document.getElementById('dcOff')?.addEventListener('click', () => setDiscord(false));
|
|
183
|
+
document.getElementById('dcOn')?.addEventListener('click', () => setDiscord(true));
|
|
184
|
+
document.getElementById('dcForwardOff')?.addEventListener('click', () => setDiscordForwardAll(false));
|
|
185
|
+
document.getElementById('dcForwardOn')?.addEventListener('click', () => setDiscordForwardAll(true));
|
|
186
|
+
document.getElementById('dcAllowBotsOff')?.addEventListener('click', () => setDiscordAllowBots(false));
|
|
187
|
+
document.getElementById('dcAllowBotsOn')?.addEventListener('click', () => setDiscordAllowBots(true));
|
|
188
|
+
document.getElementById('dcToken')?.addEventListener('change', saveDiscordSettings);
|
|
189
|
+
document.getElementById('dcGuildId')?.addEventListener('change', saveDiscordSettings);
|
|
190
|
+
document.getElementById('dcChannelIds')?.addEventListener('change', saveDiscordSettings);
|
|
173
191
|
document.getElementById('fallbackOrderList')?.addEventListener('change', saveFallbackOrder);
|
|
174
192
|
|
|
175
193
|
// Codex fast mode toggle
|
|
@@ -201,6 +219,42 @@ document.getElementById('codexCtxOn')?.addEventListener('click', () => setCodexC
|
|
|
201
219
|
document.getElementById('codexCtxOff')?.addEventListener('click', () => setCodexCtx(false));
|
|
202
220
|
document.getElementById('codexCtxWindow')?.addEventListener('change', savePerCli);
|
|
203
221
|
document.getElementById('codexCtxCompact')?.addEventListener('change', savePerCli);
|
|
222
|
+
|
|
223
|
+
// Claude 1M context toggle — switches model between base and [1m] variant
|
|
224
|
+
function setClaude1m(on: boolean) {
|
|
225
|
+
const onBtn = document.getElementById('claude1mOn');
|
|
226
|
+
const offBtn = document.getElementById('claude1mOff');
|
|
227
|
+
const modelSel = document.getElementById('modelClaude') as HTMLSelectElement | null;
|
|
228
|
+
|
|
229
|
+
let effective = on;
|
|
230
|
+
if (modelSel) {
|
|
231
|
+
let current = modelSel.value || '';
|
|
232
|
+
if (on && !current.endsWith('[1m]')) {
|
|
233
|
+
const target = current + '[1m]';
|
|
234
|
+
if (Array.from(modelSel.options).some(o => o.value === target)) {
|
|
235
|
+
modelSel.value = target;
|
|
236
|
+
} else {
|
|
237
|
+
effective = false; // no [1m] variant available
|
|
238
|
+
}
|
|
239
|
+
} else if (!on && current.endsWith('[1m]')) {
|
|
240
|
+
const base = current.replace(/\[1m\]$/, '');
|
|
241
|
+
if (Array.from(modelSel.options).some(o => o.value === base)) {
|
|
242
|
+
modelSel.value = base;
|
|
243
|
+
} else {
|
|
244
|
+
effective = true; // can't remove [1m], stay on
|
|
245
|
+
}
|
|
246
|
+
} else {
|
|
247
|
+
effective = current.endsWith('[1m]');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (onBtn && offBtn) {
|
|
251
|
+
onBtn.classList.toggle('active', effective);
|
|
252
|
+
offBtn.classList.toggle('active', !effective);
|
|
253
|
+
}
|
|
254
|
+
savePerCli();
|
|
255
|
+
}
|
|
256
|
+
document.getElementById('claude1mOn')?.addEventListener('click', () => setClaude1m(true));
|
|
257
|
+
document.getElementById('claude1mOff')?.addEventListener('click', () => setClaude1m(false));
|
|
204
258
|
// Per-CLI model selects
|
|
205
259
|
function bindPerCliControlEvents(): void {
|
|
206
260
|
for (const cli of getCliKeys()) {
|
|
@@ -357,7 +411,6 @@ async function bootstrap(): Promise<void> {
|
|
|
357
411
|
await loadCommands();
|
|
358
412
|
await loadSettings();
|
|
359
413
|
loadCliStatus();
|
|
360
|
-
loadMemory();
|
|
361
414
|
// loadMessages() is handled by ws.js onopen (clear + reload)
|
|
362
415
|
loadEmployees();
|
|
363
416
|
initHeartbeatBadge();
|
|
@@ -365,6 +418,12 @@ async function bootstrap(): Promise<void> {
|
|
|
365
418
|
initSidebar();
|
|
366
419
|
initTheme();
|
|
367
420
|
initMsgCopy();
|
|
421
|
+
initGestures();
|
|
422
|
+
|
|
423
|
+
// Register Service Worker (production only — Vite HMR handles dev)
|
|
424
|
+
if ('serviceWorker' in navigator && !import.meta.env.DEV) {
|
|
425
|
+
navigator.serviceWorker.register('/sw.js').catch(() => {});
|
|
426
|
+
}
|
|
368
427
|
}
|
|
369
428
|
|
|
370
429
|
void bootstrap().catch((err: unknown) => {
|