cli-jaw 1.5.0 → 1.6.2

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 (230) hide show
  1. package/README.ko.md +26 -19
  2. package/README.md +50 -22
  3. package/README.zh-CN.md +26 -19
  4. package/dist/bin/cli-jaw.js +5 -1
  5. package/dist/bin/cli-jaw.js.map +1 -1
  6. package/dist/bin/commands/dispatch.js +57 -0
  7. package/dist/bin/commands/dispatch.js.map +1 -0
  8. package/dist/lib/mcp-sync.js +1 -1
  9. package/dist/lib/mcp-sync.js.map +1 -1
  10. package/dist/lib/upload.js +14 -1
  11. package/dist/lib/upload.js.map +1 -1
  12. package/dist/server.js +57 -42
  13. package/dist/server.js.map +1 -1
  14. package/dist/src/agent/events.js +72 -13
  15. package/dist/src/agent/events.js.map +1 -1
  16. package/dist/src/agent/spawn.js +71 -29
  17. package/dist/src/agent/spawn.js.map +1 -1
  18. package/dist/src/cli/acp-client.js +4 -2
  19. package/dist/src/cli/acp-client.js.map +1 -1
  20. package/dist/src/cli/commands.js +6 -6
  21. package/dist/src/cli/commands.js.map +1 -1
  22. package/dist/src/cli/handlers.js +11 -9
  23. package/dist/src/cli/handlers.js.map +1 -1
  24. package/dist/src/cli/registry.js +7 -1
  25. package/dist/src/cli/registry.js.map +1 -1
  26. package/dist/src/core/config.js +15 -8
  27. package/dist/src/core/config.js.map +1 -1
  28. package/dist/src/core/db.js +18 -3
  29. package/dist/src/core/db.js.map +1 -1
  30. package/dist/src/core/employees.js +34 -0
  31. package/dist/src/core/employees.js.map +1 -0
  32. package/dist/src/discord/bot.js +72 -9
  33. package/dist/src/discord/bot.js.map +1 -1
  34. package/dist/src/discord/commands.js +12 -8
  35. package/dist/src/discord/commands.js.map +1 -1
  36. package/dist/src/orchestrator/distribute.js +57 -35
  37. package/dist/src/orchestrator/distribute.js.map +1 -1
  38. package/dist/src/orchestrator/gateway.js +3 -1
  39. package/dist/src/orchestrator/gateway.js.map +1 -1
  40. package/dist/src/orchestrator/pipeline.js +120 -27
  41. package/dist/src/orchestrator/pipeline.js.map +1 -1
  42. package/dist/src/orchestrator/research.js +5 -5
  43. package/dist/src/orchestrator/research.js.map +1 -1
  44. package/dist/src/orchestrator/scope.js +55 -0
  45. package/dist/src/orchestrator/scope.js.map +1 -0
  46. package/dist/src/orchestrator/state-machine.js +23 -21
  47. package/dist/src/orchestrator/state-machine.js.map +1 -1
  48. package/dist/src/orchestrator/worker-registry.js +9 -2
  49. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  50. package/dist/src/prompt/builder.js +76 -37
  51. package/dist/src/prompt/builder.js.map +1 -1
  52. package/dist/src/prompt/templates/a1-system.md +40 -0
  53. package/dist/src/prompt/templates/employee.md +12 -4
  54. package/dist/src/prompt/templates/orchestration.md +17 -1
  55. package/dist/src/telegram/bot.js +7 -1
  56. package/dist/src/telegram/bot.js.map +1 -1
  57. package/package.json +4 -2
  58. package/public/assets/fonts/GeistVF.woff2 +0 -0
  59. package/public/assets/fonts/JetBrainsMono-Variable.woff2 +0 -0
  60. package/public/assets/providers/claude-color.svg +1 -0
  61. package/public/assets/providers/claude.svg +1 -0
  62. package/public/assets/providers/copilot-color.svg +1 -0
  63. package/public/assets/providers/copilot.svg +1 -0
  64. package/public/assets/providers/discord.svg +1 -0
  65. package/public/assets/providers/gemini-color.svg +1 -0
  66. package/public/assets/providers/gemini.svg +1 -0
  67. package/public/assets/providers/openai.svg +1 -0
  68. package/public/assets/providers/opencode.svg +1 -0
  69. package/public/assets/providers/telegram.svg +1 -0
  70. package/public/css/chat.css +79 -51
  71. package/public/css/diagram.css +348 -0
  72. package/public/css/layout.css +38 -11
  73. package/public/css/markdown.css +64 -18
  74. package/public/css/modals.css +3 -3
  75. package/public/css/orc-state.css +9 -9
  76. package/public/css/sidebar.css +37 -3
  77. package/public/css/tool-ui.css +46 -11
  78. package/public/css/variables.css +63 -63
  79. package/public/dist/assets/api-Bbmmo0o1.js +1 -0
  80. package/public/dist/assets/architecture-YZFGNWBL-BxiHqtOH.js +1 -0
  81. package/public/dist/assets/architectureDiagram-Q4EWVU46-CJTGDw5p.js +1 -0
  82. package/public/dist/assets/blockDiagram-DXYQGD6D-Btl5Y-Er.js +1 -0
  83. package/public/dist/assets/c4Diagram-AHTNJAMY-sDfjW4ZF.js +1 -0
  84. package/public/dist/assets/classDiagram-6PBFFD2Q-ByCgggL2.js +1 -0
  85. package/public/dist/assets/classDiagram-v2-HSJHXN6E-t1amaXkU.js +1 -0
  86. package/public/dist/assets/constants-C8_0OtK2.js +1 -0
  87. package/public/dist/assets/cose-bilkent-S5V4N54A-eOSFGdaE.js +1 -0
  88. package/public/dist/assets/dagre-KV5264BT-OCB5j8Q6.js +1 -0
  89. package/public/dist/assets/diagram-5BDNPKRD-C-4fgK5P.js +1 -0
  90. package/public/dist/assets/diagram-G4DWMVQ6-C6vmHKDV.js +1 -0
  91. package/public/dist/assets/diagram-MMDJMWI5-BMCo_wmt.js +1 -0
  92. package/public/dist/assets/diagram-TYMM5635-DaCLdttJ.js +1 -0
  93. package/public/dist/assets/employees-D5n7mX5v.js +39 -0
  94. package/public/dist/assets/erDiagram-SMLLAGMA-BiTRdm5s.js +1 -0
  95. package/public/dist/assets/flowDiagram-DWJPFMVM-sv6jVi0d.js +1 -0
  96. package/public/dist/assets/ganttDiagram-T4ZO3ILL-jCP3OW23.js +1 -0
  97. package/public/dist/assets/gitGraph-7Q5UKJZL-BIeKLxpm.js +1 -0
  98. package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CokylnbW.js +1 -0
  99. package/public/dist/assets/index-CLd0BsAu.js +49 -0
  100. package/public/dist/assets/index-D6ci1wCN.css +1 -0
  101. package/public/dist/assets/info-OMHHGYJF-CIEl5dWF.js +1 -0
  102. package/public/dist/assets/infoDiagram-42DDH7IO-BBnK1Bh2.js +1 -0
  103. package/public/dist/assets/ishikawaDiagram-UXIWVN3A-qXIz0VhS.js +1 -0
  104. package/public/dist/assets/journeyDiagram-VCZTEJTY-BdrOLof3.js +1 -0
  105. package/public/dist/assets/kanban-definition-6JOO6SKY-CcX7CE04.js +1 -0
  106. package/public/dist/assets/mermaid.core-BoxIvw7E.js +1 -0
  107. package/public/dist/assets/mindmap-definition-QFDTVHPH-CdXARskX.js +1 -0
  108. package/public/dist/assets/packet-4T2RLAQJ-Bz4ZwYZ3.js +1 -0
  109. package/public/dist/assets/pie-ZZUOXDRM-AtGL3wZ2.js +1 -0
  110. package/public/dist/assets/pieDiagram-DEJITSTG-B5SOq9Yr.js +1 -0
  111. package/public/dist/assets/quadrantDiagram-34T5L4WZ-D0uNWgpI.js +1 -0
  112. package/public/dist/assets/radar-PYXPWWZC-AbJSfeqB.js +1 -0
  113. package/public/dist/assets/render-C8N0rp4L.js +25 -0
  114. package/public/dist/assets/requirementDiagram-MS252O5E-62td6IQ-.js +1 -0
  115. package/public/dist/assets/sankeyDiagram-XADWPNL6-Crg_02iC.js +1 -0
  116. package/public/dist/assets/sequenceDiagram-FGHM5R23-fbCocZHj.js +1 -0
  117. package/public/dist/assets/settings-BJR-IGM5.js +41 -0
  118. package/public/dist/assets/settings-Dm6OnPmY.js +1 -0
  119. package/public/dist/assets/skills-D6jv9AIs.js +1 -0
  120. package/public/dist/assets/skills-uywskdFh.js +12 -0
  121. package/public/dist/assets/slash-commands-CCDonT40.js +1 -0
  122. package/public/dist/assets/{slash-commands-DMsE88bu.js → slash-commands-DWvL-VDU.js} +1 -1
  123. package/public/dist/assets/stateDiagram-FHFEXIEX-Gy3DhXxQ.js +1 -0
  124. package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-DJc-FW9O.js +1 -0
  125. package/public/dist/assets/timeline-definition-GMOUNBTQ-B3cA9DgY.js +1 -0
  126. package/public/dist/assets/treeView-SZITEDCU-Cn58DIbB.js +1 -0
  127. package/public/dist/assets/treemap-W4RFUUIX-DPcYjDzH.js +1 -0
  128. package/public/dist/assets/ui-C1daR00l.js +1 -0
  129. package/public/dist/assets/ui-D-oFkXed.js +131 -0
  130. package/public/dist/assets/vendor-icons-1Ec7ZWcT.js +1 -0
  131. package/public/dist/assets/{vendor-mermaid-COidH9HB.js → vendor-mermaid-lvHqQdfg.js} +4 -4
  132. package/public/dist/assets/vennDiagram-DHZGUBPP-DkBfxilo.js +1 -0
  133. package/public/dist/assets/wardley-RL74JXVD-6Dg0PJ4H.js +1 -0
  134. package/public/dist/assets/wardleyDiagram-NUSXRM2D-Dsntl_vy.js +1 -0
  135. package/public/dist/assets/ws-Dnn8HG8B.js +2 -0
  136. package/public/dist/assets/xychartDiagram-5P7HB3ND-B_McB5GE.js +1 -0
  137. package/public/dist/index.html +63 -55
  138. package/public/index.html +62 -53
  139. package/public/js/constants.ts +8 -2
  140. package/public/js/diagram/iframe-renderer.ts +559 -0
  141. package/public/js/diagram/types.ts +129 -0
  142. package/public/js/diagram/widget-validator.ts +82 -0
  143. package/public/js/features/chat.ts +24 -12
  144. package/public/js/features/employees.ts +3 -2
  145. package/public/js/features/heartbeat.ts +4 -3
  146. package/public/js/features/memory.ts +4 -3
  147. package/public/js/features/process-block.ts +12 -11
  148. package/public/js/features/settings-cli-status.ts +10 -7
  149. package/public/js/features/settings-core.ts +13 -3
  150. package/public/js/features/settings-discord.ts +9 -0
  151. package/public/js/features/settings-mcp.ts +8 -7
  152. package/public/js/features/settings-stt.ts +4 -4
  153. package/public/js/features/settings-templates.ts +10 -8
  154. package/public/js/features/settings-types.ts +1 -1
  155. package/public/js/features/settings.ts +1 -1
  156. package/public/js/features/sidebar.ts +37 -7
  157. package/public/js/features/skills.ts +4 -3
  158. package/public/js/features/theme.ts +4 -0
  159. package/public/js/features/tool-ui.ts +6 -5
  160. package/public/js/features/voice-recorder.ts +2 -1
  161. package/public/js/icons.ts +257 -0
  162. package/public/js/main.ts +9 -3
  163. package/public/js/provider-icons.ts +88 -0
  164. package/public/js/render.ts +493 -30
  165. package/public/js/streaming-render.ts +3 -3
  166. package/public/js/ui.ts +38 -18
  167. package/public/js/ws.ts +17 -10
  168. package/public/locales/en.json +89 -88
  169. package/public/locales/ko.json +89 -88
  170. package/scripts/release-1.6.0.sh +69 -0
  171. package/scripts/release-preview.sh +1 -1
  172. package/dist/lib/token-keepalive.js +0 -34
  173. package/dist/lib/token-keepalive.js.map +0 -1
  174. package/public/dist/assets/api-BlPw3bUI.js +0 -1
  175. package/public/dist/assets/architecture-YZFGNWBL-BkS7SZQi.js +0 -1
  176. package/public/dist/assets/architectureDiagram-Q4EWVU46-Dl3iBKeR.js +0 -1
  177. package/public/dist/assets/blockDiagram-DXYQGD6D-DPr4D17p.js +0 -1
  178. package/public/dist/assets/c4Diagram-AHTNJAMY-CfoxJtDk.js +0 -1
  179. package/public/dist/assets/classDiagram-6PBFFD2Q-BOAdHnnB.js +0 -1
  180. package/public/dist/assets/classDiagram-v2-HSJHXN6E-B2QCJXWC.js +0 -1
  181. package/public/dist/assets/constants-DshMUJbo.js +0 -1
  182. package/public/dist/assets/cose-bilkent-S5V4N54A-CA14jk7w.js +0 -1
  183. package/public/dist/assets/dagre-KV5264BT-BVwNaSwC.js +0 -1
  184. package/public/dist/assets/diagram-5BDNPKRD-CHqIAvdc.js +0 -1
  185. package/public/dist/assets/diagram-G4DWMVQ6-DxvsCvTP.js +0 -1
  186. package/public/dist/assets/diagram-MMDJMWI5-DqOPO7dl.js +0 -1
  187. package/public/dist/assets/diagram-TYMM5635-C9xMWPQn.js +0 -1
  188. package/public/dist/assets/employees-CFRlsbHm.js +0 -39
  189. package/public/dist/assets/erDiagram-SMLLAGMA-BTmpfRkm.js +0 -1
  190. package/public/dist/assets/flowDiagram-DWJPFMVM-DZBSQAKA.js +0 -1
  191. package/public/dist/assets/ganttDiagram-T4ZO3ILL-TAEMCRbT.js +0 -1
  192. package/public/dist/assets/gitGraph-7Q5UKJZL-bbxndRNA.js +0 -1
  193. package/public/dist/assets/gitGraphDiagram-UUTBAWPF-CBxtx0MB.js +0 -1
  194. package/public/dist/assets/index-1Gg-6jeC.css +0 -1
  195. package/public/dist/assets/index-CQHqXjrK.js +0 -49
  196. package/public/dist/assets/info-OMHHGYJF-DRXq_Ywr.js +0 -1
  197. package/public/dist/assets/infoDiagram-42DDH7IO-C7FFwX4m.js +0 -1
  198. package/public/dist/assets/ishikawaDiagram-UXIWVN3A-DEZJE79j.js +0 -1
  199. package/public/dist/assets/journeyDiagram-VCZTEJTY-ZHLiY6GV.js +0 -1
  200. package/public/dist/assets/kanban-definition-6JOO6SKY-NP7pY7ML.js +0 -1
  201. package/public/dist/assets/mermaid.core-CHuluSlD.js +0 -1
  202. package/public/dist/assets/mindmap-definition-QFDTVHPH-Bd1OgfN_.js +0 -1
  203. package/public/dist/assets/packet-4T2RLAQJ-CGu8ST97.js +0 -1
  204. package/public/dist/assets/pie-ZZUOXDRM-CDG65mhS.js +0 -1
  205. package/public/dist/assets/pieDiagram-DEJITSTG-BbMBHLDM.js +0 -1
  206. package/public/dist/assets/quadrantDiagram-34T5L4WZ-CDCDgI1e.js +0 -1
  207. package/public/dist/assets/radar-PYXPWWZC-1gS-6ylu.js +0 -1
  208. package/public/dist/assets/render-YHvL5VM_.js +0 -6
  209. package/public/dist/assets/requirementDiagram-MS252O5E-DkmvOtYz.js +0 -1
  210. package/public/dist/assets/sankeyDiagram-XADWPNL6-GNcXIYsL.js +0 -1
  211. package/public/dist/assets/sequenceDiagram-FGHM5R23-BFrw2n6x.js +0 -1
  212. package/public/dist/assets/settings-BQF_u5px.js +0 -37
  213. package/public/dist/assets/settings-C5Q9IPjJ.js +0 -1
  214. package/public/dist/assets/skills-9Pd2rOw-.js +0 -1
  215. package/public/dist/assets/skills-BI7sQAdk.js +0 -12
  216. package/public/dist/assets/slash-commands-FMpJzlDB.js +0 -1
  217. package/public/dist/assets/stateDiagram-FHFEXIEX-BLgKnllT.js +0 -1
  218. package/public/dist/assets/stateDiagram-v2-QKLJ7IA2-CbzuWsSa.js +0 -1
  219. package/public/dist/assets/timeline-definition-GMOUNBTQ-CcZTJ3gL.js +0 -1
  220. package/public/dist/assets/treeView-SZITEDCU-BDqBsaH1.js +0 -1
  221. package/public/dist/assets/treemap-W4RFUUIX-BaWHA3Di.js +0 -1
  222. package/public/dist/assets/ui-BukgLHuh.js +0 -29
  223. package/public/dist/assets/ui-Bvz1JfTE.js +0 -1
  224. package/public/dist/assets/vennDiagram-DHZGUBPP-BWV_j1bh.js +0 -1
  225. package/public/dist/assets/wardley-RL74JXVD-C7gKA3d7.js +0 -1
  226. package/public/dist/assets/wardleyDiagram-NUSXRM2D-BUoq_wug.js +0 -1
  227. package/public/dist/assets/ws-S_AZgx7L.js +0 -2
  228. package/public/dist/assets/xychartDiagram-5P7HB3ND-PvT5Ec82.js +0 -1
  229. /package/public/dist/assets/{api-B8XKQ4OT.js → api-Ci-lgwRp.js} +0 -0
  230. /package/public/dist/assets/{locale-BjoAcbis.js → locale-DIXc-_34.js} +0 -0
