@prestyj/cli 5.9.0 → 5.10.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 (321) hide show
  1. package/README.md +1 -1
  2. package/assets/skills/evidence-led-ui/SKILL.md +1 -1
  3. package/dist/app-sidecar.js +374 -14
  4. package/dist/app-sidecar.js.map +1 -1
  5. package/dist/chat-agents/general.test.js +5 -3
  6. package/dist/chat-agents/general.test.js.map +1 -1
  7. package/dist/chat-agents/memory.d.ts.map +1 -1
  8. package/dist/chat-agents/memory.js +14 -5
  9. package/dist/chat-agents/memory.js.map +1 -1
  10. package/dist/chat-agents/memory.test.js +11 -1
  11. package/dist/chat-agents/memory.test.js.map +1 -1
  12. package/dist/chat-agents/shared.js +1 -1
  13. package/dist/chat-agents/shared.js.map +1 -1
  14. package/dist/chat-agents/specialists.test.js +3 -2
  15. package/dist/chat-agents/specialists.test.js.map +1 -1
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +16 -4
  18. package/dist/cli.js.map +1 -1
  19. package/dist/config.d.ts +14 -0
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +41 -2
  22. package/dist/config.js.map +1 -1
  23. package/dist/config.test.js +61 -1
  24. package/dist/config.test.js.map +1 -1
  25. package/dist/core/agent-mcp-passthrough.test.d.ts +2 -0
  26. package/dist/core/agent-mcp-passthrough.test.d.ts.map +1 -0
  27. package/dist/core/agent-mcp-passthrough.test.js +61 -0
  28. package/dist/core/agent-mcp-passthrough.test.js.map +1 -0
  29. package/dist/core/agent-session-add-dir.test.d.ts +2 -0
  30. package/dist/core/agent-session-add-dir.test.d.ts.map +1 -0
  31. package/dist/core/agent-session-add-dir.test.js +110 -0
  32. package/dist/core/agent-session-add-dir.test.js.map +1 -0
  33. package/dist/core/agent-session-compaction.test.js +4 -7
  34. package/dist/core/agent-session-compaction.test.js.map +1 -1
  35. package/dist/core/agent-session-marker-anchors.test.d.ts +2 -0
  36. package/dist/core/agent-session-marker-anchors.test.d.ts.map +1 -0
  37. package/dist/core/agent-session-marker-anchors.test.js +147 -0
  38. package/dist/core/agent-session-marker-anchors.test.js.map +1 -0
  39. package/dist/core/agent-session-memory-tail.test.js +4 -7
  40. package/dist/core/agent-session-memory-tail.test.js.map +1 -1
  41. package/dist/core/agent-session-queue.test.js +4 -7
  42. package/dist/core/agent-session-queue.test.js.map +1 -1
  43. package/dist/core/agent-session-subagent-policy.test.js +7 -3
  44. package/dist/core/agent-session-subagent-policy.test.js.map +1 -1
  45. package/dist/core/agent-session.d.ts +42 -0
  46. package/dist/core/agent-session.d.ts.map +1 -1
  47. package/dist/core/agent-session.js +93 -7
  48. package/dist/core/agent-session.js.map +1 -1
  49. package/dist/core/agent-tools-allowlist.test.js +5 -3
  50. package/dist/core/agent-tools-allowlist.test.js.map +1 -1
  51. package/dist/core/agents.d.ts +11 -0
  52. package/dist/core/agents.d.ts.map +1 -1
  53. package/dist/core/agents.js +21 -0
  54. package/dist/core/agents.js.map +1 -1
  55. package/dist/core/agents.test.d.ts +2 -0
  56. package/dist/core/agents.test.d.ts.map +1 -0
  57. package/dist/core/agents.test.js +67 -0
  58. package/dist/core/agents.test.js.map +1 -0
  59. package/dist/core/auth-providers.js +1 -1
  60. package/dist/core/auth-providers.js.map +1 -1
  61. package/dist/core/compaction/compactor.test.js +1 -1
  62. package/dist/core/compaction/compactor.test.js.map +1 -1
  63. package/dist/core/compaction/token-estimator.test.js +1 -1
  64. package/dist/core/compaction/token-estimator.test.js.map +1 -1
  65. package/dist/core/encode-cwd.d.ts +17 -0
  66. package/dist/core/encode-cwd.d.ts.map +1 -1
  67. package/dist/core/encode-cwd.js +20 -7
  68. package/dist/core/encode-cwd.js.map +1 -1
  69. package/dist/core/encode-cwd.test.js +20 -1
  70. package/dist/core/encode-cwd.test.js.map +1 -1
  71. package/dist/core/ideal-review.d.ts.map +1 -1
  72. package/dist/core/ideal-review.js +6 -1
  73. package/dist/core/ideal-review.js.map +1 -1
  74. package/dist/core/ideal-review.test.js +7 -2
  75. package/dist/core/ideal-review.test.js.map +1 -1
  76. package/dist/core/local-endpoint-store.d.ts +50 -0
  77. package/dist/core/local-endpoint-store.d.ts.map +1 -0
  78. package/dist/core/local-endpoint-store.js +201 -0
  79. package/dist/core/local-endpoint-store.js.map +1 -0
  80. package/dist/core/local-endpoint-store.test.d.ts +2 -0
  81. package/dist/core/local-endpoint-store.test.d.ts.map +1 -0
  82. package/dist/core/local-endpoint-store.test.js +131 -0
  83. package/dist/core/local-endpoint-store.test.js.map +1 -0
  84. package/dist/core/lsp/client.d.ts +50 -0
  85. package/dist/core/lsp/client.d.ts.map +1 -1
  86. package/dist/core/lsp/client.js +158 -13
  87. package/dist/core/lsp/client.js.map +1 -1
  88. package/dist/core/lsp/jsonrpc.d.ts +38 -1
  89. package/dist/core/lsp/jsonrpc.d.ts.map +1 -1
  90. package/dist/core/lsp/jsonrpc.js +13 -1
  91. package/dist/core/lsp/jsonrpc.js.map +1 -1
  92. package/dist/core/lsp/manager.d.ts.map +1 -1
  93. package/dist/core/lsp/manager.js +23 -2
  94. package/dist/core/lsp/manager.js.map +1 -1
  95. package/dist/core/lsp/manager.test.js +32 -1
  96. package/dist/core/lsp/manager.test.js.map +1 -1
  97. package/dist/core/lsp/test-support.d.ts +18 -0
  98. package/dist/core/lsp/test-support.d.ts.map +1 -0
  99. package/dist/core/lsp/test-support.js +27 -0
  100. package/dist/core/lsp/test-support.js.map +1 -0
  101. package/dist/core/lsp/uri.test.d.ts +2 -0
  102. package/dist/core/lsp/uri.test.d.ts.map +1 -0
  103. package/dist/core/lsp/uri.test.js +56 -0
  104. package/dist/core/lsp/uri.test.js.map +1 -0
  105. package/dist/core/lsp/windows.test.d.ts +2 -0
  106. package/dist/core/lsp/windows.test.d.ts.map +1 -0
  107. package/dist/core/lsp/windows.test.js +251 -0
  108. package/dist/core/lsp/windows.test.js.map +1 -0
  109. package/dist/core/mcp/resolve-stdio.d.ts +35 -0
  110. package/dist/core/mcp/resolve-stdio.d.ts.map +1 -1
  111. package/dist/core/mcp/resolve-stdio.js +80 -1
  112. package/dist/core/mcp/resolve-stdio.js.map +1 -1
  113. package/dist/core/mcp/resolve-stdio.test.js +99 -4
  114. package/dist/core/mcp/resolve-stdio.test.js.map +1 -1
  115. package/dist/core/network-guard.d.ts +47 -0
  116. package/dist/core/network-guard.d.ts.map +1 -0
  117. package/dist/core/network-guard.js +208 -0
  118. package/dist/core/network-guard.js.map +1 -0
  119. package/dist/core/network-guard.test.d.ts +2 -0
  120. package/dist/core/network-guard.test.d.ts.map +1 -0
  121. package/dist/core/network-guard.test.js +72 -0
  122. package/dist/core/network-guard.test.js.map +1 -0
  123. package/dist/core/persistent-shell.d.ts +3 -1
  124. package/dist/core/persistent-shell.d.ts.map +1 -1
  125. package/dist/core/persistent-shell.js +13 -3
  126. package/dist/core/persistent-shell.js.map +1 -1
  127. package/dist/core/process-manager-dev-server-repro.test.js +34 -12
  128. package/dist/core/process-manager-dev-server-repro.test.js.map +1 -1
  129. package/dist/core/process-manager.d.ts +1 -1
  130. package/dist/core/process-manager.d.ts.map +1 -1
  131. package/dist/core/process-manager.js +23 -13
  132. package/dist/core/process-manager.js.map +1 -1
  133. package/dist/core/project-discovery.d.ts +7 -0
  134. package/dist/core/project-discovery.d.ts.map +1 -1
  135. package/dist/core/project-discovery.js +40 -9
  136. package/dist/core/project-discovery.js.map +1 -1
  137. package/dist/core/project-discovery.test.js +102 -1
  138. package/dist/core/project-discovery.test.js.map +1 -1
  139. package/dist/core/prompt-commands.d.ts.map +1 -1
  140. package/dist/core/prompt-commands.js +89 -156
  141. package/dist/core/prompt-commands.js.map +1 -1
  142. package/dist/core/prompt-commands.test.js +4 -10
  143. package/dist/core/prompt-commands.test.js.map +1 -1
  144. package/dist/core/radio.test.js +4 -1
  145. package/dist/core/radio.test.js.map +1 -1
  146. package/dist/core/runtime-mode.d.ts +2 -0
  147. package/dist/core/runtime-mode.d.ts.map +1 -1
  148. package/dist/core/runtime-mode.js +4 -0
  149. package/dist/core/runtime-mode.js.map +1 -1
  150. package/dist/core/session-export.d.ts +98 -0
  151. package/dist/core/session-export.d.ts.map +1 -0
  152. package/dist/core/session-export.js +356 -0
  153. package/dist/core/session-export.js.map +1 -0
  154. package/dist/core/session-export.test.d.ts +2 -0
  155. package/dist/core/session-export.test.d.ts.map +1 -0
  156. package/dist/core/session-export.test.js +353 -0
  157. package/dist/core/session-export.test.js.map +1 -0
  158. package/dist/core/session-storage.d.ts.map +1 -1
  159. package/dist/core/session-storage.js +25 -1
  160. package/dist/core/session-storage.js.map +1 -1
  161. package/dist/core/session-storage.test.js +4 -1
  162. package/dist/core/session-storage.test.js.map +1 -1
  163. package/dist/core/settings-manager.d.ts +5 -0
  164. package/dist/core/settings-manager.d.ts.map +1 -1
  165. package/dist/core/settings-manager.js +10 -0
  166. package/dist/core/settings-manager.js.map +1 -1
  167. package/dist/core/setup-history.d.ts +0 -6
  168. package/dist/core/setup-history.d.ts.map +1 -1
  169. package/dist/core/setup-history.js +2 -18
  170. package/dist/core/setup-history.js.map +1 -1
  171. package/dist/core/setup-history.test.js +11 -26
  172. package/dist/core/setup-history.test.js.map +1 -1
  173. package/dist/core/skills-routing.test.js +3 -1
  174. package/dist/core/skills-routing.test.js.map +1 -1
  175. package/dist/core/slash-commands.d.ts +18 -0
  176. package/dist/core/slash-commands.d.ts.map +1 -1
  177. package/dist/core/slash-commands.js +42 -10
  178. package/dist/core/slash-commands.js.map +1 -1
  179. package/dist/core/slash-commands.test.d.ts +2 -0
  180. package/dist/core/slash-commands.test.d.ts.map +1 -0
  181. package/dist/core/slash-commands.test.js +59 -0
  182. package/dist/core/slash-commands.test.js.map +1 -0
  183. package/dist/core/speed-benchmark.test.js +9 -3
  184. package/dist/core/speed-benchmark.test.js.map +1 -1
  185. package/dist/core/subagent-manager.d.ts +1 -1
  186. package/dist/core/subagent-manager.d.ts.map +1 -1
  187. package/dist/core/subagent-manager.js +9 -0
  188. package/dist/core/subagent-manager.js.map +1 -1
  189. package/dist/core/subagent-store.test.js +14 -2
  190. package/dist/core/subagent-store.test.js.map +1 -1
  191. package/dist/core/workspace-guard.d.ts +2 -0
  192. package/dist/core/workspace-guard.d.ts.map +1 -1
  193. package/dist/core/workspace-guard.js +4 -1
  194. package/dist/core/workspace-guard.js.map +1 -1
  195. package/dist/core/workspace-guard.test.js +21 -0
  196. package/dist/core/workspace-guard.test.js.map +1 -1
  197. package/dist/modes/json-mode.d.ts +7 -0
  198. package/dist/modes/json-mode.d.ts.map +1 -1
  199. package/dist/modes/json-mode.js +1 -0
  200. package/dist/modes/json-mode.js.map +1 -1
  201. package/dist/modes/subagent-worker-mode.d.ts +2 -0
  202. package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
  203. package/dist/modes/subagent-worker-mode.js.map +1 -1
  204. package/dist/system-prompt.d.ts +11 -1
  205. package/dist/system-prompt.d.ts.map +1 -1
  206. package/dist/system-prompt.js +39 -18
  207. package/dist/system-prompt.js.map +1 -1
  208. package/dist/system-prompt.test.js +33 -17
  209. package/dist/system-prompt.test.js.map +1 -1
  210. package/dist/test-support/fake-home.d.ts +20 -0
  211. package/dist/test-support/fake-home.d.ts.map +1 -0
  212. package/dist/test-support/fake-home.js +37 -0
  213. package/dist/test-support/fake-home.js.map +1 -0
  214. package/dist/tools/bash.d.ts +2 -1
  215. package/dist/tools/bash.d.ts.map +1 -1
  216. package/dist/tools/bash.js +22 -5
  217. package/dist/tools/bash.js.map +1 -1
  218. package/dist/tools/bash.test.js +122 -7
  219. package/dist/tools/bash.test.js.map +1 -1
  220. package/dist/tools/edit-robustness.test.js +3 -1
  221. package/dist/tools/edit-robustness.test.js.map +1 -1
  222. package/dist/tools/find.d.ts.map +1 -1
  223. package/dist/tools/find.js +4 -1
  224. package/dist/tools/find.js.map +1 -1
  225. package/dist/tools/grep.d.ts +3 -1
  226. package/dist/tools/grep.d.ts.map +1 -1
  227. package/dist/tools/grep.js +135 -11
  228. package/dist/tools/grep.js.map +1 -1
  229. package/dist/tools/grep.test.js +53 -0
  230. package/dist/tools/grep.test.js.map +1 -1
  231. package/dist/tools/index.d.ts +6 -0
  232. package/dist/tools/index.d.ts.map +1 -1
  233. package/dist/tools/index.js +3 -3
  234. package/dist/tools/index.js.map +1 -1
  235. package/dist/tools/overflow.test.js +4 -7
  236. package/dist/tools/overflow.test.js.map +1 -1
  237. package/dist/tools/path-utils.d.ts +15 -0
  238. package/dist/tools/path-utils.d.ts.map +1 -1
  239. package/dist/tools/path-utils.js +17 -0
  240. package/dist/tools/path-utils.js.map +1 -1
  241. package/dist/tools/path-utils.test.js +7 -2
  242. package/dist/tools/path-utils.test.js.map +1 -1
  243. package/dist/tools/prompt-hints.js +1 -1
  244. package/dist/tools/prompt-hints.js.map +1 -1
  245. package/dist/tools/search-code.d.ts.map +1 -1
  246. package/dist/tools/search-code.js +6 -4
  247. package/dist/tools/search-code.js.map +1 -1
  248. package/dist/tools/subagent.d.ts +1 -1
  249. package/dist/tools/subagent.d.ts.map +1 -1
  250. package/dist/tools/subagent.js +8 -0
  251. package/dist/tools/subagent.js.map +1 -1
  252. package/dist/tools/web-fetch.d.ts +2 -1
  253. package/dist/tools/web-fetch.d.ts.map +1 -1
  254. package/dist/tools/web-fetch.js +17 -6
  255. package/dist/tools/web-fetch.js.map +1 -1
  256. package/dist/tools/web-fetch.test.js +34 -0
  257. package/dist/tools/web-fetch.test.js.map +1 -1
  258. package/dist/tools/web-search.d.ts +2 -1
  259. package/dist/tools/web-search.d.ts.map +1 -1
  260. package/dist/tools/web-search.js +21 -5
  261. package/dist/tools/web-search.js.map +1 -1
  262. package/dist/ui/App.d.ts.map +1 -1
  263. package/dist/ui/App.js +5 -80
  264. package/dist/ui/App.js.map +1 -1
  265. package/dist/ui/app-items.d.ts +1 -12
  266. package/dist/ui/app-items.d.ts.map +1 -1
  267. package/dist/ui/app-items.js.map +1 -1
  268. package/dist/ui/components/Footer.d.ts +1 -1
  269. package/dist/ui/components/Footer.js +2 -2
  270. package/dist/ui/components/Footer.js.map +1 -1
  271. package/dist/ui/hooks/usePixelFixFlow.d.ts +1 -2
  272. package/dist/ui/hooks/usePixelFixFlow.d.ts.map +1 -1
  273. package/dist/ui/hooks/usePixelFixFlow.js +2 -5
  274. package/dist/ui/hooks/usePixelFixFlow.js.map +1 -1
  275. package/dist/ui/login.js +1 -1
  276. package/dist/ui/login.js.map +1 -1
  277. package/dist/ui/terminal-history-status-renderers.d.ts +1 -2
  278. package/dist/ui/terminal-history-status-renderers.d.ts.map +1 -1
  279. package/dist/ui/terminal-history-status-renderers.js +2 -15
  280. package/dist/ui/terminal-history-status-renderers.js.map +1 -1
  281. package/dist/ui/terminal-history.d.ts.map +1 -1
  282. package/dist/ui/terminal-history.js +2 -4
  283. package/dist/ui/terminal-history.js.map +1 -1
  284. package/dist/ui/thinking-level-cycle.test.js +8 -8
  285. package/dist/ui/thinking-level-cycle.test.js.map +1 -1
  286. package/dist/ui/transcript/MiscRows.d.ts +1 -4
  287. package/dist/ui/transcript/MiscRows.d.ts.map +1 -1
  288. package/dist/ui/transcript/MiscRows.js +2 -7
  289. package/dist/ui/transcript/MiscRows.js.map +1 -1
  290. package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -1
  291. package/dist/ui/transcript/TranscriptRenderer.js +1 -3
  292. package/dist/ui/transcript/TranscriptRenderer.js.map +1 -1
  293. package/dist/ui/transcript/presentation.d.ts +1 -9
  294. package/dist/ui/transcript/presentation.d.ts.map +1 -1
  295. package/dist/ui/transcript/presentation.js +0 -9
  296. package/dist/ui/transcript/presentation.js.map +1 -1
  297. package/dist/ui/transcript/spacing.d.ts +2 -2
  298. package/dist/ui/transcript/spacing.d.ts.map +1 -1
  299. package/dist/ui/transcript/spacing.js +0 -1
  300. package/dist/ui/transcript/spacing.js.map +1 -1
  301. package/dist/ui/transcript/spacing.test.js +1 -3
  302. package/dist/ui/transcript/spacing.test.js.map +1 -1
  303. package/dist/ui/tui-history-parity.test.js +2 -9
  304. package/dist/ui/tui-history-parity.test.js.map +1 -1
  305. package/dist/utils/github.d.ts +20 -0
  306. package/dist/utils/github.d.ts.map +1 -0
  307. package/dist/utils/github.js +65 -0
  308. package/dist/utils/github.js.map +1 -0
  309. package/dist/utils/github.test.d.ts +2 -0
  310. package/dist/utils/github.test.d.ts.map +1 -0
  311. package/dist/utils/github.test.js +23 -0
  312. package/dist/utils/github.test.js.map +1 -0
  313. package/dist/utils/process.d.ts +26 -3
  314. package/dist/utils/process.d.ts.map +1 -1
  315. package/dist/utils/process.js +68 -10
  316. package/dist/utils/process.js.map +1 -1
  317. package/dist/utils/process.test.d.ts +2 -0
  318. package/dist/utils/process.test.d.ts.map +1 -0
  319. package/dist/utils/process.test.js +42 -0
  320. package/dist/utils/process.test.js.map +1 -0
  321. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-stdio.js","sourceRoot":"","sources":["../../../src/core/mcp/resolve-stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AAEH,kFAAkF;AAClF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa;IACzD,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,OAAe,EACf,QAAgB,UAAU;IAE1B,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;IACnF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAE1D,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,SAAS,CAChB,GAAgD,EAChD,OAAe;IAEf,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAuB;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,IAAuB,CAAC;IAC5B,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,kBAAkB,IAAI,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACvF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACpC,CAAC,EAAE,CAAC,CAAC,oEAAoE;YACzE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QACzB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,OAAO,CAAC,CAAC,CAAC,gDAAgD;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;kEAEkE;AAClE,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrB,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC9E,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC9C,IAAI,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAAe,EACf,UAAmB;IAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,UAAU,GAA0C,EAAE,CAAC;IAC7D,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,EAAE,CAAC;QACnC,IAAI,MAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,gCAAgC;QAC5C,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC;YACnF,IAAI,GAAgE,CAAC;YACrE,IAAI,CAAC;gBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,8BAA8B;YAC1C,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,UAAU,IAAI,OAAO,KAAK,UAAU;gBAAE,SAAS,CAAC,iBAAiB;YACrE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,uEAAuE;IACvE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,CAAC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChF,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,OAA0B,EAAE;IAE5B,MAAM,WAAW,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAEvE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAEjC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,8EAA8E;IAC9E,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,SAAS,GACb,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;QACtC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS;QAAE,OAAO,WAAW,CAAC;IAEnC,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,OAAe,EACf,IAAuB,EACvB,OAAe;IAEf,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"resolve-stdio.js","sourceRoot":"","sources":["../../../src/core/mcp/resolve-stdio.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { afterEach, describe, it, expect } from "vitest";
2
+ import { spawnSync } from "node:child_process";
2
3
  import fs from "node:fs";
3
4
  import os from "node:os";
4
5
  import path from "node:path";
5
- import { parseNpxPackage, findPackageBinScript, resolveStdioCommand } from "./resolve-stdio.js";
6
+ import { parseNpxPackage, findPackageBinScript, resolveStdioCommand, resolveWindowsExecutable, resolveWindowsLauncher, } from "./resolve-stdio.js";
6
7
  /** Lay out a fake npx cache entry: `<cache>/_npx/<hash>/node_modules/<pkg>`
7
8
  * with a package.json + real bin file. Returns the cache root to point
8
9
  * `npm_config_cache` at. */
@@ -65,7 +66,9 @@ describe("resolveStdioCommand", () => {
65
66
  // [binScript, "--flag", "value"] — the `--` separator is dropped.
66
67
  expect(out.args.slice(1)).toEqual(["--flag", "value"]);
67
68
  });
68
- it("passes through an npx server that isn't locally resolvable", () => {
69
+ // Windows cannot spawn a bare `npx` shell-lessly, so "passthrough" there
70
+ // means `node <npx-cli.js>` with the original args preserved after it.
71
+ it.skipIf(process.platform === "win32")("passes through an npx server that isn't locally resolvable", () => {
69
72
  const out = resolveStdioCommand("npx", ["-y", "@vendor/not-installed-mcp"]);
70
73
  expect(out.command).toBe("npx");
71
74
  expect(out.args).toEqual(["-y", "@vendor/not-installed-mcp"]);
@@ -101,9 +104,11 @@ describe("resolveStdioCommand npx-cache fallback (covers user-added MCPs)", () =
101
104
  seedNpxCache(tmp, "hash1", "@vendor/cool-mcp", "1.0.0");
102
105
  process.env.npm_config_cache = tmp;
103
106
  // Requested @2.0.0, only 1.0.0 cached → do NOT rewrite to the wrong version.
107
+ // The npx invocation is preserved; only its launcher differs by OS.
104
108
  const out = resolveStdioCommand("npx", ["-y", "@vendor/cool-mcp@2.0.0"]);
105
- expect(out.command).toBe("npx");
106
- expect(out.args).toEqual(["-y", "@vendor/cool-mcp@2.0.0"]);
109
+ expect(out.args.slice(-2)).toEqual(["-y", "@vendor/cool-mcp@2.0.0"]);
110
+ if (process.platform !== "win32")
111
+ expect(out.command).toBe("npx");
107
112
  });
108
113
  it("uses a cached copy whose version matches the pin exactly", () => {
109
114
  tmp = fs.mkdtempSync(path.join(os.tmpdir(), "gg-npx-cache-"));
@@ -141,4 +146,94 @@ describe("resolveStdioCommand npx-cache fallback (covers user-added MCPs)", () =
141
146
  expect(out.args[0]).toMatch(/mcp-server[/\\]build[/\\]index\.js$/);
142
147
  });
143
148
  });
149
+ describe("resolveWindowsLauncher", () => {
150
+ const exists = (present) => (p) => present.includes(p);
151
+ const env = { PATH: "C:\\nodejs", PATHEXT: ".cmd" };
152
+ it("maps npx to node + npm's npx-cli.js (the .cmd shim is unspawnable)", () => {
153
+ const got = resolveWindowsLauncher("npx", env, "win32", exists(["C:\\nodejs\\npx.cmd", "C:\\nodejs\\node_modules\\npm\\bin\\npx-cli.js"]));
154
+ expect(got).toEqual({
155
+ command: process.execPath,
156
+ prefixArgs: ["C:\\nodejs\\node_modules\\npm\\bin\\npx-cli.js"],
157
+ });
158
+ });
159
+ it("maps npm to its own CLI script", () => {
160
+ const got = resolveWindowsLauncher("npm", env, "win32", exists(["C:\\nodejs\\npm.cmd", "C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"]));
161
+ expect(got?.prefixArgs).toEqual(["C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"]);
162
+ });
163
+ it("returns null off Windows, for other commands, and when the CLI is absent", () => {
164
+ expect(resolveWindowsLauncher("npx", env, "darwin", () => true)).toBeNull();
165
+ expect(resolveWindowsLauncher("some-server", env, "win32", () => true)).toBeNull();
166
+ expect(resolveWindowsLauncher("npx", env, "win32", exists(["C:\\nodejs\\npx.cmd"]))).toBeNull();
167
+ });
168
+ });
169
+ describe("resolveWindowsExecutable", () => {
170
+ const exists = (present) => (p) => present.includes(p);
171
+ it("resolves a bare npx to npx.cmd via PATH x PATHEXT", () => {
172
+ // The MCP SDK spawns with shell:false and CreateProcess ignores PATHEXT,
173
+ // so a bare "npx" is ENOENT on Windows even though npx.cmd is right there.
174
+ expect(resolveWindowsExecutable("npx", { PATH: "C:\\nodejs;C:\\other", PATHEXT: ".com;.exe;.cmd" }, "win32", exists(["C:\\nodejs\\npx.cmd"]))).toBe("C:\\nodejs\\npx.cmd");
175
+ });
176
+ it("honors Windows' lowercase Path spelling", () => {
177
+ expect(resolveWindowsExecutable("npx", { Path: "C:\\nodejs", PATHEXT: ".cmd" }, "win32", exists(["C:\\nodejs\\npx.cmd"]))).toBe("C:\\nodejs\\npx.cmd");
178
+ });
179
+ it("never searches the current directory (no hijack by a local npx.cmd)", () => {
180
+ expect(resolveWindowsExecutable("npx", { PATH: "C:\\nodejs", PATHEXT: ".cmd" }, "win32", exists(["npx.cmd"]))).toBe("npx");
181
+ });
182
+ it("extends an explicit path in place", () => {
183
+ expect(resolveWindowsExecutable("C:\\tools\\server", { PATHEXT: ".exe" }, "win32", exists(["C:\\tools\\server.exe"]))).toBe("C:\\tools\\server.exe");
184
+ });
185
+ it("passes through off Windows, when extensioned, and when unresolvable", () => {
186
+ expect(resolveWindowsExecutable("npx", { PATH: "/usr/bin" }, "darwin", () => true)).toBe("npx");
187
+ expect(resolveWindowsExecutable("npx.cmd", {}, "win32", () => true)).toBe("npx.cmd");
188
+ expect(resolveWindowsExecutable("npx", { PATH: "C:\\nodejs" }, "win32", () => false)).toBe("npx");
189
+ });
190
+ });
191
+ /**
192
+ * REAL Windows launcher resolution — runs only on an actual Windows host (the
193
+ * CI `windows-latest` matrix leg), skipped everywhere else.
194
+ *
195
+ * The unit tests above inject a fake PATH and a fake `exists`, so they only
196
+ * prove the algorithm. This proves the PREMISE, and it is the reason the fix
197
+ * is what it is: on a real Windows box a bare `npx` is ENOENT for a shell-less
198
+ * spawn, AND the `npx.cmd` it resolves to is ALSO unspawnable (EINVAL, since
199
+ * the CVE-2024-27980 hardening). Only `node <npx-cli.js>` actually runs — a
200
+ * fact no mocked test could have told us.
201
+ */
202
+ describe.skipIf(process.platform !== "win32")("npx launching on real Windows", () => {
203
+ const run = (command, args) => spawnSync(command, args, { shell: false, encoding: "utf8", windowsHide: true });
204
+ it("confirms neither bare npx nor its .cmd shim can be spawned shell-lessly", () => {
205
+ const bare = run("npx", ["--version"]);
206
+ expect(bare.error?.code).toBe("ENOENT");
207
+ // resolveWindowsExecutable does find the real file on PATH…
208
+ const shim = resolveWindowsExecutable("npx");
209
+ expect(shim).not.toBe("npx");
210
+ expect(fs.existsSync(shim)).toBe(true);
211
+ expect(path.extname(shim).toLowerCase()).toBe(".cmd");
212
+ // …but Node refuses to execute a .cmd without a shell, so resolving the
213
+ // shim alone would NOT have fixed anything.
214
+ expect(run(shim, ["--version"]).error?.code).toBe("EINVAL");
215
+ }, 60_000);
216
+ it("resolves npx to a node + CLI-script invocation that really runs", () => {
217
+ const launcher = resolveWindowsLauncher("npx");
218
+ if (!launcher)
219
+ throw new Error("expected a Windows npx launcher");
220
+ expect(launcher.command).toBe(process.execPath);
221
+ expect(launcher.prefixArgs[0]).toMatch(/npx-cli\.js$/);
222
+ expect(fs.existsSync(launcher.prefixArgs[0])).toBe(true);
223
+ const out = run(launcher.command, [...launcher.prefixArgs, "--version"]);
224
+ expect(out.error).toBeUndefined();
225
+ expect(out.status).toBe(0);
226
+ expect(out.stdout.trim()).toMatch(/^\d+\.\d+\.\d+/);
227
+ }, 60_000);
228
+ it("hands the MCP SDK a spawnable command for the ubiquitous npx config", () => {
229
+ // `{ "command": "npx", "args": ["-y", …] }` is the most common MCP config
230
+ // in existence. Even on the passthrough branch (package not resolvable),
231
+ // what we hand the SDK must be executable, or the server dies as an opaque
232
+ // "Connection closed".
233
+ const out = resolveStdioCommand("npx", ["-y", "definitely-not-a-real-package-xyz"]);
234
+ expect(out.command).toBe(process.execPath);
235
+ expect(fs.existsSync(out.args[0])).toBe(true);
236
+ expect(out.args.slice(-2)).toEqual(["-y", "definitely-not-a-real-package-xyz"]);
237
+ });
238
+ });
144
239
  //# sourceMappingURL=resolve-stdio.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-stdio.test.js","sourceRoot":"","sources":["../../../src/core/mcp/resolve-stdio.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-stdio.test.js","sourceRoot":"","sources":["../../../src/core/mcp/resolve-stdio.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Network egress allowlist.
3
+ *
4
+ * Two layers, with very different strength:
5
+ *
6
+ * 1. **Real enforcement** — the agent's own egress paths (`web-fetch`,
7
+ * `web-search`) check every request URL and every redirect hop against the
8
+ * allowlist. Nothing gets out of those tools to a disallowed host.
9
+ *
10
+ * 2. **Defence in depth (bypassable by design)** — {@link extractCommandHosts}
11
+ * recognises the common network command shapes (`curl`, `wget`, `git`,
12
+ * `ssh`/`scp`, package installs) so `bash` can refuse an obvious egress to a
13
+ * disallowed host. It is *not* a sandbox: `python -c`, a shell variable, a
14
+ * base64'd URL, or any unrecognised tool walks straight past it. It exists
15
+ * to catch accidents, not to contain a hostile model. Real containment needs
16
+ * OS-level enforcement (sandbox-exec, Landlock/seccomp, a netns proxy).
17
+ *
18
+ * Deliberately allow-shaped, not deny-shaped: a command with no recognised host
19
+ * is never blocked, so ordinary work is unaffected.
20
+ */
21
+ /** Host pattern match: exact, or `*.example.com` matching any subdomain. */
22
+ export declare function isHostAllowed(host: string, allow: readonly string[]): boolean;
23
+ /** Hostname of a URL-ish token, or undefined when it isn't one. */
24
+ export declare function hostFromUrl(value: string): string | undefined;
25
+ /**
26
+ * Best-effort extraction of the hosts a shell command would contact.
27
+ * Returns an empty array when nothing recognisable is found — never guesses.
28
+ */
29
+ export declare function extractCommandHosts(command: string): string[];
30
+ /**
31
+ * Check a shell command against the allowlist.
32
+ * @returns an error string when a recognised host is disallowed, else null.
33
+ */
34
+ export declare function checkCommandNetwork(command: string, mode: "off" | "allowlist", allow: readonly string[]): string | null;
35
+ /** Check a URL the agent is about to fetch (or a redirect target). */
36
+ export declare function checkUrlNetwork(url: string, mode: "off" | "allowlist", allow: readonly string[]): string | null;
37
+ /** Resolved egress policy, read lazily so a settings change applies live. */
38
+ export interface NetworkPolicy {
39
+ mode: "off" | "allowlist";
40
+ allow: readonly string[];
41
+ }
42
+ export type GetNetworkPolicy = () => NetworkPolicy | undefined;
43
+ /** Check a URL against a possibly-absent policy. */
44
+ export declare function checkUrlPolicy(url: string, getPolicy?: GetNetworkPolicy): string | null;
45
+ /** Check a shell command against a possibly-absent policy. */
46
+ export declare function checkCommandPolicy(command: string, getPolicy?: GetNetworkPolicy): string | null;
47
+ //# sourceMappingURL=network-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-guard.d.ts","sourceRoot":"","sources":["../../src/core/network-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAc7E;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ7D;AA0CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoE7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,KAAK,GAAG,WAAW,EACzB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,GAAG,IAAI,CAUf;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,KAAK,GAAG,WAAW,EACzB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,GAAG,IAAI,CAUf;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC;IAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,aAAa,GAAG,SAAS,CAAC;AAE/D,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAIvF;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAI/F"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Network egress allowlist.
3
+ *
4
+ * Two layers, with very different strength:
5
+ *
6
+ * 1. **Real enforcement** — the agent's own egress paths (`web-fetch`,
7
+ * `web-search`) check every request URL and every redirect hop against the
8
+ * allowlist. Nothing gets out of those tools to a disallowed host.
9
+ *
10
+ * 2. **Defence in depth (bypassable by design)** — {@link extractCommandHosts}
11
+ * recognises the common network command shapes (`curl`, `wget`, `git`,
12
+ * `ssh`/`scp`, package installs) so `bash` can refuse an obvious egress to a
13
+ * disallowed host. It is *not* a sandbox: `python -c`, a shell variable, a
14
+ * base64'd URL, or any unrecognised tool walks straight past it. It exists
15
+ * to catch accidents, not to contain a hostile model. Real containment needs
16
+ * OS-level enforcement (sandbox-exec, Landlock/seccomp, a netns proxy).
17
+ *
18
+ * Deliberately allow-shaped, not deny-shaped: a command with no recognised host
19
+ * is never blocked, so ordinary work is unaffected.
20
+ */
21
+ /** Host pattern match: exact, or `*.example.com` matching any subdomain. */
22
+ export function isHostAllowed(host, allow) {
23
+ const target = host.trim().toLowerCase().replace(/\.$/, "");
24
+ if (!target)
25
+ return false;
26
+ for (const raw of allow) {
27
+ const pattern = raw.trim().toLowerCase().replace(/\.$/, "");
28
+ if (!pattern)
29
+ continue;
30
+ if (pattern.startsWith("*.")) {
31
+ const suffix = pattern.slice(1); // ".example.com"
32
+ if (target.endsWith(suffix) && target.length > suffix.length)
33
+ return true;
34
+ continue;
35
+ }
36
+ if (target === pattern)
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ /** Hostname of a URL-ish token, or undefined when it isn't one. */
42
+ export function hostFromUrl(value) {
43
+ const candidate = /^[a-z][a-z0-9+.-]*:\/\//i.test(value) ? value : `https://${value}`;
44
+ try {
45
+ const host = new URL(candidate).hostname.toLowerCase();
46
+ return host || undefined;
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ }
52
+ /** Default registry hosts for package managers that install from the network. */
53
+ const REGISTRY_HOSTS = {
54
+ npm: "registry.npmjs.org",
55
+ pnpm: "registry.npmjs.org",
56
+ yarn: "registry.yarnpkg.com",
57
+ bun: "registry.npmjs.org",
58
+ pip: "pypi.org",
59
+ pip3: "pypi.org",
60
+ };
61
+ const INSTALL_SUBCOMMANDS = new Set(["install", "i", "add", "ci", "update", "upgrade", "dlx", "x"]);
62
+ const GIT_NETWORK_SUBCOMMANDS = new Set(["clone", "fetch", "pull", "push", "ls-remote"]);
63
+ function stripQuotes(token) {
64
+ const trimmed = token.trim();
65
+ if (trimmed.length >= 2 &&
66
+ ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
67
+ (trimmed.startsWith("'") && trimmed.endsWith("'")))) {
68
+ return trimmed.slice(1, -1);
69
+ }
70
+ return trimmed;
71
+ }
72
+ /**
73
+ * Host part of an `scp`/`ssh` target: `[user@]host[:path]`.
74
+ * `requireRemoteMarker` distinguishes `scp file.txt host:/tmp` (only the second
75
+ * token is remote) from `ssh host` (a bare host is the target).
76
+ */
77
+ function hostFromSshTarget(token, requireRemoteMarker = false) {
78
+ if (requireRemoteMarker && !token.includes("@") && !token.includes(":"))
79
+ return undefined;
80
+ const withoutUser = token.includes("@") ? token.slice(token.lastIndexOf("@") + 1) : token;
81
+ const host = withoutUser.split(":")[0];
82
+ if (!host || host.startsWith("-") || !/^[a-z0-9._-]+$/i.test(host))
83
+ return undefined;
84
+ // A bare local path (`./dir`, `dir`) has no dots-as-domain shape.
85
+ if (!host.includes(".") && host !== "localhost")
86
+ return undefined;
87
+ return host.toLowerCase();
88
+ }
89
+ /**
90
+ * Best-effort extraction of the hosts a shell command would contact.
91
+ * Returns an empty array when nothing recognisable is found — never guesses.
92
+ */
93
+ export function extractCommandHosts(command) {
94
+ const hosts = new Set();
95
+ // Split on shell separators so `cd x && curl https://…` is inspected too.
96
+ for (const segment of command.split(/(?:&&|\|\||[;|\n])/)) {
97
+ const tokens = segment
98
+ .trim()
99
+ .split(/\s+/)
100
+ .map(stripQuotes)
101
+ .filter((t) => t.length > 0);
102
+ if (tokens.length === 0)
103
+ continue;
104
+ let index = 0;
105
+ if (tokens[index] === "sudo")
106
+ index++;
107
+ const program = (tokens[index] ?? "").split("/").pop() ?? "";
108
+ const args = tokens.slice(index + 1);
109
+ if (program === "curl" || program === "wget" || program === "http" || program === "https") {
110
+ for (const arg of args) {
111
+ if (arg.startsWith("-"))
112
+ continue;
113
+ const host = /^[a-z][a-z0-9+.-]*:\/\//i.test(arg) ? hostFromUrl(arg) : undefined;
114
+ if (host)
115
+ hosts.add(host);
116
+ }
117
+ continue;
118
+ }
119
+ if (program === "git") {
120
+ const sub = args.find((a) => !a.startsWith("-"));
121
+ if (!sub || !GIT_NETWORK_SUBCOMMANDS.has(sub))
122
+ continue;
123
+ for (const arg of args.slice(args.indexOf(sub) + 1)) {
124
+ if (arg.startsWith("-"))
125
+ continue;
126
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(arg)) {
127
+ const host = hostFromUrl(arg);
128
+ if (host)
129
+ hosts.add(host);
130
+ continue;
131
+ }
132
+ // scp-style remote: git@github.com:owner/repo.git
133
+ if (arg.includes("@") && arg.includes(":")) {
134
+ const host = hostFromSshTarget(arg);
135
+ if (host)
136
+ hosts.add(host);
137
+ }
138
+ }
139
+ continue;
140
+ }
141
+ if (program === "ssh" || program === "scp" || program === "sftp" || program === "rsync") {
142
+ // Only `ssh`'s first bare operand is a host; file-copy tools mark the
143
+ // remote side with `user@` or `host:path`.
144
+ const requireRemoteMarker = program !== "ssh";
145
+ for (const arg of args) {
146
+ if (arg.startsWith("-"))
147
+ continue;
148
+ const host = hostFromSshTarget(arg, requireRemoteMarker);
149
+ if (host) {
150
+ hosts.add(host);
151
+ break;
152
+ }
153
+ }
154
+ continue;
155
+ }
156
+ const registry = REGISTRY_HOSTS[program];
157
+ if (registry) {
158
+ const sub = args.find((a) => !a.startsWith("-"));
159
+ if (sub && INSTALL_SUBCOMMANDS.has(sub))
160
+ hosts.add(registry);
161
+ continue;
162
+ }
163
+ }
164
+ return [...hosts];
165
+ }
166
+ /**
167
+ * Check a shell command against the allowlist.
168
+ * @returns an error string when a recognised host is disallowed, else null.
169
+ */
170
+ export function checkCommandNetwork(command, mode, allow) {
171
+ if (mode !== "allowlist")
172
+ return null;
173
+ const blocked = extractCommandHosts(command).filter((host) => !isHostAllowed(host, allow));
174
+ if (blocked.length === 0)
175
+ return null;
176
+ const allowed = allow.length > 0 ? allow.join(", ") : "(none)";
177
+ return (`Blocked by the network allowlist: ${blocked.join(", ")}. ` +
178
+ `Allowed hosts: ${allowed}. Ask the user to add the host to the networkAllow setting, ` +
179
+ `or accomplish the task without network access.`);
180
+ }
181
+ /** Check a URL the agent is about to fetch (or a redirect target). */
182
+ export function checkUrlNetwork(url, mode, allow) {
183
+ if (mode !== "allowlist")
184
+ return null;
185
+ const host = hostFromUrl(url);
186
+ if (!host)
187
+ return `Blocked by the network allowlist: ${url} has no resolvable host.`;
188
+ if (isHostAllowed(host, allow))
189
+ return null;
190
+ const allowed = allow.length > 0 ? allow.join(", ") : "(none)";
191
+ return (`Blocked by the network allowlist: ${host}. Allowed hosts: ${allowed}. ` +
192
+ `Ask the user to add the host to the networkAllow setting.`);
193
+ }
194
+ /** Check a URL against a possibly-absent policy. */
195
+ export function checkUrlPolicy(url, getPolicy) {
196
+ const policy = getPolicy?.();
197
+ if (!policy)
198
+ return null;
199
+ return checkUrlNetwork(url, policy.mode, policy.allow);
200
+ }
201
+ /** Check a shell command against a possibly-absent policy. */
202
+ export function checkCommandPolicy(command, getPolicy) {
203
+ const policy = getPolicy?.();
204
+ if (!policy)
205
+ return null;
206
+ return checkCommandNetwork(command, policy.mode, policy.allow);
207
+ }
208
+ //# sourceMappingURL=network-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-guard.js","sourceRoot":"","sources":["../../src/core/network-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=network-guard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-guard.test.d.ts","sourceRoot":"","sources":["../../src/core/network-guard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { checkCommandNetwork, checkUrlNetwork, extractCommandHosts, isHostAllowed, } from "./network-guard.js";
3
+ describe("isHostAllowed", () => {
4
+ it("matches exact hosts case-insensitively", () => {
5
+ expect(isHostAllowed("GitHub.com", ["github.com"])).toBe(true);
6
+ expect(isHostAllowed("github.com", ["GITHUB.COM"])).toBe(true);
7
+ expect(isHostAllowed("gitlab.com", ["github.com"])).toBe(false);
8
+ });
9
+ it("matches a leading *. wildcard against subdomains only", () => {
10
+ expect(isHostAllowed("api.github.com", ["*.github.com"])).toBe(true);
11
+ expect(isHostAllowed("a.b.github.com", ["*.github.com"])).toBe(true);
12
+ expect(isHostAllowed("github.com", ["*.github.com"])).toBe(false);
13
+ expect(isHostAllowed("evilgithub.com", ["*.github.com"])).toBe(false);
14
+ });
15
+ it("rejects everything against an empty allowlist", () => {
16
+ expect(isHostAllowed("github.com", [])).toBe(false);
17
+ expect(isHostAllowed("", ["github.com"])).toBe(false);
18
+ });
19
+ });
20
+ describe("extractCommandHosts", () => {
21
+ it.each([
22
+ ["curl -sSL https://example.com/x.sh", ["example.com"]],
23
+ ["wget https://files.example.org/a.tar.gz -O a.tgz", ["files.example.org"]],
24
+ ["git clone https://github.com/owner/repo.git", ["github.com"]],
25
+ ["git clone git@gitlab.com:owner/repo.git", ["gitlab.com"]],
26
+ ["git push origin main", []],
27
+ ["ssh deploy@prod.example.com 'uptime'", ["prod.example.com"]],
28
+ ["scp file.txt deploy@prod.example.com:/tmp", ["prod.example.com"]],
29
+ ["npm install left-pad", ["registry.npmjs.org"]],
30
+ ["pnpm add -D vitest", ["registry.npmjs.org"]],
31
+ ["yarn add react", ["registry.yarnpkg.com"]],
32
+ ["pip install requests", ["pypi.org"]],
33
+ ["cd repo && curl https://api.example.com/v1", ["api.example.com"]],
34
+ ])("extracts hosts from %s", (command, expected) => {
35
+ expect(extractCommandHosts(command).sort()).toEqual(expected.sort());
36
+ });
37
+ it.each([
38
+ "ls -la",
39
+ "npm run build",
40
+ "git status",
41
+ "git commit -m 'curl https://example.com'",
42
+ "echo hello",
43
+ "python3 script.py",
44
+ "rm -rf node_modules",
45
+ ])("finds no host in %s (no false blocks)", (command) => {
46
+ expect(extractCommandHosts(command)).toEqual([]);
47
+ });
48
+ });
49
+ describe("checkCommandNetwork", () => {
50
+ it("is a total no-op when the mode is off", () => {
51
+ expect(checkCommandNetwork("curl https://evil.example", "off", [])).toBeNull();
52
+ });
53
+ it("blocks a disallowed host and names the setting", () => {
54
+ const error = checkCommandNetwork("curl https://evil.example/x", "allowlist", ["github.com"]);
55
+ expect(error).toContain("evil.example");
56
+ expect(error).toContain("networkAllow");
57
+ });
58
+ it("allows an allow-listed host and unrecognised commands", () => {
59
+ expect(checkCommandNetwork("git clone https://github.com/o/r.git", "allowlist", ["github.com"])).toBeNull();
60
+ expect(checkCommandNetwork("make build", "allowlist", [])).toBeNull();
61
+ });
62
+ });
63
+ describe("checkUrlNetwork", () => {
64
+ it("is a total no-op when the mode is off", () => {
65
+ expect(checkUrlNetwork("https://evil.example", "off", [])).toBeNull();
66
+ });
67
+ it("enforces the allowlist on a URL", () => {
68
+ expect(checkUrlNetwork("https://api.github.com/x", "allowlist", ["*.github.com"])).toBeNull();
69
+ expect(checkUrlNetwork("https://evil.example/x", "allowlist", ["*.github.com"])).toContain("evil.example");
70
+ });
71
+ });
72
+ //# sourceMappingURL=network-guard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-guard.test.js","sourceRoot":"","sources":["../../src/core/network-guard.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,IAAI,CAAqB;QAC1B,CAAC,oCAAoC,EAAE,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC,kDAAkD,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAC3E,CAAC,6CAA6C,EAAE,CAAC,YAAY,CAAC,CAAC;QAC/D,CAAC,yCAAyC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC,sBAAsB,EAAE,EAAE,CAAC;QAC5B,CAAC,sCAAsC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC9D,CAAC,2CAA2C,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACnE,CAAC,sBAAsB,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAChD,CAAC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC,gBAAgB,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC,sBAAsB,EAAE,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC,4CAA4C,EAAE,CAAC,iBAAiB,CAAC,CAAC;KACpE,CAAC,CAAC,wBAAwB,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QACjD,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,QAAQ;QACR,eAAe;QACf,YAAY;QACZ,0CAA0C;QAC1C,YAAY;QACZ,mBAAmB;QACnB,qBAAqB;KACtB,CAAC,CAAC,uCAAuC,EAAE,CAAC,OAAO,EAAE,EAAE;QACtD,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,mBAAmB,CAAC,6BAA6B,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACJ,mBAAmB,CAAC,sCAAsC,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC,CACzF,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,eAAe,CAAC,0BAA0B,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9F,MAAM,CAAC,eAAe,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CACxF,cAAc,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type ResolveShellOpts } from "./shell.js";
1
2
  export interface PersistentRunResult {
2
3
  exitCode: number | "TIMEOUT";
3
4
  output: string;
@@ -6,10 +7,11 @@ export declare class PersistentShell {
6
7
  private readonly cwd;
7
8
  private readonly env;
8
9
  private readonly maxOutputBytes;
10
+ private readonly shellOpts?;
9
11
  private child;
10
12
  private buffer;
11
13
  private busy;
12
- constructor(cwd: string, env: NodeJS.ProcessEnv, maxOutputBytes: number);
14
+ constructor(cwd: string, env: NodeJS.ProcessEnv, maxOutputBytes: number, shellOpts?: ResolveShellOpts | undefined);
13
15
  /** True while a previous persistent command is still running. */
14
16
  get isBusy(): boolean;
15
17
  private ensureChild;
@@ -1 +1 @@
1
- {"version":3,"file":"persistent-shell.d.ts","sourceRoot":"","sources":["../../src/core/persistent-shell.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPjC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAS;gBAGF,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,cAAc,EAAE,MAAM;IAGzC,iEAAiE;IACjE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,WAAW;IAkBnB;;;;;;OAMG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IAgG/B,iEAAiE;IACjE,IAAI,IAAI,IAAI;CAKb"}
1
+ {"version":3,"file":"persistent-shell.d.ts","sourceRoot":"","sources":["../../src/core/persistent-shell.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAR7B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAS;gBAGF,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,gBAAgB,YAAA;IAG/C,iEAAiE;IACjE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,OAAO,CAAC,WAAW;IAyBnB;;;;;;OAMG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IAgG/B,iEAAiE;IACjE,IAAI,IAAI,IAAI;CAKb"}