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
package/public/index.html CHANGED
@@ -3,7 +3,12 @@
3
3
 
4
4
  <head>
5
5
  <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
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="/manifest.json">
11
+ <link rel="apple-touch-icon" href="/icons/icon-192.png">
7
12
  <title>CLI-JAW</title>
8
13
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
14
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -17,16 +22,8 @@
17
22
  <link rel="stylesheet" href="/css/sidebar.css">
18
23
  <link rel="stylesheet" href="/css/modals.css">
19
24
  <link rel="stylesheet" href="/css/markdown.css">
20
- <!-- CDN: markdown rendering -->
21
- <link rel="stylesheet" id="hljsTheme"
22
- href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github-dark.min.css">
23
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16/dist/katex.min.css">
24
- <script defer src="https://cdn.jsdelivr.net/npm/marked@14/marked.min.js"></script>
25
- <script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js"></script>
26
- <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16/dist/katex.min.js"></script>
27
- <script defer src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
28
- <script defer src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>
29
- <!-- modulepreload removed: esbuild bundles all modules into dist/bundle.js -->
25
+ <link rel="stylesheet" href="/css/tool-ui.css">
26
+ <!-- Vite handles module bundling in dev (HMR) and production (build) -->
30
27
  </head>
31
28
 
32
29
  <body>
@@ -38,7 +35,7 @@
38
35
 
39
36
  <div>
40
37
  <div class="section-title" data-i18n="sidebar.status">상태</div>
41
- <span class="status-badge status-idle" id="statusBadge">⚡ idle</span>
38
+ <span class="status-badge status-idle" id="statusBadge">idle</span>
42
39
  </div>
43
40
 
44
41
  <div>
@@ -54,12 +51,11 @@
54
51
  <!-- CLI Status (moved from Settings tab) -->
55
52
  <div>
56
53
  <div class="section-title" data-i18n="sidebar.cliStatus">CLI 상태</div>
57
- <div id="cliStatusList" style="margin-top:4px">
58
- <div style="color:var(--text-dim);font-size:11px">Loading...</div>
54
+ <div id="cliStatusList" class="mt-1">
55
+ <div class="text-status">Loading...</div>
59
56
  </div>
60
- <div style="display:flex;gap:6px;margin-top:8px;align-items:center">
61
- <button class="btn-clear"
62
- style="margin:0;flex:1;padding:6px;font-size:11px;display:flex;align-items:center;justify-content:center;gap:4px;height:32px"
57
+ <div class="flex gap-2 mt-2 items-center">
58
+ <button class="btn-clear btn-refresh"
63
59
  data-action="refreshCli">
64
60
  <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
65
61
  stroke-linecap="round" stroke-linejoin="round">
@@ -70,7 +66,7 @@
70
66
  </svg>
71
67
  Refresh</button>
72
68
  <select id="cliStatusInterval"
73
- style="font-size:11px;padding:6px 8px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;min-width:60px;height:32px">
69
+ class="select-sm select-status-interval">
74
70
  <option value="60" data-i18n="time.1m">1분</option>
75
71
  <option value="300" selected data-i18n="time.5m">5분</option>
76
72
  <option value="600" data-i18n="time.10m">10분</option>
@@ -81,11 +77,10 @@
81
77
 
82
78
  <div class="sidebar-bottom">
83
79
  <div class="section-title" data-i18n="sidebar.agentName">에이전트 이름</div>
84
- <div style="display:flex;gap:4px;align-items:center">
80
+ <div class="flex gap-1 items-center">
85
81
  <input type="text" id="appNameInput" value="CLI-JAW"
86
- style="flex:1;font-family:var(--font-display);font-size:13px;font-weight:600;padding:4px 8px">
87
- <button class="sidebar-hb-btn" id="appNameSave"
88
- style="width:auto;padding:4px 8px;font-size:11px">✓</button>
82
+ class="input-agent-name">
83
+ <button class="sidebar-hb-btn btn-action-sm w-auto" id="appNameSave">✓</button>
89
84
  </div>
90
85
  <button class="sidebar-hb-btn" id="btnClearChat">/clear</button>
91
86
  <button class="sidebar-hb-btn" id="hbSidebarBtn">💓 Heartbeat (0)</button>
@@ -95,7 +90,7 @@
95
90
  </nav>
96
91
 
97
92
  <!-- Chat Area -->
98
- <div class="chat-area" style="position:relative">
93
+ <div class="chat-area">
99
94
  <div class="drag-overlay" id="dragOverlay" data-i18n="drag.drop">📎 파일을 여기에 드랍하세요</div>
100
95
  <div class="chat-header">
101
96
  <span>CLI-JAW ● <span id="headerCli">claude</span></span>
@@ -119,6 +114,11 @@
119
114
  <div class="pabc-dot future" data-phase="C" id="dot-C">C</div>
