@vinkius-core/mcp-fusion 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -0
- package/README.md +8 -6
- package/dist/{framework/client → client}/FusionClient.d.ts +1 -1
- package/dist/client/FusionClient.d.ts.map +1 -0
- package/dist/{framework/client → client}/FusionClient.js +1 -1
- package/dist/client/FusionClient.js.map +1 -0
- package/dist/{framework/client → client}/InferRouter.d.ts +3 -2
- package/dist/client/InferRouter.d.ts.map +1 -0
- package/dist/{framework/client → client}/InferRouter.js +2 -1
- package/dist/client/InferRouter.js.map +1 -0
- package/dist/{framework/client → client}/createTypedRegistry.d.ts +1 -1
- package/dist/client/createTypedRegistry.d.ts.map +1 -0
- package/dist/{framework/client → client}/createTypedRegistry.js +2 -2
- package/dist/client/createTypedRegistry.js.map +1 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js.map +1 -0
- package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -0
- package/dist/core/builder/ActionGroupBuilder.js.map +1 -0
- package/dist/{framework → core}/builder/GroupedToolBuilder.d.ts +17 -9
- package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -0
- package/dist/{framework → core}/builder/GroupedToolBuilder.js +130 -111
- package/dist/core/builder/GroupedToolBuilder.js.map +1 -0
- package/dist/core/builder/ParamDescriptors.d.ts.map +1 -0
- package/dist/core/builder/ParamDescriptors.js +164 -0
- package/dist/core/builder/ParamDescriptors.js.map +1 -0
- package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -0
- package/dist/{framework → core}/builder/ToolDefinitionCompiler.js +15 -17
- package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -0
- package/dist/{framework → core}/builder/defineTool.d.ts +2 -2
- package/dist/core/builder/defineTool.d.ts.map +1 -0
- package/dist/{framework → core}/builder/defineTool.js +30 -59
- package/dist/core/builder/defineTool.js.map +1 -0
- package/dist/core/builder/index.d.ts.map +1 -0
- package/dist/core/builder/index.js.map +1 -0
- package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -0
- package/dist/{framework → core}/execution/ExecutionPipeline.js +23 -11
- package/dist/core/execution/ExecutionPipeline.js.map +1 -0
- package/dist/core/execution/MiddlewareCompiler.d.ts +30 -0
- package/dist/core/execution/MiddlewareCompiler.d.ts.map +1 -0
- package/dist/{framework → core}/execution/MiddlewareCompiler.js +39 -21
- package/dist/core/execution/MiddlewareCompiler.js.map +1 -0
- package/dist/core/execution/PipelineHooks.d.ts +39 -0
- package/dist/core/execution/PipelineHooks.d.ts.map +1 -0
- package/dist/core/execution/PipelineHooks.js +27 -0
- package/dist/core/execution/PipelineHooks.js.map +1 -0
- package/dist/core/execution/ProgressHelper.d.ts.map +1 -0
- package/dist/core/execution/ProgressHelper.js.map +1 -0
- package/dist/{framework → core}/execution/ValidationErrorFormatter.d.ts +6 -5
- package/dist/core/execution/ValidationErrorFormatter.d.ts.map +1 -0
- package/dist/{framework → core}/execution/ValidationErrorFormatter.js +16 -13
- package/dist/core/execution/ValidationErrorFormatter.js.map +1 -0
- package/dist/{framework → core}/execution/index.d.ts +2 -1
- package/dist/core/execution/index.d.ts.map +1 -0
- package/dist/{framework → core}/execution/index.js +2 -1
- package/dist/core/execution/index.js.map +1 -0
- package/dist/core/index.d.ts +27 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/middleware/ContextDerivation.d.ts.map +1 -0
- package/dist/core/middleware/ContextDerivation.js.map +1 -0
- package/dist/core/middleware/index.d.ts.map +1 -0
- package/dist/core/middleware/index.js.map +1 -0
- package/dist/core/registry/ToolFilterEngine.d.ts.map +1 -0
- package/dist/{framework → core}/registry/ToolFilterEngine.js +6 -30
- package/dist/core/registry/ToolFilterEngine.js.map +1 -0
- package/dist/{framework → core}/registry/ToolRegistry.d.ts +4 -4
- package/dist/core/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/{framework → core}/registry/ToolRegistry.js +9 -6
- package/dist/core/registry/ToolRegistry.js.map +1 -0
- package/dist/core/registry/index.d.ts +4 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/{framework → core}/registry/index.js +0 -1
- package/dist/core/registry/index.js.map +1 -0
- package/dist/{framework → core}/response.d.ts +20 -0
- package/dist/core/response.d.ts.map +1 -0
- package/dist/{framework → core}/response.js +51 -6
- package/dist/core/response.js.map +1 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/schema/AnnotationAggregator.d.ts.map +1 -0
- package/dist/core/schema/AnnotationAggregator.js.map +1 -0
- package/dist/core/schema/DescriptionGenerator.d.ts.map +1 -0
- package/dist/core/schema/DescriptionGenerator.js.map +1 -0
- package/dist/core/schema/SchemaGenerator.d.ts.map +1 -0
- package/dist/{framework → core}/schema/SchemaGenerator.js +0 -1
- package/dist/core/schema/SchemaGenerator.js.map +1 -0
- package/dist/core/schema/SchemaUtils.d.ts +26 -0
- package/dist/core/schema/SchemaUtils.d.ts.map +1 -0
- package/dist/{framework → core}/schema/SchemaUtils.js +13 -0
- package/dist/core/schema/SchemaUtils.js.map +1 -0
- package/dist/core/schema/ToonDescriptionGenerator.d.ts.map +1 -0
- package/dist/core/schema/ToonDescriptionGenerator.js.map +1 -0
- package/dist/{framework → core}/schema/index.d.ts +1 -1
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/{framework → core}/schema/index.js +1 -1
- package/dist/core/schema/index.js.map +1 -0
- package/dist/{framework → core}/types.d.ts +7 -1
- package/dist/core/types.d.ts.map +1 -0
- package/dist/{framework → core}/types.js +1 -1
- package/dist/core/types.js.map +1 -0
- package/dist/{framework/server → exposition}/ExpositionCompiler.d.ts +2 -2
- package/dist/exposition/ExpositionCompiler.d.ts.map +1 -0
- package/dist/{framework/server → exposition}/ExpositionCompiler.js +5 -20
- package/dist/exposition/ExpositionCompiler.js.map +1 -0
- package/dist/exposition/index.d.ts +4 -0
- package/dist/exposition/index.d.ts.map +1 -0
- package/dist/exposition/index.js +2 -0
- package/dist/exposition/index.js.map +1 -0
- package/dist/{framework/server/ExpositionTypes.d.ts → exposition/types.d.ts} +1 -1
- package/dist/exposition/types.d.ts.map +1 -0
- package/dist/{framework/server/ExpositionTypes.js → exposition/types.js} +1 -1
- package/dist/exposition/types.js.map +1 -0
- package/dist/index.d.ts +50 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -16
- package/dist/index.js.map +1 -1
- package/dist/{framework/introspection → introspection}/IntrospectionResource.d.ts +1 -1
- package/dist/introspection/IntrospectionResource.d.ts.map +1 -0
- package/dist/{framework/introspection → introspection}/IntrospectionResource.js +1 -1
- package/dist/introspection/IntrospectionResource.js.map +1 -0
- package/dist/{framework/introspection → introspection}/ManifestCompiler.d.ts +1 -1
- package/dist/introspection/ManifestCompiler.d.ts.map +1 -0
- package/dist/{framework/introspection → introspection}/ManifestCompiler.js +1 -1
- package/dist/introspection/ManifestCompiler.js.map +1 -0
- package/dist/introspection/index.d.ts.map +1 -0
- package/dist/introspection/index.js.map +1 -0
- package/dist/introspection/types.d.ts.map +1 -0
- package/dist/introspection/types.js.map +1 -0
- package/dist/observability/DebugObserver.d.ts.map +1 -0
- package/dist/observability/DebugObserver.js.map +1 -0
- package/dist/observability/Tracing.d.ts.map +1 -0
- package/dist/observability/Tracing.js.map +1 -0
- package/dist/observability/index.d.ts +10 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +10 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/{framework/presenter → presenter}/PostProcessor.d.ts +1 -1
- package/dist/presenter/PostProcessor.d.ts.map +1 -0
- package/dist/{framework/presenter → presenter}/PostProcessor.js +1 -1
- package/dist/presenter/PostProcessor.js.map +1 -0
- package/dist/presenter/Presenter.d.ts.map +1 -0
- package/dist/{framework/presenter → presenter}/Presenter.js +1 -1
- package/dist/presenter/Presenter.js.map +1 -0
- package/dist/{framework/presenter → presenter}/PresenterValidationError.d.ts +1 -1
- package/dist/presenter/PresenterValidationError.d.ts.map +1 -0
- package/dist/{framework/presenter → presenter}/PresenterValidationError.js +1 -1
- package/dist/presenter/PresenterValidationError.js.map +1 -0
- package/dist/{framework/presenter → presenter}/ResponseBuilder.d.ts +1 -1
- package/dist/presenter/ResponseBuilder.d.ts.map +1 -0
- package/dist/{framework/presenter → presenter}/ResponseBuilder.js +15 -13
- package/dist/presenter/ResponseBuilder.js.map +1 -0
- package/dist/presenter/index.d.ts.map +1 -0
- package/dist/presenter/index.js.map +1 -0
- package/dist/presenter/ui.d.ts.map +1 -0
- package/dist/presenter/ui.js.map +1 -0
- package/dist/{framework/prompt → prompt}/PromptExecutionPipeline.d.ts +2 -2
- package/dist/prompt/PromptExecutionPipeline.d.ts.map +1 -0
- package/dist/{framework/prompt → prompt}/PromptExecutionPipeline.js +13 -31
- package/dist/prompt/PromptExecutionPipeline.js.map +1 -0
- package/dist/{framework/prompt → prompt}/PromptMessage.d.ts +1 -1
- package/dist/prompt/PromptMessage.d.ts.map +1 -0
- package/dist/{framework/prompt → prompt}/PromptMessage.js +1 -1
- package/dist/prompt/PromptMessage.js.map +1 -0
- package/dist/{framework/registry → prompt}/PromptRegistry.d.ts +29 -1
- package/dist/prompt/PromptRegistry.d.ts.map +1 -0
- package/dist/{framework/registry → prompt}/PromptRegistry.js +100 -33
- package/dist/prompt/PromptRegistry.js.map +1 -0
- package/dist/{framework/prompt → prompt}/definePrompt.d.ts +3 -3
- package/dist/prompt/definePrompt.d.ts.map +1 -0
- package/dist/{framework/prompt → prompt}/definePrompt.js +5 -15
- package/dist/prompt/definePrompt.js.map +1 -0
- package/dist/{framework/prompt → prompt}/index.d.ts +1 -1
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/{framework/prompt/PromptTypes.d.ts → prompt/types.d.ts} +173 -5
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/{framework/prompt/PromptTypes.js → prompt/types.js} +5 -4
- package/dist/prompt/types.js.map +1 -0
- package/dist/{framework/server → server}/ServerAttachment.d.ts +5 -5
- package/dist/server/ServerAttachment.d.ts.map +1 -0
- package/dist/{framework/server → server}/ServerAttachment.js +157 -127
- package/dist/server/ServerAttachment.js.map +1 -0
- package/dist/server/ServerResolver.d.ts.map +1 -0
- package/dist/server/ServerResolver.js.map +1 -0
- package/dist/{framework/server → server}/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -0
- package/dist/state-sync/CausalEngine.d.ts.map +1 -0
- package/dist/state-sync/CausalEngine.js.map +1 -0
- package/dist/state-sync/DescriptionDecorator.d.ts.map +1 -0
- package/dist/state-sync/DescriptionDecorator.js.map +1 -0
- package/dist/state-sync/GlobMatcher.d.ts.map +1 -0
- package/dist/state-sync/GlobMatcher.js.map +1 -0
- package/dist/state-sync/PolicyEngine.d.ts.map +1 -0
- package/dist/state-sync/PolicyEngine.js.map +1 -0
- package/dist/{framework/state-sync → state-sync}/PolicyValidator.d.ts +0 -4
- package/dist/state-sync/PolicyValidator.d.ts.map +1 -0
- package/dist/state-sync/PolicyValidator.js +87 -0
- package/dist/state-sync/PolicyValidator.js.map +1 -0
- package/dist/{framework/state-sync → state-sync}/ResponseDecorator.d.ts +1 -1
- package/dist/state-sync/ResponseDecorator.d.ts.map +1 -0
- package/dist/{framework/state-sync → state-sync}/ResponseDecorator.js +1 -1
- package/dist/state-sync/ResponseDecorator.js.map +1 -0
- package/dist/{framework/state-sync → state-sync}/StateSyncLayer.d.ts +1 -1
- package/dist/state-sync/StateSyncLayer.d.ts.map +1 -0
- package/dist/state-sync/StateSyncLayer.js.map +1 -0
- package/dist/state-sync/index.d.ts.map +1 -0
- package/dist/state-sync/index.js.map +1 -0
- package/dist/state-sync/types.d.ts.map +1 -0
- package/dist/state-sync/types.js.map +1 -0
- package/llms.txt +3 -1
- package/package.json +3 -3
- package/dist/framework/builder/ActionGroupBuilder.d.ts.map +0 -1
- package/dist/framework/builder/ActionGroupBuilder.js.map +0 -1
- package/dist/framework/builder/GroupedToolBuilder.d.ts.map +0 -1
- package/dist/framework/builder/GroupedToolBuilder.js.map +0 -1
- package/dist/framework/builder/ParamDescriptors.d.ts.map +0 -1
- package/dist/framework/builder/ParamDescriptors.js +0 -162
- package/dist/framework/builder/ParamDescriptors.js.map +0 -1
- package/dist/framework/builder/ToolDefinitionCompiler.d.ts.map +0 -1
- package/dist/framework/builder/ToolDefinitionCompiler.js.map +0 -1
- package/dist/framework/builder/defineTool.d.ts.map +0 -1
- package/dist/framework/builder/defineTool.js.map +0 -1
- package/dist/framework/builder/index.d.ts.map +0 -1
- package/dist/framework/builder/index.js.map +0 -1
- package/dist/framework/client/FusionClient.d.ts.map +0 -1
- package/dist/framework/client/FusionClient.js.map +0 -1
- package/dist/framework/client/InferRouter.d.ts.map +0 -1
- package/dist/framework/client/InferRouter.js.map +0 -1
- package/dist/framework/client/createTypedRegistry.d.ts.map +0 -1
- package/dist/framework/client/createTypedRegistry.js.map +0 -1
- package/dist/framework/client/index.d.ts.map +0 -1
- package/dist/framework/client/index.js.map +0 -1
- package/dist/framework/execution/ExecutionPipeline.d.ts.map +0 -1
- package/dist/framework/execution/ExecutionPipeline.js.map +0 -1
- package/dist/framework/execution/MiddlewareCompiler.d.ts +0 -4
- package/dist/framework/execution/MiddlewareCompiler.d.ts.map +0 -1
- package/dist/framework/execution/MiddlewareCompiler.js.map +0 -1
- package/dist/framework/execution/ProgressHelper.d.ts.map +0 -1
- package/dist/framework/execution/ProgressHelper.js.map +0 -1
- package/dist/framework/execution/ValidationErrorFormatter.d.ts.map +0 -1
- package/dist/framework/execution/ValidationErrorFormatter.js.map +0 -1
- package/dist/framework/execution/index.d.ts.map +0 -1
- package/dist/framework/execution/index.js.map +0 -1
- package/dist/framework/index.d.ts +0 -44
- package/dist/framework/index.d.ts.map +0 -1
- package/dist/framework/index.js +0 -39
- package/dist/framework/index.js.map +0 -1
- package/dist/framework/introspection/IntrospectionResource.d.ts.map +0 -1
- package/dist/framework/introspection/IntrospectionResource.js.map +0 -1
- package/dist/framework/introspection/ManifestCompiler.d.ts.map +0 -1
- package/dist/framework/introspection/ManifestCompiler.js.map +0 -1
- package/dist/framework/introspection/index.d.ts.map +0 -1
- package/dist/framework/introspection/index.js.map +0 -1
- package/dist/framework/introspection/types.d.ts.map +0 -1
- package/dist/framework/introspection/types.js.map +0 -1
- package/dist/framework/middleware/ContextDerivation.d.ts.map +0 -1
- package/dist/framework/middleware/ContextDerivation.js.map +0 -1
- package/dist/framework/middleware/index.d.ts.map +0 -1
- package/dist/framework/middleware/index.js.map +0 -1
- package/dist/framework/observability/DebugObserver.d.ts.map +0 -1
- package/dist/framework/observability/DebugObserver.js.map +0 -1
- package/dist/framework/observability/Tracing.d.ts.map +0 -1
- package/dist/framework/observability/Tracing.js.map +0 -1
- package/dist/framework/presenter/PostProcessor.d.ts.map +0 -1
- package/dist/framework/presenter/PostProcessor.js.map +0 -1
- package/dist/framework/presenter/Presenter.d.ts.map +0 -1
- package/dist/framework/presenter/Presenter.js.map +0 -1
- package/dist/framework/presenter/PresenterValidationError.d.ts.map +0 -1
- package/dist/framework/presenter/PresenterValidationError.js.map +0 -1
- package/dist/framework/presenter/ResponseBuilder.d.ts.map +0 -1
- package/dist/framework/presenter/ResponseBuilder.js.map +0 -1
- package/dist/framework/presenter/index.d.ts.map +0 -1
- package/dist/framework/presenter/index.js.map +0 -1
- package/dist/framework/presenter/ui.d.ts.map +0 -1
- package/dist/framework/presenter/ui.js.map +0 -1
- package/dist/framework/prompt/PromptExecutionPipeline.d.ts.map +0 -1
- package/dist/framework/prompt/PromptExecutionPipeline.js.map +0 -1
- package/dist/framework/prompt/PromptMessage.d.ts.map +0 -1
- package/dist/framework/prompt/PromptMessage.js.map +0 -1
- package/dist/framework/prompt/PromptTypes.d.ts.map +0 -1
- package/dist/framework/prompt/PromptTypes.js.map +0 -1
- package/dist/framework/prompt/definePrompt.d.ts.map +0 -1
- package/dist/framework/prompt/definePrompt.js.map +0 -1
- package/dist/framework/prompt/index.d.ts.map +0 -1
- package/dist/framework/prompt/index.js.map +0 -1
- package/dist/framework/registry/PromptRegistry.d.ts.map +0 -1
- package/dist/framework/registry/PromptRegistry.js.map +0 -1
- package/dist/framework/registry/ToolFilterEngine.d.ts.map +0 -1
- package/dist/framework/registry/ToolFilterEngine.js.map +0 -1
- package/dist/framework/registry/ToolRegistry.d.ts.map +0 -1
- package/dist/framework/registry/ToolRegistry.js.map +0 -1
- package/dist/framework/registry/index.d.ts +0 -6
- package/dist/framework/registry/index.d.ts.map +0 -1
- package/dist/framework/registry/index.js.map +0 -1
- package/dist/framework/response.d.ts.map +0 -1
- package/dist/framework/response.js.map +0 -1
- package/dist/framework/result.d.ts.map +0 -1
- package/dist/framework/result.js.map +0 -1
- package/dist/framework/schema/AnnotationAggregator.d.ts.map +0 -1
- package/dist/framework/schema/AnnotationAggregator.js.map +0 -1
- package/dist/framework/schema/DescriptionGenerator.d.ts.map +0 -1
- package/dist/framework/schema/DescriptionGenerator.js.map +0 -1
- package/dist/framework/schema/SchemaGenerator.d.ts.map +0 -1
- package/dist/framework/schema/SchemaGenerator.js.map +0 -1
- package/dist/framework/schema/SchemaUtils.d.ts +0 -8
- package/dist/framework/schema/SchemaUtils.d.ts.map +0 -1
- package/dist/framework/schema/SchemaUtils.js.map +0 -1
- package/dist/framework/schema/ToonDescriptionGenerator.d.ts.map +0 -1
- package/dist/framework/schema/ToonDescriptionGenerator.js.map +0 -1
- package/dist/framework/schema/index.d.ts.map +0 -1
- package/dist/framework/schema/index.js.map +0 -1
- package/dist/framework/server/ExpositionCompiler.d.ts.map +0 -1
- package/dist/framework/server/ExpositionCompiler.js.map +0 -1
- package/dist/framework/server/ExpositionTypes.d.ts.map +0 -1
- package/dist/framework/server/ExpositionTypes.js.map +0 -1
- package/dist/framework/server/ServerAttachment.d.ts.map +0 -1
- package/dist/framework/server/ServerAttachment.js.map +0 -1
- package/dist/framework/server/ServerResolver.d.ts.map +0 -1
- package/dist/framework/server/ServerResolver.js.map +0 -1
- package/dist/framework/server/index.d.ts.map +0 -1
- package/dist/framework/server/index.js +0 -5
- package/dist/framework/server/index.js.map +0 -1
- package/dist/framework/state-sync/CausalEngine.d.ts.map +0 -1
- package/dist/framework/state-sync/CausalEngine.js.map +0 -1
- package/dist/framework/state-sync/DescriptionDecorator.d.ts.map +0 -1
- package/dist/framework/state-sync/DescriptionDecorator.js.map +0 -1
- package/dist/framework/state-sync/GlobMatcher.d.ts.map +0 -1
- package/dist/framework/state-sync/GlobMatcher.js.map +0 -1
- package/dist/framework/state-sync/PolicyEngine.d.ts.map +0 -1
- package/dist/framework/state-sync/PolicyEngine.js.map +0 -1
- package/dist/framework/state-sync/PolicyValidator.d.ts.map +0 -1
- package/dist/framework/state-sync/PolicyValidator.js +0 -72
- package/dist/framework/state-sync/PolicyValidator.js.map +0 -1
- package/dist/framework/state-sync/ResponseDecorator.d.ts.map +0 -1
- package/dist/framework/state-sync/ResponseDecorator.js.map +0 -1
- package/dist/framework/state-sync/StateSyncLayer.d.ts.map +0 -1
- package/dist/framework/state-sync/StateSyncLayer.js.map +0 -1
- package/dist/framework/state-sync/index.d.ts.map +0 -1
- package/dist/framework/state-sync/index.js.map +0 -1
- package/dist/framework/state-sync/types.d.ts.map +0 -1
- package/dist/framework/state-sync/types.js.map +0 -1
- package/dist/framework/types.d.ts.map +0 -1
- package/dist/framework/types.js.map +0 -1
- /package/dist/{framework/client → client}/index.d.ts +0 -0
- /package/dist/{framework/client → client}/index.js +0 -0
- /package/dist/{framework → core}/builder/ActionGroupBuilder.d.ts +0 -0
- /package/dist/{framework → core}/builder/ActionGroupBuilder.js +0 -0
- /package/dist/{framework → core}/builder/ParamDescriptors.d.ts +0 -0
- /package/dist/{framework → core}/builder/ToolDefinitionCompiler.d.ts +0 -0
- /package/dist/{framework → core}/builder/index.d.ts +0 -0
- /package/dist/{framework → core}/builder/index.js +0 -0
- /package/dist/{framework → core}/execution/ExecutionPipeline.d.ts +0 -0
- /package/dist/{framework → core}/execution/ProgressHelper.d.ts +0 -0
- /package/dist/{framework → core}/execution/ProgressHelper.js +0 -0
- /package/dist/{framework → core}/middleware/ContextDerivation.d.ts +0 -0
- /package/dist/{framework → core}/middleware/ContextDerivation.js +0 -0
- /package/dist/{framework → core}/middleware/index.d.ts +0 -0
- /package/dist/{framework → core}/middleware/index.js +0 -0
- /package/dist/{framework → core}/registry/ToolFilterEngine.d.ts +0 -0
- /package/dist/{framework → core}/result.d.ts +0 -0
- /package/dist/{framework → core}/result.js +0 -0
- /package/dist/{framework → core}/schema/AnnotationAggregator.d.ts +0 -0
- /package/dist/{framework → core}/schema/AnnotationAggregator.js +0 -0
- /package/dist/{framework → core}/schema/DescriptionGenerator.d.ts +0 -0
- /package/dist/{framework → core}/schema/DescriptionGenerator.js +0 -0
- /package/dist/{framework → core}/schema/SchemaGenerator.d.ts +0 -0
- /package/dist/{framework → core}/schema/ToonDescriptionGenerator.d.ts +0 -0
- /package/dist/{framework → core}/schema/ToonDescriptionGenerator.js +0 -0
- /package/dist/{framework/introspection → introspection}/index.d.ts +0 -0
- /package/dist/{framework/introspection → introspection}/index.js +0 -0
- /package/dist/{framework/introspection → introspection}/types.d.ts +0 -0
- /package/dist/{framework/introspection → introspection}/types.js +0 -0
- /package/dist/{framework/observability → observability}/DebugObserver.d.ts +0 -0
- /package/dist/{framework/observability → observability}/DebugObserver.js +0 -0
- /package/dist/{framework/observability → observability}/Tracing.d.ts +0 -0
- /package/dist/{framework/observability → observability}/Tracing.js +0 -0
- /package/dist/{framework/presenter → presenter}/Presenter.d.ts +0 -0
- /package/dist/{framework/presenter → presenter}/index.d.ts +0 -0
- /package/dist/{framework/presenter → presenter}/index.js +0 -0
- /package/dist/{framework/presenter → presenter}/ui.d.ts +0 -0
- /package/dist/{framework/presenter → presenter}/ui.js +0 -0
- /package/dist/{framework/prompt → prompt}/index.js +0 -0
- /package/dist/{framework/server → server}/ServerResolver.d.ts +0 -0
- /package/dist/{framework/server → server}/ServerResolver.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/CausalEngine.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/CausalEngine.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/DescriptionDecorator.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/DescriptionDecorator.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/GlobMatcher.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/GlobMatcher.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/PolicyEngine.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/PolicyEngine.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/StateSyncLayer.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/index.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/index.js +0 -0
- /package/dist/{framework/state-sync → state-sync}/types.d.ts +0 -0
- /package/dist/{framework/state-sync → state-sync}/types.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,78 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.6.2] - 2026-02-23
|
|
9
|
+
|
|
10
|
+
### 🧪 End-to-End Integration Test Suite
|
|
11
|
+
|
|
12
|
+
Comprehensive integration test suite (`tests/integration/FullStack.test.ts`) covering **all modules working together** through the MCP Server mock — happy paths AND sad paths. Ensures the framework resolves developer mistakes gracefully without crashing.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **37 integration tests** in `FullStack.test.ts` organized across 22 `describe` blocks:
|
|
17
|
+
|
|
18
|
+
**Happy paths (15 tests):**
|
|
19
|
+
- Builder → Registry → Server → ContextFactory
|
|
20
|
+
- Builder → Presenter → Server (auto-view composition)
|
|
21
|
+
- Builder → Middleware → Debug Observability (cross-layer events)
|
|
22
|
+
- Builder → Middleware → Tracing (OTel span lifecycle)
|
|
23
|
+
- Builder → StateSync → Server (cache-control + invalidation)
|
|
24
|
+
- PromptRegistry → Server (prompts/list + prompts/get)
|
|
25
|
+
- Builder → Flat Exposition → Server (atomic tool projection)
|
|
26
|
+
- Flat Exposition → Debug + Tracing (2 tests)
|
|
27
|
+
- Full Stack — ALL modules in a single server attachment
|
|
28
|
+
- Concurrent multi-tool calls (20 parallel + traced, 2 tests)
|
|
29
|
+
- Presenter → Tracing → Server
|
|
30
|
+
- Detach → Re-attach lifecycle
|
|
31
|
+
- defineMiddleware → defineTool → Server
|
|
32
|
+
|
|
33
|
+
**Sad paths (22 tests):**
|
|
34
|
+
- **Routing Failures (4):** Unknown tool (`UNKNOWN_TOOL` + suggestions), unknown action, missing/null/empty discriminator, unknown flat tool name
|
|
35
|
+
- **Validation Failures (3):** Wrong types, constraint violations (min/max/email), strict mode extra field rejection, flat mode validation
|
|
36
|
+
- **Handler Exceptions (3):** Handler `throw` → `isError=true` (grouped + flat), soft fail vs hard fail tracing distinction (`UNSET` vs `ERROR` + `recordException`)
|
|
37
|
+
- **Middleware Failures (3):** Middleware block + debug error event, middleware exception traced as system error, multi-middleware chain ordering (first blocker wins)
|
|
38
|
+
- **Concurrent Mixed Results (1):** 5 simultaneous calls — 2 success + 1 validation error + 1 throw + 1 unknown action — isolated
|
|
39
|
+
- **Debug + Tracing Error Correlation (2):** Debug error for unknown tool, traced validation error when both debug+tracing coexist
|
|
40
|
+
- **defineTool Param Descriptor Errors (2):** Constraint violations via descriptors, shared param missing/empty
|
|
41
|
+
- **StateSync Config Errors (2):** Invalid `cacheControl` directives rejected at attach time
|
|
42
|
+
- **Detach Error Handling (2):** Post-detach calls return error, tools/list returns empty, double detach is idempotent
|
|
43
|
+
|
|
44
|
+
- **Mock strategy:** Only the MCP Server is mocked — no internal framework mocking. Tests exercise the full pipeline (routing → validation → middleware → handler → observability → response).
|
|
45
|
+
|
|
46
|
+
### Test Suite
|
|
47
|
+
|
|
48
|
+
- **1,492 tests** across 68 files, all passing.
|
|
49
|
+
|
|
50
|
+
## [1.6.1] - 2026-02-23
|
|
51
|
+
|
|
52
|
+
### 🛡️ XML Security & Error Protocol Hardening
|
|
53
|
+
|
|
54
|
+
Comprehensive security audit of the XML error protocol. Prevents XML injection, hardens type safety, and upgrades the registry-level error to the structured `toolError()` protocol.
|
|
55
|
+
|
|
56
|
+
### Security
|
|
57
|
+
|
|
58
|
+
- **XML injection prevention:** Introduced `escapeXml()` (element content — escapes `&` and `<`) and `escapeXmlAttr()` (attribute values — escapes all 5 XML special characters). Applied across `response.ts`, `ExecutionPipeline.ts`, `ValidationErrorFormatter.ts`, and `PromptExecutionPipeline.ts`.
|
|
59
|
+
- **Dual escaping strategy:** Element content preserves `>` for LLM readability (`>= 1`, `Must be > 0`). Attribute values use strict escaping.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- **Type safety in `parseDiscriminator`:** Replaced unsafe `as string` cast with runtime `typeof` check. Non-string discriminator values (numbers, booleans, objects) now return `MISSING_DISCRIMINATOR` instead of causing `TypeError: str.replace is not a function`.
|
|
64
|
+
- **Structured `UNKNOWN_TOOL` error:** `ToolRegistry.routeCall()` now returns `toolError('UNKNOWN_TOOL', ...)` with structured XML (code, message, available tools, recovery hint) instead of a freeform `error()` string. Consistent with pipeline-level errors (`MISSING_DISCRIMINATOR`, `UNKNOWN_ACTION`).
|
|
65
|
+
|
|
66
|
+
### Documentation
|
|
67
|
+
|
|
68
|
+
- **error-handling.md:** Added `UNKNOWN_TOOL` to the Unified XML Protocol table. Added XML Security tip callout.
|
|
69
|
+
- **llms.txt:** Added XML security note with pipeline error codes. Added `unknown_tool` to tracing error classification.
|
|
70
|
+
|
|
71
|
+
### DX
|
|
72
|
+
|
|
73
|
+
- **English error messages:** Translated remaining Portuguese error message in `defineTool.ts` to English.
|
|
74
|
+
|
|
75
|
+
### Test Suite
|
|
76
|
+
|
|
77
|
+
- **1,389 tests** across 417 suites, all passing.
|
|
78
|
+
|
|
7
79
|
## [1.6.0] - 2026-02-23
|
|
8
80
|
|
|
9
81
|
### 🔗 MVA-Driven Prompts — `PromptMessage.fromView()`
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<h1>⚡️
|
|
2
|
+
<h1>⚡️ **MCP Fusion**</h1>
|
|
3
3
|
<p><b>The MVA (Model-View-Agent) framework for the Model Context Protocol.</b></p>
|
|
4
4
|
<p>Structured perception for AI agents — validated data, domain rules, UI blocks, and action affordances in every response.</p>
|
|
5
5
|
|
|
@@ -21,7 +21,7 @@ npm install @vinkius-core/mcp-fusion zod
|
|
|
21
21
|
|
|
22
22
|
## Overview
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
**MCP Fusion** introduces the **MVA (Model-View-Agent)** pattern — a Presenter layer between your data and the AI agent. Instead of passing raw JSON through `JSON.stringify()`, every response is a **structured perception package**: validated data, domain rules, rendered charts, action affordances, and cognitive guardrails.
|
|
25
25
|
|
|
26
26
|
```text
|
|
27
27
|
Model (Zod Schema) → View (Presenter) → Agent (LLM)
|
|
@@ -258,10 +258,12 @@ return toolError('ProjectNotFound', {
|
|
|
258
258
|
});
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
261
|
+
```xml
|
|
262
|
+
<tool_error code="ProjectNotFound">
|
|
263
|
+
<message>Project 'xyz' does not exist.</message>
|
|
264
|
+
<recovery>Call projects.list first to get valid IDs.</recovery>
|
|
265
|
+
<available_actions>projects.list</available_actions>
|
|
266
|
+
</tool_error>
|
|
265
267
|
```
|
|
266
268
|
|
|
267
269
|
---
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
*
|
|
26
26
|
* @module
|
|
27
27
|
*/
|
|
28
|
-
import { type ToolResponse } from '../response.js';
|
|
28
|
+
import { type ToolResponse } from '../core/response.js';
|
|
29
29
|
/**
|
|
30
30
|
* Transport interface for the fusion client.
|
|
31
31
|
* This abstracts the MCP transport layer (stdio, HTTP, WebSocket, etc.)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FusionClient.d.ts","sourceRoot":"","sources":["../../src/client/FusionClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAChF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO,SAAS,SAAS;IACnD;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,SAAS,MAAM,OAAO,GAAG,MAAM,EAC1C,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GACvB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,SAAS,EACxD,SAAS,EAAE,eAAe,GAC3B,YAAY,CAAC,OAAO,CAAC,CAqBvB"}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
*
|
|
26
26
|
* @module
|
|
27
27
|
*/
|
|
28
|
-
import {} from '../response.js';
|
|
28
|
+
import {} from '../core/response.js';
|
|
29
29
|
// ============================================================================
|
|
30
30
|
// Factory
|
|
31
31
|
// ============================================================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FusionClient.js","sourceRoot":"","sources":["../../src/client/FusionClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AAoDxD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,kBAAkB,CAC9B,SAA0B;IAE1B,OAAO;QACH,KAAK,CAAC,OAAO,CACT,MAAe,EACf,IAAsB;YAEtB,mDAAmD;YACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAElD,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAChC,MAAM,EAAE,UAAU;gBAClB,GAAG,IAAI;aACV,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
*
|
|
27
27
|
* @module
|
|
28
28
|
*/
|
|
29
|
-
import { type GroupedToolBuilder } from '../builder/GroupedToolBuilder.js';
|
|
29
|
+
import { type GroupedToolBuilder } from '../core/builder/GroupedToolBuilder.js';
|
|
30
|
+
import { type ToolRegistry } from '../core/registry/ToolRegistry.js';
|
|
30
31
|
/**
|
|
31
32
|
* A typed wrapper around `ToolRegistry` that preserves builder types
|
|
32
33
|
* for compile-time router inference.
|
|
@@ -40,7 +41,7 @@ import { type GroupedToolBuilder } from '../builder/GroupedToolBuilder.js';
|
|
|
40
41
|
*/
|
|
41
42
|
export interface TypedToolRegistry<TContext, TBuilders extends readonly unknown[]> {
|
|
42
43
|
/** The underlying ToolRegistry instance (for runtime use) */
|
|
43
|
-
readonly registry:
|
|
44
|
+
readonly registry: ToolRegistry<TContext>;
|
|
44
45
|
/** Branded field for type inference — never accessed at runtime */
|
|
45
46
|
readonly _builders: TBuilders;
|
|
46
47
|
/** Branded phantom type for context inference */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InferRouter.d.ts","sourceRoot":"","sources":["../../src/client/InferRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAMrE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,EAAE,SAAS,SAAS,SAAS,OAAO,EAAE;IAC7E,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB,CAAC,SAAS,iBAAiB,CAAC,MAAM,KAAK,EAAE,MAAM,SAAS,CAAC,GACnD,uBAAuB,CAAC,SAAS,CAAC,GAClC,CAAC,SAAS,SAAS,OAAO,EAAE,GACxB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC1B,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,gBAAgB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,GACvD,CAAC,SAAS,SAAS,EAAE,GAEjB,EAAE,GACF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtD;;;;;;;GAOG;AACH,KAAK,gBAAgB,CAAC,CAAC,IACnB,CAAC,SAAS,kBAAkB,CAAC,MAAM,KAAK,EAAE,MAAM,QAAQ,EAAE,MAAM,MAAM,EAAE,MAAM,UAAU,CAAC,GACnF,UAAU,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InferRouter.js","sourceRoot":"","sources":["../../src/client/InferRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAA2B,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAqB,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypedRegistry.d.ts","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,MACvB,SAAS,SAAS,WAAW,CAAC,QAAQ,CAAC,EAAE,EACtD,GAAG,UAAU,SAAS,KACvB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAS5C"}
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
*
|
|
37
37
|
* @module
|
|
38
38
|
*/
|
|
39
|
-
import { ToolRegistry } from '../registry/ToolRegistry.js';
|
|
40
|
-
import {} from '../types.js';
|
|
39
|
+
import { ToolRegistry } from '../core/registry/ToolRegistry.js';
|
|
40
|
+
import {} from '../core/types.js';
|
|
41
41
|
import {} from './InferRouter.js';
|
|
42
42
|
/**
|
|
43
43
|
* Create a type-preserving tool registry.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypedRegistry.js","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA0B,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,UACH,GAAG,QAAmB;QAEtB,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAY,CAAC;QAC9C,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClC,OAAO;YACH,QAAQ;YACR,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,SAAgC;SAC7C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACR,YAAY,EACZ,eAAe,EACf,SAAS,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAMvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionGroupBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/builder/ActionGroupBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACpB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3E,CAAC,KAAK,EAAE,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAI3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAC5C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,GACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAC5B,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GACvD,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CACzE,CAYA;AAID,qBAAa,kBAAkB,CAAC,QAAQ,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACrG,gBAAgB;IAChB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAM;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,gBAAgB,CAAgB;gBAE5B,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAKnD;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKrC;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,OAAO,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,SAAS,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,EAAE;QACxF,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;KACtG,GAAG,IAAI;IACR,gEAAgE;IAChE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;CAuB/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionGroupBuilder.js","sourceRoot":"","sources":["../../../src/core/builder/ActionGroupBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAoC,MAAM,KAAK,CAAC;AACvD,OAAO,EAKN,MAAM,aAAa,CAAC;AAsBrB,4DAA4D;AAE5D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAA8B,EAC9B,gBAAsC;IAKtC,OAAO;QACH,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;QAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;QAClC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;QAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;QAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QACpF,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;KACvC,CAAC;AACN,CAAC;AAED,4DAA4D;AAE5D,MAAM,OAAO,kBAAkB;IAC3B,gBAAgB;IACP,QAAQ,GAA+B,EAAE,CAAC;IAClC,UAAU,CAAS;IACnB,iBAAiB,CAAS;IAC1B,iBAAiB,GAA6B,EAAE,CAAC;IAC1D,gBAAgB,GAAa,EAAE,CAAC;IAExC,YAAY,SAAiB,EAAE,WAAoB;QAC/C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,WAAW,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,CAAC,EAA0B;QAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,GAAG,MAAgB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IA6CD,MAAM,CAAC,MAA8B;QACjC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACX,gBAAgB,MAAM,CAAC,IAAI,2BAA2B;gBACtD,oEAAoE,CACvE,CAAC;QACN,CAAC;QAED,qDAAqD;QACrD,MAAM,SAAS,GAAI,MAAoC,CAAC,UAAU,IAAI,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC;YAC9C,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;gBAC1C,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;SAChD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
import { type ZodObject, type ZodRawShape } from 'zod';
|
|
47
47
|
import { type Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
|
|
48
48
|
import { type ToolResponse, type ToolBuilder, type ActionMetadata, type InternalAction, type MiddlewareFn, type ActionConfig } from '../types.js';
|
|
49
|
-
import { type DebugObserverFn } from '
|
|
50
|
-
import { type FusionTracer } from '
|
|
49
|
+
import { type DebugObserverFn } from '../../observability/DebugObserver.js';
|
|
50
|
+
import { type FusionTracer } from '../../observability/Tracing.js';
|
|
51
51
|
import { type ProgressSink } from '../execution/ProgressHelper.js';
|
|
52
52
|
import { type GroupConfigurator } from './ActionGroupBuilder.js';
|
|
53
53
|
export { ActionGroupBuilder } from './ActionGroupBuilder.js';
|
|
@@ -478,18 +478,26 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
478
478
|
* ```
|
|
479
479
|
*/
|
|
480
480
|
execute(ctx: TContext, args: Record<string, unknown>, progressSink?: ProgressSink): Promise<ToolResponse>;
|
|
481
|
-
/** Fast path: zero overhead — no conditionals, no timing, no allocations. */
|
|
482
|
-
private _executeFast;
|
|
483
|
-
/** Debug path: emit structured DebugEvent at each step (unchanged from pre-tracing). */
|
|
484
|
-
private _executeDebug;
|
|
485
481
|
/**
|
|
486
|
-
*
|
|
482
|
+
* Pipeline hooks for observability instrumentation.
|
|
483
|
+
*
|
|
484
|
+
* Each hook is called at the corresponding pipeline step.
|
|
485
|
+
* The fast path passes `undefined` (zero overhead).
|
|
486
|
+
* Debug and traced paths supply their hooks via factory methods.
|
|
487
|
+
*/
|
|
488
|
+
private _executePipeline;
|
|
489
|
+
/**
|
|
490
|
+
* Build debug hooks: lightweight event emission.
|
|
491
|
+
*/
|
|
492
|
+
private _buildDebugHooks;
|
|
493
|
+
/**
|
|
494
|
+
* Build traced hooks: OpenTelemetry-compatible span creation.
|
|
487
495
|
*
|
|
488
496
|
* Creates ONE span per tool call with events for pipeline steps.
|
|
489
|
-
* Uses
|
|
497
|
+
* Uses wrapResponse for leak-proof span closure.
|
|
490
498
|
* AI errors → UNSET, system errors → ERROR.
|
|
491
499
|
*/
|
|
492
|
-
private
|
|
500
|
+
private _buildTracedHooks;
|
|
493
501
|
/** Get the tool name. */
|
|
494
502
|
getName(): string;
|
|
495
503
|
/** Get a copy of the capability tags. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupedToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,12 @@ import {} from 'zod';
|
|
|
47
47
|
import {} from '@modelcontextprotocol/sdk/types.js';
|
|
48
48
|
import { error } from '../response.js';
|
|
49
49
|
import {} from '../types.js';
|
|
50
|
-
import {} from '
|
|
51
|
-
import { SpanStatusCode } from '
|
|
50
|
+
import {} from '../../observability/DebugObserver.js';
|
|
51
|
+
import { SpanStatusCode } from '../../observability/Tracing.js';
|
|
52
52
|
import { getActionRequiredFields } from '../schema/SchemaUtils.js';
|
|
53
53
|
import { parseDiscriminator, resolveAction, validateArgs, runChain, } from '../execution/ExecutionPipeline.js';
|
|
54
54
|
import {} from '../execution/ProgressHelper.js';
|
|
55
|
+
import { computeResponseSize } from '../execution/PipelineHooks.js';
|
|
55
56
|
import { compileToolDefinition } from './ToolDefinitionCompiler.js';
|
|
56
57
|
import { ActionGroupBuilder, mapConfigToActionFields, } from './ActionGroupBuilder.js';
|
|
57
58
|
// ── Re-exports for Public API Compatibility ──────────────
|
|
@@ -515,87 +516,121 @@ export class GroupedToolBuilder {
|
|
|
515
516
|
if (!execCtx) {
|
|
516
517
|
return error(`Builder "${this._name}" failed to initialize.`);
|
|
517
518
|
}
|
|
518
|
-
//
|
|
519
|
+
// Traced path: wrap in try/catch for system error → graceful response
|
|
519
520
|
if (this._tracer) {
|
|
520
|
-
|
|
521
|
+
const hooks = this._buildTracedHooks();
|
|
522
|
+
try {
|
|
523
|
+
return await this._executePipeline(execCtx, ctx, args, progressSink, hooks);
|
|
524
|
+
}
|
|
525
|
+
catch (err) {
|
|
526
|
+
// System failure caught here — hooks already recorded it on the span
|
|
527
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
528
|
+
const response = error(`[${this._name}] ${message}`);
|
|
529
|
+
hooks.wrapResponse(response); // finalize span
|
|
530
|
+
return response;
|
|
531
|
+
}
|
|
521
532
|
}
|
|
522
|
-
//
|
|
533
|
+
// Debug path: hooks with event emission
|
|
523
534
|
if (this._debug) {
|
|
524
|
-
return this.
|
|
535
|
+
return this._executePipeline(execCtx, ctx, args, progressSink, this._buildDebugHooks());
|
|
525
536
|
}
|
|
526
|
-
//
|
|
527
|
-
return this.
|
|
537
|
+
// Fast path: zero overhead (no hooks)
|
|
538
|
+
return this._executePipeline(execCtx, ctx, args, progressSink);
|
|
528
539
|
}
|
|
529
540
|
// ── Execution Paths (private) ────────────────────────
|
|
530
|
-
/**
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
const validated = validateArgs(execCtx, resolved.value, args);
|
|
539
|
-
if (!validated.ok)
|
|
540
|
-
return validated.response;
|
|
541
|
-
return runChain(execCtx, resolved.value, ctx, validated.value, progressSink);
|
|
542
|
-
}
|
|
543
|
-
/** Debug path: emit structured DebugEvent at each step (unchanged from pre-tracing). */
|
|
544
|
-
async _executeDebug(execCtx, ctx, args, progressSink) {
|
|
545
|
-
const debug = this._debug;
|
|
546
|
-
const startTime = performance.now();
|
|
541
|
+
/**
|
|
542
|
+
* Pipeline hooks for observability instrumentation.
|
|
543
|
+
*
|
|
544
|
+
* Each hook is called at the corresponding pipeline step.
|
|
545
|
+
* The fast path passes `undefined` (zero overhead).
|
|
546
|
+
* Debug and traced paths supply their hooks via factory methods.
|
|
547
|
+
*/
|
|
548
|
+
async _executePipeline(execCtx, ctx, args, progressSink, hooks) {
|
|
547
549
|
// Step 1: Route
|
|
548
550
|
const disc = parseDiscriminator(execCtx, args);
|
|
549
551
|
if (!disc.ok) {
|
|
550
|
-
|
|
551
|
-
return disc.response;
|
|
552
|
+
hooks?.onRouteError?.();
|
|
553
|
+
return hooks?.wrapResponse?.(disc.response) ?? disc.response;
|
|
552
554
|
}
|
|
553
555
|
const actionName = disc.value;
|
|
554
|
-
|
|
556
|
+
hooks?.onRouteOk?.(actionName);
|
|
555
557
|
// Step 2: Resolve
|
|
556
558
|
const resolved = resolveAction(execCtx, actionName);
|
|
557
559
|
if (!resolved.ok) {
|
|
558
|
-
|
|
559
|
-
return resolved.response;
|
|
560
|
+
hooks?.onResolveError?.(actionName);
|
|
561
|
+
return hooks?.wrapResponse?.(resolved.response) ?? resolved.response;
|
|
560
562
|
}
|
|
561
563
|
// Step 3: Validate
|
|
562
564
|
const validateStart = performance.now();
|
|
563
565
|
const validated = validateArgs(execCtx, resolved.value, args);
|
|
564
|
-
const
|
|
566
|
+
const validateMs = performance.now() - validateStart;
|
|
565
567
|
if (!validated.ok) {
|
|
566
|
-
|
|
567
|
-
return validated.response;
|
|
568
|
+
hooks?.onValidateError?.(actionName, validateMs);
|
|
569
|
+
return hooks?.wrapResponse?.(validated.response) ?? validated.response;
|
|
568
570
|
}
|
|
569
|
-
|
|
570
|
-
// Step 4: Middleware
|
|
571
|
+
hooks?.onValidateOk?.(actionName, validateMs);
|
|
572
|
+
// Step 4: Middleware info
|
|
571
573
|
const actionMwCount = resolved.value.action.middlewares?.length ?? 0;
|
|
572
574
|
const globalMwCount = this._middlewares.length;
|
|
573
575
|
const chainLength = globalMwCount + actionMwCount;
|
|
574
576
|
if (chainLength > 0) {
|
|
575
|
-
|
|
577
|
+
hooks?.onMiddleware?.(actionName, chainLength);
|
|
576
578
|
}
|
|
577
579
|
// Step 5: Execute
|
|
578
580
|
try {
|
|
579
|
-
const response = await runChain(execCtx, resolved.value, ctx, validated.value, progressSink);
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
debug({ type: 'execute', tool: this._name, action: actionName, durationMs: totalDuration, isError: isErr, timestamp: Date.now() });
|
|
583
|
-
return response;
|
|
581
|
+
const response = await runChain(execCtx, resolved.value, ctx, validated.value, progressSink, hooks?.rethrow);
|
|
582
|
+
hooks?.onExecuteOk?.(actionName, response);
|
|
583
|
+
return hooks?.wrapResponse?.(response) ?? response;
|
|
584
584
|
}
|
|
585
585
|
catch (err) {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
throw err;
|
|
586
|
+
hooks?.onExecuteError?.(actionName, err);
|
|
587
|
+
throw err; // only reached when rethrow=true (traced path handles it)
|
|
589
588
|
}
|
|
590
589
|
}
|
|
591
590
|
/**
|
|
592
|
-
*
|
|
591
|
+
* Build debug hooks: lightweight event emission.
|
|
592
|
+
*/
|
|
593
|
+
_buildDebugHooks() {
|
|
594
|
+
const debug = this._debug;
|
|
595
|
+
const toolName = this._name;
|
|
596
|
+
const startTime = performance.now();
|
|
597
|
+
return {
|
|
598
|
+
onRouteError: () => {
|
|
599
|
+
debug({ type: 'error', tool: toolName, action: '?', error: 'Missing discriminator', step: 'route', timestamp: Date.now() });
|
|
600
|
+
},
|
|
601
|
+
onRouteOk: (action) => {
|
|
602
|
+
debug({ type: 'route', tool: toolName, action, timestamp: Date.now() });
|
|
603
|
+
},
|
|
604
|
+
onResolveError: (action) => {
|
|
605
|
+
debug({ type: 'error', tool: toolName, action, error: `Unknown action "${action}"`, step: 'route', timestamp: Date.now() });
|
|
606
|
+
},
|
|
607
|
+
onValidateError: (action, durationMs) => {
|
|
608
|
+
debug({ type: 'validate', tool: toolName, action, valid: false, error: 'Validation failed', durationMs, timestamp: Date.now() });
|
|
609
|
+
},
|
|
610
|
+
onValidateOk: (action, durationMs) => {
|
|
611
|
+
debug({ type: 'validate', tool: toolName, action, valid: true, durationMs, timestamp: Date.now() });
|
|
612
|
+
},
|
|
613
|
+
onMiddleware: (action, chainLength) => {
|
|
614
|
+
debug({ type: 'middleware', tool: toolName, action, chainLength, timestamp: Date.now() });
|
|
615
|
+
},
|
|
616
|
+
onExecuteOk: (action, response) => {
|
|
617
|
+
const isErr = response.isError === true;
|
|
618
|
+
debug({ type: 'execute', tool: toolName, action, durationMs: performance.now() - startTime, isError: isErr, timestamp: Date.now() });
|
|
619
|
+
},
|
|
620
|
+
onExecuteError: (action, err) => {
|
|
621
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
622
|
+
debug({ type: 'error', tool: toolName, action, error: message, step: 'execute', timestamp: Date.now() });
|
|
623
|
+
},
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Build traced hooks: OpenTelemetry-compatible span creation.
|
|
593
628
|
*
|
|
594
629
|
* Creates ONE span per tool call with events for pipeline steps.
|
|
595
|
-
* Uses
|
|
630
|
+
* Uses wrapResponse for leak-proof span closure.
|
|
596
631
|
* AI errors → UNSET, system errors → ERROR.
|
|
597
632
|
*/
|
|
598
|
-
|
|
633
|
+
_buildTracedHooks() {
|
|
599
634
|
const tracer = this._tracer;
|
|
600
635
|
const startAttrs = {
|
|
601
636
|
'mcp.system': 'fusion',
|
|
@@ -609,77 +644,61 @@ export class GroupedToolBuilder {
|
|
|
609
644
|
const startTime = performance.now();
|
|
610
645
|
let statusCode = SpanStatusCode.UNSET;
|
|
611
646
|
let statusMessage;
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
647
|
+
const finalizeSpan = (response) => {
|
|
648
|
+
span.setAttribute('mcp.durationMs', performance.now() - startTime);
|
|
649
|
+
if (response) {
|
|
650
|
+
span.setAttribute('mcp.response_size', computeResponseSize(response));
|
|
651
|
+
}
|
|
652
|
+
span.setStatus(statusMessage !== undefined
|
|
653
|
+
? { code: statusCode, message: statusMessage }
|
|
654
|
+
: { code: statusCode });
|
|
655
|
+
span.end();
|
|
656
|
+
};
|
|
657
|
+
return {
|
|
658
|
+
rethrow: true,
|
|
659
|
+
onRouteError: () => {
|
|
617
660
|
span.setAttribute('mcp.error_type', 'missing_discriminator');
|
|
618
661
|
span.setAttribute('mcp.isError', true);
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
if (!resolved.ok) {
|
|
662
|
+
},
|
|
663
|
+
onRouteOk: (action) => {
|
|
664
|
+
span.setAttribute('mcp.action', action);
|
|
665
|
+
span.addEvent?.('mcp.route');
|
|
666
|
+
},
|
|
667
|
+
onResolveError: () => {
|
|
626
668
|
span.setAttribute('mcp.error_type', 'unknown_action');
|
|
627
669
|
span.setAttribute('mcp.isError', true);
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
// Validate
|
|
631
|
-
const validateStart = performance.now();
|
|
632
|
-
const validated = validateArgs(execCtx, resolved.value, args);
|
|
633
|
-
const validateMs = performance.now() - validateStart;
|
|
634
|
-
if (!validated.ok) {
|
|
670
|
+
},
|
|
671
|
+
onValidateError: (_action, durationMs) => {
|
|
635
672
|
span.setAttribute('mcp.error_type', 'validation_failed');
|
|
636
673
|
span.setAttribute('mcp.isError', true);
|
|
637
|
-
span.addEvent?.('mcp.validate', { 'mcp.valid': false, 'mcp.durationMs':
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
const globalMwCount = this._middlewares.length;
|
|
644
|
-
const chainLength = globalMwCount + actionMwCount;
|
|
645
|
-
if (chainLength > 0) {
|
|
674
|
+
span.addEvent?.('mcp.validate', { 'mcp.valid': false, 'mcp.durationMs': durationMs });
|
|
675
|
+
},
|
|
676
|
+
onValidateOk: (_action, durationMs) => {
|
|
677
|
+
span.addEvent?.('mcp.validate', { 'mcp.valid': true, 'mcp.durationMs': durationMs });
|
|
678
|
+
},
|
|
679
|
+
onMiddleware: (_action, chainLength) => {
|
|
646
680
|
span.addEvent?.('mcp.middleware', { 'mcp.chainLength': chainLength });
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
}
|
|
669
|
-
finally {
|
|
670
|
-
span.setAttribute('mcp.durationMs', performance.now() - startTime);
|
|
671
|
-
if (response) {
|
|
672
|
-
// Response size in bytes — useful for billing/quota dashboards
|
|
673
|
-
let size = 0;
|
|
674
|
-
for (const c of response.content) {
|
|
675
|
-
if ('text' in c && typeof c.text === 'string')
|
|
676
|
-
size += c.text.length;
|
|
677
|
-
}
|
|
678
|
-
span.setAttribute('mcp.response_size', size);
|
|
679
|
-
}
|
|
680
|
-
span.setStatus(statusMessage !== undefined ? { code: statusCode, message: statusMessage } : { code: statusCode });
|
|
681
|
-
span.end(); // leak-proof: always called
|
|
682
|
-
}
|
|
681
|
+
},
|
|
682
|
+
onExecuteOk: (_action, response) => {
|
|
683
|
+
const isErr = response.isError === true;
|
|
684
|
+
statusCode = isErr ? SpanStatusCode.UNSET : SpanStatusCode.OK;
|
|
685
|
+
if (isErr)
|
|
686
|
+
span.setAttribute('mcp.error_type', 'handler_returned_error');
|
|
687
|
+
span.setAttribute('mcp.isError', isErr);
|
|
688
|
+
},
|
|
689
|
+
onExecuteError: (_action, err) => {
|
|
690
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
691
|
+
span.recordException(err instanceof Error ? err : message);
|
|
692
|
+
span.setAttribute('mcp.error_type', 'system_error');
|
|
693
|
+
span.setAttribute('mcp.isError', true);
|
|
694
|
+
statusCode = SpanStatusCode.ERROR;
|
|
695
|
+
statusMessage = message;
|
|
696
|
+
},
|
|
697
|
+
wrapResponse: (response) => {
|
|
698
|
+
finalizeSpan(response);
|
|
699
|
+
return response;
|
|
700
|
+
},
|
|
701
|
+
};
|
|
683
702
|
}
|
|
684
703
|
// ── Introspection ───────────────────────────────────
|
|
685
704
|
/** Get the tool name. */
|