@socketsecurity/lib 5.28.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1055) hide show
  1. package/CHANGELOG.md +135 -37
  2. package/README.md +26 -17
  3. package/dist/abort/signal.d.ts +28 -0
  4. package/dist/{abort.js → abort/signal.js} +12 -10
  5. package/dist/ai/discover.d.mts +50 -0
  6. package/dist/ai/discover.js +128 -0
  7. package/dist/ai/profiles.d.mts +39 -0
  8. package/dist/ai/profiles.js +61 -0
  9. package/dist/ai/spawn.d.mts +49 -0
  10. package/dist/ai/spawn.js +207 -0
  11. package/dist/ai/types.d.mts +117 -0
  12. package/dist/ai/types.js +18 -0
  13. package/dist/ai/worktree.d.mts +104 -0
  14. package/dist/ai/worktree.js +200 -0
  15. package/dist/ansi/constants.d.ts +10 -0
  16. package/dist/ansi/constants.js +45 -0
  17. package/dist/ansi/strip.d.ts +33 -0
  18. package/dist/{ansi.js → ansi/strip.js} +7 -24
  19. package/dist/archives/_internal.d.ts +39 -0
  20. package/dist/archives/_internal.js +87 -0
  21. package/dist/archives/detect.d.ts +19 -0
  22. package/dist/archives/detect.js +46 -0
  23. package/dist/archives/extract.d.ts +22 -0
  24. package/dist/archives/extract.js +53 -0
  25. package/dist/archives/tar.d.ts +42 -0
  26. package/dist/archives/tar.js +233 -0
  27. package/dist/archives/types.d.ts +34 -0
  28. package/dist/archives/types.js +18 -0
  29. package/dist/archives/zip.d.ts +20 -0
  30. package/dist/archives/zip.js +124 -0
  31. package/dist/argv/flag-predicates.d.ts +179 -0
  32. package/dist/argv/flag-predicates.js +118 -0
  33. package/dist/argv/flag-types.d.ts +123 -0
  34. package/dist/argv/flag-types.js +116 -0
  35. package/dist/argv/parse-args-string.d.ts +30 -0
  36. package/dist/argv/parse-args-string.js +42 -0
  37. package/dist/argv/parse.d.ts +34 -33
  38. package/dist/argv/parse.js +6 -4
  39. package/dist/arrays/_internal.d.ts +43 -0
  40. package/dist/{arrays.js → arrays/_internal.js} +8 -41
  41. package/dist/arrays/chunk.d.ts +37 -0
  42. package/dist/arrays/chunk.js +43 -0
  43. package/dist/arrays/join.d.ts +76 -0
  44. package/dist/{env/helpers.js → arrays/join.js} +12 -18
  45. package/dist/arrays/predicates.d.ts +40 -0
  46. package/dist/arrays/predicates.js +30 -0
  47. package/dist/arrays/unique.d.ts +36 -0
  48. package/dist/arrays/unique.js +34 -0
  49. package/dist/bin/_internal.d.ts +22 -0
  50. package/dist/bin/_internal.js +43 -0
  51. package/dist/bin/check-primordials.d.ts +41 -15
  52. package/dist/bin/check-primordials.js +49 -28
  53. package/dist/bin/check.d.ts +7 -12
  54. package/dist/bin/check.js +6 -2
  55. package/dist/bin/exec.d.ts +37 -0
  56. package/dist/bin/exec.js +79 -0
  57. package/dist/bin/find.d.ts +58 -0
  58. package/dist/bin/find.js +143 -0
  59. package/dist/bin/resolve.d.ts +30 -0
  60. package/dist/bin/resolve.js +249 -0
  61. package/dist/bin/shadow.d.ts +16 -0
  62. package/dist/bin/shadow.js +36 -0
  63. package/dist/bin/socket-lib.d.ts +10 -14
  64. package/dist/bin/socket-lib.js +19 -4
  65. package/dist/bin/types.d.ts +34 -0
  66. package/dist/bin/types.js +18 -0
  67. package/dist/bin/which.d.ts +111 -0
  68. package/dist/bin/which.js +155 -0
  69. package/dist/cacache/_internal.d.ts +15 -0
  70. package/dist/cacache/_internal.js +43 -0
  71. package/dist/cacache/clear.d.ts +43 -0
  72. package/dist/cacache/clear.js +77 -0
  73. package/dist/cacache/read.d.ts +31 -0
  74. package/dist/cacache/read.js +51 -0
  75. package/dist/cacache/tmp.d.ts +18 -0
  76. package/dist/cacache/tmp.js +39 -0
  77. package/dist/cacache/types.d.ts +37 -0
  78. package/dist/cacache/types.js +18 -0
  79. package/dist/cacache/write.d.ts +31 -0
  80. package/dist/cacache/write.js +53 -0
  81. package/dist/cache/ttl/store.d.ts +29 -0
  82. package/dist/{cache-with-ttl.js → cache/ttl/store.js} +45 -37
  83. package/dist/cache/ttl/types.d.ts +109 -0
  84. package/dist/cache/ttl/types.js +18 -0
  85. package/dist/checks/primordials-defaults.d.ts +20 -0
  86. package/dist/checks/primordials-defaults.js +92 -0
  87. package/dist/checks/primordials.d.ts +69 -61
  88. package/dist/checks/primordials.js +141 -92
  89. package/dist/colors/convert.d.ts +35 -0
  90. package/dist/colors/convert.js +42 -0
  91. package/dist/colors/palette.d.ts +7 -0
  92. package/dist/{colors.js → colors/palette.js} +5 -17
  93. package/dist/colors/socket-palette.d.ts +69 -0
  94. package/dist/colors/socket-palette.js +91 -0
  95. package/dist/colors/types.d.ts +29 -0
  96. package/dist/colors/types.js +18 -0
  97. package/dist/compression/_internal.d.ts +33 -0
  98. package/dist/compression/_internal.js +77 -0
  99. package/dist/compression/brotli.d.ts +82 -0
  100. package/dist/{compression.js → compression/brotli.js} +17 -145
  101. package/dist/compression/gzip.d.ts +70 -0
  102. package/dist/compression/gzip.js +142 -0
  103. package/dist/compression/types.d.ts +37 -0
  104. package/dist/compression/types.js +18 -0
  105. package/dist/constants/agents.d.ts +4 -3
  106. package/dist/constants/agents.js +7 -4
  107. package/dist/constants/encoding.d.ts +3 -3
  108. package/dist/constants/github.d.ts +2 -3
  109. package/dist/constants/licenses.d.ts +5 -5
  110. package/dist/constants/licenses.js +2 -2
  111. package/dist/constants/lifecycle-script-names.d.ts +3 -4
  112. package/dist/constants/lifecycle-script-names.js +2 -2
  113. package/dist/constants/maintained-node-versions.d.ts +1 -1
  114. package/dist/constants/maintained-node-versions.js +3 -4
  115. package/dist/constants/node.d.ts +21 -20
  116. package/dist/constants/node.js +4 -4
  117. package/dist/constants/package-default-node-range.d.ts +1 -1
  118. package/dist/constants/package-default-socket-categories.d.ts +1 -1
  119. package/dist/constants/package-default-socket-categories.js +2 -2
  120. package/dist/constants/packages.d.ts +4 -4
  121. package/dist/constants/packages.js +7 -5
  122. package/dist/constants/platform.d.ts +3 -1
  123. package/dist/constants/platform.js +3 -10
  124. package/dist/constants/{core.d.ts → sentinels.d.ts} +4 -4
  125. package/dist/constants/{core.js → sentinels.js} +3 -3
  126. package/dist/constants/socket.d.ts +4 -6
  127. package/dist/constants/socket.js +6 -9
  128. package/dist/constants/testing.d.ts +3 -3
  129. package/dist/constants/time.d.ts +3 -3
  130. package/dist/constants/typescript.d.ts +3 -3
  131. package/dist/cover/code.d.ts +11 -3
  132. package/dist/cover/code.js +27 -37
  133. package/dist/cover/formatters.d.ts +19 -15
  134. package/dist/cover/formatters.js +21 -18
  135. package/dist/cover/type.d.ts +4 -3
  136. package/dist/cover/type.js +10 -9
  137. package/dist/cover/types.d.ts +1 -1
  138. package/dist/crypto/hash.d.ts +36 -0
  139. package/dist/{crypto.js → crypto/hash.js} +17 -17
  140. package/dist/debug/_internal.d.ts +25 -0
  141. package/dist/debug/_internal.js +77 -0
  142. package/dist/debug/caller-info.d.ts +12 -0
  143. package/dist/debug/caller-info.js +67 -0
  144. package/dist/debug/namespace.d.ts +35 -0
  145. package/dist/debug/namespace.js +101 -0
  146. package/dist/{debug.d.ts → debug/output.d.ts} +23 -42
  147. package/dist/debug/output.js +209 -0
  148. package/dist/debug/types.d.ts +21 -0
  149. package/dist/debug/types.js +18 -0
  150. package/dist/dlx/_internal.d.ts +10 -0
  151. package/dist/dlx/_internal.js +47 -0
  152. package/dist/dlx/arborist.d.ts +86 -61
  153. package/dist/dlx/arborist.js +30 -35
  154. package/dist/dlx/binary-cache.d.ts +108 -0
  155. package/dist/dlx/binary-cache.js +212 -0
  156. package/dist/dlx/binary-download.d.ts +67 -0
  157. package/dist/dlx/binary-download.js +216 -0
  158. package/dist/dlx/binary-resolution.d.ts +61 -0
  159. package/dist/dlx/binary-resolution.js +164 -0
  160. package/dist/dlx/binary-types.d.ts +144 -0
  161. package/dist/dlx/binary-types.js +18 -0
  162. package/dist/dlx/binary.d.ts +39 -268
  163. package/dist/dlx/binary.js +40 -321
  164. package/dist/dlx/cache.d.ts +21 -16
  165. package/dist/dlx/cache.js +2 -2
  166. package/dist/dlx/detect.d.ts +94 -68
  167. package/dist/dlx/detect.js +32 -35
  168. package/dist/dlx/dir.d.ts +20 -18
  169. package/dist/dlx/dir.js +7 -14
  170. package/dist/dlx/firewall.d.ts +27 -0
  171. package/dist/dlx/firewall.js +107 -0
  172. package/dist/dlx/lockfile.d.ts +73 -56
  173. package/dist/dlx/lockfile.js +36 -44
  174. package/dist/dlx/manifest.d.ts +50 -51
  175. package/dist/dlx/manifest.js +52 -53
  176. package/dist/dlx/package.d.ts +83 -279
  177. package/dist/dlx/package.js +45 -267
  178. package/dist/dlx/packages.d.ts +22 -20
  179. package/dist/dlx/packages.js +15 -20
  180. package/dist/dlx/paths.d.ts +26 -23
  181. package/dist/dlx/paths.js +8 -15
  182. package/dist/dlx/spec.d.ts +25 -0
  183. package/dist/dlx/spec.js +63 -0
  184. package/dist/dlx/types.d.ts +142 -0
  185. package/dist/dlx/types.js +18 -0
  186. package/dist/eco/cargo/lockfile-format.d.ts +8 -0
  187. package/dist/eco/cargo/lockfile-format.js +39 -0
  188. package/dist/eco/cargo/manifest-format.d.ts +7 -0
  189. package/dist/eco/cargo/manifest-format.js +38 -0
  190. package/dist/eco/cargo/parse-lockfile.d.ts +84 -0
  191. package/dist/eco/cargo/parse-lockfile.js +257 -0
  192. package/dist/eco/manifest/analyze-lockfile.d.ts +10 -0
  193. package/dist/eco/manifest/analyze-lockfile.js +67 -0
  194. package/dist/eco/manifest/detect-format.d.ts +15 -0
  195. package/dist/eco/manifest/detect-format.js +98 -0
  196. package/dist/eco/manifest/find-packages.d.ts +14 -0
  197. package/dist/eco/manifest/find-packages.js +69 -0
  198. package/dist/eco/manifest/get-package-versions.d.ts +8 -0
  199. package/dist/eco/manifest/get-package-versions.js +52 -0
  200. package/dist/eco/manifest/get-package.d.ts +10 -0
  201. package/dist/eco/manifest/get-package.js +44 -0
  202. package/dist/eco/manifest/manifest-error.d.ts +18 -0
  203. package/dist/eco/manifest/manifest-error.js +37 -0
  204. package/dist/eco/manifest/parse-lockfile.d.ts +16 -0
  205. package/dist/eco/manifest/parse-lockfile.js +91 -0
  206. package/dist/eco/manifest/parse-manifest.d.ts +12 -0
  207. package/dist/eco/manifest/parse-manifest.js +48 -0
  208. package/dist/eco/manifest/parse.d.ts +9 -0
  209. package/dist/eco/manifest/parse.js +52 -0
  210. package/dist/eco/manifest/types.d.ts +10 -0
  211. package/dist/eco/manifest/types.js +18 -0
  212. package/dist/eco/npm/bun/exec.d.ts +15 -0
  213. package/dist/eco/npm/bun/exec.js +35 -0
  214. package/dist/eco/npm/manifest-format.d.ts +11 -0
  215. package/dist/eco/npm/manifest-format.js +38 -0
  216. package/dist/eco/npm/npm/exec.d.ts +24 -0
  217. package/dist/eco/npm/npm/exec.js +64 -0
  218. package/dist/eco/npm/npm/extract-package-name-from-path.d.ts +9 -0
  219. package/dist/eco/npm/npm/extract-package-name-from-path.js +54 -0
  220. package/dist/eco/npm/npm/flags.d.ts +62 -0
  221. package/dist/eco/npm/npm/flags.js +63 -0
  222. package/dist/eco/npm/npm/lockfile-format.d.ts +9 -0
  223. package/dist/eco/npm/npm/lockfile-format.js +42 -0
  224. package/dist/eco/npm/npm/parse-git-url.d.ts +13 -0
  225. package/dist/eco/npm/npm/parse-git-url.js +43 -0
  226. package/dist/eco/npm/npm/parse-lockfile.d.ts +70 -0
  227. package/dist/eco/npm/npm/parse-lockfile.js +224 -0
  228. package/dist/eco/npm/parse-package-json.d.ts +16 -0
  229. package/dist/eco/npm/parse-package-json.js +115 -0
  230. package/dist/eco/npm/pnpm/detect-pnpm-version.d.ts +7 -0
  231. package/dist/eco/npm/pnpm/detect-pnpm-version.js +47 -0
  232. package/dist/eco/npm/pnpm/exec.d.ts +26 -0
  233. package/dist/eco/npm/pnpm/exec.js +65 -0
  234. package/dist/eco/npm/pnpm/flags.d.ts +44 -0
  235. package/dist/eco/npm/pnpm/flags.js +76 -0
  236. package/dist/eco/npm/pnpm/lockfile-format.d.ts +8 -0
  237. package/dist/eco/npm/pnpm/lockfile-format.js +39 -0
  238. package/dist/eco/npm/pnpm/parse-lockfile.d.ts +69 -0
  239. package/dist/eco/npm/pnpm/parse-lockfile.js +274 -0
  240. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.d.ts +15 -0
  241. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +50 -0
  242. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.d.ts +11 -0
  243. package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +52 -0
  244. package/dist/eco/npm/script.d.ts +35 -0
  245. package/dist/eco/npm/script.js +93 -0
  246. package/dist/eco/npm/vlt/exec.d.ts +16 -0
  247. package/dist/eco/npm/vlt/exec.js +35 -0
  248. package/dist/eco/npm/yarnpkg/yarn/exec.d.ts +28 -0
  249. package/dist/eco/npm/yarnpkg/yarn/exec.js +63 -0
  250. package/dist/eco/npm/yarnpkg/yarn/lockfile-format.d.ts +9 -0
  251. package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +39 -0
  252. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +61 -0
  253. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +261 -0
  254. package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.d.ts +16 -0
  255. package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +68 -0
  256. package/dist/{types.d.ts → eco/purl.d.ts} +14 -26
  257. package/dist/{types.js → eco/purl.js} +3 -3
  258. package/dist/eco/types.d.ts +51 -0
  259. package/dist/eco/types.js +18 -0
  260. package/dist/effects/pulse-frames.d.ts +16 -17
  261. package/dist/effects/pulse-frames.js +4 -4
  262. package/dist/effects/shimmer-keyframes.d.ts +39 -37
  263. package/dist/effects/shimmer-terminal.d.ts +43 -42
  264. package/dist/effects/shimmer-terminal.js +3 -3
  265. package/dist/effects/shimmer.d.ts +172 -153
  266. package/dist/effects/shimmer.js +78 -76
  267. package/dist/env/boolean.d.ts +33 -0
  268. package/dist/env/boolean.js +46 -0
  269. package/dist/env/case-insensitive.d.ts +42 -0
  270. package/dist/env/case-insensitive.js +42 -0
  271. package/dist/env/ci.d.ts +11 -12
  272. package/dist/env/debug.d.ts +10 -10
  273. package/dist/env/github.d.ts +71 -74
  274. package/dist/env/home.d.ts +15 -14
  275. package/dist/env/locale.d.ts +26 -29
  276. package/dist/env/node-auth-token.d.ts +10 -10
  277. package/dist/env/node-env.d.ts +10 -10
  278. package/dist/env/npm.d.ts +45 -47
  279. package/dist/env/number.d.ts +29 -0
  280. package/dist/env/number.js +54 -0
  281. package/dist/env/package-manager.d.ts +36 -33
  282. package/dist/env/package-manager.js +3 -3
  283. package/dist/env/path.d.ts +10 -10
  284. package/dist/env/pre-commit.d.ts +11 -11
  285. package/dist/env/pre-commit.js +2 -2
  286. package/dist/env/proxy.d.ts +44 -0
  287. package/dist/env/proxy.js +126 -0
  288. package/dist/env/rewire.d.ts +105 -99
  289. package/dist/env/rewire.js +11 -8
  290. package/dist/env/shell.d.ts +10 -10
  291. package/dist/env/socket-cli.d.ts +109 -125
  292. package/dist/env/socket-cli.js +7 -12
  293. package/dist/env/socket.d.ts +347 -130
  294. package/dist/env/socket.js +107 -8
  295. package/dist/env/string.d.ts +28 -0
  296. package/dist/env/string.js +47 -0
  297. package/dist/env/temp-dir.d.ts +26 -29
  298. package/dist/env/term.d.ts +10 -10
  299. package/dist/env/test.d.ts +29 -31
  300. package/dist/env/test.js +5 -4
  301. package/dist/env/types.d.ts +62 -0
  302. package/dist/env/types.js +18 -0
  303. package/dist/env/windows.d.ts +37 -38
  304. package/dist/env/xdg.d.ts +29 -29
  305. package/dist/errors/message.d.ts +27 -0
  306. package/dist/errors/message.js +49 -0
  307. package/dist/errors/predicates.d.ts +46 -0
  308. package/dist/{errors.js → errors/predicates.js} +13 -43
  309. package/dist/errors/stack.d.ts +16 -0
  310. package/dist/errors/stack.js +39 -0
  311. package/dist/events/exit/_internal.d.ts +68 -0
  312. package/dist/events/exit/_internal.js +127 -0
  313. package/dist/events/exit/handler.d.ts +20 -0
  314. package/dist/events/exit/handler.js +58 -0
  315. package/dist/events/exit/intercept.d.ts +8 -0
  316. package/dist/events/exit/intercept.js +75 -0
  317. package/dist/events/exit/lifecycle.d.ts +28 -0
  318. package/dist/events/exit/lifecycle.js +109 -0
  319. package/dist/events/exit/signals.d.ts +16 -0
  320. package/dist/events/exit/signals.js +34 -0
  321. package/dist/events/exit/types.d.ts +21 -0
  322. package/dist/events/exit/types.js +18 -0
  323. package/dist/events/warning/handler.d.ts +31 -0
  324. package/dist/events/warning/handler.js +43 -0
  325. package/dist/events/warning/suppress.d.ts +65 -0
  326. package/dist/{suppress-warnings.js → events/warning/suppress.js} +16 -28
  327. package/dist/external/@npmcli/package-json/lib/read-package.js +11 -1
  328. package/dist/external/@npmcli/package-json.js +300 -82
  329. package/dist/external/@npmcli/promise-spawn.js +15 -1
  330. package/dist/external/@socketregistry/packageurl-js.js +7 -1
  331. package/dist/external/@socketregistry/yocto-spinner.js +5 -1
  332. package/dist/external/@yarnpkg/extensions.js +1 -1
  333. package/dist/external/adm-zip.js +20 -4
  334. package/dist/external/debug.js +15 -1
  335. package/dist/external/external-pack.js +20 -4
  336. package/dist/external/fast-sort.js +3 -1
  337. package/dist/external/get-east-asian-width.js +3 -1
  338. package/dist/external/libnpmexec.js +5 -1
  339. package/dist/external/npm-pack.js +344 -113
  340. package/dist/external/p-map.js +7 -1
  341. package/dist/external/pico-pack.js +17 -1
  342. package/dist/external/pony-cause.js +1 -1
  343. package/dist/external/spdx-pack.js +3 -1
  344. package/dist/external/supports-color.js +1 -1
  345. package/dist/external/tar-fs.js +15 -1
  346. package/dist/external/which.js +11 -1
  347. package/dist/external/yargs-parser.js +15 -1
  348. package/dist/external-tools/bazel/asset-names.d.ts +66 -0
  349. package/dist/external-tools/bazel/asset-names.js +96 -0
  350. package/dist/external-tools/bazel/from-download.d.ts +49 -0
  351. package/dist/external-tools/bazel/from-download.js +49 -0
  352. package/dist/external-tools/bazel/from-path.d.ts +8 -0
  353. package/dist/external-tools/bazel/from-path.js +41 -0
  354. package/dist/external-tools/bazel/read-bazel-version-file.d.ts +12 -0
  355. package/dist/external-tools/bazel/read-bazel-version-file.js +61 -0
  356. package/dist/external-tools/bazel/resolve-asset-url.d.ts +14 -0
  357. package/dist/external-tools/bazel/resolve-asset-url.js +42 -0
  358. package/dist/external-tools/bazel/resolve-bazel-version.d.ts +19 -0
  359. package/dist/external-tools/bazel/resolve-bazel-version.js +59 -0
  360. package/dist/external-tools/bazel/resolve.d.ts +35 -0
  361. package/dist/external-tools/bazel/resolve.js +68 -0
  362. package/dist/external-tools/bazel/types.d.ts +22 -0
  363. package/dist/external-tools/bazel/types.js +18 -0
  364. package/dist/external-tools/cdxgen/asset-names.d.ts +58 -0
  365. package/dist/external-tools/cdxgen/asset-names.js +79 -0
  366. package/dist/external-tools/cdxgen/from-download.d.ts +43 -0
  367. package/dist/external-tools/cdxgen/from-download.js +83 -0
  368. package/dist/external-tools/cdxgen/from-path.d.ts +5 -0
  369. package/dist/external-tools/cdxgen/from-path.js +40 -0
  370. package/dist/external-tools/cdxgen/from-vfs.d.ts +7 -0
  371. package/dist/external-tools/cdxgen/from-vfs.js +47 -0
  372. package/dist/external-tools/cdxgen/resolve.d.ts +32 -0
  373. package/dist/external-tools/cdxgen/resolve.js +73 -0
  374. package/dist/external-tools/cdxgen/types.d.ts +33 -0
  375. package/dist/external-tools/cdxgen/types.js +18 -0
  376. package/dist/external-tools/from-download.d.ts +162 -0
  377. package/dist/external-tools/from-download.js +72 -0
  378. package/dist/external-tools/janus/asset-names.d.ts +43 -0
  379. package/dist/external-tools/janus/asset-names.js +57 -0
  380. package/dist/external-tools/janus/from-download.d.ts +26 -0
  381. package/dist/external-tools/janus/from-download.js +73 -0
  382. package/dist/external-tools/janus/from-path.d.ts +5 -0
  383. package/dist/external-tools/janus/from-path.js +40 -0
  384. package/dist/external-tools/janus/from-vfs.d.ts +7 -0
  385. package/dist/external-tools/janus/from-vfs.js +47 -0
  386. package/dist/external-tools/janus/resolve.d.ts +28 -0
  387. package/dist/external-tools/janus/resolve.js +73 -0
  388. package/dist/external-tools/janus/types.d.ts +24 -0
  389. package/dist/external-tools/janus/types.js +18 -0
  390. package/dist/external-tools/jre/asset-names.d.ts +91 -0
  391. package/dist/external-tools/jre/asset-names.js +88 -0
  392. package/dist/external-tools/jre/detect-platform-arch.d.ts +8 -0
  393. package/dist/external-tools/jre/detect-platform-arch.js +52 -0
  394. package/dist/external-tools/jre/from-download.d.ts +62 -0
  395. package/dist/external-tools/jre/from-download.js +70 -0
  396. package/dist/external-tools/jre/from-java-home.d.ts +10 -0
  397. package/dist/external-tools/jre/from-java-home.js +57 -0
  398. package/dist/external-tools/jre/from-path.d.ts +9 -0
  399. package/dist/external-tools/jre/from-path.js +52 -0
  400. package/dist/external-tools/jre/from-vfs.d.ts +17 -0
  401. package/dist/external-tools/jre/from-vfs.js +64 -0
  402. package/dist/external-tools/jre/resolve.d.ts +40 -0
  403. package/dist/external-tools/jre/resolve.js +78 -0
  404. package/dist/external-tools/jre/types.d.ts +28 -0
  405. package/dist/external-tools/jre/types.js +18 -0
  406. package/dist/external-tools/manifest.d.ts +105 -0
  407. package/dist/external-tools/manifest.js +167 -0
  408. package/dist/external-tools/opengrep/asset-names.d.ts +44 -0
  409. package/dist/external-tools/opengrep/asset-names.js +78 -0
  410. package/dist/external-tools/opengrep/from-download.d.ts +17 -0
  411. package/dist/external-tools/opengrep/from-download.js +83 -0
  412. package/dist/external-tools/opengrep/from-path.d.ts +5 -0
  413. package/dist/external-tools/opengrep/from-path.js +40 -0
  414. package/dist/external-tools/opengrep/from-vfs.d.ts +8 -0
  415. package/dist/external-tools/opengrep/from-vfs.js +47 -0
  416. package/dist/external-tools/opengrep/resolve.d.ts +26 -0
  417. package/dist/external-tools/opengrep/resolve.js +73 -0
  418. package/dist/external-tools/opengrep/types.d.ts +24 -0
  419. package/dist/external-tools/opengrep/types.js +18 -0
  420. package/dist/external-tools/sbt/asset-names.d.ts +31 -0
  421. package/dist/external-tools/sbt/asset-names.js +33 -0
  422. package/dist/external-tools/sbt/from-download.d.ts +44 -0
  423. package/dist/external-tools/sbt/from-download.js +64 -0
  424. package/dist/external-tools/sbt/from-path.d.ts +8 -0
  425. package/dist/external-tools/sbt/from-path.js +41 -0
  426. package/dist/external-tools/sbt/from-vfs.d.ts +14 -0
  427. package/dist/external-tools/sbt/from-vfs.js +48 -0
  428. package/dist/external-tools/sbt/resolve.d.ts +31 -0
  429. package/dist/external-tools/sbt/resolve.js +73 -0
  430. package/dist/external-tools/sbt/types.d.ts +32 -0
  431. package/dist/external-tools/sbt/types.js +18 -0
  432. package/dist/external-tools/synp/asset-names.d.ts +14 -0
  433. package/dist/external-tools/synp/asset-names.js +32 -0
  434. package/dist/external-tools/synp/from-download.d.ts +18 -0
  435. package/dist/external-tools/synp/from-download.js +44 -0
  436. package/dist/external-tools/synp/from-path.d.ts +5 -0
  437. package/dist/external-tools/synp/from-path.js +40 -0
  438. package/dist/external-tools/synp/from-vfs.d.ts +7 -0
  439. package/dist/external-tools/synp/from-vfs.js +47 -0
  440. package/dist/external-tools/synp/resolve.d.ts +21 -0
  441. package/dist/external-tools/synp/resolve.js +72 -0
  442. package/dist/external-tools/synp/types.d.ts +19 -0
  443. package/dist/external-tools/synp/types.js +18 -0
  444. package/dist/external-tools/trivy/asset-names.d.ts +34 -0
  445. package/dist/external-tools/trivy/asset-names.js +68 -0
  446. package/dist/external-tools/trivy/from-download.d.ts +17 -0
  447. package/dist/external-tools/trivy/from-download.js +67 -0
  448. package/dist/external-tools/trivy/from-path.d.ts +5 -0
  449. package/dist/external-tools/trivy/from-path.js +40 -0
  450. package/dist/external-tools/trivy/from-vfs.d.ts +7 -0
  451. package/dist/external-tools/trivy/from-vfs.js +47 -0
  452. package/dist/external-tools/trivy/resolve.d.ts +26 -0
  453. package/dist/external-tools/trivy/resolve.js +73 -0
  454. package/dist/external-tools/trivy/types.d.ts +24 -0
  455. package/dist/external-tools/trivy/types.js +18 -0
  456. package/dist/external-tools/trufflehog/asset-names.d.ts +34 -0
  457. package/dist/external-tools/trufflehog/asset-names.js +72 -0
  458. package/dist/external-tools/trufflehog/from-download.d.ts +37 -0
  459. package/dist/external-tools/trufflehog/from-download.js +65 -0
  460. package/dist/external-tools/trufflehog/from-path.d.ts +7 -0
  461. package/dist/external-tools/trufflehog/from-path.js +40 -0
  462. package/dist/external-tools/trufflehog/from-vfs.d.ts +11 -0
  463. package/dist/external-tools/trufflehog/from-vfs.js +47 -0
  464. package/dist/external-tools/trufflehog/resolve.d.ts +30 -0
  465. package/dist/external-tools/trufflehog/resolve.js +73 -0
  466. package/dist/external-tools/trufflehog/types.d.ts +25 -0
  467. package/dist/external-tools/trufflehog/types.js +18 -0
  468. package/dist/external-tools/uv/asset-names.d.ts +36 -0
  469. package/dist/external-tools/uv/asset-names.js +80 -0
  470. package/dist/external-tools/uv/from-download.d.ts +17 -0
  471. package/dist/external-tools/uv/from-download.js +68 -0
  472. package/dist/external-tools/uv/from-path.d.ts +5 -0
  473. package/dist/external-tools/uv/from-path.js +40 -0
  474. package/dist/external-tools/uv/from-vfs.d.ts +7 -0
  475. package/dist/external-tools/uv/from-vfs.js +47 -0
  476. package/dist/external-tools/uv/resolve.d.ts +25 -0
  477. package/dist/external-tools/uv/resolve.js +73 -0
  478. package/dist/external-tools/uv/types.d.ts +24 -0
  479. package/dist/external-tools/uv/types.js +18 -0
  480. package/dist/fs/_internal.d.ts +22 -0
  481. package/dist/fs/_internal.js +48 -0
  482. package/dist/fs/encoding.d.ts +49 -0
  483. package/dist/fs/encoding.js +102 -0
  484. package/dist/fs/find-up.d.ts +58 -0
  485. package/dist/fs/find-up.js +152 -0
  486. package/dist/fs/inspect.d.ts +117 -0
  487. package/dist/fs/inspect.js +112 -0
  488. package/dist/fs/path-cache.d.ts +21 -0
  489. package/dist/fs/path-cache.js +35 -0
  490. package/dist/fs/read-dir.d.ts +66 -0
  491. package/dist/fs/read-dir.js +86 -0
  492. package/dist/fs/read-file.d.ts +150 -0
  493. package/dist/fs/read-file.js +131 -0
  494. package/dist/fs/read-json-cache.d.ts +83 -0
  495. package/dist/fs/read-json-cache.js +156 -0
  496. package/dist/fs/read-json.d.ts +77 -0
  497. package/dist/fs/read-json.js +192 -0
  498. package/dist/fs/safe.d.ts +153 -0
  499. package/dist/fs/safe.js +182 -0
  500. package/dist/fs/types.d.ts +291 -0
  501. package/dist/fs/types.js +18 -0
  502. package/dist/fs/unique.d.ts +29 -0
  503. package/dist/fs/unique.js +51 -0
  504. package/dist/fs/validate.d.ts +40 -0
  505. package/dist/fs/validate.js +46 -0
  506. package/dist/fs/write-json.d.ts +78 -0
  507. package/dist/fs/write-json.js +83 -0
  508. package/dist/git/_internal.d.ts +105 -0
  509. package/dist/git/_internal.js +236 -0
  510. package/dist/git/changed.d.ts +145 -0
  511. package/dist/git/changed.js +83 -0
  512. package/dist/git/repo.d.ts +62 -0
  513. package/dist/git/repo.js +111 -0
  514. package/dist/git/staged.d.ts +138 -0
  515. package/dist/git/staged.js +71 -0
  516. package/dist/git/types.d.ts +109 -0
  517. package/dist/git/types.js +18 -0
  518. package/dist/git/unstaged.d.ts +141 -0
  519. package/dist/git/unstaged.js +71 -0
  520. package/dist/github/constants.d.ts +18 -0
  521. package/dist/github/constants.js +36 -0
  522. package/dist/github/errors.d.ts +36 -0
  523. package/dist/github/errors.js +40 -0
  524. package/dist/github/fetch.d.ts +89 -0
  525. package/dist/github/fetch.js +87 -0
  526. package/dist/github/ghsa.d.ts +118 -0
  527. package/dist/github/ghsa.js +178 -0
  528. package/dist/github/refs-cache.d.ts +40 -0
  529. package/dist/github/refs-cache.js +49 -0
  530. package/dist/github/refs-graphql.d.ts +42 -0
  531. package/dist/github/refs-graphql.js +109 -0
  532. package/dist/github/refs-rest.d.ts +23 -0
  533. package/dist/github/refs-rest.js +104 -0
  534. package/dist/github/refs.d.ts +84 -0
  535. package/dist/github/refs.js +67 -0
  536. package/dist/github/token.d.ts +77 -0
  537. package/dist/github/token.js +55 -0
  538. package/dist/github/types.d.ts +277 -0
  539. package/dist/github/types.js +18 -0
  540. package/dist/globs/_internal.d.ts +46 -0
  541. package/dist/globs/_internal.js +96 -0
  542. package/dist/globs/defaults.d.ts +7 -0
  543. package/dist/globs/defaults.js +61 -0
  544. package/dist/globs/match.d.ts +59 -0
  545. package/dist/globs/match.js +84 -0
  546. package/dist/globs/matcher.d.ts +46 -0
  547. package/dist/globs/matcher.js +99 -0
  548. package/dist/globs/stream.d.ts +18 -0
  549. package/dist/globs/stream.js +58 -0
  550. package/dist/globs/types.d.ts +35 -0
  551. package/dist/globs/types.js +18 -0
  552. package/dist/http-request/_internal.d.ts +18 -0
  553. package/dist/http-request/_internal.js +39 -0
  554. package/dist/http-request/browser-fetch.d.ts +10 -0
  555. package/dist/http-request/browser-fetch.js +32 -0
  556. package/dist/http-request/browser.d.ts +190 -0
  557. package/dist/http-request/browser.js +224 -0
  558. package/dist/http-request/checksums.d.ts +69 -0
  559. package/dist/http-request/checksums.js +72 -0
  560. package/dist/http-request/convenience.d.ts +104 -0
  561. package/dist/http-request/convenience.js +96 -0
  562. package/dist/http-request/download-types.d.ts +224 -0
  563. package/dist/http-request/download-types.js +18 -0
  564. package/dist/http-request/download.d.ts +71 -0
  565. package/dist/http-request/download.js +201 -0
  566. package/dist/http-request/errors.d.ts +23 -0
  567. package/dist/http-request/errors.js +50 -0
  568. package/dist/http-request/headers.d.ts +57 -0
  569. package/dist/http-request/headers.js +86 -0
  570. package/dist/http-request/request-attempt.d.ts +21 -0
  571. package/dist/http-request/request-attempt.js +288 -0
  572. package/dist/http-request/request-types.d.ts +253 -0
  573. package/dist/http-request/request-types.js +18 -0
  574. package/dist/http-request/request.d.ts +59 -0
  575. package/dist/http-request/request.js +111 -0
  576. package/dist/http-request/response-reader.d.ts +25 -0
  577. package/dist/http-request/response-reader.js +54 -0
  578. package/dist/http-request/response-types.d.ts +123 -0
  579. package/dist/http-request/response-types.js +40 -0
  580. package/dist/http-request/user-agent.d.ts +55 -0
  581. package/dist/http-request/user-agent.js +61 -0
  582. package/dist/{dlx/integrity.d.ts → integrity.d.ts} +36 -30
  583. package/dist/{dlx/integrity.js → integrity.js} +25 -19
  584. package/dist/ipc/_internal.d.ts +25 -0
  585. package/dist/ipc/_internal.js +50 -0
  586. package/dist/ipc/directory.d.ts +18 -0
  587. package/dist/ipc/directory.js +66 -0
  588. package/dist/ipc/paths.d.ts +37 -0
  589. package/dist/ipc/paths.js +48 -0
  590. package/dist/ipc/types.d.ts +22 -0
  591. package/dist/ipc/types.js +18 -0
  592. package/dist/ipc/write.d.ts +39 -0
  593. package/dist/ipc/write.js +77 -0
  594. package/dist/ipc-cli/get.d.ts +21 -0
  595. package/dist/{ipc-cli.js → ipc-cli/get.js} +5 -5
  596. package/dist/ipc-cli/types.d.ts +14 -0
  597. package/dist/ipc-cli/types.js +18 -0
  598. package/dist/json/edit.d.ts +22 -8
  599. package/dist/json/edit.js +85 -96
  600. package/dist/json/format.d.ts +100 -86
  601. package/dist/json/format.js +4 -3
  602. package/dist/json/parse.d.ts +113 -88
  603. package/dist/json/parse.js +30 -24
  604. package/dist/json/types.d.ts +133 -117
  605. package/dist/links/create.d.ts +65 -0
  606. package/dist/{links.js → links/create.js} +10 -10
  607. package/dist/links/types.d.ts +19 -0
  608. package/dist/links/types.js +18 -0
  609. package/dist/logger/_internal.d.ts +82 -0
  610. package/dist/logger/_internal.js +80 -0
  611. package/dist/logger/browser.d.ts +16 -0
  612. package/dist/logger/browser.js +65 -0
  613. package/dist/logger/colors.d.ts +18 -0
  614. package/dist/logger/colors.js +54 -0
  615. package/dist/logger/console.d.ts +33 -0
  616. package/dist/logger/console.js +119 -0
  617. package/dist/logger/default.d.ts +405 -0
  618. package/dist/logger/default.js +854 -0
  619. package/dist/logger/symbols-builder.d.ts +29 -0
  620. package/dist/logger/symbols-builder.js +61 -0
  621. package/dist/logger/symbols.d.ts +61 -0
  622. package/dist/logger/symbols.js +129 -0
  623. package/dist/logger/types.d.ts +88 -0
  624. package/dist/logger/types.js +18 -0
  625. package/dist/memo/_internal.d.ts +16 -0
  626. package/dist/memo/_internal.js +53 -0
  627. package/dist/memo/async.d.ts +32 -0
  628. package/dist/memo/async.js +120 -0
  629. package/dist/memo/clear.d.ts +15 -0
  630. package/dist/memo/clear.js +37 -0
  631. package/dist/memo/decorator.d.ts +29 -0
  632. package/dist/memo/decorator.js +40 -0
  633. package/dist/memo/memoize.d.ts +33 -0
  634. package/dist/memo/memoize.js +91 -0
  635. package/dist/memo/once.d.ts +25 -0
  636. package/dist/memo/once.js +44 -0
  637. package/dist/memo/types.d.ts +43 -0
  638. package/dist/memo/types.js +18 -0
  639. package/dist/memo/weak.d.ts +26 -0
  640. package/dist/memo/weak.js +44 -0
  641. package/dist/node/async-hooks.d.ts +2 -2
  642. package/dist/node/child-process.d.ts +5 -7
  643. package/dist/node/crypto.d.ts +2 -2
  644. package/dist/node/events.d.ts +2 -2
  645. package/dist/node/fs-promises.d.ts +2 -2
  646. package/dist/node/fs.d.ts +6 -10
  647. package/dist/node/http.d.ts +2 -2
  648. package/dist/node/https.d.ts +2 -2
  649. package/dist/node/module.d.ts +7 -0
  650. package/dist/node/module.js +41 -0
  651. package/dist/node/os.d.ts +2 -2
  652. package/dist/node/path.d.ts +2 -2
  653. package/dist/node/timers-promises.d.ts +2 -2
  654. package/dist/node/url.d.ts +2 -2
  655. package/dist/node/util.d.ts +2 -2
  656. package/dist/objects/getters.d.ts +116 -0
  657. package/dist/objects/getters.js +137 -0
  658. package/dist/objects/inspect.d.ts +67 -0
  659. package/dist/objects/inspect.js +59 -0
  660. package/dist/objects/mutate.d.ts +72 -0
  661. package/dist/objects/mutate.js +81 -0
  662. package/dist/objects/predicates.d.ts +96 -0
  663. package/dist/objects/predicates.js +68 -0
  664. package/dist/objects/sort.d.ts +88 -0
  665. package/dist/objects/sort.js +85 -0
  666. package/dist/objects/types.d.ts +68 -0
  667. package/dist/objects/types.js +18 -0
  668. package/dist/packages/edit-class.d.ts +39 -0
  669. package/dist/packages/edit-class.js +269 -0
  670. package/dist/packages/edit.d.ts +60 -61
  671. package/dist/packages/edit.js +21 -286
  672. package/dist/packages/exports.d.ts +30 -28
  673. package/dist/packages/exports.js +38 -34
  674. package/dist/packages/isolation.d.ts +16 -7
  675. package/dist/packages/isolation.js +52 -59
  676. package/dist/packages/licenses.d.ts +49 -45
  677. package/dist/packages/licenses.js +13 -18
  678. package/dist/packages/manifest.d.ts +14 -14
  679. package/dist/packages/manifest.js +16 -15
  680. package/dist/packages/normalize.d.ts +17 -16
  681. package/dist/packages/normalize.js +20 -17
  682. package/dist/packages/operations.d.ts +49 -36
  683. package/dist/packages/operations.js +30 -15
  684. package/dist/packages/provenance.d.ts +22 -9
  685. package/dist/packages/provenance.js +76 -66
  686. package/dist/packages/specs.d.ts +21 -21
  687. package/dist/packages/specs.js +7 -7
  688. package/dist/{packages.d.ts → packages/types.d.ts} +14 -20
  689. package/dist/packages/types.js +18 -0
  690. package/dist/packages/validation.d.ts +13 -13
  691. package/dist/packages/validation.js +2 -2
  692. package/dist/paths/_internal.d.ts +51 -0
  693. package/dist/paths/_internal.js +102 -0
  694. package/dist/paths/conversion.d.ts +82 -0
  695. package/dist/paths/conversion.js +74 -0
  696. package/dist/paths/dirnames.d.ts +1 -1
  697. package/dist/paths/exts.d.ts +1 -1
  698. package/dist/paths/filenames.d.ts +1 -1
  699. package/dist/paths/globs.d.ts +1 -1
  700. package/dist/paths/normalize.d.ts +30 -440
  701. package/dist/paths/normalize.js +49 -289
  702. package/dist/paths/packages.d.ts +7 -1
  703. package/dist/paths/packages.js +7 -12
  704. package/dist/paths/predicates.d.ts +129 -0
  705. package/dist/paths/predicates.js +121 -0
  706. package/dist/paths/resolve.d.ts +71 -0
  707. package/dist/paths/resolve.js +135 -0
  708. package/dist/paths/rewire.d.ts +37 -38
  709. package/dist/paths/rewire.js +3 -3
  710. package/dist/paths/socket.d.ts +146 -47
  711. package/dist/paths/socket.js +23 -25
  712. package/dist/perf/_internal.d.ts +10 -0
  713. package/dist/perf/_internal.js +30 -0
  714. package/dist/perf/enabled.d.ts +13 -0
  715. package/dist/perf/enabled.js +33 -0
  716. package/dist/perf/metrics.d.ts +51 -0
  717. package/dist/perf/metrics.js +74 -0
  718. package/dist/perf/report.d.ts +40 -0
  719. package/dist/perf/report.js +85 -0
  720. package/dist/perf/timer.d.ts +100 -0
  721. package/dist/perf/timer.js +137 -0
  722. package/dist/perf/types.d.ts +15 -0
  723. package/dist/perf/types.js +18 -0
  724. package/dist/pkg-ext/data.d.ts +8 -0
  725. package/dist/{package-extensions.js → pkg-ext/data.js} +4 -4
  726. package/dist/pkg-ext/types.d.ts +6 -0
  727. package/dist/pkg-ext/types.js +18 -0
  728. package/dist/primordials/array.d.ts +73 -0
  729. package/dist/primordials/array.js +220 -0
  730. package/dist/primordials/buffer.d.ts +17 -0
  731. package/dist/primordials/buffer.js +61 -0
  732. package/dist/primordials/date.d.ts +16 -0
  733. package/dist/primordials/date.js +56 -0
  734. package/dist/primordials/error.d.ts +19 -0
  735. package/dist/primordials/error.js +75 -0
  736. package/dist/primordials/function.d.ts +10 -0
  737. package/dist/primordials/function.js +42 -0
  738. package/dist/primordials/globals.d.ts +20 -0
  739. package/dist/primordials/globals.js +60 -0
  740. package/dist/primordials/json.d.ts +11 -0
  741. package/dist/primordials/json.js +33 -0
  742. package/dist/primordials/map-set.d.ts +35 -0
  743. package/dist/primordials/map-set.js +115 -0
  744. package/dist/primordials/math.d.ts +51 -0
  745. package/dist/primordials/math.js +161 -0
  746. package/dist/primordials/number.d.ts +25 -0
  747. package/dist/primordials/number.js +92 -0
  748. package/dist/primordials/object.d.ts +74 -0
  749. package/dist/primordials/object.js +142 -0
  750. package/dist/primordials/promise.d.ts +34 -0
  751. package/dist/primordials/promise.js +61 -0
  752. package/dist/primordials/reflect.d.ts +18 -0
  753. package/dist/primordials/reflect.js +66 -0
  754. package/dist/primordials/regexp.d.ts +14 -0
  755. package/dist/primordials/regexp.js +50 -0
  756. package/dist/primordials/string.d.ts +71 -0
  757. package/dist/primordials/string.js +174 -0
  758. package/dist/primordials/symbol.d.ts +28 -0
  759. package/dist/primordials/symbol.js +94 -0
  760. package/dist/primordials/uncurry.d.ts +18 -0
  761. package/dist/primordials/uncurry.js +65 -0
  762. package/dist/primordials/url.d.ts +13 -0
  763. package/dist/primordials/url.js +69 -0
  764. package/dist/process/_internal.d.ts +8 -0
  765. package/dist/process/_internal.js +33 -0
  766. package/dist/process/abort.d.ts +20 -0
  767. package/dist/{constants/process.js → process/abort.js} +3 -3
  768. package/dist/process/lock-instance.d.ts +19 -0
  769. package/dist/process/lock-instance.js +31 -0
  770. package/dist/process/lock-manager.d.ts +152 -0
  771. package/dist/{process-lock.js → process/lock-manager.js} +98 -106
  772. package/dist/process/lock-types.d.ts +43 -0
  773. package/dist/process/lock-types.js +18 -0
  774. package/dist/process/spawn/_internal.d.ts +24 -0
  775. package/dist/process/spawn/_internal.js +62 -0
  776. package/dist/process/spawn/child.d.ts +134 -0
  777. package/dist/process/spawn/child.js +216 -0
  778. package/dist/process/spawn/errors.d.ts +45 -0
  779. package/dist/process/spawn/errors.js +118 -0
  780. package/dist/process/spawn/stdio.d.ts +37 -0
  781. package/dist/process/spawn/stdio.js +38 -0
  782. package/dist/process/spawn/types.d.ts +325 -0
  783. package/dist/process/spawn/types.js +18 -0
  784. package/dist/process/transient.d.ts +22 -0
  785. package/dist/{temporary-executor.js → process/transient.js} +8 -8
  786. package/dist/promises/_internal.d.ts +15 -0
  787. package/dist/promises/_internal.js +41 -0
  788. package/dist/promises/iterate.d.ts +190 -0
  789. package/dist/promises/iterate.js +111 -0
  790. package/dist/promises/options.d.ts +76 -0
  791. package/dist/promises/options.js +108 -0
  792. package/dist/promises/queue.d.ts +51 -0
  793. package/dist/{promise-queue.js → promises/queue.js} +27 -22
  794. package/dist/promises/resolvers.d.ts +55 -0
  795. package/dist/promises/resolvers.js +49 -0
  796. package/dist/promises/retry.d.ts +105 -0
  797. package/dist/promises/retry.js +104 -0
  798. package/dist/promises/types.d.ts +203 -0
  799. package/dist/promises/types.js +18 -0
  800. package/dist/regexps/escape.d.ts +6 -0
  801. package/dist/regexps/escape.js +32 -0
  802. package/dist/regexps/hex.d.ts +7 -0
  803. package/dist/regexps/hex.js +38 -0
  804. package/dist/regexps/spec.d.ts +15 -0
  805. package/dist/{regexps.js → regexps/spec.js} +32 -36
  806. package/dist/releases/github-archives.d.ts +47 -36
  807. package/dist/releases/github-archives.js +22 -36
  808. package/dist/releases/github-asset-url.d.ts +72 -0
  809. package/dist/releases/github-asset-url.js +167 -0
  810. package/dist/releases/github-assets.d.ts +13 -11
  811. package/dist/releases/github-assets.js +2 -2
  812. package/dist/releases/github-auth.d.ts +9 -9
  813. package/dist/releases/github-downloads.d.ts +31 -26
  814. package/dist/releases/github-downloads.js +24 -36
  815. package/dist/releases/github-listing.d.ts +105 -0
  816. package/dist/releases/github-listing.js +171 -0
  817. package/dist/releases/github-types.d.ts +45 -19
  818. package/dist/releases/socket-btm.d.ts +149 -99
  819. package/dist/releases/socket-btm.js +14 -20
  820. package/dist/schema/parse.d.ts +14 -15
  821. package/dist/schema/parse.js +2 -2
  822. package/dist/schema/types.d.ts +49 -37
  823. package/dist/schema/validate.d.ts +42 -19
  824. package/dist/schema/validate.js +15 -6
  825. package/dist/sea/detect.d.ts +37 -0
  826. package/dist/sea/{util.js → detect.js} +6 -6
  827. package/dist/secrets/_internal.d.ts +57 -0
  828. package/dist/secrets/_internal.js +84 -0
  829. package/dist/secrets/find.d.ts +79 -0
  830. package/dist/secrets/find.js +84 -0
  831. package/dist/secrets/keychain.d.ts +138 -0
  832. package/dist/secrets/keychain.js +328 -0
  833. package/dist/secrets/linux.d.ts +20 -0
  834. package/dist/secrets/linux.js +151 -0
  835. package/dist/secrets/macos.d.ts +36 -0
  836. package/dist/secrets/macos.js +165 -0
  837. package/dist/secrets/rc.d.ts +139 -0
  838. package/dist/secrets/rc.js +196 -0
  839. package/dist/secrets/socket-api-token.d.ts +23 -0
  840. package/dist/secrets/socket-api-token.js +50 -0
  841. package/dist/secrets/types.d.ts +69 -0
  842. package/dist/secrets/types.js +18 -0
  843. package/dist/secrets/windows.d.ts +50 -0
  844. package/dist/secrets/windows.js +318 -0
  845. package/dist/shadow/skip.d.ts +25 -0
  846. package/dist/{shadow.js → shadow/skip.js} +4 -4
  847. package/dist/shadow/types.d.ts +8 -0
  848. package/dist/shadow/types.js +18 -0
  849. package/dist/smol/detect.d.ts +80 -0
  850. package/dist/smol/{util.js → detect.js} +16 -24
  851. package/dist/smol/http.d.ts +60 -0
  852. package/dist/smol/http.js +42 -0
  853. package/dist/smol/https.d.ts +59 -0
  854. package/dist/smol/https.js +42 -0
  855. package/dist/smol/manifest.d.ts +140 -0
  856. package/dist/smol/manifest.js +42 -0
  857. package/dist/smol/primordial.d.ts +16 -21
  858. package/dist/smol/primordial.js +7 -11
  859. package/dist/smol/purl.d.ts +84 -0
  860. package/dist/smol/purl.js +42 -0
  861. package/dist/smol/versions.d.ts +11 -14
  862. package/dist/smol/versions.js +7 -11
  863. package/dist/smol/vfs.d.ts +99 -0
  864. package/dist/smol/vfs.js +43 -0
  865. package/dist/sorts/_internal.d.ts +9 -0
  866. package/dist/sorts/_internal.js +47 -0
  867. package/dist/sorts/natural.d.ts +39 -0
  868. package/dist/{sorts.js → sorts/natural.js} +5 -42
  869. package/dist/sorts/semver.d.ts +15 -0
  870. package/dist/sorts/semver.js +46 -0
  871. package/dist/sorts/strings.d.ts +16 -0
  872. package/dist/sorts/strings.js +33 -0
  873. package/dist/sorts/types.d.ts +7 -0
  874. package/dist/sorts/types.js +18 -0
  875. package/dist/spinner/default.d.ts +49 -0
  876. package/dist/spinner/default.js +70 -0
  877. package/dist/spinner/format.d.ts +64 -0
  878. package/dist/spinner/format.js +83 -0
  879. package/dist/spinner/spinner.d.ts +40 -0
  880. package/dist/spinner/spinner.js +802 -0
  881. package/dist/spinner/types.d.ts +368 -0
  882. package/dist/spinner/types.js +18 -0
  883. package/dist/spinner/with.d.ts +125 -0
  884. package/dist/spinner/with.js +144 -0
  885. package/dist/ssri/convert.d.ts +48 -0
  886. package/dist/{ssri.js → ssri/convert.js} +11 -34
  887. package/dist/ssri/parse.d.ts +27 -0
  888. package/dist/ssri/parse.js +40 -0
  889. package/dist/ssri/validate.d.ts +41 -0
  890. package/dist/ssri/validate.js +39 -0
  891. package/dist/stdio/{_stream.d.ts → _internal.d.ts} +10 -5
  892. package/dist/stdio/{_stream.js → _internal.js} +3 -3
  893. package/dist/stdio/clear.d.ts +98 -84
  894. package/dist/stdio/divider.d.ts +100 -78
  895. package/dist/stdio/divider.js +36 -14
  896. package/dist/stdio/footer.d.ts +75 -51
  897. package/dist/stdio/footer.js +28 -18
  898. package/dist/stdio/header.d.ts +61 -50
  899. package/dist/stdio/header.js +15 -13
  900. package/dist/stdio/progress.d.ts +67 -57
  901. package/dist/stdio/progress.js +55 -51
  902. package/dist/stdio/prompts.d.ts +147 -100
  903. package/dist/stdio/prompts.js +23 -15
  904. package/dist/stdio/stderr.d.ts +86 -84
  905. package/dist/stdio/stderr.js +6 -6
  906. package/dist/stdio/stdout.d.ts +77 -78
  907. package/dist/stdio/stdout.js +6 -6
  908. package/dist/streams/parallel.d.ts +40 -0
  909. package/dist/{streams.js → streams/parallel.js} +10 -27
  910. package/dist/streams/transform.d.ts +20 -0
  911. package/dist/streams/transform.js +48 -0
  912. package/dist/strings/format.d.ts +115 -0
  913. package/dist/strings/format.js +73 -0
  914. package/dist/strings/predicates.d.ts +52 -0
  915. package/dist/strings/predicates.js +39 -0
  916. package/dist/strings/search.d.ts +34 -0
  917. package/dist/strings/search.js +45 -0
  918. package/dist/strings/transform.d.ts +80 -0
  919. package/dist/strings/transform.js +79 -0
  920. package/dist/strings/types.d.ts +38 -0
  921. package/dist/strings/types.js +18 -0
  922. package/dist/strings/width.d.ts +42 -0
  923. package/dist/strings/width.js +95 -0
  924. package/dist/tables/bordered.d.ts +44 -0
  925. package/dist/tables/bordered.js +84 -0
  926. package/dist/tables/padding.d.ts +18 -0
  927. package/dist/tables/padding.js +51 -0
  928. package/dist/tables/simple.d.ts +36 -0
  929. package/dist/tables/simple.js +73 -0
  930. package/dist/tables/types.d.ts +15 -0
  931. package/dist/tables/types.js +18 -0
  932. package/dist/temporal/instant.d.ts +39 -0
  933. package/dist/temporal/instant.js +91 -0
  934. package/dist/temporal/now.d.ts +24 -0
  935. package/dist/temporal/now.js +34 -0
  936. package/dist/temporal/slots.d.ts +32 -0
  937. package/dist/temporal/slots.js +45 -0
  938. package/dist/temporal/system.d.ts +20 -0
  939. package/dist/temporal/system.js +42 -0
  940. package/dist/temporal/temporal.d.ts +22 -0
  941. package/dist/temporal/temporal.js +43 -0
  942. package/dist/themes/context.d.ts +65 -48
  943. package/dist/themes/context.js +6 -2
  944. package/dist/themes/resolve.d.ts +90 -0
  945. package/dist/themes/{utils.js → resolve.js} +6 -6
  946. package/dist/themes/themes.d.ts +14 -16
  947. package/dist/themes/types.d.ts +93 -35
  948. package/dist/url/parse.d.ts +26 -0
  949. package/dist/url/parse.js +57 -0
  950. package/dist/url/predicates.d.ts +15 -0
  951. package/dist/url/predicates.js +34 -0
  952. package/dist/url/search-params.d.ts +71 -0
  953. package/dist/{url.js → url/search-params.js} +19 -54
  954. package/dist/url/types.d.ts +20 -0
  955. package/dist/url/types.js +18 -0
  956. package/dist/versions/_internal.d.ts +24 -0
  957. package/dist/versions/_internal.js +37 -0
  958. package/dist/versions/compare.d.ts +57 -0
  959. package/dist/versions/compare.js +65 -0
  960. package/dist/versions/modify.d.ts +28 -0
  961. package/dist/versions/modify.js +44 -0
  962. package/dist/versions/parse.d.ts +67 -0
  963. package/dist/versions/parse.js +77 -0
  964. package/dist/versions/range.d.ts +45 -0
  965. package/dist/versions/range.js +50 -0
  966. package/dist/versions/types.d.ts +13 -0
  967. package/dist/versions/types.js +18 -0
  968. package/dist/words/article.d.ts +14 -0
  969. package/dist/words/article.js +33 -0
  970. package/dist/words/capitalize.d.ts +15 -0
  971. package/dist/{words.js → words/capitalize.js} +5 -18
  972. package/dist/words/pluralize.d.ts +16 -0
  973. package/dist/words/pluralize.js +34 -0
  974. package/dist/words/types.d.ts +7 -0
  975. package/dist/words/types.js +18 -0
  976. package/package.json +2154 -252
  977. package/dist/abort.d.ts +0 -27
  978. package/dist/agent.d.ts +0 -196
  979. package/dist/agent.js +0 -287
  980. package/dist/ansi.d.ts +0 -39
  981. package/dist/archives.d.ts +0 -95
  982. package/dist/archives.js +0 -408
  983. package/dist/argv/flags.d.ts +0 -292
  984. package/dist/argv/flags.js +0 -297
  985. package/dist/arrays.d.ts +0 -168
  986. package/dist/bin.d.ts +0 -181
  987. package/dist/bin.js +0 -544
  988. package/dist/cacache.d.ts +0 -130
  989. package/dist/cacache.js +0 -156
  990. package/dist/cache-with-ttl.d.ts +0 -165
  991. package/dist/colors.d.ts +0 -49
  992. package/dist/compression.d.ts +0 -218
  993. package/dist/constants/process.d.ts +0 -20
  994. package/dist/crypto.d.ts +0 -36
  995. package/dist/debug.js +0 -337
  996. package/dist/env/helpers.d.ts +0 -66
  997. package/dist/env.d.ts +0 -182
  998. package/dist/env.js +0 -205
  999. package/dist/errors.d.ts +0 -100
  1000. package/dist/fs.d.ts +0 -916
  1001. package/dist/fs.js +0 -808
  1002. package/dist/git.d.ts +0 -546
  1003. package/dist/git.js +0 -409
  1004. package/dist/github.d.ts +0 -526
  1005. package/dist/github.js +0 -448
  1006. package/dist/globs.d.ts +0 -119
  1007. package/dist/globs.js +0 -282
  1008. package/dist/http-request.d.ts +0 -951
  1009. package/dist/http-request.js +0 -761
  1010. package/dist/ipc-cli.d.ts +0 -28
  1011. package/dist/ipc.d.ts +0 -76
  1012. package/dist/ipc.js +0 -130
  1013. package/dist/links.d.ts +0 -69
  1014. package/dist/logger.d.ts +0 -993
  1015. package/dist/logger.js +0 -1498
  1016. package/dist/memoization.d.ts +0 -131
  1017. package/dist/memoization.js +0 -243
  1018. package/dist/objects.d.ts +0 -500
  1019. package/dist/objects.js +0 -303
  1020. package/dist/package-extensions.d.ts +0 -9
  1021. package/dist/packages.js +0 -132
  1022. package/dist/performance.d.ts +0 -181
  1023. package/dist/performance.js +0 -233
  1024. package/dist/primordials.d.ts +0 -420
  1025. package/dist/primordials.js +0 -1116
  1026. package/dist/process-lock.d.ts +0 -180
  1027. package/dist/promise-queue.d.ts +0 -48
  1028. package/dist/promises.d.ts +0 -506
  1029. package/dist/promises.js +0 -292
  1030. package/dist/regexps.d.ts +0 -6
  1031. package/dist/releases/github-api.d.ts +0 -56
  1032. package/dist/releases/github-api.js +0 -275
  1033. package/dist/sea/util.d.ts +0 -43
  1034. package/dist/shadow.d.ts +0 -28
  1035. package/dist/signal-exit.d.ts +0 -50
  1036. package/dist/signal-exit.js +0 -247
  1037. package/dist/smol/util.d.ts +0 -87
  1038. package/dist/sorts.d.ts +0 -59
  1039. package/dist/spawn.d.ts +0 -454
  1040. package/dist/spawn.js +0 -334
  1041. package/dist/spinner.d.ts +0 -444
  1042. package/dist/spinner.js +0 -988
  1043. package/dist/ssri.d.ts +0 -90
  1044. package/dist/streams.d.ts +0 -45
  1045. package/dist/strings.d.ts +0 -414
  1046. package/dist/strings.js +0 -218
  1047. package/dist/suppress-warnings.d.ts +0 -81
  1048. package/dist/tables.d.ts +0 -73
  1049. package/dist/tables.js +0 -133
  1050. package/dist/temporary-executor.d.ts +0 -20
  1051. package/dist/themes/utils.d.ts +0 -86
  1052. package/dist/url.d.ts +0 -114
  1053. package/dist/versions.d.ts +0 -207
  1054. package/dist/versions.js +0 -181
  1055. package/dist/words.d.ts +0 -39
