effect 4.0.0-beta.4 → 4.0.0-beta.41

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 (1235) hide show
  1. package/dist/Array.d.ts +213 -385
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +149 -102
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +82 -45
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +87 -38
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +39 -32
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +32 -29
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Brand.d.ts +1 -1
  14. package/dist/Brand.d.ts.map +1 -1
  15. package/dist/Brand.js +1 -1
  16. package/dist/Brand.js.map +1 -1
  17. package/dist/Cache.d.ts +2 -2
  18. package/dist/Cache.d.ts.map +1 -1
  19. package/dist/Cache.js +6 -5
  20. package/dist/Cache.js.map +1 -1
  21. package/dist/Cause.d.ts +33 -2
  22. package/dist/Cause.d.ts.map +1 -1
  23. package/dist/Cause.js +19 -0
  24. package/dist/Cause.js.map +1 -1
  25. package/dist/Channel.d.ts +130 -35
  26. package/dist/Channel.d.ts.map +1 -1
  27. package/dist/Channel.js +96 -45
  28. package/dist/Channel.js.map +1 -1
  29. package/dist/Chunk.d.ts +112 -304
  30. package/dist/Chunk.d.ts.map +1 -1
  31. package/dist/Chunk.js +56 -88
  32. package/dist/Chunk.js.map +1 -1
  33. package/dist/Combiner.d.ts +280 -13
  34. package/dist/Combiner.d.ts.map +1 -1
  35. package/dist/Combiner.js +198 -7
  36. package/dist/Combiner.js.map +1 -1
  37. package/dist/Config.d.ts +169 -9
  38. package/dist/Config.d.ts.map +1 -1
  39. package/dist/Config.js +69 -11
  40. package/dist/Config.js.map +1 -1
  41. package/dist/ConfigProvider.d.ts +1 -1
  42. package/dist/Cron.d.ts +11 -7
  43. package/dist/Cron.d.ts.map +1 -1
  44. package/dist/Cron.js +120 -63
  45. package/dist/Cron.js.map +1 -1
  46. package/dist/Data.d.ts +535 -366
  47. package/dist/Data.d.ts.map +1 -1
  48. package/dist/Data.js +132 -79
  49. package/dist/Data.js.map +1 -1
  50. package/dist/DateTime.d.ts +72 -253
  51. package/dist/DateTime.d.ts.map +1 -1
  52. package/dist/DateTime.js +15 -60
  53. package/dist/DateTime.js.map +1 -1
  54. package/dist/Deferred.d.ts +7 -5
  55. package/dist/Deferred.d.ts.map +1 -1
  56. package/dist/Deferred.js +7 -5
  57. package/dist/Deferred.js.map +1 -1
  58. package/dist/Duration.d.ts +62 -32
  59. package/dist/Duration.d.ts.map +1 -1
  60. package/dist/Duration.js +108 -78
  61. package/dist/Duration.js.map +1 -1
  62. package/dist/Effect.d.ts +1225 -951
  63. package/dist/Effect.d.ts.map +1 -1
  64. package/dist/Effect.js +398 -338
  65. package/dist/Effect.js.map +1 -1
  66. package/dist/Encoding.d.ts +194 -0
  67. package/dist/Encoding.d.ts.map +1 -0
  68. package/dist/Encoding.js +352 -0
  69. package/dist/Encoding.js.map +1 -0
  70. package/dist/Equal.d.ts +276 -109
  71. package/dist/Equal.d.ts.map +1 -1
  72. package/dist/Equal.js +124 -48
  73. package/dist/Equal.js.map +1 -1
  74. package/dist/Equivalence.d.ts +60 -3
  75. package/dist/Equivalence.d.ts.map +1 -1
  76. package/dist/Equivalence.js +70 -13
  77. package/dist/Equivalence.js.map +1 -1
  78. package/dist/ErrorReporter.d.ts +374 -0
  79. package/dist/ErrorReporter.d.ts.map +1 -0
  80. package/dist/ErrorReporter.js +245 -0
  81. package/dist/ErrorReporter.js.map +1 -0
  82. package/dist/Exit.d.ts +24 -12
  83. package/dist/Exit.d.ts.map +1 -1
  84. package/dist/Exit.js +8 -4
  85. package/dist/Exit.js.map +1 -1
  86. package/dist/Fiber.d.ts +5 -3
  87. package/dist/Fiber.d.ts.map +1 -1
  88. package/dist/Fiber.js.map +1 -1
  89. package/dist/FiberHandle.d.ts +9 -8
  90. package/dist/FiberHandle.d.ts.map +1 -1
  91. package/dist/FiberHandle.js +8 -7
  92. package/dist/FiberHandle.js.map +1 -1
  93. package/dist/FiberMap.d.ts +20 -19
  94. package/dist/FiberMap.d.ts.map +1 -1
  95. package/dist/FiberMap.js +6 -6
  96. package/dist/FiberMap.js.map +1 -1
  97. package/dist/FileSystem.d.ts +18 -17
  98. package/dist/FileSystem.d.ts.map +1 -1
  99. package/dist/FileSystem.js +17 -13
  100. package/dist/FileSystem.js.map +1 -1
  101. package/dist/Filter.d.ts +34 -38
  102. package/dist/Filter.d.ts.map +1 -1
  103. package/dist/Filter.js +15 -13
  104. package/dist/Filter.js.map +1 -1
  105. package/dist/Formatter.d.ts +131 -47
  106. package/dist/Formatter.d.ts.map +1 -1
  107. package/dist/Formatter.js +229 -51
  108. package/dist/Formatter.js.map +1 -1
  109. package/dist/Function.d.ts +1 -9
  110. package/dist/Function.d.ts.map +1 -1
  111. package/dist/Function.js +2 -10
  112. package/dist/Function.js.map +1 -1
  113. package/dist/Graph.d.ts +65 -65
  114. package/dist/Graph.d.ts.map +1 -1
  115. package/dist/Graph.js +60 -62
  116. package/dist/Graph.js.map +1 -1
  117. package/dist/HashMap.d.ts +26 -19
  118. package/dist/HashMap.d.ts.map +1 -1
  119. package/dist/HashMap.js +7 -5
  120. package/dist/HashMap.js.map +1 -1
  121. package/dist/Iterable.d.ts +50 -50
  122. package/dist/Iterable.d.ts.map +1 -1
  123. package/dist/Iterable.js +106 -34
  124. package/dist/Iterable.js.map +1 -1
  125. package/dist/JsonSchema.d.ts +299 -10
  126. package/dist/JsonSchema.d.ts.map +1 -1
  127. package/dist/JsonSchema.js +323 -4
  128. package/dist/JsonSchema.js.map +1 -1
  129. package/dist/Latch.d.ts +175 -0
  130. package/dist/Latch.d.ts.map +1 -0
  131. package/dist/Latch.js +130 -0
  132. package/dist/Latch.js.map +1 -0
  133. package/dist/Layer.d.ts +306 -129
  134. package/dist/Layer.d.ts.map +1 -1
  135. package/dist/Layer.js +93 -48
  136. package/dist/Layer.js.map +1 -1
  137. package/dist/LayerMap.d.ts +9 -8
  138. package/dist/LayerMap.d.ts.map +1 -1
  139. package/dist/LayerMap.js +3 -3
  140. package/dist/LayerMap.js.map +1 -1
  141. package/dist/LogLevel.d.ts +32 -0
  142. package/dist/LogLevel.d.ts.map +1 -1
  143. package/dist/LogLevel.js +28 -100
  144. package/dist/LogLevel.js.map +1 -1
  145. package/dist/Logger.d.ts +29 -95
  146. package/dist/Logger.d.ts.map +1 -1
  147. package/dist/Logger.js +2 -3
  148. package/dist/Logger.js.map +1 -1
  149. package/dist/ManagedRuntime.d.ts +2 -2
  150. package/dist/ManagedRuntime.d.ts.map +1 -1
  151. package/dist/ManagedRuntime.js +21 -9
  152. package/dist/ManagedRuntime.js.map +1 -1
  153. package/dist/Metric.d.ts +4 -6
  154. package/dist/Metric.d.ts.map +1 -1
  155. package/dist/Metric.js +3 -5
  156. package/dist/Metric.js.map +1 -1
  157. package/dist/MutableHashMap.d.ts +7 -0
  158. package/dist/MutableHashMap.d.ts.map +1 -1
  159. package/dist/MutableHashMap.js +8 -0
  160. package/dist/MutableHashMap.js.map +1 -1
  161. package/dist/MutableHashSet.d.ts +7 -0
  162. package/dist/MutableHashSet.d.ts.map +1 -1
  163. package/dist/MutableHashSet.js +8 -0
  164. package/dist/MutableHashSet.js.map +1 -1
  165. package/dist/Newtype.d.ts +291 -0
  166. package/dist/Newtype.d.ts.map +1 -0
  167. package/dist/Newtype.js +161 -0
  168. package/dist/Newtype.js.map +1 -0
  169. package/dist/Number.d.ts +74 -18
  170. package/dist/Number.d.ts.map +1 -1
  171. package/dist/Number.js +34 -15
  172. package/dist/Number.js.map +1 -1
  173. package/dist/Optic.d.ts +947 -18
  174. package/dist/Optic.d.ts.map +1 -1
  175. package/dist/Optic.js +454 -5
  176. package/dist/Optic.js.map +1 -1
  177. package/dist/Option.d.ts +25 -16
  178. package/dist/Option.d.ts.map +1 -1
  179. package/dist/Option.js +15 -9
  180. package/dist/Option.js.map +1 -1
  181. package/dist/Order.d.ts +6 -1
  182. package/dist/Order.d.ts.map +1 -1
  183. package/dist/Order.js +19 -14
  184. package/dist/Order.js.map +1 -1
  185. package/dist/PartitionedSemaphore.d.ts +146 -15
  186. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  187. package/dist/PartitionedSemaphore.js +174 -61
  188. package/dist/PartitionedSemaphore.js.map +1 -1
  189. package/dist/Pipeable.d.ts +17 -0
  190. package/dist/Pipeable.d.ts.map +1 -1
  191. package/dist/Pipeable.js +19 -1
  192. package/dist/Pipeable.js.map +1 -1
  193. package/dist/PlatformError.d.ts +10 -9
  194. package/dist/PlatformError.d.ts.map +1 -1
  195. package/dist/PlatformError.js +2 -2
  196. package/dist/PlatformError.js.map +1 -1
  197. package/dist/Pool.d.ts +6 -4
  198. package/dist/Pool.d.ts.map +1 -1
  199. package/dist/Pool.js +7 -5
  200. package/dist/Pool.js.map +1 -1
  201. package/dist/PubSub.d.ts +8 -6
  202. package/dist/PubSub.d.ts.map +1 -1
  203. package/dist/PubSub.js +18 -10
  204. package/dist/PubSub.js.map +1 -1
  205. package/dist/Pull.d.ts.map +1 -1
  206. package/dist/Pull.js +1 -1
  207. package/dist/Pull.js.map +1 -1
  208. package/dist/Queue.d.ts +9 -6
  209. package/dist/Queue.d.ts.map +1 -1
  210. package/dist/Queue.js +7 -5
  211. package/dist/Queue.js.map +1 -1
  212. package/dist/Random.d.ts +35 -1
  213. package/dist/Random.d.ts.map +1 -1
  214. package/dist/Random.js +46 -12
  215. package/dist/Random.js.map +1 -1
  216. package/dist/RcMap.d.ts +2 -2
  217. package/dist/RcMap.d.ts.map +1 -1
  218. package/dist/RcMap.js +1 -1
  219. package/dist/RcMap.js.map +1 -1
  220. package/dist/RcRef.d.ts +1 -1
  221. package/dist/RcRef.d.ts.map +1 -1
  222. package/dist/Record.d.ts +63 -160
  223. package/dist/Record.d.ts.map +1 -1
  224. package/dist/Record.js +37 -56
  225. package/dist/Record.js.map +1 -1
  226. package/dist/Reducer.d.ts +166 -7
  227. package/dist/Reducer.d.ts.map +1 -1
  228. package/dist/Reducer.js +135 -1
  229. package/dist/Reducer.js.map +1 -1
  230. package/dist/References.d.ts +242 -226
  231. package/dist/References.d.ts.map +1 -1
  232. package/dist/References.js +240 -247
  233. package/dist/References.js.map +1 -1
  234. package/dist/Request.d.ts +1 -1
  235. package/dist/Request.d.ts.map +1 -1
  236. package/dist/Request.js +2 -1
  237. package/dist/Request.js.map +1 -1
  238. package/dist/RequestResolver.d.ts +25 -45
  239. package/dist/RequestResolver.d.ts.map +1 -1
  240. package/dist/RequestResolver.js +10 -30
  241. package/dist/RequestResolver.js.map +1 -1
  242. package/dist/Resource.d.ts.map +1 -1
  243. package/dist/Resource.js +2 -1
  244. package/dist/Resource.js.map +1 -1
  245. package/dist/Result.d.ts +1 -1
  246. package/dist/Result.d.ts.map +1 -1
  247. package/dist/Result.js +1 -2
  248. package/dist/Result.js.map +1 -1
  249. package/dist/Runtime.d.ts +66 -0
  250. package/dist/Runtime.d.ts.map +1 -1
  251. package/dist/Runtime.js +79 -6
  252. package/dist/Runtime.js.map +1 -1
  253. package/dist/Schedule.d.ts +174 -291
  254. package/dist/Schedule.d.ts.map +1 -1
  255. package/dist/Schedule.js +160 -134
  256. package/dist/Schedule.js.map +1 -1
  257. package/dist/Scheduler.d.ts +34 -123
  258. package/dist/Scheduler.d.ts.map +1 -1
  259. package/dist/Scheduler.js +31 -123
  260. package/dist/Scheduler.js.map +1 -1
  261. package/dist/Schema.d.ts +2722 -247
  262. package/dist/Schema.d.ts.map +1 -1
  263. package/dist/Schema.js +1947 -224
  264. package/dist/Schema.js.map +1 -1
  265. package/dist/SchemaAST.d.ts +7 -2
  266. package/dist/SchemaAST.d.ts.map +1 -1
  267. package/dist/SchemaAST.js +131 -25
  268. package/dist/SchemaAST.js.map +1 -1
  269. package/dist/SchemaGetter.d.ts +5 -5
  270. package/dist/SchemaGetter.d.ts.map +1 -1
  271. package/dist/SchemaGetter.js +18 -18
  272. package/dist/SchemaGetter.js.map +1 -1
  273. package/dist/SchemaParser.d.ts +44 -54
  274. package/dist/SchemaParser.d.ts.map +1 -1
  275. package/dist/SchemaParser.js +55 -2
  276. package/dist/SchemaParser.js.map +1 -1
  277. package/dist/SchemaRepresentation.d.ts +46 -45
  278. package/dist/SchemaRepresentation.d.ts.map +1 -1
  279. package/dist/SchemaRepresentation.js +49 -24
  280. package/dist/SchemaRepresentation.js.map +1 -1
  281. package/dist/SchemaTransformation.d.ts +107 -3
  282. package/dist/SchemaTransformation.d.ts.map +1 -1
  283. package/dist/SchemaTransformation.js +173 -13
  284. package/dist/SchemaTransformation.js.map +1 -1
  285. package/dist/ScopedCache.d.ts +2 -2
  286. package/dist/ScopedCache.d.ts.map +1 -1
  287. package/dist/ScopedCache.js +1 -1
  288. package/dist/ScopedCache.js.map +1 -1
  289. package/dist/Semaphore.d.ts +307 -0
  290. package/dist/Semaphore.d.ts.map +1 -0
  291. package/dist/Semaphore.js +222 -0
  292. package/dist/Semaphore.js.map +1 -0
  293. package/dist/ServiceMap.d.ts +76 -52
  294. package/dist/ServiceMap.d.ts.map +1 -1
  295. package/dist/ServiceMap.js +45 -29
  296. package/dist/ServiceMap.js.map +1 -1
  297. package/dist/Sink.d.ts +18 -15
  298. package/dist/Sink.d.ts.map +1 -1
  299. package/dist/Sink.js +53 -6
  300. package/dist/Sink.js.map +1 -1
  301. package/dist/Stdio.d.ts +16 -4
  302. package/dist/Stdio.d.ts.map +1 -1
  303. package/dist/Stdio.js +18 -0
  304. package/dist/Stdio.js.map +1 -1
  305. package/dist/Stream.d.ts +284 -431
  306. package/dist/Stream.d.ts.map +1 -1
  307. package/dist/Stream.js +189 -88
  308. package/dist/Stream.js.map +1 -1
  309. package/dist/String.d.ts +114 -47
  310. package/dist/String.d.ts.map +1 -1
  311. package/dist/String.js +29 -47
  312. package/dist/String.js.map +1 -1
  313. package/dist/Struct.d.ts +23 -7
  314. package/dist/Struct.d.ts.map +1 -1
  315. package/dist/Struct.js +22 -0
  316. package/dist/Struct.js.map +1 -1
  317. package/dist/SubscriptionRef.d.ts +3 -3
  318. package/dist/SubscriptionRef.d.ts.map +1 -1
  319. package/dist/SubscriptionRef.js +85 -117
  320. package/dist/SubscriptionRef.js.map +1 -1
  321. package/dist/SynchronizedRef.d.ts +2 -1
  322. package/dist/SynchronizedRef.d.ts.map +1 -1
  323. package/dist/SynchronizedRef.js +2 -1
  324. package/dist/SynchronizedRef.js.map +1 -1
  325. package/dist/Terminal.d.ts +2 -1
  326. package/dist/Terminal.d.ts.map +1 -1
  327. package/dist/Terminal.js.map +1 -1
  328. package/dist/Tracer.d.ts +5 -4
  329. package/dist/Tracer.d.ts.map +1 -1
  330. package/dist/Tracer.js +2 -1
  331. package/dist/Tracer.js.map +1 -1
  332. package/dist/Trie.d.ts +44 -31
  333. package/dist/Trie.d.ts.map +1 -1
  334. package/dist/Trie.js +13 -9
  335. package/dist/Trie.js.map +1 -1
  336. package/dist/TxChunk.d.ts +37 -37
  337. package/dist/TxChunk.d.ts.map +1 -1
  338. package/dist/TxChunk.js +3 -3
  339. package/dist/TxChunk.js.map +1 -1
  340. package/dist/TxDeferred.d.ts +328 -0
  341. package/dist/TxDeferred.d.ts.map +1 -0
  342. package/dist/TxDeferred.js +197 -0
  343. package/dist/TxDeferred.js.map +1 -0
  344. package/dist/TxHashMap.d.ts +159 -140
  345. package/dist/TxHashMap.d.ts.map +1 -1
  346. package/dist/TxHashMap.js +51 -44
  347. package/dist/TxHashMap.js.map +1 -1
  348. package/dist/TxHashSet.d.ts +36 -36
  349. package/dist/TxHashSet.d.ts.map +1 -1
  350. package/dist/TxHashSet.js +16 -15
  351. package/dist/TxHashSet.js.map +1 -1
  352. package/dist/TxPriorityQueue.d.ts +609 -0
  353. package/dist/TxPriorityQueue.d.ts.map +1 -0
  354. package/dist/TxPriorityQueue.js +416 -0
  355. package/dist/TxPriorityQueue.js.map +1 -0
  356. package/dist/TxPubSub.d.ts +585 -0
  357. package/dist/TxPubSub.d.ts.map +1 -0
  358. package/dist/TxPubSub.js +521 -0
  359. package/dist/TxPubSub.js.map +1 -0
  360. package/dist/TxQueue.d.ts +32 -32
  361. package/dist/TxQueue.d.ts.map +1 -1
  362. package/dist/TxQueue.js +26 -26
  363. package/dist/TxQueue.js.map +1 -1
  364. package/dist/TxReentrantLock.d.ts +523 -0
  365. package/dist/TxReentrantLock.d.ts.map +1 -0
  366. package/dist/TxReentrantLock.js +504 -0
  367. package/dist/TxReentrantLock.js.map +1 -0
  368. package/dist/TxRef.d.ts +34 -34
  369. package/dist/TxRef.d.ts.map +1 -1
  370. package/dist/TxRef.js +21 -14
  371. package/dist/TxRef.js.map +1 -1
  372. package/dist/TxSemaphore.d.ts +170 -10
  373. package/dist/TxSemaphore.d.ts.map +1 -1
  374. package/dist/TxSemaphore.js +23 -8
  375. package/dist/TxSemaphore.js.map +1 -1
  376. package/dist/TxSubscriptionRef.d.ts +508 -0
  377. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  378. package/dist/TxSubscriptionRef.js +293 -0
  379. package/dist/TxSubscriptionRef.js.map +1 -0
  380. package/dist/Types.d.ts +80 -23
  381. package/dist/Types.d.ts.map +1 -1
  382. package/dist/Utils.d.ts +137 -65
  383. package/dist/Utils.d.ts.map +1 -1
  384. package/dist/Utils.js +38 -66
  385. package/dist/Utils.js.map +1 -1
  386. package/dist/index.d.ts +806 -55
  387. package/dist/index.d.ts.map +1 -1
  388. package/dist/index.js +806 -55
  389. package/dist/index.js.map +1 -1
  390. package/dist/internal/core.js +11 -3
  391. package/dist/internal/core.js.map +1 -1
  392. package/dist/internal/dateTime.js +77 -71
  393. package/dist/internal/dateTime.js.map +1 -1
  394. package/dist/internal/effect.js +284 -201
  395. package/dist/internal/effect.js.map +1 -1
  396. package/dist/internal/hashMap.js +7 -5
  397. package/dist/internal/hashMap.js.map +1 -1
  398. package/dist/internal/option.js +6 -0
  399. package/dist/internal/option.js.map +1 -1
  400. package/dist/internal/random.d.ts +2 -0
  401. package/dist/internal/random.d.ts.map +1 -0
  402. package/dist/internal/random.js +13 -0
  403. package/dist/internal/random.js.map +1 -0
  404. package/dist/internal/rcRef.js +3 -2
  405. package/dist/internal/rcRef.js.map +1 -1
  406. package/dist/internal/references.d.ts +2 -0
  407. package/dist/internal/references.d.ts.map +1 -0
  408. package/dist/internal/references.js +51 -0
  409. package/dist/internal/references.js.map +1 -0
  410. package/dist/internal/request.js +2 -2
  411. package/dist/internal/request.js.map +1 -1
  412. package/dist/internal/schema/annotations.js +2 -0
  413. package/dist/internal/schema/annotations.js.map +1 -1
  414. package/dist/internal/schema/representation.js +75 -106
  415. package/dist/internal/schema/representation.js.map +1 -1
  416. package/dist/internal/schema/schema.js +1 -0
  417. package/dist/internal/schema/schema.js.map +1 -1
  418. package/dist/internal/schema/to-codec.js +7 -10
  419. package/dist/internal/schema/to-codec.js.map +1 -1
  420. package/dist/internal/trie.js +8 -7
  421. package/dist/internal/trie.js.map +1 -1
  422. package/dist/testing/TestClock.d.ts +8 -7
  423. package/dist/testing/TestClock.d.ts.map +1 -1
  424. package/dist/testing/TestClock.js +6 -4
  425. package/dist/testing/TestClock.js.map +1 -1
  426. package/dist/testing/TestSchema.d.ts +266 -32
  427. package/dist/testing/TestSchema.d.ts.map +1 -1
  428. package/dist/testing/TestSchema.js +296 -23
  429. package/dist/testing/TestSchema.js.map +1 -1
  430. package/dist/testing/index.d.ts +64 -1
  431. package/dist/testing/index.d.ts.map +1 -1
  432. package/dist/testing/index.js +64 -1
  433. package/dist/testing/index.js.map +1 -1
  434. package/dist/unstable/ai/AiError.d.ts +136 -54
  435. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  436. package/dist/unstable/ai/AiError.js +28 -23
  437. package/dist/unstable/ai/AiError.js.map +1 -1
  438. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  439. package/dist/unstable/ai/AnthropicStructuredOutput.js +4 -0
  440. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  441. package/dist/unstable/ai/Chat.d.ts +35 -7
  442. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  443. package/dist/unstable/ai/Chat.js +38 -44
  444. package/dist/unstable/ai/Chat.js.map +1 -1
  445. package/dist/unstable/ai/EmbeddingModel.d.ts +130 -0
  446. package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -0
  447. package/dist/unstable/ai/EmbeddingModel.js +127 -0
  448. package/dist/unstable/ai/EmbeddingModel.js.map +1 -0
  449. package/dist/unstable/ai/LanguageModel.d.ts +117 -47
  450. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  451. package/dist/unstable/ai/LanguageModel.js +258 -59
  452. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  453. package/dist/unstable/ai/McpSchema.d.ts +183 -88
  454. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  455. package/dist/unstable/ai/McpSchema.js +57 -12
  456. package/dist/unstable/ai/McpSchema.js.map +1 -1
  457. package/dist/unstable/ai/McpServer.d.ts +66 -13
  458. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  459. package/dist/unstable/ai/McpServer.js +193 -51
  460. package/dist/unstable/ai/McpServer.js.map +1 -1
  461. package/dist/unstable/ai/Model.d.ts +25 -7
  462. package/dist/unstable/ai/Model.d.ts.map +1 -1
  463. package/dist/unstable/ai/Model.js +22 -6
  464. package/dist/unstable/ai/Model.js.map +1 -1
  465. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  466. package/dist/unstable/ai/OpenAiStructuredOutput.js +4 -0
  467. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  468. package/dist/unstable/ai/Prompt.d.ts +20 -20
  469. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  470. package/dist/unstable/ai/Response.d.ts +26 -26
  471. package/dist/unstable/ai/Response.d.ts.map +1 -1
  472. package/dist/unstable/ai/Response.js +1 -1
  473. package/dist/unstable/ai/Response.js.map +1 -1
  474. package/dist/unstable/ai/ResponseIdTracker.d.ts +38 -0
  475. package/dist/unstable/ai/ResponseIdTracker.d.ts.map +1 -0
  476. package/dist/unstable/ai/ResponseIdTracker.js +68 -0
  477. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -0
  478. package/dist/unstable/ai/Tool.d.ts +34 -4
  479. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  480. package/dist/unstable/ai/Tool.js +28 -10
  481. package/dist/unstable/ai/Tool.js.map +1 -1
  482. package/dist/unstable/ai/Toolkit.d.ts +1 -1
  483. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  484. package/dist/unstable/ai/Toolkit.js +4 -11
  485. package/dist/unstable/ai/Toolkit.js.map +1 -1
  486. package/dist/unstable/ai/index.d.ts +22 -1
  487. package/dist/unstable/ai/index.d.ts.map +1 -1
  488. package/dist/unstable/ai/index.js +22 -1
  489. package/dist/unstable/ai/index.js.map +1 -1
  490. package/dist/unstable/ai/internal/codec-transformer.js +0 -5
  491. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  492. package/dist/unstable/cli/Argument.d.ts +2 -4
  493. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  494. package/dist/unstable/cli/Argument.js +1 -3
  495. package/dist/unstable/cli/Argument.js.map +1 -1
  496. package/dist/unstable/cli/CliError.d.ts +27 -60
  497. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  498. package/dist/unstable/cli/CliError.js +25 -57
  499. package/dist/unstable/cli/CliError.js.map +1 -1
  500. package/dist/unstable/cli/CliOutput.d.ts +3 -2
  501. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  502. package/dist/unstable/cli/CliOutput.js +65 -10
  503. package/dist/unstable/cli/CliOutput.js.map +1 -1
  504. package/dist/unstable/cli/Command.d.ts +371 -58
  505. package/dist/unstable/cli/Command.d.ts.map +1 -1
  506. package/dist/unstable/cli/Command.js +328 -67
  507. package/dist/unstable/cli/Command.js.map +1 -1
  508. package/dist/unstable/cli/Completions.d.ts +16 -0
  509. package/dist/unstable/cli/Completions.d.ts.map +1 -0
  510. package/dist/unstable/cli/Completions.js +23 -0
  511. package/dist/unstable/cli/Completions.js.map +1 -0
  512. package/dist/unstable/cli/Flag.d.ts +2 -2
  513. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  514. package/dist/unstable/cli/Flag.js +1 -1
  515. package/dist/unstable/cli/Flag.js.map +1 -1
  516. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  517. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  518. package/dist/unstable/cli/GlobalFlag.js +118 -0
  519. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  520. package/dist/unstable/cli/HelpDoc.d.ts +81 -11
  521. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  522. package/dist/unstable/cli/Param.d.ts +4 -4
  523. package/dist/unstable/cli/Param.d.ts.map +1 -1
  524. package/dist/unstable/cli/Param.js +7 -7
  525. package/dist/unstable/cli/Param.js.map +1 -1
  526. package/dist/unstable/cli/Primitive.d.ts +2 -2
  527. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  528. package/dist/unstable/cli/Primitive.js +1 -1
  529. package/dist/unstable/cli/Primitive.js.map +1 -1
  530. package/dist/unstable/cli/Prompt.js +259 -85
  531. package/dist/unstable/cli/Prompt.js.map +1 -1
  532. package/dist/unstable/cli/index.d.ts +8 -0
  533. package/dist/unstable/cli/index.d.ts.map +1 -1
  534. package/dist/unstable/cli/index.js +8 -0
  535. package/dist/unstable/cli/index.js.map +1 -1
  536. package/dist/unstable/cli/internal/command.d.ts +40 -14
  537. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  538. package/dist/unstable/cli/internal/command.js +72 -46
  539. package/dist/unstable/cli/internal/command.js.map +1 -1
  540. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +16 -4
  541. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  542. package/dist/unstable/cli/internal/config.js +42 -0
  543. package/dist/unstable/cli/internal/config.js.map +1 -1
  544. package/dist/unstable/cli/internal/help.d.ts +33 -0
  545. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  546. package/dist/unstable/cli/internal/help.js +125 -0
  547. package/dist/unstable/cli/internal/help.js.map +1 -0
  548. package/dist/unstable/cli/internal/parser.js +61 -43
  549. package/dist/unstable/cli/internal/parser.js.map +1 -1
  550. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  551. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  552. package/dist/unstable/cluster/ClusterCron.js +1 -1
  553. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  554. package/dist/unstable/cluster/ClusterSchema.d.ts +18 -0
  555. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  556. package/dist/unstable/cluster/ClusterSchema.js +21 -1
  557. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  558. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +3 -2
  559. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  560. package/dist/unstable/cluster/ClusterWorkflowEngine.js +35 -29
  561. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  562. package/dist/unstable/cluster/DeliverAt.js +1 -1
  563. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  564. package/dist/unstable/cluster/Entity.d.ts +10 -8
  565. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  566. package/dist/unstable/cluster/Entity.js +8 -7
  567. package/dist/unstable/cluster/Entity.js.map +1 -1
  568. package/dist/unstable/cluster/EntityAddress.d.ts.map +1 -1
  569. package/dist/unstable/cluster/EntityAddress.js +1 -1
  570. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  571. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  572. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  573. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  574. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  575. package/dist/unstable/cluster/K8sHttpClient.js +4 -4
  576. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  577. package/dist/unstable/cluster/Message.d.ts +18 -15
  578. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  579. package/dist/unstable/cluster/Message.js +15 -7
  580. package/dist/unstable/cluster/Message.js.map +1 -1
  581. package/dist/unstable/cluster/MessageStorage.d.ts +33 -10
  582. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  583. package/dist/unstable/cluster/MessageStorage.js +36 -20
  584. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  585. package/dist/unstable/cluster/Reply.d.ts +8 -7
  586. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  587. package/dist/unstable/cluster/Reply.js +4 -3
  588. package/dist/unstable/cluster/Reply.js.map +1 -1
  589. package/dist/unstable/cluster/Runner.d.ts +1 -1
  590. package/dist/unstable/cluster/Runner.d.ts.map +1 -1
  591. package/dist/unstable/cluster/Runner.js +1 -1
  592. package/dist/unstable/cluster/Runner.js.map +1 -1
  593. package/dist/unstable/cluster/RunnerAddress.d.ts.map +1 -1
  594. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  595. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  596. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  597. package/dist/unstable/cluster/RunnerServer.js +9 -8
  598. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  599. package/dist/unstable/cluster/Runners.d.ts +2 -1
  600. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  601. package/dist/unstable/cluster/Runners.js +11 -9
  602. package/dist/unstable/cluster/Runners.js.map +1 -1
  603. package/dist/unstable/cluster/ShardId.js +3 -3
  604. package/dist/unstable/cluster/ShardId.js.map +1 -1
  605. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  606. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  607. package/dist/unstable/cluster/Sharding.js +51 -39
  608. package/dist/unstable/cluster/Sharding.js.map +1 -1
  609. package/dist/unstable/cluster/ShardingConfig.d.ts +26 -25
  610. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  611. package/dist/unstable/cluster/ShardingConfig.js +24 -24
  612. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  613. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  614. package/dist/unstable/cluster/SqlMessageStorage.js +25 -19
  615. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  616. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  617. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  618. package/dist/unstable/cluster/internal/entityManager.js +24 -18
  619. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  620. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  621. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  622. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  623. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  624. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  625. package/dist/unstable/devtools/DevToolsClient.js +4 -3
  626. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  627. package/dist/unstable/devtools/DevToolsSchema.d.ts +40 -40
  628. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  629. package/dist/unstable/devtools/DevToolsSchema.js +9 -2
  630. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  631. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  632. package/dist/unstable/encoding/Ndjson.d.ts +9 -9
  633. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  634. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  635. package/dist/unstable/encoding/Sse.d.ts +4 -4
  636. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  637. package/dist/unstable/encoding/Sse.js +1 -1
  638. package/dist/unstable/encoding/Sse.js.map +1 -1
  639. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  640. package/dist/unstable/eventlog/EventJournal.js +2 -2
  641. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  642. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  643. package/dist/unstable/eventlog/EventLog.js +3 -2
  644. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  645. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  646. package/dist/unstable/eventlog/SqlEventLogJournal.js +2 -2
  647. package/dist/unstable/eventlog/SqlEventLogJournal.js.map +1 -1
  648. package/dist/unstable/http/Cookies.d.ts +52 -7
  649. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  650. package/dist/unstable/http/Cookies.js +27 -6
  651. package/dist/unstable/http/Cookies.js.map +1 -1
  652. package/dist/unstable/http/Etag.d.ts.map +1 -1
  653. package/dist/unstable/http/Etag.js +5 -1
  654. package/dist/unstable/http/Etag.js.map +1 -1
  655. package/dist/unstable/http/Headers.d.ts +19 -2
  656. package/dist/unstable/http/Headers.d.ts.map +1 -1
  657. package/dist/unstable/http/Headers.js +40 -11
  658. package/dist/unstable/http/Headers.js.map +1 -1
  659. package/dist/unstable/http/HttpBody.d.ts +1 -1
  660. package/dist/unstable/http/HttpClient.d.ts +117 -15
  661. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  662. package/dist/unstable/http/HttpClient.js +191 -13
  663. package/dist/unstable/http/HttpClient.js.map +1 -1
  664. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  665. package/dist/unstable/http/HttpClientRequest.d.ts +43 -15
  666. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  667. package/dist/unstable/http/HttpClientRequest.js +131 -21
  668. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  669. package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
  670. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  671. package/dist/unstable/http/HttpClientResponse.js +6 -1
  672. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  673. package/dist/unstable/http/HttpEffect.d.ts +7 -5
  674. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  675. package/dist/unstable/http/HttpEffect.js +46 -54
  676. package/dist/unstable/http/HttpEffect.js.map +1 -1
  677. package/dist/unstable/http/HttpIncomingMessage.d.ts +3 -2
  678. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  679. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  680. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  681. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  682. package/dist/unstable/http/HttpMethod.js +3 -3
  683. package/dist/unstable/http/HttpMethod.js.map +1 -1
  684. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  685. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  686. package/dist/unstable/http/HttpMiddleware.js +24 -32
  687. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  688. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  689. package/dist/unstable/http/HttpPlatform.js +3 -2
  690. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  691. package/dist/unstable/http/HttpRouter.d.ts +2 -1
  692. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  693. package/dist/unstable/http/HttpRouter.js +7 -7
  694. package/dist/unstable/http/HttpRouter.js.map +1 -1
  695. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  696. package/dist/unstable/http/HttpServer.js +2 -2
  697. package/dist/unstable/http/HttpServer.js.map +1 -1
  698. package/dist/unstable/http/HttpServerError.d.ts +22 -34
  699. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  700. package/dist/unstable/http/HttpServerError.js +39 -45
  701. package/dist/unstable/http/HttpServerError.js.map +1 -1
  702. package/dist/unstable/http/HttpServerRequest.d.ts +15 -3
  703. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  704. package/dist/unstable/http/HttpServerRequest.js +301 -7
  705. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  706. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  707. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  708. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  709. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  710. package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
  711. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  712. package/dist/unstable/http/HttpServerResponse.js +236 -1
  713. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  714. package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
  715. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
  716. package/dist/unstable/http/HttpStaticServer.js +353 -0
  717. package/dist/unstable/http/HttpStaticServer.js.map +1 -0
  718. package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
  719. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  720. package/dist/unstable/http/HttpTraceContext.js +27 -15
  721. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  722. package/dist/unstable/http/Multipart.d.ts +3 -3
  723. package/dist/unstable/http/Url.d.ts +604 -0
  724. package/dist/unstable/http/Url.d.ts.map +1 -0
  725. package/dist/unstable/http/Url.js +256 -0
  726. package/dist/unstable/http/Url.js.map +1 -0
  727. package/dist/unstable/http/UrlParams.d.ts +19 -10
  728. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  729. package/dist/unstable/http/UrlParams.js +6 -7
  730. package/dist/unstable/http/UrlParams.js.map +1 -1
  731. package/dist/unstable/http/index.d.ts +8 -0
  732. package/dist/unstable/http/index.d.ts.map +1 -1
  733. package/dist/unstable/http/index.js +8 -0
  734. package/dist/unstable/http/index.js.map +1 -1
  735. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  736. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  737. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  738. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  739. package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
  740. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  741. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  742. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
  743. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  744. package/dist/unstable/httpapi/HttpApiBuilder.js +40 -27
  745. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  746. package/dist/unstable/httpapi/HttpApiClient.d.ts +83 -7
  747. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  748. package/dist/unstable/httpapi/HttpApiClient.js +78 -10
  749. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  750. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +207 -101
  751. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  752. package/dist/unstable/httpapi/HttpApiEndpoint.js +49 -43
  753. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  754. package/dist/unstable/httpapi/HttpApiError.d.ts +31 -14
  755. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  756. package/dist/unstable/httpapi/HttpApiError.js +125 -32
  757. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  758. package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
  759. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  760. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  761. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +46 -15
  762. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  763. package/dist/unstable/httpapi/HttpApiMiddleware.js +32 -3
  764. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  765. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  766. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  767. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  768. package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -3
  769. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  770. package/dist/unstable/httpapi/HttpApiSchema.js +20 -2
  771. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  772. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  773. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  774. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  775. package/dist/unstable/httpapi/OpenApi.d.ts +1 -0
  776. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  777. package/dist/unstable/httpapi/OpenApi.js +34 -26
  778. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  779. package/dist/unstable/observability/Otlp.d.ts +12 -12
  780. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  781. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  782. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  783. package/dist/unstable/observability/OtlpExporter.js +3 -3
  784. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  785. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  786. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  787. package/dist/unstable/observability/OtlpLogger.js +7 -4
  788. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  789. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  790. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  791. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  792. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  793. package/dist/unstable/observability/OtlpTracer.js +7 -3
  794. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  795. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  796. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  797. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  798. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  799. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  800. package/dist/unstable/persistence/Persistable.js +1 -1
  801. package/dist/unstable/persistence/Persistable.js.map +1 -1
  802. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  803. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  804. package/dist/unstable/persistence/PersistedCache.js +2 -1
  805. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  806. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  807. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  808. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  809. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  810. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  811. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  812. package/dist/unstable/persistence/Persistence.js +2 -2
  813. package/dist/unstable/persistence/Persistence.js.map +1 -1
  814. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  815. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  816. package/dist/unstable/persistence/RateLimiter.js +1 -1
  817. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  818. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  819. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  820. package/dist/unstable/process/ChildProcess.js +1 -65
  821. package/dist/unstable/process/ChildProcess.js.map +1 -1
  822. package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
  823. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  824. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  825. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  826. package/dist/unstable/reactivity/Atom.d.ts +73 -12
  827. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  828. package/dist/unstable/reactivity/Atom.js +108 -25
  829. package/dist/unstable/reactivity/Atom.js.map +1 -1
  830. package/dist/unstable/reactivity/AtomHttpApi.d.ts +17 -15
  831. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  832. package/dist/unstable/reactivity/AtomHttpApi.js +45 -15
  833. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  834. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  835. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  836. package/dist/unstable/reactivity/AtomRegistry.js +54 -11
  837. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  838. package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
  839. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  840. package/dist/unstable/reactivity/AtomRpc.js +47 -21
  841. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  842. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  843. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  844. package/dist/unstable/reactivity/Hydration.js +76 -0
  845. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  846. package/dist/unstable/reactivity/index.d.ts +4 -0
  847. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  848. package/dist/unstable/reactivity/index.js +4 -0
  849. package/dist/unstable/reactivity/index.js.map +1 -1
  850. package/dist/unstable/rpc/Rpc.d.ts +6 -5
  851. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  852. package/dist/unstable/rpc/Rpc.js +4 -3
  853. package/dist/unstable/rpc/Rpc.js.map +1 -1
  854. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  855. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  856. package/dist/unstable/rpc/RpcClient.js +53 -43
  857. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  858. package/dist/unstable/rpc/RpcGroup.d.ts +3 -5
  859. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  860. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  861. package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
  862. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  863. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  864. package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
  865. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  866. package/dist/unstable/rpc/RpcSchema.js +17 -2
  867. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  868. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  869. package/dist/unstable/rpc/RpcSerialization.js +39 -11
  870. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  871. package/dist/unstable/rpc/RpcServer.d.ts +6 -10
  872. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  873. package/dist/unstable/rpc/RpcServer.js +20 -19
  874. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  875. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  876. package/dist/unstable/rpc/Utils.js +3 -2
  877. package/dist/unstable/rpc/Utils.js.map +1 -1
  878. package/dist/unstable/schema/Model.d.ts +22 -1
  879. package/dist/unstable/schema/Model.d.ts.map +1 -1
  880. package/dist/unstable/schema/Model.js +15 -0
  881. package/dist/unstable/schema/Model.js.map +1 -1
  882. package/dist/unstable/schema/VariantSchema.d.ts +6 -6
  883. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  884. package/dist/unstable/schema/VariantSchema.js +6 -6
  885. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  886. package/dist/unstable/socket/Socket.d.ts +6 -5
  887. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  888. package/dist/unstable/socket/Socket.js +12 -9
  889. package/dist/unstable/socket/Socket.js.map +1 -1
  890. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  891. package/dist/unstable/sql/Migrator.d.ts +1 -1
  892. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  893. package/dist/unstable/sql/Migrator.js +2 -2
  894. package/dist/unstable/sql/Migrator.js.map +1 -1
  895. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  896. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  897. package/dist/unstable/sql/SqlClient.js +1 -1
  898. package/dist/unstable/sql/SqlClient.js.map +1 -1
  899. package/dist/unstable/sql/SqlError.d.ts +237 -17
  900. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  901. package/dist/unstable/sql/SqlError.js +260 -4
  902. package/dist/unstable/sql/SqlError.js.map +1 -1
  903. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  904. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  905. package/dist/unstable/sql/SqlModel.js +3 -3
  906. package/dist/unstable/sql/SqlModel.js.map +1 -1
  907. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  908. package/dist/unstable/sql/SqlResolver.js +17 -8
  909. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  910. package/dist/unstable/sql/SqlSchema.d.ts +17 -6
  911. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  912. package/dist/unstable/sql/SqlSchema.js +17 -7
  913. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  914. package/dist/unstable/sql/Statement.js +0 -1
  915. package/dist/unstable/sql/Statement.js.map +1 -1
  916. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  917. package/dist/unstable/workers/Worker.js +2 -1
  918. package/dist/unstable/workers/Worker.js.map +1 -1
  919. package/dist/unstable/workflow/Activity.d.ts +5 -0
  920. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  921. package/dist/unstable/workflow/Activity.js +13 -0
  922. package/dist/unstable/workflow/Activity.js.map +1 -1
  923. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  924. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  925. package/dist/unstable/workflow/DurableClock.js +3 -3
  926. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  927. package/dist/unstable/workflow/DurableDeferred.js +8 -8
  928. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  929. package/dist/unstable/workflow/Workflow.d.ts +5 -4
  930. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  931. package/dist/unstable/workflow/Workflow.js +1 -1
  932. package/dist/unstable/workflow/Workflow.js.map +1 -1
  933. package/dist/unstable/workflow/WorkflowEngine.d.ts +17 -5
  934. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  935. package/dist/unstable/workflow/WorkflowEngine.js +153 -12
  936. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  937. package/package.json +2 -2
  938. package/src/Array.ts +304 -447
  939. package/src/BigDecimal.ts +117 -66
  940. package/src/BigInt.ts +49 -41
  941. package/src/Brand.ts +1 -1
  942. package/src/Cache.ts +9 -8
  943. package/src/Cause.ts +37 -2
  944. package/src/Channel.ts +582 -154
  945. package/src/Chunk.ts +149 -331
  946. package/src/Combiner.ts +280 -13
  947. package/src/Config.ts +195 -25
  948. package/src/Cron.ts +155 -63
  949. package/src/Data.ts +539 -376
  950. package/src/DateTime.ts +75 -256
  951. package/src/Deferred.ts +8 -6
  952. package/src/Duration.ts +122 -66
  953. package/src/Effect.ts +1484 -1157
  954. package/src/Encoding.ts +879 -0
  955. package/src/Equal.ts +278 -111
  956. package/src/Equivalence.ts +114 -52
  957. package/src/ErrorReporter.ts +458 -0
  958. package/src/Exit.ts +24 -12
  959. package/src/Fiber.ts +12 -3
  960. package/src/FiberHandle.ts +10 -9
  961. package/src/FiberMap.ts +22 -22
  962. package/src/FileSystem.ts +34 -31
  963. package/src/Filter.ts +52 -63
  964. package/src/Formatter.ts +253 -51
  965. package/src/Function.ts +2 -10
  966. package/src/Graph.ts +131 -117
  967. package/src/HashMap.ts +26 -19
  968. package/src/Iterable.ts +117 -63
  969. package/src/JsonSchema.ts +383 -10
  970. package/src/Latch.ts +194 -0
  971. package/src/Layer.ts +394 -160
  972. package/src/LayerMap.ts +11 -9
  973. package/src/LogLevel.ts +37 -0
  974. package/src/Logger.ts +33 -100
  975. package/src/ManagedRuntime.ts +35 -22
  976. package/src/Metric.ts +6 -8
  977. package/src/MutableHashMap.ts +9 -0
  978. package/src/MutableHashSet.ts +9 -0
  979. package/src/Newtype.ts +308 -0
  980. package/src/Number.ts +85 -26
  981. package/src/Optic.ts +948 -19
  982. package/src/Option.ts +34 -24
  983. package/src/Order.ts +39 -32
  984. package/src/PartitionedSemaphore.ts +288 -56
  985. package/src/Pipeable.ts +32 -1
  986. package/src/PlatformError.ts +5 -5
  987. package/src/Pool.ts +13 -11
  988. package/src/PubSub.ts +30 -20
  989. package/src/Pull.ts +1 -1
  990. package/src/Queue.ts +11 -9
  991. package/src/Random.ts +51 -14
  992. package/src/RcMap.ts +5 -5
  993. package/src/RcRef.ts +1 -1
  994. package/src/Record.ts +94 -199
  995. package/src/Reducer.ts +166 -7
  996. package/src/References.ts +283 -287
  997. package/src/Request.ts +3 -2
  998. package/src/RequestResolver.ts +29 -49
  999. package/src/Resource.ts +2 -1
  1000. package/src/Result.ts +2 -4
  1001. package/src/Runtime.ts +102 -6
  1002. package/src/Schedule.ts +458 -449
  1003. package/src/Scheduler.ts +49 -126
  1004. package/src/Schema.ts +3298 -392
  1005. package/src/SchemaAST.ts +172 -33
  1006. package/src/SchemaGetter.ts +19 -21
  1007. package/src/SchemaParser.ts +92 -27
  1008. package/src/SchemaRepresentation.ts +51 -26
  1009. package/src/SchemaTransformation.ts +198 -13
  1010. package/src/ScopedCache.ts +3 -3
  1011. package/src/Semaphore.ts +444 -0
  1012. package/src/ServiceMap.ts +144 -97
  1013. package/src/Sink.ts +83 -28
  1014. package/src/Stdio.ts +27 -4
  1015. package/src/Stream.ts +687 -617
  1016. package/src/String.ts +122 -69
  1017. package/src/Struct.ts +33 -7
  1018. package/src/SubscriptionRef.ts +101 -120
  1019. package/src/SynchronizedRef.ts +3 -2
  1020. package/src/Terminal.ts +2 -1
  1021. package/src/Tracer.ts +6 -5
  1022. package/src/Trie.ts +44 -31
  1023. package/src/TxChunk.ts +72 -53
  1024. package/src/TxDeferred.ts +394 -0
  1025. package/src/TxHashMap.ts +409 -343
  1026. package/src/TxHashSet.ts +113 -118
  1027. package/src/TxPriorityQueue.ts +766 -0
  1028. package/src/TxPubSub.ts +789 -0
  1029. package/src/TxQueue.ts +241 -251
  1030. package/src/TxReentrantLock.ts +753 -0
  1031. package/src/TxRef.ts +50 -38
  1032. package/src/TxSemaphore.ts +217 -44
  1033. package/src/TxSubscriptionRef.ts +639 -0
  1034. package/src/Types.ts +73 -19
  1035. package/src/Utils.ts +137 -111
  1036. package/src/index.ts +816 -56
  1037. package/src/internal/core.ts +12 -5
  1038. package/src/internal/dateTime.ts +91 -96
  1039. package/src/internal/effect.ts +844 -432
  1040. package/src/internal/hashMap.ts +12 -10
  1041. package/src/internal/option.ts +7 -0
  1042. package/src/internal/random.ts +20 -0
  1043. package/src/internal/rcRef.ts +4 -3
  1044. package/src/internal/references.ts +72 -0
  1045. package/src/internal/request.ts +2 -2
  1046. package/src/internal/schema/annotations.ts +2 -0
  1047. package/src/internal/schema/representation.ts +73 -94
  1048. package/src/internal/schema/schema.ts +1 -0
  1049. package/src/internal/schema/to-codec.ts +7 -17
  1050. package/src/internal/trie.ts +21 -15
  1051. package/src/testing/TestClock.ts +13 -11
  1052. package/src/testing/TestSchema.ts +332 -35
  1053. package/src/testing/index.ts +64 -1
  1054. package/src/unstable/ai/AiError.ts +111 -54
  1055. package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -0
  1056. package/src/unstable/ai/Chat.ts +134 -85
  1057. package/src/unstable/ai/EmbeddingModel.ts +209 -0
  1058. package/src/unstable/ai/LanguageModel.ts +683 -253
  1059. package/src/unstable/ai/McpSchema.ts +73 -13
  1060. package/src/unstable/ai/McpServer.ts +271 -61
  1061. package/src/unstable/ai/Model.ts +40 -9
  1062. package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -0
  1063. package/src/unstable/ai/Prompt.ts +37 -37
  1064. package/src/unstable/ai/Response.ts +25 -25
  1065. package/src/unstable/ai/ResponseIdTracker.ts +97 -0
  1066. package/src/unstable/ai/Tool.ts +42 -16
  1067. package/src/unstable/ai/Toolkit.ts +5 -14
  1068. package/src/unstable/ai/index.ts +24 -1
  1069. package/src/unstable/ai/internal/codec-transformer.ts +0 -7
  1070. package/src/unstable/cli/Argument.ts +2 -4
  1071. package/src/unstable/cli/CliError.ts +47 -59
  1072. package/src/unstable/cli/CliOutput.ts +85 -13
  1073. package/src/unstable/cli/Command.ts +801 -192
  1074. package/src/unstable/cli/Completions.ts +36 -0
  1075. package/src/unstable/cli/Flag.ts +2 -2
  1076. package/src/unstable/cli/GlobalFlag.ts +242 -0
  1077. package/src/unstable/cli/HelpDoc.ts +91 -11
  1078. package/src/unstable/cli/Param.ts +15 -11
  1079. package/src/unstable/cli/Primitive.ts +2 -2
  1080. package/src/unstable/cli/Prompt.ts +265 -101
  1081. package/src/unstable/cli/index.ts +10 -0
  1082. package/src/unstable/cli/internal/command.ts +109 -63
  1083. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +10 -4
  1084. package/src/unstable/cli/internal/config.ts +49 -0
  1085. package/src/unstable/cli/internal/help.ts +171 -0
  1086. package/src/unstable/cli/internal/parser.ts +71 -63
  1087. package/src/unstable/cluster/ClusterCron.ts +2 -2
  1088. package/src/unstable/cluster/ClusterSchema.ts +29 -1
  1089. package/src/unstable/cluster/ClusterWorkflowEngine.ts +62 -37
  1090. package/src/unstable/cluster/DeliverAt.ts +1 -1
  1091. package/src/unstable/cluster/Entity.ts +25 -22
  1092. package/src/unstable/cluster/EntityAddress.ts +1 -1
  1093. package/src/unstable/cluster/EntityResource.ts +4 -4
  1094. package/src/unstable/cluster/Envelope.ts +1 -1
  1095. package/src/unstable/cluster/K8sHttpClient.ts +5 -5
  1096. package/src/unstable/cluster/Message.ts +28 -15
  1097. package/src/unstable/cluster/MessageStorage.ts +66 -36
  1098. package/src/unstable/cluster/Reply.ts +7 -4
  1099. package/src/unstable/cluster/Runner.ts +1 -1
  1100. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1101. package/src/unstable/cluster/RunnerServer.ts +10 -13
  1102. package/src/unstable/cluster/Runners.ts +14 -12
  1103. package/src/unstable/cluster/ShardId.ts +2 -2
  1104. package/src/unstable/cluster/Sharding.ts +66 -49
  1105. package/src/unstable/cluster/ShardingConfig.ts +36 -37
  1106. package/src/unstable/cluster/SqlMessageStorage.ts +31 -19
  1107. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  1108. package/src/unstable/cluster/internal/entityManager.ts +50 -34
  1109. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  1110. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  1111. package/src/unstable/devtools/DevToolsClient.ts +23 -18
  1112. package/src/unstable/devtools/DevToolsSchema.ts +16 -3
  1113. package/src/unstable/encoding/Ndjson.ts +17 -17
  1114. package/src/unstable/encoding/Sse.ts +3 -5
  1115. package/src/unstable/eventlog/EventJournal.ts +2 -2
  1116. package/src/unstable/eventlog/EventLog.ts +3 -2
  1117. package/src/unstable/eventlog/SqlEventLogJournal.ts +2 -2
  1118. package/src/unstable/http/Cookies.ts +94 -11
  1119. package/src/unstable/http/Etag.ts +5 -3
  1120. package/src/unstable/http/Headers.ts +68 -18
  1121. package/src/unstable/http/HttpClient.ts +376 -34
  1122. package/src/unstable/http/HttpClientRequest.ts +151 -39
  1123. package/src/unstable/http/HttpClientResponse.ts +12 -6
  1124. package/src/unstable/http/HttpEffect.ts +54 -68
  1125. package/src/unstable/http/HttpIncomingMessage.ts +3 -2
  1126. package/src/unstable/http/HttpMethod.ts +16 -4
  1127. package/src/unstable/http/HttpMiddleware.ts +25 -39
  1128. package/src/unstable/http/HttpPlatform.ts +3 -2
  1129. package/src/unstable/http/HttpRouter.ts +9 -9
  1130. package/src/unstable/http/HttpServer.ts +3 -9
  1131. package/src/unstable/http/HttpServerError.ts +45 -47
  1132. package/src/unstable/http/HttpServerRequest.ts +407 -16
  1133. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  1134. package/src/unstable/http/HttpServerResponse.ts +345 -7
  1135. package/src/unstable/http/HttpStaticServer.ts +456 -0
  1136. package/src/unstable/http/HttpTraceContext.ts +31 -17
  1137. package/src/unstable/http/Multipart.ts +2 -2
  1138. package/src/unstable/http/Url.ts +650 -0
  1139. package/src/unstable/http/UrlParams.ts +31 -19
  1140. package/src/unstable/http/index.ts +10 -0
  1141. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  1142. package/src/unstable/httpapi/HttpApi.ts +6 -6
  1143. package/src/unstable/httpapi/HttpApiBuilder.ts +106 -41
  1144. package/src/unstable/httpapi/HttpApiClient.ts +180 -28
  1145. package/src/unstable/httpapi/HttpApiEndpoint.ts +216 -104
  1146. package/src/unstable/httpapi/HttpApiError.ts +108 -30
  1147. package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
  1148. package/src/unstable/httpapi/HttpApiMiddleware.ts +83 -22
  1149. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  1150. package/src/unstable/httpapi/HttpApiSchema.ts +21 -3
  1151. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  1152. package/src/unstable/httpapi/OpenApi.ts +44 -29
  1153. package/src/unstable/observability/Otlp.ts +12 -12
  1154. package/src/unstable/observability/OtlpExporter.ts +8 -5
  1155. package/src/unstable/observability/OtlpLogger.ts +13 -9
  1156. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  1157. package/src/unstable/observability/OtlpTracer.ts +12 -8
  1158. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  1159. package/src/unstable/persistence/Persistable.ts +3 -3
  1160. package/src/unstable/persistence/PersistedCache.ts +20 -9
  1161. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  1162. package/src/unstable/persistence/Persistence.ts +3 -3
  1163. package/src/unstable/persistence/RateLimiter.ts +4 -4
  1164. package/src/unstable/process/ChildProcess.ts +6 -208
  1165. package/src/unstable/process/ChildProcessSpawner.ts +75 -14
  1166. package/src/unstable/reactivity/Atom.ts +212 -54
  1167. package/src/unstable/reactivity/AtomHttpApi.ts +81 -41
  1168. package/src/unstable/reactivity/AtomRegistry.ts +66 -12
  1169. package/src/unstable/reactivity/AtomRpc.ts +51 -20
  1170. package/src/unstable/reactivity/Hydration.ts +112 -0
  1171. package/src/unstable/reactivity/index.ts +5 -0
  1172. package/src/unstable/rpc/Rpc.ts +12 -12
  1173. package/src/unstable/rpc/RpcClient.ts +67 -96
  1174. package/src/unstable/rpc/RpcGroup.ts +7 -7
  1175. package/src/unstable/rpc/RpcMiddleware.ts +15 -9
  1176. package/src/unstable/rpc/RpcSchema.ts +23 -5
  1177. package/src/unstable/rpc/RpcSerialization.ts +49 -11
  1178. package/src/unstable/rpc/RpcServer.ts +31 -35
  1179. package/src/unstable/rpc/Utils.ts +3 -2
  1180. package/src/unstable/schema/Model.ts +31 -0
  1181. package/src/unstable/schema/VariantSchema.ts +10 -10
  1182. package/src/unstable/socket/Socket.ts +31 -27
  1183. package/src/unstable/sql/Migrator.ts +7 -5
  1184. package/src/unstable/sql/SqlClient.ts +6 -4
  1185. package/src/unstable/sql/SqlError.ts +365 -11
  1186. package/src/unstable/sql/SqlModel.ts +5 -5
  1187. package/src/unstable/sql/SqlResolver.ts +17 -7
  1188. package/src/unstable/sql/SqlSchema.ts +42 -26
  1189. package/src/unstable/sql/Statement.ts +0 -1
  1190. package/src/unstable/workers/Worker.ts +2 -1
  1191. package/src/unstable/workflow/Activity.ts +23 -0
  1192. package/src/unstable/workflow/DurableClock.ts +8 -8
  1193. package/src/unstable/workflow/DurableDeferred.ts +8 -8
  1194. package/src/unstable/workflow/Workflow.ts +7 -3
  1195. package/src/unstable/workflow/WorkflowEngine.ts +211 -19
  1196. package/dist/NullOr.d.ts +0 -149
  1197. package/dist/NullOr.d.ts.map +0 -1
  1198. package/dist/NullOr.js +0 -152
  1199. package/dist/NullOr.js.map +0 -1
  1200. package/dist/encoding/Base64.d.ts +0 -67
  1201. package/dist/encoding/Base64.d.ts.map +0 -1
  1202. package/dist/encoding/Base64.js +0 -146
  1203. package/dist/encoding/Base64.js.map +0 -1
  1204. package/dist/encoding/Base64Url.d.ts +0 -60
  1205. package/dist/encoding/Base64Url.d.ts.map +0 -1
  1206. package/dist/encoding/Base64Url.js +0 -89
  1207. package/dist/encoding/Base64Url.js.map +0 -1
  1208. package/dist/encoding/EncodingError.d.ts +0 -31
  1209. package/dist/encoding/EncodingError.d.ts.map +0 -1
  1210. package/dist/encoding/EncodingError.js +0 -22
  1211. package/dist/encoding/EncodingError.js.map +0 -1
  1212. package/dist/encoding/Hex.d.ts +0 -61
  1213. package/dist/encoding/Hex.d.ts.map +0 -1
  1214. package/dist/encoding/Hex.js +0 -115
  1215. package/dist/encoding/Hex.js.map +0 -1
  1216. package/dist/encoding/index.d.ts +0 -26
  1217. package/dist/encoding/index.d.ts.map +0 -1
  1218. package/dist/encoding/index.js +0 -27
  1219. package/dist/encoding/index.js.map +0 -1
  1220. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  1221. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  1222. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  1223. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  1224. package/dist/unstable/cli/internal/completions/Completions.d.ts +0 -2
  1225. package/dist/unstable/cli/internal/completions/Completions.d.ts.map +0 -1
  1226. package/dist/unstable/cli/internal/completions/Completions.js +0 -23
  1227. package/dist/unstable/cli/internal/completions/Completions.js.map +0 -1
  1228. package/src/NullOr.ts +0 -204
  1229. package/src/encoding/Base64.ts +0 -366
  1230. package/src/encoding/Base64Url.ts +0 -104
  1231. package/src/encoding/EncodingError.ts +0 -35
  1232. package/src/encoding/Hex.ts +0 -390
  1233. package/src/encoding/index.ts +0 -31
  1234. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
  1235. package/src/unstable/cli/internal/completions/Completions.ts +0 -31