120
115
  </div>
121
116
  <div class="chat-messages" id="chatMessages"></div>
117
+ <div class="empty-state" id="emptyState">
118
+ <div class="empty-icon">CLI-JAW</div>
119
+ <div class="empty-title">CLI-JAW</div>
120
+ <div class="empty-subtitle">메시지를 입력하세요</div>
121
+ </div>
122
122
  <div class="typing-indicator" id="typingIndicator">
123
123
  <span class="label" data-i18n="status.responding">응답 중</span>
124
124
  <span class="typing-dot"></span>
@@ -143,24 +143,24 @@
143
143
  <textarea class="chat-input" id="chatInput" rows="1" data-i18n-placeholder="input.placeholder"
144
144
  placeholder="메시지 입력..." aria-label="Chat message input" aria-haspopup="listbox" aria-expanded="false"
145
145
  aria-controls="cmdDropdown" aria-autocomplete="list" aria-activedescendant=""></textarea>
146
- <button class="btn-send" id="btnSend">➤</button>
146
+ <button class="btn-send" id="btnSend" aria-label="Send message">➤</button>
147
147
  </div>
148
148
  </div>
149
149
 
150
150
  <!-- Right Sidebar (Tabbed) -->
151
151
  <aside class="sidebar-right" role="complementary" aria-label="Settings panel">
152
152
  <button class="sidebar-toggle" id="toggleRight" title="Collapse" aria-label="Collapse settings">▶</button>
153
- <div class="tab-bar">
154
- <button class="tab-btn active" data-i18n="tab.agents">에이전트</button>
155
- <button class="tab-btn" data-i18n="tab.skills">스킬</button>
156
- <button class="tab-btn" data-i18n="tab.settings">설정</button>
153
+ <div class="tab-bar" role="tablist">
154
+ <button class="tab-btn active" id="tabBtnAgents" role="tab" aria-selected="true" aria-controls="tabAgents" data-i18n="tab.agents">에이전트</button>
155
+ <button class="tab-btn" id="tabBtnSkills" role="tab" aria-selected="false" aria-controls="tabSkills" data-i18n="tab.skills">스킬</button>
156
+ <button class="tab-btn" id="tabBtnSettings" role="tab" aria-selected="false" aria-controls="tabSettings" data-i18n="tab.settings">설정</button>
157
157
  </div>
158
158
  <div class="sidebar-save-bar">
159
159
  <button class="btn-save" data-i18n="btn.saveSettings">저장</button>
160
160
  </div>
161
161
 
162
162
  <!-- Agents Tab -->
163
- <div id="tabAgents" class="tab-content active">
163
+ <div id="tabAgents" class="tab-content active" role="tabpanel" aria-labelledby="tabBtnAgents">
164
164
  <div>
165
165
  <label data-i18n="label.activeCli">활성 CLI</label>
166
166
  <select id="selCli">
@@ -189,7 +189,7 @@
189
189
  <div>
190
190
  <label data-i18n="label.permissions">권한</label>
191
191
  <div class="perm-toggle">
192
- <span class="perm-btn active" style="cursor:default;width:100%;padding:6px 14px">⚡ Auto</span>
192
+ <span class="perm-btn active perm-auto" >⚡ Auto</span>
193
193
  </div>
194
194
  </div>
195
195
 
@@ -198,21 +198,21 @@
198
198
  <span id="inpCwd" class="cwd-display">~/.cli-jaw</span>
199
199
  </div>
200
200
 
201
- <hr style="border:none;border-top:1px solid var(--border);margin:4px 0">
201
+ <hr class="hr-divider">
202
202
 
203
- <div style="display:flex;justify-content:space-between;align-items:center">
203
+ <div class="flex justify-between items-center">
204
204
  <div class="section-title" data-i18n="sidebar.employees">직원</div>
205
- <button class="btn-clear" style="margin:0;padding:4px 10px;font-size:11px" data-action="addEmployee"
205
+ <button class="btn-clear btn-action-sm" data-action="addEmployee"
206
206
  data-i18n="btn.addEmployee">+ 추가</button>
207
207
  </div>
208
208
  <div id="employeesList">
209
- <div style="color:var(--text-dim);font-size:11px" data-i18n="emp.empty">직원이 없습니다</div>
209
+ <div class="text-status" data-i18n="emp.empty">직원이 없습니다</div>
210
210
  </div>
211
211
  </div>
212
212
 
213
213
  <!-- Skills Tab -->
214
- <div id="tabSkills" class="tab-content">
215
- <div style="display:flex;gap:6px;flex-wrap:wrap">
214
+ <div id="tabSkills" class="tab-content" role="tabpanel" aria-labelledby="tabBtnSkills">
215
+ <div class="flex gap-2 flex-wrap">
216
216
  <button class="skill-filter active" data-filter="all" data-i18n="skill.filter.all">전체</button>
