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