@@ -51,7 +51,7 @@
51
51
  import type * as Cause from "../../Cause.ts"
52
52
  import * as Effect from "../../Effect.ts"
53
53
  import * as FiberSet from "../../FiberSet.ts"
54
- import { constFalse } from "../../Function.ts"
54
+ import { constFalse, identity, pipe } from "../../Function.ts"
55
55
  import type * as JsonSchema from "../../JsonSchema.ts"
56
56
  import * as Option from "../../Option.ts"
57
57
  import * as Predicate from "../../Predicate.ts"
@@ -69,6 +69,7 @@ import { defaultIdGenerator, IdGenerator } from "./IdGenerator.ts"
69
69
  import * as InternalCodecTransformer from "./internal/codec-transformer.ts"
70
70
  import * as Prompt from "./Prompt.ts"
71
71
  import * as Response from "./Response.ts"
72
+ import * as ResponseIdTracker from "./ResponseIdTracker.ts"
72
73
  import type { SpanTransformer } from "./Telemetry.ts"
73
74
  import { CurrentSpanTransformer } from "./Telemetry.ts"
74
75
  import type * as Tool from "./Tool.ts"
@@ -119,23 +120,49 @@ export interface Service {
119
120
  /**
120
121
  * Generate text using the language model.
121
122
  */
122
- readonly generateText: <
123
- Options extends NoExcessProperties<GenerateTextOptions<any>, Options>,
124
- Tools extends Record<string, Tool.Any> = {}
125
- >(
126
- options: Options & GenerateTextOptions<Tools>
127
- ) => Effect.Effect<
128
- GenerateTextResponse<Tools>,
129
- ExtractError<Options>,
130
- ExtractServices<Options>
131
- >
123
+ readonly generateText: {
124
+ // No toolkit: force `{}` instead of falling back to `Record<string, Tool.Any>`.
125
+ <Options extends NoExcessProperties<GenerateTextOptionsWithoutToolkit, Options>>(
126
+ options: Options & GenerateTextOptionsWithoutToolkit
127
+ ): Effect.Effect<
128
+ GenerateTextResponse<{}>,
129
+ ExtractError<Options>,
130
+ ExtractServices<Options>
131
+ >
132
+ // Generic toolkit: preserve caller-supplied `Tools` in helpers like `<Tools>(toolkit: WithHandler<Tools>) => ...`.
133
+ <
134
+ Tools extends Record<string, Tool.Any>,
135
+ Options extends NoExcessProperties<
136
+ GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> },
137
+ Options
138
+ >
139
+ >(
140
+ options: Options & GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }
141
+ ): Effect.Effect<
142
+ GenerateTextResponse<Tools>,
143
+ ExtractError<Options>,
144
+ ExtractServices<Options>
145
+ >
146
+ // Toolkit unions: recover distributive `ExtractTools<Options>` inference for `toolkitA | toolkitB` call sites.
147
+ <
148
+ Options extends {
149
+ readonly toolkit: ToolkitOption<any>
150
+ } & NoExcessProperties<GenerateTextOptions<any>, Options>
151
+ >(
152
+ options: Options & GenerateTextOptions<ExtractTools<Options>> & { readonly toolkit: Options["toolkit"] }
153
+ ): Effect.Effect<
154
+ GenerateTextResponse<ExtractTools<Options>>,
155
+ ExtractError<Options>,
156
+ ExtractServices<Options>
157
+ >
158
+ }
132
159
 