217
217
  <button class="skill-filter" data-filter="installed" data-i18n="skill.filter.installed">📦 설치됨</button>
218
218
  <button class="skill-filter" data-filter="productivity" data-i18n="skill.filter.productivity">📝
@@ -225,17 +225,29 @@
225
225
  <button class="skill-filter" data-filter="smarthome" data-i18n="skill.filter.smarthome">🏠 홈</button>
226
226
  <button class="skill-filter" data-filter="other" data-i18n="skill.filter.other">📂 기타</button>
227
227
  </div>
228
- <div style="font-size:10px;color:var(--text-dim)" id="skillsCount" data-i18n="loading">로딩 중...</div>
228
+ <div class="text-xs text-dim" id="skillsCount" data-i18n="loading">로딩 중...</div>
229
229
  <div id="skillsList"></div>
230
230
  </div>
231
231
 
232
232
  <!-- Settings Tab -->
233
- <div id="tabSettings" class="tab-content">
234
- <button class="btn-clear" style="width:100%;margin:0;padding:8px;font-size:12px" data-action="openPrompt"
233
+ <div id="tabSettings" class="tab-content" role="tabpanel" aria-labelledby="tabBtnSettings">
234
+ <button class="btn-clear btn-action-block" data-action="openPrompt"
235
235
  data-i18n="btn.editPrompt">✏️
236
236
  시스템 프롬프트 편집</button>
237
- <!-- Telegram Bot -->
237
+ <!-- Active Channel Toggle -->
238
238
  <div class="settings-group">
239
+ <h4>📡 Active Channel</h4>
240
+ <div class="settings-row">
241
+ <label>Runtime</label>
242
+ <div>
243
+ <button id="chTelegram" class="perm-btn active">TG</button>
244
+ <button id="chDiscord" class="perm-btn">DC</button>
245
+ </div>
246
+ </div>
247
+ </div>
248
+
249
+ <!-- Telegram Bot -->
250
+ <div id="channelTelegramSettings" class="settings-group">
239
251
  <h4>📬 Telegram</h4>
240
252
  <div class="settings-row">
241
253
  <label data-i18n="label.enabled">활성화</label>
@@ -246,13 +258,12 @@
246
258
  </div>
247
259
  <div class="settings-row sub-row">
248
260
  <label data-i18n="label.botToken">봇 토큰</label>
249
- <input type="password" id="tgToken" placeholder="123456:ABC-DEF..."
250
- style="width:100%;font-size:11px;padding:4px">
261
+ <input type="password" id="tgToken" placeholder="123456:ABC-DEF..." class="input-sm">
251
262
  </div>
252
263
  <div class="settings-row sub-row">
253
264
  <label data-i18n="label.chatIds">허용 채팅 ID</label>
254
265
  <input type="text" id="tgChatIds" data-i18n-placeholder="tg.chatIds.placeholder"
255
- placeholder="콤마 구분 (비워두면 전체 허용)" style="width:100%;font-size:11px;padding:4px">
266
+ placeholder="콤마 구분 (비워두면 전체 허용)" class="input-sm">
256
267
  </div>
257
268
  <div class="settings-row sub-row">
258
269
  <label data-i18n="label.forwardAll">자동 전송</label>
@@ -263,6 +274,44 @@
263
274
  </div>
264
275
  </div>
265
276
 
277
+ <!-- Discord Bot -->
278
+ <div id="channelDiscordSettings" class="settings-group" style="display:none">
279
+ <h4>🎮 Discord</h4>
280
+ <div class="settings-row">
281
+ <label data-i18n="label.enabled">활성화</label>
282
+ <div>
283
+ <button id="dcOff" class="perm-btn active" data-i18n="btn.off">끔</button>
284
+ <button id="dcOn" class="perm-btn" data-i18n="btn.on">켬</button>
285
+ </div>
286
+ </div>
287
+ <div class="settings-row sub-row">
288
+ <label>Bot Token</label>
289
+ <input type="password" id="dcToken" placeholder="Discord bot token..." class="input-sm">
290
+ </div>
291
+ <div class="settings-row sub-row">
292
+ <label>Guild ID</label>
293
+ <input type="text" id="dcGuildId" placeholder="Guild (server) ID" class="input-sm">
294
+ </div>
295
+ <div class="settings-row sub-row">
296
+ <label>Channel IDs</label>
297
+ <input type="text" id="dcChannelIds" placeholder="콤마 구분 (비워두면 전체 허용)" class="input-sm">
298
+ </div>
299
+ <div class="settings-row sub-row">
300
+ <label data-i18n="label.forwardAll">자동 전송</label>
301
+ <div>
302
+ <button id="dcForwardOff" class="perm-btn" data-i18n="btn.off">끔</button>
303
+ <button id="dcForwardOn" class="perm-btn active" data-i18n="btn.on">켬</button>
304
+ </div>
305
+ </div>
306
+ <div class="settings-row sub-row">
307
+ <label>Allow Bots</label>
308
+ <div>
309
+ <button id="dcAllowBotsOff" class="perm-btn active" data-i18n="btn.off">끔</button>
310
+ <button id="dcAllowBotsOn" class="perm-btn" data-i18n="btn.on">켬</button>
311
+ </div>
312
+ </div>
313
+ </div>
314
+
266
315
  <!-- Per-CLI Models -->
