effect 4.0.0-beta.99 → 4.0.0-rc.108
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/AGENTS.md +381 -0
- package/CLAUDE.md +381 -0
- package/README.md +14 -19
- package/ai-docs/README.md +44 -0
- package/ai-docs/package.json +36 -0
- package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
- package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/ai-docs/src/01_effect/01_basics/index.md +5 -0
- package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
- package/ai-docs/src/01_effect/02_schema/index.md +7 -0
- package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
- package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
- package/ai-docs/src/01_effect/03_services/index.md +5 -0
- package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
- package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
- package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
- package/ai-docs/src/01_effect/04_errors/index.md +1 -0
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
- package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
- package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
- package/ai-docs/src/01_effect/05_resources/index.md +3 -0
- package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
- package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
- package/ai-docs/src/01_effect/06_running/index.md +1 -0
- package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
- package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
- package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
- package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
- package/ai-docs/src/03_stream/30_encoding.ts +165 -0
- package/ai-docs/src/03_stream/index.md +4 -0
- package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
- package/ai-docs/src/04_integration/index.md +5 -0
- package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/ai-docs/src/05_batching/index.md +3 -0
- package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
- package/ai-docs/src/06_schedule/index.md +3 -0
- package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/ai-docs/src/07_datetime/index.md +5 -0
- package/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/ai-docs/src/08_observability/index.md +7 -0
- package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/ai-docs/src/09_testing/index.md +1 -0
- package/ai-docs/src/10_predicate/01_basics.ts +14 -0
- package/ai-docs/src/10_predicate/index.md +9 -0
- package/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/ai-docs/src/50_http-client/index.md +3 -0
- package/ai-docs/src/51_http-server/10_basics.ts +116 -0
- package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
- package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
- package/ai-docs/src/51_http-server/index.md +3 -0
- package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/ai-docs/src/60_child-process/index.md +3 -0
- package/ai-docs/src/70_cli/10_basics.ts +136 -0
- package/ai-docs/src/70_cli/index.md +5 -0
- package/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/ai-docs/src/71_ai/index.md +5 -0
- package/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/ai-docs/src/80_cluster/index.md +4 -0
- package/ai-docs/src/index.md +10 -0
- package/ai-docs/tsconfig.json +24 -0
- 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.d.ts +3 -3
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +4 -3
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +409 -256
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +213 -134
- 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 +756 -769
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +588 -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 +361 -267
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +229 -71
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +164 -95
- 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 +153 -277
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +172 -236
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +144 -176
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +227 -162
- 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 +22 -15
- 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 +110 -98
- 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 +157 -188
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +3142 -3345
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1452 -1570
- 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 +39 -23
- 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 +86 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +8 -29
- 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 +83 -147
- 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 +86 -60
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +154 -265
- 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 +24 -32
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +55 -60
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +106 -148
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +81 -62
- 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 +19 -18
- package/dist/Inspectable.d.ts.map +1 -1
- package/dist/Inspectable.js +20 -16
- 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 +241 -317
- 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 +319 -241
- 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 +202 -180
- 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 +208 -453
- 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 +63 -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 +132 -210
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +221 -324
- 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 +166 -138
- 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 +292 -1638
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +164 -805
- 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 +2056 -1269
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2868 -1135
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +64 -72
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +698 -468
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +236 -188
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +281 -234
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +219 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +303 -309
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +32 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +170 -118
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +433 -1511
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +301 -2854
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +117 -77
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +139 -104
- 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 +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.d.ts.map +1 -1
- 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 +118 -108
- 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 +18 -5
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +6 -3
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2467 -2962
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1154 -1413
- 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 +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 +2 -2
- 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 +98 -131
- 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 +161 -137
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +89 -114
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +75 -53
- 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 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +4 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +5 -1
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +252 -108
- 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 +52 -3
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js +12 -8
- 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 +2 -2
- 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 +18 -13
- 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 +15 -1
- 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 +761 -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 +29 -49
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.d.ts +2 -0
- package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
- package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -83
- 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 +522 -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 +351 -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 +24 -10
- 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 +65 -20
- 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 +31 -31
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +35 -34
- 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 +118 -140
- 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 +56 -52
- 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 +127 -83
- 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 +320 -254
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +79 -71
- 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 +777 -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 +131 -44
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +100 -36
- 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 +279 -72
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +113 -34
- 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 +126 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +136 -76
- 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 +736 -115
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +282 -56
- 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 +299 -83
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +146 -60
- 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 +377 -162
- 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 +54 -31
- 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 +2 -2
- 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 +5 -3
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +21 -13
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js +69 -9
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js +5 -5
- 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.d.ts.map +1 -1
- package/dist/unstable/cli/internal/help.js +4 -2
- 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 +5 -5
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js +2 -2
- 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 +7 -7
- 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 +32 -16
- 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 +12 -12
- 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 +7 -5
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +8 -5
- 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.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +13 -6
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +8 -0
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +17 -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 +29 -23
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
- package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.js +8 -7
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +11 -15
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +32 -22
- 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 +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +164 -31
- 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 +141 -79
- 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 +25 -13
- 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 +2 -2
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +17 -0
- 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.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js +7 -2
- 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/Ini.d.ts +20 -0
- package/dist/unstable/encoding/Ini.d.ts.map +1 -0
- package/dist/unstable/encoding/Ini.js +153 -0
- package/dist/unstable/encoding/Ini.js.map +1 -0
- package/dist/unstable/encoding/Msgpack.d.ts +2 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +31 -19
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
- package/dist/unstable/encoding/Ndjson.js +7 -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 +72 -31
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/Toml.d.ts +19 -0
- package/dist/unstable/encoding/Toml.d.ts.map +1 -0
- package/dist/unstable/encoding/Toml.js +434 -0
- package/dist/unstable/encoding/Toml.js.map +1 -0
- package/dist/unstable/encoding/Yaml.d.ts +19 -0
- package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
- package/dist/unstable/encoding/Yaml.js +461 -0
- package/dist/unstable/encoding/Yaml.js.map +1 -0
- package/dist/unstable/encoding/index.d.ts +12 -0
- package/dist/unstable/encoding/index.d.ts.map +1 -1
- package/dist/unstable/encoding/index.js +12 -0
- 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 +17 -17
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +27 -19
- 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 +8 -7
- package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +16 -14
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +31 -31
- package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js +12 -8
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +5 -5
- 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 +16 -7
- 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 +15 -7
- 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.d.ts.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js +3 -6
- 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/FindMyWay/internal/queryString.d.ts +11 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
- package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
- package/dist/unstable/http/FindMyWay.d.ts +33 -8
- package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
- package/dist/unstable/http/FindMyWay.js +4 -7
- package/dist/unstable/http/FindMyWay.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 +110 -47
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +79 -36
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js +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 -12
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +3 -18
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +7 -9
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +7 -8
- 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 +53 -3
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +91 -92
- 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 +23 -15
- 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 +17 -5
- 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 +28 -9
- package/dist/unstable/http/Multipart.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +65 -35
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.js +14 -0
- package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js +208 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js +241 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
- package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
- package/dist/unstable/http/MultipartParser.d.ts +98 -0
- package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser.js +23 -0
- package/dist/unstable/http/MultipartParser.js.map +1 -0
- package/dist/unstable/http/Template.d.ts.map +1 -1
- package/dist/unstable/http/Template.js +3 -3
- 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.d.ts +1 -1
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +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/httpBody.d.ts +2 -0
- package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
- package/dist/unstable/http/internal/httpBody.js +10 -0
- package/dist/unstable/http/internal/httpBody.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js +9 -9
- 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 +82 -30
- 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 +89 -51
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +30 -30
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js +2 -2
- 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 +225 -6
- package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.js +174 -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 +21 -13
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +110 -57
- 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 +71 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +86 -7
- 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 +4 -4
- 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 +31 -15
- 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 +3 -3
- 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.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +15 -15
- 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 +108 -22
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +47 -26
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +31 -47
- 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 +4 -4
- 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 +72 -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 +131 -30
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +53 -34
- 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 +26 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +40 -22
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js +2 -2
- 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 +177 -96
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +20 -15
- 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 +53 -51
- 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 +11 -12
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +28 -17
- 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 +38 -17
- 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.d.ts +9 -1
- package/dist/unstable/sql/Migrator.d.ts.map +1 -1
- package/dist/unstable/sql/Migrator.js +15 -2
- 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 +8 -4
- 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 +15 -15
- 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.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +30 -24
- 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 +30 -27
- 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.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +13 -14
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +11 -11
- 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.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +13 -8
- 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 +26 -3
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +72 -6
- 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 +10 -14
- 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/Brand.ts +4 -4
- package/src/Cache.ts +469 -851
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +982 -831
- 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 +642 -335
- package/src/ConfigProvider.ts +267 -135
- package/src/Console.ts +289 -39
- package/src/Context.ts +323 -404
- package/src/Cron.ts +271 -219
- package/src/Crypto.ts +30 -23
- package/src/Data.ts +63 -82
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +259 -258
- package/src/Duration.ts +244 -311
- package/src/Effect.ts +3215 -3394
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +59 -41
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +51 -27
- package/src/ExecutionPlan.ts +91 -56
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +82 -149
- package/src/FiberHandle.ts +155 -107
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +125 -83
- package/src/FileSystem.ts +156 -264
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +69 -76
- package/src/Function.ts +119 -151
- 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 +22 -20
- package/src/Iterable.ts +633 -797
- package/src/JsonPatch.ts +60 -113
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +408 -251
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +366 -265
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +348 -700
- 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 +77 -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 +303 -441
- 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 +204 -165
- 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 +311 -1737
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +3475 -1913
- package/src/SchemaAST.ts +902 -573
- package/src/SchemaGetter.ts +351 -233
- package/src/SchemaIssue.ts +367 -334
- package/src/SchemaParser.ts +254 -148
- package/src/SchemaRepresentation.ts +732 -3414
- package/src/SchemaTransformation.ts +186 -97
- package/src/Scope.ts +123 -151
- package/src/ScopedCache.ts +1 -1
- package/src/ScopedRef.ts +6 -4
- package/src/Semaphore.ts +157 -54
- package/src/Sink.ts +129 -114
- package/src/Stdio.ts +24 -5
- package/src/Stream.ts +2745 -3173
- 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/SynchronizedRef.ts +1 -1
- package/src/Terminal.ts +3 -3
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +99 -131
- 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 +215 -184
- package/src/TxReentrantLock.ts +136 -101
- 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 -10
- package/src/internal/core.ts +6 -5
- package/src/internal/dateTime.ts +7 -1
- package/src/internal/effect.ts +304 -134
- package/src/internal/executionPlan.ts +106 -10
- package/src/internal/hashMap.ts +20 -14
- package/src/internal/matcher.ts +3 -3
- package/src/internal/persistence.ts +2 -0
- package/src/internal/rcRef.ts +24 -16
- package/src/internal/record.ts +11 -7
- package/src/internal/references.ts +3 -7
- package/src/internal/schedule.ts +4 -4
- package/src/internal/schema/annotations.ts +48 -1
- package/src/internal/schema/fromJsonSchemaDocument.ts +977 -0
- package/src/internal/schema/fromRepresentation.ts +339 -0
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/schema.ts +46 -63
- package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +9 -81
- package/src/internal/schema/toCodeDocument.ts +572 -0
- package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
- package/src/internal/schema/toJsonSchemaDocument.ts +549 -0
- package/src/internal/schema/toRepresentation.ts +404 -0
- package/src/internal/stackTraceLimit.ts +3 -7
- package/src/internal/trie.ts +21 -12
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +86 -32
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +40 -40
- package/src/unstable/ai/AiError.ts +119 -141
- package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
- package/src/unstable/ai/Chat.ts +133 -98
- package/src/unstable/ai/EmbeddingModel.ts +1 -1
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +141 -97
- package/src/unstable/ai/McpProtocol.ts +48 -0
- package/src/unstable/ai/McpSchema.ts +92 -81
- package/src/unstable/ai/McpServer.ts +1057 -303
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
- package/src/unstable/ai/Prompt.ts +212 -63
- 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 +279 -72
- package/src/unstable/cli/CliError.ts +159 -91
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +764 -124
- 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 +336 -100
- package/src/unstable/cli/Primitive.ts +383 -156
- package/src/unstable/cli/Prompt.ts +64 -34
- package/src/unstable/cli/internal/ansi.ts +2 -2
- package/src/unstable/cli/internal/command.ts +28 -15
- package/src/unstable/cli/internal/completions/bash.ts +59 -9
- package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
- package/src/unstable/cli/internal/completions/fish.ts +5 -7
- package/src/unstable/cli/internal/config.ts +8 -10
- package/src/unstable/cli/internal/help.ts +4 -2
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +5 -5
- package/src/unstable/cli/internal/wizard.ts +2 -2
- package/src/unstable/cluster/ClusterError.ts +7 -7
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +36 -20
- package/src/unstable/cluster/Entity.ts +23 -19
- package/src/unstable/cluster/EntityProxy.ts +16 -7
- 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 +24 -20
- package/src/unstable/cluster/Reply.ts +26 -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 +45 -18
- package/src/unstable/cluster/RunnerStorage.ts +11 -9
- package/src/unstable/cluster/Runners.ts +48 -26
- package/src/unstable/cluster/ShardId.ts +1 -1
- package/src/unstable/cluster/Sharding.ts +223 -55
- 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 +223 -133
- package/src/unstable/cluster/internal/entityManager.ts +43 -26
- package/src/unstable/cluster/internal/resourceMap.ts +5 -2
- package/src/unstable/cluster/internal/resourceRef.ts +27 -5
- package/src/unstable/cluster/internal/shardLock.ts +9 -0
- package/src/unstable/devtools/DevToolsClient.ts +3 -2
- package/src/unstable/devtools/DevToolsSchema.ts +10 -5
- package/src/unstable/encoding/Ini.ts +174 -0
- package/src/unstable/encoding/Msgpack.ts +61 -40
- package/src/unstable/encoding/Ndjson.ts +9 -1
- package/src/unstable/encoding/Sse.ts +109 -37
- package/src/unstable/encoding/Toml.ts +504 -0
- package/src/unstable/encoding/Yaml.ts +541 -0
- package/src/unstable/encoding/index.ts +15 -0
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +30 -22
- package/src/unstable/eventlog/EventLog.ts +24 -14
- package/src/unstable/eventlog/EventLogEncryption.ts +17 -18
- package/src/unstable/eventlog/EventLogMessage.ts +15 -9
- package/src/unstable/eventlog/EventLogRemote.ts +5 -5
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/eventlog/SqlEventJournal.ts +8 -6
- 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/FindMyWay/internal/queryString.ts +420 -0
- package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
- package/src/unstable/http/FindMyWay.ts +65 -6
- package/src/unstable/http/Headers.ts +10 -10
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +215 -78
- package/src/unstable/http/HttpClientError.ts +1 -1
- package/src/unstable/http/HttpClientRequest.ts +59 -12
- package/src/unstable/http/HttpClientResponse.ts +5 -21
- package/src/unstable/http/HttpEffect.ts +20 -19
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +129 -6
- package/src/unstable/http/HttpRouter.ts +109 -101
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +31 -17
- package/src/unstable/http/HttpServerResponse.ts +38 -6
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/Multipart.ts +67 -36
- package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
- package/src/unstable/http/MultipartParser/Search.ts +17 -0
- package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
- package/src/unstable/http/MultipartParser/internal/headers.ts +244 -0
- package/src/unstable/http/MultipartParser/internal/multipart.ts +279 -0
- package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
- package/src/unstable/http/MultipartParser.ts +115 -0
- package/src/unstable/http/Template.ts +7 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +27 -32
- package/src/unstable/http/index.ts +1 -1
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/http/internal/httpBody.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +10 -11
- package/src/unstable/httpapi/HttpApiBuilder.ts +154 -33
- package/src/unstable/httpapi/HttpApiClient.ts +142 -61
- package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
- package/src/unstable/httpapi/HttpApiError.ts +46 -52
- package/src/unstable/httpapi/HttpApiGroup.ts +17 -17
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +359 -6
- package/src/unstable/httpapi/OpenApi.ts +153 -62
- package/src/unstable/observability/OtlpExporter.ts +130 -12
- package/src/unstable/observability/OtlpLogger.ts +8 -6
- package/src/unstable/observability/OtlpMetrics.ts +42 -21
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/OtlpTracer.ts +9 -5
- 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 +18 -15
- package/src/unstable/persistence/Persistence.ts +153 -26
- package/src/unstable/persistence/RateLimiter.ts +79 -45
- package/src/unstable/persistence/Redis.ts +5 -5
- package/src/unstable/process/ChildProcess.ts +72 -21
- package/src/unstable/process/ChildProcessSpawner.ts +22 -11
- package/src/unstable/reactivity/AsyncResult.ts +23 -18
- package/src/unstable/reactivity/Atom.ts +161 -47
- 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 +65 -29
- package/src/unstable/rpc/RpcClientError.ts +2 -2
- 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 +22 -17
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +52 -50
- package/src/unstable/schema/VariantSchema.ts +51 -43
- package/src/unstable/socket/Socket.ts +42 -19
- package/src/unstable/sql/Migrator.ts +22 -9
- package/src/unstable/sql/SqlClient.ts +64 -56
- package/src/unstable/sql/SqlError.ts +15 -15
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +41 -31
- package/src/unstable/sql/Statement.ts +44 -37
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +15 -16
- package/src/unstable/workers/WorkerError.ts +12 -12
- 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 +18 -13
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -26
- package/src/unstable/workflow/WorkflowEngine.ts +111 -8
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/SchemaError.d.ts +0 -53
- package/dist/SchemaError.d.ts.map +0 -1
- package/dist/SchemaError.js +0 -61
- package/dist/SchemaError.js.map +0 -1
- 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 +0 -5
- 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/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
- package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Node.js +0 -14
- package/dist/unstable/http/Multipasta/Node.js.map +0 -1
- package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Search.js +0 -14
- package/dist/unstable/http/Multipasta/Search.js.map +0 -1
- package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Web.js +0 -14
- package/dist/unstable/http/Multipasta/Web.js.map +0 -1
- package/dist/unstable/http/Multipasta.d.ts +0 -15
- package/dist/unstable/http/Multipasta.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta.js +0 -15
- package/dist/unstable/http/Multipasta.js.map +0 -1
- package/src/SchemaError.ts +0 -64
- package/src/SchemaUtils.ts +0 -51
- package/src/internal/schema/representation.ts +0 -795
- package/src/internal/version.ts +0 -2
- package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
- package/src/unstable/http/Multipasta/Node.ts +0 -14
- package/src/unstable/http/Multipasta/Search.ts +0 -14
- package/src/unstable/http/Multipasta/Web.ts +0 -14
- package/src/unstable/http/Multipasta.ts +0 -15
|
@@ -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 activeRequests = new Map<number, Map<string, boolean>>()
|
|
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,253 @@ 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 = activeRequests.get(clientId)
|
|
581
|
+
const key = requestKey(response.requestId)
|
|
582
|
+
const cancelled = requests?.get(key)
|
|
583
|
+
if (requests !== undefined && requests.delete(key) && requests.size === 0) {
|
|
584
|
+
activeRequests.delete(clientId)
|
|
585
|
+
}
|
|
586
|
+
if (cancelled === true) {
|
|
587
|
+
return Effect.void
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return protocol.send(clientId, response)
|
|
591
|
+
},
|
|
440
592
|
run: (f) =>
|
|
441
593
|
protocol.run((clientId, request_) => {
|
|
442
|
-
const
|
|
594
|
+
const fiber = Fiber.getCurrent()!
|
|
595
|
+
const request = request_ as unknown as
|
|
443
596
|
| RpcMessage.FromServerEncoded
|
|
444
597
|
| RpcMessage.FromClientEncoded
|
|
598
|
+
const httpRequest = isHttp
|
|
599
|
+
? Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
|
|
600
|
+
: undefined
|
|
601
|
+
if (httpRequest !== undefined && request._tag !== "Eof") {
|
|
602
|
+
appendPreResponseHandlerUnsafe(httpRequest, (_, response) =>
|
|
603
|
+
Effect.succeed(
|
|
604
|
+
response.status === 200 &&
|
|
605
|
+
response.body._tag === "Uint8Array" &&
|
|
606
|
+
response.body.contentLength === 0
|
|
607
|
+
? HttpServerResponse.empty({
|
|
608
|
+
headers: Headers.remove(response.headers, "content-type"),
|
|
609
|
+
status: 202
|
|
610
|
+
})
|
|
611
|
+
: response
|
|
612
|
+
))
|
|
613
|
+
}
|
|
445
614
|
switch (request._tag) {
|
|
446
615
|
case "Request": {
|
|
616
|
+
const headers = isHttp
|
|
617
|
+
? Context.getUnsafe(
|
|
618
|
+
Fiber.getCurrent()!.context,
|
|
619
|
+
HttpServerRequest.HttpServerRequest
|
|
620
|
+
).headers
|
|
621
|
+
: Headers.fromInput(request.headers)
|
|
622
|
+
const session = getClientSession(sessions, clientId, headers)
|
|
623
|
+
const selectedProtocol = session?.protocol ??
|
|
624
|
+
(request.tag === "initialize"
|
|
625
|
+
? protocolRegistry.select(getOfferedProtocolVersion(request.payload))
|
|
626
|
+
: protocolRegistry.protocols[0])
|
|
627
|
+
clientProtocols.set(clientId, selectedProtocol)
|
|
628
|
+
if (request.tag === MCP_INVALID_BATCH_METHOD) {
|
|
629
|
+
return protocol.send(clientId, {
|
|
630
|
+
_tag: "Exit",
|
|
631
|
+
requestId: request.id,
|
|
632
|
+
exit: {
|
|
633
|
+
_tag: "Failure",
|
|
634
|
+
cause: [{
|
|
635
|
+
_tag: "Fail",
|
|
636
|
+
error: new InvalidRequest({ message: "JSON-RPC batches are not supported" })
|
|
637
|
+
}]
|
|
638
|
+
}
|
|
639
|
+
})
|
|
640
|
+
}
|
|
447
641
|
if (isHttp) {
|
|
448
642
|
const fiber = Fiber.getCurrent()!
|
|
449
643
|
const httpRequest = Context.getUnsafe(fiber.context, HttpServerRequest.HttpServerRequest)
|
|
450
|
-
|
|
451
|
-
if (client) {
|
|
644
|
+
if (session) {
|
|
452
645
|
appendPreResponseHandlerUnsafe(httpRequest, (_, res) =>
|
|
453
646
|
Effect.succeed(
|
|
454
|
-
HttpServerResponse.setHeader(
|
|
647
|
+
HttpServerResponse.setHeader(
|
|
648
|
+
res,
|
|
649
|
+
MCP_PROTOCOL_VERSION_HEADER,
|
|
650
|
+
session.protocol.protocolVersion
|
|
651
|
+
)
|
|
455
652
|
))
|
|
456
653
|
}
|
|
457
654
|
}
|
|
458
|
-
const
|
|
459
|
-
|
|
655
|
+
const routedRequest = protocolRegistry.routeClientRequest(selectedProtocol, request)
|
|
656
|
+
const rpc = protocolRegistry.clientRpcs.requests.get(routedRequest.tag)
|
|
657
|
+
if (rpc && selectedProtocol.clientNotificationRpcs.requests.has(request.tag)) {
|
|
658
|
+
if (!session) {
|
|
659
|
+
if (httpRequest) {
|
|
660
|
+
appendPreResponseHandlerUnsafe(
|
|
661
|
+
httpRequest,
|
|
662
|
+
() =>
|
|
663
|
+
Effect.succeed(
|
|
664
|
+
HttpServerResponse.empty({
|
|
665
|
+
status: headers[MCP_SESSION_ID_HEADER] === undefined ? 400 : 404
|
|
666
|
+
})
|
|
667
|
+
)
|
|
668
|
+
)
|
|
669
|
+
}
|
|
670
|
+
return Effect.void
|
|
671
|
+
}
|
|
460
672
|
if (request.tag === "notifications/cancelled") {
|
|
461
|
-
return
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
673
|
+
return decodeCancelledNotification(request.payload).pipe(
|
|
674
|
+
Effect.flatMap(({ requestId }) => {
|
|
675
|
+
const key = requestKey(requestId)
|
|
676
|
+
const requests = activeRequests.get(clientId)
|
|
677
|
+
if (requests?.has(key) !== true) {
|
|
678
|
+
return Effect.void
|
|
679
|
+
}
|
|
680
|
+
requests.set(key, true)
|
|
681
|
+
return f(clientId, {
|
|
682
|
+
_tag: "Interrupt",
|
|
683
|
+
requestId: RpcMessage.RequestId(requestId)
|
|
684
|
+
})
|
|
685
|
+
}),
|
|
686
|
+
Effect.catchCause(() => Effect.void)
|
|
687
|
+
)
|
|
465
688
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
689
|
+
return selectedProtocol.payloadCodecs(rpc).decode(request.payload).pipe(
|
|
690
|
+
Effect.flatMap((payload) => {
|
|
691
|
+
if (
|
|
692
|
+
request.tag === "notifications/roots/list_changed" &&
|
|
693
|
+
session.initializePayload.capabilities.roots?.listChanged === true
|
|
694
|
+
) {
|
|
695
|
+
if (httpRequest !== undefined) {
|
|
696
|
+
return Effect.void
|
|
697
|
+
}
|
|
698
|
+
return RcMap.get(
|
|
699
|
+
clients,
|
|
700
|
+
new McpClientKey({
|
|
701
|
+
clientId,
|
|
702
|
+
protocolVersion: selectedProtocol.protocolVersion
|
|
703
|
+
})
|
|
704
|
+
).pipe(
|
|
705
|
+
Effect.flatMap(({ client }) => client["roots/list"](undefined)),
|
|
706
|
+
Effect.scoped,
|
|
707
|
+
Effect.ignoreCause,
|
|
708
|
+
Effect.forkIn(serverScope),
|
|
709
|
+
Effect.asVoid
|
|
710
|
+
)
|
|
711
|
+
}
|
|
712
|
+
const handler = handlers.mapUnsafe.get(rpc.key) as Rpc.Handler<string> | undefined
|
|
713
|
+
return handler
|
|
714
|
+
? handler.handler(payload, {
|
|
715
|
+
rpc,
|
|
716
|
+
requestId: RpcMessage.RequestId(request.id),
|
|
717
|
+
client: new Rpc.ServerClient(clientId),
|
|
718
|
+
headers
|
|
719
|
+
}) as any as Effect.Effect<void>
|
|
720
|
+
: Effect.void
|
|
721
|
+
}),
|
|
722
|
+
Effect.catchCause(() => Effect.void)
|
|
723
|
+
)
|
|
475
724
|
}
|
|
476
|
-
|
|
725
|
+
if (!rpc) {
|
|
726
|
+
if (request.isNotification) {
|
|
727
|
+
return Effect.void
|
|
728
|
+
}
|
|
729
|
+
return protocol.send(clientId, {
|
|
730
|
+
_tag: "Exit",
|
|
731
|
+
requestId: request.id,
|
|
732
|
+
exit: {
|
|
733
|
+
_tag: "Failure",
|
|
734
|
+
cause: [{ _tag: "Fail", error: new MethodNotFound({ message: `Method not found: ${request.tag}` }) }]
|
|
735
|
+
}
|
|
736
|
+
})
|
|
737
|
+
}
|
|
738
|
+
return selectedProtocol.payloadCodecs(rpc).decode(request.payload).pipe(
|
|
739
|
+
Effect.matchEffect({
|
|
740
|
+
onSuccess: () => {
|
|
741
|
+
if (request.isNotification !== true) {
|
|
742
|
+
const requests = activeRequests.get(clientId) ?? new Map<string, boolean>()
|
|
743
|
+
requests.set(requestKey(request.id), false)
|
|
744
|
+
activeRequests.set(clientId, requests)
|
|
745
|
+
}
|
|
746
|
+
return f(clientId, routedRequest)
|
|
747
|
+
},
|
|
748
|
+
onFailure: () =>
|
|
749
|
+
request.isNotification
|
|
750
|
+
? Effect.void
|
|
751
|
+
: protocol.send(clientId, {
|
|
752
|
+
_tag: "Exit",
|
|
753
|
+
requestId: request.id,
|
|
754
|
+
exit: {
|
|
755
|
+
_tag: "Failure",
|
|
756
|
+
cause: [{ _tag: "Fail", error: new InvalidParams({ message: "Invalid method parameters" }) }]
|
|
757
|
+
}
|
|
758
|
+
})
|
|
759
|
+
})
|
|
760
|
+
)
|
|
477
761
|
}
|
|
478
762
|
case "Ping":
|
|
479
763
|
case "Ack":
|
|
480
764
|
case "Interrupt":
|
|
765
|
+
return f(clientId, request)
|
|
481
766
|
case "Eof":
|
|
767
|
+
activeRequests.delete(clientId)
|
|
482
768
|
return f(clientId, request)
|
|
483
769
|
case "Pong":
|
|
484
770
|
case "Exit":
|
|
485
771
|
case "Chunk":
|
|
486
772
|
case "ClientProtocolError":
|
|
487
773
|
case "Defect":
|
|
488
|
-
return RcMap.get(
|
|
774
|
+
return RcMap.get(
|
|
775
|
+
clients,
|
|
776
|
+
new McpClientKey({
|
|
777
|
+
clientId,
|
|
778
|
+
protocolVersion: getProtocolForClient(clientProtocols, clientId, protocolRegistry).protocolVersion
|
|
779
|
+
})
|
|
780
|
+
).pipe(
|
|
489
781
|
Effect.flatMap(({ write }) => write(request)),
|
|
490
782
|
Effect.scoped
|
|
491
783
|
)
|
|
@@ -493,23 +785,52 @@ export const run: (options: {
|
|
|
493
785
|
})
|
|
494
786
|
})
|
|
495
787
|
|
|
496
|
-
const encodeNotification = Schema.encodeUnknownEffect(
|
|
497
|
-
Schema.Union(Array.from(ServerNotificationRpcs.requests.values(), (rpc) => rpc.payloadSchema))
|
|
498
|
-
)
|
|
499
788
|
yield* Queue.take(server.notificationsQueue).pipe(
|
|
500
789
|
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
790
|
const clientIds = yield* patchedProtocol.clientIds
|
|
791
|
+
for (const clientId of clientProtocols.keys()) {
|
|
792
|
+
if (!clientIds.has(clientId)) {
|
|
793
|
+
clientProtocols.delete(clientId)
|
|
794
|
+
sessions.byClientId.delete(clientId)
|
|
795
|
+
}
|
|
796
|
+
}
|
|
508
797
|
for (const clientId of server.initializedClients.keys()) {
|
|
509
798
|
if (!clientIds.has(clientId)) {
|
|
510
799
|
server.initializedClients.delete(clientId)
|
|
511
800
|
continue
|
|
512
801
|
}
|
|
802
|
+
const selectedProtocol = clientProtocols.get(clientId)
|
|
803
|
+
if (!selectedProtocol) {
|
|
804
|
+
continue
|
|
805
|
+
}
|
|
806
|
+
const rpc = selectedProtocol.serverNotificationRpcs.requests.get(request.tag)
|
|
807
|
+
if (!rpc) {
|
|
808
|
+
continue
|
|
809
|
+
}
|
|
810
|
+
if (request.tag === "notifications/message") {
|
|
811
|
+
const { level } = yield* Schema.decodeUnknownEffect(
|
|
812
|
+
LoggingMessageNotification.payloadSchema
|
|
813
|
+
)(request.payload)
|
|
814
|
+
if (!isMcpLogLevelEnabled(level, sessions.byClientId.get(clientId)?.logLevel)) {
|
|
815
|
+
continue
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
if (request.tag === "notifications/resources/updated") {
|
|
819
|
+
const { uri } = yield* Schema.decodeUnknownEffect(
|
|
820
|
+
ResourceUpdatedNotification.payloadSchema
|
|
821
|
+
)(request.payload)
|
|
822
|
+
if (sessions.byClientId.get(clientId)?.resourceSubscriptions?.has(uri) !== true) {
|
|
823
|
+
continue
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
const encoded = yield* selectedProtocol.payloadCodecs(rpc).encode(request.payload)
|
|
827
|
+
// TODO: Extend RpcServer.Protocol's outbound message contract with server-originated
|
|
828
|
+
// notifications so MCP does not need to treat this notification as an RPC response.
|
|
829
|
+
const message: RpcMessage.RequestEncoded = {
|
|
830
|
+
_tag: "Request",
|
|
831
|
+
tag: request.tag,
|
|
832
|
+
payload: encoded
|
|
833
|
+
} as any
|
|
513
834
|
yield* patchedProtocol.send(clientId, message as any)
|
|
514
835
|
}
|
|
515
836
|
})),
|
|
@@ -518,7 +839,7 @@ export const run: (options: {
|
|
|
518
839
|
Effect.forkScoped
|
|
519
840
|
)
|
|
520
841
|
|
|
521
|
-
return yield* RpcServer.make(
|
|
842
|
+
return yield* RpcServer.make(protocolRegistry.clientRpcs, {
|
|
522
843
|
spanPrefix: "McpServer",
|
|
523
844
|
disableFatalDefects: true
|
|
524
845
|
}).pipe(
|
|
@@ -560,65 +881,145 @@ export const run: (options: {
|
|
|
560
881
|
export const layer = (options: {
|
|
561
882
|
readonly name: string
|
|
562
883
|
readonly version: string
|
|
884
|
+
readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
|
|
563
885
|
readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
|
|
564
|
-
}): Layer.Layer<McpServer | McpServerClient,
|
|
565
|
-
|
|
886
|
+
}): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, RpcServer.Protocol> =>
|
|
887
|
+
layerWithProtocolState(options).pipe(
|
|
888
|
+
Layer.provide(layerMcpProtocolState(options.protocols))
|
|
889
|
+
)
|
|
890
|
+
|
|
891
|
+
const layerWithProtocolState = (options: {
|
|
892
|
+
readonly name: string
|
|
893
|
+
readonly version: string
|
|
894
|
+
readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
|
|
895
|
+
}): Layer.Layer<McpServer | McpServerClient, never, RpcServer.Protocol | McpProtocolState> =>
|
|
896
|
+
Layer.effectDiscard(
|
|
897
|
+
Effect.gen(function*() {
|
|
898
|
+
const protocolState = yield* McpProtocolState
|
|
899
|
+
yield* Effect.forkScoped(runWithProtocolState(options, protocolState))
|
|
900
|
+
})
|
|
901
|
+
).pipe(
|
|
566
902
|
Layer.provideMerge(McpServer.layer)
|
|
567
903
|
)
|
|
568
904
|
|
|
905
|
+
const StdioInitializeRequest = Schema.Struct({
|
|
906
|
+
method: Schema.Literal("initialize"),
|
|
907
|
+
params: Schema.Struct({
|
|
908
|
+
protocolVersion: Schema.String
|
|
909
|
+
})
|
|
910
|
+
})
|
|
911
|
+
|
|
912
|
+
const StdioInvalidBatchExit = Schema.Struct({
|
|
913
|
+
_tag: Schema.Literal("Exit"),
|
|
914
|
+
requestId: Schema.Null,
|
|
915
|
+
exit: Schema.Struct({
|
|
916
|
+
cause: Schema.Unknown
|
|
917
|
+
})
|
|
918
|
+
})
|
|
919
|
+
|
|
920
|
+
const decodeStdioInitializeRequest = Schema.decodeUnknownOption(StdioInitializeRequest)
|
|
921
|
+
const decodeStdioInvalidBatchExit = Schema.decodeUnknownOption(StdioInvalidBatchExit)
|
|
922
|
+
|
|
923
|
+
const makeStdioSerialization = (
|
|
924
|
+
protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
|
|
925
|
+
): RpcSerialization.RpcSerialization["Service"] =>
|
|
926
|
+
RpcSerialization.RpcSerialization.of({
|
|
927
|
+
contentType: "application/json-rpc",
|
|
928
|
+
includesFraming: true,
|
|
929
|
+
makeUnsafe: () => {
|
|
930
|
+
const framing = RpcSerialization.ndjson.makeUnsafe()
|
|
931
|
+
const jsonRpc = RpcSerialization.jsonRpc().makeUnsafe()
|
|
932
|
+
const protocolsByVersion = new Map<string, McpProtocol.ProtocolAdapter>(
|
|
933
|
+
protocols.map((protocol) => [protocol.protocolVersion, protocol])
|
|
934
|
+
)
|
|
935
|
+
let selectedProtocol = protocols[0]
|
|
936
|
+
return {
|
|
937
|
+
decode: (data) => {
|
|
938
|
+
const frames = framing.decode(data)
|
|
939
|
+
const messages: Array<unknown> = []
|
|
940
|
+
for (const frame of frames) {
|
|
941
|
+
const entries = Array.isArray(frame) ? frame : [frame]
|
|
942
|
+
const initialize = Arr.findFirst(entries, (entry) => decodeStdioInitializeRequest(entry))
|
|
943
|
+
selectedProtocol = Option.match(initialize, {
|
|
944
|
+
onNone: () => selectedProtocol,
|
|
945
|
+
onSome: ({ params }) => protocolsByVersion.get(params.protocolVersion) ?? protocols[0]
|
|
946
|
+
})
|
|
947
|
+
if (Array.isArray(frame) && !selectedProtocol.transport.acceptsJsonRpcBatches) {
|
|
948
|
+
messages.push({
|
|
949
|
+
_tag: "Request",
|
|
950
|
+
id: null,
|
|
951
|
+
tag: MCP_INVALID_BATCH_METHOD,
|
|
952
|
+
payload: null,
|
|
953
|
+
headers: []
|
|
954
|
+
})
|
|
955
|
+
} else {
|
|
956
|
+
messages.push(...jsonRpc.decode(JSON.stringify(frame)))
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
return messages
|
|
960
|
+
},
|
|
961
|
+
encode: (response) => {
|
|
962
|
+
const invalidBatchExit = decodeStdioInvalidBatchExit(response)
|
|
963
|
+
if (Option.isSome(invalidBatchExit)) {
|
|
964
|
+
return framing.encode({
|
|
965
|
+
jsonrpc: "2.0",
|
|
966
|
+
id: null,
|
|
967
|
+
error: {
|
|
968
|
+
_tag: "Cause",
|
|
969
|
+
code: INVALID_REQUEST_ERROR_CODE,
|
|
970
|
+
message: "JSON-RPC batches are not supported",
|
|
971
|
+
data: invalidBatchExit.value.exit.cause
|
|
972
|
+
}
|
|
973
|
+
})
|
|
974
|
+
}
|
|
975
|
+
const encoded = jsonRpc.encode(response)
|
|
976
|
+
return encoded === undefined ? undefined : `${encoded}\n`
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
})
|
|
981
|
+
|
|
569
982
|
/**
|
|
570
983
|
* Runs the McpServer, using stdio for input and output.
|
|
571
984
|
*
|
|
572
|
-
* **Example** (
|
|
985
|
+
* **Example** (Configuring an MCP server over stdio)
|
|
573
986
|
*
|
|
574
|
-
* ```ts
|
|
575
|
-
* import { Effect, Layer,
|
|
576
|
-
* import {
|
|
577
|
-
* import { McpSchema, McpServer } from "effect/unstable/ai"
|
|
987
|
+
* ```ts import.meta.vitest
|
|
988
|
+
* import { Effect, Layer, Schema } from "effect"
|
|
989
|
+
* import { McpProtocol, McpSchema, McpServer } from "effect/unstable/ai"
|
|
578
990
|
*
|
|
579
991
|
* const idParam = McpSchema.param("id", Schema.Number)
|
|
580
992
|
*
|
|
581
|
-
* // Define a resource template for a README file
|
|
582
993
|
* const ReadmeTemplate = McpServer.resource`file://readme/${idParam}`({
|
|
583
994
|
* name: "README Template",
|
|
584
|
-
* // You can add auto-completion for the ID parameter
|
|
585
995
|
* completion: {
|
|
586
|
-
* id: (
|
|
996
|
+
* id: () => Effect.succeed([1, 2, 3])
|
|
587
997
|
* },
|
|
588
|
-
* content:
|
|
589
|
-
* return `# MCP Server Demo - ID: ${id}`
|
|
590
|
-
* })
|
|
998
|
+
* content: (_uri, id) => Effect.succeed(`# MCP Server Demo - ID: ${id}`)
|
|
591
999
|
* })
|
|
592
1000
|
*
|
|
593
|
-
* // Define a test prompt with parameters
|
|
594
1001
|
* const TestPrompt = McpServer.prompt({
|
|
595
1002
|
* name: "Test Prompt",
|
|
596
|
-
* description: "
|
|
1003
|
+
* description: "Looks up flight booking details",
|
|
597
1004
|
* parameters: {
|
|
598
1005
|
* flightNumber: Schema.String
|
|
599
1006
|
* },
|
|
600
1007
|
* completion: {
|
|
601
|
-
* flightNumber: () => Effect.succeed(["FL123", "FL456"
|
|
1008
|
+
* flightNumber: () => Effect.succeed(["FL123", "FL456"])
|
|
602
1009
|
* },
|
|
603
1010
|
* content: ({ flightNumber }) =>
|
|
604
1011
|
* Effect.succeed(`Get the booking details for flight number: ${flightNumber}`)
|
|
605
1012
|
* })
|
|
606
1013
|
*
|
|
607
|
-
*
|
|
608
|
-
* const ServerLayer = Layer.mergeAll(
|
|
609
|
-
* ReadmeTemplate,
|
|
610
|
-
* TestPrompt
|
|
611
|
-
* ).pipe(
|
|
612
|
-
* // Provide the MCP server implementation
|
|
1014
|
+
* const ServerLayer = Layer.mergeAll(ReadmeTemplate, TestPrompt).pipe(
|
|
613
1015
|
* Layer.provide(McpServer.layerStdio({
|
|
614
1016
|
* name: "Demo Server",
|
|
615
1017
|
* version: "1.0.0",
|
|
616
|
-
*
|
|
617
|
-
*
|
|
618
|
-
* Layer.provide(Layer.succeed(Logger.LogToStderr)(true))
|
|
1018
|
+
* protocols: [McpProtocol.v2025_06_18]
|
|
1019
|
+
* }))
|
|
619
1020
|
* )
|
|
620
1021
|
*
|
|
621
|
-
* Layer.
|
|
1022
|
+
* Layer.isLayer(ServerLayer) // => true
|
|
622
1023
|
* ```
|
|
623
1024
|
*
|
|
624
1025
|
* @category layers
|
|
@@ -627,16 +1028,18 @@ export const layer = (options: {
|
|
|
627
1028
|
export const layerStdio = (options: {
|
|
628
1029
|
readonly name: string
|
|
629
1030
|
readonly version: string
|
|
1031
|
+
readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
|
|
630
1032
|
readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
|
|
631
|
-
}): Layer.Layer<McpServer | McpServerClient,
|
|
1033
|
+
}): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, Stdio> =>
|
|
632
1034
|
layer(options).pipe(
|
|
633
1035
|
Layer.provide(RpcServer.layerProtocolStdio),
|
|
634
|
-
Layer.provide(
|
|
1036
|
+
Layer.provide(
|
|
1037
|
+
Layer.succeed(RpcSerialization.RpcSerialization)(makeStdioSerialization(options.protocols))
|
|
1038
|
+
)
|
|
635
1039
|
)
|
|
636
1040
|
|
|
637
1041
|
/**
|
|
638
|
-
* Registers
|
|
639
|
-
* `HttpRouter`.
|
|
1042
|
+
* Registers a Streamable HTTP MCP endpoint at `options.path`.
|
|
640
1043
|
*
|
|
641
1044
|
* **When to use**
|
|
642
1045
|
*
|
|
@@ -644,8 +1047,9 @@ export const layerStdio = (options: {
|
|
|
644
1047
|
*
|
|
645
1048
|
* **Details**
|
|
646
1049
|
*
|
|
647
|
-
*
|
|
648
|
-
*
|
|
1050
|
+
* POST serves JSON-RPC and accepted notification-only requests return `202`.
|
|
1051
|
+
* Unsupported protocol versions return `400`; methods without MCP handlers
|
|
1052
|
+
* return `405`. Browser Origins are rejected unless listed in `allowedOrigins`.
|
|
649
1053
|
*
|
|
650
1054
|
* @see {@link layerStdio} for exposing the server over stdio
|
|
651
1055
|
* @see {@link layer} for the base MCP server layer without a transport protocol
|
|
@@ -657,17 +1061,201 @@ export const layerHttp = (options: {
|
|
|
657
1061
|
readonly name: string
|
|
658
1062
|
readonly version: string
|
|
659
1063
|
readonly path: HttpRouter.PathInput
|
|
1064
|
+
readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
|
|
1065
|
+
readonly allowedOrigins?: ReadonlyArray<string> | undefined
|
|
660
1066
|
readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
|
|
661
|
-
}): Layer.Layer<McpServer | McpServerClient,
|
|
662
|
-
|
|
663
|
-
|
|
1067
|
+
}): Layer.Layer<McpServer | McpServerClient, Cause.IllegalArgumentError, HttpRouter.HttpRouter> => {
|
|
1068
|
+
const protocolState = layerMcpProtocolState(options.protocols)
|
|
1069
|
+
const methodNotAllowedResponse = HttpServerResponse.empty({
|
|
1070
|
+
status: 405,
|
|
1071
|
+
headers: { allow: "POST" }
|
|
1072
|
+
})
|
|
1073
|
+
const methodNotAllowed = (request: HttpServerRequest.HttpServerRequest) =>
|
|
1074
|
+
Effect.succeed(
|
|
1075
|
+
request.headers.origin !== undefined &&
|
|
1076
|
+
!options.allowedOrigins?.includes(request.headers.origin)
|
|
1077
|
+
? HttpServerResponse.empty({ status: 403 })
|
|
1078
|
+
: methodNotAllowedResponse
|
|
1079
|
+
)
|
|
1080
|
+
const routes = Layer.mergeAll(
|
|
1081
|
+
HttpRouter.add("GET", options.path, methodNotAllowed),
|
|
1082
|
+
HttpRouter.add("PUT", options.path, methodNotAllowed),
|
|
1083
|
+
HttpRouter.add("PATCH", options.path, methodNotAllowed),
|
|
1084
|
+
HttpRouter.add("DELETE", options.path, methodNotAllowed),
|
|
1085
|
+
HttpRouter.add("OPTIONS", options.path, methodNotAllowed)
|
|
1086
|
+
)
|
|
1087
|
+
return Layer.merge(layerWithProtocolState(options), routes).pipe(
|
|
1088
|
+
Layer.provide(layerMcpProtocolHttp(options)),
|
|
1089
|
+
Layer.provide(protocolState),
|
|
664
1090
|
Layer.provide(RpcSerialization.layerJsonRpc())
|
|
665
1091
|
)
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
const layerMcpProtocolHttp = (options: {
|
|
1095
|
+
readonly path: HttpRouter.PathInput
|
|
1096
|
+
readonly allowedOrigins?: ReadonlyArray<string> | undefined
|
|
1097
|
+
}): Layer.Layer<
|
|
1098
|
+
RpcServer.Protocol,
|
|
1099
|
+
never,
|
|
1100
|
+
McpProtocolState | RpcSerialization.RpcSerialization | HttpRouter.HttpRouter
|
|
1101
|
+
> =>
|
|
1102
|
+
Layer.effect(RpcServer.Protocol)(Effect.gen(function*() {
|
|
1103
|
+
const state = yield* McpProtocolState
|
|
1104
|
+
const { httpEffect, protocol } = yield* RpcServer.makeProtocolWithHttpEffect
|
|
1105
|
+
const router = yield* HttpRouter.HttpRouter
|
|
1106
|
+
yield* router.add("POST", options.path, (request) => {
|
|
1107
|
+
if (
|
|
1108
|
+
request.headers.origin !== undefined &&
|
|
1109
|
+
!options.allowedOrigins?.includes(request.headers.origin)
|
|
1110
|
+
) {
|
|
1111
|
+
return Effect.succeed(HttpServerResponse.empty({ status: 403 }))
|
|
1112
|
+
}
|
|
1113
|
+
const contentType = request.headers["content-type"]?.split(";", 1)[0]?.trim().toLowerCase()
|
|
1114
|
+
if (contentType !== "application/json") {
|
|
1115
|
+
return Effect.succeed(HttpServerResponse.empty({ status: 415 }))
|
|
1116
|
+
}
|
|
1117
|
+
const accepted = new Set<string>()
|
|
1118
|
+
for (const entry of request.headers.accept?.split(",") ?? []) {
|
|
1119
|
+
const [mediaType, ...parameters] = entry.split(";").map((part) => part.trim().toLowerCase())
|
|
1120
|
+
let quality = 1
|
|
1121
|
+
for (const parameter of parameters) {
|
|
1122
|
+
const [name, value] = parameter.split("=", 2).map((part) => part.trim())
|
|
1123
|
+
if (name === "q") {
|
|
1124
|
+
quality = value === undefined ? Number.NaN : Number(value)
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
if (mediaType !== undefined && quality > 0 && quality <= 1) {
|
|
1128
|
+
accepted.add(mediaType)
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
if (!accepted.has("application/json") || !accepted.has("text/event-stream")) {
|
|
1132
|
+
return Effect.succeed(HttpServerResponse.empty({ status: 406 }))
|
|
1133
|
+
}
|
|
1134
|
+
const protocolVersion = request.headers[MCP_PROTOCOL_VERSION_HEADER]
|
|
1135
|
+
if (
|
|
1136
|
+
protocolVersion !== undefined &&
|
|
1137
|
+
!state.protocolRegistry.protocols.some((protocol) => protocol.protocolVersion === protocolVersion)
|
|
1138
|
+
) {
|
|
1139
|
+
return Effect.succeed(HttpServerResponse.empty({ status: 400 }))
|
|
1140
|
+
}
|
|
1141
|
+
return request.text.pipe(
|
|
1142
|
+
Effect.matchEffect({
|
|
1143
|
+
onFailure: () =>
|
|
1144
|
+
Effect.succeed(
|
|
1145
|
+
HttpServerResponse.jsonUnsafe({
|
|
1146
|
+
jsonrpc: "2.0",
|
|
1147
|
+
id: null,
|
|
1148
|
+
error: new ParseError({
|
|
1149
|
+
message: "Parse error"
|
|
1150
|
+
})
|
|
1151
|
+
})
|
|
1152
|
+
),
|
|
1153
|
+
onSuccess: (body) => {
|
|
1154
|
+
return Effect.match(Schema.decodeUnknownEffect(Schema.UnknownFromJsonString)(body), {
|
|
1155
|
+
onFailure: () => ({
|
|
1156
|
+
_tag: "Error" as const,
|
|
1157
|
+
id: null,
|
|
1158
|
+
error: new ParseError({ message: "Parse error" })
|
|
1159
|
+
}),
|
|
1160
|
+
onSuccess: (input) => {
|
|
1161
|
+
if (Array.isArray(input)) {
|
|
1162
|
+
const sessionId = request.headers[MCP_SESSION_ID_HEADER]
|
|
1163
|
+
const session = sessionId === undefined ? undefined : state.sessions.bySessionId.get(sessionId)
|
|
1164
|
+
let selectedProtocol = session?.protocol ?? state.protocolRegistry.protocols[0]
|
|
1165
|
+
for (const entry of input) {
|
|
1166
|
+
if (
|
|
1167
|
+
Predicate.hasProperty(entry, "method") &&
|
|
1168
|
+
entry.method === "initialize" &&
|
|
1169
|
+
Predicate.hasProperty(entry, "params") &&
|
|
1170
|
+
Predicate.hasProperty(entry.params, "protocolVersion") &&
|
|
1171
|
+
typeof entry.params.protocolVersion === "string"
|
|
1172
|
+
) {
|
|
1173
|
+
selectedProtocol = state.protocolRegistry.select(entry.params.protocolVersion)
|
|
1174
|
+
break
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
if (!selectedProtocol.transport.acceptsJsonRpcBatches) {
|
|
1178
|
+
return { _tag: "HttpError" as const, status: 400 }
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
const hasId = Predicate.hasProperty(input, "id")
|
|
1182
|
+
const id = hasId && (typeof input.id === "string" || typeof input.id === "number")
|
|
1183
|
+
? input.id
|
|
1184
|
+
: null
|
|
1185
|
+
const isJsonRpc = Predicate.hasProperty(input, "jsonrpc") && input.jsonrpc === "2.0"
|
|
1186
|
+
const hasValidRequestId = hasId === false || typeof input.id === "string" ||
|
|
1187
|
+
typeof input.id === "number"
|
|
1188
|
+
const isRequest = isJsonRpc && hasValidRequestId &&
|
|
1189
|
+
Predicate.hasProperty(input, "method") && typeof input.method === "string"
|
|
1190
|
+
const hasValidResponseId = hasId &&
|
|
1191
|
+
(typeof input.id === "string" || typeof input.id === "number" || input.id === null)
|
|
1192
|
+
const hasResult = Predicate.hasProperty(input, "result")
|
|
1193
|
+
const hasError = Predicate.hasProperty(input, "error")
|
|
1194
|
+
const isResponse = isJsonRpc && hasValidResponseId && hasResult !== hasError
|
|
1195
|
+
const isInitialize = isRequest && input.method === "initialize"
|
|
1196
|
+
const sessionId = request.headers[MCP_SESSION_ID_HEADER]
|
|
1197
|
+
const session = sessionId === undefined ? undefined : state.sessions.bySessionId.get(sessionId)
|
|
1198
|
+
if (isInitialize && sessionId !== undefined) {
|
|
1199
|
+
return {
|
|
1200
|
+
_tag: "HttpError" as const,
|
|
1201
|
+
status: session === undefined ? 404 : 400
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
if (!isInitialize && isRequest && session === undefined) {
|
|
1205
|
+
return {
|
|
1206
|
+
_tag: "HttpError" as const,
|
|
1207
|
+
status: sessionId === undefined ? 400 : 404
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
if (
|
|
1211
|
+
session !== undefined &&
|
|
1212
|
+
session.protocol.transport.requiresVersionHeader &&
|
|
1213
|
+
protocolVersion !== session.protocol.protocolVersion
|
|
1214
|
+
) {
|
|
1215
|
+
return { _tag: "HttpError" as const, status: 400 }
|
|
1216
|
+
}
|
|
1217
|
+
return isRequest || isResponse
|
|
1218
|
+
? { _tag: "Success" as const }
|
|
1219
|
+
: {
|
|
1220
|
+
_tag: "Error" as const,
|
|
1221
|
+
id,
|
|
1222
|
+
error: new InvalidRequest({ message: "Invalid Request" })
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
}).pipe(
|
|
1226
|
+
Effect.flatMap((decoded) =>
|
|
1227
|
+
decoded._tag === "HttpError"
|
|
1228
|
+
? Effect.succeed(HttpServerResponse.empty({ status: decoded.status }))
|
|
1229
|
+
: decoded._tag === "Error"
|
|
1230
|
+
? Effect.succeed(
|
|
1231
|
+
HttpServerResponse.jsonUnsafe({
|
|
1232
|
+
jsonrpc: "2.0",
|
|
1233
|
+
id: decoded.id,
|
|
1234
|
+
error: decoded.error
|
|
1235
|
+
})
|
|
1236
|
+
)
|
|
1237
|
+
: httpEffect
|
|
1238
|
+
)
|
|
1239
|
+
)
|
|
1240
|
+
}
|
|
1241
|
+
})
|
|
1242
|
+
)
|
|
1243
|
+
})
|
|
1244
|
+
return protocol
|
|
1245
|
+
}))
|
|
1246
|
+
|
|
1247
|
+
const INTERNAL_TOOL_ERROR_MESSAGE = "Tool execution failed due to an internal server error."
|
|
1248
|
+
|
|
1249
|
+
const toolErrorResult = (message: string): CallToolResult =>
|
|
1250
|
+
new CallToolResult({
|
|
1251
|
+
isError: true,
|
|
1252
|
+
content: [{ type: "text", text: message }]
|
|
1253
|
+
})
|
|
666
1254
|
|
|
667
1255
|
/**
|
|
668
1256
|
* Registers a `Toolkit` with the `McpServer`.
|
|
669
1257
|
*
|
|
670
|
-
* @category
|
|
1258
|
+
* @category handlers
|
|
671
1259
|
* @since 4.0.0
|
|
672
1260
|
*/
|
|
673
1261
|
export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
|
|
@@ -689,10 +1277,13 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
|
|
|
689
1277
|
for (const tool of Object.values(built.tools)) {
|
|
690
1278
|
const annotations = tool.annotations
|
|
691
1279
|
const toolMeta = Context.getOrUndefined(annotations, Tool.Meta)
|
|
1280
|
+
const isDeclaredFailure = Schema.is(tool.failureSchema)
|
|
1281
|
+
const outputSchema = Tool.getJsonSchemaFromSchema(tool.successSchema)
|
|
692
1282
|
const mcpTool = new McpTool({
|
|
693
1283
|
name: tool.name,
|
|
694
1284
|
description: Tool.getDescription(tool),
|
|
695
1285
|
inputSchema: Tool.getJsonSchema(tool),
|
|
1286
|
+
...(outputSchema.type === "object" ? { outputSchema } : {}),
|
|
696
1287
|
annotations: {
|
|
697
1288
|
...(Context.getOption(tool.annotations, Tool.Title).pipe(
|
|
698
1289
|
Option.map((title) => ({ title })),
|
|
@@ -709,32 +1300,41 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
|
|
|
709
1300
|
tool: mcpTool,
|
|
710
1301
|
annotations,
|
|
711
1302
|
handle(payload) {
|
|
712
|
-
return built.handle(tool.name as
|
|
1303
|
+
return built.handle(tool.name as keyof Tools, payload).pipe(
|
|
713
1304
|
Stream.unwrap,
|
|
714
1305
|
Stream.run(Sink.last()),
|
|
715
1306
|
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
|
-
|
|
1307
|
+
Effect.provideContext(
|
|
1308
|
+
services as Context.Context<Tool.HandlerServices<Tools[keyof Tools]>>
|
|
1309
|
+
),
|
|
1310
|
+
Effect.map((result) =>
|
|
1311
|
+
new CallToolResult({
|
|
1312
|
+
isError: false,
|
|
1313
|
+
structuredContent: typeof result.encodedResult === "object" ? result.encodedResult : undefined,
|
|
1314
|
+
content: result.encodedResult === undefined ? [] : [{
|
|
1315
|
+
type: "text",
|
|
1316
|
+
text: JSON.stringify(result.encodedResult)
|
|
1317
|
+
}]
|
|
1318
|
+
})
|
|
1319
|
+
),
|
|
1320
|
+
Effect.tapCause(Effect.logError),
|
|
1321
|
+
Effect.catch((error) => {
|
|
1322
|
+
if (AiError.isAiError(error)) {
|
|
1323
|
+
const reason = (error as AiError.AiError).reason
|
|
1324
|
+
return reason._tag === "ToolParameterValidationError"
|
|
1325
|
+
? Effect.fail(new InvalidParams({ message: reason.message }))
|
|
1326
|
+
: Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE))
|
|
1327
|
+
}
|
|
1328
|
+
if (isDeclaredFailure(error)) {
|
|
1329
|
+
const message = error instanceof Error
|
|
1330
|
+
? error.message
|
|
1331
|
+
: INTERNAL_TOOL_ERROR_MESSAGE
|
|
1332
|
+
return Effect.succeed(toolErrorResult(message))
|
|
1333
|
+
}
|
|
1334
|
+
return Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE))
|
|
735
1335
|
}),
|
|
736
|
-
Effect.
|
|
737
|
-
)
|
|
1336
|
+
Effect.catchDefect(() => Effect.succeed(toolErrorResult(INTERNAL_TOOL_ERROR_MESSAGE)))
|
|
1337
|
+
)
|
|
738
1338
|
}
|
|
739
1339
|
})
|
|
740
1340
|
}
|
|
@@ -743,7 +1343,7 @@ export const registerToolkit: <Tools extends Record<string, Tool.Any>>(
|
|
|
743
1343
|
/**
|
|
744
1344
|
* Registers an `AiToolkit` with the `McpServer`.
|
|
745
1345
|
*
|
|
746
|
-
* @category
|
|
1346
|
+
* @category layers
|
|
747
1347
|
* @since 4.0.0
|
|
748
1348
|
*/
|
|
749
1349
|
export const toolkit = <Tools extends Record<string, Tool.Any>>(
|
|
@@ -767,7 +1367,11 @@ export const toolkit = <Tools extends Record<string, Tool.Any>>(
|
|
|
767
1367
|
export type ValidateCompletions<Completions, Keys extends string> =
|
|
768
1368
|
& Completions
|
|
769
1369
|
& {
|
|
770
|
-
readonly [K in keyof Completions]: K extends Keys ? (
|
|
1370
|
+
readonly [K in keyof Completions]: K extends Keys ? (
|
|
1371
|
+
input: string,
|
|
1372
|
+
context: CompletionContext
|
|
1373
|
+
) => any
|
|
1374
|
+
: never
|
|
771
1375
|
}
|
|
772
1376
|
|
|
773
1377
|
/**
|
|
@@ -786,7 +1390,10 @@ export type ResourceCompletions<Schemas extends ReadonlyArray<Schema.Constraint>
|
|
|
786
1390
|
readonly [
|
|
787
1391
|
K in Extract<keyof Schemas, `${number}`> as Schemas[K] extends Param<infer Id, infer _S> ? Id
|
|
788
1392
|
: `param${K}`
|
|
789
|
-
]: (
|
|
1393
|
+
]: (
|
|
1394
|
+
input: string,
|
|
1395
|
+
context: CompletionContext
|
|
1396
|
+
) => Effect.Effect<Array<Schemas[K]["Type"]>, any, any>
|
|
790
1397
|
}
|
|
791
1398
|
|
|
792
1399
|
/**
|
|
@@ -800,7 +1407,7 @@ export type ResourceCompletions<Schemas extends ReadonlyArray<Schema.Constraint>
|
|
|
800
1407
|
*
|
|
801
1408
|
* @see {@link resource} for the layer-based resource registration wrapper
|
|
802
1409
|
*
|
|
803
|
-
* @category
|
|
1410
|
+
* @category handlers
|
|
804
1411
|
* @since 4.0.0
|
|
805
1412
|
*/
|
|
806
1413
|
export const registerResource: {
|
|
@@ -815,7 +1422,7 @@ export const registerResource: {
|
|
|
815
1422
|
*
|
|
816
1423
|
* @see {@link resource} for the layer-based resource registration wrapper
|
|
817
1424
|
*
|
|
818
|
-
* @category
|
|
1425
|
+
* @category handlers
|
|
819
1426
|
* @since 4.0.0
|
|
820
1427
|
*/
|
|
821
1428
|
<E, R>(
|
|
@@ -845,7 +1452,7 @@ export const registerResource: {
|
|
|
845
1452
|
*
|
|
846
1453
|
* @see {@link resource} for the layer-based resource registration wrapper
|
|
847
1454
|
*
|
|
848
|
-
* @category
|
|
1455
|
+
* @category handlers
|
|
849
1456
|
* @since 4.0.0
|
|
850
1457
|
*/
|
|
851
1458
|
<const Schemas extends ReadonlyArray<Schema.Constraint>>(segments: TemplateStringsArray, ...schemas: Schemas): <
|
|
@@ -923,7 +1530,15 @@ export const registerResource: {
|
|
|
923
1530
|
readonly mimeType?: string | undefined
|
|
924
1531
|
readonly audience?: ReadonlyArray<"user" | "assistant"> | undefined
|
|
925
1532
|
readonly priority?: number | undefined
|
|
926
|
-
readonly completion?:
|
|
1533
|
+
readonly completion?:
|
|
1534
|
+
| Record<
|
|
1535
|
+
string,
|
|
1536
|
+
(
|
|
1537
|
+
input: string,
|
|
1538
|
+
context: CompletionContext
|
|
1539
|
+
) => Effect.Effect<any>
|
|
1540
|
+
>
|
|
1541
|
+
| undefined
|
|
927
1542
|
readonly content: (uri: string, ...params: Array<any>) => Effect.Effect<
|
|
928
1543
|
typeof ReadResourceResult.Type | string | Uint8Array,
|
|
929
1544
|
E,
|
|
@@ -939,11 +1554,20 @@ export const registerResource: {
|
|
|
939
1554
|
uriTemplate: uriPath,
|
|
940
1555
|
annotations: options!
|
|
941
1556
|
})
|
|
942
|
-
const completions: Record<
|
|
1557
|
+
const completions: Record<
|
|
1558
|
+
string,
|
|
1559
|
+
(
|
|
1560
|
+
input: string,
|
|
1561
|
+
context: CompletionContext
|
|
1562
|
+
) => Effect.Effect<CompleteResult, InternalError>
|
|
1563
|
+
> = Object.create(null)
|
|
943
1564
|
for (const [param, handle] of Object.entries(options.completion ?? {})) {
|
|
944
1565
|
const encodeArray = Schema.encodeUnknownEffect(Schema.Array(params[param]))
|
|
945
|
-
const handler = (
|
|
946
|
-
|
|
1566
|
+
const handler = (
|
|
1567
|
+
input: string,
|
|
1568
|
+
context: CompletionContext
|
|
1569
|
+
) =>
|
|
1570
|
+
handle(input, context).pipe(
|
|
947
1571
|
Effect.flatMap(encodeArray),
|
|
948
1572
|
Effect.map((values) => ({
|
|
949
1573
|
completion: {
|
|
@@ -992,7 +1616,7 @@ export const registerResource: {
|
|
|
992
1616
|
*
|
|
993
1617
|
* @see {@link registerResource} for the Effect-level resource registration API
|
|
994
1618
|
*
|
|
995
|
-
* @category
|
|
1619
|
+
* @category layers
|
|
996
1620
|
* @since 4.0.0
|
|
997
1621
|
*/
|
|
998
1622
|
export const resource: {
|
|
@@ -1005,7 +1629,7 @@ export const resource: {
|
|
|
1005
1629
|
*
|
|
1006
1630
|
* @see {@link registerResource} for the Effect-level resource registration API
|
|
1007
1631
|
*
|
|
1008
|
-
* @category
|
|
1632
|
+
* @category layers
|
|
1009
1633
|
* @since 4.0.0
|
|
1010
1634
|
*/
|
|
1011
1635
|
<E, R>(
|
|
@@ -1032,7 +1656,7 @@ export const resource: {
|
|
|
1032
1656
|
*
|
|
1033
1657
|
* @see {@link registerResource} for the Effect-level resource registration API
|
|
1034
1658
|
*
|
|
1035
|
-
* @category
|
|
1659
|
+
* @category layers
|
|
1036
1660
|
* @since 4.0.0
|
|
1037
1661
|
*/
|
|
1038
1662
|
<const Schemas extends ReadonlyArray<Schema.Constraint>>(segments: TemplateStringsArray, ...schemas: Schemas): <
|
|
@@ -1091,7 +1715,7 @@ export const resource: {
|
|
|
1091
1715
|
*
|
|
1092
1716
|
* @see {@link prompt} for the layer-based prompt registration wrapper
|
|
1093
1717
|
*
|
|
1094
|
-
* @category
|
|
1718
|
+
* @category handlers
|
|
1095
1719
|
* @since 4.0.0
|
|
1096
1720
|
*/
|
|
1097
1721
|
export const registerPrompt = <
|
|
@@ -1099,7 +1723,10 @@ export const registerPrompt = <
|
|
|
1099
1723
|
R,
|
|
1100
1724
|
Params extends Schema.Struct.Fields = {},
|
|
1101
1725
|
const Completions extends {
|
|
1102
|
-
readonly [K in keyof Params]?: (
|
|
1726
|
+
readonly [K in keyof Params]?: (
|
|
1727
|
+
input: string,
|
|
1728
|
+
context: CompletionContext
|
|
1729
|
+
) => Effect.Effect<Array<Params[K]>, any, any>
|
|
1103
1730
|
} = {}
|
|
1104
1731
|
>(
|
|
1105
1732
|
options: {
|
|
@@ -1128,18 +1755,30 @@ export const registerPrompt = <
|
|
|
1128
1755
|
const decode = options.parameters
|
|
1129
1756
|
? Schema.decodeEffect(Schema.Struct(props))
|
|
1130
1757
|
: () => Effect.succeed({} as Params)
|
|
1131
|
-
const completion: Record<
|
|
1758
|
+
const completion: Record<
|
|
1759
|
+
string,
|
|
1760
|
+
(
|
|
1761
|
+
input: string,
|
|
1762
|
+
context: CompletionContext
|
|
1763
|
+
) => Effect.Effect<any>
|
|
1764
|
+
> = options.completion ?? {}
|
|
1132
1765
|
return Effect.gen(function*() {
|
|
1133
1766
|
const registry = yield* McpServer
|
|
1134
1767
|
const services = yield* Effect.context<Exclude<R | Schema.Struct.DecodingServices<Params>, McpServerClient>>()
|
|
1135
1768
|
const completions: Record<
|
|
1136
1769
|
string,
|
|
1137
|
-
(
|
|
1138
|
-
|
|
1770
|
+
(
|
|
1771
|
+
input: string,
|
|
1772
|
+
context: CompletionContext
|
|
1773
|
+
) => Effect.Effect<CompleteResult, InternalError, McpServerClient>
|
|
1774
|
+
> = Object.create(null)
|
|
1139
1775
|
for (const [param, handle] of Object.entries(completion)) {
|
|
1140
1776
|
const encodeArray = Schema.encodeEffect(Schema.Array(props[param]))
|
|
1141
|
-
const handler = (
|
|
1142
|
-
|
|
1777
|
+
const handler = (
|
|
1778
|
+
input: string,
|
|
1779
|
+
context: CompletionContext
|
|
1780
|
+
) =>
|
|
1781
|
+
handle(input, context).pipe(
|
|
1143
1782
|
Effect.flatMap(encodeArray),
|
|
1144
1783
|
Effect.map((values) => ({
|
|
1145
1784
|
completion: {
|
|
@@ -1163,20 +1802,23 @@ export const registerPrompt = <
|
|
|
1163
1802
|
handle: (params) =>
|
|
1164
1803
|
decode(params).pipe(
|
|
1165
1804
|
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
|
-
|
|
1805
|
+
Effect.flatMap((params) =>
|
|
1806
|
+
options.content(params as any).pipe(
|
|
1807
|
+
Effect.map((messages) => {
|
|
1808
|
+
messages = typeof messages === "string" ?
|
|
1809
|
+
[{
|
|
1810
|
+
role: "user",
|
|
1811
|
+
content: TextContent.make({ text: messages })
|
|
1812
|
+
}] :
|
|
1813
|
+
messages
|
|
1814
|
+
return new GetPromptResult({ messages, description: prompt.description })
|
|
1815
|
+
}),
|
|
1816
|
+
Effect.catchCause((cause) => {
|
|
1817
|
+
const prettyError = Cause.prettyErrors(cause)[0]
|
|
1818
|
+
return Effect.fail(new InternalError({ message: prettyError.message }))
|
|
1819
|
+
})
|
|
1820
|
+
)
|
|
1821
|
+
),
|
|
1180
1822
|
Effect.provideContext(services as Context.Context<unknown>)
|
|
1181
1823
|
)
|
|
1182
1824
|
})
|
|
@@ -1198,7 +1840,7 @@ export const registerPrompt = <
|
|
|
1198
1840
|
*
|
|
1199
1841
|
* @see {@link registerPrompt} for the Effect-level prompt registration API
|
|
1200
1842
|
*
|
|
1201
|
-
* @category
|
|
1843
|
+
* @category layers
|
|
1202
1844
|
* @since 4.0.0
|
|
1203
1845
|
*/
|
|
1204
1846
|
export const prompt = <
|
|
@@ -1206,7 +1848,10 @@ export const prompt = <
|
|
|
1206
1848
|
R,
|
|
1207
1849
|
Params extends Schema.Struct.Fields = {},
|
|
1208
1850
|
const Completions extends {
|
|
1209
|
-
readonly [K in keyof Params]?: (
|
|
1851
|
+
readonly [K in keyof Params]?: (
|
|
1852
|
+
input: string,
|
|
1853
|
+
context: CompletionContext
|
|
1854
|
+
) => Effect.Effect<Array<Params[K]["Type"]>, any, any>
|
|
1210
1855
|
} = {}
|
|
1211
1856
|
>(
|
|
1212
1857
|
options: {
|
|
@@ -1233,7 +1878,7 @@ export const prompt = <
|
|
|
1233
1878
|
* Accepted content is decoded with the supplied schema, declined requests fail
|
|
1234
1879
|
* with `ElicitationDeclined`, and canceled requests interrupt the effect.
|
|
1235
1880
|
*
|
|
1236
|
-
* @category
|
|
1881
|
+
* @category accessors
|
|
1237
1882
|
* @since 4.0.0
|
|
1238
1883
|
*/
|
|
1239
1884
|
export const elicit: <S extends Schema.ConstraintEncoder<Record<string, unknown>, unknown>>(options: {
|
|
@@ -1270,7 +1915,7 @@ export const elicit: <S extends Schema.ConstraintEncoder<Record<string, unknown>
|
|
|
1270
1915
|
/**
|
|
1271
1916
|
* Accesses the current client's capabilities.
|
|
1272
1917
|
*
|
|
1273
|
-
* @category
|
|
1918
|
+
* @category accessors
|
|
1274
1919
|
* @since 4.0.0
|
|
1275
1920
|
*/
|
|
1276
1921
|
export const clientCapabilities: Effect.Effect<
|
|
@@ -1300,7 +1945,7 @@ const makeUriMatcher = <A>() => {
|
|
|
1300
1945
|
const compileUriTemplate = (segments: TemplateStringsArray, ...schemas: ReadonlyArray<Schema.Constraint>) => {
|
|
1301
1946
|
let routerPath = segments[0].replace(":", "::")
|
|
1302
1947
|
let uriPath = segments[0]
|
|
1303
|
-
const params: Record<string, Schema.Top> =
|
|
1948
|
+
const params: Record<string, Schema.Top> = Object.create(null)
|
|
1304
1949
|
let pathSchema = Schema.Tuple([]) as Schema.Top
|
|
1305
1950
|
if (schemas.length > 0) {
|
|
1306
1951
|
const arr: Array<Schema.Top> = []
|
|
@@ -1330,141 +1975,190 @@ const layerHandlers = (serverInfo: {
|
|
|
1330
1975
|
readonly version: string
|
|
1331
1976
|
readonly extensions?: Record<`${string}/${string}`, unknown> | undefined
|
|
1332
1977
|
}, options: {
|
|
1333
|
-
readonly
|
|
1978
|
+
readonly sessions: Sessions
|
|
1979
|
+
readonly protocolRegistry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>
|
|
1334
1980
|
}) =>
|
|
1335
|
-
|
|
1981
|
+
Layer.effectContext(
|
|
1336
1982
|
Effect.gen(function*() {
|
|
1337
1983
|
const server = yield* McpServer
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
protocolVersion: requestedVersion
|
|
1984
|
+
const currentLogLevel = yield* CurrentLogLevel
|
|
1985
|
+
const contextMap = new Map<string, unknown>()
|
|
1986
|
+
|
|
1987
|
+
for (const protocol of options.protocolRegistry.protocols) {
|
|
1988
|
+
const selectedProtocol = protocol
|
|
1989
|
+
const wireHandlers = ClientRpcs.of({
|
|
1990
|
+
// Requests
|
|
1991
|
+
ping: () => Effect.succeed({}),
|
|
1992
|
+
initialize(params, { client }) {
|
|
1993
|
+
const capabilities: Types.DeepMutable<typeof ServerCapabilities.Type> = {
|
|
1994
|
+
completions: {},
|
|
1995
|
+
logging: {}
|
|
1351
1996
|
}
|
|
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
|
|
1997
|
+
if (server.tools.length > 0) {
|
|
1998
|
+
capabilities.tools = { listChanged: true }
|
|
1363
1999
|
}
|
|
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)
|
|
2000
|
+
if (server.resources.length > 0 || server.resourceTemplates.length > 0) {
|
|
2001
|
+
capabilities.resources = {
|
|
2002
|
+
listChanged: true,
|
|
2003
|
+
subscribe: true
|
|
2004
|
+
}
|
|
1383
2005
|
}
|
|
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
|
|
2006
|
+
if (server.prompts.length > 0) {
|
|
2007
|
+
capabilities.prompts = { listChanged: true }
|
|
1416
2008
|
}
|
|
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")
|
|
2009
|
+
if (serverInfo.extensions) {
|
|
2010
|
+
capabilities.extensions = serverInfo.extensions as any
|
|
2011
|
+
}
|
|
2012
|
+
return Effect.withFiber((fiber) => {
|
|
2013
|
+
const httpRequest = Context.getOrUndefined(fiber.context, HttpServerRequest.HttpServerRequest)
|
|
2014
|
+
if (httpRequest !== undefined && capabilities.resources !== undefined) {
|
|
2015
|
+
capabilities.resources.subscribe = false
|
|
2016
|
+
}
|
|
2017
|
+
const session: Session = {
|
|
2018
|
+
initializePayload: params,
|
|
2019
|
+
protocol: selectedProtocol,
|
|
2020
|
+
resourceSubscriptions: capabilities.resources?.subscribe === true ? new Set() : undefined,
|
|
2021
|
+
logLevel: { _tag: "Effect", level: currentLogLevel }
|
|
2022
|
+
}
|
|
2023
|
+
if (httpRequest) {
|
|
2024
|
+
const sessionId = crypto.randomUUID()
|
|
2025
|
+
options.sessions.bySessionId.set(sessionId, session)
|
|
2026
|
+
appendPreResponseHandlerUnsafe(httpRequest, (_req, res) =>
|
|
2027
|
+
Effect.succeed(HttpServerResponse.setHeaders(res, {
|
|
2028
|
+
[MCP_SESSION_ID_HEADER]: sessionId,
|
|
2029
|
+
[MCP_PROTOCOL_VERSION_HEADER]: selectedProtocol.protocolVersion
|
|
2030
|
+
})))
|
|
2031
|
+
} else {
|
|
2032
|
+
options.sessions.byClientId.set(client.id, session)
|
|
2033
|
+
}
|
|
2034
|
+
return Effect.succeed({
|
|
2035
|
+
capabilities,
|
|
2036
|
+
serverInfo,
|
|
2037
|
+
protocolVersion: selectedProtocol.protocolVersion
|
|
2038
|
+
})
|
|
1456
2039
|
})
|
|
1457
|
-
}
|
|
2040
|
+
},
|
|
2041
|
+
"completion/complete": (r) =>
|
|
2042
|
+
server.completion(r),
|
|
2043
|
+
"logging/setLevel": ({ level }, { client, headers }) =>
|
|
2044
|
+
Effect.sync(() => {
|
|
2045
|
+
const session = getClientSession(options.sessions, client.id, headers)
|
|
2046
|
+
if (session) {
|
|
2047
|
+
session.logLevel = { _tag: "Mcp", level }
|
|
2048
|
+
}
|
|
2049
|
+
return {}
|
|
2050
|
+
}),
|
|
2051
|
+
"prompts/get": (r) =>
|
|
2052
|
+
server.getPromptResult(r),
|
|
2053
|
+
"prompts/list": (_, { client, headers }) =>
|
|
2054
|
+
Effect.sync(() => {
|
|
2055
|
+
const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
|
|
2056
|
+
return new ListPromptsResult({ prompts: filterByClient(initialized, server.prompts, "prompt") })
|
|
2057
|
+
}),
|
|
2058
|
+
"resources/list": (_, { client, headers }) =>
|
|
2059
|
+
Effect.sync(() => {
|
|
2060
|
+
const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
|
|
2061
|
+
return new ListResourcesResult({ resources: filterByClient(initialized, server.resources, "resource") })
|
|
2062
|
+
}),
|
|
2063
|
+
"resources/read": ({ uri }) => server.findResource(uri),
|
|
2064
|
+
"resources/subscribe": ({ uri }, { client, headers }) =>
|
|
2065
|
+
Effect.gen(function*() {
|
|
2066
|
+
const subscriptions = getClientSession(
|
|
2067
|
+
options.sessions,
|
|
2068
|
+
client.id,
|
|
2069
|
+
headers
|
|
2070
|
+
)?.resourceSubscriptions
|
|
2071
|
+
if (subscriptions === undefined) {
|
|
2072
|
+
return yield* new MethodNotFound({
|
|
2073
|
+
message: "Resource subscriptions are not supported"
|
|
2074
|
+
})
|
|
2075
|
+
}
|
|
2076
|
+
subscriptions.add(uri)
|
|
2077
|
+
return {}
|
|
2078
|
+
}),
|
|
2079
|
+
"resources/unsubscribe": ({ uri }, { client, headers }) =>
|
|
2080
|
+
Effect.gen(function*() {
|
|
2081
|
+
const subscriptions = getClientSession(
|
|
2082
|
+
options.sessions,
|
|
2083
|
+
client.id,
|
|
2084
|
+
headers
|
|
2085
|
+
)?.resourceSubscriptions
|
|
2086
|
+
if (subscriptions === undefined) {
|
|
2087
|
+
return yield* new MethodNotFound({
|
|
2088
|
+
message: "Resource subscriptions are not supported"
|
|
2089
|
+
})
|
|
2090
|
+
}
|
|
2091
|
+
subscriptions.delete(uri)
|
|
2092
|
+
return {}
|
|
2093
|
+
}),
|
|
2094
|
+
"resources/templates/list": (_, { client, headers }) =>
|
|
2095
|
+
Effect.sync(() => {
|
|
2096
|
+
const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
|
|
2097
|
+
return new ListResourceTemplatesResult({
|
|
2098
|
+
resourceTemplates: filterByClient(initialized, server.resourceTemplates, "template")
|
|
2099
|
+
})
|
|
2100
|
+
}),
|
|
2101
|
+
"tools/call": (r) => server.callTool(r),
|
|
2102
|
+
"tools/list": (_, { client, headers }) =>
|
|
2103
|
+
Effect.sync(() => {
|
|
2104
|
+
const initialized = getClientSession(options.sessions, client.id, headers)?.initializePayload
|
|
2105
|
+
return new ListToolsResult({
|
|
2106
|
+
tools: filterByClient(initialized, server.tools, "tool")
|
|
2107
|
+
})
|
|
2108
|
+
}),
|
|
1458
2109
|
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
2110
|
+
// Notifications
|
|
2111
|
+
"notifications/cancelled": (_) => Effect.void,
|
|
2112
|
+
"notifications/initialized": (_, { client, headers }) =>
|
|
2113
|
+
Effect.sync(() => {
|
|
2114
|
+
server.initializedClients.add(client.id)
|
|
2115
|
+
const session = getClientSession(options.sessions, client.id, headers)
|
|
2116
|
+
if (session) {
|
|
2117
|
+
options.sessions.byClientId.set(client.id, session)
|
|
2118
|
+
}
|
|
2119
|
+
}),
|
|
2120
|
+
"notifications/progress": (_) => Effect.void,
|
|
2121
|
+
"notifications/roots/list_changed": (_) => Effect.void
|
|
2122
|
+
})
|
|
2123
|
+
yield* addProtocolHandlers(
|
|
2124
|
+
options.protocolRegistry,
|
|
2125
|
+
selectedProtocol,
|
|
2126
|
+
selectedProtocol.clientRpcs,
|
|
2127
|
+
wireHandlers,
|
|
2128
|
+
contextMap
|
|
2129
|
+
)
|
|
2130
|
+
}
|
|
2131
|
+
return Context.makeUnsafe(contextMap)
|
|
1465
2132
|
})
|
|
1466
2133
|
)
|
|
1467
2134
|
|
|
2135
|
+
const addProtocolHandlers = Effect.fnUntraced(function*<
|
|
2136
|
+
ClientRpcs extends Rpc.Any
|
|
2137
|
+
>(
|
|
2138
|
+
registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>,
|
|
2139
|
+
protocol: McpProtocol.ProtocolAdapter,
|
|
2140
|
+
clientRpcs: RpcGroup.RpcGroup<ClientRpcs>,
|
|
2141
|
+
handlers: RpcGroup.HandlersFrom<ClientRpcs>,
|
|
2142
|
+
contextMap: Map<string, unknown>
|
|
2143
|
+
) {
|
|
2144
|
+
const handlerContext = yield* clientRpcs.toHandlers(handlers)
|
|
2145
|
+
for (const rpcDefinition of clientRpcs.requests.values()) {
|
|
2146
|
+
const routed = registry.routeClientRequest(protocol, {
|
|
2147
|
+
_tag: "Request",
|
|
2148
|
+
id: 0,
|
|
2149
|
+
tag: rpcDefinition._tag,
|
|
2150
|
+
payload: undefined,
|
|
2151
|
+
headers: []
|
|
2152
|
+
})
|
|
2153
|
+
const namespacedRpc = registry.clientRpcs.requests.get(routed.tag)
|
|
2154
|
+
const handler = handlerContext.mapUnsafe.get(rpcDefinition.key)
|
|
2155
|
+
if (namespacedRpc === undefined || handler === undefined) {
|
|
2156
|
+
return yield* Effect.die(`MCP handler registration invariant failed for ${routed.tag}`)
|
|
2157
|
+
}
|
|
2158
|
+
contextMap.set(namespacedRpc.key, handler)
|
|
2159
|
+
}
|
|
2160
|
+
})
|
|
2161
|
+
|
|
1468
2162
|
const resolveResourceContent = (
|
|
1469
2163
|
uri: string,
|
|
1470
2164
|
content: typeof ReadResourceResult.Type | string | Uint8Array
|
|
@@ -1511,14 +2205,74 @@ const filterByClient = <
|
|
|
1511
2205
|
return out
|
|
1512
2206
|
}
|
|
1513
2207
|
|
|
1514
|
-
const
|
|
1515
|
-
sessions:
|
|
2208
|
+
const getClientSession = (
|
|
2209
|
+
sessions: Sessions,
|
|
1516
2210
|
clientId: number,
|
|
1517
2211
|
headers: Headers.Headers
|
|
1518
2212
|
) => {
|
|
1519
|
-
const sessionId = headers[
|
|
2213
|
+
const sessionId = headers[MCP_SESSION_ID_HEADER]
|
|
1520
2214
|
if (sessionId === undefined) {
|
|
1521
|
-
return sessions.get(
|
|
2215
|
+
return sessions.byClientId.get(clientId)
|
|
1522
2216
|
}
|
|
1523
|
-
return sessions.get(sessionId)
|
|
2217
|
+
return sessions.bySessionId.get(sessionId)
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
const mcpLogLevels: Record<LoggingLevel, {
|
|
2221
|
+
readonly effect: LogLevel.LogLevel
|
|
2222
|
+
readonly order: number
|
|
2223
|
+
}> = {
|
|
2224
|
+
debug: { effect: "Debug", order: 0 },
|
|
2225
|
+
info: { effect: "Info", order: 1 },
|
|
2226
|
+
notice: { effect: "Info", order: 2 },
|
|
2227
|
+
warning: { effect: "Warn", order: 3 },
|
|
2228
|
+
error: { effect: "Error", order: 4 },
|
|
2229
|
+
critical: { effect: "Fatal", order: 5 },
|
|
2230
|
+
alert: { effect: "Fatal", order: 6 },
|
|
2231
|
+
emergency: { effect: "Fatal", order: 7 }
|
|
1524
2232
|
}
|
|
2233
|
+
|
|
2234
|
+
const effectLogLevel = (logLevel: SessionLogLevel | undefined): LogLevel.LogLevel =>
|
|
2235
|
+
logLevel?._tag === "Mcp" ? mcpLogLevels[logLevel.level].effect : logLevel?.level ?? "Info"
|
|
2236
|
+
|
|
2237
|
+
const isMcpLogLevelEnabled = (
|
|
2238
|
+
level: LoggingLevel,
|
|
2239
|
+
minimum: SessionLogLevel | undefined
|
|
2240
|
+
): boolean =>
|
|
2241
|
+
minimum?._tag === "Mcp"
|
|
2242
|
+
? mcpLogLevels[level].order >= mcpLogLevels[minimum.level].order
|
|
2243
|
+
: LogLevel.isGreaterThanOrEqualTo(mcpLogLevels[level].effect, minimum?.level ?? "Info")
|
|
2244
|
+
|
|
2245
|
+
const getOfferedProtocolVersion = (payload: unknown): string =>
|
|
2246
|
+
typeof payload === "object" &&
|
|
2247
|
+
payload !== null &&
|
|
2248
|
+
"protocolVersion" in payload &&
|
|
2249
|
+
typeof payload.protocolVersion === "string"
|
|
2250
|
+
? payload.protocolVersion
|
|
2251
|
+
: ""
|
|
2252
|
+
|
|
2253
|
+
const protocolForInternalTag = (
|
|
2254
|
+
registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>,
|
|
2255
|
+
tag: string
|
|
2256
|
+
): McpProtocol.ProtocolAdapter => {
|
|
2257
|
+
for (const protocol of registry.protocols) {
|
|
2258
|
+
const routed = registry.routeClientRequest(protocol, {
|
|
2259
|
+
_tag: "Request",
|
|
2260
|
+
id: 0,
|
|
2261
|
+
tag: "",
|
|
2262
|
+
payload: undefined,
|
|
2263
|
+
headers: []
|
|
2264
|
+
})
|
|
2265
|
+
if (tag.startsWith(routed.tag)) {
|
|
2266
|
+
return protocol
|
|
2267
|
+
}
|
|
2268
|
+
}
|
|
2269
|
+
return registry.protocols[0]
|
|
2270
|
+
}
|
|
2271
|
+
|
|
2272
|
+
const getProtocolForClient = (
|
|
2273
|
+
clientProtocols: Map<number, McpProtocol.ProtocolAdapter>,
|
|
2274
|
+
clientId: number,
|
|
2275
|
+
registry: McpProtocolRegistry.ProtocolRegistry<McpProtocol.ProtocolAdapter>
|
|
2276
|
+
): McpProtocol.ProtocolAdapter =>
|
|
2277
|
+
clientProtocols.get(clientId) ??
|
|
2278
|
+
registry.protocols[0]
|