toolcraft 0.0.749 → 0.0.751

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 (374) hide show
  1. package/composition.json +23 -3
  2. package/dist/composition.json +23 -3
  3. package/dist/human-in-loop/approvals-commands.d.ts +1 -1
  4. package/dist/index.d.ts +1 -262
  5. package/dist/index.js +1 -573
  6. package/dist/runtime-platform.d.ts +2 -0
  7. package/dist/runtime-platform.js +2 -0
  8. package/dist/runtime-platform.workerd.d.ts +3 -0
  9. package/dist/runtime-platform.workerd.js +10 -0
  10. package/dist/runtime.d.ts +262 -0
  11. package/dist/runtime.js +576 -0
  12. package/node_modules/@noble/hashes/LICENSE +21 -0
  13. package/node_modules/@noble/hashes/README.md +478 -0
  14. package/node_modules/@noble/hashes/_blake.d.ts +20 -0
  15. package/node_modules/@noble/hashes/_blake.js +59 -0
  16. package/node_modules/@noble/hashes/_md.d.ts +95 -0
  17. package/node_modules/@noble/hashes/_md.js +209 -0
  18. package/node_modules/@noble/hashes/_u64.d.ts +36 -0
  19. package/node_modules/@noble/hashes/_u64.js +77 -0
  20. package/node_modules/@noble/hashes/argon2.d.ts +148 -0
  21. package/node_modules/@noble/hashes/argon2.js +577 -0
  22. package/node_modules/@noble/hashes/blake1.d.ts +162 -0
  23. package/node_modules/@noble/hashes/blake1.js +630 -0
  24. package/node_modules/@noble/hashes/blake2.d.ts +203 -0
  25. package/node_modules/@noble/hashes/blake2.js +573 -0
  26. package/node_modules/@noble/hashes/blake3.d.ts +68 -0
  27. package/node_modules/@noble/hashes/blake3.js +310 -0
  28. package/node_modules/@noble/hashes/eskdf.d.ts +91 -0
  29. package/node_modules/@noble/hashes/eskdf.js +225 -0
  30. package/node_modules/@noble/hashes/hkdf.d.ts +70 -0
  31. package/node_modules/@noble/hashes/hkdf.js +152 -0
  32. package/node_modules/@noble/hashes/hmac.d.ts +50 -0
  33. package/node_modules/@noble/hashes/hmac.js +93 -0
  34. package/node_modules/@noble/hashes/index.d.ts +1 -0
  35. package/node_modules/@noble/hashes/index.js +34 -0
  36. package/node_modules/@noble/hashes/legacy.d.ts +107 -0
  37. package/node_modules/@noble/hashes/legacy.js +348 -0
  38. package/node_modules/@noble/hashes/package.json +91 -0
  39. package/node_modules/@noble/hashes/pbkdf2.d.ts +66 -0
  40. package/node_modules/@noble/hashes/pbkdf2.js +176 -0
  41. package/node_modules/@noble/hashes/scrypt.d.ts +98 -0
  42. package/node_modules/@noble/hashes/scrypt.js +304 -0
  43. package/node_modules/@noble/hashes/sha2.d.ts +176 -0
  44. package/node_modules/@noble/hashes/sha2.js +446 -0
  45. package/node_modules/@noble/hashes/sha3-addons.d.ts +533 -0
  46. package/node_modules/@noble/hashes/sha3-addons.js +973 -0
  47. package/node_modules/@noble/hashes/sha3.d.ts +208 -0
  48. package/node_modules/@noble/hashes/sha3.js +475 -0
  49. package/node_modules/@noble/hashes/src/_blake.ts +67 -0
  50. package/node_modules/@noble/hashes/src/_md.ts +227 -0
  51. package/node_modules/@noble/hashes/src/_u64.ts +111 -0
  52. package/node_modules/@noble/hashes/src/argon2.ts +693 -0
  53. package/node_modules/@noble/hashes/src/blake1.ts +677 -0
  54. package/node_modules/@noble/hashes/src/blake2.ts +648 -0
  55. package/node_modules/@noble/hashes/src/blake3.ts +344 -0
  56. package/node_modules/@noble/hashes/src/eskdf.ts +265 -0
  57. package/node_modules/@noble/hashes/src/hkdf.ts +161 -0
  58. package/node_modules/@noble/hashes/src/hmac.ts +130 -0
  59. package/node_modules/@noble/hashes/src/index.ts +33 -0
  60. package/node_modules/@noble/hashes/src/legacy.ts +361 -0
  61. package/node_modules/@noble/hashes/src/pbkdf2.ts +219 -0
  62. package/node_modules/@noble/hashes/src/scrypt.ts +375 -0
  63. package/node_modules/@noble/hashes/src/sha2.ts +486 -0
  64. package/node_modules/@noble/hashes/src/sha3-addons.ts +1157 -0
  65. package/node_modules/@noble/hashes/src/sha3.ts +525 -0
  66. package/node_modules/@noble/hashes/src/utils.ts +978 -0
  67. package/node_modules/@noble/hashes/src/webcrypto.ts +283 -0
  68. package/node_modules/@noble/hashes/utils.d.ts +560 -0
  69. package/node_modules/@noble/hashes/utils.js +687 -0
  70. package/node_modules/@noble/hashes/webcrypto.d.ts +121 -0
  71. package/node_modules/@noble/hashes/webcrypto.js +228 -0
  72. package/node_modules/@poe-code/agent-mcp-config/dist/apply.js +23 -9
  73. package/node_modules/@poe-code/config-mutations/README.md +2 -0
  74. package/node_modules/@poe-code/config-mutations/dist/execution/apply-mutation.js +4 -5
  75. package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.d.ts +3 -4
  76. package/node_modules/@poe-code/config-mutations/dist/execution/path-utils.js +3 -3
  77. package/node_modules/@poe-code/config-mutations/dist/template/render.js +1 -1
  78. package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.d.ts +2 -2
  79. package/node_modules/@poe-code/config-mutations/dist/testing/mock-fs.js +3 -6
  80. package/node_modules/@poe-code/config-mutations/dist/types.d.ts +4 -2
  81. package/node_modules/@poe-code/process-runner/README.md +2 -1
  82. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.d.ts +1 -0
  83. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.js +1 -0
  84. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.workerd.d.ts +2 -0
  85. package/node_modules/@poe-code/process-runner/dist/transfer-filesystem.workerd.js +1 -0
  86. package/node_modules/@poe-code/process-runner/dist/types.d.ts +1 -1
  87. package/node_modules/@poe-code/process-runner/dist/workspace-transfer.d.ts +6 -5
  88. package/node_modules/@poe-code/process-runner/dist/workspace-transfer.js +67 -29
  89. package/node_modules/@poe-code/process-runner/package.json +13 -0
  90. package/node_modules/@poe-code/safe-fs/LICENSE +21 -0
  91. package/node_modules/@poe-code/safe-fs/PROVENANCE.json +428 -0
  92. package/node_modules/@poe-code/safe-fs/README.md +411 -0
  93. package/node_modules/@poe-code/safe-fs/dist/bridge/confinement.d.ts +3 -0
  94. package/node_modules/@poe-code/safe-fs/dist/bridge/confinement.js +171 -0
  95. package/node_modules/@poe-code/safe-fs/dist/bridge/filesystem.d.ts +93 -0
  96. package/node_modules/@poe-code/safe-fs/dist/bridge/filesystem.js +453 -0
  97. package/node_modules/@poe-code/safe-fs/dist/bridge/index.d.ts +7 -0
  98. package/node_modules/@poe-code/safe-fs/dist/bridge/index.js +19 -0
  99. package/node_modules/@poe-code/safe-fs/dist/bridge/stats.d.ts +4 -0
  100. package/node_modules/@poe-code/safe-fs/dist/bridge/stats.js +37 -0
  101. package/node_modules/@poe-code/safe-fs/dist/bridge/types.d.ts +81 -0
  102. package/node_modules/@poe-code/safe-fs/dist/bridge/types.js +1 -0
  103. package/node_modules/@poe-code/safe-fs/dist/bridge/values.d.ts +6 -0
  104. package/node_modules/@poe-code/safe-fs/dist/bridge/values.js +65 -0
  105. package/node_modules/@poe-code/safe-fs/dist/config/memory.d.ts +3 -0
  106. package/node_modules/@poe-code/safe-fs/dist/config/memory.js +7 -0
  107. package/node_modules/@poe-code/safe-fs/dist/config/real.d.ts +5 -0
  108. package/node_modules/@poe-code/safe-fs/dist/config/real.js +16 -0
  109. package/node_modules/@poe-code/safe-fs/dist/config/registry.d.ts +2 -0
  110. package/node_modules/@poe-code/safe-fs/dist/config/registry.js +15 -0
  111. package/node_modules/@poe-code/safe-fs/dist/config.d.ts +15 -0
  112. package/node_modules/@poe-code/safe-fs/dist/config.js +46 -0
  113. package/node_modules/@poe-code/safe-fs/dist/config.node.d.ts +2 -0
  114. package/node_modules/@poe-code/safe-fs/dist/config.node.js +11 -0
  115. package/node_modules/@poe-code/safe-fs/dist/config.portable.d.ts +3 -0
  116. package/node_modules/@poe-code/safe-fs/dist/config.portable.js +9 -0
  117. package/node_modules/@poe-code/safe-fs/dist/contracts/abort.d.ts +5 -0
  118. package/node_modules/@poe-code/safe-fs/dist/contracts/abort.js +34 -0
  119. package/node_modules/@poe-code/safe-fs/dist/contracts/cleanup.d.ts +1 -0
  120. package/node_modules/@poe-code/safe-fs/dist/contracts/cleanup.js +9 -0
  121. package/node_modules/@poe-code/safe-fs/dist/contracts/descriptor.d.ts +38 -0
  122. package/node_modules/@poe-code/safe-fs/dist/contracts/descriptor.js +1 -0
  123. package/node_modules/@poe-code/safe-fs/dist/contracts/errors.d.ts +53 -0
  124. package/node_modules/@poe-code/safe-fs/dist/contracts/errors.js +99 -0
  125. package/node_modules/@poe-code/safe-fs/dist/contracts/filesystem.d.ts +379 -0
  126. package/node_modules/@poe-code/safe-fs/dist/contracts/filesystem.js +1 -0
  127. package/node_modules/@poe-code/safe-fs/dist/contracts/index.d.ts +6 -0
  128. package/node_modules/@poe-code/safe-fs/dist/contracts/index.js +6 -0
  129. package/node_modules/@poe-code/safe-fs/dist/contracts/io.d.ts +12 -0
  130. package/node_modules/@poe-code/safe-fs/dist/contracts/io.js +321 -0
  131. package/node_modules/@poe-code/safe-fs/dist/contracts/object.d.ts +134 -0
  132. package/node_modules/@poe-code/safe-fs/dist/contracts/object.js +97 -0
  133. package/node_modules/@poe-code/safe-fs/dist/contracts/path.d.ts +3 -0
  134. package/node_modules/@poe-code/safe-fs/dist/contracts/path.js +2 -0
  135. package/node_modules/@poe-code/safe-fs/dist/contracts/portable-path.d.ts +21 -0
  136. package/node_modules/@poe-code/safe-fs/dist/contracts/portable-path.js +78 -0
  137. package/node_modules/@poe-code/safe-fs/dist/contracts/virtual-path.d.ts +15 -0
  138. package/node_modules/@poe-code/safe-fs/dist/contracts/virtual-path.js +162 -0
  139. package/node_modules/@poe-code/safe-fs/dist/core.d.ts +19 -0
  140. package/node_modules/@poe-code/safe-fs/dist/core.js +17 -0
  141. package/node_modules/@poe-code/safe-fs/dist/fs/capabilities.d.ts +10 -0
  142. package/node_modules/@poe-code/safe-fs/dist/fs/capabilities.js +216 -0
  143. package/node_modules/@poe-code/safe-fs/dist/fs/conditional-chmod.d.ts +7 -0
  144. package/node_modules/@poe-code/safe-fs/dist/fs/conditional-chmod.js +19 -0
  145. package/node_modules/@poe-code/safe-fs/dist/fs/descriptor.d.ts +21 -0
  146. package/node_modules/@poe-code/safe-fs/dist/fs/descriptor.js +279 -0
  147. package/node_modules/@poe-code/safe-fs/dist/fs/devices/index.d.ts +59 -0
  148. package/node_modules/@poe-code/safe-fs/dist/fs/devices/index.js +875 -0
  149. package/node_modules/@poe-code/safe-fs/dist/fs/devices/path.d.ts +7 -0
  150. package/node_modules/@poe-code/safe-fs/dist/fs/devices/path.js +250 -0
  151. package/node_modules/@poe-code/safe-fs/dist/fs/devices/stream.d.ts +6 -0
  152. package/node_modules/@poe-code/safe-fs/dist/fs/devices/stream.js +136 -0
  153. package/node_modules/@poe-code/safe-fs/dist/fs/directory-admission.d.ts +3 -0
  154. package/node_modules/@poe-code/safe-fs/dist/fs/directory-admission.js +14 -0
  155. package/node_modules/@poe-code/safe-fs/dist/fs/memory/atomic-view.d.ts +11 -0
  156. package/node_modules/@poe-code/safe-fs/dist/fs/memory/atomic-view.js +13 -0
  157. package/node_modules/@poe-code/safe-fs/dist/fs/memory/index.d.ts +186 -0
  158. package/node_modules/@poe-code/safe-fs/dist/fs/memory/index.js +3771 -0
  159. package/node_modules/@poe-code/safe-fs/dist/fs/memory/ledger.d.ts +26 -0
  160. package/node_modules/@poe-code/safe-fs/dist/fs/memory/ledger.js +96 -0
  161. package/node_modules/@poe-code/safe-fs/dist/fs/memory/limits.d.ts +13 -0
  162. package/node_modules/@poe-code/safe-fs/dist/fs/memory/limits.js +26 -0
  163. package/node_modules/@poe-code/safe-fs/dist/fs/memory/missing-target.d.ts +15 -0
  164. package/node_modules/@poe-code/safe-fs/dist/fs/memory/missing-target.js +144 -0
  165. package/node_modules/@poe-code/safe-fs/dist/fs/mount/comparison.d.ts +19 -0
  166. package/node_modules/@poe-code/safe-fs/dist/fs/mount/comparison.js +118 -0
  167. package/node_modules/@poe-code/safe-fs/dist/fs/mount/identity.d.ts +6 -0
  168. package/node_modules/@poe-code/safe-fs/dist/fs/mount/identity.js +29 -0
  169. package/node_modules/@poe-code/safe-fs/dist/fs/mount/index.d.ts +74 -0
  170. package/node_modules/@poe-code/safe-fs/dist/fs/mount/index.js +1291 -0
  171. package/node_modules/@poe-code/safe-fs/dist/fs/object-authority.d.ts +27 -0
  172. package/node_modules/@poe-code/safe-fs/dist/fs/object-authority.js +287 -0
  173. package/node_modules/@poe-code/safe-fs/dist/fs/object-publication/index.d.ts +45 -0
  174. package/node_modules/@poe-code/safe-fs/dist/fs/object-publication/index.js +531 -0
  175. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/index.d.ts +87 -0
  176. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/index.js +1185 -0
  177. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/memory-publication.d.ts +42 -0
  178. package/node_modules/@poe-code/safe-fs/dist/fs/overlay/memory-publication.js +558 -0
  179. package/node_modules/@poe-code/safe-fs/dist/fs/path-namespace.d.ts +4 -0
  180. package/node_modules/@poe-code/safe-fs/dist/fs/path-namespace.js +63 -0
  181. package/node_modules/@poe-code/safe-fs/dist/fs/quota/index.d.ts +12 -0
  182. package/node_modules/@poe-code/safe-fs/dist/fs/quota/index.js +520 -0
  183. package/node_modules/@poe-code/safe-fs/dist/fs/readonly/index.d.ts +37 -0
  184. package/node_modules/@poe-code/safe-fs/dist/fs/readonly/index.js +208 -0
  185. package/node_modules/@poe-code/safe-fs/dist/fs/real/allocation.d.ts +1 -0
  186. package/node_modules/@poe-code/safe-fs/dist/fs/real/allocation.js +8 -0
  187. package/node_modules/@poe-code/safe-fs/dist/fs/real/index.d.ts +105 -0
  188. package/node_modules/@poe-code/safe-fs/dist/fs/real/index.js +1259 -0
  189. package/node_modules/@poe-code/safe-fs/dist/fs/s3/authority.d.ts +7 -0
  190. package/node_modules/@poe-code/safe-fs/dist/fs/s3/authority.js +38 -0
  191. package/node_modules/@poe-code/safe-fs/dist/fs/s3/filesystem.d.ts +130 -0
  192. package/node_modules/@poe-code/safe-fs/dist/fs/s3/filesystem.js +1137 -0
  193. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/bytes.d.ts +1 -0
  194. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/bytes.js +9 -0
  195. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/index.d.ts +2 -0
  196. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/index.js +1 -0
  197. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-fetch.d.ts +15 -0
  198. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-fetch.js +74 -0
  199. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-node.d.ts +4 -0
  200. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request-node.js +111 -0
  201. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request.d.ts +17 -0
  202. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/request.js +89 -0
  203. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/signature.d.ts +20 -0
  204. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/signature.js +76 -0
  205. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/transport.d.ts +3 -0
  206. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/transport.js +478 -0
  207. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/types.d.ts +30 -0
  208. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/types.js +1 -0
  209. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/xml.d.ts +14 -0
  210. package/node_modules/@poe-code/safe-fs/dist/fs/s3/http/xml.js +192 -0
  211. package/node_modules/@poe-code/safe-fs/dist/fs/s3/index.d.ts +8 -0
  212. package/node_modules/@poe-code/safe-fs/dist/fs/s3/index.js +4 -0
  213. package/node_modules/@poe-code/safe-fs/dist/fs/s3/key-order.d.ts +2 -0
  214. package/node_modules/@poe-code/safe-fs/dist/fs/s3/key-order.js +11 -0
  215. package/node_modules/@poe-code/safe-fs/dist/fs/s3/manifest-admission.d.ts +8 -0
  216. package/node_modules/@poe-code/safe-fs/dist/fs/s3/manifest-admission.js +167 -0
  217. package/node_modules/@poe-code/safe-fs/dist/fs/s3/mock.d.ts +48 -0
  218. package/node_modules/@poe-code/safe-fs/dist/fs/s3/mock.js +249 -0
  219. package/node_modules/@poe-code/safe-fs/dist/fs/s3/namespace.d.ts +13 -0
  220. package/node_modules/@poe-code/safe-fs/dist/fs/s3/namespace.js +400 -0
  221. package/node_modules/@poe-code/safe-fs/dist/fs/s3/registry.d.ts +10 -0
  222. package/node_modules/@poe-code/safe-fs/dist/fs/s3/registry.js +73 -0
  223. package/node_modules/@poe-code/safe-fs/dist/fs/s3/transport.d.ts +103 -0
  224. package/node_modules/@poe-code/safe-fs/dist/fs/s3/transport.js +28 -0
  225. package/node_modules/@poe-code/safe-fs/dist/fs/scoped.d.ts +19 -0
  226. package/node_modules/@poe-code/safe-fs/dist/fs/scoped.js +663 -0
  227. package/node_modules/@poe-code/safe-fs/dist/fs/staging-ancestry.d.ts +8 -0
  228. package/node_modules/@poe-code/safe-fs/dist/fs/staging-ancestry.js +115 -0
  229. package/node_modules/@poe-code/safe-fs/dist/fs/staging-cleanup.d.ts +5 -0
  230. package/node_modules/@poe-code/safe-fs/dist/fs/staging-cleanup.js +63 -0
  231. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/index.d.ts +2 -0
  232. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/index.js +1 -0
  233. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/resource-id.d.ts +18 -0
  234. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/resource-id.js +109 -0
  235. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/webdav.d.ts +141 -0
  236. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/webdav.js +1377 -0
  237. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/xml.d.ts +15 -0
  238. package/node_modules/@poe-code/safe-fs/dist/fs/webdav/xml.js +59 -0
  239. package/node_modules/@poe-code/safe-fs/dist/index.d.ts +25 -0
  240. package/node_modules/@poe-code/safe-fs/dist/index.js +21 -0
  241. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/linux-x64-glibc.node +0 -0
  242. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/loader.d.ts +5 -0
  243. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/loader.mjs +120 -0
  244. package/node_modules/@poe-code/safe-fs/dist/native/fs-seek/manifest.json +46 -0
  245. package/node_modules/@poe-code/safe-fs/dist/node/filesystem.d.ts +19 -0
  246. package/node_modules/@poe-code/safe-fs/dist/node/filesystem.js +30 -0
  247. package/node_modules/@poe-code/safe-fs/dist/node/host.d.ts +3 -0
  248. package/node_modules/@poe-code/safe-fs/dist/node/host.js +78 -0
  249. package/node_modules/@poe-code/safe-fs/dist/node/index.d.ts +3 -0
  250. package/node_modules/@poe-code/safe-fs/dist/node/index.js +2 -0
  251. package/node_modules/@poe-code/safe-fs/dist/node/native-seek-unavailable.d.ts +1 -0
  252. package/node_modules/@poe-code/safe-fs/dist/node/native-seek-unavailable.js +5 -0
  253. package/node_modules/@poe-code/safe-fs/dist/node/native-seek.d.ts +3 -0
  254. package/node_modules/@poe-code/safe-fs/dist/node/native-seek.js +54 -0
  255. package/node_modules/@poe-code/safe-fs/dist/node/stats.d.ts +1 -0
  256. package/node_modules/@poe-code/safe-fs/dist/node/stats.js +1 -0
  257. package/node_modules/@poe-code/safe-fs/dist/node/values.d.ts +1 -0
  258. package/node_modules/@poe-code/safe-fs/dist/node/values.js +1 -0
  259. package/node_modules/@poe-code/safe-fs/dist/node-host.d.ts +1 -0
  260. package/node_modules/@poe-code/safe-fs/dist/node-host.js +1 -0
  261. package/node_modules/@poe-code/safe-fs/dist/node-unavailable.d.ts +1 -0
  262. package/node_modules/@poe-code/safe-fs/dist/node-unavailable.js +1 -0
  263. package/node_modules/@poe-code/safe-fs/dist/package.json +29 -0
  264. package/node_modules/@poe-code/safe-fs/dist/platform/browser-path.d.ts +1 -0
  265. package/node_modules/@poe-code/safe-fs/dist/platform/browser-path.js +1 -0
  266. package/node_modules/@poe-code/safe-fs/dist/platform/browser.d.ts +26 -0
  267. package/node_modules/@poe-code/safe-fs/dist/platform/browser.js +58 -0
  268. package/node_modules/@poe-code/safe-fs/dist/platform/node-path.d.ts +1 -0
  269. package/node_modules/@poe-code/safe-fs/dist/platform/node-path.js +1 -0
  270. package/node_modules/@poe-code/safe-fs/dist/platform/node.d.ts +26 -0
  271. package/node_modules/@poe-code/safe-fs/dist/platform/node.js +64 -0
  272. package/node_modules/@poe-code/safe-fs/dist/platform/transport-budget.d.ts +9 -0
  273. package/node_modules/@poe-code/safe-fs/dist/platform/transport-budget.js +17 -0
  274. package/node_modules/@poe-code/safe-fs/dist/python/emscripten.d.ts +15 -0
  275. package/node_modules/@poe-code/safe-fs/dist/python/emscripten.js +357 -0
  276. package/node_modules/@poe-code/safe-fs/dist/python/filesystem.d.ts +51 -0
  277. package/node_modules/@poe-code/safe-fs/dist/python/filesystem.js +243 -0
  278. package/node_modules/@poe-code/safe-fs/dist/python/flags.d.ts +3 -0
  279. package/node_modules/@poe-code/safe-fs/dist/python/flags.js +14 -0
  280. package/node_modules/@poe-code/safe-fs/dist/python/index.d.ts +9 -0
  281. package/node_modules/@poe-code/safe-fs/dist/python/index.js +5 -0
  282. package/node_modules/@poe-code/safe-fs/dist/python/native.d.ts +18 -0
  283. package/node_modules/@poe-code/safe-fs/dist/python/native.js +446 -0
  284. package/node_modules/@poe-code/safe-fs/dist/python/request.d.ts +2 -0
  285. package/node_modules/@poe-code/safe-fs/dist/python/request.js +61 -0
  286. package/node_modules/@poe-code/safe-fs/dist/python/stat.d.ts +8 -0
  287. package/node_modules/@poe-code/safe-fs/dist/python/stat.js +34 -0
  288. package/node_modules/@poe-code/safe-fs/dist/runtime-core.d.ts +27 -0
  289. package/node_modules/@poe-code/safe-fs/dist/runtime-core.js +57 -0
  290. package/node_modules/@poe-code/safe-fs/dist/testing/atomic-filesystem.d.ts +16 -0
  291. package/node_modules/@poe-code/safe-fs/dist/testing/atomic-filesystem.js +496 -0
  292. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-control.d.ts +23 -0
  293. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-control.js +39 -0
  294. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-metrics.d.ts +31 -0
  295. package/node_modules/@poe-code/safe-fs/dist/testing/object-io-metrics.js +143 -0
  296. package/node_modules/@poe-code/safe-fs/dist/testing/object-publication.d.ts +19 -0
  297. package/node_modules/@poe-code/safe-fs/dist/testing/object-publication.js +209 -0
  298. package/node_modules/@poe-code/safe-fs/dist/xml.d.ts +1 -0
  299. package/node_modules/@poe-code/safe-fs/dist/xml.js +1 -0
  300. package/node_modules/@poe-code/safe-fs/package.json +189 -0
  301. package/node_modules/@poe-code/task-list/README.md +2 -0
  302. package/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.d.ts +1 -1
  303. package/node_modules/@poe-code/task-list/dist/backends/gh-issues-client.js +11 -4
  304. package/node_modules/@poe-code/task-list/dist/backends/markdown-dir.js +2 -2
  305. package/node_modules/@poe-code/task-list/dist/backends/utils.js +5 -7
  306. package/node_modules/@poe-code/task-list/dist/backends/yaml-file.js +1 -1
  307. package/node_modules/@poe-code/task-list/dist/default-host.d.ts +2 -0
  308. package/node_modules/@poe-code/task-list/dist/default-host.js +2 -0
  309. package/node_modules/@poe-code/task-list/dist/default-host.workerd.d.ts +4 -0
  310. package/node_modules/@poe-code/task-list/dist/default-host.workerd.js +6 -0
  311. package/node_modules/@poe-code/task-list/dist/filesystem.d.ts +3 -0
  312. package/node_modules/@poe-code/task-list/dist/filesystem.js +32 -0
  313. package/node_modules/@poe-code/task-list/dist/move.js +3 -3
  314. package/node_modules/@poe-code/task-list/dist/open.js +2 -5
  315. package/node_modules/@poe-code/task-list/dist/paths.d.ts +12 -0
  316. package/node_modules/@poe-code/task-list/dist/paths.js +7 -0
  317. package/node_modules/@poe-code/task-list/dist/types.d.ts +6 -5
  318. package/node_modules/@poe-code/task-list/package.json +9 -0
  319. package/node_modules/@poe-code/terminal-text/LICENSE +21 -0
  320. package/node_modules/@poe-code/terminal-text/README.md +12 -0
  321. package/node_modules/@poe-code/terminal-text/dist/index.d.ts +2 -0
  322. package/node_modules/@poe-code/terminal-text/dist/index.js +20 -0
  323. package/node_modules/@poe-code/terminal-text/package.json +22 -0
  324. package/node_modules/@poe-code/xml-ast/LICENSE +21 -0
  325. package/node_modules/@poe-code/xml-ast/README.md +28 -0
  326. package/node_modules/@poe-code/xml-ast/dist/index.d.ts +47 -0
  327. package/node_modules/@poe-code/xml-ast/dist/index.js +635 -0
  328. package/node_modules/@poe-code/xml-ast/package.json +25 -0
  329. package/node_modules/auth-store/README.md +35 -0
  330. package/node_modules/auth-store/dist/index.browser.d.ts +4 -0
  331. package/node_modules/auth-store/dist/index.browser.js +2 -0
  332. package/node_modules/auth-store/dist/provider-store.d.ts +1 -1
  333. package/node_modules/auth-store/dist/safe-fs-secret-store.d.ts +21 -0
  334. package/node_modules/auth-store/dist/safe-fs-secret-store.js +119 -0
  335. package/node_modules/auth-store/dist/secret-store.d.ts +12 -0
  336. package/node_modules/auth-store/dist/secret-store.js +1 -0
  337. package/node_modules/auth-store/dist/transaction-lock.d.ts +2 -4
  338. package/node_modules/auth-store/dist/types.d.ts +2 -9
  339. package/node_modules/auth-store/package.json +16 -2
  340. package/node_modules/tiny-http-mcp-server/dist/composition.json +16 -1
  341. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/README.md +25 -0
  342. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/authorization-state.js +4 -4
  343. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/default-oauth-client-provider.js +6 -40
  344. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/oauth-form.d.ts +10 -0
  345. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/oauth-form.js +20 -0
  346. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/pkce.js +4 -3
  347. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/register-client.d.ts +14 -0
  348. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/register-client.js +53 -0
  349. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/resumable.d.ts +16 -2
  350. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/resumable.js +29 -9
  351. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/revoke-token.d.ts +12 -0
  352. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/revoke-token.js +23 -0
  353. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/client/token-endpoint.js +6 -19
  354. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/http-fetch.js +1 -1
  355. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.browser.d.ts +6 -2
  356. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.browser.js +5 -1
  357. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.d.ts +5 -2
  358. package/node_modules/tiny-http-mcp-server/node_modules/mcp-oauth/dist/index.js +4 -1
  359. package/node_modules/tiny-http-mcp-server/package.json +4 -4
  360. package/node_modules/tiny-mcp-client/README.md +2 -0
  361. package/node_modules/tiny-mcp-client/dist/index.browser.d.ts +25 -23
  362. package/node_modules/tiny-mcp-client/dist/index.browser.js +116 -1
  363. package/node_modules/tiny-mcp-client/dist/index.d.ts +25 -23
  364. package/node_modules/tiny-mcp-client/dist/index.js +1034 -561
  365. package/node_modules/tiny-mcp-client/package.json +15 -0
  366. package/node_modules/tiny-stdio-mcp-server/dist/composition.json +1 -1
  367. package/node_modules/toolcraft-design/dist/components/table.js +6 -0
  368. package/node_modules/toolcraft-design/dist/escape-terminal-text.d.ts +1 -2
  369. package/node_modules/toolcraft-design/dist/escape-terminal-text.js +1 -20
  370. package/node_modules/toolcraft-design/dist/terminal-markdown/parser/frontmatter.js +2 -1
  371. package/node_modules/toolcraft-design/dist/terminal-markdown/parser.js +2 -1
  372. package/node_modules/toolcraft-schema/dist/json-schema/utils.js +3 -0
  373. package/node_modules/toolcraft-schema/package.json +1 -1
  374. package/package.json +32 -7
