effect 4.0.7 → 4.1.0

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 (679) hide show
  1. package/README.md +1 -1
  2. package/dist/BigDecimal.d.ts.map +1 -1
  3. package/dist/BigDecimal.js +3 -0
  4. package/dist/BigDecimal.js.map +1 -1
  5. package/dist/Channel.d.ts +12 -6
  6. package/dist/Channel.d.ts.map +1 -1
  7. package/dist/Channel.js +9 -3
  8. package/dist/Channel.js.map +1 -1
  9. package/dist/Config.d.ts +7 -1
  10. package/dist/Config.d.ts.map +1 -1
  11. package/dist/Config.js.map +1 -1
  12. package/dist/Context.d.ts +18 -1
  13. package/dist/Context.d.ts.map +1 -1
  14. package/dist/Context.js +27 -8
  15. package/dist/Context.js.map +1 -1
  16. package/dist/Cron.d.ts +81 -11
  17. package/dist/Cron.d.ts.map +1 -1
  18. package/dist/Cron.js +101 -26
  19. package/dist/Cron.js.map +1 -1
  20. package/dist/Duration.d.ts +78 -0
  21. package/dist/Duration.d.ts.map +1 -1
  22. package/dist/Duration.js +123 -0
  23. package/dist/Duration.js.map +1 -1
  24. package/dist/Effect.d.ts +164 -7
  25. package/dist/Effect.d.ts.map +1 -1
  26. package/dist/Effect.js +11 -1
  27. package/dist/Effect.js.map +1 -1
  28. package/dist/FileSystem.d.ts +59 -4
  29. package/dist/FileSystem.d.ts.map +1 -1
  30. package/dist/FileSystem.js +9 -2
  31. package/dist/FileSystem.js.map +1 -1
  32. package/dist/Glob.d.ts +165 -0
  33. package/dist/Glob.d.ts.map +1 -0
  34. package/dist/Glob.js +127 -0
  35. package/dist/Glob.js.map +1 -0
  36. package/dist/Match.d.ts +86 -0
  37. package/dist/Match.d.ts.map +1 -1
  38. package/dist/Match.js +72 -0
  39. package/dist/Match.js.map +1 -1
  40. package/dist/Pool.d.ts +51 -0
  41. package/dist/Pool.d.ts.map +1 -1
  42. package/dist/Pool.js +59 -9
  43. package/dist/Pool.js.map +1 -1
  44. package/dist/Random.d.ts.map +1 -1
  45. package/dist/Random.js +3 -3
  46. package/dist/Random.js.map +1 -1
  47. package/dist/RcMap.d.ts.map +1 -1
  48. package/dist/RcMap.js +8 -2
  49. package/dist/RcMap.js.map +1 -1
  50. package/dist/Schedule.d.ts +18 -1
  51. package/dist/Schedule.d.ts.map +1 -1
  52. package/dist/Schedule.js +7 -2
  53. package/dist/Schedule.js.map +1 -1
  54. package/dist/Schema.d.ts +666 -41
  55. package/dist/Schema.d.ts.map +1 -1
  56. package/dist/Schema.js +650 -0
  57. package/dist/Schema.js.map +1 -1
  58. package/dist/SchemaGetter.d.ts +6 -1
  59. package/dist/SchemaGetter.d.ts.map +1 -1
  60. package/dist/SchemaGetter.js +22 -11
  61. package/dist/SchemaGetter.js.map +1 -1
  62. package/dist/SchemaRepresentation.d.ts +14 -0
  63. package/dist/SchemaRepresentation.d.ts.map +1 -1
  64. package/dist/SchemaRepresentation.js +16 -0
  65. package/dist/SchemaRepresentation.js.map +1 -1
  66. package/dist/SchemaTransformation.d.ts +8 -3
  67. package/dist/SchemaTransformation.d.ts.map +1 -1
  68. package/dist/SchemaTransformation.js +6 -3
  69. package/dist/SchemaTransformation.js.map +1 -1
  70. package/dist/ScopedCache.d.ts.map +1 -1
  71. package/dist/ScopedCache.js +5 -7
  72. package/dist/ScopedCache.js.map +1 -1
  73. package/dist/Semaphore.d.ts +130 -0
  74. package/dist/Semaphore.d.ts.map +1 -1
  75. package/dist/Semaphore.js +40 -0
  76. package/dist/Semaphore.js.map +1 -1
  77. package/dist/Stream.d.ts +13 -4
  78. package/dist/Stream.d.ts.map +1 -1
  79. package/dist/Stream.js +9 -0
  80. package/dist/Stream.js.map +1 -1
  81. package/dist/Terminal.d.ts +18 -1
  82. package/dist/Terminal.d.ts.map +1 -1
  83. package/dist/Terminal.js +1 -1
  84. package/dist/Terminal.js.map +1 -1
  85. package/dist/ai/AiError.d.ts +43 -116
  86. package/dist/ai/AiError.d.ts.map +1 -1
  87. package/dist/ai/AiError.js +53 -72
  88. package/dist/ai/AiError.js.map +1 -1
  89. package/dist/ai/Decision.d.ts +196 -15
  90. package/dist/ai/Decision.d.ts.map +1 -1
  91. package/dist/ai/Decision.js +130 -0
  92. package/dist/ai/Decision.js.map +1 -1
  93. package/dist/ai/DecisionModel.d.ts +54 -13
  94. package/dist/ai/DecisionModel.d.ts.map +1 -1
  95. package/dist/ai/DecisionModel.js +123 -12
  96. package/dist/ai/DecisionModel.js.map +1 -1
  97. package/dist/ai/McpServer.d.ts +630 -29
  98. package/dist/ai/McpServer.d.ts.map +1 -1
  99. package/dist/ai/McpServer.js +562 -116
  100. package/dist/ai/McpServer.js.map +1 -1
  101. package/dist/ai/McpTest.d.ts +130 -0
  102. package/dist/ai/McpTest.d.ts.map +1 -0
  103. package/dist/ai/McpTest.js +237 -0
  104. package/dist/ai/McpTest.js.map +1 -0
  105. package/dist/ai/Response.d.ts +1 -25
  106. package/dist/ai/Response.d.ts.map +1 -1
  107. package/dist/ai/Response.js +1 -10
  108. package/dist/ai/Response.js.map +1 -1
  109. package/dist/ai/Tool.d.ts +19 -1
  110. package/dist/ai/Tool.d.ts.map +1 -1
  111. package/dist/ai/Tool.js.map +1 -1
  112. package/dist/ai/index.d.ts +5 -0
  113. package/dist/ai/index.d.ts.map +1 -1
  114. package/dist/ai/index.js +5 -0
  115. package/dist/ai/index.js.map +1 -1
  116. package/dist/ai/internal/mcpCore.js +17 -12
  117. package/dist/ai/internal/mcpCore.js.map +1 -1
  118. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  119. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  120. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  121. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  122. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  123. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  124. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  125. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  126. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  127. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  128. package/dist/ai/internal/mcpProtocol.js +13 -0
  129. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  130. package/dist/ai/internal/mcpRuntime.js +5 -3
  131. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  132. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  133. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  134. package/dist/cli/Argument.d.ts +6 -0
  135. package/dist/cli/Argument.d.ts.map +1 -1
  136. package/dist/cli/Argument.js +2 -0
  137. package/dist/cli/Argument.js.map +1 -1
  138. package/dist/cli/CliOutput.d.ts +65 -1
  139. package/dist/cli/CliOutput.d.ts.map +1 -1
  140. package/dist/cli/CliOutput.js +94 -37
  141. package/dist/cli/CliOutput.js.map +1 -1
  142. package/dist/cli/Command.d.ts +23 -0
  143. package/dist/cli/Command.d.ts.map +1 -1
  144. package/dist/cli/Command.js +8 -0
  145. package/dist/cli/Command.js.map +1 -1
  146. package/dist/cli/Flag.d.ts +107 -0
  147. package/dist/cli/Flag.d.ts.map +1 -1
  148. package/dist/cli/Flag.js +37 -0
  149. package/dist/cli/Flag.js.map +1 -1
  150. package/dist/cli/HelpDoc.d.ts +15 -1
  151. package/dist/cli/HelpDoc.d.ts.map +1 -1
  152. package/dist/cli/Param.d.ts +6 -0
  153. package/dist/cli/Param.d.ts.map +1 -1
  154. package/dist/cli/Param.js +2 -0
  155. package/dist/cli/Param.js.map +1 -1
  156. package/dist/cli/Primitive.d.ts +14 -0
  157. package/dist/cli/Primitive.d.ts.map +1 -1
  158. package/dist/cli/Primitive.js +15 -1
  159. package/dist/cli/Primitive.js.map +1 -1
  160. package/dist/cli/Prompt.d.ts +1 -0
  161. package/dist/cli/Prompt.d.ts.map +1 -1
  162. package/dist/cli/Prompt.js +1 -0
  163. package/dist/cli/Prompt.js.map +1 -1
  164. package/dist/cli/internal/help.d.ts.map +1 -1
  165. package/dist/cli/internal/help.js +17 -10
  166. package/dist/cli/internal/help.js.map +1 -1
  167. package/dist/cluster/Sharding.d.ts.map +1 -1
  168. package/dist/cluster/Sharding.js +90 -28
  169. package/dist/cluster/Sharding.js.map +1 -1
  170. package/dist/cluster/ShardingConfig.d.ts +72 -6
  171. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  172. package/dist/cluster/ShardingConfig.js +4 -0
  173. package/dist/cluster/ShardingConfig.js.map +1 -1
  174. package/dist/cluster/SingleRunner.d.ts +3 -3
  175. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  176. package/dist/cluster/SingleRunner.js +1 -1
  177. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  178. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  179. package/dist/cluster/SqlMessageStorage.js +34 -7
  180. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  181. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  182. package/dist/cluster/SqlRunnerStorage.js +23 -8
  183. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  184. package/dist/crypto/Aead.d.ts +322 -0
  185. package/dist/crypto/Aead.d.ts.map +1 -0
  186. package/dist/crypto/Aead.js +331 -0
  187. package/dist/crypto/Aead.js.map +1 -0
  188. package/dist/crypto/Cipher.d.ts +235 -0
  189. package/dist/crypto/Cipher.d.ts.map +1 -0
  190. package/dist/crypto/Cipher.js +233 -0
  191. package/dist/crypto/Cipher.js.map +1 -0
  192. package/dist/crypto/CryptoError.d.ts +212 -0
  193. package/dist/crypto/CryptoError.d.ts.map +1 -0
  194. package/dist/crypto/CryptoError.js +202 -0
  195. package/dist/crypto/CryptoError.js.map +1 -0
  196. package/dist/crypto/Digest.d.ts +143 -0
  197. package/dist/crypto/Digest.d.ts.map +1 -0
  198. package/dist/crypto/Digest.js +146 -0
  199. package/dist/crypto/Digest.js.map +1 -0
  200. package/dist/crypto/Kdf.d.ts +220 -0
  201. package/dist/crypto/Kdf.d.ts.map +1 -0
  202. package/dist/crypto/Kdf.js +212 -0
  203. package/dist/crypto/Kdf.js.map +1 -0
  204. package/dist/crypto/KeyAgreement.d.ts +323 -0
  205. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  206. package/dist/crypto/KeyAgreement.js +303 -0
  207. package/dist/crypto/KeyAgreement.js.map +1 -0
  208. package/dist/crypto/KeyFormat.d.ts +309 -0
  209. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  210. package/dist/crypto/KeyFormat.js +556 -0
  211. package/dist/crypto/KeyFormat.js.map +1 -0
  212. package/dist/crypto/KeyWrap.d.ts +389 -0
  213. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  214. package/dist/crypto/KeyWrap.js +381 -0
  215. package/dist/crypto/KeyWrap.js.map +1 -0
  216. package/dist/crypto/Mac.d.ts +277 -0
  217. package/dist/crypto/Mac.d.ts.map +1 -0
  218. package/dist/crypto/Mac.js +288 -0
  219. package/dist/crypto/Mac.js.map +1 -0
  220. package/dist/crypto/SecureRandom.d.ts +340 -0
  221. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  222. package/dist/crypto/SecureRandom.js +257 -0
  223. package/dist/crypto/SecureRandom.js.map +1 -0
  224. package/dist/crypto/Signature.d.ts +448 -0
  225. package/dist/crypto/Signature.d.ts.map +1 -0
  226. package/dist/crypto/Signature.js +484 -0
  227. package/dist/crypto/Signature.js.map +1 -0
  228. package/dist/crypto/WebCrypto.d.ts +61 -0
  229. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  230. package/dist/crypto/WebCrypto.js +63 -0
  231. package/dist/crypto/WebCrypto.js.map +1 -0
  232. package/dist/crypto/index.d.ts +65 -0
  233. package/dist/crypto/index.d.ts.map +1 -0
  234. package/dist/crypto/index.js +66 -0
  235. package/dist/crypto/index.js.map +1 -0
  236. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  237. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  238. package/dist/crypto/internal/asymmetric.js +210 -0
  239. package/dist/crypto/internal/asymmetric.js.map +1 -0
  240. package/dist/crypto/internal/chacha.d.ts +46 -0
  241. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  242. package/dist/crypto/internal/chacha.js +885 -0
  243. package/dist/crypto/internal/chacha.js.map +1 -0
  244. package/dist/crypto/internal/der.d.ts +6 -0
  245. package/dist/crypto/internal/der.d.ts.map +1 -0
  246. package/dist/crypto/internal/der.js +86 -0
  247. package/dist/crypto/internal/der.js.map +1 -0
  248. package/dist/crypto/internal/digest.d.ts +2 -0
  249. package/dist/crypto/internal/digest.d.ts.map +1 -0
  250. package/dist/crypto/internal/digest.js +15 -0
  251. package/dist/crypto/internal/digest.js.map +1 -0
  252. package/dist/crypto/internal/key.d.ts +2 -0
  253. package/dist/crypto/internal/key.d.ts.map +1 -0
  254. package/dist/crypto/internal/key.js +170 -0
  255. package/dist/crypto/internal/key.js.map +1 -0
  256. package/dist/crypto/internal/md5.d.ts +39 -0
  257. package/dist/crypto/internal/md5.d.ts.map +1 -0
  258. package/dist/crypto/internal/md5.js +179 -0
  259. package/dist/crypto/internal/md5.js.map +1 -0
  260. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  261. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  262. package/dist/crypto/internal/webCrypto.js +111 -0
  263. package/dist/crypto/internal/webCrypto.js.map +1 -0
  264. package/dist/encoding/Base64Url.d.ts.map +1 -1
  265. package/dist/encoding/Base64Url.js +3 -2
  266. package/dist/encoding/Base64Url.js.map +1 -1
  267. package/dist/encoding/Csv.d.ts +608 -0
  268. package/dist/encoding/Csv.d.ts.map +1 -0
  269. package/dist/encoding/Csv.js +718 -0
  270. package/dist/encoding/Csv.js.map +1 -0
  271. package/dist/encoding/Hex.d.ts +3 -2
  272. package/dist/encoding/Hex.d.ts.map +1 -1
  273. package/dist/encoding/Hex.js +3 -2
  274. package/dist/encoding/Hex.js.map +1 -1
  275. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  276. package/dist/encoding/SchemaBinary.js +42 -4
  277. package/dist/encoding/SchemaBinary.js.map +1 -1
  278. package/dist/encoding/Toml.d.ts +17 -3
  279. package/dist/encoding/Toml.d.ts.map +1 -1
  280. package/dist/encoding/Toml.js +104 -16
  281. package/dist/encoding/Toml.js.map +1 -1
  282. package/dist/encoding/Yaml.d.ts +8 -1
  283. package/dist/encoding/Yaml.d.ts.map +1 -1
  284. package/dist/encoding/Yaml.js +54 -18
  285. package/dist/encoding/Yaml.js.map +1 -1
  286. package/dist/encoding/index.d.ts +5 -0
  287. package/dist/encoding/index.d.ts.map +1 -1
  288. package/dist/encoding/index.js +5 -0
  289. package/dist/encoding/index.js.map +1 -1
  290. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  291. package/dist/eventlog/EventJournal.js +6 -3
  292. package/dist/eventlog/EventJournal.js.map +1 -1
  293. package/dist/eventlog/EventLog.d.ts +119 -4
  294. package/dist/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/eventlog/EventLog.js +200 -12
  296. package/dist/eventlog/EventLog.js.map +1 -1
  297. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  298. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  299. package/dist/eventlog/EventLogEncryption.js +83 -64
  300. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  301. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  302. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  303. package/dist/eventlog/EventLogMessage.js +217 -1
  304. package/dist/eventlog/EventLogMessage.js.map +1 -1
  305. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  306. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  307. package/dist/eventlog/EventLogRemote.js +186 -16
  308. package/dist/eventlog/EventLogRemote.js.map +1 -1
  309. package/dist/eventlog/EventLogServer.d.ts +3 -0
  310. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  311. package/dist/eventlog/EventLogServer.js +18 -10
  312. package/dist/eventlog/EventLogServer.js.map +1 -1
  313. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  314. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  315. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  316. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  317. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  318. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  319. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  320. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  321. package/dist/eventlog/EventRow.d.ts +4 -0
  322. package/dist/eventlog/EventRow.d.ts.map +1 -1
  323. package/dist/eventlog/EventRow.js +12 -2
  324. package/dist/eventlog/EventRow.js.map +1 -1
  325. package/dist/eventlog/SqlEventJournal.js +2 -2
  326. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  327. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  328. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  329. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  330. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  331. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  332. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  333. package/dist/eventlog/internal/batches.d.ts +12 -0
  334. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  335. package/dist/eventlog/internal/batches.js +26 -0
  336. package/dist/eventlog/internal/batches.js.map +1 -0
  337. package/dist/eventlog/internal/compaction.d.ts +38 -0
  338. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  339. package/dist/eventlog/internal/compaction.js +33 -0
  340. package/dist/eventlog/internal/compaction.js.map +1 -0
  341. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  342. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  343. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  344. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  345. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  346. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  347. package/dist/http/Cookies.d.ts +172 -0
  348. package/dist/http/Cookies.d.ts.map +1 -1
  349. package/dist/http/Cookies.js +143 -1
  350. package/dist/http/Cookies.js.map +1 -1
  351. package/dist/http/FetchHttpClient.d.ts +26 -2
  352. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  353. package/dist/http/FetchHttpClient.js +78 -15
  354. package/dist/http/FetchHttpClient.js.map +1 -1
  355. package/dist/http/HttpClient.d.ts +79 -8
  356. package/dist/http/HttpClient.d.ts.map +1 -1
  357. package/dist/http/HttpClient.js +65 -5
  358. package/dist/http/HttpClient.js.map +1 -1
  359. package/dist/http/HttpClientRequest.d.ts +9 -5
  360. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  361. package/dist/http/HttpClientRequest.js +2 -3
  362. package/dist/http/HttpClientRequest.js.map +1 -1
  363. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  364. package/dist/http/HttpClientResponse.js +3 -2
  365. package/dist/http/HttpClientResponse.js.map +1 -1
  366. package/dist/http/HttpMethod.d.ts +7 -1
  367. package/dist/http/HttpMethod.d.ts.map +1 -1
  368. package/dist/http/HttpMethod.js +3 -8
  369. package/dist/http/HttpMethod.js.map +1 -1
  370. package/dist/http/HttpServerRequest.d.ts +5 -2
  371. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  372. package/dist/http/HttpServerRequest.js +6 -17
  373. package/dist/http/HttpServerRequest.js.map +1 -1
  374. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  375. package/dist/http/HttpServerResponse.js +3 -2
  376. package/dist/http/HttpServerResponse.js.map +1 -1
  377. package/dist/http/HttpTraceContext.d.ts +2 -1
  378. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  379. package/dist/http/HttpTraceContext.js +7 -5
  380. package/dist/http/HttpTraceContext.js.map +1 -1
  381. package/dist/http/ProblemDetails.d.ts +96 -0
  382. package/dist/http/ProblemDetails.d.ts.map +1 -0
  383. package/dist/http/ProblemDetails.js +98 -0
  384. package/dist/http/ProblemDetails.js.map +1 -0
  385. package/dist/http/index.d.ts +5 -0
  386. package/dist/http/index.d.ts.map +1 -1
  387. package/dist/http/index.js +5 -0
  388. package/dist/http/index.js.map +1 -1
  389. package/dist/http/internal/decompression.js +3 -2
  390. package/dist/http/internal/decompression.js.map +1 -1
  391. package/dist/http/internal/urlParams.js +8 -0
  392. package/dist/http/internal/urlParams.js.map +1 -1
  393. package/dist/http-api/HttpApiBuilder.js +19 -5
  394. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  395. package/dist/http-api/HttpApiClient.d.ts +63 -0
  396. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  397. package/dist/http-api/HttpApiClient.js +51 -0
  398. package/dist/http-api/HttpApiClient.js.map +1 -1
  399. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  400. package/dist/http-api/HttpApiEndpoint.js +14 -5
  401. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  402. package/dist/http-api/HttpApiError.d.ts +185 -13
  403. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  404. package/dist/http-api/HttpApiError.js +128 -0
  405. package/dist/http-api/HttpApiError.js.map +1 -1
  406. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  407. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  408. package/dist/http-api/HttpApiMiddleware.js +85 -1
  409. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  410. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  411. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  412. package/dist/http-api/HttpApiSchema.js +53 -0
  413. package/dist/http-api/HttpApiSchema.js.map +1 -1
  414. package/dist/index.d.ts +5 -5
  415. package/dist/index.d.ts.map +1 -1
  416. package/dist/index.js +5 -5
  417. package/dist/index.js.map +1 -1
  418. package/dist/internal/effect.js +25 -14
  419. package/dist/internal/effect.js.map +1 -1
  420. package/dist/internal/glob.d.ts +2 -0
  421. package/dist/internal/glob.d.ts.map +1 -0
  422. package/dist/internal/glob.js +630 -0
  423. package/dist/internal/glob.js.map +1 -0
  424. package/dist/internal/matcher.js +10 -0
  425. package/dist/internal/matcher.js.map +1 -1
  426. package/dist/internal/persistence.js +9 -0
  427. package/dist/internal/persistence.js.map +1 -1
  428. package/dist/internal/rcRef.js +4 -1
  429. package/dist/internal/rcRef.js.map +1 -1
  430. package/dist/internal/schema/toCodeDocument.js +6 -3
  431. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  432. package/dist/internal/trie.js +42 -13
  433. package/dist/internal/trie.js.map +1 -1
  434. package/dist/internal/ulid.js +41 -0
  435. package/dist/internal/ulid.js.map +1 -1
  436. package/dist/internal/uuid.js +52 -8
  437. package/dist/internal/uuid.js.map +1 -1
  438. package/dist/internal/version.js +1 -1
  439. package/dist/observability/Otlp.d.ts +15 -4
  440. package/dist/observability/Otlp.d.ts.map +1 -1
  441. package/dist/observability/Otlp.js +10 -0
  442. package/dist/observability/Otlp.js.map +1 -1
  443. package/dist/observability/OtlpResource.d.ts +7 -0
  444. package/dist/observability/OtlpResource.d.ts.map +1 -1
  445. package/dist/observability/OtlpResource.js +11 -1
  446. package/dist/observability/OtlpResource.js.map +1 -1
  447. package/dist/persistence/KeyValueStore.d.ts +47 -2
  448. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  449. package/dist/persistence/KeyValueStore.js +129 -18
  450. package/dist/persistence/KeyValueStore.js.map +1 -1
  451. package/dist/persistence/PersistedQueue.d.ts +9 -0
  452. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  453. package/dist/persistence/PersistedQueue.js +94 -52
  454. package/dist/persistence/PersistedQueue.js.map +1 -1
  455. package/dist/persistence/Persistence.d.ts +10 -4
  456. package/dist/persistence/Persistence.d.ts.map +1 -1
  457. package/dist/persistence/Persistence.js +18 -11
  458. package/dist/persistence/Persistence.js.map +1 -1
  459. package/dist/process/ChildProcess.d.ts +207 -67
  460. package/dist/process/ChildProcess.d.ts.map +1 -1
  461. package/dist/process/ChildProcess.js +56 -158
  462. package/dist/process/ChildProcess.js.map +1 -1
  463. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  464. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  465. package/dist/process/ChildProcessSpawner.js.map +1 -1
  466. package/dist/process/CommandLine.d.ts +294 -0
  467. package/dist/process/CommandLine.d.ts.map +1 -0
  468. package/dist/process/CommandLine.js +481 -0
  469. package/dist/process/CommandLine.js.map +1 -0
  470. package/dist/process/index.d.ts +5 -0
  471. package/dist/process/index.d.ts.map +1 -1
  472. package/dist/process/index.js +5 -0
  473. package/dist/process/index.js.map +1 -1
  474. package/dist/reactivity/Atom.d.ts +2 -1
  475. package/dist/reactivity/Atom.d.ts.map +1 -1
  476. package/dist/reactivity/Atom.js +3 -4
  477. package/dist/reactivity/Atom.js.map +1 -1
  478. package/dist/reactivity/AtomRegistry.js.map +1 -1
  479. package/dist/rpc/RpcClient.d.ts +16 -1
  480. package/dist/rpc/RpcClient.d.ts.map +1 -1
  481. package/dist/rpc/RpcClient.js +50 -16
  482. package/dist/rpc/RpcClient.js.map +1 -1
  483. package/dist/rpc/RpcMessage.d.ts +10 -1
  484. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  485. package/dist/rpc/RpcMessage.js +1 -0
  486. package/dist/rpc/RpcMessage.js.map +1 -1
  487. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  488. package/dist/rpc/RpcSerialization.js +6 -0
  489. package/dist/rpc/RpcSerialization.js.map +1 -1
  490. package/dist/rpc/RpcServer.d.ts +31 -0
  491. package/dist/rpc/RpcServer.d.ts.map +1 -1
  492. package/dist/rpc/RpcServer.js +139 -66
  493. package/dist/rpc/RpcServer.js.map +1 -1
  494. package/dist/schema/Model.d.ts +14 -0
  495. package/dist/schema/Model.d.ts.map +1 -1
  496. package/dist/schema/Model.js +18 -3
  497. package/dist/schema/Model.js.map +1 -1
  498. package/dist/sql/Migrator.d.ts +0 -19
  499. package/dist/sql/Migrator.d.ts.map +1 -1
  500. package/dist/sql/Migrator.js +3 -48
  501. package/dist/sql/Migrator.js.map +1 -1
  502. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  503. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  504. package/dist/sql/MigratorFileSystem.js +57 -0
  505. package/dist/sql/MigratorFileSystem.js.map +1 -0
  506. package/dist/sql/SqlClient.d.ts.map +1 -1
  507. package/dist/sql/SqlClient.js +5 -9
  508. package/dist/sql/SqlClient.js.map +1 -1
  509. package/dist/sql/Statement.d.ts +20 -6
  510. package/dist/sql/Statement.d.ts.map +1 -1
  511. package/dist/sql/Statement.js +0 -13
  512. package/dist/sql/Statement.js.map +1 -1
  513. package/dist/sql/index.js +1 -1
  514. package/dist/testing/index.d.ts +0 -5
  515. package/dist/testing/index.d.ts.map +1 -1
  516. package/dist/testing/index.js +0 -5
  517. package/dist/testing/index.js.map +1 -1
  518. package/dist/workflow/internal/crypto.js +9 -8
  519. package/dist/workflow/internal/crypto.js.map +1 -1
  520. package/package.json +3 -1
  521. package/src/BigDecimal.ts +3 -0
  522. package/src/Channel.ts +17 -11
  523. package/src/Config.ts +7 -1
  524. package/src/Context.ts +34 -10
  525. package/src/Cron.ts +178 -29
  526. package/src/Duration.ts +140 -0
  527. package/src/Effect.ts +914 -85
  528. package/src/FileSystem.ts +65 -4
  529. package/src/Glob.ts +205 -0
  530. package/src/Match.ts +127 -0
  531. package/src/Pool.ts +73 -15
  532. package/src/Random.ts +3 -3
  533. package/src/RcMap.ts +5 -1
  534. package/src/Schedule.ts +26 -3
  535. package/src/Schema.ts +1189 -62
  536. package/src/SchemaGetter.ts +27 -11
  537. package/src/SchemaRepresentation.ts +19 -0
  538. package/src/SchemaTransformation.ts +8 -3
  539. package/src/ScopedCache.ts +5 -9
  540. package/src/Semaphore.ts +141 -0
  541. package/src/Stream.ts +15 -6
  542. package/src/Terminal.ts +19 -1
  543. package/src/ai/AiError.ts +56 -80
  544. package/src/ai/Decision.ts +257 -6
  545. package/src/ai/DecisionModel.ts +171 -28
  546. package/src/ai/McpServer.ts +1269 -286
  547. package/src/ai/McpTest.ts +380 -0
  548. package/src/ai/Response.ts +2 -22
  549. package/src/ai/Tool.ts +27 -8
  550. package/src/ai/index.ts +6 -0
  551. package/src/ai/internal/mcpCore.ts +78 -44
  552. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  553. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  554. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  555. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  556. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  557. package/src/ai/internal/mcpProtocol.ts +29 -0
  558. package/src/ai/internal/mcpRuntime.ts +9 -5
  559. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  560. package/src/cli/Argument.ts +6 -0
  561. package/src/cli/CliOutput.ts +117 -49
  562. package/src/cli/Command.ts +23 -0
  563. package/src/cli/Flag.ts +107 -0
  564. package/src/cli/HelpDoc.ts +18 -1
  565. package/src/cli/Param.ts +6 -0
  566. package/src/cli/Primitive.ts +16 -1
  567. package/src/cli/Prompt.ts +1 -0
  568. package/src/cli/internal/help.ts +21 -9
  569. package/src/cluster/Sharding.ts +93 -26
  570. package/src/cluster/ShardingConfig.ts +41 -3
  571. package/src/cluster/SingleRunner.ts +3 -3
  572. package/src/cluster/SqlMessageStorage.ts +49 -17
  573. package/src/cluster/SqlRunnerStorage.ts +37 -27
  574. package/src/crypto/Aead.ts +517 -0
  575. package/src/crypto/Cipher.ts +326 -0
  576. package/src/crypto/CryptoError.ts +242 -0
  577. package/src/crypto/Digest.ts +167 -0
  578. package/src/crypto/Kdf.ts +315 -0
  579. package/src/crypto/KeyAgreement.ts +489 -0
  580. package/src/crypto/KeyFormat.ts +712 -0
  581. package/src/crypto/KeyWrap.ts +639 -0
  582. package/src/crypto/Mac.ts +386 -0
  583. package/src/crypto/SecureRandom.ts +459 -0
  584. package/src/crypto/Signature.ts +673 -0
  585. package/src/crypto/WebCrypto.ts +64 -0
  586. package/src/crypto/index.ts +78 -0
  587. package/src/crypto/internal/asymmetric.ts +329 -0
  588. package/src/crypto/internal/chacha.ts +1088 -0
  589. package/src/crypto/internal/der.ts +110 -0
  590. package/src/crypto/internal/digest.ts +16 -0
  591. package/src/crypto/internal/key.ts +235 -0
  592. package/src/crypto/internal/md5.ts +170 -0
  593. package/src/crypto/internal/webCrypto.ts +150 -0
  594. package/src/encoding/Base64Url.ts +5 -2
  595. package/src/encoding/Csv.ts +1298 -0
  596. package/src/encoding/Hex.ts +3 -2
  597. package/src/encoding/SchemaBinary.ts +40 -4
  598. package/src/encoding/Toml.ts +85 -20
  599. package/src/encoding/Yaml.ts +61 -18
  600. package/src/encoding/index.ts +6 -0
  601. package/src/eventlog/EventJournal.ts +4 -3
  602. package/src/eventlog/EventLog.ts +340 -15
  603. package/src/eventlog/EventLogEncryption.ts +118 -110
  604. package/src/eventlog/EventLogMessage.ts +273 -1
  605. package/src/eventlog/EventLogRemote.ts +367 -23
  606. package/src/eventlog/EventLogServer.ts +23 -8
  607. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  608. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  609. package/src/eventlog/EventRow.ts +12 -3
  610. package/src/eventlog/SqlEventJournal.ts +2 -2
  611. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  612. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  613. package/src/eventlog/internal/batches.ts +30 -0
  614. package/src/eventlog/internal/compaction.ts +64 -0
  615. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  616. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  617. package/src/http/Cookies.ts +281 -1
  618. package/src/http/FetchHttpClient.ts +88 -16
  619. package/src/http/HttpClient.ts +89 -22
  620. package/src/http/HttpClientRequest.ts +12 -9
  621. package/src/http/HttpClientResponse.ts +3 -2
  622. package/src/http/HttpMethod.ts +10 -2
  623. package/src/http/HttpServerRequest.ts +15 -30
  624. package/src/http/HttpServerResponse.ts +3 -2
  625. package/src/http/HttpTraceContext.ts +7 -4
  626. package/src/http/ProblemDetails.ts +149 -0
  627. package/src/http/index.ts +6 -0
  628. package/src/http/internal/decompression.ts +4 -4
  629. package/src/http/internal/urlParams.ts +8 -0
  630. package/src/http-api/HttpApiBuilder.ts +24 -12
  631. package/src/http-api/HttpApiClient.ts +67 -1
  632. package/src/http-api/HttpApiEndpoint.ts +14 -5
  633. package/src/http-api/HttpApiError.ts +250 -0
  634. package/src/http-api/HttpApiMiddleware.ts +95 -1
  635. package/src/http-api/HttpApiSchema.ts +105 -14
  636. package/src/index.ts +6 -6
  637. package/src/internal/effect.ts +34 -18
  638. package/src/internal/glob.ts +736 -0
  639. package/src/internal/matcher.ts +17 -0
  640. package/src/internal/persistence.ts +11 -0
  641. package/src/internal/rcRef.ts +4 -1
  642. package/src/internal/schema/toCodeDocument.ts +7 -3
  643. package/src/internal/trie.ts +43 -14
  644. package/src/internal/ulid.ts +44 -0
  645. package/src/internal/uuid.ts +57 -16
  646. package/src/internal/version.ts +1 -1
  647. package/src/observability/Otlp.ts +21 -4
  648. package/src/observability/OtlpResource.ts +9 -1
  649. package/src/persistence/KeyValueStore.ts +219 -22
  650. package/src/persistence/PersistedQueue.ts +128 -59
  651. package/src/persistence/Persistence.ts +20 -13
  652. package/src/process/ChildProcess.ts +255 -260
  653. package/src/process/ChildProcessSpawner.ts +5 -0
  654. package/src/process/CommandLine.ts +630 -0
  655. package/src/process/index.ts +6 -0
  656. package/src/reactivity/Atom.ts +5 -5
  657. package/src/reactivity/AtomRegistry.ts +1 -1
  658. package/src/rpc/RpcClient.ts +62 -26
  659. package/src/rpc/RpcMessage.ts +10 -1
  660. package/src/rpc/RpcSerialization.ts +3 -0
  661. package/src/rpc/RpcServer.ts +176 -78
  662. package/src/schema/Model.ts +26 -3
  663. package/src/sql/Migrator.ts +4 -63
  664. package/src/sql/MigratorFileSystem.ts +71 -0
  665. package/src/sql/SqlClient.ts +2 -16
  666. package/src/sql/Statement.ts +8 -7
  667. package/src/sql/index.ts +1 -1
  668. package/src/testing/index.ts +0 -6
  669. package/src/workflow/internal/crypto.ts +15 -11
  670. package/dist/Crypto.d.ts +0 -244
  671. package/dist/Crypto.d.ts.map +0 -1
  672. package/dist/Crypto.js +0 -139
  673. package/dist/Crypto.js.map +0 -1
  674. package/dist/testing/TestCrypto.d.ts +0 -73
  675. package/dist/testing/TestCrypto.d.ts.map +0 -1
  676. package/dist/testing/TestCrypto.js +0 -87
  677. package/dist/testing/TestCrypto.js.map +0 -1
  678. package/src/Crypto.ts +0 -347
  679. package/src/testing/TestCrypto.ts +0 -94
