effect 4.0.0 → 4.0.2

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 (1001) hide show
  1. package/ai-docs/package.json +2 -2
  2. package/ai-docs/tsconfig.json +2 -1
  3. package/dist/Array.d.ts +339 -0
  4. package/dist/Array.d.ts.map +1 -1
  5. package/dist/Array.js +143 -3
  6. package/dist/Array.js.map +1 -1
  7. package/dist/BigDecimal.d.ts +88 -0
  8. package/dist/BigDecimal.d.ts.map +1 -1
  9. package/dist/BigDecimal.js +44 -0
  10. package/dist/BigDecimal.js.map +1 -1
  11. package/dist/BigInt.d.ts +68 -0
  12. package/dist/BigInt.d.ts.map +1 -1
  13. package/dist/BigInt.js +36 -0
  14. package/dist/BigInt.js.map +1 -1
  15. package/dist/Boolean.d.ts +34 -0
  16. package/dist/Boolean.d.ts.map +1 -1
  17. package/dist/Boolean.js +18 -0
  18. package/dist/Boolean.js.map +1 -1
  19. package/dist/Brand.d.ts +9 -0
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +6 -0
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ByteSize.d.ts +86 -0
  24. package/dist/ByteSize.d.ts.map +1 -1
  25. package/dist/ByteSize.js +51 -0
  26. package/dist/ByteSize.js.map +1 -1
  27. package/dist/Cache.d.ts +38 -1
  28. package/dist/Cache.d.ts.map +1 -1
  29. package/dist/Cache.js +47 -23
  30. package/dist/Cache.js.map +1 -1
  31. package/dist/Cause.d.ts +82 -0
  32. package/dist/Cause.d.ts.map +1 -1
  33. package/dist/Cause.js +61 -1
  34. package/dist/Cause.js.map +1 -1
  35. package/dist/Channel.d.ts +327 -4
  36. package/dist/Channel.d.ts.map +1 -1
  37. package/dist/Channel.js +168 -8
  38. package/dist/Channel.js.map +1 -1
  39. package/dist/ChannelSchema.d.ts +11 -0
  40. package/dist/ChannelSchema.d.ts.map +1 -1
  41. package/dist/ChannelSchema.js +6 -0
  42. package/dist/ChannelSchema.js.map +1 -1
  43. package/dist/Chunk.d.ts +192 -0
  44. package/dist/Chunk.d.ts.map +1 -1
  45. package/dist/Chunk.js +78 -0
  46. package/dist/Chunk.js.map +1 -1
  47. package/dist/Clock.d.ts +7 -0
  48. package/dist/Clock.d.ts.map +1 -1
  49. package/dist/Clock.js +5 -0
  50. package/dist/Clock.js.map +1 -1
  51. package/dist/Combiner.d.ts +10 -0
  52. package/dist/Combiner.d.ts.map +1 -1
  53. package/dist/Combiner.js +8 -0
  54. package/dist/Combiner.js.map +1 -1
  55. package/dist/Config.d.ts +52 -12
  56. package/dist/Config.d.ts.map +1 -1
  57. package/dist/Config.js +55 -5
  58. package/dist/Config.js.map +1 -1
  59. package/dist/ConfigProvider.d.ts +28 -0
  60. package/dist/ConfigProvider.d.ts.map +1 -1
  61. package/dist/ConfigProvider.js +19 -0
  62. package/dist/ConfigProvider.js.map +1 -1
  63. package/dist/Console.d.ts +22 -0
  64. package/dist/Console.d.ts.map +1 -1
  65. package/dist/Console.js +20 -0
  66. package/dist/Console.js.map +1 -1
  67. package/dist/Context.d.ts +50 -0
  68. package/dist/Context.d.ts.map +1 -1
  69. package/dist/Context.js +21 -0
  70. package/dist/Context.js.map +1 -1
  71. package/dist/Cron.d.ts +16 -0
  72. package/dist/Cron.d.ts.map +1 -1
  73. package/dist/Cron.js +26 -1
  74. package/dist/Cron.js.map +1 -1
  75. package/dist/Crypto.d.ts +5 -0
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +3 -0
  78. package/dist/Crypto.js.map +1 -1
  79. package/dist/Data.d.ts +13 -0
  80. package/dist/Data.d.ts.map +1 -1
  81. package/dist/Data.js +5 -0
  82. package/dist/Data.js.map +1 -1
  83. package/dist/DateTime.d.ts +171 -0
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +89 -0
  86. package/dist/DateTime.js.map +1 -1
  87. package/dist/Deferred.d.ts +51 -0
  88. package/dist/Deferred.d.ts.map +1 -1
  89. package/dist/Deferred.js +22 -0
  90. package/dist/Deferred.js.map +1 -1
  91. package/dist/Differ.d.ts +2 -0
  92. package/dist/Differ.d.ts.map +1 -1
  93. package/dist/Differ.js +1 -0
  94. package/dist/Duration.d.ts +90 -0
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +53 -0
  97. package/dist/Duration.js.map +1 -1
  98. package/dist/Effect.d.ts +677 -22
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +251 -10
  101. package/dist/Effect.js.map +1 -1
  102. package/dist/Effectable.d.ts +4 -0
  103. package/dist/Effectable.d.ts.map +1 -1
  104. package/dist/Effectable.js +3 -0
  105. package/dist/Effectable.js.map +1 -1
  106. package/dist/Equal.d.ts +8 -0
  107. package/dist/Equal.d.ts.map +1 -1
  108. package/dist/Equal.js +9 -1
  109. package/dist/Equal.js.map +1 -1
  110. package/dist/Equivalence.d.ts +21 -0
  111. package/dist/Equivalence.d.ts.map +1 -1
  112. package/dist/Equivalence.js +16 -0
  113. package/dist/Equivalence.js.map +1 -1
  114. package/dist/ErrorReporter.d.ts +36 -0
  115. package/dist/ErrorReporter.d.ts.map +1 -1
  116. package/dist/ErrorReporter.js +11 -0
  117. package/dist/ErrorReporter.js.map +1 -1
  118. package/dist/ExecutionPlan.d.ts +49 -8
  119. package/dist/ExecutionPlan.d.ts.map +1 -1
  120. package/dist/ExecutionPlan.js +7 -0
  121. package/dist/ExecutionPlan.js.map +1 -1
  122. package/dist/Exit.d.ts +40 -0
  123. package/dist/Exit.d.ts.map +1 -1
  124. package/dist/Exit.js +27 -0
  125. package/dist/Exit.js.map +1 -1
  126. package/dist/Fiber.d.ts +20 -0
  127. package/dist/Fiber.d.ts.map +1 -1
  128. package/dist/Fiber.js +11 -0
  129. package/dist/Fiber.js.map +1 -1
  130. package/dist/FiberHandle.d.ts +21 -0
  131. package/dist/FiberHandle.d.ts.map +1 -1
  132. package/dist/FiberHandle.js +21 -4
  133. package/dist/FiberHandle.js.map +1 -1
  134. package/dist/FiberMap.d.ts +35 -0
  135. package/dist/FiberMap.d.ts.map +1 -1
  136. package/dist/FiberMap.js +19 -0
  137. package/dist/FiberMap.js.map +1 -1
  138. package/dist/FiberSet.d.ts +20 -0
  139. package/dist/FiberSet.d.ts.map +1 -1
  140. package/dist/FiberSet.js +14 -0
  141. package/dist/FiberSet.js.map +1 -1
  142. package/dist/FileSystem.d.ts +15 -0
  143. package/dist/FileSystem.d.ts.map +1 -1
  144. package/dist/FileSystem.js +8 -0
  145. package/dist/FileSystem.js.map +1 -1
  146. package/dist/Filter.d.ts +55 -0
  147. package/dist/Filter.d.ts.map +1 -1
  148. package/dist/Filter.js +28 -0
  149. package/dist/Filter.js.map +1 -1
  150. package/dist/Formatter.d.ts +3 -0
  151. package/dist/Formatter.d.ts.map +1 -1
  152. package/dist/Formatter.js +39 -1
  153. package/dist/Formatter.js.map +1 -1
  154. package/dist/Function.d.ts +30 -0
  155. package/dist/Function.d.ts.map +1 -1
  156. package/dist/Function.js +20 -0
  157. package/dist/Function.js.map +1 -1
  158. package/dist/Graph.d.ts +247 -12
  159. package/dist/Graph.d.ts.map +1 -1
  160. package/dist/Graph.js +149 -28
  161. package/dist/Graph.js.map +1 -1
  162. package/dist/HKT.d.ts +5 -0
  163. package/dist/HKT.d.ts.map +1 -1
  164. package/dist/Hash.d.ts +14 -0
  165. package/dist/Hash.d.ts.map +1 -1
  166. package/dist/Hash.js +12 -0
  167. package/dist/Hash.js.map +1 -1
  168. package/dist/HashMap.d.ts +91 -0
  169. package/dist/HashMap.d.ts.map +1 -1
  170. package/dist/HashMap.js +39 -0
  171. package/dist/HashMap.js.map +1 -1
  172. package/dist/HashRing.d.ts +17 -0
  173. package/dist/HashRing.d.ts.map +1 -1
  174. package/dist/HashRing.js +22 -5
  175. package/dist/HashRing.js.map +1 -1
  176. package/dist/HashSet.d.ts +49 -0
  177. package/dist/HashSet.d.ts.map +1 -1
  178. package/dist/HashSet.js +19 -0
  179. package/dist/HashSet.js.map +1 -1
  180. package/dist/Inspectable.d.ts +7 -0
  181. package/dist/Inspectable.d.ts.map +1 -1
  182. package/dist/Inspectable.js +6 -0
  183. package/dist/Inspectable.js.map +1 -1
  184. package/dist/Iterable.d.ts +127 -0
  185. package/dist/Iterable.d.ts.map +1 -1
  186. package/dist/Iterable.js +51 -0
  187. package/dist/Iterable.js.map +1 -1
  188. package/dist/JsonPatch.d.ts +4 -0
  189. package/dist/JsonPatch.d.ts.map +1 -1
  190. package/dist/JsonPatch.js +3 -0
  191. package/dist/JsonPatch.js.map +1 -1
  192. package/dist/JsonPointer.d.ts +5 -0
  193. package/dist/JsonPointer.d.ts.map +1 -1
  194. package/dist/JsonPointer.js +5 -0
  195. package/dist/JsonPointer.js.map +1 -1
  196. package/dist/JsonSchema.d.ts +16 -0
  197. package/dist/JsonSchema.d.ts.map +1 -1
  198. package/dist/JsonSchema.js +11 -0
  199. package/dist/JsonSchema.js.map +1 -1
  200. package/dist/Latch.d.ts +14 -0
  201. package/dist/Latch.d.ts.map +1 -1
  202. package/dist/Latch.js +10 -0
  203. package/dist/Latch.js.map +1 -1
  204. package/dist/Layer.d.ts +100 -0
  205. package/dist/Layer.d.ts.map +1 -1
  206. package/dist/Layer.js +45 -1
  207. package/dist/Layer.js.map +1 -1
  208. package/dist/LayerMap.d.ts +7 -0
  209. package/dist/LayerMap.d.ts.map +1 -1
  210. package/dist/LayerMap.js +4 -0
  211. package/dist/LayerMap.js.map +1 -1
  212. package/dist/LayerRef.d.ts +5 -0
  213. package/dist/LayerRef.d.ts.map +1 -1
  214. package/dist/LayerRef.js +3 -0
  215. package/dist/LayerRef.js.map +1 -1
  216. package/dist/LogLevel.d.ts +20 -0
  217. package/dist/LogLevel.d.ts.map +1 -1
  218. package/dist/LogLevel.js +9 -0
  219. package/dist/LogLevel.js.map +1 -1
  220. package/dist/Logger.d.ts +25 -0
  221. package/dist/Logger.d.ts.map +1 -1
  222. package/dist/Logger.js +30 -4
  223. package/dist/Logger.js.map +1 -1
  224. package/dist/ManagedRuntime.d.ts +5 -0
  225. package/dist/ManagedRuntime.d.ts.map +1 -1
  226. package/dist/ManagedRuntime.js +9 -1
  227. package/dist/ManagedRuntime.js.map +1 -1
  228. package/dist/Match.d.ts +51 -0
  229. package/dist/Match.d.ts.map +1 -1
  230. package/dist/Match.js +39 -0
  231. package/dist/Match.js.map +1 -1
  232. package/dist/Metric.d.ts +59 -0
  233. package/dist/Metric.d.ts.map +1 -1
  234. package/dist/Metric.js +31 -0
  235. package/dist/Metric.js.map +1 -1
  236. package/dist/MutableHashMap.d.ts +32 -0
  237. package/dist/MutableHashMap.d.ts.map +1 -1
  238. package/dist/MutableHashMap.js +16 -0
  239. package/dist/MutableHashMap.js.map +1 -1
  240. package/dist/MutableHashSet.d.ts +16 -0
  241. package/dist/MutableHashSet.d.ts.map +1 -1
  242. package/dist/MutableHashSet.js +10 -0
  243. package/dist/MutableHashSet.js.map +1 -1
  244. package/dist/MutableList.d.ts +20 -0
  245. package/dist/MutableList.d.ts.map +1 -1
  246. package/dist/MutableList.js +18 -0
  247. package/dist/MutableList.js.map +1 -1
  248. package/dist/MutableRef.d.ts +31 -0
  249. package/dist/MutableRef.d.ts.map +1 -1
  250. package/dist/MutableRef.js +17 -0
  251. package/dist/MutableRef.js.map +1 -1
  252. package/dist/Newtype.d.ts +9 -0
  253. package/dist/Newtype.d.ts.map +1 -1
  254. package/dist/Newtype.js +6 -0
  255. package/dist/Newtype.js.map +1 -1
  256. package/dist/NonEmptyIterable.d.ts +4 -0
  257. package/dist/NonEmptyIterable.d.ts.map +1 -1
  258. package/dist/NonEmptyIterable.js +2 -0
  259. package/dist/NonEmptyIterable.js.map +1 -1
  260. package/dist/Number.d.ts +61 -0
  261. package/dist/Number.d.ts.map +1 -1
  262. package/dist/Number.js +31 -0
  263. package/dist/Number.js.map +1 -1
  264. package/dist/Optic.d.ts +41 -0
  265. package/dist/Optic.d.ts.map +1 -1
  266. package/dist/Optic.js +20 -0
  267. package/dist/Optic.js.map +1 -1
  268. package/dist/Option.d.ts +134 -0
  269. package/dist/Option.d.ts.map +1 -1
  270. package/dist/Option.js +61 -0
  271. package/dist/Option.js.map +1 -1
  272. package/dist/Order.d.ts +29 -0
  273. package/dist/Order.d.ts.map +1 -1
  274. package/dist/Order.js +24 -0
  275. package/dist/Order.js.map +1 -1
  276. package/dist/Ordering.d.ts +7 -0
  277. package/dist/Ordering.d.ts.map +1 -1
  278. package/dist/Ordering.js +3 -0
  279. package/dist/Ordering.js.map +1 -1
  280. package/dist/PartitionedSemaphore.d.ts +24 -0
  281. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  282. package/dist/PartitionedSemaphore.js +47 -21
  283. package/dist/PartitionedSemaphore.js.map +1 -1
  284. package/dist/Path.d.ts +6 -0
  285. package/dist/Path.d.ts.map +1 -1
  286. package/dist/Path.js +4 -0
  287. package/dist/Path.js.map +1 -1
  288. package/dist/Pipeable.d.ts +7 -0
  289. package/dist/Pipeable.d.ts.map +1 -1
  290. package/dist/Pipeable.js +5 -0
  291. package/dist/Pipeable.js.map +1 -1
  292. package/dist/PlatformError.d.ts +8 -0
  293. package/dist/PlatformError.d.ts.map +1 -1
  294. package/dist/PlatformError.js +7 -0
  295. package/dist/PlatformError.js.map +1 -1
  296. package/dist/Pool.d.ts +28 -5
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +42 -42
  299. package/dist/Pool.js.map +1 -1
  300. package/dist/Predicate.d.ts +84 -0
  301. package/dist/Predicate.d.ts.map +1 -1
  302. package/dist/Predicate.js +48 -0
  303. package/dist/Predicate.js.map +1 -1
  304. package/dist/PrimaryKey.d.ts +5 -0
  305. package/dist/PrimaryKey.d.ts.map +1 -1
  306. package/dist/PrimaryKey.js +4 -0
  307. package/dist/PrimaryKey.js.map +1 -1
  308. package/dist/PubSub.d.ts +67 -5
  309. package/dist/PubSub.d.ts.map +1 -1
  310. package/dist/PubSub.js +60 -8
  311. package/dist/PubSub.js.map +1 -1
  312. package/dist/Pull.d.ts +20 -0
  313. package/dist/Pull.d.ts.map +1 -1
  314. package/dist/Pull.js +10 -0
  315. package/dist/Pull.js.map +1 -1
  316. package/dist/Queue.d.ts +60 -0
  317. package/dist/Queue.d.ts.map +1 -1
  318. package/dist/Queue.js +58 -8
  319. package/dist/Queue.js.map +1 -1
  320. package/dist/Random.d.ts +13 -0
  321. package/dist/Random.d.ts.map +1 -1
  322. package/dist/Random.js +9 -0
  323. package/dist/Random.js.map +1 -1
  324. package/dist/RcMap.d.ts +23 -0
  325. package/dist/RcMap.d.ts.map +1 -1
  326. package/dist/RcMap.js +24 -1
  327. package/dist/RcMap.js.map +1 -1
  328. package/dist/RcRef.d.ts +6 -0
  329. package/dist/RcRef.d.ts.map +1 -1
  330. package/dist/RcRef.js +3 -0
  331. package/dist/RcRef.js.map +1 -1
  332. package/dist/Record.d.ts +100 -0
  333. package/dist/Record.d.ts.map +1 -1
  334. package/dist/Record.js +43 -0
  335. package/dist/Record.js.map +1 -1
  336. package/dist/Redactable.d.ts +6 -0
  337. package/dist/Redactable.d.ts.map +1 -1
  338. package/dist/Redactable.js +4 -0
  339. package/dist/Redactable.js.map +1 -1
  340. package/dist/Redacted.d.ts +8 -0
  341. package/dist/Redacted.d.ts.map +1 -1
  342. package/dist/Redacted.js +6 -0
  343. package/dist/Redacted.js.map +1 -1
  344. package/dist/Reducer.d.ts +4 -0
  345. package/dist/Reducer.d.ts.map +1 -1
  346. package/dist/Reducer.js +3 -0
  347. package/dist/Reducer.js.map +1 -1
  348. package/dist/Ref.d.ts +20 -0
  349. package/dist/Ref.d.ts.map +1 -1
  350. package/dist/Ref.js +16 -0
  351. package/dist/Ref.js.map +1 -1
  352. package/dist/References.d.ts +21 -0
  353. package/dist/References.d.ts.map +1 -1
  354. package/dist/References.js +19 -0
  355. package/dist/References.js.map +1 -1
  356. package/dist/RegExp.d.ts +3 -0
  357. package/dist/RegExp.d.ts.map +1 -1
  358. package/dist/RegExp.js +4 -0
  359. package/dist/RegExp.js.map +1 -1
  360. package/dist/Request.d.ts +32 -0
  361. package/dist/Request.d.ts.map +1 -1
  362. package/dist/Request.js +12 -0
  363. package/dist/Request.js.map +1 -1
  364. package/dist/RequestResolver.d.ts +42 -0
  365. package/dist/RequestResolver.d.ts.map +1 -1
  366. package/dist/RequestResolver.js +27 -6
  367. package/dist/RequestResolver.js.map +1 -1
  368. package/dist/Resource.d.ts +6 -0
  369. package/dist/Resource.d.ts.map +1 -1
  370. package/dist/Resource.js +6 -0
  371. package/dist/Resource.js.map +1 -1
  372. package/dist/Result.d.ts +91 -0
  373. package/dist/Result.d.ts.map +1 -1
  374. package/dist/Result.js +41 -0
  375. package/dist/Result.js.map +1 -1
  376. package/dist/Runtime.d.ts +9 -0
  377. package/dist/Runtime.d.ts.map +1 -1
  378. package/dist/Runtime.js +7 -0
  379. package/dist/Runtime.js.map +1 -1
  380. package/dist/Schedule.d.ts +57 -0
  381. package/dist/Schedule.d.ts.map +1 -1
  382. package/dist/Schedule.js +32 -0
  383. package/dist/Schedule.js.map +1 -1
  384. package/dist/Scheduler.d.ts +7 -0
  385. package/dist/Scheduler.d.ts.map +1 -1
  386. package/dist/Scheduler.js +5 -0
  387. package/dist/Scheduler.js.map +1 -1
  388. package/dist/Schema.d.ts +496 -1
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +280 -1
  391. package/dist/Schema.js.map +1 -1
  392. package/dist/SchemaAST.d.ts +107 -0
  393. package/dist/SchemaAST.d.ts.map +1 -1
  394. package/dist/SchemaAST.js +81 -1
  395. package/dist/SchemaAST.js.map +1 -1
  396. package/dist/SchemaGetter.d.ts +69 -2
  397. package/dist/SchemaGetter.d.ts.map +1 -1
  398. package/dist/SchemaGetter.js +63 -4
  399. package/dist/SchemaGetter.js.map +1 -1
  400. package/dist/SchemaIssue.d.ts +33 -0
  401. package/dist/SchemaIssue.d.ts.map +1 -1
  402. package/dist/SchemaIssue.js +18 -0
  403. package/dist/SchemaIssue.js.map +1 -1
  404. package/dist/SchemaParser.d.ts +25 -0
  405. package/dist/SchemaParser.d.ts.map +1 -1
  406. package/dist/SchemaParser.js +26 -0
  407. package/dist/SchemaParser.js.map +1 -1
  408. package/dist/SchemaRepresentation.d.ts +147 -0
  409. package/dist/SchemaRepresentation.d.ts.map +1 -1
  410. package/dist/SchemaRepresentation.js +99 -0
  411. package/dist/SchemaRepresentation.js.map +1 -1
  412. package/dist/SchemaTransformation.d.ts +53 -0
  413. package/dist/SchemaTransformation.d.ts.map +1 -1
  414. package/dist/SchemaTransformation.js +46 -0
  415. package/dist/SchemaTransformation.js.map +1 -1
  416. package/dist/Scope.d.ts +19 -0
  417. package/dist/Scope.d.ts.map +1 -1
  418. package/dist/Scope.js +12 -0
  419. package/dist/Scope.js.map +1 -1
  420. package/dist/ScopedCache.d.ts +34 -0
  421. package/dist/ScopedCache.d.ts.map +1 -1
  422. package/dist/ScopedCache.js +50 -19
  423. package/dist/ScopedCache.js.map +1 -1
  424. package/dist/ScopedRef.d.ts +9 -0
  425. package/dist/ScopedRef.d.ts.map +1 -1
  426. package/dist/ScopedRef.js +6 -0
  427. package/dist/ScopedRef.js.map +1 -1
  428. package/dist/Semaphore.d.ts +26 -0
  429. package/dist/Semaphore.d.ts.map +1 -1
  430. package/dist/Semaphore.js +10 -0
  431. package/dist/Semaphore.js.map +1 -1
  432. package/dist/Sink.d.ts +125 -1
  433. package/dist/Sink.d.ts.map +1 -1
  434. package/dist/Sink.js +75 -1
  435. package/dist/Sink.js.map +1 -1
  436. package/dist/StandardSchema.d.ts +1 -0
  437. package/dist/StandardSchema.d.ts.map +1 -1
  438. package/dist/StandardSchema.js +1 -0
  439. package/dist/Stdio.d.ts +7 -0
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +5 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +603 -6
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +316 -57
  446. package/dist/Stream.js.map +1 -1
  447. package/dist/String.d.ts +87 -0
  448. package/dist/String.d.ts.map +1 -1
  449. package/dist/String.js +61 -0
  450. package/dist/String.js.map +1 -1
  451. package/dist/Struct.d.ts +46 -0
  452. package/dist/Struct.d.ts.map +1 -1
  453. package/dist/Struct.js +19 -0
  454. package/dist/Struct.js.map +1 -1
  455. package/dist/SubscriptionRef.d.ts +65 -0
  456. package/dist/SubscriptionRef.d.ts.map +1 -1
  457. package/dist/SubscriptionRef.js +25 -0
  458. package/dist/SubscriptionRef.js.map +1 -1
  459. package/dist/Symbol.d.ts +2 -0
  460. package/dist/Symbol.d.ts.map +1 -1
  461. package/dist/Symbol.js +2 -0
  462. package/dist/Symbol.js.map +1 -1
  463. package/dist/SynchronizedRef.d.ts +63 -0
  464. package/dist/SynchronizedRef.d.ts.map +1 -1
  465. package/dist/SynchronizedRef.js +24 -0
  466. package/dist/SynchronizedRef.js.map +1 -1
  467. package/dist/Take.d.ts +3 -0
  468. package/dist/Take.d.ts.map +1 -1
  469. package/dist/Take.js +1 -0
  470. package/dist/Take.js.map +1 -1
  471. package/dist/Terminal.d.ts +8 -0
  472. package/dist/Terminal.d.ts.map +1 -1
  473. package/dist/Terminal.js +4 -0
  474. package/dist/Terminal.js.map +1 -1
  475. package/dist/Tracer.d.ts +23 -0
  476. package/dist/Tracer.d.ts.map +1 -1
  477. package/dist/Tracer.js +12 -0
  478. package/dist/Tracer.js.map +1 -1
  479. package/dist/Trie.d.ts +68 -0
  480. package/dist/Trie.d.ts.map +1 -1
  481. package/dist/Trie.js +28 -0
  482. package/dist/Trie.js.map +1 -1
  483. package/dist/Tuple.d.ts +38 -0
  484. package/dist/Tuple.d.ts.map +1 -1
  485. package/dist/Tuple.js +18 -0
  486. package/dist/Tuple.js.map +1 -1
  487. package/dist/TxChunk.d.ts +52 -0
  488. package/dist/TxChunk.d.ts.map +1 -1
  489. package/dist/TxChunk.js +23 -0
  490. package/dist/TxChunk.js.map +1 -1
  491. package/dist/TxDeferred.d.ts +15 -0
  492. package/dist/TxDeferred.d.ts.map +1 -1
  493. package/dist/TxDeferred.js +8 -0
  494. package/dist/TxDeferred.js.map +1 -1
  495. package/dist/TxHashMap.d.ts +83 -0
  496. package/dist/TxHashMap.d.ts.map +1 -1
  497. package/dist/TxHashMap.js +52 -7
  498. package/dist/TxHashMap.js.map +1 -1
  499. package/dist/TxHashSet.d.ts +51 -0
  500. package/dist/TxHashSet.d.ts.map +1 -1
  501. package/dist/TxHashSet.js +29 -4
  502. package/dist/TxHashSet.js.map +1 -1
  503. package/dist/TxPriorityQueue.d.ts +30 -0
  504. package/dist/TxPriorityQueue.d.ts.map +1 -1
  505. package/dist/TxPriorityQueue.js +22 -1
  506. package/dist/TxPriorityQueue.js.map +1 -1
  507. package/dist/TxPubSub.d.ts +25 -0
  508. package/dist/TxPubSub.d.ts.map +1 -1
  509. package/dist/TxPubSub.js +19 -0
  510. package/dist/TxPubSub.js.map +1 -1
  511. package/dist/TxQueue.d.ts +51 -0
  512. package/dist/TxQueue.d.ts.map +1 -1
  513. package/dist/TxQueue.js +30 -0
  514. package/dist/TxQueue.js.map +1 -1
  515. package/dist/TxReentrantLock.d.ts +24 -0
  516. package/dist/TxReentrantLock.d.ts.map +1 -1
  517. package/dist/TxReentrantLock.js +32 -18
  518. package/dist/TxReentrantLock.js.map +1 -1
  519. package/dist/TxRef.d.ts +14 -0
  520. package/dist/TxRef.d.ts.map +1 -1
  521. package/dist/TxRef.js +7 -0
  522. package/dist/TxRef.js.map +1 -1
  523. package/dist/TxSemaphore.d.ts +25 -0
  524. package/dist/TxSemaphore.d.ts.map +1 -1
  525. package/dist/TxSemaphore.js +29 -13
  526. package/dist/TxSemaphore.js.map +1 -1
  527. package/dist/TxSubscriptionRef.d.ts +25 -0
  528. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  529. package/dist/TxSubscriptionRef.js +12 -0
  530. package/dist/TxSubscriptionRef.js.map +1 -1
  531. package/dist/Types.d.ts +36 -0
  532. package/dist/Types.d.ts.map +1 -1
  533. package/dist/Types.js +1 -0
  534. package/dist/UndefinedOr.d.ts +15 -0
  535. package/dist/UndefinedOr.d.ts.map +1 -1
  536. package/dist/UndefinedOr.js +9 -0
  537. package/dist/UndefinedOr.js.map +1 -1
  538. package/dist/Unify.d.ts +15 -0
  539. package/dist/Unify.d.ts.map +1 -1
  540. package/dist/Unify.js +2 -0
  541. package/dist/Unify.js.map +1 -1
  542. package/dist/Utils.d.ts +4 -0
  543. package/dist/Utils.d.ts.map +1 -1
  544. package/dist/Utils.js +1 -0
  545. package/dist/Utils.js.map +1 -1
  546. package/dist/Version.d.ts +26 -0
  547. package/dist/Version.d.ts.map +1 -0
  548. package/dist/Version.js +36 -0
  549. package/dist/Version.js.map +1 -0
  550. package/dist/ai/Chat.js +1 -1
  551. package/dist/ai/Chat.js.map +1 -1
  552. package/dist/ai/DecisionModel.d.ts +22 -0
  553. package/dist/ai/DecisionModel.d.ts.map +1 -1
  554. package/dist/ai/DecisionModel.js +22 -4
  555. package/dist/ai/DecisionModel.js.map +1 -1
  556. package/dist/ai/LanguageModel.d.ts +8 -0
  557. package/dist/ai/LanguageModel.d.ts.map +1 -1
  558. package/dist/ai/LanguageModel.js +27 -15
  559. package/dist/ai/LanguageModel.js.map +1 -1
  560. package/dist/ai/McpSchema.d.ts +508 -508
  561. package/dist/ai/McpSchema.d.ts.map +1 -1
  562. package/dist/ai/McpSchema.js +1 -1
  563. package/dist/ai/McpSchema.js.map +1 -1
  564. package/dist/ai/McpServer.d.ts +32 -11
  565. package/dist/ai/McpServer.d.ts.map +1 -1
  566. package/dist/ai/McpServer.js +224 -172
  567. package/dist/ai/McpServer.js.map +1 -1
  568. package/dist/ai/Response.d.ts.map +1 -1
  569. package/dist/ai/Response.js +22 -12
  570. package/dist/ai/Response.js.map +1 -1
  571. package/dist/ai/Telemetry.d.ts +49 -41
  572. package/dist/ai/Telemetry.d.ts.map +1 -1
  573. package/dist/ai/Telemetry.js +6 -8
  574. package/dist/ai/Telemetry.js.map +1 -1
  575. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -0
  576. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  577. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -0
  578. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  579. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +1 -0
  580. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  581. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +1 -0
  582. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  583. package/dist/ai/internal/mcpRuntime.js +79 -46
  584. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  585. package/dist/ai/internal/mcpSchema/v2024_11_05.js +3 -1
  586. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  587. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  588. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  589. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  590. package/dist/cluster/ClusterWorkflowEngine.js +11 -2
  591. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  592. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  593. package/dist/cluster/K8sHttpClient.js +5 -2
  594. package/dist/cluster/K8sHttpClient.js.map +1 -1
  595. package/dist/cluster/Sharding.d.ts.map +1 -1
  596. package/dist/cluster/Sharding.js +14 -7
  597. package/dist/cluster/Sharding.js.map +1 -1
  598. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  599. package/dist/cluster/SqlMessageStorage.js +21 -12
  600. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  601. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  602. package/dist/cluster/SqlRunnerStorage.js +30 -44
  603. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  604. package/dist/cluster/internal/entityManager.js +63 -62
  605. package/dist/cluster/internal/entityManager.js.map +1 -1
  606. package/dist/cluster/internal/interruptors.js +8 -0
  607. package/dist/cluster/internal/interruptors.js.map +1 -1
  608. package/dist/cluster/internal/resourceMap.js +39 -14
  609. package/dist/cluster/internal/resourceMap.js.map +1 -1
  610. package/dist/cluster/internal/resourceRef.js +168 -87
  611. package/dist/cluster/internal/resourceRef.js.map +1 -1
  612. package/dist/encoding/Base64.d.ts +4 -0
  613. package/dist/encoding/Base64.d.ts.map +1 -1
  614. package/dist/encoding/Base64.js +4 -0
  615. package/dist/encoding/Base64.js.map +1 -1
  616. package/dist/encoding/Base64Url.d.ts +4 -0
  617. package/dist/encoding/Base64Url.d.ts.map +1 -1
  618. package/dist/encoding/Base64Url.js +4 -0
  619. package/dist/encoding/Base64Url.js.map +1 -1
  620. package/dist/encoding/EncodingError.d.ts +4 -0
  621. package/dist/encoding/EncodingError.d.ts.map +1 -1
  622. package/dist/encoding/EncodingError.js +4 -0
  623. package/dist/encoding/EncodingError.js.map +1 -1
  624. package/dist/encoding/Hex.d.ts +5 -0
  625. package/dist/encoding/Hex.d.ts.map +1 -1
  626. package/dist/encoding/Hex.js +5 -0
  627. package/dist/encoding/Hex.js.map +1 -1
  628. package/dist/encoding/Toml.js +2 -2
  629. package/dist/encoding/Toml.js.map +1 -1
  630. package/dist/encoding/Yaml.d.ts.map +1 -1
  631. package/dist/encoding/Yaml.js +6 -4
  632. package/dist/encoding/Yaml.js.map +1 -1
  633. package/dist/encoding/index.d.ts +4 -0
  634. package/dist/encoding/index.d.ts.map +1 -1
  635. package/dist/encoding/index.js +4 -0
  636. package/dist/encoding/index.js.map +1 -1
  637. package/dist/eventlog/SqlEventJournal.js +8 -4
  638. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  639. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  640. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  641. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  642. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  643. package/dist/http/Headers.d.ts +3 -1
  644. package/dist/http/Headers.d.ts.map +1 -1
  645. package/dist/http/Headers.js +4 -2
  646. package/dist/http/Headers.js.map +1 -1
  647. package/dist/http/HttpClient.d.ts +9 -0
  648. package/dist/http/HttpClient.d.ts.map +1 -1
  649. package/dist/http/HttpClient.js +40 -21
  650. package/dist/http/HttpClient.js.map +1 -1
  651. package/dist/http/HttpClientResponse.js +3 -1
  652. package/dist/http/HttpClientResponse.js.map +1 -1
  653. package/dist/http/HttpEffect.d.ts +3 -0
  654. package/dist/http/HttpEffect.d.ts.map +1 -1
  655. package/dist/http/HttpEffect.js +5 -2
  656. package/dist/http/HttpEffect.js.map +1 -1
  657. package/dist/http/HttpMiddleware.d.ts +17 -0
  658. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  659. package/dist/http/HttpMiddleware.js +58 -40
  660. package/dist/http/HttpMiddleware.js.map +1 -1
  661. package/dist/http/HttpServer.d.ts +1 -1
  662. package/dist/http/HttpServer.d.ts.map +1 -1
  663. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  664. package/dist/http/HttpStaticServer.js +14 -0
  665. package/dist/http/HttpStaticServer.js.map +1 -1
  666. package/dist/http/HttpTraceContext.d.ts +1 -1
  667. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  668. package/dist/http/HttpTraceContext.js +4 -4
  669. package/dist/http/HttpTraceContext.js.map +1 -1
  670. package/dist/http/internal/tracing.d.ts +2 -0
  671. package/dist/http/internal/tracing.d.ts.map +1 -0
  672. package/dist/http/internal/tracing.js +37 -0
  673. package/dist/http/internal/tracing.js.map +1 -0
  674. package/dist/http-api/HttpApiBuilder.js +2 -1
  675. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  676. package/dist/http-api/HttpApiClient.d.ts +12 -3
  677. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  678. package/dist/http-api/HttpApiClient.js.map +1 -1
  679. package/dist/http-api/HttpApiError.d.ts +4 -2
  680. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  681. package/dist/http-api/HttpApiError.js +7 -3
  682. package/dist/http-api/HttpApiError.js.map +1 -1
  683. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  684. package/dist/http-api/HttpApiSecurity.js +8 -8
  685. package/dist/index.d.ts +155 -0
  686. package/dist/index.d.ts.map +1 -1
  687. package/dist/index.js +155 -0
  688. package/dist/index.js.map +1 -1
  689. package/dist/internal/arbitrary/array.js +3 -3
  690. package/dist/internal/arbitrary/array.js.map +1 -1
  691. package/dist/internal/arbitrary/model.js +26 -11
  692. package/dist/internal/arbitrary/model.js.map +1 -1
  693. package/dist/internal/arbitrary/runner.js +8 -8
  694. package/dist/internal/arbitrary/runner.js.map +1 -1
  695. package/dist/internal/arbitrary/schema.js +4 -5
  696. package/dist/internal/arbitrary/schema.js.map +1 -1
  697. package/dist/internal/core.js +43 -2
  698. package/dist/internal/core.js.map +1 -1
  699. package/dist/internal/dateTime.js +1 -1
  700. package/dist/internal/dateTime.js.map +1 -1
  701. package/dist/internal/effect.js +104 -120
  702. package/dist/internal/effect.js.map +1 -1
  703. package/dist/internal/rcRef.js +59 -23
  704. package/dist/internal/rcRef.js.map +1 -1
  705. package/dist/internal/schedule.js +7 -5
  706. package/dist/internal/schedule.js.map +1 -1
  707. package/dist/internal/schema/fromJsonSchemaDocument.js +11 -8
  708. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  709. package/dist/internal/schema/standardSchema.js +2 -2
  710. package/dist/internal/schema/standardSchema.js.map +1 -1
  711. package/dist/internal/version.d.ts +2 -0
  712. package/dist/internal/version.d.ts.map +1 -0
  713. package/dist/internal/version.js +3 -0
  714. package/dist/internal/version.js.map +1 -0
  715. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  716. package/dist/observability/OtlpExporter.js +5 -6
  717. package/dist/observability/OtlpExporter.js.map +1 -1
  718. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  719. package/dist/observability/OtlpLogger.js +23 -27
  720. package/dist/observability/OtlpLogger.js.map +1 -1
  721. package/dist/observability/OtlpMetrics.d.ts +5 -3
  722. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  723. package/dist/observability/OtlpMetrics.js +21 -94
  724. package/dist/observability/OtlpMetrics.js.map +1 -1
  725. package/dist/observability/OtlpResource.d.ts +4 -3
  726. package/dist/observability/OtlpResource.d.ts.map +1 -1
  727. package/dist/observability/OtlpResource.js +20 -23
  728. package/dist/observability/OtlpResource.js.map +1 -1
  729. package/dist/observability/OtlpTracer.d.ts +1 -0
  730. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  731. package/dist/observability/OtlpTracer.js +32 -36
  732. package/dist/observability/OtlpTracer.js.map +1 -1
  733. package/dist/observability/internal/otlpProtobuf.js +32 -1
  734. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  735. package/dist/reactivity/AsyncResult.d.ts +1 -1
  736. package/dist/reactivity/Atom.d.ts +5 -5
  737. package/dist/reactivity/Atom.d.ts.map +1 -1
  738. package/dist/reactivity/Atom.js +9 -5
  739. package/dist/reactivity/Atom.js.map +1 -1
  740. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  741. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  742. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  743. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  744. package/dist/reactivity/AtomRegistry.js.map +1 -1
  745. package/dist/rpc/RpcClient.d.ts +21 -3
  746. package/dist/rpc/RpcClient.d.ts.map +1 -1
  747. package/dist/rpc/RpcClient.js +58 -34
  748. package/dist/rpc/RpcClient.js.map +1 -1
  749. package/dist/rpc/RpcServer.d.ts.map +1 -1
  750. package/dist/rpc/RpcServer.js +20 -23
  751. package/dist/rpc/RpcServer.js.map +1 -1
  752. package/dist/rpc/Utils.d.ts +2 -3
  753. package/dist/rpc/Utils.d.ts.map +1 -1
  754. package/dist/rpc/Utils.js +3 -4
  755. package/dist/rpc/Utils.js.map +1 -1
  756. package/dist/rpc/internal/tracing.d.ts +2 -0
  757. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  758. package/dist/rpc/internal/tracing.js +18 -0
  759. package/dist/rpc/internal/tracing.js.map +1 -0
  760. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  761. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  762. package/dist/sql/SqlClient.js +4 -4
  763. package/dist/sql/SqlClient.js.map +1 -1
  764. package/dist/sql/Statement.d.ts +21 -1
  765. package/dist/sql/Statement.d.ts.map +1 -1
  766. package/dist/sql/Statement.js +55 -7
  767. package/dist/sql/Statement.js.map +1 -1
  768. package/dist/testing/TestClock.d.ts +8 -0
  769. package/dist/testing/TestClock.d.ts.map +1 -1
  770. package/dist/testing/TestClock.js +7 -0
  771. package/dist/testing/TestClock.js.map +1 -1
  772. package/dist/testing/TestConsole.d.ts +7 -0
  773. package/dist/testing/TestConsole.d.ts.map +1 -1
  774. package/dist/testing/TestConsole.js +6 -0
  775. package/dist/testing/TestConsole.js.map +1 -1
  776. package/dist/testing/index.d.ts +3 -0
  777. package/dist/testing/index.d.ts.map +1 -1
  778. package/dist/testing/index.js +3 -0
  779. package/dist/testing/index.js.map +1 -1
  780. package/dist/workflow/WorkflowEngine.d.ts +2 -0
  781. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  782. package/dist/workflow/WorkflowEngine.js +1 -0
  783. package/dist/workflow/WorkflowEngine.js.map +1 -1
  784. package/package.json +3 -3
  785. package/src/Array.ts +351 -3
  786. package/src/BigDecimal.ts +88 -0
  787. package/src/BigInt.ts +68 -0
  788. package/src/Boolean.ts +34 -0
  789. package/src/Brand.ts +10 -0
  790. package/src/ByteSize.ts +87 -0
  791. package/src/Cache.ts +72 -24
  792. package/src/Cause.ts +83 -1
  793. package/src/Channel.ts +368 -18
  794. package/src/ChannelSchema.ts +13 -0
  795. package/src/Chunk.ts +193 -0
  796. package/src/Clock.ts +7 -0
  797. package/src/Combiner.ts +10 -0
  798. package/src/Config.ts +82 -8
  799. package/src/ConfigProvider.ts +28 -0
  800. package/src/Console.ts +26 -0
  801. package/src/Context.ts +50 -0
  802. package/src/Cron.ts +32 -1
  803. package/src/Crypto.ts +5 -0
  804. package/src/Data.ts +13 -0
  805. package/src/DateTime.ts +171 -0
  806. package/src/Deferred.ts +51 -0
  807. package/src/Differ.ts +2 -0
  808. package/src/Duration.ts +90 -0
  809. package/src/Effect.ts +692 -27
  810. package/src/Effectable.ts +4 -0
  811. package/src/Equal.ts +12 -1
  812. package/src/Equivalence.ts +22 -0
  813. package/src/ErrorReporter.ts +36 -0
  814. package/src/ExecutionPlan.ts +58 -14
  815. package/src/Exit.ts +40 -0
  816. package/src/Fiber.ts +20 -0
  817. package/src/FiberHandle.ts +29 -4
  818. package/src/FiberMap.ts +38 -0
  819. package/src/FiberSet.ts +21 -0
  820. package/src/FileSystem.ts +16 -0
  821. package/src/Filter.ts +55 -0
  822. package/src/Formatter.ts +42 -1
  823. package/src/Function.ts +30 -0
  824. package/src/Graph.ts +317 -36
  825. package/src/HKT.ts +5 -0
  826. package/src/Hash.ts +15 -0
  827. package/src/HashMap.ts +91 -0
  828. package/src/HashRing.ts +32 -5
  829. package/src/HashSet.ts +53 -0
  830. package/src/Inspectable.ts +8 -0
  831. package/src/Iterable.ts +127 -0
  832. package/src/JsonPatch.ts +5 -0
  833. package/src/JsonPointer.ts +5 -0
  834. package/src/JsonSchema.ts +17 -0
  835. package/src/Latch.ts +14 -0
  836. package/src/Layer.ts +101 -1
  837. package/src/LayerMap.ts +7 -0
  838. package/src/LayerRef.ts +5 -0
  839. package/src/LogLevel.ts +20 -0
  840. package/src/Logger.ts +41 -5
  841. package/src/ManagedRuntime.ts +12 -1
  842. package/src/Match.ts +52 -0
  843. package/src/Metric.ts +69 -0
  844. package/src/MutableHashMap.ts +44 -0
  845. package/src/MutableHashSet.ts +17 -0
  846. package/src/MutableList.ts +21 -0
  847. package/src/MutableRef.ts +32 -0
  848. package/src/Newtype.ts +9 -0
  849. package/src/NonEmptyIterable.ts +4 -0
  850. package/src/Number.ts +61 -0
  851. package/src/Optic.ts +57 -0
  852. package/src/Option.ts +134 -0
  853. package/src/Order.ts +30 -0
  854. package/src/Ordering.ts +7 -0
  855. package/src/PartitionedSemaphore.ts +61 -22
  856. package/src/Path.ts +6 -0
  857. package/src/Pipeable.ts +7 -0
  858. package/src/PlatformError.ts +8 -0
  859. package/src/Pool.ts +48 -37
  860. package/src/Predicate.ts +85 -0
  861. package/src/PrimaryKey.ts +5 -0
  862. package/src/PubSub.ts +90 -9
  863. package/src/Pull.ts +20 -0
  864. package/src/Queue.ts +80 -10
  865. package/src/Random.ts +13 -0
  866. package/src/RcMap.ts +49 -2
  867. package/src/RcRef.ts +6 -0
  868. package/src/Record.ts +100 -0
  869. package/src/Redactable.ts +6 -0
  870. package/src/Redacted.ts +8 -0
  871. package/src/Reducer.ts +4 -0
  872. package/src/Ref.ts +42 -0
  873. package/src/References.ts +21 -0
  874. package/src/RegExp.ts +4 -0
  875. package/src/Request.ts +32 -0
  876. package/src/RequestResolver.ts +59 -10
  877. package/src/Resource.ts +7 -0
  878. package/src/Result.ts +93 -0
  879. package/src/Runtime.ts +10 -0
  880. package/src/Schedule.ts +61 -0
  881. package/src/Scheduler.ts +7 -0
  882. package/src/Schema.ts +499 -4
  883. package/src/SchemaAST.ts +115 -1
  884. package/src/SchemaGetter.ts +80 -4
  885. package/src/SchemaIssue.ts +34 -0
  886. package/src/SchemaParser.ts +26 -0
  887. package/src/SchemaRepresentation.ts +148 -0
  888. package/src/SchemaTransformation.ts +53 -0
  889. package/src/Scope.ts +19 -0
  890. package/src/ScopedCache.ts +82 -19
  891. package/src/ScopedRef.ts +9 -0
  892. package/src/Semaphore.ts +26 -0
  893. package/src/Sink.ts +126 -2
  894. package/src/StandardSchema.ts +1 -0
  895. package/src/Stdio.ts +7 -0
  896. package/src/Stream.ts +780 -103
  897. package/src/String.ts +87 -0
  898. package/src/Struct.ts +46 -0
  899. package/src/SubscriptionRef.ts +65 -0
  900. package/src/Symbol.ts +2 -0
  901. package/src/SynchronizedRef.ts +63 -0
  902. package/src/Take.ts +3 -0
  903. package/src/Terminal.ts +8 -0
  904. package/src/Tracer.ts +23 -0
  905. package/src/Trie.ts +68 -0
  906. package/src/Tuple.ts +38 -0
  907. package/src/TxChunk.ts +52 -0
  908. package/src/TxDeferred.ts +15 -0
  909. package/src/TxHashMap.ts +97 -6
  910. package/src/TxHashSet.ts +83 -3
  911. package/src/TxPriorityQueue.ts +34 -2
  912. package/src/TxPubSub.ts +26 -0
  913. package/src/TxQueue.ts +51 -0
  914. package/src/TxReentrantLock.ts +53 -36
  915. package/src/TxRef.ts +14 -0
  916. package/src/TxSemaphore.ts +47 -31
  917. package/src/TxSubscriptionRef.ts +25 -0
  918. package/src/Types.ts +36 -0
  919. package/src/UndefinedOr.ts +15 -0
  920. package/src/Unify.ts +15 -0
  921. package/src/Utils.ts +4 -0
  922. package/src/Version.ts +38 -0
  923. package/src/ai/Chat.ts +1 -1
  924. package/src/ai/DecisionModel.ts +42 -1
  925. package/src/ai/LanguageModel.ts +43 -21
  926. package/src/ai/McpSchema.ts +3 -3
  927. package/src/ai/McpServer.ts +119 -39
  928. package/src/ai/Response.ts +27 -12
  929. package/src/ai/Telemetry.ts +62 -58
  930. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -0
  931. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -0
  932. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +1 -0
  933. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +1 -0
  934. package/src/ai/internal/mcpRuntime.ts +84 -43
  935. package/src/ai/internal/mcpSchema/v2024_11_05.ts +4 -2
  936. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  937. package/src/cluster/ClusterWorkflowEngine.ts +18 -4
  938. package/src/cluster/K8sHttpClient.ts +12 -2
  939. package/src/cluster/Sharding.ts +24 -24
  940. package/src/cluster/SqlMessageStorage.ts +26 -13
  941. package/src/cluster/SqlRunnerStorage.ts +85 -113
  942. package/src/cluster/internal/entityManager.ts +68 -80
  943. package/src/cluster/internal/interruptors.ts +13 -0
  944. package/src/cluster/internal/resourceMap.ts +55 -17
  945. package/src/cluster/internal/resourceRef.ts +189 -96
  946. package/src/encoding/Base64.ts +4 -0
  947. package/src/encoding/Base64Url.ts +4 -0
  948. package/src/encoding/EncodingError.ts +5 -0
  949. package/src/encoding/Hex.ts +5 -0
  950. package/src/encoding/Toml.ts +2 -2
  951. package/src/encoding/Yaml.ts +8 -4
  952. package/src/encoding/index.ts +4 -0
  953. package/src/eventlog/SqlEventJournal.ts +18 -4
  954. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  955. package/src/http/Headers.ts +8 -2
  956. package/src/http/HttpClient.ts +44 -27
  957. package/src/http/HttpClientResponse.ts +3 -1
  958. package/src/http/HttpEffect.ts +11 -2
  959. package/src/http/HttpMiddleware.ts +67 -46
  960. package/src/http/HttpServer.ts +1 -1
  961. package/src/http/HttpStaticServer.ts +16 -0
  962. package/src/http/HttpTraceContext.ts +8 -4
  963. package/src/http/internal/tracing.ts +52 -0
  964. package/src/http-api/HttpApiBuilder.ts +5 -1
  965. package/src/http-api/HttpApiClient.ts +13 -4
  966. package/src/http-api/HttpApiError.ts +8 -3
  967. package/src/http-api/HttpApiSecurity.ts +8 -8
  968. package/src/index.ts +156 -0
  969. package/src/internal/arbitrary/array.ts +3 -3
  970. package/src/internal/arbitrary/model.ts +37 -14
  971. package/src/internal/arbitrary/runner.ts +7 -7
  972. package/src/internal/arbitrary/schema.ts +4 -3
  973. package/src/internal/core.ts +56 -2
  974. package/src/internal/dateTime.ts +3 -1
  975. package/src/internal/effect.ts +156 -156
  976. package/src/internal/rcRef.ts +83 -33
  977. package/src/internal/schedule.ts +23 -17
  978. package/src/internal/schema/fromJsonSchemaDocument.ts +5 -3
  979. package/src/internal/schema/standardSchema.ts +2 -2
  980. package/src/internal/version.ts +2 -0
  981. package/src/observability/OtlpExporter.ts +9 -6
  982. package/src/observability/OtlpLogger.ts +20 -21
  983. package/src/observability/OtlpMetrics.ts +34 -93
  984. package/src/observability/OtlpResource.ts +18 -27
  985. package/src/observability/OtlpTracer.ts +34 -40
  986. package/src/observability/internal/otlpProtobuf.ts +60 -0
  987. package/src/reactivity/AsyncResult.ts +1 -1
  988. package/src/reactivity/Atom.ts +10 -6
  989. package/src/reactivity/AtomHttpApi.ts +2 -4
  990. package/src/reactivity/AtomRegistry.ts +7 -0
  991. package/src/rpc/RpcClient.ts +74 -46
  992. package/src/rpc/RpcServer.ts +28 -25
  993. package/src/rpc/Utils.ts +4 -10
  994. package/src/rpc/internal/tracing.ts +22 -0
  995. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  996. package/src/sql/SqlClient.ts +4 -4
  997. package/src/sql/Statement.ts +59 -7
  998. package/src/testing/TestClock.ts +9 -0
  999. package/src/testing/TestConsole.ts +8 -0
  1000. package/src/testing/index.ts +3 -0
  1001. package/src/workflow/WorkflowEngine.ts +4 -0
