@cyanheads/mcp-ts-core 0.11.5 → 0.12.1
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 +27 -23
- package/CLAUDE.md +27 -23
- package/README.md +10 -10
- package/biome.json +1 -1
- package/changelog/0.12.x/0.12.0.md +96 -0
- package/changelog/0.12.x/0.12.1.md +26 -0
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/config/index.d.ts +9 -18
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +21 -28
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +27 -7
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +28 -28
- package/dist/core/app.js.map +1 -1
- package/dist/core/context.d.ts +90 -57
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +32 -33
- package/dist/core/context.js.map +1 -1
- package/dist/core/gcPressure.d.ts.map +1 -1
- package/dist/core/gcPressure.js +3 -4
- package/dist/core/gcPressure.js.map +1 -1
- package/dist/core/index.d.ts +6 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +10 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/serverManifest.d.ts +6 -4
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +37 -14
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +34 -37
- package/dist/core/worker.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.d.ts.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +5 -2
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/portability-rules.d.ts +4 -2
- package/dist/linter/rules/portability-rules.d.ts.map +1 -1
- package/dist/linter/rules/portability-rules.js +33 -4
- package/dist/linter/rules/portability-rules.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +10 -3
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +52 -25
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +5 -2
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/linter/types.d.ts +2 -1
- package/dist/linter/types.d.ts.map +1 -1
- package/dist/logs/combined.log +10 -22
- package/dist/logs/error.log +6 -18
- package/dist/mcp-server/inputRequired.d.ts +52 -0
- package/dist/mcp-server/inputRequired.d.ts.map +1 -0
- package/dist/mcp-server/inputRequired.js +76 -0
- package/dist/mcp-server/inputRequired.js.map +1 -0
- package/dist/mcp-server/notifications.d.ts +103 -34
- package/dist/mcp-server/notifications.d.ts.map +1 -1
- package/dist/mcp-server/notifications.js +104 -29
- package/dist/mcp-server/notifications.js.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.d.ts +2 -2
- package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +15 -5
- package/dist/mcp-server/prompts/prompt-registration.js.map +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +1 -1
- package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts +3 -3
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +9 -15
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/resourceSubscriptions.d.ts +45 -0
- package/dist/mcp-server/resources/resourceSubscriptions.d.ts.map +1 -0
- package/dist/mcp-server/resources/resourceSubscriptions.js +51 -0
- package/dist/mcp-server/resources/resourceSubscriptions.js.map +1 -0
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +3 -5
- package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js +1 -1
- package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +18 -17
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +39 -39
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts +20 -21
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +42 -28
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +11 -33
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +18 -243
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/schemaShape.d.ts +27 -0
- package/dist/mcp-server/tools/utils/schemaShape.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/schemaShape.js +43 -0
- package/dist/mcp-server/tools/utils/schemaShape.js.map +1 -0
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts +28 -8
- package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js +63 -1
- package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +54 -20
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +156 -44
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/ITransport.d.ts +2 -2
- package/dist/mcp-server/transports/ITransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/authFactory.js +1 -1
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +1 -1
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +5 -13
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +5 -11
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +9 -22
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -1
- package/dist/mcp-server/transports/heartbeat.d.ts.map +1 -1
- package/dist/mcp-server/transports/heartbeat.js +4 -8
- package/dist/mcp-server/transports/heartbeat.js.map +1 -1
- package/dist/mcp-server/transports/http/eventStore.d.ts +57 -0
- package/dist/mcp-server/transports/http/eventStore.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/eventStore.js +114 -0
- package/dist/mcp-server/transports/http/eventStore.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js +6 -24
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.d.ts +4 -3
- package/dist/mcp-server/transports/http/httpServer.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.js +16 -33
- package/dist/mcp-server/transports/http/httpServer.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts +30 -8
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +180 -374
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js +0 -1
- package/dist/mcp-server/transports/http/landing-page/assets/styles.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.js +4 -8
- package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js +22 -4
- package/dist/mcp-server/transports/http/landing-page/sections/tools.js.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -6
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
- package/dist/mcp-server/transports/http/robotsTxt.js +2 -2
- package/dist/mcp-server/transports/http/robotsTxt.js.map +1 -1
- package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/serverCard.js +2 -6
- package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.d.ts +46 -66
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +140 -238
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
- package/dist/mcp-server/transports/manager.d.ts +21 -4
- package/dist/mcp-server/transports/manager.d.ts.map +1 -1
- package/dist/mcp-server/transports/manager.js +40 -34
- package/dist/mcp-server/transports/manager.js.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +24 -31
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/stdio/stdioTransport.js +23 -38
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -1
- package/dist/mcp-server/types.d.ts +25 -0
- package/dist/mcp-server/types.d.ts.map +1 -0
- package/dist/mcp-server/types.js +10 -0
- package/dist/mcp-server/types.js.map +1 -0
- package/dist/services/canvas/core/CanvasInstance.d.ts +2 -2
- package/dist/services/canvas/core/CanvasInstance.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasInstance.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +4 -4
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +8 -18
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts +5 -5
- package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
- package/dist/services/canvas/core/DataCanvas.js +2 -3
- package/dist/services/canvas/core/DataCanvas.js.map +1 -1
- package/dist/services/canvas/core/IDataCanvasProvider.d.ts +11 -11
- package/dist/services/canvas/core/IDataCanvasProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +11 -11
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +4 -10
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -1
- package/dist/services/llm/providers/openrouter.provider.js +2 -5
- package/dist/services/llm/providers/openrouter.provider.js.map +1 -1
- package/dist/services/mirror/core/defineMirror.js +1 -1
- package/dist/services/mirror/core/defineMirror.js.map +1 -1
- package/dist/services/mirror/types.d.ts +5 -5
- package/dist/services/mirror/types.d.ts.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
- package/dist/services/speech/providers/whisper.provider.js +1 -1
- package/dist/services/speech/providers/whisper.provider.js.map +1 -1
- package/dist/storage/core/StorageService.d.ts +1 -1
- package/dist/storage/core/StorageService.d.ts.map +1 -1
- package/dist/storage/core/StorageService.js +12 -20
- package/dist/storage/core/StorageService.js.map +1 -1
- package/dist/storage/core/storageFactory.d.ts.map +1 -1
- package/dist/storage/core/storageFactory.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +1 -1
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +2 -2
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +4 -12
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +3 -8
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +3 -8
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +2 -4
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/testing/fuzz.d.ts +7 -4
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +13 -5
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/testing/index.d.ts +35 -12
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +53 -38
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/vitest.d.ts +1 -1
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/types-global/errors.d.ts +28 -15
- package/dist/types-global/errors.d.ts.map +1 -1
- package/dist/types-global/errors.js +8 -1
- package/dist/types-global/errors.js.map +1 -1
- package/dist/utils/formatting/diffFormatter.d.ts +5 -5
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/diffFormatter.js +7 -20
- package/dist/utils/formatting/diffFormatter.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts +3 -3
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/tableFormatter.js +6 -17
- package/dist/utils/formatting/tableFormatter.js.map +1 -1
- package/dist/utils/formatting/treeFormatter.d.ts +3 -3
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/treeFormatter.js +5 -18
- package/dist/utils/formatting/treeFormatter.js.map +1 -1
- package/dist/utils/index.d.ts +4 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts +1 -1
- package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
- package/dist/utils/internal/error-handler/errorHandler.js +23 -11
- package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +10 -13
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logger.d.ts +3 -3
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +11 -5
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +13 -5
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +76 -17
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/internal/requestContext.d.ts +92 -55
- package/dist/utils/internal/requestContext.d.ts.map +1 -1
- package/dist/utils/internal/requestContext.js +120 -40
- package/dist/utils/internal/requestContext.js.map +1 -1
- package/dist/utils/metrics/tokenCounter.d.ts +3 -3
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -1
- package/dist/utils/metrics/tokenCounter.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +2 -2
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +8 -24
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/retry.d.ts +2 -2
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts +1 -1
- package/dist/utils/overflow/outlineOnOverflow.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.d.ts +3 -3
- package/dist/utils/pagination/pagination.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.js +3 -3
- package/dist/utils/pagination/pagination.js.map +1 -1
- package/dist/utils/parsing/csvParser.d.ts +2 -2
- package/dist/utils/parsing/csvParser.d.ts.map +1 -1
- package/dist/utils/parsing/csvParser.js +4 -8
- package/dist/utils/parsing/csvParser.js.map +1 -1
- package/dist/utils/parsing/dateParser.d.ts +3 -3
- package/dist/utils/parsing/dateParser.d.ts.map +1 -1
- package/dist/utils/parsing/dateParser.js +3 -2
- package/dist/utils/parsing/dateParser.js.map +1 -1
- package/dist/utils/parsing/frontmatterParser.d.ts +2 -2
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -1
- package/dist/utils/parsing/frontmatterParser.js +7 -10
- package/dist/utils/parsing/frontmatterParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.d.ts +2 -2
- package/dist/utils/parsing/htmlExtractor.d.ts.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +6 -11
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/jsonParser.d.ts +2 -2
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +4 -8
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/pdfParser.d.ts +10 -10
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -1
- package/dist/utils/parsing/pdfParser.js +26 -89
- package/dist/utils/parsing/pdfParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts +2 -2
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +4 -8
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts +2 -2
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +4 -8
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -1
- package/dist/utils/scheduling/scheduler.js +5 -6
- package/dist/utils/scheduling/scheduler.js.map +1 -1
- package/dist/utils/security/rateLimiter.d.ts +2 -2
- package/dist/utils/security/rateLimiter.d.ts.map +1 -1
- package/dist/utils/security/rateLimiter.js +1 -1
- package/dist/utils/security/rateLimiter.js.map +1 -1
- package/dist/utils/telemetry/attributes.d.ts +23 -7
- package/dist/utils/telemetry/attributes.d.ts.map +1 -1
- package/dist/utils/telemetry/attributes.js +23 -10
- package/dist/utils/telemetry/attributes.js.map +1 -1
- package/dist/utils/telemetry/trace.d.ts +3 -3
- package/dist/utils/telemetry/trace.d.ts.map +1 -1
- package/dist/utils/telemetry/trace.js +4 -2
- package/dist/utils/telemetry/trace.js.map +1 -1
- package/package.json +22 -26
- package/scripts/lint-mcp.ts +1 -3
- package/scripts/lint-packaging.ts +1 -1
- package/skills/add-service/SKILL.md +2 -2
- package/skills/add-test/SKILL.md +42 -20
- package/skills/add-tool/SKILL.md +103 -19
- package/skills/api-config/SKILL.md +4 -11
- package/skills/api-context/SKILL.md +216 -120
- package/skills/api-linter/SKILL.md +16 -3
- package/skills/api-telemetry/SKILL.md +10 -12
- package/skills/api-testing/SKILL.md +53 -52
- package/skills/api-workers/SKILL.md +9 -1
- package/skills/code-simplifier/SKILL.md +2 -2
- package/skills/design-mcp-server/SKILL.md +31 -17
- package/skills/field-test/SKILL.md +4 -2
- package/skills/polish-docs-meta/SKILL.md +1 -1
- package/skills/polish-docs-meta/references/agent-protocol.md +2 -2
- package/skills/polish-docs-meta/references/readme.md +1 -1
- package/skills/release-and-publish/SKILL.md +3 -1
- package/skills/report-issue-framework/SKILL.md +2 -2
- package/skills/report-issue-local/SKILL.md +2 -2
- package/skills/security-pass/SKILL.md +16 -14
- package/skills/tool-defs-analysis/SKILL.md +15 -5
- package/templates/.env.example +4 -0
- package/templates/AGENTS.md +6 -6
- package/templates/CLAUDE.md +6 -6
- package/templates/tests/resources/echo.resource.test.ts +16 -9
- package/dist/mcp-server/elicitation.d.ts +0 -64
- package/dist/mcp-server/elicitation.d.ts.map +0 -1
- package/dist/mcp-server/elicitation.js +0 -81
- package/dist/mcp-server/elicitation.js.map +0 -1
- package/dist/mcp-server/protocolSession.d.ts +0 -34
- package/dist/mcp-server/protocolSession.d.ts.map +0 -1
- package/dist/mcp-server/protocolSession.js +0 -13
- package/dist/mcp-server/protocolSession.js.map +0 -1
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts +0 -53
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js +0 -65
- package/dist/mcp-server/tasks/core/evictingTaskMessageQueue.js.map +0 -1
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +0 -70
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +0 -130
- package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +0 -1
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +0 -109
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +0 -209
- package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +0 -1
- package/dist/mcp-server/tasks/core/taskManager.d.ts +0 -91
- package/dist/mcp-server/tasks/core/taskManager.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/taskManager.js +0 -210
- package/dist/mcp-server/tasks/core/taskManager.js.map +0 -1
- package/dist/mcp-server/tasks/core/taskTypes.d.ts +0 -18
- package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +0 -1
- package/dist/mcp-server/tasks/core/taskTypes.js +0 -20
- package/dist/mcp-server/tasks/core/taskTypes.js.map +0 -1
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +0 -101
- package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +0 -1
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js +0 -14
- package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +0 -1
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { config } from '../../config/index.js';
|
|
2
|
-
import { attachTypedFail, createContext } from '../../core/context.js';
|
|
3
|
-
import { DEFAULT_AUTO_TASK_TTL_MS } from '../../mcp-server/tasks/core/taskTypes.js';
|
|
4
|
-
import { isTaskToolDefinition, } from '../../mcp-server/tasks/utils/taskToolDefinition.js';
|
|
5
1
|
import { getDisabledMetadata } from '../../mcp-server/tools/utils/disabled-tool.js';
|
|
6
|
-
import {
|
|
7
|
-
import { authContext } from '../../mcp-server/transports/auth/lib/authContext.js';
|
|
8
|
-
import { withRequiredScopes } from '../../mcp-server/transports/auth/lib/authUtils.js';
|
|
2
|
+
import { advertisedOutputSchema, createToolHandler, } from '../../mcp-server/tools/utils/toolHandlerFactory.js';
|
|
9
3
|
import { JsonRpcErrorCode } from '../../types-global/errors.js';
|
|
10
4
|
import { ErrorHandler } from '../../utils/internal/error-handler/errorHandler.js';
|
|
11
5
|
import { logger } from '../../utils/internal/logger.js';
|
|
@@ -19,38 +13,26 @@ export class ToolRegistry {
|
|
|
19
13
|
this.toolDefs = toolDefs;
|
|
20
14
|
this.services = services;
|
|
21
15
|
}
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
* Automatically detects standard tools, auto-task tools (task: true),
|
|
25
|
-
* and escape-hatch TaskToolDefinitions.
|
|
26
|
-
*/
|
|
27
|
-
async registerAll(server, protocolSession) {
|
|
16
|
+
/** Registers all tool definitions with the provided McpServer instance. */
|
|
17
|
+
async registerAll(server, subscriptions, bus) {
|
|
28
18
|
// Reset per-server uniqueness tracking — registries are shared across
|
|
29
|
-
// per-request McpServer instances
|
|
19
|
+
// per-request McpServer instances under HTTP serving.
|
|
30
20
|
this.registeredNames.clear();
|
|
31
21
|
// Per-server notifier closures targeting `server.send*ListChanged()`. Bound
|
|
32
22
|
// once per registerAll() call — never mutated on a shared services object
|
|
33
|
-
// (which would race under concurrent HTTP requests). The
|
|
34
|
-
//
|
|
35
|
-
// the background auto-task path uses them directly (no request scope), so
|
|
36
|
-
// those notifications deliver on stdio but drop under HTTP.
|
|
23
|
+
// (which would race under concurrent HTTP requests). The handler factory
|
|
24
|
+
// prefers request-scoped notifiers (#135) and falls back to these.
|
|
37
25
|
const notifiers = {
|
|
38
|
-
elicitInput: (params) => server.server.elicitInput(params),
|
|
39
|
-
getClientCapabilities: () => protocolSession?.clientCapabilities ?? server.server.getClientCapabilities(),
|
|
40
26
|
notifyPromptListChanged: () => server.sendPromptListChanged(),
|
|
41
27
|
notifyResourceListChanged: () => server.sendResourceListChanged(),
|
|
42
|
-
notifyResourceUpdated: (uri) => server.server.sendResourceUpdated({ uri }),
|
|
43
28
|
notifyToolListChanged: () => server.sendToolListChanged(),
|
|
44
|
-
|
|
45
|
-
...(
|
|
46
|
-
registerRequest: protocolSession.registerRequest,
|
|
47
|
-
}),
|
|
29
|
+
...(subscriptions && { subscriptions }),
|
|
30
|
+
...(bus && { bus }),
|
|
48
31
|
};
|
|
49
32
|
const context = requestContextService.createRequestContext({
|
|
50
33
|
operation: 'ToolRegistry.registerAll',
|
|
51
34
|
});
|
|
52
|
-
const
|
|
53
|
-
const taskTools = [];
|
|
35
|
+
const tools = [];
|
|
54
36
|
let disabledCount = 0;
|
|
55
37
|
for (const def of this.toolDefs) {
|
|
56
38
|
const disabled = getDisabledMetadata(def);
|
|
@@ -59,31 +41,15 @@ export class ToolRegistry {
|
|
|
59
41
|
logger.debug(`Skipping MCP registration for disabled tool '${def.name}': ${disabled.reason}`, context);
|
|
60
42
|
continue;
|
|
61
43
|
}
|
|
62
|
-
|
|
63
|
-
taskTools.push(def);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
standardTools.push(def);
|
|
67
|
-
}
|
|
44
|
+
tools.push(def);
|
|
68
45
|
}
|
|
69
46
|
const disabledNote = disabledCount > 0 ? ` (${disabledCount} disabled, skipped)` : '';
|
|
70
|
-
logger.debug(`Registering ${
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
for (const toolDef of standardTools) {
|
|
77
|
-
if (toolDef.task) {
|
|
78
|
-
await this.registerAutoTaskTool(server, toolDef, notifiers);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
await this.registerTool(server, toolDef, notifiers);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Register escape-hatch task tools via experimental API
|
|
85
|
-
for (const toolDef of taskTools) {
|
|
86
|
-
await this.registerTaskTool(server, toolDef);
|
|
47
|
+
logger.debug(`Registering ${tools.length} tool(s)${disabledNote}...`, context);
|
|
48
|
+
// `tools/list` and `tools/call` are installed by the SDK from the declared
|
|
49
|
+
// `tools` capability, so a server with every tool disabled still answers
|
|
50
|
+
// `tools/list` with an empty array rather than `-32601`.
|
|
51
|
+
for (const toolDef of tools) {
|
|
52
|
+
await this.registerTool(server, toolDef, notifiers);
|
|
87
53
|
}
|
|
88
54
|
}
|
|
89
55
|
/** Throws at startup if a tool with the same name was already registered. */
|
|
@@ -104,7 +70,7 @@ export class ToolRegistry {
|
|
|
104
70
|
async registerTool(server, tool, notifiers) {
|
|
105
71
|
const registrationContext = requestContextService.createRequestContext({
|
|
106
72
|
operation: 'ToolRegistry.registerTool',
|
|
107
|
-
toolName: tool.name,
|
|
73
|
+
additionalContext: { toolName: tool.name },
|
|
108
74
|
});
|
|
109
75
|
logger.debug(`Registering tool: '${tool.name}'`, registrationContext);
|
|
110
76
|
this.assertUniqueName(tool.name);
|
|
@@ -119,7 +85,7 @@ export class ToolRegistry {
|
|
|
119
85
|
title,
|
|
120
86
|
description: tool.description,
|
|
121
87
|
inputSchema: tool.input,
|
|
122
|
-
outputSchema:
|
|
88
|
+
outputSchema: advertisedOutputSchema(tool),
|
|
123
89
|
...(tool.annotations && { annotations: tool.annotations }),
|
|
124
90
|
...(tool._meta && { _meta: tool._meta }),
|
|
125
91
|
}, handler);
|
|
@@ -131,196 +97,5 @@ export class ToolRegistry {
|
|
|
131
97
|
critical: true,
|
|
132
98
|
});
|
|
133
99
|
}
|
|
134
|
-
/**
|
|
135
|
-
* Registers a tool with `task: true` via the experimental Tasks API.
|
|
136
|
-
* Auto-generates task handlers from the definition's `handler` function.
|
|
137
|
-
* The framework manages the full task lifecycle: create, background run, store result.
|
|
138
|
-
*/
|
|
139
|
-
async registerAutoTaskTool(server, tool, notifiers) {
|
|
140
|
-
const registrationContext = requestContextService.createRequestContext({
|
|
141
|
-
operation: 'ToolRegistry.registerAutoTaskTool',
|
|
142
|
-
toolName: tool.name,
|
|
143
|
-
});
|
|
144
|
-
logger.debug(`Registering auto-task tool (task: true): '${tool.name}'`, registrationContext);
|
|
145
|
-
this.assertUniqueName(tool.name);
|
|
146
|
-
await ErrorHandler.tryCatch(() => {
|
|
147
|
-
if (!this.services) {
|
|
148
|
-
throw new Error(`Cannot register auto-task tool '${tool.name}': HandlerFactoryServices not provided to ToolRegistry`);
|
|
149
|
-
}
|
|
150
|
-
const services = this.services;
|
|
151
|
-
const title = tool.title ?? tool.annotations?.title ?? this.deriveTitleFromName(tool.name);
|
|
152
|
-
const taskTtlMs = config.tasks.defaultTtlMs ?? DEFAULT_AUTO_TASK_TTL_MS;
|
|
153
|
-
const formatter = (result) => tool.format
|
|
154
|
-
? tool.format(result)
|
|
155
|
-
: [{ type: 'text', text: JSON.stringify(result, null, 2) }];
|
|
156
|
-
server.experimental.tasks.registerToolTask(tool.name, {
|
|
157
|
-
title,
|
|
158
|
-
description: tool.description,
|
|
159
|
-
inputSchema: tool.input,
|
|
160
|
-
outputSchema: effectiveOutputSchema(tool),
|
|
161
|
-
...(tool.annotations && { annotations: tool.annotations }),
|
|
162
|
-
...(tool._meta && { _meta: tool._meta }),
|
|
163
|
-
execution: { taskSupport: 'optional' },
|
|
164
|
-
}, {
|
|
165
|
-
createTask: async (args, extra) => {
|
|
166
|
-
// Capture auth info from the request's ALS before firing the
|
|
167
|
-
// background handler — ALS is gone once we leave this scope.
|
|
168
|
-
const callerAuth = authContext.getStore()?.authInfo;
|
|
169
|
-
// Check inline auth scopes in the request path (inside ALS context)
|
|
170
|
-
// before creating the task — not in the background handler.
|
|
171
|
-
if (tool.auth && tool.auth.length > 0) {
|
|
172
|
-
withRequiredScopes(tool.auth);
|
|
173
|
-
}
|
|
174
|
-
const validatedInput = tool.input.parse(args);
|
|
175
|
-
const task = await extra.taskStore.createTask({
|
|
176
|
-
ttl: taskTtlMs,
|
|
177
|
-
pollInterval: 1000,
|
|
178
|
-
});
|
|
179
|
-
// Fire-and-forget: run handler in background
|
|
180
|
-
void this.runAutoTaskHandler(tool, validatedInput, services, notifiers, formatter, {
|
|
181
|
-
taskId: task.taskId,
|
|
182
|
-
taskStore: extra.taskStore,
|
|
183
|
-
ttlMs: taskTtlMs,
|
|
184
|
-
callerAuth,
|
|
185
|
-
});
|
|
186
|
-
return { task };
|
|
187
|
-
},
|
|
188
|
-
getTask: async (_args, extra) => extra.taskStore.getTask(extra.taskId),
|
|
189
|
-
getTaskResult: async (_args, extra) => (await extra.taskStore.getTaskResult(extra.taskId)),
|
|
190
|
-
});
|
|
191
|
-
logger.debug(`Auto-task tool '${tool.name}' registered successfully (experimental).`, registrationContext);
|
|
192
|
-
}, {
|
|
193
|
-
operation: `RegisteringAutoTaskTool_${tool.name}`,
|
|
194
|
-
context: registrationContext,
|
|
195
|
-
errorCode: JsonRpcErrorCode.InitializationFailed,
|
|
196
|
-
critical: true,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Runs a tool handler as a background task.
|
|
201
|
-
* Creates Context with `progress` and `signal`, stores result/error on completion.
|
|
202
|
-
* Enforces a deadline matching the task entry TTL to prevent leaked resources.
|
|
203
|
-
*/
|
|
204
|
-
async runAutoTaskHandler(tool, input, services, notifiers, formatter, opts) {
|
|
205
|
-
const { taskId, taskStore, ttlMs, callerAuth } = opts;
|
|
206
|
-
const abortController = new AbortController();
|
|
207
|
-
// Enforce handler execution deadline matching the task entry TTL.
|
|
208
|
-
// Uses setTimeout + AbortController for cross-runtime compatibility
|
|
209
|
-
// (AbortSignal.timeout() can fail in Bun's stdio transport due to realm mismatch).
|
|
210
|
-
const TIMEOUT_SENTINEL = Symbol.for('AUTO_TASK_TIMEOUT');
|
|
211
|
-
const timeoutId = setTimeout(() => abortController.abort(TIMEOUT_SENTINEL), ttlMs);
|
|
212
|
-
// Poll for cancellation every 2 seconds
|
|
213
|
-
const cancelInterval = setInterval(async () => {
|
|
214
|
-
try {
|
|
215
|
-
const task = await taskStore.getTask(taskId);
|
|
216
|
-
if (task.status === 'cancelled') {
|
|
217
|
-
abortController.abort();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
catch {
|
|
221
|
-
// Task may have been cleaned up — abort to unblock handler
|
|
222
|
-
abortController.abort();
|
|
223
|
-
}
|
|
224
|
-
}, 2000);
|
|
225
|
-
try {
|
|
226
|
-
// Auth scopes are checked in createTask (inside the request's ALS context),
|
|
227
|
-
// not here — this runs in a detached background context where ALS is gone.
|
|
228
|
-
// We use the captured callerAuth to populate ctx.auth for identity access.
|
|
229
|
-
const appContext = callerAuth
|
|
230
|
-
? requestContextService.withAuthInfo(callerAuth, {
|
|
231
|
-
operation: 'AutoTaskHandler',
|
|
232
|
-
toolName: tool.name,
|
|
233
|
-
taskId,
|
|
234
|
-
})
|
|
235
|
-
: requestContextService.createRequestContext({
|
|
236
|
-
operation: 'AutoTaskHandler',
|
|
237
|
-
additionalContext: { toolName: tool.name, taskId },
|
|
238
|
-
});
|
|
239
|
-
// Mirror createToolHandler's ctx construction so auto-task handlers that
|
|
240
|
-
// call `ctx.fail(...)` work — without `attachTypedFail` they would crash
|
|
241
|
-
// with `ctx.fail is not a function` when the contract is declared.
|
|
242
|
-
const ctx = attachTypedFail(createContext({
|
|
243
|
-
appContext,
|
|
244
|
-
logger: services.logger,
|
|
245
|
-
storage: services.storage,
|
|
246
|
-
signal: abortController.signal,
|
|
247
|
-
taskCtx: { store: taskStore, taskId },
|
|
248
|
-
notifyPromptListChanged: notifiers.notifyPromptListChanged,
|
|
249
|
-
notifyResourceListChanged: notifiers.notifyResourceListChanged,
|
|
250
|
-
notifyResourceUpdated: notifiers.notifyResourceUpdated,
|
|
251
|
-
notifyToolListChanged: notifiers.notifyToolListChanged,
|
|
252
|
-
}), tool.errors);
|
|
253
|
-
const result = await Promise.resolve(tool.handler(input, ctx));
|
|
254
|
-
const validatedResult = tool.output.parse(result);
|
|
255
|
-
// Merge enrichment into structuredContent + append the content[] trailer,
|
|
256
|
-
// mirroring the standard tool handler factory.
|
|
257
|
-
const { content, structuredContent } = buildToolSuccessResult(tool, ctx, validatedResult, formatter(validatedResult));
|
|
258
|
-
await taskStore.storeTaskResult(taskId, 'completed', { content, structuredContent });
|
|
259
|
-
}
|
|
260
|
-
catch (error) {
|
|
261
|
-
// If cancelled, the SDK already set the terminal state — don't overwrite
|
|
262
|
-
if (abortController.signal.aborted && abortController.signal.reason !== TIMEOUT_SENTINEL) {
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
// Route through ErrorHandler for OTel span, structured logging, and classification
|
|
266
|
-
ErrorHandler.handleError(error, {
|
|
267
|
-
operation: `auto-task:${tool.name}`,
|
|
268
|
-
context: { taskId, toolName: tool.name },
|
|
269
|
-
input,
|
|
270
|
-
});
|
|
271
|
-
try {
|
|
272
|
-
const isTimeout = abortController.signal.reason === TIMEOUT_SENTINEL;
|
|
273
|
-
const result = isTimeout
|
|
274
|
-
? buildToolErrorResult(JsonRpcErrorCode.Timeout, `Task timed out after ${ttlMs}ms`, undefined)
|
|
275
|
-
: classifyAndBuildToolErrorResult(error);
|
|
276
|
-
await taskStore.storeTaskResult(taskId, 'failed', result);
|
|
277
|
-
}
|
|
278
|
-
catch {
|
|
279
|
-
// Task may already be in terminal state
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
finally {
|
|
283
|
-
clearTimeout(timeoutId);
|
|
284
|
-
clearInterval(cancelInterval);
|
|
285
|
-
// Ensure abort controller is released — signals any lingering listeners
|
|
286
|
-
if (!abortController.signal.aborted) {
|
|
287
|
-
abortController.abort();
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Registers a task-based tool with the MCP server via the experimental Tasks API.
|
|
293
|
-
* Task tools support long-running async operations with polling for status and results.
|
|
294
|
-
*
|
|
295
|
-
* @experimental
|
|
296
|
-
*/
|
|
297
|
-
async registerTaskTool(server, tool) {
|
|
298
|
-
const registrationContext = requestContextService.createRequestContext({
|
|
299
|
-
operation: 'ToolRegistry.registerTaskTool',
|
|
300
|
-
toolName: tool.name,
|
|
301
|
-
});
|
|
302
|
-
logger.debug(`Registering task tool: '${tool.name}' (experimental)`, registrationContext);
|
|
303
|
-
this.assertUniqueName(tool.name);
|
|
304
|
-
await ErrorHandler.tryCatch(() => {
|
|
305
|
-
const title = tool.title ?? tool.annotations?.title ?? this.deriveTitleFromName(tool.name);
|
|
306
|
-
// TaskToolDefinition is the escape hatch for fully-custom task lifecycle
|
|
307
|
-
// and does not declare an `errors[]` contract — `_meta` flows through unchanged.
|
|
308
|
-
server.experimental.tasks.registerToolTask(tool.name, {
|
|
309
|
-
title,
|
|
310
|
-
description: tool.description,
|
|
311
|
-
inputSchema: tool.input,
|
|
312
|
-
...(tool.output && { outputSchema: tool.output }),
|
|
313
|
-
...(tool.annotations && { annotations: tool.annotations }),
|
|
314
|
-
...(tool._meta && { _meta: tool._meta }),
|
|
315
|
-
execution: tool.execution,
|
|
316
|
-
}, tool.taskHandlers);
|
|
317
|
-
logger.debug(`Task tool '${tool.name}' registered successfully (experimental).`, registrationContext);
|
|
318
|
-
}, {
|
|
319
|
-
operation: `RegisteringTaskTool_${tool.name}`,
|
|
320
|
-
context: registrationContext,
|
|
321
|
-
errorCode: JsonRpcErrorCode.InitializationFailed,
|
|
322
|
-
critical: true,
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
100
|
}
|
|
326
101
|
//# sourceMappingURL=tool-registration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Runtime shape checks for the Zod roots a tool definition may
|
|
3
|
+
* declare. Zod 4 tags every schema with `_zod.def.type`, and a discriminated
|
|
4
|
+
* union tags as `'union'` like any other — the discriminator on its `def` is
|
|
5
|
+
* what separates the two. Kept in one place so the definition builder, the
|
|
6
|
+
* server manifest, and the linter agree on what a union root is.
|
|
7
|
+
* @module src/mcp-server/tools/utils/schemaShape
|
|
8
|
+
*/
|
|
9
|
+
import type { ZodDiscriminatedUnion, ZodObject, ZodRawShape } from 'zod';
|
|
10
|
+
/** True when `value` is a `z.object()`. */
|
|
11
|
+
export declare function isZodObjectSchema(value: unknown): value is ZodObject<ZodRawShape>;
|
|
12
|
+
/**
|
|
13
|
+
* True when `value` is a `z.discriminatedUnion()`.
|
|
14
|
+
*
|
|
15
|
+
* A plain `z.union()` also tags as `'union'` but carries no `discriminator`, so
|
|
16
|
+
* the discriminator string is the distinguishing field. Only the discriminated
|
|
17
|
+
* form is accepted as a tool input root: a bare union gives the model no key to
|
|
18
|
+
* choose a branch by, and every variant's `required` list would apply at once.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isDiscriminatedUnionSchema(value: unknown): value is ZodDiscriminatedUnion<readonly ZodObject<ZodRawShape>[]>;
|
|
21
|
+
/**
|
|
22
|
+
* The object variants of a tool input root: the union's options, or the single
|
|
23
|
+
* object itself. Empty when the schema is neither — callers that lint or read
|
|
24
|
+
* shapes then have nothing to walk rather than a partial view.
|
|
25
|
+
*/
|
|
26
|
+
export declare function inputVariants(schema: unknown): readonly ZodObject<ZodRawShape>[];
|
|
27
|
+
//# sourceMappingURL=schemaShape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaShape.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAOzE,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAInE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAQhF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Runtime shape checks for the Zod roots a tool definition may
|
|
3
|
+
* declare. Zod 4 tags every schema with `_zod.def.type`, and a discriminated
|
|
4
|
+
* union tags as `'union'` like any other — the discriminator on its `def` is
|
|
5
|
+
* what separates the two. Kept in one place so the definition builder, the
|
|
6
|
+
* server manifest, and the linter agree on what a union root is.
|
|
7
|
+
* @module src/mcp-server/tools/utils/schemaShape
|
|
8
|
+
*/
|
|
9
|
+
/** True when `value` is a `z.object()`. */
|
|
10
|
+
export function isZodObjectSchema(value) {
|
|
11
|
+
if (!value || typeof value !== 'object')
|
|
12
|
+
return false;
|
|
13
|
+
return value._zod?.def?.type === 'object';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* True when `value` is a `z.discriminatedUnion()`.
|
|
17
|
+
*
|
|
18
|
+
* A plain `z.union()` also tags as `'union'` but carries no `discriminator`, so
|
|
19
|
+
* the discriminator string is the distinguishing field. Only the discriminated
|
|
20
|
+
* form is accepted as a tool input root: a bare union gives the model no key to
|
|
21
|
+
* choose a branch by, and every variant's `required` list would apply at once.
|
|
22
|
+
*/
|
|
23
|
+
export function isDiscriminatedUnionSchema(value) {
|
|
24
|
+
if (!value || typeof value !== 'object')
|
|
25
|
+
return false;
|
|
26
|
+
const def = value._zod?.def;
|
|
27
|
+
return def?.type === 'union' && typeof def.discriminator === 'string';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The object variants of a tool input root: the union's options, or the single
|
|
31
|
+
* object itself. Empty when the schema is neither — callers that lint or read
|
|
32
|
+
* shapes then have nothing to walk rather than a partial view.
|
|
33
|
+
*/
|
|
34
|
+
export function inputVariants(schema) {
|
|
35
|
+
if (isDiscriminatedUnionSchema(schema)) {
|
|
36
|
+
const options = schema.options;
|
|
37
|
+
return Array.isArray(options)
|
|
38
|
+
? options.filter(isZodObjectSchema)
|
|
39
|
+
: [];
|
|
40
|
+
}
|
|
41
|
+
return isZodObjectSchema(schema) ? [schema] : [];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=schemaShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaShape.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,OAAQ,KAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAI,KAAsB,CAAC,IAAI,EAAE,GAAG,CAAC;IAC9C,OAAO,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA8B;YACjE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* import the wrapper from the same `/tools` subpath as the builder.
|
|
8
8
|
* @module src/mcp-server/tools/utils/toolDefinition
|
|
9
9
|
*/
|
|
10
|
-
import type { ContentBlock } from '@modelcontextprotocol/
|
|
11
|
-
import type
|
|
10
|
+
import type { ContentBlock } from '@modelcontextprotocol/server';
|
|
11
|
+
import { type ZodDiscriminatedUnion, type ZodObject, type ZodRawShape, z } from 'zod';
|
|
12
12
|
import type { HandlerContext, ReasonOf } from '../../../core/context.js';
|
|
13
13
|
import type { ErrorContract } from '../../../types-global/errors.js';
|
|
14
14
|
export { type DisabledMetadata, disabledTool } from './disabled-tool.js';
|
|
@@ -82,6 +82,23 @@ export type EnrichmentTrailerConfig<TEnrich extends ZodRawShape | undefined> = T
|
|
|
82
82
|
render?(value: z.infer<TEnrich[K]>): string;
|
|
83
83
|
};
|
|
84
84
|
} : never;
|
|
85
|
+
/**
|
|
86
|
+
* What a tool may declare as its `input` root.
|
|
87
|
+
*
|
|
88
|
+
* A `z.object()` is the common shape. A `z.discriminatedUnion()` is the
|
|
89
|
+
* multi-mode shape: mutually exclusive argument sets with a literal
|
|
90
|
+
* discriminator and per-variant required fields. It advertises as
|
|
91
|
+
* `{"type":"object","oneOf":[<branch>, …]}` — branches intact, each carrying
|
|
92
|
+
* its own `required` and `const`-tagged discriminator — with identical bytes on
|
|
93
|
+
* a 2025-11-25 and a 2026-07-28 connection, since the legacy projection
|
|
94
|
+
* inspects `outputSchema` alone.
|
|
95
|
+
*
|
|
96
|
+
* Input roots may be unions; **output roots may not**. The 2025-era projection
|
|
97
|
+
* rewrites a non-object output root to `{ result: <natural> }` and wraps
|
|
98
|
+
* `structuredContent` to match, which would break the success path for every
|
|
99
|
+
* current client. `output` and `enrichment` stay `ZodObject`-only.
|
|
100
|
+
*/
|
|
101
|
+
export type ToolInputSchema = ZodDiscriminatedUnion<readonly ZodObject<ZodRawShape>[]> | ZodObject<ZodRawShape>;
|
|
85
102
|
/**
|
|
86
103
|
* Represents the complete, self-contained definition of an MCP tool.
|
|
87
104
|
*
|
|
@@ -94,7 +111,7 @@ export type EnrichmentTrailerConfig<TEnrich extends ZodRawShape | undefined> = T
|
|
|
94
111
|
* none is declared). Its inferred fields type `ctx.enrich(...)` and are advertised
|
|
95
112
|
* to clients as part of `outputSchema`.
|
|
96
113
|
*/
|
|
97
|
-
export interface ToolDefinition<TInput extends
|
|
114
|
+
export interface ToolDefinition<TInput extends ToolInputSchema = ZodObject<ZodRawShape>, TOutput extends ZodObject<ZodRawShape> = ZodObject<ZodRawShape>, TErrors extends readonly ErrorContract[] | undefined = undefined, TEnrich extends ZodRawShape | undefined = undefined> {
|
|
98
115
|
/** Protocol-level metadata (e.g., MCP Apps extension). */
|
|
99
116
|
_meta?: Record<string, unknown>;
|
|
100
117
|
/** UI/behavior hints for clients. */
|
|
@@ -193,7 +210,12 @@ export interface ToolDefinition<TInput extends ZodObject<ZodRawShape> = ZodObjec
|
|
|
193
210
|
* types remain assignable to the type-erased `AnyToolDefinition` array.
|
|
194
211
|
*/
|
|
195
212
|
handler(input: z.infer<TInput>, ctx: HandlerContext<ReasonOf<TErrors>, TEnrich>): Promise<z.infer<TOutput>> | z.infer<TOutput>;
|
|
196
|
-
/**
|
|
213
|
+
/**
|
|
214
|
+
* Zod schema for input validation. All fields need `.describe()`.
|
|
215
|
+
*
|
|
216
|
+
* A `z.object()` root, or a `z.discriminatedUnion()` of object variants for a
|
|
217
|
+
* multi-mode tool — see {@link ToolInputSchema}.
|
|
218
|
+
*/
|
|
197
219
|
input: TInput;
|
|
198
220
|
/** Programmatic unique name (snake_case). */
|
|
199
221
|
name: string;
|
|
@@ -207,13 +229,11 @@ export interface ToolDefinition<TInput extends ZodObject<ZodRawShape> = ZodObjec
|
|
|
207
229
|
* domain-namespaced subdirectories or a filename that doesn't mirror `name`).
|
|
208
230
|
*/
|
|
209
231
|
sourceUrl?: string;
|
|
210
|
-
/** When true, the framework manages task lifecycle automatically. */
|
|
211
|
-
task?: boolean;
|
|
212
232
|
/** Human-readable title for UI display. */
|
|
213
233
|
title?: string;
|
|
214
234
|
}
|
|
215
235
|
/** Type-erased union for mixed arrays passed to createApp(). */
|
|
216
|
-
export type AnyToolDefinition = ToolDefinition<
|
|
236
|
+
export type AnyToolDefinition = ToolDefinition<ToolInputSchema, ZodObject<ZodRawShape>, readonly ErrorContract[] | undefined, ZodRawShape | undefined>;
|
|
217
237
|
/**
|
|
218
238
|
* Creates a tool definition with full type inference from Zod schemas.
|
|
219
239
|
*
|
|
@@ -261,5 +281,5 @@ export type AnyToolDefinition = ToolDefinition<ZodObject<ZodRawShape>, ZodObject
|
|
|
261
281
|
* });
|
|
262
282
|
* ```
|
|
263
283
|
*/
|
|
264
|
-
export declare function tool<TInput extends
|
|
284
|
+
export declare function tool<TInput extends ToolInputSchema, TOutput extends ZodObject<ZodRawShape>, const TErrors extends readonly ErrorContract[] | undefined = undefined, const TEnrich extends ZodRawShape | undefined = undefined>(name: string, options: Omit<ToolDefinition<TInput, TOutput, TErrors, TEnrich>, 'name'>): ToolDefinition<TInput, TOutput, TErrors, TEnrich>;
|
|
265
285
|
//# sourceMappingURL=toolDefinition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"toolDefinition.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,KAAK,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,uBAAuB,CAAC,OAAO,SAAS,WAAW,GAAG,SAAS,IACzE,OAAO,SAAS,WAAW,GACvB;KACG,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;;;;;WAOG;QACH,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;KAC7C;CACF,GACD,KAAK,CAAC;AAEZ;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,eAAe,GACvB,qBAAqB,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,GACxD,SAAS,CAAC,WAAW,CAAC,CAAC;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc,CAC7B,MAAM,SAAS,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,EACvD,OAAO,SAAS,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,EAC/D,OAAO,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,GAAG,SAAS,EAChE,OAAO,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS;IAEnD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,qCAAqC;IACrC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrD;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,YAAY,EAAE,CAAC;IAClD;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EACtB,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAC5C,eAAe,EACf,SAAS,CAAC,WAAW,CAAC,EACtB,SAAS,aAAa,EAAE,GAAG,SAAS,EACpC,WAAW,GAAG,SAAS,CACxB,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,eAAe,EAC9B,OAAO,SAAS,SAAS,CAAC,WAAW,CAAC,EACtC,KAAK,CAAC,OAAO,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,GAAG,SAAS,EACtE,KAAK,CAAC,OAAO,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAEzD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,GACvE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAGnD"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* import the wrapper from the same `/tools` subpath as the builder.
|
|
8
8
|
* @module src/mcp-server/tools/utils/toolDefinition
|
|
9
9
|
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { isDiscriminatedUnionSchema } from './schemaShape.js';
|
|
10
12
|
export { disabledTool } from './disabled-tool.js';
|
|
11
13
|
// ---------------------------------------------------------------------------
|
|
12
14
|
// Builder
|
|
@@ -59,6 +61,66 @@ export { disabledTool } from './disabled-tool.js';
|
|
|
59
61
|
* ```
|
|
60
62
|
*/
|
|
61
63
|
export function tool(name, options) {
|
|
62
|
-
|
|
64
|
+
assertErrorKeyUnreserved(name, options.output, options.enrichment);
|
|
65
|
+
return { name, ...options, input: strictenInput(options.input) };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Rejects a definition whose success payload declares a field named `error`.
|
|
69
|
+
*
|
|
70
|
+
* `structuredContent.error` is the framework's failure envelope on the wire, so a
|
|
71
|
+
* success field of the same name cannot be told apart from a failure by any
|
|
72
|
+
* client. It also breaks the advertised schema outright: the envelope overwrites
|
|
73
|
+
* the declared field, while the success branch still requires — and forbids —
|
|
74
|
+
* the same key, leaving a branch no result can satisfy.
|
|
75
|
+
*
|
|
76
|
+
* Thrown at definition time, so the conflict surfaces at import rather than as a
|
|
77
|
+
* client-side validation failure against a schema nothing matches.
|
|
78
|
+
*/
|
|
79
|
+
function assertErrorKeyUnreserved(name, output, enrichment) {
|
|
80
|
+
const source = 'error' in output.shape
|
|
81
|
+
? 'output'
|
|
82
|
+
: enrichment && 'error' in enrichment
|
|
83
|
+
? 'enrichment'
|
|
84
|
+
: undefined;
|
|
85
|
+
if (!source)
|
|
86
|
+
return;
|
|
87
|
+
throw new Error(`Tool '${name}' declares an 'error' field in its ${source} schema. That key is ` +
|
|
88
|
+
'reserved: a failed call returns `structuredContent.error` ({ code, message, ' +
|
|
89
|
+
'data }), so a success payload using it is indistinguishable from a failure. ' +
|
|
90
|
+
"Rename the field (e.g. 'errorText', 'failureDetail').");
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Applies strict semantics to a tool's input schema.
|
|
94
|
+
*
|
|
95
|
+
* An unrecognized argument key is rejected instead of silently stripped, and
|
|
96
|
+
* the advertised `inputSchema` carries `additionalProperties: false` to match.
|
|
97
|
+
* Stripping turns a caller's misspelled key into a wrong answer they cannot
|
|
98
|
+
* detect: the value vanishes before the handler runs and the call fails
|
|
99
|
+
* downstream pointing at the wrong problem (#232).
|
|
100
|
+
*
|
|
101
|
+
* Only the default (strip) mode is upgraded. A definition that explicitly
|
|
102
|
+
* declared `.passthrough()` or `.catchall(...)` asked for an open object, and
|
|
103
|
+
* that intent wins — Zod records it as a catchall type (a `ZodNever` catchall
|
|
104
|
+
* for `.strict()` itself), which is what this checks for.
|
|
105
|
+
*
|
|
106
|
+
* A discriminated-union root is strictened per variant, since the branch is
|
|
107
|
+
* where the properties live and `additionalProperties` is emitted. The union is
|
|
108
|
+
* rebuilt from the strictened options rather than mutated: Zod indexes variants
|
|
109
|
+
* by discriminator value at construction time, so replacing the options on a
|
|
110
|
+
* built union would leave the index pointing at the loose ones.
|
|
111
|
+
*
|
|
112
|
+
* Root-level only, matching `.strict()` itself: a nested `z.object()` inside
|
|
113
|
+
* the input still strips unless it is strict in its own right.
|
|
114
|
+
*/
|
|
115
|
+
function strictenInput(input) {
|
|
116
|
+
if (isDiscriminatedUnionSchema(input)) {
|
|
117
|
+
const options = input.options;
|
|
118
|
+
const strictened = options.map((option) => option.def.catchall === undefined ? option.strict() : option);
|
|
119
|
+
if (strictened.every((option, i) => option === options[i]))
|
|
120
|
+
return input;
|
|
121
|
+
return z.discriminatedUnion(input.def.discriminator, strictened);
|
|
122
|
+
}
|
|
123
|
+
const declaresCatchall = input.def.catchall !== undefined;
|
|
124
|
+
return declaresCatchall ? input : input.strict();
|
|
63
125
|
}
|
|
64
126
|
//# sourceMappingURL=toolDefinition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"toolDefinition.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolDefinition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAgE,CAAC,EAAE,MAAM,KAAK,CAAC;AAItF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAyB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwPzE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,UAAU,IAAI,CAMlB,IAAY,EACZ,OAAwE;IAExE,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAC/B,IAAY,EACZ,MAA8B,EAC9B,UAAmC;IAEnC,MAAM,MAAM,GACV,OAAO,IAAI,MAAM,CAAC,KAAK;QACrB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,IAAI,OAAO,IAAI,UAAU;YACnC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,sCAAsC,MAAM,uBAAuB;QAC9E,8EAA8E;QAC9E,8EAA8E;QAC9E,uDAAuD,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,aAAa,CAAiC,KAAa;IAClE,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA4C,CAAC;QACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAC7D,CAAC;QACF,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,UAAmB,CAAsB,CAAC;IACjG,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC1D,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,MAAM,EAAa,CAAC;AAC/D,CAAC"}
|