@sheason/pi-coding-agent 0.74.1-sheason.0 → 0.78.0-sheason.0.6.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/CHANGELOG.md +256 -4
  2. package/README.md +16 -8
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/cli/args.d.ts +7 -2
  6. package/dist/cli/args.d.ts.map +1 -1
  7. package/dist/cli/args.js +49 -1
  8. package/dist/cli/args.js.map +1 -1
  9. package/dist/cli/config-selector.d.ts +2 -2
  10. package/dist/cli/config-selector.d.ts.map +1 -1
  11. package/dist/cli/config-selector.js +1 -1
  12. package/dist/cli/config-selector.js.map +1 -1
  13. package/dist/cli/file-processor.d.ts.map +1 -1
  14. package/dist/cli/file-processor.js +2 -3
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts +1 -1
  20. package/dist/cli/list-models.d.ts.map +1 -1
  21. package/dist/cli/list-models.js.map +1 -1
  22. package/dist/cli/session-picker.d.ts +1 -1
  23. package/dist/cli/session-picker.d.ts.map +1 -1
  24. package/dist/cli/session-picker.js.map +1 -1
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +4 -6
  27. package/dist/cli.js.map +1 -1
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +61 -32
  30. package/dist/config.js.map +1 -1
  31. package/dist/core/agent-session-proxy.d.ts +268 -0
  32. package/dist/core/agent-session-proxy.d.ts.map +1 -0
  33. package/dist/core/agent-session-proxy.js +2 -0
  34. package/dist/core/agent-session-proxy.js.map +1 -0
  35. package/dist/core/agent-session-runtime.d.ts +10 -10
  36. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  37. package/dist/core/agent-session-runtime.js +14 -14
  38. package/dist/core/agent-session-runtime.js.map +1 -1
  39. package/dist/core/agent-session-services.d.ts +8 -7
  40. package/dist/core/agent-session-services.d.ts.map +1 -1
  41. package/dist/core/agent-session-services.js +4 -2
  42. package/dist/core/agent-session-services.js.map +1 -1
  43. package/dist/core/agent-session.d.ts +60 -27
  44. package/dist/core/agent-session.d.ts.map +1 -1
  45. package/dist/core/agent-session.js +303 -177
  46. package/dist/core/agent-session.js.map +1 -1
  47. package/dist/core/auth-guidance.d.ts.map +1 -1
  48. package/dist/core/auth-guidance.js.map +1 -1
  49. package/dist/core/auth-storage.d.ts +1 -1
  50. package/dist/core/auth-storage.d.ts.map +1 -1
  51. package/dist/core/auth-storage.js +3 -2
  52. package/dist/core/auth-storage.js.map +1 -1
  53. package/dist/core/bash-executor.d.ts +1 -1
  54. package/dist/core/bash-executor.d.ts.map +1 -1
  55. package/dist/core/bash-executor.js.map +1 -1
  56. package/dist/core/compaction/branch-summarization.d.ts +3 -3
  57. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  58. package/dist/core/compaction/branch-summarization.js.map +1 -1
  59. package/dist/core/compaction/compaction.d.ts +5 -5
  60. package/dist/core/compaction/compaction.d.ts.map +1 -1
  61. package/dist/core/compaction/compaction.js +41 -37
  62. package/dist/core/compaction/compaction.js.map +1 -1
  63. package/dist/core/compaction/index.d.ts +3 -3
  64. package/dist/core/compaction/index.d.ts.map +1 -1
  65. package/dist/core/compaction/index.js.map +1 -1
  66. package/dist/core/exec.d.ts.map +1 -1
  67. package/dist/core/exec.js.map +1 -1
  68. package/dist/core/export-html/index.d.ts +1 -1
  69. package/dist/core/export-html/index.d.ts.map +1 -1
  70. package/dist/core/export-html/index.js +8 -6
  71. package/dist/core/export-html/index.js.map +1 -1
  72. package/dist/core/export-html/template.js +23 -6
  73. package/dist/core/export-html/tool-renderer.d.ts +2 -2
  74. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  75. package/dist/core/export-html/tool-renderer.js.map +1 -1
  76. package/dist/core/extensions/index.d.ts +8 -8
  77. package/dist/core/extensions/index.d.ts.map +1 -1
  78. package/dist/core/extensions/index.js.map +1 -1
  79. package/dist/core/extensions/loader.d.ts +2 -2
  80. package/dist/core/extensions/loader.d.ts.map +1 -1
  81. package/dist/core/extensions/loader.js +17 -34
  82. package/dist/core/extensions/loader.js.map +1 -1
  83. package/dist/core/extensions/runner.d.ts +12 -7
  84. package/dist/core/extensions/runner.d.ts.map +1 -1
  85. package/dist/core/extensions/runner.js +36 -2
  86. package/dist/core/extensions/runner.js.map +1 -1
  87. package/dist/core/extensions/types.d.ts +26 -24
  88. package/dist/core/extensions/types.d.ts.map +1 -1
  89. package/dist/core/extensions/types.js.map +1 -1
  90. package/dist/core/extensions/wrapper.d.ts +2 -2
  91. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  92. package/dist/core/extensions/wrapper.js.map +1 -1
  93. package/dist/core/footer-data-provider.d.ts +3 -1
  94. package/dist/core/footer-data-provider.d.ts.map +1 -1
  95. package/dist/core/footer-data-provider.js +4 -0
  96. package/dist/core/footer-data-provider.js.map +1 -1
  97. package/dist/core/http-dispatcher.d.ts +21 -0
  98. package/dist/core/http-dispatcher.d.ts.map +1 -0
  99. package/dist/core/http-dispatcher.js +48 -0
  100. package/dist/core/http-dispatcher.js.map +1 -0
  101. package/dist/core/index.d.ts +8 -8
  102. package/dist/core/index.d.ts.map +1 -1
  103. package/dist/core/index.js.map +1 -1
  104. package/dist/core/keybindings.d.ts.map +1 -1
  105. package/dist/core/keybindings.js.map +1 -1
  106. package/dist/core/local-agent-session-proxy.d.ts +82 -0
  107. package/dist/core/local-agent-session-proxy.d.ts.map +1 -0
  108. package/dist/core/local-agent-session-proxy.js +531 -0
  109. package/dist/core/local-agent-session-proxy.js.map +1 -0
  110. package/dist/core/messages.d.ts +0 -9
  111. package/dist/core/messages.d.ts.map +1 -1
  112. package/dist/core/messages.js +0 -10
  113. package/dist/core/messages.js.map +1 -1
  114. package/dist/core/model-registry.d.ts +4 -4
  115. package/dist/core/model-registry.d.ts.map +1 -1
  116. package/dist/core/model-registry.js +72 -16
  117. package/dist/core/model-registry.js.map +1 -1
  118. package/dist/core/model-resolver.d.ts +1 -1
  119. package/dist/core/model-resolver.d.ts.map +1 -1
  120. package/dist/core/model-resolver.js +1 -1
  121. package/dist/core/model-resolver.js.map +1 -1
  122. package/dist/core/output-guard.d.ts +1 -0
  123. package/dist/core/output-guard.d.ts.map +1 -1
  124. package/dist/core/output-guard.js +52 -22
  125. package/dist/core/output-guard.js.map +1 -1
  126. package/dist/core/package-manager.d.ts +7 -1
  127. package/dist/core/package-manager.d.ts.map +1 -1
  128. package/dist/core/package-manager.js +129 -64
  129. package/dist/core/package-manager.js.map +1 -1
  130. package/dist/core/prompt-templates.d.ts +1 -1
  131. package/dist/core/prompt-templates.d.ts.map +1 -1
  132. package/dist/core/prompt-templates.js +12 -24
  133. package/dist/core/prompt-templates.js.map +1 -1
  134. package/dist/core/provider-display-names.d.ts.map +1 -1
  135. package/dist/core/provider-display-names.js +0 -1
  136. package/dist/core/provider-display-names.js.map +1 -1
  137. package/dist/core/resolve-config-value.d.ts +9 -1
  138. package/dist/core/resolve-config-value.d.ts.map +1 -1
  139. package/dist/core/resolve-config-value.js +134 -11
  140. package/dist/core/resolve-config-value.js.map +1 -1
  141. package/dist/core/resource-loader.d.ts +13 -10
  142. package/dist/core/resource-loader.d.ts.map +1 -1
  143. package/dist/core/resource-loader.js +41 -33
  144. package/dist/core/resource-loader.js.map +1 -1
  145. package/dist/core/sdk.d.ts +15 -13
  146. package/dist/core/sdk.d.ts.map +1 -1
  147. package/dist/core/sdk.js +24 -17
  148. package/dist/core/sdk.js.map +1 -1
  149. package/dist/core/session-manager.d.ts +20 -10
  150. package/dist/core/session-manager.d.ts.map +1 -1
  151. package/dist/core/session-manager.js +201 -106
  152. package/dist/core/session-manager.js.map +1 -1
  153. package/dist/core/settings-manager.d.ts +5 -0
  154. package/dist/core/settings-manager.d.ts.map +1 -1
  155. package/dist/core/settings-manager.js +31 -13
  156. package/dist/core/settings-manager.js.map +1 -1
  157. package/dist/core/skills.d.ts +2 -2
  158. package/dist/core/skills.d.ts.map +1 -1
  159. package/dist/core/skills.js +10 -27
  160. package/dist/core/skills.js.map +1 -1
  161. package/dist/core/slash-commands.d.ts +1 -1
  162. package/dist/core/slash-commands.d.ts.map +1 -1
  163. package/dist/core/slash-commands.js.map +1 -1
  164. package/dist/core/source-info.d.ts +1 -1
  165. package/dist/core/source-info.d.ts.map +1 -1
  166. package/dist/core/source-info.js.map +1 -1
  167. package/dist/core/system-prompt.d.ts +1 -1
  168. package/dist/core/system-prompt.d.ts.map +1 -1
  169. package/dist/core/system-prompt.js +16 -9
  170. package/dist/core/system-prompt.js.map +1 -1
  171. package/dist/core/telemetry.d.ts +1 -1
  172. package/dist/core/telemetry.d.ts.map +1 -1
  173. package/dist/core/telemetry.js.map +1 -1
  174. package/dist/core/tools/bash.d.ts +2 -2
  175. package/dist/core/tools/bash.d.ts.map +1 -1
  176. package/dist/core/tools/bash.js +55 -54
  177. package/dist/core/tools/bash.js.map +1 -1
  178. package/dist/core/tools/edit-diff.d.ts +3 -1
  179. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  180. package/dist/core/tools/edit-diff.js +8 -1
  181. package/dist/core/tools/edit-diff.js.map +1 -1
  182. package/dist/core/tools/edit.d.ts +5 -3
  183. package/dist/core/tools/edit.d.ts.map +1 -1
  184. package/dist/core/tools/edit.js +51 -91
  185. package/dist/core/tools/edit.js.map +1 -1
  186. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  187. package/dist/core/tools/file-mutation-queue.js +27 -12
  188. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  189. package/dist/core/tools/find.d.ts +2 -2
  190. package/dist/core/tools/find.d.ts.map +1 -1
  191. package/dist/core/tools/find.js +2 -3
  192. package/dist/core/tools/find.js.map +1 -1
  193. package/dist/core/tools/grep.d.ts +2 -2
  194. package/dist/core/tools/grep.d.ts.map +1 -1
  195. package/dist/core/tools/grep.js +3 -3
  196. package/dist/core/tools/grep.js.map +1 -1
  197. package/dist/core/tools/index.d.ts +17 -17
  198. package/dist/core/tools/index.d.ts.map +1 -1
  199. package/dist/core/tools/index.js.map +1 -1
  200. package/dist/core/tools/ls.d.ts +2 -2
  201. package/dist/core/tools/ls.d.ts.map +1 -1
  202. package/dist/core/tools/ls.js +10 -12
  203. package/dist/core/tools/ls.js.map +1 -1
  204. package/dist/core/tools/output-accumulator.d.ts +3 -1
  205. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  206. package/dist/core/tools/output-accumulator.js +9 -3
  207. package/dist/core/tools/output-accumulator.js.map +1 -1
  208. package/dist/core/tools/path-utils.d.ts +2 -0
  209. package/dist/core/tools/path-utils.d.ts.map +1 -1
  210. package/dist/core/tools/path-utils.js +39 -21
  211. package/dist/core/tools/path-utils.js.map +1 -1
  212. package/dist/core/tools/read.d.ts +2 -2
  213. package/dist/core/tools/read.d.ts.map +1 -1
  214. package/dist/core/tools/read.js +15 -15
  215. package/dist/core/tools/read.js.map +1 -1
  216. package/dist/core/tools/render-utils.d.ts +5 -2
  217. package/dist/core/tools/render-utils.d.ts.map +1 -1
  218. package/dist/core/tools/render-utils.js +17 -1
  219. package/dist/core/tools/render-utils.js.map +1 -1
  220. package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  221. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  222. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  223. package/dist/core/tools/truncate.d.ts.map +1 -1
  224. package/dist/core/tools/truncate.js +12 -2
  225. package/dist/core/tools/truncate.js.map +1 -1
  226. package/dist/core/tools/write.d.ts +1 -1
  227. package/dist/core/tools/write.d.ts.map +1 -1
  228. package/dist/core/tools/write.js +25 -41
  229. package/dist/core/tools/write.js.map +1 -1
  230. package/dist/d-pi-worker.d.ts +12 -0
  231. package/dist/d-pi-worker.d.ts.map +1 -0
  232. package/dist/d-pi-worker.js +9 -0
  233. package/dist/d-pi-worker.js.map +1 -0
  234. package/dist/index.d.ts +30 -28
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +5 -3
  237. package/dist/index.js.map +1 -1
  238. package/dist/main.d.ts +1 -1
  239. package/dist/main.d.ts.map +1 -1
  240. package/dist/main.js +100 -39
  241. package/dist/main.js.map +1 -1
  242. package/dist/migrations.d.ts.map +1 -1
  243. package/dist/migrations.js +118 -1
  244. package/dist/migrations.js.map +1 -1
  245. package/dist/modes/connect/auth-headers.d.ts +2 -0
  246. package/dist/modes/connect/auth-headers.d.ts.map +1 -0
  247. package/dist/modes/connect/auth-headers.js +2 -0
  248. package/dist/modes/connect/auth-headers.js.map +1 -0
  249. package/dist/modes/connect/client-extension-sync.d.ts +13 -0
  250. package/dist/modes/connect/client-extension-sync.d.ts.map +1 -0
  251. package/dist/modes/connect/client-extension-sync.js +51 -0
  252. package/dist/modes/connect/client-extension-sync.js.map +1 -0
  253. package/dist/modes/connect/connect-mode.d.ts +6 -0
  254. package/dist/modes/connect/connect-mode.d.ts.map +1 -0
  255. package/dist/modes/connect/connect-mode.js +29 -0
  256. package/dist/modes/connect/connect-mode.js.map +1 -0
  257. package/dist/modes/connect/remote-agent-session-proxy.d.ts +81 -0
  258. package/dist/modes/connect/remote-agent-session-proxy.d.ts.map +1 -0
  259. package/dist/modes/connect/remote-agent-session-proxy.js +326 -0
  260. package/dist/modes/connect/remote-agent-session-proxy.js.map +1 -0
  261. package/dist/modes/connect/sse-client.d.ts +18 -0
  262. package/dist/modes/connect/sse-client.d.ts.map +1 -0
  263. package/dist/modes/connect/sse-client.js +90 -0
  264. package/dist/modes/connect/sse-client.js.map +1 -0
  265. package/dist/modes/index.d.ts +5 -5
  266. package/dist/modes/index.d.ts.map +1 -1
  267. package/dist/modes/index.js.map +1 -1
  268. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  269. package/dist/modes/interactive/components/armin.js.map +1 -1
  270. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  271. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  272. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  273. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  274. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  275. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  276. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  277. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  278. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  279. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  280. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  281. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  282. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  283. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  284. package/dist/modes/interactive/components/config-selector.d.ts +4 -4
  285. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  286. package/dist/modes/interactive/components/config-selector.js +8 -5
  287. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  288. package/dist/modes/interactive/components/countdown-timer.d.ts +2 -2
  289. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  290. package/dist/modes/interactive/components/countdown-timer.js +2 -2
  291. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  292. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  293. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  294. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  295. package/dist/modes/interactive/components/custom-message.d.ts +2 -2
  296. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  297. package/dist/modes/interactive/components/custom-message.js +0 -1
  298. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  299. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  300. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  301. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  302. package/dist/modes/interactive/components/diff.js.map +1 -1
  303. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  304. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  305. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  306. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  307. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  308. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  309. package/dist/modes/interactive/components/extension-editor.js +14 -6
  310. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  311. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  312. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  313. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  314. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  315. package/dist/modes/interactive/components/footer.d.ts +15 -4
  316. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  317. package/dist/modes/interactive/components/footer.js +126 -8
  318. package/dist/modes/interactive/components/footer.js.map +1 -1
  319. package/dist/modes/interactive/components/index.d.ts +31 -31
  320. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  321. package/dist/modes/interactive/components/index.js.map +1 -1
  322. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  323. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  324. package/dist/modes/interactive/components/login-dialog.d.ts +7 -1
  325. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  326. package/dist/modes/interactive/components/login-dialog.js +28 -5
  327. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  328. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  329. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  330. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  331. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  332. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  333. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  334. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  335. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  336. package/dist/modes/interactive/components/session-selector-search.d.ts +1 -1
  337. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  338. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  339. package/dist/modes/interactive/components/session-selector.d.ts +3 -3
  340. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  341. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  342. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  343. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  344. package/dist/modes/interactive/components/settings-selector.js +15 -0
  345. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  346. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  347. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  348. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  349. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  350. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  351. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  352. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  353. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  354. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  355. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  356. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  357. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  358. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  359. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  360. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  361. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  362. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  363. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  364. package/dist/modes/interactive/components/user-message.js.map +1 -1
  365. package/dist/modes/interactive/interactive-mode.d.ts +53 -7
  366. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  367. package/dist/modes/interactive/interactive-mode.js +1247 -205
  368. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  369. package/dist/modes/interactive/theme/dark.json +5 -4
  370. package/dist/modes/interactive/theme/light.json +5 -4
  371. package/dist/modes/interactive/theme/theme.d.ts +22 -3
  372. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  373. package/dist/modes/interactive/theme/theme.js +130 -69
  374. package/dist/modes/interactive/theme/theme.js.map +1 -1
  375. package/dist/modes/print-mode.d.ts +1 -1
  376. package/dist/modes/print-mode.d.ts.map +1 -1
  377. package/dist/modes/print-mode.js.map +1 -1
  378. package/dist/modes/rpc/rpc-client.d.ts +8 -5
  379. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  380. package/dist/modes/rpc/rpc-client.js +65 -8
  381. package/dist/modes/rpc/rpc-client.js.map +1 -1
  382. package/dist/modes/rpc/rpc-mode.d.ts +2 -2
  383. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  384. package/dist/modes/rpc/rpc-mode.js +18 -4
  385. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  386. package/dist/modes/rpc/rpc-types.d.ts +5 -4
  387. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  388. package/dist/modes/rpc/rpc-types.js.map +1 -1
  389. package/dist/modes/serve/api-handlers.d.ts +4 -0
  390. package/dist/modes/serve/api-handlers.d.ts.map +1 -0
  391. package/dist/modes/serve/api-handlers.js +324 -0
  392. package/dist/modes/serve/api-handlers.js.map +1 -0
  393. package/dist/modes/serve/http-server.d.ts +14 -0
  394. package/dist/modes/serve/http-server.d.ts.map +1 -0
  395. package/dist/modes/serve/http-server.js +94 -0
  396. package/dist/modes/serve/http-server.js.map +1 -0
  397. package/dist/modes/serve/serve-mode.d.ts +10 -0
  398. package/dist/modes/serve/serve-mode.d.ts.map +1 -0
  399. package/dist/modes/serve/serve-mode.js +217 -0
  400. package/dist/modes/serve/serve-mode.js.map +1 -0
  401. package/dist/package-manager-cli.d.ts.map +1 -1
  402. package/dist/package-manager-cli.js +62 -7
  403. package/dist/package-manager-cli.js.map +1 -1
  404. package/dist/utils/ansi.d.ts.map +1 -1
  405. package/dist/utils/ansi.js +47 -72
  406. package/dist/utils/ansi.js.map +1 -1
  407. package/dist/utils/changelog.d.ts +1 -1
  408. package/dist/utils/changelog.d.ts.map +1 -1
  409. package/dist/utils/changelog.js.map +1 -1
  410. package/dist/utils/child-process.d.ts +5 -2
  411. package/dist/utils/child-process.d.ts.map +1 -1
  412. package/dist/utils/child-process.js +9 -7
  413. package/dist/utils/child-process.js.map +1 -1
  414. package/dist/utils/clipboard-image.d.ts.map +1 -1
  415. package/dist/utils/clipboard-image.js.map +1 -1
  416. package/dist/utils/clipboard-native.d.ts +3 -1
  417. package/dist/utils/clipboard-native.d.ts.map +1 -1
  418. package/dist/utils/clipboard-native.js +14 -8
  419. package/dist/utils/clipboard-native.js.map +1 -1
  420. package/dist/utils/clipboard.d.ts.map +1 -1
  421. package/dist/utils/clipboard.js.map +1 -1
  422. package/dist/utils/deprecation.d.ts +4 -0
  423. package/dist/utils/deprecation.d.ts.map +1 -0
  424. package/dist/utils/deprecation.js +13 -0
  425. package/dist/utils/deprecation.js.map +1 -0
  426. package/dist/utils/exif-orientation.d.ts +1 -1
  427. package/dist/utils/exif-orientation.d.ts.map +1 -1
  428. package/dist/utils/exif-orientation.js.map +1 -1
  429. package/dist/utils/html.d.ts +7 -0
  430. package/dist/utils/html.d.ts.map +1 -0
  431. package/dist/utils/html.js +40 -0
  432. package/dist/utils/html.js.map +1 -0
  433. package/dist/utils/image-convert.d.ts.map +1 -1
  434. package/dist/utils/image-convert.js.map +1 -1
  435. package/dist/utils/image-resize-core.d.ts +30 -0
  436. package/dist/utils/image-resize-core.d.ts.map +1 -0
  437. package/dist/utils/image-resize-core.js +124 -0
  438. package/dist/utils/image-resize-core.js.map +1 -0
  439. package/dist/utils/image-resize-worker.d.ts +2 -0
  440. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  441. package/dist/utils/image-resize-worker.js +31 -0
  442. package/dist/utils/image-resize-worker.js.map +1 -0
  443. package/dist/utils/image-resize.d.ts +7 -27
  444. package/dist/utils/image-resize.d.ts.map +1 -1
  445. package/dist/utils/image-resize.js +75 -131
  446. package/dist/utils/image-resize.js.map +1 -1
  447. package/dist/utils/json.d.ts +3 -0
  448. package/dist/utils/json.d.ts.map +1 -0
  449. package/dist/utils/json.js +7 -0
  450. package/dist/utils/json.js.map +1 -0
  451. package/dist/utils/paths.d.ts +16 -1
  452. package/dist/utils/paths.d.ts.map +1 -1
  453. package/dist/utils/paths.js +49 -7
  454. package/dist/utils/paths.js.map +1 -1
  455. package/dist/utils/shell.d.ts.map +1 -1
  456. package/dist/utils/shell.js +6 -1
  457. package/dist/utils/shell.js.map +1 -1
  458. package/dist/utils/syntax-highlight.d.ts +12 -0
  459. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  460. package/dist/utils/syntax-highlight.js +118 -0
  461. package/dist/utils/syntax-highlight.js.map +1 -0
  462. package/dist/utils/tools-manager.d.ts.map +1 -1
  463. package/dist/utils/tools-manager.js +4 -1
  464. package/dist/utils/tools-manager.js.map +1 -1
  465. package/dist/utils/version-check.d.ts +2 -1
  466. package/dist/utils/version-check.d.ts.map +1 -1
  467. package/dist/utils/version-check.js +9 -4
  468. package/dist/utils/version-check.js.map +1 -1
  469. package/dist/utils/windows-self-update.d.ts +3 -0
  470. package/dist/utils/windows-self-update.d.ts.map +1 -0
  471. package/dist/utils/windows-self-update.js +77 -0
  472. package/dist/utils/windows-self-update.js.map +1 -0
  473. package/docs/custom-provider.md +111 -21
  474. package/docs/development.md +1 -1
  475. package/docs/extensions.md +13 -7
  476. package/docs/index.md +13 -3
  477. package/docs/models.md +32 -13
  478. package/docs/packages.md +9 -6
  479. package/docs/providers.md +13 -5
  480. package/docs/quickstart.md +24 -1
  481. package/docs/rpc.md +2 -1
  482. package/docs/sdk.md +8 -0
  483. package/docs/session-format.md +1 -1
  484. package/docs/sessions.md +8 -0
  485. package/docs/settings.md +8 -6
  486. package/docs/skills.md +3 -4
  487. package/docs/terminal-setup.md +8 -0
  488. package/docs/termux.md +3 -3
  489. package/docs/tui.md +2 -2
  490. package/docs/usage.md +13 -2
  491. package/examples/extensions/README.md +1 -0
  492. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  493. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  494. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  495. package/examples/extensions/custom-provider-gitlab-duo/index.ts +54 -3
  496. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  497. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  498. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  499. package/examples/extensions/doom-overlay/index.ts +3 -3
  500. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  501. package/examples/extensions/input-transform-streaming.ts +39 -0
  502. package/examples/extensions/overlay-qa-tests.ts +97 -66
  503. package/examples/extensions/overlay-test.ts +7 -4
  504. package/examples/extensions/plan-mode/index.ts +1 -1
  505. package/examples/extensions/sandbox/package-lock.json +2 -2
  506. package/examples/extensions/sandbox/package.json +2 -2
  507. package/examples/extensions/subagent/README.md +3 -0
  508. package/examples/extensions/subagent/index.ts +42 -20
  509. package/examples/extensions/with-deps/package-lock.json +2 -2
  510. package/examples/extensions/with-deps/package.json +3 -3
  511. package/npm-shrinkwrap.json +1790 -0
  512. package/package.json +39 -32
  513. package/dist/utils/uuid.d.ts +0 -2
  514. package/dist/utils/uuid.d.ts.map +0 -1
  515. package/dist/utils/uuid.js +0 -40
  516. package/dist/utils/uuid.js.map +0 -1