267
316
  <div class="settings-group">
268
317
  <h4>🟣 Claude</h4>
@@ -280,6 +329,13 @@
280
329
  <option value="high">🔴 high</option>
281
330
  </select>
282
331
  </div>
332
+ <div class="settings-row sub-row">
333
+ <label>🧠 1M Context</label>
334
+ <div>
335
+ <button id="claude1mOff" class="perm-btn active">Off</button>
336
+ <button id="claude1mOn" class="perm-btn">On</button>
337
+ </div>
338
+ </div>
283
339
  </div>
284
340
 
285
341
  <div class="settings-group">
@@ -314,15 +370,15 @@
314
370
  </div>
315
371
  </div>
316
372
  <div id="codexCtxValues" style="display:none">
317
- <div class="settings-row sub-row" style="margin-left:24px">
318
- <label style="min-width:120px;font-size:11px">Context Window</label>
373
+ <div class="settings-row sub-row ml-6" >
374
+ <label class="label-wide">Context Window</label>
319
375
  <input type="number" id="codexCtxWindow" value="1000000" min="272000" max="1050000" step="1000"
320
- style="width:100px;font-size:11px;padding:3px 6px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
376
+ class="input-compact">
321
377
  </div>
322
- <div class="settings-row sub-row" style="margin-left:24px">
323
- <label style="min-width:120px;font-size:11px">Auto Compact Limit</label>
378
+ <div class="settings-row sub-row ml-6" >
379
+ <label class="label-wide">Auto Compact Limit</label>
324
380
  <input type="number" id="codexCtxCompact" value="900000" min="100000" max="1000000" step="1000"
325
- style="width:100px;font-size:11px;padding:3px 6px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
381
+ class="input-compact">
326
382
  </div>
327
383
  </div>
328
384
  </div>
@@ -376,7 +432,7 @@
376
432
  <!-- Fallback Order -->
377
433
  <div class="settings-group">
378
434
  <h4>⚡ Fallback</h4>
379
- <p style="font-size:10px;color:var(--text-dim);margin:2px 0 6px" data-i18n="fallback.desc">CLI 실패 시 자동
435
+ <p class="text-xs text-dim fallback-desc" data-i18n="fallback.desc">CLI 실패 시 자동
380
436
  재시도 순서</p>
381
437
  <div id="fallbackOrderList"></div>
382
438
  </div>
@@ -384,14 +440,14 @@
384
440
  <!-- MCP Servers -->
385
441
  <div class="settings-group">
386
442
  <h4>🔌 MCP Servers</h4>
387
- <div id="mcpServerList" style="font-size:11px;color:var(--text-dim);padding:4px 0">
443
+ <div id="mcpServerList" class="text-status py-1">
388
444
  Loading...
389
445
  </div>
390
- <button class="btn-clear" style="width:100%;margin:4px 0;padding:6px;font-size:11px"
446
+ <button class="btn-clear btn-action-block"
391
447
  data-action="syncMcp">🔄 Sync to all CLIs</button>
392
- <button class="btn-clear" style="width:100%;margin:0 0 4px;padding:6px;font-size:11px"
448
+ <button class="btn-clear btn-action-block"
393
449
  data-action="installMcp">📦 Install Globally (npm i -g)</button>
394
- <div id="mcpSyncResult" style="font-size:10px;color:var(--text-dim);padding:2px 0;display:none"></div>
450
+ <div id="mcpSyncResult" class="text-xs text-dim py-1" style="display:none"></div>
395
451
  </div>
396
452
 
397
453
  <!-- STT Settings -->
@@ -409,8 +465,7 @@
409
465
  </div>
410
466
  <div class="settings-row sub-row stt-gemini">
411
467
  <label data-i18n="stt.geminiKey">Gemini API Key</label>
412
- <input type="password" id="sttGeminiKey" placeholder="AIza..."
413
- style="width:100%;font-size:11px;padding:4px">
468
+ <input type="password" id="sttGeminiKey" placeholder="AIza..." class="input-sm">
414
469
  </div>
415
470
  <div class="settings-row sub-row stt-gemini">
416
471
  <label data-i18n="stt.geminiModel">Gemini 모델</label>
@@ -422,37 +477,32 @@
422
477
  <option value="__custom__">✏️ 직접 입력...</option>