package/CHANGELOG.md CHANGED
@@ -5,46 +5,146 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [5.28.0](https://github.com/SocketDev/socket-lib/releases/tag/v5.28.0) - 2026-05-06
8
+ ## [6.0.1](https://github.com/SocketDev/socket-lib/releases/tag/v6.0.1) - 2026-05-25
9
+
10
+ Five additive features plus public-surface polish on top of 6.0.0. The path renames drop doubled-name leaves (`spawn/spawn`, `ttl-cache/cache`, `globs/glob`, `links/link`, `promise-queue/queue`) and regroup three top-level directories whose contents were the same concept (process events) under a new `events/` umbrella. Renames are path-only; no symbol renames or behavior changes.
9
11
 
10
12
  ### Added
11
13
 
12
- - **`compression` (new export)** brotli + gzip helpers with three calling shapes (in-memory `Buffer`, file-to-file, raw streams) and a single `{ inPlace: true }` option for compress/decompress-in-place. 28 named exports total:
13
- - In-memory: `compressBrotli`, `decompressBrotli`, `compressGzip`, `decompressGzip`
14
- - File-to-file: `compressBrotliFile`, `decompressBrotliFile`, `compressGzipFile`, `decompressGzipFile` each with three overloads (explicit dest, in-place, options object). The gzip in-place path follows `.tgz` → `.tar` convention so a round-trip is lossless
15
- - Streams: `createBrotliCompressor`, `createBrotliDecompressor`, `createGzipCompressor`, `createGzipDecompressor`
16
- - Detection: `isBrotliCompressed(buffer)` / `isGzipCompressed(buffer)` (magic-byte sniffing)
17
- - Path classification: `hasBrotliExt(filePath)` / `hasGzipExt(filePath)` case-insensitive `path.extname` match against `.br` / `.brotli` / `.gz` / `.gzip` / `.tgz`
18
- - Helpers: `BROTLI_EXTS` / `GZIP_EXTS` `ReadonlySet<string>` constants; `stripExt(filePath, exts)` for trimming a recognized extension from a path; `resolveBrotliOptions` / `resolveGzipOptions` for translating `CompressOptions` into the underlying zlib option shapes
19
- - `CompressOptions` / `CompressFileOptions` interfaces
20
- - **`socket-lib` CLI (new `bin` entry)** — fleet-wide static-analysis dispatcher invoked via `pnpm exec socket-lib <command>`. Initial subcommand: `check primordials` (alias `check prim`) — diffs every name destructured from `primordials` in scanned source against `@socketsecurity/lib`'s exposed primordials set, emitting unmapped or missing-from-lib findings. Reads sectional config from `.socket-lib.json` (with `.config/socket-lib.json` as a fallback) or a bare object for single-check setups. Flags: `--config / -c <path>` (defaults to `.socket-lib.json`, falls back to `.config/socket-lib.json`), `--explain`, `--json`, `--silent`, `--help`. Lifted from socket-btm's `scripts/check-primordials-coverage.mts` so the same drift gate now ships to every consumer.
21
- - **`dlx/package` `installRoot` option** — new `EnsurePackageInstallOptions` (and `DlxPackageOptions`) field overriding the install root passed to Arborist. Default remains `~/.socket/_dlx/<cacheKey>/`; when set, the value is used verbatim. Lets build pipelines colocate the install with their own gitignored outputs (e.g. ink-builder bundling ink via esbuild). Caller owns per-spec separation; see JSDoc for the full contract.
14
+ - **`colors/socket-palette`** — Socket-branded 24-bit ANSI palette. Three themes (`'light' | 'dark' | 'synthwave'`) expose status colors (`success` / `warning` / `alert` / `error` / `info`) plus the Socket brand constants (`socketPurple` `#8c50ff`, `socketPink` `#ff00aa`). Each helper emits `\x1b[38;2;R;G;Bm` directly rather than rounding to the legacy 8-color palette, so truecolor terminals render the brand hex byte-for-byte. Hex values exposed via `palette.hex.*` for callers building their own escapes. Default theme is `'dark'`.
15
+ - **`logger/browser`** — minimal `console`-backed `Logger` mirroring the public `success` / `fail` / `warn` / `error` / `info` / `log` surface, with no `node:process` / `node:console` / `node:os` imports. Usable from Chrome MV3 service workers, content scripts, and popups. Importing `@socketsecurity/lib/logger` in a bundler that resolves the `'browser'` export condition (rolldown, vite, esbuild) automatically picks up this shim; Node consumers continue to get the full `Logger` class.
16
+ - **`'browser'` export condition** on 40 leaf modules. 35 zero-Node leaf utilities (`arrays`, `colors`, `errors`, `objects`, `regexps`, `strings`, `url`, `versions`, `words` families) carry a `'browser'` condition signalling browser-safety to bundlers. Five leaves with dedicated browser implementations (`logger/browser`, `http-request/browser`, `http-request/browser-fetch`) route to the alternate file. Browser-incompatible modules (`fs`, `archives`, `bin`, subprocess / TTY / OS-secrets surfaces) deliberately omit the condition. Full compatibility matrix in [`docs/browser-compatibility.md`](./docs/browser-compatibility.md).
17
+ - **`http-request` `signal` option (Node-side parity).** `HttpRequestOptions.signal?: AbortSignal | undefined` is now plumbed through `request-attempt` → `httpModule.request()`. An aborted signal short-circuits the retry loop (caller cancel is not retryable). Brings the Node side to parity with the browser side, which already exposes `signal` via `AbortController` on `fetch()`.
18
+ - **Default-on read-result cache for `fs/read-json` `readJson` / `readJsonSync`.** Process-scoped LRU cache keyed on `path + ino + size + mtimeMs`. Safe by four guards: stat-validated keys (re-read on stat mismatch), defensive clone on both insert and hit (caller mutations can't poison the entry), reviver opt-out (function identity isn't safely hashable), and per-call `cache: false` escape hatch. Cap defaults to 256 entries (env `SOCKET_LIB_READ_JSON_CACHE_MAX` or `setReadJsonCacheMax()`); TTL defaults to 5 min (env `SOCKET_LIB_READ_JSON_CACHE_TTL_MS` or `setReadJsonCacheTtlMs()`; set to `0` to disable TTL). `clearReadJsonCache()` + `getReadJsonCacheStats()` exported for tests and long-running daemons.
19
+ - **`argv/parse-args-string`** `parseArgsString(cmd)` tokenizes a shell-style command string into an argv array. Recognizes bare tokens, single + double quoted tokens, and mixed `key="value"` tokens. Use for turning a string representation of a command (from config, a `bin` field, a test fixture) into argv that `child_process.spawn` / `execFileSync` accepts directly, bypassing platform shell quoting differences (`cmd.exe` vs `bash`).
22
20
 
23
- ## [5.27.0](https://github.com/SocketDev/socket-lib/releases/tag/v5.27.0) - 2026-05-04
21
+ ### Changed (breaking)
22
+
23
+ - **`spawn/*` → `process/spawn/*`.** Directory moved under `process/` (which already housed `process/abort`); the function leaf renames from `spawn/spawn` to `process/spawn/child` (the spawned child is what `spawn()` returns). Sibling files keep their names: `process/spawn/{errors,stdio,types,_internal}`.
24
+ - **`signal-exit/*` → `events/exit/*`.** Directory merged into a new `events/` umbrella. Entry leaf renames from `signal-exit/register` to `events/exit/handler`. Sibling files unchanged: `events/exit/{intercept,lifecycle,signals,types,_internal}`.
25
+ - **`warnings/*` → `events/warning/*`.** Sibling of `events/exit/` under the new `events/` umbrella. Entry leaf renames from `warnings/event-target` to `events/warning/handler`; `warnings/suppress` becomes `events/warning/suppress`.
26
+ - **`ttl-cache/*` → `cache/ttl/*`.** Directory renamed; entry leaf renames from `ttl-cache/cache` to `cache/ttl/store`. `ttl-cache/types` becomes `cache/ttl/types`.
27
+ - **`promise-queue/*` folded into existing `promises/`.** `promise-queue/queue` becomes `promises/queue`; `promise-queue/types` merges into the existing `promises/types`.
28
+ - **`spinner/registry` → `spinner/default`.** Matches the `getDefaultSpinner()` naming pattern — the leaf is "the default spinner", not "the registry of spinners".
29
+ - **`logger/logger` → `logger/default`.** Matches the `getDefaultLogger()` naming pattern; drops the doubled segment.
30
+ - **`globs/glob` → `globs/match`.** Drops the doubled segment; `match` describes what the function does (pattern-match files), not what type the file is.
31
+ - **`links/link` → `links/create`.** Drops the doubled segment; `create` describes the verb (`createSymlink`).
32
+ - **`exports` map refreshed** for all renamed/moved leaves. The `./promises/types` entry stays unchanged — `promise-queue/types` content was folded into it.
33
+
34
+ ### Removed (breaking)
35
+
36
+ - **Top-level directories `spawn/`, `signal-exit/`, `warnings/`, `ttl-cache/`, `promise-queue/`.** All five disappear in favor of the regrouped layouts above. No backcompat aliases.
37
+
38
+ ### Migration
39
+
40
+ ```diff
41
+ - import { spawn, spawnSync } from '@socketsecurity/lib/spawn/spawn'
42
+ - import { isSpawnError, SpawnError } from '@socketsecurity/lib/spawn/errors'
43
+ - import type { SpawnOptions } from '@socketsecurity/lib/spawn/types'
44
+ + import {
45
+ + spawn,
46
+ + spawnSync,
47
+ + isSpawnError,
48
+ + SpawnError,
49
+ + } from '@socketsecurity/lib/process/spawn/child'
50
+ + import type { SpawnOptions } from '@socketsecurity/lib/process/spawn/types'
51
+
52
+ - import { onExit } from '@socketsecurity/lib/signal-exit/register'
53
+ + import { onExit } from '@socketsecurity/lib/events/exit/handler'
54
+
55
+ - import { suppressDeprecationWarnings } from '@socketsecurity/lib/warnings/suppress'
56
+ + import { suppressDeprecationWarnings } from '@socketsecurity/lib/events/warning/suppress'
57
+
58
+ - import { createTtlCache, TtlCache } from '@socketsecurity/lib/ttl-cache/cache'
59
+ + import { createTtlCache, TtlCache } from '@socketsecurity/lib/cache/ttl/store'
60
+
61
+ - import { getDefaultSpinner } from '@socketsecurity/lib/spinner/registry'
62
+ + import { getDefaultSpinner } from '@socketsecurity/lib/spinner/default'
63
+
64
+ - import { getDefaultLogger } from '@socketsecurity/lib/logger/logger'
65
+ + import { getDefaultLogger } from '@socketsecurity/lib/logger/default'
66
+
67
+ - import { PromiseQueue } from '@socketsecurity/lib/promise-queue/queue'
68
+ + import { PromiseQueue } from '@socketsecurity/lib/promises/queue'
69
+
70
+ - import { glob } from '@socketsecurity/lib/globs/glob'
71
+ + import { glob } from '@socketsecurity/lib/globs/match'
72
+
73
+ - import { createSymlink } from '@socketsecurity/lib/links/link'
74
+ + import { createSymlink } from '@socketsecurity/lib/links/create'
75
+ ```
76
+
77
+ No symbol names changed. No behavior changes.
78
+
79
+ ## [6.0.0](https://github.com/SocketDev/socket-lib/releases/tag/v6.0.0) - 2026-05-20
80
+
81
+ Public-surface reshape. All top-level barrels are gone; import from named leaf subpaths instead. `@socketsecurity/lib/logger` and `@socketsecurity/lib/errors` stay as aliases.
82
+
83
+ ### Removed (breaking)
84
+
85
+ - **All top-level barrel modules.** Replace with leaf subpaths — e.g. `fs` → `fs/safe`, `http-request` → `http-request/convenience`, `packages` → `packages/operations`, `versions` → `versions/compare`. Affects `fs`, `http-request`, `spinner`, `git`, `github`, `spawn`, `bin`, `primordials`, `objects`, `strings`, `promises`, `arrays`, `url`, `packages`, `cacache`, `signal-exit`, `compression`, `archives`, `globs`, `regexps`, `ssri`, `colors`, `ansi`, `crypto`, `abort`, `streams`, `links`, `shadow`, `ipc`, `ipc-cli`, `errors`, `words`, `tables`, `sorts`, `env`, `debug`, `versions`, `types`.
86
+ - **`agent` removed.** Per-tool helpers under `eco/npm/<tool>/{exec,flags}` (`bun`, `npm`, `pnpm`, `vlt`, `yarnpkg/yarn`).
87
+ - **`types/` removed.** Schema types under `eco/purl` and `eco/types`.
88
+ - **Subdir renames.** `memoization/` → `memo/`, `performance/` → `perf/`, `suppress-warnings/` → `warnings/`, `cache-with-ttl/` → `ttl-cache/`, `process-lock/` → `process/`, `package-extensions/` → `pkg-ext/`, `temporary-executor/` → `process/transient` (`isRunningInTemporaryExecutor` → `isTransientProcess`).
89
+ - **`SOCKET_LIB_USER_AGENT` + `SOCKET_LIB_URL` removed.** Use `getSocketCallerUserAgent()` from `http-request/user-agent` — see Added.
90
+
91
+ ### Changed (breaking)
92
+
93
+ - **`versions` API renamed.** `compareVersions` → `compare`, `isEqual` → `eq` (+ new `neq`), `isLessThan(OrEqual)` → `lt`/`lte`, `isGreaterThan(OrEqual)` → `gt`/`gte`, `sortVersions` → `sort`, `sortVersionsDesc` → `rsort`. Runs through `node:smol-versions` when present, falls back to `semver`.
94
+ - **`dlx/manifest` `ManifestEntry` → `DlxManifestEntry`** (disambiguates from `eco/types` `ManifestEntry`).
95
+ - **`dlx/arborist getBaseArboristOptions`** second arg is now `{ quiet }` instead of positional `quiet: boolean`.
96
+ - **Predicates renamed for scope clarity** — cwd/process-scoped predicates now carry the scope in the name.
97
+ - **Default `User-Agent` header** now `socketsecurity-lib/<version> node/<node-version> <platform>/<arch>` (was `socketsecurity-lib/<version> (<url>)`).
24
98
 
25
99
  ### Added
26
100
 
27
- - **45 new `primordials` exports** rounding out the surface to 296 total:
28
- - `BigIntCtor`
29
- - Math: 24 methods (Acos, Atan2, Hypot, Pow, etc.) + 8 constants (E, PI, SQRT2, etc.); `MathF16round` typed `| undefined` for ES2025
30
- - Number constants: `EPSILON`, `MAX_SAFE_INTEGER`, `MAX_VALUE`, `MIN_SAFE_INTEGER`, `MIN_VALUE`, `NEGATIVE_INFINITY`, `POSITIVE_INFINITY`
31
- - Symbol: 10 well-knowns (`HasInstance`, `KeyFor`, `Match`, `Species`, etc.); `SymbolAsyncDispose` / `SymbolDispose` typed `| undefined` for ES2024; prototype helpers (`Description`, `ToString`, `ValueOf`)
32
- - Function: `FunctionPrototypeToString`
33
- - Array (ES2023 Change Array By Copy): `ArrayPrototypeToSpliced`, `ArrayPrototypeWith`
34
- - Globals: `InfinityValue`, `NaNValue`, `globalThisRef`
35
- - Object (annex B): `ObjectPrototype{Define,Lookup}{Getter,Setter}`
36
- - Error (V8 stack-trace API, `| undefined`): `ErrorCaptureStackTrace`, `ErrorPrepareStackTrace`, `ErrorStackTraceLimit` (function-shaped, reads live value)
101
+ - **`http-request/user-agent`** `buildUserAgent({ name, version }, caller?)` for the canonical three-token UA, and `getSocketCallerUserAgent()` for the lib's own outbound requests. Set `SOCKET_CALLER_USER_AGENT` to append your own identifier to the lib UA (empty/whitespace is ignored).
102
+ - **`packages/operations#pkgNameToSlug(name)`** — `@scope/name``scope-name`, plain names unchanged.
103
+ - **`secrets/socket-api-token`** `readSocketApiToken()` / `readSocketApiTokenSync()` resolve the Socket API token from keychain → `SOCKET_API_TOKEN` (canonical) `SOCKET_API_KEY` (legacy). Pass `{ allowEnvOnly }` to skip keychain in headless contexts.
104
+ - **`ai/discover` + `ai/spawn`** — locked-down spawn helpers for Claude / Codex / Gemini / OpenCode CLIs. Type-level enforcement of the four lockdown flags (`tools`, `allowedTools`, `disallowedTools`, `permissionMode: 'dontAsk'`). Retries HTTP 529 / "Overloaded" with 5 s / 15 s / 45 s backoff.
105
+ - **`socket-lib check primordials --fix`** applies suggested rewrites for `.socket-lib.json`-tracked drift.
106
+ - **9 new primordial exports** (305 total) — Array.prototype: `ToLocaleString`, `ToString`. String.prototype: `IsWellFormed` (ES2024), `ToString`, `ToWellFormed` (ES2024), `ValueOf`. Number.prototype: `ToExponential`, `ToPrecision`, `ValueOf`. `StringPrototypeIsWellFormed` routes through `node:smol-primordial` on the smol Node binary — ASCII strings short-circuit to `true` without an O(n) lone-surrogate scan.
107
+
108
+ ### Fixed
109
+
110
+ - **pnpm v9 `isDev` derivation.** Snapshot entries were stuck at `depType: 'prod'` because v9 dropped the per-snapshot `dev` marker. Now derived per-package across all importer blocks; ties go to prod, matching pnpm's resolver.
111
+ - **yarn `dependenciesMeta` inversion.** A child's `optional: true` was flipping the parent's `isOptional`; flags now refer to the child as declared.
112
+ - **pnpm v9 phantom PackageRef.** Block-shape importer entries emitted a parent ref with `version: ''` before the indented `version:` was consumed.
113
+ - **pnpm v9 protocol filter.** `workspace:`, `file:`, and `link:` importer values are no longer surfaced as registry refs.
114
+ - **npm v1 alias extraction.** Aliased installs (`"alias": { "version": "npm:<real>@<ver>" }`) now surface the real `{ name, version }`; the alias key is preserved on `_index`.
115
+ - **npm v2/v3 workspace + alias name preference.** Path-keyed workspace entries and aliased installs honor the explicit `pkg.name` over the path-derived fallback.
116
+
117
+ ### Migration
118
+
119
+ ```diff
120
+ - import { safeDelete, readJson } from '@socketsecurity/lib/fs'
121
+ + import { safeDelete } from '@socketsecurity/lib/fs/safe'
122
+ + import { readJson } from '@socketsecurity/lib/fs/read-json'
123
+
124
+ - import { httpJson } from '@socketsecurity/lib/http-request'
125
+ + import { httpJson } from '@socketsecurity/lib/http-request/convenience'
37
126
 
38
- - **`smol/*` (new exports)** feature-detect + lazy-loaders for socket-btm's smol Node binary:
39
- - `smol/detect` `isSmol()`: memoized boolean, mirrors `isSeaBinary()`
40
- - `smol/util` `getSmolUtil()`: native `uncurryThis` / `applyBind` (~2x faster), or `undefined`
41
- - `smol/primordial` `getSmolPrimordial()`: V8 Fast API typed `Math.*` / `Number.is*` (~30-50% faster on hot loops), or `undefined`
42
- - `primordials` transparently routes through these on smol; **zero call-site changes**, identical behavior on stock Node, smol, browsers, Deno, Bun
127
+ - import { compareVersions, isLessThan, sortVersions } from '@socketsecurity/lib/versions'
128
+ - compareVersions(a, b); isLessThan(a, b); sortVersions(arr)
129
+ + import { compare, lt, sort } from '@socketsecurity/lib/versions/compare'
130
+ + compare(a, b); lt(a, b); sort(arr)
131
+ ```
132
+
133
+ ## [5.28.0](https://github.com/SocketDev/socket-lib/releases/tag/v5.28.0) - 2026-05-06
134
+
135
+ ### Added
136
+
137
+ - **`compression` (new)** — brotli + gzip helpers with in-memory `Buffer`, file-to-file (with `{ inPlace: true }`), and stream-creator shapes. Detection (`isBrotliCompressed` / `isGzipCompressed` magic-byte sniffing), extension classification (`hasBrotliExt` / `hasGzipExt`), `BROTLI_EXTS` / `GZIP_EXTS` constants, `stripExt(path, exts)`, and `CompressOptions` / `CompressFileOptions` types.
138
+ - **`socket-lib` CLI** — `pnpm exec socket-lib <command>` dispatcher. First subcommand: `check primordials` (alias `check prim`) diffs source-destructured primordials against the lib's set. Reads `.socket-lib.json` (or `.config/socket-lib.json`). Flags: `--config`, `--explain`, `--json`, `--silent`, `--help`.
139
+ - **`dlx/package` `installRoot`** option overrides the Arborist install root (default `~/.socket/_dlx/<cacheKey>/`). Useful for colocating installs with consumer-owned build outputs.
140
+
141
+ ## [5.27.0](https://github.com/SocketDev/socket-lib/releases/tag/v5.27.0) - 2026-05-04
142
+
143
+ ### Added
43
144
 
44
- - **`node/*` (new exports)** — per-builtin lazy-loaders for `node:*` modules. Each is `/*@__NO_SIDE_EFFECTS__*/`-marked so bundlers tree-shake the `require()` when unused:
45
- - `node/fs` (`getNodeFs`), `node/path` (`getNodePath`), `node/crypto` (`getNodeCrypto`), `node/http` (`getNodeHttp`), `node/https` (`getNodeHttps`), `node/os` (`getNodeOs`), `node/util` (`getNodeUtil`), `node/url` (`getNodeUrl`), `node/events` (`getNodeEvents`)
46
- - `node/child-process` (`getNodeChildProcess`), `node/async-hooks` (`getNodeAsyncHooks`), `node/fs-promises` (`getNodeFsPromises`), `node/timers-promises` (`getNodeTimersPromises`)
47
- - Replaces ~30 ad-hoc copies of the same lazy-loader boilerplate previously scattered across `http-request.ts`, `spawn.ts`, `fs.ts`, `crypto.ts`, etc.
145
+ - **45 new `primordials` exports** (296 total) `BigIntCtor`; 24 `Math.*` methods + 8 constants (`MathF16round` typed `| undefined` for ES2025); 7 `Number` constants; 10 `Symbol` well-knowns + 3 prototype helpers (`SymbolAsyncDispose` / `SymbolDispose` typed `| undefined`); `FunctionPrototypeToString`; ES2023 array-copy (`ArrayPrototypeToSpliced`, `ArrayPrototypeWith`); `InfinityValue` / `NaNValue` / `globalThisRef`; `ObjectPrototype{Define,Lookup}{Getter,Setter}`; V8 stack-trace API.
146
+ - **`smol/*`** feature-detect for socket-btm's smol Node binary. `smol/detect` (`isSmol()`), `smol/util` (`getSmolUtil()` — native `uncurryThis` / `applyBind`), `smol/primordial` (`getSmolPrimordial()` — V8 Fast API typed `Math.*` / `Number.is*`). `primordials` routes through these on smol transparently; no call-site changes.
147
+ - **`node/*`** — per-builtin lazy-loaders, side-effect-free for tree-shaking: `node/fs`, `node/path`, `node/crypto`, `node/http`, `node/https`, `node/os`, `node/util`, `node/url`, `node/events`, `node/child-process`, `node/async-hooks`, `node/fs-promises`, `node/timers-promises`.
48
148
 
49
149
  ## [5.26.1](https://github.com/SocketDev/socket-lib/releases/tag/v5.26.1) - 2026-05-01
50
150
 
@@ -78,12 +178,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
78
178
 
79
179
  ### Fixed
80
180
 
81
- - `globs` `getGlobMatcher` — narrow the `path.matchesGlob` fast-path that an earlier draft introduced. `path.matchesGlob` doesn't honor the picomatch defaults (`dot: true`, `nocase: true`) that callers expect, so taking the fast-path under those defaults silently changed observable behavior — including breaking the case-insensitive default everywhere a single-pattern matcher was used. The fast-path now activates only when the caller has explicitly opted out of both defaults (`nocase: false` AND `dot: false`), signaling "I want strict, case-sensitive, no-dotfile-match" exactly what `path.matchesGlob` provides
82
- - `globs` `glob` / `globSync` — normalize results to forward slashes via `paths/normalize.normalizePath` regardless of which backend (`node:fs.glob` or `fast-glob`) was used. Restores fast-glob's forward-slash contract on Windows, where `node:fs.glob` returns native-OS separators
83
- - `globs` `glob` / `globSync` / `globStreamLicenses` — strip a trailing `/` from `ignore` patterns before passing them to fast-glob. The gitignore convention of writing directory entries as `dist/` was silently dropped at the deep-filter level (fast-glob walked the entire subtree before discarding results), which on a large `dist/` could push memory past the limit. fast-glob v3.3.3 and the unreleased v4 both have the bug; tracked at [mrmlnc/fast-glob#437](https://github.com/mrmlnc/fast-glob/issues/437). Same workaround as [SocketDev/socket-cli#1288](https://github.com/SocketDev/socket-cli/pull/1288).
84
- - `releases/github-api` `getLatestRelease` and `getReleaseAssetUrl` transparently fall back to GraphQL when GitHub REST returns 200 + empty body (search-degraded incident shape)
85
- - `github` `resolveRefToSha` and `fetchGhsaDetails` get the same GraphQL fallback for the same incident shape
86
- - All fallbacks only fire on the empty-body signature; real 404s, rate-limits, and 5xx still propagate
181
+ - `globs` `getGlobMatcher` — `path.matchesGlob` fast-path only activates when the caller opts out of both picomatch defaults (`nocase: false` AND `dot: false`); previously took the fast-path under default options and silently broke case-insensitive matching.
182
+ - `globs` `glob` / `globSync` — results normalized to forward slashes on Windows regardless of backend (`node:fs.glob` returns native-OS separators).
183
+ - `globs` `glob` / `globSync` / `globStreamLicenses` — trailing `/` stripped from `ignore` patterns before passing to fast-glob (gitignore-style `dist/` was silently dropped at the deep-filter level). Workaround for [mrmlnc/fast-glob#437](https://github.com/mrmlnc/fast-glob/issues/437).
184
+ - GitHub helpers (`releases/github-api`, `github/resolveRefToSha`, `fetchGhsaDetails`) fall back to GraphQL on the "search-degraded" 200 OK + empty body shape. Real 404s / rate-limits / 5xx still propagate.
87
185
 
88
186
  ## [5.26.0](https://github.com/SocketDev/socket-lib/releases/tag/v5.26.0) - 2026-04-27
89
187
 
package/README.md CHANGED
@@ -2,20 +2,24 @@
2
2
 
3
3
  [![Socket Badge](https://socket.dev/api/badge/npm/package/@socketsecurity/lib)](https://socket.dev/npm/package/@socketsecurity/lib)
4
4
  [![CI](https://github.com/SocketDev/socket-lib/actions/workflows/ci.yml/badge.svg)](https://github.com/SocketDev/socket-lib/actions/workflows/ci.yml)
5
- ![Coverage](https://img.shields.io/badge/coverage-85%25-brightgreen)
5
+ ![Coverage](https://img.shields.io/badge/coverage-99%25-brightgreen)
6
6
 
7
7
  [![Follow @SocketSecurity](https://img.shields.io/twitter/follow/SocketSecurity?style=social)](https://twitter.com/SocketSecurity)
8
8
  [![Follow @socket.dev on Bluesky](https://img.shields.io/badge/Follow-@socket.dev-1DA1F2?style=social&logo=bluesky)](https://bsky.app/profile/socket.dev)
9
9
 
10
10
  Core utilities for [Socket.dev](https://socket.dev/) tools: file system, processes, HTTP, env detection, logging, spinners, and more. Tree-shakeable, TypeScript-first, cross-platform.
11
11
 
12
+ ## Why this repo exists
13
+
14
+ `@socketsecurity/lib` is the shared utility layer for every Socket.dev tool (the CLI, SDK, registry, MCP server, build infrastructure). It exists so we ship one battle-tested implementation of "spawn a child", "fetch JSON with retries", "delete a path safely on Windows + POSIX", etc. — rather than ten subtly different ones across the fleet. Every export is reachable via a subpath import, so tree-shaking keeps your bundle lean.
15
+
12
16
  ## Install
13
17
 
14
- ```bash
18
+ ```sh
15
19
  pnpm add @socketsecurity/lib
16
20
  ```
17
21
 
18
- ## Quick Start
22
+ ## Usage
19
23
 
20
24
  ```typescript
21
25
  import { Spinner } from '@socketsecurity/lib/spinner'
@@ -35,24 +39,14 @@ import { httpJson } from '@socketsecurity/lib/http-request'
35
39
  import { safeDelete } from '@socketsecurity/lib/fs'
36
40
  ```
37
41
 
38
- ## Documentation
39
-
40
42
  Start with the [API Index](./docs/api-index.md) — every subpath export with a one-line description.
41
43
 
42
- - [Getting Started](./docs/getting-started.md) – install + first examples
43
- - [Visual Effects](./docs/visual-effects.md) – spinners, loggers, themes
44
- - [File System](./docs/file-system.md) – files, globs, paths, safe deletion
45
- - [HTTP Utilities](./docs/http-utilities.md) – requests, downloads, retries
46
- - [Process Utilities](./docs/process-utilities.md) – spawn, IPC, locks
47
- - [Package Management](./docs/package-management.md) – npm/pnpm/yarn detection
48
- - [Environment](./docs/environment.md) – CI/platform detection, env getters
49
- - [Constants](./docs/constants.md) – Node versions, npm URLs, platform values
50
- - [Examples](./docs/examples.md) – real-world patterns
51
- - [Troubleshooting](./docs/troubleshooting.md) – common issues
52
-
53
44
  ## Development
54
45
 
55
- ```bash
46
+ <details>
47
+ <summary>Contributor commands</summary>
48
+
49
+ ```sh
56
50
  pnpm install # install
57
51
  pnpm build # build
58
52
  pnpm test # run tests
@@ -64,6 +58,21 @@ pnpm run fix # auto-fix formatting
64
58
 
65
59
  See [CLAUDE.md](./CLAUDE.md) for contributor guidelines.
66
60
 
61
+ ### Documentation map
62
+
63
+ - [Getting Started](./docs/getting-started.md) – install + first examples
64
+ - [Visual Effects](./docs/visual-effects.md) – spinners, loggers, themes
65
+ - [File System](./docs/file-system.md) – files, globs, paths, safe deletion
66
+ - [HTTP Utilities](./docs/http-utilities.md) – requests, downloads, retries
67
+ - [Process Utilities](./docs/process-utilities.md) – spawn, IPC, locks
68
+ - [Package Management](./docs/package-management.md) – npm/pnpm/yarn detection
69
+ - [Environment](./docs/environment.md) – CI/platform detection, env getters
70
+ - [Constants](./docs/constants.md) – Node versions, npm URLs, platform values
71
+ - [Examples](./docs/examples.md) – real-world patterns
72
+ - [Troubleshooting](./docs/troubleshooting.md) – common issues
73
+
74
+ </details>
75
+
67
76
  ## License
68
77
 
69
78
  MIT
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file Abort signal utilities — composite signal construction from multiple
3
+ * sources and timeout-driven signal creation.
4
+ */
5
+ /**
6
+ * Create a composite AbortSignal from multiple signals.
7
+ *
8
+ * @example
9
+ * ;```typescript
10
+ * const ac1 = new AbortController()
11
+ * const ac2 = new AbortController()
12
+ * const signal = createCompositeAbortSignal(ac1.signal, ac2.signal)
13
+ * ```
14
+ */
15
+ export declare function createCompositeAbortSignal(...signals: Array<AbortSignal | null | undefined>): AbortSignal;
16
+ /**
17
+ * Create an AbortSignal that triggers after a timeout.
18
+ *
19
+ * @example
20
+ * ;```typescript
21
+ * const signal = createTimeoutSignal(5000) // aborts after 5 seconds
22
+ * fetch('https://example.com', { signal })
23
+ * ```
24
+ *
25
+ * @throws {TypeError} If `ms` is not a number, is NaN, is not finite, or is not
26
+ * positive.
27
+ */
28
+ export declare function createTimeoutSignal(ms: number): AbortSignal;
@@ -18,13 +18,15 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var abort_exports = {};
22
- __export(abort_exports, {
21
+ var signal_exports = {};
22
+ __export(signal_exports, {
23
23
  createCompositeAbortSignal: () => createCompositeAbortSignal,
24
24
  createTimeoutSignal: () => createTimeoutSignal
25
25
  });
26
- module.exports = __toCommonJS(abort_exports);
27
- var import_primordials = require("./primordials");
26
+ module.exports = __toCommonJS(signal_exports);
27
+ var import_error = require("../primordials/error");
28
+ var import_math = require("../primordials/math");
29
+ var import_number = require("../primordials/number");
28
30
  function createCompositeAbortSignal(...signals) {
29
31
  const validSignals = signals.filter((s) => s != null);
30
32
  if (validSignals.length === 0) {
@@ -44,16 +46,16 @@ function createCompositeAbortSignal(...signals) {
44
46
  return controller.signal;
45
47
  }
46
48
  function createTimeoutSignal(ms) {
47
- if (typeof ms !== "number" || (0, import_primordials.NumberIsNaN)(ms)) {
48
- throw new import_primordials.TypeErrorCtor("timeout must be a number");
49
+ if (typeof ms !== "number" || (0, import_number.NumberIsNaN)(ms)) {
50
+ throw new import_error.TypeErrorCtor("timeout must be a number");
49
51
  }
50
- if (!(0, import_primordials.NumberIsFinite)(ms)) {
51
- throw new import_primordials.TypeErrorCtor("timeout must be a finite number");
52
+ if (!(0, import_number.NumberIsFinite)(ms)) {
53
+ throw new import_error.TypeErrorCtor("timeout must be a finite number");
52
54
  }
53
55
  if (ms <= 0) {
54
- throw new import_primordials.TypeErrorCtor("timeout must be a positive number");
56
+ throw new import_error.TypeErrorCtor("timeout must be a positive number");
55
57
  }
56
- return AbortSignal.timeout((0, import_primordials.MathCeil)(ms));
58
+ return AbortSignal.timeout((0, import_math.MathCeil)(ms));
57
59
  }
58
60
  // Annotate the CommonJS export names for ESM import in node:
59
61
  0 && (module.exports = {
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @file Detect which AI agent CLIs are installed on PATH. Strategy:
3
+ * which()-based lookup with a two-tier cache:
4
+ *
5
+ * 1. In-process Map — survives until the Node process exits.
6
+ * 2. On-disk JSON at `<repo>/.cache/agent-discovery.json`, TTL 1h — survives
7
+ * across subprocess invocations (per-file ai-lint-fix batches) without
8
+ * re-running which(). Cache invalidation: stale on-disk cache is detected
9
+ * by mtime comparison; missing or expired → fresh which() pass + rewrite.
10
+ * Why two tiers: hooks and skills spawn dozens of short-lived Node
11
+ * processes per session. In-process alone misses the cross-process
12
+ * speedup; on-disk alone hits the filesystem on every call. The
13
+ * combination keeps repeated lookups under a millisecond after the
14
+ * cold-start cost.
15
+ */
16
+ import type { DiscoveredAgents } from './types.mts';
17
+ export declare function cachePathFor(repoRoot: string): string;
18
+ /**
19
+ * Discover which AI agent CLIs are installed.
20
+ *
21
+ * @param options.repoRoot - Where to read/write the on-disk cache. Defaults to
22
+ * process.cwd(). Skill runners typically pass the target repo's root.
23
+ * @param options.refresh - When true, bypass both caches and re-run which().
24
+ * Useful after `npm i -g <agent>` mid-session.
25
+ *
26
+ * Returns a map of agent → absolute binary path. Agents that aren't installed
27
+ * are absent from the map (not present-with-undefined), so callers can use
28
+ * `'claude' in agents` for the existence check.
29
+ */
30
+ export declare function discoverAiAgents(options?: {
31
+ readonly refresh?: boolean;
32
+ readonly repoRoot?: string;
33
+ }): Promise<DiscoveredAgents>;
34
+ export declare function discoverFresh(): DiscoveredAgents;
35
+ /**
36
+ * Synchronous in-process lookup. Skips disk cache + which(). Returns undefined
37
+ * if discoverAiAgents() hasn't been called yet in this process, OR returns the
38
+ * most recent discovery result.
39
+ *
40
+ * Useful in fast paths where the caller has already populated the cache and
41
+ * just wants to read it back.
42
+ */
43
+ export declare function getDiscoveredAiAgents(): DiscoveredAgents | undefined;
44
+ export declare function readDiskCache(cachePath: string): DiscoveredAgents | undefined;
45
+ /**
46
+ * Reset the in-process cache. Tests use this; production callers shouldn't need
47
+ * it (use `refresh: true` on discoverAiAgents()).
48
+ */
49
+ export declare function resetAiAgentDiscoveryCache(): void;
50
+ export declare function writeDiskCache(cachePath: string, agents: DiscoveredAgents): Promise<void>;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with esbuild */
3
+ "use strict";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+ var discover_exports = {};
32
+ __export(discover_exports, {
33
+ cachePathFor: () => cachePathFor,
34
+ discoverAiAgents: () => discoverAiAgents,
35
+ discoverFresh: () => discoverFresh,
36
+ getDiscoveredAiAgents: () => getDiscoveredAiAgents,
37
+ readDiskCache: () => readDiskCache,
38
+ resetAiAgentDiscoveryCache: () => resetAiAgentDiscoveryCache,
39
+ writeDiskCache: () => writeDiskCache
40
+ });
41
+ module.exports = __toCommonJS(discover_exports);
42
+ var import_node_fs = require("node:fs");
43
+ var import_promises = require("node:fs/promises");
44
+ var import_node_path = __toESM(require("node:path"), 1);
45
+ var import_which = require("../bin/which");
46
+ var import_message = require("../errors/message");
47
+ var import_default = require("../logger/default");
48
+ var import_json = require("../primordials/json");
49
+ const logger = (0, import_default.getDefaultLogger)();
50
+ const KNOWN_AGENTS = [
51
+ "claude",
52
+ "codex",
53
+ "gemini",
54
+ "opencode"
55
+ ];
56
+ const CACHE_TTL_MS = 60 * 60 * 1e3;
57
+ let inProcessCache;
58
+ function cachePathFor(repoRoot) {
59
+ return import_node_path.default.join(repoRoot, ".cache", "agent-discovery.json");
60
+ }
61
+ async function discoverAiAgents(options = {}) {
62
+ const { refresh = false, repoRoot = process.cwd() } = options;
63
+ if (!refresh && inProcessCache) {
64
+ return inProcessCache;
65
+ }
66
+ const cachePath = cachePathFor(repoRoot);
67
+ if (!refresh) {
68
+ const fromDisk = readDiskCache(cachePath);
69
+ if (fromDisk) {
70
+ inProcessCache = fromDisk;
71
+ return fromDisk;
72
+ }
73
+ }
74
+ const fresh = discoverFresh();
75
+ inProcessCache = fresh;
76
+ await writeDiskCache(cachePath, fresh);
77
+ return fresh;
78
+ }
79
+ function discoverFresh() {
80
+ const out = {};
81
+ for (const name of KNOWN_AGENTS) {
82
+ const found = (0, import_which.whichSync)(name);
83
+ if (typeof found === "string" && found) {
84
+ out[name] = found;
85
+ }
86
+ }
87
+ return out;
88
+ }
89
+ function getDiscoveredAiAgents() {
90
+ return inProcessCache;
91
+ }
92
+ function readDiskCache(cachePath) {
93
+ if (!(0, import_node_fs.existsSync)(cachePath)) {
94
+ return void 0;
95
+ }
96
+ try {
97
+ const raw = (0, import_node_fs.readFileSync)(cachePath, "utf8");
98
+ const parsed = (0, import_json.JSONParse)(raw);
99
+ if (typeof parsed !== "object" || parsed === null || typeof parsed.writtenAt !== "number" || Date.now() - parsed.writtenAt > CACHE_TTL_MS) {
100
+ return void 0;
101
+ }
102
+ return parsed.agents;
103
+ } catch {
104
+ return void 0;
105
+ }
106
+ }
107
+ function resetAiAgentDiscoveryCache() {
108
+ inProcessCache = void 0;
109
+ }
110
+ async function writeDiskCache(cachePath, agents) {
111
+ try {
112
+ await (0, import_promises.mkdir)(import_node_path.default.dirname(cachePath), { recursive: true });
113
+ const payload = { agents, writtenAt: Date.now() };
114
+ (0, import_node_fs.writeFileSync)(cachePath, (0, import_json.JSONStringify)(payload, void 0, 2) + "\n");
115
+ } catch (e) {
116
+ logger.error(`discoverAiAgents: cache write failed (${(0, import_message.errorMessage)(e)})`);
117
+ }
118
+ }
119
+ // Annotate the CommonJS export names for ESM import in node:
120
+ 0 && (module.exports = {
121
+ cachePathFor,
122
+ discoverAiAgents,
123
+ discoverFresh,
124
+ getDiscoveredAiAgents,
125
+ readDiskCache,
126
+ resetAiAgentDiscoveryCache,
127
+ writeDiskCache
128
+ });
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @file Pre-built lockdown profiles for spawnAiAgent. Per CLAUDE.md
3
+ * "Programmatic Claude calls" rule: every spawn must set tools / disallow /
4
+ * permissionMode (and the helper always sets --no-session-persistence +
5
+ * --add-dir cwd). These profiles are canonical safe defaults that callers
6
+ * spread + override per call. Choose by capability:
7
+ *
8
+ * - `READ_ONLY_PROFILE` — research / scanning. Read + Grep + Glob
9
+ * - WebFetch + WebSearch. No Edit, no Write, no Bash. Use for static analysis
10
+ * skills (scanning-quality, scanning-security).
11
+ * - `EDIT_ONLY_PROFILE` — fix-mode. Read + Edit + Grep + Glob. Bash explicitly
12
+ * denied. Use for skills that mutate source files but don't run arbitrary
13
+ * shell (ai-lint-fix, refactor passes).
14
+ * - `FULL_FIX_PROFILE` — fix-mode WITH Bash. Read + Edit + Write + Grep + Glob
15
+ * - Bash (allowlisted to git/pnpm/node by default). Use for skills that need to
16
+ * commit, run tests, install deps. No `WIDE_OPEN_PROFILE` exists by design
17
+ * — letting an agent run arbitrary tools is the lockdown rule's exact
18
+ * failure mode.
19
+ */
20
+ import type { PermissionMode } from './types.mts';
21
+ interface Profile {
22
+ readonly allow: readonly string[];
23
+ readonly disallow: readonly string[];
24
+ readonly permissionMode: PermissionMode;
25
+ readonly tools: readonly string[];
26
+ }
27
+ /**
28
+ * Read-only research / scanning. No mutation.
29
+ */
30
+ export declare const READ_ONLY_PROFILE: Profile;
31
+ /**
32
+ * Edit-mode without Bash. Mutates source but can't run shell.
33
+ */
34
+ export declare const EDIT_ONLY_PROFILE: Profile;
35
+ /**
36
+ * Fix-mode with Bash, allowlisted to git / pnpm / node.
37
+ */
38
+ export declare const FULL_FIX_PROFILE: Profile;
39
+ export {};