@@ -0,0 +1,98 @@
1
+ import { type KDFInput, type TArg, type TRet } from './utils.ts';
2
+ /**
3
+ * Scrypt options:
4
+ * - `N` is cpu/mem work factor (power of 2 e.g. `2**18`)
5
+ * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance
6
+ * - `p` is parallelization factor (1 is common)
7
+ * - `dkLen` is output key length in bytes e.g. 32, and must be `>= 1` per RFC 7914 §2.
8
+ * - `asyncTick` - (default: 10) max time in ms for which async function can block execution
9
+ * - `maxmem` - (default: `1024 ** 3 + 2 * 1024` aka 1GiB+2KiB). A limit that the app
10
+ * could use for scrypt
11
+ * - `onProgress` - callback function that would be executed for progress report
12
+ */
13
+ export type ScryptOpts = {
14
+ /** CPU and memory work factor. Must be a power of two. */
15
+ N: number;
16
+ /** Block size parameter. */
17
+ r: number;
18
+ /** Parallelization factor. */
19
+ p: number;
20
+ /** Desired derived key length in bytes, must be `>= 1` per RFC 7914 §2. */
21
+ dkLen?: number;
22
+ /** Max scheduler block time in milliseconds for the async variant. */
23
+ asyncTick?: number;
24
+ /** Maximum temporary memory budget in bytes. */
25
+ maxmem?: number;
26
+ /**
27
+ * Optional progress callback invoked during long-running derivations.
28
+ * @param progress - completion fraction in the `0..1` range
29
+ * Should not throw; if it does, derivation is aborted and scrypt work
30
+ * buffers are wiped before the error propagates.
31
+ */
32
+ onProgress?: (progress: number) => void;
33
+ };
34
+ /**
35
+ * Scrypt KDF from RFC 7914. See {@link ScryptOpts}.
36
+ * @param password - password or key material to derive from;
37
+ * JS string inputs are UTF-8 encoded first
38
+ * @param salt - unique salt bytes or string; JS string inputs are UTF-8 encoded first
39
+ * @param opts - Scrypt cost and memory parameters. `dkLen`, if provided,
40
+ * must be `>= 1` per RFC 7914 §2. See {@link ScryptOpts}.
41
+ * @returns Derived key bytes.
42
+ * @throws If the Scrypt cost, memory, or callback options are invalid. {@link Error}
43
+ * @example
44
+ * Derive a key with scrypt.
45
+ * ```ts
46
+ * scrypt('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });
47
+ * ```
48
+ * @example
49
+ * Derive a key with small demo costs and progress/memory controls.
50
+ * ```ts
51
+ * const progressLog: number[] = [];
52
+ * scrypt('password', 'salt', {
53
+ * N: 16,
54
+ * r: 8,
55
+ * p: 1,
56
+ * dkLen: 32,
57
+ * maxmem: 1024 * 1024,
58
+ * asyncTick: 10,
59
+ * onProgress(progress) {
60
+ * progressLog.push(progress);
61
+ * },
62
+ * });
63
+ * ```
64
+ */
65
+ export declare function scrypt(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: ScryptOpts): TRet<Uint8Array>;
66
+ /**
67
+ * Scrypt KDF from RFC 7914. Async version. See {@link ScryptOpts}.
68
+ * @param password - password or key material to derive from;
69
+ * JS string inputs are UTF-8 encoded first
70
+ * @param salt - unique salt bytes or string; JS string inputs are UTF-8 encoded first
71
+ * @param opts - Scrypt cost and memory parameters. `dkLen`, if provided,
72
+ * must be `>= 1` per RFC 7914 §2. `asyncTick` is only a local
73
+ * scheduler-yield control for this JS wrapper, not part of RFC 7914.
74
+ * See {@link ScryptOpts}.
75
+ * @returns Promise resolving to derived key bytes.
76
+ * @throws If the Scrypt cost, memory, or callback options are invalid. {@link Error}
77
+ * @example
78
+ * Derive a key with scrypt asynchronously.
79
+ * ```ts
80
+ * await scryptAsync('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });
81
+ * ```
82
+ * @example
83
+ * Derive a key asynchronously with small demo costs and progress/memory controls.
84
+ * ```ts
85
+ * await scryptAsync('password', 'salt', {
86
+ * N: 16,
87
+ * r: 8,
88
+ * p: 1,
89
+ * dkLen: 32,
90
+ * maxmem: 1024 * 1024,
91
+ * asyncTick: 1,
92
+ * onProgress(progress) {
93
+ * if (progress > 1) throw new Error('invalid progress');
94
+ * },
95
+ * });
96
+ * ```
97
+ */
98
+ export declare function scryptAsync(password: TArg<KDFInput>, salt: TArg<KDFInput>, opts: ScryptOpts): Promise<TRet<Uint8Array>>;
@@ -0,0 +1,304 @@
1
+ /**
2
+ * RFC 7914 Scrypt KDF. Can be used to create a key from password and salt.
3
+ * @module
4
+ */
5
+ import { pbkdf2 } from "./pbkdf2.js";
6
+ import { sha256 } from "./sha2.js";
7
+ // prettier-ignore
8
+ import { anumber, asyncLoop, checkOpts, clean, rotl, swap32IfBE, u32 } from "./utils.js";
9
+ // The main Scrypt loop: uses Salsa extensively.
10
+ // Six versions of the function were tried, this is the fastest one.
11
+ // RFC 7914 §3 / §4 step 2 applies Salsa20/8 to one 16-word (64-byte) block
12
+ // after xor'ing two such blocks.
13
+ // The local `y*` snapshot keeps the xor input stable even when `out` aliases `prev` or `input`.
14
+ // prettier-ignore
15
+ function XorAndSalsa(prev, pi, input, ii, out, oi) {
16
+ // Based on https://cr.yp.to/salsa20.html and RFC 7914's Salsa20/8 core.
17
+ // Xor blocks
18
+ let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];
19
+ let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];
20
+ let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];
21
+ let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];
22
+ let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];
23
+ let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];
24
+ let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];
25
+ let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];
26
+ // Save state to temporary variables (salsa)
27
+ let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;
28
+ // Main loop (salsa)
29
+ for (let i = 0; i < 8; i += 2) {
30
+ x04 ^= rotl(x00 + x12 | 0, 7);
31
+ x08 ^= rotl(x04 + x00 | 0, 9);
32
+ x12 ^= rotl(x08 + x04 | 0, 13);
33
+ x00 ^= rotl(x12 + x08 | 0, 18);
34
+ x09 ^= rotl(x05 + x01 | 0, 7);
35
+ x13 ^= rotl(x09 + x05 | 0, 9);
36
+ x01 ^= rotl(x13 + x09 | 0, 13);
37
+ x05 ^= rotl(x01 + x13 | 0, 18);
38
+ x14 ^= rotl(x10 + x06 | 0, 7);
39
+ x02 ^= rotl(x14 + x10 | 0, 9);
40
+ x06 ^= rotl(x02 + x14 | 0, 13);
41
+ x10 ^= rotl(x06 + x02 | 0, 18);
42
+ x03 ^= rotl(x15 + x11 | 0, 7);
43
+ x07 ^= rotl(x03 + x15 | 0, 9);
44
+ x11 ^= rotl(x07 + x03 | 0, 13);
45
+ x15 ^= rotl(x11 + x07 | 0, 18);
46
+ x01 ^= rotl(x00 + x03 | 0, 7);
47
+ x02 ^= rotl(x01 + x00 | 0, 9);
48
+ x03 ^= rotl(x02 + x01 | 0, 13);
49
+ x00 ^= rotl(x03 + x02 | 0, 18);
50
+ x06 ^= rotl(x05 + x04 | 0, 7);
51
+ x07 ^= rotl(x06 + x05 | 0, 9);
52
+ x04 ^= rotl(x07 + x06 | 0, 13);
53
+ x05 ^= rotl(x04 + x07 | 0, 18);
54
+ x11 ^= rotl(x10 + x09 | 0, 7);
55
+ x08 ^= rotl(x11 + x10 | 0, 9);
56
+ x09 ^= rotl(x08 + x11 | 0, 13);
57
+ x10 ^= rotl(x09 + x08 | 0, 18);
58
+ x12 ^= rotl(x15 + x14 | 0, 7);
59
+ x13 ^= rotl(x12 + x15 | 0, 9);
60
+ x14 ^= rotl(x13 + x12 | 0, 13);
61
+ x15 ^= rotl(x14 + x13 | 0, 18);
62
+ }
63
+ // Write output (salsa)
64
+ out[oi++] = (y00 + x00) | 0;
65
+ out[oi++] = (y01 + x01) | 0;
66
+ out[oi++] = (y02 + x02) | 0;
67
+ out[oi++] = (y03 + x03) | 0;
68
+ out[oi++] = (y04 + x04) | 0;
69
+ out[oi++] = (y05 + x05) | 0;
70
+ out[oi++] = (y06 + x06) | 0;
71
+ out[oi++] = (y07 + x07) | 0;
72
+ out[oi++] = (y08 + x08) | 0;
73
+ out[oi++] = (y09 + x09) | 0;
74
+ out[oi++] = (y10 + x10) | 0;
75
+ out[oi++] = (y11 + x11) | 0;
76
+ out[oi++] = (y12 + x12) | 0;
77
+ out[oi++] = (y13 + x13) | 0;
78
+ out[oi++] = (y14 + x14) | 0;
79
+ out[oi++] = (y15 + x15) | 0;
80
+ }
81
+ function BlockMix(input, ii, out, oi, r) {
82
+ // The block B is `r` 128-byte chunks, i.e. `2r` 16-word (64-byte) Salsa blocks.
83
+ let head = oi + 0;
84
+ let tail = oi + 16 * r;
85
+ for (let i = 0; i < 16; i++)
86
+ out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]
87
+ for (let i = 0; i < r; i++, head += 16, ii += 16) {
88
+ // RFC 7914 §4 step 3 outputs `Y[0], Y[2], ...` first, then `Y[1], Y[3], ...`;
89
+ // `head` and `tail` lay out those even/odd halves in place.
90
+ XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])
91
+ if (i > 0)
92
+ tail += 16; // First iteration overwrites tmp value in tail
93
+ // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])
94
+ XorAndSalsa(out, head, input, (ii += 16), out, tail);
95
+ }
96
+ }
97
+ // 128*r*(N+p+1) for N=2**20, r=8, p=1: 1 GiB main table plus 2 KiB workspace.
98
+ const SCRYPT_DEFAULT_MAXMEM = 128 * 8 * (2 ** 20 + 1 + 1);
99
+ // Common prologue and epilogue for sync/async functions
100
+ function scryptInit(password, salt, _opts) {
101
+ const opts = checkOpts({
102
+ dkLen: 32,
103
+ asyncTick: 10,
104
+ maxmem: SCRYPT_DEFAULT_MAXMEM,
105
+ }, _opts);
106
+ const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;
107
+ anumber(N, 'N');
108
+ anumber(r, 'r');
109
+ anumber(p, 'p');
110
+ anumber(dkLen, 'dkLen');
111
+ anumber(asyncTick, 'asyncTick');
112
+ anumber(maxmem, 'maxmem');
113
+ if (onProgress !== undefined && typeof onProgress !== 'function')
114
+ throw new Error('"onProgress" must be a function');
115
+ // Without this, r=0 slips through: blockSize=0 turns the `p` upper bound into
116
+ // Infinity and the failure surfaces later as a confusing pbkdf2 dkLen error.
117
+ if (r < 1)
118
+ throw new Error('"r" expected integer >= 1');
119
+ const blockSize = 128 * r;
120
+ const blockSize32 = blockSize / 4;
121
+ // Max N is 2^32 (Integrify is 32-bit).
122
+ // Real limit can be 2^22: some JS engines limit Uint8Array to 4GB.
123
+ // Spec check `N >= 2^(blockSize / 8)` is not done for compat with popular libs,
124
+ // which used incorrect r: 1, p: 8. Also, the check seems to be a spec error:
125
+ // https://www.rfc-editor.org/errata_search.php?rfc=7914
126
+ const pow32 = Math.pow(2, 32);
127
+ if (N <= 1 || (N & (N - 1)) !== 0 || N > pow32)
128
+ throw new Error('"N" expected a power of 2, and 2^1 <= N <= 2^32');
129
+ if (p < 1 || p > ((pow32 - 1) * 32) / blockSize)
130
+ throw new Error('"p" expected integer 1..((2^32 - 1) * 32) / (128 * r)');
131
+ // RFC 7914 §2 defines `dkLen` as a positive integer.
132
+ if (dkLen < 1 || dkLen > (pow32 - 1) * 32)
133
+ throw new Error('"dkLen" expected integer 1..(2^32 - 1) * 32');
134
+ // Include the shared `tmp` scratch block so `maxmem` matches noble's actual temporary allocation.
135
+ // Node requires more headroom here, so this accounting is intentionally noble-specific.
136
+ const memUsed = blockSize * (N + p + 1);
137
+ if (memUsed > maxmem)
138
+ throw new Error('"maxmem" limit was hit: memUsed(128*r*(N+p+1))=' + memUsed + ', maxmem=' + maxmem);
139
+ // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)
140
+ // Since it has only one iteration there is no reason to use async variant
141
+ const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });
142
+ const B32 = u32(B);
143
+ // Re-used between parallel iterations. Array(iterations) of B
144
+ const V = u32(new Uint8Array(blockSize * N));
145
+ const tmp = u32(new Uint8Array(blockSize));
146
+ let blockMixCb = () => { };
147
+ if (onProgress) {
148
+ const totalBlockMix = 2 * N * p;
149
+ // Invoke callback if progress changes from 10.01 to 10.02
150
+ // Allows to draw smooth progress bar on up to 8K screen
151
+ const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);
152
+ let blockMixCnt = 0;
153
+ blockMixCb = () => {
154
+ blockMixCnt++;
155
+ if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix)) {
156
+ // Wiping here instead of a try/catch around the main loops keeps them
157
+ // try-free: measured ~1% slower at N=2^21 with the loops inside a try.
158
+ // onProgress is the only user code that can throw mid-derivation.
159
+ try {
160
+ onProgress(blockMixCnt / totalBlockMix);
161
+ }
162
+ catch (e) {
163
+ clean(B, V, tmp);
164
+ throw e;
165
+ }
166
+ }
167
+ };
168
+ }
169
+ return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };
170
+ }
171
+ function scryptOutput(password, dkLen, B, V, tmp) {
172
+ // Shared final PBKDF2-and-cleanup step: keep the derived key, wipe the scrypt workspace.
173
+ const res = pbkdf2(sha256, password, B, { c: 1, dkLen });
174
+ clean(B, V, tmp);
175
+ return res;
176
+ }
177
+ /**
178
+ * Scrypt KDF from RFC 7914. See {@link ScryptOpts}.
179
+ * @param password - password or key material to derive from;
180
+ * JS string inputs are UTF-8 encoded first
181
+ * @param salt - unique salt bytes or string; JS string inputs are UTF-8 encoded first
182
+ * @param opts - Scrypt cost and memory parameters. `dkLen`, if provided,
183
+ * must be `>= 1` per RFC 7914 §2. See {@link ScryptOpts}.
184
+ * @returns Derived key bytes.
185
+ * @throws If the Scrypt cost, memory, or callback options are invalid. {@link Error}
186
+ * @example
187
+ * Derive a key with scrypt.
188
+ * ```ts
189
+ * scrypt('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });
190
+ * ```
191
+ * @example
192
+ * Derive a key with small demo costs and progress/memory controls.
193
+ * ```ts
194
+ * const progressLog: number[] = [];
195
+ * scrypt('password', 'salt', {
196
+ * N: 16,
197
+ * r: 8,
198
+ * p: 1,
199
+ * dkLen: 32,
200
+ * maxmem: 1024 * 1024,
201
+ * asyncTick: 10,
202
+ * onProgress(progress) {
203
+ * progressLog.push(progress);
204
+ * },
205
+ * });
206
+ * ```
207
+ */
208
+ export function scrypt(password, salt, opts) {
209
+ const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);
210
+ swap32IfBE(B32);
211
+ for (let pi = 0; pi < p; pi++) {
212
+ const Pi = blockSize32 * pi;
213
+ for (let i = 0; i < blockSize32; i++)
214
+ V[i] = B32[Pi + i]; // V[0] = B[i]
215
+ for (let i = 0, pos = 0; i < N - 1; i++) {
216
+ BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);
217
+ blockMixCb();
218
+ }
219
+ BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element
220
+ blockMixCb();
221
+ for (let i = 0; i < N; i++) {
222
+ // First u32 of the last 64-byte block (u32 is LE)
223
+ // RFC 7914 Integerify(X) uses the whole last 64-byte block, but mod N
224
+ // only depends on the low word here because N is a power of two and
225
+ // this implementation caps N at 2^32.
226
+ // & (N - 1) is % N as N is a power of 2, N & (N - 1) = 0 is checked
227
+ // above; >>> 0 for unsigned, input fits in u32.
228
+ const j = (B32[Pi + blockSize32 - 16] & (N - 1)) >>> 0; // j = Integrify(X) % iterations
229
+ // tmp = B ^ V[j]
230
+ for (let k = 0; k < blockSize32; k++)
231
+ tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k];
232
+ BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])
233
+ blockMixCb();
234
+ }
235
+ }
236
+ swap32IfBE(B32);
237
+ return scryptOutput(password, dkLen, B, V, tmp);
238
+ }
239
+ /**
240
+ * Scrypt KDF from RFC 7914. Async version. See {@link ScryptOpts}.
241
+ * @param password - password or key material to derive from;
242
+ * JS string inputs are UTF-8 encoded first
243
+ * @param salt - unique salt bytes or string; JS string inputs are UTF-8 encoded first
244
+ * @param opts - Scrypt cost and memory parameters. `dkLen`, if provided,
245
+ * must be `>= 1` per RFC 7914 §2. `asyncTick` is only a local
246
+ * scheduler-yield control for this JS wrapper, not part of RFC 7914.
247
+ * See {@link ScryptOpts}.
248
+ * @returns Promise resolving to derived key bytes.
249
+ * @throws If the Scrypt cost, memory, or callback options are invalid. {@link Error}
250
+ * @example
251
+ * Derive a key with scrypt asynchronously.
252
+ * ```ts
253
+ * await scryptAsync('password', 'salt', { N: 2**18, r: 8, p: 1, dkLen: 32 });
254
+ * ```
255
+ * @example
256
+ * Derive a key asynchronously with small demo costs and progress/memory controls.
257
+ * ```ts
258
+ * await scryptAsync('password', 'salt', {
259
+ * N: 16,
260
+ * r: 8,
261
+ * p: 1,
262
+ * dkLen: 32,
263
+ * maxmem: 1024 * 1024,
264
+ * asyncTick: 1,
265
+ * onProgress(progress) {
266
+ * if (progress > 1) throw new Error('invalid progress');
267
+ * },
268
+ * });
269
+ * ```
270
+ */
271
+ export async function scryptAsync(password, salt, opts) {
272
+ const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);
273
+ // One failure handler covers both yield boundaries without putting the hot loops in a try block.
274
+ const abort = () => clean(B, V, tmp);
275
+ swap32IfBE(B32);
276
+ for (let pi = 0; pi < p; pi++) {
277
+ const Pi = blockSize32 * pi;
278
+ for (let i = 0; i < blockSize32; i++)
279
+ V[i] = B32[Pi + i]; // V[0] = B[i]
280
+ let pos = 0;
281
+ await asyncLoop(N - 1, asyncTick, () => {
282
+ BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);
283
+ blockMixCb();
284
+ }, abort);
285
+ BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element
286
+ blockMixCb();
287
+ await asyncLoop(N, asyncTick, () => {
288
+ // First u32 of the last 64-byte block (u32 is LE)
289
+ // RFC 7914 Integerify(X) uses the whole last 64-byte block, but mod N
290
+ // only depends on the low word here because N is a power of two and
291
+ // this implementation caps N at 2^32.
292
+ // & (N - 1) is % N as N is a power of 2, N & (N - 1) = 0 is checked
293
+ // above; >>> 0 for unsigned, input fits in u32.
294
+ const j = (B32[Pi + blockSize32 - 16] & (N - 1)) >>> 0; // j = Integrify(X) % iterations
295
+ // tmp = B ^ V[j]
296
+ for (let k = 0; k < blockSize32; k++)
297
+ tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k];
298
+ BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])
299
+ blockMixCb();
300
+ }, abort);
301
+ }
302
+ swap32IfBE(B32);
303
+ return scryptOutput(password, dkLen, B, V, tmp);
304
+ }
@@ -0,0 +1,176 @@
1
+ /**
2
+ * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.
3
+ * SHA256 is the fastest hash implementable in JS, even faster than Blake3.
4
+ * Check out {@link https://www.rfc-editor.org/rfc/rfc4634 | RFC 4634} and
5
+ * {@link https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf | FIPS 180-4}.
6
+ * @module
7
+ */
8
+ import { HashMD } from './_md.ts';
9
+ import { type CHash, type TRet } from './utils.ts';
10
+ /** Internal SHA-224 / SHA-256 compression engine from RFC 6234 §6.2. */
11
+ declare abstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> {
12
+ protected A: number;
13
+ protected B: number;
14
+ protected C: number;
15
+ protected D: number;
16
+ protected E: number;
17
+ protected F: number;
18
+ protected G: number;
19
+ protected H: number;
20
+ constructor(outputLen: number, IV: Uint32Array);
21
+ protected get(): [number, number, number, number, number, number, number, number];
22
+ protected set(A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number): void;
23
+ _cloneInto(to?: T): T;
24
+ protected process(view: DataView, offset: number): void;
25
+ protected roundClean(): void;
26
+ destroy(): void;
27
+ }
28
+ /** Internal SHA-256 hash class grounded in RFC 6234 §6.2. */
29
+ export declare class _SHA256 extends SHA2_32B<_SHA256> {
30
+ constructor();
31
+ }
32
+ /** Internal SHA-224 hash class grounded in RFC 6234 §6.2 and §8.5. */
33
+ export declare class _SHA224 extends SHA2_32B<_SHA224> {
34
+ constructor();
35
+ }
36
+ /** Internal SHA-384 / SHA-512 compression engine from RFC 6234 §6.4. */
37
+ declare abstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> {
38
+ protected Ah: number;
39
+ protected Al: number;
40
+ protected Bh: number;
41
+ protected Bl: number;
42
+ protected Ch: number;
43
+ protected Cl: number;
44
+ protected Dh: number;
45
+ protected Dl: number;
46
+ protected Eh: number;
47
+ protected El: number;
48
+ protected Fh: number;
49
+ protected Fl: number;
50
+ protected Gh: number;
51
+ protected Gl: number;
52
+ protected Hh: number;
53
+ protected Hl: number;
54
+ constructor(outputLen: number, IV: Uint32Array);
55
+ protected get(): [
56
+ number,
57
+ number,
58
+ number,
59
+ number,
60
+ number,
61
+ number,
62
+ number,
63
+ number,
64
+ number,
65
+ number,
66
+ number,
67
+ number,
68
+ number,
69
+ number,
70
+ number,
71
+ number
72
+ ];
73
+ protected set(Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number, Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number): void;
74
+ _cloneInto(to?: T): T;
75
+ protected process(view: DataView, offset: number): void;
76
+ protected roundClean(): void;
77
+ destroy(): void;
78
+ }
79
+ /** Internal SHA-512 hash class grounded in RFC 6234 §6.3 and §6.4. */
80
+ export declare class _SHA512 extends SHA2_64B<_SHA512> {
81
+ constructor();
82
+ }
83
+ /** Internal SHA-384 hash class grounded in RFC 6234 §6.3 and §6.4. */
84
+ export declare class _SHA384 extends SHA2_64B<_SHA384> {
85
+ constructor();
86
+ }
87
+ /** Internal SHA-512/224 hash class using the derived `T224_IV` and the shared
88
+ * RFC 6234 §6.4 compression engine. */
89
+ export declare class _SHA512_224 extends SHA2_64B<_SHA512_224> {
90
+ constructor();
91
+ }
92
+ /** Internal SHA-512/256 hash class using the derived `T256_IV` and the shared
93
+ * RFC 6234 §6.4 compression engine. */
94
+ export declare class _SHA512_256 extends SHA2_64B<_SHA512_256> {
95
+ constructor();
96
+ }
97
+ /**
98
+ * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:
99
+ *
100
+ * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.
101
+ * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.
102
+ * - Each sha256 hash is executing 2^18 bit operations.
103
+ * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.
104
+ * @param msg - message bytes to hash
105
+ * @param opts - Reserved hash options.
106
+ * @returns Digest bytes.
107
+ * @example
108
+ * Hash a message with SHA2-256.
109
+ * ```ts
110
+ * sha256(new Uint8Array([97, 98, 99]));
111
+ * ```
112
+ */
113
+ export declare const sha256: TRet<CHash<_SHA256>>;
114
+ /**
115
+ * SHA2-224 hash function from RFC 4634.
116
+ * @param msg - message bytes to hash
117
+ * @param opts - Reserved hash options.
118
+ * @returns Digest bytes.
119
+ * @example
120
+ * Hash a message with SHA2-224.
121
+ * ```ts
122
+ * sha224(new Uint8Array([97, 98, 99]));
123
+ * ```
124
+ */
125
+ export declare const sha224: TRet<CHash<_SHA224>>;
126
+ /**
127
+ * SHA2-512 hash function from RFC 4634.
128
+ * @param msg - message bytes to hash
129
+ * @param opts - Reserved hash options.
130
+ * @returns Digest bytes.
131
+ * @example
132
+ * Hash a message with SHA2-512.
133
+ * ```ts
134
+ * sha512(new Uint8Array([97, 98, 99]));
135
+ * ```
136
+ */
137
+ export declare const sha512: TRet<CHash<_SHA512>>;
138
+ /**
139
+ * SHA2-384 hash function from RFC 4634.
140
+ * @param msg - message bytes to hash
141
+ * @param opts - Reserved hash options.
142
+ * @returns Digest bytes.
143
+ * @example
144
+ * Hash a message with SHA2-384.
145
+ * ```ts
146
+ * sha384(new Uint8Array([97, 98, 99]));
147
+ * ```
148
+ */
149
+ export declare const sha384: TRet<CHash<_SHA384>>;
150
+ /**
151
+ * SHA2-512/256 "truncated" hash function, with improved resistance to length extension attacks.
152
+ * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.
153
+ * @param msg - message bytes to hash
154
+ * @param opts - Reserved hash options.
155
+ * @returns Digest bytes.
156
+ * @example
157
+ * Hash a message with SHA2-512/256.
158
+ * ```ts
159
+ * sha512_256(new Uint8Array([97, 98, 99]));
160
+ * ```
161
+ */
162
+ export declare const sha512_256: TRet<CHash<_SHA512_256>>;
163
+ /**
164
+ * SHA2-512/224 "truncated" hash function, with improved resistance to length extension attacks.
165
+ * See the paper on {@link https://eprint.iacr.org/2010/548.pdf | truncated SHA512}.
166
+ * @param msg - message bytes to hash
167
+ * @param opts - Reserved hash options.
168
+ * @returns Digest bytes.
169
+ * @example
170
+ * Hash a message with SHA2-512/224.
171
+ * ```ts
172
+ * sha512_224(new Uint8Array([97, 98, 99]));
173
+ * ```
174
+ */
175
+ export declare const sha512_224: TRet<CHash<_SHA512_224>>;
176
+ export {};