133
160
  /**
134
161
  * Generate a structured object from a schema using the language model.
135
162
  */
136
163
  readonly generateObject: <
137
164
  ObjectEncoded extends Record<string, any>,
138
- StructuredOutputSchema extends Schema.Codec<any, ObjectEncoded, any, any>,
165
+ StructuredOutputSchema extends Schema.Encoder<ObjectEncoded, unknown>,
139
166
  Options extends NoExcessProperties<
140
167
  GenerateObjectOptions<any, StructuredOutputSchema>,
141
168
  Options
@@ -152,16 +179,42 @@ export interface Service {
152
179
  /**
153
180
  * Generate text using the language model with streaming output.
154
181
  */
155
- readonly streamText: <
156
- Options extends NoExcessProperties<GenerateTextOptions<any>, Options>,
157
- Tools extends Record<string, Tool.Any> = {}
158
- >(
159
- options: Options & GenerateTextOptions<Tools>
160
- ) => Stream.Stream<
161
- Response.StreamPart<Tools>,
162
- ExtractError<Options>,
163
- ExtractServices<Options>
164
- >
182
+ readonly streamText: {
183
+ // No toolkit: force `{}` instead of falling back to `Record<string, Tool.Any>`.
184
+ <Options extends NoExcessProperties<GenerateTextOptionsWithoutToolkit, Options>>(
185
+ options: Options & GenerateTextOptionsWithoutToolkit
186
+ ): Stream.Stream<
187
+ Response.StreamPart<{}>,
188
+ ExtractError<Options>,
189
+ ExtractServices<Options>
190
+ >
191
+ // Generic toolkit: preserve caller-supplied `Tools` in helpers like `<Tools>(toolkit: WithHandler<Tools>) => ...`.
192
+ <
193
+ Tools extends Record<string, Tool.Any>,
194
+ Options extends NoExcessProperties<
195
+ GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> },
196
+ Options
197
+ >
198
+ >(
199
+ options: Options & GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }
200
+ ): Stream.Stream<
201
+ Response.StreamPart<Tools>,
202
+ ExtractError<Options>,
203
+ ExtractServices<Options>
204
+ >
205
+ // Toolkit unions: recover distributive `ExtractTools<Options>` inference for `toolkitA | toolkitB` call sites.
206
+ <
207
+ Options extends {
208
+ readonly toolkit: ToolkitOption<any>
209
+ } & NoExcessProperties<GenerateTextOptions<any>, Options>
210
+ >(
211
+ options: Options & GenerateTextOptions<ExtractTools<Options>> & { readonly toolkit: Options["toolkit"] }
212
+ ): Stream.Stream<
213
+ Response.StreamPart<ExtractTools<Options>>,
214
+ ExtractError<Options>,
215
+ ExtractServices<Options>
216
+ >
217
+ }
165
218
  }
