effect 4.0.7 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (863) hide show
  1. package/README.md +31 -1
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/dist/BigDecimal.d.ts +139 -7
  4. package/dist/BigDecimal.d.ts.map +1 -1
  5. package/dist/BigDecimal.js +86 -14
  6. package/dist/BigDecimal.js.map +1 -1
  7. package/dist/Channel.d.ts +12 -6
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +9 -3
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Config.d.ts +7 -1
  12. package/dist/Config.d.ts.map +1 -1
  13. package/dist/Config.js.map +1 -1
  14. package/dist/Context.d.ts +18 -1
  15. package/dist/Context.d.ts.map +1 -1
  16. package/dist/Context.js +27 -8
  17. package/dist/Context.js.map +1 -1
  18. package/dist/Cron.d.ts +81 -11
  19. package/dist/Cron.d.ts.map +1 -1
  20. package/dist/Cron.js +101 -26
  21. package/dist/Cron.js.map +1 -1
  22. package/dist/Duration.d.ts +78 -0
  23. package/dist/Duration.d.ts.map +1 -1
  24. package/dist/Duration.js +123 -0
  25. package/dist/Duration.js.map +1 -1
  26. package/dist/Effect.d.ts +164 -7
  27. package/dist/Effect.d.ts.map +1 -1
  28. package/dist/Effect.js +11 -1
  29. package/dist/Effect.js.map +1 -1
  30. package/dist/Equal.d.ts +2 -2
  31. package/dist/Equal.d.ts.map +1 -1
  32. package/dist/Equal.js +3 -3
  33. package/dist/Equal.js.map +1 -1
  34. package/dist/FileSystem.d.ts +59 -4
  35. package/dist/FileSystem.d.ts.map +1 -1
  36. package/dist/FileSystem.js +9 -2
  37. package/dist/FileSystem.js.map +1 -1
  38. package/dist/Glob.d.ts +165 -0
  39. package/dist/Glob.d.ts.map +1 -0
  40. package/dist/Glob.js +127 -0
  41. package/dist/Glob.js.map +1 -0
  42. package/dist/Hash.d.ts +3 -2
  43. package/dist/Hash.d.ts.map +1 -1
  44. package/dist/Hash.js +5 -4
  45. package/dist/Hash.js.map +1 -1
  46. package/dist/Iterable.d.ts.map +1 -1
  47. package/dist/Iterable.js +11 -8
  48. package/dist/Iterable.js.map +1 -1
  49. package/dist/Match.d.ts +86 -0
  50. package/dist/Match.d.ts.map +1 -1
  51. package/dist/Match.js +72 -0
  52. package/dist/Match.js.map +1 -1
  53. package/dist/Path.d.ts.map +1 -1
  54. package/dist/Path.js +5 -1
  55. package/dist/Path.js.map +1 -1
  56. package/dist/Pool.d.ts +51 -0
  57. package/dist/Pool.d.ts.map +1 -1
  58. package/dist/Pool.js +61 -10
  59. package/dist/Pool.js.map +1 -1
  60. package/dist/Random.d.ts.map +1 -1
  61. package/dist/Random.js +3 -3
  62. package/dist/Random.js.map +1 -1
  63. package/dist/RcMap.d.ts.map +1 -1
  64. package/dist/RcMap.js +8 -2
  65. package/dist/RcMap.js.map +1 -1
  66. package/dist/Schedule.d.ts +18 -1
  67. package/dist/Schedule.d.ts.map +1 -1
  68. package/dist/Schedule.js +7 -2
  69. package/dist/Schedule.js.map +1 -1
  70. package/dist/Schema.d.ts +668 -42
  71. package/dist/Schema.d.ts.map +1 -1
  72. package/dist/Schema.js +652 -1
  73. package/dist/Schema.js.map +1 -1
  74. package/dist/SchemaGetter.d.ts +6 -1
  75. package/dist/SchemaGetter.d.ts.map +1 -1
  76. package/dist/SchemaGetter.js +22 -11
  77. package/dist/SchemaGetter.js.map +1 -1
  78. package/dist/SchemaRepresentation.d.ts +18 -2
  79. package/dist/SchemaRepresentation.d.ts.map +1 -1
  80. package/dist/SchemaRepresentation.js +20 -2
  81. package/dist/SchemaRepresentation.js.map +1 -1
  82. package/dist/SchemaTransformation.d.ts +10 -5
  83. package/dist/SchemaTransformation.d.ts.map +1 -1
  84. package/dist/SchemaTransformation.js +8 -5
  85. package/dist/SchemaTransformation.js.map +1 -1
  86. package/dist/ScopedCache.d.ts.map +1 -1
  87. package/dist/ScopedCache.js +5 -7
  88. package/dist/ScopedCache.js.map +1 -1
  89. package/dist/Semaphore.d.ts +130 -0
  90. package/dist/Semaphore.d.ts.map +1 -1
  91. package/dist/Semaphore.js +40 -0
  92. package/dist/Semaphore.js.map +1 -1
  93. package/dist/Stream.d.ts +13 -4
  94. package/dist/Stream.d.ts.map +1 -1
  95. package/dist/Stream.js +9 -0
  96. package/dist/Stream.js.map +1 -1
  97. package/dist/Terminal.d.ts +18 -1
  98. package/dist/Terminal.d.ts.map +1 -1
  99. package/dist/Terminal.js +1 -1
  100. package/dist/Terminal.js.map +1 -1
  101. package/dist/ai/AiError.d.ts +43 -116
  102. package/dist/ai/AiError.d.ts.map +1 -1
  103. package/dist/ai/AiError.js +53 -72
  104. package/dist/ai/AiError.js.map +1 -1
  105. package/dist/ai/Decision.d.ts +196 -15
  106. package/dist/ai/Decision.d.ts.map +1 -1
  107. package/dist/ai/Decision.js +130 -0
  108. package/dist/ai/Decision.js.map +1 -1
  109. package/dist/ai/DecisionModel.d.ts +54 -13
  110. package/dist/ai/DecisionModel.d.ts.map +1 -1
  111. package/dist/ai/DecisionModel.js +123 -12
  112. package/dist/ai/DecisionModel.js.map +1 -1
  113. package/dist/ai/McpClient.d.ts +171 -19
  114. package/dist/ai/McpClient.d.ts.map +1 -1
  115. package/dist/ai/McpClient.js +277 -66
  116. package/dist/ai/McpClient.js.map +1 -1
  117. package/dist/ai/McpSchema.d.ts +108 -0
  118. package/dist/ai/McpSchema.d.ts.map +1 -1
  119. package/dist/ai/McpSchema.js +99 -0
  120. package/dist/ai/McpSchema.js.map +1 -1
  121. package/dist/ai/McpServer.d.ts +744 -29
  122. package/dist/ai/McpServer.d.ts.map +1 -1
  123. package/dist/ai/McpServer.js +763 -136
  124. package/dist/ai/McpServer.js.map +1 -1
  125. package/dist/ai/McpTest.d.ts +130 -0
  126. package/dist/ai/McpTest.d.ts.map +1 -0
  127. package/dist/ai/McpTest.js +237 -0
  128. package/dist/ai/McpTest.js.map +1 -0
  129. package/dist/ai/Prompt.d.ts.map +1 -1
  130. package/dist/ai/Prompt.js +20 -11
  131. package/dist/ai/Prompt.js.map +1 -1
  132. package/dist/ai/Response.d.ts +1 -25
  133. package/dist/ai/Response.d.ts.map +1 -1
  134. package/dist/ai/Response.js +1 -10
  135. package/dist/ai/Response.js.map +1 -1
  136. package/dist/ai/Tool.d.ts +19 -1
  137. package/dist/ai/Tool.d.ts.map +1 -1
  138. package/dist/ai/Tool.js +5 -7
  139. package/dist/ai/Tool.js.map +1 -1
  140. package/dist/ai/index.d.ts +5 -0
  141. package/dist/ai/index.d.ts.map +1 -1
  142. package/dist/ai/index.js +5 -0
  143. package/dist/ai/index.js.map +1 -1
  144. package/dist/ai/internal/mcpCore.js +89 -15
  145. package/dist/ai/internal/mcpCore.js.map +1 -1
  146. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +7 -6
  147. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  148. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +7 -6
  149. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  150. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +7 -6
  151. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  152. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +7 -6
  153. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  154. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +60 -17
  155. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  156. package/dist/ai/internal/mcpProtocol.js +25 -0
  157. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  158. package/dist/ai/internal/mcpRuntime.js +8 -6
  159. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  160. package/dist/ai/internal/mcpSkills.d.ts +2 -0
  161. package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
  162. package/dist/ai/internal/mcpSkills.js +428 -0
  163. package/dist/ai/internal/mcpSkills.js.map +1 -0
  164. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  165. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  166. package/dist/cli/Argument.d.ts +6 -0
  167. package/dist/cli/Argument.d.ts.map +1 -1
  168. package/dist/cli/Argument.js +2 -0
  169. package/dist/cli/Argument.js.map +1 -1
  170. package/dist/cli/CliOutput.d.ts +65 -1
  171. package/dist/cli/CliOutput.d.ts.map +1 -1
  172. package/dist/cli/CliOutput.js +94 -37
  173. package/dist/cli/CliOutput.js.map +1 -1
  174. package/dist/cli/Command.d.ts +23 -0
  175. package/dist/cli/Command.d.ts.map +1 -1
  176. package/dist/cli/Command.js +8 -0
  177. package/dist/cli/Command.js.map +1 -1
  178. package/dist/cli/Flag.d.ts +107 -0
  179. package/dist/cli/Flag.d.ts.map +1 -1
  180. package/dist/cli/Flag.js +37 -0
  181. package/dist/cli/Flag.js.map +1 -1
  182. package/dist/cli/HelpDoc.d.ts +15 -1
  183. package/dist/cli/HelpDoc.d.ts.map +1 -1
  184. package/dist/cli/Param.d.ts +6 -0
  185. package/dist/cli/Param.d.ts.map +1 -1
  186. package/dist/cli/Param.js +2 -0
  187. package/dist/cli/Param.js.map +1 -1
  188. package/dist/cli/Primitive.d.ts +14 -0
  189. package/dist/cli/Primitive.d.ts.map +1 -1
  190. package/dist/cli/Primitive.js +15 -1
  191. package/dist/cli/Primitive.js.map +1 -1
  192. package/dist/cli/Prompt.d.ts +1 -0
  193. package/dist/cli/Prompt.d.ts.map +1 -1
  194. package/dist/cli/Prompt.js +1 -0
  195. package/dist/cli/Prompt.js.map +1 -1
  196. package/dist/cli/internal/help.d.ts.map +1 -1
  197. package/dist/cli/internal/help.js +17 -10
  198. package/dist/cli/internal/help.js.map +1 -1
  199. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  200. package/dist/cluster/ClusterWorkflowEngine.js +15 -5
  201. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  202. package/dist/cluster/Reply.d.ts +1 -1
  203. package/dist/cluster/Reply.d.ts.map +1 -1
  204. package/dist/cluster/Reply.js.map +1 -1
  205. package/dist/cluster/Sharding.d.ts.map +1 -1
  206. package/dist/cluster/Sharding.js +93 -28
  207. package/dist/cluster/Sharding.js.map +1 -1
  208. package/dist/cluster/ShardingConfig.d.ts +72 -6
  209. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  210. package/dist/cluster/ShardingConfig.js +4 -0
  211. package/dist/cluster/ShardingConfig.js.map +1 -1
  212. package/dist/cluster/SingleRunner.d.ts +3 -3
  213. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  214. package/dist/cluster/SingleRunner.js +1 -1
  215. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  216. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  217. package/dist/cluster/SqlMessageStorage.js +34 -7
  218. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  219. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  220. package/dist/cluster/SqlRunnerStorage.js +23 -8
  221. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  222. package/dist/cluster/internal/entityManager.js +15 -7
  223. package/dist/cluster/internal/entityManager.js.map +1 -1
  224. package/dist/crypto/Aead.d.ts +323 -0
  225. package/dist/crypto/Aead.d.ts.map +1 -0
  226. package/dist/crypto/Aead.js +331 -0
  227. package/dist/crypto/Aead.js.map +1 -0
  228. package/dist/crypto/Cipher.d.ts +236 -0
  229. package/dist/crypto/Cipher.d.ts.map +1 -0
  230. package/dist/crypto/Cipher.js +233 -0
  231. package/dist/crypto/Cipher.js.map +1 -0
  232. package/dist/crypto/CryptoError.d.ts +212 -0
  233. package/dist/crypto/CryptoError.d.ts.map +1 -0
  234. package/dist/crypto/CryptoError.js +202 -0
  235. package/dist/crypto/CryptoError.js.map +1 -0
  236. package/dist/crypto/Digest.d.ts +143 -0
  237. package/dist/crypto/Digest.d.ts.map +1 -0
  238. package/dist/crypto/Digest.js +146 -0
  239. package/dist/crypto/Digest.js.map +1 -0
  240. package/dist/crypto/Kdf.d.ts +220 -0
  241. package/dist/crypto/Kdf.d.ts.map +1 -0
  242. package/dist/crypto/Kdf.js +212 -0
  243. package/dist/crypto/Kdf.js.map +1 -0
  244. package/dist/crypto/KeyAgreement.d.ts +324 -0
  245. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  246. package/dist/crypto/KeyAgreement.js +303 -0
  247. package/dist/crypto/KeyAgreement.js.map +1 -0
  248. package/dist/crypto/KeyFormat.d.ts +341 -0
  249. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  250. package/dist/crypto/KeyFormat.js +556 -0
  251. package/dist/crypto/KeyFormat.js.map +1 -0
  252. package/dist/crypto/KeyWrap.d.ts +390 -0
  253. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  254. package/dist/crypto/KeyWrap.js +381 -0
  255. package/dist/crypto/KeyWrap.js.map +1 -0
  256. package/dist/crypto/Mac.d.ts +278 -0
  257. package/dist/crypto/Mac.d.ts.map +1 -0
  258. package/dist/crypto/Mac.js +288 -0
  259. package/dist/crypto/Mac.js.map +1 -0
  260. package/dist/crypto/SecureRandom.d.ts +340 -0
  261. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  262. package/dist/crypto/SecureRandom.js +257 -0
  263. package/dist/crypto/SecureRandom.js.map +1 -0
  264. package/dist/crypto/Signature.d.ts +449 -0
  265. package/dist/crypto/Signature.d.ts.map +1 -0
  266. package/dist/crypto/Signature.js +484 -0
  267. package/dist/crypto/Signature.js.map +1 -0
  268. package/dist/crypto/WebCrypto.d.ts +80 -0
  269. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  270. package/dist/crypto/WebCrypto.js +63 -0
  271. package/dist/crypto/WebCrypto.js.map +1 -0
  272. package/dist/crypto/index.d.ts +65 -0
  273. package/dist/crypto/index.d.ts.map +1 -0
  274. package/dist/crypto/index.js +66 -0
  275. package/dist/crypto/index.js.map +1 -0
  276. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  277. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  278. package/dist/crypto/internal/asymmetric.js +210 -0
  279. package/dist/crypto/internal/asymmetric.js.map +1 -0
  280. package/dist/crypto/internal/chacha.d.ts +46 -0
  281. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  282. package/dist/crypto/internal/chacha.js +885 -0
  283. package/dist/crypto/internal/chacha.js.map +1 -0
  284. package/dist/crypto/internal/der.d.ts +6 -0
  285. package/dist/crypto/internal/der.d.ts.map +1 -0
  286. package/dist/crypto/internal/der.js +86 -0
  287. package/dist/crypto/internal/der.js.map +1 -0
  288. package/dist/crypto/internal/digest.d.ts +2 -0
  289. package/dist/crypto/internal/digest.d.ts.map +1 -0
  290. package/dist/crypto/internal/digest.js +15 -0
  291. package/dist/crypto/internal/digest.js.map +1 -0
  292. package/dist/crypto/internal/key.d.ts +2 -0
  293. package/dist/crypto/internal/key.d.ts.map +1 -0
  294. package/dist/crypto/internal/key.js +171 -0
  295. package/dist/crypto/internal/key.js.map +1 -0
  296. package/dist/crypto/internal/md5.d.ts +39 -0
  297. package/dist/crypto/internal/md5.d.ts.map +1 -0
  298. package/dist/crypto/internal/md5.js +179 -0
  299. package/dist/crypto/internal/md5.js.map +1 -0
  300. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  301. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  302. package/dist/crypto/internal/webCrypto.js +111 -0
  303. package/dist/crypto/internal/webCrypto.js.map +1 -0
  304. package/dist/encoding/Base64Url.d.ts.map +1 -1
  305. package/dist/encoding/Base64Url.js +29 -5
  306. package/dist/encoding/Base64Url.js.map +1 -1
  307. package/dist/encoding/Csv.d.ts +608 -0
  308. package/dist/encoding/Csv.d.ts.map +1 -0
  309. package/dist/encoding/Csv.js +718 -0
  310. package/dist/encoding/Csv.js.map +1 -0
  311. package/dist/encoding/Hex.d.ts +3 -2
  312. package/dist/encoding/Hex.d.ts.map +1 -1
  313. package/dist/encoding/Hex.js +3 -2
  314. package/dist/encoding/Hex.js.map +1 -1
  315. package/dist/encoding/Ndjson.d.ts +5 -4
  316. package/dist/encoding/Ndjson.d.ts.map +1 -1
  317. package/dist/encoding/Ndjson.js +6 -5
  318. package/dist/encoding/Ndjson.js.map +1 -1
  319. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  320. package/dist/encoding/SchemaBinary.js +42 -4
  321. package/dist/encoding/SchemaBinary.js.map +1 -1
  322. package/dist/encoding/Sse.d.ts +3 -1
  323. package/dist/encoding/Sse.d.ts.map +1 -1
  324. package/dist/encoding/Sse.js +5 -3
  325. package/dist/encoding/Sse.js.map +1 -1
  326. package/dist/encoding/Toml.d.ts +17 -3
  327. package/dist/encoding/Toml.d.ts.map +1 -1
  328. package/dist/encoding/Toml.js +104 -16
  329. package/dist/encoding/Toml.js.map +1 -1
  330. package/dist/encoding/Yaml.d.ts +8 -1
  331. package/dist/encoding/Yaml.d.ts.map +1 -1
  332. package/dist/encoding/Yaml.js +54 -18
  333. package/dist/encoding/Yaml.js.map +1 -1
  334. package/dist/encoding/index.d.ts +5 -0
  335. package/dist/encoding/index.d.ts.map +1 -1
  336. package/dist/encoding/index.js +5 -0
  337. package/dist/encoding/index.js.map +1 -1
  338. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  339. package/dist/eventlog/EventJournal.js +6 -3
  340. package/dist/eventlog/EventJournal.js.map +1 -1
  341. package/dist/eventlog/EventLog.d.ts +126 -4
  342. package/dist/eventlog/EventLog.d.ts.map +1 -1
  343. package/dist/eventlog/EventLog.js +207 -12
  344. package/dist/eventlog/EventLog.js.map +1 -1
  345. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  346. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  347. package/dist/eventlog/EventLogEncryption.js +83 -64
  348. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  349. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  350. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  351. package/dist/eventlog/EventLogMessage.js +217 -1
  352. package/dist/eventlog/EventLogMessage.js.map +1 -1
  353. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  354. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  355. package/dist/eventlog/EventLogRemote.js +186 -16
  356. package/dist/eventlog/EventLogRemote.js.map +1 -1
  357. package/dist/eventlog/EventLogServer.d.ts +10 -1
  358. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  359. package/dist/eventlog/EventLogServer.js +45 -22
  360. package/dist/eventlog/EventLogServer.js.map +1 -1
  361. package/dist/eventlog/EventLogServerEncrypted.d.ts +336 -5
  362. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  363. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  364. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  365. package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
  366. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  367. package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
  368. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  369. package/dist/eventlog/EventLogSessionAuth.d.ts +26 -3
  370. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  371. package/dist/eventlog/EventLogSessionAuth.js +63 -64
  372. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  373. package/dist/eventlog/EventRow.d.ts +4 -0
  374. package/dist/eventlog/EventRow.d.ts.map +1 -1
  375. package/dist/eventlog/EventRow.js +12 -2
  376. package/dist/eventlog/EventRow.js.map +1 -1
  377. package/dist/eventlog/SqlEventJournal.js +2 -2
  378. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  379. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  380. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  381. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  382. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  383. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  384. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  385. package/dist/eventlog/internal/batches.d.ts +12 -0
  386. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  387. package/dist/eventlog/internal/batches.js +26 -0
  388. package/dist/eventlog/internal/batches.js.map +1 -0
  389. package/dist/eventlog/internal/compaction.d.ts +38 -0
  390. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  391. package/dist/eventlog/internal/compaction.js +33 -0
  392. package/dist/eventlog/internal/compaction.js.map +1 -0
  393. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  394. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  395. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  396. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  397. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  398. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  399. package/dist/graphql/GraphQLClient.d.ts +3 -1
  400. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  401. package/dist/graphql/GraphQLClient.js.map +1 -1
  402. package/dist/graphql/GraphQLClientError.d.ts +14 -9
  403. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  404. package/dist/graphql/GraphQLClientError.js +14 -21
  405. package/dist/graphql/GraphQLClientError.js.map +1 -1
  406. package/dist/graphql/GraphQLProtocol.d.ts +12 -3
  407. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  408. package/dist/graphql/GraphQLProtocol.js +4 -1
  409. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  410. package/dist/http/Cookies.d.ts +172 -0
  411. package/dist/http/Cookies.d.ts.map +1 -1
  412. package/dist/http/Cookies.js +143 -1
  413. package/dist/http/Cookies.js.map +1 -1
  414. package/dist/http/FetchHttpClient.d.ts +26 -2
  415. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  416. package/dist/http/FetchHttpClient.js +78 -15
  417. package/dist/http/FetchHttpClient.js.map +1 -1
  418. package/dist/http/HttpClient.d.ts +268 -15
  419. package/dist/http/HttpClient.d.ts.map +1 -1
  420. package/dist/http/HttpClient.js +140 -7
  421. package/dist/http/HttpClient.js.map +1 -1
  422. package/dist/http/HttpClientRequest.d.ts +9 -5
  423. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  424. package/dist/http/HttpClientRequest.js +2 -3
  425. package/dist/http/HttpClientRequest.js.map +1 -1
  426. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  427. package/dist/http/HttpClientResponse.js +3 -2
  428. package/dist/http/HttpClientResponse.js.map +1 -1
  429. package/dist/http/HttpMethod.d.ts +7 -1
  430. package/dist/http/HttpMethod.d.ts.map +1 -1
  431. package/dist/http/HttpMethod.js +3 -8
  432. package/dist/http/HttpMethod.js.map +1 -1
  433. package/dist/http/HttpServerRequest.d.ts +5 -2
  434. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  435. package/dist/http/HttpServerRequest.js +44 -39
  436. package/dist/http/HttpServerRequest.js.map +1 -1
  437. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  438. package/dist/http/HttpServerResponse.js +3 -2
  439. package/dist/http/HttpServerResponse.js.map +1 -1
  440. package/dist/http/HttpTraceContext.d.ts +2 -1
  441. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  442. package/dist/http/HttpTraceContext.js +7 -5
  443. package/dist/http/HttpTraceContext.js.map +1 -1
  444. package/dist/http/ProblemDetails.d.ts +96 -0
  445. package/dist/http/ProblemDetails.d.ts.map +1 -0
  446. package/dist/http/ProblemDetails.js +98 -0
  447. package/dist/http/ProblemDetails.js.map +1 -0
  448. package/dist/http/index.d.ts +5 -0
  449. package/dist/http/index.d.ts.map +1 -1
  450. package/dist/http/index.js +5 -0
  451. package/dist/http/index.js.map +1 -1
  452. package/dist/http/internal/decompression.js +3 -2
  453. package/dist/http/internal/decompression.js.map +1 -1
  454. package/dist/http/internal/mimeTypes.d.ts +4 -1
  455. package/dist/http/internal/mimeTypes.d.ts.map +1 -1
  456. package/dist/http/internal/mimeTypes.js +4 -1
  457. package/dist/http/internal/mimeTypes.js.map +1 -1
  458. package/dist/http/internal/urlParams.js +8 -0
  459. package/dist/http/internal/urlParams.js.map +1 -1
  460. package/dist/http-api/HttpApiBuilder.js +19 -5
  461. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  462. package/dist/http-api/HttpApiClient.d.ts +63 -0
  463. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  464. package/dist/http-api/HttpApiClient.js +51 -0
  465. package/dist/http-api/HttpApiClient.js.map +1 -1
  466. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  467. package/dist/http-api/HttpApiEndpoint.js +14 -5
  468. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  469. package/dist/http-api/HttpApiError.d.ts +185 -13
  470. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  471. package/dist/http-api/HttpApiError.js +128 -0
  472. package/dist/http-api/HttpApiError.js.map +1 -1
  473. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  474. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  475. package/dist/http-api/HttpApiMiddleware.js +85 -1
  476. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  477. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  478. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  479. package/dist/http-api/HttpApiSchema.js +54 -1
  480. package/dist/http-api/HttpApiSchema.js.map +1 -1
  481. package/dist/index.d.ts +5 -5
  482. package/dist/index.d.ts.map +1 -1
  483. package/dist/index.js +5 -5
  484. package/dist/index.js.map +1 -1
  485. package/dist/internal/dateTime.js +49 -24
  486. package/dist/internal/dateTime.js.map +1 -1
  487. package/dist/internal/effect.js +35 -14
  488. package/dist/internal/effect.js.map +1 -1
  489. package/dist/internal/glob.d.ts +2 -0
  490. package/dist/internal/glob.d.ts.map +1 -0
  491. package/dist/internal/glob.js +808 -0
  492. package/dist/internal/glob.js.map +1 -0
  493. package/dist/internal/graphql.js +21 -7
  494. package/dist/internal/graphql.js.map +1 -1
  495. package/dist/internal/graphqlHeaders.d.ts +7 -0
  496. package/dist/internal/graphqlHeaders.d.ts.map +1 -1
  497. package/dist/internal/graphqlHeaders.js +11 -0
  498. package/dist/internal/graphqlHeaders.js.map +1 -1
  499. package/dist/internal/matcher.js +10 -0
  500. package/dist/internal/matcher.js.map +1 -1
  501. package/dist/internal/persistence.js +9 -0
  502. package/dist/internal/persistence.js.map +1 -1
  503. package/dist/internal/rcRef.js +4 -1
  504. package/dist/internal/rcRef.js.map +1 -1
  505. package/dist/internal/request.js +29 -42
  506. package/dist/internal/request.js.map +1 -1
  507. package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
  508. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  509. package/dist/internal/schema/toCodeDocument.js +6 -3
  510. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  511. package/dist/internal/trie.js +42 -13
  512. package/dist/internal/trie.js.map +1 -1
  513. package/dist/internal/ulid.js +41 -0
  514. package/dist/internal/ulid.js.map +1 -1
  515. package/dist/internal/uuid.js +52 -8
  516. package/dist/internal/uuid.js.map +1 -1
  517. package/dist/internal/version.js +1 -1
  518. package/dist/jose/JoseError.d.ts +285 -0
  519. package/dist/jose/JoseError.d.ts.map +1 -0
  520. package/dist/jose/JoseError.js +269 -0
  521. package/dist/jose/JoseError.js.map +1 -0
  522. package/dist/jose/Jwe.d.ts +128 -0
  523. package/dist/jose/Jwe.d.ts.map +1 -0
  524. package/dist/jose/Jwe.js +134 -0
  525. package/dist/jose/Jwe.js.map +1 -0
  526. package/dist/jose/Jwk.d.ts +597 -0
  527. package/dist/jose/Jwk.d.ts.map +1 -0
  528. package/dist/jose/Jwk.js +503 -0
  529. package/dist/jose/Jwk.js.map +1 -0
  530. package/dist/jose/Jwks.d.ts +236 -0
  531. package/dist/jose/Jwks.d.ts.map +1 -0
  532. package/dist/jose/Jwks.js +306 -0
  533. package/dist/jose/Jwks.js.map +1 -0
  534. package/dist/jose/Jws.d.ts +177 -0
  535. package/dist/jose/Jws.d.ts.map +1 -0
  536. package/dist/jose/Jws.js +183 -0
  537. package/dist/jose/Jws.js.map +1 -0
  538. package/dist/jose/Jwt.d.ts +270 -0
  539. package/dist/jose/Jwt.d.ts.map +1 -0
  540. package/dist/jose/Jwt.js +293 -0
  541. package/dist/jose/Jwt.js.map +1 -0
  542. package/dist/jose/index.d.ts +51 -0
  543. package/dist/jose/index.d.ts.map +1 -0
  544. package/dist/jose/index.js +52 -0
  545. package/dist/jose/index.js.map +1 -0
  546. package/dist/jose/internal/compact.d.ts +2 -0
  547. package/dist/jose/internal/compact.d.ts.map +1 -0
  548. package/dist/jose/internal/compact.js +179 -0
  549. package/dist/jose/internal/compact.js.map +1 -0
  550. package/dist/net/Host.d.ts.map +1 -1
  551. package/dist/net/Host.js +5 -10
  552. package/dist/net/Host.js.map +1 -1
  553. package/dist/observability/Otlp.d.ts +15 -4
  554. package/dist/observability/Otlp.d.ts.map +1 -1
  555. package/dist/observability/Otlp.js +10 -0
  556. package/dist/observability/Otlp.js.map +1 -1
  557. package/dist/observability/OtlpResource.d.ts +7 -0
  558. package/dist/observability/OtlpResource.d.ts.map +1 -1
  559. package/dist/observability/OtlpResource.js +11 -1
  560. package/dist/observability/OtlpResource.js.map +1 -1
  561. package/dist/observability/OtlpSerialization.d.ts +1 -1
  562. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  563. package/dist/observability/OtlpSerialization.js +10 -4
  564. package/dist/observability/OtlpSerialization.js.map +1 -1
  565. package/dist/observability/internal/otlpProtobuf.js +3 -3
  566. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  567. package/dist/observability/internal/protobuf.js +6 -0
  568. package/dist/observability/internal/protobuf.js.map +1 -1
  569. package/dist/persistence/CircuitBreaker.d.ts +98 -38
  570. package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
  571. package/dist/persistence/CircuitBreaker.js +67 -29
  572. package/dist/persistence/CircuitBreaker.js.map +1 -1
  573. package/dist/persistence/KeyValueStore.d.ts +47 -2
  574. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  575. package/dist/persistence/KeyValueStore.js +129 -18
  576. package/dist/persistence/KeyValueStore.js.map +1 -1
  577. package/dist/persistence/PersistedQueue.d.ts +9 -0
  578. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  579. package/dist/persistence/PersistedQueue.js +94 -52
  580. package/dist/persistence/PersistedQueue.js.map +1 -1
  581. package/dist/persistence/Persistence.d.ts +10 -4
  582. package/dist/persistence/Persistence.d.ts.map +1 -1
  583. package/dist/persistence/Persistence.js +18 -11
  584. package/dist/persistence/Persistence.js.map +1 -1
  585. package/dist/persistence/RateLimiter.d.ts +8 -0
  586. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  587. package/dist/persistence/RateLimiter.js +63 -12
  588. package/dist/persistence/RateLimiter.js.map +1 -1
  589. package/dist/persistence/index.d.ts +1 -1
  590. package/dist/persistence/index.js +1 -1
  591. package/dist/process/ChildProcess.d.ts +207 -67
  592. package/dist/process/ChildProcess.d.ts.map +1 -1
  593. package/dist/process/ChildProcess.js +56 -158
  594. package/dist/process/ChildProcess.js.map +1 -1
  595. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  596. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  597. package/dist/process/ChildProcessSpawner.js.map +1 -1
  598. package/dist/process/CommandLine.d.ts +294 -0
  599. package/dist/process/CommandLine.d.ts.map +1 -0
  600. package/dist/process/CommandLine.js +481 -0
  601. package/dist/process/CommandLine.js.map +1 -0
  602. package/dist/process/index.d.ts +5 -0
  603. package/dist/process/index.d.ts.map +1 -1
  604. package/dist/process/index.js +5 -0
  605. package/dist/process/index.js.map +1 -1
  606. package/dist/reactivity/Atom.d.ts +2 -1
  607. package/dist/reactivity/Atom.d.ts.map +1 -1
  608. package/dist/reactivity/Atom.js +3 -4
  609. package/dist/reactivity/Atom.js.map +1 -1
  610. package/dist/reactivity/AtomRegistry.js +17 -7
  611. package/dist/reactivity/AtomRegistry.js.map +1 -1
  612. package/dist/rpc/Rpc.d.ts +1 -1
  613. package/dist/rpc/Rpc.d.ts.map +1 -1
  614. package/dist/rpc/Rpc.js.map +1 -1
  615. package/dist/rpc/RpcClient.d.ts +28 -1
  616. package/dist/rpc/RpcClient.d.ts.map +1 -1
  617. package/dist/rpc/RpcClient.js +78 -27
  618. package/dist/rpc/RpcClient.js.map +1 -1
  619. package/dist/rpc/RpcMessage.d.ts +13 -3
  620. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  621. package/dist/rpc/RpcMessage.js +1 -0
  622. package/dist/rpc/RpcMessage.js.map +1 -1
  623. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  624. package/dist/rpc/RpcSerialization.js +6 -0
  625. package/dist/rpc/RpcSerialization.js.map +1 -1
  626. package/dist/rpc/RpcServer.d.ts +31 -0
  627. package/dist/rpc/RpcServer.d.ts.map +1 -1
  628. package/dist/rpc/RpcServer.js +139 -66
  629. package/dist/rpc/RpcServer.js.map +1 -1
  630. package/dist/schema/Model.d.ts +14 -0
  631. package/dist/schema/Model.d.ts.map +1 -1
  632. package/dist/schema/Model.js +18 -3
  633. package/dist/schema/Model.js.map +1 -1
  634. package/dist/sql/Migrator.d.ts +9 -20
  635. package/dist/sql/Migrator.d.ts.map +1 -1
  636. package/dist/sql/Migrator.js +20 -53
  637. package/dist/sql/Migrator.js.map +1 -1
  638. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  639. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  640. package/dist/sql/MigratorFileSystem.js +57 -0
  641. package/dist/sql/MigratorFileSystem.js.map +1 -0
  642. package/dist/sql/SqlClient.d.ts +38 -3
  643. package/dist/sql/SqlClient.d.ts.map +1 -1
  644. package/dist/sql/SqlClient.js +9 -12
  645. package/dist/sql/SqlClient.js.map +1 -1
  646. package/dist/sql/Statement.d.ts +61 -9
  647. package/dist/sql/Statement.d.ts.map +1 -1
  648. package/dist/sql/Statement.js +24 -33
  649. package/dist/sql/Statement.js.map +1 -1
  650. package/dist/sql/index.js +1 -1
  651. package/dist/testing/index.d.ts +0 -5
  652. package/dist/testing/index.d.ts.map +1 -1
  653. package/dist/testing/index.js +0 -5
  654. package/dist/testing/index.js.map +1 -1
  655. package/dist/workflow/Workflow.d.ts +4 -0
  656. package/dist/workflow/Workflow.d.ts.map +1 -1
  657. package/dist/workflow/Workflow.js.map +1 -1
  658. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  659. package/dist/workflow/WorkflowEngine.js +5 -0
  660. package/dist/workflow/WorkflowEngine.js.map +1 -1
  661. package/dist/workflow/internal/crypto.js +9 -8
  662. package/dist/workflow/internal/crypto.js.map +1 -1
  663. package/package.json +7 -1
  664. package/src/BigDecimal.ts +173 -16
  665. package/src/Channel.ts +17 -11
  666. package/src/Config.ts +7 -1
  667. package/src/Context.ts +34 -10
  668. package/src/Cron.ts +178 -29
  669. package/src/Duration.ts +140 -0
  670. package/src/Effect.ts +914 -85
  671. package/src/Equal.ts +3 -3
  672. package/src/FileSystem.ts +65 -4
  673. package/src/Glob.ts +205 -0
  674. package/src/Hash.ts +5 -4
  675. package/src/Iterable.ts +8 -5
  676. package/src/Match.ts +127 -0
  677. package/src/Path.ts +6 -1
  678. package/src/Pool.ts +75 -16
  679. package/src/Random.ts +3 -3
  680. package/src/RcMap.ts +5 -1
  681. package/src/Schedule.ts +26 -3
  682. package/src/Schema.ts +1191 -63
  683. package/src/SchemaGetter.ts +27 -11
  684. package/src/SchemaRepresentation.ts +23 -2
  685. package/src/SchemaTransformation.ts +10 -5
  686. package/src/ScopedCache.ts +5 -9
  687. package/src/Semaphore.ts +141 -0
  688. package/src/Stream.ts +15 -6
  689. package/src/Terminal.ts +19 -1
  690. package/src/ai/AiError.ts +56 -80
  691. package/src/ai/Decision.ts +257 -6
  692. package/src/ai/DecisionModel.ts +171 -28
  693. package/src/ai/McpClient.ts +488 -91
  694. package/src/ai/McpSchema.ts +119 -0
  695. package/src/ai/McpServer.ts +1525 -319
  696. package/src/ai/McpTest.ts +380 -0
  697. package/src/ai/Prompt.ts +16 -11
  698. package/src/ai/Response.ts +2 -22
  699. package/src/ai/Tool.ts +32 -18
  700. package/src/ai/index.ts +6 -0
  701. package/src/ai/internal/mcpCore.ts +243 -56
  702. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +7 -8
  703. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +7 -8
  704. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +7 -8
  705. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +7 -8
  706. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +56 -17
  707. package/src/ai/internal/mcpProtocol.ts +44 -0
  708. package/src/ai/internal/mcpRuntime.ts +15 -8
  709. package/src/ai/internal/mcpSkills.ts +480 -0
  710. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  711. package/src/cli/Argument.ts +6 -0
  712. package/src/cli/CliOutput.ts +117 -49
  713. package/src/cli/Command.ts +23 -0
  714. package/src/cli/Flag.ts +107 -0
  715. package/src/cli/HelpDoc.ts +18 -1
  716. package/src/cli/Param.ts +6 -0
  717. package/src/cli/Primitive.ts +16 -1
  718. package/src/cli/Prompt.ts +1 -0
  719. package/src/cli/internal/help.ts +21 -9
  720. package/src/cluster/ClusterWorkflowEngine.ts +22 -8
  721. package/src/cluster/Reply.ts +1 -1
  722. package/src/cluster/Sharding.ts +96 -26
  723. package/src/cluster/ShardingConfig.ts +41 -3
  724. package/src/cluster/SingleRunner.ts +3 -3
  725. package/src/cluster/SqlMessageStorage.ts +49 -17
  726. package/src/cluster/SqlRunnerStorage.ts +37 -27
  727. package/src/cluster/internal/entityManager.ts +24 -10
  728. package/src/crypto/Aead.ts +517 -0
  729. package/src/crypto/Cipher.ts +326 -0
  730. package/src/crypto/CryptoError.ts +242 -0
  731. package/src/crypto/Digest.ts +167 -0
  732. package/src/crypto/Kdf.ts +315 -0
  733. package/src/crypto/KeyAgreement.ts +489 -0
  734. package/src/crypto/KeyFormat.ts +741 -0
  735. package/src/crypto/KeyWrap.ts +639 -0
  736. package/src/crypto/Mac.ts +386 -0
  737. package/src/crypto/SecureRandom.ts +459 -0
  738. package/src/crypto/Signature.ts +673 -0
  739. package/src/crypto/WebCrypto.ts +84 -0
  740. package/src/crypto/index.ts +78 -0
  741. package/src/crypto/internal/asymmetric.ts +330 -0
  742. package/src/crypto/internal/chacha.ts +1088 -0
  743. package/src/crypto/internal/der.ts +110 -0
  744. package/src/crypto/internal/digest.ts +16 -0
  745. package/src/crypto/internal/key.ts +242 -0
  746. package/src/crypto/internal/md5.ts +170 -0
  747. package/src/crypto/internal/webCrypto.ts +150 -0
  748. package/src/encoding/Base64Url.ts +32 -5
  749. package/src/encoding/Csv.ts +1298 -0
  750. package/src/encoding/Hex.ts +3 -2
  751. package/src/encoding/Ndjson.ts +6 -5
  752. package/src/encoding/SchemaBinary.ts +40 -4
  753. package/src/encoding/Sse.ts +5 -3
  754. package/src/encoding/Toml.ts +85 -20
  755. package/src/encoding/Yaml.ts +61 -18
  756. package/src/encoding/index.ts +6 -0
  757. package/src/eventlog/EventJournal.ts +4 -3
  758. package/src/eventlog/EventLog.ts +347 -15
  759. package/src/eventlog/EventLogEncryption.ts +118 -110
  760. package/src/eventlog/EventLogMessage.ts +273 -1
  761. package/src/eventlog/EventLogRemote.ts +367 -23
  762. package/src/eventlog/EventLogServer.ts +54 -20
  763. package/src/eventlog/EventLogServerEncrypted.ts +1135 -67
  764. package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
  765. package/src/eventlog/EventLogSessionAuth.ts +82 -70
  766. package/src/eventlog/EventRow.ts +12 -3
  767. package/src/eventlog/SqlEventJournal.ts +2 -2
  768. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  769. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  770. package/src/eventlog/internal/batches.ts +30 -0
  771. package/src/eventlog/internal/compaction.ts +64 -0
  772. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  773. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  774. package/src/graphql/GraphQLClient.ts +3 -1
  775. package/src/graphql/GraphQLClientError.ts +15 -22
  776. package/src/graphql/GraphQLProtocol.ts +12 -3
  777. package/src/http/Cookies.ts +281 -1
  778. package/src/http/FetchHttpClient.ts +88 -16
  779. package/src/http/HttpClient.ts +299 -33
  780. package/src/http/HttpClientRequest.ts +12 -9
  781. package/src/http/HttpClientResponse.ts +3 -2
  782. package/src/http/HttpMethod.ts +10 -2
  783. package/src/http/HttpServerRequest.ts +76 -53
  784. package/src/http/HttpServerResponse.ts +3 -2
  785. package/src/http/HttpTraceContext.ts +7 -4
  786. package/src/http/ProblemDetails.ts +149 -0
  787. package/src/http/index.ts +6 -0
  788. package/src/http/internal/decompression.ts +4 -4
  789. package/src/http/internal/mimeTypes.ts +4 -1
  790. package/src/http/internal/urlParams.ts +8 -0
  791. package/src/http-api/HttpApiBuilder.ts +24 -12
  792. package/src/http-api/HttpApiClient.ts +67 -1
  793. package/src/http-api/HttpApiEndpoint.ts +14 -5
  794. package/src/http-api/HttpApiError.ts +250 -0
  795. package/src/http-api/HttpApiMiddleware.ts +95 -1
  796. package/src/http-api/HttpApiSchema.ts +106 -15
  797. package/src/index.ts +6 -6
  798. package/src/internal/dateTime.ts +54 -24
  799. package/src/internal/effect.ts +40 -18
  800. package/src/internal/glob.ts +952 -0
  801. package/src/internal/graphql.ts +27 -9
  802. package/src/internal/graphqlHeaders.ts +13 -0
  803. package/src/internal/matcher.ts +17 -0
  804. package/src/internal/persistence.ts +11 -0
  805. package/src/internal/rcRef.ts +4 -1
  806. package/src/internal/request.ts +51 -58
  807. package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
  808. package/src/internal/schema/toCodeDocument.ts +7 -3
  809. package/src/internal/trie.ts +43 -14
  810. package/src/internal/ulid.ts +44 -0
  811. package/src/internal/uuid.ts +57 -16
  812. package/src/internal/version.ts +1 -1
  813. package/src/jose/JoseError.ts +329 -0
  814. package/src/jose/Jwe.ts +196 -0
  815. package/src/jose/Jwk.ts +777 -0
  816. package/src/jose/Jwks.ts +418 -0
  817. package/src/jose/Jws.ts +312 -0
  818. package/src/jose/Jwt.ts +493 -0
  819. package/src/jose/index.ts +58 -0
  820. package/src/jose/internal/compact.ts +195 -0
  821. package/src/net/Host.ts +5 -10
  822. package/src/observability/Otlp.ts +21 -4
  823. package/src/observability/OtlpResource.ts +9 -1
  824. package/src/observability/OtlpSerialization.ts +13 -5
  825. package/src/observability/internal/otlpProtobuf.ts +6 -6
  826. package/src/observability/internal/protobuf.ts +10 -0
  827. package/src/persistence/CircuitBreaker.ts +113 -48
  828. package/src/persistence/KeyValueStore.ts +219 -22
  829. package/src/persistence/PersistedQueue.ts +128 -59
  830. package/src/persistence/Persistence.ts +20 -13
  831. package/src/persistence/RateLimiter.ts +84 -15
  832. package/src/persistence/index.ts +1 -1
  833. package/src/process/ChildProcess.ts +255 -260
  834. package/src/process/ChildProcessSpawner.ts +5 -0
  835. package/src/process/CommandLine.ts +630 -0
  836. package/src/process/index.ts +6 -0
  837. package/src/reactivity/Atom.ts +5 -5
  838. package/src/reactivity/AtomRegistry.ts +20 -9
  839. package/src/rpc/Rpc.ts +3 -1
  840. package/src/rpc/RpcClient.ts +94 -38
  841. package/src/rpc/RpcMessage.ts +13 -3
  842. package/src/rpc/RpcSerialization.ts +3 -0
  843. package/src/rpc/RpcServer.ts +176 -78
  844. package/src/schema/Model.ts +26 -3
  845. package/src/sql/Migrator.ts +38 -80
  846. package/src/sql/MigratorFileSystem.ts +71 -0
  847. package/src/sql/SqlClient.ts +45 -24
  848. package/src/sql/Statement.ts +60 -29
  849. package/src/sql/index.ts +1 -1
  850. package/src/testing/index.ts +0 -6
  851. package/src/workflow/Workflow.ts +4 -0
  852. package/src/workflow/WorkflowEngine.ts +5 -0
  853. package/src/workflow/internal/crypto.ts +15 -11
  854. package/dist/Crypto.d.ts +0 -244
  855. package/dist/Crypto.d.ts.map +0 -1
  856. package/dist/Crypto.js +0 -139
  857. package/dist/Crypto.js.map +0 -1
  858. package/dist/testing/TestCrypto.d.ts +0 -73
  859. package/dist/testing/TestCrypto.d.ts.map +0 -1
  860. package/dist/testing/TestCrypto.js +0 -87
  861. package/dist/testing/TestCrypto.js.map +0 -1
  862. package/src/Crypto.ts +0 -347
  863. package/src/testing/TestCrypto.ts +0 -94
