effect 4.0.6 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (978) hide show
  1. package/README.md +1 -1
  2. package/dist/Arbitrary.d.ts +10 -2
  3. package/dist/Arbitrary.d.ts.map +1 -1
  4. package/dist/Arbitrary.js +2 -1
  5. package/dist/Arbitrary.js.map +1 -1
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +3 -0
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/Channel.d.ts +12 -6
  10. package/dist/Channel.d.ts.map +1 -1
  11. package/dist/Channel.js +30 -9
  12. package/dist/Channel.js.map +1 -1
  13. package/dist/Config.d.ts +7 -1
  14. package/dist/Config.d.ts.map +1 -1
  15. package/dist/Config.js.map +1 -1
  16. package/dist/Context.d.ts +18 -1
  17. package/dist/Context.d.ts.map +1 -1
  18. package/dist/Context.js +27 -8
  19. package/dist/Context.js.map +1 -1
  20. package/dist/Cron.d.ts +81 -11
  21. package/dist/Cron.d.ts.map +1 -1
  22. package/dist/Cron.js +101 -26
  23. package/dist/Cron.js.map +1 -1
  24. package/dist/Data.d.ts +54 -235
  25. package/dist/Data.d.ts.map +1 -1
  26. package/dist/Data.js.map +1 -1
  27. package/dist/Duration.d.ts +78 -0
  28. package/dist/Duration.d.ts.map +1 -1
  29. package/dist/Duration.js +123 -0
  30. package/dist/Duration.js.map +1 -1
  31. package/dist/Effect.d.ts +165 -8
  32. package/dist/Effect.d.ts.map +1 -1
  33. package/dist/Effect.js +12 -2
  34. package/dist/Effect.js.map +1 -1
  35. package/dist/Equal.d.ts.map +1 -1
  36. package/dist/Equal.js +8 -1
  37. package/dist/Equal.js.map +1 -1
  38. package/dist/Exit.d.ts +3 -3
  39. package/dist/Exit.d.ts.map +1 -1
  40. package/dist/Exit.js.map +1 -1
  41. package/dist/FileSystem.d.ts +59 -4
  42. package/dist/FileSystem.d.ts.map +1 -1
  43. package/dist/FileSystem.js +9 -2
  44. package/dist/FileSystem.js.map +1 -1
  45. package/dist/Formatter.d.ts.map +1 -1
  46. package/dist/Formatter.js +27 -13
  47. package/dist/Formatter.js.map +1 -1
  48. package/dist/Glob.d.ts +165 -0
  49. package/dist/Glob.d.ts.map +1 -0
  50. package/dist/Glob.js +127 -0
  51. package/dist/Glob.js.map +1 -0
  52. package/dist/Hash.d.ts.map +1 -1
  53. package/dist/Hash.js +4 -1
  54. package/dist/Hash.js.map +1 -1
  55. package/dist/JsonPatch.js +4 -0
  56. package/dist/JsonPatch.js.map +1 -1
  57. package/dist/JsonSchema.d.ts.map +1 -1
  58. package/dist/JsonSchema.js +13 -40
  59. package/dist/JsonSchema.js.map +1 -1
  60. package/dist/Match.d.ts +86 -0
  61. package/dist/Match.d.ts.map +1 -1
  62. package/dist/Match.js +72 -0
  63. package/dist/Match.js.map +1 -1
  64. package/dist/Metric.d.ts +3 -3
  65. package/dist/MutableList.d.ts +5 -2
  66. package/dist/MutableList.d.ts.map +1 -1
  67. package/dist/MutableList.js +7 -5
  68. package/dist/MutableList.js.map +1 -1
  69. package/dist/MutableRef.d.ts.map +1 -1
  70. package/dist/MutableRef.js +7 -0
  71. package/dist/MutableRef.js.map +1 -1
  72. package/dist/PartitionedSemaphore.d.ts +2 -1
  73. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  74. package/dist/PartitionedSemaphore.js +22 -12
  75. package/dist/PartitionedSemaphore.js.map +1 -1
  76. package/dist/Pool.d.ts +51 -0
  77. package/dist/Pool.d.ts.map +1 -1
  78. package/dist/Pool.js +136 -36
  79. package/dist/Pool.js.map +1 -1
  80. package/dist/PubSub.d.ts.map +1 -1
  81. package/dist/PubSub.js +5 -6
  82. package/dist/PubSub.js.map +1 -1
  83. package/dist/Random.d.ts.map +1 -1
  84. package/dist/Random.js +3 -3
  85. package/dist/Random.js.map +1 -1
  86. package/dist/RcMap.d.ts.map +1 -1
  87. package/dist/RcMap.js +8 -2
  88. package/dist/RcMap.js.map +1 -1
  89. package/dist/Ref.d.ts.map +1 -1
  90. package/dist/Ref.js +8 -0
  91. package/dist/Ref.js.map +1 -1
  92. package/dist/Schedule.d.ts +18 -1
  93. package/dist/Schedule.d.ts.map +1 -1
  94. package/dist/Schedule.js +8 -3
  95. package/dist/Schedule.js.map +1 -1
  96. package/dist/Schema.d.ts +690 -49
  97. package/dist/Schema.d.ts.map +1 -1
  98. package/dist/Schema.js +687 -28
  99. package/dist/Schema.js.map +1 -1
  100. package/dist/SchemaAST.d.ts +4 -2
  101. package/dist/SchemaAST.d.ts.map +1 -1
  102. package/dist/SchemaAST.js +14 -17
  103. package/dist/SchemaAST.js.map +1 -1
  104. package/dist/SchemaGetter.d.ts +6 -1
  105. package/dist/SchemaGetter.d.ts.map +1 -1
  106. package/dist/SchemaGetter.js +22 -11
  107. package/dist/SchemaGetter.js.map +1 -1
  108. package/dist/SchemaParser.d.ts.map +1 -1
  109. package/dist/SchemaParser.js +48 -22
  110. package/dist/SchemaParser.js.map +1 -1
  111. package/dist/SchemaRepresentation.d.ts +33 -10
  112. package/dist/SchemaRepresentation.d.ts.map +1 -1
  113. package/dist/SchemaRepresentation.js +39 -13
  114. package/dist/SchemaRepresentation.js.map +1 -1
  115. package/dist/SchemaTransformation.d.ts +12 -4
  116. package/dist/SchemaTransformation.d.ts.map +1 -1
  117. package/dist/SchemaTransformation.js +15 -5
  118. package/dist/SchemaTransformation.js.map +1 -1
  119. package/dist/ScopedCache.d.ts.map +1 -1
  120. package/dist/ScopedCache.js +5 -7
  121. package/dist/ScopedCache.js.map +1 -1
  122. package/dist/Semaphore.d.ts +130 -0
  123. package/dist/Semaphore.d.ts.map +1 -1
  124. package/dist/Semaphore.js +94 -35
  125. package/dist/Semaphore.js.map +1 -1
  126. package/dist/Sink.d.ts.map +1 -1
  127. package/dist/Sink.js +7 -2
  128. package/dist/Sink.js.map +1 -1
  129. package/dist/Stream.d.ts +13 -4
  130. package/dist/Stream.d.ts.map +1 -1
  131. package/dist/Stream.js +31 -10
  132. package/dist/Stream.js.map +1 -1
  133. package/dist/String.d.ts +3 -0
  134. package/dist/String.d.ts.map +1 -1
  135. package/dist/String.js +3 -0
  136. package/dist/String.js.map +1 -1
  137. package/dist/Terminal.d.ts +18 -1
  138. package/dist/Terminal.d.ts.map +1 -1
  139. package/dist/Terminal.js +1 -1
  140. package/dist/Terminal.js.map +1 -1
  141. package/dist/Tracer.d.ts +11 -1
  142. package/dist/Tracer.d.ts.map +1 -1
  143. package/dist/Tracer.js +6 -1
  144. package/dist/Tracer.js.map +1 -1
  145. package/dist/ai/AiError.d.ts +43 -116
  146. package/dist/ai/AiError.d.ts.map +1 -1
  147. package/dist/ai/AiError.js +53 -72
  148. package/dist/ai/AiError.js.map +1 -1
  149. package/dist/ai/Decision.d.ts +196 -15
  150. package/dist/ai/Decision.d.ts.map +1 -1
  151. package/dist/ai/Decision.js +130 -0
  152. package/dist/ai/Decision.js.map +1 -1
  153. package/dist/ai/DecisionModel.d.ts +54 -13
  154. package/dist/ai/DecisionModel.d.ts.map +1 -1
  155. package/dist/ai/DecisionModel.js +123 -12
  156. package/dist/ai/DecisionModel.js.map +1 -1
  157. package/dist/ai/LanguageModel.d.ts.map +1 -1
  158. package/dist/ai/LanguageModel.js +9 -0
  159. package/dist/ai/LanguageModel.js.map +1 -1
  160. package/dist/ai/McpSchema.d.ts +110 -110
  161. package/dist/ai/McpSchema.d.ts.map +1 -1
  162. package/dist/ai/McpServer.d.ts +630 -29
  163. package/dist/ai/McpServer.d.ts.map +1 -1
  164. package/dist/ai/McpServer.js +583 -131
  165. package/dist/ai/McpServer.js.map +1 -1
  166. package/dist/ai/McpTest.d.ts +130 -0
  167. package/dist/ai/McpTest.d.ts.map +1 -0
  168. package/dist/ai/McpTest.js +237 -0
  169. package/dist/ai/McpTest.js.map +1 -0
  170. package/dist/ai/Prompt.d.ts +52 -0
  171. package/dist/ai/Prompt.d.ts.map +1 -1
  172. package/dist/ai/Prompt.js +38 -0
  173. package/dist/ai/Prompt.js.map +1 -1
  174. package/dist/ai/Response.d.ts +17 -28
  175. package/dist/ai/Response.d.ts.map +1 -1
  176. package/dist/ai/Response.js +5 -10
  177. package/dist/ai/Response.js.map +1 -1
  178. package/dist/ai/Tool.d.ts +43 -1
  179. package/dist/ai/Tool.d.ts.map +1 -1
  180. package/dist/ai/Tool.js +5 -2
  181. package/dist/ai/Tool.js.map +1 -1
  182. package/dist/ai/Toolkit.d.ts.map +1 -1
  183. package/dist/ai/Toolkit.js +8 -1
  184. package/dist/ai/Toolkit.js.map +1 -1
  185. package/dist/ai/index.d.ts +5 -0
  186. package/dist/ai/index.d.ts.map +1 -1
  187. package/dist/ai/index.js +5 -0
  188. package/dist/ai/index.js.map +1 -1
  189. package/dist/ai/internal/mcpCore.js +17 -12
  190. package/dist/ai/internal/mcpCore.js.map +1 -1
  191. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  192. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  193. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  194. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  195. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  196. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  197. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  198. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  199. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  200. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  201. package/dist/ai/internal/mcpProtocol.js +13 -0
  202. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  203. package/dist/ai/internal/mcpRuntime.js +5 -3
  204. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  205. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  206. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  207. package/dist/cli/Argument.d.ts +21 -0
  208. package/dist/cli/Argument.d.ts.map +1 -1
  209. package/dist/cli/Argument.js +7 -0
  210. package/dist/cli/Argument.js.map +1 -1
  211. package/dist/cli/CliError.d.ts +78 -0
  212. package/dist/cli/CliError.d.ts.map +1 -1
  213. package/dist/cli/CliError.js +65 -3
  214. package/dist/cli/CliError.js.map +1 -1
  215. package/dist/cli/CliOutput.d.ts +220 -7
  216. package/dist/cli/CliOutput.d.ts.map +1 -1
  217. package/dist/cli/CliOutput.js +156 -43
  218. package/dist/cli/CliOutput.js.map +1 -1
  219. package/dist/cli/Command.d.ts +47 -16
  220. package/dist/cli/Command.d.ts.map +1 -1
  221. package/dist/cli/Command.js +67 -29
  222. package/dist/cli/Command.js.map +1 -1
  223. package/dist/cli/Completions.d.ts +58 -0
  224. package/dist/cli/Completions.d.ts.map +1 -1
  225. package/dist/cli/Completions.js +49 -9
  226. package/dist/cli/Completions.js.map +1 -1
  227. package/dist/cli/Flag.d.ts +122 -0
  228. package/dist/cli/Flag.d.ts.map +1 -1
  229. package/dist/cli/Flag.js +42 -0
  230. package/dist/cli/Flag.js.map +1 -1
  231. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  232. package/dist/cli/GlobalFlag.js +15 -7
  233. package/dist/cli/GlobalFlag.js.map +1 -1
  234. package/dist/cli/HelpDoc.d.ts +15 -1
  235. package/dist/cli/HelpDoc.d.ts.map +1 -1
  236. package/dist/cli/Param.d.ts +15 -0
  237. package/dist/cli/Param.d.ts.map +1 -1
  238. package/dist/cli/Param.js +23 -2
  239. package/dist/cli/Param.js.map +1 -1
  240. package/dist/cli/Primitive.d.ts +14 -0
  241. package/dist/cli/Primitive.d.ts.map +1 -1
  242. package/dist/cli/Primitive.js +15 -1
  243. package/dist/cli/Primitive.js.map +1 -1
  244. package/dist/cli/Prompt.d.ts +1 -0
  245. package/dist/cli/Prompt.d.ts.map +1 -1
  246. package/dist/cli/Prompt.js +1 -0
  247. package/dist/cli/Prompt.js.map +1 -1
  248. package/dist/cli/TerminalCapabilities.d.ts +3 -2
  249. package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
  250. package/dist/cli/TerminalCapabilities.js +3 -1
  251. package/dist/cli/TerminalCapabilities.js.map +1 -1
  252. package/dist/cli/internal/completions/bash.js +73 -27
  253. package/dist/cli/internal/completions/bash.js.map +1 -1
  254. package/dist/cli/internal/help.d.ts.map +1 -1
  255. package/dist/cli/internal/help.js +17 -10
  256. package/dist/cli/internal/help.js.map +1 -1
  257. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  258. package/dist/cluster/ClusterWorkflowEngine.js +45 -10
  259. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  260. package/dist/cluster/MessageStorage.d.ts +23 -45
  261. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  262. package/dist/cluster/MessageStorage.js +6 -7
  263. package/dist/cluster/MessageStorage.js.map +1 -1
  264. package/dist/cluster/Sharding.d.ts.map +1 -1
  265. package/dist/cluster/Sharding.js +151 -49
  266. package/dist/cluster/Sharding.js.map +1 -1
  267. package/dist/cluster/ShardingConfig.d.ts +76 -0
  268. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  269. package/dist/cluster/ShardingConfig.js +4 -0
  270. package/dist/cluster/ShardingConfig.js.map +1 -1
  271. package/dist/cluster/SingleRunner.d.ts +3 -3
  272. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  273. package/dist/cluster/SingleRunner.js +1 -1
  274. package/dist/cluster/Snowflake.d.ts.map +1 -1
  275. package/dist/cluster/Snowflake.js +3 -7
  276. package/dist/cluster/Snowflake.js.map +1 -1
  277. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  278. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  279. package/dist/cluster/SqlMessageStorage.js +34 -7
  280. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  281. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  282. package/dist/cluster/SqlRunnerStorage.js +109 -46
  283. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  284. package/dist/cluster/internal/entityManager.js +54 -20
  285. package/dist/cluster/internal/entityManager.js.map +1 -1
  286. package/dist/crypto/Aead.d.ts +322 -0
  287. package/dist/crypto/Aead.d.ts.map +1 -0
  288. package/dist/crypto/Aead.js +331 -0
  289. package/dist/crypto/Aead.js.map +1 -0
  290. package/dist/crypto/Cipher.d.ts +235 -0
  291. package/dist/crypto/Cipher.d.ts.map +1 -0
  292. package/dist/crypto/Cipher.js +233 -0
  293. package/dist/crypto/Cipher.js.map +1 -0
  294. package/dist/crypto/CryptoError.d.ts +212 -0
  295. package/dist/crypto/CryptoError.d.ts.map +1 -0
  296. package/dist/crypto/CryptoError.js +202 -0
  297. package/dist/crypto/CryptoError.js.map +1 -0
  298. package/dist/crypto/Digest.d.ts +143 -0
  299. package/dist/crypto/Digest.d.ts.map +1 -0
  300. package/dist/crypto/Digest.js +146 -0
  301. package/dist/crypto/Digest.js.map +1 -0
  302. package/dist/crypto/Kdf.d.ts +220 -0
  303. package/dist/crypto/Kdf.d.ts.map +1 -0
  304. package/dist/crypto/Kdf.js +212 -0
  305. package/dist/crypto/Kdf.js.map +1 -0
  306. package/dist/crypto/KeyAgreement.d.ts +323 -0
  307. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  308. package/dist/crypto/KeyAgreement.js +303 -0
  309. package/dist/crypto/KeyAgreement.js.map +1 -0
  310. package/dist/crypto/KeyFormat.d.ts +309 -0
  311. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  312. package/dist/crypto/KeyFormat.js +556 -0
  313. package/dist/crypto/KeyFormat.js.map +1 -0
  314. package/dist/crypto/KeyWrap.d.ts +389 -0
  315. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  316. package/dist/crypto/KeyWrap.js +381 -0
  317. package/dist/crypto/KeyWrap.js.map +1 -0
  318. package/dist/crypto/Mac.d.ts +277 -0
  319. package/dist/crypto/Mac.d.ts.map +1 -0
  320. package/dist/crypto/Mac.js +288 -0
  321. package/dist/crypto/Mac.js.map +1 -0
  322. package/dist/crypto/SecureRandom.d.ts +340 -0
  323. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  324. package/dist/crypto/SecureRandom.js +257 -0
  325. package/dist/crypto/SecureRandom.js.map +1 -0
  326. package/dist/crypto/Signature.d.ts +448 -0
  327. package/dist/crypto/Signature.d.ts.map +1 -0
  328. package/dist/crypto/Signature.js +484 -0
  329. package/dist/crypto/Signature.js.map +1 -0
  330. package/dist/crypto/WebCrypto.d.ts +61 -0
  331. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  332. package/dist/crypto/WebCrypto.js +63 -0
  333. package/dist/crypto/WebCrypto.js.map +1 -0
  334. package/dist/crypto/index.d.ts +65 -0
  335. package/dist/crypto/index.d.ts.map +1 -0
  336. package/dist/crypto/index.js +66 -0
  337. package/dist/crypto/index.js.map +1 -0
  338. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  339. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  340. package/dist/crypto/internal/asymmetric.js +210 -0
  341. package/dist/crypto/internal/asymmetric.js.map +1 -0
  342. package/dist/crypto/internal/chacha.d.ts +46 -0
  343. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  344. package/dist/crypto/internal/chacha.js +885 -0
  345. package/dist/crypto/internal/chacha.js.map +1 -0
  346. package/dist/crypto/internal/der.d.ts +6 -0
  347. package/dist/crypto/internal/der.d.ts.map +1 -0
  348. package/dist/crypto/internal/der.js +86 -0
  349. package/dist/crypto/internal/der.js.map +1 -0
  350. package/dist/crypto/internal/digest.d.ts +2 -0
  351. package/dist/crypto/internal/digest.d.ts.map +1 -0
  352. package/dist/crypto/internal/digest.js +15 -0
  353. package/dist/crypto/internal/digest.js.map +1 -0
  354. package/dist/crypto/internal/key.d.ts +2 -0
  355. package/dist/crypto/internal/key.d.ts.map +1 -0
  356. package/dist/crypto/internal/key.js +170 -0
  357. package/dist/crypto/internal/key.js.map +1 -0
  358. package/dist/crypto/internal/md5.d.ts +39 -0
  359. package/dist/crypto/internal/md5.d.ts.map +1 -0
  360. package/dist/crypto/internal/md5.js +179 -0
  361. package/dist/crypto/internal/md5.js.map +1 -0
  362. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  363. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  364. package/dist/crypto/internal/webCrypto.js +111 -0
  365. package/dist/crypto/internal/webCrypto.js.map +1 -0
  366. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  367. package/dist/devtools/DevToolsClient.js +2 -0
  368. package/dist/devtools/DevToolsClient.js.map +1 -1
  369. package/dist/encoding/Base64.js +36 -0
  370. package/dist/encoding/Base64.js.map +1 -1
  371. package/dist/encoding/Base64Url.d.ts.map +1 -1
  372. package/dist/encoding/Base64Url.js +3 -2
  373. package/dist/encoding/Base64Url.js.map +1 -1
  374. package/dist/encoding/Csv.d.ts +608 -0
  375. package/dist/encoding/Csv.d.ts.map +1 -0
  376. package/dist/encoding/Csv.js +718 -0
  377. package/dist/encoding/Csv.js.map +1 -0
  378. package/dist/encoding/Hex.d.ts +3 -2
  379. package/dist/encoding/Hex.d.ts.map +1 -1
  380. package/dist/encoding/Hex.js +3 -2
  381. package/dist/encoding/Hex.js.map +1 -1
  382. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  383. package/dist/encoding/SchemaBinary.js +42 -4
  384. package/dist/encoding/SchemaBinary.js.map +1 -1
  385. package/dist/encoding/Sse.d.ts.map +1 -1
  386. package/dist/encoding/Sse.js +3 -3
  387. package/dist/encoding/Sse.js.map +1 -1
  388. package/dist/encoding/Toml.d.ts +17 -3
  389. package/dist/encoding/Toml.d.ts.map +1 -1
  390. package/dist/encoding/Toml.js +124 -31
  391. package/dist/encoding/Toml.js.map +1 -1
  392. package/dist/encoding/Yaml.d.ts +8 -1
  393. package/dist/encoding/Yaml.d.ts.map +1 -1
  394. package/dist/encoding/Yaml.js +54 -18
  395. package/dist/encoding/Yaml.js.map +1 -1
  396. package/dist/encoding/index.d.ts +5 -0
  397. package/dist/encoding/index.d.ts.map +1 -1
  398. package/dist/encoding/index.js +5 -0
  399. package/dist/encoding/index.js.map +1 -1
  400. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  401. package/dist/eventlog/EventJournal.js +6 -3
  402. package/dist/eventlog/EventJournal.js.map +1 -1
  403. package/dist/eventlog/EventLog.d.ts +119 -4
  404. package/dist/eventlog/EventLog.d.ts.map +1 -1
  405. package/dist/eventlog/EventLog.js +200 -12
  406. package/dist/eventlog/EventLog.js.map +1 -1
  407. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  408. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  409. package/dist/eventlog/EventLogEncryption.js +83 -64
  410. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  411. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  412. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  413. package/dist/eventlog/EventLogMessage.js +217 -1
  414. package/dist/eventlog/EventLogMessage.js.map +1 -1
  415. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  416. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  417. package/dist/eventlog/EventLogRemote.js +186 -16
  418. package/dist/eventlog/EventLogRemote.js.map +1 -1
  419. package/dist/eventlog/EventLogServer.d.ts +3 -0
  420. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  421. package/dist/eventlog/EventLogServer.js +18 -10
  422. package/dist/eventlog/EventLogServer.js.map +1 -1
  423. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  424. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  425. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  426. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  427. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  428. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  429. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  430. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  431. package/dist/eventlog/EventRow.d.ts +4 -0
  432. package/dist/eventlog/EventRow.d.ts.map +1 -1
  433. package/dist/eventlog/EventRow.js +12 -2
  434. package/dist/eventlog/EventRow.js.map +1 -1
  435. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  436. package/dist/eventlog/SqlEventJournal.js +47 -27
  437. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  438. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  439. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  441. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  443. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  444. package/dist/eventlog/internal/batches.d.ts +12 -0
  445. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  446. package/dist/eventlog/internal/batches.js +26 -0
  447. package/dist/eventlog/internal/batches.js.map +1 -0
  448. package/dist/eventlog/internal/compaction.d.ts +38 -0
  449. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  450. package/dist/eventlog/internal/compaction.js +33 -0
  451. package/dist/eventlog/internal/compaction.js.map +1 -0
  452. package/dist/eventlog/internal/conflicts.d.ts +0 -1
  453. package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
  454. package/dist/eventlog/internal/conflicts.js +0 -3
  455. package/dist/eventlog/internal/conflicts.js.map +1 -1
  456. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  457. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  458. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  459. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  460. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  461. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  462. package/dist/http/Cookies.d.ts +172 -0
  463. package/dist/http/Cookies.d.ts.map +1 -1
  464. package/dist/http/Cookies.js +153 -10
  465. package/dist/http/Cookies.js.map +1 -1
  466. package/dist/http/FetchHttpClient.d.ts +26 -2
  467. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  468. package/dist/http/FetchHttpClient.js +78 -15
  469. package/dist/http/FetchHttpClient.js.map +1 -1
  470. package/dist/http/HttpClient.d.ts +502 -8
  471. package/dist/http/HttpClient.d.ts.map +1 -1
  472. package/dist/http/HttpClient.js +296 -12
  473. package/dist/http/HttpClient.js.map +1 -1
  474. package/dist/http/HttpClientError.d.ts +8 -1
  475. package/dist/http/HttpClientError.d.ts.map +1 -1
  476. package/dist/http/HttpClientError.js +37 -1
  477. package/dist/http/HttpClientError.js.map +1 -1
  478. package/dist/http/HttpClientRequest.d.ts +9 -5
  479. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  480. package/dist/http/HttpClientRequest.js +3 -4
  481. package/dist/http/HttpClientRequest.js.map +1 -1
  482. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  483. package/dist/http/HttpClientResponse.js +3 -2
  484. package/dist/http/HttpClientResponse.js.map +1 -1
  485. package/dist/http/HttpMethod.d.ts +7 -1
  486. package/dist/http/HttpMethod.d.ts.map +1 -1
  487. package/dist/http/HttpMethod.js +3 -8
  488. package/dist/http/HttpMethod.js.map +1 -1
  489. package/dist/http/HttpMiddleware.d.ts +1 -1
  490. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  491. package/dist/http/HttpMiddleware.js +14 -16
  492. package/dist/http/HttpMiddleware.js.map +1 -1
  493. package/dist/http/HttpRouter.d.ts.map +1 -1
  494. package/dist/http/HttpRouter.js +2 -1
  495. package/dist/http/HttpRouter.js.map +1 -1
  496. package/dist/http/HttpServerError.js +2 -2
  497. package/dist/http/HttpServerError.js.map +1 -1
  498. package/dist/http/HttpServerRequest.d.ts +11 -3
  499. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  500. package/dist/http/HttpServerRequest.js +77 -25
  501. package/dist/http/HttpServerRequest.js.map +1 -1
  502. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  503. package/dist/http/HttpServerResponse.js +3 -2
  504. package/dist/http/HttpServerResponse.js.map +1 -1
  505. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  506. package/dist/http/HttpStaticServer.js +48 -21
  507. package/dist/http/HttpStaticServer.js.map +1 -1
  508. package/dist/http/HttpTraceContext.d.ts +2 -1
  509. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  510. package/dist/http/HttpTraceContext.js +7 -5
  511. package/dist/http/HttpTraceContext.js.map +1 -1
  512. package/dist/http/MultipartParser/internal/contentType.js +3 -3
  513. package/dist/http/ProblemDetails.d.ts +96 -0
  514. package/dist/http/ProblemDetails.d.ts.map +1 -0
  515. package/dist/http/ProblemDetails.js +98 -0
  516. package/dist/http/ProblemDetails.js.map +1 -0
  517. package/dist/http/UrlParams.d.ts +3 -1
  518. package/dist/http/UrlParams.d.ts.map +1 -1
  519. package/dist/http/UrlParams.js +4 -2
  520. package/dist/http/UrlParams.js.map +1 -1
  521. package/dist/http/index.d.ts +5 -0
  522. package/dist/http/index.d.ts.map +1 -1
  523. package/dist/http/index.js +5 -0
  524. package/dist/http/index.js.map +1 -1
  525. package/dist/http/internal/compression.js +4 -5
  526. package/dist/http/internal/compression.js.map +1 -1
  527. package/dist/http/internal/decompression.js +6 -2
  528. package/dist/http/internal/decompression.js.map +1 -1
  529. package/dist/http/internal/httpBody.js +8 -1
  530. package/dist/http/internal/httpBody.js.map +1 -1
  531. package/dist/http/internal/urlParams.js +33 -0
  532. package/dist/http/internal/urlParams.js.map +1 -1
  533. package/dist/http-api/HttpApi.d.ts +3 -6
  534. package/dist/http-api/HttpApi.d.ts.map +1 -1
  535. package/dist/http-api/HttpApi.js +3 -6
  536. package/dist/http-api/HttpApi.js.map +1 -1
  537. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  538. package/dist/http-api/HttpApiBuilder.js +43 -13
  539. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  540. package/dist/http-api/HttpApiClient.d.ts +140 -7
  541. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  542. package/dist/http-api/HttpApiClient.js +193 -44
  543. package/dist/http-api/HttpApiClient.js.map +1 -1
  544. package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
  545. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  546. package/dist/http-api/HttpApiEndpoint.js +123 -32
  547. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  548. package/dist/http-api/HttpApiError.d.ts +185 -13
  549. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  550. package/dist/http-api/HttpApiError.js +128 -0
  551. package/dist/http-api/HttpApiError.js.map +1 -1
  552. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  553. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  554. package/dist/http-api/HttpApiMiddleware.js +85 -1
  555. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  556. package/dist/http-api/HttpApiSchema.d.ts +142 -33
  557. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  558. package/dist/http-api/HttpApiSchema.js +123 -59
  559. package/dist/http-api/HttpApiSchema.js.map +1 -1
  560. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiTest.js +3 -2
  562. package/dist/http-api/HttpApiTest.js.map +1 -1
  563. package/dist/http-api/OpenApi.d.ts.map +1 -1
  564. package/dist/http-api/OpenApi.js +25 -16
  565. package/dist/http-api/OpenApi.js.map +1 -1
  566. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  567. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  568. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  569. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  570. package/dist/index.d.ts +5 -5
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +5 -5
  573. package/dist/index.js.map +1 -1
  574. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  575. package/dist/internal/arbitrary/runner.js +120 -44
  576. package/dist/internal/arbitrary/runner.js.map +1 -1
  577. package/dist/internal/core.js +2 -0
  578. package/dist/internal/core.js.map +1 -1
  579. package/dist/internal/effect.js +46 -27
  580. package/dist/internal/effect.js.map +1 -1
  581. package/dist/internal/equal.js +14 -0
  582. package/dist/internal/equal.js.map +1 -1
  583. package/dist/internal/glob.d.ts +2 -0
  584. package/dist/internal/glob.d.ts.map +1 -0
  585. package/dist/internal/glob.js +630 -0
  586. package/dist/internal/glob.js.map +1 -0
  587. package/dist/internal/jsonSchema.d.ts +2 -0
  588. package/dist/internal/jsonSchema.d.ts.map +1 -0
  589. package/dist/internal/jsonSchema.js +28 -0
  590. package/dist/internal/jsonSchema.js.map +1 -0
  591. package/dist/internal/matcher.js +11 -1
  592. package/dist/internal/matcher.js.map +1 -1
  593. package/dist/internal/persistence.js +9 -0
  594. package/dist/internal/persistence.js.map +1 -1
  595. package/dist/internal/rcRef.js +4 -1
  596. package/dist/internal/rcRef.js.map +1 -1
  597. package/dist/internal/schema/compilerRegistry.js +4 -1
  598. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  599. package/dist/internal/schema/content.d.ts +2 -0
  600. package/dist/internal/schema/content.d.ts.map +1 -0
  601. package/dist/internal/schema/content.js +13 -0
  602. package/dist/internal/schema/content.js.map +1 -0
  603. package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
  604. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  605. package/dist/internal/schema/fromRepresentation.js +2 -1
  606. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  607. package/dist/internal/schema/standardSchema.js +8 -2
  608. package/dist/internal/schema/standardSchema.js.map +1 -1
  609. package/dist/internal/schema/toCodeDocument.js +9 -6
  610. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  611. package/dist/internal/schema/toCodec.js +21 -24
  612. package/dist/internal/schema/toCodec.js.map +1 -1
  613. package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
  614. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  615. package/dist/internal/schema/toRepresentation.js +107 -129
  616. package/dist/internal/schema/toRepresentation.js.map +1 -1
  617. package/dist/internal/sql.d.ts +2 -0
  618. package/dist/internal/sql.d.ts.map +1 -0
  619. package/dist/internal/sql.js +13 -0
  620. package/dist/internal/sql.js.map +1 -0
  621. package/dist/internal/trie.js +42 -13
  622. package/dist/internal/trie.js.map +1 -1
  623. package/dist/internal/ulid.js +41 -0
  624. package/dist/internal/ulid.js.map +1 -1
  625. package/dist/internal/uuid.js +52 -8
  626. package/dist/internal/uuid.js.map +1 -1
  627. package/dist/internal/version.js +1 -1
  628. package/dist/observability/Otlp.d.ts +15 -4
  629. package/dist/observability/Otlp.d.ts.map +1 -1
  630. package/dist/observability/Otlp.js +10 -0
  631. package/dist/observability/Otlp.js.map +1 -1
  632. package/dist/observability/OtlpProxy.d.ts +154 -0
  633. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  634. package/dist/observability/OtlpProxy.js +235 -0
  635. package/dist/observability/OtlpProxy.js.map +1 -0
  636. package/dist/observability/OtlpResource.d.ts +7 -0
  637. package/dist/observability/OtlpResource.d.ts.map +1 -1
  638. package/dist/observability/OtlpResource.js +11 -1
  639. package/dist/observability/OtlpResource.js.map +1 -1
  640. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  641. package/dist/observability/OtlpTracer.js +4 -0
  642. package/dist/observability/OtlpTracer.js.map +1 -1
  643. package/dist/observability/index.d.ts +5 -0
  644. package/dist/observability/index.d.ts.map +1 -1
  645. package/dist/observability/index.js +5 -0
  646. package/dist/observability/index.js.map +1 -1
  647. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  648. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  649. package/dist/persistence/CircuitBreaker.js +1165 -0
  650. package/dist/persistence/CircuitBreaker.js.map +1 -0
  651. package/dist/persistence/KeyValueStore.d.ts +47 -2
  652. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  653. package/dist/persistence/KeyValueStore.js +129 -18
  654. package/dist/persistence/KeyValueStore.js.map +1 -1
  655. package/dist/persistence/PersistedQueue.d.ts +9 -0
  656. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  657. package/dist/persistence/PersistedQueue.js +94 -52
  658. package/dist/persistence/PersistedQueue.js.map +1 -1
  659. package/dist/persistence/Persistence.d.ts +10 -4
  660. package/dist/persistence/Persistence.d.ts.map +1 -1
  661. package/dist/persistence/Persistence.js +18 -11
  662. package/dist/persistence/Persistence.js.map +1 -1
  663. package/dist/persistence/Redis.d.ts +78 -2
  664. package/dist/persistence/Redis.d.ts.map +1 -1
  665. package/dist/persistence/Redis.js +62 -7
  666. package/dist/persistence/Redis.js.map +1 -1
  667. package/dist/persistence/index.d.ts +5 -0
  668. package/dist/persistence/index.d.ts.map +1 -1
  669. package/dist/persistence/index.js +5 -0
  670. package/dist/persistence/index.js.map +1 -1
  671. package/dist/process/ChildProcess.d.ts +237 -71
  672. package/dist/process/ChildProcess.d.ts.map +1 -1
  673. package/dist/process/ChildProcess.js +56 -158
  674. package/dist/process/ChildProcess.js.map +1 -1
  675. package/dist/process/ChildProcessSpawner.d.ts +35 -0
  676. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  677. package/dist/process/ChildProcessSpawner.js +5 -2
  678. package/dist/process/ChildProcessSpawner.js.map +1 -1
  679. package/dist/process/CommandLine.d.ts +294 -0
  680. package/dist/process/CommandLine.d.ts.map +1 -0
  681. package/dist/process/CommandLine.js +481 -0
  682. package/dist/process/CommandLine.js.map +1 -0
  683. package/dist/process/index.d.ts +5 -0
  684. package/dist/process/index.d.ts.map +1 -1
  685. package/dist/process/index.js +5 -0
  686. package/dist/process/index.js.map +1 -1
  687. package/dist/reactivity/AsyncResult.d.ts +1 -1
  688. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  689. package/dist/reactivity/Atom.d.ts +2 -1
  690. package/dist/reactivity/Atom.d.ts.map +1 -1
  691. package/dist/reactivity/Atom.js +3 -4
  692. package/dist/reactivity/Atom.js.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js.map +1 -1
  694. package/dist/rpc/RpcClient.d.ts +16 -1
  695. package/dist/rpc/RpcClient.d.ts.map +1 -1
  696. package/dist/rpc/RpcClient.js +59 -24
  697. package/dist/rpc/RpcClient.js.map +1 -1
  698. package/dist/rpc/RpcMessage.d.ts +10 -1
  699. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  700. package/dist/rpc/RpcMessage.js +1 -0
  701. package/dist/rpc/RpcMessage.js.map +1 -1
  702. package/dist/rpc/RpcSerialization.d.ts +14 -0
  703. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  704. package/dist/rpc/RpcSerialization.js +26 -8
  705. package/dist/rpc/RpcSerialization.js.map +1 -1
  706. package/dist/rpc/RpcServer.d.ts +31 -0
  707. package/dist/rpc/RpcServer.d.ts.map +1 -1
  708. package/dist/rpc/RpcServer.js +139 -56
  709. package/dist/rpc/RpcServer.js.map +1 -1
  710. package/dist/rpc/RpcTest.d.ts +1 -0
  711. package/dist/rpc/RpcTest.d.ts.map +1 -1
  712. package/dist/rpc/RpcTest.js +1 -0
  713. package/dist/rpc/RpcTest.js.map +1 -1
  714. package/dist/schema/Model.d.ts +14 -0
  715. package/dist/schema/Model.d.ts.map +1 -1
  716. package/dist/schema/Model.js +18 -3
  717. package/dist/schema/Model.js.map +1 -1
  718. package/dist/sql/Migrator.d.ts +2 -20
  719. package/dist/sql/Migrator.d.ts.map +1 -1
  720. package/dist/sql/Migrator.js +13 -55
  721. package/dist/sql/Migrator.js.map +1 -1
  722. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  723. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  724. package/dist/sql/MigratorFileSystem.js +57 -0
  725. package/dist/sql/MigratorFileSystem.js.map +1 -0
  726. package/dist/sql/SqlClient.d.ts +9 -4
  727. package/dist/sql/SqlClient.d.ts.map +1 -1
  728. package/dist/sql/SqlClient.js +13 -10
  729. package/dist/sql/SqlClient.js.map +1 -1
  730. package/dist/sql/SqlResolver.d.ts +4 -0
  731. package/dist/sql/SqlResolver.d.ts.map +1 -1
  732. package/dist/sql/SqlResolver.js +18 -4
  733. package/dist/sql/SqlResolver.js.map +1 -1
  734. package/dist/sql/Statement.d.ts +27 -6
  735. package/dist/sql/Statement.d.ts.map +1 -1
  736. package/dist/sql/Statement.js +21 -15
  737. package/dist/sql/Statement.js.map +1 -1
  738. package/dist/sql/index.js +1 -1
  739. package/dist/testing/index.d.ts +0 -5
  740. package/dist/testing/index.d.ts.map +1 -1
  741. package/dist/testing/index.js +0 -5
  742. package/dist/testing/index.js.map +1 -1
  743. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  744. package/dist/workflow/DurableDeferred.js +21 -2
  745. package/dist/workflow/DurableDeferred.js.map +1 -1
  746. package/dist/workflow/internal/crypto.js +9 -8
  747. package/dist/workflow/internal/crypto.js.map +1 -1
  748. package/package.json +3 -1
  749. package/src/Arbitrary.ts +10 -2
  750. package/src/BigDecimal.ts +3 -0
  751. package/src/Channel.ts +64 -29
  752. package/src/Config.ts +7 -1
  753. package/src/Context.ts +34 -10
  754. package/src/Cron.ts +178 -29
  755. package/src/Data.ts +60 -265
  756. package/src/Duration.ts +140 -0
  757. package/src/Effect.ts +915 -86
  758. package/src/Equal.ts +8 -1
  759. package/src/Exit.ts +3 -3
  760. package/src/FileSystem.ts +65 -4
  761. package/src/Formatter.ts +28 -13
  762. package/src/Glob.ts +205 -0
  763. package/src/Hash.ts +4 -1
  764. package/src/JsonPatch.ts +4 -0
  765. package/src/JsonSchema.ts +12 -40
  766. package/src/Match.ts +127 -0
  767. package/src/Metric.ts +3 -3
  768. package/src/MutableList.ts +7 -5
  769. package/src/MutableRef.ts +8 -1
  770. package/src/PartitionedSemaphore.ts +24 -13
  771. package/src/Pool.ts +182 -52
  772. package/src/PubSub.ts +5 -6
  773. package/src/Random.ts +3 -3
  774. package/src/RcMap.ts +5 -1
  775. package/src/Ref.ts +8 -0
  776. package/src/Schedule.ts +27 -4
  777. package/src/Schema.ts +1237 -87
  778. package/src/SchemaAST.ts +20 -20
  779. package/src/SchemaGetter.ts +27 -11
  780. package/src/SchemaParser.ts +51 -18
  781. package/src/SchemaRepresentation.ts +50 -34
  782. package/src/SchemaTransformation.ts +17 -5
  783. package/src/ScopedCache.ts +5 -9
  784. package/src/Semaphore.ts +208 -40
  785. package/src/Sink.ts +15 -2
  786. package/src/Stream.ts +48 -22
  787. package/src/String.ts +3 -0
  788. package/src/Terminal.ts +19 -1
  789. package/src/Tracer.ts +15 -1
  790. package/src/ai/AiError.ts +56 -80
  791. package/src/ai/Decision.ts +257 -6
  792. package/src/ai/DecisionModel.ts +171 -28
  793. package/src/ai/LanguageModel.ts +9 -0
  794. package/src/ai/McpServer.ts +1283 -299
  795. package/src/ai/McpTest.ts +380 -0
  796. package/src/ai/Prompt.ts +65 -0
  797. package/src/ai/Response.ts +36 -31
  798. package/src/ai/Tool.ts +65 -10
  799. package/src/ai/Toolkit.ts +4 -1
  800. package/src/ai/index.ts +6 -0
  801. package/src/ai/internal/mcpCore.ts +78 -44
  802. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  803. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  804. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  805. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  806. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  807. package/src/ai/internal/mcpProtocol.ts +29 -0
  808. package/src/ai/internal/mcpRuntime.ts +9 -5
  809. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  810. package/src/cli/Argument.ts +21 -0
  811. package/src/cli/CliError.ts +90 -3
  812. package/src/cli/CliOutput.ts +300 -55
  813. package/src/cli/Command.ts +76 -41
  814. package/src/cli/Completions.ts +51 -0
  815. package/src/cli/Flag.ts +122 -0
  816. package/src/cli/GlobalFlag.ts +6 -7
  817. package/src/cli/HelpDoc.ts +18 -1
  818. package/src/cli/Param.ts +35 -6
  819. package/src/cli/Primitive.ts +16 -1
  820. package/src/cli/Prompt.ts +1 -0
  821. package/src/cli/TerminalCapabilities.ts +6 -3
  822. package/src/cli/internal/completions/bash.ts +79 -29
  823. package/src/cli/internal/help.ts +21 -9
  824. package/src/cluster/ClusterWorkflowEngine.ts +46 -16
  825. package/src/cluster/MessageStorage.ts +19 -14
  826. package/src/cluster/Sharding.ts +176 -47
  827. package/src/cluster/ShardingConfig.ts +43 -0
  828. package/src/cluster/SingleRunner.ts +3 -3
  829. package/src/cluster/Snowflake.ts +3 -7
  830. package/src/cluster/SqlMessageStorage.ts +49 -17
  831. package/src/cluster/SqlRunnerStorage.ts +143 -70
  832. package/src/cluster/internal/entityManager.ts +75 -22
  833. package/src/crypto/Aead.ts +517 -0
  834. package/src/crypto/Cipher.ts +326 -0
  835. package/src/crypto/CryptoError.ts +242 -0
  836. package/src/crypto/Digest.ts +167 -0
  837. package/src/crypto/Kdf.ts +315 -0
  838. package/src/crypto/KeyAgreement.ts +489 -0
  839. package/src/crypto/KeyFormat.ts +712 -0
  840. package/src/crypto/KeyWrap.ts +639 -0
  841. package/src/crypto/Mac.ts +386 -0
  842. package/src/crypto/SecureRandom.ts +459 -0
  843. package/src/crypto/Signature.ts +673 -0
  844. package/src/crypto/WebCrypto.ts +64 -0
  845. package/src/crypto/index.ts +78 -0
  846. package/src/crypto/internal/asymmetric.ts +329 -0
  847. package/src/crypto/internal/chacha.ts +1088 -0
  848. package/src/crypto/internal/der.ts +110 -0
  849. package/src/crypto/internal/digest.ts +16 -0
  850. package/src/crypto/internal/key.ts +235 -0
  851. package/src/crypto/internal/md5.ts +170 -0
  852. package/src/crypto/internal/webCrypto.ts +150 -0
  853. package/src/devtools/DevToolsClient.ts +2 -0
  854. package/src/encoding/Base64.ts +38 -0
  855. package/src/encoding/Base64Url.ts +5 -2
  856. package/src/encoding/Csv.ts +1298 -0
  857. package/src/encoding/Hex.ts +3 -2
  858. package/src/encoding/SchemaBinary.ts +40 -4
  859. package/src/encoding/Sse.ts +4 -3
  860. package/src/encoding/Toml.ts +117 -35
  861. package/src/encoding/Yaml.ts +61 -18
  862. package/src/encoding/index.ts +6 -0
  863. package/src/eventlog/EventJournal.ts +4 -3
  864. package/src/eventlog/EventLog.ts +340 -15
  865. package/src/eventlog/EventLogEncryption.ts +118 -110
  866. package/src/eventlog/EventLogMessage.ts +273 -1
  867. package/src/eventlog/EventLogRemote.ts +367 -23
  868. package/src/eventlog/EventLogServer.ts +23 -8
  869. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  870. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  871. package/src/eventlog/EventRow.ts +12 -3
  872. package/src/eventlog/SqlEventJournal.ts +68 -45
  873. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  874. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  875. package/src/eventlog/internal/batches.ts +30 -0
  876. package/src/eventlog/internal/compaction.ts +64 -0
  877. package/src/eventlog/internal/conflicts.ts +0 -4
  878. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  879. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  880. package/src/http/Cookies.ts +291 -12
  881. package/src/http/FetchHttpClient.ts +88 -16
  882. package/src/http/HttpClient.ts +636 -29
  883. package/src/http/HttpClientError.ts +35 -1
  884. package/src/http/HttpClientRequest.ts +21 -10
  885. package/src/http/HttpClientResponse.ts +3 -2
  886. package/src/http/HttpMethod.ts +10 -2
  887. package/src/http/HttpMiddleware.ts +15 -18
  888. package/src/http/HttpRouter.ts +2 -1
  889. package/src/http/HttpServerError.ts +2 -2
  890. package/src/http/HttpServerRequest.ts +101 -30
  891. package/src/http/HttpServerResponse.ts +3 -2
  892. package/src/http/HttpStaticServer.ts +51 -22
  893. package/src/http/HttpTraceContext.ts +7 -4
  894. package/src/http/MultipartParser/internal/contentType.ts +3 -3
  895. package/src/http/ProblemDetails.ts +149 -0
  896. package/src/http/UrlParams.ts +6 -1
  897. package/src/http/index.ts +6 -0
  898. package/src/http/internal/compression.ts +4 -5
  899. package/src/http/internal/decompression.ts +10 -4
  900. package/src/http/internal/httpBody.ts +10 -2
  901. package/src/http/internal/urlParams.ts +37 -0
  902. package/src/http-api/HttpApi.ts +3 -6
  903. package/src/http-api/HttpApiBuilder.ts +61 -19
  904. package/src/http-api/HttpApiClient.ts +284 -72
  905. package/src/http-api/HttpApiEndpoint.ts +135 -35
  906. package/src/http-api/HttpApiError.ts +250 -0
  907. package/src/http-api/HttpApiMiddleware.ts +95 -1
  908. package/src/http-api/HttpApiSchema.ts +236 -52
  909. package/src/http-api/HttpApiTest.ts +3 -2
  910. package/src/http-api/OpenApi.ts +20 -17
  911. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  912. package/src/index.ts +6 -6
  913. package/src/internal/arbitrary/runner.ts +133 -36
  914. package/src/internal/core.ts +2 -0
  915. package/src/internal/effect.ts +58 -34
  916. package/src/internal/equal.ts +17 -0
  917. package/src/internal/glob.ts +736 -0
  918. package/src/internal/jsonSchema.ts +27 -0
  919. package/src/internal/matcher.ts +18 -1
  920. package/src/internal/persistence.ts +11 -0
  921. package/src/internal/rcRef.ts +4 -1
  922. package/src/internal/schema/compilerRegistry.ts +6 -1
  923. package/src/internal/schema/content.ts +18 -0
  924. package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
  925. package/src/internal/schema/fromRepresentation.ts +2 -1
  926. package/src/internal/schema/standardSchema.ts +2 -2
  927. package/src/internal/schema/toCodeDocument.ts +11 -7
  928. package/src/internal/schema/toCodec.ts +26 -22
  929. package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
  930. package/src/internal/schema/toRepresentation.ts +122 -140
  931. package/src/internal/sql.ts +14 -0
  932. package/src/internal/trie.ts +43 -14
  933. package/src/internal/ulid.ts +44 -0
  934. package/src/internal/uuid.ts +57 -16
  935. package/src/internal/version.ts +1 -1
  936. package/src/observability/Otlp.ts +21 -4
  937. package/src/observability/OtlpProxy.ts +314 -0
  938. package/src/observability/OtlpResource.ts +9 -1
  939. package/src/observability/OtlpTracer.ts +4 -0
  940. package/src/observability/index.ts +6 -0
  941. package/src/persistence/CircuitBreaker.ts +1678 -0
  942. package/src/persistence/KeyValueStore.ts +219 -22
  943. package/src/persistence/PersistedQueue.ts +128 -59
  944. package/src/persistence/Persistence.ts +20 -13
  945. package/src/persistence/Redis.ts +129 -8
  946. package/src/persistence/index.ts +6 -0
  947. package/src/process/ChildProcess.ts +285 -264
  948. package/src/process/ChildProcessSpawner.ts +46 -2
  949. package/src/process/CommandLine.ts +630 -0
  950. package/src/process/index.ts +6 -0
  951. package/src/reactivity/AsyncResult.ts +1 -1
  952. package/src/reactivity/Atom.ts +5 -5
  953. package/src/reactivity/AtomRegistry.ts +1 -1
  954. package/src/rpc/RpcClient.ts +75 -36
  955. package/src/rpc/RpcMessage.ts +10 -1
  956. package/src/rpc/RpcSerialization.ts +35 -9
  957. package/src/rpc/RpcServer.ts +176 -63
  958. package/src/rpc/RpcTest.ts +3 -0
  959. package/src/schema/Model.ts +26 -3
  960. package/src/sql/Migrator.ts +15 -69
  961. package/src/sql/MigratorFileSystem.ts +71 -0
  962. package/src/sql/SqlClient.ts +13 -20
  963. package/src/sql/SqlResolver.ts +23 -9
  964. package/src/sql/Statement.ts +38 -9
  965. package/src/sql/index.ts +1 -1
  966. package/src/testing/index.ts +0 -6
  967. package/src/workflow/DurableDeferred.ts +23 -6
  968. package/src/workflow/internal/crypto.ts +15 -11
  969. package/dist/Crypto.d.ts +0 -244
  970. package/dist/Crypto.d.ts.map +0 -1
  971. package/dist/Crypto.js +0 -139
  972. package/dist/Crypto.js.map +0 -1
  973. package/dist/testing/TestCrypto.d.ts +0 -73
  974. package/dist/testing/TestCrypto.d.ts.map +0 -1
  975. package/dist/testing/TestCrypto.js +0 -87
  976. package/dist/testing/TestCrypto.js.map +0 -1
  977. package/src/Crypto.ts +0 -347
  978. package/src/testing/TestCrypto.ts +0 -94
