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.
Files changed (559) hide show
  1. package/README.ko.md +56 -26
  2. package/README.md +30 -24
  3. package/README.zh-CN.md +56 -26
  4. package/dist/bin/commands/browser.js +3 -1
  5. package/dist/bin/commands/browser.js.map +1 -1
  6. package/dist/bin/commands/chat.js +358 -9
  7. package/dist/bin/commands/chat.js.map +1 -1
  8. package/dist/bin/commands/doctor.js +80 -2
  9. package/dist/bin/commands/doctor.js.map +1 -1
  10. package/dist/bin/commands/init.js +88 -6
  11. package/dist/bin/commands/init.js.map +1 -1
  12. package/dist/bin/commands/serve.js +1 -0
  13. package/dist/bin/commands/serve.js.map +1 -1
  14. package/dist/lib/mcp-sync.js +101 -51
  15. package/dist/lib/mcp-sync.js.map +1 -1
  16. package/dist/lib/quota-copilot.js +4 -0
  17. package/dist/lib/quota-copilot.js.map +1 -1
  18. package/dist/server.js +131 -35
  19. package/dist/server.js.map +1 -1
  20. package/dist/src/agent/events.js +198 -29
  21. package/dist/src/agent/events.js.map +1 -1
  22. package/dist/src/agent/smoke-detector.js +111 -0
  23. package/dist/src/agent/smoke-detector.js.map +1 -0
  24. package/dist/src/agent/spawn.js +157 -26
  25. package/dist/src/agent/spawn.js.map +1 -1
  26. package/dist/src/browser/connection.js +9 -1
  27. package/dist/src/browser/connection.js.map +1 -1
  28. package/dist/src/browser/launch-policy.js +32 -0
  29. package/dist/src/browser/launch-policy.js.map +1 -0
  30. package/dist/src/cli/claude-models.js +46 -0
  31. package/dist/src/cli/claude-models.js.map +1 -0
  32. package/dist/src/cli/command-context.js +19 -8
  33. package/dist/src/cli/command-context.js.map +1 -1
  34. package/dist/src/cli/commands.js +16 -13
  35. package/dist/src/cli/commands.js.map +1 -1
  36. package/dist/src/cli/compact.js +93 -0
  37. package/dist/src/cli/compact.js.map +1 -0
  38. package/dist/src/cli/handlers.js +94 -32
  39. package/dist/src/cli/handlers.js.map +1 -1
  40. package/dist/src/cli/readiness.js +69 -0
  41. package/dist/src/cli/readiness.js.map +1 -0
  42. package/dist/src/cli/registry.js +3 -2
  43. package/dist/src/cli/registry.js.map +1 -1
  44. package/dist/src/cli/tui/composer.js +6 -4
  45. package/dist/src/cli/tui/composer.js.map +1 -1
  46. package/dist/src/cli/tui/keymap.js +2 -0
  47. package/dist/src/cli/tui/keymap.js.map +1 -1
  48. package/dist/src/cli/tui/overlay.js +170 -0
  49. package/dist/src/cli/tui/overlay.js.map +1 -1
  50. package/dist/src/cli/tui/store.js +25 -0
  51. package/dist/src/cli/tui/store.js.map +1 -1
  52. package/dist/src/cli/tui/transcript.js +46 -0
  53. package/dist/src/cli/tui/transcript.js.map +1 -0
  54. package/dist/src/command-contract/catalog.js +8 -4
  55. package/dist/src/command-contract/catalog.js.map +1 -1
  56. package/dist/src/core/bus.js +1 -0
  57. package/dist/src/core/bus.js.map +1 -1
  58. package/dist/src/core/compact.js +70 -0
  59. package/dist/src/core/compact.js.map +1 -0
  60. package/dist/src/core/config.js +109 -3
  61. package/dist/src/core/config.js.map +1 -1
  62. package/dist/src/core/db.js +13 -4
  63. package/dist/src/core/db.js.map +1 -1
  64. package/dist/src/core/main-session.js +15 -0
  65. package/dist/src/core/main-session.js.map +1 -1
  66. package/dist/src/core/runtime-settings.js +19 -4
  67. package/dist/src/core/runtime-settings.js.map +1 -1
  68. package/dist/src/core/settings-merge.js +1 -1
  69. package/dist/src/core/settings-merge.js.map +1 -1
  70. package/dist/src/discord/bot.js +274 -0
  71. package/dist/src/discord/bot.js.map +1 -0
  72. package/dist/src/discord/commands.js +103 -0
  73. package/dist/src/discord/commands.js.map +1 -0
  74. package/dist/src/discord/discord-file.js +43 -0
  75. package/dist/src/discord/discord-file.js.map +1 -0
  76. package/dist/src/discord/forwarder.js +45 -0
  77. package/dist/src/discord/forwarder.js.map +1 -0
  78. package/dist/src/memory/bootstrap.js +341 -0
  79. package/dist/src/memory/bootstrap.js.map +1 -0
  80. package/dist/src/memory/heartbeat.js +11 -22
  81. package/dist/src/memory/heartbeat.js.map +1 -1
  82. package/dist/src/memory/indexing.js +329 -0
  83. package/dist/src/memory/indexing.js.map +1 -0
  84. package/dist/src/memory/keyword-expand.js +247 -0
  85. package/dist/src/memory/keyword-expand.js.map +1 -0
  86. package/dist/src/memory/runtime.js +56 -1090
  87. package/dist/src/memory/runtime.js.map +1 -1
  88. package/dist/src/memory/shared.js +167 -0
  89. package/dist/src/memory/shared.js.map +1 -0
  90. package/dist/src/messaging/runtime.js +122 -0
  91. package/dist/src/messaging/runtime.js.map +1 -0
  92. package/dist/src/messaging/send.js +120 -0
  93. package/dist/src/messaging/send.js.map +1 -0
  94. package/dist/src/messaging/session-key.js +25 -0
  95. package/dist/src/messaging/session-key.js.map +1 -0
  96. package/dist/src/messaging/types.js +6 -0
  97. package/dist/src/messaging/types.js.map +1 -0
  98. package/dist/src/orchestrator/collect.js +5 -0
  99. package/dist/src/orchestrator/collect.js.map +1 -1
  100. package/dist/src/orchestrator/distribute.js +34 -8
  101. package/dist/src/orchestrator/distribute.js.map +1 -1
  102. package/dist/src/orchestrator/gateway.js +18 -12
  103. package/dist/src/orchestrator/gateway.js.map +1 -1
  104. package/dist/src/orchestrator/parser.js +0 -28
  105. package/dist/src/orchestrator/parser.js.map +1 -1
  106. package/dist/src/orchestrator/pipeline.js +94 -75
  107. package/dist/src/orchestrator/pipeline.js.map +1 -1
  108. package/dist/src/orchestrator/state-machine.js +23 -20
  109. package/dist/src/orchestrator/state-machine.js.map +1 -1
  110. package/dist/src/orchestrator/worker-monitor.js +50 -0
  111. package/dist/src/orchestrator/worker-monitor.js.map +1 -0
  112. package/dist/src/orchestrator/worker-registry.js +107 -0
  113. package/dist/src/orchestrator/worker-registry.js.map +1 -0
  114. package/dist/src/prompt/builder.js +78 -6
  115. package/dist/src/prompt/builder.js.map +1 -1
  116. package/dist/src/prompt/templates/a1-system.md +52 -10
  117. package/dist/src/prompt/templates/employee.md +17 -5
  118. package/dist/src/prompt/templates/orchestration.md +11 -10
  119. package/dist/src/prompt/templates/research-worker.md +1 -1
  120. package/dist/src/prompt/templates/worker-context.md +4 -4
  121. package/dist/src/routes/browser.js +14 -3
  122. package/dist/src/routes/browser.js.map +1 -1
  123. package/dist/src/telegram/bot.js +92 -8
  124. package/dist/src/telegram/bot.js.map +1 -1
  125. package/dist/src/types/agent.js +4 -0
  126. package/dist/src/types/agent.js.map +1 -0
  127. package/package.json +27 -15
  128. package/public/css/chat.css +365 -127
  129. package/public/css/layout.css +67 -10
  130. package/public/css/markdown.css +219 -54
  131. package/public/css/modals.css +35 -15
  132. package/public/css/orc-state.css +16 -16
  133. package/public/css/sidebar.css +12 -12
  134. package/public/css/tool-ui.css +483 -0
  135. package/public/css/variables.css +334 -6
  136. package/public/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  137. package/public/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  138. package/public/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  139. package/public/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  140. package/public/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  141. package/public/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  142. package/public/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  143. package/public/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  144. package/public/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  145. package/public/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  146. package/public/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  147. package/public/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  148. package/public/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  149. package/public/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  150. package/public/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  151. package/public/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  152. package/public/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  153. package/public/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  154. package/public/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  155. package/public/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  156. package/public/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  157. package/public/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  158. package/public/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  159. package/public/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  160. package/public/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  161. package/public/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  162. package/public/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  163. package/public/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  164. package/public/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  165. package/public/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  166. package/public/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  167. package/public/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  168. package/public/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  169. package/public/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  170. package/public/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  171. package/public/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  172. package/public/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  173. package/public/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  174. package/public/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  175. package/public/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  176. package/public/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  177. package/public/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  178. package/public/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  179. package/public/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  180. package/public/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  181. package/public/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  182. package/public/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  183. package/public/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  184. package/public/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  185. package/public/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  186. package/public/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  187. package/public/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  188. package/public/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  189. package/public/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  190. package/public/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  191. package/public/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  192. package/public/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  193. package/public/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  194. package/public/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  195. package/public/dist/assets/api-B8XKQ4OT.js +1 -0
  196. package/public/dist/assets/api-BlPw3bUI.js +1 -0
  197. package/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
  198. package/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
  199. package/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
  200. package/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
  201. package/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
  202. package/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
  203. package/public/dist/assets/constants-DshMUJbo.js +1 -0
  204. package/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
  205. package/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
  206. package/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
  207. package/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
  208. package/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
  209. package/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
  210. package/public/dist/assets/employees-CFRlsbHm.js +39 -0
  211. package/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
  212. package/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
  213. package/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
  214. package/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
  215. package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
  216. package/public/dist/assets/icon-192-CwXPIYF5.png +0 -0
  217. package/public/dist/assets/index-1Gg-6jeC.css +1 -0
  218. package/public/dist/assets/index-CQHqXjrK.js +49 -0
  219. package/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
  220. package/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
  221. package/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
  222. package/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
  223. package/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
  224. package/public/dist/assets/katex-DZLS_HFU.js +1 -0
  225. package/public/dist/assets/locale-BjoAcbis.js +1 -0
  226. package/public/dist/assets/manifest-Bw-LRm-c.json +20 -0
  227. package/public/dist/assets/mermaid.core-CHuluSlD.js +1 -0
  228. package/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
  229. package/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
  230. package/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
  231. package/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
  232. package/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
  233. package/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
  234. package/public/dist/assets/render-YHvL5VM_.js +6 -0
  235. package/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
  236. package/public/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
  237. package/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
  238. package/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
  239. package/public/dist/assets/settings-BQF_u5px.js +37 -0
  240. package/public/dist/assets/settings-C5Q9IPjJ.js +1 -0
  241. package/public/dist/assets/shark-sprite-B3AAuERd.png +0 -0
  242. package/public/dist/assets/skills-9Pd2rOw-.js +1 -0
  243. package/public/dist/assets/skills-BI7sQAdk.js +12 -0
  244. package/public/dist/assets/slash-commands-DMsE88bu.js +14 -0
  245. package/public/dist/assets/slash-commands-FMpJzlDB.js +1 -0
  246. package/public/dist/assets/state-O6NVkWcL.js +1 -0
  247. package/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
  248. package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
  249. package/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
  250. package/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
  251. package/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
  252. package/public/dist/assets/ui-BukgLHuh.js +29 -0
  253. package/public/dist/assets/ui-Bvz1JfTE.js +1 -0
  254. package/public/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
  255. package/public/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
  256. package/public/dist/assets/vendor-render-D2YP6GiF.js +322 -0
  257. package/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
  258. package/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
  259. package/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
  260. package/public/dist/assets/ws-S_AZgx7L.js +2 -0
  261. package/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
  262. package/public/dist/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  263. package/public/dist/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  264. package/public/dist/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  265. package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  266. package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  267. package/public/dist/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  268. package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  269. package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  270. package/public/dist/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  271. package/public/dist/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  272. package/public/dist/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  273. package/public/dist/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  274. package/public/dist/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  275. package/public/dist/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  276. package/public/dist/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  277. package/public/dist/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  278. package/public/dist/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  279. package/public/dist/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  280. package/public/dist/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  281. package/public/dist/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  282. package/public/dist/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  283. package/public/dist/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  284. package/public/dist/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  285. package/public/dist/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  286. package/public/dist/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  287. package/public/dist/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  288. package/public/dist/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  289. package/public/dist/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  290. package/public/dist/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  291. package/public/dist/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  292. package/public/dist/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  293. package/public/dist/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  294. package/public/dist/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  295. package/public/dist/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  296. package/public/dist/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  297. package/public/dist/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  298. package/public/dist/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  299. package/public/dist/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  300. package/public/dist/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  301. package/public/dist/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  302. package/public/dist/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  303. package/public/dist/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  304. package/public/dist/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  305. package/public/dist/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  306. package/public/dist/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  307. package/public/dist/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  308. package/public/dist/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  309. package/public/dist/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  310. package/public/dist/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  311. package/public/dist/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  312. package/public/dist/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  313. package/public/dist/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  314. package/public/dist/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  315. package/public/dist/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  316. package/public/dist/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  317. package/public/dist/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  318. package/public/dist/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  319. package/public/dist/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  320. package/public/dist/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  321. package/public/dist/dist/assets/api-B8XKQ4OT.js +1 -0
  322. package/public/dist/dist/assets/api-BlPw3bUI.js +1 -0
  323. package/public/dist/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
  324. package/public/dist/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
  325. package/public/dist/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
  326. package/public/dist/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
  327. package/public/dist/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
  328. package/public/dist/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
  329. package/public/dist/dist/assets/constants-DshMUJbo.js +1 -0
  330. package/public/dist/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
  331. package/public/dist/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
  332. package/public/dist/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
  333. package/public/dist/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
  334. package/public/dist/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
  335. package/public/dist/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
  336. package/public/dist/dist/assets/employees-CFRlsbHm.js +39 -0
  337. package/public/dist/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
  338. package/public/dist/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
  339. package/public/dist/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
  340. package/public/dist/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
  341. package/public/dist/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
  342. package/public/dist/dist/assets/icon-192-CwXPIYF5.png +0 -0
  343. package/public/dist/dist/assets/index-1Gg-6jeC.css +1 -0
  344. package/public/dist/dist/assets/index-CQHqXjrK.js +49 -0
  345. package/public/dist/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
  346. package/public/dist/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
  347. package/public/dist/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
  348. package/public/dist/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
  349. package/public/dist/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
  350. package/public/dist/dist/assets/katex-DZLS_HFU.js +1 -0
  351. package/public/dist/dist/assets/locale-BjoAcbis.js +1 -0
  352. package/public/dist/dist/assets/manifest-Bw-LRm-c.json +20 -0
  353. package/public/dist/dist/assets/mermaid.core-CHuluSlD.js +1 -0
  354. package/public/dist/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
  355. package/public/dist/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
  356. package/public/dist/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
  357. package/public/dist/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
  358. package/public/dist/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
  359. package/public/dist/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
  360. package/public/dist/dist/assets/render-YHvL5VM_.js +6 -0
  361. package/public/dist/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
  362. package/public/dist/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
  363. package/public/dist/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
  364. package/public/dist/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
  365. package/public/dist/dist/assets/settings-BQF_u5px.js +37 -0
  366. package/public/dist/dist/assets/settings-C5Q9IPjJ.js +1 -0
  367. package/public/dist/dist/assets/shark-sprite-B3AAuERd.png +0 -0
  368. package/public/dist/dist/assets/skills-9Pd2rOw-.js +1 -0
  369. package/public/dist/dist/assets/skills-BI7sQAdk.js +12 -0
  370. package/public/dist/dist/assets/slash-commands-DMsE88bu.js +14 -0
  371. package/public/dist/dist/assets/slash-commands-FMpJzlDB.js +1 -0
  372. package/public/dist/dist/assets/state-O6NVkWcL.js +1 -0
  373. package/public/dist/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
  374. package/public/dist/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
  375. package/public/dist/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
  376. package/public/dist/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
  377. package/public/dist/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
  378. package/public/dist/dist/assets/ui-BukgLHuh.js +29 -0
  379. package/public/dist/dist/assets/ui-Bvz1JfTE.js +1 -0
  380. package/public/dist/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
  381. package/public/dist/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
  382. package/public/dist/dist/assets/vendor-render-D2YP6GiF.js +322 -0
  383. package/public/dist/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
  384. package/public/dist/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
  385. package/public/dist/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
  386. package/public/dist/dist/assets/ws-S_AZgx7L.js +2 -0
  387. package/public/dist/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
  388. package/public/dist/dist/index.html +708 -0
  389. package/public/dist/index.html +708 -0
  390. package/public/icons/icon-192.png +0 -0
  391. package/public/icons/icon-512-maskable.png +0 -0
  392. package/public/icons/icon-512.png +0 -0
  393. package/public/index.html +178 -125
  394. package/public/js/constants.ts +6 -6
  395. package/public/js/features/chat.ts +23 -3
  396. package/public/js/features/employees.ts +12 -12
  397. package/public/js/features/gesture.ts +61 -0
  398. package/public/js/features/heartbeat.ts +1 -1
  399. package/public/js/features/idb-cache.ts +89 -0
  400. package/public/js/features/memory.ts +4 -1
  401. package/public/js/features/process-block.ts +236 -0
  402. package/public/js/features/settings-channel.ts +53 -0
  403. package/public/js/features/settings-cli-status.ts +164 -0
  404. package/public/js/features/settings-core.ts +357 -0
  405. package/public/js/features/settings-discord.ts +52 -0
  406. package/public/js/features/settings-mcp.ts +54 -0
  407. package/public/js/features/settings-stt.ts +78 -0
  408. package/public/js/features/settings-telegram.ts +40 -0
  409. package/public/js/features/settings-templates.ts +129 -0
  410. package/public/js/features/settings-types.ts +24 -0
  411. package/public/js/features/settings.ts +9 -815
  412. package/public/js/features/sidebar.ts +4 -2
  413. package/public/js/features/skills.ts +5 -4
  414. package/public/js/features/slash-commands.ts +1 -8
  415. package/public/js/features/theme.ts +16 -10
  416. package/public/js/features/tool-ui.ts +113 -0
  417. package/public/js/main.ts +67 -8
  418. package/public/js/render.ts +128 -90
  419. package/public/js/state.ts +4 -0
  420. package/public/js/streaming-render.ts +55 -0
  421. package/public/js/ui.ts +289 -46
  422. package/public/js/virtual-scroll.ts +189 -0
  423. package/public/js/ws.ts +175 -112
  424. package/public/locales/en.json +6 -1
  425. package/public/locales/ko.json +6 -1
  426. package/public/manifest.json +20 -0
  427. package/public/public/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  428. package/public/public/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  429. package/public/public/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  430. package/public/public/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  431. package/public/public/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  432. package/public/public/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  433. package/public/public/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  434. package/public/public/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  435. package/public/public/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  436. package/public/public/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  437. package/public/public/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  438. package/public/public/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  439. package/public/public/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  440. package/public/public/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  441. package/public/public/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  442. package/public/public/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  443. package/public/public/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  444. package/public/public/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  445. package/public/public/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  446. package/public/public/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  447. package/public/public/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  448. package/public/public/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  449. package/public/public/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  450. package/public/public/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  451. package/public/public/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  452. package/public/public/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  453. package/public/public/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  454. package/public/public/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  455. package/public/public/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  456. package/public/public/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  457. package/public/public/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  458. package/public/public/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  459. package/public/public/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  460. package/public/public/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  461. package/public/public/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  462. package/public/public/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  463. package/public/public/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  464. package/public/public/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  465. package/public/public/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  466. package/public/public/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  467. package/public/public/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  468. package/public/public/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  469. package/public/public/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  470. package/public/public/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  471. package/public/public/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  472. package/public/public/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  473. package/public/public/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  474. package/public/public/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  475. package/public/public/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  476. package/public/public/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  477. package/public/public/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  478. package/public/public/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  479. package/public/public/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  480. package/public/public/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  481. package/public/public/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  482. package/public/public/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  483. package/public/public/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  484. package/public/public/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  485. package/public/public/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  486. package/public/public/dist/assets/api-B8XKQ4OT.js +1 -0
  487. package/public/public/dist/assets/api-BlPw3bUI.js +1 -0
  488. package/public/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +1 -0
  489. package/public/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +1 -0
  490. package/public/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +1 -0
  491. package/public/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +1 -0
  492. package/public/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +1 -0
  493. package/public/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +1 -0
  494. package/public/public/dist/assets/constants-DshMUJbo.js +1 -0
  495. package/public/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +1 -0
  496. package/public/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +1 -0
  497. package/public/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +1 -0
  498. package/public/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +1 -0
  499. package/public/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +1 -0
  500. package/public/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +1 -0
  501. package/public/public/dist/assets/employees-CFRlsbHm.js +39 -0
  502. package/public/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +1 -0
  503. package/public/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +1 -0
  504. package/public/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +1 -0
  505. package/public/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +1 -0
  506. package/public/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +1 -0
  507. package/public/public/dist/assets/icon-192-CwXPIYF5.png +0 -0
  508. package/public/public/dist/assets/index-1Gg-6jeC.css +1 -0
  509. package/public/public/dist/assets/index-CQHqXjrK.js +49 -0
  510. package/public/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +1 -0
  511. package/public/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +1 -0
  512. package/public/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +1 -0
  513. package/public/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +1 -0
  514. package/public/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +1 -0
  515. package/public/public/dist/assets/katex-DZLS_HFU.js +1 -0
  516. package/public/public/dist/assets/locale-BjoAcbis.js +1 -0
  517. package/public/public/dist/assets/manifest-Bw-LRm-c.json +20 -0
  518. package/public/public/dist/assets/mermaid.core-CHuluSlD.js +1 -0
  519. package/public/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +1 -0
  520. package/public/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +1 -0
  521. package/public/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +1 -0
  522. package/public/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +1 -0
  523. package/public/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +1 -0
  524. package/public/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +1 -0
  525. package/public/public/dist/assets/render-YHvL5VM_.js +6 -0
  526. package/public/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +1 -0
  527. package/public/public/dist/assets/rolldown-runtime-FhOqtrmT.js +1 -0
  528. package/public/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +1 -0
  529. package/public/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +1 -0
  530. package/public/public/dist/assets/settings-BQF_u5px.js +37 -0
  531. package/public/public/dist/assets/settings-C5Q9IPjJ.js +1 -0
  532. package/public/public/dist/assets/shark-sprite-B3AAuERd.png +0 -0
  533. package/public/public/dist/assets/skills-9Pd2rOw-.js +1 -0
  534. package/public/public/dist/assets/skills-BI7sQAdk.js +12 -0
  535. package/public/public/dist/assets/slash-commands-DMsE88bu.js +14 -0
  536. package/public/public/dist/assets/slash-commands-FMpJzlDB.js +1 -0
  537. package/public/public/dist/assets/state-O6NVkWcL.js +1 -0
  538. package/public/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +1 -0
  539. package/public/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +1 -0
  540. package/public/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +1 -0
  541. package/public/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +1 -0
  542. package/public/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +1 -0
  543. package/public/public/dist/assets/ui-BukgLHuh.js +29 -0
  544. package/public/public/dist/assets/ui-Bvz1JfTE.js +1 -0
  545. package/public/public/dist/assets/vendor-mermaid-COidH9HB.js +2934 -0
  546. package/public/public/dist/assets/vendor-render-Bjnw0wQ6.css +1 -0
  547. package/public/public/dist/assets/vendor-render-D2YP6GiF.js +322 -0
  548. package/public/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +1 -0
  549. package/public/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +1 -0
  550. package/public/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +1 -0
  551. package/public/public/dist/assets/ws-S_AZgx7L.js +2 -0
  552. package/public/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +1 -0
  553. package/public/public/dist/index.html +708 -0
  554. package/public/sw.js +104 -0
  555. package/scripts/install-officecli.sh +145 -0
  556. package/scripts/release-preview.sh +18 -10
  557. package/scripts/release.sh +3 -3
  558. package/public/dist/bundle.js +0 -151
  559. package/public/dist/bundle.js.map +0 -7
