effect 4.0.0-beta.101 → 4.0.0-beta.103

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 (1580) hide show
  1. package/dist/Array.d.ts +971 -1037
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +462 -412
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +433 -756
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +200 -325
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +207 -267
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +107 -135
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Boolean.d.ts +146 -188
  14. package/dist/Boolean.d.ts.map +1 -1
  15. package/dist/Boolean.js +64 -84
  16. package/dist/Boolean.js.map +1 -1
  17. package/dist/Brand.js.map +1 -1
  18. package/dist/Cache.d.ts +405 -254
  19. package/dist/Cache.d.ts.map +1 -1
  20. package/dist/Cache.js +166 -101
  21. package/dist/Cache.js.map +1 -1
  22. package/dist/Cause.d.ts +167 -277
  23. package/dist/Cause.d.ts.map +1 -1
  24. package/dist/Cause.js +122 -176
  25. package/dist/Cause.js.map +1 -1
  26. package/dist/Channel.d.ts +729 -768
  27. package/dist/Channel.d.ts.map +1 -1
  28. package/dist/Channel.js +541 -449
  29. package/dist/Channel.js.map +1 -1
  30. package/dist/ChannelSchema.d.ts +1 -1
  31. package/dist/ChannelSchema.d.ts.map +1 -1
  32. package/dist/ChannelSchema.js.map +1 -1
  33. package/dist/Chunk.d.ts +834 -1173
  34. package/dist/Chunk.d.ts.map +1 -1
  35. package/dist/Chunk.js +326 -439
  36. package/dist/Chunk.js.map +1 -1
  37. package/dist/Clock.d.ts +180 -49
  38. package/dist/Clock.d.ts.map +1 -1
  39. package/dist/Clock.js +96 -31
  40. package/dist/Clock.js.map +1 -1
  41. package/dist/Combiner.d.ts +20 -33
  42. package/dist/Combiner.d.ts.map +1 -1
  43. package/dist/Combiner.js +18 -30
  44. package/dist/Combiner.js.map +1 -1
  45. package/dist/Config.d.ts +226 -174
  46. package/dist/Config.d.ts.map +1 -1
  47. package/dist/Config.js +339 -267
  48. package/dist/Config.js.map +1 -1
  49. package/dist/ConfigProvider.d.ts +194 -68
  50. package/dist/ConfigProvider.d.ts.map +1 -1
  51. package/dist/ConfigProvider.js +122 -87
  52. package/dist/ConfigProvider.js.map +1 -1
  53. package/dist/Console.d.ts +233 -33
  54. package/dist/Console.d.ts.map +1 -1
  55. package/dist/Console.js +232 -32
  56. package/dist/Console.js.map +1 -1
  57. package/dist/Context.d.ts +151 -274
  58. package/dist/Context.d.ts.map +1 -1
  59. package/dist/Context.js +171 -214
  60. package/dist/Context.js.map +1 -1
  61. package/dist/Cron.d.ts +68 -77
  62. package/dist/Cron.d.ts.map +1 -1
  63. package/dist/Cron.js +57 -66
  64. package/dist/Cron.js.map +1 -1
  65. package/dist/Crypto.d.ts +13 -15
  66. package/dist/Crypto.d.ts.map +1 -1
  67. package/dist/Crypto.js +9 -10
  68. package/dist/Crypto.js.map +1 -1
  69. package/dist/Data.d.ts +60 -80
  70. package/dist/Data.d.ts.map +1 -1
  71. package/dist/Data.js +18 -24
  72. package/dist/Data.js.map +1 -1
  73. package/dist/DateTime.d.ts +562 -660
  74. package/dist/DateTime.d.ts.map +1 -1
  75. package/dist/DateTime.js +307 -362
  76. package/dist/DateTime.js.map +1 -1
  77. package/dist/Deferred.d.ts +253 -256
  78. package/dist/Deferred.d.ts.map +1 -1
  79. package/dist/Deferred.js +104 -96
  80. package/dist/Deferred.js.map +1 -1
  81. package/dist/Duration.d.ts +216 -308
  82. package/dist/Duration.d.ts.map +1 -1
  83. package/dist/Duration.js +132 -186
  84. package/dist/Duration.js.map +1 -1
  85. package/dist/Effect.d.ts +2897 -3342
  86. package/dist/Effect.d.ts.map +1 -1
  87. package/dist/Effect.js +1383 -1580
  88. package/dist/Effect.js.map +1 -1
  89. package/dist/Effectable.js.map +1 -1
  90. package/dist/Encoding.d.ts +22 -40
  91. package/dist/Encoding.d.ts.map +1 -1
  92. package/dist/Encoding.js +22 -40
  93. package/dist/Encoding.js.map +1 -1
  94. package/dist/Equal.d.ts +33 -37
  95. package/dist/Equal.d.ts.map +1 -1
  96. package/dist/Equal.js +29 -21
  97. package/dist/Equal.js.map +1 -1
  98. package/dist/Equivalence.d.ts +103 -105
  99. package/dist/Equivalence.d.ts.map +1 -1
  100. package/dist/Equivalence.js +77 -79
  101. package/dist/Equivalence.js.map +1 -1
  102. package/dist/ErrorReporter.d.ts +51 -27
  103. package/dist/ErrorReporter.d.ts.map +1 -1
  104. package/dist/ErrorReporter.js +50 -26
  105. package/dist/ErrorReporter.js.map +1 -1
  106. package/dist/ExecutionPlan.d.ts +13 -55
  107. package/dist/ExecutionPlan.d.ts.map +1 -1
  108. package/dist/ExecutionPlan.js +7 -28
  109. package/dist/ExecutionPlan.js.map +1 -1
  110. package/dist/Exit.d.ts +116 -192
  111. package/dist/Exit.d.ts.map +1 -1
  112. package/dist/Exit.js +82 -130
  113. package/dist/Exit.js.map +1 -1
  114. package/dist/Fiber.d.ts +82 -146
  115. package/dist/Fiber.d.ts.map +1 -1
  116. package/dist/Fiber.js +48 -87
  117. package/dist/Fiber.js.map +1 -1
  118. package/dist/FiberHandle.d.ts +152 -105
  119. package/dist/FiberHandle.d.ts.map +1 -1
  120. package/dist/FiberHandle.js +109 -75
  121. package/dist/FiberHandle.js.map +1 -1
  122. package/dist/FiberMap.d.ts +213 -168
  123. package/dist/FiberMap.d.ts.map +1 -1
  124. package/dist/FiberMap.js +114 -89
  125. package/dist/FiberMap.js.map +1 -1
  126. package/dist/FiberSet.d.ts +123 -81
  127. package/dist/FiberSet.d.ts.map +1 -1
  128. package/dist/FiberSet.js +85 -59
  129. package/dist/FiberSet.js.map +1 -1
  130. package/dist/FileSystem.d.ts +153 -264
  131. package/dist/FileSystem.d.ts.map +1 -1
  132. package/dist/FileSystem.js +42 -147
  133. package/dist/FileSystem.js.map +1 -1
  134. package/dist/Filter.d.ts +61 -33
  135. package/dist/Filter.d.ts.map +1 -1
  136. package/dist/Filter.js +26 -15
  137. package/dist/Filter.js.map +1 -1
  138. package/dist/Formatter.d.ts +25 -33
  139. package/dist/Formatter.d.ts.map +1 -1
  140. package/dist/Formatter.js +48 -49
  141. package/dist/Formatter.js.map +1 -1
  142. package/dist/Function.d.ts +76 -145
  143. package/dist/Function.d.ts.map +1 -1
  144. package/dist/Function.js +40 -57
  145. package/dist/Function.js.map +1 -1
  146. package/dist/Graph.d.ts +360 -714
  147. package/dist/Graph.d.ts.map +1 -1
  148. package/dist/Graph.js +168 -297
  149. package/dist/Graph.js.map +1 -1
  150. package/dist/HKT.d.ts +12 -6
  151. package/dist/HKT.d.ts.map +1 -1
  152. package/dist/Hash.d.ts +47 -83
  153. package/dist/Hash.d.ts.map +1 -1
  154. package/dist/Hash.js +46 -68
  155. package/dist/Hash.js.map +1 -1
  156. package/dist/HashMap.d.ts +319 -411
  157. package/dist/HashMap.d.ts.map +1 -1
  158. package/dist/HashMap.js +122 -166
  159. package/dist/HashMap.js.map +1 -1
  160. package/dist/HashRing.d.ts.map +1 -1
  161. package/dist/HashRing.js +1 -0
  162. package/dist/HashRing.js.map +1 -1
  163. package/dist/HashSet.d.ts +177 -284
  164. package/dist/HashSet.d.ts.map +1 -1
  165. package/dist/HashSet.js +68 -109
  166. package/dist/HashSet.js.map +1 -1
  167. package/dist/Inspectable.d.ts +12 -12
  168. package/dist/Inspectable.js +8 -8
  169. package/dist/Inspectable.js.map +1 -1
  170. package/dist/Iterable.d.ts +620 -786
  171. package/dist/Iterable.d.ts.map +1 -1
  172. package/dist/Iterable.js +230 -307
  173. package/dist/Iterable.js.map +1 -1
  174. package/dist/JsonPatch.d.ts +11 -13
  175. package/dist/JsonPatch.d.ts.map +1 -1
  176. package/dist/JsonPatch.js +46 -103
  177. package/dist/JsonPatch.js.map +1 -1
  178. package/dist/JsonPointer.d.ts +8 -8
  179. package/dist/JsonPointer.js +8 -8
  180. package/dist/JsonPointer.js.map +1 -1
  181. package/dist/JsonSchema.d.ts +98 -44
  182. package/dist/JsonSchema.d.ts.map +1 -1
  183. package/dist/JsonSchema.js +300 -239
  184. package/dist/JsonSchema.js.map +1 -1
  185. package/dist/Latch.d.ts +23 -35
  186. package/dist/Latch.d.ts.map +1 -1
  187. package/dist/Latch.js +16 -28
  188. package/dist/Latch.js.map +1 -1
  189. package/dist/Layer.d.ts +359 -260
  190. package/dist/Layer.d.ts.map +1 -1
  191. package/dist/Layer.js +195 -175
  192. package/dist/Layer.js.map +1 -1
  193. package/dist/LayerMap.d.ts +42 -29
  194. package/dist/LayerMap.d.ts.map +1 -1
  195. package/dist/LayerMap.js +31 -21
  196. package/dist/LayerMap.js.map +1 -1
  197. package/dist/LayerRef.d.ts +6 -2
  198. package/dist/LayerRef.d.ts.map +1 -1
  199. package/dist/LayerRef.js +6 -2
  200. package/dist/LayerRef.js.map +1 -1
  201. package/dist/LogLevel.d.ts +114 -214
  202. package/dist/LogLevel.d.ts.map +1 -1
  203. package/dist/LogLevel.js +41 -76
  204. package/dist/LogLevel.js.map +1 -1
  205. package/dist/Logger.d.ts +218 -467
  206. package/dist/Logger.d.ts.map +1 -1
  207. package/dist/Logger.js +207 -452
  208. package/dist/Logger.js.map +1 -1
  209. package/dist/ManagedRuntime.d.ts +16 -5
  210. package/dist/ManagedRuntime.d.ts.map +1 -1
  211. package/dist/ManagedRuntime.js +10 -5
  212. package/dist/ManagedRuntime.js.map +1 -1
  213. package/dist/Match.d.ts +217 -252
  214. package/dist/Match.d.ts.map +1 -1
  215. package/dist/Match.js +150 -183
  216. package/dist/Match.js.map +1 -1
  217. package/dist/Metric.d.ts +442 -993
  218. package/dist/Metric.d.ts.map +1 -1
  219. package/dist/Metric.js +202 -645
  220. package/dist/Metric.js.map +1 -1
  221. package/dist/MutableHashMap.d.ts +144 -173
  222. package/dist/MutableHashMap.d.ts.map +1 -1
  223. package/dist/MutableHashMap.js +68 -79
  224. package/dist/MutableHashMap.js.map +1 -1
  225. package/dist/MutableHashSet.d.ts +84 -89
  226. package/dist/MutableHashSet.d.ts.map +1 -1
  227. package/dist/MutableHashSet.js +44 -47
  228. package/dist/MutableHashSet.js.map +1 -1
  229. package/dist/MutableList.d.ts +71 -370
  230. package/dist/MutableList.d.ts.map +1 -1
  231. package/dist/MutableList.js +59 -284
  232. package/dist/MutableList.js.map +1 -1
  233. package/dist/MutableRef.d.ts +420 -243
  234. package/dist/MutableRef.d.ts.map +1 -1
  235. package/dist/MutableRef.js +209 -120
  236. package/dist/MutableRef.js.map +1 -1
  237. package/dist/Newtype.d.ts +21 -14
  238. package/dist/Newtype.d.ts.map +1 -1
  239. package/dist/Newtype.js +15 -13
  240. package/dist/Newtype.js.map +1 -1
  241. package/dist/NonEmptyIterable.d.ts +7 -137
  242. package/dist/NonEmptyIterable.d.ts.map +1 -1
  243. package/dist/NonEmptyIterable.js +5 -93
  244. package/dist/NonEmptyIterable.js.map +1 -1
  245. package/dist/Number.d.ts +196 -233
  246. package/dist/Number.d.ts.map +1 -1
  247. package/dist/Number.js +90 -109
  248. package/dist/Number.js.map +1 -1
  249. package/dist/Optic.d.ts +97 -189
  250. package/dist/Optic.d.ts.map +1 -1
  251. package/dist/Optic.js +190 -292
  252. package/dist/Optic.js.map +1 -1
  253. package/dist/Option.d.ts +447 -812
  254. package/dist/Option.d.ts.map +1 -1
  255. package/dist/Option.js +213 -393
  256. package/dist/Option.js.map +1 -1
  257. package/dist/Order.d.ts +109 -109
  258. package/dist/Order.js +91 -91
  259. package/dist/Order.js.map +1 -1
  260. package/dist/Ordering.d.ts +20 -23
  261. package/dist/Ordering.d.ts.map +1 -1
  262. package/dist/Ordering.js +8 -9
  263. package/dist/Ordering.js.map +1 -1
  264. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  265. package/dist/PartitionedSemaphore.js +1 -4
  266. package/dist/PartitionedSemaphore.js.map +1 -1
  267. package/dist/Path.d.ts +38 -41
  268. package/dist/Path.d.ts.map +1 -1
  269. package/dist/Path.js +3 -4
  270. package/dist/Path.js.map +1 -1
  271. package/dist/Pipeable.d.ts +6 -5
  272. package/dist/Pipeable.d.ts.map +1 -1
  273. package/dist/Pipeable.js +2 -2
  274. package/dist/Pipeable.js.map +1 -1
  275. package/dist/PlatformError.d.ts +4 -4
  276. package/dist/PlatformError.js +3 -3
  277. package/dist/PlatformError.js.map +1 -1
  278. package/dist/Pool.d.ts +4 -2
  279. package/dist/Pool.d.ts.map +1 -1
  280. package/dist/Pool.js +4 -2
  281. package/dist/Pool.js.map +1 -1
  282. package/dist/Predicate.d.ts +200 -181
  283. package/dist/Predicate.d.ts.map +1 -1
  284. package/dist/Predicate.js +100 -108
  285. package/dist/Predicate.js.map +1 -1
  286. package/dist/PrimaryKey.d.ts +7 -7
  287. package/dist/PrimaryKey.js +5 -5
  288. package/dist/PrimaryKey.js.map +1 -1
  289. package/dist/PubSub.d.ts +425 -494
  290. package/dist/PubSub.d.ts.map +1 -1
  291. package/dist/PubSub.js +373 -362
  292. package/dist/PubSub.js.map +1 -1
  293. package/dist/Pull.d.ts +24 -18
  294. package/dist/Pull.d.ts.map +1 -1
  295. package/dist/Pull.js +11 -9
  296. package/dist/Pull.js.map +1 -1
  297. package/dist/Queue.d.ts +200 -159
  298. package/dist/Queue.d.ts.map +1 -1
  299. package/dist/Queue.js +162 -132
  300. package/dist/Queue.js.map +1 -1
  301. package/dist/Random.d.ts +49 -74
  302. package/dist/Random.d.ts.map +1 -1
  303. package/dist/Random.js +35 -54
  304. package/dist/Random.js.map +1 -1
  305. package/dist/RcMap.d.ts +121 -63
  306. package/dist/RcMap.d.ts.map +1 -1
  307. package/dist/RcMap.js +42 -21
  308. package/dist/RcMap.js.map +1 -1
  309. package/dist/RcRef.d.ts +24 -13
  310. package/dist/RcRef.d.ts.map +1 -1
  311. package/dist/RcRef.js +15 -9
  312. package/dist/RcRef.js.map +1 -1
  313. package/dist/Record.d.ts +361 -466
  314. package/dist/Record.d.ts.map +1 -1
  315. package/dist/Record.js +163 -216
  316. package/dist/Record.js.map +1 -1
  317. package/dist/Redactable.d.ts +6 -2
  318. package/dist/Redactable.d.ts.map +1 -1
  319. package/dist/Redactable.js +7 -2
  320. package/dist/Redactable.js.map +1 -1
  321. package/dist/Redacted.d.ts +25 -25
  322. package/dist/Redacted.d.ts.map +1 -1
  323. package/dist/Redacted.js +19 -20
  324. package/dist/Redacted.js.map +1 -1
  325. package/dist/Reducer.d.ts +8 -15
  326. package/dist/Reducer.d.ts.map +1 -1
  327. package/dist/Reducer.js +6 -12
  328. package/dist/Reducer.js.map +1 -1
  329. package/dist/Ref.d.ts +95 -165
  330. package/dist/Ref.d.ts.map +1 -1
  331. package/dist/Ref.js +75 -122
  332. package/dist/Ref.js.map +1 -1
  333. package/dist/References.d.ts +102 -213
  334. package/dist/References.d.ts.map +1 -1
  335. package/dist/References.js +102 -213
  336. package/dist/References.js.map +1 -1
  337. package/dist/RegExp.d.ts +10 -14
  338. package/dist/RegExp.d.ts.map +1 -1
  339. package/dist/RegExp.js +10 -14
  340. package/dist/RegExp.js.map +1 -1
  341. package/dist/Request.d.ts +31 -21
  342. package/dist/Request.d.ts.map +1 -1
  343. package/dist/Request.js +25 -19
  344. package/dist/Request.js.map +1 -1
  345. package/dist/RequestResolver.d.ts +201 -90
  346. package/dist/RequestResolver.d.ts.map +1 -1
  347. package/dist/RequestResolver.js +87 -41
  348. package/dist/RequestResolver.js.map +1 -1
  349. package/dist/Resource.js.map +1 -1
  350. package/dist/Result.d.ts +302 -470
  351. package/dist/Result.d.ts.map +1 -1
  352. package/dist/Result.js +135 -218
  353. package/dist/Result.js.map +1 -1
  354. package/dist/Runtime.d.ts +50 -75
  355. package/dist/Runtime.d.ts.map +1 -1
  356. package/dist/Runtime.js +39 -60
  357. package/dist/Runtime.js.map +1 -1
  358. package/dist/Schedule.d.ts +290 -1636
  359. package/dist/Schedule.d.ts.map +1 -1
  360. package/dist/Schedule.js +162 -803
  361. package/dist/Schedule.js.map +1 -1
  362. package/dist/Scheduler.d.ts +5 -5
  363. package/dist/Scheduler.d.ts.map +1 -1
  364. package/dist/Scheduler.js +18 -6
  365. package/dist/Scheduler.js.map +1 -1
  366. package/dist/Schema.d.ts +1835 -1060
  367. package/dist/Schema.d.ts.map +1 -1
  368. package/dist/Schema.js +2708 -1050
  369. package/dist/Schema.js.map +1 -1
  370. package/dist/SchemaAST.d.ts +29 -52
  371. package/dist/SchemaAST.d.ts.map +1 -1
  372. package/dist/SchemaAST.js +537 -391
  373. package/dist/SchemaAST.js.map +1 -1
  374. package/dist/SchemaError.d.ts +7 -6
  375. package/dist/SchemaError.d.ts.map +1 -1
  376. package/dist/SchemaError.js +8 -7
  377. package/dist/SchemaError.js.map +1 -1
  378. package/dist/SchemaGetter.d.ts +230 -185
  379. package/dist/SchemaGetter.d.ts.map +1 -1
  380. package/dist/SchemaGetter.js +252 -209
  381. package/dist/SchemaGetter.js.map +1 -1
  382. package/dist/SchemaIssue.d.ts +62 -190
  383. package/dist/SchemaIssue.d.ts.map +1 -1
  384. package/dist/SchemaIssue.js +74 -266
  385. package/dist/SchemaIssue.js.map +1 -1
  386. package/dist/SchemaParser.d.ts +2 -2
  387. package/dist/SchemaParser.d.ts.map +1 -1
  388. package/dist/SchemaParser.js +123 -86
  389. package/dist/SchemaParser.js.map +1 -1
  390. package/dist/SchemaRepresentation.d.ts +398 -1513
  391. package/dist/SchemaRepresentation.d.ts.map +1 -1
  392. package/dist/SchemaRepresentation.js +290 -2854
  393. package/dist/SchemaRepresentation.js.map +1 -1
  394. package/dist/SchemaTransformation.d.ts +116 -76
  395. package/dist/SchemaTransformation.d.ts.map +1 -1
  396. package/dist/SchemaTransformation.js +123 -88
  397. package/dist/SchemaTransformation.js.map +1 -1
  398. package/dist/Scope.d.ts +123 -151
  399. package/dist/Scope.d.ts.map +1 -1
  400. package/dist/Scope.js +72 -92
  401. package/dist/Scope.js.map +1 -1
  402. package/dist/ScopedCache.js.map +1 -1
  403. package/dist/ScopedRef.d.ts +3 -3
  404. package/dist/ScopedRef.js +2 -2
  405. package/dist/ScopedRef.js.map +1 -1
  406. package/dist/Semaphore.d.ts +101 -13
  407. package/dist/Semaphore.d.ts.map +1 -1
  408. package/dist/Semaphore.js +78 -39
  409. package/dist/Semaphore.js.map +1 -1
  410. package/dist/Sink.d.ts +117 -107
  411. package/dist/Sink.d.ts.map +1 -1
  412. package/dist/Sink.js +107 -100
  413. package/dist/Sink.js.map +1 -1
  414. package/dist/Stdio.d.ts +1 -1
  415. package/dist/Stdio.js.map +1 -1
  416. package/dist/Stream.d.ts +2430 -2958
  417. package/dist/Stream.d.ts.map +1 -1
  418. package/dist/Stream.js +1124 -1397
  419. package/dist/Stream.js.map +1 -1
  420. package/dist/String.d.ts +262 -308
  421. package/dist/String.d.ts.map +1 -1
  422. package/dist/String.js +184 -215
  423. package/dist/String.js.map +1 -1
  424. package/dist/Struct.d.ts +109 -114
  425. package/dist/Struct.d.ts.map +1 -1
  426. package/dist/Struct.js +46 -54
  427. package/dist/Struct.js.map +1 -1
  428. package/dist/SubscriptionRef.d.ts +282 -250
  429. package/dist/SubscriptionRef.d.ts.map +1 -1
  430. package/dist/SubscriptionRef.js +104 -92
  431. package/dist/SubscriptionRef.js.map +1 -1
  432. package/dist/Symbol.d.ts +3 -3
  433. package/dist/Symbol.js +3 -3
  434. package/dist/Symbol.js.map +1 -1
  435. package/dist/SynchronizedRef.js.map +1 -1
  436. package/dist/Take.js.map +1 -1
  437. package/dist/Terminal.d.ts +2 -2
  438. package/dist/Terminal.js +1 -1
  439. package/dist/Terminal.js.map +1 -1
  440. package/dist/Tracer.d.ts +100 -54
  441. package/dist/Tracer.d.ts.map +1 -1
  442. package/dist/Tracer.js +41 -24
  443. package/dist/Tracer.js.map +1 -1
  444. package/dist/Trie.d.ts +287 -679
  445. package/dist/Trie.d.ts.map +1 -1
  446. package/dist/Trie.js +109 -251
  447. package/dist/Trie.js.map +1 -1
  448. package/dist/Tuple.d.ts +92 -127
  449. package/dist/Tuple.d.ts.map +1 -1
  450. package/dist/Tuple.js +42 -57
  451. package/dist/Tuple.js.map +1 -1
  452. package/dist/TxChunk.d.ts +201 -121
  453. package/dist/TxChunk.d.ts.map +1 -1
  454. package/dist/TxChunk.js +85 -56
  455. package/dist/TxChunk.js.map +1 -1
  456. package/dist/TxDeferred.d.ts +62 -46
  457. package/dist/TxDeferred.d.ts.map +1 -1
  458. package/dist/TxDeferred.js +30 -22
  459. package/dist/TxDeferred.js.map +1 -1
  460. package/dist/TxHashMap.d.ts +631 -779
  461. package/dist/TxHashMap.d.ts.map +1 -1
  462. package/dist/TxHashMap.js +268 -330
  463. package/dist/TxHashMap.js.map +1 -1
  464. package/dist/TxHashSet.d.ts +297 -236
  465. package/dist/TxHashSet.d.ts.map +1 -1
  466. package/dist/TxHashSet.js +130 -100
  467. package/dist/TxHashSet.js.map +1 -1
  468. package/dist/TxPriorityQueue.d.ts +126 -95
  469. package/dist/TxPriorityQueue.d.ts.map +1 -1
  470. package/dist/TxPriorityQueue.js +74 -56
  471. package/dist/TxPriorityQueue.js.map +1 -1
  472. package/dist/TxPubSub.d.ts +101 -88
  473. package/dist/TxPubSub.d.ts.map +1 -1
  474. package/dist/TxPubSub.js +87 -66
  475. package/dist/TxPubSub.js.map +1 -1
  476. package/dist/TxQueue.d.ts +200 -180
  477. package/dist/TxQueue.d.ts.map +1 -1
  478. package/dist/TxQueue.js +160 -136
  479. package/dist/TxQueue.js.map +1 -1
  480. package/dist/TxReentrantLock.d.ts +97 -66
  481. package/dist/TxReentrantLock.d.ts.map +1 -1
  482. package/dist/TxReentrantLock.js +67 -45
  483. package/dist/TxReentrantLock.js.map +1 -1
  484. package/dist/TxRef.d.ts +51 -32
  485. package/dist/TxRef.d.ts.map +1 -1
  486. package/dist/TxRef.js +23 -15
  487. package/dist/TxRef.js.map +1 -1
  488. package/dist/TxSemaphore.d.ts +129 -95
  489. package/dist/TxSemaphore.d.ts.map +1 -1
  490. package/dist/TxSemaphore.js +85 -70
  491. package/dist/TxSemaphore.js.map +1 -1
  492. package/dist/TxSubscriptionRef.d.ts +97 -70
  493. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  494. package/dist/TxSubscriptionRef.js +44 -34
  495. package/dist/TxSubscriptionRef.js.map +1 -1
  496. package/dist/Types.d.ts +127 -70
  497. package/dist/Types.d.ts.map +1 -1
  498. package/dist/UndefinedOr.js.map +1 -1
  499. package/dist/Unify.d.ts +45 -65
  500. package/dist/Unify.d.ts.map +1 -1
  501. package/dist/Unify.js +6 -9
  502. package/dist/Unify.js.map +1 -1
  503. package/dist/Utils.d.ts +23 -16
  504. package/dist/Utils.d.ts.map +1 -1
  505. package/dist/Utils.js +3 -7
  506. package/dist/Utils.js.map +1 -1
  507. package/dist/index.d.ts +0 -4
  508. package/dist/index.d.ts.map +1 -1
  509. package/dist/index.js +0 -4
  510. package/dist/index.js.map +1 -1
  511. package/dist/internal/array.js.map +1 -1
  512. package/dist/internal/core.js +3 -2
  513. package/dist/internal/core.js.map +1 -1
  514. package/dist/internal/dateTime.js +4 -0
  515. package/dist/internal/dateTime.js.map +1 -1
  516. package/dist/internal/doNotation.js.map +1 -1
  517. package/dist/internal/effect.js +141 -61
  518. package/dist/internal/effect.js.map +1 -1
  519. package/dist/internal/equal.js.map +1 -1
  520. package/dist/internal/errors.js.map +1 -1
  521. package/dist/internal/executionPlan.js.map +1 -1
  522. package/dist/internal/hashMap.js.map +1 -1
  523. package/dist/internal/hashSet.js.map +1 -1
  524. package/dist/internal/layer.js.map +1 -1
  525. package/dist/internal/matcher.js +1 -1
  526. package/dist/internal/matcher.js.map +1 -1
  527. package/dist/internal/metric.js.map +1 -1
  528. package/dist/internal/option.js.map +1 -1
  529. package/dist/internal/persistence.d.ts +2 -0
  530. package/dist/internal/persistence.d.ts.map +1 -0
  531. package/dist/internal/persistence.js +3 -0
  532. package/dist/internal/persistence.js.map +1 -0
  533. package/dist/internal/random.js.map +1 -1
  534. package/dist/internal/rcRef.js.map +1 -1
  535. package/dist/internal/record.d.ts +0 -3
  536. package/dist/internal/record.d.ts.map +1 -1
  537. package/dist/internal/record.js +10 -5
  538. package/dist/internal/record.js.map +1 -1
  539. package/dist/internal/redacted.js.map +1 -1
  540. package/dist/internal/references.js +3 -4
  541. package/dist/internal/references.js.map +1 -1
  542. package/dist/internal/request.js.map +1 -1
  543. package/dist/internal/result.js.map +1 -1
  544. package/dist/internal/schedule.js.map +1 -1
  545. package/dist/internal/schema/annotations.js +12 -0
  546. package/dist/internal/schema/annotations.js.map +1 -1
  547. package/dist/internal/schema/cause.js.map +1 -1
  548. package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
  549. package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
  550. package/dist/internal/schema/fromJsonSchemaDocument.js +745 -0
  551. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
  552. package/dist/internal/schema/fromRepresentation.d.ts +2 -0
  553. package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
  554. package/dist/internal/schema/fromRepresentation.js +245 -0
  555. package/dist/internal/schema/fromRepresentation.js.map +1 -0
  556. package/dist/internal/schema/parser.d.ts +14 -0
  557. package/dist/internal/schema/parser.d.ts.map +1 -0
  558. package/dist/internal/schema/parser.js +13 -0
  559. package/dist/internal/schema/parser.js.map +1 -0
  560. package/dist/internal/schema/schema.js +28 -40
  561. package/dist/internal/schema/schema.js.map +1 -1
  562. package/dist/internal/schema/{arbitrary.d.ts → toArbitrary.d.ts} +1 -1
  563. package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
  564. package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -9
  565. package/dist/internal/schema/toArbitrary.js.map +1 -0
  566. package/dist/internal/schema/toCodeDocument.d.ts +2 -0
  567. package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
  568. package/dist/internal/schema/toCodeDocument.js +438 -0
  569. package/dist/internal/schema/toCodeDocument.js.map +1 -0
  570. package/dist/internal/schema/toEquivalence.d.ts +2 -0
  571. package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
  572. package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
  573. package/dist/internal/schema/toEquivalence.js.map +1 -0
  574. package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
  575. package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
  576. package/dist/internal/schema/toJsonSchemaDocument.js +508 -0
  577. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
  578. package/dist/internal/schema/toRepresentation.d.ts +2 -0
  579. package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
  580. package/dist/internal/schema/toRepresentation.js +349 -0
  581. package/dist/internal/schema/toRepresentation.js.map +1 -0
  582. package/dist/internal/stackTraceLimit.js +3 -6
  583. package/dist/internal/stackTraceLimit.js.map +1 -1
  584. package/dist/internal/stream.js.map +1 -1
  585. package/dist/internal/tracer.js.map +1 -1
  586. package/dist/internal/trie.js +13 -9
  587. package/dist/internal/trie.js.map +1 -1
  588. package/dist/testing/FastCheck.d.ts +8 -7
  589. package/dist/testing/FastCheck.d.ts.map +1 -1
  590. package/dist/testing/FastCheck.js +8 -7
  591. package/dist/testing/FastCheck.js.map +1 -1
  592. package/dist/testing/TestClock.d.ts +57 -28
  593. package/dist/testing/TestClock.d.ts.map +1 -1
  594. package/dist/testing/TestClock.js +54 -19
  595. package/dist/testing/TestClock.js.map +1 -1
  596. package/dist/testing/TestConsole.d.ts +32 -31
  597. package/dist/testing/TestConsole.d.ts.map +1 -1
  598. package/dist/testing/TestConsole.js +24 -22
  599. package/dist/testing/TestConsole.js.map +1 -1
  600. package/dist/testing/TestSchema.d.ts +29 -29
  601. package/dist/testing/TestSchema.js +25 -25
  602. package/dist/testing/TestSchema.js.map +1 -1
  603. package/dist/testing/index.js.map +1 -1
  604. package/dist/unstable/ai/AiError.d.ts +121 -144
  605. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  606. package/dist/unstable/ai/AiError.js +99 -121
  607. package/dist/unstable/ai/AiError.js.map +1 -1
  608. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
  609. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  610. package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
  611. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  612. package/dist/unstable/ai/Chat.d.ts +132 -97
  613. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  614. package/dist/unstable/ai/Chat.js +55 -51
  615. package/dist/unstable/ai/Chat.js.map +1 -1
  616. package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
  617. package/dist/unstable/ai/EmbeddingModel.js +1 -1
  618. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  619. package/dist/unstable/ai/IdGenerator.d.ts +32 -28
  620. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  621. package/dist/unstable/ai/IdGenerator.js +26 -21
  622. package/dist/unstable/ai/IdGenerator.js.map +1 -1
  623. package/dist/unstable/ai/LanguageModel.d.ts +111 -68
  624. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  625. package/dist/unstable/ai/LanguageModel.js +123 -81
  626. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  627. package/dist/unstable/ai/McpProtocol.d.ts +30 -0
  628. package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
  629. package/dist/unstable/ai/McpProtocol.js +20 -0
  630. package/dist/unstable/ai/McpProtocol.js.map +1 -0
  631. package/dist/unstable/ai/McpSchema.d.ts +316 -250
  632. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  633. package/dist/unstable/ai/McpSchema.js +71 -63
  634. package/dist/unstable/ai/McpSchema.js.map +1 -1
  635. package/dist/unstable/ai/McpServer.d.ts +71 -62
  636. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  637. package/dist/unstable/ai/McpServer.js +765 -245
  638. package/dist/unstable/ai/McpServer.js.map +1 -1
  639. package/dist/unstable/ai/Model.d.ts +8 -19
  640. package/dist/unstable/ai/Model.d.ts.map +1 -1
  641. package/dist/unstable/ai/Model.js +9 -20
  642. package/dist/unstable/ai/Model.js.map +1 -1
  643. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +33 -11
  644. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  645. package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
  646. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  647. package/dist/unstable/ai/Prompt.d.ts +112 -38
  648. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  649. package/dist/unstable/ai/Prompt.js +53 -17
  650. package/dist/unstable/ai/Prompt.js.map +1 -1
  651. package/dist/unstable/ai/Response.d.ts +47 -33
  652. package/dist/unstable/ai/Response.d.ts.map +1 -1
  653. package/dist/unstable/ai/Response.js +23 -18
  654. package/dist/unstable/ai/Response.js.map +1 -1
  655. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
  656. package/dist/unstable/ai/Telemetry.d.ts +46 -13
  657. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  658. package/dist/unstable/ai/Telemetry.js +18 -7
  659. package/dist/unstable/ai/Telemetry.js.map +1 -1
  660. package/dist/unstable/ai/Tokenizer.d.ts +14 -3
  661. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  662. package/dist/unstable/ai/Tokenizer.js +10 -2
  663. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  664. package/dist/unstable/ai/Tool.d.ts +63 -44
  665. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  666. package/dist/unstable/ai/Tool.js +59 -42
  667. package/dist/unstable/ai/Tool.js.map +1 -1
  668. package/dist/unstable/ai/Toolkit.d.ts +35 -9
  669. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  670. package/dist/unstable/ai/Toolkit.js +32 -14
  671. package/dist/unstable/ai/Toolkit.js.map +1 -1
  672. package/dist/unstable/ai/index.d.ts +4 -0
  673. package/dist/unstable/ai/index.d.ts.map +1 -1
  674. package/dist/unstable/ai/index.js +4 -0
  675. package/dist/unstable/ai/index.js.map +1 -1
  676. package/dist/unstable/ai/internal/codec-transformer.js +15 -12
  677. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  678. package/dist/unstable/ai/internal/mcpProtocol.d.ts +21 -0
  679. package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
  680. package/dist/unstable/ai/internal/mcpProtocol.js +22 -0
  681. package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
  682. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
  683. package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
  684. package/dist/unstable/ai/internal/mcpProtocolRegistry.js +32 -0
  685. package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
  686. package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
  687. package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
  688. package/dist/unstable/ai/internal/structured-output.js +315 -0
  689. package/dist/unstable/ai/internal/structured-output.js.map +1 -0
  690. package/dist/unstable/cli/Argument.d.ts +273 -69
  691. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  692. package/dist/unstable/cli/Argument.js +111 -33
  693. package/dist/unstable/cli/Argument.js.map +1 -1
  694. package/dist/unstable/cli/CliConfig.js.map +1 -1
  695. package/dist/unstable/cli/CliError.d.ts +105 -74
  696. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  697. package/dist/unstable/cli/CliError.js +98 -63
  698. package/dist/unstable/cli/CliError.js.map +1 -1
  699. package/dist/unstable/cli/CliOutput.d.ts +35 -54
  700. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  701. package/dist/unstable/cli/CliOutput.js +26 -42
  702. package/dist/unstable/cli/CliOutput.js.map +1 -1
  703. package/dist/unstable/cli/Command.d.ts +705 -107
  704. package/dist/unstable/cli/Command.d.ts.map +1 -1
  705. package/dist/unstable/cli/Command.js +252 -47
  706. package/dist/unstable/cli/Command.js.map +1 -1
  707. package/dist/unstable/cli/Completions.js.map +1 -1
  708. package/dist/unstable/cli/Flag.d.ts +418 -138
  709. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  710. package/dist/unstable/cli/Flag.js +197 -71
  711. package/dist/unstable/cli/Flag.js.map +1 -1
  712. package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
  713. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  714. package/dist/unstable/cli/HelpDoc.d.ts +12 -4
  715. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  716. package/dist/unstable/cli/Param.d.ts +292 -78
  717. package/dist/unstable/cli/Param.d.ts.map +1 -1
  718. package/dist/unstable/cli/Param.js +131 -49
  719. package/dist/unstable/cli/Param.js.map +1 -1
  720. package/dist/unstable/cli/Primitive.d.ts +370 -149
  721. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  722. package/dist/unstable/cli/Primitive.js +345 -137
  723. package/dist/unstable/cli/Primitive.js.map +1 -1
  724. package/dist/unstable/cli/Prompt.d.ts +23 -14
  725. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  726. package/dist/unstable/cli/Prompt.js +23 -14
  727. package/dist/unstable/cli/Prompt.js.map +1 -1
  728. package/dist/unstable/cli/index.js.map +1 -1
  729. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  730. package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
  731. package/dist/unstable/cli/internal/command.d.ts +3 -1
  732. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  733. package/dist/unstable/cli/internal/command.js +11 -4
  734. package/dist/unstable/cli/internal/command.js.map +1 -1
  735. package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
  736. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  737. package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
  738. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  739. package/dist/unstable/cli/internal/config.d.ts +0 -48
  740. package/dist/unstable/cli/internal/config.d.ts.map +1 -1
  741. package/dist/unstable/cli/internal/config.js +8 -10
  742. package/dist/unstable/cli/internal/config.js.map +1 -1
  743. package/dist/unstable/cli/internal/help.js.map +1 -1
  744. package/dist/unstable/cli/internal/lexer.js +17 -7
  745. package/dist/unstable/cli/internal/lexer.js.map +1 -1
  746. package/dist/unstable/cli/internal/parser.js +2 -2
  747. package/dist/unstable/cli/internal/parser.js.map +1 -1
  748. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  749. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  750. package/dist/unstable/cluster/ClusterError.js.map +1 -1
  751. package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
  752. package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
  753. package/dist/unstable/cluster/ClusterSchema.js +8 -8
  754. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  755. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  756. package/dist/unstable/cluster/ClusterWorkflowEngine.js +6 -2
  757. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  758. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  759. package/dist/unstable/cluster/Entity.d.ts +10 -10
  760. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  761. package/dist/unstable/cluster/Entity.js +9 -9
  762. package/dist/unstable/cluster/Entity.js.map +1 -1
  763. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  764. package/dist/unstable/cluster/EntityId.js.map +1 -1
  765. package/dist/unstable/cluster/EntityProxy.d.ts +4 -2
  766. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  767. package/dist/unstable/cluster/EntityProxy.js +4 -2
  768. package/dist/unstable/cluster/EntityProxy.js.map +1 -1
  769. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  770. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  771. package/dist/unstable/cluster/EntityResource.js +2 -2
  772. package/dist/unstable/cluster/EntityResource.js.map +1 -1
  773. package/dist/unstable/cluster/EntityType.js.map +1 -1
  774. package/dist/unstable/cluster/Envelope.d.ts +3 -3
  775. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  776. package/dist/unstable/cluster/Envelope.js +5 -4
  777. package/dist/unstable/cluster/Envelope.js.map +1 -1
  778. package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
  779. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  780. package/dist/unstable/cluster/HttpRunner.js +6 -4
  781. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  782. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  783. package/dist/unstable/cluster/MachineId.js.map +1 -1
  784. package/dist/unstable/cluster/Message.d.ts +9 -9
  785. package/dist/unstable/cluster/Message.js +6 -6
  786. package/dist/unstable/cluster/Message.js.map +1 -1
  787. package/dist/unstable/cluster/MessageStorage.d.ts +15 -15
  788. package/dist/unstable/cluster/MessageStorage.js +5 -5
  789. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  790. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  791. package/dist/unstable/cluster/Reply.js +5 -5
  792. package/dist/unstable/cluster/Reply.js.map +1 -1
  793. package/dist/unstable/cluster/Runner.d.ts +1 -1
  794. package/dist/unstable/cluster/Runner.js +1 -1
  795. package/dist/unstable/cluster/Runner.js.map +1 -1
  796. package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
  797. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  798. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  799. package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
  800. package/dist/unstable/cluster/RunnerHealth.js +1 -1
  801. package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
  802. package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
  803. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  804. package/dist/unstable/cluster/RunnerServer.js +16 -16
  805. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  806. package/dist/unstable/cluster/RunnerStorage.d.ts +2 -2
  807. package/dist/unstable/cluster/RunnerStorage.js +1 -1
  808. package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
  809. package/dist/unstable/cluster/Runners.d.ts +6 -6
  810. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  811. package/dist/unstable/cluster/Runners.js +19 -10
  812. package/dist/unstable/cluster/Runners.js.map +1 -1
  813. package/dist/unstable/cluster/ShardId.js +1 -1
  814. package/dist/unstable/cluster/ShardId.js.map +1 -1
  815. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  816. package/dist/unstable/cluster/Sharding.js +128 -26
  817. package/dist/unstable/cluster/Sharding.js.map +1 -1
  818. package/dist/unstable/cluster/ShardingConfig.d.ts +13 -5
  819. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  820. package/dist/unstable/cluster/ShardingConfig.js +3 -3
  821. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  822. package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
  823. package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
  824. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  825. package/dist/unstable/cluster/SingleRunner.js +2 -1
  826. package/dist/unstable/cluster/SingleRunner.js.map +1 -1
  827. package/dist/unstable/cluster/Singleton.js.map +1 -1
  828. package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
  829. package/dist/unstable/cluster/SingletonAddress.js +1 -1
  830. package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
  831. package/dist/unstable/cluster/Snowflake.d.ts +8 -8
  832. package/dist/unstable/cluster/Snowflake.js +8 -8
  833. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  834. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  835. package/dist/unstable/cluster/SqlMessageStorage.d.ts +7 -4
  836. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  837. package/dist/unstable/cluster/SqlMessageStorage.js +56 -25
  838. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  839. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  840. package/dist/unstable/cluster/SqlRunnerStorage.js +127 -65
  841. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  842. package/dist/unstable/cluster/TestRunner.js.map +1 -1
  843. package/dist/unstable/cluster/index.js.map +1 -1
  844. package/dist/unstable/cluster/internal/entityManager.js +24 -12
  845. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  846. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  847. package/dist/unstable/cluster/internal/hash.js.map +1 -1
  848. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  849. package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
  850. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  851. package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
  852. package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
  853. package/dist/unstable/cluster/internal/shardLock.js +4 -0
  854. package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
  855. package/dist/unstable/devtools/DevTools.js.map +1 -1
  856. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  857. package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
  858. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  859. package/dist/unstable/devtools/DevToolsSchema.js +8 -5
  860. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  861. package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
  862. package/dist/unstable/devtools/index.js.map +1 -1
  863. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  864. package/dist/unstable/encoding/Msgpack.js +6 -8
  865. package/dist/unstable/encoding/Msgpack.js.map +1 -1
  866. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  867. package/dist/unstable/encoding/Sse.d.ts +72 -8
  868. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  869. package/dist/unstable/encoding/Sse.js +58 -8
  870. package/dist/unstable/encoding/Sse.js.map +1 -1
  871. package/dist/unstable/encoding/index.js.map +1 -1
  872. package/dist/unstable/eventlog/Event.d.ts +20 -20
  873. package/dist/unstable/eventlog/Event.js.map +1 -1
  874. package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
  875. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  876. package/dist/unstable/eventlog/EventJournal.d.ts +16 -16
  877. package/dist/unstable/eventlog/EventJournal.js +14 -14
  878. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  879. package/dist/unstable/eventlog/EventLog.d.ts +3 -3
  880. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  881. package/dist/unstable/eventlog/EventLog.js +18 -14
  882. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  883. package/dist/unstable/eventlog/EventLogEncryption.d.ts +2 -2
  884. package/dist/unstable/eventlog/EventLogEncryption.js +2 -2
  885. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  886. package/dist/unstable/eventlog/EventLogMessage.d.ts +6 -6
  887. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  888. package/dist/unstable/eventlog/EventLogMessage.js +9 -4
  889. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  890. package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
  891. package/dist/unstable/eventlog/EventLogRemote.js +1 -1
  892. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  893. package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
  894. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  895. package/dist/unstable/eventlog/EventLogServer.js +45 -21
  896. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  897. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
  898. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  899. package/dist/unstable/eventlog/EventLogServerEncrypted.js +13 -5
  900. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
  901. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
  902. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  903. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +14 -6
  904. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  905. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
  906. package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
  907. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
  908. package/dist/unstable/eventlog/SqlEventJournal.js +2 -2
  909. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  910. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
  911. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  912. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
  913. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  914. package/dist/unstable/eventlog/index.js.map +1 -1
  915. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  916. package/dist/unstable/http/Cookies.d.ts +2 -2
  917. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  918. package/dist/unstable/http/Cookies.js +54 -40
  919. package/dist/unstable/http/Cookies.js.map +1 -1
  920. package/dist/unstable/http/Etag.d.ts +1 -1
  921. package/dist/unstable/http/Etag.js +1 -1
  922. package/dist/unstable/http/Etag.js.map +1 -1
  923. package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
  924. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  925. package/dist/unstable/http/Headers.d.ts +2 -2
  926. package/dist/unstable/http/Headers.js +10 -10
  927. package/dist/unstable/http/Headers.js.map +1 -1
  928. package/dist/unstable/http/HttpBody.d.ts +5 -3
  929. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  930. package/dist/unstable/http/HttpBody.js +11 -5
  931. package/dist/unstable/http/HttpBody.js.map +1 -1
  932. package/dist/unstable/http/HttpClient.d.ts +51 -44
  933. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  934. package/dist/unstable/http/HttpClient.js +46 -17
  935. package/dist/unstable/http/HttpClient.js.map +1 -1
  936. package/dist/unstable/http/HttpClientError.js.map +1 -1
  937. package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
  938. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  939. package/dist/unstable/http/HttpClientRequest.js +16 -0
  940. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  941. package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
  942. package/dist/unstable/http/HttpClientResponse.js +2 -2
  943. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  944. package/dist/unstable/http/HttpEffect.d.ts +6 -6
  945. package/dist/unstable/http/HttpEffect.js +3 -3
  946. package/dist/unstable/http/HttpEffect.js.map +1 -1
  947. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  948. package/dist/unstable/http/HttpMethod.d.ts +6 -9
  949. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  950. package/dist/unstable/http/HttpMethod.js +6 -9
  951. package/dist/unstable/http/HttpMethod.js.map +1 -1
  952. package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
  953. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  954. package/dist/unstable/http/HttpMiddleware.js +164 -39
  955. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  956. package/dist/unstable/http/HttpPlatform.d.ts +76 -0
  957. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  958. package/dist/unstable/http/HttpPlatform.js +32 -0
  959. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  960. package/dist/unstable/http/HttpRouter.d.ts +88 -89
  961. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  962. package/dist/unstable/http/HttpRouter.js +78 -79
  963. package/dist/unstable/http/HttpRouter.js.map +1 -1
  964. package/dist/unstable/http/HttpServer.d.ts +13 -13
  965. package/dist/unstable/http/HttpServer.js +6 -6
  966. package/dist/unstable/http/HttpServer.js.map +1 -1
  967. package/dist/unstable/http/HttpServerError.d.ts +2 -2
  968. package/dist/unstable/http/HttpServerError.js +2 -2
  969. package/dist/unstable/http/HttpServerError.js.map +1 -1
  970. package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
  971. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  972. package/dist/unstable/http/HttpServerRequest.js +9 -8
  973. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  974. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  975. package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
  976. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  977. package/dist/unstable/http/HttpServerResponse.js +10 -0
  978. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  979. package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
  980. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  981. package/dist/unstable/http/HttpStaticServer.js +35 -7
  982. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  983. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  984. package/dist/unstable/http/Multipart.d.ts +6 -6
  985. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  986. package/dist/unstable/http/Multipart.js +22 -20
  987. package/dist/unstable/http/Multipart.js.map +1 -1
  988. package/dist/unstable/http/Template.js +1 -1
  989. package/dist/unstable/http/Template.js.map +1 -1
  990. package/dist/unstable/http/Url.d.ts +33 -63
  991. package/dist/unstable/http/Url.d.ts.map +1 -1
  992. package/dist/unstable/http/Url.js +14 -28
  993. package/dist/unstable/http/Url.js.map +1 -1
  994. package/dist/unstable/http/UrlParams.d.ts +10 -18
  995. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  996. package/dist/unstable/http/UrlParams.js +26 -31
  997. package/dist/unstable/http/UrlParams.js.map +1 -1
  998. package/dist/unstable/http/index.js.map +1 -1
  999. package/dist/unstable/http/internal/compression.d.ts +2 -0
  1000. package/dist/unstable/http/internal/compression.d.ts.map +1 -0
  1001. package/dist/unstable/http/internal/compression.js +155 -0
  1002. package/dist/unstable/http/internal/compression.js.map +1 -0
  1003. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
  1004. package/dist/unstable/httpapi/HttpApi.js +3 -3
  1005. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  1006. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
  1007. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  1008. package/dist/unstable/httpapi/HttpApiBuilder.js +10 -11
  1009. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  1010. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
  1011. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  1012. package/dist/unstable/httpapi/HttpApiClient.js +16 -18
  1013. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  1014. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +42 -42
  1015. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  1016. package/dist/unstable/httpapi/HttpApiError.d.ts +13 -13
  1017. package/dist/unstable/httpapi/HttpApiError.js +13 -13
  1018. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  1019. package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
  1020. package/dist/unstable/httpapi/HttpApiGroup.js +1 -1
  1021. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  1022. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
  1023. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  1024. package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
  1025. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  1026. package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
  1027. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  1028. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  1029. package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -6
  1030. package/dist/unstable/httpapi/HttpApiSchema.js +4 -4
  1031. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  1032. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  1033. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  1034. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  1035. package/dist/unstable/httpapi/OpenApi.d.ts +13 -13
  1036. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  1037. package/dist/unstable/httpapi/OpenApi.js +50 -37
  1038. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  1039. package/dist/unstable/httpapi/index.js.map +1 -1
  1040. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  1041. package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
  1042. package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
  1043. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
  1044. package/dist/unstable/observability/Otlp.js.map +1 -1
  1045. package/dist/unstable/observability/OtlpExporter.d.ts +70 -1
  1046. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  1047. package/dist/unstable/observability/OtlpExporter.js +84 -6
  1048. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  1049. package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
  1050. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  1051. package/dist/unstable/observability/OtlpLogger.js +2 -2
  1052. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  1053. package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
  1054. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  1055. package/dist/unstable/observability/OtlpMetrics.js +5 -2
  1056. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  1057. package/dist/unstable/observability/OtlpResource.d.ts +16 -7
  1058. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  1059. package/dist/unstable/observability/OtlpResource.js +21 -12
  1060. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  1061. package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
  1062. package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
  1063. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  1064. package/dist/unstable/observability/OtlpTracer.js +2 -2
  1065. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  1066. package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
  1067. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  1068. package/dist/unstable/observability/PrometheusMetrics.js +10 -3
  1069. package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
  1070. package/dist/unstable/observability/index.js.map +1 -1
  1071. package/dist/unstable/observability/internal/otlpEnv.js +1 -1
  1072. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  1073. package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
  1074. package/dist/unstable/observability/internal/protobuf.js +3 -0
  1075. package/dist/unstable/observability/internal/protobuf.js.map +1 -1
  1076. package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
  1077. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  1078. package/dist/unstable/persistence/KeyValueStore.js +22 -13
  1079. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  1080. package/dist/unstable/persistence/Persistable.d.ts +8 -8
  1081. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  1082. package/dist/unstable/persistence/Persistable.js +2 -1
  1083. package/dist/unstable/persistence/Persistable.js.map +1 -1
  1084. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  1085. package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
  1086. package/dist/unstable/persistence/PersistedQueue.js +6 -6
  1087. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  1088. package/dist/unstable/persistence/Persistence.d.ts +3 -3
  1089. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  1090. package/dist/unstable/persistence/Persistence.js +91 -15
  1091. package/dist/unstable/persistence/Persistence.js.map +1 -1
  1092. package/dist/unstable/persistence/RateLimiter.d.ts +28 -17
  1093. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  1094. package/dist/unstable/persistence/RateLimiter.js +26 -15
  1095. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  1096. package/dist/unstable/persistence/Redis.d.ts +2 -2
  1097. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  1098. package/dist/unstable/persistence/Redis.js +3 -3
  1099. package/dist/unstable/persistence/Redis.js.map +1 -1
  1100. package/dist/unstable/persistence/index.js.map +1 -1
  1101. package/dist/unstable/process/ChildProcess.d.ts +64 -21
  1102. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  1103. package/dist/unstable/process/ChildProcess.js +14 -5
  1104. package/dist/unstable/process/ChildProcess.js.map +1 -1
  1105. package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
  1106. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  1107. package/dist/unstable/process/ChildProcessSpawner.js +4 -2
  1108. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  1109. package/dist/unstable/process/index.js.map +1 -1
  1110. package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
  1111. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  1112. package/dist/unstable/reactivity/AsyncResult.js +14 -13
  1113. package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
  1114. package/dist/unstable/reactivity/Atom.d.ts +105 -19
  1115. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  1116. package/dist/unstable/reactivity/Atom.js +44 -12
  1117. package/dist/unstable/reactivity/Atom.js.map +1 -1
  1118. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
  1119. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  1120. package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
  1121. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  1122. package/dist/unstable/reactivity/AtomRef.js.map +1 -1
  1123. package/dist/unstable/reactivity/AtomRegistry.js +25 -4
  1124. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  1125. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
  1126. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  1127. package/dist/unstable/reactivity/AtomRpc.js +4 -1
  1128. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  1129. package/dist/unstable/reactivity/Hydration.d.ts +1 -1
  1130. package/dist/unstable/reactivity/Hydration.js +1 -1
  1131. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  1132. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  1133. package/dist/unstable/reactivity/index.js.map +1 -1
  1134. package/dist/unstable/rpc/Rpc.d.ts +35 -33
  1135. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  1136. package/dist/unstable/rpc/Rpc.js +4 -2
  1137. package/dist/unstable/rpc/Rpc.js.map +1 -1
  1138. package/dist/unstable/rpc/RpcClient.d.ts +12 -12
  1139. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  1140. package/dist/unstable/rpc/RpcClient.js +14 -12
  1141. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  1142. package/dist/unstable/rpc/RpcClientError.js.map +1 -1
  1143. package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
  1144. package/dist/unstable/rpc/RpcGroup.js +1 -1
  1145. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  1146. package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
  1147. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  1148. package/dist/unstable/rpc/RpcMessage.js +6 -6
  1149. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  1150. package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
  1151. package/dist/unstable/rpc/RpcMiddleware.js +1 -1
  1152. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  1153. package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
  1154. package/dist/unstable/rpc/RpcSchema.js +3 -3
  1155. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  1156. package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
  1157. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  1158. package/dist/unstable/rpc/RpcSerialization.js +175 -96
  1159. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  1160. package/dist/unstable/rpc/RpcServer.d.ts +13 -13
  1161. package/dist/unstable/rpc/RpcServer.js +17 -13
  1162. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  1163. package/dist/unstable/rpc/RpcTest.js.map +1 -1
  1164. package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
  1165. package/dist/unstable/rpc/RpcWorker.js +4 -4
  1166. package/dist/unstable/rpc/RpcWorker.js.map +1 -1
  1167. package/dist/unstable/rpc/Utils.js.map +1 -1
  1168. package/dist/unstable/rpc/index.js.map +1 -1
  1169. package/dist/unstable/schema/Model.d.ts +52 -50
  1170. package/dist/unstable/schema/Model.d.ts.map +1 -1
  1171. package/dist/unstable/schema/Model.js +35 -33
  1172. package/dist/unstable/schema/Model.js.map +1 -1
  1173. package/dist/unstable/schema/VariantSchema.d.ts +6 -7
  1174. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  1175. package/dist/unstable/schema/VariantSchema.js +15 -12
  1176. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  1177. package/dist/unstable/schema/index.js.map +1 -1
  1178. package/dist/unstable/socket/Socket.d.ts +12 -4
  1179. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  1180. package/dist/unstable/socket/Socket.js +10 -5
  1181. package/dist/unstable/socket/Socket.js.map +1 -1
  1182. package/dist/unstable/socket/SocketServer.js.map +1 -1
  1183. package/dist/unstable/socket/index.js.map +1 -1
  1184. package/dist/unstable/sql/Migrator.js.map +1 -1
  1185. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  1186. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  1187. package/dist/unstable/sql/SqlClient.js +2 -2
  1188. package/dist/unstable/sql/SqlClient.js.map +1 -1
  1189. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  1190. package/dist/unstable/sql/SqlError.d.ts +2 -2
  1191. package/dist/unstable/sql/SqlError.js +2 -2
  1192. package/dist/unstable/sql/SqlError.js.map +1 -1
  1193. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  1194. package/dist/unstable/sql/SqlModel.js +2 -2
  1195. package/dist/unstable/sql/SqlModel.js.map +1 -1
  1196. package/dist/unstable/sql/SqlResolver.d.ts +5 -5
  1197. package/dist/unstable/sql/SqlResolver.js +2 -2
  1198. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  1199. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  1200. package/dist/unstable/sql/SqlStream.js.map +1 -1
  1201. package/dist/unstable/sql/Statement.d.ts +6 -6
  1202. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  1203. package/dist/unstable/sql/Statement.js +22 -21
  1204. package/dist/unstable/sql/Statement.js.map +1 -1
  1205. package/dist/unstable/sql/index.js.map +1 -1
  1206. package/dist/unstable/workers/Transferable.d.ts +1 -1
  1207. package/dist/unstable/workers/Transferable.js +1 -1
  1208. package/dist/unstable/workers/Transferable.js.map +1 -1
  1209. package/dist/unstable/workers/Worker.d.ts +2 -2
  1210. package/dist/unstable/workers/Worker.js +2 -2
  1211. package/dist/unstable/workers/Worker.js.map +1 -1
  1212. package/dist/unstable/workers/WorkerError.d.ts +7 -7
  1213. package/dist/unstable/workers/WorkerError.js +6 -6
  1214. package/dist/unstable/workers/WorkerError.js.map +1 -1
  1215. package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
  1216. package/dist/unstable/workers/WorkerRunner.js +1 -1
  1217. package/dist/unstable/workers/WorkerRunner.js.map +1 -1
  1218. package/dist/unstable/workers/index.js.map +1 -1
  1219. package/dist/unstable/workflow/Activity.d.ts +2 -2
  1220. package/dist/unstable/workflow/Activity.js +2 -2
  1221. package/dist/unstable/workflow/Activity.js.map +1 -1
  1222. package/dist/unstable/workflow/DurableClock.d.ts +1 -1
  1223. package/dist/unstable/workflow/DurableClock.js +1 -1
  1224. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  1225. package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
  1226. package/dist/unstable/workflow/DurableDeferred.js +5 -5
  1227. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  1228. package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
  1229. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  1230. package/dist/unstable/workflow/DurableQueue.js +22 -20
  1231. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  1232. package/dist/unstable/workflow/Workflow.d.ts +21 -21
  1233. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  1234. package/dist/unstable/workflow/Workflow.js +13 -14
  1235. package/dist/unstable/workflow/Workflow.js.map +1 -1
  1236. package/dist/unstable/workflow/WorkflowEngine.d.ts +1 -1
  1237. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  1238. package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
  1239. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  1240. package/dist/unstable/workflow/WorkflowProxy.js +4 -2
  1241. package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
  1242. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  1243. package/dist/unstable/workflow/index.js.map +1 -1
  1244. package/dist/unstable/workflow/internal/crypto.js.map +1 -1
  1245. package/package.json +5 -6
  1246. package/src/Array.ts +1068 -1070
  1247. package/src/BigDecimal.ts +433 -756
  1248. package/src/BigInt.ts +213 -269
  1249. package/src/Boolean.ts +146 -188
  1250. package/src/Cache.ts +409 -255
  1251. package/src/Cause.ts +167 -277
  1252. package/src/Channel.ts +923 -830
  1253. package/src/ChannelSchema.ts +1 -1
  1254. package/src/Chunk.ts +841 -1181
  1255. package/src/Clock.ts +181 -49
  1256. package/src/Combiner.ts +20 -33
  1257. package/src/Config.ts +618 -334
  1258. package/src/ConfigProvider.ts +221 -127
  1259. package/src/Console.ts +289 -39
  1260. package/src/Context.ts +319 -378
  1261. package/src/Cron.ts +68 -77
  1262. package/src/Crypto.ts +13 -15
  1263. package/src/Data.ts +63 -82
  1264. package/src/DateTime.ts +564 -660
  1265. package/src/Deferred.ts +253 -256
  1266. package/src/Duration.ts +216 -308
  1267. package/src/Effect.ts +2958 -3390
  1268. package/src/Encoding.ts +22 -40
  1269. package/src/Equal.ts +49 -39
  1270. package/src/Equivalence.ts +103 -105
  1271. package/src/ErrorReporter.ts +51 -27
  1272. package/src/ExecutionPlan.ts +13 -55
  1273. package/src/Exit.ts +116 -192
  1274. package/src/Fiber.ts +81 -148
  1275. package/src/FiberHandle.ts +155 -107
  1276. package/src/FiberMap.ts +225 -174
  1277. package/src/FiberSet.ts +124 -82
  1278. package/src/FileSystem.ts +155 -263
  1279. package/src/Filter.ts +61 -33
  1280. package/src/Formatter.ts +54 -56
  1281. package/src/Function.ts +76 -145
  1282. package/src/Graph.ts +416 -770
  1283. package/src/HKT.ts +12 -6
  1284. package/src/Hash.ts +52 -83
  1285. package/src/HashMap.ts +319 -411
  1286. package/src/HashRing.ts +1 -0
  1287. package/src/HashSet.ts +177 -284
  1288. package/src/Inspectable.ts +12 -12
  1289. package/src/Iterable.ts +622 -787
  1290. package/src/JsonPatch.ts +60 -113
  1291. package/src/JsonPointer.ts +8 -8
  1292. package/src/JsonSchema.ts +405 -249
  1293. package/src/Latch.ts +23 -35
  1294. package/src/Layer.ts +359 -260
  1295. package/src/LayerMap.ts +49 -29
  1296. package/src/LayerRef.ts +6 -2
  1297. package/src/LogLevel.ts +114 -214
  1298. package/src/Logger.ts +347 -699
  1299. package/src/ManagedRuntime.ts +20 -5
  1300. package/src/Match.ts +217 -252
  1301. package/src/Metric.ts +520 -1092
  1302. package/src/MutableHashMap.ts +218 -255
  1303. package/src/MutableHashSet.ts +84 -89
  1304. package/src/MutableList.ts +73 -370
  1305. package/src/MutableRef.ts +420 -243
  1306. package/src/Newtype.ts +21 -14
  1307. package/src/NonEmptyIterable.ts +7 -137
  1308. package/src/Number.ts +196 -233
  1309. package/src/Optic.ts +246 -385
  1310. package/src/Option.ts +449 -813
  1311. package/src/Order.ts +109 -109
  1312. package/src/Ordering.ts +20 -23
  1313. package/src/PartitionedSemaphore.ts +1 -4
  1314. package/src/Path.ts +38 -41
  1315. package/src/Pipeable.ts +6 -5
  1316. package/src/PlatformError.ts +4 -4
  1317. package/src/Pool.ts +4 -2
  1318. package/src/Predicate.ts +200 -181
  1319. package/src/PrimaryKey.ts +7 -7
  1320. package/src/PubSub.ts +526 -552
  1321. package/src/Pull.ts +24 -18
  1322. package/src/Queue.ts +200 -159
  1323. package/src/Random.ts +49 -74
  1324. package/src/RcMap.ts +121 -63
  1325. package/src/RcRef.ts +24 -13
  1326. package/src/Record.ts +387 -487
  1327. package/src/Redactable.ts +10 -3
  1328. package/src/Redacted.ts +25 -25
  1329. package/src/Reducer.ts +8 -15
  1330. package/src/Ref.ts +221 -361
  1331. package/src/References.ts +102 -214
  1332. package/src/RegExp.ts +10 -14
  1333. package/src/Request.ts +36 -28
  1334. package/src/RequestResolver.ts +202 -91
  1335. package/src/Result.ts +314 -485
  1336. package/src/Runtime.ts +50 -75
  1337. package/src/Schedule.ts +308 -1734
  1338. package/src/Scheduler.ts +20 -7
  1339. package/src/Schema.ts +3156 -1634
  1340. package/src/SchemaAST.ts +676 -489
  1341. package/src/SchemaError.ts +8 -7
  1342. package/src/SchemaGetter.ts +277 -218
  1343. package/src/SchemaIssue.ts +90 -276
  1344. package/src/SchemaParser.ts +179 -116
  1345. package/src/SchemaRepresentation.ts +698 -3417
  1346. package/src/SchemaTransformation.ts +132 -91
  1347. package/src/Scope.ts +123 -151
  1348. package/src/ScopedRef.ts +4 -4
  1349. package/src/Semaphore.ts +157 -54
  1350. package/src/Sink.ts +128 -113
  1351. package/src/Stdio.ts +1 -1
  1352. package/src/Stream.ts +2665 -3142
  1353. package/src/String.ts +275 -312
  1354. package/src/Struct.ts +114 -118
  1355. package/src/SubscriptionRef.ts +284 -252
  1356. package/src/Symbol.ts +3 -3
  1357. package/src/Terminal.ts +2 -2
  1358. package/src/Tracer.ts +102 -55
  1359. package/src/Trie.ts +287 -679
  1360. package/src/Tuple.ts +92 -127
  1361. package/src/TxChunk.ts +201 -121
  1362. package/src/TxDeferred.ts +62 -46
  1363. package/src/TxHashMap.ts +645 -799
  1364. package/src/TxHashSet.ts +443 -356
  1365. package/src/TxPriorityQueue.ts +130 -98
  1366. package/src/TxPubSub.ts +107 -80
  1367. package/src/TxQueue.ts +214 -183
  1368. package/src/TxReentrantLock.ts +97 -66
  1369. package/src/TxRef.ts +51 -32
  1370. package/src/TxSemaphore.ts +129 -95
  1371. package/src/TxSubscriptionRef.ts +97 -70
  1372. package/src/Types.ts +127 -70
  1373. package/src/Unify.ts +45 -65
  1374. package/src/Utils.ts +23 -16
  1375. package/src/index.ts +0 -5
  1376. package/src/internal/core.ts +5 -4
  1377. package/src/internal/dateTime.ts +6 -0
  1378. package/src/internal/effect.ts +160 -79
  1379. package/src/internal/matcher.ts +1 -1
  1380. package/src/internal/persistence.ts +2 -0
  1381. package/src/internal/record.ts +11 -7
  1382. package/src/internal/references.ts +3 -7
  1383. package/src/internal/schema/annotations.ts +44 -0
  1384. package/src/internal/schema/fromJsonSchemaDocument.ts +959 -0
  1385. package/src/internal/schema/fromRepresentation.ts +339 -0
  1386. package/src/internal/schema/parser.ts +22 -0
  1387. package/src/internal/schema/schema.ts +45 -46
  1388. package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +8 -10
  1389. package/src/internal/schema/toCodeDocument.ts +572 -0
  1390. package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
  1391. package/src/internal/schema/toJsonSchemaDocument.ts +529 -0
  1392. package/src/internal/schema/toRepresentation.ts +386 -0
  1393. package/src/internal/stackTraceLimit.ts +3 -7
  1394. package/src/internal/trie.ts +10 -11
  1395. package/src/testing/FastCheck.ts +8 -7
  1396. package/src/testing/TestClock.ts +73 -31
  1397. package/src/testing/TestConsole.ts +32 -31
  1398. package/src/testing/TestSchema.ts +29 -29
  1399. package/src/unstable/ai/AiError.ts +100 -122
  1400. package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
  1401. package/src/unstable/ai/Chat.ts +132 -97
  1402. package/src/unstable/ai/EmbeddingModel.ts +1 -1
  1403. package/src/unstable/ai/IdGenerator.ts +32 -28
  1404. package/src/unstable/ai/LanguageModel.ts +137 -95
  1405. package/src/unstable/ai/McpProtocol.ts +48 -0
  1406. package/src/unstable/ai/McpSchema.ts +75 -65
  1407. package/src/unstable/ai/McpServer.ts +1045 -303
  1408. package/src/unstable/ai/Model.ts +9 -20
  1409. package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
  1410. package/src/unstable/ai/Prompt.ts +145 -43
  1411. package/src/unstable/ai/Response.ts +52 -38
  1412. package/src/unstable/ai/Telemetry.ts +46 -13
  1413. package/src/unstable/ai/Tokenizer.ts +14 -3
  1414. package/src/unstable/ai/Tool.ts +81 -48
  1415. package/src/unstable/ai/Toolkit.ts +45 -15
  1416. package/src/unstable/ai/index.ts +5 -0
  1417. package/src/unstable/ai/internal/codec-transformer.ts +13 -7
  1418. package/src/unstable/ai/internal/mcpProtocol.ts +85 -0
  1419. package/src/unstable/ai/internal/mcpProtocolRegistry.ts +70 -0
  1420. package/src/unstable/ai/internal/structured-output.ts +453 -0
  1421. package/src/unstable/cli/Argument.ts +273 -69
  1422. package/src/unstable/cli/CliError.ts +116 -77
  1423. package/src/unstable/cli/CliOutput.ts +44 -58
  1424. package/src/unstable/cli/Command.ts +709 -111
  1425. package/src/unstable/cli/Flag.ts +418 -138
  1426. package/src/unstable/cli/GlobalFlag.ts +1 -1
  1427. package/src/unstable/cli/HelpDoc.ts +12 -4
  1428. package/src/unstable/cli/Param.ts +295 -81
  1429. package/src/unstable/cli/Primitive.ts +371 -150
  1430. package/src/unstable/cli/Prompt.ts +28 -14
  1431. package/src/unstable/cli/internal/command.ts +13 -5
  1432. package/src/unstable/cli/internal/config.ts +8 -10
  1433. package/src/unstable/cli/internal/lexer.ts +8 -2
  1434. package/src/unstable/cli/internal/parser.ts +2 -2
  1435. package/src/unstable/cluster/ClusterSchema.ts +8 -8
  1436. package/src/unstable/cluster/ClusterWorkflowEngine.ts +8 -4
  1437. package/src/unstable/cluster/Entity.ts +16 -17
  1438. package/src/unstable/cluster/EntityProxy.ts +4 -2
  1439. package/src/unstable/cluster/EntityResource.ts +2 -2
  1440. package/src/unstable/cluster/Envelope.ts +5 -4
  1441. package/src/unstable/cluster/HttpRunner.ts +6 -4
  1442. package/src/unstable/cluster/Message.ts +9 -9
  1443. package/src/unstable/cluster/MessageStorage.ts +15 -15
  1444. package/src/unstable/cluster/Reply.ts +5 -7
  1445. package/src/unstable/cluster/Runner.ts +1 -1
  1446. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1447. package/src/unstable/cluster/RunnerHealth.ts +1 -1
  1448. package/src/unstable/cluster/RunnerServer.ts +41 -8
  1449. package/src/unstable/cluster/RunnerStorage.ts +2 -2
  1450. package/src/unstable/cluster/Runners.ts +23 -12
  1451. package/src/unstable/cluster/ShardId.ts +1 -1
  1452. package/src/unstable/cluster/Sharding.ts +168 -42
  1453. package/src/unstable/cluster/ShardingConfig.ts +8 -4
  1454. package/src/unstable/cluster/SingleRunner.ts +4 -2
  1455. package/src/unstable/cluster/SingletonAddress.ts +1 -1
  1456. package/src/unstable/cluster/Snowflake.ts +8 -8
  1457. package/src/unstable/cluster/SqlMessageStorage.ts +84 -36
  1458. package/src/unstable/cluster/SqlRunnerStorage.ts +205 -119
  1459. package/src/unstable/cluster/internal/entityManager.ts +42 -25
  1460. package/src/unstable/cluster/internal/shardLock.ts +9 -0
  1461. package/src/unstable/devtools/DevToolsSchema.ts +10 -5
  1462. package/src/unstable/encoding/Msgpack.ts +6 -8
  1463. package/src/unstable/encoding/Sse.ts +98 -16
  1464. package/src/unstable/eventlog/Event.ts +20 -20
  1465. package/src/unstable/eventlog/EventGroup.ts +4 -4
  1466. package/src/unstable/eventlog/EventJournal.ts +16 -16
  1467. package/src/unstable/eventlog/EventLog.ts +24 -14
  1468. package/src/unstable/eventlog/EventLogEncryption.ts +2 -2
  1469. package/src/unstable/eventlog/EventLogMessage.ts +12 -5
  1470. package/src/unstable/eventlog/EventLogRemote.ts +1 -1
  1471. package/src/unstable/eventlog/EventLogServer.ts +41 -7
  1472. package/src/unstable/eventlog/EventLogServerEncrypted.ts +13 -5
  1473. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +14 -6
  1474. package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
  1475. package/src/unstable/eventlog/SqlEventJournal.ts +2 -2
  1476. package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
  1477. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
  1478. package/src/unstable/http/Cookies.ts +64 -45
  1479. package/src/unstable/http/Etag.ts +1 -1
  1480. package/src/unstable/http/FetchHttpClient.ts +3 -1
  1481. package/src/unstable/http/Headers.ts +10 -10
  1482. package/src/unstable/http/HttpBody.ts +20 -5
  1483. package/src/unstable/http/HttpClient.ts +83 -55
  1484. package/src/unstable/http/HttpClientRequest.ts +59 -0
  1485. package/src/unstable/http/HttpClientResponse.ts +4 -4
  1486. package/src/unstable/http/HttpEffect.ts +8 -8
  1487. package/src/unstable/http/HttpMethod.ts +6 -9
  1488. package/src/unstable/http/HttpMiddleware.ts +202 -39
  1489. package/src/unstable/http/HttpPlatform.ts +95 -0
  1490. package/src/unstable/http/HttpRouter.ts +102 -98
  1491. package/src/unstable/http/HttpServer.ts +13 -13
  1492. package/src/unstable/http/HttpServerError.ts +2 -2
  1493. package/src/unstable/http/HttpServerRequest.ts +9 -8
  1494. package/src/unstable/http/HttpServerResponse.ts +30 -0
  1495. package/src/unstable/http/HttpStaticServer.ts +35 -7
  1496. package/src/unstable/http/Multipart.ts +22 -19
  1497. package/src/unstable/http/Template.ts +1 -1
  1498. package/src/unstable/http/Url.ts +33 -63
  1499. package/src/unstable/http/UrlParams.ts +27 -32
  1500. package/src/unstable/http/internal/compression.ts +196 -0
  1501. package/src/unstable/httpapi/HttpApi.ts +3 -3
  1502. package/src/unstable/httpapi/HttpApiBuilder.ts +10 -9
  1503. package/src/unstable/httpapi/HttpApiClient.ts +19 -19
  1504. package/src/unstable/httpapi/HttpApiEndpoint.ts +42 -42
  1505. package/src/unstable/httpapi/HttpApiError.ts +13 -13
  1506. package/src/unstable/httpapi/HttpApiGroup.ts +16 -16
  1507. package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
  1508. package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
  1509. package/src/unstable/httpapi/HttpApiSchema.ts +6 -6
  1510. package/src/unstable/httpapi/OpenApi.ts +65 -41
  1511. package/src/unstable/observability/OtlpExporter.ts +126 -10
  1512. package/src/unstable/observability/OtlpLogger.ts +5 -5
  1513. package/src/unstable/observability/OtlpMetrics.ts +12 -5
  1514. package/src/unstable/observability/OtlpResource.ts +26 -17
  1515. package/src/unstable/observability/OtlpTracer.ts +8 -4
  1516. package/src/unstable/observability/PrometheusMetrics.ts +13 -4
  1517. package/src/unstable/observability/internal/otlpEnv.ts +1 -1
  1518. package/src/unstable/observability/internal/protobuf.ts +3 -0
  1519. package/src/unstable/persistence/KeyValueStore.ts +72 -49
  1520. package/src/unstable/persistence/Persistable.ts +11 -10
  1521. package/src/unstable/persistence/PersistedQueue.ts +6 -6
  1522. package/src/unstable/persistence/Persistence.ts +126 -19
  1523. package/src/unstable/persistence/RateLimiter.ts +28 -17
  1524. package/src/unstable/persistence/Redis.ts +4 -4
  1525. package/src/unstable/process/ChildProcess.ts +64 -21
  1526. package/src/unstable/process/ChildProcessSpawner.ts +22 -11
  1527. package/src/unstable/reactivity/AsyncResult.ts +16 -16
  1528. package/src/unstable/reactivity/Atom.ts +117 -22
  1529. package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
  1530. package/src/unstable/reactivity/AtomRegistry.ts +25 -4
  1531. package/src/unstable/reactivity/AtomRpc.ts +5 -4
  1532. package/src/unstable/reactivity/Hydration.ts +1 -1
  1533. package/src/unstable/rpc/Rpc.ts +35 -33
  1534. package/src/unstable/rpc/RpcClient.ts +18 -16
  1535. package/src/unstable/rpc/RpcGroup.ts +8 -8
  1536. package/src/unstable/rpc/RpcMessage.ts +31 -30
  1537. package/src/unstable/rpc/RpcMiddleware.ts +10 -10
  1538. package/src/unstable/rpc/RpcSchema.ts +4 -4
  1539. package/src/unstable/rpc/RpcSerialization.ts +167 -68
  1540. package/src/unstable/rpc/RpcServer.ts +18 -15
  1541. package/src/unstable/rpc/RpcWorker.ts +5 -5
  1542. package/src/unstable/schema/Model.ts +52 -50
  1543. package/src/unstable/schema/VariantSchema.ts +19 -29
  1544. package/src/unstable/socket/Socket.ts +18 -5
  1545. package/src/unstable/sql/SqlClient.ts +5 -6
  1546. package/src/unstable/sql/SqlError.ts +2 -2
  1547. package/src/unstable/sql/SqlModel.ts +2 -2
  1548. package/src/unstable/sql/SqlResolver.ts +5 -5
  1549. package/src/unstable/sql/Statement.ts +31 -29
  1550. package/src/unstable/workers/Transferable.ts +1 -1
  1551. package/src/unstable/workers/Worker.ts +2 -2
  1552. package/src/unstable/workers/WorkerError.ts +7 -7
  1553. package/src/unstable/workers/WorkerRunner.ts +1 -1
  1554. package/src/unstable/workflow/Activity.ts +2 -2
  1555. package/src/unstable/workflow/DurableClock.ts +1 -1
  1556. package/src/unstable/workflow/DurableDeferred.ts +10 -10
  1557. package/src/unstable/workflow/DurableQueue.ts +22 -20
  1558. package/src/unstable/workflow/Workflow.ts +23 -23
  1559. package/src/unstable/workflow/WorkflowEngine.ts +1 -1
  1560. package/src/unstable/workflow/WorkflowProxy.ts +4 -2
  1561. package/dist/SchemaUtils.d.ts +0 -28
  1562. package/dist/SchemaUtils.d.ts.map +0 -1
  1563. package/dist/SchemaUtils.js +0 -45
  1564. package/dist/SchemaUtils.js.map +0 -1
  1565. package/dist/internal/schema/arbitrary.d.ts.map +0 -1
  1566. package/dist/internal/schema/arbitrary.js.map +0 -1
  1567. package/dist/internal/schema/equivalence.d.ts +0 -2
  1568. package/dist/internal/schema/equivalence.d.ts.map +0 -1
  1569. package/dist/internal/schema/equivalence.js.map +0 -1
  1570. package/dist/internal/schema/representation.d.ts +0 -2
  1571. package/dist/internal/schema/representation.d.ts.map +0 -1
  1572. package/dist/internal/schema/representation.js +0 -865
  1573. package/dist/internal/schema/representation.js.map +0 -1
  1574. package/dist/internal/version.d.ts +0 -3
  1575. package/dist/internal/version.d.ts.map +0 -1
  1576. package/dist/internal/version.js +0 -2
  1577. package/dist/internal/version.js.map +0 -1
  1578. package/src/SchemaUtils.ts +0 -51
  1579. package/src/internal/schema/representation.ts +0 -795
  1580. package/src/internal/version.ts +0 -2
