effect 4.0.7 → 4.1.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 (863) hide show
  1. package/README.md +31 -1
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/dist/BigDecimal.d.ts +139 -7
  4. package/dist/BigDecimal.d.ts.map +1 -1
  5. package/dist/BigDecimal.js +86 -14
  6. package/dist/BigDecimal.js.map +1 -1
  7. package/dist/Channel.d.ts +12 -6
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +9 -3
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Config.d.ts +7 -1
  12. package/dist/Config.d.ts.map +1 -1
  13. package/dist/Config.js.map +1 -1
  14. package/dist/Context.d.ts +18 -1
  15. package/dist/Context.d.ts.map +1 -1
  16. package/dist/Context.js +27 -8
  17. package/dist/Context.js.map +1 -1
  18. package/dist/Cron.d.ts +81 -11
  19. package/dist/Cron.d.ts.map +1 -1
  20. package/dist/Cron.js +101 -26
  21. package/dist/Cron.js.map +1 -1
  22. package/dist/Duration.d.ts +78 -0
  23. package/dist/Duration.d.ts.map +1 -1
  24. package/dist/Duration.js +123 -0
  25. package/dist/Duration.js.map +1 -1
  26. package/dist/Effect.d.ts +164 -7
  27. package/dist/Effect.d.ts.map +1 -1
  28. package/dist/Effect.js +11 -1
  29. package/dist/Effect.js.map +1 -1
  30. package/dist/Equal.d.ts +2 -2
  31. package/dist/Equal.d.ts.map +1 -1
  32. package/dist/Equal.js +3 -3
  33. package/dist/Equal.js.map +1 -1
  34. package/dist/FileSystem.d.ts +59 -4
  35. package/dist/FileSystem.d.ts.map +1 -1
  36. package/dist/FileSystem.js +9 -2
  37. package/dist/FileSystem.js.map +1 -1
  38. package/dist/Glob.d.ts +165 -0
  39. package/dist/Glob.d.ts.map +1 -0
  40. package/dist/Glob.js +127 -0
  41. package/dist/Glob.js.map +1 -0
  42. package/dist/Hash.d.ts +3 -2
  43. package/dist/Hash.d.ts.map +1 -1
  44. package/dist/Hash.js +5 -4
  45. package/dist/Hash.js.map +1 -1
  46. package/dist/Iterable.d.ts.map +1 -1
  47. package/dist/Iterable.js +11 -8
  48. package/dist/Iterable.js.map +1 -1
  49. package/dist/Match.d.ts +86 -0
  50. package/dist/Match.d.ts.map +1 -1
  51. package/dist/Match.js +72 -0
  52. package/dist/Match.js.map +1 -1
  53. package/dist/Path.d.ts.map +1 -1
  54. package/dist/Path.js +5 -1
  55. package/dist/Path.js.map +1 -1
  56. package/dist/Pool.d.ts +51 -0
  57. package/dist/Pool.d.ts.map +1 -1
  58. package/dist/Pool.js +61 -10
  59. package/dist/Pool.js.map +1 -1
  60. package/dist/Random.d.ts.map +1 -1
  61. package/dist/Random.js +3 -3
  62. package/dist/Random.js.map +1 -1
  63. package/dist/RcMap.d.ts.map +1 -1
  64. package/dist/RcMap.js +8 -2
  65. package/dist/RcMap.js.map +1 -1
  66. package/dist/Schedule.d.ts +18 -1
  67. package/dist/Schedule.d.ts.map +1 -1
  68. package/dist/Schedule.js +7 -2
  69. package/dist/Schedule.js.map +1 -1
  70. package/dist/Schema.d.ts +668 -42
  71. package/dist/Schema.d.ts.map +1 -1
  72. package/dist/Schema.js +652 -1
  73. package/dist/Schema.js.map +1 -1
  74. package/dist/SchemaGetter.d.ts +6 -1
  75. package/dist/SchemaGetter.d.ts.map +1 -1
  76. package/dist/SchemaGetter.js +22 -11
  77. package/dist/SchemaGetter.js.map +1 -1
  78. package/dist/SchemaRepresentation.d.ts +18 -2
  79. package/dist/SchemaRepresentation.d.ts.map +1 -1
  80. package/dist/SchemaRepresentation.js +20 -2
  81. package/dist/SchemaRepresentation.js.map +1 -1
  82. package/dist/SchemaTransformation.d.ts +10 -5
  83. package/dist/SchemaTransformation.d.ts.map +1 -1
  84. package/dist/SchemaTransformation.js +8 -5
  85. package/dist/SchemaTransformation.js.map +1 -1
  86. package/dist/ScopedCache.d.ts.map +1 -1
  87. package/dist/ScopedCache.js +5 -7
  88. package/dist/ScopedCache.js.map +1 -1
  89. package/dist/Semaphore.d.ts +130 -0
  90. package/dist/Semaphore.d.ts.map +1 -1
  91. package/dist/Semaphore.js +40 -0
  92. package/dist/Semaphore.js.map +1 -1
  93. package/dist/Stream.d.ts +13 -4
  94. package/dist/Stream.d.ts.map +1 -1
  95. package/dist/Stream.js +9 -0
  96. package/dist/Stream.js.map +1 -1
  97. package/dist/Terminal.d.ts +18 -1
  98. package/dist/Terminal.d.ts.map +1 -1
  99. package/dist/Terminal.js +1 -1
  100. package/dist/Terminal.js.map +1 -1
  101. package/dist/ai/AiError.d.ts +43 -116
  102. package/dist/ai/AiError.d.ts.map +1 -1
  103. package/dist/ai/AiError.js +53 -72
  104. package/dist/ai/AiError.js.map +1 -1
  105. package/dist/ai/Decision.d.ts +196 -15
  106. package/dist/ai/Decision.d.ts.map +1 -1
  107. package/dist/ai/Decision.js +130 -0
  108. package/dist/ai/Decision.js.map +1 -1
  109. package/dist/ai/DecisionModel.d.ts +54 -13
  110. package/dist/ai/DecisionModel.d.ts.map +1 -1
  111. package/dist/ai/DecisionModel.js +123 -12
  112. package/dist/ai/DecisionModel.js.map +1 -1
  113. package/dist/ai/McpClient.d.ts +171 -19
  114. package/dist/ai/McpClient.d.ts.map +1 -1
  115. package/dist/ai/McpClient.js +277 -66
  116. package/dist/ai/McpClient.js.map +1 -1
  117. package/dist/ai/McpSchema.d.ts +108 -0
  118. package/dist/ai/McpSchema.d.ts.map +1 -1
  119. package/dist/ai/McpSchema.js +99 -0
  120. package/dist/ai/McpSchema.js.map +1 -1
  121. package/dist/ai/McpServer.d.ts +744 -29
  122. package/dist/ai/McpServer.d.ts.map +1 -1
  123. package/dist/ai/McpServer.js +763 -136
  124. package/dist/ai/McpServer.js.map +1 -1
  125. package/dist/ai/McpTest.d.ts +130 -0
  126. package/dist/ai/McpTest.d.ts.map +1 -0
  127. package/dist/ai/McpTest.js +237 -0
  128. package/dist/ai/McpTest.js.map +1 -0
  129. package/dist/ai/Prompt.d.ts.map +1 -1
  130. package/dist/ai/Prompt.js +20 -11
  131. package/dist/ai/Prompt.js.map +1 -1
  132. package/dist/ai/Response.d.ts +1 -25
  133. package/dist/ai/Response.d.ts.map +1 -1
  134. package/dist/ai/Response.js +1 -10
  135. package/dist/ai/Response.js.map +1 -1
  136. package/dist/ai/Tool.d.ts +19 -1
  137. package/dist/ai/Tool.d.ts.map +1 -1
  138. package/dist/ai/Tool.js +5 -7
  139. package/dist/ai/Tool.js.map +1 -1
  140. package/dist/ai/index.d.ts +5 -0
  141. package/dist/ai/index.d.ts.map +1 -1
  142. package/dist/ai/index.js +5 -0
  143. package/dist/ai/index.js.map +1 -1
  144. package/dist/ai/internal/mcpCore.js +89 -15
  145. package/dist/ai/internal/mcpCore.js.map +1 -1
  146. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +7 -6
  147. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  148. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +7 -6
  149. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  150. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +7 -6
  151. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  152. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +7 -6
  153. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  154. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +60 -17
  155. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  156. package/dist/ai/internal/mcpProtocol.js +25 -0
  157. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  158. package/dist/ai/internal/mcpRuntime.js +8 -6
  159. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  160. package/dist/ai/internal/mcpSkills.d.ts +2 -0
  161. package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
  162. package/dist/ai/internal/mcpSkills.js +428 -0
  163. package/dist/ai/internal/mcpSkills.js.map +1 -0
  164. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  165. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  166. package/dist/cli/Argument.d.ts +6 -0
  167. package/dist/cli/Argument.d.ts.map +1 -1
  168. package/dist/cli/Argument.js +2 -0
  169. package/dist/cli/Argument.js.map +1 -1
  170. package/dist/cli/CliOutput.d.ts +65 -1
  171. package/dist/cli/CliOutput.d.ts.map +1 -1
  172. package/dist/cli/CliOutput.js +94 -37
  173. package/dist/cli/CliOutput.js.map +1 -1
  174. package/dist/cli/Command.d.ts +23 -0
  175. package/dist/cli/Command.d.ts.map +1 -1
  176. package/dist/cli/Command.js +8 -0
  177. package/dist/cli/Command.js.map +1 -1
  178. package/dist/cli/Flag.d.ts +107 -0
  179. package/dist/cli/Flag.d.ts.map +1 -1
  180. package/dist/cli/Flag.js +37 -0
  181. package/dist/cli/Flag.js.map +1 -1
  182. package/dist/cli/HelpDoc.d.ts +15 -1
  183. package/dist/cli/HelpDoc.d.ts.map +1 -1
  184. package/dist/cli/Param.d.ts +6 -0
  185. package/dist/cli/Param.d.ts.map +1 -1
  186. package/dist/cli/Param.js +2 -0
  187. package/dist/cli/Param.js.map +1 -1
  188. package/dist/cli/Primitive.d.ts +14 -0
  189. package/dist/cli/Primitive.d.ts.map +1 -1
  190. package/dist/cli/Primitive.js +15 -1
  191. package/dist/cli/Primitive.js.map +1 -1
  192. package/dist/cli/Prompt.d.ts +1 -0
  193. package/dist/cli/Prompt.d.ts.map +1 -1
  194. package/dist/cli/Prompt.js +1 -0
  195. package/dist/cli/Prompt.js.map +1 -1
  196. package/dist/cli/internal/help.d.ts.map +1 -1
  197. package/dist/cli/internal/help.js +17 -10
  198. package/dist/cli/internal/help.js.map +1 -1
  199. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  200. package/dist/cluster/ClusterWorkflowEngine.js +15 -5
  201. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  202. package/dist/cluster/Reply.d.ts +1 -1
  203. package/dist/cluster/Reply.d.ts.map +1 -1
  204. package/dist/cluster/Reply.js.map +1 -1
  205. package/dist/cluster/Sharding.d.ts.map +1 -1
  206. package/dist/cluster/Sharding.js +93 -28
  207. package/dist/cluster/Sharding.js.map +1 -1
  208. package/dist/cluster/ShardingConfig.d.ts +72 -6
  209. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  210. package/dist/cluster/ShardingConfig.js +4 -0
  211. package/dist/cluster/ShardingConfig.js.map +1 -1
  212. package/dist/cluster/SingleRunner.d.ts +3 -3
  213. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  214. package/dist/cluster/SingleRunner.js +1 -1
  215. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  216. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  217. package/dist/cluster/SqlMessageStorage.js +34 -7
  218. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  219. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  220. package/dist/cluster/SqlRunnerStorage.js +23 -8
  221. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  222. package/dist/cluster/internal/entityManager.js +15 -7
  223. package/dist/cluster/internal/entityManager.js.map +1 -1
  224. package/dist/crypto/Aead.d.ts +323 -0
  225. package/dist/crypto/Aead.d.ts.map +1 -0
  226. package/dist/crypto/Aead.js +331 -0
  227. package/dist/crypto/Aead.js.map +1 -0
  228. package/dist/crypto/Cipher.d.ts +236 -0
  229. package/dist/crypto/Cipher.d.ts.map +1 -0
  230. package/dist/crypto/Cipher.js +233 -0
  231. package/dist/crypto/Cipher.js.map +1 -0
  232. package/dist/crypto/CryptoError.d.ts +212 -0
  233. package/dist/crypto/CryptoError.d.ts.map +1 -0
  234. package/dist/crypto/CryptoError.js +202 -0
  235. package/dist/crypto/CryptoError.js.map +1 -0
  236. package/dist/crypto/Digest.d.ts +143 -0
  237. package/dist/crypto/Digest.d.ts.map +1 -0
  238. package/dist/crypto/Digest.js +146 -0
  239. package/dist/crypto/Digest.js.map +1 -0
  240. package/dist/crypto/Kdf.d.ts +220 -0
  241. package/dist/crypto/Kdf.d.ts.map +1 -0
  242. package/dist/crypto/Kdf.js +212 -0
  243. package/dist/crypto/Kdf.js.map +1 -0
  244. package/dist/crypto/KeyAgreement.d.ts +324 -0
  245. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  246. package/dist/crypto/KeyAgreement.js +303 -0
  247. package/dist/crypto/KeyAgreement.js.map +1 -0
  248. package/dist/crypto/KeyFormat.d.ts +341 -0
  249. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  250. package/dist/crypto/KeyFormat.js +556 -0
  251. package/dist/crypto/KeyFormat.js.map +1 -0
  252. package/dist/crypto/KeyWrap.d.ts +390 -0
  253. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  254. package/dist/crypto/KeyWrap.js +381 -0
  255. package/dist/crypto/KeyWrap.js.map +1 -0
  256. package/dist/crypto/Mac.d.ts +278 -0
  257. package/dist/crypto/Mac.d.ts.map +1 -0
  258. package/dist/crypto/Mac.js +288 -0
  259. package/dist/crypto/Mac.js.map +1 -0
  260. package/dist/crypto/SecureRandom.d.ts +340 -0
  261. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  262. package/dist/crypto/SecureRandom.js +257 -0
  263. package/dist/crypto/SecureRandom.js.map +1 -0
  264. package/dist/crypto/Signature.d.ts +449 -0
  265. package/dist/crypto/Signature.d.ts.map +1 -0
  266. package/dist/crypto/Signature.js +484 -0
  267. package/dist/crypto/Signature.js.map +1 -0
  268. package/dist/crypto/WebCrypto.d.ts +80 -0
  269. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  270. package/dist/crypto/WebCrypto.js +63 -0
  271. package/dist/crypto/WebCrypto.js.map +1 -0
  272. package/dist/crypto/index.d.ts +65 -0
  273. package/dist/crypto/index.d.ts.map +1 -0
  274. package/dist/crypto/index.js +66 -0
  275. package/dist/crypto/index.js.map +1 -0
  276. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  277. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  278. package/dist/crypto/internal/asymmetric.js +210 -0
  279. package/dist/crypto/internal/asymmetric.js.map +1 -0
  280. package/dist/crypto/internal/chacha.d.ts +46 -0
  281. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  282. package/dist/crypto/internal/chacha.js +885 -0
  283. package/dist/crypto/internal/chacha.js.map +1 -0
  284. package/dist/crypto/internal/der.d.ts +6 -0
  285. package/dist/crypto/internal/der.d.ts.map +1 -0
  286. package/dist/crypto/internal/der.js +86 -0
  287. package/dist/crypto/internal/der.js.map +1 -0
  288. package/dist/crypto/internal/digest.d.ts +2 -0
  289. package/dist/crypto/internal/digest.d.ts.map +1 -0
  290. package/dist/crypto/internal/digest.js +15 -0
  291. package/dist/crypto/internal/digest.js.map +1 -0
  292. package/dist/crypto/internal/key.d.ts +2 -0
  293. package/dist/crypto/internal/key.d.ts.map +1 -0
  294. package/dist/crypto/internal/key.js +171 -0
  295. package/dist/crypto/internal/key.js.map +1 -0
  296. package/dist/crypto/internal/md5.d.ts +39 -0
  297. package/dist/crypto/internal/md5.d.ts.map +1 -0
  298. package/dist/crypto/internal/md5.js +179 -0
  299. package/dist/crypto/internal/md5.js.map +1 -0
  300. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  301. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  302. package/dist/crypto/internal/webCrypto.js +111 -0
  303. package/dist/crypto/internal/webCrypto.js.map +1 -0
  304. package/dist/encoding/Base64Url.d.ts.map +1 -1
  305. package/dist/encoding/Base64Url.js +29 -5
  306. package/dist/encoding/Base64Url.js.map +1 -1
  307. package/dist/encoding/Csv.d.ts +608 -0
  308. package/dist/encoding/Csv.d.ts.map +1 -0
  309. package/dist/encoding/Csv.js +718 -0
  310. package/dist/encoding/Csv.js.map +1 -0
  311. package/dist/encoding/Hex.d.ts +3 -2
  312. package/dist/encoding/Hex.d.ts.map +1 -1
  313. package/dist/encoding/Hex.js +3 -2
  314. package/dist/encoding/Hex.js.map +1 -1
  315. package/dist/encoding/Ndjson.d.ts +5 -4
  316. package/dist/encoding/Ndjson.d.ts.map +1 -1
  317. package/dist/encoding/Ndjson.js +6 -5
  318. package/dist/encoding/Ndjson.js.map +1 -1
  319. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  320. package/dist/encoding/SchemaBinary.js +42 -4
  321. package/dist/encoding/SchemaBinary.js.map +1 -1
  322. package/dist/encoding/Sse.d.ts +3 -1
  323. package/dist/encoding/Sse.d.ts.map +1 -1
  324. package/dist/encoding/Sse.js +5 -3
  325. package/dist/encoding/Sse.js.map +1 -1
  326. package/dist/encoding/Toml.d.ts +17 -3
  327. package/dist/encoding/Toml.d.ts.map +1 -1
  328. package/dist/encoding/Toml.js +104 -16
  329. package/dist/encoding/Toml.js.map +1 -1
  330. package/dist/encoding/Yaml.d.ts +8 -1
  331. package/dist/encoding/Yaml.d.ts.map +1 -1
  332. package/dist/encoding/Yaml.js +54 -18
  333. package/dist/encoding/Yaml.js.map +1 -1
  334. package/dist/encoding/index.d.ts +5 -0
  335. package/dist/encoding/index.d.ts.map +1 -1
  336. package/dist/encoding/index.js +5 -0
  337. package/dist/encoding/index.js.map +1 -1
  338. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  339. package/dist/eventlog/EventJournal.js +6 -3
  340. package/dist/eventlog/EventJournal.js.map +1 -1
  341. package/dist/eventlog/EventLog.d.ts +126 -4
  342. package/dist/eventlog/EventLog.d.ts.map +1 -1
  343. package/dist/eventlog/EventLog.js +207 -12
  344. package/dist/eventlog/EventLog.js.map +1 -1
  345. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  346. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  347. package/dist/eventlog/EventLogEncryption.js +83 -64
  348. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  349. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  350. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  351. package/dist/eventlog/EventLogMessage.js +217 -1
  352. package/dist/eventlog/EventLogMessage.js.map +1 -1
  353. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  354. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  355. package/dist/eventlog/EventLogRemote.js +186 -16
  356. package/dist/eventlog/EventLogRemote.js.map +1 -1
  357. package/dist/eventlog/EventLogServer.d.ts +10 -1
  358. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  359. package/dist/eventlog/EventLogServer.js +45 -22
  360. package/dist/eventlog/EventLogServer.js.map +1 -1
  361. package/dist/eventlog/EventLogServerEncrypted.d.ts +336 -5
  362. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  363. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  364. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  365. package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
  366. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  367. package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
  368. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  369. package/dist/eventlog/EventLogSessionAuth.d.ts +26 -3
  370. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  371. package/dist/eventlog/EventLogSessionAuth.js +63 -64
  372. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  373. package/dist/eventlog/EventRow.d.ts +4 -0
  374. package/dist/eventlog/EventRow.d.ts.map +1 -1
  375. package/dist/eventlog/EventRow.js +12 -2
  376. package/dist/eventlog/EventRow.js.map +1 -1
  377. package/dist/eventlog/SqlEventJournal.js +2 -2
  378. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  379. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  380. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  381. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  382. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  383. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  384. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  385. package/dist/eventlog/internal/batches.d.ts +12 -0
  386. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  387. package/dist/eventlog/internal/batches.js +26 -0
  388. package/dist/eventlog/internal/batches.js.map +1 -0
  389. package/dist/eventlog/internal/compaction.d.ts +38 -0
  390. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  391. package/dist/eventlog/internal/compaction.js +33 -0
  392. package/dist/eventlog/internal/compaction.js.map +1 -0
  393. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  394. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  395. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  396. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  397. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  398. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  399. package/dist/graphql/GraphQLClient.d.ts +3 -1
  400. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  401. package/dist/graphql/GraphQLClient.js.map +1 -1
  402. package/dist/graphql/GraphQLClientError.d.ts +14 -9
  403. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  404. package/dist/graphql/GraphQLClientError.js +14 -21
  405. package/dist/graphql/GraphQLClientError.js.map +1 -1
  406. package/dist/graphql/GraphQLProtocol.d.ts +12 -3
  407. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  408. package/dist/graphql/GraphQLProtocol.js +4 -1
  409. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  410. package/dist/http/Cookies.d.ts +172 -0
  411. package/dist/http/Cookies.d.ts.map +1 -1
  412. package/dist/http/Cookies.js +143 -1
  413. package/dist/http/Cookies.js.map +1 -1
  414. package/dist/http/FetchHttpClient.d.ts +26 -2
  415. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  416. package/dist/http/FetchHttpClient.js +78 -15
  417. package/dist/http/FetchHttpClient.js.map +1 -1
  418. package/dist/http/HttpClient.d.ts +268 -15
  419. package/dist/http/HttpClient.d.ts.map +1 -1
  420. package/dist/http/HttpClient.js +140 -7
  421. package/dist/http/HttpClient.js.map +1 -1
  422. package/dist/http/HttpClientRequest.d.ts +9 -5
  423. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  424. package/dist/http/HttpClientRequest.js +2 -3
  425. package/dist/http/HttpClientRequest.js.map +1 -1
  426. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  427. package/dist/http/HttpClientResponse.js +3 -2
  428. package/dist/http/HttpClientResponse.js.map +1 -1
  429. package/dist/http/HttpMethod.d.ts +7 -1
  430. package/dist/http/HttpMethod.d.ts.map +1 -1
  431. package/dist/http/HttpMethod.js +3 -8
  432. package/dist/http/HttpMethod.js.map +1 -1
  433. package/dist/http/HttpServerRequest.d.ts +5 -2
  434. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  435. package/dist/http/HttpServerRequest.js +44 -39
  436. package/dist/http/HttpServerRequest.js.map +1 -1
  437. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  438. package/dist/http/HttpServerResponse.js +3 -2
  439. package/dist/http/HttpServerResponse.js.map +1 -1
  440. package/dist/http/HttpTraceContext.d.ts +2 -1
  441. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  442. package/dist/http/HttpTraceContext.js +7 -5
  443. package/dist/http/HttpTraceContext.js.map +1 -1
  444. package/dist/http/ProblemDetails.d.ts +96 -0
  445. package/dist/http/ProblemDetails.d.ts.map +1 -0
  446. package/dist/http/ProblemDetails.js +98 -0
  447. package/dist/http/ProblemDetails.js.map +1 -0
  448. package/dist/http/index.d.ts +5 -0
  449. package/dist/http/index.d.ts.map +1 -1
  450. package/dist/http/index.js +5 -0
  451. package/dist/http/index.js.map +1 -1
  452. package/dist/http/internal/decompression.js +3 -2
  453. package/dist/http/internal/decompression.js.map +1 -1
  454. package/dist/http/internal/mimeTypes.d.ts +4 -1
  455. package/dist/http/internal/mimeTypes.d.ts.map +1 -1
  456. package/dist/http/internal/mimeTypes.js +4 -1
  457. package/dist/http/internal/mimeTypes.js.map +1 -1
  458. package/dist/http/internal/urlParams.js +8 -0
  459. package/dist/http/internal/urlParams.js.map +1 -1
  460. package/dist/http-api/HttpApiBuilder.js +19 -5
  461. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  462. package/dist/http-api/HttpApiClient.d.ts +63 -0
  463. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  464. package/dist/http-api/HttpApiClient.js +51 -0
  465. package/dist/http-api/HttpApiClient.js.map +1 -1
  466. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  467. package/dist/http-api/HttpApiEndpoint.js +14 -5
  468. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  469. package/dist/http-api/HttpApiError.d.ts +185 -13
  470. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  471. package/dist/http-api/HttpApiError.js +128 -0
  472. package/dist/http-api/HttpApiError.js.map +1 -1
  473. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  474. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  475. package/dist/http-api/HttpApiMiddleware.js +85 -1
  476. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  477. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  478. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  479. package/dist/http-api/HttpApiSchema.js +54 -1
  480. package/dist/http-api/HttpApiSchema.js.map +1 -1
  481. package/dist/index.d.ts +5 -5
  482. package/dist/index.d.ts.map +1 -1
  483. package/dist/index.js +5 -5
  484. package/dist/index.js.map +1 -1
  485. package/dist/internal/dateTime.js +49 -24
  486. package/dist/internal/dateTime.js.map +1 -1
  487. package/dist/internal/effect.js +35 -14
  488. package/dist/internal/effect.js.map +1 -1
  489. package/dist/internal/glob.d.ts +2 -0
  490. package/dist/internal/glob.d.ts.map +1 -0
  491. package/dist/internal/glob.js +808 -0
  492. package/dist/internal/glob.js.map +1 -0
  493. package/dist/internal/graphql.js +21 -7
  494. package/dist/internal/graphql.js.map +1 -1
  495. package/dist/internal/graphqlHeaders.d.ts +7 -0
  496. package/dist/internal/graphqlHeaders.d.ts.map +1 -1
  497. package/dist/internal/graphqlHeaders.js +11 -0
  498. package/dist/internal/graphqlHeaders.js.map +1 -1
  499. package/dist/internal/matcher.js +10 -0
  500. package/dist/internal/matcher.js.map +1 -1
  501. package/dist/internal/persistence.js +9 -0
  502. package/dist/internal/persistence.js.map +1 -1
  503. package/dist/internal/rcRef.js +4 -1
  504. package/dist/internal/rcRef.js.map +1 -1
  505. package/dist/internal/request.js +29 -42
  506. package/dist/internal/request.js.map +1 -1
  507. package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
  508. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  509. package/dist/internal/schema/toCodeDocument.js +6 -3
  510. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  511. package/dist/internal/trie.js +42 -13
  512. package/dist/internal/trie.js.map +1 -1
  513. package/dist/internal/ulid.js +41 -0
  514. package/dist/internal/ulid.js.map +1 -1
  515. package/dist/internal/uuid.js +52 -8
  516. package/dist/internal/uuid.js.map +1 -1
  517. package/dist/internal/version.js +1 -1
  518. package/dist/jose/JoseError.d.ts +285 -0
  519. package/dist/jose/JoseError.d.ts.map +1 -0
  520. package/dist/jose/JoseError.js +269 -0
  521. package/dist/jose/JoseError.js.map +1 -0
  522. package/dist/jose/Jwe.d.ts +128 -0
  523. package/dist/jose/Jwe.d.ts.map +1 -0
  524. package/dist/jose/Jwe.js +134 -0
  525. package/dist/jose/Jwe.js.map +1 -0
  526. package/dist/jose/Jwk.d.ts +597 -0
  527. package/dist/jose/Jwk.d.ts.map +1 -0
  528. package/dist/jose/Jwk.js +503 -0
  529. package/dist/jose/Jwk.js.map +1 -0
  530. package/dist/jose/Jwks.d.ts +236 -0
  531. package/dist/jose/Jwks.d.ts.map +1 -0
  532. package/dist/jose/Jwks.js +306 -0
  533. package/dist/jose/Jwks.js.map +1 -0
  534. package/dist/jose/Jws.d.ts +177 -0
  535. package/dist/jose/Jws.d.ts.map +1 -0
  536. package/dist/jose/Jws.js +183 -0
  537. package/dist/jose/Jws.js.map +1 -0
  538. package/dist/jose/Jwt.d.ts +270 -0
  539. package/dist/jose/Jwt.d.ts.map +1 -0
  540. package/dist/jose/Jwt.js +293 -0
  541. package/dist/jose/Jwt.js.map +1 -0
  542. package/dist/jose/index.d.ts +51 -0
  543. package/dist/jose/index.d.ts.map +1 -0
  544. package/dist/jose/index.js +52 -0
  545. package/dist/jose/index.js.map +1 -0
  546. package/dist/jose/internal/compact.d.ts +2 -0
  547. package/dist/jose/internal/compact.d.ts.map +1 -0
  548. package/dist/jose/internal/compact.js +179 -0
  549. package/dist/jose/internal/compact.js.map +1 -0
  550. package/dist/net/Host.d.ts.map +1 -1
  551. package/dist/net/Host.js +5 -10
  552. package/dist/net/Host.js.map +1 -1
  553. package/dist/observability/Otlp.d.ts +15 -4
  554. package/dist/observability/Otlp.d.ts.map +1 -1
  555. package/dist/observability/Otlp.js +10 -0
  556. package/dist/observability/Otlp.js.map +1 -1
  557. package/dist/observability/OtlpResource.d.ts +7 -0
  558. package/dist/observability/OtlpResource.d.ts.map +1 -1
  559. package/dist/observability/OtlpResource.js +11 -1
  560. package/dist/observability/OtlpResource.js.map +1 -1
  561. package/dist/observability/OtlpSerialization.d.ts +1 -1
  562. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  563. package/dist/observability/OtlpSerialization.js +10 -4
  564. package/dist/observability/OtlpSerialization.js.map +1 -1
  565. package/dist/observability/internal/otlpProtobuf.js +3 -3
  566. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  567. package/dist/observability/internal/protobuf.js +6 -0
  568. package/dist/observability/internal/protobuf.js.map +1 -1
  569. package/dist/persistence/CircuitBreaker.d.ts +98 -38
  570. package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
  571. package/dist/persistence/CircuitBreaker.js +67 -29
  572. package/dist/persistence/CircuitBreaker.js.map +1 -1
  573. package/dist/persistence/KeyValueStore.d.ts +47 -2
  574. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  575. package/dist/persistence/KeyValueStore.js +129 -18
  576. package/dist/persistence/KeyValueStore.js.map +1 -1
  577. package/dist/persistence/PersistedQueue.d.ts +9 -0
  578. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  579. package/dist/persistence/PersistedQueue.js +94 -52
  580. package/dist/persistence/PersistedQueue.js.map +1 -1
  581. package/dist/persistence/Persistence.d.ts +10 -4
  582. package/dist/persistence/Persistence.d.ts.map +1 -1
  583. package/dist/persistence/Persistence.js +18 -11
  584. package/dist/persistence/Persistence.js.map +1 -1
  585. package/dist/persistence/RateLimiter.d.ts +8 -0
  586. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  587. package/dist/persistence/RateLimiter.js +63 -12
  588. package/dist/persistence/RateLimiter.js.map +1 -1
  589. package/dist/persistence/index.d.ts +1 -1
  590. package/dist/persistence/index.js +1 -1
  591. package/dist/process/ChildProcess.d.ts +207 -67
  592. package/dist/process/ChildProcess.d.ts.map +1 -1
  593. package/dist/process/ChildProcess.js +56 -158
  594. package/dist/process/ChildProcess.js.map +1 -1
  595. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  596. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  597. package/dist/process/ChildProcessSpawner.js.map +1 -1
  598. package/dist/process/CommandLine.d.ts +294 -0
  599. package/dist/process/CommandLine.d.ts.map +1 -0
  600. package/dist/process/CommandLine.js +481 -0
  601. package/dist/process/CommandLine.js.map +1 -0
  602. package/dist/process/index.d.ts +5 -0
  603. package/dist/process/index.d.ts.map +1 -1
  604. package/dist/process/index.js +5 -0
  605. package/dist/process/index.js.map +1 -1
  606. package/dist/reactivity/Atom.d.ts +2 -1
  607. package/dist/reactivity/Atom.d.ts.map +1 -1
  608. package/dist/reactivity/Atom.js +3 -4
  609. package/dist/reactivity/Atom.js.map +1 -1
  610. package/dist/reactivity/AtomRegistry.js +17 -7
  611. package/dist/reactivity/AtomRegistry.js.map +1 -1
  612. package/dist/rpc/Rpc.d.ts +1 -1
  613. package/dist/rpc/Rpc.d.ts.map +1 -1
  614. package/dist/rpc/Rpc.js.map +1 -1
  615. package/dist/rpc/RpcClient.d.ts +28 -1
  616. package/dist/rpc/RpcClient.d.ts.map +1 -1
  617. package/dist/rpc/RpcClient.js +78 -27
  618. package/dist/rpc/RpcClient.js.map +1 -1
  619. package/dist/rpc/RpcMessage.d.ts +13 -3
  620. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  621. package/dist/rpc/RpcMessage.js +1 -0
  622. package/dist/rpc/RpcMessage.js.map +1 -1
  623. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  624. package/dist/rpc/RpcSerialization.js +6 -0
  625. package/dist/rpc/RpcSerialization.js.map +1 -1
  626. package/dist/rpc/RpcServer.d.ts +31 -0
  627. package/dist/rpc/RpcServer.d.ts.map +1 -1
  628. package/dist/rpc/RpcServer.js +139 -66
  629. package/dist/rpc/RpcServer.js.map +1 -1
  630. package/dist/schema/Model.d.ts +14 -0
  631. package/dist/schema/Model.d.ts.map +1 -1
  632. package/dist/schema/Model.js +18 -3
  633. package/dist/schema/Model.js.map +1 -1
  634. package/dist/sql/Migrator.d.ts +9 -20
  635. package/dist/sql/Migrator.d.ts.map +1 -1
  636. package/dist/sql/Migrator.js +20 -53
  637. package/dist/sql/Migrator.js.map +1 -1
  638. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  639. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  640. package/dist/sql/MigratorFileSystem.js +57 -0
  641. package/dist/sql/MigratorFileSystem.js.map +1 -0
  642. package/dist/sql/SqlClient.d.ts +38 -3
  643. package/dist/sql/SqlClient.d.ts.map +1 -1
  644. package/dist/sql/SqlClient.js +9 -12
  645. package/dist/sql/SqlClient.js.map +1 -1
  646. package/dist/sql/Statement.d.ts +61 -9
  647. package/dist/sql/Statement.d.ts.map +1 -1
  648. package/dist/sql/Statement.js +24 -33
  649. package/dist/sql/Statement.js.map +1 -1
  650. package/dist/sql/index.js +1 -1
  651. package/dist/testing/index.d.ts +0 -5
  652. package/dist/testing/index.d.ts.map +1 -1
  653. package/dist/testing/index.js +0 -5
  654. package/dist/testing/index.js.map +1 -1
  655. package/dist/workflow/Workflow.d.ts +4 -0
  656. package/dist/workflow/Workflow.d.ts.map +1 -1
  657. package/dist/workflow/Workflow.js.map +1 -1
  658. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  659. package/dist/workflow/WorkflowEngine.js +5 -0
  660. package/dist/workflow/WorkflowEngine.js.map +1 -1
  661. package/dist/workflow/internal/crypto.js +9 -8
  662. package/dist/workflow/internal/crypto.js.map +1 -1
  663. package/package.json +7 -1
  664. package/src/BigDecimal.ts +173 -16
  665. package/src/Channel.ts +17 -11
  666. package/src/Config.ts +7 -1
  667. package/src/Context.ts +34 -10
  668. package/src/Cron.ts +178 -29
  669. package/src/Duration.ts +140 -0
  670. package/src/Effect.ts +914 -85
  671. package/src/Equal.ts +3 -3
  672. package/src/FileSystem.ts +65 -4
  673. package/src/Glob.ts +205 -0
  674. package/src/Hash.ts +5 -4
  675. package/src/Iterable.ts +8 -5
  676. package/src/Match.ts +127 -0
  677. package/src/Path.ts +6 -1
  678. package/src/Pool.ts +75 -16
  679. package/src/Random.ts +3 -3
  680. package/src/RcMap.ts +5 -1
  681. package/src/Schedule.ts +26 -3
  682. package/src/Schema.ts +1191 -63
  683. package/src/SchemaGetter.ts +27 -11
  684. package/src/SchemaRepresentation.ts +23 -2
  685. package/src/SchemaTransformation.ts +10 -5
  686. package/src/ScopedCache.ts +5 -9
  687. package/src/Semaphore.ts +141 -0
  688. package/src/Stream.ts +15 -6
  689. package/src/Terminal.ts +19 -1
  690. package/src/ai/AiError.ts +56 -80
  691. package/src/ai/Decision.ts +257 -6
  692. package/src/ai/DecisionModel.ts +171 -28
  693. package/src/ai/McpClient.ts +488 -91
  694. package/src/ai/McpSchema.ts +119 -0
  695. package/src/ai/McpServer.ts +1525 -319
  696. package/src/ai/McpTest.ts +380 -0
  697. package/src/ai/Prompt.ts +16 -11
  698. package/src/ai/Response.ts +2 -22
  699. package/src/ai/Tool.ts +32 -18
  700. package/src/ai/index.ts +6 -0
  701. package/src/ai/internal/mcpCore.ts +243 -56
  702. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +7 -8
  703. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +7 -8
  704. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +7 -8
  705. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +7 -8
  706. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +56 -17
  707. package/src/ai/internal/mcpProtocol.ts +44 -0
  708. package/src/ai/internal/mcpRuntime.ts +15 -8
  709. package/src/ai/internal/mcpSkills.ts +480 -0
  710. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  711. package/src/cli/Argument.ts +6 -0
  712. package/src/cli/CliOutput.ts +117 -49
  713. package/src/cli/Command.ts +23 -0
  714. package/src/cli/Flag.ts +107 -0
  715. package/src/cli/HelpDoc.ts +18 -1
  716. package/src/cli/Param.ts +6 -0
  717. package/src/cli/Primitive.ts +16 -1
  718. package/src/cli/Prompt.ts +1 -0
  719. package/src/cli/internal/help.ts +21 -9
  720. package/src/cluster/ClusterWorkflowEngine.ts +22 -8
  721. package/src/cluster/Reply.ts +1 -1
  722. package/src/cluster/Sharding.ts +96 -26
  723. package/src/cluster/ShardingConfig.ts +41 -3
  724. package/src/cluster/SingleRunner.ts +3 -3
  725. package/src/cluster/SqlMessageStorage.ts +49 -17
  726. package/src/cluster/SqlRunnerStorage.ts +37 -27
  727. package/src/cluster/internal/entityManager.ts +24 -10
  728. package/src/crypto/Aead.ts +517 -0
  729. package/src/crypto/Cipher.ts +326 -0
  730. package/src/crypto/CryptoError.ts +242 -0
  731. package/src/crypto/Digest.ts +167 -0
  732. package/src/crypto/Kdf.ts +315 -0
  733. package/src/crypto/KeyAgreement.ts +489 -0
  734. package/src/crypto/KeyFormat.ts +741 -0
  735. package/src/crypto/KeyWrap.ts +639 -0
  736. package/src/crypto/Mac.ts +386 -0
  737. package/src/crypto/SecureRandom.ts +459 -0
  738. package/src/crypto/Signature.ts +673 -0
  739. package/src/crypto/WebCrypto.ts +84 -0
  740. package/src/crypto/index.ts +78 -0
  741. package/src/crypto/internal/asymmetric.ts +330 -0
  742. package/src/crypto/internal/chacha.ts +1088 -0
  743. package/src/crypto/internal/der.ts +110 -0
  744. package/src/crypto/internal/digest.ts +16 -0
  745. package/src/crypto/internal/key.ts +242 -0
  746. package/src/crypto/internal/md5.ts +170 -0
  747. package/src/crypto/internal/webCrypto.ts +150 -0
  748. package/src/encoding/Base64Url.ts +32 -5
  749. package/src/encoding/Csv.ts +1298 -0
  750. package/src/encoding/Hex.ts +3 -2
  751. package/src/encoding/Ndjson.ts +6 -5
  752. package/src/encoding/SchemaBinary.ts +40 -4
  753. package/src/encoding/Sse.ts +5 -3
  754. package/src/encoding/Toml.ts +85 -20
  755. package/src/encoding/Yaml.ts +61 -18
  756. package/src/encoding/index.ts +6 -0
  757. package/src/eventlog/EventJournal.ts +4 -3
  758. package/src/eventlog/EventLog.ts +347 -15
  759. package/src/eventlog/EventLogEncryption.ts +118 -110
  760. package/src/eventlog/EventLogMessage.ts +273 -1
  761. package/src/eventlog/EventLogRemote.ts +367 -23
  762. package/src/eventlog/EventLogServer.ts +54 -20
  763. package/src/eventlog/EventLogServerEncrypted.ts +1135 -67
  764. package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
  765. package/src/eventlog/EventLogSessionAuth.ts +82 -70
  766. package/src/eventlog/EventRow.ts +12 -3
  767. package/src/eventlog/SqlEventJournal.ts +2 -2
  768. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  769. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  770. package/src/eventlog/internal/batches.ts +30 -0
  771. package/src/eventlog/internal/compaction.ts +64 -0
  772. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  773. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  774. package/src/graphql/GraphQLClient.ts +3 -1
  775. package/src/graphql/GraphQLClientError.ts +15 -22
  776. package/src/graphql/GraphQLProtocol.ts +12 -3
  777. package/src/http/Cookies.ts +281 -1
  778. package/src/http/FetchHttpClient.ts +88 -16
  779. package/src/http/HttpClient.ts +299 -33
  780. package/src/http/HttpClientRequest.ts +12 -9
  781. package/src/http/HttpClientResponse.ts +3 -2
  782. package/src/http/HttpMethod.ts +10 -2
  783. package/src/http/HttpServerRequest.ts +76 -53
  784. package/src/http/HttpServerResponse.ts +3 -2
  785. package/src/http/HttpTraceContext.ts +7 -4
  786. package/src/http/ProblemDetails.ts +149 -0
  787. package/src/http/index.ts +6 -0
  788. package/src/http/internal/decompression.ts +4 -4
  789. package/src/http/internal/mimeTypes.ts +4 -1
  790. package/src/http/internal/urlParams.ts +8 -0
  791. package/src/http-api/HttpApiBuilder.ts +24 -12
  792. package/src/http-api/HttpApiClient.ts +67 -1
  793. package/src/http-api/HttpApiEndpoint.ts +14 -5
  794. package/src/http-api/HttpApiError.ts +250 -0
  795. package/src/http-api/HttpApiMiddleware.ts +95 -1
  796. package/src/http-api/HttpApiSchema.ts +106 -15
  797. package/src/index.ts +6 -6
  798. package/src/internal/dateTime.ts +54 -24
  799. package/src/internal/effect.ts +40 -18
  800. package/src/internal/glob.ts +952 -0
  801. package/src/internal/graphql.ts +27 -9
  802. package/src/internal/graphqlHeaders.ts +13 -0
  803. package/src/internal/matcher.ts +17 -0
  804. package/src/internal/persistence.ts +11 -0
  805. package/src/internal/rcRef.ts +4 -1
  806. package/src/internal/request.ts +51 -58
  807. package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
  808. package/src/internal/schema/toCodeDocument.ts +7 -3
  809. package/src/internal/trie.ts +43 -14
  810. package/src/internal/ulid.ts +44 -0
  811. package/src/internal/uuid.ts +57 -16
  812. package/src/internal/version.ts +1 -1
  813. package/src/jose/JoseError.ts +329 -0
  814. package/src/jose/Jwe.ts +196 -0
  815. package/src/jose/Jwk.ts +777 -0
  816. package/src/jose/Jwks.ts +418 -0
  817. package/src/jose/Jws.ts +312 -0
  818. package/src/jose/Jwt.ts +493 -0
  819. package/src/jose/index.ts +58 -0
  820. package/src/jose/internal/compact.ts +195 -0
  821. package/src/net/Host.ts +5 -10
  822. package/src/observability/Otlp.ts +21 -4
  823. package/src/observability/OtlpResource.ts +9 -1
  824. package/src/observability/OtlpSerialization.ts +13 -5
  825. package/src/observability/internal/otlpProtobuf.ts +6 -6
  826. package/src/observability/internal/protobuf.ts +10 -0
  827. package/src/persistence/CircuitBreaker.ts +113 -48
  828. package/src/persistence/KeyValueStore.ts +219 -22
  829. package/src/persistence/PersistedQueue.ts +128 -59
  830. package/src/persistence/Persistence.ts +20 -13
  831. package/src/persistence/RateLimiter.ts +84 -15
  832. package/src/persistence/index.ts +1 -1
  833. package/src/process/ChildProcess.ts +255 -260
  834. package/src/process/ChildProcessSpawner.ts +5 -0
  835. package/src/process/CommandLine.ts +630 -0
  836. package/src/process/index.ts +6 -0
  837. package/src/reactivity/Atom.ts +5 -5
  838. package/src/reactivity/AtomRegistry.ts +20 -9
  839. package/src/rpc/Rpc.ts +3 -1
  840. package/src/rpc/RpcClient.ts +94 -38
  841. package/src/rpc/RpcMessage.ts +13 -3
  842. package/src/rpc/RpcSerialization.ts +3 -0
  843. package/src/rpc/RpcServer.ts +176 -78
  844. package/src/schema/Model.ts +26 -3
  845. package/src/sql/Migrator.ts +38 -80
  846. package/src/sql/MigratorFileSystem.ts +71 -0
  847. package/src/sql/SqlClient.ts +45 -24
  848. package/src/sql/Statement.ts +60 -29
  849. package/src/sql/index.ts +1 -1
  850. package/src/testing/index.ts +0 -6
  851. package/src/workflow/Workflow.ts +4 -0
  852. package/src/workflow/WorkflowEngine.ts +5 -0
  853. package/src/workflow/internal/crypto.ts +15 -11
  854. package/dist/Crypto.d.ts +0 -244
  855. package/dist/Crypto.d.ts.map +0 -1
  856. package/dist/Crypto.js +0 -139
  857. package/dist/Crypto.js.map +0 -1
  858. package/dist/testing/TestCrypto.d.ts +0 -73
  859. package/dist/testing/TestCrypto.d.ts.map +0 -1
  860. package/dist/testing/TestCrypto.js +0 -87
  861. package/dist/testing/TestCrypto.js.map +0 -1
  862. package/src/Crypto.ts +0 -347
  863. package/src/testing/TestCrypto.ts +0 -94
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Authenticated encryption: AES-GCM, ChaCha20-Poly1305, and
3
+ * XChaCha20-Poly1305.
4
+ *
5
+ * The {@link Aead} service generates keys, encrypts, and decrypts. The
6
+ * top-level {@link key}, {@link fromCryptoKey}, and {@link toBytes} functions
7
+ * build and export keys without a service.
8
+ *
9
+ * Ciphertext is `ciphertext‖tag` with a 16-byte tag for every algorithm, the
10
+ * layout WebCrypto produces. A tampered ciphertext, tag, or additional data
11
+ * fails decryption with a `DecryptionFailed` reason that carries no detail.
12
+ *
13
+ * AES-GCM runs on `crypto.subtle`. ChaCha20-Poly1305 and XChaCha20-Poly1305
14
+ * run a pure TypeScript implementation vendored from `@noble/ciphers` 2.4.0,
15
+ * because WebCrypto does not provide them everywhere. Cure53 audited
16
+ * `@noble/ciphers` 1.0.0 in 2024.
17
+ *
18
+ * Keys are opaque. They hold either key bytes or, for AES-GCM, a `CryptoKey`,
19
+ * display only their algorithm, and compare by reference.
20
+ *
21
+ * **Gotchas**
22
+ *
23
+ * Never reuse a nonce with the same key. Random 12-byte nonces risk a
24
+ * collision after about 2^32 messages under one key: use a counter, or
25
+ * XChaCha20-Poly1305, whose 24-byte nonces can be random.
26
+ *
27
+ * @stability unstable
28
+ * @since 4.0.0
29
+ */
30
+ import * as Context from "../Context.ts";
31
+ import * as Effect from "../Effect.ts";
32
+ import type { Inspectable } from "../Inspectable.ts";
33
+ import * as Layer from "../Layer.ts";
34
+ import * as CryptoError from "./CryptoError.ts";
35
+ import * as SecureRandom from "./SecureRandom.ts";
36
+ import * as WebCrypto from "./WebCrypto.ts";
37
+ declare const TypeId: "~effect/crypto/Aead/Key";
38
+ /**
39
+ * The synchronous code of an algorithm: the pure TypeScript code of one that
40
+ * WebCrypto does not provide, or a native implementation passed to
41
+ * {@link layerWebCryptoWith}.
42
+ *
43
+ * **Details**
44
+ *
45
+ * `encrypt` returns `ciphertext‖tag`. `decrypt` takes `ciphertext‖tag` and
46
+ * returns `undefined` when the tag does not match. Both receive arguments the
47
+ * layer has already checked.
48
+ *
49
+ * @stability unstable
50
+ * @category models
51
+ * @since 4.0.0
52
+ */
53
+ export interface Implementation {
54
+ readonly encrypt: (key: Uint8Array, nonce: Uint8Array, plaintext: Uint8Array, aad: Uint8Array) => Uint8Array;
55
+ readonly decrypt: (key: Uint8Array, nonce: Uint8Array, ciphertext: Uint8Array, aad: Uint8Array) => Uint8Array | undefined;
56
+ }
57
+ /**
58
+ * An authenticated encryption algorithm, such as {@link aes256Gcm}.
59
+ *
60
+ * **Details**
61
+ *
62
+ * `keyLength` and `nonceLength` are in bytes. `implementation` is the pure
63
+ * TypeScript code for algorithms that WebCrypto does not provide, which a
64
+ * layer calls when it has no native mapping for `name`.
65
+ *
66
+ * @stability unstable
67
+ * @category models
68
+ * @since 4.0.0
69
+ */
70
+ export interface Algorithm {
71
+ readonly name: "aes128Gcm" | "aes256Gcm" | "chacha20Poly1305" | "xchacha20Poly1305";
72
+ readonly keyLength: 16 | 32;
73
+ readonly nonceLength: 12 | 24;
74
+ readonly implementation: Implementation | undefined;
75
+ }
76
+ /**
77
+ * AES-GCM, from {@link aes128Gcm} or {@link aes256Gcm}: the algorithms that
78
+ * run on `crypto.subtle`, and the only ones {@link fromCryptoKey} accepts.
79
+ *
80
+ * @stability unstable
81
+ * @category models
82
+ * @since 4.0.0
83
+ */
84
+ export interface AesGcm extends Algorithm {
85
+ readonly name: "aes128Gcm" | "aes256Gcm";
86
+ readonly nonceLength: 12;
87
+ readonly implementation: undefined;
88
+ }
89
+ /**
90
+ * AES-128-GCM, with a 16-byte key and a 12-byte nonce.
91
+ *
92
+ * @stability unstable
93
+ * @category algorithms
94
+ * @since 4.0.0
95
+ */
96
+ export declare const aes128Gcm: AesGcm;
97
+ /**
98
+ * AES-256-GCM, with a 32-byte key and a 12-byte nonce.
99
+ *
100
+ * @stability unstable
101
+ * @category algorithms
102
+ * @since 4.0.0
103
+ */
104
+ export declare const aes256Gcm: AesGcm;
105
+ /**
106
+ * ChaCha20-Poly1305 (RFC 8439), with a 32-byte key and a 12-byte nonce.
107
+ *
108
+ * **Details**
109
+ *
110
+ * Runs the pure TypeScript implementation under `layerWebCrypto`, even where
111
+ * `crypto.subtle` provides it, so every runtime takes one code path.
112
+ *
113
+ * @stability unstable
114
+ * @category algorithms
115
+ * @since 4.0.0
116
+ */
117
+ export declare const chacha20Poly1305: Algorithm;
118
+ /**
119
+ * XChaCha20-Poly1305 (draft-irtf-cfrg-xchacha-03), with a 32-byte key and a
120
+ * 24-byte nonce.
121
+ *
122
+ * **When to use**
123
+ *
124
+ * Use when nonces are generated randomly, since 24-byte nonces make
125
+ * collisions negligible. The output is compatible with libsodium's
126
+ * `crypto_aead_xchacha20poly1305_ietf`.
127
+ *
128
+ * @stability unstable
129
+ * @category algorithms
130
+ * @since 4.0.0
131
+ */
132
+ export declare const xchacha20Poly1305: Algorithm;
133
+ /**
134
+ * An opaque authenticated encryption key for the algorithm `A`.
135
+ *
136
+ * **Details**
137
+ *
138
+ * The key holds either key bytes or a `CryptoKey` from {@link fromCryptoKey}.
139
+ * `toString`, `toJSON`, and `inspect` show only the algorithm. Keys compare
140
+ * by reference and do not implement `Equal`, because comparing key bytes is
141
+ * not constant time.
142
+ *
143
+ * @stability unstable
144
+ * @category models
145
+ * @since 4.0.0
146
+ */
147
+ export interface Key<out A extends Algorithm = Algorithm> extends Inspectable {
148
+ readonly [TypeId]: typeof TypeId;
149
+ readonly algorithm: A;
150
+ }
151
+ /**
152
+ * Checks whether a value is a {@link Key}.
153
+ *
154
+ * @stability unstable
155
+ * @category guards
156
+ * @since 4.0.0
157
+ */
158
+ export declare const isKey: (u: unknown) => u is Key;
159
+ declare const Aead_base: Context.ServiceClass<Aead, "effect/crypto/Aead", {
160
+ /**
161
+ * Generates a random key of the algorithm's length from `SecureRandom`
162
+ * bytes.
163
+ */
164
+ readonly generateKey: <A extends Algorithm>(algorithm: A) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
165
+ /**
166
+ * Encrypts `plaintext` and appends the 16-byte tag.
167
+ *
168
+ * `nonce` must have the algorithm's nonce length. `aad` is authenticated
169
+ * without being encrypted and defaults to empty.
170
+ */
171
+ readonly encrypt: (key: Key, plaintext: Uint8Array, options: {
172
+ readonly nonce: Uint8Array;
173
+ readonly aad?: Uint8Array | undefined;
174
+ }) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
175
+ /**
176
+ * Checks the tag at the end of `ciphertext` and decrypts the rest, failing
177
+ * with a `DecryptionFailed` reason when the tag does not match.
178
+ *
179
+ * `nonce` and `aad` must be the ones used to encrypt.
180
+ */
181
+ readonly decrypt: (key: Key, ciphertext: Uint8Array, options: {
182
+ readonly nonce: Uint8Array;
183
+ readonly aad?: Uint8Array | undefined;
184
+ }) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
185
+ }>;
186
+ /**
187
+ * Service that generates keys, encrypts, and decrypts with authentication.
188
+ *
189
+ * **Example** (Encrypting with XChaCha20-Poly1305)
190
+ *
191
+ * ```ts import.meta.vitest
192
+ * import { Effect, Layer } from "effect"
193
+ * import { Aead, SecureRandom } from "effect/crypto"
194
+ *
195
+ * const program = Effect.gen(function*() {
196
+ * const aead = yield* Aead.Aead
197
+ * const random = yield* SecureRandom.SecureRandom
198
+ * const key = yield* aead.generateKey(Aead.xchacha20Poly1305)
199
+ * const nonce = yield* random.randomBytes(24)
200
+ * const sealed = yield* aead.encrypt(key, new TextEncoder().encode("secret"), { nonce })
201
+ * const opened = yield* aead.decrypt(key, sealed, { nonce })
202
+ * return [sealed.length, new TextDecoder().decode(opened)]
203
+ * })
204
+ *
205
+ * const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
206
+ * await Effect.runPromise(program.pipe(Effect.provide(layer))) // => [22, "secret"]
207
+ * ```
208
+ *
209
+ * @stability unstable
210
+ * @category services
211
+ * @since 4.0.0
212
+ */
213
+ export declare class Aead extends Aead_base {
214
+ }
215
+ /**
216
+ * Builds an `Aead` layer on the `WebCrypto` reference that runs the given
217
+ * implementations for byte-backed keys.
218
+ *
219
+ * **When to use**
220
+ *
221
+ * Use to run an algorithm on a runtime's native code, as `NodeCrypto.layerAead`
222
+ * does for ChaCha20-Poly1305 with `node:crypto`.
223
+ *
224
+ * **Details**
225
+ *
226
+ * `implementations` maps algorithm names to implementations that replace
227
+ * `crypto.subtle` or the algorithm's pure TypeScript code. They follow the
228
+ * {@link Implementation} contract and run only for byte-backed keys, after the
229
+ * layer has checked the nonce, plaintext, and ciphertext lengths, so errors are
230
+ * those of {@link layerWebCrypto}. `CryptoKey`-backed keys run on
231
+ * `crypto.subtle`, and generated keys come from `SecureRandom`. Without
232
+ * `implementations`, the layer is {@link layerWebCrypto}.
233
+ *
234
+ * **Gotchas**
235
+ *
236
+ * An implementation receives the key's own bytes, not a copy, so it must not
237
+ * modify or keep them.
238
+ *
239
+ * **Example** (Running ChaCha20-Poly1305 natively)
240
+ *
241
+ * ```ts
242
+ * import { Layer } from "effect"
243
+ * import { Aead, SecureRandom } from "effect/crypto"
244
+ *
245
+ * declare const nativeChacha: Aead.Implementation
246
+ *
247
+ * const layer = Aead.layerWebCryptoWith({
248
+ * implementations: { chacha20Poly1305: nativeChacha }
249
+ * }).pipe(Layer.provide(SecureRandom.layerWebCrypto))
250
+ * ```
251
+ *
252
+ * @stability unstable
253
+ * @category layers
254
+ * @since 4.0.0
255
+ */
256
+ export declare const layerWebCryptoWith: (options: {
257
+ readonly implementations?: Partial<Record<Algorithm["name"], Implementation>> | undefined;
258
+ }) => Layer.Layer<Aead, never, SecureRandom.SecureRandom>;
259
+ /**
260
+ * Layer that provides `Aead` on the `WebCrypto` reference.
261
+ *
262
+ * **Details**
263
+ *
264
+ * AES-GCM runs on `crypto.subtle`. The layer imports a byte-backed key on
265
+ * first use and caches the `CryptoKey`. ChaCha20-Poly1305 and
266
+ * XChaCha20-Poly1305 always run the pure TypeScript implementation, with no
267
+ * feature detection. Generated keys come from `SecureRandom`, so a seeded
268
+ * `SecureRandom` gives reproducible keys.
269
+ *
270
+ * @stability unstable
271
+ * @category layers
272
+ * @since 4.0.0
273
+ */
274
+ export declare const layerWebCrypto: Layer.Layer<Aead, never, SecureRandom.SecureRandom>;
275
+ /**
276
+ * Builds a key from raw key bytes.
277
+ *
278
+ * **Details**
279
+ *
280
+ * Copies the bytes, including Node.js `Buffer` inputs. A length other than
281
+ * the algorithm's key length fails with an `InvalidKey` reason. AES-192 is
282
+ * not supported.
283
+ *
284
+ * @stability unstable
285
+ * @category constructors
286
+ * @since 4.0.0
287
+ */
288
+ export declare const key: <A extends Algorithm>(algorithm: A, bytes: Uint8Array) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
289
+ /**
290
+ * Builds an AES-GCM key from an existing `CryptoKey`, such as a
291
+ * non-extractable one.
292
+ *
293
+ * **Details**
294
+ *
295
+ * The `CryptoKey` must be a secret AES-GCM key of the algorithm's length with
296
+ * both the `encrypt` and `decrypt` usages, since a key reaches both
297
+ * operations. Otherwise the constructor fails with an `InvalidKey` reason. It
298
+ * must come from the `Crypto` object of the `WebCrypto` reference.
299
+ *
300
+ * ChaCha20-Poly1305 and XChaCha20-Poly1305 never run on `crypto.subtle`, so
301
+ * passing them is a type error.
302
+ *
303
+ * @stability unstable
304
+ * @category constructors
305
+ * @since 4.0.0
306
+ */
307
+ export declare const fromCryptoKey: <A extends AesGcm>(algorithm: A, cryptoKey: WebCrypto.CryptoKey) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
308
+ /**
309
+ * Exports a key's bytes.
310
+ *
311
+ * **Details**
312
+ *
313
+ * Returns a fresh `Uint8Array` that shares no memory with the key. A
314
+ * `CryptoKey`-backed key is exported on the `WebCrypto` reference, and fails
315
+ * with a `NotExtractable` reason when the `CryptoKey` is not extractable.
316
+ *
317
+ * @stability unstable
318
+ * @category converting
319
+ * @since 4.0.0
320
+ */
321
+ export declare const toBytes: (key: Key) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
322
+ export {};
323
+ //# sourceMappingURL=Aead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aead.d.ts","sourceRoot":"","sources":["../../src/crypto/Aead.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Authenticated encryption: AES-GCM, ChaCha20-Poly1305, and
3
+ * XChaCha20-Poly1305.
4
+ *
5
+ * The {@link Aead} service generates keys, encrypts, and decrypts. The
6
+ * top-level {@link key}, {@link fromCryptoKey}, and {@link toBytes} functions
7
+ * build and export keys without a service.
8
+ *
9
+ * Ciphertext is `ciphertext‖tag` with a 16-byte tag for every algorithm, the
10
+ * layout WebCrypto produces. A tampered ciphertext, tag, or additional data
11
+ * fails decryption with a `DecryptionFailed` reason that carries no detail.
12
+ *
13
+ * AES-GCM runs on `crypto.subtle`. ChaCha20-Poly1305 and XChaCha20-Poly1305
14
+ * run a pure TypeScript implementation vendored from `@noble/ciphers` 2.4.0,
15
+ * because WebCrypto does not provide them everywhere. Cure53 audited
16
+ * `@noble/ciphers` 1.0.0 in 2024.
17
+ *
18
+ * Keys are opaque. They hold either key bytes or, for AES-GCM, a `CryptoKey`,
19
+ * display only their algorithm, and compare by reference.
20
+ *
21
+ * **Gotchas**
22
+ *
23
+ * Never reuse a nonce with the same key. Random 12-byte nonces risk a
24
+ * collision after about 2^32 messages under one key: use a counter, or
25
+ * XChaCha20-Poly1305, whose 24-byte nonces can be random.
26
+ *
27
+ * @stability unstable
28
+ * @since 4.0.0
29
+ */
30
+ import * as Context from "../Context.js";
31
+ import * as Effect from "../Effect.js";
32
+ import * as Layer from "../Layer.js";
33
+ import * as Predicate from "../Predicate.js";
34
+ import * as CryptoError from "./CryptoError.js";
35
+ import * as Chacha from "./internal/chacha.js";
36
+ import * as KeyModel from "./internal/key.js";
37
+ import * as internal from "./internal/webCrypto.js";
38
+ import * as SecureRandom from "./SecureRandom.js";
39
+ import * as WebCrypto from "./WebCrypto.js";
40
+ const TypeId = "~effect/crypto/Aead/Key";
41
+ /**
42
+ * AES-128-GCM, with a 16-byte key and a 12-byte nonce.
43
+ *
44
+ * @stability unstable
45
+ * @category algorithms
46
+ * @since 4.0.0
47
+ */
48
+ export const aes128Gcm = {
49
+ name: "aes128Gcm",
50
+ keyLength: 16,
51
+ nonceLength: 12,
52
+ implementation: undefined
53
+ };
54
+ /**
55
+ * AES-256-GCM, with a 32-byte key and a 12-byte nonce.
56
+ *
57
+ * @stability unstable
58
+ * @category algorithms
59
+ * @since 4.0.0
60
+ */
61
+ export const aes256Gcm = {
62
+ name: "aes256Gcm",
63
+ keyLength: 32,
64
+ nonceLength: 12,
65
+ implementation: undefined
66
+ };
67
+ const chachaImplementation = aead => ({
68
+ encrypt: (key, nonce, plaintext, aad) => aead(key, nonce, aad).encrypt(plaintext),
69
+ decrypt: (key, nonce, ciphertext, aad) => aead(key, nonce, aad).decrypt(ciphertext)
70
+ });
71
+ /**
72
+ * ChaCha20-Poly1305 (RFC 8439), with a 32-byte key and a 12-byte nonce.
73
+ *
74
+ * **Details**
75
+ *
76
+ * Runs the pure TypeScript implementation under `layerWebCrypto`, even where
77
+ * `crypto.subtle` provides it, so every runtime takes one code path.
78
+ *
79
+ * @stability unstable
80
+ * @category algorithms
81
+ * @since 4.0.0
82
+ */
83
+ export const chacha20Poly1305 = {
84
+ name: "chacha20Poly1305",
85
+ keyLength: 32,
86
+ nonceLength: 12,
87
+ implementation: /* @__PURE__ */chachaImplementation(Chacha.chacha20Poly1305)
88
+ };
89
+ /**
90
+ * XChaCha20-Poly1305 (draft-irtf-cfrg-xchacha-03), with a 32-byte key and a
91
+ * 24-byte nonce.
92
+ *
93
+ * **When to use**
94
+ *
95
+ * Use when nonces are generated randomly, since 24-byte nonces make
96
+ * collisions negligible. The output is compatible with libsodium's
97
+ * `crypto_aead_xchacha20poly1305_ietf`.
98
+ *
99
+ * @stability unstable
100
+ * @category algorithms
101
+ * @since 4.0.0
102
+ */
103
+ export const xchacha20Poly1305 = {
104
+ name: "xchacha20Poly1305",
105
+ keyLength: 32,
106
+ nonceLength: 24,
107
+ implementation: /* @__PURE__ */chachaImplementation(Chacha.xchacha20Poly1305)
108
+ };
109
+ const KeyProto = /*#__PURE__*/KeyModel.redactedProto(TypeId, "Aead.Key");
110
+ /**
111
+ * Checks whether a value is a {@link Key}.
112
+ *
113
+ * @stability unstable
114
+ * @category guards
115
+ * @since 4.0.0
116
+ */
117
+ export const isKey = u => Predicate.hasProperty(u, TypeId);
118
+ /**
119
+ * Service that generates keys, encrypts, and decrypts with authentication.
120
+ *
121
+ * **Example** (Encrypting with XChaCha20-Poly1305)
122
+ *
123
+ * ```ts import.meta.vitest
124
+ * import { Effect, Layer } from "effect"
125
+ * import { Aead, SecureRandom } from "effect/crypto"
126
+ *
127
+ * const program = Effect.gen(function*() {
128
+ * const aead = yield* Aead.Aead
129
+ * const random = yield* SecureRandom.SecureRandom
130
+ * const key = yield* aead.generateKey(Aead.xchacha20Poly1305)
131
+ * const nonce = yield* random.randomBytes(24)
132
+ * const sealed = yield* aead.encrypt(key, new TextEncoder().encode("secret"), { nonce })
133
+ * const opened = yield* aead.decrypt(key, sealed, { nonce })
134
+ * return [sealed.length, new TextDecoder().decode(opened)]
135
+ * })
136
+ *
137
+ * const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
138
+ * await Effect.runPromise(program.pipe(Effect.provide(layer))) // => [22, "secret"]
139
+ * ```
140
+ *
141
+ * @stability unstable
142
+ * @category services
143
+ * @since 4.0.0
144
+ */
145
+ export class Aead extends /*#__PURE__*/Context.Service()("effect/crypto/Aead") {}
146
+ const fail = (method, reason) => internal.fail("Aead", method, reason);
147
+ const decryptionFailed = () => fail("decrypt", new CryptoError.DecryptionFailed());
148
+ // GCM limits the plaintext to 2^39 - 256 bits.
149
+ const maxGcmPlaintext = 2 ** 36 - 32;
150
+ const tagLength = 16;
151
+ // Every check runs before any work, so the pure TypeScript code only throws on
152
+ // a bug, and WebCrypto's `OperationError` only means a failed tag check.
153
+ const checkArguments = (method, key, data, options) => {
154
+ const algorithm = key.algorithm;
155
+ if (options.nonce.length !== algorithm.nonceLength) {
156
+ return fail(method, new CryptoError.InvalidArgument({
157
+ description: `${algorithm.name} nonces must contain exactly ${algorithm.nonceLength} bytes`
158
+ }));
159
+ }
160
+ if (method === "encrypt") {
161
+ if (algorithm.implementation === undefined && data.length > maxGcmPlaintext) {
162
+ return fail(method, new CryptoError.InvalidArgument({
163
+ description: "AES-GCM plaintext cannot exceed 2^36 - 32 bytes"
164
+ }));
165
+ }
166
+ } else if (data.length < tagLength) {
167
+ return decryptionFailed();
168
+ }
169
+ return undefined;
170
+ };
171
+ const runImplementation = (method, implementation, key, data, options) => {
172
+ const stored = KeyModel.material(key);
173
+ if (stored._tag !== "Bytes") {
174
+ return fail(method, new CryptoError.InvalidKey({
175
+ description: `${key.algorithm.name} keys must hold bytes`
176
+ }));
177
+ }
178
+ const aad = options.aad ?? new Uint8Array(0);
179
+ if (method === "encrypt") {
180
+ return Effect.sync(() => implementation.encrypt(stored.bytes, options.nonce, data, aad));
181
+ }
182
+ return Effect.suspend(() => {
183
+ const plaintext = implementation.decrypt(stored.bytes, options.nonce, data, aad);
184
+ return plaintext === undefined ? decryptionFailed() : Effect.succeed(plaintext);
185
+ });
186
+ };
187
+ /**
188
+ * Builds an `Aead` layer on the `WebCrypto` reference that runs the given
189
+ * implementations for byte-backed keys.
190
+ *
191
+ * **When to use**
192
+ *
193
+ * Use to run an algorithm on a runtime's native code, as `NodeCrypto.layerAead`
194
+ * does for ChaCha20-Poly1305 with `node:crypto`.
195
+ *
196
+ * **Details**
197
+ *
198
+ * `implementations` maps algorithm names to implementations that replace
199
+ * `crypto.subtle` or the algorithm's pure TypeScript code. They follow the
200
+ * {@link Implementation} contract and run only for byte-backed keys, after the
201
+ * layer has checked the nonce, plaintext, and ciphertext lengths, so errors are
202
+ * those of {@link layerWebCrypto}. `CryptoKey`-backed keys run on
203
+ * `crypto.subtle`, and generated keys come from `SecureRandom`. Without
204
+ * `implementations`, the layer is {@link layerWebCrypto}.
205
+ *
206
+ * **Gotchas**
207
+ *
208
+ * An implementation receives the key's own bytes, not a copy, so it must not
209
+ * modify or keep them.
210
+ *
211
+ * **Example** (Running ChaCha20-Poly1305 natively)
212
+ *
213
+ * ```ts
214
+ * import { Layer } from "effect"
215
+ * import { Aead, SecureRandom } from "effect/crypto"
216
+ *
217
+ * declare const nativeChacha: Aead.Implementation
218
+ *
219
+ * const layer = Aead.layerWebCryptoWith({
220
+ * implementations: { chacha20Poly1305: nativeChacha }
221
+ * }).pipe(Layer.provide(SecureRandom.layerWebCrypto))
222
+ * ```
223
+ *
224
+ * @stability unstable
225
+ * @category layers
226
+ * @since 4.0.0
227
+ */
228
+ export const layerWebCryptoWith = options => Layer.effect(Aead, Effect.gen(function* () {
229
+ const random = yield* SecureRandom.SecureRandom;
230
+ const crypto = yield* WebCrypto.WebCrypto;
231
+ const cryptoKeyFor = KeyModel.makeCache((subtle, bytes) => subtle.importKey("raw", bytes, "AES-GCM", false, ["encrypt", "decrypt"]));
232
+ const implementations = options.implementations;
233
+ // A supplied implementation runs only for byte-backed keys, so CryptoKeys
234
+ // stay on `crypto.subtle`.
235
+ const implementationFor = key => {
236
+ const supplied = implementations?.[key.algorithm.name];
237
+ return supplied !== undefined && KeyModel.material(key)._tag === "Bytes" ? supplied : key.algorithm.implementation;
238
+ };
239
+ const gcm = (method, key, data, options) => {
240
+ const params = {
241
+ name: "AES-GCM",
242
+ iv: options.nonce,
243
+ tagLength: 128,
244
+ ...(options.aad === undefined ? {} : {
245
+ additionalData: options.aad
246
+ })
247
+ };
248
+ return internal.run("Aead", method, key.algorithm.name, crypto, async subtle => new Uint8Array(await subtle[method](params, await cryptoKeyFor(subtle, key), data)), cause => internal.webCryptoError("Aead", method, key.algorithm.name, cause, method === "decrypt" ? () => new CryptoError.DecryptionFailed() : undefined));
249
+ };
250
+ const run = method => (key, data, options) => Effect.suspend(() => {
251
+ const failure = checkArguments(method, key, data, options);
252
+ if (failure !== undefined) return failure;
253
+ const implementation = implementationFor(key);
254
+ return implementation === undefined ? gcm(method, key, data, options) : runImplementation(method, implementation, key, data, options);
255
+ });
256
+ return Aead.of({
257
+ generateKey: algorithm => Effect.map(random.randomBytes(algorithm.keyLength), bytes => KeyModel.makeBytes(KeyProto, algorithm, bytes)),
258
+ encrypt: run("encrypt"),
259
+ decrypt: run("decrypt")
260
+ });
261
+ }));
262
+ /**
263
+ * Layer that provides `Aead` on the `WebCrypto` reference.
264
+ *
265
+ * **Details**
266
+ *
267
+ * AES-GCM runs on `crypto.subtle`. The layer imports a byte-backed key on
268
+ * first use and caches the `CryptoKey`. ChaCha20-Poly1305 and
269
+ * XChaCha20-Poly1305 always run the pure TypeScript implementation, with no
270
+ * feature detection. Generated keys come from `SecureRandom`, so a seeded
271
+ * `SecureRandom` gives reproducible keys.
272
+ *
273
+ * @stability unstable
274
+ * @category layers
275
+ * @since 4.0.0
276
+ */
277
+ export const layerWebCrypto = /*#__PURE__*/layerWebCryptoWith({});
278
+ /**
279
+ * Builds a key from raw key bytes.
280
+ *
281
+ * **Details**
282
+ *
283
+ * Copies the bytes, including Node.js `Buffer` inputs. A length other than
284
+ * the algorithm's key length fails with an `InvalidKey` reason. AES-192 is
285
+ * not supported.
286
+ *
287
+ * @stability unstable
288
+ * @category constructors
289
+ * @since 4.0.0
290
+ */
291
+ export const key = (algorithm, bytes) => KeyModel.fromBytes("Aead", "key", KeyProto, algorithm, bytes, KeyModel.checkKeyLength(algorithm));
292
+ /**
293
+ * Builds an AES-GCM key from an existing `CryptoKey`, such as a
294
+ * non-extractable one.
295
+ *
296
+ * **Details**
297
+ *
298
+ * The `CryptoKey` must be a secret AES-GCM key of the algorithm's length with
299
+ * both the `encrypt` and `decrypt` usages, since a key reaches both
300
+ * operations. Otherwise the constructor fails with an `InvalidKey` reason. It
301
+ * must come from the `Crypto` object of the `WebCrypto` reference.
302
+ *
303
+ * ChaCha20-Poly1305 and XChaCha20-Poly1305 never run on `crypto.subtle`, so
304
+ * passing them is a type error.
305
+ *
306
+ * @stability unstable
307
+ * @category constructors
308
+ * @since 4.0.0
309
+ */
310
+ export const fromCryptoKey = (algorithm, cryptoKey) => algorithm.implementation !== undefined ? internal.invalidKey("Aead", "fromCryptoKey", `${algorithm.name} keys cannot be CryptoKeys`) : KeyModel.fromCryptoKey("Aead", "fromCryptoKey", KeyProto, algorithm, cryptoKey, {
311
+ type: "secret",
312
+ name: "AES-GCM",
313
+ usages: ["encrypt", "decrypt"],
314
+ usagePolicy: "all",
315
+ check: KeyModel.checkAesLength("AES-GCM", algorithm.keyLength)
316
+ });
317
+ /**
318
+ * Exports a key's bytes.
319
+ *
320
+ * **Details**
321
+ *
322
+ * Returns a fresh `Uint8Array` that shares no memory with the key. A
323
+ * `CryptoKey`-backed key is exported on the `WebCrypto` reference, and fails
324
+ * with a `NotExtractable` reason when the `CryptoKey` is not extractable.
325
+ *
326
+ * @stability unstable
327
+ * @category converting
328
+ * @since 4.0.0
329
+ */
330
+ export const toBytes = key => KeyModel.toBytes("Aead", key, KeyModel.exportRaw);
331
+ //# sourceMappingURL=Aead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aead.js","names":[],"sources":["../../src/crypto/Aead.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}