wind-agent-cli 1.37.3 → 1.38.1

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 (266) hide show
  1. package/README.md +16 -1
  2. package/dist/api-docs.html +2 -2
  3. package/dist/assets/{CodeEditor-BqmxpZ_D.js → CodeEditor-Cx2QOPKS.js} +6 -6
  4. package/dist/assets/FileTree-CaCZBfXB.js +1 -0
  5. package/dist/assets/GitPanel-C8vu-HU9.js +4 -0
  6. package/dist/assets/{MarkdownPreview-93h_1tJa.js → MarkdownPreview-DM1I8sMC.js} +17 -27
  7. package/dist/assets/Shell-DrlLKa8f.css +1 -0
  8. package/dist/assets/Shell-eRBEAkRb.js +76 -0
  9. package/dist/assets/StandaloneShell-C_SgfnxT.js +1 -0
  10. package/dist/assets/TaskMasterPanel-ePMcx8a-.js +2 -0
  11. package/dist/assets/abnfDiagram-N423BO3Z-BcJZs1lF.js +1 -0
  12. package/dist/assets/arc-B53XXXxy.js +1 -0
  13. package/dist/assets/architectureDiagram-T3A2C74G-vTs0UDp_.js +36 -0
  14. package/dist/assets/{blockDiagram-VBNYF7ZC-oSjQ1SgE.js → blockDiagram-VBNYF7ZC-CRlmkPBH.js} +4 -4
  15. package/dist/assets/c4Diagram-5PPSVZJV-CDkarwX2.js +10 -0
  16. package/dist/assets/channel-BBmlxLKm.js +1 -0
  17. package/dist/assets/{chunk-2GRJ4B5K-B07uZ07O.js → chunk-2GRJ4B5K-CdVcURNG.js} +1 -1
  18. package/dist/assets/{chunk-2Q5K7J3B-DNSfO7xS.js → chunk-2Q5K7J3B-CSMQbOQx.js} +1 -1
  19. package/dist/assets/chunk-5RXB4S5H-DFW9zj_c.js +231 -0
  20. package/dist/assets/{chunk-5VM5RSS4-B7vZV0zC.js → chunk-5VM5RSS4-DBpthDmq.js} +1 -1
  21. package/dist/assets/{chunk-6Q2QTUOP-DuS_xUGG.js → chunk-6Q2QTUOP-BcUSTdgD.js} +1 -1
  22. package/dist/assets/chunk-GF5L2VYU-4m17UUNv.js +206 -0
  23. package/dist/assets/{chunk-JWPE2WC7-DD2hcXvs.js → chunk-JWPE2WC7-BQbCGGN3.js} +1 -1
  24. package/dist/assets/{chunk-KBJHAD2P-Cz-l38qp.js → chunk-KBJHAD2P-BSUyigrP.js} +1 -1
  25. package/dist/assets/{chunk-RYQCIY6F-DGFIU1YM.js → chunk-RYQCIY6F-IDx48cke.js} +1 -1
  26. package/dist/assets/{chunk-XXDRQBXY-CmfzoYFl.js → chunk-XXDRQBXY-CkptWWiw.js} +1 -1
  27. package/dist/assets/classDiagram-JCYQIIEL-Zuuh6WIs.js +1 -0
  28. package/dist/assets/classDiagram-v2-OCEON4UE-Zuuh6WIs.js +1 -0
  29. package/dist/assets/cose-bilkent-JH36ORCC-Di3RMB4X.js +1 -0
  30. package/dist/assets/{cynefin-VYW2F7L2-P1HecReO.js → cynefin-VYW2F7L2-DBEP-JNm.js} +11 -23
  31. package/dist/assets/cynefinDiagram-MW4NZA55-DCa5bQ3E.js +62 -0
  32. package/dist/assets/cytoscape.esm-yzknjiTM.js +321 -0
  33. package/dist/assets/dagre-VZM6K2ZE-N0N_WSj2.js +4 -0
  34. package/dist/assets/{diagram-7IWD3JNH-9CWGFMYR.js → diagram-7IWD3JNH-wYn0p431.js} +5 -5
  35. package/dist/assets/{diagram-B4RE2ZJO-TWK59T6V.js → diagram-B4RE2ZJO-Cse-jrwQ.js} +2 -2
  36. package/dist/assets/diagram-LBJQPF4R-Byhmgq5m.js +24 -0
  37. package/dist/assets/diagram-Q27KOJAE-BNsUkxU7.js +24 -0
  38. package/dist/assets/diagram-UB23O5K3-C3QHYX7n.js +41 -0
  39. package/dist/assets/ebnfDiagram-BXEA7PRR-BP6B3t_z.js +1 -0
  40. package/dist/assets/erDiagram-JOGREHBK-CjYRNWDj.js +85 -0
  41. package/dist/assets/feature-chat-CenAll-X.js +88 -0
  42. package/dist/assets/feature-workspace-X9kJZ4EG.js +39 -0
  43. package/dist/assets/{flowDiagram-UKHOOZJN-DEr2II5V.js → flowDiagram-UKHOOZJN-4H-yy-hv.js} +4 -4
  44. package/dist/assets/ganttDiagram-PKOTCBZU-CEjsxzjF.js +292 -0
  45. package/dist/assets/gitGraphDiagram-DS77QQ5N-CNEvMqer.js +106 -0
  46. package/dist/assets/graph-DOmOIIwC.js +1 -0
  47. package/dist/assets/index-BIKUx4Nd.js +1 -0
  48. package/dist/assets/index-BnTqIKbW.js +1 -0
  49. package/dist/assets/index-CblFvRGn.js +35 -0
  50. package/dist/assets/index-Cr5MbHuj.css +1 -0
  51. package/dist/assets/{index-BSe3UiFA.js → index-Dn_5mZup.js} +3 -3
  52. package/dist/assets/infoDiagram-6WML65LV-CaQEYwl_.js +2 -0
  53. package/dist/assets/ishikawaDiagram-WSZJBQD7-jvmcvqKv.js +70 -0
  54. package/dist/assets/journeyDiagram-NVQOT4AX-D3t6ZEEp.js +139 -0
  55. package/dist/assets/{kanban-definition-27J2QSJJ-DmlgiV7K.js → kanban-definition-27J2QSJJ-DndXvXlL.js} +6 -6
  56. package/dist/assets/{layout-D6BstSzF.js → layout-D-LzfAck.js} +1 -1
  57. package/dist/assets/{linear-Ct_eoJQk.js → linear-CRI9G1bv.js} +1 -1
  58. package/dist/assets/map-DxJ2ADlA.js +1 -0
  59. package/dist/assets/mermaid.core-Nej1-0Ug.js +306 -0
  60. package/dist/assets/{mindmap-definition-FAOFIHXS-DGtMgQhf.js → mindmap-definition-FAOFIHXS-7fzz0Exr.js} +4 -4
  61. package/dist/assets/pegDiagram-VL7TDLO6-DTiRFRfv.js +1 -0
  62. package/dist/assets/{pieDiagram-7S7Q4E2Y-DMkt_Zfr.js → pieDiagram-7S7Q4E2Y-BU4cScsB.js} +2 -2
  63. package/dist/assets/quadrantDiagram-CIZ2JOQS-Cc13j5j0.js +7 -0
  64. package/dist/assets/railroadDiagram-AXF67PYL-CfB467SJ.js +1 -0
  65. package/dist/assets/requirementDiagram-LRYGKXZP-BddSRoQa.js +84 -0
  66. package/dist/assets/sankeyDiagram-W5VNT64P-D33-L55R.js +40 -0
  67. package/dist/assets/sequenceDiagram-SI44F4Z6-BP7gKO1m.js +162 -0
  68. package/dist/assets/sizeCapture-X5ZJPWSS-DLmxTSos.js +1 -0
  69. package/dist/assets/stateDiagram-OKZ733FA-2fN5h0fl.js +1 -0
  70. package/dist/assets/stateDiagram-v2-UEYNNEHI-ddGXuRHz.js +1 -0
  71. package/dist/assets/swimlanes-SLNWSIFB-m6QzM3CR.js +2 -0
  72. package/dist/assets/swimlanesDiagram-ULZ7WXOC-DNmdh3Nm.js +8 -0
  73. package/dist/assets/timeline-definition-Z64GVDOM-B-4XL-3f.js +120 -0
  74. package/dist/assets/vendor-data-DsEZeNPr.js +4 -0
  75. package/dist/assets/vendor-i18n-B6HjLCnN.js +1 -0
  76. package/dist/assets/vendor-markdown-DkITEES2.js +298 -0
  77. package/dist/assets/vendor-react-C2GTiUCy.js +10 -0
  78. package/dist/assets/vendor-ui-CAUHSABu.js +49 -0
  79. package/dist/assets/vennDiagram-T6HMQDX7-C-2U26ta.js +34 -0
  80. package/dist/assets/{wardleyDiagram-T6FBY63Y-Db9dsaXv.js → wardleyDiagram-T6FBY63Y-BM4F1_6i.js} +2 -2
  81. package/dist/assets/workbox-window.prod.es5-BBnX5xw4.js +2 -0
  82. package/dist/assets/xychartDiagram-ELKLHX3M-BWBCnHJm.js +7 -0
  83. package/dist/favicon.png +0 -0
  84. package/dist/icons/icon-128x128.png +0 -0
  85. package/dist/icons/icon-144x144.png +0 -0
  86. package/dist/icons/icon-152x152.png +0 -0
  87. package/dist/icons/icon-180x180.png +0 -0
  88. package/dist/icons/icon-192x192.png +0 -0
  89. package/dist/icons/icon-384x384.png +0 -0
  90. package/dist/icons/icon-512x512.png +0 -0
  91. package/dist/icons/icon-72x72.png +0 -0
  92. package/dist/icons/icon-96x96.png +0 -0
  93. package/dist/icons/icon-maskable-192x192.png +0 -0
  94. package/dist/icons/icon-maskable-512x512.png +0 -0
  95. package/dist/icons/new-icon.png +0 -0
  96. package/dist/index.html +17 -27
  97. package/dist/logo-128.png +0 -0
  98. package/dist/logo-256.png +0 -0
  99. package/dist/manifest.webmanifest +1 -0
  100. package/dist/push-sw.js +48 -0
  101. package/dist/screenshots/setup-screen-mobile.png +0 -0
  102. package/dist/screenshots/setup-screen.png +0 -0
  103. package/dist/sw.js +1 -124
  104. package/dist/workbox-ae5c0bb2.js +1 -0
  105. package/dist-server/server/index.js +1 -1
  106. package/dist-server/server/index.js.map +1 -1
  107. package/dist-server/server/load-env.js +4 -2
  108. package/dist-server/server/load-env.js.map +1 -1
  109. package/dist-server/server/modules/agent/agent.routes.js +1 -1
  110. package/dist-server/server/modules/agent/agent.routes.js.map +1 -1
  111. package/dist-server/server/modules/browser-use/browser-use.service.js +1 -1
  112. package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
  113. package/dist-server/server/modules/cli/cli.service.js +5 -5
  114. package/dist-server/server/modules/cli/cli.service.js.map +1 -1
  115. package/dist-server/server/modules/cli/sandbox.service.js +7 -7
  116. package/dist-server/server/modules/cli/sandbox.service.js.map +1 -1
  117. package/dist-server/server/modules/commands/commands.routes.js +1 -1
  118. package/dist-server/server/modules/commands/commands.routes.js.map +1 -1
  119. package/dist-server/server/modules/commands/tests/commands.test.js +1 -1
  120. package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -1
  121. package/dist-server/server/modules/database/connection.js +1 -1
  122. package/dist-server/server/modules/database/connection.js.map +1 -1
  123. package/dist-server/server/modules/database/repositories/sessions.db.js +1 -1
  124. package/dist-server/server/modules/database/tests/projects.db.integration.test.js +3 -2
  125. package/dist-server/server/modules/database/tests/projects.db.integration.test.js.map +1 -1
  126. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +4 -3
  127. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
  128. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +2 -1
  129. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
  130. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
  131. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -1
  132. package/dist-server/server/modules/notifications/vapid-keys.service.js +1 -1
  133. package/dist-server/server/modules/notifications/vapid-keys.service.js.map +1 -1
  134. package/dist-server/server/modules/projects/tests/project-management.service.test.js +2 -1
  135. package/dist-server/server/modules/projects/tests/project-management.service.test.js.map +1 -1
  136. package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +2 -2
  137. package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -1
  138. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +1 -1
  139. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
  140. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +1 -1
  141. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
  142. package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js.map +1 -1
  143. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +1 -1
  144. package/dist-server/server/modules/providers/services/sessions.service.js +1 -1
  145. package/dist-server/server/modules/providers/tests/claude-auth.test.js +8 -0
  146. package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -1
  147. package/dist-server/server/modules/providers/tests/codex-sessions.test.js +1 -1
  148. package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
  149. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +2 -2
  150. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
  151. package/dist-server/server/modules/providers/tests/provider.routes.test.js +1 -1
  152. package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -1
  153. package/dist-server/server/modules/system/system.service.js +1 -1
  154. package/dist-server/server/modules/system/system.service.js.map +1 -1
  155. package/dist-server/server/modules/system/tests/system.service.test.js +1 -1
  156. package/dist-server/server/modules/system/tests/system.service.test.js.map +1 -1
  157. package/dist-server/server/modules/taskmaster/taskmaster.routes.js +4 -3
  158. package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -1
  159. package/dist-server/server/modules/websocket/services/shell-websocket.service.js +1 -1
  160. package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
  161. package/dist-server/server/modules/worktrees/services/worktree-list.service.js +1 -1
  162. package/dist-server/server/modules/worktrees/services/worktree-open.service.js +1 -1
  163. package/dist-server/server/modules/worktrees/services/worktree-remove.service.js +1 -1
  164. package/electron/cloud.js +3 -3
  165. package/electron/desktopNotifications.js +1 -1
  166. package/electron/desktopWindow.js +12 -12
  167. package/electron/launcher/index.html +1 -1
  168. package/electron/launcher/launcher.js +14 -14
  169. package/electron/localServer.js +5 -5
  170. package/electron/main.js +19 -19
  171. package/electron/serverInstaller.js +2 -2
  172. package/electron/viewHost.js +1 -1
  173. package/package.json +53 -37
  174. package/public/api-docs.html +2 -2
  175. package/scripts/build-client.mjs +30 -0
  176. package/scripts/generate-pwa-icons.ps1 +33 -0
  177. package/scripts/verify-pwa-build.mjs +37 -0
  178. package/server/index.ts +1 -1
  179. package/server/load-env.ts +4 -2
  180. package/server/modules/agent/agent.routes.ts +1 -1
  181. package/server/modules/browser-use/browser-use.service.ts +1 -1
  182. package/server/modules/cli/cli.service.ts +5 -5
  183. package/server/modules/cli/sandbox.service.ts +7 -7
  184. package/server/modules/commands/commands.routes.ts +1 -1
  185. package/server/modules/commands/tests/commands.test.ts +1 -1
  186. package/server/modules/database/connection.ts +2 -1
  187. package/server/modules/database/repositories/sessions.db.ts +1 -1
  188. package/server/modules/database/tests/projects.db.integration.test.ts +3 -2
  189. package/server/modules/database/tests/sessions-provider-mapping.test.ts +4 -3
  190. package/server/modules/database/tests/sessions.db.integration.test.ts +2 -1
  191. package/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
  192. package/server/modules/notifications/vapid-keys.service.ts +1 -1
  193. package/server/modules/projects/tests/project-management.service.test.ts +2 -1
  194. package/server/modules/providers/list/codex/codex-app-server.client.ts +2 -2
  195. package/server/modules/providers/list/codex/codex-models.provider.ts +1 -1
  196. package/server/modules/providers/list/cursor/cursor-models.provider.ts +1 -1
  197. package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +0 -1
  198. package/server/modules/providers/list/opencode/opencode-models.provider.ts +1 -1
  199. package/server/modules/providers/services/sessions.service.ts +1 -1
  200. package/server/modules/providers/tests/claude-auth.test.ts +7 -0
  201. package/server/modules/providers/tests/codex-sessions.test.ts +1 -1
  202. package/server/modules/providers/tests/opencode-sessions.test.ts +2 -2
  203. package/server/modules/providers/tests/provider.routes.test.ts +1 -1
  204. package/server/modules/system/system.service.ts +1 -1
  205. package/server/modules/system/tests/system.service.test.ts +1 -1
  206. package/server/modules/taskmaster/taskmaster.routes.ts +4 -3
  207. package/server/modules/websocket/services/shell-websocket.service.ts +1 -1
  208. package/server/modules/worktrees/services/worktree-list.service.ts +1 -1
  209. package/server/modules/worktrees/services/worktree-open.service.ts +1 -1
  210. package/server/modules/worktrees/services/worktree-remove.service.ts +1 -1
  211. package/server/shared/interfaces.ts +1 -1
  212. package/server/shared/types.ts +6 -6
  213. package/dist/assets/FileTree-DLE7Ioai.js +0 -127
  214. package/dist/assets/GitPanel-f8RMRa8D.js +0 -29
  215. package/dist/assets/PluginTabContent-DU1jjkXP.js +0 -1
  216. package/dist/assets/Shell-CN_2MRIM.js +0 -81
  217. package/dist/assets/Shell-qxJ8_QYu.css +0 -32
  218. package/dist/assets/StandaloneShell-D0avS8UE.js +0 -1
  219. package/dist/assets/TaskMasterPanel-Cpf1Q5Ph.js +0 -32
  220. package/dist/assets/abnfDiagram-N423BO3Z-p3aJIm4T.js +0 -1
  221. package/dist/assets/arc-CTeud6Fl.js +0 -1
  222. package/dist/assets/architectureDiagram-T3A2C74G-CG7kRCJU.js +0 -36
  223. package/dist/assets/c4Diagram-5PPSVZJV-RkzF0DJV.js +0 -10
  224. package/dist/assets/channel-BfQbarn9.js +0 -1
  225. package/dist/assets/chunk-5RXB4S5H-BTeYcgyb.js +0 -231
  226. package/dist/assets/chunk-GF5L2VYU-CKLZ3iVD.js +0 -206
  227. package/dist/assets/classDiagram-JCYQIIEL-Bpfe3kq7.js +0 -1
  228. package/dist/assets/classDiagram-v2-OCEON4UE-Bpfe3kq7.js +0 -1
  229. package/dist/assets/code-xml-CLpHzEOP.js +0 -6
  230. package/dist/assets/cose-bilkent-JH36ORCC-DlFcLXCB.js +0 -1
  231. package/dist/assets/cynefinDiagram-MW4NZA55-COgduz5P.js +0 -62
  232. package/dist/assets/cytoscape.esm-C10L9Icf.js +0 -331
  233. package/dist/assets/dagre-VZM6K2ZE-Bbb-siGp.js +0 -4
  234. package/dist/assets/diagram-LBJQPF4R-ErMC9yaa.js +0 -24
  235. package/dist/assets/diagram-Q27KOJAE-Dt_-C7hV.js +0 -24
  236. package/dist/assets/diagram-UB23O5K3-BJ1DnRAF.js +0 -41
  237. package/dist/assets/ebnfDiagram-BXEA7PRR-CE1YaQ9s.js +0 -1
  238. package/dist/assets/erDiagram-JOGREHBK-Bqk7N9aY.js +0 -85
  239. package/dist/assets/ganttDiagram-PKOTCBZU-CWYAUeYN.js +0 -292
  240. package/dist/assets/gitGraphDiagram-DS77QQ5N-tdEcEIM6.js +0 -106
  241. package/dist/assets/graph-Cx-EqisW.js +0 -1
  242. package/dist/assets/index-B-sTfSZq.js +0 -1
  243. package/dist/assets/index-B_FDMWar.js +0 -1174
  244. package/dist/assets/index-CWJtg2pR.js +0 -11
  245. package/dist/assets/index-t1w8KNxn.css +0 -1
  246. package/dist/assets/infoDiagram-6WML65LV-A3IqRUnO.js +0 -2
  247. package/dist/assets/ishikawaDiagram-WSZJBQD7-B2uL6bkK.js +0 -70
  248. package/dist/assets/journeyDiagram-NVQOT4AX-D9JB-hRW.js +0 -139
  249. package/dist/assets/map-CV9uif0g.js +0 -1
  250. package/dist/assets/mermaid.core-CQ698HNn.js +0 -312
  251. package/dist/assets/pegDiagram-VL7TDLO6-CO6vP4n9.js +0 -1
  252. package/dist/assets/quadrantDiagram-CIZ2JOQS-DgNxRz6t.js +0 -7
  253. package/dist/assets/railroadDiagram-AXF67PYL-DKz9UqA9.js +0 -1
  254. package/dist/assets/requirementDiagram-LRYGKXZP-L84XyGgV.js +0 -84
  255. package/dist/assets/sankeyDiagram-W5VNT64P-CQqWbJ3j.js +0 -40
  256. package/dist/assets/sequenceDiagram-SI44F4Z6--tnzS2tb.js +0 -162
  257. package/dist/assets/sizeCapture-X5ZJPWSS-DujwEOtm.js +0 -1
  258. package/dist/assets/stateDiagram-OKZ733FA-BK3TcZY2.js +0 -1
  259. package/dist/assets/stateDiagram-v2-UEYNNEHI-_medyomK.js +0 -1
  260. package/dist/assets/swimlanes-SLNWSIFB-naX-Uv1B.js +0 -2
  261. package/dist/assets/swimlanesDiagram-ULZ7WXOC-DstIv3TC.js +0 -8
  262. package/dist/assets/timeline-definition-Z64GVDOM-C-vP_ddU.js +0 -120
  263. package/dist/assets/vendor-react-whEHfigN.js +0 -59
  264. package/dist/assets/vennDiagram-T6HMQDX7-DN-I7o-7.js +0 -34
  265. package/dist/assets/xychartDiagram-ELKLHX3M-DE6OxW_p.js +0 -7
  266. package/dist/manifest.json +0 -61