@@ -13,11 +13,14 @@
13
13
  import * as Arr from "../../Array.ts"
14
14
  import * as Cause from "../../Cause.ts"
15
15
  import * as Context from "../../Context.ts"
16
+ import * as Data from "../../Data.ts"
16
17
  import * as Effect from "../../Effect.ts"
17
18
  import * as Exit from "../../Exit.ts"
18
19
  import * as Fiber from "../../Fiber.ts"
19
20
  import * as Layer from "../../Layer.ts"
21
+ import * as LogLevel from "../../LogLevel.ts"
20
22
  import * as Option from "../../Option.ts"
23
+ import * as Predicate from "../../Predicate.ts"
21
24
  import * as Queue from "../../Queue.ts"
22
25
  import * as RcMap from "../../RcMap.ts"
23
26
  import { CurrentLogLevel } from "../../References.ts"
@@ -39,29 +42,37 @@ import type * as RpcGroup from "../rpc/RpcGroup.ts"
39
42
  import * as RpcMessage from "../rpc/RpcMessage.ts"
40
43
  import * as RpcSerialization from "../rpc/RpcSerialization.ts"
41
44
  import * as RpcServer from "../rpc/RpcServer.ts"
45
+ import * as AiError from "./AiError.ts"
46
+ import * as McpProtocolRegistry from "./internal/mcpProtocolRegistry.ts"
47
+ import type * as McpProtocol from "./McpProtocol.ts"
42
48
  import {
43
49
  CallToolResult,
44
- ClientNotificationRpcs,
50
+ CancelledNotification,
45
51
  ClientRpcs,
46
- CompleteResult,
47
52
  Elicit,
48
53
  ElicitationDeclined,
49
54
  EnabledWhen,
50
55
  GetPromptResult,
51
56
  InternalError,
57
+ INVALID_REQUEST_ERROR_CODE,
52
58
  InvalidParams,
59
+ InvalidRequest,
53
60
  isParam,
54
61
  ListPromptsResult,
55
62
  ListResourcesResult,
56
63
  ListResourceTemplatesResult,
57
64
  ListToolsResult,
65
+ LoggingMessageNotification,
66
+ McpErrorBase,
58
67
  McpServerClient,
59
68
  McpServerClientMiddleware,
69
+ MethodNotFound,
70
+ ParseError,
60
71
  Prompt,
61
72
  Resource,
62
73
  ResourceTemplate,
74
+ ResourceUpdatedNotification,
63
75
  ServerNotificationRpcs,
64
- ServerRequestRpcs,
65
76
  TextContent,
66
77
  Tool as McpTool
67
78
  } from "./McpSchema.ts"