423
478
  </select>
424
479
  <input type="text" id="sttGeminiModelCustom" placeholder="모델명 입력"
425
- style="display:none; margin-top:4px;" />
480
+ class="mt-1" style="display:none" />
426
481
  </div>
427
482
  <!-- OpenAI Compatible -->
428
483
  <div class="settings-row sub-row stt-openai" style="display:none">
429
484
  <label data-i18n="stt.openaiBaseUrl">Base URL</label>
430
- <input type="text" id="sttOpenaiBaseUrl" placeholder="https://api.groq.com/openai"
431
- style="width:100%;font-size:11px;padding:4px">
485
+ <input type="text" id="sttOpenaiBaseUrl" placeholder="https://api.groq.com/openai" class="input-sm">
432
486
  </div>
433
487
  <div class="settings-row sub-row stt-openai" style="display:none">
434
488
  <label data-i18n="stt.openaiKey">API Key</label>
435
- <input type="password" id="sttOpenaiKey" placeholder="sk-..."
436
- style="width:100%;font-size:11px;padding:4px">
489
+ <input type="password" id="sttOpenaiKey" placeholder="sk-..." class="input-sm">
437
490
  </div>
438
491
  <div class="settings-row sub-row stt-openai" style="display:none">
439
492
  <label data-i18n="stt.openaiModel">Model</label>
440
- <input type="text" id="sttOpenaiModel" placeholder="whisper-large-v3"
441
- style="width:100%;font-size:11px;padding:4px">
493
+ <input type="text" id="sttOpenaiModel" placeholder="whisper-large-v3" class="input-sm">
442
494
  </div>
443
495
  <!-- Vertex AI -->
444
496
  <div class="settings-row sub-row stt-vertex" style="display:none">
445
497
  <label data-i18n="stt.vertexConfig">Vertex AI Config (JSON)</label>
446
498
  <textarea id="sttVertexJson" rows="4"
447
- placeholder='{"project_id":"...","location":"us-central1","credentials":{...}}'
448
- style="width:100%;font-size:11px;padding:4px;font-family:var(--font-mono)"></textarea>
499
+ placeholder='{"project_id":"...","location":"us-central1","credentials":{...}}' class="input-sm mono"></textarea>
449
500
  </div>
450
501
  <div class="settings-row sub-row stt-whisper">
451
502
  <label data-i18n="stt.whisperModel">Whisper 모델</label>
452
- <input type="text" id="sttWhisperModel" placeholder="mlx-community/..."
453
- style="width:100%;font-size:11px;padding:4px">
503
+ <input type="text" id="sttWhisperModel" placeholder="mlx-community/..." class="input-sm">
454
504
  </div>
455
- <small style="font-size:9px;color:var(--text-dim)" data-i18n="stt.shortcutHint">
505
+ <small class="text-shortcut-hint" data-i18n="stt.shortcutHint">
456
506
  ⌨️ Ctrl+Shift+Space (⌘+Shift+Space on Mac)</small>
457
507
  </div>
458
508
 
@@ -466,11 +516,11 @@
466
516
  <div class="modal-header">
467
517
  <span data-i18n="modal.promptTitle">시스템 프롬프트 (A-2)</span>
468
518
  <button data-action="closePrompt"
469
- style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px">✕</button>
519
+ class="btn-modal-close" aria-label="Close">✕</button>
470
520
  </div>
471
521
  <textarea class="modal-textarea" id="modalPromptEditor"></textarea>
472
522
  <div class="modal-footer">
473
- <button class="btn-clear" style="margin:0;padding:6px 16px" data-action="cancelPrompt"
523
+ <button class="btn-clear btn-action-sm px-4" data-action="cancelPrompt"
474
524
  data-i18n="btn.cancel">취소</button>
475
525
  <button class="btn-save" data-action="savePrompt" data-i18n="btn.save">저장</button>
476
526
  </div>
@@ -479,14 +529,14 @@
479
529
 
480
530
  <!-- Heartbeat Jobs Modal -->
481
531
  <div class="modal-overlay" id="heartbeatModal" role="dialog" aria-modal="true" aria-label="Heartbeat jobs">
482
- <div class="modal-box" style="max-height:80vh;overflow-y:auto">
532
+ <div class="modal-box modal-scrollable" >
483
533
  <div class="modal-header">
484
534
  <span data-i18n="modal.heartbeatTitle">💓 하트비트 작업</span>
485
535
  <button data-action="closeHeartbeat"
486
- style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px">✕</button>
536
+ class="btn-modal-close" aria-label="Close">✕</button>
487
537
  </div>
488
- <div id="hbJobsList" style="padding:12px"></div>
489
- <div style="padding:0 12px 12px">
538
+ <div id="hbJobsList" class="p-3"></div>
539
+ <div class="px-3 pb-3">
490
540
  <button class="hb-add" data-action="addHeartbeat" data-i18n="hb.add">+ 새 하트비트 추가</button>