@@ -1,4 +1,3 @@
1
- import { spawn, spawnSync } from "node:child_process";
2
1
  import { createHash } from "node:crypto";
3
2
  import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
4
3
  import { homedir, tmpdir } from "node:os";
@@ -26,9 +25,9 @@ import { globSync } from "glob";
26
25
  import ignore from "ignore";
27
26
  import { minimatch } from "minimatch";
28
27
  import { CONFIG_DIR_NAME } from "../config.js";
29
- import { shouldUseWindowsShell } from "../utils/child-process.js";
28
+ import { spawnProcess, spawnProcessSync } from "../utils/child-process.js";
30
29
  import { parseGitUrl } from "../utils/git.js";
31
- import { canonicalizePath, isLocalPath } from "../utils/paths.js";
30
+ import { canonicalizePath, isLocalPath, markPathIgnoredByCloudSync, resolvePath } from "../utils/paths.js";
32
31
  import { isStdoutTakenOver } from "./output-guard.js";
33
32
  const NETWORK_TIMEOUT_MS = 10000;
34
33
  const UPDATE_CHECK_CONCURRENCY = 4;
@@ -578,8 +577,8 @@ export class DefaultPackageManager {
578
577
  globalNpmRootCommandKey;
579
578
  progressCallback;
580
579
  constructor(options) {
581
- this.cwd = options.cwd;
582
- this.agentDir = options.agentDir;
580
+ this.cwd = resolvePath(options.cwd);
581
+ this.agentDir = resolvePath(options.agentDir);
583
582
  this.settingsManager = options.settingsManager;
584
583
  }
585
584
  setProgressCallback(callback) {
@@ -590,9 +589,22 @@ export class DefaultPackageManager {
590
589
  const currentSettings = scope === "project" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();
591
590
  const currentPackages = currentSettings.packages ?? [];
592
591
  const normalizedSource = this.normalizePackageSourceForSettings(source, scope);
593
- const exists = currentPackages.some((existing) => this.packageSourcesMatch(existing, source, scope));
594
- if (exists) {
595
- return false;
592
+ const matchIndex = currentPackages.findIndex((existing) => this.packageSourcesMatch(existing, source, scope));
593
+ if (matchIndex !== -1) {
594
+ const existing = currentPackages[matchIndex];
595
+ if (this.getPackageSourceString(existing) === normalizedSource) {
596
+ return false;
597
+ }
598
+ const nextPackages = [...currentPackages];
599
+ nextPackages[matchIndex] =
600
+ typeof existing === "string" ? normalizedSource : { ...existing, source: normalizedSource };
601
+ if (scope === "project") {
602
+ this.settingsManager.setProjectPackages(nextPackages);
603
+ }
604
+ else {
605
+ this.settingsManager.setPackages(nextPackages);
606
+ }
607
+ return true;
596
608
  }
597
609
  const nextPackages = [...currentPackages, normalizedSource];
598
610
  if (scope === "project") {
@@ -802,14 +814,16 @@ export class DefaultPackageManager {
802
814
  const gitCandidates = [];
803
815
  for (const entry of sources) {
804
816
  const parsed = this.parseSource(entry.source);
805
- if (parsed.type === "local" || parsed.pinned) {
806
- continue;
807
- }
817
+ // Pinned npm versions are fixed. Pinned git refs are configured checkout targets,
818
+ // so include them to reconcile an existing clone when the configured ref changes.
808
819
  if (parsed.type === "npm") {
809
- npmCandidates.push({ ...entry, parsed });
810
- continue;
820
+ if (!parsed.pinned) {
821
+ npmCandidates.push({ ...entry, parsed });
822
+ }
823
+ }
824
+ else if (parsed.type === "git") {
825
+ gitCandidates.push({ ...entry, parsed });
811
826
  }
812
- gitCandidates.push({ ...entry, parsed });
813
827
  }
814
828
  const npmCheckTasks = npmCandidates.map((entry) => async () => ({
815
829
  entry,
@@ -845,7 +859,7 @@ export class DefaultPackageManager {
845
859
  await Promise.all(tasks);
846
860
  }
847
861
  async shouldUpdateNpmSource(source, scope) {
848
- const installedPath = this.getNpmInstallPath(source, scope);
862
+ const installedPath = this.getManagedNpmInstallPath(source, scope);
849
863
  const installedVersion = existsSync(installedPath) ? this.getInstalledNpmVersion(installedPath) : undefined;
850
864
  if (!installedVersion) {
851
865
  return true;
@@ -871,13 +885,9 @@ export class DefaultPackageManager {
871
885
  });
872
886
  }
873
887
  async installNpmBatch(specs, scope) {
874
- if (scope === "user") {
875
- await this.runNpmCommand(["install", "-g", ...specs]);
876
- return;
877
- }
878
888
  const installRoot = this.getNpmInstallRoot(scope, false);
879
889
  this.ensureNpmProject(installRoot);
880
- await this.runNpmCommand(["install", ...specs, "--prefix", installRoot]);
890
+ await this.runNpmCommand(this.getNpmInstallArgs(specs, installRoot));
881
891
  }
882
892
  async checkForAvailableUpdates() {
883
893
  if (isOfflineModeEnabled()) {
@@ -963,13 +973,14 @@ export class DefaultPackageManager {
963
973
  return true;
964
974
  };
965
975
  if (parsed.type === "npm") {
966
- const installedPath = this.getNpmInstallPath(parsed, scope);
976
+ let installedPath = this.getNpmInstallPath(parsed, scope);
967
977
  const needsInstall = !existsSync(installedPath) ||
968
978
  (parsed.pinned && !(await this.installedNpmMatchesPinnedVersion(parsed, installedPath)));
969
979
  if (needsInstall) {
970
980
  const installed = await installMissing();
971
981
  if (!installed)
972
982
  continue;
983
+ installedPath = this.getNpmInstallPath(parsed, scope);
973
984
  }
974
985
  metadata.baseDir = installedPath;
975
986
  this.collectPackageResources(installedPath, accumulator, filter, metadata);
@@ -1363,6 +1374,13 @@ export class DefaultPackageManager {
1363
1374
  }
1364
1375
  return { command, args };
1365
1376
  }
1377
+ getPackageManagerName() {
1378
+ const npmCommand = this.getNpmCommand();
1379
+ const commandParts = [npmCommand.command, ...npmCommand.args];
1380
+ const separatorIndex = commandParts.lastIndexOf("--");
1381
+ const packageManagerCommand = separatorIndex >= 0 ? commandParts[separatorIndex + 1] : npmCommand.command;
1382
+ return packageManagerCommand ? basename(packageManagerCommand).replace(/\.(cmd|exe)$/i, "") : "";
1383
+ }
1366
1384
  async runNpmCommand(args, options) {
1367
1385
  const npmCommand = this.getNpmCommand();
1368
1386
  await this.runCommand(npmCommand.command, [...npmCommand.args, ...args], options);
@@ -1378,29 +1396,53 @@ export class DefaultPackageManager {
1378
1396
  const npmCommand = this.getNpmCommand();
1379
1397
  return this.runCommandSync(npmCommand.command, [...npmCommand.args, ...args]);
1380
1398
  }
1399
+ getNpmInstallArgs(specs, installRoot) {
1400
+ const packageManagerName = this.getPackageManagerName();
1401
+ // Extension packages run inside pi and resolve pi APIs through loader aliases/virtual modules.
1402
+ // Disable peer dependency resolution for managed installs (npm's --legacy-peer-deps, and
1403
+ // equivalent bun/pnpm settings) so package managers do not install or solve host-provided
1404
+ // @earendil-works/pi-* peers. Stale auto-installed pi peers can otherwise block updates.
1405
+ if (packageManagerName === "bun") {
1406
+ return ["install", ...specs, "--cwd", installRoot, "--omit=peer"];
1407
+ }
1408
+ if (packageManagerName === "pnpm") {
1409
+ return [
1410
+ "install",
1411
+ ...specs,
1412
+ "--prefix",
1413
+ installRoot,
1414
+ "--config.auto-install-peers=false",
1415
+ "--config.strict-peer-dependencies=false",
1416
+ "--config.strict-dep-builds=false",
1417
+ ];
1418
+ }
1419
+ return ["install", ...specs, "--prefix", installRoot, "--legacy-peer-deps"];
1420
+ }
1381
1421
  async installNpm(source, scope, temporary) {
1382
- if (scope === "user" && !temporary) {
1383
- await this.runNpmCommand(["install", "-g", source.spec]);
1384
- return;
1385
- }
1386
1422
  const installRoot = this.getNpmInstallRoot(scope, temporary);
1387
1423
  this.ensureNpmProject(installRoot);
1388
- await this.runNpmCommand(["install", source.spec, "--prefix", installRoot]);
1424
+ await this.runNpmCommand(this.getNpmInstallArgs([source.spec], installRoot));
1389
1425
  }
1390
1426
  async uninstallNpm(source, scope) {
1391
- if (scope === "user") {
1392
- await this.runNpmCommand(["uninstall", "-g", source.name]);
1393
- return;
1394
- }
1395
1427
  const installRoot = this.getNpmInstallRoot(scope, false);
1396
1428
  if (!existsSync(installRoot)) {
1397
1429
  return;
1398
1430
  }
1431
+ if (this.getPackageManagerName() === "bun") {
1432
+ await this.runNpmCommand(["uninstall", source.name, "--cwd", installRoot]);
1433
+ return;
1434
+ }
1399
1435
  await this.runNpmCommand(["uninstall", source.name, "--prefix", installRoot]);
1400
1436
  }
1401
1437
  async installGit(source, scope) {
1402
1438
  const targetDir = this.getGitInstallPath(source, scope);
1403
1439
  if (existsSync(targetDir)) {
1440
+ if (source.ref) {
1441
+ await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD");
1442
+ return;
1443
+ }
1444
+ const target = await this.getLocalGitUpdateTarget(targetDir);
1445
+ await this.ensureGitRef(targetDir, target.fetchArgs, target.ref);
1404
1446
  return;
1405
1447
  }
1406
1448
  const gitRoot = this.getGitInstallRoot(scope);
@@ -1423,21 +1465,29 @@ export class DefaultPackageManager {
1423
1465
  await this.installGit(source, scope);
1424
1466
  return;
1425
1467
  }
1468
+ if (source.ref) {
1469
+ await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD");
1470
+ return;
1471
+ }
1426
1472
  const target = await this.getLocalGitUpdateTarget(targetDir);
1473
+ await this.ensureGitRef(targetDir, target.fetchArgs, target.ref);
1474
+ }
1475
+ async ensureGitRef(targetDir, fetchArgs, ref) {
1427
1476
  // Fetch only the ref we will reset to, avoiding unrelated branch/tag noise.
1428
- await this.runCommand("git", target.fetchArgs, { cwd: targetDir });
1477
+ await this.runCommand("git", fetchArgs, { cwd: targetDir });
1429
1478
  const localHead = await this.runCommandCapture("git", ["rev-parse", "HEAD"], {
1430
1479
  cwd: targetDir,
1431
1480
  timeoutMs: NETWORK_TIMEOUT_MS,
1432
1481
  });
1433
- const refreshedTargetHead = await this.runCommandCapture("git", ["rev-parse", target.ref], {
1482
+ const commitRef = `${ref}^{commit}`;
1483
+ const targetHead = await this.runCommandCapture("git", ["rev-parse", commitRef], {
1434
1484
  cwd: targetDir,
1435
1485
  timeoutMs: NETWORK_TIMEOUT_MS,
1436
1486
  });
1437
- if (localHead.trim() === refreshedTargetHead.trim()) {
1487
+ if (localHead.trim() === targetHead.trim()) {
1438
1488
  return;
1439
1489
  }
1440
- await this.runCommand("git", ["reset", "--hard", target.ref], { cwd: targetDir });
1490
+ await this.runCommand("git", ["reset", "--hard", commitRef], { cwd: targetDir });
1441
1491
  // Clean untracked files (extensions should be pristine)
1442
1492
  await this.runCommand("git", ["clean", "-fdx"], { cwd: targetDir });
1443
1493
  const packageJsonPath = join(targetDir, "package.json");
@@ -1492,6 +1542,7 @@ export class DefaultPackageManager {
1492
1542
  if (!existsSync(installRoot)) {
1493
1543
  mkdirSync(installRoot, { recursive: true });
1494
1544
  }
1545
+ markPathIgnoredByCloudSync(installRoot);
1495
1546
  this.ensureGitIgnore(installRoot);
1496
1547
  const packageJsonPath = join(installRoot, "package.json");
1497
1548
  if (!existsSync(packageJsonPath)) {
@@ -1515,7 +1566,7 @@ export class DefaultPackageManager {
1515
1566
  if (scope === "project") {
1516
1567
  return join(this.cwd, CONFIG_DIR_NAME, "npm");
1517
1568
  }
1518
- return join(this.getGlobalNpmRoot(), "..");
1569
+ return join(this.agentDir, "npm");
1519
1570
  }
1520
1571
  getGlobalNpmRoot() {
1521
1572
  const npmCommand = this.getNpmCommand();
@@ -1523,8 +1574,7 @@ export class DefaultPackageManager {
1523
1574
  if (this.globalNpmRoot && this.globalNpmRootCommandKey === commandKey) {
1524
1575
  return this.globalNpmRoot;
1525
1576
  }
1526
- const isBunPackageManager = npmCommand.command === "bun";
1527
- if (isBunPackageManager) {
1577
+ if (this.getPackageManagerName() === "bun") {
1528
1578
  const binDir = this.runNpmCommandSync(["pm", "bin", "-g"]).trim();
1529
1579
  this.globalNpmRoot = join(dirname(binDir), "install", "global", "node_modules");
1530
1580
  }
@@ -1534,14 +1584,43 @@ export class DefaultPackageManager {
1534
1584
  this.globalNpmRootCommandKey = commandKey;
1535
1585
  return this.globalNpmRoot;
1536
1586
  }
1537
- getNpmInstallPath(source, scope) {
1587
+ getPnpmGlobalPackagePath(packageName) {
1588
+ if (this.getPackageManagerName() !== "pnpm") {
1589
+ return undefined;
1590
+ }
1591
+ const output = this.runNpmCommandSync(["list", "-g", "--depth", "0", "--json"]);
1592
+ const entries = JSON.parse(output);
1593
+ for (const entry of entries) {
1594
+ const path = entry.dependencies?.[packageName]?.path;
1595
+ if (path)
1596
+ return path;
1597
+ }
1598
+ return undefined;
1599
+ }
1600
+ getManagedNpmInstallPath(source, scope) {
1538
1601
  if (scope === "temporary") {
1539
1602
  return join(this.getTemporaryDir("npm"), "node_modules", source.name);
1540
1603
  }
1541
1604
  if (scope === "project") {
1542
1605
  return join(this.cwd, CONFIG_DIR_NAME, "npm", "node_modules", source.name);
1543
1606
  }
1544
- return join(this.getGlobalNpmRoot(), source.name);
1607
+ return join(this.agentDir, "npm", "node_modules", source.name);
1608
+ }
1609
+ getLegacyGlobalNpmInstallPath(source) {
1610
+ try {
1611
+ return this.getPnpmGlobalPackagePath(source.name) ?? join(this.getGlobalNpmRoot(), source.name);
1612
+ }
1613
+ catch {
1614
+ return undefined;
1615
+ }
1616
+ }
1617
+ getNpmInstallPath(source, scope) {
1618
+ const managedPath = this.getManagedNpmInstallPath(source, scope);
1619
+ if (scope !== "user" || existsSync(managedPath)) {
1620
+ return managedPath;
1621
+ }
1622
+ const legacyPath = this.getLegacyGlobalNpmInstallPath(source);
1623
+ return legacyPath && existsSync(legacyPath) ? legacyPath : managedPath;
1545
1624
  }
1546
1625
  getGitInstallPath(source, scope) {
1547
1626
  if (scope === "temporary") {
@@ -1578,24 +1657,10 @@ export class DefaultPackageManager {
1578
1657
  return this.cwd;
1579
1658
  }
1580
1659
  resolvePath(input) {
1581
- const trimmed = input.trim();
1582
- if (trimmed === "~")
1583
- return getHomeDir();
1584
- if (trimmed.startsWith("~/"))
1585
- return join(getHomeDir(), trimmed.slice(2));
1586
- if (trimmed.startsWith("~"))
1587
- return join(getHomeDir(), trimmed.slice(1));
1588
- return resolve(this.cwd, trimmed);
1660
+ return resolvePath(input, this.cwd, { homeDir: getHomeDir(), trim: true });
1589
1661
  }
1590
1662
  resolvePathFromBase(input, baseDir) {
1591
- const trimmed = input.trim();
1592
- if (trimmed === "~")
1593
- return getHomeDir();
1594
- if (trimmed.startsWith("~/"))
1595
- return join(getHomeDir(), trimmed.slice(2));
1596
- if (trimmed.startsWith("~"))
1597
- return join(getHomeDir(), trimmed.slice(1));
1598
- return resolve(baseDir, trimmed);
1663
+ return resolvePath(input, baseDir, { homeDir: getHomeDir(), trim: true });
1599
1664
  }
1600
1665
  collectPackageResources(packageRoot, accumulator, filter, metadata) {
1601
1666
  if (filter) {
@@ -1890,20 +1955,20 @@ export class DefaultPackageManager {
1890
1955
  };
1891
1956
  }
1892
1957
  spawnCommand(command, args, options) {
1893
- return spawn(command, args, {
1958
+ const env = getEnv();
1959
+ return spawnProcess(command, args, {
1894
1960
  cwd: options?.cwd,
1895
1961
  stdio: isStdoutTakenOver() ? ["ignore", 2, 2] : "inherit",
1896
- shell: shouldUseWindowsShell(command),
1897
- env: getEnv(),
1962
+ env,
1898
1963
  });
1899
1964
  }
1900
1965
  spawnCaptureCommand(command, args, options) {
1901
1966
  const baseEnv = getEnv();
1902
- return spawn(command, args, {
1967
+ const env = options?.env ? { ...baseEnv, ...options.env } : baseEnv;
1968
+ return spawnProcess(command, args, {
1903
1969
  cwd: options?.cwd,
1904
1970
  stdio: ["ignore", "pipe", "pipe"],
1905
- shell: shouldUseWindowsShell(command),
1906
- env: options?.env ? { ...baseEnv, ...options.env } : baseEnv,
1971
+ env,
1907
1972
  });
1908
1973
  }
1909
1974
  runCommandCapture(command, args, options) {
@@ -1960,11 +2025,11 @@ export class DefaultPackageManager {
1960
2025
  });
1961
2026
  }
1962
2027
  runCommandSync(command, args) {
1963
- const result = spawnSync(command, args, {
2028
+ const env = getEnv();
2029
+ const result = spawnProcessSync(command, args, {
1964
2030
  stdio: ["ignore", "pipe", "pipe"],
1965
2031
  encoding: "utf-8",
1966
- shell: shouldUseWindowsShell(command),
1967
- env: getEnv(),
2032
+ env,
1968
2033
  });
1969
2034
  if (result.error || result.status !== 0) {
1970
2035
  throw new Error(`Failed to run ${command} ${args.join(" ")}: ${result.error?.message || result.stderr || result.stdout}`);