@@ -14,21 +14,25 @@
14
14
  */
15
15
  /** @effect-diagnostics floatingEffect:skip-file */
16
16
  /** @effect-diagnostics classSelfMismatch:off */
17
+ import * as Cause from "../Cause.ts"
17
18
  import * as Context from "../Context.ts"
18
19
  import * as Effect from "../Effect.ts"
20
+ import * as ErrorReporter from "../ErrorReporter.ts"
19
21
  import type * as HttpClientError from "../http/HttpClientError.ts"
20
22
  import type * as HttpClientRequest from "../http/HttpClientRequest.ts"
21
23
  import type * as HttpClientResponse from "../http/HttpClientResponse.ts"
22
24
  import type * as HttpRouter from "../http/HttpRouter.ts"
25
+ import * as HttpServerRespondable from "../http/HttpServerRespondable.ts"
23
26
  import type { HttpServerResponse } from "../http/HttpServerResponse.ts"
24
27
  import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
25
28
  import * as Layer from "../Layer.ts"
26
29
  import { hasProperty } from "../Predicate.ts"
27
30
  import type * as Schema from "../Schema.ts"
31
+ import * as SchemaIssue from "../SchemaIssue.ts"
28
32
  import { Scope } from "../Scope.ts"
29
33
  import type { unhandled } from "../Types.ts"