@@ -69,8 +80,10 @@ import type {
69
80
  CallTool,
70
81
  ClientCapabilities,
71
82
  Complete,
83
+ CompleteResult,
72
84
  GetPrompt,
73
85
  Initialize,
86
+ LoggingLevel,
74
87
  Param,
75
88
  PromptArgument,
76
89
  PromptMessage,
@@ -80,6 +93,8 @@ import type {
80
93
  import * as Tool from "./Tool.ts"
81
94
  import type * as Toolkit from "./Toolkit.ts"
82
95
 
96
+ type CompletionContext = typeof Complete.payloadSchema.Type["context"]
97
+
83
98
  /**
84
99
  * Service that stores and serves an MCP server's registered tools, resources,
85
100
  * prompts, completions, and outgoing notifications.
@@ -89,7 +104,7 @@ import type * as Toolkit from "./Toolkit.ts"
89
104
  * Handlers use this service to register capabilities and resolve incoming MCP
90
105
  * requests.
91
106
  *
92
- * @category server
107
+ * @category services
93
108
  * @since 4.0.0
94
109
  */
95
110
  export class McpServer extends Context.Service<McpServer, {
@@ -104,7 +119,7 @@ export class McpServer extends Context.Service<McpServer, {
104
119
  readonly addTool: (options: {
105
120
  readonly tool: McpTool
106
121
  readonly annotations: Context.Context<never>
107
- readonly handle: (payload: any) => Effect.Effect<CallToolResult, never, McpServerClient>
122
+ readonly handle: (payload: any) => Effect.Effect<CallToolResult, InternalError | InvalidParams, McpServerClient>
108
123
  }) => Effect.Effect<void>
109
124
  readonly callTool: (
110
125
  requests: typeof CallTool.payloadSchema.Type
@@ -129,17 +144,27 @@ export class McpServer extends Context.Service<McpServer, {
129
144
  readonly template: ResourceTemplate
130
145
  readonly annotations: Context.Context<never>
131
146
  readonly routerPath: string
132
- readonly completions: Record<string, (input: string) => Effect.Effect<CompleteResult, InternalError>>
147
+ readonly completions: Record<
148
+ string,
149
+ (
150
+ input: string,
151
+ context: CompletionContext
152
+ ) => Effect.Effect<CompleteResult, InternalError>
153
+ >
133
154
  readonly handle: (
134
155
  uri: string,
135
156
  params: Array<string>
136
- ) => Effect.Effect<typeof ReadResourceResult.Type, InvalidParams | InternalError, McpServerClient>
157
+ ) => Effect.Effect<
158
+ typeof ReadResourceResult.Type,
159
+ InvalidParams | InternalError,
160
+ McpServerClient
161
+ >
137
162
  }
138
163
  ) => Effect.Effect<void>
139
164
 
140
165
  readonly findResource: (
141
166
  uri: string
142
- ) => Effect.Effect<typeof ReadResourceResult.Type, InvalidParams | InternalError, McpServerClient>
167
+ ) => Effect.Effect<typeof ReadResourceResult.Type, McpErrorBase | InvalidParams | InternalError, McpServerClient>
143
168
 
144
169
  readonly prompts: ReadonlyArray<{
145
170
  readonly prompt: Prompt
@@ -150,7 +175,10 @@ export class McpServer extends Context.Service<McpServer, {
150
175
  readonly annotations: Context.Context<never>
151
176
  readonly completions: Record<
152
177
  string,
153
- (input: string) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
178
+ (
179
+ input: string,
180
+ context: CompletionContext
181
+ ) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
154
182
  >
155
183
  readonly handle: (
156
184
  params: Record<string, string>
@@ -162,7 +190,7 @@ export class McpServer extends Context.Service<McpServer, {
162
190
 
163
191
  readonly completion: (
164
192
  complete: typeof Complete.payloadSchema.Type
165
- ) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
193
+ ) => Effect.Effect<CompleteResult, InvalidParams | InternalError, McpServerClient>
166
194
  }>()("effect/ai/McpServer") {
167
195
  /**
168
196
  * Builds an MCP server service from registered tools, prompts, resources, and completions.
@@ -176,7 +204,11 @@ export class McpServer extends Context.Service<McpServer, {
176
204
  readonly handle: (
177
205
  uri: string,
178
206
  params: Array<string>
179
- ) => Effect.Effect<typeof ReadResourceResult.Type, InternalError | InvalidParams, McpServerClient>
207
+ ) => Effect.Effect<
208
+ typeof ReadResourceResult.Type,
209
+ InternalError | InvalidParams,
210
+ McpServerClient
211
+ >
180
212
  } | {
181
213
  readonly _tag: "Resource"
182
214
  readonly effect: Effect.Effect<typeof ReadResourceResult.Type, InternalError, McpServerClient>
@@ -186,7 +218,10 @@ export class McpServer extends Context.Service<McpServer, {
186
218
  readonly tool: McpTool
187
219
  readonly annotations: Context.Context<never>
188
220
  }>()
189
- const toolMap = new Map<string, (payload: any) => Effect.Effect<CallToolResult, InternalError, McpServerClient>>()
221
+ const toolMap = new Map<
222
+ string,
223
+ (payload: any) => Effect.Effect<CallToolResult, InternalError | InvalidParams, McpServerClient>
224
+ >()
190
225
  const resources: Array<{
191
226
  readonly resource: Resource
192
227
  readonly annotations: Context.Context<never>
@@ -205,7 +240,10 @@ export class McpServer extends Context.Service<McpServer, {
205
240
  >()
206
241
  const completionsMap = new Map<
207
242
  string,
208
- (input: string) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
243
+ (
244
+ input: string,
245
+ context: CompletionContext
246
+ ) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
209
247
  >()
210
248
  const notificationsQueue = yield* Queue.make<RpcMessage.Request<any>>()
211
249
  const listChangedHandles = new Map<string, any>()
@@ -258,7 +296,9 @@ export class McpServer extends Context.Service<McpServer, {
258
296
  if (!handle) {
259
297
  return Effect.fail(new InvalidParams({ message: `Tool '${request.name}' not found` }))
260
298
  }
261
- return handle(request.arguments)
299
+ return handle(request.arguments).pipe(
300
+ Effect.catchDefect(() => Effect.fail(new InternalError({ message: "Internal error" })))
301
+ )
262
302
  }),
263
303
  get resources() {
264
304
  return resources
@@ -285,7 +325,7 @@ export class McpServer extends Context.Service<McpServer, {
285
325
  Effect.suspend(() => {
286
326
  const match = matcher.find(uri)
287
327
  if (!match) {
288
- return Effect.succeed({ contents: [] })
328
+ return Effect.fail(new McpErrorBase({ code: -32002, message: `Resource '${uri}' not found` }))
289
329
  } else if (match.handler._tag === "Resource") {
290
330
  return match.handler.effect
291
331
  }
@@ -320,7 +360,19 @@ export class McpServer extends Context.Service<McpServer, {
320
360
  ? `ref/resource/${ref.uri}/${complete.argument.name}`
321
361
  : `ref/prompt/${ref.name}/${complete.argument.name}`
322
362
  const handler = completionsMap.get(key)
323
- return handler ? yield* handler(complete.argument.value) : CompleteResult.empty
363
+ if (!handler) {
364
+ return yield* new InvalidParams({ message: "Unknown completion reference or argument" })
365
+ }
366
+ const result = yield* handler(complete.argument.value, complete.context)
367
+ const values = Arr.take(result.completion.values, 100)
368
+ return {
369
+ completion: {
370
+ ...result.completion,
371
+ values,
372
+ hasMore: result.completion.hasMore === true ||
373
+ values.length < result.completion.values.length
374
+ }
375
+ }
324
376
  })
325
377
  })
326
378
  })
@@ -333,15 +385,63 @@ export class McpServer extends Context.Service<McpServer, {
333
385
  static readonly layer: Layer.Layer<McpServer | McpServerClient> = Layer.effect(McpServer)(McpServer.make) as any
334
386
  }
335
387
 
336
- const LATEST_PROTOCOL_VERSION = "2025-06-18"
337
- const SUPPORTED_PROTOCOL_VERSIONS = [
338
- LATEST_PROTOCOL_VERSION,
339
- "2025-03-26",
340
- "2024-11-05",
341
- "2024-10-07"
342
- ]
343
- const mcpSessionIdHeader = "mcp-session-id"
344
- const mcpProtocolVersionHeader = "mcp-protocol-version"
388
+ const MCP_SESSION_ID_HEADER = "mcp-session-id"
389
+ const MCP_PROTOCOL_VERSION_HEADER = "mcp-protocol-version"
390
+ const MCP_INVALID_BATCH_METHOD = "invalid/json-rpc-batch"
391
+ const decodeCancelledNotification = Schema.decodeUnknownEffect(
392
+ Schema.toCodecJson(CancelledNotification.payloadSchema)
393
+ )
394
+
395
+ const requestKey = (requestId: string | number): string => `${typeof requestId}:${requestId}`
396
+
397
+ type SessionLogLevel =
398
+ | {
399
+ readonly _tag: "Effect"
400
+ readonly level: LogLevel.LogLevel
401
+ }
402
+ | {
403
+ readonly _tag: "Mcp"
404
+ readonly level: LoggingLevel
405
+ }
406
+
407
+ interface Session {
408
+ readonly initializePayload: typeof Initialize.payloadSchema.Type
409
+ readonly protocol: McpProtocol.ProtocolAdapter
410
+ readonly resourceSubscriptions: Set<string> | undefined
411
+ logLevel: SessionLogLevel
412
+ }
413
+
414
+ interface Sessions {
415
+ readonly bySessionId: Map<string, Session>
416
+ readonly byClientId: Map<number, Session>
417
+ }
418
+
419
+ class McpClientKey extends Data.Class<{
420
+ readonly clientId: number
421
+ readonly protocolVersion: string
422
+ }> {}
423
+
424
+ class McpProtocolState extends Context.Service<McpProtocolState, {
425
+ readonly sessions: Sessions
426
+ readonly protocolRegistry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>
427
+ }>()("effect/ai/McpServer/McpProtocolState") {}
428
+
429
+ const makeMcpProtocolState = Effect.fnUntraced(function*(
430
+ protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
431
+ ) {
432
+ return McpProtocolState.of({
433
+ sessions: {
434
+ bySessionId: new Map(),
435
+ byClientId: new Map()
436
+ },
437
+ protocolRegistry: yield* McpProtocolRegistry.make(protocols)
438
+ })
439
+ })
440
+
441
+ const layerMcpProtocolState = (
442
+ protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
443
+ ): Layer.Layer<McpProtocolState, Cause.IllegalArgumentError> =>
444
+ Layer.effect(McpProtocolState)(makeMcpProtocolState(protocols))
345
445
 
346
446
  /**
347
447
  * Runs an MCP server over the current `RpcServer.Protocol`.
@@ -352,31 +452,54 @@ const mcpProtocolVersionHeader = "mcp-protocol-version"
352
452
  * tools, resources, and prompts, and forwards queued server notifications to
353
453
  * initialized clients.
354
454
  *
355
- * @category constructors
455
+ * @category running
356
456
  * @since 4.0.0
357
457
  */
358
458
  export const run: (options: {
359
459
  readonly name: string
360
460
  readonly version: string
461
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
361
462
  readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
362
463
  }) => Effect.Effect<
363
464
  never,
364
- never,
465
+ Cause.IllegalArgumentError,
365
466
  McpServer | RpcServer.Protocol
366
467
  > = Effect.fnUntraced(function*(options: {
367
468
  readonly name: string
368
469
  readonly version: string
470
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
471
+ readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
369
472
  }) {
473
+ const protocolStateOption = yield* Effect.serviceOption(McpProtocolState)
474
+ const protocolState = Option.isSome(protocolStateOption)
475
+ ? protocolStateOption.value
476
+ : yield* makeMcpProtocolState(options.protocols)
477
+ return yield* runWithProtocolState(options, protocolState)
478
+ })
479
+
480
+ const runWithProtocolState = Effect.fnUntraced(function*(options: {
481
+ readonly name: string
482
+ readonly version: string
483
+ readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
484
+ }, protocolState: McpProtocolState["Service"]) {
485
+ const serverScope = yield* Effect.scope
486
+ const protocolRegistry = protocolState.protocolRegistry
370
487
  const protocol = yield* RpcServer.Protocol
371
488
  const server = yield* McpServer
372
489
  const isHttp = Option.isSome(yield* Effect.serviceOption(HttpRouter.HttpRouter))
373
- const clientSessions = new Map<string, typeof Initialize.payloadSchema.Type>()
374
- const handlers = yield* Layer.build(layerHandlers(options, { clientSessions }))
490
+ const sessions = protocolState.sessions
491
+ const clientProtocols = new Map<number, McpProtocol.ProtocolAdapter>()
492
+ const cancelledRequests = new Map<number, Set<string>>()
493
+ const handlers = yield* Layer.build(layerHandlers(options, {
494
+ sessions,
495
+ protocolRegistry
496
+ }))
375
497
 
376
498
  const clients = yield* RcMap.make({
377
- lookup: Effect.fnUntraced(function*(clientId: number) {
499
+ lookup: Effect.fnUntraced(function*(key: McpClientKey) {
500
+ const selectedProtocol = protocolRegistry.select(key.protocolVersion)
378
501
  let write!: (message: RpcMessage.FromServerEncoded) => Effect.Effect<void>
379
- const client = yield* RpcClient.make(ServerRequestRpcs, {
502
+ const client = yield* RpcClient.make(selectedProtocol.serverRequestRpcs, {
380
503
  spanPrefix: "McpServer/Client"
381
504
  }).pipe(
382
505
  Effect.provideServiceEffect(
@@ -387,7 +510,7 @@ export const run: (options: {
387
510
  return {
388
511
  send(id, request, _transferables) {
389
512
  cid = id
390
- return protocol.send(clientId, {
513
+ return protocol.send(key.clientId, {
391
514
  ...request,
392
515
  headers: undefined,
393
516
  traceId: undefined,
@@ -408,84 +531,241 @@ export const run: (options: {
408
531
  idleTimeToLive: 10000
409
532
  })
410
533
 
411
- const clientMiddleware = McpServerClientMiddleware.of((effect, { client, headers, rpc }) => {
412
- const initializePayload = getInitializedClient(clientSessions, client.id, headers)
413
- const isInitialize = rpc._tag === "initialize"
414
- if (!isInitialize && !initializePayload) {
534
+ const clientMiddleware = McpServerClientMiddleware.of((effect, { client, headers, payload, rpc }) => {
535
+ const session = getClientSession(sessions, client.id, headers)
536
+ const isInitialize = rpc._tag.endsWith("/initialize")
537
+ if (!isInitialize && !session) {
415
538
  const fiber = Fiber.getCurrent()!
416
539
  const httpRequest = Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
417
540
  if (httpRequest) {
418
541
  appendPreResponseHandlerUnsafe(
419
542
  httpRequest,
420
- () => Effect.succeed(HttpServerResponse.empty({ status: 404 }))
543
+ () =>
544
+ Effect.succeed(
545
+ HttpServerResponse.empty({
546
+ status: headers[MCP_SESSION_ID_HEADER] === undefined ? 400 : 404
547
+ })
548
+ )
421
549
  )
422
550
  }
423
551
  return Effect.die(new Error(`Mcp-Session-Id does not exist`))
424
552
  }
425
- return Effect.provideService(
426
- effect,
427
- McpServerClient,
428
- McpServerClient.of({
429
- clientId: client.id,
430
- initializePayload: initializePayload!,
431
- getClient: RcMap.get(clients, client.id).pipe(
432
- Effect.map(({ client }) => client)
433
- )
434
- })
553
+ const selectedProtocol = session?.protocol ?? protocolForInternalTag(protocolRegistry, rpc._tag)
554
+ return effect.pipe(
555
+ Effect.provideService(
556
+ McpServerClient,
557
+ McpServerClient.of({
558
+ clientId: client.id,
559
+ protocolVersion: selectedProtocol.protocolVersion,
560
+ initializePayload: session?.initializePayload ?? payload as typeof Initialize.payloadSchema.Type,
561
+ getClient: RcMap.get(
562
+ clients,
563
+ new McpClientKey({
564
+ clientId: client.id,
565
+ protocolVersion: selectedProtocol.protocolVersion
566
+ })
567
+ ).pipe(
568
+ Effect.map(({ client }) => client)
569
+ )
570
+ })
571
+ ),
572
+ Effect.provideService(CurrentLogLevel, effectLogLevel(session?.logLevel))
435
573
  )
436
574
  })
437
575
 
438
576
  const patchedProtocol = RpcServer.Protocol.of({
439
577
  ...protocol,
578
+ send: (clientId, response) => {
579
+ if (response._tag === "Exit") {
580
+ const requests = cancelledRequests.get(clientId)
581
+ if (requests?.delete(requestKey(response.requestId)) === true) {
582
+ if (requests.size === 0) {
583
+ cancelledRequests.delete(clientId)
584
+ }
585
+ return Effect.void
586
+ }
587
+ }
588
+ return protocol.send(clientId, response)
589
+ },
440
590
  run: (f) =>
441
591
  protocol.run((clientId, request_) => {
442
- const request = request_ as any as
592
+ const fiber = Fiber.getCurrent()!
593
+ const request = request_ as unknown as
443
594
  | RpcMessage.FromServerEncoded
444
595
  | RpcMessage.FromClientEncoded
596
+ const httpRequest = isHttp
597
+ ? Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
598
+ : undefined
599
+ if (httpRequest !== undefined && request._tag !== "Eof") {
600
+ appendPreResponseHandlerUnsafe(httpRequest, (_, response) =>
601
+ Effect.succeed(
602
+ response.status === 200 &&
603
+ response.body._tag === "Uint8Array" &&
604
+ response.body.contentLength === 0
605
+ ? HttpServerResponse.empty({
606
+ headers: Headers.remove(response.headers, "content-type"),
607
+ status: 202
608
+ })
609
+ : response
610
+ ))
611
+ }
445
612
  switch (request._tag) {
446
613
  case "Request": {
614
+ const headers = isHttp
615
+ ? Context.getUnsafe(
616
+ Fiber.getCurrent()!.context,
617
+ HttpServerRequest.HttpServerRequest
618
+ ).headers
619
+ : Headers.fromInput(request.headers)
620
+ const session = getClientSession(sessions, clientId, headers)
621
+ const selectedProtocol = session?.protocol ??
622
+ (request.tag === "initialize"
623
+ ? protocolRegistry.select(getOfferedProtocolVersion(request.payload))
624
+ : protocolRegistry.protocols[0])
625
+ clientProtocols.set(clientId, selectedProtocol)
626
+ if (request.tag === MCP_INVALID_BATCH_METHOD) {
627
+ return protocol.send(clientId, {
628
+ _tag: "Exit",
629
+ requestId: request.id,
630
+ exit: {
631
+ _tag: "Failure",
632
+ cause: [{
633
+ _tag: "Fail",
634
+ error: new InvalidRequest({ message: "JSON-RPC batches are not supported" })
635
+ }]
636
+ }
637
+ })
638
+ }
447
639
  if (isHttp) {
448
640
  const fiber = Fiber.getCurrent()!
449
641
  const httpRequest = Context.getUnsafe(fiber.context, HttpServerRequest.HttpServerRequest)
450
- const client = getInitializedClient(clientSessions, clientId, httpRequest.headers)
451
- if (client) {
642
+ if (session) {
452
643
  appendPreResponseHandlerUnsafe(httpRequest, (_, res) =>
453
644
  Effect.succeed(
454
- HttpServerResponse.setHeader(res, mcpProtocolVersionHeader, client.protocolVersion)
645
+ HttpServerResponse.setHeader(
646
+ res,
647
+ MCP_PROTOCOL_VERSION_HEADER,
648
+ session.protocol.protocolVersion
649
+ )
455
650
  ))
456
651
  }
457
652
  }
458
- const rpc = ClientNotificationRpcs.requests.get(request.tag)
459
- if (rpc) {
653
+ const routedRequest = protocolRegistry.routeClientRequest(selectedProtocol, request)
654
+ const rpc = protocolRegistry.clientRpcs.requests.get(routedRequest.tag)
655
+ if (rpc && selectedProtocol.clientNotificationRpcs.requests.has(request.tag)) {
656
+ if (!session) {
657
+ if (httpRequest) {
658
+ appendPreResponseHandlerUnsafe(
659
+ httpRequest,
660
+ () =>
661
+ Effect.succeed(
662
+ HttpServerResponse.empty({
663
+ status: headers[MCP_SESSION_ID_HEADER] === undefined ? 400 : 404
664
+ })
665
+ )
666
+ )
667
+ }
668
+ return Effect.void
669
+ }
460
670
  if (request.tag === "notifications/cancelled") {
461
- return f(clientId, {
462
- _tag: "Interrupt",
463
- requestId: String((request.payload as any).requestId)
464
- })
671
+ return decodeCancelledNotification(request.payload).pipe(
672
+ Effect.flatMap(({ requestId }) => {
673
+ const requests = cancelledRequests.get(clientId) ?? new Set<string>()
674
+ requests.add(requestKey(requestId))
675
+ cancelledRequests.set(clientId, requests)
676
+ return f(clientId, {
677
+ _tag: "Interrupt",
678
+ requestId: RpcMessage.RequestId(requestId)
679
+ })
680
+ }),
681
+ Effect.catchCause(() => Effect.void)
682
+ )
465
683
  }
466
- const handler = handlers.mapUnsafe.get(request.tag) as Rpc.Handler<string>
467
- return handler
468
- ? handler.handler(request.payload, {
469
- rpc,
470
- requestId: RpcMessage.RequestId(request.id),
471
- client: new Rpc.ServerClient(clientId),
472
- headers: Headers.fromInput(request.headers)
473
- }) as any as Effect.Effect<void>
474
- : Effect.void
684
+ return selectedProtocol.payloadCodecs(rpc).decode(request.payload).pipe(
685
+ Effect.flatMap((payload) => {
686
+ if (
687
+ request.tag === "notifications/roots/list_changed" &&
688
+ session.initializePayload.capabilities.roots?.listChanged === true
689
+ ) {
690
+ if (httpRequest !== undefined) {
691
+ return Effect.void
692
+ }
693
+ return RcMap.get(
694
+ clients,
695
+ new McpClientKey({
696
+ clientId,
697
+ protocolVersion: selectedProtocol.protocolVersion
698
+ })
699
+ ).pipe(
700
+ Effect.flatMap(({ client }) => client["roots/list"](undefined)),
701
+ Effect.scoped,
702
+ Effect.ignoreCause,
703
+ Effect.forkIn(serverScope),
704
+ Effect.asVoid
705
+ )
706
+ }
707
+ const handler = handlers.mapUnsafe.get(rpc.key) as Rpc.Handler<string> | undefined
708
+ return handler
709
+ ? handler.handler(payload, {
710
+ rpc,
711
+ requestId: RpcMessage.RequestId(request.id),
712
+ client: new Rpc.ServerClient(clientId),
713
+ headers
714
+ }) as any as Effect.Effect<void>
715
+ : Effect.void
716
+ }),
717
+ Effect.catchCause(() => Effect.void)
718
+ )
475
719
  }
476
- return f(clientId, request)
720
+ if (!rpc) {
721
+ if (request.isNotification) {
722
+ return Effect.void
723
+ }
724
+ return protocol.send(clientId, {
725
+ _tag: "Exit",
726
+ requestId: request.id,
727
+ exit: {
728
+ _tag: "Failure",
729
+ cause: [{ _tag: "Fail", error: new MethodNotFound({ message: `Method not found: ${request.tag}` }) }]
730
+ }
731
+ })
732
+ }
733
+ return selectedProtocol.payloadCodecs(rpc).decode(request.payload).pipe(
734
+ Effect.matchEffect({
735
+ onSuccess: () => f(clientId, routedRequest),
736
+ onFailure: () =>
737
+ request.isNotification
738
+ ? Effect.void
739
+ : protocol.send(clientId, {
740
+ _tag: "Exit",
741
+ requestId: request.id,
742
+ exit: {
743
+ _tag: "Failure",
744
+ cause: [{ _tag: "Fail", error: new InvalidParams({ message: "Invalid method parameters" }) }]
745
+ }
746
+ })
747
+ })
748
+ )
477
749
  }
478
750
  case "Ping":
479
751
  case "Ack":
480
752
  case "Interrupt":
753
+ return f(clientId, request)
481
754
  case "Eof":
755
+ cancelledRequests.delete(clientId)
482
756
  return f(clientId, request)
483
757
  case "Pong":
484
758
  case "Exit":
485
759
  case "Chunk":
486
760
  case "ClientProtocolError":
487
761
  case "Defect":
488
- return RcMap.get(clients, clientId).pipe(
762
+ return RcMap.get(
763
+ clients,
764
+ new McpClientKey({
765
+ clientId,
766
+ protocolVersion: getProtocolForClient(clientProtocols, clientId, protocolRegistry).protocolVersion
767
+ })
768
+ ).pipe(
489
769
  Effect.flatMap(({ write }) => write(request)),
490
770
  Effect.scoped
491
771
  )
@@ -493,23 +773,52 @@ export const run: (options: {
493
773
  })
494
774
  })
495
775
 
496
- const encodeNotification = Schema.encodeUnknownEffect(
497
- Schema.Union(Array.from(ServerNotificationRpcs.requests.values(), (rpc) => rpc.payloadSchema))
498
- )
499
776
  yield* Queue.take(server.notificationsQueue).pipe(
500
777
  Effect.flatMap(Effect.fnUntraced(function*(request) {
501
- const encoded = yield* encodeNotification(request.payload)
502
- const message: RpcMessage.RequestEncoded = {
503
- _tag: "Request",
504
- tag: request.tag,
505
- payload: encoded
506
- } as any
507
778
  const clientIds = yield* patchedProtocol.clientIds
779
+ for (const clientId of clientProtocols.keys()) {
780
+ if (!clientIds.has(clientId)) {
781
+ clientProtocols.delete(clientId)
782
+ sessions.byClientId.delete(clientId)
783
+ }
784
+ }
508
785
  for (const clientId of server.initializedClients.keys()) {
509
786
  if (!clientIds.has(clientId)) {
510
787
  server.initializedClients.delete(clientId)
511
788
  continue
512
789
  }
790
+ const selectedProtocol = clientProtocols.get(clientId)
791
+ if (!selectedProtocol) {
792
+ continue
793
+ }
794
+ const rpc = selectedProtocol.serverNotificationRpcs.requests.get(request.tag)
795
+ if (!rpc) {
796
+ continue
797
+ }
798
+ if (request.tag === "notifications/message") {
799
+ const { level } = yield* Schema.decodeUnknownEffect(
800
+ LoggingMessageNotification.payloadSchema
801
+ )(request.payload)
802
+ if (!isMcpLogLevelEnabled(level, sessions.byClientId.get(clientId)?.logLevel)) {
803
+ continue
804
+ }
805
+ }
806
+ if (request.tag === "notifications/resources/updated") {
807
+ const { uri } = yield* Schema.decodeUnknownEffect(
808
+ ResourceUpdatedNotification.payloadSchema
809
+ )(request.payload)
810
+ if (sessions.byClientId.get(clientId)?.resourceSubscriptions?.has(uri) !== true) {
811
+ continue
812
+ }
813
+ }
814
+ const encoded = yield* selectedProtocol.payloadCodecs(rpc).encode(request.payload)
815
+ // TODO: Extend RpcServer.Protocol's outbound message contract with server-originated
816
+ // notifications so MCP does not need to treat this notification as an RPC response.
817
+ const message: RpcMessage.RequestEncoded = {
818
+ _tag: "Request",
819
+ tag: request.tag,
820
+ payload: encoded
821
+ } as any
513
822
  yield* patchedProtocol.send(clientId, message as any)
514
823
  }
515
824
  })),
@@ -518,7 +827,7 @@ export const run: (options: {
518
827
  Effect.forkScoped
519
828
  )
520
829
 
521
- return yield* RpcServer.make(ClientRpcs, {
830
+ return yield* RpcServer.make(protocolRegistry.clientRpcs, {
522
831
  spanPrefix: "McpServer",
523
832
  disableFatalDefects: true
524
833
  }).pipe(
@@ -560,65 +869,145 @@ export const run: (options: {
560
869
  export const layer = (options: {
561
870
  readonly name: string
562
871
  readonly version: string
872
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
563
873
  readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
564
- }): Layer.Layer<McpServer | McpServerClient, never, RpcServer.Protocol> =>
565
- Layer.effectDiscard(Effect.forkScoped(run(options))).pipe(
874
+ }): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, RpcServer.Protocol> =>
875
+ layerWithProtocolState(options).pipe(
876
+ Layer.provide(layerMcpProtocolState(options.protocols))
877
+ )
878
+
879
+ const layerWithProtocolState = (options: {
880
+ readonly name: string
881
+ readonly version: string
882
+ readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
883
+ }): Layer.Layer<McpServer | McpServerClient, never, RpcServer.Protocol | McpProtocolState> =>
884
+ Layer.effectDiscard(
885
+ Effect.gen(function*() {
886
+ const protocolState = yield* McpProtocolState
887
+ yield* Effect.forkScoped(runWithProtocolState(options, protocolState))
888
+ })
889
+ ).pipe(
566
890
  Layer.provideMerge(McpServer.layer)
567
891
  )
568
892
 
893
+ const StdioInitializeRequest = Schema.Struct({
894
+ method: Schema.Literal("initialize"),
895
+ params: Schema.Struct({
896
+ protocolVersion: Schema.String
897
+ })
898
+ })
899
+
900
+ const StdioInvalidBatchExit = Schema.Struct({
901
+ _tag: Schema.Literal("Exit"),
902
+ requestId: Schema.Null,
903
+ exit: Schema.Struct({
904
+ cause: Schema.Unknown
905
+ })
906
+ })
907
+
908
+ const decodeStdioInitializeRequest = Schema.decodeUnknownOption(StdioInitializeRequest)
909
+ const decodeStdioInvalidBatchExit = Schema.decodeUnknownOption(StdioInvalidBatchExit)
910
+
911
+ const makeStdioSerialization = (
912
+ protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
913
+ ): RpcSerialization.RpcSerialization["Service"] =>
914
+ RpcSerialization.RpcSerialization.of({
915
+ contentType: "application/json-rpc",
916
+ includesFraming: true,
917
+ makeUnsafe: () => {
918
+ const framing = RpcSerialization.ndjson.makeUnsafe()
919
+ const jsonRpc = RpcSerialization.jsonRpc().makeUnsafe()
920
+ const protocolsByVersion = new Map<string, McpProtocol.ProtocolAdapter>(
921
+ protocols.map((protocol) => [protocol.protocolVersion, protocol])
922
+ )
923
+ let selectedProtocol = protocols[0]
924
+ return {
925
+ decode: (data) => {
926
+ const frames = framing.decode(data)
927
+ const messages: Array<unknown> = []
928
+ for (const frame of frames) {
929
+ const entries = Array.isArray(frame) ? frame : [frame]
930
+ const initialize = Arr.findFirst(entries, (entry) => decodeStdioInitializeRequest(entry))
931
+ selectedProtocol = Option.match(initialize, {
932
+ onNone: () => selectedProtocol,
933
+ onSome: ({ params }) => protocolsByVersion.get(params.protocolVersion) ?? protocols[0]
934
+ })
935
+ if (Array.isArray(frame) && !selectedProtocol.transport.acceptsJsonRpcBatches) {
936
+ messages.push({
937
+ _tag: "Request",
938
+ id: null,
939
+ tag: MCP_INVALID_BATCH_METHOD,
940
+ payload: null,
941
+ headers: []
942
+ })
943
+ } else {
944
+ messages.push(...jsonRpc.decode(JSON.stringify(frame)))
945
+ }
946
+ }
947
+ return messages
948
+ },
949
+ encode: (response) => {
950
+ const invalidBatchExit = decodeStdioInvalidBatchExit(response)
951
+ if (Option.isSome(invalidBatchExit)) {
952
+ return framing.encode({
953
+ jsonrpc: "2.0",
954
+ id: null,
955
+ error: {
956
+ _tag: "Cause",
957
+ code: INVALID_REQUEST_ERROR_CODE,
958
+ message: "JSON-RPC batches are not supported",
959
+ data: invalidBatchExit.value.exit.cause
960
+ }
961
+ })
962
+ }
963
+ const encoded = jsonRpc.encode(response)
964
+ return encoded === undefined ? undefined : `${encoded}\n`
965
+ }
966
+ }
967
+ }
968
+ })
969
+
569
970
  /**
570
971
  * Runs the McpServer, using stdio for input and output.
571
972
  *
572
- * **Example** (Running an MCP server over stdio)
973
+ * **Example** (Configuring an MCP server over stdio)
573
974
  *
574
- * ```ts
575
- * import { Effect, Layer, Logger, Schema } from "effect"
576
- * import { NodeRuntime, NodeStdio } from "@effect/platform-node"
577
- * import { McpSchema, McpServer } from "effect/unstable/ai"
975
+ * ```ts import.meta.vitest
976
+ * import { Effect, Layer, Schema } from "effect"
977
+ * import { McpProtocol, McpSchema, McpServer } from "effect/unstable/ai"
578
978
  *
579
979
  * const idParam = McpSchema.param("id", Schema.Number)
580
980
  *
581
- * // Define a resource template for a README file
582
981
  * const ReadmeTemplate = McpServer.resource`file://readme/${idParam}`({
583
982
  * name: "README Template",
584
- * // You can add auto-completion for the ID parameter
585
983
  * completion: {
586
- * id: (_) => Effect.succeed([1, 2, 3, 4, 5])
984
+ * id: () => Effect.succeed([1, 2, 3])
587
985
  * },
588
- * content: Effect.fn(function*(_uri, id) {
589
- * return `# MCP Server Demo - ID: ${id}`
590
- * })
986
+ * content: (_uri, id) => Effect.succeed(`# MCP Server Demo - ID: ${id}`)
591
987
  * })
592
988
  *
593
- * // Define a test prompt with parameters
594
989
  * const TestPrompt = McpServer.prompt({
595
990
  * name: "Test Prompt",
596
- * description: "A test prompt to demonstrate MCP server capabilities",
991
+ * description: "Looks up flight booking details",
597
992
  * parameters: {
598
993
  * flightNumber: Schema.String
599
994
  * },
600
995
  * completion: {
601
- * flightNumber: () => Effect.succeed(["FL123", "FL456", "FL789"])
996
+ * flightNumber: () => Effect.succeed(["FL123", "FL456"])
602
997
  * },
603
998
  * content: ({ flightNumber }) =>
604
999
  * Effect.succeed(`Get the booking details for flight number: ${flightNumber}`)
605
1000
  * })
606
1001
  *
607
- * // Merge all the resources and prompts into a single server layer
608
- * const ServerLayer = Layer.mergeAll(
609
- * ReadmeTemplate,
610
- * TestPrompt
611
- * ).pipe(
612
- * // Provide the MCP server implementation
1002
+ * const ServerLayer = Layer.mergeAll(ReadmeTemplate, TestPrompt).pipe(
613
1003
  * Layer.provide(McpServer.layerStdio({
614
1004
  * name: "Demo Server",
615
1005
  * version: "1.0.0",
616
- * })),
617
- * Layer.provide(NodeStdio.layer),
618
- * Layer.provide(Layer.succeed(Logger.LogToStderr)(true))
1006
+ * protocols: [McpProtocol.v2025_06_18]
1007
+ * }))
619
1008
  * )
620
1009
  *
621
- * Layer.launch(ServerLayer).pipe(NodeRuntime.runMain)
1010
+ * Layer.isLayer(ServerLayer) // => true
622
1011
  * ```
623
1012
  *
624
1013
  * @category layers
@@ -627,16 +1016,18 @@ export const layer = (options: {
627
1016
  export const layerStdio = (options: {
628
1017
  readonly name: string
629
1018
  readonly version: string
1019
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
630
1020
  readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
631
- }): Layer.Layer<McpServer | McpServerClient, never, Stdio> =>
1021
+ }): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, Stdio> =>
632
1022
  layer(options).pipe(
633
1023
  Layer.provide(RpcServer.layerProtocolStdio),
634
- Layer.provide(RpcSerialization.layerNdJsonRpc())
1024
+ Layer.provide(
1025
+ Layer.succeed(RpcSerialization.RpcSerialization)(makeStdioSerialization(options.protocols))
1026
+ )
635
1027
  )
636
1028
 
637
1029
  /**
638
- * Registers an HTTP POST JSON-RPC route at `options.path` on the current
639
- * `HttpRouter`.
1030
+ * Registers a Streamable HTTP MCP endpoint at `options.path`.
640
1031
  *
641
1032
  * **When to use**
642
1033
  *
@@ -644,8 +1035,9 @@ export const layerStdio = (options: {
644
1035
  *
645
1036
  * **Details**
646
1037
  *
647
- * This layer composes `layer(options)`, `RpcServer.layerProtocolHttp(options)`,
648
- * and `RpcSerialization.layerJsonRpc()`.
1038
+ * POST serves JSON-RPC and accepted notification-only requests return `202`.
1039
+ * Unsupported protocol versions return `400`; methods without MCP handlers
1040
+ * return `405`. Browser Origins are rejected unless listed in `allowedOrigins`.
649
1041
  *
650
1042
  * @see {@link layerStdio} for exposing the server over stdio
651
1043
  * @see {@link layer} for the base MCP server layer without a transport protocol
@@ -657,17 +1049,201 @@ export const layerHttp = (options: {
657
1049
  readonly name: string
658
1050
  readonly version: string
659
1051
  readonly path: HttpRouter.PathInput
1052
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
1053
+ readonly allowedOrigins?: ReadonlyArray<string> | undefined
660
1054
  readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
661
- }): Layer.Layer<McpServer | McpServerClient, never, HttpRouter.HttpRouter> =>
662
- layer(options).pipe(
663
- Layer.provide(RpcServer.layerProtocolHttp(options)),
1055
+ }): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, HttpRouter.HttpRouter> => {
1056
+ const protocolState = layerMcpProtocolState(options.protocols)
1057
+ const methodNotAllowedResponse = HttpServerResponse.empty({
1058
+ status: 405,
1059
+ headers: { allow: "POST" }
1060
+ })
1061
+ const methodNotAllowed = (request: HttpServerRequest.HttpServerRequest) =>
1062
+ Effect.succeed(
1063
+ request.headers.origin !== undefined &&
1064
+ !options.allowedOrigins?.includes(request.headers.origin)
1065
+ ? HttpServerResponse.empty({ status: 403 })
1066
+ : methodNotAllowedResponse
1067
+ )
1068
+ const routes = Layer.mergeAll(
1069
+ HttpRouter.add("GET", options.path, methodNotAllowed),
1070
+ HttpRouter.add("PUT", options.path, methodNotAllowed),
1071
+ HttpRouter.add("PATCH", options.path, methodNotAllowed),
1072
+ HttpRouter.add("DELETE", options.path, methodNotAllowed),
1073
+ HttpRouter.add("OPTIONS", options.path, methodNotAllowed)
1074
+ )
1075
+ return Layer.merge(layerWithProtocolState(options), routes).pipe(
1076
+ Layer.provide(layerMcpProtocolHttp(options)),
1077
+ Layer.provide(protocolState),
664
1078
  Layer.provide(RpcSerialization.layerJsonRpc())
665
1079
  )
1080
+ }
1081
+
1082
+ const layerMcpProtocolHttp = (options: {
1083
+ readonly path: HttpRouter.PathInput
1084
+ readonly allowedOrigins?: ReadonlyArray<string> | undefined
1085
+ }): Layer.Layer<
1086
+ RpcServer.Protocol,
1087
+ never,
1088
+ McpProtocolState | RpcSerialization.RpcSerialization | HttpRouter.HttpRouter
1089
+ > =>
1090
+ Layer.effect(RpcServer.Protocol)(Effect.gen(function*() {
1091
+ const state = yield* McpProtocolState
1092
+ const { httpEffect, protocol } = yield* RpcServer.makeProtocolWithHttpEffect
1093
+ const router = yield* HttpRouter.HttpRouter
1094
+ yield* router.add("POST", options.path, (request) => {
1095
+ if (
1096
+ request.headers.origin !== undefined &&
1097
+ !options.allowedOrigins?.includes(request.headers.origin)
1098
+ ) {
1099
+ return Effect.succeed(HttpServerResponse.empty({ status: 403 }))
1100
+ }
1101
+ const contentType = request.headers["content-type"]?.split(";", 1)[0]?.trim().toLowerCase()
1102
+ if (contentType !== "application/json") {
1103
+ return Effect.succeed(HttpServerResponse.empty({ status: 415 }))
1104
+ }
1105
+ const accepted = new Set<string>()
1106
+ for (const entry of request.headers.accept?.split(",") ?? []) {
1107
+ const [mediaType, ...parameters] = entry.split(";").map((part) => part.trim().toLowerCase())
1108
+ let quality = 1
1109
+ for (const parameter of parameters) {
1110
+ const [name, value] = parameter.split("=", 2).map((part) => part.trim())
1111
+ if (name === "q") {
1112
+ quality = value === undefined ? Number.NaN : Number(value)
1113
+ }
1114
+ }
1115
+ if (mediaType !== undefined && quality > 0 && quality <= 1) {
1116
+ accepted.add(mediaType)
1117
+ }
1118
+ }
1119
+ if (!accepted.has("application/json") || !accepted.has("text/event-stream")) {
1120
+ return Effect.succeed(HttpServerResponse.empty({ status: 406 }))
1121
+ }
1122
+ const protocolVersion = request.headers[MCP_PROTOCOL_VERSION_HEADER]
1123
+ if (
1124
+ protocolVersion !== undefined &&
1125
+ !state.protocolRegistry.protocols.some((protocol) => protocol.protocolVersion === protocolVersion)
1126
+ ) {
1127
+ return Effect.succeed(HttpServerResponse.empty({ status: 400 }))
1128
+ }
1129
+ return request.text.pipe(
1130
+ Effect.matchEffect({
1131
+ onFailure: () =>
1132
+ Effect.succeed(
1133
+ HttpServerResponse.jsonUnsafe({
1134
+ jsonrpc: "2.0",
1135
+ id: null,
1136
+ error: new ParseError({
1137
+ message: "Parse error"
1138
+ })
1139
+ })
1140
+ ),
1141
+ onSuccess: (body) => {
1142
+ return Effect.match(Schema.decodeUnknownEffect(Schema.UnknownFromJsonString)(body), {
1143
+ onFailure: () => ({
1144
+ _tag: "Error" as const,
1145
+ id: null,
1146
+ error: new ParseError({ message: "Parse error" })
1147
+ }),
1148
+ onSuccess: (input) => {
1149
+ if (Array.isArray(input)) {
1150
+ const sessionId = request.headers[MCP_SESSION_ID_HEADER]
1151
+ const session = sessionId === undefined ? undefined : state.sessions.bySessionId.get(sessionId)
1152
+ let selectedProtocol = session?.protocol ?? state.protocolRegistry.protocols[0]
1153
+ for (const entry of input) {
1154
+ if (
1155
+ Predicate.hasProperty(entry, "method") &&
1156
+ entry.method === "initialize" &&
1157
+ Predicate.hasProperty(entry, "params") &&
1158
+ Predicate.hasProperty(entry.params, "protocolVersion") &&
1159
+ typeof entry.params.protocolVersion === "string"
1160
+ ) {
1161
+ selectedProtocol = state.protocolRegistry.select(entry.params.protocolVersion)
1162
+ break
1163
+ }
1164
+ }
1165
+ if (!selectedProtocol.transport.acceptsJsonRpcBatches) {
1166
+ return { _tag: "HttpError" as const, status: 400 }
1167
+ }
1168
+ }
1169
+ const hasId = Predicate.hasProperty(input, "id")
1170
+ const id = hasId && (typeof input.id === "string" || typeof input.id === "number")
1171
+ ? input.id
1172
+ : null
1173
+ const isJsonRpc = Predicate.hasProperty(input, "jsonrpc") && input.jsonrpc === "2.0"
1174
+ const hasValidRequestId = hasId === false || typeof input.id === "string" ||
1175
+ typeof input.id === "number"
1176
+ const isRequest = isJsonRpc && hasValidRequestId &&
1177
+ Predicate.hasProperty(input, "method") && typeof input.method === "string"
1178
+ const hasValidResponseId = hasId &&
1179
+ (typeof input.id === "string" || typeof input.id === "number" || input.id === null)
1180
+ const hasResult = Predicate.hasProperty(input, "result")
1181
+ const hasError = Predicate.hasProperty(input, "error")
1182
+ const isResponse = isJsonRpc && hasValidResponseId && hasResult !== hasError
1183
+ const isInitialize = isRequest && input.method === "initialize"
1184
+ const sessionId = request.headers[MCP_SESSION_ID_HEADER]
1185
+ const session = sessionId === undefined ? undefined : state.sessions.bySessionId.get(sessionId)
1186
+ if (isInitialize && sessionId !== undefined) {
1187
+ return {
1188
+ _tag: "HttpError" as const,
1189
+ status: session === undefined ? 404 : 400
1190
+ }
1191
+ }
1192
+ if (!isInitialize && isRequest && session === undefined) {
1193
+ return {
1194
+ _tag: "HttpError" as const,
1195
+ status: sessionId === undefined ? 400 : 404
1196
+ }
1197
+ }
1198
+ if (
1199
+ session !== undefined &&
1200
+ session.protocol.transport.requiresVersionHeader &&
1201
+ protocolVersion !== session.protocol.protocolVersion
1202
+ ) {
1203
+ return { _tag: "HttpError" as const, status: 400 }
1204
+ }
1205
+ return isRequest || isResponse
1206
+ ? { _tag: "Success" as const }
1207
+ : {
1208
+ _tag: "Error" as const,
1209
+ id,
1210
+ error: new InvalidRequest({ message: "Invalid Request" })
1211
+ }
1212
+ }
1213
+ }).pipe(
1214
+ Effect.flatMap((decoded) =>
1215
+ decoded._tag === "HttpError"
1216
+ ? Effect.succeed(HttpServerResponse.empty({ status: decoded.status }))
1217
+ : decoded._tag === "Error"
1218
+ ? Effect.succeed(
1219
+ HttpServerResponse.jsonUnsafe({
1220
+ jsonrpc: "2.0",
1221
+ id: decoded.id,
1222
+ error: decoded.error
1223
+ })
1224
+ )
1225
+ : httpEffect
1226
+ )
1227
+ )
1228
+ }
1229
+ })
1230
+ )
1231
+ })
1232
+ return protocol
1233
+ }))
1234
+
1235
+ const INTERNAL_TOOL_ERROR_MESSAGE = "Tool execution failed due to an internal server error."
1236
+
1237
+ const toolErrorResult = (message: string): CallToolResult =>
1238
+ new CallToolResult({
1239
+ isError: true,
1240
+ content: [{ type: "text", text: message }]
1241
+ })
666
1242
 
667
1243
  /**
668
1244
  * Registers a `Toolkit` with the `McpServer`.
669
1245
  *
670
- * @category tools
1246
+ * @category handlers
671
1247
  * @since 4.0.0
672
1248
  */
673
1249
  export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
@@ -689,10 +1265,13 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
689
1265
  for (const tool of Object.values(built.tools)) {
690
1266
  const annotations = tool.annotations
691
1267
  const toolMeta = Context.getOrUndefined(annotations, Tool.Meta)
1268
+ const isDeclaredFailure = Schema.is(tool.failureSchema)
1269
+ const outputSchema = Tool.getJsonSchemaFromSchema(tool.successSchema)
692
1270
  const mcpTool = new McpTool({
693
1271
  name: tool.name,
694
1272
  description: Tool.getDescription(tool),
695
1273
  inputSchema: Tool.getJsonSchema(tool),
1274
+ ...(outputSchema.type === "object" ? { outputSchema } : {}),
696
1275
  annotations: {
697
1276
  ...(Context.getOption(tool.annotations, Tool.Title).pipe(
698
1277
  Option.map((title) => ({ title })),
@@ -709,32 +1288,41 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
709
1288
  tool: mcpTool,
710
1289
  annotations,
711
1290
  handle(payload) {
712
- return built.handle(tool.name as any, payload).pipe(
1291
+ return built.handle(tool.name as keyof Tools, payload).pipe(
713
1292
  Stream.unwrap,
714
1293
  Stream.run(Sink.last()),
715
1294
  Effect.flatMap(Effect.fromOption),
716
- Effect.provideContext(services as Context.Context<any>),
717
- Effect.matchCause({
718
- onFailure: (cause) =>
719
- new CallToolResult({
720
- isError: true,
721
- content: [{
722
- type: "text",
723
- text: Cause.pretty(cause)
724
- }]
725
- }),
726
- onSuccess: (result: any) =>
727
- new CallToolResult({
728
- isError: false,
729
- structuredContent: typeof result.encodedResult === "object" ? result.encodedResult : undefined,
730
- content: [{
731
- type: "text",
732
- text: JSON.stringify(result.encodedResult)
733
- }]
734
- })
1295
+ Effect.provideContext(
1296
+ services as Context.Context<Tool.HandlerServices<Tools[keyof Tools]>>
1297
+ ),
1298
+ Effect.map((result) =>
1299
+ new CallToolResult({
1300
+ isError: false,
1301
+ structuredContent: typeof result.encodedResult === "object" ? result.encodedResult : undefined,
1302
+ content: [{
1303
+ type: "text",
1304
+ text: JSON.stringify(result.encodedResult)
1305
+ }]
1306
+ })
1307
+ ),
1308
+ Effect.tapCause(Effect.logError),
1309
+ Effect.catch((error) => {
1310
+ if (AiError.isAiError(error)) {
1311
+ const reason = (error as AiError.AiError).reason
1312
+ return reason._tag === "ToolParameterValidationError"
1313
+ ? Effect.fail(new InvalidParams({ message: reason.message }))
1314
+ : Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE))
1315
+ }
1316
+ if (isDeclaredFailure(error)) {
1317
+ const message = error instanceof Error
1318
+ ? error.message
1319
+ : INTERNAL_TOOL_ERROR_MESSAGE
1320
+ return Effect.succeed(toolErrorResult(message))
1321
+ }
1322
+ return Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE))
735
1323
  }),
736
- Effect.tapCause(Effect.log)
737
- ) as any
1324
+ Effect.catchDefect(() => Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE)))
1325
+ )
738
1326
  }
739
1327
  })
740
1328
  }
@@ -743,7 +1331,7 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
743
1331
  /**
744
1332
  * Registers an `AiToolkit` with the `McpServer`.
745
1333
  *
746
- * @category tools
1334
+ * @category layers
747
1335
  * @since 4.0.0
748
1336
  */
749
1337
  export const toolkit = <Tools extends Record<string, Tool.Any>>(
@@ -767,7 +1355,11 @@ export const toolkit = <Tools extends Record<string, Tool.Any>>(
767
1355
  export type ValidateCompletions<Completions, Keys extends string> =
768
1356
  & Completions
769
1357
  & {
770
- readonly [K in keyof Completions]: K extends Keys ? (input: string) => any : never
1358
+ readonly [K in keyof Completions]: K extends Keys ? (
1359
+ input: string,
1360
+ context: CompletionContext
1361
+ ) => any
1362
+ : never
771
1363
  }
772
1364
 
773
1365
  /**
@@ -786,7 +1378,10 @@ export type ResourceCompletions<Schemas extends ReadonlyArray<Schema.Constraint>
786
1378
  readonly [
787
1379
  K in Extract<keyof Schemas, `${number}`> as Schemas[K] extends Param<infer Id, infer _S> ? Id
788
1380
  : `param${K}`
789
- ]: (input: string) => Effect.Effect<Array<Schemas[K]["Type"]>, any, any>
1381
+ ]: (
1382
+ input: string,
1383
+ context: CompletionContext
1384
+ ) => Effect.Effect<Array<Schemas[K]["Type"]>, any, any>
790
1385
  }
791
1386
 
792
1387
  /**
@@ -800,7 +1395,7 @@ export type ResourceCompletions<Schemas extends ReadonlyArray<Schema.Constraint>
800
1395
  *
801
1396
  * @see {@link resource} for the layer-based resource registration wrapper
802
1397
  *
803
- * @category resources
1398
+ * @category handlers
804
1399
  * @since 4.0.0
805
1400
  */
806
1401
  export const registerResource: {
@@ -815,7 +1410,7 @@ export const registerResource: {
815
1410
  *
816
1411
  * @see {@link resource} for the layer-based resource registration wrapper
817
1412
  *
818
- * @category resources
1413
+ * @category handlers
819
1414
  * @since 4.0.0
820
1415
  */
821
1416
  <E, R>(
@@ -845,7 +1440,7 @@ export const registerResource: {
845
1440
  *
846
1441
  * @see {@link resource} for the layer-based resource registration wrapper
847
1442
  *
848
- * @category resources
1443
+ * @category handlers
849
1444
  * @since 4.0.0
850
1445
  */
851
1446
  <const Schemas extends ReadonlyArray<Schema.Constraint>>(segments: TemplateStringsArray, ...schemas: Schemas): <
@@ -923,7 +1518,15 @@ export const registerResource: {
923
1518
  readonly mimeType?: string | undefined
924
1519
  readonly audience?: ReadonlyArray<"user" | "assistant"> | undefined
925
1520
  readonly priority?: number | undefined
926
- readonly completion?: Record<string, (input: string) => Effect.Effect<any>> | undefined
1521
+ readonly completion?:
1522
+ | Record<
1523
+ string,
1524
+ (
1525
+ input: string,
1526
+ context: CompletionContext
1527
+ ) => Effect.Effect<any>
1528
+ >
1529
+ | undefined
927
1530
  readonly content: (uri: string, ...params: Array<any>) => Effect.Effect<
928
1531
  typeof ReadResourceResult.Type | string | Uint8Array,
929
1532
  E,
@@ -939,11 +1542,20 @@ export const registerResource: {
939
1542
  uriTemplate: uriPath,
940
1543
  annotations: options!
941
1544
  })
942
- const completions: Record<string, (input: string) => Effect.Effect<CompleteResult, InternalError>> = {}
1545
+ const completions: Record<
1546
+ string,
1547
+ (
1548
+ input: string,
1549
+ context: CompletionContext
1550
+ ) => Effect.Effect<CompleteResult, InternalError>
1551
+ > = Object.create(null)
943
1552
  for (const [param, handle] of Object.entries(options.completion ?? {})) {
944
1553
  const encodeArray = Schema.encodeUnknownEffect(Schema.Array(params[param]))
945
- const handler = (input: string) =>
946
- handle(input).pipe(
1554
+ const handler = (
1555
+ input: string,
1556
+ context: CompletionContext
1557
+ ) =>
1558
+ handle(input, context).pipe(
947
1559
  Effect.flatMap(encodeArray),
948
1560
  Effect.map((values) => ({
949
1561
  completion: {
@@ -992,7 +1604,7 @@ export const registerResource: {
992
1604
  *
993
1605
  * @see {@link registerResource} for the Effect-level resource registration API
994
1606
  *
995
- * @category resources
1607
+ * @category layers
996
1608
  * @since 4.0.0
997
1609
  */
998
1610
  export const resource: {
@@ -1005,7 +1617,7 @@ export const resource: {
1005
1617
  *
1006
1618
  * @see {@link registerResource} for the Effect-level resource registration API
1007
1619
  *
1008
- * @category resources
1620
+ * @category layers
1009
1621
  * @since 4.0.0
1010
1622
  */
1011
1623
  <E, R>(
@@ -1032,7 +1644,7 @@ export const resource: {
1032
1644
  *
1033
1645
  * @see {@link registerResource} for the Effect-level resource registration API
1034
1646
  *
1035
- * @category resources
1647
+ * @category layers
1036
1648
  * @since 4.0.0
1037
1649
  */
1038
1650
  <const Schemas extends ReadonlyArray<Schema.Constraint>>(segments: TemplateStringsArray, ...schemas: Schemas): <
@@ -1091,7 +1703,7 @@ export const resource: {
1091
1703
  *
1092
1704
  * @see {@link prompt} for the layer-based prompt registration wrapper
1093
1705
  *
1094
- * @category prompts
1706
+ * @category handlers
1095
1707
  * @since 4.0.0
1096
1708
  */
1097
1709
  export const registerPrompt = <
@@ -1099,7 +1711,10 @@ export const registerPrompt = <
1099
1711
  R,
1100
1712
  Params extends Schema.Struct.Fields = {},
1101
1713
  const Completions extends {
1102
- readonly [K in keyof Params]?: (input: string) => Effect.Effect<Array<Params[K]>, any, any>
1714
+ readonly [K in keyof Params]?: (
1715
+ input: string,
1716
+ context: CompletionContext
1717
+ ) => Effect.Effect<Array<Params[K]>, any, any>
1103
1718
  } = {}
1104
1719
  >(
1105
1720
  options: {
@@ -1128,18 +1743,30 @@ export const registerPrompt = <
1128
1743
  const decode = options.parameters
1129
1744
  ? Schema.decodeEffect(Schema.Struct(props))
1130
1745
  : () => Effect.succeed({} as Params)
1131
- const completion: Record<string, (input: string) => Effect.Effect<any>> = options.completion ?? {}
1746
+ const completion: Record<
1747
+ string,
1748
+ (
1749
+ input: string,
1750
+ context: CompletionContext
1751
+ ) => Effect.Effect<any>
1752
+ > = options.completion ?? {}
1132
1753
  return Effect.gen(function*() {
1133
1754
  const registry = yield* McpServer
1134
1755
  const services = yield* Effect.context<Exclude<R | Schema.Struct.DecodingServices<Params>, McpServerClient>>()
1135
1756
  const completions: Record<
1136
1757
  string,
1137
- (input: string) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
1138
- > = {}
1758
+ (
1759
+ input: string,
1760
+ context: CompletionContext
1761
+ ) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
1762
+ > = Object.create(null)
1139
1763
  for (const [param, handle] of Object.entries(completion)) {
1140
1764
  const encodeArray = Schema.encodeEffect(Schema.Array(props[param]))
1141
- const handler = (input: string) =>
1142
- handle(input).pipe(
1765
+ const handler = (
1766
+ input: string,
1767
+ context: CompletionContext
1768
+ ) =>
1769
+ handle(input, context).pipe(
1143
1770
  Effect.flatMap(encodeArray),
1144
1771
  Effect.map((values) => ({
1145
1772
  completion: {
@@ -1163,20 +1790,23 @@ export const registerPrompt = <
1163
1790
  handle: (params) =>
1164
1791
  decode(params).pipe(
1165
1792
  Effect.mapError((error) => new InvalidParams({ message: error.message })),
1166
- Effect.flatMap((params) => options.content(params as any)),
1167
- Effect.map((messages) => {
1168
- messages = typeof messages === "string" ?
1169
- [{
1170
- role: "user",
1171
- content: TextContent.make({ text: messages })
1172
- }] :
1173
- messages
1174
- return new GetPromptResult({ messages, description: prompt.description })
1175
- }),
1176
- Effect.catchCause((cause) => {
1177
- const prettyError = Cause.prettyErrors(cause)[0]
1178
- return Effect.fail(new InternalError({ message: prettyError.message }))
1179
- }),
1793
+ Effect.flatMap((params) =>
1794
+ options.content(params as any).pipe(
1795
+ Effect.map((messages) => {
1796
+ messages = typeof messages === "string" ?
1797
+ [{
1798
+ role: "user",
1799
+ content: TextContent.make({ text: messages })
1800
+ }] :
1801
+ messages
1802
+ return new GetPromptResult({ messages, description: prompt.description })
1803
+ }),
1804
+ Effect.catchCause((cause) => {
1805
+ const prettyError = Cause.prettyErrors(cause)[0]
1806
+ return Effect.fail(new InternalError({ message: prettyError.message }))
1807
+ })
1808
+ )
1809
+ ),
1180
1810
  Effect.provideContext(services as Context.Context<unknown>)
1181
1811
  )
1182
1812
  })
@@ -1198,7 +1828,7 @@ export const registerPrompt = <
1198
1828
  *
1199
1829
  * @see {@link registerPrompt} for the Effect-level prompt registration API
1200
1830
  *
1201
- * @category prompts
1831
+ * @category layers
1202
1832
  * @since 4.0.0
1203
1833
  */
1204
1834
  export const prompt = <
@@ -1206,7 +1836,10 @@ export const prompt = <
1206
1836
  R,
1207
1837
  Params extends Schema.Struct.Fields = {},
1208
1838
  const Completions extends {
1209
- readonly [K in keyof Params]?: (input: string) => Effect.Effect<Array<Params[K]["Type"]>, any, any>
1839
+ readonly [K in keyof Params]?: (
1840
+ input: string,
1841
+ context: CompletionContext
1842
+ ) => Effect.Effect<Array<Params[K]["Type"]>, any, any>
1210
1843
  } = {}
1211
1844
  >(
1212
1845
  options: {
@@ -1233,7 +1866,7 @@ export const prompt = <
1233
1866
  * Accepted content is decoded with the supplied schema, declined requests fail
1234
1867
  * with `ElicitationDeclined`, and canceled requests interrupt the effect.
1235
1868
  *
1236
- * @category elicitation
1869
+ * @category accessors
1237
1870
  * @since 4.0.0
1238
1871
  */
1239
1872
  export const elicit: <S extends Schema.ConstraintEncoder<Record<string, unknown>, unknown>>(options: {
@@ -1270,7 +1903,7 @@ export const elicit: <S extends Schema.ConstraintEncoder<Record<string, unknown>
1270
1903
  /**
1271
1904
  * Accesses the current client's capabilities.
1272
1905
  *
1273
- * @category capabilities
1906
+ * @category accessors
1274
1907
  * @since 4.0.0
1275
1908
  */
1276
1909
  export const clientCapabilities: Effect.Effect<
@@ -1300,7 +1933,7 @@ const makeUriMatcher = <A>() => {
1300
1933
  const compileUriTemplate = (segments: TemplateStringsArray, ...schemas: ReadonlyArray<Schema.Constraint>) => {
1301
1934
  let routerPath = segments[0].replace(":", "::")
1302
1935
  let uriPath = segments[0]
1303
- const params: Record<string, Schema.Top> = {}
1936
+ const params: Record<string, Schema.Top> = Object.create(null)
1304
1937
  let pathSchema = Schema.Tuple([]) as Schema.Top
1305
1938
  if (schemas.length > 0) {
1306
1939
  const arr: Array<Schema.Top> = []
@@ -1330,141 +1963,190 @@ const layerHandlers = (serverInfo: {
1330
1963
  readonly version: string
1331
1964
  readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
1332
1965
  }, options: {
1333
- readonly clientSessions: Map<string, typeof Initialize.payloadSchema.Type>
1966
+ readonly sessions: Sessions
1967
+ readonly protocolRegistry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>
1334
1968
  }) =>
1335
- ClientRpcs.toLayer(
1969
+ Layer.effectContext(
1336
1970
  Effect.gen(function*() {
1337
1971
  const server = yield* McpServer
1338
- let currentLogLevel = yield* CurrentLogLevel
1339
-
1340
- return ClientRpcs.of({
1341
- // Requests
1342
- ping: () => Effect.succeed({}),
1343
- initialize(params, { client }) {
1344
- const requestedVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(params.protocolVersion)
1345
- ? params.protocolVersion
1346
- : LATEST_PROTOCOL_VERSION
1347
- if (requestedVersion !== params.protocolVersion) {
1348
- params = {
1349
- ...params,
1350
- protocolVersion: requestedVersion
1972
+ const currentLogLevel = yield* CurrentLogLevel
1973
+ const contextMap = new Map<string, unknown>()
1974
+
1975
+ for (const protocol of options.protocolRegistry.protocols) {
1976
+ const selectedProtocol = protocol
1977
+ const wireHandlers = ClientRpcs.of({
1978
+ // Requests
1979
+ ping: () => Effect.succeed({}),
1980
+ initialize(params, { client }) {
1981
+ const capabilities: Types.DeepMutable<typeof ServerCapabilities.Type> = {
1982
+ completions: {},
1983
+ logging: {}
1351
1984
  }
1352
- }
1353
- const capabilities: Types.DeepMutable<typeof ServerCapabilities.Type> = {
1354
- completions: {}
1355
- }
1356
- if (server.tools.length > 0) {
1357
- capabilities.tools = { listChanged: true }
1358
- }
1359
- if (server.resources.length > 0 || server.resourceTemplates.length > 0) {
1360
- capabilities.resources = {
1361
- listChanged: true,
1362
- subscribe: false
1985
+ if (server.tools.length > 0) {
1986
+ capabilities.tools = { listChanged: true }
1363
1987
  }
1364
- }
1365
- if (server.prompts.length > 0) {
1366
- capabilities.prompts = { listChanged: true }
1367
- }
1368
- if (serverInfo.extensions) {
1369
- capabilities.extensions = serverInfo.extensions as any
1370
- }
1371
- return Effect.withFiber((fiber) => {
1372
- const httpRequest = Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
1373
- if (httpRequest) {
1374
- const sessionId = crypto.randomUUID()
1375
- options.clientSessions.set(sessionId, params)
1376
- appendPreResponseHandlerUnsafe(httpRequest, (_req, res) =>
1377
- Effect.succeed(HttpServerResponse.setHeaders(res, {
1378
- [mcpSessionIdHeader]: sessionId,
1379
- [mcpProtocolVersionHeader]: requestedVersion
1380
- })))
1381
- } else {
1382
- options.clientSessions.set(String(client.id), params)
1988
+ if (server.resources.length > 0 || server.resourceTemplates.length > 0) {
1989
+ capabilities.resources = {
1990
+ listChanged: true,
1991
+ subscribe: true
1992
+ }
1383
1993
  }
1384
- return Effect.succeed({
1385
- capabilities,
1386
- serverInfo,
1387
- protocolVersion: requestedVersion
1388
- })
1389
- })
1390
- },
1391
- "completion/complete": (r) =>
1392
- server.completion(r).pipe(
1393
- Effect.provideService(CurrentLogLevel, currentLogLevel)
1394
- ),
1395
- "logging/setLevel": ({ level }) =>
1396
- Effect.sync(() => {
1397
- switch (level) {
1398
- case "notice":
1399
- case "info":
1400
- currentLogLevel = "Info"
1401
- break
1402
- case "error":
1403
- currentLogLevel = "Error"
1404
- break
1405
- case "debug":
1406
- currentLogLevel = "Debug"
1407
- break
1408
- case "warning":
1409
- currentLogLevel = "Warn"
1410
- break
1411
- case "critical":
1412
- case "alert":
1413
- case "emergency":
1414
- currentLogLevel = "Fatal"
1415
- break
1994
+ if (server.prompts.length > 0) {
1995
+ capabilities.prompts = { listChanged: true }
1416
1996
  }
1417
- }),
1418
- "prompts/get": (r) =>
1419
- server.getPromptResult(r).pipe(
1420
- Effect.provideService(CurrentLogLevel, currentLogLevel)
1421
- ),
1422
- "prompts/list": (_, { client, headers }) =>
1423
- Effect.sync(() => {
1424
- const initialized = getInitializedClient(options.clientSessions, client.id, headers)
1425
- return new ListPromptsResult({ prompts: filterByClient(initialized, server.prompts, "prompt") })
1426
- }),
1427
- "resources/list": (_, { client, headers }) =>
1428
- Effect.sync(() => {
1429
- const initialized = getInitializedClient(options.clientSessions, client.id, headers)
1430
- return new ListResourcesResult({ resources: filterByClient(initialized, server.resources, "resource") })
1431
- }),
1432
- "resources/read": ({ uri }) =>
1433
- server.findResource(uri).pipe(
1434
- Effect.provideService(CurrentLogLevel, currentLogLevel)
1435
- ),
1436
- "resources/subscribe": () =>
1437
- InternalError.notImplemented,
1438
- "resources/unsubscribe": () =>
1439
- InternalError.notImplemented,
1440
- "resources/templates/list": (_, { client, headers }) =>
1441
- Effect.sync(() => {
1442
- const initialized = getInitializedClient(options.clientSessions, client.id, headers)
1443
- return new ListResourceTemplatesResult({
1444
- resourceTemplates: filterByClient(initialized, server.resourceTemplates, "template")
1445
- })
1446
- }),
1447
- "tools/call": (r) =>
1448
- server.callTool(r).pipe(
1449
- Effect.provideService(CurrentLogLevel, currentLogLevel)
1450
- ),
1451
- "tools/list": (_, { client, headers }) =>
1452
- Effect.sync(() => {
1453
- const initialized = getInitializedClient(options.clientSessions, client.id, headers)
1454
- return new ListToolsResult({
1455
- tools: filterByClient(initialized, server.tools, "tool")
1997
+ if (serverInfo.extensions) {
1998
+ capabilities.extensions = serverInfo.extensions as any
1999
+ }
2000
+ return Effect.withFiber((fiber) => {
2001
+ const httpRequest = Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
2002
+ if (httpRequest !== undefined && capabilities.resources !== undefined) {
2003
+ capabilities.resources.subscribe = false
2004
+ }
2005
+ const session: Session = {
2006
+ initializePayload: params,
2007
+ protocol: selectedProtocol,
2008
+ resourceSubscriptions: capabilities.resources?.subscribe === true ? new Set() : undefined,
2009
+ logLevel: { _tag: "Effect", level: currentLogLevel }
2010
+ }
2011
+ if (httpRequest) {
2012
+ const sessionId = crypto.randomUUID()
2013
+ options.sessions.bySessionId.set(sessionId, session)
2014
+ appendPreResponseHandlerUnsafe(httpRequest, (_req, res) =>
2015
+ Effect.succeed(HttpServerResponse.setHeaders(res, {
2016
+ [MCP_SESSION_ID_HEADER]: sessionId,
2017
+ [MCP_PROTOCOL_VERSION_HEADER]: selectedProtocol.protocolVersion
2018
+ })))
2019
+ } else {
2020
+ options.sessions.byClientId.set(client.id, session)
2021
+ }
2022
+ return Effect.succeed({
2023
+ capabilities,
2024
+ serverInfo,
2025
+ protocolVersion: selectedProtocol.protocolVersion
2026
+ })
1456
2027
  })
1457
- }),
2028
+ },
2029
+ "completion/complete": (r) =>
2030
+ server.completion(r),
2031
+ "logging/setLevel": ({ level }, { client, headers }) =>
2032
+ Effect.sync(() => {
2033
+ const session = getClientSession(options.sessions, client.id, headers)
2034
+ if (session) {
2035
+ session.logLevel = { _tag: "Mcp", level }
2036
+ }
2037
+ return {}
2038
+ }),
2039
+ "prompts/get": (r) =>
2040
+ server.getPromptResult(r),
2041
+ "prompts/list": (_, { client, headers }) =>
2042
+ Effect.sync(() => {
2043
+ const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
2044
+ return new ListPromptsResult({ prompts: filterByClient(initialized, server.prompts, "prompt") })
2045
+ }),
2046
+ "resources/list": (_, { client, headers }) =>
2047
+ Effect.sync(() => {
2048
+ const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
2049
+ return new ListResourcesResult({ resources: filterByClient(initialized, server.resources, "resource") })
2050
+ }),
2051
+ "resources/read": ({ uri }) => server.findResource(uri),
2052
+ "resources/subscribe": ({ uri }, { client, headers }) =>
2053
+ Effect.gen(function*() {
2054
+ const subscriptions = getClientSession(
2055
+ options.sessions,
2056
+ client.id,
2057
+ headers
2058
+ )?.resourceSubscriptions
2059
+ if (subscriptions === undefined) {
2060
+ return yield* new MethodNotFound({
2061
+ message: "Resource subscriptions are not supported"
2062
+ })
2063
+ }
2064
+ subscriptions.add(uri)
2065
+ return {}
2066
+ }),
2067
+ "resources/unsubscribe": ({ uri }, { client, headers }) =>
2068
+ Effect.gen(function*() {
2069
+ const subscriptions = getClientSession(
2070
+ options.sessions,
2071
+ client.id,
2072
+ headers
2073
+ )?.resourceSubscriptions
2074
+ if (subscriptions === undefined) {
2075
+ return yield* new MethodNotFound({
2076
+ message: "Resource subscriptions are not supported"
2077
+ })
2078
+ }
2079
+ subscriptions.delete(uri)
2080
+ return {}
2081
+ }),
2082
+ "resources/templates/list": (_, { client, headers }) =>
2083
+ Effect.sync(() => {
2084
+ const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
2085
+ return new ListResourceTemplatesResult({
2086
+ resourceTemplates: filterByClient(initialized, server.resourceTemplates, "template")
2087
+ })
2088
+ }),
2089
+ "tools/call": (r) => server.callTool(r),
2090
+ "tools/list": (_, { client, headers }) =>
2091
+ Effect.sync(() => {
2092
+ const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
2093
+ return new ListToolsResult({
2094
+ tools: filterByClient(initialized, server.tools, "tool")
2095
+ })
2096
+ }),
1458
2097
 
1459
- // Notifications
1460
- "notifications/cancelled": (_) => Effect.void,
1461
- "notifications/initialized": (_) => Effect.void,
1462
- "notifications/progress": (_) => Effect.void,
1463
- "notifications/roots/list_changed": (_) => Effect.void
1464
- })
2098
+ // Notifications
2099
+ "notifications/cancelled": (_) => Effect.void,
2100
+ "notifications/initialized": (_, { client, headers }) =>
2101
+ Effect.sync(() => {
2102
+ server.initializedClients.add(client.id)
2103
+ const session = getClientSession(options.sessions, client.id, headers)
2104
+ if (session) {
2105
+ options.sessions.byClientId.set(client.id, session)
2106
+ }
2107
+ }),
2108
+ "notifications/progress": (_) => Effect.void,
2109
+ "notifications/roots/list_changed": (_) => Effect.void
2110
+ })
2111
+ yield* addProtocolHandlers(
2112
+ options.protocolRegistry,
2113
+ selectedProtocol,
2114
+ selectedProtocol.clientRpcs,
2115
+ wireHandlers,
2116
+ contextMap
2117
+ )
2118
+ }
2119
+ return Context.makeUnsafe(contextMap)
1465
2120
  })
1466
2121
  )
1467
2122
 
2123
+ const addProtocolHandlers = Effect.fnUntraced(function*<
2124
+ ClientRpcs extends Rpc.Any
2125
+ >(
2126
+ registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>,
2127
+ protocol: McpProtocol.ProtocolAdapter,
2128
+ clientRpcs: RpcGroup.RpcGroup<ClientRpcs>,
2129
+ handlers: RpcGroup.HandlersFrom<ClientRpcs>,
2130
+ contextMap: Map<string, unknown>
2131
+ ) {
2132
+ const handlerContext = yield* clientRpcs.toHandlers(handlers)
2133
+ for (const rpcDefinition of clientRpcs.requests.values()) {
2134
+ const routed = registry.routeClientRequest(protocol, {
2135
+ _tag: "Request",
2136
+ id: 0,
2137
+ tag: rpcDefinition._tag,
2138
+ payload: undefined,
2139
+ headers: []
2140
+ })
2141
+ const namespacedRpc = registry.clientRpcs.requests.get(routed.tag)
2142
+ const handler = handlerContext.mapUnsafe.get(rpcDefinition.key)
2143
+ if (namespacedRpc === undefined || handler === undefined) {
2144
+ return yield* Effect.die(`MCP handler registration invariant failed for ${routed.tag}`)
2145
+ }
2146
+ contextMap.set(namespacedRpc.key, handler)
2147
+ }
2148
+ })
2149
+
1468
2150
  const resolveResourceContent = (
1469
2151
  uri: string,
1470
2152
  content: typeof ReadResourceResult.Type | string | Uint8Array
@@ -1511,14 +2193,74 @@ const filterByClient = <
1511
2193
  return out
1512
2194
  }
1513
2195
 
1514
- const getInitializedClient = (
1515
- sessions: Map<string, typeof Initialize.payloadSchema.Type>,
2196
+ const getClientSession = (
2197
+ sessions: Sessions,
1516
2198
  clientId: number,
1517
2199
  headers: Headers.Headers
1518
2200
  ) => {
1519
- const sessionId = headers[mcpSessionIdHeader]
2201
+ const sessionId = headers[MCP_SESSION_ID_HEADER]
1520
2202
  if (sessionId === undefined) {
1521
- return sessions.get(String(clientId))
2203
+ return sessions.byClientId.get(clientId)
1522
2204
  }
1523
- return sessions.get(sessionId)
2205
+ return sessions.bySessionId.get(sessionId)
2206
+ }
2207
+
2208
+ const mcpLogLevels: Record<LoggingLevel, {
2209
+ readonly effect: LogLevel.LogLevel
2210
+ readonly order: number
2211
+ }> = {
2212
+ debug: { effect: "Debug", order: 0 },
2213
+ info: { effect: "Info", order: 1 },
2214
+ notice: { effect: "Info", order: 2 },
2215
+ warning: { effect: "Warn", order: 3 },
2216
+ error: { effect: "Error", order: 4 },
2217
+ critical: { effect: "Fatal", order: 5 },
2218
+ alert: { effect: "Fatal", order: 6 },
2219
+ emergency: { effect: "Fatal", order: 7 }
1524
2220
  }
2221
+
2222
+ const effectLogLevel = (logLevel: SessionLogLevel | undefined): LogLevel.LogLevel =>
2223
+ logLevel?._tag === "Mcp" ? mcpLogLevels[logLevel.level].effect : logLevel?.level ?? "Info"
2224
+
2225
+ const isMcpLogLevelEnabled = (
2226
+ level: LoggingLevel,
2227
+ minimum: SessionLogLevel | undefined
2228
+ ): boolean =>
2229
+ minimum?._tag === "Mcp"
2230
+ ? mcpLogLevels[level].order >= mcpLogLevels[minimum.level].order
2231
+ : LogLevel.isGreaterThanOrEqualTo(mcpLogLevels[level].effect, minimum?.level ?? "Info")
2232
+
2233
+ const getOfferedProtocolVersion = (payload: unknown): string =>
2234
+ typeof payload === "object" &&
2235
+ payload !== null &&
2236
+ "protocolVersion" in payload &&
2237
+ typeof payload.protocolVersion === "string"
2238
+ ? payload.protocolVersion
2239
+ : ""
2240
+
2241
+ const protocolForInternalTag = (
2242
+ registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>,
2243
+ tag: string
2244
+ ): McpProtocol.ProtocolAdapter => {
2245
+ for (const protocol of registry.protocols) {
2246
+ const routed = registry.routeClientRequest(protocol, {
2247
+ _tag: "Request",
2248
+ id: 0,
2249
+ tag: "",
2250
+ payload: undefined,
2251
+ headers: []
2252
+ })
2253
+ if (tag.startsWith(routed.tag)) {
2254
+ return protocol
2255
+ }
2256
+ }
2257
+ return registry.protocols[0]
2258
+ }
2259
+
2260
+ const getProtocolForClient = (
2261
+ clientProtocols: Map<number, McpProtocol.ProtocolAdapter>,
2262
+ clientId: number,
2263
+ registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>
2264
+ ): McpProtocol.ProtocolAdapter =>
2265
+ clientProtocols.get(clientId) ??
2266
+ registry.protocols[0]