491
541
  </div>
492
542
  </div>
@@ -494,25 +544,25 @@
494
544
 
495
545
  <!-- Memory Modal -->
496
546
  <div class="modal-overlay" id="memoryModal" role="dialog" aria-modal="true" aria-label="Memory files">
497
- <div class="modal-box" style="max-height:80vh;overflow-y:auto">
547
+ <div class="modal-box modal-scrollable" >
498
548
  <div class="modal-header">
499
549
  <span data-i18n="modal.memoryTitle">🧠 메모리</span>
500
550
  <button data-action="closeMemory"
501
- style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px">✕</button>
551
+ class="btn-modal-close" aria-label="Close">✕</button>
502
552
  </div>
503
- <div style="display:flex;border-bottom:1px solid var(--border);padding:0 12px">
504
- <button class="mem-tab active" id="memTabBtnSettings"
505
- style="padding:6px 12px;border:none;background:none;color:var(--text);cursor:pointer;font-size:12px;border-bottom:2px solid transparent">⚙️
553
+ <div class="tab-strip" role="tablist">
554
+ <button class="mem-tab active mem-tab-btn" id="memTabBtnSettings" role="tab" aria-selected="true" aria-controls="memTabSettings"
555
+ >⚙️
506
556
  Settings</button>
507
- <button class="mem-tab" id="memTabBtnAdvOps"
508
- style="padding:6px 12px;border:none;background:none;color:var(--text-dim);cursor:pointer;font-size:12px;border-bottom:2px solid transparent">📊
557
+ <button class="mem-tab mem-tab-btn" id="memTabBtnAdvOps" role="tab" aria-selected="false" aria-controls="memTabAdvOps"
558
+ >📊
509
559
  Status</button>
510
- <button class="mem-tab" id="memTabBtnFiles"
511
- style="padding:6px 12px;border:none;background:none;color:var(--text-dim);cursor:pointer;font-size:12px;border-bottom:2px solid transparent">📂
560
+ <button class="mem-tab mem-tab-btn" id="memTabBtnFiles" role="tab" aria-selected="false" aria-controls="memTabFiles"
561
+ >📂
512
562
  Files</button>
513
563
  </div>
514
- <div id="advStatusBanner" style="display:none;padding:10px 12px;border-bottom:1px solid var(--border);font-size:11px;color:var(--text-dim)"></div>
515
- <div id="memTabSettings" style="padding:12px">
564
+ <div id="advStatusBanner" class="adv-status-banner" style="display:none"></div>
565
+ <div id="memTabSettings" class="p-3" role="tabpanel" aria-labelledby="memTabBtnSettings">
516
566
  <div class="settings-row"><label data-i18n="label.enabled">활성화</label>
517
567
  <div>
518
568
  <button id="memOff" class="perm-btn" data-i18n="btn.off">끔</button>
@@ -521,7 +571,7 @@
521
571
  </div>
522
572
  <div class="settings-row"><label data-i18n="label.flushEvery">정리 주기</label>
523
573
  <select id="memFlushEvery"
524
- style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
574
+ class="select-sm">
525
575
  <option value="5">5 QA</option>
526
576
  <option value="10" selected>10 QA</option>
527
577
  <option value="20">20 QA</option>
@@ -530,7 +580,7 @@
530
580
  </div>
531
581
  <div class="settings-row"><label>CLI</label>
532
582
  <select id="memCli"
533
- style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
583
+ class="select-sm">
534
584
  <option value="">(active CLI)</option>
535
585
  <option>claude</option>
536
586
  <option>codex</option>
@@ -541,21 +591,24 @@
541
591
  </div>
542
592
  <div class="settings-row"><label>Model</label>
543
593
  <select id="memModel"
544
- style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
594
+ class="select-sm">
545
595
  <option value="">(CLI default)</option>
546
- <option>claude-haiku-4-5-20251001</option>
547
- <option>claude-sonnet-4-5-20250929</option>
596
+ <option>haiku</option>
597
+ <option>sonnet</option>
598
+ <option>sonnet[1m]</option>
599
+ <option>opus</option>
600
+ <option>opus[1m]</option>
548
601
  <option>gemini-2.5-flash</option>
549
602
  <option>gpt-5.3-codex-spark</option>
550
603
  </select>
551
604
  </div>
552
605
  <div class="settings-row"><label>Save Path</label>
553
606
  <span id="memPath"
554
- style="font-size:10px;color:var(--text-dim);font-family:monospace;word-break:break-all"></span>
607
+ class="text-xs text-dim mono-path"></span>
555
608
  </div>
556
609
  <div class="settings-row"><label>Retention</label>
557
610
  <select id="memRetention"
