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
package/src/Semaphore.ts CHANGED
@@ -13,10 +13,11 @@
13
13
  */
14
14
  import type * as Effect from "./Effect.ts"
15
15
  import type { Fiber } from "./Fiber.ts"
16
- import { dual } from "./Function.ts"
16
+ import { dual, identity } from "./Function.ts"
17
17
  import * as core from "./internal/core.ts"
18
18
  import * as internal from "./internal/effect.ts"
19
19
  import type * as Option from "./Option.ts"
20
+ import type * as Scope from "./Scope.ts"
20
21
 
21
22
  /**
22
23
  * A counting semaphore that coordinates concurrent access with permits.
@@ -134,6 +135,24 @@ export interface Semaphore {
134
135
  */
135
136
  take(this: Semaphore, permits: number): Effect.Effect<number>
136
137
 
138
+ /**
139
+ * Acquires the specified number of permits for the lifetime of the current
140
+ * scope, suspending the task if they are not yet available.
141
+ *
142
+ * **When to use**
143
+ *
144
+ * Use to hold permits until a scope closes, such as while a scoped resource
145
+ * is leased.
146
+ *
147
+ * **Details**
148
+ *
149
+ * Waiting can be interrupted unless the caller is uninterruptible. The
150
+ * permits are taken and their release is added to the scope in one
151
+ * uninterruptible step, so acquired permits are always returned when the
152
+ * scope closes.
153
+ */
154
+ takeScoped(this: Semaphore, permits: number): Effect.Effect<void, never, Scope.Scope>
155
+
137
156
  /**
138
157
  * Acquires the specified number of permits only if they are immediately
139
158
  * available.
@@ -214,26 +233,58 @@ export interface Semaphore {
214
233
  */
215
234
  export const makeUnsafe = (permits: number): Semaphore => new SemaphoreImpl(permits)
216
235
 