166
219
 
167
220
  /**
@@ -180,22 +233,6 @@ export type CodecTransformer = <T, E, RD, RE>(schema: Schema.Codec<T, E, RD, RE>
180
233
  readonly jsonSchema: JsonSchema.JsonSchema
181
234
  }
182
235
 
183
- /**
184
- * A `ServiceMap.Reference` that holds the current `CodecTransformer` used by
185
- * `LanguageModel.generateObject` to adapt structured output schemas for the
186
- * active provider.
187
- *
188
- * By default, this is the identity function (no transformation). Provider
189
- * packages (e.g. `@effect/ai-anthropic`) override this reference with a
190
- * provider-specific transformer so that schemas are automatically rewritten
191
- * before being sent to the model as well as before decoding the generated value.
192
- *
193
- * @since 4.0.0
194
- * @category services
195
- */
196
- export const CurrentCodecTransformer: ServiceMap.Reference<CodecTransformer> =
197
- InternalCodecTransformer.CurrentCodecTransformer
198
-
199
236
  /**
200
237
  * The default codec transformer that passes schemas through without
201
238
  * provider-specific rewrites.
@@ -221,15 +258,7 @@ export interface GenerateTextOptions<Tools extends Record<string, Tool.Any>> {
221
258
  * A toolkit containing both the tools and the tool call handler to use to
222
259
  * augment text generation.
223
260
  */