558
- style="font-size:11px;padding:4px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px">
611
+ class="select-sm">
559
612
  <option value="7">7 days</option>
560
613
  <option value="30" selected>30 days</option>
561
614
  <option value="90">90 days</option>
@@ -563,49 +616,49 @@
563
616
  </select>
564
617
  </div>
565
618
  <div
566
- style="margin-top:8px;padding:6px;background:var(--bg);border-radius:4px;font-size:11px;color:var(--text-dim)">
619
+ class="info-box">
567
620
  💡 Counter: <span id="memCounter">0</span> / <span id="memThreshold">10</span> responses until next
568
621
  flush
569
622
  </div>
570
623
  </div>
571
- <div id="memTabAdvOps" style="padding:12px;display:none">
572
- <div class="settings-row"><label>Index State</label><span id="advIndexState" style="font-size:11px;color:var(--text-dim)">-</span></div>
573
- <div class="settings-row"><label>Storage Root</label><span id="advStorageRoot" style="font-size:10px;color:var(--text-dim);font-family:monospace;word-break:break-all">-</span></div>
574
- <div class="settings-row"><label>Indexed Files</label><span id="advIndexedFiles" style="font-size:11px;color:var(--text-dim)">0</span></div>
575
- <div class="settings-row"><label>Indexed Chunks</label><span id="advIndexedChunks" style="font-size:11px;color:var(--text-dim)">0</span></div>
576
- <div class="settings-row"><label>Last Indexed</label><span id="advLastIndexedAt" style="font-size:11px;color:var(--text-dim)">-</span></div>
577
- <div class="settings-row"><label>Import Status</label><span id="advImportStatus" style="font-size:11px;color:var(--text-dim)">-</span></div>
578
- <div class="settings-row"><label>Corrupted</label><span id="advCorruptedCount" style="font-size:11px;color:var(--text-dim)">0</span></div>
579
- <div class="settings-row"><label>Last Expansion</label><span id="advLastExpansion" style="font-size:11px;color:var(--text-dim)">-</span></div>
580
- <div class="settings-row"><label>Last Error</label><span id="advLastError" style="font-size:11px;color:var(--text-dim)">-</span></div>
624
+ <div id="memTabAdvOps" class="p-3" style="display:none" role="tabpanel" aria-labelledby="memTabBtnAdvOps">
625
+ <div class="settings-row"><label>Index State</label><span id="advIndexState" class="text-status">-</span></div>
626
+ <div class="settings-row"><label>Storage Root</label><span id="advStorageRoot" class="text-xs text-dim mono-path">-</span></div>
627
+ <div class="settings-row"><label>Indexed Files</label><span id="advIndexedFiles" class="text-status">0</span></div>
628
+ <div class="settings-row"><label>Indexed Chunks</label><span id="advIndexedChunks" class="text-status">0</span></div>
629
+ <div class="settings-row"><label>Last Indexed</label><span id="advLastIndexedAt" class="text-status">-</span></div>
630
+ <div class="settings-row"><label>Import Status</label><span id="advImportStatus" class="text-status">-</span></div>
631
+ <div class="settings-row"><label>Corrupted</label><span id="advCorruptedCount" class="text-status">0</span></div>
632
+ <div class="settings-row"><label>Last Expansion</label><span id="advLastExpansion" class="text-status">-</span></div>
633
+ <div class="settings-row"><label>Last Error</label><span id="advLastError" class="text-status">-</span></div>
581
634
  <div
582
- style="margin-top:8px;padding:6px;background:var(--bg);border-radius:4px;font-size:11px;color:var(--text-dim)">
635
+ class="info-box">
583
636
  Fixed Snapshot Budget: 2800 chars / 4 chunks / 700 chars each
584
637
  </div>
585
- <div class="settings-row" style="margin-top:12px">
638
+ <div class="settings-row mt-3" >
586
639
  <label>Bootstrap Sources</label>
587
- <div style="display:flex;flex-direction:column;gap:4px;font-size:11px">
640
+ <div class="flex flex-col gap-1 text-sm">
588
641
  <label><input type="checkbox" id="advImportCore" checked> MEMORY.md</label>
589
642
  <label><input type="checkbox" id="advImportMarkdown" checked> memory/**/*.md</label>
590
643
  <label><input type="checkbox" id="advImportKv" checked> SQLite KV memory</label>
591
644
  <label><input type="checkbox" id="advImportClaudeSession" checked> external .claude session memory (read-only)</label>
592
645
  </div>
593
646
  </div>
594
- <div style="display:flex;gap:8px;flex-wrap:wrap;margin-top:12px">
647
+ <div class="flex gap-2 flex-wrap mt-3">
595
648
  <button class="btn-clear" id="advBootstrapBtn">🧩 Bootstrap</button>
596
649
  <button class="btn-clear" id="advReindexBtn">🔄 Reindex</button>
