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,324 @@
1
+ /**
2
+ * Key agreement: X25519, and ECDH on P-256, P-384 and P-521.
3
+ *
4
+ * The {@link KeyAgreement} service generates key pairs, derives a shared
5
+ * secret from a private key and a peer's public key, and computes a private
6
+ * key's public key. The top-level {@link privateKey}, {@link publicKey},
7
+ * {@link privateKeyFromCryptoKey}, {@link publicKeyFromCryptoKey}, and
8
+ * {@link toBytes} functions build and export keys without a service.
9
+ *
10
+ * Keys carry their algorithm in their type, so deriving a secret from keys on
11
+ * different curves is a type error. The shared secret is plain bytes: pass it
12
+ * through `Kdf` before using it as a key.
13
+ *
14
+ * Keys are opaque. They hold either bytes or a `CryptoKey`, display only their
15
+ * algorithm, and compare by reference. The bytes are:
16
+ *
17
+ * - X25519: the 32-byte private key and the 32-byte public key;
18
+ * - ECDH: PKCS#8 for private keys, and the uncompressed SEC1 point for public
19
+ * keys.
20
+ *
21
+ * Only X25519 private keys and X25519 and ECDH public keys have a raw
22
+ * constructor. ECDH private keys come from
23
+ * `KeyAgreement.generateKeyPair`, `CryptoKey`s, or key formats.
24
+ *
25
+ * **Gotchas**
26
+ *
27
+ * - X25519 needs Chrome 133, Firefox 130, or Safari 17. There is no fallback
28
+ * for older browsers.
29
+ * - X25519 private keys are generated from `SecureRandom` bytes, so a seeded
30
+ * `SecureRandom` reproduces them. ECDH key generation uses WebCrypto's own
31
+ * randomness and cannot be seeded.
32
+ *
33
+ * @stability unstable
34
+ * @since 4.0.0
35
+ */
36
+ import * as Context from "../Context.ts";
37
+ import * as Effect from "../Effect.ts";
38
+ import type { Inspectable } from "../Inspectable.ts";
39
+ import * as Layer from "../Layer.ts";
40
+ import * as CryptoError from "./CryptoError.ts";
41
+ import * as SecureRandom from "./SecureRandom.ts";
42
+ import * as WebCrypto from "./WebCrypto.ts";
43
+ declare const PrivateKeyTypeId: "~effect/crypto/KeyAgreement/PrivateKey";
44
+ declare const PublicKeyTypeId: "~effect/crypto/KeyAgreement/PublicKey";
45
+ /**
46
+ * An elliptic curve for ECDH.
47
+ *
48
+ * @stability unstable
49
+ * @category models
50
+ * @since 4.0.0
51
+ */
52
+ export type Curve = "P-256" | "P-384" | "P-521";
53
+ /**
54
+ * X25519 (RFC 7748), with 32-byte shared secrets.
55
+ *
56
+ * @stability unstable
57
+ * @category models
58
+ * @since 4.0.0
59
+ */
60
+ export interface X25519 {
61
+ readonly _tag: "X25519";
62
+ readonly name: "x25519";
63
+ }
64
+ /**
65
+ * ECDH on a NIST curve, with shared secrets of the curve's coordinate size.
66
+ *
67
+ * @stability unstable
68
+ * @category models
69
+ * @since 4.0.0
70
+ */
71
+ export interface Ecdh<C extends Curve = Curve> {
72
+ readonly _tag: "Ecdh";
73
+ readonly name: {
74
+ readonly "P-256": "ecdhP256";
75
+ readonly "P-384": "ecdhP384";
76
+ readonly "P-521": "ecdhP521";
77
+ }[C];
78
+ readonly namedCurve: C;
79
+ }
80
+ /**
81
+ * A key agreement algorithm, such as {@link x25519} or {@link ecdhP256}.
82
+ *
83
+ * @stability unstable
84
+ * @category models
85
+ * @since 4.0.0
86
+ */
87
+ export type Algorithm = X25519 | Ecdh;
88
+ /**
89
+ * X25519 (RFC 7748).
90
+ *
91
+ * @stability unstable
92
+ * @category algorithms
93
+ * @since 4.0.0
94
+ */
95
+ export declare const x25519: X25519;
96
+ /**
97
+ * ECDH on P-256, with 32-byte shared secrets.
98
+ *
99
+ * @stability unstable
100
+ * @category algorithms
101
+ * @since 4.0.0
102
+ */
103
+ export declare const ecdhP256: Ecdh<"P-256">;
104
+ /**
105
+ * ECDH on P-384, with 48-byte shared secrets.
106
+ *
107
+ * @stability unstable
108
+ * @category algorithms
109
+ * @since 4.0.0
110
+ */
111
+ export declare const ecdhP384: Ecdh<"P-384">;
112
+ /**
113
+ * ECDH on P-521, with 66-byte shared secrets.
114
+ *
115
+ * @stability unstable
116
+ * @category algorithms
117
+ * @since 4.0.0
118
+ */
119
+ export declare const ecdhP521: Ecdh<"P-521">;
120
+ /**
121
+ * An opaque key agreement private key for the algorithm `A`.
122
+ *
123
+ * **Details**
124
+ *
125
+ * The key holds either bytes or a `CryptoKey` from
126
+ * {@link privateKeyFromCryptoKey}. `toString`, `toJSON`, and `inspect` show
127
+ * only the algorithm. Keys compare by reference and do not implement `Equal`.
128
+ *
129
+ * @stability unstable
130
+ * @category models
131
+ * @since 4.0.0
132
+ */
133
+ export interface PrivateKey<out A extends Algorithm = Algorithm> extends Inspectable {
134
+ readonly [PrivateKeyTypeId]: typeof PrivateKeyTypeId;
135
+ readonly algorithm: A;
136
+ }
137
+ /**
138
+ * An opaque key agreement public key for the algorithm `A`.
139
+ *
140
+ * **Details**
141
+ *
142
+ * The key holds either bytes or a `CryptoKey` from
143
+ * {@link publicKeyFromCryptoKey}. Keys compare by reference and do not
144
+ * implement `Equal`.
145
+ *
146
+ * @stability unstable
147
+ * @category models
148
+ * @since 4.0.0
149
+ */
150
+ export interface PublicKey<out A extends Algorithm = Algorithm> extends Inspectable {
151
+ readonly [PublicKeyTypeId]: typeof PublicKeyTypeId;
152
+ readonly algorithm: A;
153
+ }
154
+ /**
155
+ * A private key and its public key.
156
+ *
157
+ * @stability unstable
158
+ * @category models
159
+ * @since 4.0.0
160
+ */
161
+ export interface KeyPair<out A extends Algorithm = Algorithm> {
162
+ readonly privateKey: PrivateKey<A>;
163
+ readonly publicKey: PublicKey<A>;
164
+ }
165
+ /**
166
+ * Checks whether a value is a {@link PrivateKey}.
167
+ *
168
+ * @stability unstable
169
+ * @category guards
170
+ * @since 4.0.0
171
+ */
172
+ export declare const isPrivateKey: (u: unknown) => u is PrivateKey;
173
+ /**
174
+ * Checks whether a value is a {@link PublicKey}.
175
+ *
176
+ * @stability unstable
177
+ * @category guards
178
+ * @since 4.0.0
179
+ */
180
+ export declare const isPublicKey: (u: unknown) => u is PublicKey;
181
+ declare const KeyAgreement_base: Context.ServiceClass<KeyAgreement, "effect/crypto/KeyAgreement", {
182
+ /**
183
+ * Generates a key pair. X25519 private keys are 32 bytes from
184
+ * `SecureRandom`. ECDH keys are generated by WebCrypto and exported to
185
+ * PKCS#8 and an uncompressed point.
186
+ */
187
+ readonly generateKeyPair: <A extends Algorithm>(algorithm: A) => Effect.Effect<KeyPair<A>, CryptoError.CryptoError>;
188
+ /**
189
+ * Computes the secret shared by a private key and a peer's public key on
190
+ * the same curve. A peer key that is not on the curve, or a low-order
191
+ * X25519 key that gives an all-zero secret, fails with an `InvalidKey`
192
+ * reason.
193
+ */
194
+ readonly deriveSharedSecret: <A extends Algorithm>(privateKey: PrivateKey<A>, publicKey: PublicKey<A>) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
195
+ /**
196
+ * Computes the public key of a private key. A non-extractable `CryptoKey`
197
+ * fails with a `NotExtractable` reason, since its public members cannot be
198
+ * read.
199
+ */
200
+ readonly publicKeyOf: <A extends Algorithm>(privateKey: PrivateKey<A>) => Effect.Effect<PublicKey<A>, CryptoError.CryptoError>;
201
+ }>;
202
+ /**
203
+ * Service that generates key pairs, derives shared secrets, and computes
204
+ * public keys.
205
+ *
206
+ * **Example** (Agreeing on a secret with X25519)
207
+ *
208
+ * ```ts import.meta.vitest
209
+ * import { Effect, Layer } from "effect"
210
+ * import { KeyAgreement, SecureRandom } from "effect/crypto"
211
+ *
212
+ * const program = Effect.gen(function*() {
213
+ * const keyAgreement = yield* KeyAgreement.KeyAgreement
214
+ * const alice = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
215
+ * const bob = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
216
+ * const aliceSecret = yield* keyAgreement.deriveSharedSecret(alice.privateKey, bob.publicKey)
217
+ * const bobSecret = yield* keyAgreement.deriveSharedSecret(bob.privateKey, alice.publicKey)
218
+ * return aliceSecret.every((byte, i) => byte === bobSecret[i])
219
+ * })
220
+ *
221
+ * const layer = KeyAgreement.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
222
+ * await Effect.runPromise(program.pipe(Effect.provide(layer))) // => true
223
+ * ```
224
+ *
225
+ * @stability unstable
226
+ * @category services
227
+ * @since 4.0.0
228
+ */
229
+ export declare class KeyAgreement extends KeyAgreement_base {
230
+ }
231
+ /**
232
+ * Layer that provides `KeyAgreement` on the `WebCrypto` reference.
233
+ *
234
+ * **Details**
235
+ *
236
+ * Every algorithm runs on `crypto.subtle`. The layer imports a byte-backed
237
+ * key on first use and caches the `CryptoKey`. X25519 private keys come from
238
+ * `SecureRandom`, so a seeded `SecureRandom` reproduces them.
239
+ *
240
+ * @stability unstable
241
+ * @category layers
242
+ * @since 4.0.0
243
+ */
244
+ export declare const layerWebCrypto: Layer.Layer<KeyAgreement, never, SecureRandom.SecureRandom>;
245
+ /**
246
+ * Builds an X25519 private key from its 32 bytes.
247
+ *
248
+ * **Details**
249
+ *
250
+ * The bytes are copied. Another length fails with an `InvalidKey` reason,
251
+ * including the 64-byte `private key‖public key` form libsodium uses: pass
252
+ * its first 32 bytes. ECDH private keys have no raw form, so passing them is
253
+ * a type error.
254
+ *
255
+ * @stability unstable
256
+ * @category constructors
257
+ * @since 4.0.0
258
+ */
259
+ export declare const privateKey: <A extends X25519>(algorithm: A, bytes: Uint8Array) => Effect.Effect<PrivateKey<A>, CryptoError.CryptoError>;
260
+ /**
261
+ * Builds a public key from its raw form: 32 bytes for X25519, or an
262
+ * uncompressed SEC1 point for ECDH.
263
+ *
264
+ * **Details**
265
+ *
266
+ * The bytes are copied. A wrong length, or a compressed point, fails with an
267
+ * `InvalidKey` reason. Only uncompressed points are taken because Safari and
268
+ * Firefox before 146 reject compressed ones in raw import, though they accept
269
+ * them inside SPKI: decode a compressed point with `KeyFormat.spki`. Whether a
270
+ * point is on the curve is checked when the key is first used.
271
+ *
272
+ * @stability unstable
273
+ * @category constructors
274
+ * @since 4.0.0
275
+ */
276
+ export declare const publicKey: <A extends Algorithm>(algorithm: A, bytes: Uint8Array) => Effect.Effect<PublicKey<A>, CryptoError.CryptoError>;
277
+ /**
278
+ * Builds a private key from an existing `CryptoKey`, such as a
279
+ * non-extractable one.
280
+ *
281
+ * **Details**
282
+ *
283
+ * The `CryptoKey` must be a private key of the algorithm's WebCrypto name and
284
+ * curve, with the `deriveBits` usage. Otherwise the constructor fails with an
285
+ * `InvalidKey` reason. The key must come from the `Crypto` object of the
286
+ * `WebCrypto` reference.
287
+ *
288
+ * @stability unstable
289
+ * @category constructors
290
+ * @since 4.0.0
291
+ */
292
+ export declare const privateKeyFromCryptoKey: <A extends Algorithm>(algorithm: A, cryptoKey: WebCrypto.CryptoKey) => Effect.Effect<PrivateKey<A>, CryptoError.CryptoError>;
293
+ /**
294
+ * Builds a public key from an existing `CryptoKey`.
295
+ *
296
+ * **Details**
297
+ *
298
+ * The `CryptoKey` must be a public key of the algorithm's WebCrypto name and
299
+ * curve. Public keys need no usages. Otherwise the constructor fails with an
300
+ * `InvalidKey` reason. The key must come from the `Crypto` object of the
301
+ * `WebCrypto` reference.
302
+ *
303
+ * @stability unstable
304
+ * @category constructors
305
+ * @since 4.0.0
306
+ */
307
+ export declare const publicKeyFromCryptoKey: <A extends Algorithm>(algorithm: A, cryptoKey: WebCrypto.CryptoKey) => Effect.Effect<PublicKey<A>, CryptoError.CryptoError>;
308
+ /**
309
+ * Exports a key's stored bytes.
310
+ *
311
+ * **Details**
312
+ *
313
+ * Returns a fresh `Uint8Array`: the raw key for X25519, and PKCS#8 or the
314
+ * uncompressed point for ECDH. A `CryptoKey`-backed key is exported on the
315
+ * `WebCrypto` reference, and fails with a `NotExtractable` reason when the
316
+ * `CryptoKey` is not extractable.
317
+ *
318
+ * @stability unstable
319
+ * @category converting
320
+ * @since 4.0.0
321
+ */
322
+ export declare const toBytes: (key: PrivateKey | PublicKey) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
323
+ export {};
324
+ //# sourceMappingURL=KeyAgreement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyAgreement.d.ts","sourceRoot":"","sources":["../../src/crypto/KeyAgreement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAI/C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,QAAA,MAAM,gBAAgB,EAAG,wCAAiD,CAAA;AAC1E,QAAA,MAAM,eAAe,EAAG,uCAAgD,CAAA;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,CAAC,CAAA;IAC9G,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAA;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,MAA2C,CAAA;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,OAAO,CAA2D,CAAA;AAE9F;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,OAAO,CAA2D,CAAA;AAE9F;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,OAAO,CAA2D,CAAA;AAE9F;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,WAAW;IAClF,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAA;IACpD,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,WAAW;IACjF,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,eAAe,CAAA;IAClD,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC1D,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CACjC;AAKD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,MAAO,OAAO,KAAG,CAAC,IAAI,UAAwD,CAAA;AAEvG;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,MAAO,OAAO,KAAG,CAAC,IAAI,SAAsD,CAAA;;IAsElG;;;;OAIG;8BACuB,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC;IACnH;;;;;OAKG;iCAC0B,CAAC,CAAC,SAAS,SAAS,EAC/C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KACpB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACvD;;;;OAIG;0BACmB,CAAC,CAAC,SAAS,SAAS,EACxC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KACtB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC;;AAnD3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAa,SAAQ,iBAyBA;CAAG;AAErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,CAiEtF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,MAAM,aAEL,CAAC,SACL,UAAU,KAChB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAQpD,CAAA;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,SAAS,aAChC,CAAC,SACL,UAAU,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAUnD,CAAA;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,SAAS,aAC9C,CAAC,aACD,SAAS,CAAC,SAAS,KAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CACuC,CAAA;AAE9F;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,SAAS,aAC7C,CAAC,aACD,SAAS,CAAC,SAAS,KAC7B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CACsC,CAAA;AAE5F;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO,QAAS,UAAU,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CACtE,CAAA"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Key agreement: X25519, and ECDH on P-256, P-384 and P-521.
3
+ *
4
+ * The {@link KeyAgreement} service generates key pairs, derives a shared
5
+ * secret from a private key and a peer's public key, and computes a private
6
+ * key's public key. The top-level {@link privateKey}, {@link publicKey},
7
+ * {@link privateKeyFromCryptoKey}, {@link publicKeyFromCryptoKey}, and
8
+ * {@link toBytes} functions build and export keys without a service.
9
+ *
10
+ * Keys carry their algorithm in their type, so deriving a secret from keys on
11
+ * different curves is a type error. The shared secret is plain bytes: pass it
12
+ * through `Kdf` before using it as a key.
13
+ *
14
+ * Keys are opaque. They hold either bytes or a `CryptoKey`, display only their
15
+ * algorithm, and compare by reference. The bytes are:
16
+ *
17
+ * - X25519: the 32-byte private key and the 32-byte public key;
18
+ * - ECDH: PKCS#8 for private keys, and the uncompressed SEC1 point for public
19
+ * keys.
20
+ *
21
+ * Only X25519 private keys and X25519 and ECDH public keys have a raw
22
+ * constructor. ECDH private keys come from
23
+ * `KeyAgreement.generateKeyPair`, `CryptoKey`s, or key formats.
24
+ *
25
+ * **Gotchas**
26
+ *
27
+ * - X25519 needs Chrome 133, Firefox 130, or Safari 17. There is no fallback
28
+ * for older browsers.
29
+ * - X25519 private keys are generated from `SecureRandom` bytes, so a seeded
30
+ * `SecureRandom` reproduces them. ECDH key generation uses WebCrypto's own
31
+ * randomness and cannot be seeded.
32
+ *
33
+ * @stability unstable
34
+ * @since 4.0.0
35
+ */
36
+ import * as Context from "../Context.js";
37
+ import * as Effect from "../Effect.js";
38
+ import * as Layer from "../Layer.js";
39
+ import * as Predicate from "../Predicate.js";
40
+ import * as CryptoError from "./CryptoError.js";
41
+ import * as Asymmetric from "./internal/asymmetric.js";
42
+ import * as KeyModel from "./internal/key.js";
43
+ import * as internal from "./internal/webCrypto.js";
44
+ import * as SecureRandom from "./SecureRandom.js";
45
+ import * as WebCrypto from "./WebCrypto.js";
46
+ const PrivateKeyTypeId = "~effect/crypto/KeyAgreement/PrivateKey";
47
+ const PublicKeyTypeId = "~effect/crypto/KeyAgreement/PublicKey";
48
+ /**
49
+ * X25519 (RFC 7748).
50
+ *
51
+ * @stability unstable
52
+ * @category algorithms
53
+ * @since 4.0.0
54
+ */
55
+ export const x25519 = {
56
+ _tag: "X25519",
57
+ name: "x25519"
58
+ };
59
+ /**
60
+ * ECDH on P-256, with 32-byte shared secrets.
61
+ *
62
+ * @stability unstable
63
+ * @category algorithms
64
+ * @since 4.0.0
65
+ */
66
+ export const ecdhP256 = {
67
+ _tag: "Ecdh",
68
+ name: "ecdhP256",
69
+ namedCurve: "P-256"
70
+ };
71
+ /**
72
+ * ECDH on P-384, with 48-byte shared secrets.
73
+ *
74
+ * @stability unstable
75
+ * @category algorithms
76
+ * @since 4.0.0
77
+ */
78
+ export const ecdhP384 = {
79
+ _tag: "Ecdh",
80
+ name: "ecdhP384",
81
+ namedCurve: "P-384"
82
+ };
83
+ /**
84
+ * ECDH on P-521, with 66-byte shared secrets.
85
+ *
86
+ * @stability unstable
87
+ * @category algorithms
88
+ * @since 4.0.0
89
+ */
90
+ export const ecdhP521 = {
91
+ _tag: "Ecdh",
92
+ name: "ecdhP521",
93
+ namedCurve: "P-521"
94
+ };
95
+ const PrivateKeyProto = /*#__PURE__*/KeyModel.redactedProto(PrivateKeyTypeId, "KeyAgreement.PrivateKey");
96
+ const PublicKeyProto = /*#__PURE__*/KeyModel.redactedProto(PublicKeyTypeId, "KeyAgreement.PublicKey");
97
+ /**
98
+ * Checks whether a value is a {@link PrivateKey}.
99
+ *
100
+ * @stability unstable
101
+ * @category guards
102
+ * @since 4.0.0
103
+ */
104
+ export const isPrivateKey = u => Predicate.hasProperty(u, PrivateKeyTypeId);
105
+ /**
106
+ * Checks whether a value is a {@link PublicKey}.
107
+ *
108
+ * @stability unstable
109
+ * @category guards
110
+ * @since 4.0.0
111
+ */
112
+ export const isPublicKey = u => Predicate.hasProperty(u, PublicKeyTypeId);
113
+ const specOf = algorithm => algorithm._tag === "X25519" ? {
114
+ name: "X25519",
115
+ importParams: {
116
+ name: "X25519"
117
+ },
118
+ privateUsages: ["deriveBits"],
119
+ publicUsages: [],
120
+ seedPrefix: Asymmetric.x25519Prefix,
121
+ publicFormat: "raw"
122
+ } : {
123
+ name: "ECDH",
124
+ importParams: {
125
+ name: "ECDH",
126
+ namedCurve: algorithm.namedCurve
127
+ },
128
+ privateUsages: ["deriveBits"],
129
+ publicUsages: [],
130
+ seedPrefix: undefined,
131
+ publicFormat: "raw",
132
+ check: Asymmetric.checkNamedCurve(algorithm.namedCurve)
133
+ };
134
+ /** @internal */
135
+ export const family = {
136
+ module: "KeyAgreement",
137
+ specOf,
138
+ privateKeyProto: PrivateKeyProto,
139
+ publicKeyProto: PublicKeyProto,
140
+ isPrivateKey
141
+ };
142
+ // P-521 coordinates are 521 bits, padded to 66 bytes.
143
+ const sharedSecretBits = algorithm => algorithm._tag === "X25519" ? 256 : 8 * Asymmetric.coordinateSizes[algorithm.namedCurve];
144
+ const invalidPeer = (description, cause) => new CryptoError.CryptoError({
145
+ module: "KeyAgreement",
146
+ method: "deriveSharedSecret",
147
+ reason: new CryptoError.InvalidKey(cause === undefined ? {
148
+ description
149
+ } : {
150
+ description,
151
+ cause
152
+ })
153
+ });
154
+ /**
155
+ * Service that generates key pairs, derives shared secrets, and computes
156
+ * public keys.
157
+ *
158
+ * **Example** (Agreeing on a secret with X25519)
159
+ *
160
+ * ```ts import.meta.vitest
161
+ * import { Effect, Layer } from "effect"
162
+ * import { KeyAgreement, SecureRandom } from "effect/crypto"
163
+ *
164
+ * const program = Effect.gen(function*() {
165
+ * const keyAgreement = yield* KeyAgreement.KeyAgreement
166
+ * const alice = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
167
+ * const bob = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
168
+ * const aliceSecret = yield* keyAgreement.deriveSharedSecret(alice.privateKey, bob.publicKey)
169
+ * const bobSecret = yield* keyAgreement.deriveSharedSecret(bob.privateKey, alice.publicKey)
170
+ * return aliceSecret.every((byte, i) => byte === bobSecret[i])
171
+ * })
172
+ *
173
+ * const layer = KeyAgreement.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
174
+ * await Effect.runPromise(program.pipe(Effect.provide(layer))) // => true
175
+ * ```
176
+ *
177
+ * @stability unstable
178
+ * @category services
179
+ * @since 4.0.0
180
+ */
181
+ export class KeyAgreement extends /*#__PURE__*/Context.Service()("effect/crypto/KeyAgreement") {}
182
+ /**
183
+ * Layer that provides `KeyAgreement` on the `WebCrypto` reference.
184
+ *
185
+ * **Details**
186
+ *
187
+ * Every algorithm runs on `crypto.subtle`. The layer imports a byte-backed
188
+ * key on first use and caches the `CryptoKey`. X25519 private keys come from
189
+ * `SecureRandom`, so a seeded `SecureRandom` reproduces them.
190
+ *
191
+ * @stability unstable
192
+ * @category layers
193
+ * @since 4.0.0
194
+ */
195
+ export const layerWebCrypto = /*#__PURE__*/Layer.effect(KeyAgreement, /*#__PURE__*/Effect.gen(function* () {
196
+ const random = yield* SecureRandom.SecureRandom;
197
+ const crypto = yield* WebCrypto.WebCrypto;
198
+ const caches = Asymmetric.makeCaches(family);
199
+ return KeyAgreement.of({
200
+ generateKeyPair: algorithm => Asymmetric.generateKeyPair(family, crypto, random, algorithm, specOf(algorithm).importParams),
201
+ deriveSharedSecret: (privateKey, publicKey) => Effect.suspend(() => {
202
+ const algorithm = privateKey.algorithm;
203
+ // The types keep curves apart, but keys typed with the default
204
+ // `Algorithm` can still differ at run time.
205
+ if (algorithm.name !== publicKey.algorithm.name) {
206
+ return Effect.fail(invalidPeer(`Expected a ${algorithm.name} public key, not ${publicKey.algorithm.name}`));
207
+ }
208
+ const onError = cause => Asymmetric.publicKeyError("KeyAgreement", "deriveSharedSecret", publicKey, cause);
209
+ // The keys are imported before deriving, so an `OperationError` from
210
+ // `deriveBits` can only come from the peer key.
211
+ return internal.run("KeyAgreement", "deriveSharedSecret", algorithm.name, crypto, async subtle => ({
212
+ privateKey: await caches.privateKey(subtle, privateKey),
213
+ publicKey: await caches.publicKey(subtle, publicKey)
214
+ }), onError).pipe(Effect.flatMap(keys => internal.run("KeyAgreement", "deriveSharedSecret", algorithm.name, crypto, async subtle => new Uint8Array(await subtle.deriveBits({
215
+ name: specOf(algorithm).name,
216
+ public: keys.publicKey
217
+ }, keys.privateKey, sharedSecretBits(algorithm))), cause => internal.isOperationError(cause) ? invalidPeer("Invalid peer public key", cause) : onError(cause))), Effect.flatMap(secret =>
218
+ // RFC 7748, section 6.1: an all-zero X25519 output means the peer
219
+ // sent a low-order point, and protocols such as SSH must abort.
220
+ algorithm._tag === "X25519" && secret.every(byte => byte === 0) ? Effect.fail(invalidPeer("X25519 shared secret must not be all zeros")) : Effect.succeed(secret)));
221
+ }),
222
+ publicKeyOf: privateKey => Asymmetric.publicKeyOf(family, crypto, privateKey)
223
+ });
224
+ }));
225
+ /**
226
+ * Builds an X25519 private key from its 32 bytes.
227
+ *
228
+ * **Details**
229
+ *
230
+ * The bytes are copied. Another length fails with an `InvalidKey` reason,
231
+ * including the 64-byte `private key‖public key` form libsodium uses: pass
232
+ * its first 32 bytes. ECDH private keys have no raw form, so passing them is
233
+ * a type error.
234
+ *
235
+ * @stability unstable
236
+ * @category constructors
237
+ * @since 4.0.0
238
+ */
239
+ export const privateKey = (algorithm, bytes) => KeyModel.fromBytes("KeyAgreement", "privateKey", PrivateKeyProto, algorithm, bytes, Asymmetric.checkSeedLength("X25519", "private"));
240
+ /**
241
+ * Builds a public key from its raw form: 32 bytes for X25519, or an
242
+ * uncompressed SEC1 point for ECDH.
243
+ *
244
+ * **Details**
245
+ *
246
+ * The bytes are copied. A wrong length, or a compressed point, fails with an
247
+ * `InvalidKey` reason. Only uncompressed points are taken because Safari and
248
+ * Firefox before 146 reject compressed ones in raw import, though they accept
249
+ * them inside SPKI: decode a compressed point with `KeyFormat.spki`. Whether a
250
+ * point is on the curve is checked when the key is first used.
251
+ *
252
+ * @stability unstable
253
+ * @category constructors
254
+ * @since 4.0.0
255
+ */
256
+ export const publicKey = (algorithm, bytes) => KeyModel.fromBytes("KeyAgreement", "publicKey", PublicKeyProto, algorithm, bytes, algorithm._tag === "Ecdh" ? Asymmetric.checkPoint(algorithm.namedCurve) : Asymmetric.checkSeedLength("X25519", "public"));
257
+ /**
258
+ * Builds a private key from an existing `CryptoKey`, such as a
259
+ * non-extractable one.
260
+ *
261
+ * **Details**
262
+ *
263
+ * The `CryptoKey` must be a private key of the algorithm's WebCrypto name and
264
+ * curve, with the `deriveBits` usage. Otherwise the constructor fails with an
265
+ * `InvalidKey` reason. The key must come from the `Crypto` object of the
266
+ * `WebCrypto` reference.
267
+ *
268
+ * @stability unstable
269
+ * @category constructors
270
+ * @since 4.0.0
271
+ */
272
+ export const privateKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "privateKeyFromCryptoKey", algorithm, "private", cryptoKey);
273
+ /**
274
+ * Builds a public key from an existing `CryptoKey`.
275
+ *
276
+ * **Details**
277
+ *
278
+ * The `CryptoKey` must be a public key of the algorithm's WebCrypto name and
279
+ * curve. Public keys need no usages. Otherwise the constructor fails with an
280
+ * `InvalidKey` reason. The key must come from the `Crypto` object of the
281
+ * `WebCrypto` reference.
282
+ *
283
+ * @stability unstable
284
+ * @category constructors
285
+ * @since 4.0.0
286
+ */
287
+ export const publicKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "publicKeyFromCryptoKey", algorithm, "public", cryptoKey);
288
+ /**
289
+ * Exports a key's stored bytes.
290
+ *
291
+ * **Details**
292
+ *
293
+ * Returns a fresh `Uint8Array`: the raw key for X25519, and PKCS#8 or the
294
+ * uncompressed point for ECDH. A `CryptoKey`-backed key is exported on the
295
+ * `WebCrypto` reference, and fails with a `NotExtractable` reason when the
296
+ * `CryptoKey` is not extractable.
297
+ *
298
+ * @stability unstable
299
+ * @category converting
300
+ * @since 4.0.0
301
+ */
302
+ export const toBytes = key => Asymmetric.toBytes(family, key);
303
+ //# sourceMappingURL=KeyAgreement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyAgreement.js","names":[],"sources":["../../src/crypto/KeyAgreement.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,OAAO,KAAK,OAAO,MAAM,eAAe;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc;AAEtC,OAAO,KAAK,KAAK,MAAM,aAAa;AACpC,OAAO,KAAK,SAAS,MAAM,iBAAiB;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB;AAC/C,OAAO,KAAK,UAAU,MAAM,0BAA0B;AACtD,OAAO,KAAK,QAAQ,MAAM,mBAAmB;AAC7C,OAAO,KAAK,QAAQ,MAAM,yBAAyB;AACnD,OAAO,KAAK,YAAY,MAAM,mBAAmB;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB;AAE3C,MAAM,gBAAgB,GAAG,wCAAiD;AAC1E,MAAM,eAAe,GAAG,uCAAgD;AA6CxE;;;;;;;AAOA,OAAO,MAAM,MAAM,GAAW;EAAE,IAAI,EAAE,QAAQ;EAAE,IAAI,EAAE;AAAQ,CAAE;AAEhE;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAE9F;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAE9F;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAkD9F,MAAM,eAAe,gBAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;AAC3F,MAAM,cAAc,gBAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,wBAAwB,CAAC;AAExF;;;;;;;AAOA,OAAO,MAAM,YAAY,GAAI,CAAU,IAAsB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,gBAAgB,CAAC;AAEvG;;;;;;;AAOA,OAAO,MAAM,WAAW,GAAI,CAAU,IAAqB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC;AAEpG,MAAM,MAAM,GAAI,SAAoB,IAClC,SAAS,CAAC,IAAI,KAAK,QAAQ,GACvB;EACA,IAAI,EAAE,QAAQ;EACd,YAAY,EAAE;IAAE,IAAI,EAAE;EAAQ,CAAE;EAChC,aAAa,EAAE,CAAC,YAAY,CAAC;EAC7B,YAAY,EAAE,EAAE;EAChB,UAAU,EAAE,UAAU,CAAC,YAAY;EACnC,YAAY,EAAE;CACf,GACC;EACA,IAAI,EAAE,MAAM;EACZ,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM;IAAE,UAAU,EAAE,SAAS,CAAC;EAAU,CAAE;EAChE,aAAa,EAAE,CAAC,YAAY,CAAC;EAC7B,YAAY,EAAE,EAAE;EAChB,UAAU,EAAE,SAAS;EACrB,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU;CACvD;AAEL;AACA,OAAO,MAAM,MAAM,GAAsB;EACvC,MAAM,EAAE,cAAc;EACtB,MAAM;EACN,eAAe,EAAE,eAAe;EAChC,cAAc,EAAE,cAAc;EAC9B;CACD;AAED;AACA,MAAM,gBAAgB,GAAI,SAAoB,IAC5C,SAAS,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC;AAE1F,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAE,KAAe,KACvD,IAAI,WAAW,CAAC,WAAW,CAAC;EAC1B,MAAM,EAAE,cAAc;EACtB,MAAM,EAAE,oBAAoB;EAC5B,MAAM,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG;IAAE;EAAW,CAAE,GAAG;IAAE,WAAW;IAAE;EAAK,CAAE;CAClG,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAM,MAAO,YAAa,sBAAQ,OAAO,CAAC,OAAO,EAyB7C,CAAC,4BAA4B,CAAC;AAElC;;;;;;;;;;;;;AAaA,OAAO,MAAM,cAAc,gBAAgE,KAAK,CAAC,MAAM,CACrG,YAAY,eACZ,MAAM,CAAC,GAAG,CAAC,aAAS;EAClB,MAAM,MAAM,GAAG,OAAO,YAAY,CAAC,YAAY;EAC/C,MAAM,MAAM,GAAG,OAAO,SAAS,CAAC,SAAS;EACzC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;EAC5C,OAAO,YAAY,CAAC,EAAE,CAAC;IACrB,eAAe,EAAwB,SAAY,IACjD,UAAU,CAAC,eAAe,CAAa,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;IAC3G,kBAAkB,EAAE,CAAC,UAAU,EAAE,SAAS,KACxC,MAAM,CAAC,OAAO,CAAC,MAAK;MAClB,MAAM,SAAS,GAAc,UAAU,CAAC,SAAS;MACjD;MACA;MACA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;QAC/C,OAAO,MAAM,CAAC,IAAI,CAChB,WAAW,CAAC,cAAc,SAAS,CAAC,IAAI,oBAAoB,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CACxF;MACH;MACA,MAAM,OAAO,GAAI,KAAc,IAC7B,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,CAAC;MACnF;MACA;MACA,OAAO,QAAQ,CAAC,GAAG,CACjB,cAAc,EACd,oBAAoB,EACpB,SAAS,CAAC,IAAI,EACd,MAAM,EACN,MAAO,MAAM,KAAM;QACjB,UAAU,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACvD,SAAS,EAAE,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS;OACpD,CAAC,EACF,OAAO,CACR,CAAC,IAAI,CACJ,MAAM,CAAC,OAAO,CAAE,IAAI,IAClB,QAAQ,CAAC,GAAG,CACV,cAAc,EACd,oBAAoB,EACpB,SAAS,CAAC,IAAI,EACd,MAAM,EACN,MAAO,MAAM,IACX,IAAI,UAAU,CACZ,MAAM,MAAM,CAAC,UAAU,CACrB;QAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI;QAAE,MAAM,EAAE,IAAI,CAAC;MAAS,CAAE,EACxD,IAAI,CAAC,UAAU,EACf,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CACF,EACF,KAAK,IACJ,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,yBAAyB,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CACpG,CACF,EACD,MAAM,CAAC,OAAO,CAAE,MAAM;MACpB;MACA;MACA,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAE,IAAI,IAAK,IAAI,KAAK,CAAC,CAAC,GAC7D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,GACtE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAC3B,CACF;IACH,CAAC,CAAC;IACJ,WAAW,EAAwB,UAAyB,IAC1D,UAAU,CAAC,WAAW,CAAe,MAAM,EAAE,MAAM,EAAE,UAAU;GAClE,CAAC;AACJ,CAAC,CAAC,CACH;AAED;;;;;;;;;;;;;;AAcA,OAAO,MAAM,UAAU,GAAG,CAGxB,SAAY,EACZ,KAAiB,KAEjB,QAAQ,CAAC,SAAS,CAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,SAAS,EACT,KAAK,EACL,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAChD;AAEH;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAM,SAAS,GAAG,CACvB,SAAY,EACZ,KAAiB,KAEjB,QAAQ,CAAC,SAAS,CAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,EACL,SAAS,CAAC,IAAI,KAAK,MAAM,GACrB,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAC3C,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACnD;AAEH;;;;;;;;;;;;;;;AAeA,OAAO,MAAM,uBAAuB,GAAG,CACrC,SAAY,EACZ,SAA8B,KAE9B,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAE9F;;;;;;;;;;;;;;AAcA,OAAO,MAAM,sBAAsB,GAAG,CACpC,SAAY,EACZ,SAA8B,KAE9B,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,wBAAwB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAE5F;;;;;;;;;;;;;;AAcA,OAAO,MAAM,OAAO,GAAI,GAA2B,IACjD,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC","ignoreList":[]}