217
- const waitForPermits = <A, E, R>(
236
+ interface Waiter {
237
+ readonly permits: number
238
+ resume: ((effect: Effect.Effect<void>) => void) | undefined
239
+ }
240
+
241
+ // The first queued request that fits in the free permits. Larger requests
242
+ // ahead of it keep their place but are overtaken, as documented on `take`.
243
+ const firstAvailableWaiter = (self: SemaphoreImpl): Waiter | undefined => {
244
+ for (const waiter of self.waiters) {
245
+ if (waiter.permits <= self.free) return waiter
246
+ }
247
+ }
248
+
249
+ const takePermits = <A, E, R>(
218
250
  self: SemaphoreImpl,
219
251
  n: number,
220
- effect: Effect.Effect<A, E, R>
252
+ onAcquire: () => Effect.Effect<A, E, R>,
253
+ restore: <AX, EX, RX>(effect: Effect.Effect<AX, EX, RX>) => Effect.Effect<AX, EX, RX> = identity
221
254
  ): Effect.Effect<A, E, R> =>
222
- internal.callback((resume) => {
223
- if (self.free >= n) return resume(effect)
224
- const observer = () => {
225
- if (self.free < n) return
226
- self.waiters.delete(observer)
227
- resume(effect)
255
+ core.withFiber((fiber) => {
256
+ if (self.free >= n && firstAvailableWaiter(self) === undefined) {
257
+ self.taken += n
258
+ return onAcquire()
259
+ }
260
+ // A wake does not reserve permits: the waiter keeps its queue entry until
261
+ // it acquires or is interrupted, and re-checks eligibility when it runs.
262
+ const waiter: Waiter = { permits: n, resume: undefined }
263
+ const remove = () => {
264
+ if (self.waiters.delete(waiter)) self.releaseUnsafe(fiber, 0)
265
+ return undefined
228
266
  }
229
- self.waiters.add(observer)
230
- return internal.sync(() => {
231
- self.waiters.delete(observer)
267
+ self.waiters.add(waiter)
268
+ internal.onExitUnsafe(fiber, remove)
269
+ const wait = restore(internal.callback<void>((resume) => {
270
+ // The fiber may have yielded since the last check, missing a wake.
271
+ if (firstAvailableWaiter(self) === waiter) {
272
+ resume(internal.void)
273
+ } else {
274
+ waiter.resume = resume
275
+ }
276
+ }))
277
+ const loop: Effect.Effect<A, E, R> = internal.flatMap(wait, () => {
278
+ if (firstAvailableWaiter(self) !== waiter) return loop
279
+ self.taken += n
280
+ remove()
281
+ return onAcquire()
232
282
  })
283
+ return loop
233
284
  })
234
285
 
235
286
  class SemaphoreImpl implements Semaphore {
236
- public waiters = new Set<() => void>()
287
+ public waiters = new Set<Waiter>()
237
288
  public taken = 0
238
289
  public permits: number
239
290
 
@@ -246,14 +297,16 @@ class SemaphoreImpl implements Semaphore {
246
297
  }
247
298
 
248
299
  take(n: number): Effect.Effect<number> {
249
- const take: Effect.Effect<number> = internal.suspend(() => {
250
- if (this.free < n) {
251
- return waitForPermits(this, n, take)
252
- }
253
- this.taken += n
254
- return internal.succeed(n)
255
- })
256
- return take
300
+ return takePermits(this, n, () => internal.succeed(n))
301
+ }
302
+
303
+ takeScoped(n: number): Effect.Effect<void, never, Scope.Scope> {
304
+ return internal.uninterruptibleMask((restore) =>
305
+ internal.flatMap(
306
+ internal.scope,
307
+ (scope) => takePermits(this, n, () => internal.scopeAddFinalizer(scope, this.release(n)), restore)
308
+ )
309
+ )
257
310
  }
258
311
 
259
312
  takeIfAvailable(n: number): Effect.Effect<boolean> {
@@ -268,9 +321,17 @@ class SemaphoreImpl implements Semaphore {
268
321
  this.taken -= n
269
322
  if (this.waiters.size > 0) {
270
323
  fiber.currentDispatcher.scheduleTask(() => {
271
- for (const observer of this.waiters) {
272
- if (this.free <= 0) break
273
- observer()
324
+ // Wake every queued request that fits in the free permits. Waiters
325
+ // that were already woken still count against the budget, since they
326
+ // keep their place until they acquire. Resumed fibers run inline and
327
+ // can add or remove waiters, so iterate over a snapshot.
328
+ let remaining = this.free
329
+ for (const waiter of Array.from(this.waiters)) {
330
+ if (!this.waiters.has(waiter) || waiter.permits > remaining) continue
331
+ remaining -= waiter.permits
332
+ const resume = waiter.resume
333
+ waiter.resume = undefined
334
+ resume?.(internal.void)
274
335
  }
275
336
  }, 0)
276
337
  }
@@ -296,24 +357,18 @@ class SemaphoreImpl implements Semaphore {
296
357
 
297
358
  withPermits(n: number) {
298
359
  return <A, E, R>(self: Effect.Effect<A, E, R>) =>
299
- internal.uninterruptibleMask((restore) => {
300
- const acquire: Effect.Effect<A, E, R> = internal.suspend(() => {
301
- if (this.free < n) {
302
- const wait = waitForPermits(this, n, internal.void)
303
- return internal.flatMap(restore(wait), () => acquire)
304
- }
305
- this.taken += n
306
- return internal.onExitPrimitive(
307
- restore(self),
308
- () => {
360
+ internal.uninterruptibleMask((restore) =>
361
+ takePermits(
362
+ this,
363
+ n,
364
+ () =>
365
+ internal.onExitPrimitive(restore(self), () => {
309
366
  this.releaseUnsafe(internal.getCurrentFiber()!, n)
310
367
  return undefined
311
- },
312
- true
313
- )
314
- })
315
- return acquire
316
- })
368
+ }, true),
369
+ restore
370
+ )
371
+ )
317
372
  }
318
373
 
319
374
  readonly withPermit = this.withPermits(1)
@@ -720,6 +775,119 @@ export const take: {
720
775
  (self: Semaphore, permits: number): Effect.Effect<number>
721
776
  } = dual(2, (self: Semaphore, permits: number) => self.take(permits))
722
777
 
778
+ /**
779
+ * Acquires the specified number of permits until the current scope closes.
780
+ *
781
+ * **When to use**
782
+ *
783
+ * Use when permits should be held for the lifetime of a scope, such as while a
784
+ * scoped resource is leased.
785
+ *
786
+ * **Details**
787
+ *
788
+ * The effect waits until enough permits are available. The wait can be
789
+ * interrupted unless the caller is uninterruptible. The permits are taken and
790
+ * their release is added to the scope in one uninterruptible step, so acquired
791
+ * permits are always returned when the scope closes.
792
+ *
793
+ * **Example** (Holding a permit for a scope)
794
+ *
795
+ * ```ts import.meta.vitest
796
+ * import { Effect, Semaphore } from "effect"
797
+ *
798
+ * const program = Effect.gen(function*() {
799
+ * const semaphore = yield* Semaphore.make(1)
800
+ * yield* Effect.scoped(Semaphore.takeScoped(semaphore, 1))
801
+ * return yield* Semaphore.takeIfAvailable(semaphore, 1)
802
+ * })
803
+ *
804
+ * Effect.runSync(program) // => true
805
+ * ```
806
+ *
807
+ * @see {@link take} for acquiring permits that are released manually
808
+ * @see {@link withPermits} for holding permits while one effect runs
809
+ *
810
+ * @stability stable
811
+ * @category combinators
812
+ * @since 4.0.7
813
+ */
814
+ export const takeScoped: {
815
+ /**
816
+ * Acquires the specified number of permits until the current scope closes.
817
+ *
818
+ * **When to use**
819
+ *
820
+ * Use when permits should be held for the lifetime of a scope, such as while a
821
+ * scoped resource is leased.
822
+ *
823
+ * **Details**
824
+ *
825
+ * The effect waits until enough permits are available. The wait can be
826
+ * interrupted unless the caller is uninterruptible. The permits are taken and
827
+ * their release is added to the scope in one uninterruptible step, so acquired
828
+ * permits are always returned when the scope closes.
829
+ *
830
+ * **Example** (Holding a permit for a scope)
831
+ *
832
+ * ```ts import.meta.vitest
833
+ * import { Effect, Semaphore } from "effect"
834
+ *
835
+ * const program = Effect.gen(function*() {
836
+ * const semaphore = yield* Semaphore.make(1)
837
+ * yield* Effect.scoped(Semaphore.takeScoped(semaphore, 1))
838
+ * return yield* Semaphore.takeIfAvailable(semaphore, 1)
839
+ * })
840
+ *
841
+ * Effect.runSync(program) // => true
842
+ * ```
843
+ *
844
+ * @see {@link take} for acquiring permits that are released manually
845
+ * @see {@link withPermits} for holding permits while one effect runs
846
+ *
847
+ * @stability stable
848
+ * @category combinators
849
+ * @since 4.0.7
850
+ */
851
+ (permits: number): (self: Semaphore) => Effect.Effect<void, never, Scope.Scope>
852
+ /**
853
+ * Acquires the specified number of permits until the current scope closes.
854
+ *
855
+ * **When to use**
856
+ *
857
+ * Use when permits should be held for the lifetime of a scope, such as while a
858
+ * scoped resource is leased.
859
+ *
860
+ * **Details**
861
+ *
862
+ * The effect waits until enough permits are available. The wait can be
863
+ * interrupted unless the caller is uninterruptible. The permits are taken and
864
+ * their release is added to the scope in one uninterruptible step, so acquired
865
+ * permits are always returned when the scope closes.
866
+ *
867
+ * **Example** (Holding a permit for a scope)
868
+ *
869
+ * ```ts import.meta.vitest
870
+ * import { Effect, Semaphore } from "effect"
871
+ *
872
+ * const program = Effect.gen(function*() {
873
+ * const semaphore = yield* Semaphore.make(1)
874
+ * yield* Effect.scoped(Semaphore.takeScoped(semaphore, 1))
875
+ * return yield* Semaphore.takeIfAvailable(semaphore, 1)
876
+ * })
877
+ *
878
+ * Effect.runSync(program) // => true
879
+ * ```
880
+ *
881
+ * @see {@link take} for acquiring permits that are released manually
882
+ * @see {@link withPermits} for holding permits while one effect runs
883
+ *
884
+ * @stability stable
885
+ * @category combinators
886
+ * @since 4.0.7
887
+ */
888
+ (self: Semaphore, permits: number): Effect.Effect<void, never, Scope.Scope>
889
+ } = dual(2, (self: Semaphore, permits: number) => self.takeScoped(permits))
890
+
723
891
  /**
724
892
  * Acquires the specified number of permits only if they are immediately
725
893
  * available.
package/src/Sink.ts CHANGED
@@ -2687,7 +2687,12 @@ export const catchCause: {
2687
2687
  ): Sink<A | A2, In, L, E2, R | R2> =>
2688
2688
  transformEffect(
2689
2689
  self,
2690
- Effect.catchCause((cause) => Effect.map(f(cause), (a2) => [a2 as A | A2] as const))
2690
+ Effect.catchCause((cause) =>
2691
+ // Upstream failures are not sink errors, so they bypass the handler.
2692
+ Channel.hasUpstreamFailure(cause)
2693
+ ? Effect.failCause(cause as Cause.Cause<never>)
2694
+ : Effect.map(f(cause), (a2) => [a2 as A | A2] as const)
2695
+ )
2691
2696
  ))
2692
2697
 
2693
2698
  const catch_: {
@@ -2774,7 +2779,15 @@ export const onExit: {
2774
2779
  ): Sink<A, In, L, E | E2, R | R2> =>
2775
2780
  transformEffect(
2776
2781
  self,
2777
- Effect.onExit((exit) => f(Exit.map(exit, ([a]) => a)))
2782
+ Effect.onExit((exit) =>
2783
+ // Upstream failures stop the sink like an interruption; they are not
2784
+ // sink errors.
2785
+ f(
2786
+ Exit.isFailure(exit) && Channel.hasUpstreamFailure(exit.cause)
2787
+ ? Exit.interrupt()
2788
+ : Exit.map(exit, ([a]) => a)
2789
+ )
2790
+ )
2778
2791
  ))
2779
2792
 
2780
2793
  /**
package/src/Stream.ts CHANGED
@@ -7295,17 +7295,12 @@ export const peel: {
7295
7295
  ): Effect.fn.Return<[A2, Stream<A, E, never>], E | E2, Scope.Scope | R | R2> {
7296
7296
  let cause: Cause.Cause<E | Cause.Done<void>> | undefined = undefined
7297
7297
  const originalPull = yield* Channel.toPull(self.channel)
7298
- const pull: Pull.Pull<
7299
- Arr.NonEmptyReadonlyArray<A>,
7300
- E
7301
- > = Effect.catchCause(originalPull, (cause_) => {
7298
+ const pull = Effect.catchCause(originalPull, (cause_) => {
7302
7299
  cause = cause_
7303
7300
  return Effect.failCause(cause_)
7304
7301
  })
7305
7302
 
7306
- const [result, leftover] = yield* Effect.scopedWith((scope) =>
7307
- sink.transform(pull as Pull.Pull<Arr.NonEmptyReadonlyArray<A>>, scope)
7308
- )
7303
+ const [result, leftover] = yield* Effect.scopedWith((scope) => runSink(sink, pull, scope))
7309
7304
  let stream: Stream<A, E> = cause ? empty : fromPull(Effect.succeed(originalPull))
7310
7305
  if (leftover) {
7311
7306
  stream = concat(fromArray(leftover), stream)
@@ -10252,6 +10247,9 @@ export const orDie = <A, E, R>(self: Stream<A, E, R>): Stream<A, never, R> => fr
10252
10247
  *
10253
10248
  * The `log` option controls whether the failure is logged before the stream
10254
10249
  * terminates.
10250
+ * Set `log: "Unhandled"` to read `References.UnhandledLogLevel` when the
10251
+ * failure occurs; `undefined` disables logging. Minimum log level filtering
10252
+ * still applies.
10255
10253
  *
10256
10254
  * **Gotchas**
10257
10255
  *
@@ -10300,12 +10298,12 @@ export const orDie = <A, E, R>(self: Stream<A, E, R>): Stream<A, never, R> => fr
10300
10298
  */
10301
10299
  export const ignore: <
10302
10300
  Arg extends Stream<any, any, any> | {
10303
- readonly log?: boolean | Severity | undefined
10301
+ readonly log?: boolean | Severity | "Unhandled" | undefined
10304
10302
  } | undefined
10305
10303
  >(
10306
10304
  selfOrOptions: Arg,
10307
10305
  options?: {
10308
- readonly log?: boolean | Severity | undefined
10306
+ readonly log?: boolean | Severity | "Unhandled" | undefined
10309
10307
  } | undefined
10310
10308
  ) => [Arg] extends [Stream<infer A, infer _E, infer R>] ? Stream<A, never, R>
10311
10309
  : <A, E, R>(self: Stream<A, E, R>) => Stream<A, never, R> = dual(
@@ -10313,7 +10311,7 @@ export const ignore: <
10313
10311
  <A, E, R>(
10314
10312
  self: Stream<A, E, R>,
10315
10313
  options?: {
10316
- readonly log?: boolean | Severity | undefined
10314
+ readonly log?: boolean | Severity | "Unhandled" | undefined
10317
10315
  } | undefined
10318
10316
  ): Stream<A, never, R> => fromChannel(Channel.ignore(self.channel, options))
10319
10317
  )
@@ -10326,6 +10324,12 @@ export const ignore: <
10326
10324
  * Use when you need to silently suppress a stream's entire failure cause,
10327
10325
  * including both typed errors and defects, rather than propagate it downstream.
10328
10326
  *
10327
+ * **Details**
10328
+ *
10329
+ * Set `log: "Unhandled"` to read `References.UnhandledLogLevel` when the
10330
+ * failure occurs; `undefined` disables logging. Minimum log level filtering
10331
+ * still applies.
10332
+ *
10329
10333
  * **Example** (Ignoring stream failure causes)
10330
10334
  *
10331
10335
  * ```ts import.meta.vitest
@@ -10350,19 +10354,19 @@ export const ignore: <
10350
10354
  */
10351
10355
  export const ignoreCause: <
10352
10356
  Arg extends Stream<any, any, any> | {
10353
- readonly log?: boolean | Severity | undefined
10357
+ readonly log?: boolean | Severity | "Unhandled" | undefined
10354
10358
  } | undefined
10355
10359
  >(
10356
10360
  streamOrOptions: Arg,
10357
10361
  options?: {
10358
- readonly log?: boolean | Severity | undefined
10362
+ readonly log?: boolean | Severity | "Unhandled" | undefined
10359
10363
  } | undefined
10360
10364
  ) => [Arg] extends [Stream<infer A, infer _E, infer R>] ? Stream<A, never, R>
10361
10365
  : <A, E, R>(self: Stream<A, E, R>) => Stream<A, never, R> = dual(
10362
10366
  (args) => isStream(args[0]),
10363
10367
  <A, E, R>(
10364
10368
  self: Stream<A, E, R>,
10365
- options?: { readonly log?: boolean | Severity | undefined } | undefined
10369
+ options?: { readonly log?: boolean | Severity | "Unhandled" | undefined } | undefined
10366
10370
  ): Stream<A, never, R> => fromChannel(Channel.ignoreCause(self.channel, options))
10367
10371
  )
10368
10372
 
@@ -11098,7 +11102,7 @@ export const takeRight: {
11098
11102
  const count = Count.normalize(n)
11099
11103
  if (count === 0) return empty
11100
11104
  return mapAccumArray(self, MutableList.make<A>, (list, arr) => {
11101
- MutableList.appendAll(list, arr)
11105
+ MutableList.appendAllUnsafe(list, arr)
11102
11106
  if (list.length > count) {
11103
11107
  MutableList.takeNVoid(list, list.length - count)
11104
11108
  }
@@ -12528,10 +12532,10 @@ export const rechunk: {
12528
12532
  let chunk = Arr.empty<A>() as Arr.NonEmptyArray<A>
12529
12533
  let index = 0
12530
12534
  let current: Arr.NonEmptyReadonlyArray<A> | undefined
12531
- let done = false
12535
+ let cause: Cause.Cause<E | Cause.Done> | undefined
12532
12536
 
12533
12537
  return Effect.suspend(function loop(): Pull.Pull<Arr.NonEmptyReadonlyArray<A>, E, void, R> {
12534
- if (done) return Cause.done()
12538
+ if (cause) return Effect.failCause(cause)
12535
12539
  else if (current === undefined) {
12536
12540
  return Effect.flatMap(pull, (arr) => {
12537
12541
  if (chunk.length === 0 && arr.length === target) {
@@ -12558,10 +12562,10 @@ export const rechunk: {
12558
12562
  current = undefined
12559
12563
  return loop()
12560
12564
  }).pipe(
12561
- Pull.catchDone(() => {
12562
- if (chunk.length === 0) return Cause.done()
12565
+ Effect.catchCause((cause_) => {
12566
+ if (chunk.length === 0) return Effect.failCause(cause_)
12563
12567
  const result = chunk
12564
- done = true
12568
+ cause = cause_
12565
12569
  chunk = [] as any
12566
12570
  return Effect.succeed(result)
12567
12571
  })
@@ -15122,7 +15126,12 @@ const groupByImpl = <A, E, R, K, V, E2, R2>(
15122
15126
  body: constant(Effect.flatMap(pull, (arr) => f(arr, queues, queueMap))),
15123
15127
  step: constVoid
15124
15128
  }).pipe(
15125
- Effect.catchCause((cause) => Queue.failCause(out, cause)),
15129
+ Effect.catchCause((cause) => {
15130
+ for (const [, queue] of queueMap) {
15131
+ Queue.endUnsafe(queue)
15132
+ }
15133
+ return Queue.failCause(out, cause)
15134
+ }),
15126
15135
  Effect.forkIn(scope)
15127
15136
  )
15128
15137
 
@@ -15659,7 +15668,7 @@ export const aggregateWithin: {
15659
15668
  return buffer.state.exit as Exit.Exit<never, Cause.Done<void> | E>
15660
15669
  }
15661
15670
  hasInput.closeUnsafe()
15662
- const pull = emit(Effect.suspend(() => sink.transform(sinkUpstream as any, scope)))
15671
+ const pull = emit(Effect.suspend(() => runSink(sink, sinkUpstream, scope)))
15663
15672
  return buffer.state._tag === "Open" ? Effect.raceFirst(pull, stepToBuffer) : pull
15664
15673
  })
15665
15674
  }))))
@@ -19327,11 +19336,28 @@ export const run: {
19327
19336
  ): Effect.Effect<A2, E | E2, R | R2> =>
19328
19337
  Effect.scopedWith((scope) =>
19329
19338
  Channel.toPullScoped(self.channel, scope).pipe(
19330
- Effect.flatMap((upstream) => sink.transform(upstream as any, scope)),
19339
+ Effect.flatMap((upstream) => runSink(sink, upstream, scope)),
19331
19340
  Effect.map(([a]) => a)
19332
19341
  )
19333
19342
  ))
19334
19343
 
19344
+ /**
19345
+ * Runs `sink` against `upstream`. Upstream failures bypass the sink's error
19346
+ * handlers and are restored once the sink has exited.
19347
+ */
19348
+ const runSink = <A, E, R, A2, L, E2, R2>(
19349
+ sink: Sink.Sink<A2, A, L, E2, R2>,
19350
+ upstream: Pull.Pull<Arr.NonEmptyReadonlyArray<A>, E, void, R>,
19351
+ scope: Scope.Scope
19352
+ ): Effect.Effect<Sink.End<A2, L>, E | E2, R | R2> =>
19353
+ Channel.restoreUpstreamFailure<Sink.End<A2, L>, E | E2, R2>(
19354
+ // The upstream pull runs in this fiber, which already provides `R`.
19355
+ sink.transform(
19356
+ Channel.upstreamFailureToDefect(upstream) as Pull.Pull<Arr.NonEmptyReadonlyArray<A>, never, void>,
19357
+ scope
19358
+ )
19359
+ )
19360
+
19335
19361
  /**
19336
19362
  * Runs the stream and collects all elements into an array.
19337
19363
  *
package/src/String.ts CHANGED
@@ -1860,6 +1860,9 @@ export const constantCase: (self: string) => string = noCase({
1860
1860
  * Unlike {@link constantCase}, digit-letter boundaries are not split. For
1861
1861
  * example, `"api-v2 xml"` becomes `"API_V2_XML"`.
1862
1862
  *
1863
+ * `configCase` is not idempotent: `"field2value"` becomes `"FIELD2VALUE"`, and
1864
+ * applying it again gives `"FIELD2_VALUE"`.
1865
+ *
1863
1866
  * @see {@link constantCase} for standard uppercase underscore-separated output
1864
1867
  * @stability stable
1865
1868
  * @category transforming
package/src/Terminal.ts CHANGED
@@ -42,6 +42,12 @@ export interface Terminal {
42
42
  */
43
43
 
44
44
  readonly rows: Effect.Effect<number>
45
+ /**
46
+ * Subscribes to terminal size changes. The queue starts with the current
47
+ * dimensions, receives each resize until the scope closes, and keeps only the
48
+ * latest size.
49
+ */
50
+ readonly size: Effect.Effect<Queue.Dequeue<Size, Cause.Done>, never, Scope.Scope>
45
51
  /**
46
52
  * Reads input events from the default standard input.
47
53
  */
@@ -56,6 +62,18 @@ export interface Terminal {
56
62
  readonly display: (text: string) => Effect.Effect<void, PlatformError>
57
63
  }
58
64
 
65
+ /**
66
+ * Terminal dimensions measured in character cells.
67
+ *
68
+ * @stability unstable
69
+ * @category models
70
+ * @since 4.0.0
71
+ */
72
+ export interface Size {
73
+ readonly columns: number
74
+ readonly rows: number
75
+ }
76
+
59
77
  /**
60
78
  * Keyboard key metadata for terminal input, including the key name and
61
79
  * modifier state.
@@ -183,7 +201,7 @@ export const Terminal: Context.Service<Terminal, Terminal> = Context.Service("ef
183
201
  *
184
202
  * **Details**
185
203
  *
186
- * The implementation object supplies `columns`, `rows`, `readInput`,
204
+ * The implementation object supplies `columns`, `rows`, `size`, `readInput`,
187
205
  * `readLine`, and `display`; `make` attaches the `Terminal` service marker so
188
206
  * the result can be provided through the `Terminal` context service.
189
207
  *
package/src/Tracer.ts CHANGED
@@ -326,6 +326,15 @@ export type SpanKind = "internal" | "server" | "client" | "producer" | "consumer
326
326
  * annotations, attributes, links, sampling and kind information, lifecycle
327
327
  * status, and methods to end the span or add attributes, events, and links.
328
328
  *
329
+ * **Details**
330
+ *
331
+ * Once a span has `Ended` status, implementations should ignore further calls
332
+ * to `end`, `attribute`, `event`, and `addLinks`, following the OpenTelemetry
333
+ * tracing specification. An ended span can still be read and used as a parent.
334
+ * The built-in span implementations follow this rule, and Effect does not
335
+ * record logs or `annotateCurrentSpan` attributes on an ended span, such as
336
+ * when a fiber outlives the span it was forked in.
337
+ *
329
338
  * **Example** (Working with spans)
330
339
  *
331
340
  * ```ts import.meta.vitest
@@ -684,7 +693,8 @@ export const nativeTracer: Tracer = make({
684
693
  * identifiers, the attribute map, and the event list are created lazily on
685
694
  * first access, so spans that are never inspected allocate as little as
686
695
  * possible. Attributes, events, links, and status are mutated through `Span`
687
- * methods.
696
+ * methods. Once the span has ended, those methods do nothing, so a second `end`
697
+ * keeps the original end time and exit.
688
698
  *
689
699
  * @see {@link Span} for the interface implemented by native spans
690
700
  *
@@ -748,6 +758,7 @@ export class NativeSpan implements Span {
748
758
  }
749
759
 
750
760
  end(endTime: bigint, exit: Exit.Exit<unknown, unknown>): void {
761
+ if (this.status._tag === "Ended") return
751
762
  this.status = {
752
763
  _tag: "Ended",
753
764
  endTime,
@@ -757,14 +768,17 @@ export class NativeSpan implements Span {
757
768
  }
758
769
 
759
770
  attribute(key: string, value: unknown): void {
771
+ if (this.status._tag === "Ended") return
760
772
  this.attributes.set(key, value)
761
773
  }
762
774
 
763
775
  event(name: string, startTime: bigint, attributes?: Record<string, unknown>): void {
776
+ if (this.status._tag === "Ended") return
764
777
  this.events.push([name, startTime, attributes ?? {}])
765
778
  }
766
779
 
767
780
  addLinks(links: ReadonlyArray<SpanLink>): void {
781
+ if (this.status._tag === "Ended") return
768
782
  // oxlint-disable-next-line no-restricted-syntax
769
783
  this.links.push(...links)
770
784
  }