597
650
  <button class="btn-clear" id="advReimportBtn">📥 Re-import Legacy</button>
598
651
  <button class="btn-clear" id="advOpenCorruptedBtn">📂 Open Corrupted Folder</button>
599
652
  </div>
600
653
  </div>
601
- <div id="memTabFiles" style="padding:12px;display:none">
602
- <div style="font-size:12px;font-weight:600;margin-bottom:6px">Basic Memory Files</div>
654
+ <div id="memTabFiles" class="p-3" style="display:none" role="tabpanel" aria-labelledby="memTabBtnFiles">
655
+ <div class="section-header">Basic Memory Files</div>
603
656
  <div id="basicMemoryFiles"></div>
604
- <div style="font-size:12px;font-weight:600;margin:12px 0 6px">Structured Memory Files</div>
657
+ <div class="section-header mt-3">Structured Memory Files</div>
605
658
  <div id="advancedMemoryFiles"></div>
606
- <div style="font-size:12px;font-weight:600;margin:12px 0 6px">Corrupted / Quarantined</div>
659
+ <div class="section-header mt-3">Corrupted / Quarantined</div>
607
660
  <div id="corruptedMemoryFiles"></div>
608
- <div style="font-size:12px;font-weight:600;margin:12px 0 6px">Legacy Unmapped</div>
661
+ <div class="section-header mt-3">Legacy Unmapped</div>
609
662
  <div id="legacyUnmappedFiles"></div>
610
663
  </div>
611
664
  </div>
@@ -619,35 +672,35 @@
619
672
 
620
673
  <!-- Template Editor Modal (Node Map + Editor 2-view) -->
621
674
  <div class="modal-overlay" id="templateModal" role="dialog" aria-modal="true" aria-label="Prompt templates">
622
- <div class="modal-box" style="width:640px;max-width:90vw;max-height:85vh;display:flex;flex-direction:column">
675
+ <div class="modal-box modal-template" >
623
676
  <div class="modal-header">
624
677
  <span id="templateModalTitle">📝 프롬프트 구조</span>
625
678
  <button data-action="closeTemplate"
626
- style="background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px">✕</button>
679
+ class="btn-modal-close" aria-label="Close">✕</button>
627
680
  </div>
628
681
  <!-- View 1: Node Map -->
629
- <div id="templateTreeView" style="flex:1;overflow-y:auto;padding:12px 16px">
682
+ <div id="templateTreeView" class="template-tree-area">
630
683
  <div id="templateTree"></div>
631
- <div style="padding:8px 0;font-size:11px;color:var(--text-dim)">
684
+ <div class="template-hint">
632
685
  🔒 클릭하면 프롬프트 내용 확인 · ⚠️ 개발자 모드에서 편집
633
686
  </div>
634
687
  </div>
635
688
  <!-- View 2: Editor (hidden by default) -->
636
- <div id="templateEditorView" style="display:none;flex-direction:column">
689
+ <div id="templateEditorView" class="template-editor-view" style="display:none">
637
690
  <div
638
- style="display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--border)">
691
+ class="template-editor-bar">
639
692
  <button id="templateBack"
640
- style="background:none;border:1px solid var(--border);color:var(--text-dim);padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px">←
693
+ class="btn-back">←
641
694
  뒤로</button>
642
- <span id="templateEditorLabel" style="flex:1;font-size:12px;color:var(--text-dim)"></span>
695
+ <span id="templateEditorLabel" class="flex-1 text-sm text-dim"></span>
643
696
  <button id="templateDevToggle"
644
- style="background:var(--bg);border:1px solid var(--border);color:var(--text-dim);padding:4px 10px;border-radius:4px;cursor:pointer;font-size:11px">🔧
697
+ class="btn-dev-toggle">🔧
645
698
  개발자 모드</button>
646
699
  </div>
647
- <textarea class="modal-textarea" id="templateEditor" readonly
648
- style="flex:1;min-height:350px;font-family:var(--font-mono);font-size:12px"></textarea>
700
+ <textarea class="modal-textarea template-textarea" id="templateEditor" readonly
701
+ ></textarea>
649
702
  <div class="modal-footer">
650
- <span id="templateVars" style="color:var(--text-dim);font-size:10px;margin-right:auto"></span>
703
+ <span id="templateVars" class="text-xs text-dim mr-auto"></span>
651
704
  <button class="btn-save" data-action="saveTemplate" style="display:none" id="templateSaveBtn">💾
652
705
  저장</button>
653
706
  </div>
@@ -655,7 +708,7 @@
655
708
  </div>
656
709
  </div>
657
710
 
658
- <script type="module" src="/dist/bundle.js"></script>
711
+ <script type="module" src="/js/main.ts"></script>
659
712
  </body>
660
713
 
661
714
  </html>