224
- readonly toolkit?:
225
- | Toolkit.WithHandler<Tools>
226
- | Effect.Yieldable<
227
- Toolkit.Toolkit<Tools>,
228
- Toolkit.WithHandler<Tools>,
229
- never,
230
- any
231
- >
232
- | undefined
261
+ readonly toolkit?: ToolkitInput<Tools> | undefined
233
262
 
234
263
  /**
235
264
  * The tool choice mode for the language model.
@@ -269,6 +298,10 @@ export interface GenerateTextOptions<Tools extends Record<string, Tool.Any>> {
269
298
  readonly disableToolCallResolution?: boolean | undefined
270
299
  }
271
300
 
301
+ type GenerateTextOptionsWithoutToolkit = Omit<GenerateTextOptions<{}>, "toolkit"> & {
302
+ readonly toolkit?: undefined
303
+ }
304
+
272
305
  /**
273
306
  * Configuration options for structured object generation.
274
307
  *
@@ -483,6 +516,113 @@ export class GenerateObjectResponse<
483
516
  // Utility Types
484
517
  // =============================================================================
485
518
 
519
+ /**
520
+ * The supported toolkit option shapes for language model operations.
521
+ *
522
+ * @since 4.0.0
523
+ * @category utility types
524
+ */
525
+ export type ToolkitOption<
526
+ Tools extends Record<string, Tool.Any>,
527
+ E = never,
528
+ R = any
529
+ > = Tools extends any ? (
530
+ | Toolkit.WithHandler<Tools>
531
+ | Effect.Yieldable<
532
+ Toolkit.Toolkit<Tools>,
533
+ Toolkit.WithHandler<Tools>,
534
+ E,
535
+ R
536
+ >
537
+ )
538
+ : never
539
+
540
+ /**
541
+ * The supported toolkit input shapes for language model operation options.
542
+ *
543
+ * Unlike `ToolkitOption`, this type does not distribute over unions. It is
544
+ * intended for call-site assignability, while `ToolkitOption` remains the
545
+ * distributive helper used for extraction and inference.
546
+ *
547
+ * @since 4.0.0
548
+ * @category utility types
549
+ */
550
+ export type ToolkitInput<
551
+ Tools extends Record<string, Tool.Any>,
552
+ E = never,
553
+ R = any
554
+ > =
555
+ | ToolkitOption<Tools, E, R>
556
+ | Toolkit.WithHandler<Tools>
557
+ | Effect.Yieldable<
558
+ Toolkit.Toolkit<Tools>,
559
+ Toolkit.WithHandler<Tools>,
560
+ E,
561
+ R
562
+ >
563
+
564
+ type ExtractToolsFromToolkitOption<ToolkitValue> = ToolkitValue extends Toolkit.WithHandler<infer Tools> ? Tools
565
+ : ToolkitValue extends Effect.Yieldable<
566
+ Toolkit.Toolkit<infer Tools>,
567
+ Toolkit.WithHandler<infer _Tools>,
568
+ infer _E,
569
+ infer _R
570
+ > ? Tools
571
+ : never
572
+
573
+ /**
574
+ * Utility type that extracts the toolset from LanguageModel options.
575
+ *
576
+ * @since 4.0.0
577
+ * @category utility types
578
+ */
579
+ export type ExtractTools<Options> = Options extends {
580
+ readonly toolkit: infer ToolkitValue
581
+ } ? ExtractToolsFromToolkitOption<Exclude<ToolkitValue, undefined>>
582
+ : {}
583
+
584
+ type ExtractErrorFromToolkitOption<ToolkitValue, DisableToolCallResolution extends boolean> = ToolkitValue extends
585
+ Toolkit.WithHandler<infer Tools> ?
586
+ | AiError.AiError
587
+ | (DisableToolCallResolution extends true ? never : Tool.HandlerError<Tools[keyof Tools]>)
588
+ : ToolkitValue extends Effect.Yieldable<
589
+ Toolkit.Toolkit<infer Tools>,
590
+ Toolkit.WithHandler<infer _Tools>,
591
+ infer E,
592
+ infer _R
593
+ > ? AiError.AiError | E | (DisableToolCallResolution extends true ? never : Tool.HandlerError<Tools[keyof Tools]>)
594
+ : AiError.AiError
595
+
596
+ type ExtractServicesFromToolkitOption<ToolkitValue> = ToolkitValue extends Toolkit.WithHandler<infer Tools> ?
597
+ | Tool.HandlerServices<Tools[keyof Tools]>
598
+ | Tool.ResultDecodingServices<Tools[keyof Tools]>
599
+ : ToolkitValue extends Effect.Yieldable<
600
+ Toolkit.Toolkit<infer Tools>,
601
+ Toolkit.WithHandler<infer _Tools>,
602
+ infer _E,
603
+ infer R
604
+ > ?
605
+ | Tool.HandlerServices<Tools[keyof Tools]>
606
+ | Tool.ResultDecodingServices<Tools[keyof Tools]>
607
+ | R
608
+ : never
609
+
610
+ type ExtractToolkitResolutionError<ToolkitValue> = ToolkitValue extends Effect.Yieldable<
611
+ Toolkit.Toolkit<infer _Tools>,
612
+ Toolkit.WithHandler<infer _Tools>,
613
+ infer E,
614
+ infer _R
615
+ > ? E
616
+ : never
617
+
618
+ type ExtractToolkitResolutionServices<ToolkitValue> = ToolkitValue extends Effect.Yieldable<
619
+ Toolkit.Toolkit<infer _Tools>,
620
+ Toolkit.WithHandler<infer _Tools>,
621
+ infer _E,
622
+ infer R
623
+ > ? R
624
+ : never
625
+
486
626
  /**
487
627
  * Utility type that extracts the error type from LanguageModel options.
488
628
  *
@@ -493,29 +633,15 @@ export class GenerateObjectResponse<
493
633
  * @category utility types
494
634
  */
