cli-jaw 2.0.6 → 2.0.13

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 (294) hide show
  1. package/README.ja.md +24 -11
  2. package/README.ko.md +24 -11
  3. package/README.md +95 -11
  4. package/README.zh-CN.md +24 -11
  5. package/dist/bin/cli-jaw.js +4 -1
  6. package/dist/bin/cli-jaw.js.map +1 -1
  7. package/dist/bin/commands/browser-web-ai.js +2 -2
  8. package/dist/bin/commands/browser-web-ai.js.map +1 -1
  9. package/dist/bin/commands/doctor.js +12 -2
  10. package/dist/bin/commands/doctor.js.map +1 -1
  11. package/dist/bin/commands/init.js +4 -2
  12. package/dist/bin/commands/init.js.map +1 -1
  13. package/dist/bin/commands/project.js +167 -0
  14. package/dist/bin/commands/project.js.map +1 -0
  15. package/dist/bin/commands/tui/types.js +20 -4
  16. package/dist/bin/commands/tui/types.js.map +1 -1
  17. package/dist/bin/postinstall.js +226 -24
  18. package/dist/bin/postinstall.js.map +1 -1
  19. package/dist/lib/mime-detect.js +5 -0
  20. package/dist/lib/mime-detect.js.map +1 -1
  21. package/dist/scripts/fresh-install-smoke.js +78 -6
  22. package/dist/scripts/fresh-install-smoke.js.map +1 -1
  23. package/dist/src/agent/agy-runtime.js +15 -0
  24. package/dist/src/agent/agy-runtime.js.map +1 -0
  25. package/dist/src/agent/args.js +44 -5
  26. package/dist/src/agent/args.js.map +1 -1
  27. package/dist/src/agent/cli-helpers.js +1 -1
  28. package/dist/src/agent/cli-helpers.js.map +1 -1
  29. package/dist/src/agent/lifecycle-handler.js +6 -3
  30. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  31. package/dist/src/agent/session-persistence.js +1 -1
  32. package/dist/src/agent/session-persistence.js.map +1 -1
  33. package/dist/src/agent/smoke-detector.js +3 -0
  34. package/dist/src/agent/smoke-detector.js.map +1 -1
  35. package/dist/src/agent/spawn/resume.js +2 -0
  36. package/dist/src/agent/spawn/resume.js.map +1 -1
  37. package/dist/src/agent/spawn-env.js +6 -0
  38. package/dist/src/agent/spawn-env.js.map +1 -1
  39. package/dist/src/agent/spawn.js +120 -15
  40. package/dist/src/agent/spawn.js.map +1 -1
  41. package/dist/src/browser/web-ai/capability-observation-presets.js +1 -1
  42. package/dist/src/browser/web-ai/capability-observation-presets.js.map +1 -1
  43. package/dist/src/browser/web-ai/capability-registry.js +6 -5
  44. package/dist/src/browser/web-ai/capability-registry.js.map +1 -1
  45. package/dist/src/browser/web-ai/chatgpt-attachments.js +7 -0
  46. package/dist/src/browser/web-ai/chatgpt-attachments.js.map +1 -1
  47. package/dist/src/browser/web-ai/context-pack/builder.js +19 -4
  48. package/dist/src/browser/web-ai/context-pack/builder.js.map +1 -1
  49. package/dist/src/browser/web-ai/context-pack/zip-writer.js +116 -0
  50. package/dist/src/browser/web-ai/context-pack/zip-writer.js.map +1 -0
  51. package/dist/src/browser/web-ai/gemini-live.js +21 -3
  52. package/dist/src/browser/web-ai/gemini-live.js.map +1 -1
  53. package/dist/src/browser/web-ai/gemini-model.js +26 -8
  54. package/dist/src/browser/web-ai/gemini-model.js.map +1 -1
  55. package/dist/src/cli/commands.js +2 -0
  56. package/dist/src/cli/commands.js.map +1 -1
  57. package/dist/src/cli/handlers-project.js +55 -0
  58. package/dist/src/cli/handlers-project.js.map +1 -0
  59. package/dist/src/cli/readiness.js +6 -1
  60. package/dist/src/cli/readiness.js.map +1 -1
  61. package/dist/src/cli/registry.js +11 -0
  62. package/dist/src/cli/registry.js.map +1 -1
  63. package/dist/src/core/claude-install.js +10 -1
  64. package/dist/src/core/claude-install.js.map +1 -1
  65. package/dist/src/core/config.js +63 -7
  66. package/dist/src/core/config.js.map +1 -1
  67. package/dist/src/core/db.js +11 -4
  68. package/dist/src/core/db.js.map +1 -1
  69. package/dist/src/core/runtime-settings.js +4 -1
  70. package/dist/src/core/runtime-settings.js.map +1 -1
  71. package/dist/src/manager/metadata.js +7 -2
  72. package/dist/src/manager/metadata.js.map +1 -1
  73. package/dist/src/manager/notes/routes.js +7 -0
  74. package/dist/src/manager/notes/routes.js.map +1 -1
  75. package/dist/src/manager/notes/store.js +72 -0
  76. package/dist/src/manager/notes/store.js.map +1 -1
  77. package/dist/src/manager/registry.js +1 -1
  78. package/dist/src/manager/registry.js.map +1 -1
  79. package/dist/src/manager/scan.js +2 -0
  80. package/dist/src/manager/scan.js.map +1 -1
  81. package/dist/src/messaging/send.js +1 -1
  82. package/dist/src/messaging/send.js.map +1 -1
  83. package/dist/src/orchestrator/distribute.js +25 -4
  84. package/dist/src/orchestrator/distribute.js.map +1 -1
  85. package/dist/src/orchestrator/pipeline.js +21 -5
  86. package/dist/src/orchestrator/pipeline.js.map +1 -1
  87. package/dist/src/orchestrator/state-machine.js +7 -1
  88. package/dist/src/orchestrator/state-machine.js.map +1 -1
  89. package/dist/src/orchestrator/workspace-context.js +49 -14
  90. package/dist/src/orchestrator/workspace-context.js.map +1 -1
  91. package/dist/src/routes/messaging.js +1 -1
  92. package/dist/src/routes/messaging.js.map +1 -1
  93. package/dist/src/routes/orchestrate.js +11 -4
  94. package/dist/src/routes/orchestrate.js.map +1 -1
  95. package/dist/src/routes/settings.js +73 -8
  96. package/dist/src/routes/settings.js.map +1 -1
  97. package/dist/src/security/path-guards.js +35 -14
  98. package/dist/src/security/path-guards.js.map +1 -1
  99. package/dist/src/types/cli-engine.js +1 -0
  100. package/dist/src/types/cli-engine.js.map +1 -1
  101. package/package.json +19 -4
  102. package/public/css/chat.css +6 -2
  103. package/public/dist/assets/{AdvancedExport-CBvz4_IZ.js → AdvancedExport-CZEVPqHb.js} +1 -1
  104. package/public/dist/assets/{Agent-DlUqCMXJ.js → Agent-BBrJGd5m.js} +1 -1
  105. package/public/dist/assets/{Browser-66BpLQck.js → Browser-dBaU9G9D.js} +1 -1
  106. package/public/dist/assets/{ChannelsDiscord-BifT2Dum.js → ChannelsDiscord-CbmWms9-.js} +1 -1
  107. package/public/dist/assets/{ChannelsTelegram-CK6tYQ8k.js → ChannelsTelegram-BD4Eyztg.js} +1 -1
  108. package/public/dist/assets/{DashboardMeta-Cc03HT5R.js → DashboardMeta-LVAL7TtE.js} +1 -1
  109. package/public/dist/assets/{Display-arOjcMQZ.js → Display-CFm1UmEo.js} +1 -1
  110. package/public/dist/assets/{Employees-YbW-mI67.js → Employees-DcMChleU.js} +1 -1
  111. package/public/dist/assets/{Heartbeat-CW4eIhtJ.js → Heartbeat-BoobN35p.js} +1 -1
  112. package/public/dist/assets/{Mcp-ZQ6ARQb6.js → Mcp-9NU4YkKO.js} +1 -1
  113. package/public/dist/assets/{Memory-BAUWJMqc.js → Memory-uZT30fww.js} +1 -1
  114. package/public/dist/assets/{MilkdownWysiwygEditor-IAqFtXvM.js → MilkdownWysiwygEditor-Otw40DDF.js} +1 -1
  115. package/public/dist/assets/{ModelProvider-DUtmFh0J.js → ModelProvider-CsIOyoZP.js} +1 -1
  116. package/public/dist/assets/{Network-B_4E82zQ.js → Network-D7hGwnyG.js} +1 -1
  117. package/public/dist/assets/NotesGraphView-CJuk9lKn.js +1 -0
  118. package/public/dist/assets/Permissions-CcIBptg3.js +1 -0
  119. package/public/dist/assets/{Permissions-BkADXjQ4.js → Permissions-DwdU3wi8.js} +1 -1
  120. package/public/dist/assets/{Profile-BcnTCSYM.js → Profile-BNTKD_Ex.js} +1 -1
  121. package/public/dist/assets/{Prompts-CUs_RoRE.js → Prompts-D_mCfYiu.js} +1 -1
  122. package/public/dist/assets/{SpeechKeys-qxc-ROWN.js → SpeechKeys-BTXCM-Fs.js} +1 -1
  123. package/public/dist/assets/agent-meta-BC7mLqo6.js +1 -0
  124. package/public/dist/assets/{app-CGqTcIeF.js → app-C7MAcAMu.js} +5 -5
  125. package/public/dist/assets/app-CkFBKUf8.css +1 -0
  126. package/public/dist/assets/{architectureDiagram-3BPJPVTR-kYIVzmWe.js → architectureDiagram-3BPJPVTR-CJCPEsxo.js} +1 -1
  127. package/public/dist/assets/{blockDiagram-GPEHLZMM-B204CPhe.js → blockDiagram-GPEHLZMM-CO1bkn0E.js} +2 -2
  128. package/public/dist/assets/{c4Diagram-AAUBKEIU-DAv6TAjg.js → c4Diagram-AAUBKEIU-D2R36Xu6.js} +1 -1
  129. package/public/dist/assets/{chunk-3OPIFGDE-DOAvk9x8.js → chunk-3OPIFGDE-DixnEkZw.js} +1 -1
  130. package/public/dist/assets/chunk-55IACEB6-DhWWzzdj.js +1 -0
  131. package/public/dist/assets/{chunk-5ZQYHXKU-Bd-RFO5i.js → chunk-5ZQYHXKU-Bli4k6GI.js} +2 -2
  132. package/public/dist/assets/{chunk-727SXJPM-BrsRzj8z.js → chunk-727SXJPM-sp4W8bhf.js} +1 -1
  133. package/public/dist/assets/{chunk-AQP2D5EJ-Di6Gstk-.js → chunk-AQP2D5EJ-Co6ucdGq.js} +1 -1
  134. package/public/dist/assets/{chunk-KSCS5N6A-D9a4ZkOy.js → chunk-KSCS5N6A-Beq1s5eO.js} +2 -2
  135. package/public/dist/assets/{chunk-L5ZTLDWV-D208QbfC.js → chunk-L5ZTLDWV-DfUlBdXN.js} +1 -1
  136. package/public/dist/assets/{chunk-LZXEDZCA-CE2KFduj.js → chunk-LZXEDZCA-B_yP4UKw.js} +1 -1
  137. package/public/dist/assets/{chunk-ND2GUHAM-zZ7h1CPf.js → chunk-ND2GUHAM-3qbNb7I9.js} +1 -1
  138. package/public/dist/assets/{chunk-O5CBEL6O-BTuvXKFi.js → chunk-O5CBEL6O-D-jDqsN2.js} +1 -1
  139. package/public/dist/assets/{chunk-WU5MYG2G-C3fKlSvP.js → chunk-WU5MYG2G-DlBJtD7-.js} +1 -1
  140. package/public/dist/assets/classDiagram-4FO5ZUOK-DmPJvqRM.js +1 -0
  141. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-ECmTUt7U.js +1 -0
  142. package/public/dist/assets/constants-BXWl7LTi.js +1 -0
  143. package/public/dist/assets/{cose-bilkent-S5V4N54A-D1zmarou.js → cose-bilkent-S5V4N54A-Bt9AAJCx.js} +1 -1
  144. package/public/dist/assets/{dagre-BM42HDAG-BVkBttzA.js → dagre-BM42HDAG-CXEA1wvZ.js} +1 -1
  145. package/public/dist/assets/{dagre-DnoxfNXr.js → dagre-Ve-IAfyz.js} +1 -1
  146. package/public/dist/assets/{diagram-2AECGRRQ-Bs32KPnT.js → diagram-2AECGRRQ-CCB0OKc2.js} +1 -1
  147. package/public/dist/assets/{diagram-5GNKFQAL-YDYgPOQj.js → diagram-5GNKFQAL-Cki9HABy.js} +1 -1
  148. package/public/dist/assets/{diagram-KO2AKTUF-1tIdFl26.js → diagram-KO2AKTUF-DNBDjE2o.js} +1 -1
  149. package/public/dist/assets/{diagram-LMA3HP47-B1y15kav.js → diagram-LMA3HP47-Cy23RDPa.js} +1 -1
  150. package/public/dist/assets/{diagram-OG6HWLK6-C25j1jGg.js → diagram-OG6HWLK6-CT_YF8cA.js} +1 -1
  151. package/public/dist/assets/dist-3R3GxjCf.js +13 -0
  152. package/public/dist/assets/{dist-D0PYXGt2.js → dist-BLd7xdyq.js} +1 -1
  153. package/public/dist/assets/{dist-fJAyK82z.js → dist-BaRrwDy3.js} +1 -1
  154. package/public/dist/assets/{dist-Rs_Khtjb.js → dist-Bbsp4OF7.js} +1 -1
  155. package/public/dist/assets/{dist-Cv8S3FhF.js → dist-BkBGlG70.js} +1 -1
  156. package/public/dist/assets/{dist-0v1UKkQ3.js → dist-BkJ_1mj9.js} +1 -1
  157. package/public/dist/assets/{dist-BQNQk-1M.js → dist-BxCRVW5D.js} +1 -1
  158. package/public/dist/assets/{dist-DDDFJ8jG.js → dist-C-v7Rm67.js} +1 -1
  159. package/public/dist/assets/dist-CNgDEAy8.js +1 -0
  160. package/public/dist/assets/dist-CO_W5rr2.js +1 -0
  161. package/public/dist/assets/{dist-vQskrHxt.js → dist-ChAUfTbO.js} +1 -1
  162. package/public/dist/assets/{dist-CjPin7Mr.js → dist-D-k-lzQT.js} +1 -1
  163. package/public/dist/assets/dist-D1hPukqY.js +1 -0
  164. package/public/dist/assets/{dist-C1VqWrYZ.js → dist-D5Qx-jQQ.js} +1 -1
  165. package/public/dist/assets/{dist-DTQW91xt.js → dist-D7VNzYBv.js} +1 -1
  166. package/public/dist/assets/{dist-DHQI31dn.js → dist-DAxnodoa.js} +1 -1
  167. package/public/dist/assets/{dist-CnIrGAPx.js → dist-DHSyODkR.js} +1 -1
  168. package/public/dist/assets/{dist-CE4s7vg82.js → dist-DaYTPjbb2.js} +1 -1
  169. package/public/dist/assets/{dist-jcptfm_T.js → dist-DlWi9tVO.js} +1 -1
  170. package/public/dist/assets/{dist-D66X8iAn.js → dist-DuuoJfRB.js} +1 -1
  171. package/public/dist/assets/{dist-DzT7frM2.js → dist-Dv36UUXz.js} +1 -1
  172. package/public/dist/assets/{dist-BVpa_e6W.js → dist-F4CVhitP.js} +1 -1
  173. package/public/dist/assets/{dist-Qs7HHNCC.js → dist-LHbJYy3N.js} +1 -1
  174. package/public/dist/assets/{dist-Ck6PnIlo.js → dist-VIlx7JdU.js} +1 -1
  175. package/public/dist/assets/{dist-D5GUqT-6.js → dist-cgDt2PmY.js} +1 -1
  176. package/public/dist/assets/dist-eW2LjRIK.js +1 -0
  177. package/public/dist/assets/{dist-Dm7RAaUo.js → dist-vGn3_sWA.js} +1 -1
  178. package/public/dist/assets/{employees-DRmX2RDd.js → employees-BmxY8Mw3.js} +1 -1
  179. package/public/dist/assets/{erDiagram-TEJ5UH35-CRvCbztR.js → erDiagram-TEJ5UH35-Cq7oHdXg.js} +1 -1
  180. package/public/dist/assets/{flowDiagram-I6XJVG4X-CzvVnib_.js → flowDiagram-I6XJVG4X-D8CdEnfM.js} +1 -1
  181. package/public/dist/assets/ganttDiagram-6RSMTGT7-B1rzKXi_.js +292 -0
  182. package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CbKdM7nW.js → gitGraphDiagram-PVQCEYII-CqLh-joi.js} +1 -1
  183. package/public/dist/assets/{graphlib-BLOO0H5r.js → graphlib-W5bESv3F.js} +1 -1
  184. package/public/dist/assets/{infoDiagram-5YYISTIA-BrZmg1At.js → infoDiagram-5YYISTIA-C1zVxumj.js} +1 -1
  185. package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-BDWXqJi5.js → ishikawaDiagram-YF4QCWOH-x-9J6xPM.js} +1 -1
  186. package/public/dist/assets/{journeyDiagram-JHISSGLW-CPFRd_M3.js → journeyDiagram-JHISSGLW-BDYzHrtn.js} +1 -1
  187. package/public/dist/assets/{kanban-definition-UN3LZRKU-BcQbBplS.js → kanban-definition-UN3LZRKU-BJ-06i6Z.js} +1 -1
  188. package/public/dist/assets/manager-B2NWzG7j.css +1 -0
  189. package/public/dist/assets/manager-C5e1IxEN.js +25 -0
  190. package/public/dist/assets/memory-BqqibBIE.js +1 -0
  191. package/public/dist/assets/{memory-BA-ki3gn.js → memory-CRL72HB-.js} +1 -1
  192. package/public/dist/assets/mermaid-loader-Dqb4ZUz6.js +1 -0
  193. package/public/dist/assets/{mermaid.core-ArqR5iFa.js → mermaid.core-D8VnfThU.js} +2 -2
  194. package/public/dist/assets/mermaid.core-DYHvk6Pd.js +1 -0
  195. package/public/dist/assets/{mindmap-definition-RKZ34NQL-C35cGkNU.js → mindmap-definition-RKZ34NQL-D8NDuIhn.js} +1 -1
  196. package/public/dist/assets/{pieDiagram-4H26LBE5-B8C_hoqJ.js → pieDiagram-4H26LBE5-CpBePil_.js} +3 -3
  197. package/public/dist/assets/{quadrantDiagram-W4KKPZXB-BEPrine5.js → quadrantDiagram-W4KKPZXB-C1WWpn88.js} +1 -1
  198. package/public/dist/assets/{render-C7_e0J_X.js → render-o_YEiCEO.js} +2 -2
  199. package/public/dist/assets/{requirementDiagram-4Y6WPE33-ClDDon9c.js → requirementDiagram-4Y6WPE33-C_D5VbNk.js} +1 -1
  200. package/public/dist/assets/{sankeyDiagram-5OEKKPKP-Bjs3OE-1.js → sankeyDiagram-5OEKKPKP--RH3Es8R.js} +3 -3
  201. package/public/dist/assets/{sequenceDiagram-3UESZ5HK-BM8IAaEe.js → sequenceDiagram-3UESZ5HK-CVI4AjhN.js} +1 -1
  202. package/public/dist/assets/settings-B0RlyAkI.js +1 -0
  203. package/public/dist/assets/settings-CCXRL5Ar.js +46 -0
  204. package/public/dist/assets/sidebar-DRJffqO1.js +14 -0
  205. package/public/dist/assets/skills-CFdzXbtK.js +1 -0
  206. package/public/dist/assets/{skills-Dq7fD8I3.js → skills-DbRVI-zf.js} +1 -1
  207. package/public/dist/assets/slash-commands-BUM6u-Ex.js +1 -0
  208. package/public/dist/assets/{slash-commands-DRsKtuGT.js → slash-commands-C2YBMaQV.js} +1 -1
  209. package/public/dist/assets/{stateDiagram-AJRCARHV-BvNABuXE.js → stateDiagram-AJRCARHV-4bx1rPZ3.js} +1 -1
  210. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CrfGPzHb.js +1 -0
  211. package/public/dist/assets/{timeline-definition-PNZ67QCA-CIvTvac3.js → timeline-definition-PNZ67QCA-DeQoGRE2.js} +1 -1
  212. package/public/dist/assets/{trace-drawer-DDFdU07_.js → trace-drawer-CIVBXyRH.js} +1 -1
  213. package/public/dist/assets/ui-C3ArwMhv.js +140 -0
  214. package/public/dist/assets/ui-CboUuc_E.js +1 -0
  215. package/public/dist/assets/vendor-utils-rVejrfMR.js +1 -0
  216. package/public/dist/assets/{vennDiagram-CIIHVFJN-C5cbS2KC.js → vennDiagram-CIIHVFJN-CejyJK0L.js} +1 -1
  217. package/public/dist/assets/{wardleyDiagram-YWT4CUSO-BsRBBGFP.js → wardleyDiagram-YWT4CUSO-DqXV0sa1.js} +1 -1
  218. package/public/dist/assets/wiki-link-suggestions-e5BzJAZH.js +23 -0
  219. package/public/dist/assets/{xychartDiagram-2RQKCTM6-B6rqui6F.js → xychartDiagram-2RQKCTM6-CWLoVl2b.js} +2 -2
  220. package/public/dist/index.html +20 -2
  221. package/public/dist/manager/index.html +2 -2
  222. package/public/index.html +18 -0
  223. package/public/js/constants.ts +12 -1
  224. package/public/js/features/settings-cli-status.ts +27 -4
  225. package/public/js/features/settings-core.ts +28 -15
  226. package/public/js/features/settings-types.ts +1 -0
  227. package/public/js/features/ui-status.ts +3 -0
  228. package/public/js/ws.ts +5 -1
  229. package/public/manager/src/SidebarRailRouter.tsx +5 -2
  230. package/public/manager/src/api.ts +13 -0
  231. package/public/manager/src/components/WorkbenchHeader.tsx +10 -0
  232. package/public/manager/src/manager-notes.css +228 -0
  233. package/public/manager/src/notes/NotesBacklinksPanel.tsx +91 -0
  234. package/public/manager/src/notes/NotesCommandPalette.tsx +212 -0
  235. package/public/manager/src/notes/NotesGraphView.tsx +145 -0
  236. package/public/manager/src/notes/NotesSidebar.tsx +183 -5
  237. package/public/manager/src/notes/NotesToolbar.tsx +9 -3
  238. package/public/manager/src/notes/NotesWorkspace.tsx +140 -4
  239. package/public/manager/src/notes/notes-api.ts +2 -0
  240. package/public/manager/src/notes/notes-command-registry.tsx +79 -0
  241. package/public/manager/src/notes/notes-quick-switcher.css +151 -0
  242. package/public/manager/src/notes/notes-shortcuts.ts +23 -0
  243. package/public/manager/src/notes/notes-types.ts +1 -1
  244. package/public/manager/src/notes/template-engine.ts +27 -0
  245. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +7 -1
  246. package/public/manager/src/types.ts +2 -1
  247. package/scripts/audit-fresh-install-evidence.mjs +278 -0
  248. package/scripts/collect-fresh-install-evidence.sh +459 -0
  249. package/scripts/fresh-install-smoke.ts +85 -6
  250. package/scripts/install-officecli.ps1 +14 -1
  251. package/scripts/install-risk-gate.mjs +161 -0
  252. package/scripts/install-wsl.sh +78 -16
  253. package/scripts/install.sh +272 -72
  254. package/scripts/postinstall-guard.cjs +2 -2
  255. package/scripts/release-preview.sh +25 -3
  256. package/scripts/release.sh +37 -8
  257. package/scripts/require-release-evidence.mjs +236 -0
  258. package/scripts/verify-fresh-install.sh +120 -0
  259. package/scripts/verify-release-evidence.mjs +158 -0
  260. package/public/dist/assets/Permissions-DvUCB8wA.js +0 -1
  261. package/public/dist/assets/agent-meta-Du8y6mSM.js +0 -1
  262. package/public/dist/assets/app-Dpk6cE6C.css +0 -1
  263. package/public/dist/assets/chunk-55IACEB6-Dx2JkQLw.js +0 -1
  264. package/public/dist/assets/classDiagram-4FO5ZUOK-Cb-qL5u3.js +0 -1
  265. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BPhGdj15.js +0 -1
  266. package/public/dist/assets/constants-BxG09J6S.js +0 -1
  267. package/public/dist/assets/dist-BMi_buEb.js +0 -1
  268. package/public/dist/assets/dist-BkrbW_LS.js +0 -1
  269. package/public/dist/assets/dist-C3vh7d65.js +0 -13
  270. package/public/dist/assets/dist-D815C1Fv.js +0 -1
  271. package/public/dist/assets/dist-sOV2kBhQ.js +0 -1
  272. package/public/dist/assets/ganttDiagram-6RSMTGT7-BbUYP6iv.js +0 -292
  273. package/public/dist/assets/manager-B5OmizBL.css +0 -1
  274. package/public/dist/assets/manager-Cs3eMBcx.js +0 -25
  275. package/public/dist/assets/memory-DLQbyBA3.js +0 -1
  276. package/public/dist/assets/mermaid-loader-BVPsKrpr.js +0 -1
  277. package/public/dist/assets/mermaid.core-BAwu4U2Y.js +0 -1
  278. package/public/dist/assets/settings-DjyKdqev.js +0 -1
  279. package/public/dist/assets/settings-pUJzyeX2.js +0 -42
  280. package/public/dist/assets/sidebar-CO9Qjj6v.js +0 -14
  281. package/public/dist/assets/skills-CX3qJ77s.js +0 -1
  282. package/public/dist/assets/slash-commands-UbS8w9ij.js +0 -1
  283. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CCIo81qy.js +0 -1
  284. package/public/dist/assets/ui-CeBmBBZM.js +0 -140
  285. package/public/dist/assets/ui-TMXjvH0r.js +0 -1
  286. package/public/dist/assets/vendor-utils-BnxL60_-.js +0 -1
  287. package/public/dist/assets/wiki-link-suggestions-BHwNQXT_.js +0 -23
  288. /package/public/dist/assets/{HealthBadge-DEPFkcA0.js → HealthBadge-CfLTPTPW.js} +0 -0
  289. /package/public/dist/assets/{InlineWarn-DoJS7AgM.js → InlineWarn-C7ISyzDI.js} +0 -0
  290. /package/public/dist/assets/{fields-DUawAHWZ.js → fields-BwD_NGxe.js} +0 -0
  291. /package/public/dist/assets/{locale-BHMJIzyw.js → locale-DT1WRaeJ.js} +0 -0
  292. /package/public/dist/assets/{page-shell-CVAobxbP.js → page-shell-uNOxwdbr.js} +0 -0
  293. /package/public/dist/assets/{path-utils-r2bJIu28.js → path-utils-h2GAj3hH.js} +0 -0
  294. /package/public/dist/assets/{provider-icons-dxT69zGg.js → provider-icons-ClVd2suJ.js} +0 -0
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
3
+ import { existsSync } from 'node:fs';
4
+
5
+ const isWin = process.platform === 'win32';
6
+ const npx = isWin ? 'npx.cmd' : 'npx';
7
+ const npm = isWin ? 'npm.cmd' : 'npm';
8
+
9
+ function commandExists(command) {
10
+ const probe = isWin
11
+ ? spawnSync('where', [command], { stdio: 'ignore' })
12
+ : spawnSync('sh', ['-c', 'command -v "$1" >/dev/null 2>&1', 'sh', command], { stdio: 'ignore' });
13
+ return probe.status === 0;
14
+ }
15
+
16
+ function run(label, command, args, options = {}) {
17
+ if (options.skip) {
18
+ console.log(`[install-risk] SKIP ${label}: ${options.skip}`);
19
+ return true;
20
+ }
21
+
22
+ console.log(`[install-risk] RUN ${label}`);
23
+ const result = spawnSync(command, args, {
24
+ cwd: process.cwd(),
25
+ env: process.env,
26
+ stdio: 'inherit',
27
+ shell: false,
28
+ });
29
+
30
+ if (result.status === 0) {
31
+ console.log(`[install-risk] PASS ${label}`);
32
+ return true;
33
+ }
34
+
35
+ console.error(`[install-risk] FAIL ${label} (exit ${result.status ?? 'signal'})`);
36
+ return false;
37
+ }
38
+
39
+ function runPackageContentsCheck() {
40
+ const label = 'npm package includes installer/verifier scripts';
41
+ console.log(`[install-risk] RUN ${label}`);
42
+ const result = spawnSync(npm, ['pack', '--dry-run', '--json'], {
43
+ cwd: process.cwd(),
44
+ env: process.env,
45
+ encoding: 'utf8',
46
+ stdio: 'pipe',
47
+ shell: false,
48
+ });
49
+
50
+ if (result.status !== 0) {
51
+ process.stdout.write(result.stdout || '');
52
+ process.stderr.write(result.stderr || '');
53
+ console.error(`[install-risk] FAIL ${label} (exit ${result.status ?? 'signal'})`);
54
+ return false;
55
+ }
56
+
57
+ let entries;
58
+ try {
59
+ entries = JSON.parse(result.stdout);
60
+ } catch (error) {
61
+ console.error(`[install-risk] FAIL ${label}: npm pack did not return JSON`);
62
+ console.error(String(error));
63
+ return false;
64
+ }
65
+
66
+ const files = new Set((entries?.[0]?.files || []).map((entry) => entry.path));
67
+ const required = [
68
+ 'scripts/install.sh',
69
+ 'scripts/install-wsl.sh',
70
+ 'scripts/install-officecli.sh',
71
+ 'scripts/install-officecli.ps1',
72
+ 'scripts/verify-fresh-install.sh',
73
+ 'scripts/collect-fresh-install-evidence.sh',
74
+ 'scripts/audit-fresh-install-evidence.mjs',
75
+ 'scripts/verify-release-evidence.mjs',
76
+ 'scripts/require-release-evidence.mjs',
77
+ 'scripts/postinstall-guard.cjs',
78
+ ];
79
+ const missing = required.filter((file) => !files.has(file));
80
+ if (missing.length) {
81
+ console.error(`[install-risk] FAIL ${label}: missing ${missing.join(', ')}`);
82
+ return false;
83
+ }
84
+
85
+ console.log(`[install-risk] PASS ${label}`);
86
+ return true;
87
+ }
88
+
89
+ function structureVerifierSkipReason() {
90
+ if (!hasBash) return 'bash not available';
91
+ if (!existsSync('structure/verify-counts.sh')) return 'structure verifier not available';
92
+ if (!commandExists('rg')) return 'ripgrep not available';
93
+ if (!existsSync('public/dist')) return 'public/dist build output not available';
94
+ return '';
95
+ }
96
+
97
+ const checks = [];
98
+ const hasBash = commandExists('bash');
99
+ checks.push(() => run('bash syntax: scripts/install.sh', 'bash', ['-n', 'scripts/install.sh'], {
100
+ skip: hasBash ? '' : 'bash not available',
101
+ }));
102
+ checks.push(() => run('bash syntax: scripts/install-wsl.sh', 'bash', ['-n', 'scripts/install-wsl.sh'], {
103
+ skip: hasBash ? '' : 'bash not available',
104
+ }));
105
+ checks.push(() => run('bash syntax: scripts/verify-fresh-install.sh', 'bash', ['-n', 'scripts/verify-fresh-install.sh'], {
106
+ skip: hasBash ? '' : 'bash not available',
107
+ }));
108
+ checks.push(() => run('bash syntax: scripts/collect-fresh-install-evidence.sh', 'bash', ['-n', 'scripts/collect-fresh-install-evidence.sh'], {
109
+ skip: hasBash ? '' : 'bash not available',
110
+ }));
111
+ checks.push(() => run('node syntax: scripts/audit-fresh-install-evidence.mjs', process.execPath, ['--check', 'scripts/audit-fresh-install-evidence.mjs']));
112
+ checks.push(() => run('node syntax: scripts/verify-release-evidence.mjs', process.execPath, ['--check', 'scripts/verify-release-evidence.mjs']));
113
+ checks.push(() => run('node syntax: scripts/require-release-evidence.mjs', process.execPath, ['--check', 'scripts/require-release-evidence.mjs']));
114
+
115
+ const powershell = commandExists('pwsh') ? 'pwsh' : commandExists('powershell') ? 'powershell' : null;
116
+ const psParse = [
117
+ '$errors = $null;',
118
+ "$null = [System.Management.Automation.PSParser]::Tokenize((Get-Content -Raw 'scripts/install-officecli.ps1'), [ref]$errors);",
119
+ 'if ($errors.Count -gt 0) { $errors | ForEach-Object { Write-Error $_.Message }; exit 1 }',
120
+ ].join(' ');
121
+ checks.push(() => run('PowerShell parse: OfficeCLI installer', powershell || 'powershell', [
122
+ '-NoProfile',
123
+ '-ExecutionPolicy',
124
+ 'Bypass',
125
+ '-Command',
126
+ psParse,
127
+ ], {
128
+ skip: powershell ? '' : 'PowerShell not available',
129
+ }));
130
+
131
+ checks.push(() => run('installer risk tests', npx, [
132
+ 'tsx',
133
+ '--import',
134
+ './tests/setup/test-home.ts',
135
+ '--experimental-test-module-mocks',
136
+ '--test',
137
+ 'tests/unit/install-sh-exec.test.ts',
138
+ 'tests/unit/fresh-evidence-audit.test.ts',
139
+ 'tests/unit/service.test.ts',
140
+ 'tests/unit/safe-install.test.ts',
141
+ 'tests/unit/postinstall-strict-tools.test.ts',
142
+ 'tests/unit/wsl-installer-doctor.test.ts',
143
+ 'tests/unit/wsl-installer-exec.test.ts',
144
+ ]));
145
+
146
+ checks.push(runPackageContentsCheck);
147
+
148
+ checks.push(() => run('structure line-count sync', 'bash', ['structure/verify-counts.sh'], {
149
+ skip: structureVerifierSkipReason(),
150
+ }));
151
+
152
+ let ok = true;
153
+ for (const check of checks) {
154
+ ok = check() && ok;
155
+ }
156
+
157
+ if (!ok) {
158
+ process.exit(1);
159
+ }
160
+
161
+ console.log('[install-risk] ALL PASS');
@@ -42,6 +42,16 @@ case "$HOME" in
42
42
  /mnt/*) fail "HOME points to Windows path: $HOME — launch a proper WSL shell (wsl.exe -d Ubuntu)" ;;
43
43
  esac
44
44
 
45
+ wsl_npm_is_usable() {
46
+ local npm_path
47
+ npm_path="$(command -v npm 2>/dev/null || true)"
48
+ [ -n "$npm_path" ] || return 1
49
+ case "$npm_path" in
50
+ /mnt/*) return 1 ;;
51
+ esac
52
+ npm --version >/dev/null 2>&1
53
+ }
54
+
45
55
  ensure_sudo() {
46
56
  if [ "$(id -u)" -eq 0 ]; then
47
57
  HAS_SUDO=true
@@ -112,14 +122,21 @@ install_node() {
112
122
  local ver
113
123
  ver=$(node -v | sed 's/v//' | cut -d. -f1)
114
124
  if [ "$ver" -ge "$NODE_MAJOR" ] 2>/dev/null; then
115
- # Also verify npm is WSL-native before early return
116
- case "$(command -v npm)" in
117
- /mnt/*)
118
- warn "Node is WSL-native but npm resolves to Windows: $(command -v npm) — reinstalling..."
125
+ local npm_path
126
+ npm_path="$(command -v npm 2>/dev/null || true)"
127
+ # Also verify npm is WSL-native and runnable before early return
128
+ case "$npm_path" in
129
+ /mnt/*) warn "Node is WSL-native but npm resolves to Windows: $npm_path — reinstalling..." ;;
130
+ "")
131
+ warn "Node is WSL-native but npm is missing — reinstalling..."
119
132
  ;;
120
133
  *)
121
- ok "Node.js $(node -v) already installed (>= $NODE_MAJOR) at $node_path"
122
- return 0
134
+ if ! npm --version >/dev/null 2>&1; then
135
+ warn "Node is WSL-native but npm is not runnable at $npm_path — reinstalling..."
136
+ else
137
+ ok "Node.js $(node -v) already installed (>= $NODE_MAJOR) at $node_path"
138
+ return 0
139
+ fi
123
140
  ;;
124
141
  esac
125
142
  else
@@ -176,10 +193,16 @@ install_node() {
176
193
  case "$final_node" in
177
194
  /mnt/*) fail "Node.js installed but resolves to Windows path: $final_node — install WSL-native Node" ;;
178
195
  esac
179
- case "$(command -v npm)" in
180
- /mnt/*) fail "npm resolves to Windows path: $(command -v npm) — install WSL-native Node" ;;
181
- esac
182
- ok "Node.js $(node -v) ready at $final_node"
196
+ if ! wsl_npm_is_usable; then
197
+ local final_npm
198
+ final_npm="$(command -v npm 2>/dev/null || true)"
199
+ case "$final_npm" in
200
+ /mnt/*) fail "npm resolves to Windows path: $final_npm — install WSL-native Node" ;;
201
+ "") fail "Node.js installed but npm is missing — install WSL-native Node with npm" ;;
202
+ *) fail "npm is installed at $final_npm but failed to run" ;;
203
+ esac
204
+ fi
205
+ ok "Node.js $(node -v) with npm $(npm --version) ready at $final_node"
183
206
  }
184
207
 
185
208
  # ═══════════════════════════════════════
@@ -202,6 +225,46 @@ add_npm_path_to_profile() {
202
225
  fi
203
226
  }
204
227
 
228
+ configure_bash_path_profiles() {
229
+ add_npm_path_to_profile "$HOME/.bashrc"
230
+
231
+ # Bash login shells read the first existing file among .bash_profile,
232
+ # .bash_login, and .profile. Update existing higher-priority files without
233
+ # creating them, so we do not accidentally stop Bash from reading .profile.
234
+ [ -f "$HOME/.bash_profile" ] && add_npm_path_to_profile "$HOME/.bash_profile"
235
+ [ -f "$HOME/.bash_login" ] && add_npm_path_to_profile "$HOME/.bash_login"
236
+ add_npm_path_to_profile "$HOME/.profile"
237
+ }
238
+
239
+ resolve_wsl_tool_path() {
240
+ local tool="$1"
241
+ local candidate
242
+
243
+ while IFS= read -r candidate; do
244
+ [ -n "$candidate" ] || continue
245
+ case "$candidate" in
246
+ "$NPM_PREFIX/bin/$tool"|/mnt/*) continue ;;
247
+ *) printf '%s\n' "$candidate"; return 0 ;;
248
+ esac
249
+ done < <(type -P -a "$tool" 2>/dev/null || true)
250
+
251
+ return 1
252
+ }
253
+
254
+ link_node_tools_to_local_bin() {
255
+ local tool target link
256
+ mkdir -p "$NPM_PREFIX/bin"
257
+
258
+ for tool in node npm npx corepack; do
259
+ target="$(resolve_wsl_tool_path "$tool" || true)"
260
+ [ -n "$target" ] || continue
261
+ link="$NPM_PREFIX/bin/$tool"
262
+ ln -sfn "$target" "$link"
263
+ done
264
+
265
+ hash -r 2>/dev/null || true
266
+ }
267
+
205
268
  configure_npm_prefix() {
206
269
  local prefix="$NPM_PREFIX"
207
270
 
@@ -215,6 +278,7 @@ configure_npm_prefix() {
215
278
  mkdir -p "$prefix/bin" "$prefix/lib"
216
279
  npm config set prefix "$prefix"
217
280
  export PATH="$prefix/bin:$PATH"
281
+ link_node_tools_to_local_bin
218
282
  hash -r 2>/dev/null || true
219
283
 
220
284
  # Verify effective prefix is WSL-native and matches intent
@@ -227,8 +291,7 @@ configure_npm_prefix() {
227
291
  warn "npm prefix mismatch: expected $prefix, got $effective"
228
292
  fi
229
293
 
230
- add_npm_path_to_profile "$HOME/.bashrc"
231
- add_npm_path_to_profile "$HOME/.profile"
294
+ configure_bash_path_profiles
232
295
  if [ -f "$HOME/.zshrc" ] || [ "${SHELL:-}" != "${SHELL%zsh}" ]; then
233
296
  add_npm_path_to_profile "$HOME/.zshrc"
234
297
  fi
@@ -276,12 +339,10 @@ install_jaw() {
276
339
  ok "cli-jaw already installed ($(jaw --version 2>/dev/null || echo 'unknown version'))"
277
340
  info "Updating to latest..."
278
341
  CLI_JAW_INSTALL_CLI_TOOLS=1 \
279
- CLI_JAW_REQUIRE_CLI_TOOLS=1 \
280
342
  npm install -g cli-jaw@latest
281
343
  else
282
344
  info "Installing cli-jaw globally..."
283
345
  CLI_JAW_INSTALL_CLI_TOOLS=1 \
284
- CLI_JAW_REQUIRE_CLI_TOOLS=1 \
285
346
  npm install -g cli-jaw
286
347
  fi
287
348
 
@@ -393,10 +454,10 @@ main() {
393
454
  install_browser_deps
394
455
  echo ""
395
456
 
396
- run_doctor
457
+ install_officecli
397
458
  echo ""
398
459
 
399
- install_officecli
460
+ run_doctor
400
461
  echo ""
401
462
 
402
463
  echo -e "${GREEN}${BOLD}═══════════════════════════════════════${NC}"
@@ -406,6 +467,7 @@ main() {
406
467
  echo -e " Run: ${CYAN}jaw dashboard${NC}"
407
468
  echo -e " Also: ${CYAN}jaw serve${NC} ${DIM}# classic server mode${NC}"
408
469
  echo -e " If a new shell cannot find jaw: ${CYAN}source ~/.bashrc${NC}"
470
+ echo -e " From Windows PowerShell: ${CYAN}wsl.exe -d Ubuntu -- bash -lc \"jaw dashboard\"${NC}"
409
471
  echo ""
410
472
  echo -e "${DIM} Tip: Authenticate at least one AI engine:${NC}"
411
473
  echo -e "${DIM} gh auth login # GitHub Copilot (free)${NC}"