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