@@ -0,0 +1,556 @@
1
+ /**
2
+ * Key formats: SPKI, PKCS#8, JWK, and PEM, with import-only PKCS#1 and SEC1.
3
+ *
4
+ * {@link decodePublic}, {@link decodePrivate}, and {@link decodeSecret} build
5
+ * typed keys from encoded data, and {@link encode} writes a key in a named
6
+ * format. They are plain functions, not a service: each returns an Effect that
7
+ * requires nothing and runs on the `WebCrypto` reference.
8
+ *
9
+ * The algorithm decides the family of the result. Decoding with
10
+ * `Signature.ecdsaP256` gives a `Signature` key, and with
11
+ * `KeyAgreement.ecdhP256` a `KeyAgreement` key. Raw bytes are not a format
12
+ * here: each family's own constructors read them.
13
+ *
14
+ * Format values carry their role, direction, and data type in the types:
15
+ *
16
+ * - {@link spki} (public) and {@link pkcs8} (private) read and write DER
17
+ * bytes;
18
+ * - {@link jwk} reads and writes JWK objects for every role;
19
+ * - {@link pkcs1} (RSA) and {@link sec1} (EC) read private DER keys and
20
+ * cannot be written;
21
+ * - {@link pem} turns any DER format into PEM text.
22
+ *
23
+ * Decoded keys always hold bytes, in the forms each family stores, so they
24
+ * work with every layer.
25
+ *
26
+ * **Gotchas**
27
+ *
28
+ * - EC private keys must include their public point. Safari and Firefox
29
+ * before 132 cannot import one without it, so every runtime fails with an
30
+ * `Unsupported` reason.
31
+ * - SPKI accepts compressed EC points. Safari and Firefox before 146 reject
32
+ * them in raw import, so the families' raw constructors take only
33
+ * uncompressed points.
34
+ * - Ed25519 and X25519 private JWKs need a correct `x`. Bun and Deno accept
35
+ * `d` alone, and other runtimes reject it.
36
+ * - JWK members other than `kty`, `crv`, `alg`, and the key material are
37
+ * ignored on import, and written JWKs contain only `kty`, `crv`, and the key
38
+ * material.
39
+ * - Callers parse and serialize JSON themselves.
40
+ *
41
+ * @stability unstable
42
+ * @since 4.0.0
43
+ */
44
+ import * as Effect from "../Effect.js";
45
+ import * as Base64 from "../encoding/Base64.js";
46
+ import * as Base64Url from "../encoding/Base64Url.js";
47
+ import * as Predicate from "../Predicate.js";
48
+ import * as Result from "../Result.js";
49
+ import * as CryptoError from "./CryptoError.js";
50
+ import * as Asymmetric from "./internal/asymmetric.js";
51
+ import * as Der from "./internal/der.js";
52
+ import * as KeyModel from "./internal/key.js";
53
+ import * as internal from "./internal/webCrypto.js";
54
+ import * as KeyAgreement from "./KeyAgreement.js";
55
+ import * as KeyWrap from "./KeyWrap.js";
56
+ import * as Signature from "./Signature.js";
57
+ /**
58
+ * SubjectPublicKeyInfo DER (RFC 5280), for public keys.
59
+ *
60
+ * @stability unstable
61
+ * @category formats
62
+ * @since 4.0.0
63
+ */
64
+ export const spki = {
65
+ _tag: "spki",
66
+ pem: false
67
+ };
68
+ /**
69
+ * PKCS#8 PrivateKeyInfo DER (RFC 5208), for private keys.
70
+ *
71
+ * @stability unstable
72
+ * @category formats
73
+ * @since 4.0.0
74
+ */
75
+ export const pkcs8 = {
76
+ _tag: "pkcs8",
77
+ pem: false
78
+ };
79
+ /**
80
+ * JSON Web Key (RFC 7517), for every role.
81
+ *
82
+ * **Details**
83
+ *
84
+ * `decodePublic` rejects a JWK with `d`, and `decodePrivate` requires it.
85
+ * `kty`, `crv`, and `alg` must match the algorithm when present. Written JWKs
86
+ * contain only `kty`, `crv`, and the key material.
87
+ *
88
+ * Ed25519 and X25519 private JWKs need a correct `x`: Bun and Deno accept `d`
89
+ * alone, but other runtimes reject it.
90
+ *
91
+ * @stability unstable
92
+ * @category formats
93
+ * @since 4.0.0
94
+ */
95
+ export const jwk = {
96
+ _tag: "jwk",
97
+ pem: false
98
+ };
99
+ /**
100
+ * PKCS#1 RSAPrivateKey DER (RFC 8017), read only.
101
+ *
102
+ * @stability unstable
103
+ * @category formats
104
+ * @since 4.0.0
105
+ */
106
+ export const pkcs1 = {
107
+ _tag: "pkcs1",
108
+ pem: false
109
+ };
110
+ /**
111
+ * SEC1 ECPrivateKey DER (RFC 5915), read only.
112
+ *
113
+ * **Details**
114
+ *
115
+ * The curve parameters, when present, must match the algorithm's curve. The
116
+ * public point must be present.
117
+ *
118
+ * @stability unstable
119
+ * @category formats
120
+ * @since 4.0.0
121
+ */
122
+ export const sec1 = {
123
+ _tag: "sec1",
124
+ pem: false
125
+ };
126
+ /**
127
+ * PEM (RFC 7468) over a DER format.
128
+ *
129
+ * **Details**
130
+ *
131
+ * Reading accepts exactly one block whose label matches the format:
132
+ * `PUBLIC KEY`, `PRIVATE KEY`, `RSA PRIVATE KEY`, or `EC PRIVATE KEY`.
133
+ * Writing uses 64-column lines.
134
+ *
135
+ * @stability unstable
136
+ * @category formats
137
+ * @since 4.0.0
138
+ */
139
+ export const pem = format => ({
140
+ _tag: format._tag,
141
+ pem: true
142
+ });
143
+ const invalidKey = (method, description) => internal.invalidKey("KeyFormat", method, description);
144
+ const unsupported = (method, description) => internal.fail("KeyFormat", method, new CryptoError.Unsupported({
145
+ description
146
+ }));
147
+ const familyOf = algorithm => {
148
+ switch ("_tag" in algorithm ? algorithm._tag : undefined) {
149
+ case "Ed25519":
150
+ case "Ecdsa":
151
+ case "RsaPss":
152
+ case "RsaPkcs1v15":
153
+ return Signature.family;
154
+ case "X25519":
155
+ case "Ecdh":
156
+ return KeyAgreement.family;
157
+ case "RsaOaep":
158
+ return KeyWrap.family;
159
+ default:
160
+ return undefined;
161
+ }
162
+ };
163
+ const labels = {
164
+ spki: "PUBLIC KEY",
165
+ pkcs8: "PRIVATE KEY",
166
+ pkcs1: "RSA PRIVATE KEY",
167
+ sec1: "EC PRIVATE KEY",
168
+ jwk: ""
169
+ };
170
+ const pemPattern = /^-----BEGIN ([A-Z0-9 ]+)-----\r?\n([A-Za-z0-9+/=\r\n]+)-----END ([A-Z0-9 ]+)-----$/;
171
+ const fromPem = (label, text) => {
172
+ const match = pemPattern.exec(text.trim());
173
+ if (match === null || match[1] !== label || match[3] !== label) {
174
+ return `Expected exactly one PEM block labelled ${label}`;
175
+ }
176
+ const der = Base64.decode(match[2].replace(/\r?\n/g, ""));
177
+ return Result.isSuccess(der) ? der.success : `The ${label} PEM block is not valid base64`;
178
+ };
179
+ const toPem = (label, der) => {
180
+ const base64 = Base64.encode(der);
181
+ const lines = [];
182
+ for (let i = 0; i < base64.length; i += 64) lines.push(base64.slice(i, i + 64));
183
+ return `-----BEGIN ${label}-----\n${lines.join("\n")}\n-----END ${label}-----\n`;
184
+ };
185
+ // AlgorithmIdentifier for rsaEncryption (1.2.840.113549.1.1.1) with NULL
186
+ // parameters, the OIDs of id-ecPublicKey and the NIST curves, and the EC
187
+ // AlgorithmIdentifier of each curve.
188
+ const rsaEncryption = /*#__PURE__*/Uint8Array.of(48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0);
189
+ const ecPublicKey = /*#__PURE__*/Uint8Array.of(6, 7, 42, 134, 72, 206, 61, 2, 1);
190
+ const curveOids = {
191
+ "P-256": /*#__PURE__*/Uint8Array.of(6, 8, 42, 134, 72, 206, 61, 3, 1, 7),
192
+ "P-384": /*#__PURE__*/Uint8Array.of(6, 5, 43, 129, 4, 0, 34),
193
+ "P-521": /*#__PURE__*/Uint8Array.of(6, 5, 43, 129, 4, 0, 35)
194
+ };
195
+ const ecAlgorithm = curve => Der.encode(Der.sequence, ecPublicKey, curveOids[curve]);
196
+ const version0 = /*#__PURE__*/Uint8Array.of(2, 1, 0);
197
+ const missingPoint = {
198
+ reason: "Unsupported",
199
+ description: "EC private keys must include the public point, which Safari cannot import without"
200
+ };
201
+ // RFC 8017 appendix A.1.2 inside an RFC 5208 PrivateKeyInfo.
202
+ const pkcs1ToPkcs8 = pkcs1 => Der.readOnly(pkcs1, Der.sequence) === undefined ? {
203
+ reason: "InvalidKey",
204
+ description: "Malformed PKCS#1 RSAPrivateKey"
205
+ } : Der.encode(Der.sequence, version0, rsaEncryption, Der.encode(Der.octetString, pkcs1));
206
+ // RFC 5915: ECPrivateKey ::= SEQUENCE { version 1, privateKey OCTET STRING,
207
+ // [0] parameters OPTIONAL, [1] publicKey OPTIONAL }. PKCS#8 carries the curve
208
+ // in its AlgorithmIdentifier, so the `[0]` parameters are dropped.
209
+ const sec1ToPkcs8 = (sec1, curve) => {
210
+ const malformed = {
211
+ reason: "InvalidKey",
212
+ description: "Malformed SEC1 ECPrivateKey"
213
+ };
214
+ const outer = Der.readOnly(sec1, Der.sequence);
215
+ const fields = outer === undefined ? undefined : Der.children(sec1, outer);
216
+ if (fields === undefined || fields.length < 2) return malformed;
217
+ const [version, privateKey, ...rest] = fields;
218
+ if (version.tag !== Der.integer || privateKey.tag !== Der.octetString) return malformed;
219
+ const params = rest.find(field => field.tag === 0xa0);
220
+ const point = rest.find(field => field.tag === 0xa1);
221
+ if (params !== undefined) {
222
+ const oid = Der.read(sec1, params.start, params.end);
223
+ if (oid === undefined || oid.tag !== Der.objectIdentifier || oid.end !== params.end) return malformed;
224
+ if (!Der.equals(Der.slice(sec1, oid), curveOids[curve])) {
225
+ return {
226
+ reason: "InvalidKey",
227
+ description: `Expected a ${curve} key`
228
+ };
229
+ }
230
+ }
231
+ if (point === undefined) return missingPoint;
232
+ const ecPrivateKey = Der.encode(Der.sequence, Der.slice(sec1, version), Der.slice(sec1, privateKey), Der.slice(sec1, point));
233
+ return Der.encode(Der.sequence, version0, ecAlgorithm(curve), Der.encode(Der.octetString, ecPrivateKey));
234
+ };
235
+ // Check the algorithm before classifying a missing EC public point.
236
+ // Leave other malformed DER to the runtime's import validation.
237
+ const checkEcPkcs8 = (pkcs8, curve) => {
238
+ const outer = Der.readOnly(pkcs8, Der.sequence);
239
+ const fields = outer === undefined ? undefined : Der.children(pkcs8, outer);
240
+ if (fields === undefined || fields.length < 3) return undefined;
241
+ if (!Der.equals(Der.slice(pkcs8, fields[1]), ecAlgorithm(curve))) {
242
+ return {
243
+ reason: "InvalidKey",
244
+ description: `Expected a ${curve} EC private key`
245
+ };
246
+ }
247
+ const octets = fields[2];
248
+ if (octets.tag !== Der.octetString) return undefined;
249
+ const inner = Der.read(pkcs8, octets.start, octets.end);
250
+ if (inner === undefined || inner.tag !== Der.sequence) return undefined;
251
+ const ecFields = Der.children(pkcs8, inner);
252
+ if (ecFields === undefined) return undefined;
253
+ return ecFields.some(field => field.tag === 0xa1) ? undefined : missingPoint;
254
+ };
255
+ const ecdhAlgs = ["ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"];
256
+ const hashBits = hash => hash.name.slice(4);
257
+ const secretAlgs = {
258
+ aes128Gcm: "A128GCM",
259
+ aes256Gcm: "A256GCM",
260
+ chacha20Poly1305: "C20P",
261
+ xchacha20Poly1305: "XC20P",
262
+ aes128Ctr: "A128CTR",
263
+ aes256Ctr: "A256CTR",
264
+ aes128Cbc: "A128CBC",
265
+ aes256Cbc: "A256CBC",
266
+ hmacSha1: "HS1",
267
+ hmacSha256: "HS256",
268
+ hmacSha384: "HS384",
269
+ hmacSha512: "HS512",
270
+ aes128Kw: "A128KW",
271
+ aes256Kw: "A256KW"
272
+ };
273
+ const joseOf = algorithm => {
274
+ if (!("_tag" in algorithm) || algorithm._tag === "AesKw") {
275
+ return {
276
+ kty: "oct",
277
+ crv: undefined,
278
+ algs: [secretAlgs[algorithm.name]]
279
+ };
280
+ }
281
+ switch (algorithm._tag) {
282
+ case "Ed25519":
283
+ return {
284
+ kty: "OKP",
285
+ crv: "Ed25519",
286
+ algs: ["EdDSA", "Ed25519"]
287
+ };
288
+ case "X25519":
289
+ return {
290
+ kty: "OKP",
291
+ crv: "X25519",
292
+ algs: ecdhAlgs
293
+ };
294
+ case "Ecdsa":
295
+ return {
296
+ kty: "EC",
297
+ crv: algorithm.namedCurve,
298
+ algs: [`ES${hashBits(algorithm.hash)}`]
299
+ };
300
+ case "Ecdh":
301
+ return {
302
+ kty: "EC",
303
+ crv: algorithm.namedCurve,
304
+ algs: ecdhAlgs
305
+ };
306
+ case "RsaPss":
307
+ return {
308
+ kty: "RSA",
309
+ crv: undefined,
310
+ algs: [`PS${hashBits(algorithm.hash)}`]
311
+ };
312
+ case "RsaPkcs1v15":
313
+ return {
314
+ kty: "RSA",
315
+ crv: undefined,
316
+ algs: [`RS${hashBits(algorithm.hash)}`]
317
+ };
318
+ case "RsaOaep":
319
+ return {
320
+ kty: "RSA",
321
+ crv: undefined,
322
+ algs: [algorithm.hash.name === "SHA-1" ? "RSA-OAEP" : `RSA-OAEP-${hashBits(algorithm.hash)}`]
323
+ };
324
+ }
325
+ };
326
+ const publicMembers = ["kty", "crv", "x", "y", "n", "e"];
327
+ const privateMembers = [...publicMembers, "d", "p", "q", "dp", "dq", "qi"];
328
+ const pick = (jwk, members) => {
329
+ const out = {};
330
+ for (const member of members) {
331
+ const value = jwk[member];
332
+ if (value !== undefined) out[member] = value;
333
+ }
334
+ return out;
335
+ };
336
+ // Validate the algorithm and role, then drop JOSE metadata that could reject
337
+ // an otherwise valid import (`use`, `key_ops`, `ext`).
338
+ const checkJwk = (data, algorithm, role) => {
339
+ if (!Predicate.isObject(data)) return "Expected a JWK object";
340
+ const expected = joseOf(algorithm);
341
+ if (data.kty !== undefined && data.kty !== expected.kty) {
342
+ return `Expected a JWK with kty ${expected.kty}, not ${String(data.kty)}`;
343
+ }
344
+ if (data.crv !== undefined && data.crv !== expected.crv) {
345
+ return expected.crv === undefined ? `Expected a JWK without crv, not ${String(data.crv)}` : `Expected a JWK with crv ${expected.crv}, not ${String(data.crv)}`;
346
+ }
347
+ if (data.alg !== undefined && !expected.algs.includes(data.alg)) {
348
+ return `Expected a JWK with alg ${expected.algs.join(" or ")}, not ${String(data.alg)}`;
349
+ }
350
+ switch (role) {
351
+ case "public":
352
+ if (data.d !== undefined) return "A public JWK cannot contain d";
353
+ return pick({
354
+ ...data,
355
+ kty: expected.kty
356
+ }, publicMembers);
357
+ case "private":
358
+ if (typeof data.d !== "string") return "A private JWK must contain d";
359
+ return pick({
360
+ ...data,
361
+ kty: expected.kty
362
+ }, privateMembers);
363
+ case "secret":
364
+ if (typeof data.k !== "string") return "A secret JWK must contain k";
365
+ return {
366
+ kty: "oct",
367
+ k: data.k
368
+ };
369
+ }
370
+ };
371
+ const decodeAsymmetric = (method, role, format, algorithm, data) => Effect.suspend(() => {
372
+ const family = familyOf(algorithm);
373
+ if (family === undefined) return invalidKey(method, "Expected an asymmetric algorithm");
374
+ const spec = family.specOf(algorithm);
375
+ let input;
376
+ if (format._tag === "jwk") {
377
+ const checked = checkJwk(data, algorithm, role);
378
+ if (typeof checked === "string") return invalidKey(method, checked);
379
+ input = {
380
+ format: "jwk",
381
+ data: checked
382
+ };
383
+ } else {
384
+ let der;
385
+ if (format.pem) {
386
+ if (typeof data !== "string") return invalidKey(method, "Expected PEM text");
387
+ const decoded = fromPem(labels[format._tag], data);
388
+ if (typeof decoded === "string") return invalidKey(method, decoded);
389
+ der = decoded;
390
+ } else {
391
+ if (!(data instanceof Uint8Array)) return invalidKey(method, "Expected DER bytes as a Uint8Array");
392
+ der = KeyModel.copyBytes(data);
393
+ }
394
+ let converted = der;
395
+ if (format._tag === "pkcs1") {
396
+ converted = spec.publicFormat === "spki" ? pkcs1ToPkcs8(der) : {
397
+ reason: "InvalidKey",
398
+ description: "PKCS#1 holds RSA private keys only"
399
+ };
400
+ } else if (format._tag === "sec1") {
401
+ converted = algorithm._tag === "Ecdsa" || algorithm._tag === "Ecdh" ? sec1ToPkcs8(der, algorithm.namedCurve) : {
402
+ reason: "InvalidKey",
403
+ description: "SEC1 holds EC private keys only"
404
+ };
405
+ } else if (format._tag === "pkcs8" && (algorithm._tag === "Ecdsa" || algorithm._tag === "Ecdh")) {
406
+ converted = checkEcPkcs8(der, algorithm.namedCurve) ?? der;
407
+ }
408
+ if (!(converted instanceof Uint8Array)) {
409
+ return converted.reason === "Unsupported" ? unsupported(method, converted.description) : invalidKey(method, converted.description);
410
+ }
411
+ input = {
412
+ format: format._tag === "spki" ? "spki" : "pkcs8",
413
+ data: converted
414
+ };
415
+ }
416
+ return internal.runWithReference("KeyFormat", method, algorithm.name, async subtle => {
417
+ const usages = role === "private" ? spec.privateUsages : spec.publicUsages;
418
+ const cryptoKey = input.format === "jwk" ? await subtle.importKey("jwk", input.data, spec.importParams, true, [...usages]) : await subtle.importKey(input.format, input.data, spec.importParams, true, [...usages]);
419
+ return KeyModel.makeBytes(role === "private" ? family.privateKeyProto : family.publicKeyProto, KeyModel.importedAlgorithm(algorithm, cryptoKey), await Asymmetric.exportKey(subtle, cryptoKey, spec, role));
420
+ });
421
+ });
422
+ /**
423
+ * Decodes a public key.
424
+ *
425
+ * **Details**
426
+ *
427
+ * The format must hold public keys: {@link spki}, {@link jwk}, or
428
+ * `pem(spki)`. The key is imported on the `WebCrypto` reference and stored as
429
+ * bytes. Malformed data, a key of another algorithm or curve, or a JWK with
430
+ * `d` fails with an `InvalidKey` reason.
431
+ *
432
+ * **Example** (Reading a PEM public key)
433
+ *
434
+ * ```ts
435
+ * import { Effect } from "effect"
436
+ * import { KeyFormat, Signature } from "effect/crypto"
437
+ *
438
+ * declare const text: string
439
+ *
440
+ * const publicKey = KeyFormat.decodePublic(KeyFormat.pem(KeyFormat.spki), Signature.ecdsaP256, text)
441
+ * ```
442
+ *
443
+ * @stability unstable
444
+ * @category decoding
445
+ * @since 4.0.0
446
+ */
447
+ export const decodePublic = (format, algorithm, data) => decodeAsymmetric("decodePublic", "public", format, algorithm, data);
448
+ /**
449
+ * Decodes a private key.
450
+ *
451
+ * **Details**
452
+ *
453
+ * The format must hold private keys: {@link pkcs8}, {@link jwk},
454
+ * {@link pkcs1}, {@link sec1}, or their PEM forms. PKCS#1 and SEC1 are
455
+ * converted to PKCS#8 before the import. Malformed data, a key of another
456
+ * algorithm or curve, or a JWK without `d` fails with an `InvalidKey` reason.
457
+ * An EC private key without its public point fails with an `Unsupported`
458
+ * reason on every runtime, because Safari and Firefox before 132 cannot import
459
+ * it.
460
+ *
461
+ * @stability unstable
462
+ * @category decoding
463
+ * @since 4.0.0
464
+ */
465
+ export const decodePrivate = (format, algorithm, data) => decodeAsymmetric("decodePrivate", "private", format, algorithm, data);
466
+ /**
467
+ * Decodes a secret key from a JWK.
468
+ *
469
+ * **Details**
470
+ *
471
+ * The JWK must have `kty` `oct` when `kty` is present, and an `alg` matching
472
+ * the algorithm when `alg` is present. The key bytes go through the family's
473
+ * raw constructor, so a wrong length fails with an `InvalidKey` reason.
474
+ * Secret keys never touch `crypto.subtle` here.
475
+ *
476
+ * @stability unstable
477
+ * @category decoding
478
+ * @since 4.0.0
479
+ */
480
+ export const decodeSecret = (format, algorithm, data) => Effect.suspend(() => {
481
+ if (format._tag !== "jwk") return invalidKey("decodeSecret", "Secret keys are only read from JWK");
482
+ const checked = checkJwk(data, algorithm, "secret");
483
+ if (typeof checked === "string") return invalidKey("decodeSecret", checked);
484
+ const bytes = Base64Url.decode(checked.k);
485
+ if (Result.isFailure(bytes)) return invalidKey("decodeSecret", "The JWK k member is not valid base64url");
486
+ return KeyWrap.secretFamily(algorithm).key(algorithm, bytes.success).pipe(Effect.catch(internal.rehome("KeyFormat", "decodeSecret")));
487
+ });
488
+ const encodeAsymmetric = (format, key, family) => Effect.suspend(() => {
489
+ const spec = family.specOf(key.algorithm);
490
+ const role = family.isPrivateKey(key) ? "private" : "public";
491
+ const stored = KeyModel.material(key);
492
+ if (stored._tag === "CryptoKey" && !stored.cryptoKey.extractable) {
493
+ return internal.notExtractable("KeyFormat", "encode");
494
+ }
495
+ const target = format._tag === "jwk" ? "jwk" : format._tag === "spki" ? "spki" : "pkcs8";
496
+ if (stored._tag === "Bytes") {
497
+ // RSA keys and EC private keys are stored in the format asked for.
498
+ if (target === "pkcs8" && role === "private" && spec.seedPrefix === undefined) {
499
+ return Effect.succeed(KeyModel.copyBytes(stored.bytes));
500
+ }
501
+ if (target === "spki" && role === "public" && spec.publicFormat === "spki") {
502
+ return Effect.succeed(KeyModel.copyBytes(stored.bytes));
503
+ }
504
+ }
505
+ return internal.runWithReference("KeyFormat", "encode", key.algorithm.name, async subtle => {
506
+ const cryptoKey = stored._tag === "CryptoKey" ? stored.cryptoKey : role === "private" ? await Asymmetric.importPrivate(subtle, stored.bytes, spec, true) : await Asymmetric.importPublic(subtle, stored.bytes, spec);
507
+ if (target === "jwk") {
508
+ return pick(await subtle.exportKey("jwk", cryptoKey), role === "private" ? privateMembers : publicMembers);
509
+ }
510
+ return new Uint8Array(await subtle.exportKey(target, cryptoKey));
511
+ });
512
+ });
513
+ /**
514
+ * Encodes a key in a format.
515
+ *
516
+ * **Details**
517
+ *
518
+ * The format must hold the key's role and be writable: {@link spki} for
519
+ * public keys, {@link pkcs8} for private keys, {@link jwk} for every role,
520
+ * and the PEM forms of SPKI and PKCS#8. PKCS#1 and SEC1 cannot be written.
521
+ *
522
+ * PEM output uses 64-column lines. JWK output contains only `kty`, `crv`, and
523
+ * the key material. A non-extractable `CryptoKey`-backed key fails with a
524
+ * `NotExtractable` reason.
525
+ *
526
+ * **Example** (Writing a public key as JWK)
527
+ *
528
+ * ```ts import.meta.vitest
529
+ * import { Effect, Layer } from "effect"
530
+ * import { KeyFormat, SecureRandom, Signature } from "effect/crypto"
531
+ *
532
+ * const program = Effect.gen(function*() {
533
+ * const signature = yield* Signature.Signature
534
+ * const { publicKey } = yield* signature.generateKeyPair(Signature.ed25519)
535
+ * const jwk = yield* KeyFormat.encode(KeyFormat.jwk, publicKey)
536
+ * return [jwk.kty, jwk.crv]
537
+ * })
538
+ *
539
+ * const layer = Signature.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
540
+ * await Effect.runPromise(program.pipe(Effect.provide(layer))) // => ["OKP", "Ed25519"]
541
+ * ```
542
+ *
543
+ * @stability unstable
544
+ * @category encoding
545
+ * @since 4.0.0
546
+ */
547
+ export const encode = (format, key) => {
548
+ const generic = format;
549
+ const family = familyOf(key.algorithm);
550
+ const encoded = family !== undefined ? encodeAsymmetric(generic, key, family) : generic._tag !== "jwk" ? invalidKey("encode", "Secret keys are only written as JWK") : KeyWrap.secretFamily(key.algorithm).toBytes(key).pipe(Effect.catch(internal.rehome("KeyFormat", "encode")), Effect.map(bytes => ({
551
+ kty: "oct",
552
+ k: Base64Url.encode(bytes)
553
+ })));
554
+ return generic.pem ? Effect.map(encoded, der => toPem(labels[generic._tag], der)) : encoded;
555
+ };
556
+ //# sourceMappingURL=KeyFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyFormat.js","names":[],"sources":["../../src/crypto/KeyFormat.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}