package/README.ko.md CHANGED
@@ -6,10 +6,10 @@
6
6
 
7
7
  *Claude, Codex, Gemini... 이제 번갈아 쓰지 마세요.*
8
8
 
9
- [![Tests](https://img.shields.io/badge/tests-888%20pass-brightgreen)](#-테스트)
9
+ [![Tests](https://img.shields.io/badge/tests-rolling%20inventory-blue)](#-테스트)
10
10
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
11
11
  [![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
12
- [![License](https://img.shields.io/badge/license-ISC-yellow)](LICENSE)
12
+ [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
13
13
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
14
14
  [![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-도커--컨테이너-격리)
15
15
  [![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)
@@ -182,7 +182,7 @@ CLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **
182
182
  > 💬 *"이 모듈 리팩토링하고 테스트도 짜줘"* → 서브에이전트가 알아서, 커피 한 잔 하고 오면 돼요
183
183
  > 💬 *"저 PDF 다운받아서 핵심만 노션에 정리해"* → 브라우저 + 노션 스킬 조합으로 뚝딱
184
184
 
185
- 단일 모델만을 사용하는 기존 비서들과 달리, CLI-JAW는 5개의 AI 엔진(Claude, Codex, Gemini, OpenCode, Copilot)을 공식 CLI를 통해 오케스트레이션하여 모든 제공업체의 장점을 통합된 경험으로 제공합니다. 하나의 엔진 사용량이 초과되면 자동으로 다음 엔진으로 전환됩니다. 116개의 내장 스킬이 브라우저 자동화부터 문서 생성까지 모든 것을 처리합니다.
185
+ 단일 모델만을 사용하는 기존 비서들과 달리, CLI-JAW는 5개의 AI 엔진(Claude, Codex, Gemini, OpenCode, Copilot)을 공식 CLI를 통해 오케스트레이션하여 모든 제공업체의 장점을 통합된 경험으로 제공합니다. 하나의 엔진 사용량이 초과되면 자동으로 다음 엔진으로 전환됩니다. **100개 이상의 내장 스킬**이 브라우저 자동화부터 문서 생성까지 다양한 작업을 처리합니다.
186
186
 
187
187
  | | 왜 CLI-JAW인가요? |
188
188
  | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
@@ -190,25 +190,32 @@ CLI-JAW는 내 컴퓨터에 상주하며 이미 익숙한 인터페이스인 **
190
190
  | 🤖 **검증된 에이전트 도구** | 실전에서 검증된 5개의 코딩 에이전트(Claude, Codex, Gemini, OpenCode, Copilot)를 한 곳에서 사용하세요. |
191
191
  | ⚡ **멀티 에이전트 자동 전환(Fallback)** | 엔진 하나가 멈춰도 걱정 없습니다. 다음 엔진이 즉시 이어받아 중단 없는 작업이 가능합니다. |
192
192
  | 🎭 **오케스트레이션 기반 성능 극대화** | 복잡한 작업은 전문화된 서브 에이전트에게 분산시켜 처리량을 극대화합니다. |
193
- | 📦 **116개의 내장 스킬** | 브라우저 자동화, 문서 생성, 텔레그램 연동, 영구 메모리 등 설치 즉시 사용 가능한 기능들을 제공합니다. |
193
+ | 📦 **100개+ 내장 스킬** | 브라우저 자동화, 문서 생성, 텔레그램 연동, 영구 메모리 등 설치 즉시 사용 가능한 기능들을 제공합니다. |
194
194
  | 🖥️ **크로스 플랫폼** | macOS, Linux, Windows — ENOENT-safe CLI 스폰, 자동 감지, `.cmd` shim 지원, 네이티브 설치 전부 크로스플랫폼 동작. |
195
195
 
196
196
  ![CLI-JAW 터미널](docs/screenshots/terminal-cli.png)
197
197
 
198
198
  ---
199
199
 
200
- ## 🆕 새로운 기능 (v1.4.0)
200
+ ## 🆕 새로운 기능 (v1.6.0)
201
201
 
202
- | 기능 | 설명 |
203
- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
204
- | 🧠 **고급 메모리** | 5계층 저장소 (프로필, 에피소드, 시맨틱, 프로시저, 세션). 하이브리드 검색: FTS5 + 시맨틱 검색 + 쿼리 확장. Gemini Flash-Lite 임베딩. 리인덱스/감사 기능이 포함된 UI 운영 대시보드. |
205
- | 🎨 **모듈형 개발 스킬** | `dev-frontend` (1,428줄, 13파일)과 `dev-backend` (1,275줄, 9파일)을 단일 SKILL.md에서 모듈 구조로 확장. 코어 레퍼런스 (미학, 안티슬롭, 보안, 아키텍처) + 스택별 가이드 (React, Next.js, Node, Python, PostgreSQL). |
206
- | 📄 **오피스 확장** | HWP (한글 문서) 지원 추가. PPTX 생성 강화. 21개 활성 스킬 (기존 18개에서 증가). |
207
- | **ACP 진행 하트비트** | 장시간 에이전트 실행 실시간 `stderr_activity` 이벤트. UI 모달 제어가 포함된 조건부 하트비트 스케줄링. |
208
- | 🔄 **스킬 리셋** | `jaw skill reset` — `--soft` (리로드), `--hard` (전체 재설치) 모드. `JAW_HOME`과 `settings.json` 불일치 시 `workingDir` 자동 보정. |
209
- | 🎬 **비디오 스킬** | Remotion 기반 JSON 타임라인 정의로 프로그래밍 방식의 영상 렌더링. 컷별 나레이션 동기화 TTS 연동. |
210
- | 📐 **1M 컨텍스트 토글** | 지원 모델용 `config.toml` 주입으로 1M 토큰 컨텍스트 윈도우 켜기/끄기. |
211
- | 🚀 **프리뷰 릴리즈** | 타임스탬프 버전(`v1.4.0-preview.YYYYMMDD`)의 자동화된 프리뷰 릴리즈 파이프라인. GitHub prerelease 연동. |
202
+ `v1.6.0`은 `v1.2.0` 이후 누적된 대규모 제품 확장을 처음으로 한 번에 정리하는 문서 캐치업 릴리즈입니다.
203
+
204
+ - 전체 업데이트 로그: [CHANGELOG.md](CHANGELOG.md#160---2026-04-13)
205
+ - 범위: `v1.2.0` `v1.5.1`
206
+ - 규모: `59` commits, `307` files changed, `32,760` insertions, `4,263` deletions
207
+ - 핵심 변화: 오케스트레이션, 구조화 메모리, Discord/음성 채널, 대폭 확장된 UI, 다이어그램/위젯 렌더링, 릴리즈/운영 툴링 강화
208
+
209
+ | 기능 | 설명 |
210
+ | ---- | ---- |
211
+ | 🎭 **PABCD 오케스트레이션** | `jaw dispatch`, `jaw orchestrate`, 영속 상태머신, 워커 레지스트리, 리서치 디스패치, 웹 UI 상태 표시까지 포함하는 본격적인 오케스트레이션 표면이 추가되었습니다. |
212
+ | 🧠 **구조화 메모리 런타임** | 단순 저장을 넘어 구조화 저장소, 인덱싱, 쿼리 확장, task snapshot, 리인덱스/감사 UI까지 갖춘 메모리 서브시스템으로 확장되었습니다. |
213
+ | 💬 **Discord + 음성 채널** | Web, Terminal, Telegram뿐 아니라 Discord와 음성/STT 흐름이 제품의 핵심 인터페이스로 올라왔습니다. |
214
+ | 🖥️ **대폭 확장된 웹 UI** | 설정 패널, 메모리/하트비트 제어, tool UI, provider icon, gesture, drag/drop 보호, virtual scroll, 렌더링 개선이 대거 추가되었습니다. |
215
+ | 📊 **다이어그램/위젯 렌더링** | iframe renderer, validator, 전용 CSS를 기반으로 인라인 다이어그램과 위젯 렌더링이 가시적인 기능군이 되었습니다. |
216
+ | ⌨️ **CLI/TUI 사용성 개선** | `/compact`, 오버레이/셀렉터, 세션 지속성, resume 분류, readiness 점검 등 터미널 사용성이 크게 개선되었습니다. |
217
+ | 🧪 **운영/CI/설치 강화** | `jaw doctor`, 브라우저 launch policy, 스킬 fallback/reset, submodule-safe CI, preview release, Vite 기반 배포가 강화되었습니다. |
218
+ | 📄 **오피스 자동화 성숙** | OfficeCLI 설치, smoke test, 로컬 바이너리, Office/PDF 워크플로가 `v1.2.0` 대비 훨씬 실전형이 되었습니다. |
212
219
 
213
220
  ---
214
221
 
@@ -234,7 +241,7 @@ graph LR
234
241
  - 🎭 **멀티 에이전트 오케스트레이션** — 복잡한 작업은 전문화된 서브 에이전트들에게 자동으로 분산됩니다.
235
242
  - 🎤 **음성 입력** — 웹 마이크 버튼 + 텔레그램 음성 메시지. 멀티 프로바이더 STT (OpenAI, Vertex AI).
236
243
  - 📝 **프롬프트 템플릿** — 시각적 노드맵 에디터로 프롬프트 템플릿 생성, 관리, 재사용.
237
- - 📦 **116개의 스킬** — 브라우저 제어, 파일 편집, 이미지 생성, 웹 검색 외 [다양한 기능](#-스킬-시스템).
244
+ - 📦 **100개+ 스킬** — 브라우저 제어, 파일 편집, 이미지 생성, 웹 검색 외 [다양한 기능](#-스킬-시스템).
238
245
  - 🧠 **영구 메모리** — 세션을 넘나들며 과거의 대화와 사용자 선호도를 기억합니다.
239
246
  - 📱 **텔레그램 봇** — 휴대폰으로 비서와 채팅하고, 음성/사진/파일을 전송하세요.
240
247
  - 🌐 **브라우저 자동화** — 비서가 알아서 웹을 탐색하고, 클릭하고, 타이핑하고, 스크린샷을 찍을 수 있습니다.
@@ -257,7 +264,7 @@ jaw service install # 부팅 시 자동 실행 (systemd/launchd/docker 자동
257
264
 
258
265
  ## 📦 스킬 시스템
259
266
 
260
- **116개 스킬** 내장 — 브라우저, GitHub, 노션, 텔레그램, 메모리, PDF, 이미지 생성 등 [다양하게](#).
267
+ **100개+ 스킬** 내장 — 브라우저, GitHub, 노션, 텔레그램, 메모리, PDF, 이미지 생성 등 [다양하게](#).
261
268
 
262
269
  <details>
263
270
  <summary>전체 스킬 목록 보기</summary>
@@ -536,7 +543,7 @@ src/
536
543
  ## 🧪 테스트
537
544
 
538
545
  <details>
539
- <summary>888 pass · 2 skipped · 외부 의존성 0</summary>
546
+ <summary>현재 패스 수와 인벤토리는 TESTS.md 기준</summary>
540
547
 
541
548
  ```bash
542
549
  npm test
@@ -592,6 +599,6 @@ npm test
592
599
 
593
600
  Made with ❤️ by the CLI-JAW community
594
601
 
595
- [ISC License](LICENSE)
602
+ [MIT License](LICENSE)
596
603
 
597
604
  </div>
package/README.md CHANGED
@@ -6,10 +6,10 @@
6
6
 
7
7
  *One assistant. Five brains. Always on.*
8
8
 
9
- [![Tests](https://img.shields.io/badge/tests-888%20pass-brightgreen)](#-tests)
9
+ [![Tests](https://img.shields.io/badge/tests-rolling%20inventory-blue)](#-tests)
10
10
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
11
11
  [![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
12
- [![License](https://img.shields.io/badge/license-ISC-yellow)](LICENSE)
12
+ [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
13
13
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
14
14
  [![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-docker--container-isolation)
15
15
  [![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)
@@ -184,7 +184,7 @@ CLI-JAW is a **personal AI assistant** that lives on your machine and works from
184
184
  > 💬 *"Refactor this module and write tests"* → sub-agents handle it while you grab coffee
185
185
  > 💬 *"Download that PDF and put the key points in Notion"* → browser + Notion skill, done
186
186
 
187
- Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, Codex, Gemini, OpenCode, Copilot) through their official CLIs — giving you the best of every provider in one unified experience. If one engine is busy, it automatically falls back to the next. 116 built-in skills handle everything from browser automation to document generation.
187
+ Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, Codex, Gemini, OpenCode, Copilot) through their official CLIs — giving you the best of every provider in one unified experience. If one engine is busy, it automatically falls back to the next. **100+ built-in skills** handle everything from browser automation to document generation.
188
188
 
189
189
  | | Why CLI-JAW? |
190
190
  | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
@@ -192,25 +192,32 @@ Unlike single-model assistants, CLI-JAW orchestrates **5 AI engines** (Claude, C
192
192
  | 🤖**Verified Agent Tools** | 5 battle-tested coding agents (Claude, Codex, Gemini, OpenCode, Copilot) under one roof. |
193
193
  | ⚡**Multi-Agent Fallback** | One engine down? The next picks up automatically. Zero downtime. |
194
194
  | 🎭**PABCD Orchestration** | DB-persisted FSM pipeline — Plan → Audit → Build → Check → Done. Workers are read-only. You approve every phase. |
195
- | 📦**116 Built-in Skills** | Browser automation, document generation, Telegram/Discord, memory — ready out of the box. |
195
+ | 📦**100+ Built-in Skills** | Browser automation, document generation, Telegram/Discord, memory — ready out of the box. |
196
196
  | 🖥️**Cross-Platform** | macOS, Linux, Windows — ENOENT-safe CLI spawn, auto-detection,`.cmd` shim support, and native install all work across platforms. |
197
197
 
198
198
  ![CLI-JAW Terminal](docs/screenshots/terminal-cli.png)
199
199
 
200
200
  ---
201
201
 
202
- ## 🆕 What's New (v1.4.0)
202
+ ## 🆕 What's New (v1.6.0)
203
203
 
204
- | Feature | Description |
205
- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
206
- | 🧠 **Advanced Memory** | 5-tier hierarchical storage (Profile, Episodes, Semantic, Procedures, Sessions). Hybrid retrieval: FTS5 + semantic search with query expansion. Gemini Flash-Lite powered embeddings. Full UI ops dashboard with reindex/audit controls. |
207
- | 🎨 **Modular Dev Skills** | `dev-frontend` (1,428 lines, 13 files) and `dev-backend` (1,275 lines, 9 files) expanded from single SKILL.md into modular structures with core references (aesthetics, anti-slop, security, architecture) and stack-specific guides (React, Next.js, Node, Python, PostgreSQL). |
208
- | 📄 **Office Suite Expansion** | HWP (Korean word processor) support added. Enhanced PPTX generation. 21 active skills (up from 18). |
209
- | **ACP Progress Heartbeat** | Real-time `stderr_activity` events during long agent runs. Conditional heartbeat scheduling with UI modal controls. |
210
- | 🔄 **Skill Reset** | `jaw skill reset` with `--soft` (reload) and `--hard` (full reinstall) modes. `workingDir` auto-correction when `JAW_HOME` differs from `settings.json`. |
211
- | 🎬 **Video Skill** | Remotion-based programmatic video rendering from JSON timeline definitions. TTS integration with per-cut narration sync. |
212
- | 📐 **1M Context Toggle** | Enable/disable 1M token context window with `config.toml` injection for supported models. |
213
- | 🚀 **Preview Releases** | Automated preview release pipeline with timestamped versions (`v1.4.0-preview.YYYYMMDD`). GitHub prerelease integration. |
204
+ `v1.6.0` is the documentation catch-up release that finally summarizes the major product expansion that happened after `v1.2.0`.
205
+
206
+ - Full update log: [CHANGELOG.md](CHANGELOG.md#160---2026-04-13)
207
+ - Range covered: `v1.2.0` `v1.5.1`
208
+ - Scope: `59` commits, `307` files changed, `32,760` insertions, `4,263` deletions
209
+ - Theme: CLI-JAW grew from a capable personal assistant into a broader operating environment with richer orchestration, memory, channels, UI, and release tooling
210
+
211
+ | Feature | Description |
212
+ | ------- | ----------- |
213
+ | 🎭 **PABCD Orchestration** | Orchestration is now a first-class surface: `jaw dispatch`, `jaw orchestrate`, persisted PABCD state, worker registry, research dispatch, and live orchestration status in the product. |
214
+ | 🧠 **Structured Memory Runtime** | Memory moved beyond plain persistence into a layered indexed subsystem: structured storage, bootstrap/migration, SQLite FTS5 indexing, query expansion, task snapshots, and UI controls for audit/reindex flows. |
215
+ | 💬 **Discord + Voice Channels** | CLI-JAW now works across Web, Terminal, Telegram, and Discord. Voice/STT also became a first-class workflow with web recording, Telegram voice handling, and provider-configurable transcription. |
216
+ | 🖥️ **Major Web UI Expansion** | The web app gained richer settings panes, memory and heartbeat controls, tool UI, provider icons, gesture handling, drag/drop protections, stronger streaming render behavior, and virtual scrolling. |
217
+ | 📊 **Diagram & Widget Rendering** | Inline diagrams and sandboxed widget rendering became visible product features, backed by dedicated iframe rendering, validation, and CSS/runtime updates. |
218
+ | ⌨️ **CLI/TUI Usability Pass** | Terminal workflows now include `/compact`, better overlays and selectors, session persistence, resume classification, readiness checks, and more stable command handling. |
219
+ | 🧪 **Ops, CI, and Installability** | `jaw doctor`, browser launch policy, skill reset/fallback behavior, submodule-safe CI, preview releases, Vite-based frontend delivery, service worker assets, and stronger install troubleshooting all improved. |
220
+ | 📄 **Office Automation Maturity** | OfficeCLI integration, smoke tests, local binaries, and Office/PDF workflows are much more production-ready than they were at `v1.2.0`. |
214
221
 
215
222
  ---
216
223
 
@@ -236,7 +243,7 @@ graph LR
236
243
  - 🎭 **Multi-agent orchestration** — Complex tasks get split across specialized sub-agents automatically.
237
244
  - 🎤 **Voice input** — Mic button on the web + Telegram voice messages. Multi-provider STT (OpenAI, Vertex AI).
238
245
  - 📝 **Prompt templates** — Create, manage, and reuse prompt templates with a visual node-map editor.
239
- - 📦 **116 skills** — Browser control, file editing, image generation, web search, and [much more](#-skill-system).
246
+ - 📦 **100+ skills** — Browser control, file editing, image generation, web search, and [much more](#-skill-system).
240
247
  - 🧠 **Persistent memory** — Your assistant remembers past conversations and preferences across sessions.
241
248
  - 📱 **Telegram bot** — Chat with your assistant from your phone, send voice/photos/files.
242
249
  - 🌐 **Browser automation** — Your assistant can navigate the web, click, type, and screenshot.
@@ -248,7 +255,7 @@ graph LR
248
255
 
249
256
  ## 📦 Skill System
250
257
 
251
- **116 skills** out of the box — browser, github, notion, telegram, memory, pdf, image generation, and [much more](#).
258
+ **100+ skills** out of the box — browser, github, notion, telegram, memory, pdf, image generation, and [much more](#).
252
259
 
253
260
  <details>
254
261
  <summary>View all skills</summary>
@@ -589,7 +596,7 @@ src/
589
596
  ## 🧪 Tests
590
597
 
591
598
  <details>
592
- <summary>888 pass · 2 skipped · zero external dependencies</summary>
599
+ <summary>See TESTS.md for current pass counts and inventory</summary>
593
600
 
594
601
  ```bash
595
602
  npm test
@@ -605,10 +612,12 @@ All tests run via `tsx --test` (native Node.js test runner + TypeScript).
605
612
 
606
613
  ## 📖 Documentation
607
614
 
608
- | Document | What's inside |
609
- | --------------------------------------- | ----------------------------------------------------- |
615
+ | Document | What's inside |
616
+ | -------- | ------------- |
617
+ | [CHANGELOG.md](CHANGELOG.md) | Long-form release log, including the `v1.6.0` catch-up notes covering `v1.2.0` → `v1.5.1` |
610
618
  | [ARCHITECTURE.md](docs/ARCHITECTURE.md) | System design, module graph, REST API (40+ endpoints) |
611
- | [TESTS.md](TESTS.md) | Test coverage and test plan |
619
+ | [TESTS.md](TESTS.md) | Test coverage, current counts, and test plan |
620
+ | [memory-architecture.md](docs/memory-architecture.md) | Structured memory model, indexing, and runtime behavior |
612
621
 
613
622
  ---
614
623
 
@@ -621,6 +630,7 @@ All tests run via `tsx --test` (native Node.js test runner + TypeScript).
621
630
  | ---------------------------- | ------------------------------------------------------------------------------------------ |
622
631
  | `cli-jaw: command not found` | Run `npm install -g cli-jaw` again. Check `npm bin -g` is in your `$PATH`. |
623
632
  | `Error: node version` | Upgrade to Node.js ≥ 22:`nvm install 22` or download from [nodejs.org](https://nodejs.org) |
633
+ | `NODE_MODULE_VERSION` mismatch | Run `npm rebuild better-sqlite3` in the repo or reinstall dependencies for the current Node version |
624
634
  | Agent timeout / no response | Run `jaw doctor` to check CLI auth. Re-authenticate with `claude auth` / `codex login`. |
625
635
  | `EADDRINUSE: port 3457` | Another instance is running. Stop it or use `jaw serve --port 3458`. |
626
636
  | Telegram bot not responding | Check token with `jaw doctor`. Ensure `jaw serve` is running. |
@@ -676,6 +686,24 @@ jaw doctor
676
686
 
677
687
  </details>
678
688
 
689
+ <details>
690
+ <summary>🧱 Native module mismatch (<code>better-sqlite3</code>)</summary>
691
+
692
+ If you upgraded Node.js and see a `NODE_MODULE_VERSION` error, rebuild native modules for the current runtime:
693
+
694
+ ```bash
695
+ npm run rebuild:native
696
+ ```
697
+
698
+ If that still fails, reinstall dependencies under the active Node version:
699
+
700
+ ```bash
701
+ rm -rf node_modules package-lock.json
702
+ npm install
703
+ ```
704
+
705
+ </details>
706
+
679
707
  ---
680
708
 
681
709
  ## 🤝 Contributing
@@ -696,6 +724,6 @@ Contributions are welcome! Here's how to get started:
696
724
 
697
725
  Made with ❤️ by the CLI-JAW community
698
726
 
699
- [ISC License](LICENSE)
727
+ [MIT License](LICENSE)
700
728
 
701
729
  </div>
package/README.zh-CN.md CHANGED
@@ -6,10 +6,10 @@
6
6
 
7
7
  *Claude、Codex、Gemini... 从此告别来回切换。*
8
8
 
9
- [![Tests](https://img.shields.io/badge/tests-888%20pass-brightgreen)](#-测试)
9
+ [![Tests](https://img.shields.io/badge/tests-rolling%20inventory-blue)](#-测试)
10
10
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue)](https://typescriptlang.org)
11
11
  [![Node](https://img.shields.io/badge/node-%3E%3D22-blue)](https://nodejs.org)
12
- [![License](https://img.shields.io/badge/license-ISC-yellow)](LICENSE)
12
+ [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
13
13
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
14
14
  [![Docker](https://img.shields.io/badge/Docker-supported-2496ED?logo=docker&logoColor=white)](#-docker--容器隔离)
15
15
  [![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20WSL%20%7C%20Docker-lightgrey)](#)
@@ -182,7 +182,7 @@ CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉
182
182
  > 💬 *"重构这个模块,顺便写好测试"* → 子 Agent 搞定,你喝杯咖啡回来就行
183
183
  > 💬 *"把那个 PDF 下载下来,关键信息放到 Notion 里"* → 浏览器 + Notion 技能组合,搞定
184
184
 
185
- 与单一模型的助手不同,CLI-JAW 通过官方 CLI 命令行工具对 **5 大 AI 引擎**(Claude、Codex、Gemini、OpenCode、Copilot)进行编排 — 为您提供各大供应商最优势的能力及统一的体验。当一个引擎处于繁忙状态时,它会自动无缝切换至下一个。116 个内置技能可处理从浏览器自动化到文档生成的所有事务。
185
+ 与单一模型的助手不同,CLI-JAW 通过官方 CLI 命令行工具对 **5 大 AI 引擎**(Claude、Codex、Gemini、OpenCode、Copilot)进行编排 — 为您提供各大供应商最优势的能力及统一的体验。当一个引擎处于繁忙状态时,它会自动无缝切换至下一个。**100+ 内置技能**可处理从浏览器自动化到文档生成的广泛任务。
186
186
 
187
187
  | | 为什么选择 CLI-JAW? |
188
188
  | ------------------------------- | ------------------------------------------------------------------------------------- |
@@ -190,25 +190,32 @@ CLI-JAW 是驻留在您本地机器上的**专属 AI 助手**,并在您熟悉
190
190
  | 🤖 **经过验证的智能体工具** | 5 大实战级编码智能体(Claude、Codex、Gemini、OpenCode、Copilot)集于一身。 |
191
191
  | ⚡ **多模型自动回退 (Fallback)** | 单一引擎发生故障?下一个立即接管。确保零停机。 |
192
192
  | 🎭 **基于编排的性能优化** | 复杂的任务会被拆分给专业的子智能体,以实现效率最大化。 |
193
- | 📦 **116 个内置技能** | 浏览器自动化、文档生成、Telegram 通知、持久化记忆 — 开箱即用。 |
193
+ | 📦 **100+ 个内置技能** | 浏览器自动化、文档生成、Telegram 通知、持久化记忆 — 开箱即用。 |
194
194
  | 🖥️ **跨平台支持** | macOS、Linux、Windows — ENOENT-safe CLI 启动、自动检测、`.cmd` 支持,跨平台原生运行。 |
195
195
 
196
196
  ![CLI-JAW 终端](docs/screenshots/terminal-cli.png)
197
197
 
198
198
  ---
199
199
 
200
- ## 🆕 新功能 (v1.4.0)
200
+ ## 🆕 新功能 (v1.6.0)
201
201
 
202
- | 功能 | 说明 |
203
- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
204
- | 🧠 **高级记忆系统** | 5 层分级存储(Profile、Episodes、Semantic、Procedures、Sessions)。混合检索:FTS5 + 语义搜索 + 查询扩展。Gemini Flash-Lite 嵌入。完整 UI 运维仪表盘(重建索引/审计)。 |
205
- | 🎨 **模块化开发技能** | `dev-frontend`(1,428 行、13 文件)和 `dev-backend`(1,275 行、9 文件)从单一 SKILL.md 扩展为模块化结构,含核心参考(美学、反套路、安全、架构)和技术栈指南(React、Next.js、Node、Python、PostgreSQL)。 |
206
- | 📄 **办公套件扩展** | 新增 HWP(韩文文档)支持。增强 PPTX 生成。活跃技能增至 21 个(原 18 个)。 |
207
- | **ACP 进度心跳** | 长时间代理运行期间实时 `stderr_activity` 事件推送。UI 模态控件支持条件心跳调度。 |
208
- | 🔄 **技能重置** | `jaw skill reset` — 支持 `--soft`(重新加载)和 `--hard`(完全重装)模式。`JAW_HOME` 与 `settings.json` 不一致时自动修正 `workingDir`。 |
209
- | 🎬 **视频技能** | 基于 Remotion 的 JSON 时间线定义程序化视频渲染。支持逐段旁白同步的 TTS 整合。 |
210
- | 📐 **1M 上下文切换** | 通过 `config.toml` 注入为支持的模型启用/禁用 1M Token 上下文窗口。 |
211
- | 🚀 **预览版发布** | 带时间戳版本(`v1.4.0-preview.YYYYMMDD`)的自动化预览发布流水线。GitHub prerelease 集成。 |
202
+ `v1.6.0` 是一次文档补票式发布,用来首次完整总结 `v1.2.0` 之后累计的大量产品变化。
203
+
204
+ - 完整更新日志:[CHANGELOG.md](CHANGELOG.md#160---2026-04-13)
205
+ - 覆盖范围:`v1.2.0` `v1.5.1`
206
+ - 规模:`59` commits,`307` files changed,`32,760` insertions,`4,263` deletions
207
+ - 核心主题:编排、结构化记忆、Discord/语音通道、更强的 UI、图表/组件渲染、发布与运维工具链全面增强
208
+
209
+ | 功能 | 说明 |
210
+ | ---- | ---- |
211
+ | 🎭 **PABCD 编排能力** | `jaw dispatch`、`jaw orchestrate`、持久化状态机、worker registry、research dispatch、Web UI 状态展示都成为正式产品表面。 |
212
+ | 🧠 **结构化记忆运行时** | 记忆系统从简单持久化扩展为带结构化存储、索引、查询扩展、task snapshot、审计/重建索引控制的完整子系统。 |
213
+ | 💬 **Discord + 语音通道** | CLI-JAW 不再只限于 Web / Terminal / Telegram,Discord 与语音/STT 也成为一等工作流。 |
214
+ | 🖥️ **大幅扩展的 Web UI** | 设置面板、记忆/心跳控制、tool UI、provider icon、手势、拖拽保护、virtual scroll 与渲染行为都明显增强。 |
215
+ | 📊 **图表与组件渲染** | iframe renderer、validator 与专用 CSS 让内联图表/组件渲染成为可见功能族,而非单纯实现细节。 |
216
+ | ⌨️ **CLI/TUI 可用性提升** | `/compact`、overlay/selector、session persistence、resume classification、readiness 检查等都明显改善了终端体验。 |
217
+ | 🧪 **运维 / CI / 安装增强** | `jaw doctor`、browser launch policy、skill reset/fallback、submodule-safe CI、preview release、Vite 构建链都得到强化。 |
218
+ | 📄 **Office 自动化成熟** | OfficeCLI 安装、smoke test、本地二进制与 Office/PDF 工作流相比 `v1.2.0` 更接近生产级。 |
212
219
 
213
220
  ---
214
221
 
@@ -234,7 +241,7 @@ graph LR
234
241
  - 🎭 **多智能体编排** — 复杂任务会自动拆分给专业的子智能体并行处理。
235
242
  - 🎤 **语音输入** — Web 麦克风按钮 + Telegram 语音消息。多供应商 STT(OpenAI、Vertex AI)。
236
243
  - 📝 **提示词模板** — 使用可视化节点地图编辑器创建、管理和复用提示词模板。
237
- - 📦 **116 个技能** — 浏览器控制、文件编辑、图片生成、网页搜索以及[更多功能](#-技能系统)。
244
+ - 📦 **100+ 个技能** — 浏览器控制、文件编辑、图片生成、网页搜索以及[更多功能](#-技能系统)。
238
245
  - 🧠 **持久化记忆** — 跨越不同会话,记住您过往的对话和偏好设定。
239
246
  - 📱 **Telegram 机器人** — 通过手机即可与您的助手聊天、发送语音/图片/文件。
240
247
  - 🌐 **浏览器自动化** — 您的助手能够自动导航网页、点击、打字并进行截图。
@@ -257,7 +264,7 @@ jaw service install # 开机自动启动 (systemd/launchd/docker 自动检测)
257
264
 
258
265
  ## 📦 技能系统
259
266
 
260
- **116 个技能**开箱即用 — 浏览器、GitHub、Notion、Telegram、记忆、PDF、图片生成等[应有尽有](#)。
267
+ **100+ 个技能**开箱即用 — 浏览器、GitHub、Notion、Telegram、记忆、PDF、图片生成等[应有尽有](#)。
261
268
 
262
269
  <details>
263
270
  <summary>查看全部技能</summary>
@@ -536,7 +543,7 @@ src/
536
543
  ## 🧪 测试
537
544
 
538
545
  <details>
539
- <summary>888 pass · 2 skipped · 零外部依赖</summary>
546
+ <summary>当前通过数与清单请以 TESTS.md 为准</summary>
540
547
 
541
548
  ```bash
542
549
  npm test
@@ -592,6 +599,6 @@ npm test
592
599
 
593
600
  Made with ❤️ by the CLI-JAW community
594
601
 
595
- [ISC License](LICENSE)
602
+ [MIT License](LICENSE)
596
603
 
597
604
  </div>
@@ -25,7 +25,7 @@ const _homeEqArg = process.argv.find(a => a.startsWith('--home='));
25
25
  if (_homeIdx !== -1 && process.argv[_homeIdx + 1]) {
26
26
  const _homeVal = process.argv[_homeIdx + 1];
27
27
  // Guard: if the "value" looks like a known subcommand, user forgot the path
28
- const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'memory', 'launchd', 'clone', 'service', 'orchestrate'];
28
+ const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'memory', 'launchd', 'clone', 'service', 'orchestrate', 'dispatch'];
29
29
  if (_knownCmds.includes(_homeVal)) {
30
30
  console.error(` ❌ --home requires a path argument (got subcommand '${_homeVal}')`);
31
31
  console.error(` Usage: jaw --home <path> ${_homeVal}`);
@@ -75,6 +75,7 @@ ${c.bold} 🦈 v${pkg.version}${c.reset} ${c.dim}AI Agent Orchestration Platf
75
75
  service 크로스 플랫폼 자동 실행 (systemd/launchd/docker)
76
76
  clone 인스턴스 복제 (독립 에이전트 생성)
77
77
  orchestrate PABCD 상태 전환 (P|A|B|C|D)
78
+ dispatch 직원 호출 (pipe 모드 호환)
78
79
 
79
80
  ${c.bold}Options:${c.reset}
80
81
  --home 데이터 디렉토리 지정 (기본: ~/.cli-jaw)
@@ -131,6 +132,9 @@ switch (command) {
131
132
  case 'orchestrate':
132
133
  await import('./commands/orchestrate.js');
133
134
  break;
135
+ case 'dispatch':
136
+ await import('./commands/dispatch.js');
137
+ break;
134
138
  case 'service':
135
139
  await import('./commands/service.js');
136
140
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env node
2
+ // bin/commands/dispatch.ts — CLI: jaw dispatch --agent <name> --task <task>
3
+ // Dispatches a jaw employee via the server API (pipe-mode compatible).
4
+ import { loadSettings, getServerUrl } from '../../src/core/config.js';
5
+ loadSettings();
6
+ if (process.env.JAW_EMPLOYEE_MODE === '1') {
7
+ console.error('❌ jaw employee sessions cannot dispatch other employees. Complete the assigned task directly.');
8
+ process.exit(2);
9
+ }
10
+ const portIdx = process.argv.indexOf('--port');
11
+ const PORT = (portIdx !== -1 && process.argv[portIdx + 1]) ? process.argv[portIdx + 1] : undefined;
12
+ const BASE = getServerUrl(PORT);
13
+ function getFlag(name) {
14
+ const idx = process.argv.indexOf(name);
15
+ if (idx === -1 || !process.argv[idx + 1])
16
+ return undefined;
17
+ return process.argv[idx + 1];
18
+ }
19
+ const agent = getFlag('--agent');
20
+ const task = getFlag('--task');
21
+ if (!agent || !task) {
22
+ console.error('Usage: jaw dispatch --agent <name> --task <task>');
23
+ console.error(' --agent Employee name (e.g., Frontend, Backend, Research, Docs)');
24
+ console.error(' --task Task description to assign');
25
+ process.exit(1);
26
+ }
27
+ try {
28
+ console.log(`🚀 Dispatching to ${agent}...`);
29
+ const res = await fetch(`${BASE}/api/orchestrate/dispatch`, {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Content-Type': 'application/json',
33
+ 'X-Jaw-Dispatch-Source': process.env.JAW_EMPLOYEE_MODE === '1' ? 'employee' : 'boss',
34
+ },
35
+ body: JSON.stringify({ agent, task }),
36
+ });
37
+ const body = await res.json();
38
+ if (!res.ok) {
39
+ console.error(`❌ ${body.error || `Failed: ${res.status}`}`);
40
+ process.exit(1);
41
+ }
42
+ console.log(`✅ ${agent} completed (${body.result?.status || 'done'})`);
43
+ if (body.result?.text) {
44
+ console.log('\n--- Employee Response ---');
45
+ console.log(body.result.text);
46
+ }
47
+ }
48
+ catch (e) {
49
+ if (e.cause?.code === 'ECONNREFUSED') {
50
+ console.error(`❌ Server not running. Start with: jaw serve`);
51
+ }
52
+ else {
53
+ console.error(`❌ Error: ${e.message}`);
54
+ }
55
+ process.exit(1);
56
+ }
57
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../bin/commands/dispatch.ts"],"names":[],"mappings":"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"}
@@ -682,7 +682,7 @@ const CODEX_ACTIVE = new Set([
682
682
  const OPENCLAW_ACTIVE = new Set([
683
683
  'browser', 'notion', 'memory', 'vision-click',
684
684
  'screen-capture', 'docx', 'xlsx', 'pptx', 'hwp', 'github', 'telegram-send',
685
- 'video', 'pdf-vision',
685
+ 'video', 'pdf-vision', 'diagram',
686
686
  ]);
687
687
  function getSkillVersion(id, registry) {
688
688
  return registry?.skills?.[id]?.version ?? null;