effect 4.0.6 → 4.0.7

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 (480) hide show
  1. package/dist/Arbitrary.d.ts +10 -2
  2. package/dist/Arbitrary.d.ts.map +1 -1
  3. package/dist/Arbitrary.js +2 -1
  4. package/dist/Arbitrary.js.map +1 -1
  5. package/dist/Channel.d.ts.map +1 -1
  6. package/dist/Channel.js +21 -6
  7. package/dist/Channel.js.map +1 -1
  8. package/dist/Data.d.ts +54 -235
  9. package/dist/Data.d.ts.map +1 -1
  10. package/dist/Data.js.map +1 -1
  11. package/dist/Effect.d.ts +1 -1
  12. package/dist/Effect.js +1 -1
  13. package/dist/Equal.d.ts.map +1 -1
  14. package/dist/Equal.js +8 -1
  15. package/dist/Equal.js.map +1 -1
  16. package/dist/Exit.d.ts +3 -3
  17. package/dist/Exit.d.ts.map +1 -1
  18. package/dist/Exit.js.map +1 -1
  19. package/dist/Formatter.d.ts.map +1 -1
  20. package/dist/Formatter.js +27 -13
  21. package/dist/Formatter.js.map +1 -1
  22. package/dist/Hash.d.ts.map +1 -1
  23. package/dist/Hash.js +4 -1
  24. package/dist/Hash.js.map +1 -1
  25. package/dist/JsonPatch.js +4 -0
  26. package/dist/JsonPatch.js.map +1 -1
  27. package/dist/JsonSchema.d.ts.map +1 -1
  28. package/dist/JsonSchema.js +13 -40
  29. package/dist/JsonSchema.js.map +1 -1
  30. package/dist/Metric.d.ts +3 -3
  31. package/dist/MutableList.d.ts +5 -2
  32. package/dist/MutableList.d.ts.map +1 -1
  33. package/dist/MutableList.js +7 -5
  34. package/dist/MutableList.js.map +1 -1
  35. package/dist/MutableRef.d.ts.map +1 -1
  36. package/dist/MutableRef.js +7 -0
  37. package/dist/MutableRef.js.map +1 -1
  38. package/dist/PartitionedSemaphore.d.ts +2 -1
  39. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  40. package/dist/PartitionedSemaphore.js +22 -12
  41. package/dist/PartitionedSemaphore.js.map +1 -1
  42. package/dist/Pool.d.ts.map +1 -1
  43. package/dist/Pool.js +77 -27
  44. package/dist/Pool.js.map +1 -1
  45. package/dist/PubSub.d.ts.map +1 -1
  46. package/dist/PubSub.js +5 -6
  47. package/dist/PubSub.js.map +1 -1
  48. package/dist/Ref.d.ts.map +1 -1
  49. package/dist/Ref.js +8 -0
  50. package/dist/Ref.js.map +1 -1
  51. package/dist/Schedule.js +1 -1
  52. package/dist/Schedule.js.map +1 -1
  53. package/dist/Schema.d.ts +24 -8
  54. package/dist/Schema.d.ts.map +1 -1
  55. package/dist/Schema.js +37 -28
  56. package/dist/Schema.js.map +1 -1
  57. package/dist/SchemaAST.d.ts +4 -2
  58. package/dist/SchemaAST.d.ts.map +1 -1
  59. package/dist/SchemaAST.js +14 -17
  60. package/dist/SchemaAST.js.map +1 -1
  61. package/dist/SchemaParser.d.ts.map +1 -1
  62. package/dist/SchemaParser.js +48 -22
  63. package/dist/SchemaParser.js.map +1 -1
  64. package/dist/SchemaRepresentation.d.ts +19 -10
  65. package/dist/SchemaRepresentation.d.ts.map +1 -1
  66. package/dist/SchemaRepresentation.js +23 -13
  67. package/dist/SchemaRepresentation.js.map +1 -1
  68. package/dist/SchemaTransformation.d.ts +4 -1
  69. package/dist/SchemaTransformation.d.ts.map +1 -1
  70. package/dist/SchemaTransformation.js +9 -2
  71. package/dist/SchemaTransformation.js.map +1 -1
  72. package/dist/Semaphore.d.ts.map +1 -1
  73. package/dist/Semaphore.js +54 -35
  74. package/dist/Semaphore.js.map +1 -1
  75. package/dist/Sink.d.ts.map +1 -1
  76. package/dist/Sink.js +7 -2
  77. package/dist/Sink.js.map +1 -1
  78. package/dist/Stream.d.ts.map +1 -1
  79. package/dist/Stream.js +22 -10
  80. package/dist/Stream.js.map +1 -1
  81. package/dist/String.d.ts +3 -0
  82. package/dist/String.d.ts.map +1 -1
  83. package/dist/String.js +3 -0
  84. package/dist/String.js.map +1 -1
  85. package/dist/Tracer.d.ts +11 -1
  86. package/dist/Tracer.d.ts.map +1 -1
  87. package/dist/Tracer.js +6 -1
  88. package/dist/Tracer.js.map +1 -1
  89. package/dist/ai/LanguageModel.d.ts.map +1 -1
  90. package/dist/ai/LanguageModel.js +9 -0
  91. package/dist/ai/LanguageModel.js.map +1 -1
  92. package/dist/ai/McpSchema.d.ts +110 -110
  93. package/dist/ai/McpSchema.d.ts.map +1 -1
  94. package/dist/ai/McpServer.d.ts.map +1 -1
  95. package/dist/ai/McpServer.js +21 -15
  96. package/dist/ai/McpServer.js.map +1 -1
  97. package/dist/ai/Prompt.d.ts +52 -0
  98. package/dist/ai/Prompt.d.ts.map +1 -1
  99. package/dist/ai/Prompt.js +38 -0
  100. package/dist/ai/Prompt.js.map +1 -1
  101. package/dist/ai/Response.d.ts +16 -3
  102. package/dist/ai/Response.d.ts.map +1 -1
  103. package/dist/ai/Response.js +4 -0
  104. package/dist/ai/Response.js.map +1 -1
  105. package/dist/ai/Tool.d.ts +24 -0
  106. package/dist/ai/Tool.d.ts.map +1 -1
  107. package/dist/ai/Tool.js +5 -2
  108. package/dist/ai/Tool.js.map +1 -1
  109. package/dist/ai/Toolkit.d.ts.map +1 -1
  110. package/dist/ai/Toolkit.js +8 -1
  111. package/dist/ai/Toolkit.js.map +1 -1
  112. package/dist/cli/Argument.d.ts +15 -0
  113. package/dist/cli/Argument.d.ts.map +1 -1
  114. package/dist/cli/Argument.js +5 -0
  115. package/dist/cli/Argument.js.map +1 -1
  116. package/dist/cli/CliError.d.ts +78 -0
  117. package/dist/cli/CliError.d.ts.map +1 -1
  118. package/dist/cli/CliError.js +65 -3
  119. package/dist/cli/CliError.js.map +1 -1
  120. package/dist/cli/CliOutput.d.ts +155 -6
  121. package/dist/cli/CliOutput.d.ts.map +1 -1
  122. package/dist/cli/CliOutput.js +62 -6
  123. package/dist/cli/CliOutput.js.map +1 -1
  124. package/dist/cli/Command.d.ts +24 -16
  125. package/dist/cli/Command.d.ts.map +1 -1
  126. package/dist/cli/Command.js +59 -29
  127. package/dist/cli/Command.js.map +1 -1
  128. package/dist/cli/Completions.d.ts +58 -0
  129. package/dist/cli/Completions.d.ts.map +1 -1
  130. package/dist/cli/Completions.js +49 -9
  131. package/dist/cli/Completions.js.map +1 -1
  132. package/dist/cli/Flag.d.ts +15 -0
  133. package/dist/cli/Flag.d.ts.map +1 -1
  134. package/dist/cli/Flag.js +5 -0
  135. package/dist/cli/Flag.js.map +1 -1
  136. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  137. package/dist/cli/GlobalFlag.js +15 -7
  138. package/dist/cli/GlobalFlag.js.map +1 -1
  139. package/dist/cli/Param.d.ts +9 -0
  140. package/dist/cli/Param.d.ts.map +1 -1
  141. package/dist/cli/Param.js +21 -2
  142. package/dist/cli/Param.js.map +1 -1
  143. package/dist/cli/TerminalCapabilities.d.ts +3 -2
  144. package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
  145. package/dist/cli/TerminalCapabilities.js +3 -1
  146. package/dist/cli/TerminalCapabilities.js.map +1 -1
  147. package/dist/cli/internal/completions/bash.js +73 -27
  148. package/dist/cli/internal/completions/bash.js.map +1 -1
  149. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  150. package/dist/cluster/ClusterWorkflowEngine.js +45 -10
  151. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  152. package/dist/cluster/MessageStorage.d.ts +23 -45
  153. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  154. package/dist/cluster/MessageStorage.js +6 -7
  155. package/dist/cluster/MessageStorage.js.map +1 -1
  156. package/dist/cluster/Sharding.d.ts.map +1 -1
  157. package/dist/cluster/Sharding.js +61 -21
  158. package/dist/cluster/Sharding.js.map +1 -1
  159. package/dist/cluster/ShardingConfig.d.ts +10 -0
  160. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  161. package/dist/cluster/ShardingConfig.js.map +1 -1
  162. package/dist/cluster/Snowflake.d.ts.map +1 -1
  163. package/dist/cluster/Snowflake.js +3 -7
  164. package/dist/cluster/Snowflake.js.map +1 -1
  165. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  166. package/dist/cluster/SqlRunnerStorage.js +87 -39
  167. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  168. package/dist/cluster/internal/entityManager.js +54 -20
  169. package/dist/cluster/internal/entityManager.js.map +1 -1
  170. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  171. package/dist/devtools/DevToolsClient.js +2 -0
  172. package/dist/devtools/DevToolsClient.js.map +1 -1
  173. package/dist/encoding/Base64.js +36 -0
  174. package/dist/encoding/Base64.js.map +1 -1
  175. package/dist/encoding/Sse.d.ts.map +1 -1
  176. package/dist/encoding/Sse.js +3 -3
  177. package/dist/encoding/Sse.js.map +1 -1
  178. package/dist/encoding/Toml.d.ts.map +1 -1
  179. package/dist/encoding/Toml.js +21 -16
  180. package/dist/encoding/Toml.js.map +1 -1
  181. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  182. package/dist/eventlog/SqlEventJournal.js +47 -27
  183. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  184. package/dist/eventlog/internal/conflicts.d.ts +0 -1
  185. package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
  186. package/dist/eventlog/internal/conflicts.js +0 -3
  187. package/dist/eventlog/internal/conflicts.js.map +1 -1
  188. package/dist/http/Cookies.d.ts.map +1 -1
  189. package/dist/http/Cookies.js +10 -9
  190. package/dist/http/Cookies.js.map +1 -1
  191. package/dist/http/HttpClient.d.ts +423 -0
  192. package/dist/http/HttpClient.d.ts.map +1 -1
  193. package/dist/http/HttpClient.js +231 -7
  194. package/dist/http/HttpClient.js.map +1 -1
  195. package/dist/http/HttpClientError.d.ts +8 -1
  196. package/dist/http/HttpClientError.d.ts.map +1 -1
  197. package/dist/http/HttpClientError.js +37 -1
  198. package/dist/http/HttpClientError.js.map +1 -1
  199. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  200. package/dist/http/HttpClientRequest.js +1 -1
  201. package/dist/http/HttpClientRequest.js.map +1 -1
  202. package/dist/http/HttpMiddleware.d.ts +1 -1
  203. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  204. package/dist/http/HttpMiddleware.js +14 -16
  205. package/dist/http/HttpMiddleware.js.map +1 -1
  206. package/dist/http/HttpRouter.d.ts.map +1 -1
  207. package/dist/http/HttpRouter.js +2 -1
  208. package/dist/http/HttpRouter.js.map +1 -1
  209. package/dist/http/HttpServerError.js +2 -2
  210. package/dist/http/HttpServerError.js.map +1 -1
  211. package/dist/http/HttpServerRequest.d.ts +6 -1
  212. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  213. package/dist/http/HttpServerRequest.js +73 -10
  214. package/dist/http/HttpServerRequest.js.map +1 -1
  215. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  216. package/dist/http/HttpStaticServer.js +48 -21
  217. package/dist/http/HttpStaticServer.js.map +1 -1
  218. package/dist/http/MultipartParser/internal/contentType.js +3 -3
  219. package/dist/http/UrlParams.d.ts +3 -1
  220. package/dist/http/UrlParams.d.ts.map +1 -1
  221. package/dist/http/UrlParams.js +4 -2
  222. package/dist/http/UrlParams.js.map +1 -1
  223. package/dist/http/internal/compression.js +4 -5
  224. package/dist/http/internal/compression.js.map +1 -1
  225. package/dist/http/internal/decompression.js +3 -0
  226. package/dist/http/internal/decompression.js.map +1 -1
  227. package/dist/http/internal/httpBody.js +8 -1
  228. package/dist/http/internal/httpBody.js.map +1 -1
  229. package/dist/http/internal/urlParams.js +25 -0
  230. package/dist/http/internal/urlParams.js.map +1 -1
  231. package/dist/http-api/HttpApi.d.ts +3 -6
  232. package/dist/http-api/HttpApi.d.ts.map +1 -1
  233. package/dist/http-api/HttpApi.js +3 -6
  234. package/dist/http-api/HttpApi.js.map +1 -1
  235. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  236. package/dist/http-api/HttpApiBuilder.js +27 -11
  237. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  238. package/dist/http-api/HttpApiClient.d.ts +77 -7
  239. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  240. package/dist/http-api/HttpApiClient.js +142 -44
  241. package/dist/http-api/HttpApiClient.js.map +1 -1
  242. package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
  243. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  244. package/dist/http-api/HttpApiEndpoint.js +109 -27
  245. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  246. package/dist/http-api/HttpApiSchema.d.ts +76 -29
  247. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  248. package/dist/http-api/HttpApiSchema.js +70 -59
  249. package/dist/http-api/HttpApiSchema.js.map +1 -1
  250. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  251. package/dist/http-api/HttpApiTest.js +3 -2
  252. package/dist/http-api/HttpApiTest.js.map +1 -1
  253. package/dist/http-api/OpenApi.d.ts.map +1 -1
  254. package/dist/http-api/OpenApi.js +25 -16
  255. package/dist/http-api/OpenApi.js.map +1 -1
  256. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  257. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  258. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  259. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  260. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  261. package/dist/internal/arbitrary/runner.js +120 -44
  262. package/dist/internal/arbitrary/runner.js.map +1 -1
  263. package/dist/internal/core.js +2 -0
  264. package/dist/internal/core.js.map +1 -1
  265. package/dist/internal/effect.js +21 -13
  266. package/dist/internal/effect.js.map +1 -1
  267. package/dist/internal/equal.js +14 -0
  268. package/dist/internal/equal.js.map +1 -1
  269. package/dist/internal/jsonSchema.d.ts +2 -0
  270. package/dist/internal/jsonSchema.d.ts.map +1 -0
  271. package/dist/internal/jsonSchema.js +28 -0
  272. package/dist/internal/jsonSchema.js.map +1 -0
  273. package/dist/internal/matcher.js +1 -1
  274. package/dist/internal/matcher.js.map +1 -1
  275. package/dist/internal/schema/compilerRegistry.js +4 -1
  276. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  277. package/dist/internal/schema/content.d.ts +2 -0
  278. package/dist/internal/schema/content.d.ts.map +1 -0
  279. package/dist/internal/schema/content.js +13 -0
  280. package/dist/internal/schema/content.js.map +1 -0
  281. package/dist/internal/schema/fromJsonSchemaDocument.js +173 -185
  282. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  283. package/dist/internal/schema/fromRepresentation.js +2 -1
  284. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  285. package/dist/internal/schema/standardSchema.js +8 -2
  286. package/dist/internal/schema/standardSchema.js.map +1 -1
  287. package/dist/internal/schema/toCodeDocument.js +3 -3
  288. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  289. package/dist/internal/schema/toCodec.js +21 -24
  290. package/dist/internal/schema/toCodec.js.map +1 -1
  291. package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
  292. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  293. package/dist/internal/schema/toRepresentation.js +107 -129
  294. package/dist/internal/schema/toRepresentation.js.map +1 -1
  295. package/dist/internal/sql.d.ts +2 -0
  296. package/dist/internal/sql.d.ts.map +1 -0
  297. package/dist/internal/sql.js +13 -0
  298. package/dist/internal/sql.js.map +1 -0
  299. package/dist/internal/version.js +1 -1
  300. package/dist/observability/OtlpProxy.d.ts +154 -0
  301. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  302. package/dist/observability/OtlpProxy.js +235 -0
  303. package/dist/observability/OtlpProxy.js.map +1 -0
  304. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  305. package/dist/observability/OtlpTracer.js +4 -0
  306. package/dist/observability/OtlpTracer.js.map +1 -1
  307. package/dist/observability/index.d.ts +5 -0
  308. package/dist/observability/index.d.ts.map +1 -1
  309. package/dist/observability/index.js +5 -0
  310. package/dist/observability/index.js.map +1 -1
  311. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  312. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  313. package/dist/persistence/CircuitBreaker.js +1165 -0
  314. package/dist/persistence/CircuitBreaker.js.map +1 -0
  315. package/dist/persistence/Redis.d.ts +78 -2
  316. package/dist/persistence/Redis.d.ts.map +1 -1
  317. package/dist/persistence/Redis.js +62 -7
  318. package/dist/persistence/Redis.js.map +1 -1
  319. package/dist/persistence/index.d.ts +5 -0
  320. package/dist/persistence/index.d.ts.map +1 -1
  321. package/dist/persistence/index.js +5 -0
  322. package/dist/persistence/index.js.map +1 -1
  323. package/dist/process/ChildProcess.d.ts +30 -4
  324. package/dist/process/ChildProcess.d.ts.map +1 -1
  325. package/dist/process/ChildProcess.js.map +1 -1
  326. package/dist/process/ChildProcessSpawner.d.ts +30 -0
  327. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  328. package/dist/process/ChildProcessSpawner.js +5 -2
  329. package/dist/process/ChildProcessSpawner.js.map +1 -1
  330. package/dist/reactivity/AsyncResult.d.ts +1 -1
  331. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  332. package/dist/rpc/RpcClient.d.ts.map +1 -1
  333. package/dist/rpc/RpcClient.js +9 -8
  334. package/dist/rpc/RpcClient.js.map +1 -1
  335. package/dist/rpc/RpcSerialization.d.ts +14 -0
  336. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  337. package/dist/rpc/RpcSerialization.js +20 -8
  338. package/dist/rpc/RpcSerialization.js.map +1 -1
  339. package/dist/rpc/RpcServer.d.ts.map +1 -1
  340. package/dist/rpc/RpcServer.js +11 -1
  341. package/dist/rpc/RpcServer.js.map +1 -1
  342. package/dist/rpc/RpcTest.d.ts +1 -0
  343. package/dist/rpc/RpcTest.d.ts.map +1 -1
  344. package/dist/rpc/RpcTest.js +1 -0
  345. package/dist/rpc/RpcTest.js.map +1 -1
  346. package/dist/sql/Migrator.d.ts +2 -1
  347. package/dist/sql/Migrator.d.ts.map +1 -1
  348. package/dist/sql/Migrator.js +11 -8
  349. package/dist/sql/Migrator.js.map +1 -1
  350. package/dist/sql/SqlClient.d.ts +9 -4
  351. package/dist/sql/SqlClient.d.ts.map +1 -1
  352. package/dist/sql/SqlClient.js +8 -1
  353. package/dist/sql/SqlClient.js.map +1 -1
  354. package/dist/sql/SqlResolver.d.ts +4 -0
  355. package/dist/sql/SqlResolver.d.ts.map +1 -1
  356. package/dist/sql/SqlResolver.js +18 -4
  357. package/dist/sql/SqlResolver.js.map +1 -1
  358. package/dist/sql/Statement.d.ts +7 -0
  359. package/dist/sql/Statement.d.ts.map +1 -1
  360. package/dist/sql/Statement.js +21 -2
  361. package/dist/sql/Statement.js.map +1 -1
  362. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  363. package/dist/workflow/DurableDeferred.js +21 -2
  364. package/dist/workflow/DurableDeferred.js.map +1 -1
  365. package/package.json +1 -1
  366. package/src/Arbitrary.ts +10 -2
  367. package/src/Channel.ts +47 -18
  368. package/src/Data.ts +60 -265
  369. package/src/Effect.ts +1 -1
  370. package/src/Equal.ts +8 -1
  371. package/src/Exit.ts +3 -3
  372. package/src/Formatter.ts +28 -13
  373. package/src/Hash.ts +4 -1
  374. package/src/JsonPatch.ts +4 -0
  375. package/src/JsonSchema.ts +12 -40
  376. package/src/Metric.ts +3 -3
  377. package/src/MutableList.ts +7 -5
  378. package/src/MutableRef.ts +8 -1
  379. package/src/PartitionedSemaphore.ts +24 -13
  380. package/src/Pool.ts +109 -37
  381. package/src/PubSub.ts +5 -6
  382. package/src/Ref.ts +8 -0
  383. package/src/Schedule.ts +1 -1
  384. package/src/Schema.ts +48 -25
  385. package/src/SchemaAST.ts +20 -20
  386. package/src/SchemaParser.ts +51 -18
  387. package/src/SchemaRepresentation.ts +31 -34
  388. package/src/SchemaTransformation.ts +9 -2
  389. package/src/Semaphore.ts +67 -40
  390. package/src/Sink.ts +15 -2
  391. package/src/Stream.ts +33 -16
  392. package/src/String.ts +3 -0
  393. package/src/Tracer.ts +15 -1
  394. package/src/ai/LanguageModel.ts +9 -0
  395. package/src/ai/McpServer.ts +14 -13
  396. package/src/ai/Prompt.ts +65 -0
  397. package/src/ai/Response.ts +34 -9
  398. package/src/ai/Tool.ts +38 -2
  399. package/src/ai/Toolkit.ts +4 -1
  400. package/src/cli/Argument.ts +15 -0
  401. package/src/cli/CliError.ts +90 -3
  402. package/src/cli/CliOutput.ts +183 -6
  403. package/src/cli/Command.ts +53 -41
  404. package/src/cli/Completions.ts +51 -0
  405. package/src/cli/Flag.ts +15 -0
  406. package/src/cli/GlobalFlag.ts +6 -7
  407. package/src/cli/Param.ts +29 -6
  408. package/src/cli/TerminalCapabilities.ts +6 -3
  409. package/src/cli/internal/completions/bash.ts +79 -29
  410. package/src/cluster/ClusterWorkflowEngine.ts +46 -16
  411. package/src/cluster/MessageStorage.ts +19 -14
  412. package/src/cluster/Sharding.ts +83 -21
  413. package/src/cluster/ShardingConfig.ts +5 -0
  414. package/src/cluster/Snowflake.ts +3 -7
  415. package/src/cluster/SqlRunnerStorage.ts +110 -47
  416. package/src/cluster/internal/entityManager.ts +75 -22
  417. package/src/devtools/DevToolsClient.ts +2 -0
  418. package/src/encoding/Base64.ts +38 -0
  419. package/src/encoding/Sse.ts +4 -3
  420. package/src/encoding/Toml.ts +33 -16
  421. package/src/eventlog/SqlEventJournal.ts +68 -45
  422. package/src/eventlog/internal/conflicts.ts +0 -4
  423. package/src/http/Cookies.ts +10 -11
  424. package/src/http/HttpClient.ts +547 -7
  425. package/src/http/HttpClientError.ts +35 -1
  426. package/src/http/HttpClientRequest.ts +9 -1
  427. package/src/http/HttpMiddleware.ts +15 -18
  428. package/src/http/HttpRouter.ts +2 -1
  429. package/src/http/HttpServerError.ts +2 -2
  430. package/src/http/HttpServerRequest.ts +102 -16
  431. package/src/http/HttpStaticServer.ts +51 -22
  432. package/src/http/MultipartParser/internal/contentType.ts +3 -3
  433. package/src/http/UrlParams.ts +6 -1
  434. package/src/http/internal/compression.ts +4 -5
  435. package/src/http/internal/decompression.ts +6 -0
  436. package/src/http/internal/httpBody.ts +10 -2
  437. package/src/http/internal/urlParams.ts +29 -0
  438. package/src/http-api/HttpApi.ts +3 -6
  439. package/src/http-api/HttpApiBuilder.ts +45 -15
  440. package/src/http-api/HttpApiClient.ts +218 -72
  441. package/src/http-api/HttpApiEndpoint.ts +121 -30
  442. package/src/http-api/HttpApiSchema.ts +141 -48
  443. package/src/http-api/HttpApiTest.ts +3 -2
  444. package/src/http-api/OpenApi.ts +20 -17
  445. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  446. package/src/internal/arbitrary/runner.ts +133 -36
  447. package/src/internal/core.ts +2 -0
  448. package/src/internal/effect.ts +24 -16
  449. package/src/internal/equal.ts +17 -0
  450. package/src/internal/jsonSchema.ts +27 -0
  451. package/src/internal/matcher.ts +1 -1
  452. package/src/internal/schema/compilerRegistry.ts +6 -1
  453. package/src/internal/schema/content.ts +18 -0
  454. package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
  455. package/src/internal/schema/fromRepresentation.ts +2 -1
  456. package/src/internal/schema/standardSchema.ts +2 -2
  457. package/src/internal/schema/toCodeDocument.ts +4 -4
  458. package/src/internal/schema/toCodec.ts +26 -22
  459. package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
  460. package/src/internal/schema/toRepresentation.ts +122 -140
  461. package/src/internal/sql.ts +14 -0
  462. package/src/internal/version.ts +1 -1
  463. package/src/observability/OtlpProxy.ts +314 -0
  464. package/src/observability/OtlpTracer.ts +4 -0
  465. package/src/observability/index.ts +6 -0
  466. package/src/persistence/CircuitBreaker.ts +1678 -0
  467. package/src/persistence/Redis.ts +129 -8
  468. package/src/persistence/index.ts +6 -0
  469. package/src/process/ChildProcess.ts +30 -4
  470. package/src/process/ChildProcessSpawner.ts +41 -2
  471. package/src/reactivity/AsyncResult.ts +1 -1
  472. package/src/rpc/RpcClient.ts +13 -10
  473. package/src/rpc/RpcSerialization.ts +32 -9
  474. package/src/rpc/RpcServer.ts +16 -1
  475. package/src/rpc/RpcTest.ts +3 -0
  476. package/src/sql/Migrator.ts +12 -7
  477. package/src/sql/SqlClient.ts +11 -4
  478. package/src/sql/SqlResolver.ts +23 -9
  479. package/src/sql/Statement.ts +30 -2
  480. package/src/workflow/DurableDeferred.ts +23 -6
