aicodeman 1.33.3 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +3 -0
  2. package/dist/config/cli-registry/schema.d.ts +18 -0
  3. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  4. package/dist/config/cli-registry/schema.js +27 -0
  5. package/dist/config/cli-registry/schema.js.map +1 -1
  6. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  7. package/dist/config/cli-registry/stock.js +35 -0
  8. package/dist/config/cli-registry/stock.js.map +1 -1
  9. package/dist/config/cli-registry/types.d.ts +33 -0
  10. package/dist/config/cli-registry/types.d.ts.map +1 -1
  11. package/dist/config/dependency-registry.d.ts +7 -0
  12. package/dist/config/dependency-registry.d.ts.map +1 -1
  13. package/dist/config/dependency-registry.js +15 -0
  14. package/dist/config/dependency-registry.js.map +1 -1
  15. package/dist/config/path-probe.d.ts +37 -0
  16. package/dist/config/path-probe.d.ts.map +1 -0
  17. package/dist/config/path-probe.js +43 -0
  18. package/dist/config/path-probe.js.map +1 -0
  19. package/dist/git-workspace-status.d.ts +220 -0
  20. package/dist/git-workspace-status.d.ts.map +1 -0
  21. package/dist/git-workspace-status.js +606 -0
  22. package/dist/git-workspace-status.js.map +1 -0
  23. package/dist/hooks-config.d.ts.map +1 -1
  24. package/dist/hooks-config.js +88 -14
  25. package/dist/hooks-config.js.map +1 -1
  26. package/dist/mcp-sync.d.ts +105 -0
  27. package/dist/mcp-sync.d.ts.map +1 -0
  28. package/dist/mcp-sync.js +619 -0
  29. package/dist/mcp-sync.js.map +1 -0
  30. package/dist/mux-interface.d.ts +4 -0
  31. package/dist/mux-interface.d.ts.map +1 -1
  32. package/dist/session-cli-builder.d.ts +20 -1
  33. package/dist/session-cli-builder.d.ts.map +1 -1
  34. package/dist/session-cli-builder.js +33 -3
  35. package/dist/session-cli-builder.js.map +1 -1
  36. package/dist/session-cli-registry-bridge.d.ts +2 -0
  37. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  38. package/dist/session-cli-registry-bridge.js +15 -8
  39. package/dist/session-cli-registry-bridge.js.map +1 -1
  40. package/dist/session.d.ts +19 -0
  41. package/dist/session.d.ts.map +1 -1
  42. package/dist/session.js +29 -2
  43. package/dist/session.js.map +1 -1
  44. package/dist/tmux-manager.d.ts +2 -0
  45. package/dist/tmux-manager.d.ts.map +1 -1
  46. package/dist/tmux-manager.js +4 -2
  47. package/dist/tmux-manager.js.map +1 -1
  48. package/dist/types/api.d.ts +7 -0
  49. package/dist/types/api.d.ts.map +1 -1
  50. package/dist/types/api.js.map +1 -1
  51. package/dist/types/index.d.ts +3 -1
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/index.js +3 -1
  54. package/dist/types/index.js.map +1 -1
  55. package/dist/types/mcp-sync.d.ts +40 -0
  56. package/dist/types/mcp-sync.d.ts.map +1 -0
  57. package/dist/types/mcp-sync.js +8 -0
  58. package/dist/types/mcp-sync.js.map +1 -0
  59. package/dist/types/push.d.ts +37 -2
  60. package/dist/types/push.d.ts.map +1 -1
  61. package/dist/types/push.js +10 -3
  62. package/dist/types/push.js.map +1 -1
  63. package/dist/types/session.d.ts +34 -1
  64. package/dist/types/session.d.ts.map +1 -1
  65. package/dist/types/session.js +25 -1
  66. package/dist/types/session.js.map +1 -1
  67. package/dist/utils/bounded-path-probe.d.ts +99 -0
  68. package/dist/utils/bounded-path-probe.d.ts.map +1 -0
  69. package/dist/utils/bounded-path-probe.js +228 -0
  70. package/dist/utils/bounded-path-probe.js.map +1 -0
  71. package/dist/utils/cli-executable-resolver.d.ts +2 -0
  72. package/dist/utils/cli-executable-resolver.d.ts.map +1 -1
  73. package/dist/utils/cli-executable-resolver.js +2 -1
  74. package/dist/utils/cli-executable-resolver.js.map +1 -1
  75. package/dist/utils/dependency-checker.d.ts +2 -0
  76. package/dist/utils/dependency-checker.d.ts.map +1 -1
  77. package/dist/utils/dependency-checker.js +37 -9
  78. package/dist/utils/dependency-checker.js.map +1 -1
  79. package/dist/utils/index.d.ts +2 -0
  80. package/dist/utils/index.d.ts.map +1 -1
  81. package/dist/utils/index.js +1 -0
  82. package/dist/utils/index.js.map +1 -1
  83. package/dist/web/case-path.d.ts +58 -0
  84. package/dist/web/case-path.d.ts.map +1 -0
  85. package/dist/web/case-path.js +182 -0
  86. package/dist/web/case-path.js.map +1 -0
  87. package/dist/web/public/admin-ui.js.gz +0 -0
  88. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  89. package/dist/web/public/app.b9516c7b.js +43 -0
  90. package/dist/web/public/app.b9516c7b.js.br +0 -0
  91. package/dist/web/public/app.b9516c7b.js.gz +0 -0
  92. package/dist/web/public/approvals-ui.js.gz +0 -0
  93. package/dist/web/public/constants.d95fade9.js.gz +0 -0
  94. package/dist/web/public/cron-ui.js.gz +0 -0
  95. package/dist/web/public/entrance-animations.js.gz +0 -0
  96. package/dist/web/public/git-status-ui.js +673 -0
  97. package/dist/web/public/git-status-ui.js.br +0 -0
  98. package/dist/web/public/git-status-ui.js.gz +0 -0
  99. package/dist/web/public/home-sessions.js.gz +0 -0
  100. package/dist/web/public/host-wake-ui.js.gz +0 -0
  101. package/dist/web/public/i18n.52f5b7cc.js +1 -0
  102. package/dist/web/public/i18n.52f5b7cc.js.br +0 -0
  103. package/dist/web/public/i18n.52f5b7cc.js.gz +0 -0
  104. package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
  105. package/dist/web/public/index.html +190 -15
  106. package/dist/web/public/index.html.br +0 -0
  107. package/dist/web/public/index.html.gz +0 -0
  108. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  109. package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
  110. package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
  111. package/dist/web/public/mobile-ime-preview.2dbaf262.js +1 -0
  112. package/dist/web/public/mobile-ime-preview.2dbaf262.js.br +0 -0
  113. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  114. package/dist/web/public/mobile-overview.js.gz +0 -0
  115. package/dist/web/public/mobile.1aa4952d.css.gz +0 -0
  116. package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
  117. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  118. package/dist/web/public/panels-ui.6a5898d9.js.gz +0 -0
  119. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  120. package/dist/web/public/{ralph-wizard.13a1831e.js → ralph-wizard.b6c0dd19.js} +2 -0
  121. package/dist/web/public/ralph-wizard.b6c0dd19.js.br +0 -0
  122. package/dist/web/public/{ralph-wizard.13a1831e.js.gz → ralph-wizard.b6c0dd19.js.gz} +0 -0
  123. package/dist/web/public/readmymind-ui.js.gz +0 -0
  124. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  125. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  126. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  127. package/dist/web/public/session-lineage.js +27 -11
  128. package/dist/web/public/session-lineage.js.br +0 -0
  129. package/dist/web/public/session-lineage.js.gz +0 -0
  130. package/dist/web/public/session-ui.6bddf916.js +89 -0
  131. package/dist/web/public/session-ui.6bddf916.js.br +0 -0
  132. package/dist/web/public/session-ui.6bddf916.js.gz +0 -0
  133. package/dist/web/public/settings-ui.6e798b7b.js +97 -0
  134. package/dist/web/public/settings-ui.6e798b7b.js.br +0 -0
  135. package/dist/web/public/settings-ui.6e798b7b.js.gz +0 -0
  136. package/dist/web/public/styles.2d175c60.css +1 -0
  137. package/dist/web/public/styles.2d175c60.css.br +0 -0
  138. package/dist/web/public/styles.2d175c60.css.gz +0 -0
  139. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  140. package/dist/web/public/sw.js +2 -2
  141. package/dist/web/public/sw.js.br +0 -0
  142. package/dist/web/public/sw.js.gz +0 -0
  143. package/dist/web/public/tab-layout-browser.065fcba4.js +1 -0
  144. package/dist/web/public/tab-layout-browser.065fcba4.js.br +0 -0
  145. package/dist/web/public/tab-layout-browser.065fcba4.js.gz +0 -0
  146. package/dist/web/public/{tab-rail-resize.dcdc5772.js → tab-rail-resize.94cd59f0.js} +1 -1
  147. package/dist/web/public/tab-rail-resize.94cd59f0.js.br +0 -0
  148. package/dist/web/public/tab-rail-resize.94cd59f0.js.gz +0 -0
  149. package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
  150. package/dist/web/public/terminal-split.js +82 -34
  151. package/dist/web/public/terminal-split.js.br +0 -0
  152. package/dist/web/public/terminal-split.js.gz +0 -0
  153. package/dist/web/public/terminal-ui.a4535311.js +2 -0
  154. package/dist/web/public/terminal-ui.a4535311.js.br +0 -0
  155. package/dist/web/public/terminal-ui.a4535311.js.gz +0 -0
  156. package/dist/web/public/ultracode-panel.js.gz +0 -0
  157. package/dist/web/public/ultracode-windows.js.gz +0 -0
  158. package/dist/web/public/upload.html.gz +0 -0
  159. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  160. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  161. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  162. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  163. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  164. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  165. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js → xterm-predictive-echo.ae5e3d5d.js} +1 -1
  166. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.br → xterm-predictive-echo.ae5e3d5d.js.br} +0 -0
  167. package/dist/web/public/vendor/{xterm-predictive-echo.bd6882b8.js.gz → xterm-predictive-echo.ae5e3d5d.js.gz} +0 -0
  168. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js +4 -0
  169. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.br +0 -0
  170. package/dist/web/public/vendor/xterm-zerolag-input.bbb5f84c.js.gz +0 -0
  171. package/dist/web/public/vendor/xterm.css.gz +0 -0
  172. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  173. package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
  174. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  175. package/dist/web/public/webview-tabs.js +21 -10
  176. package/dist/web/public/webview-tabs.js.br +0 -0
  177. package/dist/web/public/webview-tabs.js.gz +0 -0
  178. package/dist/web/reboot-restore-registry.d.ts +2 -1
  179. package/dist/web/reboot-restore-registry.d.ts.map +1 -1
  180. package/dist/web/reboot-restore-registry.js +2 -1
  181. package/dist/web/reboot-restore-registry.js.map +1 -1
  182. package/dist/web/routes/case-routes.d.ts.map +1 -1
  183. package/dist/web/routes/case-routes.js +136 -18
  184. package/dist/web/routes/case-routes.js.map +1 -1
  185. package/dist/web/routes/doctor-routes.d.ts +23 -0
  186. package/dist/web/routes/doctor-routes.d.ts.map +1 -0
  187. package/dist/web/routes/doctor-routes.js +83 -0
  188. package/dist/web/routes/doctor-routes.js.map +1 -0
  189. package/dist/web/routes/git-status-routes.d.ts +16 -0
  190. package/dist/web/routes/git-status-routes.d.ts.map +1 -0
  191. package/dist/web/routes/git-status-routes.js +71 -0
  192. package/dist/web/routes/git-status-routes.js.map +1 -0
  193. package/dist/web/routes/index.d.ts +4 -0
  194. package/dist/web/routes/index.d.ts.map +1 -1
  195. package/dist/web/routes/index.js +4 -0
  196. package/dist/web/routes/index.js.map +1 -1
  197. package/dist/web/routes/mcp-sync-routes.d.ts +29 -0
  198. package/dist/web/routes/mcp-sync-routes.d.ts.map +1 -0
  199. package/dist/web/routes/mcp-sync-routes.js +83 -0
  200. package/dist/web/routes/mcp-sync-routes.js.map +1 -0
  201. package/dist/web/routes/ralph-routes.d.ts.map +1 -1
  202. package/dist/web/routes/ralph-routes.js +2 -1
  203. package/dist/web/routes/ralph-routes.js.map +1 -1
  204. package/dist/web/routes/reboot-restore-routes.d.ts.map +1 -1
  205. package/dist/web/routes/reboot-restore-routes.js +2 -0
  206. package/dist/web/routes/reboot-restore-routes.js.map +1 -1
  207. package/dist/web/routes/session-routes.d.ts.map +1 -1
  208. package/dist/web/routes/session-routes.js +60 -25
  209. package/dist/web/routes/session-routes.js.map +1 -1
  210. package/dist/web/routes/webhook-routes.d.ts +21 -0
  211. package/dist/web/routes/webhook-routes.d.ts.map +1 -0
  212. package/dist/web/routes/webhook-routes.js +87 -0
  213. package/dist/web/routes/webhook-routes.js.map +1 -0
  214. package/dist/web/schemas.d.ts +48 -2
  215. package/dist/web/schemas.d.ts.map +1 -1
  216. package/dist/web/schemas.js +71 -0
  217. package/dist/web/schemas.js.map +1 -1
  218. package/dist/web/server.d.ts +4 -0
  219. package/dist/web/server.d.ts.map +1 -1
  220. package/dist/web/server.js +57 -25
  221. package/dist/web/server.js.map +1 -1
  222. package/dist/webhook-notify.d.ts +71 -0
  223. package/dist/webhook-notify.d.ts.map +1 -0
  224. package/dist/webhook-notify.js +282 -0
  225. package/dist/webhook-notify.js.map +1 -0
  226. package/package.json +2 -1
  227. package/skills/codeman/SKILL.md +26 -8
  228. package/skills/codeman/preamble.sh +16 -4
  229. package/skills/codeman/reference/endpoints.md +11 -3
  230. package/skills/codeman/reference/recipes.md +1 -1
  231. package/skills/codeman/reference/verbs.md +3 -0
  232. package/dist/web/public/app.0879466b.js +0 -43
  233. package/dist/web/public/app.0879466b.js.br +0 -0
  234. package/dist/web/public/app.0879466b.js.gz +0 -0
  235. package/dist/web/public/i18n.7f8be985.js +0 -1
  236. package/dist/web/public/i18n.7f8be985.js.br +0 -0
  237. package/dist/web/public/i18n.7f8be985.js.gz +0 -0
  238. package/dist/web/public/ralph-wizard.13a1831e.js.br +0 -0
  239. package/dist/web/public/session-ui.7575a231.js +0 -89
  240. package/dist/web/public/session-ui.7575a231.js.br +0 -0
  241. package/dist/web/public/session-ui.7575a231.js.gz +0 -0
  242. package/dist/web/public/settings-ui.c68e7f59.js +0 -95
  243. package/dist/web/public/settings-ui.c68e7f59.js.br +0 -0
  244. package/dist/web/public/settings-ui.c68e7f59.js.gz +0 -0
  245. package/dist/web/public/styles.f2b78b86.css +0 -1
  246. package/dist/web/public/styles.f2b78b86.css.br +0 -0
  247. package/dist/web/public/styles.f2b78b86.css.gz +0 -0
  248. package/dist/web/public/tab-rail-resize.dcdc5772.js.br +0 -0
  249. package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
  250. package/dist/web/public/terminal-ui.d5223c0e.js +0 -2
  251. package/dist/web/public/terminal-ui.d5223c0e.js.br +0 -0
  252. package/dist/web/public/terminal-ui.d5223c0e.js.gz +0 -0
  253. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js +0 -4
  254. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.br +0 -0
  255. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"cli-executable-resolver.js","sourceRoot":"","sources":["../../src/utils/cli-executable-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-executable-resolver.js","sourceRoot":"","sources":["../../src/utils/cli-executable-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AACnD,MAAM,wBAAwB,GAAG,+BAA+B,CAAC;AACjE,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAC7D,qFAAqF;AACrF,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACrF,CAAC;AA8DD,4GAA4G;AAC5G,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3C,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,MAAc;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5B,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO;QACL,mBAAmB,wBAAwB,GAAG;QAC9C,iBAAiB,MAAM,EAAE;QACzB,mBAAmB,sBAAsB,GAAG;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,UAA4C,EAAE;IAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrG,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAClE,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,kEAAkE;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI,CAAC;IACrF,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACrG,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACtH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,IAAc,EAAU,EAAE;QACnD,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC5B,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,eAAe;gBACxB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnC,wEAAwE;gBACxE,wEAAwE;gBACxE,sEAAsE;gBACtE,wEAAwE;gBACxE,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,SAAS;QACT,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;QACzB,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YAChD,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC1C,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC;oBAAE,OAAO,SAAS,CAAC;YAC7E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YAChD,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACjH,OAAO,SAAS,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,CAAC;QACD,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAAC,QAA2B;IAC1E,KAAK,MAAM,MAAM,IAAI,QAAQ;QAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAcC,EACD,OAAwB,+BAA+B,EAAE;IAEzD,MAAM,iBAAiB,GAAG,GAAa,EAAE,CACvC,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACvF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,8DAA8D;IAC9D,IAAI,MAAM,GAA4B,IAAI,CAAC;IAC3C,gEAAgE;IAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,yCAAyC;IACzC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,qEAAqE;IACrE,IAAI,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,MAA2B,EAA2B,EAAE;QAC3F,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAK,EAAE,QAAQ,EAAE,IAAI,EAA6B,CAAC;QACvG,IAAI,CAAC,UAAU,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC;YACxB,MAAM;YACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;YACL,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,UAAU,GAAG,OAAO,CAAC;gBACrB,MAAM,GAAG,IAAI,CAAC;gBACd,QAAQ,GAAG,CAAC,CAAC;gBACb,aAAa,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,yEAAyE;YACzE,mEAAmE;YACnE,yEAAyE;YACzE,kEAAkE;YAClE,IAAI,QAAQ,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE1F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,EAAE,CAAC;oBACtC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC;oBAC/D,IAAI,MAAM;wBAAE,MAAM;gBACpB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,GAAG,CAAC,CAAC;gBACb,aAAa,GAAG,CAAC,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,QAAQ,IAAI,CAAC,CAAC;YACd,aAAa,GAAG,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,UAAU,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC;SACrC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa,EAAE,WAAmB;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,CAAC;QAChF,OAAO,SAAS,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC,CAAC;SACC,IAAI,CAAC,EAAE,CAAC;SACR,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,IAAI,EAAE,CAAC;IACV,IAAI,CAAC,SAAS;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,SAAS,CAAC,MAAM,IAAI,2BAA2B;QAAE,OAAO,SAAS,CAAC;IACtE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,WAAqC;IAC1F,MAAM,WAAW,GAAG,uBAAuB,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,uBAAuB,CACnC,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3E,QAAQ,CACT,CAAC;IACF,MAAM,IAAI,GAAG,uBAAuB,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClF,OAAO,GAAG,IAAI,kBAAkB,WAAW,kBAAkB,KAAK,0BAA0B,IAAI,EAAE,CAAC;AACrG,CAAC"}
@@ -32,6 +32,8 @@ export interface ProbeHost {
32
32
  environment: ProbeEnvironment;
33
33
  which(bin: string): string | null;
34
34
  fileExists(path: string): boolean;
35
+ /** An executable regular file, the run mode's own test for a `searchDirs` candidate. */
36
+ isExecutableFile(path: string): boolean;
35
37
  runVersion(bin: string, args: string[]): string | null;
36
38
  windowsProgramRoots(): string[];
37
39
  windowsFileVersion(winPath: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-checker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,CAK9E;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IACvD,mBAAmB,IAAI,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACpD;AAeD,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,CA8C3E;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,EAAE,CAElF;AAqED,wBAAgB,cAAc,IAAI,SAAS,CAc1C"}
1
+ {"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-checker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,CAK9E;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,wFAAwF;IACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IACvD,mBAAmB,IAAI,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACpD;AAeD,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,CA6D3E;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,EAAE,CAElF;AA4ED,wBAAgB,cAAc,IAAI,SAAS,CAe1C"}
@@ -7,7 +7,9 @@
7
7
  */
8
8
  import { execFileSync } from 'node:child_process';
9
9
  import { existsSync, readdirSync, readFileSync } from 'node:fs';
10
+ import { isAbsolute, join } from 'node:path';
10
11
  import { EXEC_TIMEOUT_MS } from '../config/exec-timeout.js';
12
+ import { isExecutableRegularFile } from './cli-executable-resolver.js';
11
13
  export function detectEnvironment(inputs) {
12
14
  if (inputs.platform === 'win32')
13
15
  return 'win32';
@@ -55,19 +57,37 @@ export function checkTool(tool, host) {
55
57
  if (!spec)
56
58
  return { ...base, status: 'skipped', reason: `not applicable on ${host.environment}` };
57
59
  if (spec.resolver.kind === 'path') {
58
- const { bins, versionArg, versionRegex, requireVersionMatch } = spec.resolver;
60
+ const { bins, versionArg, versionRegex, requireVersionMatch, searchDirs } = spec.resolver;
59
61
  for (const bin of bins) {
60
- const resolved = host.which(bin);
61
- if (resolved) {
62
- const out = host.runVersion(bin, [versionArg ?? '--version']);
62
+ // The same candidate order and the same per-candidate test as the run mode's resolver
63
+ // (createCliExecutableResolver): the `which` hit (the PATH), then each search dir. Under
64
+ // a service the PATH is minimal and the run mode finds the CLI through those dirs, so
65
+ // the doctor must too. A search-dir candidate counts only as an absolute path to an
66
+ // executable regular file, so a relative dir from a custom clis.json or a file without
67
+ // the x bit reads as missing here exactly as it does in the Run menu.
68
+ const candidates = [];
69
+ const onPath = host.which(bin);
70
+ if (onPath && isAbsolute(onPath))
71
+ candidates.push(onPath);
72
+ for (const dir of searchDirs ?? []) {
73
+ const candidate = join(dir, bin);
74
+ if (candidates.includes(candidate))
75
+ continue; // a search dir that is also on the PATH
76
+ if (isAbsolute(candidate) && host.isExecutableFile(candidate))
77
+ candidates.push(candidate);
78
+ }
79
+ for (const candidate of candidates) {
80
+ // Run the RESOLVED path: a bare name would miss the same binary `which` just missed.
81
+ const out = host.runVersion(candidate, [versionArg ?? '--version']);
63
82
  const version = out ? extractVersion(out, versionRegex) : undefined;
64
83
  // A generic binary name that prints the wrong thing is some OTHER program (see
65
- // PathResolver.requireVersionMatch). Keep looking, then report MISSING; the
66
- // alternative is claiming a tool is installed that the feature's own resolver
67
- // rejects, which reads as "the mode is broken" rather than "install it".
84
+ // PathResolver.requireVersionMatch). Try the next candidate, then report MISSING;
85
+ // the alternative is claiming a tool is installed that the feature's own resolver
86
+ // rejects, or missing one it accepts (an npm squatter on the PATH in front of the
87
+ // real grok in ~/.grok/bin), which reads as "the mode is broken".
68
88
  if (requireVersionMatch && !version)
69
89
  continue;
70
- return finalize(base, tool, resolved, version);
90
+ return finalize(base, tool, candidate, version);
71
91
  }
72
92
  }
73
93
  return { ...base, status: 'missing', installHint };
@@ -91,11 +111,16 @@ export function checkTool(tool, host) {
91
111
  export function checkAll(registry, host) {
92
112
  return registry.map((tool) => checkTool(tool, host));
93
113
  }
114
+ // SIGKILL on every probe below: execFileSync's `timeout` only SENDS the kill signal and then
115
+ // keeps waiting for the child, so a `--version` that ignores the default SIGTERM would hold
116
+ // the doctor (now a Settings button) until GET /api/doctor's own timeout, then be orphaned.
117
+ // Same reasoning as the resolver host in cli-executable-resolver.ts.
94
118
  function safeWhich(bin) {
95
119
  try {
96
120
  const out = execFileSync(process.platform === 'win32' ? 'where' : 'which', [bin], {
97
121
  encoding: 'utf-8',
98
122
  timeout: EXEC_TIMEOUT_MS,
123
+ killSignal: 'SIGKILL',
99
124
  }).trim();
100
125
  const first = out.split(/\r?\n/)[0]?.trim();
101
126
  return first && existsSync(first) ? first : null;
@@ -110,6 +135,7 @@ function safeRunVersion(bin, args) {
110
135
  encoding: 'utf-8',
111
136
  timeout: EXEC_TIMEOUT_MS,
112
137
  stdio: ['ignore', 'pipe', 'ignore'],
138
+ killSignal: 'SIGKILL',
113
139
  });
114
140
  }
115
141
  catch (err) {
@@ -147,8 +173,9 @@ function readWindowsFileVersion(winPath) {
147
173
  const windowsPath = execFileSync('wslpath', ['-w', winPath], {
148
174
  encoding: 'utf-8',
149
175
  timeout: EXEC_TIMEOUT_MS,
176
+ killSignal: 'SIGKILL',
150
177
  }).trim();
151
- const out = execFileSync('powershell.exe', ['-NoProfile', '-Command', `(Get-Item '${windowsPath.replace(/'/g, "''")}').VersionInfo.ProductVersion`], { encoding: 'utf-8', timeout: EXEC_TIMEOUT_MS }).trim();
178
+ const out = execFileSync('powershell.exe', ['-NoProfile', '-Command', `(Get-Item '${windowsPath.replace(/'/g, "''")}').VersionInfo.ProductVersion`], { encoding: 'utf-8', timeout: EXEC_TIMEOUT_MS, killSignal: 'SIGKILL' }).trim();
152
179
  return out || null;
153
180
  }
154
181
  catch {
@@ -165,6 +192,7 @@ export function createRealHost() {
165
192
  environment,
166
193
  which: safeWhich,
167
194
  fileExists: existsSync,
195
+ isExecutableFile: isExecutableRegularFile,
168
196
  runVersion: safeRunVersion,
169
197
  windowsProgramRoots: listWindowsProgramRoots,
170
198
  windowsFileVersion: readWindowsFileVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../src/utils/dependency-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../src/utils/dependency-checker.ts"],"names":[],"mappings":"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"}
@@ -31,4 +31,6 @@ export type { DeepSeekProfile, DeepSeekProfileKind } from './deepseek-cli-resolv
31
31
  export { compileFileQuery, matchFileQuery } from './file-query.js';
32
32
  export type { FileQueryMatcher } from './file-query.js';
33
33
  export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
34
+ export { boundedPathExists, describeUnknownPath, probePath, probePathKind, isNearStalledPath, unknownPathReason, } from './bounded-path-probe.js';
35
+ export type { PathProbeState, PathProbeKind, PathProbeOptions } from './bounded-path-probe.js';
34
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -28,4 +28,5 @@ export { resolveGrokDir, isGrokAvailable, getGrokCliVersion, getGrokNotFoundMess
28
28
  export { resolveDeepSeekDir, isDeepSeekAvailable, isDeepSeekRunnable, getDeepSeekCliVersion, getDeepSeekNotFoundMessage, listDeepSeekProfiles, resolveDefaultDeepSeekProfile, isLaunchableProfile, resolveDshHome, profileExists, } from './deepseek-cli-resolver.js';
29
29
  export { compileFileQuery, matchFileQuery } from './file-query.js';
30
30
  export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
31
+ export { boundedPathExists, describeUnknownPath, probePath, probePathKind, isNearStalledPath, unknownPathReason, } from './bounded-path-probe.js';
31
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @fileoverview Validation for "create a new case in a custom folder" (`POST /api/cases` with a
3
+ * `path`). Creating a case writes a scaffold (`CLAUDE.md`, `src/`, `.claude/settings.local.json`)
4
+ * and registers the folder in the shared, ownerless linked-cases registry, so the target has to be
5
+ * judged before anything is created:
6
+ *
7
+ * - it must be an absolute path (a leading `~` is expanded) with no traversal and none of the shell
8
+ * metacharacters a session's working directory is later rejected for (`isValidWorkingDir`), so
9
+ * a case this accepts is one a session can actually start in;
10
+ * - it must not be a system directory, the home directory itself, Codeman's own data directory, or
11
+ * a credential/config tree (`~/.ssh`, `~/.aws`, `~/.claude`, ...). Judged on the path as typed AND on
12
+ * its symlink-resolved form, against both the given and the symlink-resolved roots (a home reached
13
+ * through a link, macOS's `/etc` -> `/private/etc`), so a link into a blocked tree is not a way
14
+ * around it;
15
+ * - it must not be, or be inside, a cases directory: a case there is a plain Create New, and the same
16
+ * folder listed both as a local case and as a linked one would make deleting it remove files;
17
+ * - its parent must already exist (one folder is created, never a whole chain), and the folder
18
+ * itself must not exist or must be an EMPTY directory (a folder with contents is Link Existing's
19
+ * job, and silently scaffolding into someone's project is the one thing this must never do);
20
+ * - it must not be a symlink.
21
+ *
22
+ * Pure except for the filesystem reads in `prepareNewCasePath`; the policy lives in `blockedReason`
23
+ * so it can be tested without a disk.
24
+ *
25
+ * @module web/case-path
26
+ */
27
+ export interface NewCasePathContext {
28
+ home: string;
29
+ /** Codeman's own state directory (`getDataDir()`), which must never become a case. */
30
+ dataDir: string;
31
+ /**
32
+ * The cases directories (the caller's own and the shared one). A folder in one of them is already
33
+ * listed as a local case, so it must not be registered as a linked one too.
34
+ */
35
+ casesDirs?: readonly string[];
36
+ }
37
+ export type NewCasePathResult = {
38
+ ok: true;
39
+ path: string;
40
+ existedEmpty: boolean;
41
+ } | {
42
+ ok: false;
43
+ code: 'INVALID' | 'BLOCKED' | 'NOT_FOUND' | 'EXISTS' | 'UNREACHABLE';
44
+ reason: string;
45
+ };
46
+ /** `~` and `~/x` to the home directory; anything else is returned unchanged. */
47
+ export declare function expandHome(raw: string, home: string): string;
48
+ /**
49
+ * Why a case may not live at this (already absolute and normalised) path, or null. `systemRoots`
50
+ * defaults to the system trees as spelled; pass their symlink-resolved forms to judge a resolved path.
51
+ */
52
+ export declare function blockedReason(absPath: string, ctx: NewCasePathContext, systemRoots?: readonly string[]): string | null;
53
+ /**
54
+ * Judge `raw` as the folder for a new case and, if it is acceptable, say what to create.
55
+ * Never creates anything.
56
+ */
57
+ export declare function prepareNewCasePath(raw: string, ctx: NewCasePathContext): Promise<NewCasePathResult>;
58
+ //# sourceMappingURL=case-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-path.d.ts","sourceRoot":"","sources":["../../src/web/case-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA0BH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxG,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,kBAAkB,EACvB,WAAW,GAAE,SAAS,MAAM,EAAyB,GACpD,MAAM,GAAG,IAAI,CAsBf;AAsBD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgEzG"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * @fileoverview Validation for "create a new case in a custom folder" (`POST /api/cases` with a
3
+ * `path`). Creating a case writes a scaffold (`CLAUDE.md`, `src/`, `.claude/settings.local.json`)
4
+ * and registers the folder in the shared, ownerless linked-cases registry, so the target has to be
5
+ * judged before anything is created:
6
+ *
7
+ * - it must be an absolute path (a leading `~` is expanded) with no traversal and none of the shell
8
+ * metacharacters a session's working directory is later rejected for (`isValidWorkingDir`), so
9
+ * a case this accepts is one a session can actually start in;
10
+ * - it must not be a system directory, the home directory itself, Codeman's own data directory, or
11
+ * a credential/config tree (`~/.ssh`, `~/.aws`, `~/.claude`, ...). Judged on the path as typed AND on
12
+ * its symlink-resolved form, against both the given and the symlink-resolved roots (a home reached
13
+ * through a link, macOS's `/etc` -> `/private/etc`), so a link into a blocked tree is not a way
14
+ * around it;
15
+ * - it must not be, or be inside, a cases directory: a case there is a plain Create New, and the same
16
+ * folder listed both as a local case and as a linked one would make deleting it remove files;
17
+ * - its parent must already exist (one folder is created, never a whole chain), and the folder
18
+ * itself must not exist or must be an EMPTY directory (a folder with contents is Link Existing's
19
+ * job, and silently scaffolding into someone's project is the one thing this must never do);
20
+ * - it must not be a symlink.
21
+ *
22
+ * Pure except for the filesystem reads in `prepareNewCasePath`; the policy lives in `blockedReason`
23
+ * so it can be tested without a disk.
24
+ *
25
+ * @module web/case-path
26
+ */
27
+ import { promises as fs } from 'node:fs';
28
+ import { basename, dirname, join, resolve, sep } from 'node:path';
29
+ import { isValidWorkingDir } from './schemas.js';
30
+ import { describeUnknownPath, probePath } from '../utils/index.js';
31
+ /** System trees nobody creates a project in; creating one here is a mistake or an attack. */
32
+ const BLOCKED_SYSTEM_ROOTS = [
33
+ '/bin',
34
+ '/boot',
35
+ '/dev',
36
+ '/etc',
37
+ '/lib',
38
+ '/lib32',
39
+ '/lib64',
40
+ '/proc',
41
+ '/run',
42
+ '/sbin',
43
+ '/sys',
44
+ '/usr',
45
+ ];
46
+ /** Home-relative trees that hold credentials or other tools' own configuration. */
47
+ const BLOCKED_HOME_DIRS = ['.ssh', '.gnupg', '.aws', '.kube', '.docker', '.claude', '.codex', '.gemini'];
48
+ const isWithin = (child, root) => child === root || child.startsWith(root.endsWith(sep) ? root : root + sep);
49
+ /** `~` and `~/x` to the home directory; anything else is returned unchanged. */
50
+ export function expandHome(raw, home) {
51
+ if (raw === '~')
52
+ return home;
53
+ if (raw.startsWith('~/'))
54
+ return join(home, raw.slice(2));
55
+ return raw;
56
+ }
57
+ /**
58
+ * Why a case may not live at this (already absolute and normalised) path, or null. `systemRoots`
59
+ * defaults to the system trees as spelled; pass their symlink-resolved forms to judge a resolved path.
60
+ */
61
+ export function blockedReason(absPath, ctx, systemRoots = BLOCKED_SYSTEM_ROOTS) {
62
+ if (absPath === sep)
63
+ return 'The filesystem root cannot be a case';
64
+ for (const root of systemRoots) {
65
+ if (isWithin(absPath, root))
66
+ return `${root} is a system directory`;
67
+ }
68
+ if (absPath === ctx.home)
69
+ return 'The home folder itself cannot be a case; pick a folder inside it';
70
+ for (const dir of BLOCKED_HOME_DIRS) {
71
+ if (isWithin(absPath, join(ctx.home, dir)))
72
+ return `~/${dir} holds credentials or another tool's configuration`;
73
+ }
74
+ if (isWithin(absPath, ctx.dataDir))
75
+ return "Codeman's own data folder cannot be a case";
76
+ // Any Codeman instance's data dir under the home folder (~/.codeman, ~/.codeman-beta, ...), not only
77
+ // the one this process uses.
78
+ if (absPath.startsWith(ctx.home + sep)) {
79
+ const firstSegment = absPath.slice(ctx.home.length + 1).split(sep)[0];
80
+ if (/^\.codeman/.test(firstSegment))
81
+ return "Codeman's own data folder cannot be a case";
82
+ }
83
+ for (const dir of ctx.casesDirs ?? []) {
84
+ if (isWithin(absPath, dir)) {
85
+ return 'That folder is inside the cases folder; create a case there with plain Create New (no custom folder)';
86
+ }
87
+ }
88
+ return null;
89
+ }
90
+ /** `p` with its symlinks resolved, or `p` itself when it does not exist (or cannot be read). */
91
+ async function realpathOr(p) {
92
+ try {
93
+ return await fs.realpath(p);
94
+ }
95
+ catch {
96
+ return p;
97
+ }
98
+ }
99
+ /** The context and system roots with their symlinks resolved, for judging a resolved path. */
100
+ async function resolvedPolicy(ctx) {
101
+ const [home, dataDir, casesDirs, systemRoots] = await Promise.all([
102
+ realpathOr(ctx.home),
103
+ realpathOr(ctx.dataDir),
104
+ Promise.all((ctx.casesDirs ?? []).map(realpathOr)),
105
+ Promise.all(BLOCKED_SYSTEM_ROOTS.map(realpathOr)),
106
+ ]);
107
+ return [{ home, dataDir, casesDirs }, systemRoots];
108
+ }
109
+ /**
110
+ * Judge `raw` as the folder for a new case and, if it is acceptable, say what to create.
111
+ * Never creates anything.
112
+ */
113
+ export async function prepareNewCasePath(raw, ctx) {
114
+ const typed = raw.trim();
115
+ if (!typed)
116
+ return { ok: false, code: 'INVALID', reason: 'Enter a folder path' };
117
+ const expanded = expandHome(typed, ctx.home);
118
+ if (!isValidWorkingDir(expanded)) {
119
+ return {
120
+ ok: false,
121
+ code: 'INVALID',
122
+ reason: 'Use an absolute path with letters, numbers, spaces, - _ . only (no .., no shell characters)',
123
+ };
124
+ }
125
+ const target = resolve(expanded);
126
+ const typedBlock = blockedReason(target, ctx);
127
+ if (typedBlock)
128
+ return { ok: false, code: 'BLOCKED', reason: typedBlock };
129
+ // Bounded first: the parent can sit on a network mount that stopped answering, where the
130
+ // realpath/stat/lstat/readdir below would each hold a threadpool worker until it returns.
131
+ // It is one folder the user named, so the probe may pass the bulk cap (never the ceiling).
132
+ const parentState = await probePath(dirname(target), { pastCap: true });
133
+ if (parentState === 'absent') {
134
+ return { ok: false, code: 'NOT_FOUND', reason: `The parent folder ${dirname(target)} does not exist` };
135
+ }
136
+ if (parentState === 'unknown') {
137
+ return {
138
+ ok: false,
139
+ code: 'UNREACHABLE',
140
+ reason: describeUnknownPath('The parent folder', dirname(target), { pastCap: true }),
141
+ };
142
+ }
143
+ // Resolve the parent's symlinks, then judge again: a link into a blocked tree must not pass.
144
+ let realParent;
145
+ try {
146
+ realParent = await fs.realpath(dirname(target));
147
+ if (!(await fs.stat(realParent)).isDirectory()) {
148
+ return { ok: false, code: 'INVALID', reason: `${dirname(target)} is not a folder` };
149
+ }
150
+ }
151
+ catch {
152
+ return { ok: false, code: 'NOT_FOUND', reason: `The parent folder ${dirname(target)} does not exist` };
153
+ }
154
+ const real = join(realParent, basename(target));
155
+ // The resolved path against the roots as given AND as resolved: with home reached through a link, a
156
+ // link to <real home>/.ssh is only caught by the resolved home; on macOS /etc is /private/etc.
157
+ const [resolvedCtx, resolvedSystemRoots] = await resolvedPolicy(ctx);
158
+ const realBlock = blockedReason(real, ctx) ?? blockedReason(real, resolvedCtx, resolvedSystemRoots);
159
+ if (realBlock)
160
+ return { ok: false, code: 'BLOCKED', reason: realBlock };
161
+ try {
162
+ const st = await fs.lstat(real);
163
+ if (st.isSymbolicLink())
164
+ return { ok: false, code: 'INVALID', reason: `${target} is a symbolic link` };
165
+ if (!st.isDirectory())
166
+ return { ok: false, code: 'INVALID', reason: `${target} exists and is not a folder` };
167
+ if ((await fs.readdir(real)).length > 0) {
168
+ return {
169
+ ok: false,
170
+ code: 'EXISTS',
171
+ reason: `${target} already has files in it. Use "Link Existing" for a project that already exists`,
172
+ };
173
+ }
174
+ return { ok: true, path: real, existedEmpty: true };
175
+ }
176
+ catch (err) {
177
+ if (err.code === 'ENOENT')
178
+ return { ok: true, path: real, existedEmpty: false };
179
+ return { ok: false, code: 'INVALID', reason: `Cannot read ${target}: ${err.message}` };
180
+ }
181
+ }
182
+ //# sourceMappingURL=case-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-path.js","sourceRoot":"","sources":["../../src/web/case-path.ts"],"names":[],"mappings":"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"}
Binary file