@@ -1440,10 +1440,12 @@ function getErrorResponse(
1440
1440
  }
1441
1441
 
1442
1442
  function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, method: HttpMethod, payload: PayloadMap) {
1443
- if (schemas.some(HttpApiSchema.isUpgrade)) {
1444
- if (schemas.length > 1) {
1445
- throw new Error("Cannot combine an upgrade with other success responses")
1446
- }
1443
+ const upgrades = schemas.filter(HttpApiSchema.isUpgrade)
1444
+ if (upgrades.length > 1) {
1445
+ throw new Error("Cannot declare more than one upgrade")
1446
+ }
1447
+ const hasUpgrade = upgrades.length === 1
1448
+ if (hasUpgrade) {
1447
1449
  if (method === "HEAD") {
1448
1450
  throw new Error("HEAD endpoints cannot declare an upgrade")
1449
1451
  }
@@ -1453,7 +1455,6 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1453
1455
  throw new Error("Upgrade endpoints cannot declare a streaming payload")
1454
1456
  }
1455
1457
  }
1456
- return
1457
1458
  }
1458
1459
  let hasStream = false
1459
1460
  const statuses = new Map<number, {
@@ -1463,9 +1464,17 @@ function validateSuccessResponse(schemas: ReadonlyArray<Schema.Constraint>, meth
1463
1464
  }>()
1464
1465
 
1465
1466
  for (const schema of schemas) {
1467
+ // The server may decline the upgrade (RFC 9110 §7.8) and answer with one of the other successes.
1468
+ if (HttpApiSchema.isUpgrade(schema)) continue
1466
1469
  const inner = HttpApiSchema.isWithHeaders(schema) ? schema.schema : schema
1467
1470
  const status = HttpApiSchema.getStatusSuccessSchema(schema)
1471
+ if (hasUpgrade && status === 101) {
1472
+ throw new Error("Cannot combine an upgrade with another success response for status: 101")
1473
+ }
1468
1474
  if (HttpApiSchema.isStreamSchema(inner)) {
1475
+ if (hasUpgrade) {
1476
+ throw new Error("Cannot combine an upgrade with a streaming success response")
1477
+ }
1469
1478
  validateStreamSuccess(inner, method)
1470
1479
  if (hasStream) {
1471
1480
  throw new Error("Multiple streaming success responses are not supported")
@@ -11,13 +11,16 @@
11
11
  * @since 4.0.0
12
12
  */
13
13
  import type * as ByteSize from "../ByteSize.ts"
14
+ import type * as Cause from "../Cause.ts"
14
15
  import * as Data from "../Data.ts"
15
16
  import * as Effect from "../Effect.ts"
16
17
  import * as ErrorReporter from "../ErrorReporter.ts"
17
18
  import * as HttpServerRespondable from "../http/HttpServerRespondable.ts"
18
19
  import * as HttpServerResponse from "../http/HttpServerResponse.ts"
20
+ import * as ProblemDetails from "../http/ProblemDetails.ts"
19
21
  import { hasProperty } from "../Predicate.ts"
20
22
  import * as Schema from "../Schema.ts"
23
+ import type { Simplify } from "../Struct.ts"
21
24
  import * as HttpApiSchema from "./HttpApiSchema.ts"
22
25
 
23
26
  const badRequestResponse = HttpServerResponse.empty({ status: 400 })
@@ -449,6 +452,253 @@ export const ServiceUnavailableNoContent = ServiceUnavailable.pipe(HttpApiSchema
449
452
  decode: () => new ServiceUnavailable({})
450
453
  }))
451
454
 
455
+ /**
456
+ * The constant members of a typed problem declaration.
457
+ *
458
+ * @stability unstable
459
+ * @category models
460
+ * @since 4.0.6
461
+ */
462
+ export interface ProblemDeclaration<Type extends string, Status extends number> {
463
+ /**
464
+ * The problem type URI. It is the discriminator between problem classes that
465
+ * share a status.
466
+ */
467
+ readonly type: Type
468
+ /**
469
+ * The HTTP status of the response.
470
+ */
471
+ readonly status: Status
472
+ /**
473
+ * The short human-readable summary of the problem type.
474
+ */
475
+ readonly title: string
476
+ }
477
+
478
+ /**
479
+ * The standard problem members of a typed problem class.
480
+ *
481
+ * **Details**
482
+ *
483
+ * `type`, `status` and `title` are fixed by the declaration and are constructor
484
+ * defaults that are always encoded. `type` is the discriminator: a body with a
485
+ * different `type` is rejected. `status` and `title` decode to the declared
486
+ * value whatever the body carries, so the HTTP status stays authoritative.
487
+ * `detail` and `instance` are optional per-instance members that declared
488
+ * fields may replace.
489
+ *
490
+ * @stability unstable
491
+ * @category models
492
+ * @since 4.0.6
493
+ */
494
+ export interface ProblemMembers<Type extends string, Status extends number> {
495
+ readonly type: Schema.tag<Type>
496
+ readonly status: FixedMember<Status>
497
+ readonly title: FixedMember<string>
498
+ readonly detail: OptionalMember<Schema.String>
499
+ readonly instance: OptionalMember<Schema.String>
500
+ }
501
+
502
+ type FixedMember<L extends string | number> = Schema.middlewareDecoding<
503
+ Schema.withDecodingDefaultKey<Schema.tag<L>>,
504
+ never
505
+ >
506
+
507
+ type OptionalMember<S extends Schema.Constraint> = Schema.middlewareDecoding<Schema.optionalKey<S>, never>
508
+
509
+ /**
510
+ * The fields of a typed problem class: the standard members plus the declared
511
+ * extension fields.
512
+ *
513
+ * @stability unstable
514
+ * @category models
515
+ * @since 4.0.6
516
+ */
517
+ export type ProblemFields<Type extends string, Status extends number, Fields extends Schema.Struct.Fields> = Simplify<
518
+ Omit<ProblemMembers<Type, Status>, keyof Fields> & Fields
519
+ >
520
+
521
+ /**
522
+ * The extension fields a typed problem may declare. The fixed members `type`,
523
+ * `status` and `title` are reserved.
524
+ *
525
+ * @stability unstable
526
+ * @category models
527
+ * @since 4.0.6
528
+ */
529
+ export type ProblemExtensionFields = Schema.Struct.Fields & {
530
+ readonly type?: never
531
+ readonly status?: never
532
+ readonly title?: never
533
+ }
534
+
535
+ const problemEncoding: HttpApiSchema.ResponseEncoding = { _tag: "Json", contentType: ProblemDetails.contentType }
536
+
537
+ /**
538
+ * The class returned by {@link Problem}.
539
+ *
540
+ * @stability unstable
541
+ * @category models
542
+ * @since 4.0.6
543
+ */
544
+ export interface ProblemClass<
545
+ Self,
546
+ Tag extends string,
547
+ Type extends string,
548
+ Status extends number,
549
+ Fields extends Schema.Struct.Fields,
550
+ Brand
551
+ > extends
552
+ Schema.Class<
553
+ Self,
554
+ Schema.Struct<ProblemFields<Type, Status, Fields>>,
555
+ Cause.YieldableError & HttpServerRespondable.Respondable & Brand & { readonly _tag: Tag }
556
+ >
557
+ {}
558
+
559
+ type MissingSelfGeneric = "Missing `Self` generic - use `class Self extends HttpApiError.Problem<Self>()(...)`"
560
+
561
+ /**
562
+ * Declares a typed RFC 9457 problem as a yieldable error class.
563
+ *
564
+ * **Details**
565
+ *
566
+ * The class is a `Schema.Error` whose `_tag` is the given tag, so `Effect.catchTag`
567
+ * works without `_tag` on the wire. It carries the `httpApiStatus` and
568
+ * `application/problem+json` annotations, so endpoints that declare it as an
569
+ * error render, document and decode it as a problem. Problem classes that
570
+ * share a status are told apart by `type`. The extension fields are validated
571
+ * on both sides and cannot replace `type`, `status` or `title`; unknown
572
+ * extensions are not kept. An undeclared instance still renders as a problem
573
+ * through `HttpServerRespondable`.
574
+ *
575
+ * **Example** (Declaring and using a typed problem)
576
+ *
577
+ * ```ts
578
+ * import { Effect, Schema } from "effect"
579
+ * import { HttpApiEndpoint, HttpApiError } from "effect/http-api"
580
+ *
581
+ * class OutOfCredit extends HttpApiError.Problem<OutOfCredit>()("OutOfCredit", {
582
+ * type: "https://example.com/probs/out-of-credit",
583
+ * status: 403,
584
+ * title: "You do not have enough credit."
585
+ * }, {
586
+ * balance: Schema.Number
587
+ * }) {}
588
+ *
589
+ * const buy = HttpApiEndpoint.post("buy", "/buy", { error: OutOfCredit })
590
+ *
591
+ * const failing = Effect.fail(new OutOfCredit({ balance: 30 }))
592
+ * // Responds with 403 and { "type": "https://example.com/probs/out-of-credit",
593
+ * // "status": 403, "title": "You do not have enough credit.", "balance": 30 }
594
+ * ```
595
+ *
596
+ * @stability unstable
597
+ * @category constructors
598
+ * @since 4.0.6
599
+ */
600
+ export const Problem = <Self = never, Brand = {}>() =>
601
+ <
602
+ const Tag extends string,
603
+ const Type extends string,
604
+ const Status extends number,
605
+ const Fields extends ProblemExtensionFields = {}
606
+ >(
607
+ tag: Tag,
608
+ declaration: ProblemDeclaration<Type, Status>,
609
+ fields?: Fields,
610
+ annotations?: Schema.Annotations.Declaration<Self, readonly [Schema.Struct<ProblemFields<Type, Status, Fields>>]>
611
+ ): [Self] extends [never] ? MissingSelfGeneric
612
+ : ProblemClass<Self, Tag, Type, Status, Fields, Brand> =>
613
+ {
614
+ const struct = Schema.Struct({
615
+ detail: ProblemDetails.optionalMember(Schema.String),
616
+ instance: ProblemDetails.optionalMember(Schema.String),
617
+ ...fields,
618
+ type: Schema.tag(declaration.type),
619
+ status: ProblemDetails.fixedMember(declaration.status),
620
+ title: ProblemDetails.fixedMember(declaration.title)
621
+ })
622
+ const encode = Schema.encodeUnknownEffect(struct)
623
+ const Base = Schema.Error<any, {}>(tag)(struct, {
624
+ description: declaration.title,
625
+ httpApiStatus: declaration.status,
626
+ "~httpApiEncoding": problemEncoding,
627
+ ...annotations as {}
628
+ })
629
+ Object.assign(Base.prototype, {
630
+ _tag: tag,
631
+ [ErrorReporter.ignore]: declaration.status < 500,
632
+ [HttpServerRespondable.symbol](this: object) {
633
+ return Effect.map(
634
+ encode(this),
635
+ (body) =>
636
+ HttpServerResponse.jsonUnsafe(body, { status: declaration.status, contentType: ProblemDetails.contentType })
637
+ )
638
+ }
639
+ })
640
+ Object.defineProperty(Base.prototype, "message", {
641
+ get(this: { readonly detail?: string }) {
642
+ return this.detail ?? declaration.title
643
+ },
644
+ configurable: true
645
+ })
646
+ return Base as any
647
+ }
648
+
649
+ /**
650
+ * One entry of `BadRequestProblem.errors`: the location of a request value
651
+ * that failed decoding and the reason.
652
+ *
653
+ * **Details**
654
+ *
655
+ * The first path segment names the request slot (`params`, `headers`, `query`
656
+ * or `payload`).
657
+ *
658
+ * @stability unstable
659
+ * @category schemas
660
+ * @since 4.0.6
661
+ */
662
+ export const ProblemIssue = Schema.Struct({
663
+ path: Schema.Array(Schema.Union([Schema.String, Schema.Number])),
664
+ message: Schema.String
665
+ })
666
+
667
+ /**
668
+ * The problem rendered by `HttpApiMiddleware.layerProblemDetails` when a
669
+ * request fails decoding.
670
+ *
671
+ * **Details**
672
+ *
673
+ * The body is generic by default. `errors` is only filled when the layer is
674
+ * built with `includeDetails: true`.
675
+ *
676
+ * @stability unstable
677
+ * @category errors
678
+ * @since 4.0.6
679
+ */
680
+ export class BadRequestProblem extends Problem<BadRequestProblem>()("BadRequestProblem", {
681
+ type: ProblemDetails.blankType,
682
+ status: 400,
683
+ title: "Bad Request"
684
+ }, {
685
+ errors: Schema.optionalKey(Schema.Array(ProblemIssue))
686
+ }) {}
687
+
688
+ /**
689
+ * The problem rendered by `HttpApiMiddleware.layerProblemDetails` when a
690
+ * response fails encoding.
691
+ *
692
+ * @stability unstable
693
+ * @category errors
694
+ * @since 4.0.6
695
+ */
696
+ export class InternalServerErrorProblem extends Problem<InternalServerErrorProblem>()("InternalServerErrorProblem", {
697
+ type: ProblemDetails.blankType,
698
+ status: 500,
699
+ title: "Internal Server Error"
700
+ }) {}
701
+
452
702
  /**
453
703
  * Type-level identifier used to mark `HttpApiSchemaError` values.
454
704
  *
@@ -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
  *
@@ -17,6 +17,7 @@ import { constVoid, type LazyArg } from "../Function.ts"
17
17
  import { hasBody, type HttpMethod } from "../http/HttpMethod.ts"
18
18
  import * as HttpStatus from "../http/HttpStatus.ts"
19
19
  import type * as Multipart_ from "../http/Multipart.ts"
20
+ import * as ProblemDetails from "../http/ProblemDetails.ts"
20
21
  import * as Predicate from "../Predicate.ts"
21
22
  import * as Schema from "../Schema.ts"
22
23
  import * as SchemaAST from "../SchemaAST.ts"
@@ -264,6 +265,85 @@ export function asNoContent<S extends Schema.Constraint>(options: {
264
265
  }
265
266
  }
266
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
+
267
347
  type StreamMode = "sse" | "uint8array" | "ndjson"
268
348
 
269
349
  /**
@@ -520,7 +600,7 @@ export const StreamSse: {
520
600
  }): StreamSse<Sse.EventCodec, Schema.Top, unknown> => {
521
601
  const events = options.events ?? (options.data === undefined ? undefined : Schema.Struct({
522
602
  ...Sse.EventEncoded.fields,
523
- data: Schema.fromJsonString(options.data)
603
+ data: Schema.fromJsonString(Schema.toCodecJson(options.data))
524
604
  }))
525
605
  if (events === undefined) {
526
606
  throw new Error("StreamSse requires either an events schema or a data schema")
@@ -678,10 +758,9 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
678
758
  *
679
759
  * **When to use**
680
760
  *
681
- * Use as the only success schema of an endpoint that hands over its
682
- * connection as a raw byte stream after `101 Switching Protocols`. For
683
- * WebSocket, upgrade the request with `HttpServerRequest.upgrade` and
684
- * 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.
685
764
  *
686
765
  * **Details**
687
766
  *
@@ -698,9 +777,17 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
698
777
  * The endpoint may declare a buffered payload, which is decoded before the
699
778
  * handler runs. Streaming payloads are rejected.
700
779
  *
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
+ *
701
786
  * The client sends `Connection: Upgrade` and `Upgrade: protocol`, and returns
702
787
  * the response headers with the connection, decoded with `headers` when
703
- * declared. Other responses are decoded as the endpoint's errors.
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.
704
791
  *
705
792
  * **Example** (Declaring an exec start endpoint)
706
793
  *
@@ -711,15 +798,19 @@ const upgradeSchema = Schema.declare(Socket.isSocket).pipe(status(101))
711
798
  * const start = HttpApiEndpoint.post("start", "/exec/:id/start", {
712
799
  * params: { id: Schema.String },
713
800
  * payload: Schema.Struct({ Detach: Schema.Boolean, Tty: Schema.Boolean }),
714
- * success: HttpApiSchema.Upgrade({
715
- * protocol: "tcp",
716
- * headers: {
717
- * "content-type": Schema.Literals([
718
- * "application/vnd.docker.raw-stream",
719
- * "application/vnd.docker.multiplexed-stream"
720
- * ])
721
- * }
722
- * })
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
+ * ]
723
814
  * })
724
815
  * ```
725
816
  *
package/src/index.ts CHANGED
@@ -164,12 +164,6 @@ export * as Context from "./Context.ts"
164
164
  */
165
165
  export * as Cron from "./Cron.ts"
166
166
 
167
- /**
168
- * @stability unstable
169
- * @since 4.0.0
170
- */
171
- export * as Crypto from "./Crypto.ts"
172
-
173
167
  /**
174
168
  * @stability stable
175
169
  * @since 2.0.0
@@ -290,6 +284,12 @@ export * as Formatter from "./Formatter.ts"
290
284
  */
291
285
  export * as Function from "./Function.ts"
292
286
 
287
+ /**
288
+ * @stability experimental
289
+ * @since 4.0.0
290
+ */
291
+ export * as Glob from "./Glob.ts"
292
+
293
293
  /**
294
294
  * @stability unstable
295
295
  * @since 4.0.0