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
@@ -11,6 +11,10 @@
11
11
  */
12
12
  import type { NonEmptyArray } from "../Array.ts"
13
13
  import * as Context from "../Context.ts"
14
+ import * as Aead from "../crypto/Aead.ts"
15
+ import * as Digest from "../crypto/Digest.ts"
16
+ import * as SecureRandom from "../crypto/SecureRandom.ts"
17
+ import * as WebCrypto from "../crypto/WebCrypto.ts"
14
18
  import * as Effect from "../Effect.ts"
15
19
  import * as SchemaBinary from "../encoding/SchemaBinary.ts"
16
20
  import * as Layer from "../Layer.ts"
@@ -19,7 +23,8 @@ import * as Schema from "../Schema.ts"
19
23
  import * as Transferable from "../workers/Transferable.ts"
20
24
  import { type Entry, EntryFields, entryFromFields, EntryId, RemoteEntry } from "./EventJournal.ts"
21
25
  import type { Identity } from "./EventLog.ts"
22
- import { makeGetIdentityRootSecretMaterial } from "./internal/identityRootSecretDerivation.ts"
26
+ import { toBatches } from "./internal/batches.ts"
27
+ import { cachedByIdentity, deriveEncryptionKey } from "./internal/identityRootSecretDerivation.ts"
23
28
 
24
29
  /**
25
30
  * Schema for a batch of journal entries encrypted as one AES-GCM message.
@@ -77,33 +82,10 @@ export const EncryptedRemoteBatch = Schema.Struct({
77
82
  ...EncryptedBatch.fields
78
83
  })
79
84
 
80
- const maxBatchEntries = 100
81
- const maxBatchPayloadBytes = 256 * 1024
82
-
83
- // A batch holds at most `maxBatchEntries` entries or `maxBatchPayloadBytes` of
84
- // payload, whichever comes first. A single larger entry is a batch on its own.
85
- const toBatches = (entries: ReadonlyArray<Entry>): Array<NonEmptyArray<Entry>> => {
86
- const batches: Array<NonEmptyArray<Entry>> = []
87
- let current: Array<Entry> = []
88
- let bytes = 0
89
- for (const entry of entries) {
90
- const size = entry.payload.byteLength
91
- if (current.length > 0 && (current.length === maxBatchEntries || bytes + size > maxBatchPayloadBytes)) {
92
- batches.push(current as NonEmptyArray<Entry>)
93
- current = []
94
- bytes = 0
95
- }
96
- current.push(entry)
97
- bytes += size
98
- }
99
- if (current.length > 0) batches.push(current as NonEmptyArray<Entry>)
100
- return batches
101
- }
102
-
103
85
  const textEncoder = new TextEncoder()
104
86
 
105
87
  // The store id is length-prefixed, followed by the 16-byte entry ids.
106
- const additionalData = (storeId: string, entryIds: ReadonlyArray<EntryId>): Uint8Array<ArrayBuffer> => {
88
+ const additionalData = (storeId: string, entryIds: ReadonlyArray<EntryId>): Uint8Array => {
107
89
  const store = textEncoder.encode(storeId)
108
90
  const data = new Uint8Array(4 + store.byteLength + entryIds.length * 16)
109
91
  new DataView(data.buffer).setUint32(0, store.byteLength)
@@ -128,12 +110,6 @@ const BatchFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(EntryFie
128
110
  const encodeBatch = Schema.encodeEffect(BatchFromSchemaBinary)
129
111
  const decodeBatch = Schema.decodeEffect(BatchFromSchemaBinary)
130
112
 
131
- const toArrayBuffer = (data: Uint8Array): ArrayBuffer => {
132
- const buffer = new ArrayBuffer(data.byteLength)
133
- new Uint8Array(buffer).set(data)
134
- return buffer
135
- }
136
-
137
113
  /**
138
114
  * Service that provides identity generation, entry
139
115
  * encryption and decryption, and SHA-256 hashing for event-log replication.
@@ -158,103 +134,135 @@ export class EventLogEncryption extends Context.Service<EventLogEncryption, {
158
134
  storeId: string,
159
135
  batches: ReadonlyArray<EncryptedRemoteBatch>
160
136
  ) => Effect.Effect<Array<RemoteEntry>>
161
- readonly sha256String: (data: Uint8Array) => Effect.Effect<string>
162
137
  readonly sha256: (data: Uint8Array) => Effect.Effect<Uint8Array>
163
138
  readonly generateIdentity: Effect.Effect<Identity["Service"]>
164
139
  }>()("effect/eventlog/EventLogEncryption") {}
165
140
 
166
141
  /**
167
- * Creates an `EventLogEncryption` service backed by the Web Crypto `SubtleCrypto`
168
- * APIs from the supplied `Crypto` implementation.
142
+ * Creates an `EventLogEncryption` service from the `effect/crypto` services.
143
+ *
144
+ * **Details**
145
+ *
146
+ * Each identity's AES-256-GCM key is derived from its root secret with
147
+ * `Digest` and cached per identity. Batches are encrypted with `Aead` under a
148
+ * random 12-byte nonce from `SecureRandom`, which also generates identities.
149
+ * A batch that fails authentication, or whose entries do not match its entry
150
+ * ids, is a defect.
169
151
  *
170
152
  * @stability unstable
171
- * @category encryption
153
+ * @category constructors
172
154
  * @since 4.0.0
173
155
  */