495
635
  export type ExtractError<Options> = Options extends {
496
- readonly toolkit: Toolkit.WithHandler<infer _Tools>
497
636
  readonly disableToolCallResolution: true
498
- } ? AiError.AiError
499
- : Options extends {
500
- readonly toolkit: Effect.Yieldable<
501
- Toolkit.Toolkit<infer _Tools>,
502
- Toolkit.WithHandler<infer _Tools>,
503
- infer _E,
504
- infer _R
505
- >
506
- readonly disableToolCallResolution: true
507
- } ? AiError.AiError | _E
637
+ readonly toolkit: infer ToolkitValue
638
+ } ? ExtractErrorFromToolkitOption<Exclude<ToolkitValue, undefined>, true>
508
639
  : Options extends {
509
- readonly toolkit: Toolkit.WithHandler<infer _Tools>
510
- } ? AiError.AiError | Tool.HandlerError<_Tools[keyof _Tools]>
640
+ readonly toolkit: infer ToolkitValue
641
+ } ? ExtractErrorFromToolkitOption<Exclude<ToolkitValue, undefined>, false>
511
642
  : Options extends {
512
- readonly toolkit: Effect.Yieldable<
513
- Toolkit.Toolkit<infer _Tools>,
514
- Toolkit.WithHandler<infer _Tools>,
515
- infer _E,
516
- infer _R
517
- >
518
- } ? AiError.AiError | Tool.HandlerError<_Tools[keyof _Tools]> | _E
643
+ readonly disableToolCallResolution: true
644
+ } ? AiError.AiError
519
645
  : AiError.AiError
520
646
 
521
647
  /**
@@ -527,27 +653,11 @@ export type ExtractError<Options> = Options extends {
527
653
  * @category utility types
528
654
  */
529
655
  export type ExtractServices<Options> = Options extends {
530
- readonly toolkit: Toolkit.WithHandler<infer _Tools>
531
- }
532
- // Required for tool call execution
533
- ?
534
- | Tool.ResultEncodingServices<_Tools[keyof _Tools]>
535
- // Required for decoding large language model responses
536
- | Tool.ResultDecodingServices<_Tools[keyof _Tools]>
656
+ readonly disableToolCallResolution: true
657
+ } ? never
537
658
  : Options extends {
538
- readonly toolkit: Effect.Yieldable<
539
- Toolkit.Toolkit<infer _Tools>,
540
- Toolkit.WithHandler<infer _Tools>,
541
- infer _E,
542
- infer _R
543
- >
544
- }
545
- // Required for tool call execution
546
- ?
547
- | Tool.ResultEncodingServices<_Tools[keyof _Tools]>
548
- // Required for decoding large language model responses
549
- | Tool.ResultDecodingServices<_Tools[keyof _Tools]>
550
- | _R
659
+ readonly toolkit: infer Toolkit
660
+ } ? ExtractServicesFromToolkitOption<Exclude<Toolkit, undefined>>
551
661
  : never
552
662
 
553
663
  // =============================================================================
@@ -619,15 +729,28 @@ export interface ProviderOptions {
619
729
  * The span to use to trace interactions with the large language model.
620
730
  */
621
731
  readonly span: Span
732
+
733
+ /**
734
+ * The previous response identifier for incremental provider calls.
735
+ */
736
+ readonly previousResponseId: string | undefined
737
+
738
+ /**
739
+ * The prompt reduced to messages not yet seen by the provider.
740
+ */
741
+ readonly incrementalPrompt: Prompt.Prompt | undefined
622
742
  }
623
743
 
624
744
  /**
625
- * Parameters required to construct a LanguageModel service.
745
+ * Creates a LanguageModel service from provider-specific implementations.
746
+ *
747
+ * This constructor takes provider-specific implementations for text generation
748
+ * and streaming text generation and returns a LanguageModel service.
626
749
  *
627
750
  * @since 4.0.0
628
- * @category models
751
+ * @category constructors
629
752
  */
630
- export interface ConstructorParams {
753
+ export const make: (params: {
631
754
  /**
632
755
  * A method which requests text generation from the large language model
633
756
  * provider.
@@ -648,19 +771,14 @@ export interface ConstructorParams {
648
771
  readonly streamText: (
649
772
  options: ProviderOptions
650
773
  ) => Stream.Stream<Response.StreamPartEncoded, AiError.AiError, IdGenerator>
651
- }
652
774
 
653
- /**
654
- * Creates a LanguageModel service from provider-specific implementations.
655
- *
656
- * This constructor takes provider-specific implementations for text generation
657
- * and streaming text generation and returns a LanguageModel service.
658
- *
659
- * @since 4.0.0
660
- * @category constructors
661
- */
662
- export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effect.fnUntraced(function*(params) {
663
- const codecTransformer = yield* InternalCodecTransformer.CurrentCodecTransformer
775
+ /**
776
+ * A function that transforms a `Schema.Codec` into a provider-compatible form
777
+ * for structured output generation.
778
+ */
779
+ readonly codecTransformer?: CodecTransformer | undefined
780
+ }) => Effect.Effect<Service> = Effect.fnUntraced(function*(params) {
781
+ const codecTransformer = params.codecTransformer ?? defaultCodecTransformer
664
782
 
665
783
  const parentSpanTransformer = yield* Effect.serviceOption(
666
784
  CurrentSpanTransformer
@@ -700,7 +818,9 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
700
818
  tools: [],
701
819
  toolChoice: "none",
702
820
  responseFormat: { type: "text" },
703
- span
821
+ span,
822
+ previousResponseId: undefined,
823
+ incrementalPrompt: undefined
704
824
  }
705
825
  const content = yield* generateContent(options, providerOptions)
706
826
 
@@ -721,14 +841,13 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
721
841
  })
722
842
  )),
723
843
  (effect, span) => Effect.withParentSpan(effect, span, { captureStackTrace: false }),
724
- Effect.provideService(IdGenerator, idGenerator),
725
- Effect.provideService(InternalCodecTransformer.CurrentCodecTransformer, codecTransformer)
844
+ Effect.provideService(IdGenerator, idGenerator)
726
845
  )
727
846
  ) as any
728
847
 
729
848
  const generateObject = <
730
849
  ObjectEncoded extends Record<string, any>,
731
- StructuredOutputSchema extends Schema.Codec<any, ObjectEncoded, any, any>,
850
+ StructuredOutputSchema extends Schema.Encoder<ObjectEncoded, unknown>,
732
851
  Options extends NoExcessProperties<
733
852
  GenerateObjectOptions<any, StructuredOutputSchema>,
734
853
  Options
@@ -764,7 +883,9 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
764
883
  objectName,
765
884
  schema: options.schema
766
885
  },
767
- span
886
+ span,
887
+ previousResponseId: undefined,
888
+ incrementalPrompt: undefined
768
889
  }
769
890
 
770
891
  const content = yield* generateContent(options, providerOptions)
@@ -800,8 +921,7 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
800
921
  })
801
922
  )),
802
923
  (effect, span) => Effect.withParentSpan(effect, span, { captureStackTrace: false }),
803
- Effect.provideService(IdGenerator, idGenerator),
804
- Effect.provideService(InternalCodecTransformer.CurrentCodecTransformer, codecTransformer)
924
+ Effect.provideService(IdGenerator, idGenerator)
805
925
  )
806
926
  ) as any
807
927
  }
@@ -832,7 +952,9 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
832
952
  tools: [],
833
953
  toolChoice: "none",
834
954
  responseFormat: { type: "text" },
835
- span
955
+ span,
956
+ previousResponseId: undefined,
957
+ incrementalPrompt: undefined
836
958
  }
837
959
 
838
960
  // Resolve the content stream for the request
@@ -872,8 +994,7 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
872
994
  })
873
995
  : error
874
996
  ),
875
- Stream.provideService(IdGenerator, idGenerator),
876
- Stream.provideService(InternalCodecTransformer.CurrentCodecTransformer, codecTransformer)
997
+ Stream.provideService(IdGenerator, idGenerator)
877
998
  ) as any
878
999
 
879
1000
  const generateContent: <
@@ -893,8 +1014,27 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
893
1014
  options: Options & GenerateTextOptions<Tools>,
894
1015
  providerOptions: Mutable<ProviderOptions>
895
1016
  ) {
1017
+ const tracker = Option.getOrUndefined(yield* Effect.serviceOption(ResponseIdTracker.ResponseIdTracker))
896
1018
  const toolChoice = options.toolChoice ?? "auto"
897
1019
 
1020
+ const generateWithNonIncrementalFallback = () => {
1021
+ const requestOptions: ProviderOptions = {
1022
+ ...providerOptions
1023
+ }
1024
+ const fallbackPrompt = requestOptions.prompt
1025
+ const fallbackOptions: ProviderOptions = {
1026
+ ...requestOptions,
1027
+ prompt: fallbackPrompt,
1028
+ incrementalPrompt: undefined,
1029
+ previousResponseId: undefined
1030
+ }
1031
+ return requestOptions.incrementalPrompt
1032
+ ? params.generateText(requestOptions).pipe(
1033
+ Effect.catchReason("AiError", "InvalidRequestError", (_) => params.generateText(fallbackOptions))
1034
+ )
1035
+ : params.generateText(requestOptions)
1036
+ }
1037
+
898
1038
  // Check for pending approvals that need resolution
899
1039
  const { approved, denied } = collectToolApprovals(
900
1040
  providerOptions.prompt.content,
@@ -916,11 +1056,24 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
916
1056
  })
917
1057
  })
918
1058
  }
1059
+ if (tracker) {
1060
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1061
+ if (Option.isSome(prepared)) {
1062
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1063
+ providerOptions.incrementalPrompt = prepared.value.prompt
1064
+ }
1065
+ }
919
1066
  const ResponseSchema = Schema.mutable(
920
1067
  Schema.Array(Response.Part(Toolkit.empty))
921
1068
  )
922
- const rawContent = yield* params.generateText(providerOptions)
1069
+ const rawContent = yield* generateWithNonIncrementalFallback()
923
1070
  const content = yield* Schema.decodeEffect(ResponseSchema)(rawContent)
1071
+ if (tracker) {
1072
+ const responseMetadata = content.find((part) => part.type === "response-metadata")
1073
+ if (Predicate.isNotUndefined(responseMetadata) && Predicate.isNotUndefined(responseMetadata.id)) {
1074
+ tracker.markParts(providerOptions.prompt.content, responseMetadata.id)
1075
+ }
1076
+ }
924
1077
  return content as Array<Response.Part<Tools>>
925
1078
  }
926
1079
 
@@ -941,17 +1094,29 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
941
1094
  })
942
1095
  })
943
1096
  }
1097
+ if (tracker) {
1098
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1099
+ if (Option.isSome(prepared)) {
1100
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1101
+ providerOptions.incrementalPrompt = prepared.value.prompt
1102
+ }
1103
+ }
944
1104
  const ResponseSchema = Schema.mutable(
945
1105
  Schema.Array(Response.Part(Toolkit.empty))
946
1106
  )
947
- const rawContent = yield* params.generateText(providerOptions)
1107
+ const rawContent = yield* generateWithNonIncrementalFallback()
948
1108
  const content = yield* Schema.decodeEffect(ResponseSchema)(rawContent)
1109
+ if (tracker) {
1110
+ const responseMetadata = content.find((part) => part.type === "response-metadata")
1111
+ if (Predicate.isNotUndefined(responseMetadata) && Predicate.isNotUndefined(responseMetadata.id)) {
1112
+ tracker.markParts(providerOptions.prompt.content, responseMetadata.id)
1113
+ }
1114
+ }
949
1115
  return content as Array<Response.Part<Tools>>
950
1116
  }
951
1117
 
