@prestyj/cli 5.32.0 → 5.32.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 (230) hide show
  1. package/README.md +3 -2
  2. package/assets/skills/task-list/SKILL.md +39 -0
  3. package/dist/app-sidecar/app-settings.js +11 -5
  4. package/dist/app-sidecar/app-settings.js.map +1 -1
  5. package/dist/app-sidecar/auth-routes.js +10 -3
  6. package/dist/app-sidecar/auth-routes.js.map +1 -1
  7. package/dist/app-sidecar/git-target.d.ts +15 -2
  8. package/dist/app-sidecar/git-target.js +24 -10
  9. package/dist/app-sidecar/git-target.js.map +1 -1
  10. package/dist/app-sidecar/goal-routes.js +8 -0
  11. package/dist/app-sidecar/goal-routes.js.map +1 -1
  12. package/dist/app-sidecar/history-routes.js +7 -0
  13. package/dist/app-sidecar/history-routes.js.map +1 -1
  14. package/dist/app-sidecar/history.d.ts +5 -0
  15. package/dist/app-sidecar/history.js.map +1 -1
  16. package/dist/app-sidecar/integration-routes.js +4 -0
  17. package/dist/app-sidecar/integration-routes.js.map +1 -1
  18. package/dist/app-sidecar/mcp-routes.js +1 -0
  19. package/dist/app-sidecar/mcp-routes.js.map +1 -1
  20. package/dist/app-sidecar/mcp-rows.d.ts +2 -0
  21. package/dist/app-sidecar/mcp-rows.js +4 -1
  22. package/dist/app-sidecar/mcp-rows.js.map +1 -1
  23. package/dist/app-sidecar/prompt-routes.js +67 -1
  24. package/dist/app-sidecar/prompt-routes.js.map +1 -1
  25. package/dist/app-sidecar/route-context.d.ts +2 -0
  26. package/dist/app-sidecar/run-control-routes.js +43 -3
  27. package/dist/app-sidecar/run-control-routes.js.map +1 -1
  28. package/dist/app-sidecar/session-routes.js +10 -0
  29. package/dist/app-sidecar/session-routes.js.map +1 -1
  30. package/dist/app-sidecar/task-routes.js +2 -0
  31. package/dist/app-sidecar/task-routes.js.map +1 -1
  32. package/dist/app-sidecar/trophy-manager.d.ts +15 -0
  33. package/dist/app-sidecar/trophy-manager.js +71 -0
  34. package/dist/app-sidecar/trophy-manager.js.map +1 -0
  35. package/dist/app-sidecar/workspace-routes.js +1 -0
  36. package/dist/app-sidecar/workspace-routes.js.map +1 -1
  37. package/dist/app-sidecar.js +157 -30
  38. package/dist/app-sidecar.js.map +1 -1
  39. package/dist/cli/auth.js +22 -1
  40. package/dist/cli/auth.js.map +1 -1
  41. package/dist/cli/mcp.js +6 -1
  42. package/dist/cli/mcp.js.map +1 -1
  43. package/dist/cli.js +13 -9
  44. package/dist/cli.js.map +1 -1
  45. package/dist/config.js +4 -2
  46. package/dist/config.js.map +1 -1
  47. package/dist/core/action-threats.d.ts +68 -0
  48. package/dist/core/action-threats.js +894 -0
  49. package/dist/core/action-threats.js.map +1 -0
  50. package/dist/core/agent-notifications.d.ts +18 -0
  51. package/dist/core/agent-notifications.js +35 -2
  52. package/dist/core/agent-notifications.js.map +1 -1
  53. package/dist/core/agent-session/verification-tracker.d.ts +21 -0
  54. package/dist/core/agent-session/verification-tracker.js +39 -1
  55. package/dist/core/agent-session/verification-tracker.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +168 -2
  57. package/dist/core/agent-session.js +486 -23
  58. package/dist/core/agent-session.js.map +1 -1
  59. package/dist/core/blocked-packages-file.d.ts +33 -0
  60. package/dist/core/blocked-packages-file.js +274 -0
  61. package/dist/core/blocked-packages-file.js.map +1 -0
  62. package/dist/core/compaction/policy.d.ts +2 -2
  63. package/dist/core/compaction/policy.js +86 -43
  64. package/dist/core/compaction/policy.js.map +1 -1
  65. package/dist/core/compaction/token-estimator.d.ts +4 -1
  66. package/dist/core/compaction/token-estimator.js +5 -2
  67. package/dist/core/compaction/token-estimator.js.map +1 -1
  68. package/dist/core/event-bus.d.ts +10 -0
  69. package/dist/core/event-bus.js +2 -0
  70. package/dist/core/event-bus.js.map +1 -1
  71. package/dist/core/idle-wake.d.ts +62 -0
  72. package/dist/core/idle-wake.js +103 -0
  73. package/dist/core/idle-wake.js.map +1 -0
  74. package/dist/core/injection-detect.d.ts +2 -1
  75. package/dist/core/injection-detect.js +13 -4
  76. package/dist/core/injection-detect.js.map +1 -1
  77. package/dist/core/installed-threats.d.ts +23 -0
  78. package/dist/core/installed-threats.js +71 -0
  79. package/dist/core/installed-threats.js.map +1 -0
  80. package/dist/core/mcp/catalog-cache.d.ts +2 -0
  81. package/dist/core/mcp/catalog-cache.js +4 -0
  82. package/dist/core/mcp/catalog-cache.js.map +1 -1
  83. package/dist/core/mcp/client.d.ts +8 -0
  84. package/dist/core/mcp/client.js +37 -3
  85. package/dist/core/mcp/client.js.map +1 -1
  86. package/dist/core/mcp/deferred-catalog.d.ts +12 -1
  87. package/dist/core/mcp/deferred-catalog.js +37 -10
  88. package/dist/core/mcp/deferred-catalog.js.map +1 -1
  89. package/dist/core/mcp/index.d.ts +2 -0
  90. package/dist/core/mcp/index.js +1 -0
  91. package/dist/core/mcp/index.js.map +1 -1
  92. package/dist/core/mcp/tool-guard.d.ts +58 -0
  93. package/dist/core/mcp/tool-guard.js +215 -0
  94. package/dist/core/mcp/tool-guard.js.map +1 -0
  95. package/dist/core/network-guard.d.ts +0 -20
  96. package/dist/core/network-guard.js +6 -0
  97. package/dist/core/network-guard.js.map +1 -1
  98. package/dist/core/package-cooldown.d.ts +71 -0
  99. package/dist/core/package-cooldown.js +301 -0
  100. package/dist/core/package-cooldown.js.map +1 -0
  101. package/dist/core/package-threats.d.ts +77 -3
  102. package/dist/core/package-threats.js +1250 -78
  103. package/dist/core/package-threats.js.map +1 -1
  104. package/dist/core/process-manager.d.ts +54 -12
  105. package/dist/core/process-manager.js +233 -56
  106. package/dist/core/process-manager.js.map +1 -1
  107. package/dist/core/project-files.d.ts +15 -0
  108. package/dist/core/project-files.js +37 -0
  109. package/dist/core/project-files.js.map +1 -0
  110. package/dist/core/prompt-commands.js +1 -0
  111. package/dist/core/prompt-commands.js.map +1 -1
  112. package/dist/core/session-manager.d.ts +3 -1
  113. package/dist/core/session-manager.js +2 -1
  114. package/dist/core/session-manager.js.map +1 -1
  115. package/dist/core/settings-manager.d.ts +1 -0
  116. package/dist/core/settings-manager.js +4 -0
  117. package/dist/core/settings-manager.js.map +1 -1
  118. package/dist/core/shell-threats.d.ts +14 -1
  119. package/dist/core/shell-threats.js +73 -24
  120. package/dist/core/shell-threats.js.map +1 -1
  121. package/dist/core/skill-scan.d.ts +112 -0
  122. package/dist/core/skill-scan.js +781 -0
  123. package/dist/core/skill-scan.js.map +1 -0
  124. package/dist/core/skills.d.ts +33 -0
  125. package/dist/core/skills.js +87 -16
  126. package/dist/core/skills.js.map +1 -1
  127. package/dist/core/slash-commands.d.ts +5 -1
  128. package/dist/core/slash-commands.js +24 -9
  129. package/dist/core/slash-commands.js.map +1 -1
  130. package/dist/core/steering.d.ts +7 -0
  131. package/dist/core/steering.js +13 -0
  132. package/dist/core/steering.js.map +1 -1
  133. package/dist/core/style-packs/index.js +1 -1
  134. package/dist/core/style-packs/index.js.map +1 -1
  135. package/dist/core/style-packs/packs.js +2 -2
  136. package/dist/core/subagent-manager.js +5 -4
  137. package/dist/core/subagent-manager.js.map +1 -1
  138. package/dist/core/threat-feed.d.ts +65 -0
  139. package/dist/core/threat-feed.js +335 -0
  140. package/dist/core/threat-feed.js.map +1 -0
  141. package/dist/core/trophies/catalog-more.d.ts +2 -0
  142. package/dist/core/trophies/catalog-more.js +857 -0
  143. package/dist/core/trophies/catalog-more.js.map +1 -0
  144. package/dist/core/trophies/catalog.d.ts +4 -0
  145. package/dist/core/trophies/catalog.js +649 -0
  146. package/dist/core/trophies/catalog.js.map +1 -0
  147. package/dist/core/trophies/engine.d.ts +70 -0
  148. package/dist/core/trophies/engine.js +351 -0
  149. package/dist/core/trophies/engine.js.map +1 -0
  150. package/dist/core/trophies/store.d.ts +17 -0
  151. package/dist/core/trophies/store.js +113 -0
  152. package/dist/core/trophies/store.js.map +1 -0
  153. package/dist/core/trophies/types.d.ts +119 -0
  154. package/dist/core/trophies/types.js +78 -0
  155. package/dist/core/trophies/types.js.map +1 -0
  156. package/dist/core/verification-evidence.d.ts +10 -6
  157. package/dist/core/verification-evidence.js +190 -11
  158. package/dist/core/verification-evidence.js.map +1 -1
  159. package/dist/goals-agent/goals-agent.js +3 -2
  160. package/dist/goals-agent/goals-agent.js.map +1 -1
  161. package/dist/interactive.js +16 -5
  162. package/dist/interactive.js.map +1 -1
  163. package/dist/modes/acp-mode.js +8 -1
  164. package/dist/modes/acp-mode.js.map +1 -1
  165. package/dist/modes/agent-home-mode.js +13 -1
  166. package/dist/modes/agent-home-mode.js.map +1 -1
  167. package/dist/modes/rpc-mode.d.ts +2 -1
  168. package/dist/modes/rpc-mode.js +15 -3
  169. package/dist/modes/rpc-mode.js.map +1 -1
  170. package/dist/modes/serve-mode.js +13 -1
  171. package/dist/modes/serve-mode.js.map +1 -1
  172. package/dist/system-prompt.d.ts +8 -0
  173. package/dist/system-prompt.js +34 -13
  174. package/dist/system-prompt.js.map +1 -1
  175. package/dist/test-support/slow-git.d.ts +1 -0
  176. package/dist/test-support/slow-git.js +21 -0
  177. package/dist/test-support/slow-git.js.map +1 -0
  178. package/dist/tools/background-watch-lint.d.ts +18 -0
  179. package/dist/tools/background-watch-lint.js +102 -0
  180. package/dist/tools/background-watch-lint.js.map +1 -0
  181. package/dist/tools/bash.d.ts +15 -4
  182. package/dist/tools/bash.js +75 -47
  183. package/dist/tools/bash.js.map +1 -1
  184. package/dist/tools/checklist.d.ts +3 -3
  185. package/dist/tools/compress.js +45 -0
  186. package/dist/tools/compress.js.map +1 -1
  187. package/dist/tools/edit.js +5 -0
  188. package/dist/tools/edit.js.map +1 -1
  189. package/dist/tools/generate-image.d.ts +29 -6
  190. package/dist/tools/generate-image.js +325 -151
  191. package/dist/tools/generate-image.js.map +1 -1
  192. package/dist/tools/grep.d.ts +14 -0
  193. package/dist/tools/grep.js +36 -2
  194. package/dist/tools/grep.js.map +1 -1
  195. package/dist/tools/index.d.ts +5 -1
  196. package/dist/tools/index.js +7 -4
  197. package/dist/tools/index.js.map +1 -1
  198. package/dist/tools/prompt-hints.d.ts +8 -1
  199. package/dist/tools/prompt-hints.js +22 -2
  200. package/dist/tools/prompt-hints.js.map +1 -1
  201. package/dist/tools/routine-output.d.ts +30 -0
  202. package/dist/tools/routine-output.js +203 -0
  203. package/dist/tools/routine-output.js.map +1 -0
  204. package/dist/tools/skill.d.ts +2 -2
  205. package/dist/tools/skill.js +8 -1
  206. package/dist/tools/skill.js.map +1 -1
  207. package/dist/tools/subagent-shared.js +4 -1
  208. package/dist/tools/subagent-shared.js.map +1 -1
  209. package/dist/tools/task-output.js +11 -1
  210. package/dist/tools/task-output.js.map +1 -1
  211. package/dist/tools/write.js +8 -0
  212. package/dist/tools/write.js.map +1 -1
  213. package/dist/ui/components/ModelSelector.d.ts +10 -0
  214. package/dist/ui/components/ModelSelector.js +51 -5
  215. package/dist/ui/components/ModelSelector.js.map +1 -1
  216. package/dist/ui/components/ToolExecution.js +2 -2
  217. package/dist/ui/components/ToolExecution.js.map +1 -1
  218. package/dist/ui/mcp.d.ts +2 -0
  219. package/dist/ui/mcp.js.map +1 -1
  220. package/dist/ui/terminal-history.js +2 -1
  221. package/dist/ui/terminal-history.js.map +1 -1
  222. package/dist/ui/tool-line-summary.js +3 -1
  223. package/dist/ui/tool-line-summary.js.map +1 -1
  224. package/dist/utils/git.d.ts +12 -3
  225. package/dist/utils/git.js +21 -8
  226. package/dist/utils/git.js.map +1 -1
  227. package/dist/utils/image.d.ts +14 -0
  228. package/dist/utils/image.js +23 -0
  229. package/dist/utils/image.js.map +1 -1
  230. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"network-guard.js","sourceRoot":"","sources":["../../src/core/network-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network-guard.js","sourceRoot":"","sources":["../../src/core/network-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAwB;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;YAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC1E,SAAS;QACX,CAAC;QACD,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,EAAE,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,IAAI,IAAI,SAAS,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,cAAc,GAA2B;IAC7C,GAAG,EAAE,oBAAoB;IACzB,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,sBAAsB;IAC5B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACpG,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzF,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IACE,OAAO,CAAC,MAAM,IAAI,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EACrD,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,KAAa,EAAE,mBAAmB,GAAG,KAAK;IACnE,IAAI,mBAAmB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1F,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,kEAAkE;IAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,0EAA0E;IAC1E,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO;aACnB,IAAI,EAAE;aACN,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,WAAW,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM;YAAE,KAAK,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC1F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAClC,MAAM,IAAI,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjF,IAAI,IAAI;oBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACxD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAClC,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,IAAI;wBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,kDAAkD;gBAClD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,IAAI;wBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxF,sEAAsE;YACtE,2CAA2C;YAC3C,MAAM,mBAAmB,GAAG,OAAO,KAAK,KAAK,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBACzD,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,IAAI,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,IAAyB,EACzB,KAAwB;IAExB,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,OAAO,CACL,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC3D,kBAAkB,OAAO,8DAA8D;QACvF,gDAAgD,CACjD,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,IAAyB,EACzB,KAAwB;IAExB,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,qCAAqC,GAAG,0BAA0B,CAAC;IACrF,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,OAAO,CACL,qCAAqC,IAAI,oBAAoB,OAAO,IAAI;QACxE,2DAA2D,CAC5D,CAAC;AACJ,CAAC;AAUD,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,SAA4B;IACtE,2EAA2E;IAC3E,iCAAiC;IACjC,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,SAAS,EAAE,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,SAA4B;IAC9E,MAAM,MAAM,GAAG,SAAS,EAAE,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,SAAuC,EACvC,MAAmB,EACnB,GAAsE;IAEtE,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,OAAO,CAAC;YACjB,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,EAAE,CAAC;IACR,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;YAC9E,UAAU,GAAG,OAAO,CAAC;YACrB,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;QACH,KAAK,EAAE,CAAC;QACR,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,71 @@
1
+ export type PackageManager = "npm" | "pnpm" | "yarn" | "bun" | "pip" | "uv";
2
+ /** How to spawn `<manager> --version`. Windows: npm/pnpm/yarn are `.cmd` shims, which need a shell. */
3
+ export declare function versionSpawn(manager: PackageManager, platform?: NodeJS.Platform): {
4
+ file: string;
5
+ args: string[];
6
+ shell: boolean;
7
+ };
8
+ /**
9
+ * `<manager> --version`, once per process (yarn: once per directory, since
10
+ * berry is pinned per project); null when missing.
11
+ */
12
+ export declare function managerVersion(manager: PackageManager, cwd?: string): Promise<string | null>;
13
+ /** Whether `manager` at `version` honours the cooldown we apply. */
14
+ export declare function hasNativeCooldown(manager: PackageManager, version: string | null): boolean;
15
+ /** Package managers a command mentions (cheap regex, no spawn). */
16
+ export declare function mentionedManagers(command: string): PackageManager[];
17
+ /** Cheap regex: could this command install packages? Non-installs skip every spawn and file read. */
18
+ export declare function mayInstall(command: string): boolean;
19
+ export declare function uvResolves(command: string): boolean;
20
+ /**
21
+ * Whether installs here may come from a registry other than public npm
22
+ * (command `--registry`, `npm_config_registry`, a `registry=` /
23
+ * `@scope:registry=` line in .npmrc up the tree or in ~/.npmrc,
24
+ * `npmRegistryServer` in .yarnrc.yml). Cheap sync reads, install commands only.
25
+ */
26
+ export declare function usesCustomNpmRegistry(command: string, cwd: string, env?: NodeJS.ProcessEnv): boolean;
27
+ /** Whether pip/uv may install from an index other than PyPI (flags, env, pip.conf). */
28
+ export declare function usesCustomPypiIndex(command: string, env?: NodeJS.ProcessEnv): boolean;
29
+ export interface CooldownEnvOptions {
30
+ days: number;
31
+ now: number;
32
+ cwd: string;
33
+ /** Detected versions; a manager without one gets nothing (avoids unknown-config warnings/errors). */
34
+ versions: Partial<Record<PackageManager, string | null>>;
35
+ /** Environment to read registry settings from (default process.env). */
36
+ env?: NodeJS.ProcessEnv;
37
+ }
38
+ /**
39
+ * Cooldown environment variables for `command`:
40
+ * - npm `min-release-age` (days), npm ≥ 11.10 only (older npm warns on it).
41
+ * - pnpm `minimum-release-age` (minutes) via npm_config_, only when the
42
+ * command runs pnpm (npm warns on this key).
43
+ * - yarn berry ≥ 4.10 `YARN_NPM_MINIMAL_AGE_GATE` (minutes).
44
+ * - pip `PIP_UPLOADED_PRIOR_TO` relative ISO duration (older pip ignores it).
45
+ * - uv `UV_EXCLUDE_NEWER` absolute timestamp: always without `uv.lock`; with
46
+ * one only for resolving commands (plain `uv sync`/`uv run` keep the lock;
47
+ * the lockfile check covers those).
48
+ */
49
+ export declare function packageCooldownEnv(command: string, opts: CooldownEnvOptions): Record<string, string>;
50
+ /**
51
+ * bun has no env setting: append `--minimum-release-age=<seconds>` to each
52
+ * `bun install/add/update` / `bunx` (bun ≥ 1.3, only when not already given).
53
+ */
54
+ export declare function bunCooldownCommand(command: string, days: number, version: string | null): string;
55
+ /**
56
+ * Prefix each package-manager invocation with its own cooldown variable from
57
+ * `env` (`npm i` → `npm_config_min_release_age=2 npm i`). Used where one
58
+ * long-lived shell serves every command.
59
+ */
60
+ export declare function scopeCooldown(command: string, env: Record<string, string>): string;
61
+ /** Detect versions of the managers a command mentions (cached; nothing for non-installs). */
62
+ export declare function detectMentionedVersions(command: string, cwd?: string): Promise<Partial<Record<PackageManager, string | null>>>;
63
+ /**
64
+ * One plain line explaining a failed install the cooldown caused, so the
65
+ * agent doesn't misread a cryptic ETARGET / "no candidates". Null otherwise.
66
+ */
67
+ export declare function cooldownFailureHint(output: string, days: number): string | null;
68
+ /** Test hook. */
69
+ export declare function clearManagerVersionCache(): void;
70
+ /** Cooldown env for an MCP stdio launch (`npx …`/`uvx …`); {} for anything else. */
71
+ export declare function launchCooldownEnv(command: string, args: readonly string[], cwd: string, days?: number): Promise<Record<string, string>>;
@@ -0,0 +1,301 @@
1
+ /**
2
+ * Release-age cooldown for every install the agent runs (P1). Each package
3
+ * manager's native setting is applied to the command, so the manager itself
4
+ * skips versions younger than the cooldown — transitive deps included — and
5
+ * falls back to an older version. Locked versions still install.
6
+ *
7
+ * Verified (temp dirs, see package-cooldown.test.ts for the shapes):
8
+ * - npm 11.12.1 `npm_config_min_release_age` (days), pnpm 10.17.1
9
+ * `npm_config_minimum_release_age` (minutes), pip 26.1.2 `PIP_UPLOADED_PRIOR_TO`.
10
+ * - bun 1.3.14: env has no effect; `--minimum-release-age=<seconds>` on
11
+ * `bun install/add` skips a fresh transitive dep; `--frozen-lockfile` still
12
+ * installs locked fresh versions. Appended to the command (bun ≥ 1.3).
13
+ * - yarn berry 4.10.3 `YARN_NPM_MINIMAL_AGE_GATE` (minutes) skips a fresh
14
+ * transitive dep; yarn 4.9 rejects the unknown setting, so ≥ 4.10 only.
15
+ * Yarn classic has no cooldown (own age check for named packages instead).
16
+ * - uv 0.7.13 `UV_EXCLUDE_NEWER`: only for commands that resolve. uv records
17
+ * it in uv.lock `[options]`; a later plain `uv sync` works, but a plain
18
+ * `uv sync` with a *different* value re-resolves, so it is never set there.
19
+ */
20
+ import { execFile } from "node:child_process";
21
+ import fs from "node:fs";
22
+ import path from "node:path";
23
+ import { compareVersions } from "./threat-feed.js";
24
+ /** First version with a native cooldown we can apply. */
25
+ const NATIVE_SINCE = {
26
+ npm: "11.10.0",
27
+ pnpm: "10.16.0",
28
+ yarn: "4.10.0",
29
+ bun: "1.3.0",
30
+ pip: "26.1",
31
+ uv: "0.0.0",
32
+ };
33
+ const versionCache = new Map();
34
+ /** How to spawn `<manager> --version`. Windows: npm/pnpm/yarn are `.cmd` shims, which need a shell. */
35
+ export function versionSpawn(manager, platform = process.platform) {
36
+ // One command string (no args array) with shell: avoids Node's DEP0190 warning.
37
+ return platform === "win32"
38
+ ? { file: `${manager} --version`, args: [], shell: true }
39
+ : { file: manager, args: ["--version"], shell: false };
40
+ }
41
+ /**
42
+ * `<manager> --version`, once per process (yarn: once per directory, since
43
+ * berry is pinned per project); null when missing.
44
+ */
45
+ export function managerVersion(manager, cwd) {
46
+ const key = manager === "yarn" ? `yarn:${cwd ?? ""}` : manager;
47
+ let hit = versionCache.get(key);
48
+ if (!hit) {
49
+ const { file, args, shell } = versionSpawn(manager);
50
+ hit = new Promise((resolve) => {
51
+ execFile(file, args, {
52
+ timeout: 3_000,
53
+ shell,
54
+ windowsHide: true,
55
+ cwd: manager === "yarn" && cwd ? cwd : undefined,
56
+ env: { ...process.env, COREPACK_ENABLE_DOWNLOAD_PROMPT: "0" },
57
+ }, (err, stdout) => {
58
+ const m = /(\d+\.\d+(?:\.\d+)?)/.exec(String(stdout));
59
+ resolve(err || !m ? null : (m[1] ?? null));
60
+ });
61
+ });
62
+ versionCache.set(key, hit);
63
+ }
64
+ return hit;
65
+ }
66
+ /** Whether `manager` at `version` honours the cooldown we apply. */
67
+ export function hasNativeCooldown(manager, version) {
68
+ const since = NATIVE_SINCE[manager];
69
+ return since !== undefined && version !== null && compareVersions(version, since) >= 0;
70
+ }
71
+ const MENTIONS = {
72
+ npm: /\b(?:npm|npx)\b/,
73
+ pnpm: /\bpnpm\b/,
74
+ yarn: /\byarn\b/,
75
+ bun: /\bbunx?\b/,
76
+ pip: /\bpip3?\b/,
77
+ uv: /\buvx?\b/,
78
+ };
79
+ /** Package managers a command mentions (cheap regex, no spawn). */
80
+ export function mentionedManagers(command) {
81
+ return Object.keys(MENTIONS).filter((m) => MENTIONS[m].test(command));
82
+ }
83
+ const INSTALL_HINT = /\b(?:(?:npm|pnpm|yarn|bun)\s+(?:i|install|add|a|ci|update|up|upgrade|dlx|exec|x|create)|npx|bunx|uvx|pip3?\s+install|pipx\s+(?:run|install)|uv\s+(?:add|lock|sync|pip|tool|run))\b|(?:^|[;&|]\s*)yarn(?:\s*$|\s*[;&|]|\s+-)/m;
84
+ /** Cheap regex: could this command install packages? Non-installs skip every spawn and file read. */
85
+ export function mayInstall(command) {
86
+ return INSTALL_HINT.test(command);
87
+ }
88
+ /** uv commands that resolve (and so honour UV_EXCLUDE_NEWER without breaking an existing lock). */
89
+ const UV_RESOLVES = /\buv\s+(?:add|lock|pip\s+(?:install|compile)|tool\s+(?:run|install))\b|\buvx\b|\buv\s+sync\b[^;&|\n]*--upgrade/;
90
+ export function uvResolves(command) {
91
+ return UV_RESOLVES.test(command);
92
+ }
93
+ function readSmall(file) {
94
+ try {
95
+ const st = fs.statSync(file);
96
+ return st.isFile() && st.size < 256_000 ? fs.readFileSync(file, "utf8") : "";
97
+ }
98
+ catch {
99
+ return "";
100
+ }
101
+ }
102
+ /**
103
+ * Whether installs here may come from a registry other than public npm
104
+ * (command `--registry`, `npm_config_registry`, a `registry=` /
105
+ * `@scope:registry=` line in .npmrc up the tree or in ~/.npmrc,
106
+ * `npmRegistryServer` in .yarnrc.yml). Cheap sync reads, install commands only.
107
+ */
108
+ export function usesCustomNpmRegistry(command, cwd, env = process.env) {
109
+ if (/--registry[=\s]/.test(command))
110
+ return true;
111
+ const reg = env.npm_config_registry ?? env.NPM_CONFIG_REGISTRY;
112
+ if (reg && !/^https?:\/\/registry\.(?:npmjs\.org|yarnpkg\.com)\/?$/.test(reg))
113
+ return true;
114
+ const files = [];
115
+ for (let dir = path.resolve(cwd), i = 0; i < 30; i++) {
116
+ files.push(path.join(dir, ".npmrc"), path.join(dir, ".yarnrc.yml"));
117
+ const up = path.dirname(dir);
118
+ if (up === dir)
119
+ break;
120
+ dir = up;
121
+ }
122
+ const home = env.HOME ?? env.USERPROFILE;
123
+ if (home)
124
+ files.push(path.join(home, ".npmrc"));
125
+ return files.some((f) => {
126
+ const text = readSmall(f);
127
+ if (!text)
128
+ return false;
129
+ return f.endsWith(".yml")
130
+ ? /^\s*npmRegistryServer\s*:/m.test(text) || /^\s*npmScopes\s*:/m.test(text)
131
+ : /^\s*(?:@[^:\s]+:)?registry\s*=\s*(?!https?:\/\/registry\.npmjs\.org\/?\s*$)\S/m.test(text);
132
+ });
133
+ }
134
+ /** Whether pip/uv may install from an index other than PyPI (flags, env, pip.conf). */
135
+ export function usesCustomPypiIndex(command, env = process.env) {
136
+ if (/(?:^|\s)(?:-i|--index-url|--extra-index-url|--index|--default-index|-f|--find-links)[=\s]/.test(command))
137
+ return true;
138
+ for (const k of [
139
+ "PIP_INDEX_URL",
140
+ "PIP_EXTRA_INDEX_URL",
141
+ "UV_INDEX_URL",
142
+ "UV_EXTRA_INDEX_URL",
143
+ "UV_INDEX",
144
+ "UV_DEFAULT_INDEX",
145
+ ]) {
146
+ if (env[k])
147
+ return true;
148
+ }
149
+ const home = env.HOME ?? env.USERPROFILE;
150
+ if (!home)
151
+ return false;
152
+ return [
153
+ path.join(home, ".config", "pip", "pip.conf"),
154
+ path.join(home, ".pip", "pip.conf"),
155
+ path.join(home, "AppData", "Roaming", "pip", "pip.ini"),
156
+ ].some((f) => /^\s*(?:extra-)?index-url\s*=/m.test(readSmall(f)));
157
+ }
158
+ /**
159
+ * Cooldown environment variables for `command`:
160
+ * - npm `min-release-age` (days), npm ≥ 11.10 only (older npm warns on it).
161
+ * - pnpm `minimum-release-age` (minutes) via npm_config_, only when the
162
+ * command runs pnpm (npm warns on this key).
163
+ * - yarn berry ≥ 4.10 `YARN_NPM_MINIMAL_AGE_GATE` (minutes).
164
+ * - pip `PIP_UPLOADED_PRIOR_TO` relative ISO duration (older pip ignores it).
165
+ * - uv `UV_EXCLUDE_NEWER` absolute timestamp: always without `uv.lock`; with
166
+ * one only for resolving commands (plain `uv sync`/`uv run` keep the lock;
167
+ * the lockfile check covers those).
168
+ */
169
+ export function packageCooldownEnv(command, opts) {
170
+ if (!(opts.days > 0))
171
+ return {};
172
+ const env = {};
173
+ if (hasNativeCooldown("npm", opts.versions.npm ?? null)) {
174
+ env.npm_config_min_release_age = String(opts.days);
175
+ }
176
+ const minutes = String(Math.round(opts.days * 1440));
177
+ // pnpm fails hard (ERR_PNPM_MISSING_TIME) on registries that serve no
178
+ // publish times, common for private ones; npm and bun just allow such versions.
179
+ const pnpm = MENTIONS.pnpm.test(command) && hasNativeCooldown("pnpm", opts.versions.pnpm ?? null);
180
+ const yarn = MENTIONS.yarn.test(command) && hasNativeCooldown("yarn", opts.versions.yarn ?? null);
181
+ const custom = (pnpm || yarn) && usesCustomNpmRegistry(command, opts.cwd, opts.env);
182
+ if (pnpm && !custom) {
183
+ env.npm_config_minimum_release_age = minutes;
184
+ }
185
+ if (yarn && !custom) {
186
+ env.YARN_NPM_MINIMAL_AGE_GATE = minutes;
187
+ }
188
+ env.PIP_UPLOADED_PRIOR_TO = `P${opts.days}D`;
189
+ if (MENTIONS.uv.test(command) &&
190
+ (uvResolves(command) || !fs.existsSync(path.join(opts.cwd, "uv.lock")))) {
191
+ env.UV_EXCLUDE_NEWER = new Date(opts.now - opts.days * 86_400_000)
192
+ .toISOString()
193
+ .replace(/\.\d{3}Z$/, "Z");
194
+ }
195
+ return env;
196
+ }
197
+ const BUN_RESOLVE = /(^|[;&|(]\s*|\n\s*)(bun\s+(?:install|i|add|a|update)|bunx|bun\s+x)(?=\s|$)/g;
198
+ /**
199
+ * bun has no env setting: append `--minimum-release-age=<seconds>` to each
200
+ * `bun install/add/update` / `bunx` (bun ≥ 1.3, only when not already given).
201
+ */
202
+ export function bunCooldownCommand(command, days, version) {
203
+ if (!(days > 0) || !hasNativeCooldown("bun", version))
204
+ return command;
205
+ if (command.includes("--minimum-release-age"))
206
+ return command;
207
+ const flag = ` --minimum-release-age=${Math.round(days * 86_400)}`;
208
+ return command.replace(BUN_RESOLVE, (_m, pre, cmd) => `${pre}${cmd}${flag}`);
209
+ }
210
+ /** Env prefix per program, for shells whose environment is fixed at start (persistent bash). */
211
+ const SCOPED = [
212
+ [/(^|[;&|(]\s*|\n\s*)(npm|npx)\b/g, "npm_config_min_release_age"],
213
+ [/(^|[;&|(]\s*|\n\s*)(pnpm)\b/g, "npm_config_minimum_release_age"],
214
+ [/(^|[;&|(]\s*|\n\s*)(yarn)\b/g, "YARN_NPM_MINIMAL_AGE_GATE"],
215
+ [/(^|[;&|(]\s*|\n\s*)(uvx?)\b/g, "UV_EXCLUDE_NEWER"],
216
+ ];
217
+ /**
218
+ * Prefix each package-manager invocation with its own cooldown variable from
219
+ * `env` (`npm i` → `npm_config_min_release_age=2 npm i`). Used where one
220
+ * long-lived shell serves every command.
221
+ */
222
+ export function scopeCooldown(command, env) {
223
+ let out = command;
224
+ for (const [re, key] of SCOPED) {
225
+ const value = env[key];
226
+ if (value)
227
+ out = out.replace(re, (_m, pre, prog) => `${pre}${key}=${value} ${prog}`);
228
+ }
229
+ return out;
230
+ }
231
+ /** Detect versions of the managers a command mentions (cached; nothing for non-installs). */
232
+ export async function detectMentionedVersions(command, cwd) {
233
+ const out = {};
234
+ if (!mayInstall(command))
235
+ return out;
236
+ const wanted = mentionedManagers(command).filter((m) => m === "npm" || m === "pnpm" || m === "yarn" || m === "bun");
237
+ await Promise.all(wanted.map(async (m) => {
238
+ out[m] = await managerVersion(m, cwd);
239
+ }));
240
+ return out;
241
+ }
242
+ /**
243
+ * Manager errors the cooldown causes, verified against npm 11.12, pnpm 10.17,
244
+ * bun 1.3.14, yarn 4.10, pip 26.1 and uv 0.7. First group = the manager names
245
+ * the cooldown itself; second = a generic "no such version" that the cooldown
246
+ * may have caused (also printed for versions that truly don't exist).
247
+ */
248
+ const COOLDOWN_SURE = [
249
+ /No matching version found for (\S+) with a date before/, // npm
250
+ /No matching version found for (\S+) published by/, // pnpm
251
+ /"([^"]+)" found for specifier "([^"]+)" \(blocked by minimum-release-age/, // bun
252
+ ];
253
+ const COOLDOWN_MAYBE = [
254
+ /YN0082: [│|]?\s*(\S+): No candidates found/, // yarn berry
255
+ /No matching distribution found for (\S+)/, // pip
256
+ /there is no version of (\S+?)(?:\s|$)/, // uv
257
+ ];
258
+ /**
259
+ * One plain line explaining a failed install the cooldown caused, so the
260
+ * agent doesn't misread a cryptic ETARGET / "no candidates". Null otherwise.
261
+ */
262
+ export function cooldownFailureHint(output, days) {
263
+ if (!(days > 0) || output.length === 0)
264
+ return null;
265
+ const tail = output.length > 20_000 ? output.slice(-20_000) : output;
266
+ for (const re of COOLDOWN_SURE) {
267
+ const m = re.exec(tail);
268
+ if (!m)
269
+ continue;
270
+ const pkg = m[2] ? `${m[1]}@${m[2]}` : (m[1] ?? "that version");
271
+ return `EZ Coder's ${days}-day release-age cooldown hid ${pkg}: it was published less than ${days} days ago. Pin the newest older version (or drop the version so the manager picks one); if the user needs this exact version, tell them it is held back by the cooldown (setting packageCooldownDays).`;
272
+ }
273
+ for (const re of COOLDOWN_MAYBE) {
274
+ const m = re.exec(tail);
275
+ if (!m)
276
+ continue;
277
+ return `If ${m[1] ?? "that version"} was published in the last ${days} days, EZ Coder's release-age cooldown hid it: pin the newest older version instead (if the user needs that exact version, tell them it is held back by the cooldown, setting packageCooldownDays).`;
278
+ }
279
+ return null;
280
+ }
281
+ /** Test hook. */
282
+ export function clearManagerVersionCache() {
283
+ versionCache.clear();
284
+ }
285
+ /** Cooldown env for an MCP stdio launch (`npx …`/`uvx …`); {} for anything else. */
286
+ export async function launchCooldownEnv(command, args, cwd, days = 2) {
287
+ const base = path
288
+ .basename(command)
289
+ .toLowerCase()
290
+ .replace(/\.(cmd|exe)$/, "");
291
+ if (!["npx", "npm", "pnpm", "uvx", "uv"].includes(base))
292
+ return {};
293
+ const line = [base, ...args].join(" ");
294
+ return packageCooldownEnv(line, {
295
+ days,
296
+ now: Date.now(),
297
+ cwd,
298
+ versions: await detectMentionedVersions(line, cwd),
299
+ });
300
+ }
301
+ //# sourceMappingURL=package-cooldown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-cooldown.js","sourceRoot":"","sources":["../../src/core/package-cooldown.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,92 @@
1
1
  import type { ShellThreat } from "./shell-threats.js";
2
+ import { type ThreatFeedData } from "./threat-feed.js";
3
+ import { type PackageManager } from "./package-cooldown.js";
2
4
  export type PackageEcosystem = "npm" | "PyPI";
3
5
  export interface PackageRef {
4
6
  ecosystem: PackageEcosystem;
5
7
  name: string;
8
+ /** Version, range or dist-tag as written (`5.3.0`, `^5`, `next`); undefined when unpinned. */
9
+ spec?: string;
10
+ manager: PackageManager | "npx" | "uvx";
11
+ }
12
+ export interface LockfileInstall {
13
+ ecosystem: PackageEcosystem;
14
+ manager: PackageManager;
15
+ /** Lockfile path relative to the command's directory. */
16
+ file: string;
17
+ /** The command re-resolves (`uv sync --upgrade`): the locked-age check doesn't apply. */
18
+ resolves?: boolean;
6
19
  }
7
20
  export interface PackageCheckOptions {
8
21
  fetch?: typeof fetch;
9
22
  signal?: AbortSignal;
23
+ /** Directory the command runs in (lockfiles are read from here). */
24
+ cwd?: string;
25
+ /** Release-age cooldown in days (0 disables the age check). */
26
+ cooldownDays?: number;
27
+ now?: () => number;
28
+ feed?: ThreatFeedData;
29
+ /** Verdict cache dir; null = memory only. Default: the GG dir (memory only under vitest). */
30
+ cacheDir?: string | null;
31
+ /** Environment for registry settings (default process.env; tests). */
32
+ env?: NodeJS.ProcessEnv;
33
+ /** Override manager version detection (tests). */
34
+ managerVersion?: (manager: PackageManager) => Promise<string | null>;
10
35
  }
11
- /** Packages named by install commands in `command`. Local paths/URLs are skipped. */
36
+ /** Packages named by install commands in `command`. Local paths/URLs/git are skipped. */
12
37
  export declare function parsePackageInstalls(command: string): PackageRef[];
38
+ /** No-arg installs that install a whole lockfile. */
39
+ export declare function parseLockfileInstalls(command: string): LockfileInstall[];
40
+ export interface LockedPackage {
41
+ name: string;
42
+ version: string;
43
+ }
44
+ /** Parse name@version pairs from a lockfile's text. Unknown shapes yield []. */
45
+ export declare function parseLockfile(file: string, raw: string): LockedPackage[];
46
+ /**
47
+ * `parseLockfile` for the event loop's sake: walks lines in slices of a few
48
+ * ms with a yield in between, so a 50k-entry lockfile never stalls the
49
+ * sidecar (shared by every app window). Same results.
50
+ */
51
+ export declare function parseLockfileAsync(file: string, raw: string): Promise<LockedPackage[]>;
13
52
  /** Optimal-string-alignment Damerau-Levenshtein distance. */
14
53
  export declare function damerauLevenshtein(a: string, b: string): number;
15
- /** Typosquat warnings (local) and known-malware blocks (OSV, fail-open). */
54
+ /** The popular name `ref` is one edit away from, or null. Local only. */
55
+ export declare function typosquatCandidate(ref: Pick<PackageRef, "ecosystem" | "name">): string | null;
56
+ export interface LocalCheck {
57
+ refs: PackageRef[];
58
+ lockfiles: LockfileInstall[];
59
+ /** Blocks known from the local feed alone. */
60
+ threats: ShellThreat[];
61
+ typosquats: Array<{
62
+ ref: PackageRef;
63
+ popular: string;
64
+ }>;
65
+ /** Names already blocked by the local feed. */
66
+ flagged: Set<string>;
67
+ /** The feed used (loaded only when the command installs something). */
68
+ feed: ThreatFeedData;
69
+ }
70
+ /** Instant part of the check: parsing, typosquat candidates and local feed hits. */
71
+ export declare function localPackageCheck(command: string, feedOrLoad: ThreatFeedData | (() => ThreatFeedData)): LocalCheck;
72
+ /** Lockfile names checked for already-installed packages, with their ecosystem. */
73
+ export declare const PROJECT_LOCKFILES: readonly LockfileInstall[];
74
+ /**
75
+ * Malware check of one existing lockfile (already-installed packages): the
76
+ * local feed plus one batched OSV lookup, cached by content hash and re-asked
77
+ * at most once a day. No release-age check. Fail-open like every other check.
78
+ */
79
+ export declare function checkLockfileMalware(lock: LockfileInstall, cwd: string, options?: PackageCheckOptions): Promise<ShellThreat[]>;
80
+ /** Full check for one bash command. Returns blocks only; [] when clean or not an install. */
16
81
  export declare function checkPackageInstall(command: string, options?: PackageCheckOptions): Promise<ShellThreat[]>;
17
- /** Test hook: forget cached OSV answers. */
82
+ /** One plain line for the agent, or null when nothing blocks. */
83
+ export declare function packageBlockMessage(threats: ShellThreat[]): string | null;
84
+ /**
85
+ * Check an MCP stdio launch (`npx -y pkg`, `uvx pkg`) before spawning.
86
+ * Returns the block line, or null to allow.
87
+ */
88
+ export declare function checkMcpLaunch(command: string, args: readonly string[], options?: PackageCheckOptions): Promise<string | null>;
89
+ /** Wait for pending verdict-cache writes (tests). */
90
+ export declare function flushPackageVerdicts(): Promise<void>;
91
+ /** Test hook: forget cached answers (memory only; the disk file is left alone). */
18
92
  export declare function clearPackageThreatCache(): void;