174
- export const makeEncryptionSubtle = (crypto: Crypto): Effect.Effect<EventLogEncryption["Service"]> =>
175
- Effect.sync(() => {
176
- const getIdentityRootSecretMaterial = makeGetIdentityRootSecretMaterial(crypto)
156
+ export const make: Effect.Effect<
157
+ EventLogEncryption["Service"],
158
+ never,
159
+ Aead.Aead | Digest.Digest | SecureRandom.SecureRandom
160
+ > = Effect.gen(function*() {
161
+ const aead = yield* Aead.Aead
162
+ const digest = yield* Digest.Digest
163
+ const random = yield* SecureRandom.SecureRandom
164
+ const getEncryptionKey = cachedByIdentity((rootSecret) =>
165
+ deriveEncryptionKey(rootSecret).pipe(
166
+ Effect.map(({ encryptionKey }) => encryptionKey),
167
+ Effect.provideService(Digest.Digest, digest)
168
+ )
169
+ )
177
170
 
178
- return EventLogEncryption.of({
179
- encrypt: Effect.fnUntraced(function*(identity, storeId, entries) {
180
- const key = (yield* getIdentityRootSecretMaterial(identity)).encryptionKey
181
- const batches = toBatches(entries)
182
- const data = yield* Effect.orDie(Effect.forEach(batches, (batch) => encodeBatch(batch)))
183
- return yield* Effect.promise(() =>
184
- Promise.all(batches.map((batch, i) => {
185
- const entryIds = batch.map((entry) => entry.id) as NonEmptyArray<EntryId>
186
- const iv = crypto.getRandomValues(new Uint8Array(12))
187
- return crypto.subtle.encrypt(
188
- { name: "AES-GCM", iv, additionalData: additionalData(storeId, entryIds), tagLength: 128 },
189
- key,
190
- data[i]
191
- ).then((encryptedBatch) => ({ entryIds, iv, encryptedBatch: new Uint8Array(encryptedBatch) }))
192
- }))
193
- )
194
- }),
195
- decrypt: Effect.fnUntraced(function*(identity, storeId, batches) {
196
- const key = (yield* getIdentityRootSecretMaterial(identity)).encryptionKey
197
- const decrypted = yield* Effect.promise(() =>
198
- Promise.all(batches.map((batch) =>
199
- crypto.subtle.decrypt(
200
- {
201
- name: "AES-GCM",
202
- iv: batch.iv,
203
- additionalData: additionalData(storeId, batch.entryIds),
204
- tagLength: 128
205
- },
206
- key,
207
- batch.encryptedBatch
208
- )
171
+ return EventLogEncryption.of({
172
+ encrypt: Effect.fnUntraced(function*(identity, storeId, entries) {
173
+ const key = yield* getEncryptionKey(identity)
174
+ const batches = toBatches(entries)
175
+ const data = yield* Effect.orDie(Effect.forEach(batches, (batch) => encodeBatch(batch)))
176
+ return yield* Effect.forEach(batches, (batch, i) => {
177
+ const entryIds = batch.map((entry) => entry.id) as NonEmptyArray<EntryId>
178
+ return Effect.flatMap(random.randomBytes(12), (iv) =>
179
+ Effect.map(
180
+ aead.encrypt(key, data[i], { nonce: iv, aad: additionalData(storeId, entryIds) }),
181
+ (encryptedBatch) => ({
182
+ entryIds,
183
+ iv: iv as Uint8Array<ArrayBuffer>,
184
+ encryptedBatch: encryptedBatch as Uint8Array<ArrayBuffer>
185
+ })
209
186
  ))
210
- )
211
- const result: Array<RemoteEntry> = []
212
- for (let i = 0; i < batches.length; i++) {
213
- const batch = batches[i]
214
- const fields = yield* Effect.orDie(decodeBatch(new Uint8Array(decrypted[i])))
215
- const entries = fields.map(entryFromFields)
216
- if (
217
- entries.length !== batch.entryIds.length ||
218
- entries.some((entry, j) => !equalBytes(entry.id, batch.entryIds[j]))
219
- ) {
220
- return yield* Effect.die(new Error("Encrypted batch entries do not match its entry ids"))
221
- }
222
- for (let j = 0; j < entries.length; j++) {
223
- result.push(new RemoteEntry({ remoteSequence: batch.sequence + j, entry: entries[j] }))
224
- }
187
+ }, { concurrency: "unbounded" }).pipe(Effect.orDie)
188
+ }),
189
+ decrypt: Effect.fnUntraced(function*(identity, storeId, batches) {
190
+ const key = yield* getEncryptionKey(identity)
191
+ const decrypted = yield* Effect.forEach(
192
+ batches,
193
+ (batch) =>
194
+ aead.decrypt(key, batch.encryptedBatch, { nonce: batch.iv, aad: additionalData(storeId, batch.entryIds) }),
195
+ { concurrency: "unbounded" }
196
+ ).pipe(Effect.orDie)
197
+ const result: Array<RemoteEntry> = []
198
+ for (let i = 0; i < batches.length; i++) {
199
+ const batch = batches[i]
200
+ const fields = yield* Effect.orDie(decodeBatch(decrypted[i] as Uint8Array<ArrayBuffer>))
201
+ const entries = fields.map(entryFromFields)
202
+ if (
203
+ entries.length !== batch.entryIds.length ||
204
+ entries.some((entry, j) => !equalBytes(entry.id, batch.entryIds[j]))
205
+ ) {
206
+ return yield* Effect.die(new Error("Encrypted batch entries do not match its entry ids"))
207
+ }
208
+ for (let j = 0; j < entries.length; j++) {
209
+ result.push(new RemoteEntry({ remoteSequence: batch.sequence + j, entry: entries[j] }))
225
210
  }
226
- return result
227
- }),
228
- sha256: (data) =>
229
- Effect.promise(() => crypto.subtle.digest("SHA-256", toArrayBuffer(data))).pipe(
230
- Effect.map((hash) => new Uint8Array(hash))
231
- ),
232
- sha256String: (data) =>
233
- Effect.map(
234
- Effect.promise(() => crypto.subtle.digest("SHA-256", toArrayBuffer(data))),
235
- (hash) => {
236
- const hashArray = Array.from(new Uint8Array(hash))
237
- const hashHex = hashArray
238
- .map((bytes) => bytes.toString(16).padStart(2, "0"))
239
- .join("")
240
- return hashHex
241
- }
242
- ),
243
- generateIdentity: Effect.sync(() => ({
244
- publicKey: crypto.randomUUID(),
245
- privateKey: Redacted.make(crypto.getRandomValues(new Uint8Array(32)))
246
- }))
247
- })
211
+ }
212
+ return result
213
+ }),
214
+ sha256: (data) => digest.digest(Digest.sha256, data),
215
+ generateIdentity: Effect.zipWith(
216
+ random.uuidV4(),
217
+ random.randomBytes(32),
218
+ (publicKey, privateKey) => ({ publicKey, privateKey: Redacted.make(privateKey as Uint8Array<ArrayBuffer>) })
219
+ )
248
220
  })
221
+ })
249
222
 
250
223
  /**
251
- * Provides `EventLogEncryption` using `globalThis.crypto`.
224
+ * Provides `EventLogEncryption` from the `Aead`, `Digest` and `SecureRandom`
225
+ * services.
226
+ *
227
+ * **When to use**
228
+ *
229
+ * Use to choose the crypto layers yourself, such as the `NodeCrypto` layers.
252
230
  *
253
231
  * @stability unstable
254
232
  * @category layers
255
233
  * @since 4.0.0
256
234
  */
257
- export const layerSubtle: Layer.Layer<EventLogEncryption> = Layer.effect(
258
- EventLogEncryption,
259
- makeEncryptionSubtle(globalThis.crypto)
235
+ export const layer: Layer.Layer<EventLogEncryption, never, Aead.Aead | Digest.Digest | SecureRandom.SecureRandom> =
236
+ Layer.effect(EventLogEncryption, make)
237
+
238
+ const layerWebCrypto = Layer.mergeAll(Aead.layerWebCrypto, Digest.layerWebCrypto).pipe(
239
+ Layer.provideMerge(SecureRandom.layerWebCrypto)
260
240
  )
241
+
242
+ /**
243
+ * Creates an `EventLogEncryption` service on the Web Crypto layers of
244
+ * `Aead`, `Digest` and `SecureRandom`, using the supplied `Crypto` object.
245
+ *
246
+ * @stability unstable
247
+ * @category encryption
248
+ * @since 4.0.0
249
+ */
250
+ export const makeEncryptionSubtle = (crypto: Crypto): Effect.Effect<EventLogEncryption["Service"]> =>
251
+ // `local` keeps enclosing Web Crypto layers, built on another `Crypto`, from
252
+ // being reused.
253
+ Effect.provide(make, Layer.provide(layerWebCrypto, WebCrypto.layer(crypto)), { local: true })
254
+
255
+ /**
256
+ * Provides `EventLogEncryption` on the Web Crypto layers of `Aead`, `Digest`
257
+ * and `SecureRandom`.
258
+ *
259
+ * **Details**
260
+ *
261
+ * The layers use the `Crypto` object of the `WebCrypto` reference, which
262
+ * defaults to `globalThis.crypto`.
263
+ *
264
+ * @stability unstable
265
+ * @category layers
266
+ * @since 4.0.0
267
+ */
268
+ export const layerSubtle: Layer.Layer<EventLogEncryption> = Layer.provide(layer, layerWebCrypto)
@@ -113,6 +113,7 @@ export class EventLogAuthentication extends RpcMiddleware.Service<EventLogAuthen
113
113
  *
114
114
  * Contains the remote id, a challenge for the client to sign, and the lowest
115
115
  * assigned sequence (default 0) for initializing acknowledgement cursors.
116
+ * `compaction` is `true` when the server serves `EventLogCompactionRpcs`.
116
117
  *
117
118
  * @stability unstable
118
119
  * @category protocols
@@ -121,7 +122,8 @@ export class EventLogAuthentication extends RpcMiddleware.Service<EventLogAuthen
121
122
  export class HelloResponse extends Schema.Class<HelloResponse>("effect/eventlog/EventLogRemote/HelloResponse")({
122
123
  remoteId: RemoteId,
123
124
  challenge: Transferable.Uint8Array,
124
- firstSequence: Schema.optional(Schema.Natural)
125
+ firstSequence: Schema.optional(Schema.Natural),
126
+ compaction: Schema.optional(Schema.Literal(true))
125
127
  }) {}
126
128
 
127
129
  /**
@@ -441,3 +443,273 @@ export class EventLogRemoteRpcs extends RpcGroup.make(
441
443
  WriteSingleRpc,
442
444
  ChangesRpc
443
445
  ) {}
446
+
447
+ const compactionScope = {
448
+ publicKey: Schema.String,
449
+ storeId: StoreId
450
+ }
451
+
452
+ const compactionStage = {
453
+ ...compactionScope,
454
+ stageId: Schema.String
455
+ }
456
+
457
+ /**
458
+ * The compaction state of a store, as reported to clients.
459
+ *
460
+ * **Details**
461
+ *
462
+ * `wanted` is `true` when the server would open a compaction stage. `head` is
463
+ * the highest stored sequence.
464
+ *
465
+ * @stability unstable
466
+ * @category protocols
467
+ * @since 4.0.0
468
+ */
469
+ export class CompactionStatus
470
+ extends Schema.Class<CompactionStatus>("effect/eventlog/EventLogRemote/CompactionStatus")({
471
+ wanted: Schema.Boolean,
472
+ head: Schema.Int
473
+ })
474
+ {}
475
+
476
+ /**
477
+ * RPC that reports a store's compaction state.
478
+ *
479
+ * @stability unstable
480
+ * @category protocols
481
+ * @since 4.0.0
482
+ */
483
+ export class CompactionStatusRpc extends Rpc.make("EventLog.CompactionStatus", {
484
+ payload: compactionScope,
485
+ success: CompactionStatus,
486
+ error: EventLogProtocolError
487
+ }).middleware(EventLogAuthentication) {}
488
+
489
+ /**
490
+ * Schema for the result of opening a compaction stage.
491
+ *
492
+ * **Details**
493
+ *
494
+ * `Started` pins the stage to the active generation and to the last input
495
+ * sequence. `Busy` means another stage is open on the store. `NotWanted` means
496
+ * the store doesn't need compacting.
497
+ *
498
+ * @stability unstable
499
+ * @category protocols
500
+ * @since 4.0.0
501
+ */
502
+ export const CompactionBeginResult = Schema.Union([
503
+ Schema.TaggedStruct("Started", {
504
+ stageId: Schema.String
505
+ }),
506
+ Schema.TaggedStruct("Busy", {}),
507
+ Schema.TaggedStruct("NotWanted", {})
508
+ ])
509
+
510
+ /**
511
+ * The result of opening a compaction stage.
512
+ *
513
+ * @stability unstable
514
+ * @category protocols
515
+ * @since 4.0.0
516
+ */
517
+ export type CompactionBeginResult = typeof CompactionBeginResult.Type
518
+
519
+ /**
520
+ * RPC that opens a compaction stage.
521
+ *
522
+ * @stability unstable
523
+ * @category protocols
524
+ * @since 4.0.0
525
+ */
526
+ export class CompactionBeginRpc extends Rpc.make("EventLog.CompactionBegin", {
527
+ payload: compactionScope,
528
+ success: CompactionBeginResult,
529
+ error: EventLogProtocolError
530
+ }).middleware(EventLogAuthentication) {}
531
+
532
+ /**
533
+ * Schema for the header of one compaction input batch.
534
+ *
535
+ * **Details**
536
+ *
537
+ * An entry's input sequence is the batch `sequence` plus its position in
538
+ * `entryIds`.
539
+ *
540
+ * @stability unstable
541
+ * @category protocols
542
+ * @since 4.0.0
543
+ */
544
+ export const CompactionInputHeader = Schema.Struct({
545
+ sequence: Schema.Natural,
546
+ entryIds: Schema.NonEmptyArray(EntryId)
547
+ })
548
+
549
+ /**
550
+ * The header of one compaction input batch.
551
+ *
552
+ * @stability unstable
553
+ * @category protocols
554
+ * @since 4.0.0
555
+ */
556
+ export type CompactionInputHeader = typeof CompactionInputHeader.Type
557
+
558
+ /**
559
+ * RPC that streams a stage's input batch headers in input order.
560
+ *
561
+ * **Details**
562
+ *
563
+ * The input is the pinned snapshot, then the originals up to the stage's
564
+ * `through`. Headers are framed as `SingleMessage` values or `ChunkedMessage`
565
+ * parts, as in `ChangesRpc`. It fails with a `NotFound` error once the stage
566
+ * or its pin is gone.
567
+ *
568
+ * @stability unstable
569
+ * @category protocols
570
+ * @since 4.0.0
571
+ */
572
+ export class CompactionInputRpc extends Rpc.make("EventLog.CompactionInput", {
573
+ payload: compactionStage,
574
+ success: Schema.Union([SingleMessage, ChunkedMessage]),
575
+ error: EventLogProtocolError,
576
+ stream: true
577
+ }).middleware(EventLogAuthentication) {
578
+ static HeadersFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(CompactionInputHeader))
579
+ static encodeHeaders = Schema.encodeEffect(CompactionInputRpc.HeadersFromSchemaBinary)
580
+ static decodeHeaders = Schema.decodeEffect(CompactionInputRpc.HeadersFromSchemaBinary)
581
+ }
582
+
583
+ /**
584
+ * RPC that streams the encrypted input batches at the given input sequences.
585
+ *
586
+ * **Details**
587
+ *
588
+ * `batches` holds the input sequence of each batch to fetch. Batches are framed
589
+ * and encoded as in `ChangesRpc`. It fails with a `NotFound` error once the
590
+ * stage or its pin is gone.
591
+ *
592
+ * @stability unstable
593
+ * @category protocols
594
+ * @since 4.0.0
595
+ */
596
+ export class CompactionFetchRpc extends Rpc.make("EventLog.CompactionFetch", {
597
+ payload: {
598
+ ...compactionStage,
599
+ batches: Schema.Array(Schema.Natural)
600
+ },
601
+ success: Schema.Union([SingleMessage, ChunkedMessage]),
602
+ error: EventLogProtocolError,
603
+ stream: true
604
+ }).middleware(EventLogAuthentication) {}
605
+
606
+ /**
607
+ * RPC that uploads one piece of a compaction snapshot segment.
608
+ *
609
+ * **Details**
610
+ *
611
+ * A segment is an encoded non-empty array of encrypted batches, indexed by
612
+ * `chunk.id`, and is split into pieces when larger than
613
+ * `ChunkedMessage.chunkSize`. Re-uploading a stored segment is acknowledged
614
+ * without storing it again. A segment that fails validation aborts the stage
615
+ * with an `InvalidRequest` error.
616
+ *
617
+ * @stability unstable
618
+ * @category protocols
619
+ * @since 4.0.0
620
+ */
621
+ export class CompactionPartRpc extends Rpc.make("EventLog.CompactionPart", {
622
+ payload: {
623
+ ...compactionStage,
624
+ chunk: ChunkedMessage
625
+ },
626
+ error: EventLogProtocolError
627
+ }).middleware(EventLogAuthentication) {
628
+ static SegmentFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(EncryptedBatch))
629
+ static encodeSegment = Schema.encodeEffect(CompactionPartRpc.SegmentFromSchemaBinary)
630
+ static decodeSegment = Schema.decodeEffect(CompactionPartRpc.SegmentFromSchemaBinary)
631
+ }
632
+
633
+ /**
634
+ * RPC that releases an open compaction stage. A late abort is a no-op.
635
+ *
636
+ * @stability unstable
637
+ * @category protocols
638
+ * @since 4.0.0
639
+ */
640
+ export class CompactionAbortRpc extends Rpc.make("EventLog.CompactionAbort", {
641
+ payload: compactionStage,
642
+ error: EventLogProtocolError
643
+ }).middleware(EventLogAuthentication) {}
644
+
645
+ /**
646
+ * Schema for the outcome of a compaction run reported at commit.
647
+ *
648
+ * **Details**
649
+ *
650
+ * `Snapshot` activates the `segmentCount` uploaded segments. `NoOp` reports a
651
+ * run that dropped nothing.
652
+ *
653
+ * @stability unstable
654
+ * @category protocols
655
+ * @since 4.0.0
656
+ */
657
+ export const CompactionResult = Schema.Union([
658
+ Schema.TaggedStruct("Snapshot", { segmentCount: Schema.Natural }),
659
+ Schema.TaggedStruct("NoOp", {})
660
+ ])
661
+
662
+ /**
663
+ * The outcome of a compaction run reported at commit.
664
+ *
665
+ * @stability unstable
666
+ * @category protocols
667
+ * @since 4.0.0
668
+ */
669
+ export type CompactionResult = typeof CompactionResult.Type
670
+
671
+ /**
672
+ * RPC that commits a compaction stage.
673
+ *
674
+ * **Details**
675
+ *
676
+ * Answers `Superseded` when the stage's pinned generation is no longer active.
677
+ * Fails with `InvalidRequest`, aborting the stage, when the segments are
678
+ * incomplete or the kept ids are not a non-empty, repeat-free subsequence of
679
+ * the pinned input. Fails with `NotFound` when the stage expired, was aborted
680
+ * or committed, or is unknown, so a retried commit fails too.
681
+ *
682
+ * @stability unstable
683
+ * @category protocols
684
+ * @since 4.0.0
685
+ */
686
+ export class CompactionCommitRpc extends Rpc.make("EventLog.CompactionCommit", {
687
+ payload: {
688
+ ...compactionStage,
689
+ result: CompactionResult
690
+ },
691
+ success: Schema.Literals(["Committed", "Superseded"]),
692
+ error: EventLogProtocolError
693
+ }).middleware(EventLogAuthentication) {}
694
+
695
+ /**
696
+ * RPC group for encrypted remote compaction.
697
+ *
698
+ * **Details**
699
+ *
700
+ * Served by the encrypted server alongside `EventLogRemoteRpcs`. Clients call
701
+ * it only when `HelloResponse.compaction` is set.
702
+ *
703
+ * @stability unstable
704
+ * @category protocols
705
+ * @since 4.0.0
706
+ */
707
+ export class EventLogCompactionRpcs extends RpcGroup.make(
708
+ CompactionStatusRpc,
709
+ CompactionBeginRpc,
710
+ CompactionInputRpc,
711
+ CompactionFetchRpc,
712
+ CompactionPartRpc,
713
+ CompactionAbortRpc,
714
+ CompactionCommitRpc
715
+ ) {}