952
- // Pre-resolve tool approvals before calling the LLM
1118
+ // Pre-resolve pending tool approvals before calling the LLM
953
1119
  if (hasPendingApprovals) {
954
- // Validate all approved tools exist in the toolkit
955
1120
  for (const approval of approved) {
956
1121
  if (approval.toolCall && !toolkit.tools[approval.toolCall.name]) {
957
1122
  return yield* AiError.make({
@@ -965,7 +1130,6 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
965
1130
  }
966
1131
  }
967
1132
 
968
- // Execute approved tools and create denial results
969
1133
  const approvedResults = yield* executeApprovedToolCalls(
970
1134
  approved,
971
1135
  toolkit,
@@ -974,24 +1138,43 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
974
1138
  const deniedResults = createDenialResults(denied)
975
1139
  const preResolvedResults = [...approvedResults, ...deniedResults]
976
1140
 
977
- // Add pre-resolved results to the prompt
978
1141
  if (preResolvedResults.length > 0) {
979
- const toolMessage = Prompt.makeMessage("tool", {
980
- content: preResolvedResults
981
- })
982
1142
  providerOptions.prompt = Prompt.fromMessages([
983
1143
  ...providerOptions.prompt.content,
984
- toolMessage
1144
+ Prompt.makeMessage("tool", { content: preResolvedResults })
985
1145
  ])
986
1146
  }
987
1147
  }
988
1148
 
1149
+ // Strip all resolved approval artifacts (both current and from previous
1150
+ // rounds) in a single pass before sending to the provider.
1151
+ {
1152
+ const { approved: allResolved, denied: allDenied } = collectToolApprovals(
1153
+ providerOptions.prompt.content
1154
+ )
1155
+ if (allResolved.length > 0 || allDenied.length > 0) {
1156
+ providerOptions.prompt = stripResolvedApprovals(
1157
+ providerOptions.prompt,
1158
+ allResolved,
1159
+ allDenied
1160
+ )
1161
+ }
1162
+ }
1163
+
989
1164
  const tools = typeof toolChoice === "object" && "oneOf" in toolChoice
990
1165
  ? Object.values(toolkit.tools).filter((tool) => toolChoice.oneOf.includes(tool.name))
991
1166
  : Object.values(toolkit.tools)
992
1167
  providerOptions.tools = tools
993
1168
  providerOptions.toolChoice = toolChoice
994
1169
 
1170
+ if (tracker) {
1171
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1172
+ if (Option.isSome(prepared)) {
1173
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1174
+ providerOptions.incrementalPrompt = prepared.value.prompt
1175
+ }
1176
+ }
1177
+
995
1178
  // Construct the response schema with the tools from the toolkit
996
1179
  const ResponseSchema = Schema.mutable(
997
1180
  Schema.Array(Response.Part(toolkit))
@@ -1000,12 +1183,18 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1000
1183
  // If tool call resolution is disabled, return the response without
1001
1184
  // resolving the tool calls that were generated
1002
1185
  if (options.disableToolCallResolution === true) {
1003
- const rawContent = yield* params.generateText(providerOptions)
1186
+ const rawContent = yield* generateWithNonIncrementalFallback()
1004
1187
  const content = yield* Schema.decodeEffect(ResponseSchema)(rawContent)
1188
+ if (tracker) {
1189
+ const responseMetadata = content.find((part) => part.type === "response-metadata")
1190
+ if (Predicate.isNotUndefined(responseMetadata) && Predicate.isNotUndefined(responseMetadata.id)) {
1191
+ tracker.markParts(providerOptions.prompt.content, responseMetadata.id)
1192
+ }
1193
+ }
1005
1194
  return content as Array<Response.Part<Tools>>
1006
1195
  }
1007
1196
 
1008
- const rawContent = yield* params.generateText(providerOptions)
1197
+ const rawContent = yield* generateWithNonIncrementalFallback()
1009
1198
 
1010
1199
  // Resolve the generated tool calls
1011
1200
  const toolResults = yield* resolveToolCalls(
@@ -1024,6 +1213,13 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1024
1213
 
1025
1214
  const content = yield* Schema.decodeEffect(ResponseSchema)(rawContent)
1026
1215
 
1216
+ if (tracker) {
1217
+ const responseMetadata = content.find((part) => part.type === "response-metadata")
1218
+ if (Predicate.isNotUndefined(responseMetadata) && Predicate.isNotUndefined(responseMetadata.id)) {
1219
+ tracker.markParts(providerOptions.prompt.content, responseMetadata.id)
1220
+ }
1221
+ }
1222
+
1027
1223
  // Return the content merged with the tool call results
1028
1224
  return [...content, ...toolResults] as Array<Response.Part<Tools>>
1029
1225
  })
@@ -1040,21 +1236,11 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1040
1236
  AiError.AiError | Schema.SchemaError,
1041
1237
  IdGenerator
1042
1238
  >,
1043
- Options extends {
1044
- readonly toolkit: Effect.Effect<
1045
- Toolkit.WithHandler<Tools>,
1046
- infer _E,
1047
- infer _R
1048
- >
1049
- } ? _E
1239
+ Options extends { readonly toolkit: infer ToolkitValue } ?
1240
+ ExtractToolkitResolutionError<Exclude<ToolkitValue, undefined>>
1050
1241
  : never,
1051
- Options extends {
1052
- readonly toolkit: Effect.Effect<
1053
- Toolkit.WithHandler<Tools>,
1054
- infer _E,
1055
- infer _R
1056
- >
1057
- } ? _R
1242
+ Options extends { readonly toolkit: infer ToolkitValue } ?
1243
+ ExtractToolkitResolutionServices<Exclude<ToolkitValue, undefined>>
1058
1244
  : never
1059
1245
  > = Effect.fnUntraced(function*<
1060
1246
  Tools extends Record<string, Tool.Any>,
@@ -1063,8 +1249,27 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1063
1249
  options: Options & GenerateTextOptions<Tools>,
1064
1250
  providerOptions: Mutable<ProviderOptions>
1065
1251
  ) {
1252
+ const tracker = Option.getOrUndefined(yield* Effect.serviceOption(ResponseIdTracker.ResponseIdTracker))
1066
1253
  const toolChoice = options.toolChoice ?? "auto"
1067
1254
 
1255
+ const streamWithNonIncrementalFallback = () => {
1256
+ const requestOptions: ProviderOptions = {
1257
+ ...providerOptions
1258
+ }
1259
+ const fallbackPrompt = requestOptions.prompt
1260
+ const fallbackOptions: ProviderOptions = {
1261
+ ...requestOptions,
1262
+ prompt: fallbackPrompt,
1263
+ incrementalPrompt: undefined,
1264
+ previousResponseId: undefined
1265
+ }
1266
+ return requestOptions.incrementalPrompt
1267
+ ? params.streamText(requestOptions).pipe(
1268
+ Stream.catchReason("AiError", "InvalidRequestError", (_) => params.streamText(fallbackOptions))
1269
+ )
1270
+ : params.streamText(requestOptions)
1271
+ }
1272
+
1068
1273
  // Check for pending approvals that need resolution
1069
1274
  const { approved: pendingApproved, denied: pendingDenied } = collectToolApprovals(providerOptions.prompt.content, {
1070
1275
  excludeResolved: true
@@ -1085,23 +1290,40 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1085
1290
  })
1086
1291
  })
1087
1292
  }
1293
+ if (tracker) {
1294
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1295
+ if (Option.isSome(prepared)) {
1296
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1297
+ providerOptions.incrementalPrompt = prepared.value.prompt
1298
+ }
1299
+ }
1088
1300
  const schema = Schema.NonEmptyArray(Response.StreamPart(Toolkit.empty))
1089
1301
  const decodeParts = Schema.decodeEffect(schema)
1090
- return params
1091
- .streamText(providerOptions)
1092
- .pipe(
1093
- Stream.mapArrayEffect((parts) => decodeParts(parts))
1094
- ) as Stream.Stream<
1095
- Response.StreamPart<Tools>,
1096
- AiError.AiError | Schema.SchemaError,
1097
- IdGenerator
1098
- >
1302
+ return pipe(
1303
+ streamWithNonIncrementalFallback(),
1304
+ Stream.mapArrayEffect((parts) =>
1305
+ decodeParts(parts).pipe(
1306
+ tracker ?
1307
+ Effect.tap((decodedParts) => {
1308
+ for (const part of decodedParts) {
1309
+ if (part.type === "response-metadata" && Predicate.isNotUndefined(part.id)) {
1310
+ tracker.markParts(providerOptions.prompt.content, part.id)
1311
+ }
1312
+ }
1313
+ return Effect.void
1314
+ }) :
1315
+ identity
1316
+ )
1317
+ )
1318
+ ) as Stream.Stream<
1319
+ Response.StreamPart<Tools>,
1320
+ AiError.AiError | Schema.SchemaError,
1321
+ IdGenerator
1322
+ >
1099
1323
  }
1100
1324
 
1101
1325
  // If there is a toolkit resolve and apply it to the provider options
1102
- const toolkit = "asEffect" in options.toolkit
1103
- ? yield* options.toolkit
1104
- : options.toolkit
1326
+ const toolkit = yield* resolveToolkit<Tools, any, any>(options.toolkit)
1105
1327
 
1106
1328
  // If the toolkit is empty, return immediately
1107
1329
  if (Object.values(toolkit.tools).length === 0) {
@@ -1117,22 +1339,42 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1117
1339
  })
1118
1340
  })
1119
1341
  }
1342
+ if (tracker) {
1343
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1344
+ if (Option.isSome(prepared)) {
1345
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1346
+ providerOptions.incrementalPrompt = prepared.value.prompt
1347
+ }
1348
+ }
1120
1349
  const schema = Schema.NonEmptyArray(Response.StreamPart(Toolkit.empty))
1121
1350
  const decodeParts = Schema.decodeEffect(schema)
1122
- return params
1123
- .streamText(providerOptions)
1124
- .pipe(
1125
- Stream.mapArrayEffect((parts) => decodeParts(parts))
1126
- ) as Stream.Stream<
1127
- Response.StreamPart<Tools>,
1128
- AiError.AiError | Schema.SchemaError,
1129
- IdGenerator
1130
- >
1351
+ return pipe(
1352
+ streamWithNonIncrementalFallback(),
1353
+ Stream.mapArrayEffect((parts) =>
1354
+ decodeParts(parts).pipe(
1355
+ tracker ?
1356
+ Effect.tap((decodedParts) => {
1357
+ for (const part of decodedParts) {
1358
+ if (part.type === "response-metadata" && part.id) {
1359
+ tracker.markParts(providerOptions.prompt.content, part.id)
1360
+ }
1361
+ }
1362
+ return Effect.void
1363
+ }) :
1364
+ identity
1365
+ )
1366
+ )
1367
+ ) as Stream.Stream<
1368
+ Response.StreamPart<Tools>,
1369
+ AiError.AiError | Schema.SchemaError,
1370
+ IdGenerator
1371
+ >
1131
1372
  }
1132
1373
 