@@ -106,7 +106,7 @@ function readCommandError(error: unknown): string {
106
106
 
107
107
  function showSandboxHelp(output: CliOutput): void {
108
108
  output.log(`
109
- ${terminalTextStyles.bright('CloudCLI Sandbox')} — Run CloudCLI inside Docker Sandboxes
109
+ ${terminalTextStyles.bright('WindCli Sandbox')} — Run WindCli inside Docker Sandboxes
110
110
 
111
111
  Usage:
112
112
  wacli sandbox <workspace> Create and start a sandbox
@@ -118,7 +118,7 @@ Subcommands:
118
118
  ${terminalTextStyles.bright('start')} Restart a stopped sandbox and re-launch the web UI
119
119
  ${terminalTextStyles.bright('stop')} Stop a sandbox (preserves state)
120
120
  ${terminalTextStyles.bright('rm')} Remove a sandbox
121
- ${terminalTextStyles.bright('logs')} Show CloudCLI server logs
121
+ ${terminalTextStyles.bright('logs')} Show WindCli server logs
122
122
  ${terminalTextStyles.bright('help')} Show this help
123
123
 
124
124
  Options:
@@ -279,7 +279,7 @@ export function createSandboxCommandService(
279
279
  );
280
280
  dependencies.spawnDetachedSandbox(['run', sandboxName]);
281
281
  await dependencies.wait(5_000);
282
- dependencies.output.log(`${terminalTextStyles.info('▶')} Launching CloudCLI web server...`);
282
+ dependencies.output.log(`${terminalTextStyles.info('▶')} Launching WindCli web server...`);
283
283
  dependencies.runSandboxCommand([
284
284
  'exec',
285
285
  sandboxName,
@@ -290,7 +290,7 @@ export function createSandboxCommandService(
290
290
  if (!publishSandboxPort(options, dependencies)) {
291
291
  return 1;
292
292
  }
293
- dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('CloudCLI is ready!')}`);
293
+ dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('WindCli is ready!')}`);
294
294
  dependencies.output.log(` ${terminalTextStyles.info('→')} ${terminalTextStyles.bright(`http://localhost:${options.port}`)}\n`);
295
295
  return 0;
296
296
  }
@@ -330,7 +330,7 @@ export function createSandboxCommandService(
330
330
  // proceed and let sbx report a credential error itself.
331
331
  }
332
332
 
333
- dependencies.output.log(`\n${terminalTextStyles.bright('CloudCLI Sandbox')}`);
333
+ dependencies.output.log(`\n${terminalTextStyles.bright('WindCli Sandbox')}`);
334
334
  dependencies.output.log(terminalTextStyles.dim('─'.repeat(50)));
335
335
  dependencies.output.log(` Agent: ${terminalTextStyles.info(options.agent)} ${terminalTextStyles.dim(`(${secret} credentials)`)}`);
336
336
  dependencies.output.log(` Workspace: ${terminalTextStyles.dim(workspace)}`);
@@ -381,7 +381,7 @@ export function createSandboxCommandService(
381
381
  }
382
382
  }
383
383
 
384
- dependencies.output.log(`${terminalTextStyles.info('▶')} Launching CloudCLI web server...`);
384
+ dependencies.output.log(`${terminalTextStyles.info('▶')} Launching WindCli web server...`);
385
385
  dependencies.runSandboxCommand([
386
386
  'exec',
387
387
  sandboxName,
@@ -393,7 +393,7 @@ export function createSandboxCommandService(
393
393
  return 1;
394
394
  }
395
395
 
396
- dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('CloudCLI is ready!')}`);
396
+ dependencies.output.log(`\n${terminalTextStyles.ok('✔')} ${terminalTextStyles.bright('WindCli is ready!')}`);
397
397
  dependencies.output.log(` ${terminalTextStyles.info('→')} Open ${terminalTextStyles.bright(`http://localhost:${options.port}`)}`);
398
398
  dependencies.output.log(`\n${terminalTextStyles.dim(' Manage with:')}`);
399
399
  dependencies.output.log(` ${terminalTextStyles.dim('$')} sbx ls`);
@@ -249,7 +249,7 @@ const builtInHandlers = {
249
249
  const helpCommands = isCodex
250
250
  ? [...builtInCommands, ...codexNativeCommands]
251
251
  : builtInCommands;
252
- const helpText = `# ${isCodex ? "Codex and CloudCLI" : "CloudCLI"} Commands
252
+ const helpText = `# ${isCodex ? "Codex and WindCli" : "WindCli"} Commands
253
253
 
254
254
  ## Built-in Commands
255
255
 
@@ -165,7 +165,7 @@ test('Codex help includes provider-native commands and model aliases use the mod
165
165
  const model = await executeCommand('/model', { provider: 'codex' });
166
166
  const helpData = help.data as { content: string };
167
167
 
168
- assert.match(helpData.content, /Codex and CloudCLI Commands/);
168
+ assert.match(helpData.content, /Codex and WindCli Commands/);
169
169
  assert.match(helpData.content, /\/plan/);
170
170
  assert.equal(model.action, 'models');
171
171
  });
@@ -10,11 +10,12 @@
10
10
  * `getConnection()` to obtain the shared singleton.
11
11
  */
12
12
 
13
- import Database from 'better-sqlite3';
14
13
  import fs from 'fs';
15
14
  import path from 'path';
16
15
  import { fileURLToPath } from 'url';
17
16
 
17
+ import Database from 'better-sqlite3';
18
+
18
19
  import { APP_CONFIG_TABLE_SCHEMA_SQL } from '@/modules/database/schema.js';
19
20
 
20
21
  const __filename = fileURLToPath(import.meta.url);
@@ -168,7 +168,7 @@ export const sessionsDb = {
168
168
  * `session_id` is the stable app-facing id, while `provider_session_id`
169
169
  * stays NULL until the provider runtime announces its own id and
170
170
  * `assignProviderSessionId` records the mapping. `customName` is derived
171
- * from the first visible CloudCLI message by the sessions service.
171
+ * from the first visible WindCli message by the sessions service.
172
172
  */
173
173
  createAppSession(
174
174
  sessionId: string,
@@ -1,5 +1,5 @@
1
1
  import assert from 'node:assert/strict';
2
- import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
3
3
  import { tmpdir } from 'node:os';
4
4
  import path from 'node:path';
5
5
  import test from 'node:test';
@@ -15,6 +15,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
15
15
 
16
16
  closeConnection();
17
17
  process.env.DATABASE_PATH = databasePath;
18
+ await writeFile(databasePath, '');
18
19
  await initializeDatabase();
19
20
 
20
21
  try {
@@ -36,7 +37,7 @@ test('projectsDb.createProjectPath returns created for fresh paths', async () =>
36
37
 
37
38
  assert.equal(created.outcome, 'created');
38
39
  assert.ok(created.project);
39
- assert.equal(created.project?.project_path, '/workspace/new-project');
40
+ assert.equal(created.project?.project_path, path.normalize('/workspace/new-project'));
40
41
  assert.equal(created.project?.isArchived, 0);
41
42
  });
42
43
  });
@@ -1,5 +1,5 @@
1
1
  import assert from 'node:assert/strict';
2
- import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
3
3
  import { tmpdir } from 'node:os';
4
4
  import path from 'node:path';
5
5
  import test from 'node:test';
@@ -15,6 +15,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
15
15
 
16
16
  closeConnection();
17
17
  process.env.DATABASE_PATH = databasePath;
18
+ await writeFile(databasePath, '');
18
19
  await initializeDatabase();
19
20
 
20
21
  try {
@@ -45,7 +46,7 @@ test('disk-discovered sessions are keyed by the provider id for both columns', a
45
46
 
46
47
  test('app sessions get the provider id assigned without creating a duplicate row', async () => {
47
48
  await withIsolatedDatabase(() => {
48
- sessionsDb.createAppSession('app-id-1', 'claude', '/workspace/demo', 'Initial CloudCLI message');
49
+ sessionsDb.createAppSession('app-id-1', 'claude', '/workspace/demo', 'Initial WindCli message');
49
50
  sessionsDb.assignProviderSessionId('app-id-1', 'provider-xyz');
50
51
 
51
52
  // A later synchronizer pass that discovers the transcript on disk must
@@ -66,7 +67,7 @@ test('app sessions get the provider id assigned without creating a duplicate row
66
67
  const row = sessionsDb.getSessionById('app-id-1');
67
68
  assert.equal(row?.provider_session_id, 'provider-xyz');
68
69
  assert.equal(row?.jsonl_path, '/fake/path/provider-xyz.jsonl');
69
- assert.equal(row?.custom_name, 'Initial CloudCLI message');
70
+ assert.equal(row?.custom_name, 'Initial WindCli message');
70
71
  });
71
72
  });
72
73
 
@@ -1,5 +1,5 @@
1
1
  import assert from 'node:assert/strict';
2
- import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
3
3
  import { tmpdir } from 'node:os';
4
4
  import path from 'node:path';
5
5
  import test from 'node:test';
@@ -16,6 +16,7 @@ async function withIsolatedDatabase(runTest: () => void | Promise<void>): Promis
16
16
 
17
17
  closeConnection();
18
18
  process.env.DATABASE_PATH = databasePath;
19
+ await writeFile(databasePath, '');
19
20
  await initializeDatabase();
20
21
 
21
22
  try {
@@ -165,7 +165,7 @@ function buildNotificationPayload(event) {
165
165
  const message = CODE_MAP[normalizedEvent.code] || 'You have a new notification';
166
166
 
167
167
  return {
168
- title: sessionName || 'CloudCLI',
168
+ title: sessionName || 'WindCli',
169
169
  body: `${providerLabel}: ${message}`,
170
170
  data: {
171
171
  sessionId: normalizedEvent.sessionId || null,
@@ -28,7 +28,7 @@ function getPublicKey() {
28
28
  function configureWebPush() {
29
29
  const keys = ensureVapidKeys();
30
30
  webPush.setVapidDetails(
31
- 'mailto:noreply@claudecodeui.local',
31
+ 'mailto:noreply@windcli.local',
32
32
  keys.publicKey,
33
33
  keys.privateKey
34
34
  );
@@ -1,4 +1,5 @@
1
1
  import assert from 'node:assert/strict';
2
+ import path from 'node:path';
2
3
  import test from 'node:test';
3
4
 
4
5
  import { createProject } from '@/modules/projects/services/project-management.service.js';
@@ -62,7 +63,7 @@ test('createProject throws conflict when active project path already exists', as
62
63
  assert.ok(error instanceof AppError);
63
64
  assert.equal(error.code, 'PROJECT_ALREADY_EXISTS');
64
65
  assert.equal(error.statusCode, 409);
65
- assert.equal(error.details, 'Project path already exists: /workspace/my-project');
66
+ assert.equal(error.details, 'Project path already exists: ' + path.normalize('/workspace/my-project'));
66
67
  return true;
67
68
  },
68
69
  );
@@ -78,7 +78,7 @@ export class CodexAppServerClient {
78
78
  await client.request('initialize', {
79
79
  clientInfo: {
80
80
  name: 'cloudcli',
81
- title: 'CloudCLI',
81
+ title: 'WindCli',
82
82
  version: '1.0.0',
83
83
  },
84
84
  capabilities: {
@@ -187,7 +187,7 @@ export class CodexAppServerClient {
187
187
  id: message.id,
188
188
  error: {
189
189
  code: -32601,
190
- message: `CloudCLI does not handle app-server request ${message.method}`,
190
+ message: `WindCli does not handle app-server request ${message.method}`,
191
191
  },
192
192
  });
193
193
  return;
@@ -15,7 +15,7 @@ import {
15
15
  readOptionalString,
16
16
  } from '@/shared/utils.js';
17
17
 
18
- /** Curated Codex catalog shipped as immutable CloudCLI defaults. */
18
+ /** Curated Codex catalog shipped as immutable WindCli defaults. */
19
19
  export const CODEX_PREDEFINED_MODELS: ProviderModelsDefinition = {
20
20
  OPTIONS: [
21
21
  {
@@ -12,7 +12,7 @@ import {
12
12
  sanitizeLeafDirectoryName,
13
13
  } from '@/shared/utils.js';
14
14
 
15
- /** Curated Cursor catalog shipped as immutable CloudCLI defaults. */
15
+ /** Curated Cursor catalog shipped as immutable WindCli defaults. */
16
16
  export const CURSOR_PREDEFINED_MODELS: ProviderModelsDefinition = {
17
17
  OPTIONS: [
18
18
  { value: 'auto', label: 'Auto', description: 'Let Cursor choose the model.' },
@@ -1,4 +1,3 @@
1
- import crypto from 'node:crypto';
2
1
  import fs from 'node:fs';
3
2
  import fsp from 'node:fs/promises';
4
3
  import os from 'node:os';
@@ -14,7 +14,7 @@ import {
14
14
  } from '@/shared/utils.js';
15
15
 
16
16
  /**
17
- * Curated OpenCode catalog shipped as immutable CloudCLI defaults.
17
+ * Curated OpenCode catalog shipped as immutable WindCli defaults.
18
18
  *
19
19
  * OpenCode routes by `<providerID>/<modelID>`, so this list mirrors the
20
20
  * providers `opencode models --verbose` reports: the OpenCode Zen gateway plus
@@ -208,7 +208,7 @@ export const sessionsService = {
208
208
  * chat, navigates to the returned id immediately, and the id never changes
209
209
  * for the lifetime of the conversation. The provider-native id is mapped to
210
210
  * this row later, when the provider runtime announces it mid-run. Its title
211
- * comes directly from the first visible CloudCLI message and is limited to
211
+ * comes directly from the first visible WindCli message and is limited to
212
212
  * four whole words before any provider-owned storage exists.
213
213
  */
214
214
  createAppSession(
@@ -52,7 +52,9 @@ const withEnv = async (
52
52
  const withTempHome = async (fn: (homeDir: string) => Promise<void>) => {
53
53
  const homeDir = await mkdtemp(path.join(os.tmpdir(), 'claude-auth-test-'));
54
54
  const originalHome = process.env.HOME;
55
+ const originalUserProfile = process.env.USERPROFILE;
55
56
  process.env.HOME = homeDir;
57
+ process.env.USERPROFILE = homeDir;
56
58
  try {
57
59
  await fn(homeDir);
58
60
  } finally {
@@ -61,6 +63,11 @@ const withTempHome = async (fn: (homeDir: string) => Promise<void>) => {
61
63
  } else {
62
64
  process.env.HOME = originalHome;
63
65
  }
66
+ if (originalUserProfile === undefined) {
67
+ delete process.env.USERPROFILE;
68
+ } else {
69
+ process.env.USERPROFILE = originalUserProfile;
70
+ }
64
71
  await rm(homeDir, { recursive: true, force: true });
65
72
  }
66
73
  };
@@ -64,7 +64,7 @@ const writeCodexTranscript = async (
64
64
  return filePath;
65
65
  };
66
66
 
67
- test('Codex synchronizer preserves the title assigned when CloudCLI creates a session', { concurrency: false }, async () => {
67
+ test('Codex synchronizer preserves the title assigned when WindCli creates a session', { concurrency: false }, async () => {
68
68
  const tempRoot = await mkdtemp(path.join(os.tmpdir(), 'codex-session-sync-app-'));
69
69
  const workspacePath = path.join(tempRoot, 'workspace');
70
70
  await mkdir(workspacePath, { recursive: true });
@@ -470,14 +470,14 @@ const seedOpenCodeSession = async (
470
470
  }
471
471
  };
472
472
 
473
- test('OpenCode synchronizer preserves the title assigned when CloudCLI creates a session', { concurrency: false }, async () => {
473
+ test('OpenCode synchronizer preserves the title assigned when WindCli creates a session', { concurrency: false }, async () => {
474
474
  const tempRoot = await mkdtemp(path.join(os.tmpdir(), 'opencode-session-sync-app-'));
475
475
  const workspacePath = path.join(tempRoot, 'workspace');
476
476
  await mkdir(workspacePath, { recursive: true });
477
477
  const restoreHomeDir = patchHomeDir(tempRoot);
478
478
 
479
479
  try {
480
- // Both provider-owned values differ from the CloudCLI title so either one
480
+ // Both provider-owned values differ from the WindCli title so either one
481
481
  // leaking through would change the assertion below.
482
482
  await seedOpenCodeSession(tempRoot, workspacePath, {
483
483
  sessionId: 'oc-app-1',
@@ -54,7 +54,7 @@ async function withProviderServer(
54
54
  }
55
55
  }
56
56
 
57
- test('session creation route names a CloudCLI session from the initial message', async () => {
57
+ test('session creation route names a WindCli session from the initial message', async () => {
58
58
  await withProviderServer(async (baseUrl, workspacePath) => {
59
59
  const response = await fetch(`${baseUrl}/api/providers/sessions`, {
60
60
  method: 'POST',
@@ -33,7 +33,7 @@ export function createSystemUpdateService(dependencies: SystemUpdateDependencies
33
33
  ? 'npm run update:platform'
34
34
  : dependencies.installMode === 'git'
35
35
  ? 'git checkout main && git pull && npm install'
36
- : 'npm install -g @cloudcli-ai/cloudcli@latest';
36
+ : 'npm install -g wind-agent-cli@latest';
37
37
  const workingDirectory = dependencies.isPlatform || dependencies.installMode === 'git'
38
38
  ? dependencies.appRoot
39
39
  : dependencies.homeDirectory;
@@ -59,7 +59,7 @@ test('global npm installations update from the user home directory', async () =>
59
59
  const result = await service.updateSystem();
60
60
 
61
61
  assert.deepEqual(calls, [[
62
- 'npm install -g @cloudcli-ai/cloudcli@latest',
62
+ 'npm install -g wind-agent-cli@latest',
63
63
  '/home/cloudcli',
64
64
  dependencies.environment,
65
65
  ]]);
@@ -102,9 +102,10 @@ export function createTaskmasterRouter(dependencies: TaskmasterRouterDependencie
102
102
  async function checkTaskMasterInstallation() {
103
103
  return new Promise((resolve) => {
104
104
  // Check if task-master command is available
105
- const child = spawn('which', ['task-master'], {
105
+ const locator = process.platform === 'win32' ? 'where.exe' : 'which';
106
+ const child = spawn(locator, ['task-master'], {
106
107
  stdio: ['ignore', 'pipe', 'pipe'],
107
- shell: true
108
+ shell: false
108
109
  });
109
110
 
110
111
  let output = '';
@@ -123,7 +124,7 @@ export function createTaskmasterRouter(dependencies: TaskmasterRouterDependencie
123
124
  // TaskMaster is installed, get version
124
125
  const versionChild = spawn('task-master', ['--version'], {
125
126
  stdio: ['ignore', 'pipe', 'pipe'],
126
- shell: true
127
+ shell: false
127
128
  });
128
129
 
129
130
  let versionOutput = '';
@@ -315,7 +315,7 @@ function buildShellEnvironment(
315
315
 
316
316
  if (readString(message.shellMode) === 'herdr') {
317
317
  // The web terminal is a new Herdr client, not a pane nested inside the
318
- // Herdr pane that may have launched CloudCLI. Keep HERDR_SOCKET_PATH so it
318
+ // Herdr pane that may have launched WindCli. Keep HERDR_SOCKET_PATH so it
319
319
  // attaches to the running session, but remove inherited pane identity.
320
320
  HERDR_PANE_ENVIRONMENT_KEYS.forEach((key) => delete environment[key]);
321
321
  }
@@ -89,7 +89,7 @@ async function readLastCommit(
89
89
  /**
90
90
  * Builds the full Worktrees panel payload for the repository containing
91
91
  * `projectPath`: every worktree with dirty count, ahead/behind vs the base
92
- * branch, last commit info, and the linked CloudCLI project (when registered).
92
+ * branch, last commit info, and the linked WindCli project (when registered).
93
93
  */
94
94
  export async function listWorktrees(
95
95
  input: ListWorktreesInput,
@@ -26,7 +26,7 @@ function mapRowToProjectView(row: ProjectRepositoryRow): WorktreeProjectView {
26
26
  }
27
27
 
28
28
  /**
29
- * Ensures a CloudCLI project exists (and is active) for a worktree directory
29
+ * Ensures a WindCli project exists (and is active) for a worktree directory
30
30
  * and returns it, so the caller can switch the UI into that worktree.
31
31
  *
32
32
  * The path is only accepted when it is a registered worktree of the repository
@@ -13,7 +13,7 @@ import {
13
13
 
14
14
  /**
15
15
  * Removes a linked worktree (never the main one), optionally deletes its
16
- * branch, and archives the CloudCLI project registered for the directory so it
16
+ * branch, and archives the WindCli project registered for the directory so it
17
17
  * disappears from the sidebar while its chat history stays recoverable.
18
18
  */
19
19
  export async function removeWorktree(
@@ -60,7 +60,7 @@ export interface IProvider {
60
60
  /**
61
61
  * Model catalog contract for one provider.
62
62
  *
63
- * Implementations supply CloudCLI's curated predefined models and can inspect
63
+ * Implementations supply WindCli's curated predefined models and can inspect
64
64
  * provider-native session state. The Providers service merges these immutable
65
65
  * source-controlled definitions with user-created SQLite rows at read time.
66
66
  */
@@ -77,7 +77,7 @@ export type ProviderModelOption = {
77
77
  description?: string;
78
78
  /** Stable SQLite row id used only by model-management actions. */
79
79
  recordId?: number;
80
- /** True for user-created rows; false for immutable CloudCLI defaults. */
80
+ /** True for user-created rows; false for immutable WindCli defaults. */
81
81
  isCustom?: boolean;
82
82
  effort?: {
83
83
  default?: string;
@@ -302,7 +302,7 @@ export type ProviderRuntimeWriter = {
302
302
  *
303
303
  * The Codex JSON-RPC client emits this shape to its runtime adapter. Method and
304
304
  * parameter validation stays in the adapter because the protocol can add new
305
- * notification variants independently of CloudCLI releases.
305
+ * notification variants independently of WindCli releases.
306
306
  */
307
307
  export type CodexAppServerNotification = {
308
308
  method: string;
@@ -313,7 +313,7 @@ export type CodexAppServerNotification = {
313
313
  * Server-initiated Codex JSON-RPC request that may require a UI response.
314
314
  *
315
315
  * The Codex client forwards approval-capable requests to the runtime while it
316
- * rejects request methods that CloudCLI does not implement.
316
+ * rejects request methods that WindCli does not implement.
317
317
  */
318
318
  export type CodexAppServerRequest = {
319
319
  id: number;
@@ -723,7 +723,7 @@ export type WorktreePorcelainEntry = {
723
723
  *
724
724
  * Extends the porcelain entry with everything the Worktrees panel renders:
725
725
  * dirty-file count, ahead/behind relative to the base branch (the branch
726
- * checked out in the main worktree), last-commit metadata, and the CloudCLI
726
+ * checked out in the main worktree), last-commit metadata, and the WindCli
727
727
  * project row linked to the worktree directory (if one was registered).
728
728
  */
729
729
  export type WorktreeDescriptor = {
@@ -802,7 +802,7 @@ export type CreateAndOpenWorktreeResult = CreateWorktreeResult & {
802
802
  };
803
803
 
804
804
  /**
805
- * Input accepted when registering an existing worktree as a CloudCLI project.
805
+ * Input accepted when registering an existing worktree as a WindCli project.
806
806
  *
807
807
  * The service verifies that `worktreePath` belongs to the repository containing
808
808
  * `projectPath` before it creates or restores any project record.
@@ -813,7 +813,7 @@ export type OpenWorktreeInput = {
813
813
  };
814
814
 
815
815
  /**
816
- * Project view returned after a worktree is opened in CloudCLI.
816
+ * Project view returned after a worktree is opened in WindCli.
817
817
  *
818
818
  * This deliberately mirrors the project-selection payload used by the Projects
819
819
  * module so the frontend can switch to the worktree without another lookup.