@@ -107,6 +107,13 @@ export const TypeId: TypeId = "~effect/ai/LanguageModel"
107
107
  export interface LanguageModel {
108
108
  readonly [TypeId]: TypeId
109
109
 
110
+ /**
111
+ * Whether the effective provider configuration supports system messages in
112
+ * history. Evaluate in the request's context to respect scoped overrides.
113
+ * Placement restrictions may apply; an absent capability means unknown support.
114
+ */
115
+ readonly supportsSystemMessagesInHistory?: Effect.Effect<boolean> | undefined
116
+
110
117
  /**
111
118
  * Generate text using the language model.
112
119
  */
@@ -833,6 +840,9 @@ export const make: (params: {
833
840
  * for structured output generation.
834
841
  */
835
842
  readonly codecTransformer?: CodecTransformer | undefined
843
+
844
+ /** Whether the effective provider configuration supports system messages in history. */
845
+ readonly supportsSystemMessagesInHistory?: Effect.Effect<boolean> | undefined
836
846
  }) => Effect.Effect<LanguageModel> = Effect.fnUntraced(function*(params) {
837
847
  const codecTransformer = params.codecTransformer ?? defaultCodecTransformer
838
848
 
@@ -859,12 +869,7 @@ export const make: (params: {
859
869
  > =>
860
870
  Effect.useSpan(
861
871
  "LanguageModel.generateText",
862
- {
863
- attributes: {
864
- concurrency: options.concurrency,
865
- toolChoice: options.toolChoice
866
- }
867
- },
872
+ { kind: "client" },
868
873
  Effect.fnUntraced(
869
874
  function*(span) {
870
875
  const spanTransformer = yield* getSpanTransformer
@@ -920,11 +925,8 @@ export const make: (params: {
920
925
  return Effect.useSpan(
921
926
  "LanguageModel.generateObject",
922
927
  {
923
- attributes: {
924
- objectName,
925
- concurrency: options.concurrency,
926
- toolChoice: options.toolChoice
927
- }
928
+ kind: "client",
929
+ attributes: { "effect.ai.object_name": objectName }
928
930
  },
929
931
  Effect.fnUntraced(
930
932
  function*(span) {
@@ -996,12 +998,7 @@ export const make: (params: {
996
998
  Tools extends Record<string, Tool.Any>,
997
999
  Options extends NoExcessProperties<GenerateTextOptions<Tools>, Options>
998
1000
  >(options: Options & GenerateTextOptions<Tools>) {
999
- const span = yield* Effect.makeSpanScoped("LanguageModel.streamText", {
1000
- attributes: {
1001
- concurrency: options.concurrency,
1002
- toolChoice: options.toolChoice
1003
- }
1004
- })
1001
+ const span = yield* Effect.makeSpanScoped("LanguageModel.streamText", { kind: "client" })
1005
1002
 
1006
1003
  const providerOptions: Mutable<ProviderOptions> = {
1007
1004
  prompt: Prompt.make(options.prompt),
@@ -1073,7 +1070,7 @@ export const make: (params: {
1073
1070
  const tracker = Option.getOrUndefined(yield* Effect.serviceOption(ResponseIdTracker.ResponseIdTracker))
1074
1071
  const toolChoice = options.toolChoice ?? "auto"
1075
1072
  const concurrency = options.concurrency ?? "unbounded"
1076
- providerOptions.span.attribute("concurrency", concurrency)
1073
+ annotateRequestOptions(providerOptions, toolChoice, concurrency)
1077
1074
 
1078
1075
  const generateWithNonIncrementalFallback = () => {
1079
1076
  const requestOptions: ProviderOptions = {
@@ -1326,7 +1323,7 @@ export const make: (params: {
1326
1323
  const tracker = Option.getOrUndefined(yield* Effect.serviceOption(ResponseIdTracker.ResponseIdTracker))
1327
1324
  const toolChoice = options.toolChoice ?? "auto"
1328
1325
  const concurrency = options.concurrency ?? "unbounded"
1329
- providerOptions.span.attribute("concurrency", concurrency)
1326
+ annotateRequestOptions(providerOptions, toolChoice, concurrency)
1330
1327
 
1331
1328
  const streamWithNonIncrementalFallback = () => {
1332
1329
  const requestOptions: ProviderOptions = {
@@ -1749,6 +1746,7 @@ export const make: (params: {
1749
1746
 
1750
1747
  return LanguageModel.of({
1751
1748
  [TypeId]: TypeId,
1749
+ supportsSystemMessagesInHistory: params.supportsSystemMessagesInHistory,
1752
1750
  generateText: generateText as LanguageModel["generateText"],
1753
1751
  generateObject: generateObject as LanguageModel["generateObject"],
1754
1752
  streamText: streamText as LanguageModel["streamText"]
@@ -2417,18 +2415,32 @@ const resolveToolCalls = <Tools extends Record<string, Tool.Any>>(
2417
2415
  // Utilities
2418
2416
  // =============================================================================
2419
2417
 
2418
+ // Stable parameter-mode copies let Response reuse each tool's part schemas.
2419
+ const parameterModeTools = new WeakMap<Tool.Any, { encoded?: Tool.Any; opaque?: Tool.Any }>()
2420
+
2421
+ const withParameterMode = (tool: Tool.Any, mode: "encoded" | "opaque"): Tool.Any => {
2422
+ let tools = parameterModeTools.get(tool)
2423
+ if (tools === undefined) {
2424
+ tools = {}
2425
+ parameterModeTools.set(tool, tools)
2426
+ }
2427
+ return tools[mode] ??= tool.setParameters(
2428
+ mode === "encoded" ? Schema.toEncoded(tool.parametersSchema) : Schema.Unknown
2429
+ )
2430
+ }
2431
+
2420
2432
  const makeToolkitWithEncodedParameters = <Tools extends Record<string, Tool.Any>>(
2421
2433
  toolkit: Toolkit.WithHandler<Tools>
2422
2434
  ): Toolkit.Any =>
2423
2435
  Toolkit.make(
2424
- ...Object.values(toolkit.tools).map((tool) => tool.setParameters(Schema.toEncoded(tool.parametersSchema)))
2436
+ ...Object.values(toolkit.tools).map((tool) => withParameterMode(tool, "encoded"))
2425
2437
  )
2426
2438
 
2427
2439
  const makeToolkitWithOpaqueParameters = <Tools extends Record<string, Tool.Any>>(
2428
2440
  toolkit: Toolkit.WithHandler<Tools>
2429
2441
  ): Toolkit.Any =>
2430
2442
  Toolkit.make(
2431
- ...Object.values(toolkit.tools).map((tool) => tool.setParameters(Schema.Unknown))
2443
+ ...Object.values(toolkit.tools).map((tool) => withParameterMode(tool, "opaque"))
2432
2444
  )
2433
2445
 
2434
2446
  // Provider-executed tools bypass Toolkit, so validate their parameters here.
@@ -2460,6 +2472,16 @@ const resolveToolkit = <Tools extends Record<string, Tool.Any>, E, R>(
2460
2472
  ? toolkit
2461
2473
  : Effect.succeed(toolkit as unknown as Toolkit.WithHandler<Tools>)) as any
2462
2474
 
2475
+ const annotateRequestOptions = (
2476
+ { responseFormat, span }: ProviderOptions,
2477
+ toolChoice: ToolChoice<any>,
2478
+ concurrency: Concurrency
2479
+ ): void => {
2480
+ span.attribute("gen_ai.output.type", responseFormat.type)
2481
+ span.attribute("effect.ai.tool_choice", typeof toolChoice === "string" ? toolChoice : JSON.stringify(toolChoice))
2482
+ span.attribute("effect.ai.concurrency", concurrency)
2483
+ }
2484
+
2463
2485
  /**
2464
2486
  * @internal
2465
2487
  */
@@ -86,10 +86,10 @@ export const optionalWithDefault = <S extends Schema.Constraint & Schema.Without
86
86
  */
87
87
  export const optional = <S extends Schema.Constraint>(
88
88
  schema: S
89
- ): Schema.decodeTo<Schema.optional<S>, Schema.optionalKey<S>> =>
89
+ ): Schema.decodeTo<Schema.toType<Schema.optional<S>>, Schema.optionalKey<S>> =>
90
90
  Schema.optionalKey(schema).pipe(
91
- Schema.decodeTo(Schema.optional(schema), {
92
- decode: SchemaGetter.passthrough() as any,
91
+ Schema.decodeTo(Schema.toType(Schema.optional(schema)), {
92
+ decode: SchemaGetter.passthrough(),
93
93
  encode: SchemaGetter.transformOptional(Option.flatMap(Option.fromUndefinedOr))
94
94
  })
95
95
  )
@@ -654,6 +654,7 @@ const cancelledResponses = new WeakMap<object, string | number>()
654
654
  const requestKey = (requestId: string | number): string => `${typeof requestId}:${requestId}`
655
655
 
656
656
  interface ActiveRequest {
657
+ readonly requestId: RpcMessage.RequestId
657
658
  readonly prepared: McpRuntime.PreparedRequest
658
659
  readonly cancelled: boolean
659
660
  }
@@ -805,6 +806,7 @@ const runWithRuntime = Effect.fnUntraced(function*(
805
806
  payload: { requestId, reason }
806
807
  })
807
808
  })
809
+ let writeFromClient!: (clientId: number, message: RpcMessage.FromClientEncoded) => Effect.Effect<void>
808
810
  const handlers = yield* runtime.installHandlers({
809
811
  core: internalState.get(server)!.core,
810
812
  subscribeServerNotifications: PubSub.subscribe(serverNotifications),
@@ -976,8 +978,9 @@ const runWithRuntime = Effect.fnUntraced(function*(
976
978
  }
977
979
  return protocol.send(clientId, response)
978
980
  },
979
- run: (f) =>
980
- protocol.run((clientId, request_) => {
981
+ run: (f) => {
982
+ writeFromClient = f
983
+ return protocol.run((clientId, request_) => {
981
984
  const fiber = Fiber.getCurrent()!
982
985
  const request = request_ as unknown as
983
986
  | RpcMessage.FromServerEncoded
@@ -1045,11 +1048,13 @@ const runWithRuntime = Effect.fnUntraced(function*(
1045
1048
  if (httpRequest !== undefined && session !== undefined) {
1046
1049
  appendPreResponseHandlerUnsafe(httpRequest, (_, res) =>
1047
1050
  Effect.succeed(
1048
- HttpServerResponse.setHeader(
1049
- res,
1050
- MCP_PROTOCOL_VERSION_HEADER,
1051
- session.protocol.protocolVersion
1052
- )
1051
+ runtime.resolveRequest(clientId, headers) === undefined
1052
+ ? HttpServerResponse.empty({ status: 404 })
1053
+ : HttpServerResponse.setHeader(
1054
+ res,
1055
+ MCP_PROTOCOL_VERSION_HEADER,
1056
+ session.protocol.protocolVersion
1057
+ )
1053
1058
  ))
1054
1059
  }
1055
1060
  const routedRequest = runtime.routeClientRequest(selectedProtocol, request)
@@ -1130,7 +1135,11 @@ const runWithRuntime = Effect.fnUntraced(function*(
1130
1135
  }
1131
1136
  if (request.isNotification !== true) {
1132
1137
  const requests = activeRequests.get(clientId) ?? new Map<string, ActiveRequest>()
1133
- requests.set(requestKey(request.id), { prepared, cancelled: false })
1138
+ requests.set(requestKey(request.id), {
1139
+ requestId: RpcMessage.RequestId(request.id),
1140
+ prepared,
1141
+ cancelled: false
1142
+ })
1134
1143
  activeRequests.set(clientId, requests)
1135
1144
  }
1136
1145
  const handled = f(clientId, routedRequest)
@@ -1205,7 +1214,22 @@ const runWithRuntime = Effect.fnUntraced(function*(
1205
1214
  }
1206
1215
  }
1207
1216
  })
1217
+ }
1208
1218
  })
1219
+ if (isHttp) {
1220
+ // Stop requests that can no longer receive client replies after termination.
1221
+ yield* runtime.onSessionTerminated((binding) => {
1222
+ const interrupts: Array<Effect.Effect<void>> = []
1223
+ for (const [clientId, requests] of activeRequests) {
1224
+ for (const { prepared, requestId } of requests.values()) {
1225
+ if (prepared.binding === binding && cancelRequest(clientId, requestId)) {
1226
+ interrupts.push(writeFromClient(clientId, { _tag: "Interrupt", requestId }))
1227
+ }
1228
+ }
1229
+ }
1230
+ return Effect.all(interrupts, { discard: true })
1231
+ })
1232
+ }
1209
1233
 
1210
1234
  const { notificationDelivery, notifications } = internalState.get(server)!
1211
1235
  yield* Effect.acquireRelease(
@@ -1526,19 +1550,28 @@ const mcpStdioSerialization = (
1526
1550
  * **Details**
1527
1551
  *
1528
1552
  * POST serves JSON-RPC and accepted notification-only requests return `202`.
1529
- * Modern routing-header mismatches and unsupported protocol versions return
1530
- * JSON-RPC errors with status `400`; unknown modern RPC methods return a
1531
- * JSON-RPC method-not-found error with status `404`. Unsupported HTTP methods
1532
- * return `405`. Requests carrying an `Origin` header are rejected unless the
1533
- * exact origin appears in `allowedOrigins`; Origin-less non-browser clients
1553
+ * Header mismatches, unsupported protocol versions, and invalid session-header
1554
+ * usage return JSON-RPC errors with status `400`.
1555
+ * Unknown modern RPC methods return a JSON-RPC method-not-found error with
1556
+ * status `404`. Session requests without `MCP-Protocol-Version` use the version
1557
+ * negotiated at initialization. Unsupported HTTP methods return `405`.
1558
+ * Requests with an `Origin` header are rejected unless the exact origin
1559
+ * appears in `allowedOrigins`; Origin-less non-browser clients
1534
1560
  * remain valid. The surrounding HTTP server remains responsible for binding
1535
1561
  * to an appropriate interface and installing authentication.
1536
1562
  *
1563
+ * With `allowSessionTermination`, a DELETE carrying `Mcp-Session-Id` ends that
1564
+ * session with `204` and interrupts its in-flight requests; later requests with
1565
+ * that id get `404`. DELETE validates the session and `MCP-Protocol-Version`
1566
+ * headers like POST. Without the option, or when only sessionless revisions
1567
+ * such as `v2026_07_28` are configured, DELETE returns `405`. Any caller
1568
+ * holding a session id can end that session, so authenticate requests in the
1569
+ * surrounding router.
1570
+ *
1537
1571
  * `layerHttp` always implements the single-endpoint Streamable HTTP topology.
1538
1572
  * Using `v2024_11_05` here is a custom compatibility transport for that
1539
1573
  * revision's schema. It does not implement the historical two-endpoint
1540
- * HTTP+SSE transport, GET SSE, event resumption, session expiry, or client
1541
- * session termination.
1574
+ * HTTP+SSE transport, GET SSE, event resumption, or session expiry.
1542
1575
  *
1543
1576
  * @see {@link layerStdio} for exposing the server over stdio
1544
1577
  * @see {@link layer} for the base MCP server layer without a transport protocol
@@ -1558,24 +1591,10 @@ export const layerHttp = (options: {
1558
1591
  readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
1559
1592
  readonly extensions?: ServerExtensions | undefined
1560
1593
  readonly allowedOrigins?: ReadonlyArray<string> | undefined
1594
+ readonly allowSessionTermination?: boolean | undefined
1561
1595
  }): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, HttpRouter.HttpRouter> => {
1562
1596
  const runtime = McpRuntime.layer(options.protocols)
1563
- const methodNotAllowedResponse = HttpServerResponse.empty({
1564
- status: 405,
1565
- headers: { allow: "POST" }
1566
- })
1567
- const methodNotAllowed = (request: HttpServerRequest.HttpServerRequest) =>
1568
- isAllowedMcpOrigin(request, options.allowedOrigins)
1569
- ? Effect.succeed(methodNotAllowedResponse)
1570
- : Effect.succeed(HttpServerResponse.empty({ status: 403 }))
1571
- const routes = Layer.mergeAll(
1572
- HttpRouter.add("GET", options.path, methodNotAllowed),
1573
- HttpRouter.add("PUT", options.path, methodNotAllowed),
1574
- HttpRouter.add("PATCH", options.path, methodNotAllowed),
1575
- HttpRouter.add("DELETE", options.path, methodNotAllowed),
1576
- HttpRouter.add("OPTIONS", options.path, methodNotAllowed)
1577
- )
1578
- return Layer.merge(layerWithRuntime(options, "http"), routes).pipe(
1597
+ return layerWithRuntime(options, "http").pipe(
1579
1598
  Layer.provide(layerMcpProtocolHttp(options)),
1580
1599
  Layer.provide(runtime),
1581
1600
  Layer.provide(RpcSerialization.layerJsonRpc())
@@ -1585,6 +1604,7 @@ export const layerHttp = (options: {
1585
1604
  const layerMcpProtocolHttp = (options: {
1586
1605
  readonly path: HttpRouter.PathInput
1587
1606
  readonly allowedOrigins?: ReadonlyArray<string> | undefined
1607
+ readonly allowSessionTermination?: boolean | undefined
1588
1608
  }): Layer.Layer<
1589
1609
  RpcServer.Protocol,
1590
1610
  never,
@@ -1596,6 +1616,29 @@ const layerMcpProtocolHttp = (options: {
1596
1616
  Effect.provideService(RpcSerialization.RpcSerialization, mcpHttpSerialization)
1597
1617
  )
1598
1618
  const router = yield* HttpRouter.HttpRouter
1619
+ const allowSessionTermination = options.allowSessionTermination === true &&
1620
+ runtime.protocols.some((protocol) => protocol.runtime._tag === "Stateful")
1621
+ const forbidden = Effect.succeed(HttpServerResponse.empty({ status: 403 }))
1622
+ const withAllowedOrigin = (
1623
+ handler: (request: HttpServerRequest.HttpServerRequest) => Effect.Effect<HttpServerResponse.HttpServerResponse>
1624
+ ) =>
1625
+ (request: HttpServerRequest.HttpServerRequest) =>
1626
+ isAllowedMcpOrigin(request, options.allowedOrigins) ? handler(request) : forbidden
1627
+ const methodNotAllowedResponse = Effect.succeed(HttpServerResponse.empty({
1628
+ status: 405,
1629
+ headers: { allow: allowSessionTermination ? "POST, DELETE" : "POST" }
1630
+ }))
1631
+ const methodNotAllowed = withAllowedOrigin(() => methodNotAllowedResponse)
1632
+ for (const method of ["GET", "PUT", "PATCH", "OPTIONS"] as const) {
1633
+ yield* router.add(method, options.path, methodNotAllowed)
1634
+ }
1635
+ yield* router.add(
1636
+ "DELETE",
1637
+ options.path,
1638
+ allowSessionTermination
1639
+ ? withAllowedOrigin((request) => runtime.terminateHttpSession(request.headers))
1640
+ : methodNotAllowed
1641
+ )
1599
1642
  yield* router.add("POST", options.path, (request) => {
1600
1643
  if (!isAllowedMcpOrigin(request, options.allowedOrigins)) {
1601
1644
  return Effect.succeed(HttpServerResponse.empty({ status: 403 }))
@@ -1620,7 +1663,7 @@ const layerMcpProtocolHttp = (options: {
1620
1663
  const hasMultipleMessages = response.body._tag === "Uint8Array" &&
1621
1664
  response.body.body.subarray(0, -1).includes(10)
1622
1665
  return admission.isSubscription || response.body._tag === "Stream" || hasMultipleMessages
1623
- ? toServerSentEvents(response)
1666
+ ? toServerSentEvents(response, admission.isSubscription)
1624
1667
  : response
1625
1668
  })
1626
1669
  return yield* admission.acknowledge
@@ -1713,7 +1756,7 @@ function mcpJsonRpcSerialization(options?: {
1713
1756
  })
1714
1757
  }
1715
1758
 
1716
- const toServerSentEvents = (response: HttpServerResponse.HttpServerResponse) => {
1759
+ const toServerSentEvents = (response: HttpServerResponse.HttpServerResponse, keepAlive: boolean) => {
1717
1760
  const encoder = new TextEncoder()
1718
1761
  const decoder = new TextDecoder()
1719
1762
  const frame = (data: Uint8Array) =>
@@ -1726,7 +1769,16 @@ const toServerSentEvents = (response: HttpServerResponse.HttpServerResponse) =>
1726
1769
  contentType: "text/event-stream"
1727
1770
  }
1728
1771
  if (response.body._tag === "Stream") {
1729
- return HttpServerResponse.stream(response.body.stream.pipe(Stream.map(frame)), options)
1772
+ const events = response.body.stream.pipe(Stream.map(frame))
1773
+ if (!keepAlive) {
1774
+ return HttpServerResponse.stream(events, options)
1775
+ }
1776
+ // Keep a native timer pending so workerd does not treat idle subscriptions as hung requests.
1777
+ const keepAliveComments = Stream.tick("15 seconds").pipe(
1778
+ Stream.drop(1),
1779
+ Stream.map(() => encoder.encode(": keepalive\n\n"))
1780
+ )
1781
+ return HttpServerResponse.stream(Stream.merge(events, keepAliveComments, { haltStrategy: "left" }), options)
1730
1782
  }
1731
1783
  if (response.body._tag === "Uint8Array") {
1732
1784
  return HttpServerResponse.uint8Array(frame(response.body.body), options)
@@ -1800,7 +1852,7 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
1800
1852
  ) => Effect.Effect<
1801
1853
  void,
1802
1854
  never,
1803
- McpServer | Tool.HandlersFor<Tools> | Exclude<Tool.HandlerServices<Tools>, McpRequestContext>
1855
+ McpServer | Tool.HandlersFor<Tools> | Exclude<Tool.HandlerServices<Tools[keyof Tools]>, McpRequestContext>
1804
1856
  > = Effect.fnUntraced(function*<Tools extends Record<string, Tool.Any>>(
1805
1857
  toolkit: Toolkit.Toolkit<Tools>
1806
1858
  ) {
@@ -1820,7 +1872,11 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
1820
1872
  }
1821
1873
  return Context.makeUnsafe(services)
1822
1874
  }))
1823
- const services = omitRequestServices(yield* Effect.context<never>())
1875
+ const services = omitRequestServices(
1876
+ yield* Effect.context<
1877
+ Exclude<Tool.HandlerServices<Tools[keyof Tools]>, McpRequestContext>
1878
+ >()
1879
+ )
1824
1880
  const reportCause = (cause: Cause.Cause<unknown>) => Effect.provideContext(ErrorReporter.report(cause), services)
1825
1881
  // Interruption propagates; anything else is logged, reported and scrubbed.
1826
1882
  const internalToolError = (cause: Cause.Cause<unknown>) => {
@@ -1964,7 +2020,7 @@ export const toolkit = <Tools extends Record<string, Tool.Any>>(
1964
2020
  ): Layer.Layer<
1965
2021
  never,
1966
2022
  never,
1967
- Tool.HandlersFor<Tools> | Exclude<Tool.HandlerServices<Tools>, McpRequestContext>
2023
+ Tool.HandlersFor<Tools> | Exclude<Tool.HandlerServices<Tools[keyof Tools]>, McpRequestContext>
1968
2024
  > =>
1969
2025
  Layer.effectDiscard(registerToolkit(toolkit)).pipe(
1970
2026
  Layer.provide(McpServer.layer)
@@ -1988,6 +2044,19 @@ export type ValidateCompletions<Completions, Keys extends string> =
1988
2044
  : never
1989
2045
  }
1990
2046
 
2047
+ /**
2048
+ * Utility type that collects the services required by the handlers of a
2049
+ * completion-handler record, including handlers declared as optional.
2050
+ *
2051
+ * @stability unstable
2052
+ * @category utility types
2053
+ * @since 4.0.0
2054
+ */
2055
+ export type CompletionServices<Completions> = {
2056
+ [K in keyof Completions]-?: NonNullable<Completions[K]> extends (...args: any) => infer Ret ? Effect.Services<Ret>
2057
+ : never
2058
+ }[keyof Completions]
2059
+
1991
2060
  /**
1992
2061
  * Completion-handler map for a resource URI template.
1993
2062
  *
@@ -2365,7 +2434,13 @@ export const registerPrompt = <
2365
2434
  ): Effect.Effect<
2366
2435
  void,
2367
2436
  never,
2368
- Exclude<Schema.Struct.DecodingServices<Params> | R, McpRequestContext> | McpServer
2437
+ | Exclude<
2438
+ | Schema.Struct.DecodingServices<Params>
2439
+ | R
2440
+ | CompletionServices<Completions>,
2441
+ McpRequestContext
2442
+ >
2443
+ | McpServer
2369
2444
  > => {
2370
2445
  const args = Arr.empty<PromptArgument>()
2371
2446
  const props: Record<string, Schema.Constraint> = options.parameters ?? {}
@@ -2503,7 +2578,12 @@ export const prompt = <
2503
2578
  ): Layer.Layer<
2504
2579
  never,
2505
2580
  never,
2506
- Exclude<Schema.Struct.DecodingServices<Params> | R, McpRequestContext>
2581
+ Exclude<
2582
+ | Schema.Struct.DecodingServices<Params>
2583
+ | R
2584
+ | CompletionServices<Completions>,
2585
+ McpRequestContext
2586
+ >
2507
2587
  > =>
2508
2588
  Layer.effectDiscard(registerPrompt(options)).pipe(
2509
2589
  Layer.provide(McpServer.layer)
@@ -152,6 +152,24 @@ export type AllPartsEncoded =
152
152
  | FinishPartEncoded
153
153
  | ErrorPartEncoded
154
154
 
155
+ // Tools are immutable, so response schemas can share their per-tool parts.
156
+ const toolPartSchemaCache = new WeakMap<Tool.Any, {
157
+ readonly toolCall: Schema.Top
158
+ readonly toolResult: Schema.Top
159
+ }>()
160
+
161
+ const toolPartSchemas = (tool: Tool.Any) => {
162
+ let parts = toolPartSchemaCache.get(tool)
163
+ if (parts === undefined) {
164
+ parts = {
165
+ toolCall: ToolCallPart(tool.name, tool.parametersSchema),
166
+ toolResult: ToolResultPart(tool.name, tool.successSchema, Tool.failureResultSchema(tool))
167
+ }
168
+ toolPartSchemaCache.set(tool, parts)
169
+ }
170
+ return parts
171
+ }
172
+
155
173
  /**
156
174
  * Creates a Schema for all response parts based on a toolkit.
157
175
  *
@@ -192,10 +210,9 @@ export const AllParts = <T extends Toolkit.Any | Toolkit.WithHandler<any>>(
192
210
  const toolCalls: Array<Schema.Top> = []
193
211
  const toolResults: Array<Schema.Top> = []
194
212
  for (const tool of Object.values(toolkit.tools as Record<string, Tool.Any>)) {
195
- const toolCall = ToolCallPart(tool.name, tool.parametersSchema)
196
- const toolResult = ToolResultPart(tool.name, tool.successSchema, Tool.failureResultSchema(tool))
197
- toolCalls.push(toolCall)
198
- toolResults.push(toolResult)
213
+ const parts = toolPartSchemas(tool)
214
+ toolCalls.push(parts.toolCall)
215
+ toolResults.push(parts.toolResult)
199
216
  }
200
217
  return Schema.Union([
201
218
  TextPart,
@@ -287,10 +304,9 @@ export const Part = <T extends Toolkit.Any | Toolkit.WithHandler<any>>(
287
304
  const toolCalls: Array<Schema.Top> = []
288
305
  const toolResults: Array<Schema.Top> = []
289
306
  for (const tool of Object.values(toolkit.tools as Record<string, Tool.Any>)) {
290
- const toolCall = ToolCallPart(tool.name, tool.parametersSchema)
291
- const toolResult = ToolResultPart(tool.name, tool.successSchema, Tool.failureResultSchema(tool))
292
- toolCalls.push(toolCall)
293
- toolResults.push(toolResult)
307
+ const parts = toolPartSchemas(tool)
308
+ toolCalls.push(parts.toolCall)
309
+ toolResults.push(parts.toolResult)
294
310
  }
295
311
  return Schema.Union([
296
312
  TextPart,
@@ -385,10 +401,9 @@ export const StreamPart = <T extends Toolkit.Any | Toolkit.WithHandler<any>>(
385
401
  const toolCalls: Array<Schema.Top> = []
386
402
  const toolResults: Array<Schema.Top> = []
387
403
  for (const tool of Object.values(toolkit.tools as Record<string, Tool.Any>)) {
388
- const toolCall = ToolCallPart(tool.name, tool.parametersSchema)
389
- const toolResult = ToolResultPart(tool.name, tool.successSchema, Tool.failureResultSchema(tool))
390
- toolCalls.push(toolCall)
391
- toolResults.push(toolResult)
404
+ const parts = toolPartSchemas(tool)
405
+ toolCalls.push(parts.toolCall)
406
+ toolResults.push(parts.toolResult)
392
407
  }
393
408
  return Schema.Union([
394
409
  TextStartPart,