@@ -0,0 +1,708 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ko" data-theme="dark">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
7
+ <meta name="theme-color" content="#22d3ee">
8
+ <meta name="apple-mobile-web-app-capable" content="yes">
9
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
10
+ <link rel="manifest" href="/dist/assets/manifest-Bw-LRm-c.json">
11
+ <link rel="apple-touch-icon" href="/dist/assets/icon-192-CwXPIYF5.png">
12
+ <title>CLI-JAW</title>
13
+ <link rel="preconnect" href="https://fonts.googleapis.com">
14
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
15
+ <link
16
+ href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap"
17
+ rel="stylesheet">
18
+ <!-- Vite handles module bundling in dev (HMR) and production (build) -->
19
+ <script type="module" crossorigin src="/dist/assets/index-CQHqXjrK.js"></script>
20
+ <link rel="stylesheet" crossorigin href="/dist/assets/vendor-render-Bjnw0wQ6.css">
21
+ <link rel="stylesheet" crossorigin href="/dist/assets/index-1Gg-6jeC.css">
22
+ </head>
23
+
24
+ <body>
25
+ <!-- Left Sidebar -->
26
+ <nav class="sidebar-left" role="navigation" aria-label="Main navigation">
27
+ <button class="sidebar-toggle" id="toggleLeft" title="Collapse" aria-label="Collapse sidebar">◀</button>
28
+ <div class="logo">CLI-JAW</div>
29
+ <span id="orcStateBadge" class="orc-state-badge" style="display:none"></span>
30
+
31
+ <div>
32
+ <div class="section-title" data-i18n="sidebar.status">상태</div>
33
+ <span class="status-badge status-idle" id="statusBadge">idle</span>
34
+ </div>
35
+
36
+ <div>
37
+ <div class="section-title" data-i18n="sidebar.memory">메모리</div>
38
+ <button class="sidebar-hb-btn" id="memorySidebarBtn" aria-label="Open memory panel">🧠 Memory (0)</button>
39
+ </div>
40
+
41
+ <div>
42
+ <div class="section-title" data-i18n="sidebar.stats">통계</div>
43
+ <p class="stat" id="statMsgs">Messages: 0</p>
44
+ </div>
45
+
46
+ <!-- CLI Status (moved from Settings tab) -->
47
+ <div>
48
+ <div class="section-title" data-i18n="sidebar.cliStatus">CLI 상태</div>
49
+ <div id="cliStatusList" class="mt-1">
50
+ <div class="text-status">Loading...</div>
51
+ </div>
52
+ <div class="flex gap-2 mt-2 items-center">
53
+ <button class="btn-clear btn-refresh"
54
+ data-action="refreshCli">
55
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
56
+ stroke-linecap="round" stroke-linejoin="round">
57
+ <path d="M21 2v6h-6" />
58
+ <path d="M3 12a9 9 0 0 1 15-6.7L21 8" />
59
+ <path d="M3 22v-6h6" />
60
+ <path d="M21 12a9 9 0 0 1-15 6.7L3 16" />
61
+ </svg>
62
+ Refresh</button>
63
+ <select id="cliStatusInterval"
64
+ class="select-sm select-status-interval">
65
+ <option value="60" data-i18n="time.1m">1분</option>
66
+ <option value="300" selected data-i18n="time.5m">5분</option>
67
+ <option value="600" data-i18n="time.10m">10분</option>
68
+ <option value="0" data-i18n="time.manual">수동</option>
69
+ </select>
70
+ </div>
71
+ </div>
72
+
73
+ <div class="sidebar-bottom">
74
+ <div class="section-title" data-i18n="sidebar.agentName">에이전트 이름</div>
75
+ <div class="flex gap-1 items-center">
76
+ <input type="text" id="appNameInput" value="CLI-JAW"
77
+ class="input-agent-name">
78
+ <button class="sidebar-hb-btn btn-action-sm w-auto" id="appNameSave">✓</button>
79
+ </div>
80
+ <button class="sidebar-hb-btn" id="btnClearChat">/clear</button>
81
+ <button class="sidebar-hb-btn" id="hbSidebarBtn">💓 Heartbeat (0)</button>
82
+ <button class="sidebar-hb-btn" data-action="openTemplates">📝 프롬프트 템플릿</button>
83
+ <button class="sidebar-hb-btn" id="langToggle" title="한국어 ⇄ English">🌐 한국어</button>
84
+ </div>
85
+ </nav>
86
+
87
+ <!-- Chat Area -->
88
+ <div class="chat-area">
89
+ <div class="drag-overlay" id="dragOverlay" data-i18n="drag.drop">📎 파일을 여기에 드랍하세요</div>
90
+ <div class="chat-header">
91
+ <span>CLI-JAW ● <span id="headerCli">claude</span></span>
92
+ <button class="theme-switch" id="toggleTheme" title="Toggle Theme" aria-label="Toggle dark/light mode">
93
+ <span class="theme-switch-knob"></span>
94
+ </button>
95
+ </div>
96
+ <div class="pabc-roadmap" id="pabcRoadmap">
97
+ <div class="shark-runner" id="sharkRunner"></div>
98
+ <div class="pabc-dot future" data-phase="P" id="dot-P">P</div>
99
+ <div class="pabc-connector" id="pabc-conn-0"></div>
100
+ <div class="pabc-dot future" data-phase="A" id="dot-A">A</div>
101
+ <div class="pabc-connector" id="pabc-conn-1"></div>
102
+ <div class="pabc-center">
103
+ <div class="pabc-brand" id="pabcBrand">PABCD</div>
104
+ <div class="pabc-tagline">Ultimate Agent Workflow</div>
105
+ </div>
106
+ <div class="pabc-connector" id="pabc-conn-2"></div>
107
+ <div class="pabc-dot future" data-phase="B" id="dot-B">B</div>
108
+ <div class="pabc-connector" id="pabc-conn-3"></div>
109
+ <div class="pabc-dot future" data-phase="C" id="dot-C">C</div>
110
+ </div>
111
+ <div class="chat-messages" id="chatMessages"></div>
112
+ <div class="empty-state" id="emptyState">
113
+ <div class="empty-icon">CLI-JAW</div>
114
+ <div class="empty-title">CLI-JAW</div>
115
+ <div class="empty-subtitle">메시지를 입력하세요</div>
116
+ </div>
117
+ <div class="typing-indicator" id="typingIndicator">
118
+ <span class="label" data-i18n="status.responding">응답 중</span>
119
+ <span class="typing-dot"></span>
120
+ <span class="typing-dot"></span>
121
+ <span class="typing-dot"></span>
122
+ </div>
123
+ <div class="file-preview" id="filePreview">
124
+ <div class="file-preview-header">
125
+ <span class="file-preview-title">📎 Files</span>
126
+ <button class="file-preview-clear" id="filePreviewClear">✕ Clear all</button>
127
+ </div>
128
+ <div class="file-preview-list" id="filePreviewList"></div>
129
+ </div>
130
+ <div class="chat-input-area">
131
+ <div id="cmdDropdown" class="cmd-dropdown" role="listbox" data-i18n-aria="aria.cmdList" aria-label="커맨드 목록"
132
+ style="display:none"></div>
133
+ <button class="btn-attach" data-i18n-title="btn.attach" title="파일 첨부">📎</button>
134
+ <input type="file" id="fileInput" hidden multiple>
135
+ <button class="btn-voice" id="btnVoice" data-i18n-title="voice.start" title="음성 녹음">🎤</button>
136
+ <span class="voice-timer" id="voiceTimer" style="display:none">00:00</span>
137
+ <button class="btn-voice-cancel" id="btnVoiceCancel" style="display:none" title="취소">✕</button>
138
+ <textarea class="chat-input" id="chatInput" rows="1" data-i18n-placeholder="input.placeholder"
139
+ placeholder="메시지 입력..." aria-label="Chat message input" aria-haspopup="listbox" aria-expanded="false"
140
+ aria-controls="cmdDropdown" aria-autocomplete="list" aria-activedescendant=""></textarea>
141
+ <button class="btn-send" id="btnSend" aria-label="Send message">➤</button>
142
+ </div>
143
+ </div>
144
+
145
+ <!-- Right Sidebar (Tabbed) -->
146
+ <aside class="sidebar-right" role="complementary" aria-label="Settings panel">
147
+ <button class="sidebar-toggle" id="toggleRight" title="Collapse" aria-label="Collapse settings">▶</button>
148
+ <div class="tab-bar" role="tablist">
149
+ <button class="tab-btn active" id="tabBtnAgents" role="tab" aria-selected="true" aria-controls="tabAgents" data-i18n="tab.agents">에이전트</button>
150
+ <button class="tab-btn" id="tabBtnSkills" role="tab" aria-selected="false" aria-controls="tabSkills" data-i18n="tab.skills">스킬</button>
151
+ <button class="tab-btn" id="tabBtnSettings" role="tab" aria-selected="false" aria-controls="tabSettings" data-i18n="tab.settings">설정</button>
152
+ </div>
153
+ <div class="sidebar-save-bar">
154
+ <button class="btn-save" data-i18n="btn.saveSettings">저장</button>
155
+ </div>
156
+
157
+ <!-- Agents Tab -->
158
+ <div id="tabAgents" class="tab-content active" role="tabpanel" aria-labelledby="tabBtnAgents">
159
+ <div>
160
+ <label data-i18n="label.activeCli">활성 CLI</label>
161
+ <select id="selCli">
162
+ <option value="claude">Claude</option>
163
+ <option value="codex">Codex</option>
164
+ <option value="gemini">Gemini</option>
165
+ <option value="opencode">OpenCode</option>
166
+ <option value="copilot">Copilot</option>
167
+ </select>
168
+ </div>
169
+
170
+ <div>
171
+ <label data-i18n="label.model">모델</label>
172
+ <select id="selModel"></select>
173
+ </div>
174
+ <div>
175
+ <label data-i18n="label.effort">추론 강도</label>
176
+ <select id="selEffort">
177
+ <option value="">— none</option>
178
+ <option value="low">🟢 low</option>
179
+ <option value="medium" selected>🟡 medium</option>
180
+ <option value="high">🔴 high</option>
181
+ </select>
182
+ </div>
183
+
184
+ <div>
185
+ <label data-i18n="label.permissions">권한</label>
186
+ <div class="perm-toggle">
187
+ <span class="perm-btn active perm-auto" >⚡ Auto</span>
188
+ </div>
189
+ </div>
190
+
191
+ <div>
192
+ <label data-i18n="label.workingDir">작업 디렉토리</label>
193
+ <span id="inpCwd" class="cwd-display">~/.cli-jaw</span>
194
+ </div>
195
+
196
+ <hr class="hr-divider">
197
+
198
+ <div class="flex justify-between items-center">
199
+ <div class="section-title" data-i18n="sidebar.employees">직원</div>
200
+ <button class="btn-clear btn-action-sm" data-action="addEmployee"
201
+ data-i18n="btn.addEmployee">+ 추가</button>
202
+ </div>
203
+ <div id="employeesList">
204
+ <div class="text-status" data-i18n="emp.empty">직원이 없습니다</div>
205
+ </div>
206
+ </div>
207
+
208
+ <!-- Skills Tab -->
209
+ <div id="tabSkills" class="tab-content" role="tabpanel" aria-labelledby="tabBtnSkills">
210
+ <div class="flex gap-2 flex-wrap">
211
+ <button class="skill-filter active" data-filter="all" data-i18n="skill.filter.all">전체</button>
212
+ <button class="skill-filter" data-filter="installed" data-i18n="skill.filter.installed">📦 설치됨</button>
213
+ <button class="skill-filter" data-filter="productivity" data-i18n="skill.filter.productivity">📝
214
+ 생산성</button>
215
+ <button class="skill-filter" data-filter="communication" data-i18n="skill.filter.communication">📧
216
+ 커뮤</button>
217
+ <button class="skill-filter" data-filter="devtools" data-i18n="skill.filter.devtools">🔧 개발</button>
218
+ <button class="skill-filter" data-filter="ai-media" data-i18n="skill.filter.ai">🤖 AI</button>
219
+ <button class="skill-filter" data-filter="utility" data-i18n="skill.filter.utility">🌐 유틸</button>
220
+ <button class="skill-filter" data-filter="smarthome" data-i18n="skill.filter.smarthome">🏠 홈</button>
221
+ <button class="skill-filter" data-filter="other" data-i18n="skill.filter.other">📂 기타</button>
222
+ </div>
223
+ <div class="text-xs text-dim" id="skillsCount" data-i18n="loading">로딩 중...</div>
224
+ <div id="skillsList"></div>
225
+ </div>
226
+
227
+ <!-- Settings Tab -->
228
+ <div id="tabSettings" class="tab-content" role="tabpanel" aria-labelledby="tabBtnSettings">
229
+ <button class="btn-clear btn-action-block" data-action="openPrompt"
230
+ data-i18n="btn.editPrompt">✏️
231
+ 시스템 프롬프트 편집</button>
232
+ <!-- Active Channel Toggle -->
233
+ <div class="settings-group">
234
+ <h4>📡 Active Channel</h4>
235
+ <div class="settings-row">
236
+ <label>Runtime</label>
237
+ <div>
238
+ <button id="chTelegram" class="perm-btn active">TG</button>
239
+ <button id="chDiscord" class="perm-btn">DC</button>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ <!-- Telegram Bot -->
245
+ <div id="channelTelegramSettings" class="settings-group">
246
+ <h4>📬 Telegram</h4>
247
+ <div class="settings-row">
248
+ <label data-i18n="label.enabled">활성화</label>
249
+ <div>
250
+ <button id="tgOff" class="perm-btn active" data-i18n="btn.off">끔</button>
251
+ <button id="tgOn" class="perm-btn" data-i18n="btn.on">켬</button>
252
+ </div>
253
+ </div>
254
+ <div class="settings-row sub-row">
255
+ <label data-i18n="label.botToken">봇 토큰</label>
256
+ <input type="password" id="tgToken" placeholder="123456:ABC-DEF..." class="input-sm">
257
+ </div>
258
+ <div class="settings-row sub-row">
259
+ <label data-i18n="label.chatIds">허용 채팅 ID</label>
260
+ <input type="text" id="tgChatIds" data-i18n-placeholder="tg.chatIds.placeholder"
261
+ placeholder="콤마 구분 (비워두면 전체 허용)" class="input-sm">
262
+ </div>
263
+ <div class="settings-row sub-row">
264
+ <label data-i18n="label.forwardAll">자동 전송</label>
265
+ <div>
266
+ <button id="tgForwardOff" class="perm-btn" data-i18n="btn.off">끔</button>
267
+ <button id="tgForwardOn" class="perm-btn active" data-i18n="btn.on">켬</button>
268
+ </div>
269
+ </div>
270
+ </div>
271
+
272
+ <!-- Discord Bot -->
273
+ <div id="channelDiscordSettings" class="settings-group" style="display:none">
274
+ <h4>🎮 Discord</h4>
275
+ <div class="settings-row">
276
+ <label data-i18n="label.enabled">활성화</label>
277
+ <div>
278
+ <button id="dcOff" class="perm-btn active" data-i18n="btn.off">끔</button>
279
+ <button id="dcOn" class="perm-btn" data-i18n="btn.on">켬</button>
280
+ </div>
281
+ </div>
282
+ <div class="settings-row sub-row">
283
+ <label>Bot Token</label>
284
+ <input type="password" id="dcToken" placeholder="Discord bot token..." class="input-sm">
285
+ </div>
286
+ <div class="settings-row sub-row">
287
+ <label>Guild ID</label>
288
+ <input type="text" id="dcGuildId" placeholder="Guild (server) ID" class="input-sm">
289
+ </div>
290
+ <div class="settings-row sub-row">
291
+ <label>Channel IDs</label>
292
+ <input type="text" id="dcChannelIds" placeholder="콤마 구분 (비워두면 전체 허용)" class="input-sm">
293
+ </div>
294
+ <div class="settings-row sub-row">
295
+ <label data-i18n="label.forwardAll">자동 전송</label>
296
+ <div>
297
+ <button id="dcForwardOff" class="perm-btn" data-i18n="btn.off">끔</button>
298
+ <button id="dcForwardOn" class="perm-btn active" data-i18n="btn.on">켬</button>
299
+ </div>
300
+ </div>
301
+ <div class="settings-row sub-row">
302
+ <label>Allow Bots</label>
303
+ <div>
304
+ <button id="dcAllowBotsOff" class="perm-btn active" data-i18n="btn.off">끔</button>
305
+ <button id="dcAllowBotsOn" class="perm-btn" data-i18n="btn.on">켬</button>
306
+ </div>
307
+ </div>
308
+ </div>
309
+
310
+ <!-- Per-CLI Models -->
311
+ <div class="settings-group">
312
+ <h4>🟣 Claude</h4>
313
+ <div class="settings-row">
314
+ <label>Model</label>
315
+ <select id="modelClaude"></select>
316
+ <input type="text" id="customModelClaude" class="custom-model-input"
317
+ data-i18n-placeholder="model.placeholder" placeholder="model ID 입력" style="display:none">
318
+ </div>
319
+ <div class="settings-row sub-row">
320
+ <label>Effort</label>
321
+ <select id="effortClaude">
322
+ <option value="low">🟢 low</option>
323
+ <option value="medium" selected>🟡 medium</option>
324
+ <option value="high">🔴 high</option>
325
+ </select>
326
+ </div>
327
+ <div class="settings-row sub-row">
328
+ <label>🧠 1M Context</label>
329
+ <div>
330
+ <button id="claude1mOff" class="perm-btn active">Off</button>
331
+ <button id="claude1mOn" class="perm-btn">On</button>
332
+ </div>
333
+ </div>
334
+ </div>
335
+
336
+ <div class="settings-group">
337
+ <h4>🟢 Codex</h4>
338
+ <div class="settings-row">
339
+ <label>Model</label>
340
+ <select id="modelCodex"></select>
341
+ <input type="text" id="customModelCodex" class="custom-model-input"
342
+ data-i18n-placeholder="model.placeholder" placeholder="model ID 입력" style="display:none">
343
+ </div>
344
+ <div class="settings-row sub-row">
345
+ <label>Effort</label>
346
+ <select id="effortCodex">
347
+ <option value="low">🟢 low</option>
348
+ <option value="medium" selected>🟡 medium</option>
349
+ <option value="high">🟠 high</option>
350
+ <option value="xhigh">🔴 xhigh</option>
351
+ </select>
352
+ </div>
353
+ <div class="settings-row sub-row">
354
+ <label>⚡ Fast Mode</label>
355
+ <div>
356
+ <button id="codexFastOff" class="perm-btn active" data-i18n="btn.off">끔</button>
357
+ <button id="codexFastOn" class="perm-btn" data-i18n="btn.on">켬</button>
358
+ </div>
359
+ </div>
360
+ <div class="settings-row sub-row">
361
+ <label>🧠 1M Context</label>
362
+ <div>
363
+ <button id="codexCtxOff" class="perm-btn active">Off</button>
364
+ <button id="codexCtxOn" class="perm-btn">On</button>
365
+ </div>
366
+ </div>
367
+ <div id="codexCtxValues" style="display:none">
368
+ <div class="settings-row sub-row ml-6" >
369
+ <label class="label-wide">Context Window</label>
370
+ <input type="number" id="codexCtxWindow" value="1000000" min="272000" max="1050000" step="1000"
371
+ class="input-compact">
372
+ </div>
373
+ <div class="settings-row sub-row ml-6" >
374
+ <label class="label-wide">Auto Compact Limit</label>
375
+ <input type="number" id="codexCtxCompact" value="900000" min="100000" max="1000000" step="1000"
376
+ class="input-compact">
377
+ </div>
378
+ </div>
379
+ </div>
380
+
381
+ <div class="settings-group">
382
+ <h4>🔵 Gemini</h4>
383
+ <div class="settings-row">
384
+ <label>Model</label>
385
+ <select id="modelGemini"></select>
386
+ <input type="text" id="customModelGemini" class="custom-model-input"
387
+ data-i18n-placeholder="model.placeholder" placeholder="model ID 입력" style="display:none">
388
+ </div>
389
+ </div>
390
+
391
+ <div class="settings-group">
392
+ <h4>🟠 OpenCode</h4>
393
+ <div class="settings-row">
394
+ <label>Model</label>
395
+ <select id="modelOpencode"></select>
396
+ <input type="text" id="customModelOpencode" class="custom-model-input"
397
+ data-i18n-placeholder="model.placeholder" placeholder="model ID 입력" style="display:none">
398
+ </div>
399
+ <div class="settings-row sub-row">
400
+ <label>Effort</label>
401
+ <select id="effortOpencode">
402
+ <option value="">— none</option>
403
+ <option value="minimal">🟢 minimal</option>
404
+ <option value="low">🟡 low</option>
405
+ <option value="high">🟠 high</option>
406
+ <option value="max">🔴 max</option>
407
+ </select>
408
+ </div>
409
+ </div>
410
+
411
+ <div class="settings-group">
412
+ <h4>💙 Copilot</h4>
413
+ <div class="settings-row">
414
+ <label>Model</label>
415
+ <select id="modelCopilot"></select>
416
+ <input type="text" id="customModelCopilot" class="custom-model-input"
417
+ data-i18n-placeholder="model.placeholder" placeholder="model ID 입력" style="display:none">
418
+ </div>
419
+ <div class="settings-row sub-row">
420
+ <label>Effort</label>
421
+ <select id="effortCopilot">
422
+ <option value="" selected>— none</option>
423
+ </select>
424
+ </div>
425
+ </div>
426
+
427
+ <!-- Fallback Order -->
428
+ <div class="settings-group">
429
+ <h4>⚡ Fallback</h4>
430
+ <p class="text-xs text-dim fallback-desc" data-i18n="fallback.desc">CLI 실패 시 자동
431
+ 재시도 순서</p>
432
+ <div id="fallbackOrderList"></div>
433
+ </div>
434
+
435
+ <!-- MCP Servers -->
436
+ <div class="settings-group">
437
+ <h4>🔌 MCP Servers</h4>
438
+ <div id="mcpServerList" class="text-status py-1">
439
+ Loading...
440
+ </div>
441
+ <button class="btn-clear btn-action-block"
442
+ data-action="syncMcp">🔄 Sync to all CLIs</button>
443
+ <button class="btn-clear btn-action-block"
444
+ data-action="installMcp">📦 Install Globally (npm i -g)</button>
445
+ <div id="mcpSyncResult" class="text-xs text-dim py-1" style="display:none"></div>
446
+ </div>
447
+
448
+ <!-- STT Settings -->
449
+ <div class="settings-group">
450
+ <h4 data-i18n="stt.title">🎙️ 음성 인식 (STT)</h4>
451
+ <div class="settings-row">
452
+ <label data-i18n="stt.engine">엔진</label>
453
+ <select id="sttEngine">
454
+ <option value="auto">Auto (Gemini → Whisper)</option>
455
+ <option value="gemini">Gemini only</option>
456
+ <option value="openai">OpenAI Compatible</option>
457
+ <option value="vertex">Vertex AI</option>
458
+ <option value="whisper">Whisper only (local)</option>
459
+ </select>
460
+ </div>
461
+ <div class="settings-row sub-row stt-gemini">
462
+ <label data-i18n="stt.geminiKey">Gemini API Key</label>
463
+ <input type="password" id="sttGeminiKey" placeholder="AIza..." class="input-sm">
464
+ </div>
465
+ <div class="settings-row sub-row stt-gemini">
466
+ <label data-i18n="stt.geminiModel">Gemini 모델</label>
467
+ <select id="sttGeminiModel">
468
+ <option value="gemini-3.1-flash-lite-preview">gemini-3.1-flash-lite-preview (fastest)</option>
469
+ <option value="gemini-2.5-flash-lite">gemini-2.5-flash-lite (fast)</option>
470
+ <option value="gemini-2.5-flash">gemini-2.5-flash (balanced)</option>
471
+ <option value="gemini-2.5-pro">gemini-2.5-pro (accurate)</option>
472
+ <option value="__custom__">✏️ 직접 입력...</option>
473
+ </select>
474
+ <input type="text" id="sttGeminiModelCustom" placeholder="모델명 입력"
475
+ class="mt-1" style="display:none" />
476
+ </div>
477
+ <!-- OpenAI Compatible -->
478
+ <div class="settings-row sub-row stt-openai" style="display:none">
479
+ <label data-i18n="stt.openaiBaseUrl">Base URL</label>
480
+ <input type="text" id="sttOpenaiBaseUrl" placeholder="https://api.groq.com/openai" class="input-sm">
481
+ </div>
482
+ <div class="settings-row sub-row stt-openai" style="display:none">
483
+ <label data-i18n="stt.openaiKey">API Key</label>
484
+ <input type="password" id="sttOpenaiKey" placeholder="sk-..." class="input-sm">
485
+ </div>
486
+ <div class="settings-row sub-row stt-openai" style="display:none">
487
+ <label data-i18n="stt.openaiModel">Model</label>
488
+ <input type="text" id="sttOpenaiModel" placeholder="whisper-large-v3" class="input-sm">
489
+ </div>
490
+ <!-- Vertex AI -->
491
+ <div class="settings-row sub-row stt-vertex" style="display:none">
492
+ <label data-i18n="stt.vertexConfig">Vertex AI Config (JSON)</label>
493
+ <textarea id="sttVertexJson" rows="4"
494
+ placeholder='{"project_id":"...","location":"us-central1","credentials":{...}}' class="input-sm mono"></textarea>
495
+ </div>
496
+ <div class="settings-row sub-row stt-whisper">
497
+ <label data-i18n="stt.whisperModel">Whisper 모델</label>
498
+ <input type="text" id="sttWhisperModel" placeholder="mlx-community/..." class="input-sm">
499
+ </div>
500
+ <small class="text-shortcut-hint" data-i18n="stt.shortcutHint">
501
+ ⌨️ Ctrl+Shift+Space (⌘+Shift+Space on Mac)</small>
502
+ </div>
503
+
504
+
505
+ </div>
506
+ </aside>
507
+
508
+ <!-- Prompt Modal -->
509
+ <div class="modal-overlay" id="promptModal" role="dialog" aria-modal="true" aria-label="System prompt editor">
510
+ <div class="modal-box">
511
+ <div class="modal-header">
512
+ <span data-i18n="modal.promptTitle">시스템 프롬프트 (A-2)</span>
513
+ <button data-action="closePrompt"
514
+ class="btn-modal-close" aria-label="Close">✕</button>
515
+ </div>
516
+ <textarea class="modal-textarea" id="modalPromptEditor"></textarea>
517
+ <div class="modal-footer">
518
+ <button class="btn-clear btn-action-sm px-4" data-action="cancelPrompt"
519
+ data-i18n="btn.cancel">취소</button>
520
+ <button class="btn-save" data-action="savePrompt" data-i18n="btn.save">저장</button>
521
+ </div>
522
+ </div>
523
+ </div>
524
+
525
+ <!-- Heartbeat Jobs Modal -->
526
+ <div class="modal-overlay" id="heartbeatModal" role="dialog" aria-modal="true" aria-label="Heartbeat jobs">
527
+ <div class="modal-box modal-scrollable" >
528
+ <div class="modal-header">
529
+ <span data-i18n="modal.heartbeatTitle">💓 하트비트 작업</span>
530
+ <button data-action="closeHeartbeat"
531
+ class="btn-modal-close" aria-label="Close">✕</button>
532
+ </div>
533
+ <div id="hbJobsList" class="p-3"></div>
534
+ <div class="px-3 pb-3">
535
+ <button class="hb-add" data-action="addHeartbeat" data-i18n="hb.add">+ 새 하트비트 추가</button>
536
+ </div>
537
+ </div>
538
+ </div>
539
+
540
+ <!-- Memory Modal -->
541
+ <div class="modal-overlay" id="memoryModal" role="dialog" aria-modal="true" aria-label="Memory files">
542
+ <div class="modal-box modal-scrollable" >
543
+ <div class="modal-header">
544
+ <span data-i18n="modal.memoryTitle">🧠 메모리</span>
545
+ <button data-action="closeMemory"
546
+ class="btn-modal-close" aria-label="Close">✕</button>
547
+ </div>
548
+ <div class="tab-strip" role="tablist">
549
+ <button class="mem-tab active mem-tab-btn" id="memTabBtnSettings" role="tab" aria-selected="true" aria-controls="memTabSettings"
550
+ >⚙️
551
+ Settings</button>
552
+ <button class="mem-tab mem-tab-btn" id="memTabBtnAdvOps" role="tab" aria-selected="false" aria-controls="memTabAdvOps"
553
+ >📊
554
+ Status</button>
555
+ <button class="mem-tab mem-tab-btn" id="memTabBtnFiles" role="tab" aria-selected="false" aria-controls="memTabFiles"
556
+ >📂
557
+ Files</button>
558
+ </div>
559
+ <div id="advStatusBanner" class="adv-status-banner" style="display:none"></div>
560
+ <div id="memTabSettings" class="p-3" role="tabpanel" aria-labelledby="memTabBtnSettings">
561
+ <div class="settings-row"><label data-i18n="label.enabled">활성화</label>
562
+ <div>
563
+ <button id="memOff" class="perm-btn" data-i18n="btn.off">끔</button>
564
+ <button id="memOn" class="perm-btn active" data-i18n="btn.on">켬</button>
565
+ </div>
566
+ </div>
567
+ <div class="settings-row"><label data-i18n="label.flushEvery">정리 주기</label>
568
+ <select id="memFlushEvery"
569
+ class="select-sm">
570
+ <option value="5">5 QA</option>
571
+ <option value="10" selected>10 QA</option>
572
+ <option value="20">20 QA</option>
573
+ <option value="50">50 QA</option>
574
+ </select>
575
+ </div>
576
+ <div class="settings-row"><label>CLI</label>
577
+ <select id="memCli"
578
+ class="select-sm">
579
+ <option value="">(active CLI)</option>
580
+ <option>claude</option>
581
+ <option>codex</option>
582
+ <option>gemini</option>
583
+ <option>opencode</option>
584
+ <option>copilot</option>
585
+ </select>
586
+ </div>
587
+ <div class="settings-row"><label>Model</label>
588
+ <select id="memModel"
589
+ class="select-sm">
590
+ <option value="">(CLI default)</option>
591
+ <option>haiku</option>
592
+ <option>sonnet</option>
593
+ <option>sonnet[1m]</option>
594
+ <option>opus</option>
595
+ <option>opus[1m]</option>
596
+ <option>gemini-2.5-flash</option>
597
+ <option>gpt-5.3-codex-spark</option>
598
+ </select>
599
+ </div>
600
+ <div class="settings-row"><label>Save Path</label>
601
+ <span id="memPath"
602
+ class="text-xs text-dim mono-path"></span>
603
+ </div>
604
+ <div class="settings-row"><label>Retention</label>
605
+ <select id="memRetention"
606
+ class="select-sm">
607
+ <option value="7">7 days</option>
608
+ <option value="30" selected>30 days</option>
609
+ <option value="90">90 days</option>
610
+ <option value="0">forever</option>
611
+ </select>
612
+ </div>
613
+ <div
614
+ class="info-box">
615
+ 💡 Counter: <span id="memCounter">0</span> / <span id="memThreshold">10</span> responses until next
616
+ flush
617
+ </div>
618
+ </div>
619
+ <div id="memTabAdvOps" class="p-3" style="display:none" role="tabpanel" aria-labelledby="memTabBtnAdvOps">
620
+ <div class="settings-row"><label>Index State</label><span id="advIndexState" class="text-status">-</span></div>
621
+ <div class="settings-row"><label>Storage Root</label><span id="advStorageRoot" class="text-xs text-dim mono-path">-</span></div>
622
+ <div class="settings-row"><label>Indexed Files</label><span id="advIndexedFiles" class="text-status">0</span></div>
623
+ <div class="settings-row"><label>Indexed Chunks</label><span id="advIndexedChunks" class="text-status">0</span></div>
624
+ <div class="settings-row"><label>Last Indexed</label><span id="advLastIndexedAt" class="text-status">-</span></div>
625
+ <div class="settings-row"><label>Import Status</label><span id="advImportStatus" class="text-status">-</span></div>
626
+ <div class="settings-row"><label>Corrupted</label><span id="advCorruptedCount" class="text-status">0</span></div>
627
+ <div class="settings-row"><label>Last Expansion</label><span id="advLastExpansion" class="text-status">-</span></div>
628
+ <div class="settings-row"><label>Last Error</label><span id="advLastError" class="text-status">-</span></div>
629
+ <div
630
+ class="info-box">
631
+ Fixed Snapshot Budget: 2800 chars / 4 chunks / 700 chars each
632
+ </div>
633
+ <div class="settings-row mt-3" >
634
+ <label>Bootstrap Sources</label>
635
+ <div class="flex flex-col gap-1 text-sm">
636
+ <label><input type="checkbox" id="advImportCore" checked> MEMORY.md</label>
637
+ <label><input type="checkbox" id="advImportMarkdown" checked> memory/**/*.md</label>
638
+ <label><input type="checkbox" id="advImportKv" checked> SQLite KV memory</label>
639
+ <label><input type="checkbox" id="advImportClaudeSession" checked> external .claude session memory (read-only)</label>
640
+ </div>
641
+ </div>
642
+ <div class="flex gap-2 flex-wrap mt-3">
643
+ <button class="btn-clear" id="advBootstrapBtn">🧩 Bootstrap</button>
644
+ <button class="btn-clear" id="advReindexBtn">🔄 Reindex</button>
645
+ <button class="btn-clear" id="advReimportBtn">📥 Re-import Legacy</button>
646
+ <button class="btn-clear" id="advOpenCorruptedBtn">📂 Open Corrupted Folder</button>
647
+ </div>
648
+ </div>
649
+ <div id="memTabFiles" class="p-3" style="display:none" role="tabpanel" aria-labelledby="memTabBtnFiles">
650
+ <div class="section-header">Basic Memory Files</div>
651
+ <div id="basicMemoryFiles"></div>
652
+ <div class="section-header mt-3">Structured Memory Files</div>
653
+ <div id="advancedMemoryFiles"></div>
654
+ <div class="section-header mt-3">Corrupted / Quarantined</div>
655
+ <div id="corruptedMemoryFiles"></div>
656
+ <div class="section-header mt-3">Legacy Unmapped</div>
657
+ <div id="legacyUnmappedFiles"></div>
658
+ </div>
659
+ </div>
660
+ </div>
661
+
662
+ <!-- Mobile Navigation -->
663
+ <div class="mobile-nav">
664
+ <button id="mobileMenuLeft" aria-label="Open menu">☰ Menu</button>
665
+ <button id="mobileMenuRight" aria-label="Open settings">⚙️ Settings</button>
666
+ </div>
667
+
668
+ <!-- Template Editor Modal (Node Map + Editor 2-view) -->
669
+ <div class="modal-overlay" id="templateModal" role="dialog" aria-modal="true" aria-label="Prompt templates">
670
+ <div class="modal-box modal-template" >
671
+ <div class="modal-header">
672
+ <span id="templateModalTitle">📝 프롬프트 구조</span>
673
+ <button data-action="closeTemplate"
674
+ class="btn-modal-close" aria-label="Close">✕</button>
675
+ </div>
676
+ <!-- View 1: Node Map -->
677
+ <div id="templateTreeView" class="template-tree-area">
678
+ <div id="templateTree"></div>
679
+ <div class="template-hint">
680
+ 🔒 클릭하면 프롬프트 내용 확인 · ⚠️ 개발자 모드에서 편집
681
+ </div>
682
+ </div>
683
+ <!-- View 2: Editor (hidden by default) -->
684
+ <div id="templateEditorView" class="template-editor-view" style="display:none">
685
+ <div
686
+ class="template-editor-bar">
687
+ <button id="templateBack"
688
+ class="btn-back">←
689
+ 뒤로</button>
690
+ <span id="templateEditorLabel" class="flex-1 text-sm text-dim"></span>
691
+ <button id="templateDevToggle"
692
+ class="btn-dev-toggle">🔧
693
+ 개발자 모드</button>
694
+ </div>
695
+ <textarea class="modal-textarea template-textarea" id="templateEditor" readonly
696
+ ></textarea>
697
+ <div class="modal-footer">
698
+ <span id="templateVars" class="text-xs text-dim mr-auto"></span>
699
+ <button class="btn-save" data-action="saveTemplate" style="display:none" id="templateSaveBtn">💾
700
+ 저장</button>
701
+ </div>
702
+ </div>
703
+ </div>
704
+ </div>
705
+
706
+ </body>
707
+
708
+ </html>