30
34
  import type * as HttpApiEndpoint from "./HttpApiEndpoint.ts"
31
- import { HttpApiSchemaError } from "./HttpApiError.ts"
35
+ import { BadRequestProblem, HttpApiSchemaError, InternalServerErrorProblem } from "./HttpApiError.ts"
32
36
  import type * as HttpApiGroup from "./HttpApiGroup.ts"
33
37
  import type * as HttpApiSecurity from "./HttpApiSecurity.ts"
34
38
 
@@ -513,6 +517,96 @@ export const layerSchemaErrorTransform = <Id, E extends ErrorConstraint, Require
513
517
  )
514
518
  )
515
519
 
520
+ /**
521
+ * Middleware that renders request decoding and response encoding failures as
522
+ * RFC 9457 problems.
523
+ *
524
+ * **Details**
525
+ *
526
+ * It declares `HttpApiError.BadRequestProblem` at 400 and
527
+ * `HttpApiError.InternalServerErrorProblem` at 500, so the OpenAPI document and
528
+ * generated clients of an API using it know both responses. Provide it with
529
+ * {@link layerProblemDetails}.
530
+ *
531
+ * **Example** (Opting in to problem details)
532
+ *
533
+ * ```ts
534
+ * import { Layer, Schema } from "effect"
535
+ * import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/http-api"
536
+ *
537
+ * const Users = HttpApiGroup.make("users").add(
538
+ * HttpApiEndpoint.get("list", "/users", { query: { page: Schema.Number } })
539
+ * )
540
+ * const Api = HttpApi.make("api").add(Users).middleware(HttpApiMiddleware.ProblemDetails)
541
+ *
542
+ * // A request whose query fails decoding now responds with 400 and
543
+ * // { "type": "about:blank", "title": "Bad Request", "status": 400, "detail": "Request validation failed" }
544
+ * const ServerLive = HttpApiBuilder.layer(Api).pipe(
545
+ * Layer.provide(HttpApiMiddleware.layerProblemDetails())
546
+ * )
547
+ * ```
548
+ *
549
+ * @stability unstable
550
+ * @category services
551
+ * @since 4.0.6
552
+ */
553
+ export class ProblemDetails extends Service<ProblemDetails>()("effect/http-api/HttpApiMiddleware/ProblemDetails", {
554
+ error: [BadRequestProblem, InternalServerErrorProblem]
555
+ }) {}
556
+
557
+ const formatIssues = SchemaIssue.makeFormatterStandardSchemaV1()
558
+
559
+ const toPathSegment = (segment: PropertyKey | { readonly key: PropertyKey }): string | number => {
560
+ const key = typeof segment === "object" ? segment.key : segment
561
+ return typeof key === "number" ? key : String(key)
562
+ }
563
+
564
+ const toProblemIssues = (error: HttpApiSchemaError) => {
565
+ const slot = error.kind.toLowerCase()
566
+ return formatIssues(error.cause.issue).issues.map((issue) => ({
567
+ path: [slot, ...(issue.path ?? []).map(toPathSegment)],
568
+ message: issue.message
569
+ }))
570
+ }
571
+
572
+ /**
573
+ * Provides the {@link ProblemDetails} middleware.
574
+ *
575
+ * **Details**
576
+ *
577
+ * A request decoding failure becomes a `400` problem with a generic `detail`
578
+ * and no information about the request or the schema. With
579
+ * `includeDetails: true` the problem also carries `errors`, one entry per
580
+ * issue with the path of the offending value prefixed by its request slot and
581
+ * the issue message. A response encoding failure is reported to the configured
582
+ * error reporters, as it is without the middleware, and becomes a `500`
583
+ * problem with no detail.
584
+ *
585
+ * @stability unstable
586
+ * @category layers
587
+ * @since 4.0.6
588
+ */
589
+ export const layerProblemDetails = (options?: {
590
+ readonly includeDetails?: boolean | undefined
591
+ }): Layer.Layer<ProblemDetails> => {
592
+ const includeDetails = options?.includeDetails === true
593
+ return layerSchemaErrorTransform(ProblemDetails, (error) => {
594
+ if (error.kind === "Body" || error.kind === "ResponseHeaders") {
595
+ return Effect.andThen(
596
+ ErrorReporter.report(Cause.fail(error)),
597
+ HttpServerRespondable.toResponse(new InternalServerErrorProblem())
598
+ )
599
+ }
600
+ return Effect.fail(
601
+ new BadRequestProblem(
602
+ includeDetails ? { ...requestValidationFailed, errors: toProblemIssues(error) } : requestValidationFailed
603
+ )
604
+ )
605
+ })
606
+ }
607
+
608
+ const requestValidationFailed = { detail: "Request validation failed" }
609
+
516
610
  /**
517
611
  * Provides a client-side middleware implementation for a middleware that is required by generated clients.
518
612
  *
@@ -10,18 +10,21 @@
10
10
  * @stability unstable
11
11
  * @since 4.0.0
12
12
  */