1133
- // Pre-resolve tool approvals before calling the LLM
1374
+ // Pre-resolve pending tool approvals before calling the LLM
1375
+ let preResolvedStreamParts: Array<Response.StreamPart<Tools>> = []
1376
+
1134
1377
  if (hasPendingApprovals) {
1135
- // Validate all approved tools exist in the toolkit
1136
1378
  for (const approval of pendingApproved) {
1137
1379
  if (approval.toolCall && !toolkit.tools[approval.toolCall.name]) {
1138
1380
  return yield* AiError.make({
@@ -1146,7 +1388,6 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1146
1388
  }
1147
1389
  }
1148
1390
 
1149
- // Execute approved tools and create denial results
1150
1391
  const approvedResults = yield* executeApprovedToolCalls(
1151
1392
  pendingApproved,
1152
1393
  toolkit,
@@ -1155,16 +1396,44 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1155
1396
  const deniedResults = createDenialResults(pendingDenied)
1156
1397
  const preResolvedResults = [...approvedResults, ...deniedResults]
1157
1398
 
1158
- // Add pre-resolved results to the prompt
1159
1399
  if (preResolvedResults.length > 0) {
1160
- const toolMessage = Prompt.makeMessage("tool", {
1161
- content: preResolvedResults
1162
- })
1163
1400
  providerOptions.prompt = Prompt.fromMessages([
1164
1401
  ...providerOptions.prompt.content,
1165
- toolMessage
1402
+ Prompt.makeMessage("tool", { content: preResolvedResults })
1166
1403
  ])
1167
1404
  }
1405
+
1406
+ // Emit pre-resolved tool-results as stream parts so Chat.streamText
1407
+ // persists them to history. This lets collectToolApprovals find them
1408
+ // on subsequent rounds and skip the now-resolved approvals.
1409
+ // Note: r.result is already encoded (from executeApprovedToolCalls /
1410
+ // createDenialResults), so it goes into both result and encodedResult.
1411
+ for (const r of preResolvedResults) {
1412
+ preResolvedStreamParts.push(
1413
+ Response.makePart("tool-result", {
1414
+ id: r.id,
1415
+ name: r.name,
1416
+ providerExecuted: false,
1417
+ preliminary: false,
1418
+ result: r.result,
1419
+ encodedResult: r.result,
1420
+ isFailure: r.isFailure
1421
+ }) as Response.StreamPart<Tools>
1422
+ )
1423
+ }
1424
+ }
1425
+
1426
+ // Strip all resolved approval artifacts (both current and from previous
1427
+ // rounds) in a single pass before sending to the provider.
1428
+ const { approved: allResolved, denied: allDenied } = collectToolApprovals(
1429
+ providerOptions.prompt.content
1430
+ )
1431
+ if (allResolved.length > 0 || allDenied.length > 0) {
1432
+ providerOptions.prompt = stripResolvedApprovals(
1433
+ providerOptions.prompt,
1434
+ allResolved,
1435
+ allDenied
1436
+ )
1168
1437
  }
1169
1438
 
1170
1439
  const tools = typeof toolChoice === "object" && "oneOf" in toolChoice
@@ -1173,20 +1442,39 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1173
1442
  providerOptions.tools = tools
1174
1443
  providerOptions.toolChoice = toolChoice
1175
1444
 
1445
+ if (tracker) {
1446
+ const prepared = tracker.prepareUnsafe(providerOptions.prompt)
1447
+ if (Option.isSome(prepared)) {
1448
+ providerOptions.previousResponseId = prepared.value.previousResponseId
1449
+ providerOptions.incrementalPrompt = prepared.value.prompt
1450
+ }
1451
+ }
1452
+
1176
1453
  // If tool call resolution is disabled, return the response without
1177
1454
  // resolving the tool calls that were generated
1178
1455
  if (options.disableToolCallResolution === true) {
1179
1456
  const schema = Schema.NonEmptyArray(Response.StreamPart(toolkit))
1180
1457
  const decodeParts = Schema.decodeEffect(schema)
1181
- return params
1182
- .streamText(providerOptions)
1183
- .pipe(
1184
- Stream.mapArrayEffect((parts) => decodeParts(parts))
1185
- ) as Stream.Stream<
1186
- Response.StreamPart<Tools>,
1187
- AiError.AiError | Schema.SchemaError,
1188
- IdGenerator
1189
- >
1458
+ return streamWithNonIncrementalFallback().pipe(
1459
+ Stream.mapArrayEffect((parts) =>
1460
+ decodeParts(parts).pipe(
1461
+ tracker ?
1462
+ Effect.tap((decodedParts) => {
1463
+ for (const part of decodedParts) {
1464
+ if (part.type === "response-metadata" && Predicate.isNotUndefined(part.id)) {
1465
+ tracker.markParts(providerOptions.prompt.content, part.id)
1466
+ }
1467
+ }
1468
+ return Effect.void
1469
+ }) :
1470
+ identity
1471
+ )
1472
+ )
1473
+ ) as Stream.Stream<
1474
+ Response.StreamPart<Tools>,
1475
+ AiError.AiError | Schema.SchemaError,
1476
+ IdGenerator
1477
+ >
1190
1478
  }
1191
1479
 
1192
1480
  const ResponseSchema = Schema.NonEmptyArray(Response.StreamPart(toolkit))
@@ -1196,59 +1484,81 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1196
1484
  const queue = yield* Queue.make<
1197
1485
  Response.StreamPart<Tools>,
1198
1486
  | AiError.AiError
1199
- | AiError.AiErrorReason
1200
1487
  | Cause.Done
1201
1488
  | Schema.SchemaError
1202
1489
  >()
1490
+ const deferredFinishParts: Array<Response.StreamPart<Tools>> = []
1491
+
1492
+ // Emit pre-resolved tool results so Chat.streamText persists them to
1493
+ // history. This ensures collectToolApprovals({ excludeResolved }) can
1494
+ // find the corresponding tool-results on future rounds.
1495
+ if (preResolvedStreamParts.length > 0) {
1496
+ yield* Queue.offerAll(queue, preResolvedStreamParts)
1497
+ }
1203
1498
 
1204
1499
  // FiberSet to track concurrent tool call handlers
1205
1500
  const toolCallFibers = yield* FiberSet.make<void, AiError.AiError>()
1206
1501
 
1207
1502
  // Helper function to handle tool calls with approval logic
1208
- const handleToolCall = (part: Response.ToolCallPartEncoded) =>
1209
- Effect.gen(function*() {
1210
- const tool = toolkit.tools[part.name]
1211
- if (!tool) {
1212
- return
1213
- }
1503
+ const handleToolCall = Effect.fnUntraced(function*(part: Response.ToolCallPartEncoded) {
1504
+ const tool = toolkit.tools[part.name]
1505
+ if (!tool) return
1506
+
1507
+ const needsApproval = yield* isApprovalNeeded(
1508
+ tool,
1509
+ part,
1510
+ providerOptions.prompt.content
1511
+ )
1214
1512
 
1215
- const needsApproval = yield* isApprovalNeeded(
1216
- tool,
1217
- part,
1218
- providerOptions.prompt.content
1219
- )
1513
+ if (needsApproval) {
1514
+ const idGen = yield* IdGenerator
1515
+ const approvalId = yield* idGen.generateId()
1516
+ const approvalPart = Response.makePart("tool-approval-request", {
1517
+ approvalId,
1518
+ toolCallId: part.id
1519
+ }) as Response.StreamPart<Tools>
1520
+ yield* Queue.offer(queue, approvalPart)
1521
+ return
1522
+ }
1220
1523
 
1221
- if (needsApproval) {
1222
- const idGen = yield* IdGenerator
1223
- const approvalId = yield* idGen.generateId()
1224
- const approvalPart = Response.makePart("tool-approval-request", {
1225
- approvalId,
1226
- toolCallId: part.id
1524
+ yield* toolkit.handle(part.name, part.params as any).pipe(
1525
+ Stream.unwrap,
1526
+ Stream.runForEach((result) => {
1527
+ const toolResultPart = Response.makePart("tool-result", {
1528
+ id: part.id,
1529
+ name: part.name,
1530
+ providerExecuted: false,
1531
+ ...result
1227
1532
  }) as Response.StreamPart<Tools>
1228
- yield* Queue.offer(queue, approvalPart)
1229
- return
1230
- }
1231
-
1232
- yield* toolkit.handle(part.name, part.params as any).pipe(
1233
- Stream.unwrap,
1234
- Stream.runForEach((result) => {
1235
- const toolResultPart = Response.makePart("tool-result", {
1236
- id: part.id,
1237
- name: part.name,
1238
- providerExecuted: false,
1239
- ...result
1240
- }) as Response.StreamPart<Tools>
1241
- return Queue.offer(queue, toolResultPart)
1242
- })
1243
- )
1244
- })
1533
+ return Queue.offer(queue, toolResultPart)
1534
+ })
1535
+ )
1536
+ })
1245
1537
 
1246
- yield* params.streamText(providerOptions).pipe(
1538
+ yield* streamWithNonIncrementalFallback().pipe(
1247
1539
  Stream.runForEachArray(
1248
1540
  Effect.fnUntraced(function*(chunk) {
1249
1541
  const parts = yield* decodeParts(chunk)
1250
- // Add decoded response parts to the output queue
1251
- yield* Queue.offerAll(queue, parts)
1542
+ if (tracker) {
1543
+ for (const part of parts) {
1544
+ if (part.type === "response-metadata" && part.id) {
1545
+ tracker.markParts(providerOptions.prompt.content, part.id)
1546
+ }
1547
+ }
1548
+ }
1549
+ // Defer finish parts until all tool handlers complete. This guarantees
1550
+ // tool results are emitted before finish in streaming mode.
1551
+ const immediateParts: Array<Response.StreamPart<Tools>> = []
1552
+ for (const part of parts) {
1553
+ if (part.type === "finish") {
1554
+ deferredFinishParts.push(part)
1555
+ } else {
1556
+ immediateParts.push(part)
1557
+ }
1558
+ }
1559
+ if (immediateParts.length > 0) {
1560
+ yield* Queue.offerAll(queue, immediateParts)
1561
+ }
1252
1562
  // Fork tool call handlers - use the raw chunk for encoded params
1253
1563
  for (const part of chunk) {
1254
1564
  if (part.type === "tool-call" && part.providerExecuted !== true) {
@@ -1266,6 +1576,9 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1266
1576
  FiberSet.awaitEmpty(toolCallFibers)
1267
1577
  )
1268
1578
  ),
1579
+ Effect.andThen(
1580
+ Queue.offerAll(queue, deferredFinishParts)
1581
+ ),
1269
1582
  // And then end the queue
1270
1583
  Effect.andThen(Queue.end(queue)),
1271
1584
  Effect.tapCause((cause) => Queue.failCause(queue, cause)),
@@ -1276,9 +1589,9 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1276
1589
  }) as any
1277
1590
 
1278
1591
  return {
1279
- generateText,
1592
+ generateText: generateText as Service["generateText"],
1280
1593
  generateObject,
1281
- streamText
1594
+ streamText: streamText as Service["streamText"]
1282
1595
  } as const
1283
1596
  })
1284
1597
 
@@ -1310,19 +1623,48 @@ export const make: (params: ConstructorParams) => Effect.Effect<Service> = Effec
1310
1623
  * @since 4.0.0
1311
1624
  * @category text generation
1312
1625
  */
1313
- export const generateText = <
1314
- Options extends NoExcessProperties<GenerateTextOptions<any>, Options>,
1315
- Tools extends Record<string, Tool.Any> = {}
1316
- >(
1317
- options: Options & GenerateTextOptions<Tools>
1318
- ): Effect.Effect<
1319
- GenerateTextResponse<Tools>,
1320
- ExtractError<Options>,
1321
- LanguageModel | ExtractServices<Options>
1626
+ export const generateText: {
1627
+ // No toolkit: force `{}` instead of falling back to `Record<string, Tool.Any>`.
1628
+ <
1629
+ Options extends NoExcessProperties<GenerateTextOptionsWithoutToolkit, Options>
1630
+ >(
1631
+ options: Options & GenerateTextOptionsWithoutToolkit
1632
+ ): Effect.Effect<
1633
+ GenerateTextResponse<{}>,
1634
+ ExtractError<Options>,
1635
+ LanguageModel | ExtractServices<Options>
1636
+ >
1637
+ // Generic toolkit: preserve caller-supplied `Tools` in helpers like `<Tools>(toolkit: WithHandler<Tools>) => ...`.
1638
+ <
1639
+ Tools extends Record<string, Tool.Any>,
1640
+ Options extends NoExcessProperties<GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }, Options>
1641
+ >(
1642
+ options: Options & GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }
1643
+ ): Effect.Effect<
1644
+ GenerateTextResponse<Tools>,
1645
+ ExtractError<Options>,
1646
+ LanguageModel | ExtractServices<Options>
1647
+ >
1648
+ // Toolkit unions: recover distributive `ExtractTools<Options>` inference for `toolkitA | toolkitB` call sites.
1649
+ <
1650
+ Options extends {
1651
+ readonly toolkit: ToolkitOption<any>
1652
+ } & NoExcessProperties<GenerateTextOptions<any>, Options>
1653
+ >(
1654
+ options: Options & GenerateTextOptions<ExtractTools<Options>> & { readonly toolkit: Options["toolkit"] }
1655
+ ): Effect.Effect<
1656
+ GenerateTextResponse<ExtractTools<Options>>,
1657
+ ExtractError<Options>,
1658
+ ExtractServices<Options> | LanguageModel
1659
+ >
1660
+ } = (options: GenerateTextOptions<any>): Effect.Effect<
1661
+ GenerateTextResponse<any>,
1662
+ AiError.AiError,
1663
+ LanguageModel
1322
1664
  > =>
1323
1665
  Effect.flatMap(
1324
1666
  Effect.service(LanguageModel),
1325
- (model) => model.generateText(options)
1667
+ (model) => model.generateText(options as any)
1326
1668
  )
1327
1669
 
1328
1670
  /**
@@ -1359,23 +1701,22 @@ export const generateText = <
1359
1701
  */
1360
1702
  export const generateObject = <
1361
1703
  ObjectEncoded extends Record<string, any>,
1362
- StructuredOutputSchema extends Schema.Codec<any, ObjectEncoded, any, any>,
1704
+ StructuredOutputSchema extends Schema.Encoder<ObjectEncoded, unknown>,
1363
1705
  Options extends NoExcessProperties<
1364
1706
  GenerateObjectOptions<any, StructuredOutputSchema>,
1365
1707
  Options
1366
- >,
1367
- Tools extends Record<string, Tool.Any> = {}
1708
+ >
1368
1709
  >(
1369
- options: Options & GenerateObjectOptions<Tools, StructuredOutputSchema>
1710
+ options: Options & GenerateObjectOptions<ExtractTools<Options>, StructuredOutputSchema>
1370
1711
  ): Effect.Effect<
1371
- GenerateObjectResponse<Tools, StructuredOutputSchema["Type"]>,
1712
+ GenerateObjectResponse<ExtractTools<Options>, StructuredOutputSchema["Type"]>,
1372
1713
  ExtractError<Options>,
1373
1714
  ExtractServices<Options> | StructuredOutputSchema["DecodingServices"] | LanguageModel
1374
1715
  > =>
1375
1716
  Effect.flatMap(
1376
1717
  Effect.service(LanguageModel),
1377
- (model) => model.generateObject(options)
1378
- )
1718
+ (model) => model.generateObject(options as any)
1719
+ ) as any
1379
1720
 
1380
1721
  /**
1381
1722
  * Generate text using a language model with streaming output.
@@ -1401,20 +1742,49 @@ export const generateObject = <
1401
1742
  * @since 4.0.0
1402
1743
  * @category text generation
1403
1744
  */
1404
- export const streamText = <
1405
- Options extends NoExcessProperties<GenerateTextOptions<any>, Options>,
1406
- Tools extends Record<string, Tool.Any> = {}
1407
- >(
1408
- options: Options & GenerateTextOptions<Tools>
1409
- ): Stream.Stream<
1410
- Response.StreamPart<Tools>,
1411
- ExtractError<Options>,
1412
- ExtractServices<Options> | LanguageModel
1745
+ export const streamText: {
1746
+ // No toolkit: force `{}` instead of falling back to `Record<string, Tool.Any>`.
1747
+ <
1748
+ Options extends NoExcessProperties<GenerateTextOptionsWithoutToolkit, Options>
1749
+ >(
1750
+ options: Options & GenerateTextOptionsWithoutToolkit
1751
+ ): Stream.Stream<
1752
+ Response.StreamPart<{}>,
1753
+ ExtractError<Options>,
1754
+ ExtractServices<Options> | LanguageModel
1755
+ >
1756
+ // Generic toolkit: preserve caller-supplied `Tools` in helpers like `<Tools>(toolkit: WithHandler<Tools>) => ...`.
1757
+ <
1758
+ Tools extends Record<string, Tool.Any>,
1759
+ Options extends NoExcessProperties<GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }, Options>
1760
+ >(
1761
+ options: Options & GenerateTextOptions<Tools> & { readonly toolkit: ToolkitInput<Tools> }
1762
+ ): Stream.Stream<
1763
+ Response.StreamPart<Tools>,
1764
+ ExtractError<Options>,
1765
+ ExtractServices<Options> | LanguageModel
1766
+ >
1767
+ // Toolkit unions: recover distributive `ExtractTools<Options>` inference for `toolkitA | toolkitB` call sites.
1768
+ <
1769
+ Options extends {
1770
+ readonly toolkit: ToolkitOption<any>
1771
+ } & NoExcessProperties<GenerateTextOptions<any>, Options>
1772
+ >(
1773
+ options: Options & GenerateTextOptions<ExtractTools<Options>> & { readonly toolkit: Options["toolkit"] }
1774
+ ): Stream.Stream<
1775
+ Response.StreamPart<ExtractTools<Options>>,
1776
+ ExtractError<Options>,
1777
+ ExtractServices<Options> | LanguageModel
1778
+ >
1779
+ } = (options: GenerateTextOptions<any>): Stream.Stream<
1780
+ Response.StreamPart<{}>,
1781
+ AiError.AiError,
1782
+ LanguageModel
1413
1783
  > =>
1414
1784
  Stream.unwrap(Effect.map(
1415
1785
  Effect.service(LanguageModel),
1416
- (model) => model.streamText(options)
1417
- ))
1786
+ (model) => model.streamText(options as any)
1787
+ )) as any
1418
1788
 
1419
1789
  // =============================================================================
1420
1790
  // Tool Approval Helpers
@@ -1506,6 +1876,63 @@ const collectToolApprovals = (
1506
1876
  return { approved, denied }
1507
1877
  }
1508
1878
 
1879
+ /**
1880
+ * Strip resolved approval artifacts from the prompt before sending to the
1881
+ * provider. After pre-resolving approvals (executing approved tools and
1882
+ * creating denial results), the original `tool-approval-request` parts in
1883
+ * assistant messages and `tool-approval-response` parts in tool messages are
1884
+ * no longer needed. Leaving them in causes provider-specific errors (e.g.
1885
+ * OpenAI rejects `mcp_approval_response` items that reference approval
1886
+ * requests it never issued).
1887
+ */
1888
+ const stripResolvedApprovals = (
1889
+ prompt: Prompt.Prompt,
1890
+ approved: ReadonlyArray<ApprovalResult>,
1891
+ denied: ReadonlyArray<ApprovalResult>
1892
+ ): Prompt.Prompt => {
1893
+ const resolvedApprovalIds = new Set<string>()
1894
+ for (const a of approved) resolvedApprovalIds.add(a.approvalId)
1895
+ for (const d of denied) resolvedApprovalIds.add(d.approvalId)
1896
+
1897
+ const cleanedMessages: Array<Prompt.Message> = []
1898
+
1899
+ for (const message of prompt.content) {
1900
+ if (message.role === "assistant") {
1901
+ const filteredContent = message.content.filter(
1902
+ (part) =>
1903
+ part.type !== "tool-approval-request" ||
1904
+ !resolvedApprovalIds.has(part.approvalId)
1905
+ )
1906
+ if (filteredContent.length > 0) {
1907
+ cleanedMessages.push(
1908
+ Prompt.makeMessage("assistant", {
1909
+ content: filteredContent,
1910
+ options: message.options
1911
+ })
1912
+ )
1913
+ }
1914
+ } else if (message.role === "tool") {
1915
+ const filteredContent = message.content.filter(
1916
+ (part) =>
1917
+ part.type !== "tool-approval-response" ||
1918
+ !resolvedApprovalIds.has(part.approvalId)
1919
+ )
1920
+ if (filteredContent.length > 0) {
1921
+ cleanedMessages.push(
1922
+ Prompt.makeMessage("tool", {
1923
+ content: filteredContent,
1924
+ options: message.options
1925
+ })
1926
+ )
1927
+ }
1928
+ } else {
1929
+ cleanedMessages.push(message)
1930
+ }
1931
+ }
1932
+
1933
+ return Prompt.fromMessages(cleanedMessages)
1934
+ }
1935
+
1509
1936
  const isApprovalNeeded = Effect.fnUntraced(function*<T extends Tool.Any>(
1510
1937
  tool: T,
1511
1938
  toolCall: Response.ToolCallPartEncoded,
@@ -1734,11 +2161,11 @@ const resolveToolCalls = <Tools extends Record<string, Tool.Any>>(
1734
2161
  // =============================================================================
1735
2162
 
1736
2163
  const resolveToolkit = <Tools extends Record<string, Tool.Any>, E, R>(
1737
- toolkit:
1738
- | Toolkit.WithHandler<Tools>
1739
- | Effect.Yieldable<Toolkit.Toolkit<any>, Toolkit.WithHandler<Tools>, E, R>
2164
+ toolkit: ToolkitInput<Tools, E, R>
1740
2165
  ): Effect.Effect<Toolkit.WithHandler<Tools>, E, R> =>
1741
- "asEffect" in toolkit ? toolkit.asEffect() : Effect.succeed(toolkit)
2166
+ ("asEffect" in toolkit
2167
+ ? toolkit.asEffect()
2168
+ : Effect.succeed(toolkit as unknown as Toolkit.WithHandler<Tools>)) as any
1742
2169
 
1743
2170
  /** @internal */
1744
2171
  export const getObjectName = <StructuredOutputSchema extends Schema.Top>(
@@ -1761,29 +2188,32 @@ export const getObjectName = <StructuredOutputSchema extends Schema.Top>(
1761
2188
  const resolveStructuredOutput = Effect.fnUntraced(function*<
1762
2189
  StructuredOutputSchema extends Schema.Top
1763
2190
  >(response: ReadonlyArray<Response.AllParts<any>>, schema: StructuredOutputSchema) {
1764
- const text: Array<string> = []
2191
+ const texts: Array<string> = []
1765
2192
  for (const part of response) {
1766
2193
  if (part.type === "text") {
1767
- text.push(part.text)
2194
+ texts.push(part.text)
1768
2195
  }
1769
2196
  }
1770
2197
 
2198
+ const text = texts.join("")
2199
+
1771
2200
  if (text.length === 0) {
1772
2201
  return yield* AiError.make({
1773
2202
  module: "LanguageModel",
1774
2203
  method: "generateObject",
1775
2204
  reason: new AiError.StructuredOutputError({
1776
- description: "No text content in response"
2205
+ description: "No text content in response",
2206
+ responseText: text
1777
2207
  })
1778
2208
  })
1779
2209
  }
1780
2210
 
1781
2211
  const decode = Schema.decodeEffect(Schema.fromJsonString(schema))
1782
- return yield* Effect.mapError(decode(text.join("")), (error) =>
2212
+ return yield* Effect.mapError(decode(text), (error) =>
1783
2213
  AiError.make({
1784
2214
  module: "LanguageModel",
1785
2215
  method: "generateObject",
1786
- reason: AiError.StructuredOutputError.fromSchemaError(error)
2216
+ reason: AiError.StructuredOutputError.fromSchemaError(error, text)
1787
2217
  }))
1788
2218
  })
1789
2219