@@ -98,7 +98,8 @@ export class MigrationError extends Data.TaggedError("MigrationError")<{
98
98
  /**
99
99
  * Creates a migrator that ensures the migrations table exists, runs pending
100
100
  * migrations in a transaction, and optionally dumps the schema after successful
101
- * migrations.
101
+ * migrations. ClickHouse runs without a transaction and records each migration
102
+ * only after it succeeds.
102
103
  *
103
104
  * @stability unstable
104
105
  * @category constructors
@@ -240,6 +241,12 @@ ORDER BY migration_id`,
240
241
 
241
242
  // === run
242
243
 
244
+ // BEGIN is still experimental on clickhouse
245
+ const transactional = sql.onDialectOrElse({
246
+ clickhouse: () => false,
247
+ orElse: () => true
248
+ })
249
+
243
250
  const run = Effect.gen(function*() {
244
251
  yield* sql.onDialectOrElse({
245
252
  pg: () => sql`LOCK TABLE ${sql(table)} IN ACCESS EXCLUSIVE MODE`,
@@ -279,7 +286,8 @@ ORDER BY migration_id`,
279
286
  ])
280
287
  }
281
288
 
282
- if (required.length > 0) {
289
+ // rows recorded up front are only rolled back inside a transaction
290
+ if (transactional && required.length > 0) {
283
291
  yield* pipe(
284
292
  insertMigrations(required.map(([id, name]) => [id, name])),
285
293
  Effect.mapError((error): MigrationError | SqlError =>
@@ -298,6 +306,7 @@ ORDER BY migration_id`,
298
306
  ([id, name, effect]) =>
299
307
  Effect.logDebug(`Running migration`).pipe(
300
308
  Effect.flatMap(() => runMigration(id, name, effect)),
309
+ Effect.andThen(transactional ? Effect.void : insertMigrations([[id, name]])),
301
310
  Effect.annotateLogs("migration_id", String(id)),
302
311
  Effect.annotateLogs("migration_name", name),
303
312
  Effect.withSpan(`Migrator ${id}_${name}`)
@@ -325,11 +334,7 @@ ORDER BY migration_id`,
325
334
  yield* ensureMigrationsTable
326
335
 
327
336
  const completed = yield* pipe(
328
- sql.onDialectOrElse({
329
- // BEGIN is still experimental on clickhouse
330
- clickhouse: () => run,
331
- orElse: () => sql.withTransaction(run)
332
- }),
337
+ transactional ? sql.withTransaction(run) : run,
333
338
  Effect.catchTag("MigrationError", (_) =>
334
339
  _.kind === "Locked"
335
340
  ? Effect.as(Effect.logDebug(_.message), [])
@@ -15,6 +15,7 @@ import * as Context from "../Context.ts"
15
15
  import * as Effect from "../Effect.ts"
16
16
  import * as Exit from "../Exit.ts"
17
17
  import { identity } from "../Function.ts"
18
+ import { CurrentTransactionService } from "../internal/sql.ts"
18
19
  import * as Option from "../Option.ts"
19
20
  import { hasProperty } from "../Predicate.ts"
20
21
  import type * as Queue from "../Queue.ts"
@@ -87,8 +88,7 @@ export interface SqlClient extends Constructor {
87
88
  * enclosing `Reactivity.withBatch`. Only the `Reactivity` service read from
88
89
  * the transaction's context defers, and a fiber that outlives the
89
90
  * transaction can't defer through it, as with `afterCommit`. Transactions
90
- * that don't go through `makeWithTransaction`, such as those of
91
- * `@effect/sql-sqlite-do`, invalidate immediately.
91
+ * that don't go through `makeWithTransaction` invalidate immediately.
92
92
  */
93
93
  readonly withTransaction: <R, E, A>(
94
94
  self: Effect.Effect<A, E, R>
@@ -136,8 +136,8 @@ export interface SqlClient extends Constructor {
136
136
  * long-running work.
137
137
  * Registering after the transaction has ended is a defect.
138
138
  *
139
- * Transactions that don't go through `makeWithTransaction`, such as those
140
- * of `@effect/sql-sqlite-do`, run callbacks immediately.
139
+ * Transactions that don't go through `makeWithTransaction` run callbacks
140
+ * immediately.
141
141
  */
142
142
  readonly afterCommit: <R>(effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>
143
143
 
@@ -525,6 +525,12 @@ const makeAfterCommit =
525
525
  * failure or interruption. Releases nested savepoints when `releaseSavepoint`
526
526
  * is provided.
527
527
  *
528
+ * **Details**
529
+ *
530
+ * Transactions started this way are also recognized by `SqlResolver` when the
531
+ * caller's context has no `SqlClient`, so their requests don't share a batch
532
+ * with requests outside the transaction.
533
+ *
528
534
  * @stability unstable
529
535
  * @category transactions
530
536
  * @since 4.0.0
@@ -612,6 +618,7 @@ export const makeWithTransaction = <I, S>(options: {
612
618
  restore(effect),
613
619
  services.pipe(
614
620
  Context.add(options.transactionService, level),
621
+ Context.add(CurrentTransactionService, options.transactionService),
615
622
  reactivity ? Context.add(Reactivity, deferInvalidations(reactivity)) : identity,
616
623
  Context.add(transactionSemaphore, Semaphore.makeUnsafe(1)),
617
624
  Context.add(Tracer.ParentSpan, span)
@@ -8,6 +8,10 @@
8
8
  * grouped, id-based, and side-effect-only resolver constructors, and keeps
9
9
  * batches separated by the active SQL transaction connection.
10
10
  *
11
+ * The active transaction is found through the `SqlClient` in each request's
12
+ * context, and otherwise through the innermost transaction started with
13
+ * `SqlClient.makeWithTransaction`.
14
+ *
11
15
  * Only the transaction connection separates batches. Other differences in
12
16
  * caller services do not: `execute` and result decoding are provided with the
13
17
  * first entry's context, while request encoding uses each entry's own context.
@@ -27,6 +31,7 @@ import * as Effect from "../Effect.ts"
27
31
  import * as Equal from "../Equal.ts"
28
32
  import * as Exit from "../Exit.ts"
29
33
  import * as Hash from "../Hash.ts"
34
+ import { CurrentTransactionService } from "../internal/sql.ts"
30
35
  import * as MutableHashMap from "../MutableHashMap.ts"
31
36
  import * as Option from "../Option.ts"
32
37
  import * as Request from "../Request.ts"
@@ -146,7 +151,7 @@ export const ordered = <Req extends Schema.Constraint, Res extends Schema.Constr
146
151
  E | ResultLengthMismatch,
147
152
  Req["EncodingServices"] | Res["DecodingServices"] | R
148
153
  >,
149
- SqlClient.TransactionConnection.Service | undefined
154
+ object | undefined
150
155
  >({
151
156
  key: transactionKey,
152
157
  resolver: Effect.fnUntraced(function*(entries) {
@@ -204,7 +209,7 @@ export const grouped = <Req extends Schema.Constraint, Res extends Schema.Constr
204
209
  E | Schema.SchemaError | Cause.NoSuchElementError,
205
210
  Req["EncodingServices"] | Res["DecodingServices"] | R
206
211
  >,
207
- SqlClient.TransactionConnection.Service | undefined
212
+ object | undefined
208
213
  >({
209
214
  key: transactionKey,
210
215
  resolver: Effect.fnUntraced(function*(entries) {
@@ -274,7 +279,7 @@ export const findById = <Id extends Schema.Constraint, Res extends Schema.Constr
274
279
  E | Schema.SchemaError | Cause.NoSuchElementError,
275
280
  Id["EncodingServices"] | Res["DecodingServices"] | R
276
281
  >,
277
- SqlClient.TransactionConnection.Service | undefined
282
+ object | undefined
278
283
  >({
279
284
  key: transactionKey,
280
285
  resolver: Effect.fnUntraced(function*(entries) {
@@ -328,7 +333,7 @@ const void_ = <Req extends Schema.Constraint, _, E, R>(
328
333
  E | Schema.SchemaError,
329
334
  Req["EncodingServices"] | R
330
335
  >,
331
- SqlClient.TransactionConnection.Service | undefined
336
+ object | undefined
332
337
  >({
333
338
  key: transactionKey,
334
339
  resolver: Effect.fnUntraced(function*(entries) {
@@ -429,10 +434,19 @@ const partitionRequestsById = function*<In, A, E, R, InE>(
429
434
  return [inputs, byIdMap] as const
430
435
  }
431
436
 
432
- function transactionKey<A>(entry: Request.Entry<A>): SqlClient.TransactionConnection.Service | undefined {
437
+ function transactionKey<A>(entry: Request.Entry<A>): object | undefined {
438
+ // The transaction of the request's `SqlClient`, and the innermost transaction
439
+ // started with `SqlClient.makeWithTransaction` by any client.
433
440
  const client = Context.getOrUndefined(entry.context, SqlClient.SqlClient)
434
- if (!client) return undefined
435
- const conn = Context.getOrUndefined(entry.context, client.transactionService)
436
- if (!conn) return undefined
437
- return Equal.byReferenceUnsafe(conn)
441
+ const clientTransaction = client && Context.getOrUndefined(entry.context, client.transactionService)
442
+ const currentService = Context.get(entry.context, CurrentTransactionService)
443
+ const currentTransaction = currentService && Context.getOrUndefined(entry.context, currentService)
444
+ if (clientTransaction === undefined || clientTransaction === currentTransaction) {
445
+ return currentTransaction && Equal.byReferenceUnsafe(currentTransaction)
446
+ }
447
+ if (currentTransaction === undefined) {
448
+ return Equal.byReferenceUnsafe(clientTransaction)
449
+ }
450
+ // Two different transactions are active, so neither identifies the request on its own.
451
+ return [Equal.byReferenceUnsafe(clientTransaction), Equal.byReferenceUnsafe(currentTransaction)]
438
452
  }
@@ -519,6 +519,9 @@ export interface Constructor {
519
519
  * **Gotchas**
520
520
  *
521
521
  * Not supported in sqlite.
522
+ *
523
+ * The alias is escaped as an identifier and is not passed through name
524
+ * transforms.
522
525
  */
523
526
  readonly updateValues: (
524
527
  value: ReadonlyArray<Record<string, unknown>>,
@@ -838,6 +841,10 @@ export type CompilerOptions<C extends Custom<any, any, any, any> = any> = {
838
841
  readonly dialect: Dialect
839
842
  readonly placeholder: (index: number, value: unknown) => string
840
843
  readonly onIdentifier: (value: string, withoutTransform: boolean) => string
844
+ /**
845
+ * Renders `updateValues`. The `alias` is already escaped with
846
+ * `onIdentifier(alias, true)` and must be inserted as is.
847
+ */
841
848
  readonly onRecordUpdate: (
842
849
  placeholders: string,
843
850
  alias: string,
@@ -945,6 +952,19 @@ const CompilerProto = {
945
952
  }
946
953
 
947
954
  case "ArrayHelper": {
955
+ if (segment.value.length === 0) {
956
+ const inKeyword = emptyInKeyword.exec(sql)
957
+ if (inKeyword === null || isInLineComment(sql, inKeyword.index)) {
958
+ sql += "()"
959
+ } else if (this.dialect === "pg") {
960
+ // an empty subquery is typed as text in postgres, so compare with an
961
+ // empty array, which takes the type of the left operand instead
962
+ sql = sql.slice(0, inKeyword.index) + (inKeyword[1] ? "<> ALL('{}')" : "= ANY('{}')")
963
+ } else {
964
+ sql += "(SELECT NULL WHERE 1=0)"
965
+ }
966
+ break
967
+ }
948
968
  sql += `(${placeholders(segment.value)})`
949
969
  binds.push.apply(binds, segment.value as any)
950
970
  break
@@ -1088,7 +1108,7 @@ const CompilerProto = {
1088
1108
  }
1089
1109
  const [s, b] = opts.onRecordUpdate(
1090
1110
  placeholders,
1091
- segment.alias,
1111
+ opts.onIdentifier(segment.alias, true),
1092
1112
  generateColumns(keys, opts.onIdentifier, withoutTransform),
1093
1113
  values,
1094
1114
  typeof segment.returningIdentifier === "string"
@@ -1222,7 +1242,7 @@ export const defaultTransforms = (
1222
1242
  ) => {
1223
1243
  const transformValue = (value: any) => {
1224
1244
  if (Array.isArray(value)) {
1225
- if (value.length === 0 || value[0].constructor !== Object) {
1245
+ if (value.length === 0 || value[0]?.constructor !== Object) {
1226
1246
  return value
1227
1247
  }
1228
1248
  return array(value)
@@ -1248,6 +1268,8 @@ export const defaultTransforms = (
1248
1268
  const row = rows[i]
1249
1269
  if (Array.isArray(row)) {
1250
1270
  newRows[i] = transformArrayNested(row) as any
1271
+ } else if (row === null || typeof row !== "object") {
1272
+ newRows[i] = row
1251
1273
  } else {
1252
1274
  const obj: any = {}
1253
1275
  for (const [key, value] of Object.entries(row)) {
@@ -1267,6 +1289,8 @@ export const defaultTransforms = (
1267
1289
  const row = rows[i]
1268
1290
  if (Array.isArray(row)) {
1269
1291
  newRows[i] = transformArray(row) as any
1292
+ } else if (row === null || typeof row !== "object") {
1293
+ newRows[i] = row
1270
1294
  } else {
1271
1295
  const obj: any = {}
1272
1296
  for (const [key, value] of Object.entries(row)) {
@@ -1686,3 +1710,7 @@ function in_(): Fragment | ArrayHelper {
1686
1710
  }
1687
1711
 
1688
1712
  const neverFragment = fragment([literal("1=0")])
1713
+
1714
+ const emptyInKeyword = /\b(NOT\s+)?IN\s*$/i
1715
+
1716
+ const isInLineComment = (sql: string, index: number) => sql.lastIndexOf("--", index) > sql.lastIndexOf("\n", index)
@@ -347,6 +347,7 @@ const recordHeld = Effect.fnUntraced(function*<A, E, R>(
347
347
  ): Effect.fn.Return<A, E, R | WorkflowEngine | WorkflowInstance> {
348
348
  const engine = yield* EngineTag
349
349
  const instance = yield* InstanceTag
350
+ let parked: Cause.Cause<unknown> | undefined
350
351
  const exit = yield* Workflow.wrapActivityResult(
351
352
  Effect.gen(function*() {
352
353
  if (checkCache) {
@@ -374,11 +375,13 @@ const recordHeld = Effect.fnUntraced(function*<A, E, R>(
374
375
  Effect.forkChild({ startImmediately: true })
375
376
  )
376
377
  return yield* Effect.onInterrupt(Fiber.await(fiber), () => Fiber.interrupt(fiber)).pipe(
377
- Effect.map((exit) =>
378
- local.suspended && Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)
379
- ? Option.none()
380
- : Option.some(exit)
381
- ),
378
+ Effect.map((exit) => {
379
+ if (local.suspended && Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
380
+ parked = exit.cause
381
+ return Option.none()
382
+ }
383
+ return Option.some(exit)
384
+ }),
382
385
  // The waits are over once the body has a result. Otherwise every branch
383
386
  // parked, or an enclosing race interrupted the body, and the waits move
384
387
  // to the enclosing owner, if any, to be released when that race settles.
@@ -398,11 +401,25 @@ const recordHeld = Effect.fnUntraced(function*<A, E, R>(
398
401
  Option.isNone
399
402
  )
400
403
  if (Option.isNone(exit)) {
401
- return yield* Workflow.suspend(instance)
404
+ return yield* suspendWith(instance, parked!)
402
405
  }
403
406
  return yield* exit.value
404
407
  })
405
408
 
409
+ /**
410
+ * Suspends like `Workflow.suspend`, keeping the annotations of the interrupts
411
+ * that stopped the branches. A branch can stop on an engine interrupt, such as
412
+ * a runner shutdown abandoning an activity, rather than on a durable wait. The
413
+ * engine must still see that interrupt to replay the run instead of storing it
414
+ * as suspended.
415
+ */
416
+ const suspendWith = (instance: WorkflowInstance["Service"], cause: Cause.Cause<unknown>): Effect.Effect<never> =>
417
+ Effect.interruptible(Effect.callback<never>(() => {
418
+ instance.suspended = true
419
+ const fiber = Fiber.getCurrent()!
420
+ fiber.interruptUnsafe(fiber.id, Context.omit(Cause.StackTrace)(Cause.annotations(cause)))
421
+ }))
422
+
406
423
  /**
407
424
  * Runs effects as a durable race, returning a previously persisted result when
408
425
  * present or completing a named deferred with the first result.