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
@@ -521,12 +521,12 @@ export const makeStorage = Effect.fnUntraced(function*(options?: StorageOptions)
521
521
  primary_key: entry.primaryKey,
522
522
  payload: entry.payload
523
523
  })
524
- if (rowsForInsert.length >= insertBatchSize) {
524
+ if (rowsForInsert.length >= insertBatchSize && Arr.isArrayNonEmpty(rowsForInsert)) {
525
525
  yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`
526
526
  rowsForInsert = []
527
527
  }
528
528
  }
529
- if (rowsForInsert.length > 0) {
529
+ if (Arr.isArrayNonEmpty(rowsForInsert)) {
530
530
  yield* sql`INSERT INTO ${entriesTableSql} ${sql.insert(rowsForInsert)}`
531
531
  }
532
532
  const nextSequence = currentNextSequence + entries.length
@@ -0,0 +1,30 @@
1
+ import type { NonEmptyArray } from "../../Array.ts"
2
+ import type { Entry } from "../EventJournal.ts"
3
+
4
+ /** The most entries a remote batch holds. */
5
+ export const maxBatchEntries = 100
6
+
7
+ /** The most payload bytes a remote batch holds, unless it is a single entry. */
8
+ export const maxBatchPayloadBytes = 256 * 1024
9
+
10
+ /**
11
+ * Packs entries into batches of at most `maxBatchEntries` entries and
12
+ * `maxBatchPayloadBytes` of payload. A larger entry is a batch on its own.
13
+ */
14
+ export const toBatches = (entries: ReadonlyArray<Entry>): Array<NonEmptyArray<Entry>> => {
15
+ const batches: Array<NonEmptyArray<Entry>> = []
16
+ let current: Array<Entry> = []
17
+ let bytes = 0
18
+ for (const entry of entries) {
19
+ const size = entry.payload.byteLength
20
+ if (current.length > 0 && (current.length === maxBatchEntries || bytes + size > maxBatchPayloadBytes)) {
21
+ batches.push(current as NonEmptyArray<Entry>)
22
+ current = []
23
+ bytes = 0
24
+ }
25
+ current.push(entry)
26
+ bytes += size
27
+ }
28
+ if (current.length > 0) batches.push(current as NonEmptyArray<Entry>)
29
+ return batches
30
+ }
@@ -0,0 +1,64 @@
1
+ import * as Effect from "../../Effect.ts"
2
+ import type { StoreId } from "../EventLogMessage.ts"
3
+
4
+ /** Rules and audit logs shared by the memory and SQL compaction storages. */
5
+
6
+ export const hourMillis = 60 * 60 * 1000
7
+
8
+ /** The newest storage-time hour that ended at least `lagMillis` ago. */
9
+ export const lagHour = (now: number, lagMillis: number): number => Math.floor((now - lagMillis) / hourMillis) - 1
10
+
11
+ /** A staged batch's position packs its segment index and its index in the segment. */
12
+ export const positionsPerSegment = 2 ** 20
13
+ export const maxSegments = Math.floor(Number.MAX_SAFE_INTEGER / positionsPerSegment)
14
+
15
+ const service = "EventLogServerEncrypted"
16
+
17
+ export const logCommit = (options: {
18
+ readonly publicKey: string
19
+ readonly storeId: StoreId
20
+ readonly result: "Committed" | "Superseded"
21
+ readonly through: number
22
+ readonly keptCount: number
23
+ readonly activationId: string | undefined
24
+ }): Effect.Effect<void> =>
25
+ Effect.logInfo(
26
+ options.result === "Committed" ? "Committed compaction snapshot" : "Compaction snapshot superseded"
27
+ ).pipe(
28
+ Effect.annotateLogs({
29
+ service,
30
+ publicKey: options.publicKey,
31
+ storeId: options.storeId,
32
+ keptCount: options.keptCount,
33
+ through: options.through,
34
+ activationId: options.activationId
35
+ })
36
+ )
37
+
38
+ export const logNoOp = (options: {
39
+ readonly publicKey: string
40
+ readonly storeId: StoreId
41
+ readonly stageId: string
42
+ readonly through: number
43
+ }): Effect.Effect<void> =>
44
+ Effect.logInfo("Committed compaction no-op").pipe(Effect.annotateLogs({ service, ...options }))
45
+
46
+ export const logRollback = (options: {
47
+ readonly publicKey: string
48
+ readonly storeId: StoreId
49
+ readonly activation: { readonly id: string; readonly base: number; readonly keptCount: number | undefined }
50
+ readonly withdrawn: { readonly id: string; readonly base: number; readonly keptCount: number | undefined }
51
+ }): Effect.Effect<void> =>
52
+ Effect.logInfo("Rolled back compaction snapshot").pipe(
53
+ Effect.annotateLogs({
54
+ service,
55
+ publicKey: options.publicKey,
56
+ storeId: options.storeId,
57
+ keptCount: options.activation.keptCount,
58
+ base: options.activation.base,
59
+ activationId: options.activation.id,
60
+ withdrawnActivationId: options.withdrawn.id,
61
+ withdrawnBase: options.withdrawn.base,
62
+ withdrawnKeptCount: options.withdrawn.keptCount
63
+ })
64
+ )
@@ -1,30 +1,16 @@
1
+ import * as Aead from "../../crypto/Aead.ts"
2
+ import * as Digest from "../../crypto/Digest.ts"
3
+ import * as KeyFormat from "../../crypto/KeyFormat.ts"
4
+ import * as SecureRandom from "../../crypto/SecureRandom.ts"
5
+ import * as Signature from "../../crypto/Signature.ts"
6
+ import * as WebCrypto from "../../crypto/WebCrypto.ts"
1
7
  import * as Effect from "../../Effect.ts"
8
+ import * as Layer from "../../Layer.ts"
2
9
  import * as Redacted from "../../Redacted.ts"
3
10
  import type { Identity } from "../EventLog.ts"
4
11
 
5
12
  const textEncoder = new TextEncoder()
6
13
 
7
- const Ed25519PublicKeyLength = 32
8
-
9
- const Ed25519Pkcs8SeedPrefix = Uint8Array.from([
10
- 0x30,
11
- 0x2e,
12
- 0x02,
13
- 0x01,
14
- 0x00,
15
- 0x30,
16
- 0x05,
17
- 0x06,
18
- 0x03,
19
- 0x2b,
20
- 0x65,
21
- 0x70,
22
- 0x04,
23
- 0x22,
24
- 0x04,
25
- 0x20
26
- ])
27
-
28
14
  /**
29
15
  * @internal
30
16
  */
@@ -40,124 +26,108 @@ export const SigningDerivationLabelV1 = "effect/eventlog/identity/v1/signing"
40
26
  */
41
27
  export interface IdentityRootSecretMaterial {
42
28
  readonly encryptionKeyMaterial: Uint8Array<ArrayBuffer>
43
- readonly encryptionKey: CryptoKey
29
+ readonly encryptionKey: Aead.Key<Aead.AesGcm>
44
30
  readonly signingPublicKey: Uint8Array<ArrayBuffer>
31
+ /**
32
+ * The PKCS#8 encoding of the Ed25519 signing key.
33
+ */
45
34
  readonly signingPrivateKey: Redacted.Redacted<Uint8Array<ArrayBuffer>>
46
35
  }
47
36
 
48
- const toArrayBuffer = (data: Uint8Array): ArrayBuffer => {
49
- const copy = new Uint8Array(data.byteLength)
50
- copy.set(data)
51
- return copy.buffer
52
- }
53
-
54
- const decodeBase64Url = (value: string): Uint8Array<ArrayBuffer> => {
55
- const normalized = value.replaceAll("-", "+").replaceAll("_", "/")
56
- const remainder = normalized.length % 4
57
- const padded = remainder === 0 ? normalized : `${normalized}${"=".repeat(4 - remainder)}`
58
- const decoded = atob(padded)
59
- const bytes = new Uint8Array(decoded.length)
60
- for (let i = 0; i < decoded.length; i++) {
61
- bytes[i] = decoded.charCodeAt(i)
62
- }
63
- return bytes
64
- }
65
-
66
- const makeEd25519Pkcs8FromSeed = (seed: Uint8Array): Uint8Array<ArrayBuffer> => {
67
- const key = new Uint8Array(Ed25519Pkcs8SeedPrefix.byteLength + seed.byteLength)
68
- key.set(Ed25519Pkcs8SeedPrefix, 0)
69
- key.set(seed, Ed25519Pkcs8SeedPrefix.byteLength)
70
- return key
71
- }
72
-
73
- const deriveSecretBytes = Effect.fnUntraced(function*(options: {
74
- readonly crypto: Crypto
75
- readonly rootSecret: Uint8Array
76
- readonly label: string
77
- }) {
78
- const labelBytes = textEncoder.encode(options.label)
79
- const derivationInput = new Uint8Array(labelBytes.byteLength + 1 + options.rootSecret.byteLength)
80
- derivationInput.set(labelBytes, 0)
81
- derivationInput[labelBytes.byteLength] = 0
82
- derivationInput.set(options.rootSecret, labelBytes.byteLength + 1)
83
-
84
- const digest = yield* Effect.promise(() => options.crypto.subtle.digest("SHA-256", toArrayBuffer(derivationInput)))
37
+ // The crypto services return fresh arrays over an `ArrayBuffer`.
38
+ const toArrayBufferBytes = (bytes: Uint8Array) => bytes as Uint8Array<ArrayBuffer>
39
+
40
+ // Each secret is SHA-256(label || 0x00 || root secret).
41
+ const deriveSecretBytes = (rootSecret: Uint8Array, label: string): Effect.Effect<Uint8Array, never, Digest.Digest> =>
42
+ Digest.Digest.use((digest) => {
43
+ const labelBytes = textEncoder.encode(label)
44
+ const derivationInput = new Uint8Array(labelBytes.byteLength + 1 + rootSecret.byteLength)
45
+ derivationInput.set(labelBytes, 0)
46
+ derivationInput.set(rootSecret, labelBytes.byteLength + 1)
47
+ return digest.digest(Digest.sha256, derivationInput)
48
+ })
85
49
 
86
- return new Uint8Array(digest)
50
+ /**
51
+ * Derives the AES-256-GCM key that encrypts an identity's entries.
52
+ *
53
+ * @internal
54
+ */
55
+ export const deriveEncryptionKey = Effect.fnUntraced(function*(rootSecret: Uint8Array) {
56
+ const encryptionKeyMaterial = yield* deriveSecretBytes(rootSecret, EncryptionDerivationLabelV1)
57
+ const encryptionKey = yield* Effect.orDie(Aead.key(Aead.aes256Gcm, encryptionKeyMaterial))
58
+ return { encryptionKeyMaterial: toArrayBufferBytes(encryptionKeyMaterial), encryptionKey }
87
59
  })
88
60
 
89
61
  /**
62
+ * Derives the Ed25519 key an identity signs session authentication payloads
63
+ * with.
64
+ *
90
65
  * @internal
91
66
  */
92
- export const deriveIdentityRootSecretMaterial = Effect.fnUntraced(function*(options: {
93
- readonly crypto: Crypto
94
- readonly rootSecret: Uint8Array
95
- }) {
96
- const encryptionKeyMaterial = yield* deriveSecretBytes({
97
- crypto: options.crypto,
98
- rootSecret: options.rootSecret,
99
- label: EncryptionDerivationLabelV1
100
- })
101
- const signingSeed = yield* deriveSecretBytes({
102
- crypto: options.crypto,
103
- rootSecret: options.rootSecret,
104
- label: SigningDerivationLabelV1
105
- })
106
-
107
- const signingPrivateKeyBytes = makeEd25519Pkcs8FromSeed(signingSeed)
108
-
109
- const encryptionKey = yield* Effect.promise(() =>
110
- options.crypto.subtle.importKey("raw", toArrayBuffer(encryptionKeyMaterial), "AES-GCM", true, [
111
- "encrypt",
112
- "decrypt"
113
- ])
114
- )
115
- const signingPrivateKey = yield* Effect.promise(() =>
116
- options.crypto.subtle.importKey("pkcs8", toArrayBuffer(signingPrivateKeyBytes), "Ed25519", true, ["sign"])
117
- )
118
- const signingJwk = yield* Effect.promise(() => options.crypto.subtle.exportKey("jwk", signingPrivateKey))
119
-
120
- if (typeof signingJwk.x !== "string") {
121
- return yield* Effect.die(new Error("Unable to export deterministic Ed25519 public key"))
122
- }
123
-
124
- const signingPublicKey = decodeBase64Url(signingJwk.x)
125
-
126
- if (signingPublicKey.byteLength !== Ed25519PublicKeyLength) {
127
- return yield* Effect.die(
128
- new Error(`Expected derived signing public key to be ${Ed25519PublicKeyLength} bytes`)
129
- )
130
- }
131
-
67
+ const deriveSigningKey = Effect.fnUntraced(function*(rootSecret: Uint8Array) {
68
+ const signature = yield* Signature.Signature
69
+ const seed = yield* deriveSecretBytes(rootSecret, SigningDerivationLabelV1)
70
+ const privateKey = yield* Signature.privateKey(Signature.ed25519, seed)
71
+ const signingPublicKey = yield* Effect.flatMap(signature.publicKeyOf(privateKey), Signature.toBytes)
72
+ const signingPrivateKey = yield* KeyFormat.encode(KeyFormat.pkcs8, privateKey)
132
73
  return {
133
- encryptionKeyMaterial,
134
- encryptionKey,
135
- signingPublicKey,
136
- signingPrivateKey: Redacted.make(signingPrivateKeyBytes)
137
- } satisfies IdentityRootSecretMaterial
138
- })
74
+ signingPublicKey: toArrayBufferBytes(signingPublicKey),
75
+ signingPrivateKey: Redacted.make(toArrayBufferBytes(signingPrivateKey))
76
+ }
77
+ }, Effect.orDie)
139
78
 
140
79
  /**
141
80
  * @internal
142
81
  */
143
- export const makeGetIdentityRootSecretMaterial = (crypto: Crypto) => {
144
- const cache = new WeakMap<Identity["Service"], IdentityRootSecretMaterial>()
82
+ export const deriveIdentityRootSecretMaterial = (
83
+ rootSecret: Uint8Array
84
+ ): Effect.Effect<IdentityRootSecretMaterial, never, Digest.Digest | Signature.Signature> =>
85
+ Effect.zipWith(deriveEncryptionKey(rootSecret), deriveSigningKey(rootSecret), (encryption, signing) => ({
86
+ ...encryption,
87
+ ...signing
88
+ }))
145
89
 
146
- return Effect.fnUntraced(function*(identity: Identity["Service"]) {
147
- const cached = cache.get(identity)
148
- if (cached !== undefined) {
149
- return cached
150
- }
151
-
152
- const derived = yield* deriveIdentityRootSecretMaterial({
153
- crypto,
154
- rootSecret: Redacted.value(identity.privateKey)
90
+ /**
91
+ * Memoizes a derivation from an identity's root secret per identity instance.
92
+ *
93
+ * @internal
94
+ */
95
+ export const cachedByIdentity = <A, R>(
96
+ derive: (rootSecret: Uint8Array) => Effect.Effect<A, never, R>
97
+ ) => {
98
+ const cache = new WeakMap<Identity["Service"], A>()
99
+ return (identity: Identity["Service"]): Effect.Effect<A, never, R> =>
100
+ Effect.suspend(() => {
101
+ const cached = cache.get(identity)
102
+ if (cached !== undefined) {
103
+ return Effect.succeed(cached)
104
+ }
105
+ return Effect.tap(derive(Redacted.value(identity.privateKey)), (derived) =>
106
+ Effect.sync(() => {
107
+ cache.set(identity, derived)
108
+ }))
155
109
  })
110
+ }
156
111
 
157
- yield* Effect.sync(() => {
158
- cache.set(identity, derived)
159
- })
112
+ const layerWebCrypto = Layer.mergeAll(Digest.layerWebCrypto, Signature.layerWebCrypto).pipe(
113
+ Layer.provide(SecureRandom.layerWebCrypto)
114
+ )
160
115
 
161
- return derived
162
- })
163
- }
116
+ /**
117
+ * Derives identity material on the Web Crypto layers, using `crypto` when it
118
+ * is given and the `WebCrypto` reference otherwise.
119
+ *
120
+ * @internal
121
+ */
122
+ export const makeGetIdentityRootSecretMaterial = (crypto?: Crypto) =>
123
+ cachedByIdentity((rootSecret) =>
124
+ crypto === undefined
125
+ ? Effect.provide(deriveIdentityRootSecretMaterial(rootSecret), layerWebCrypto)
126
+ // `local` keeps enclosing Web Crypto layers, built on another `Crypto`,
127
+ // from being reused.
128
+ : Effect.provide(
129
+ deriveIdentityRootSecretMaterial(rootSecret),
130
+ Layer.provideMerge(layerWebCrypto, WebCrypto.layer(crypto)),
131
+ { local: true }
132
+ )
133
+ )
@@ -0,0 +1,92 @@
1
+ import * as Data from "../../Data.ts"
2
+ import * as Effect from "../../Effect.ts"
3
+ import * as Stream from "../../Stream.ts"
4
+ import type { Entry } from "../EventJournal.ts"
5
+ import type { Registry } from "../EventLog.ts"
6
+
7
+ /** A second pass over the kept set dropped `entries`, so a compactor does not compose. */
8
+ export class IdempotenceError extends Data.TaggedError("IdempotenceError")<{
9
+ readonly entries: ReadonlyArray<Entry>
10
+ }> {}
11
+
12
+ type Compactor = Registry["Service"]["compactors"] extends ReadonlyMap<string, infer A> ? A : never
13
+
14
+ /**
15
+ * Folds the opted-in compactors over `entries`, which arrive in input order
16
+ * without repeated ids, and returns the kept entries in input order.
17
+ *
18
+ * Each step folds a chunk into the kept set. The chunk starts at `chunkSize`
19
+ * and grows to the size of the kept set, so a run stays linear when little is
20
+ * dropped and memory stays at about twice the kept set. A compactor that
21
+ * composes keeps the same entries at any chunking.
22
+ *
23
+ * Fails with `IdempotenceError` when a second pass over the kept set drops
24
+ * more. A compactor defect fails the run.
25
+ */
26
+ export const run = <E, R>(options: {
27
+ readonly compactors: Registry["Service"]["compactors"]
28
+ readonly entries: Stream.Stream<Entry, E, R>
29
+ readonly chunkSize: number
30
+ }): Effect.Effect<ReadonlyArray<Entry>, E | IdempotenceError, R> => {
31
+ const drop = Effect.fnUntraced(function*(entries: ReadonlyArray<Entry>) {
32
+ const kept = new Set<Entry>()
33
+ const calls = new Map<Compactor, Array<Entry>>()
34
+ for (const entry of entries) {
35
+ const compactor = options.compactors.get(entry.event)
36
+ if (compactor === undefined || !compactor.remote) {
37
+ kept.add(entry)
38
+ continue
39
+ }
40
+ const input = calls.get(compactor)
41
+ if (input === undefined) calls.set(compactor, [entry])
42
+ else input.push(entry)
43
+ }
44
+ for (const [compactor, input] of calls) {
45
+ const inputs = new Set(input)
46
+ const forwarded = new Set<Entry>()
47
+ let replaced = false
48
+ yield* compactor.effect({
49
+ entries: input,
50
+ remote: true,
51
+ write: (entry) =>
52
+ Effect.sync(() => {
53
+ if (inputs.has(entry)) forwarded.add(entry)
54
+ else replaced = true
55
+ })
56
+ })
57
+ // Only forwarded input entries can be kept verbatim, so a call that
58
+ // outputs anything else keeps its whole input.
59
+ if (replaced) {
60
+ yield* Effect.logWarning("A remote compactor wrote an entry it was not given, so its input is kept").pipe(
61
+ Effect.annotateLogs({ events: [...compactor.events] })
62
+ )
63
+ }
64
+ for (const entry of replaced ? input : forwarded) kept.add(entry)
65
+ }
66
+ return entries.filter((entry) => kept.has(entry))
67
+ })
68
+
69
+ return Effect.gen(function*() {
70
+ let kept: ReadonlyArray<Entry> = []
71
+ let pending: Array<Entry> = []
72
+ yield* options.entries.pipe(
73
+ Stream.grouped(options.chunkSize),
74
+ Stream.runForEach((group) => {
75
+ for (const entry of group) pending.push(entry)
76
+ if (pending.length < Math.max(options.chunkSize, kept.length)) return Effect.void
77
+ const input = kept.concat(pending)
78
+ pending = []
79
+ return Effect.map(drop(input), (next) => {
80
+ kept = next
81
+ })
82
+ })
83
+ )
84
+ if (pending.length > 0) kept = yield* drop(kept.concat(pending))
85
+ const again = yield* drop(kept)
86
+ if (again.length !== kept.length) {
87
+ const survivors = new Set(again)
88
+ return yield* new IdempotenceError({ entries: kept.filter((entry) => !survivors.has(entry)) })
89
+ }
90
+ return kept
91
+ })
92
+ }
@@ -70,7 +70,9 @@ type ArgsWithOptions<Variables, Options> = {} extends Variables ? [variables: Va
70
70
  * `partial: false`, it returns the decoded result and fails with a
71
71
  * `ResponseError` on any `errors`. With `partial: true` it returns
72
72
  * `{ data, errors }`. `partial` must be a literal `true` or `false`, not
73
- * an arbitrary `boolean`.
73
+ * an arbitrary `boolean`. A non-2xx HTTP response never succeeds, even with
74
+ * `partial: true`: it fails with a `ResponseError` when it has `errors`, and
75
+ * with a `TransportError` otherwise.
74
76
  *
75
77
  * An operation without variables is called as `client.Viewer()` or, with
76
78
  * options, `client.Viewer(undefined, { headers })`.
@@ -6,11 +6,10 @@
6
6
  * @since 4.0.0
7
7
  */
8
8
  import type * as Duration from "../Duration.ts"
9
- import * as Headers from "../http/Headers.ts"
9
+ import type * as Headers from "../http/Headers.ts"
10
10
  import type * as HttpClientError from "../http/HttpClientError.ts"
11
- import { HeadersSchema } from "../internal/graphqlHeaders.ts"
11
+ import { HeadersSchema, parseRetryAfter } from "../internal/graphqlHeaders.ts"
12
12
  import { hasProperty } from "../Predicate.ts"
13
- import * as Result from "../Result.ts"
14
13
  import * as Schema from "../Schema.ts"
15
14
 
16
15
  const TypeId = "~effect/graphql/GraphQLClientError"
@@ -74,8 +73,9 @@ export type GraphQLError = typeof GraphQLError.Type
74
73
  * `{ partial: true }` to receive decoded `{ data, errors }` instead.
75
74
  *
76
75
  * On this error, `data` is raw. `GraphQLError.path[0]` identifies the response
77
- * key (or alias). Non-2xx HTTP responses with a GraphQL body also use this
78
- * reason rather than `TransportError`.
76
+ * key (or alias). Non-2xx HTTP responses with a GraphQL body and `errors`
77
+ * also use this reason rather than `TransportError`, even when they carry
78
+ * `data` and the call used `{ partial: true }`.
79
79
  *
80
80
  * `status` and `headers` are the HTTP status and response headers, as the
81
81
  * transport reported them and middleware left them. Headers use
@@ -220,27 +220,18 @@ export const isFatalCloseCode = (code: number): boolean =>
220
220
 
221
221
  const isRetryableStatus = (status: number): boolean => status === 429 || (status >= 500 && status < 600)
222
222
 
223
- /**
224
- * Parses a `Retry-After` header value, either whole seconds or an HTTP date,
225
- * into a `Duration` measured from `now` (epoch milliseconds). Anything else,
226
- * such as `1.5` or `-1`, yields `undefined`.
227
- */
228
- const parseRetryAfter = (value: string | undefined, now: number): Duration.Duration | undefined => {
229
- if (value === undefined) return undefined
230
- const retryAfter = Headers.parseRetryAfter(value)
231
- return Result.isSuccess(retryAfter) ? Headers.retryAfterDelay(retryAfter.success, now) : undefined
232
- }
233
-
234
223
  /**
235
224
  * The client could not get a GraphQL response from the server: a network
236
- * failure, an HTTP response that is not a GraphQL response, or a closed
237
- * WebSocket connection.
225
+ * failure, an HTTP response that is not a GraphQL response, a non-2xx HTTP
226
+ * response whose GraphQL body has no `errors`, or a closed WebSocket
227
+ * connection.
238
228
  *
239
229
  * **Details**
240
230
  *
241
231
  * - `status` and `headers` are only set for an HTTP response that is not a
242
- * GraphQL response. Headers use `Headers.Headers` at runtime and encode
243
- * as a plain string record; decoding restores the header collection.
232
+ * GraphQL response, or a non-2xx GraphQL response without `errors`.
233
+ * Headers use `Headers.Headers` at runtime and encode as a plain string
234
+ * record; decoding restores the header collection.
244
235
  * - `retryAfter` comes from the `Retry-After` header (whole seconds or an
245
236
  * HTTP date) and is encoded as milliseconds. When it is set, the error is
246
237
  * retryable at any status, unless the close code is fatal.
@@ -360,8 +351,10 @@ export class EncodeError
360
351
  *
361
352
  * **Details**
362
353
  *
363
- * `data: null` without `errors` also produces a `DecodeError`, since
364
- * `ResponseError` requires a non-empty errors array.
354
+ * `data: null` without `errors` also produces a `DecodeError` for a 2xx
355
+ * response or a result without an HTTP status, since `ResponseError`
356
+ * requires a non-empty errors array. On a non-2xx response it is a
357
+ * `TransportError`.
365
358
  *
366
359
  * @stability experimental
367
360
  * @category errors
@@ -522,7 +522,10 @@ export const makeHttp: {
522
522
  * (or `null`). Media types match case-insensitively. Anything else
523
523
  * is a `TransportError` with the response `status` and `headers`, and a
524
524
  * `Retry-After` header (whole seconds or an HTTP date, measured from when the
525
- * response arrived) becomes `retryAfter`.
525
+ * response arrived) becomes `retryAfter`. A non-2xx GraphQL response is passed
526
+ * to the client, which never treats it as a success: it fails with a
527
+ * `ResponseError` when the body has `errors`, and with a `TransportError`
528
+ * carrying the same metadata otherwise.
526
529
  *
527
530
  * A subscription is a `POST` with `Accept: text/event-stream`. Each `next`
528
531
  * event is emitted with the response headers but no status, and the stream
@@ -738,7 +741,10 @@ export const layerHttp: {
738
741
  * (or `null`). Media types match case-insensitively. Anything else
739
742
  * is a `TransportError` with the response `status` and `headers`, and a
740
743
  * `Retry-After` header (whole seconds or an HTTP date, measured from when the
741
- * response arrived) becomes `retryAfter`.
744
+ * response arrived) becomes `retryAfter`. A non-2xx GraphQL response is passed
745
+ * to the client, which never treats it as a success: it fails with a
746
+ * `ResponseError` when the body has `errors`, and with a `TransportError`
747
+ * carrying the same metadata otherwise.
742
748
  *
743
749
  * A subscription is a `POST` with `Accept: text/event-stream`. Each `next`
744
750
  * event is emitted with the response headers but no status, and the stream
@@ -969,7 +975,10 @@ export const layerHttp: {
969
975
  * (or `null`). Media types match case-insensitively. Anything else
970
976
  * is a `TransportError` with the response `status` and `headers`, and a
971
977
  * `Retry-After` header (whole seconds or an HTTP date, measured from when the
972
- * response arrived) becomes `retryAfter`.
978
+ * response arrived) becomes `retryAfter`. A non-2xx GraphQL response is passed
979
+ * to the client, which never treats it as a success: it fails with a
980
+ * `ResponseError` when the body has `errors`, and with a `TransportError`
981
+ * carrying the same metadata otherwise.
973
982
  *
974
983
  * A subscription is a `POST` with `Accept: text/event-stream`. Each `next`
975
984
  * event is emitted with the response headers but no status, and the stream