13
+ import * as Arr from "../Array.ts"
13
14
  import * as ByteSize from "../ByteSize.ts"
14
15
  import * as Sse from "../encoding/Sse.ts"
15
16
  import { constVoid, type LazyArg } from "../Function.ts"
16
17
  import { hasBody, type HttpMethod } from "../http/HttpMethod.ts"
17
18
  import * as HttpStatus from "../http/HttpStatus.ts"
18
19
  import type * as Multipart_ from "../http/Multipart.ts"
20
+ import * as ProblemDetails from "../http/ProblemDetails.ts"
19
21
  import * as Predicate from "../Predicate.ts"
20
22
  import * as Schema from "../Schema.ts"
21
23
  import * as SchemaAST from "../SchemaAST.ts"
22
24
  import * as SchemaTransformation from "../SchemaTransformation.ts"
23
25
  import * as Socket from "../socket/Socket.ts"
24
26
  import * as Stream from "../Stream.ts"
27
+ import * as MediaType from "./internal/mediaType.ts"
25
28
 
26
29
  declare module "../Schema.ts" {
27
30
  namespace Annotations {
@@ -122,13 +125,15 @@ export type StatusLiteral = HttpStatus.Literal
122
125
  *
123
126
  * **Details**
124
127
  *
125
- * The status is stored with `.annotateKey({ httpApiStatus: code })`, so a named
126
- * schema reused with different statuses still emits a single OpenAPI component.
127
- * If the schema has checks or already has an `httpApiStatus` annotation, it is
128
- * stored with `.annotate({ httpApiStatus: code })` instead. A later
129
- * `.annotate({ httpApiStatus })` takes precedence, and a later check drops the
130
- * status. You can pass either a numeric status code (for example, `201`) or a
131
- * common literal name (for example, `"Created"`).
128
+ * Stores the status with `.annotateKey({ httpApiStatus: code })` unless the
129
+ * schema or any of its checks already has an ordinary `httpApiStatus`
130
+ * annotation, including an explicit `undefined`. In that case, uses
131
+ * `.annotate({ httpApiStatus: code })` instead.
132
+ *
133
+ * Ordinary status annotations take precedence over key annotations. Checks
134
+ * without a status annotation preserve the existing status. You can pass
135
+ * either a numeric code (for example, `201`) or a common literal name
136
+ * (for example, `"Created"`).
132
137
  *
133
138
  * @stability unstable
134
139
  * @category schemas
@@ -149,9 +154,9 @@ export function status(code: StatusLiteral): {
149
154
  export function status(code: number | StatusLiteral) {
150
155
  const statusCode = typeof code === "string" ? HttpStatus.fromLiteral(code) : code
151
156
  return <S extends Schema.Top>(self: S): S["Rebuild"] =>
152
- self.ast.checks !== undefined || hasStatusAnnotation(self.ast)
153
- ? self.annotate({ httpApiStatus: statusCode })
154
- : self.annotateKey({ httpApiStatus: statusCode })
157
+ findHttpApiStatusAnnotation(self.ast) === undefined
158
+ ? self.annotateKey({ httpApiStatus: statusCode })
159
+ : self.annotate({ httpApiStatus: statusCode })
155
160
  }
156
161
 
157
162
  /**
@@ -260,6 +265,85 @@ export function asNoContent<S extends Schema.Constraint>(options: {
260
265
  }
261
266
  }
262
267
 
268
+ /**
269
+ * Schema type returned by `asProblem`, encoding as a problem details body
270
+ * while decoding to the original schema type.
271
+ *
272
+ * @stability unstable
273
+ * @category schemas
274
+ * @since 4.0.6
275
+ */
276
+ export interface asProblem<S extends Schema.Constraint> extends
277
+ Schema.decodeTo<
278
+ Schema.toType<S>,
279
+ Schema.Struct<{
280
+ readonly type: Schema.tag<string>
281
+ readonly status: Schema.middlewareDecoding<Schema.withDecodingDefaultKey<Schema.tag<number>>, never>
282
+ readonly title: Schema.middlewareDecoding<Schema.withDecodingDefaultKey<Schema.tag<string>>, never>
283
+ }>
284
+ >
285
+ {}
286
+
287
+ /**
288
+ * Renders an error class as an RFC 9457 problem.
289
+ *
290
+ * **Details**
291
+ *
292
+ * The server encodes the error as an `application/problem+json` body carrying
293
+ * `type`, `title` and the status of the class. Generated clients decode a body
294
+ * with the same `type` back into an instance by calling `decode`, which
295
+ * defaults to constructing the class without arguments; a body with a
296
+ * different `type` is rejected.
297
+ *
298
+ * **Example** (A built-in error as a problem)
299
+ *
300
+ * ```ts
301
+ * import { HttpApiEndpoint, HttpApiError, HttpApiSchema } from "effect/http-api"
302
+ *
303
+ * const user = HttpApiEndpoint.get("user", "/user", {
304
+ * error: HttpApiError.NotFound.pipe(HttpApiSchema.asProblem({ title: "Not Found" }))
305
+ * })
306
+ * // A NotFound failure responds with 404 and
307
+ * // { "type": "about:blank", "title": "Not Found", "status": 404 }
308
+ * ```
309
+ *
310
+ * @see {@link asNoContent} for the empty-body equivalent.
311
+ *
312
+ * @stability unstable
313
+ * @category encoding
314
+ * @since 4.0.6
315
+ */
316
+ export function asProblem<S extends Schema.Constraint & (new() => S["Type"])>(options: {
317
+ /**
318
+ * The problem type URI. Defaults to `about:blank`.
319
+ */
320
+ readonly type?: string | undefined
321
+ readonly title: string
322
+ readonly decode?: LazyArg<S["Type"]> | undefined
323
+ }) {
324
+ return (self: S): asProblem<S> => {
325
+ const status = getStatusError(self.ast)
326
+ const type = options.type ?? ProblemDetails.blankType
327
+ const body = { type, status, title: options.title }
328
+ const decode = options.decode ?? (() => new self())
329
+ const problem = Schema.Struct({
330
+ type: Schema.tag(type),
331
+ status: ProblemDetails.fixedMember(status),
332
+ title: ProblemDetails.fixedMember(options.title)
333
+ })
334
+ return problem.pipe(
335
+ Schema.decodeTo(
336
+ Schema.toType(self),
337
+ SchemaTransformation.transform({
338
+ decode,
339
+ encode: () => body
340
+ })
341
+ ),
342
+ asJson({ contentType: ProblemDetails.contentType })
343
+ )
344
+ }
345
+ }
346
+
263
347
  type StreamMode = "sse" | "uint8array" | "ndjson"
264
348
 
265
349
  /**
@@ -321,6 +405,7 @@ export interface StreamSse<
321
405
  readonly mode: "sse"
322
406
  readonly sseMode: StreamSseMode
323
407
  readonly contentType: string
408
+ readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
324
409
  readonly events: Events
325
410
  readonly error: Error
326
411
  readonly "~Value"?: Value | undefined
@@ -379,6 +464,7 @@ export interface StreamUint8Array extends
379
464
  readonly _tag: "StreamUint8Array"
380
465
  readonly mode: "uint8array"
381
466
  readonly contentType: string
467
+ readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
382
468
  readonly maxBytes: ByteSize.ByteSize | undefined
383
469
  }
384
470
 
@@ -430,6 +516,7 @@ export interface StreamNdjson<S extends Schema.Constraint> extends
430
516
  readonly _tag: "StreamNdjson"
431
517
  readonly mode: "ndjson"
432
518
  readonly contentType: string
519
+ readonly contentTypes: Arr.NonEmptyReadonlyArray<string>
433
520
  readonly schema: S
434
521
  readonly maxBytes: ByteSize.ByteSize | undefined
435
522
  readonly maxElementBytes: ByteSize.ByteSize
@@ -523,7 +610,7 @@ export const StreamSse: {
523
610
  _tag: "StreamSse",
524
611
  mode: "sse",
525
612
  sseMode: options.events === undefined ? "data" : "events",
526
- contentType: options.contentType ?? defaultStreamContentType("sse"),
613
+ ...streamContentTypes(options.contentType, "sse"),
527
614
  events,
528
615
  error: options.error ?? Schema.Never
529
616
  })
@@ -534,22 +621,24 @@ export const StreamSse: {
534
621
  *
535
622
  * **Details**
536
623
  *
537
- * `contentType` defaults to `application/octet-stream`. `maxBytes` only applies
538
- * to request payloads and has no default.
624
+ * `contentType` defaults to `application/octet-stream`. Pass a list when the
625
+ * same stream is sent under several media types. The first entry is the
626
+ * default response type, and payloads are accepted under every entry.
627
+ * `maxBytes` only applies to request payloads and has no default.
539
628
  *
540
629
  * @stability unstable
541
630
  * @category constructors
542
631
  * @since 4.0.0
543
632
  */
544
633
  export const StreamUint8Array = (options?: {
545
- readonly contentType?: string | undefined
634
+ readonly contentType?: string | ReadonlyArray<string> | undefined
546
635
  readonly maxBytes?: ByteSize.Input | undefined
547
636
  }): StreamUint8Array =>
548
637
  Schema.make<StreamUint8Array>(streamSchema.ast, {
549
638
  [StreamSchemaTypeId]: StreamSchemaTypeId,
550
639
  _tag: "StreamUint8Array",
551
640
  mode: "uint8array",
552
- contentType: options?.contentType ?? defaultStreamContentType("uint8array"),
641
+ ...streamContentTypes(options?.contentType, "uint8array"),
553
642
  maxBytes: options?.maxBytes === undefined ? undefined : ByteSize.fromInputUnsafe(options.maxBytes)
554
643
  })
555
644
 
@@ -559,7 +648,8 @@ export const StreamUint8Array = (options?: {
559
648
  * **Details**
560
649
  *
561
650
  * `contentType` defaults to `application/x-ndjson` and `maxElementBytes` to 1
562
- * MiB. `maxBytes` has no default.
651
+ * MiB. `maxBytes` has no default. Pass a list of content types to accept
652
+ * aliases such as `application/jsonl`. The first entry is the default.
563
653
  *
564
654
  * **Example** (Declaring an NDJSON request payload)
565
655
  *
@@ -587,7 +677,7 @@ export const StreamUint8Array = (options?: {
587
677
  */
588
678
  export const StreamNdjson = <S extends Schema.Constraint>(options: {
589
679
  readonly schema: S
590
- readonly contentType?: string | undefined
680
+ readonly contentType?: string | ReadonlyArray<string> | undefined
591
681
  readonly maxBytes?: ByteSize.Input | undefined
592
682
  readonly maxElementBytes?: ByteSize.Input | undefined
593
683
  }): StreamNdjson<S> =>
@@ -595,7 +685,7 @@ export const StreamNdjson = <S extends Schema.Constraint>(options: {
595
685
  [StreamSchemaTypeId]: StreamSchemaTypeId,
596
686
  _tag: "StreamNdjson",
597
687
  mode: "ndjson",
598
- contentType: options.contentType ?? defaultStreamContentType("ndjson"),
688
+ ...streamContentTypes(options.contentType, "ndjson"),
599
689
  schema: options.schema,
600
690
  maxBytes: options.maxBytes === undefined ? undefined : ByteSize.fromInputUnsafe(options.maxBytes),
601
691
  maxElementBytes: options.maxElementBytes === undefined
@@ -637,24 +727,27 @@ const UpgradeTypeId = "~effect/http-api/HttpApiSchema/Upgrade"
637
727
  *
638
728
  * Created with {@link Upgrade}. The response is `101 Switching Protocols`, and
639
729
  * the connection then carries raw bytes in both directions as a `Socket`.
730
+ * `Headers` is the schema of the custom `101` headers, or `never` when the
731
+ * upgrade declares none.
640
732
  *
641
733
  * @stability unstable
642
734
  * @category models
643
735
  * @since 4.0.6
644
736
  */
645
- export interface Upgrade extends
737
+ export interface Upgrade<Headers extends Schema.Top = Schema.Top> extends
646
738
  Schema.Bottom<
647
739
  Socket.Socket,
648
740
  Socket.Socket,
649
741
  never,
650
742
  never,
651
743
  SchemaAST.Declaration,
652
- Upgrade
744
+ Upgrade<Headers>
653
745
  >
654
746
  {
655
- readonly "Rebuild": Upgrade
747
+ readonly "Rebuild": Upgrade<Headers>
656
748
  readonly [UpgradeTypeId]: typeof UpgradeTypeId
657
749
  readonly protocol: string
750
+ readonly headers: Headers | undefined
658
751
  }
659
752
 
660
753
  const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
@@ -665,33 +758,59 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
665
758
  *
666
759
  * **When to use**
667
760
  *
668
- * Use as the only success schema of an endpoint that hands over its
669
- * connection as a raw byte stream after `101 Switching Protocols`. For
670
- * WebSocket, upgrade the request with `HttpServerRequest.upgrade` and
671
- * connect with `Socket.makeWebSocket` instead.
761
+ * Use when an endpoint hands over its connection as a raw byte stream after
762
+ * `101 Switching Protocols`. For WebSocket, upgrade the request with
763
+ * `HttpServerRequest.upgrade` and connect with `Socket.makeWebSocket` instead.
672
764
  *
673
765
  * **Details**
674
766
  *
675
- * The handler receives the connection as `socket`. The `101` response is
676
- * sent when the handler acquires the socket's reader, so a handler can still
677
- * fail with a declared error before then. Requests that do not ask for
678
- * `protocol` get `426 Upgrade Required`.
767
+ * The handler receives an `upgrade` function that returns the connection.
768
+ * The `101` response is sent when the handler acquires the socket's reader,
769
+ * so a handler can still fail with a declared error before then. Requests
770
+ * that do not ask for `protocol` get `426 Upgrade Required`.
679
771
  *
680
- * The client sends `Connection: Upgrade` and `Upgrade: protocol`, and returns
681
- * the response headers with the connection. Other responses are decoded as
682
- * the endpoint's errors.
772
+ * `headers` declares custom `101` response headers, encoded like
773
+ * `WithHeaders` headers. The handler passes them to `upgrade`, so they can
774
+ * depend on the decoded request. `Connection`, `Upgrade`, `Content-Length`
775
+ * and `Transfer-Encoding` cannot be set.
683
776
  *
684
- * The endpoint cannot declare a payload or other success schemas.
777
+ * The endpoint may declare a buffered payload, which is decoded before the
778
+ * handler runs. Streaming payloads are rejected.
685
779
  *
686
- * **Example** (Declaring an attach endpoint)
780
+ * The endpoint may also declare buffered or no-content successes at statuses
781
+ * other than `101`, for a server that declines the upgrade (RFC 9110 §7.8).
782
+ * The handler then either calls `upgrade` and returns nothing, or returns one
783
+ * of those successes without calling it. An endpoint declares at most one
784
+ * upgrade, and streaming successes cannot be combined with it.
785
+ *
786
+ * The client sends `Connection: Upgrade` and `Upgrade: protocol`, and returns
787
+ * the response headers with the connection, decoded with `headers` when
788
+ * declared. Ordinary success responses are decoded as usual, and
789
+ * `HttpApiClient.isUpgraded` tells the two apart. Other responses are decoded
790
+ * as the endpoint's errors.
791
+ *
792
+ * **Example** (Declaring an exec start endpoint)
687
793
  *
688
794
  * ```ts
689
795
  * import { Schema } from "effect"
690
796
  * import { HttpApiEndpoint, HttpApiSchema } from "effect/http-api"
691
797
  *
692
- * const attach = HttpApiEndpoint.post("attach", "/containers/:id/attach", {
798
+ * const start = HttpApiEndpoint.post("start", "/exec/:id/start", {
693
799
  * params: { id: Schema.String },
694
- * success: HttpApiSchema.Upgrade({ protocol: "tcp" })
800
+ * payload: Schema.Struct({ Detach: Schema.Boolean, Tty: Schema.Boolean }),
801
+ * success: [
802
+ * HttpApiSchema.Upgrade({
803
+ * protocol: "tcp",
804
+ * headers: {
805
+ * "content-type": Schema.Literals([
806
+ * "application/vnd.docker.raw-stream",
807
+ * "application/vnd.docker.multiplexed-stream"
808
+ * ])
809
+ * }
810
+ * }),
811
+ * // a detached exec answers with an empty 200 instead
812
+ * HttpApiSchema.Empty(200)
813
+ * ]
695
814
  * })
696
815
  * ```
697
816
  *
@@ -699,23 +818,72 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
699
818
  * @category constructors
700
819
  * @since 4.0.6
701
820
  */
702
- export const Upgrade = (options: {
821
+ export function Upgrade(options: { readonly protocol: string }): Upgrade<never>
822
+ /**
823
+ * @stability unstable
824
+ */
825
+ export function Upgrade<H extends Schema.Struct.Fields>(options: {
826
+ readonly protocol: string
827
+ readonly headers: H
828
+ }): Upgrade<Schema.Struct<H>>
829
+ /**
830
+ * @stability unstable
831
+ */
832
+ export function Upgrade<H extends Schema.Top>(options: {
833
+ readonly protocol: string
834
+ readonly headers: H
835
+ }): Upgrade<H>
836
+ /**
837
+ * @stability unstable
838
+ */
839
+ export function Upgrade(options: {
703
840
  readonly protocol: string
704
- }): Upgrade => {
841
+ readonly headers?: Schema.Top | Schema.Struct.Fields | undefined
842
+ }): Upgrade {
705
843
  if (options.protocol.toLowerCase() === "websocket") {
706
844
  throw new Error("Upgrade does not support WebSocket")
707
845
  }
708
- return Schema.make<Upgrade>(upgradeSchema.ast, {
846
+ const headers = options.headers === undefined || Schema.isSchema(options.headers)
847
+ ? options.headers
848
+ : Schema.Struct(options.headers)
849
+ return rebuildUpgrade(options.protocol, headers)
850
+ }
851
+
852
+ /**
853
+ * @internal
854
+ */
855
+ export const rebuildUpgrade = (protocol: string, headers: Schema.Top | undefined): Upgrade =>
856
+ Schema.make<Upgrade>(upgradeSchema.ast, {
709
857
  [UpgradeTypeId]: UpgradeTypeId,
710
- protocol: options.protocol
858
+ protocol,
859
+ headers
711
860
  })
712
- }
713
861
 
714
862
  /**
715
863
  * @internal
716
864
  */
717
865
  export const isUpgrade = (u: unknown): u is Upgrade => Schema.isSchema(u) && Predicate.hasProperty(u, UpgradeTypeId)
718
866
 
867
+ function streamContentTypes(
868
+ contentType: string | ReadonlyArray<string> | undefined,
869
+ mode: StreamMode
870
+ ): { readonly contentType: string; readonly contentTypes: Arr.NonEmptyReadonlyArray<string> } {
871
+ if (contentType === undefined) contentType = defaultStreamContentType(mode)
872
+ if (typeof contentType === "string") return { contentType, contentTypes: [contentType] }
873
+ if (!Arr.isReadonlyArrayNonEmpty(contentType)) {
874
+ throw new Error("Stream schemas require at least one content type")
875
+ }
876
+ const seen = new Set<string>()
877
+ for (const entry of contentType) {
878
+ const normalized = MediaType.normalize(entry)
879
+ if (seen.has(normalized)) {
880
+ throw new Error(`Duplicate stream content type: ${entry}`)
881
+ }
882
+ seen.add(normalized)
883
+ }
884
+ return { contentType: contentType[0], contentTypes: contentType }
885
+ }
886
+
719
887
  function defaultStreamContentType(mode: StreamMode): string {
720
888
  switch (mode) {
721
889
  case "sse":
@@ -779,8 +947,8 @@ export type WithHeadersValueTypeId = typeof WithHeadersValueTypeId
779
947
  * `StreamSse` and `StreamUint8Array`; error responses remain non-streaming.
780
948
  * Nesting `WithHeaders` is rejected at construction.
781
949
  * - `headers` is any schema; endpoint construction applies
782
- * `Schema.toCodecStringTree` unless codecs are disabled, so leaves become
783
- * `string | undefined` on the wire and `undefined` leaves are omitted from the response.
950
+ * a StringTree codec unless codecs are disabled. Optional headers that encode
951
+ * to `undefined` are omitted from the response.
784
952
  * - Status and response-encoding annotations are resolved from the wrapper
785
953
  * first, falling through to the inner schema.
786
954
  * - A header-carrying response cannot share its status and content type with
@@ -1224,6 +1392,12 @@ export function asJson(options?: {
1224
1392
  *
1225
1393
  * The schema's encoded side must be a record of strings.
1226
1394
  *
1395
+ * **Gotchas**
1396
+ *
1397
+ * Fields are flat on the server. A field that encodes to a nested object is
1398
+ * sent as bracket keys that the server does not read back; use an explicit
1399
+ * codec such as `Schema.fromJsonString(...)` for structured values.
1400
+ *
1227
1401
  * @stability unstable
1228
1402
  * @category encoding
1229
1403
  * @since 4.0.0
@@ -1299,18 +1473,28 @@ const resolveHttpApiEncoding = SchemaAST.resolveAt<Encoding>("~httpApiEncoding")
1299
1473
  */
1300
1474
  export const getWithHeadersAnnotation = SchemaAST.resolveAt<WithHeadersAnnotation>("~httpApiWithHeaders")
1301
1475
 
1302
- const resolveHttpApiStatusAnnotation = SchemaAST.resolveAt<number>("httpApiStatus")
1303
-
1304
- function hasStatusAnnotation(ast: SchemaAST.AST): boolean {
1305
- const annotations = SchemaAST.resolve(ast)
1306
- return annotations !== undefined && "httpApiStatus" in annotations
1476
+ function findHttpApiStatusAnnotation(
1477
+ ast: SchemaAST.AST | SchemaAST.FilterGroup<any>
1478
+ ): Schema.Annotations.Annotations | undefined {
1479
+ if (ast.checks) {
1480
+ for (let i = ast.checks.length - 1; i >= 0; i--) {
1481
+ const check = ast.checks[i]
1482
+ if (check.annotations && "httpApiStatus" in check.annotations) return check.annotations
1483
+ if (check._tag === "FilterGroup") {
1484
+ const annotations = findHttpApiStatusAnnotation(check)
1485
+ if (annotations !== undefined) return annotations
1486
+ }
1487
+ }
1488
+ }
1489
+ const annotations = ast.annotations
1490
+ return annotations && "httpApiStatus" in annotations ? annotations : undefined
1307
1491
  }
1308
1492
 
1309
- // An `httpApiStatus` annotation, even `undefined`, overrides the key context set by
1310
- // `status`, which a later check drops, matching annotations
1311
1493
  function resolveHttpApiStatus(ast: SchemaAST.AST): number | undefined {
1312
- if (hasStatusAnnotation(ast)) return resolveHttpApiStatusAnnotation(ast)
1313
- return ast.checks === undefined ? ast.context?.annotations?.httpApiStatus : undefined
1494
+ const annotations = findHttpApiStatusAnnotation(ast)
1495
+ // An explicit undefined clears the status instead of falling back to key context.
1496
+ if (annotations !== undefined) return annotations.httpApiStatus as number | undefined
1497
+ return ast.context?.annotations?.httpApiStatus
1314
1498
  }
1315
1499
 
1316
1500
  const defaultJsonEncoding: Encoding = {
@@ -25,7 +25,7 @@ import * as Layer from "../Layer.ts"
25
25
  import type { Path } from "../Path.ts"
26
26
  import * as Scope from "../Scope.ts"
27
27
  import type * as HttpApi from "./HttpApi.ts"
28
- import type { HandlerRuntime } from "./HttpApiBuilder.ts"
28
+ import type { GroupService, HandlerRuntime } from "./HttpApiBuilder.ts"
29
29
  import * as HttpApiBuilder from "./HttpApiBuilder.ts"
30
30
  import * as HttpApiClient from "./HttpApiClient.ts"
31
31
  import type * as HttpApiEndpoint from "./HttpApiEndpoint.ts"
@@ -98,7 +98,8 @@ export const groups = Effect.fnUntraced(function*<
98
98
  handlers.set(endpointIdentifier, handler)
99
99
  routes.push(HttpApiBuilder.handlerToRoute(api, group as any, handler, context))
100
100
  }
101
- context = Context.add(context, group as any, { handlers, routes })
101
+ const service: GroupService = { handlers, routes }
102
+ context = Context.add(context, group as any, service)
102
103
  }
103
104
 
104
105
  const layer: Layer.Layer<