@ibm/ibmi-mcp-server 0.1.0
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/README.md +88 -0
- package/dist/config/index.d.ts +100 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +463 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/resolver.d.ts +32 -0
- package/dist/config/resolver.d.ts.map +1 -0
- package/dist/config/resolver.js +60 -0
- package/dist/config/resolver.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts +11 -0
- package/dist/ibmi-mcp-server/auth/crypto.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/crypto.js +100 -0
- package/dist/ibmi-mcp-server/auth/crypto.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts +28 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js +243 -0
- package/dist/ibmi-mcp-server/auth/httpAuthEndpoint.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/auth/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/index.js +8 -0
- package/dist/ibmi-mcp-server/auth/index.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts +86 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js +214 -0
- package/dist/ibmi-mcp-server/auth/tokenManager.js.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts +31 -0
- package/dist/ibmi-mcp-server/auth/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/auth/types.js +5 -0
- package/dist/ibmi-mcp-server/auth/types.js.map +1 -0
- package/dist/ibmi-mcp-server/index.d.ts +8 -0
- package/dist/ibmi-mcp-server/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/index.js +126 -0
- package/dist/ibmi-mcp-server/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js +7 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/index.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts +106 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js +145 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts +16 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js +110 -0
- package/dist/ibmi-mcp-server/resources/toolsetsResource/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts +174 -0
- package/dist/ibmi-mcp-server/schemas/common.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/common.js +119 -0
- package/dist/ibmi-mcp-server/schemas/common.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts +858 -0
- package/dist/ibmi-mcp-server/schemas/config.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/config.js +248 -0
- package/dist/ibmi-mcp-server/schemas/config.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts +12 -0
- package/dist/ibmi-mcp-server/schemas/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/index.js +20 -0
- package/dist/ibmi-mcp-server/schemas/index.js.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts +287 -0
- package/dist/ibmi-mcp-server/schemas/tools.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/schemas/tools.js +167 -0
- package/dist/ibmi-mcp-server/schemas/tools.js.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js +262 -0
- package/dist/ibmi-mcp-server/services/authenticatedPoolManager.js.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts +130 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js +431 -0
- package/dist/ibmi-mcp-server/services/baseConnectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts +60 -0
- package/dist/ibmi-mcp-server/services/connectionPool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js +153 -0
- package/dist/ibmi-mcp-server/services/connectionPool.js.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts +35 -0
- package/dist/ibmi-mcp-server/services/securityValidation.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js +93 -0
- package/dist/ibmi-mcp-server/services/securityValidation.js.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts +82 -0
- package/dist/ibmi-mcp-server/services/sourceManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js +151 -0
- package/dist/ibmi-mcp-server/services/sourceManager.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js +9 -0
- package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +51 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js +179 -0
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +52 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js +161 -0
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js +13 -0
- package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js +190 -0
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +18 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js +64 -0
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +42 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +156 -0
- package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js +6 -0
- package/dist/ibmi-mcp-server/utils/cli/index.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +77 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js +309 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts +143 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js +665 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigBuilder.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts +71 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js +158 -0
- package/dist/ibmi-mcp-server/utils/config/toolConfigCache.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +206 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +65 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +236 -0
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts +175 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js +460 -0
- package/dist/ibmi-mcp-server/utils/config/toolProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +126 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +240 -0
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts +74 -0
- package/dist/ibmi-mcp-server/utils/config/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/types.js +8 -0
- package/dist/ibmi-mcp-server/utils/config/types.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +116 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +426 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts +182 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js +726 -0
- package/dist/ibmi-mcp-server/utils/sql/parameterProcessor.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts +90 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js +187 -0
- package/dist/ibmi-mcp-server/utils/sql/sqlTemplateProcessor.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +270 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/constants.d.ts +13 -0
- package/dist/mcp-server/constants.d.ts.map +1 -0
- package/dist/mcp-server/constants.js +13 -0
- package/dist/mcp-server/constants.js.map +1 -0
- package/dist/mcp-server/logging/index.d.ts +8 -0
- package/dist/mcp-server/logging/index.d.ts.map +1 -0
- package/dist/mcp-server/logging/index.js +8 -0
- package/dist/mcp-server/logging/index.js.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts +38 -0
- package/dist/mcp-server/logging/setLevelHandler.d.ts.map +1 -0
- package/dist/mcp-server/logging/setLevelHandler.js +83 -0
- package/dist/mcp-server/logging/setLevelHandler.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts +14 -0
- package/dist/mcp-server/resources/echoResource/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/index.js +14 -0
- package/dist/mcp-server/resources/echoResource/index.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts +37 -0
- package/dist/mcp-server/resources/echoResource/logic.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/logic.js +46 -0
- package/dist/mcp-server/resources/echoResource/logic.js.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts +7 -0
- package/dist/mcp-server/resources/echoResource/registration.d.ts.map +1 -0
- package/dist/mcp-server/resources/echoResource/registration.js +51 -0
- package/dist/mcp-server/resources/echoResource/registration.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +10 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +19 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts +43 -0
- package/dist/mcp-server/resources/utils/resource-utils.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/resource-utils.js +44 -0
- package/dist/mcp-server/resources/utils/resource-utils.js.map +1 -0
- package/dist/mcp-server/server.d.ts +23 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +114 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js +8 -0
- package/dist/mcp-server/tools/catFactFetcher/index.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +52 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js +95 -0
- package/dist/mcp-server/tools/catFactFetcher/logic.js.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +9 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js +43 -0
- package/dist/mcp-server/tools/catFactFetcher/registration.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts +13 -0
- package/dist/mcp-server/tools/echoTool/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/index.js +13 -0
- package/dist/mcp-server/tools/echoTool/index.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts +69 -0
- package/dist/mcp-server/tools/echoTool/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/logic.js +119 -0
- package/dist/mcp-server/tools/echoTool/logic.js.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts +9 -0
- package/dist/mcp-server/tools/echoTool/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/echoTool/registration.js +45 -0
- package/dist/mcp-server/tools/echoTool/registration.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts +7 -0
- package/dist/mcp-server/tools/imageTest/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/index.js +7 -0
- package/dist/mcp-server/tools/imageTest/index.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts +27 -0
- package/dist/mcp-server/tools/imageTest/logic.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/logic.js +44 -0
- package/dist/mcp-server/tools/imageTest/logic.js.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts +9 -0
- package/dist/mcp-server/tools/imageTest/registration.d.ts.map +1 -0
- package/dist/mcp-server/tools/imageTest/registration.js +49 -0
- package/dist/mcp-server/tools/imageTest/registration.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +4 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +13 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts +43 -0
- package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/tool-utils.js +44 -0
- package/dist/mcp-server/tools/utils/tool-utils.js.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
- package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authFactory.js +46 -0
- package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +20 -0
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js +58 -0
- package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/auth/index.d.ts +14 -0
- package/dist/mcp-server/transports/auth/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/index.js +12 -0
- package/dist/mcp-server/transports/auth/index.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
- package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
- package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +15 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js +9 -0
- package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +19 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js +53 -0
- package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
- package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts +21 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js +64 -0
- package/dist/mcp-server/transports/auth/strategies/ibmiTokenStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +8 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +118 -0
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts +48 -0
- package/dist/mcp-server/transports/core/autoTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js +57 -0
- package/dist/mcp-server/transports/core/autoTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts +17 -0
- package/dist/mcp-server/transports/core/baseTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js +20 -0
- package/dist/mcp-server/transports/core/baseTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts +27 -0
- package/dist/mcp-server/transports/core/headerUtils.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/headerUtils.js +53 -0
- package/dist/mcp-server/transports/core/headerUtils.js.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +77 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js +150 -0
- package/dist/mcp-server/transports/core/honoNodeBridge.js.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +81 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js +326 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +57 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js +151 -0
- package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts +9 -0
- package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportRequest.js +2 -0
- package/dist/mcp-server/transports/core/transportRequest.js.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts +112 -0
- package/dist/mcp-server/transports/core/transportTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/transportTypes.js +15 -0
- package/dist/mcp-server/transports/core/transportTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js +86 -0
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts +27 -0
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTransport.js +407 -0
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
- package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/httpTypes.js +6 -0
- package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
- package/dist/mcp-server/transports/http/index.d.ts +8 -0
- package/dist/mcp-server/transports/http/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/index.js +7 -0
- package/dist/mcp-server/transports/http/index.js.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts +21 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +54 -0
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -0
- package/dist/mcp-server/transports/stdio/index.d.ts +6 -0
- package/dist/mcp-server/transports/stdio/index.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/index.js +6 -0
- package/dist/mcp-server/transports/stdio/index.js.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +43 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js +71 -0
- package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts +55 -0
- package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBConnectionManager.js +184 -0
- package/dist/services/duck-db/duckDBConnectionManager.js.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts +18 -0
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js +115 -0
- package/dist/services/duck-db/duckDBQueryExecutor.js.map +1 -0
- package/dist/services/duck-db/duckDBService.d.ts +27 -0
- package/dist/services/duck-db/duckDBService.d.ts.map +1 -0
- package/dist/services/duck-db/duckDBService.js +151 -0
- package/dist/services/duck-db/duckDBService.js.map +1 -0
- package/dist/services/duck-db/types.d.ts +135 -0
- package/dist/services/duck-db/types.d.ts.map +1 -0
- package/dist/services/duck-db/types.js +6 -0
- package/dist/services/duck-db/types.js.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts +36 -0
- package/dist/services/llm-providers/openRouterProvider.d.ts.map +1 -0
- package/dist/services/llm-providers/openRouterProvider.js +235 -0
- package/dist/services/llm-providers/openRouterProvider.js.map +1 -0
- package/dist/services/supabase/supabaseClient.d.ts +25 -0
- package/dist/services/supabase/supabaseClient.d.ts.map +1 -0
- package/dist/services/supabase/supabaseClient.js +68 -0
- package/dist/services/supabase/supabaseClient.js.map +1 -0
- package/dist/storage/duckdbExample.d.ts +8 -0
- package/dist/storage/duckdbExample.d.ts.map +1 -0
- package/dist/storage/duckdbExample.js +197 -0
- package/dist/storage/duckdbExample.js.map +1 -0
- package/dist/types-global/errors.d.ts +101 -0
- package/dist/types-global/errors.d.ts.map +1 -0
- package/dist/types-global/errors.js +109 -0
- package/dist/types-global/errors.js.map +1 -0
- package/dist/utils/formatting/index.d.ts +10 -0
- package/dist/utils/formatting/index.d.ts.map +1 -0
- package/dist/utils/formatting/index.js +10 -0
- package/dist/utils/formatting/index.js.map +1 -0
- package/dist/utils/formatting/markdownBuilder.d.ts +348 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
- package/dist/utils/formatting/markdownBuilder.js +501 -0
- package/dist/utils/formatting/markdownBuilder.js.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts +69 -0
- package/dist/utils/formatting/sqlFormattingUtils.d.ts.map +1 -0
- package/dist/utils/formatting/sqlFormattingUtils.js +131 -0
- package/dist/utils/formatting/sqlFormattingUtils.js.map +1 -0
- package/dist/utils/formatting/tableFormatter.d.ts +268 -0
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
- package/dist/utils/formatting/tableFormatter.js +550 -0
- package/dist/utils/formatting/tableFormatter.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/internal/asyncContext.d.ts +35 -0
- package/dist/utils/internal/asyncContext.d.ts.map +1 -0
- package/dist/utils/internal/asyncContext.js +38 -0
- package/dist/utils/internal/asyncContext.js.map +1 -0
- package/dist/utils/internal/errorHandler.d.ts +95 -0
- package/dist/utils/internal/errorHandler.d.ts.map +1 -0
- package/dist/utils/internal/errorHandler.js +210 -0
- package/dist/utils/internal/errorHandler.js.map +1 -0
- package/dist/utils/internal/index.d.ts +12 -0
- package/dist/utils/internal/index.d.ts.map +1 -0
- package/dist/utils/internal/index.js +12 -0
- package/dist/utils/internal/index.js.map +1 -0
- package/dist/utils/internal/logger.d.ts +30 -0
- package/dist/utils/internal/logger.d.ts.map +1 -0
- package/dist/utils/internal/logger.js +228 -0
- package/dist/utils/internal/logger.js.map +1 -0
- package/dist/utils/internal/logging-helpers.d.ts +49 -0
- package/dist/utils/internal/logging-helpers.d.ts.map +1 -0
- package/dist/utils/internal/logging-helpers.js +60 -0
- package/dist/utils/internal/logging-helpers.js.map +1 -0
- package/dist/utils/internal/performance.d.ts +19 -0
- package/dist/utils/internal/performance.d.ts.map +1 -0
- package/dist/utils/internal/performance.js +110 -0
- package/dist/utils/internal/performance.js.map +1 -0
- package/dist/utils/internal/requestContext.d.ts +41 -0
- package/dist/utils/internal/requestContext.d.ts.map +1 -0
- package/dist/utils/internal/requestContext.js +47 -0
- package/dist/utils/internal/requestContext.js.map +1 -0
- package/dist/utils/metrics/index.d.ts +8 -0
- package/dist/utils/metrics/index.d.ts.map +1 -0
- package/dist/utils/metrics/index.js +8 -0
- package/dist/utils/metrics/index.js.map +1 -0
- package/dist/utils/metrics/tokenCounter.d.ts +36 -0
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
- package/dist/utils/metrics/tokenCounter.js +115 -0
- package/dist/utils/metrics/tokenCounter.js.map +1 -0
- package/dist/utils/network/fetchWithTimeout.d.ts +22 -0
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
- package/dist/utils/network/fetchWithTimeout.js +78 -0
- package/dist/utils/network/fetchWithTimeout.js.map +1 -0
- package/dist/utils/network/index.d.ts +7 -0
- package/dist/utils/network/index.d.ts.map +1 -0
- package/dist/utils/network/index.js +6 -0
- package/dist/utils/network/index.js.map +1 -0
- package/dist/utils/parsing/dateParser.d.ts +73 -0
- package/dist/utils/parsing/dateParser.d.ts.map +1 -0
- package/dist/utils/parsing/dateParser.js +108 -0
- package/dist/utils/parsing/dateParser.js.map +1 -0
- package/dist/utils/parsing/index.d.ts +9 -0
- package/dist/utils/parsing/index.d.ts.map +1 -0
- package/dist/utils/parsing/index.js +9 -0
- package/dist/utils/parsing/index.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +83 -0
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
- package/dist/utils/parsing/jsonParser.js +128 -0
- package/dist/utils/parsing/jsonParser.js.map +1 -0
- package/dist/utils/scheduling/index.d.ts +7 -0
- package/dist/utils/scheduling/index.d.ts.map +1 -0
- package/dist/utils/scheduling/index.js +7 -0
- package/dist/utils/scheduling/index.js.map +1 -0
- package/dist/utils/scheduling/scheduler.d.ts +73 -0
- package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduling/scheduler.js +155 -0
- package/dist/utils/scheduling/scheduler.js.map +1 -0
- package/dist/utils/security/idGenerator.d.ts +144 -0
- package/dist/utils/security/idGenerator.d.ts.map +1 -0
- package/dist/utils/security/idGenerator.js +232 -0
- package/dist/utils/security/idGenerator.js.map +1 -0
- package/dist/utils/security/index.d.ts +10 -0
- package/dist/utils/security/index.d.ts.map +1 -0
- package/dist/utils/security/index.js +10 -0
- package/dist/utils/security/index.js.map +1 -0
- package/dist/utils/security/rateLimiter.d.ts +109 -0
- package/dist/utils/security/rateLimiter.d.ts.map +1 -0
- package/dist/utils/security/rateLimiter.js +202 -0
- package/dist/utils/security/rateLimiter.js.map +1 -0
- package/dist/utils/security/sanitization.d.ts +185 -0
- package/dist/utils/security/sanitization.d.ts.map +1 -0
- package/dist/utils/security/sanitization.js +472 -0
- package/dist/utils/security/sanitization.js.map +1 -0
- package/dist/utils/telemetry/instrumentation.d.ts +8 -0
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
- package/dist/utils/telemetry/instrumentation.js +121 -0
- package/dist/utils/telemetry/instrumentation.js.map +1 -0
- package/dist/utils/telemetry/semconv.d.ts +16 -0
- package/dist/utils/telemetry/semconv.d.ts.map +1 -0
- package/dist/utils/telemetry/semconv.js +16 -0
- package/dist/utils/telemetry/semconv.js.map +1 -0
- package/package.json +161 -0
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tool Configuration Builder - Standardized tool configuration creation
|
|
3
|
+
* Unifies all tool configuration creation logic into a single, consistent class
|
|
4
|
+
* Eliminates duplicate logic between cached and regular tool creation paths
|
|
5
|
+
*
|
|
6
|
+
* @module src/ibmi-mcp-server/utils/yaml/toolConfigBuilder
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { resolve, join } from "path";
|
|
10
|
+
import { existsSync } from "fs";
|
|
11
|
+
import { glob } from "glob";
|
|
12
|
+
import { ConfigParser } from "./configParser.js";
|
|
13
|
+
import { ErrorHandler, logger } from "../../../utils/internal/index.js";
|
|
14
|
+
import { requestContextService, } from "../../../utils/internal/requestContext.js";
|
|
15
|
+
import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
|
|
16
|
+
import { SQLToolFactory } from "./toolFactory.js";
|
|
17
|
+
import { sqlResponseFormatter, defaultResponseFormatter, standardSqlToolOutputSchema, } from "./toolDefinitions.js";
|
|
18
|
+
import { config } from "../../../config/index.js";
|
|
19
|
+
/**
|
|
20
|
+
* Tool Configuration Builder
|
|
21
|
+
* Standardized tool configuration creation with consistent error handling,
|
|
22
|
+
* schema generation, and handler creation logic
|
|
23
|
+
*/
|
|
24
|
+
export class ToolConfigBuilder {
|
|
25
|
+
static instance;
|
|
26
|
+
/**
|
|
27
|
+
* Get the singleton instance
|
|
28
|
+
*/
|
|
29
|
+
static getInstance() {
|
|
30
|
+
if (!ToolConfigBuilder.instance) {
|
|
31
|
+
ToolConfigBuilder.instance = new ToolConfigBuilder();
|
|
32
|
+
}
|
|
33
|
+
return ToolConfigBuilder.instance;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate a Zod schema from SQL parameter definitions
|
|
37
|
+
* @param parameters - SQL parameter definitions (using standardized types)
|
|
38
|
+
* @param toolName - Tool name for error reporting
|
|
39
|
+
* @returns Generated Zod schema
|
|
40
|
+
*/
|
|
41
|
+
generateZodSchema(parameters, toolName) {
|
|
42
|
+
const schemaShape = {};
|
|
43
|
+
// Process parameters
|
|
44
|
+
for (const param of parameters) {
|
|
45
|
+
let zodType;
|
|
46
|
+
// Generate Zod type based on parameter type
|
|
47
|
+
switch (param.type) {
|
|
48
|
+
case "string": {
|
|
49
|
+
let stringType = z.string();
|
|
50
|
+
// Apply string-specific constraints using native Zod methods
|
|
51
|
+
if (param.minLength !== undefined) {
|
|
52
|
+
stringType = stringType.min(param.minLength, `Length must be >= ${param.minLength}`);
|
|
53
|
+
}
|
|
54
|
+
if (param.maxLength !== undefined) {
|
|
55
|
+
stringType = stringType.max(param.maxLength, `Length must be <= ${param.maxLength}`);
|
|
56
|
+
}
|
|
57
|
+
if (param.pattern) {
|
|
58
|
+
stringType = stringType.regex(new RegExp(param.pattern), `Value does not match pattern: ${param.pattern}`);
|
|
59
|
+
}
|
|
60
|
+
zodType = stringType;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case "integer": {
|
|
64
|
+
let intType = z.number().int("Value must be an integer");
|
|
65
|
+
// Apply numeric constraints using native Zod methods
|
|
66
|
+
if (param.min !== undefined) {
|
|
67
|
+
intType = intType.min(param.min, `Value must be >= ${param.min}`);
|
|
68
|
+
}
|
|
69
|
+
if (param.max !== undefined) {
|
|
70
|
+
intType = intType.max(param.max, `Value must be <= ${param.max}`);
|
|
71
|
+
}
|
|
72
|
+
zodType = intType;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "float": {
|
|
76
|
+
let floatType = z.number();
|
|
77
|
+
// Apply numeric constraints using native Zod methods
|
|
78
|
+
if (param.min !== undefined) {
|
|
79
|
+
floatType = floatType.min(param.min, `Value must be >= ${param.min}`);
|
|
80
|
+
}
|
|
81
|
+
if (param.max !== undefined) {
|
|
82
|
+
floatType = floatType.max(param.max, `Value must be <= ${param.max}`);
|
|
83
|
+
}
|
|
84
|
+
zodType = floatType;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case "boolean":
|
|
88
|
+
zodType = z.boolean();
|
|
89
|
+
break;
|
|
90
|
+
case "array": {
|
|
91
|
+
// For array parameters, create array of the specified item type
|
|
92
|
+
let itemType;
|
|
93
|
+
if (param.itemType === "string") {
|
|
94
|
+
itemType = z.string();
|
|
95
|
+
}
|
|
96
|
+
else if (param.itemType === "integer") {
|
|
97
|
+
itemType = z.number().int("Array items must be integers");
|
|
98
|
+
}
|
|
99
|
+
else if (param.itemType === "float") {
|
|
100
|
+
itemType = z.number();
|
|
101
|
+
}
|
|
102
|
+
else if (param.itemType === "boolean") {
|
|
103
|
+
itemType = z.boolean();
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
itemType = z.unknown();
|
|
107
|
+
}
|
|
108
|
+
let arrayType = z.array(itemType);
|
|
109
|
+
// Apply array length constraints using native Zod methods
|
|
110
|
+
if (param.minLength !== undefined) {
|
|
111
|
+
arrayType = arrayType.min(param.minLength, `Array length must be >= ${param.minLength}`);
|
|
112
|
+
}
|
|
113
|
+
if (param.maxLength !== undefined) {
|
|
114
|
+
arrayType = arrayType.max(param.maxLength, `Array length must be <= ${param.maxLength}`);
|
|
115
|
+
}
|
|
116
|
+
zodType = arrayType;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
default:
|
|
120
|
+
throw new McpError(JsonRpcErrorCode.InvalidParams, `Unsupported parameter type '${param.type}' for parameter '${param.name}' in tool '${toolName}'`, { toolName, parameterName: param.name, parameterType: param.type });
|
|
121
|
+
}
|
|
122
|
+
// Handle enum constraints for all types (except boolean which is already constrained)
|
|
123
|
+
if (param.enum &&
|
|
124
|
+
Array.isArray(param.enum) &&
|
|
125
|
+
param.enum.length > 0 &&
|
|
126
|
+
param.type !== "boolean") {
|
|
127
|
+
// For enums, we need to replace the base type with a union of literals
|
|
128
|
+
// This properly translates to JSON Schema with "enum" keyword
|
|
129
|
+
const enumValues = param.enum;
|
|
130
|
+
if (enumValues.length === 1) {
|
|
131
|
+
// Single value enum becomes a literal
|
|
132
|
+
zodType = z.literal(enumValues[0]);
|
|
133
|
+
}
|
|
134
|
+
else if (enumValues.every((v) => typeof v === "string")) {
|
|
135
|
+
// All strings: use z.enum for optimal JSON Schema generation
|
|
136
|
+
zodType = z.enum(enumValues);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Mixed types or numbers: use union of literals
|
|
140
|
+
// Construct the tuple directly to satisfy TypeScript's type requirements
|
|
141
|
+
const [first, second, ...rest] = enumValues;
|
|
142
|
+
zodType = z.union([
|
|
143
|
+
z.literal(first),
|
|
144
|
+
z.literal(second),
|
|
145
|
+
...rest.map((val) => z.literal(val)),
|
|
146
|
+
]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Build enhanced description with enum values for LLM clarity
|
|
150
|
+
let finalDescription = param.description || "";
|
|
151
|
+
// Append enum constraint to description for LLM understanding
|
|
152
|
+
if (param.enum && Array.isArray(param.enum) && param.enum.length > 0) {
|
|
153
|
+
const formattedValues = param.enum
|
|
154
|
+
.map((v) => (typeof v === "string" ? `'${v}'` : String(v)))
|
|
155
|
+
.join(", ");
|
|
156
|
+
const enumClause = `Must be one of: ${formattedValues}`;
|
|
157
|
+
if (finalDescription) {
|
|
158
|
+
// Append to existing description with proper punctuation
|
|
159
|
+
finalDescription = finalDescription.trim();
|
|
160
|
+
if (!finalDescription.endsWith(".") &&
|
|
161
|
+
!finalDescription.endsWith("?") &&
|
|
162
|
+
!finalDescription.endsWith("!")) {
|
|
163
|
+
finalDescription += ".";
|
|
164
|
+
}
|
|
165
|
+
finalDescription += ` ${enumClause}`;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Use as the sole description
|
|
169
|
+
finalDescription = enumClause;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Add description (now includes enum info if applicable)
|
|
173
|
+
if (finalDescription) {
|
|
174
|
+
zodType = zodType.describe(finalDescription);
|
|
175
|
+
}
|
|
176
|
+
// Add default value if provided (must be done last)
|
|
177
|
+
if (param.default !== undefined) {
|
|
178
|
+
zodType = zodType.default(param.default);
|
|
179
|
+
}
|
|
180
|
+
// Mark as optional if not required and no default provided
|
|
181
|
+
if (param.required === false && param.default === undefined) {
|
|
182
|
+
zodType = zodType.optional();
|
|
183
|
+
}
|
|
184
|
+
schemaShape[param.name] = zodType;
|
|
185
|
+
}
|
|
186
|
+
return z.object(schemaShape).strict();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Filter processed tools by allowed toolsets
|
|
190
|
+
* @param processedTools - Array of processed tools to filter
|
|
191
|
+
* @param allowedToolsets - List of toolset names to include
|
|
192
|
+
* @returns Filtered array containing only tools that belong to allowed toolsets
|
|
193
|
+
*/
|
|
194
|
+
filterToolsByToolsets(processedTools, allowedToolsets) {
|
|
195
|
+
if (!allowedToolsets || allowedToolsets.length === 0) {
|
|
196
|
+
return processedTools;
|
|
197
|
+
}
|
|
198
|
+
return processedTools.filter((tool) => tool.toolsets &&
|
|
199
|
+
tool.toolsets.some((toolset) => allowedToolsets.includes(toolset)));
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Build a complete tool configuration
|
|
203
|
+
* This is the single, unified method for creating all tool configurations
|
|
204
|
+
* @param toolName - Name of the tool
|
|
205
|
+
* @param config - Tool configuration from YAML
|
|
206
|
+
* @param toolsets - Toolsets this tool belongs to
|
|
207
|
+
* @param context - Request context
|
|
208
|
+
* @returns Complete cached tool configuration
|
|
209
|
+
*/
|
|
210
|
+
async buildToolConfig(toolName, config, toolsets, context) {
|
|
211
|
+
const buildContext = requestContextService.createRequestContext({
|
|
212
|
+
parentRequestId: context.requestId,
|
|
213
|
+
operation: "ToolConfigBuilder.buildToolConfig",
|
|
214
|
+
toolName,
|
|
215
|
+
});
|
|
216
|
+
return ErrorHandler.tryCatch(async () => {
|
|
217
|
+
logger.debug({
|
|
218
|
+
...buildContext,
|
|
219
|
+
description: config.description,
|
|
220
|
+
toolsets,
|
|
221
|
+
domain: config.domain,
|
|
222
|
+
category: config.category,
|
|
223
|
+
}, `Building tool configuration: ${toolName}`);
|
|
224
|
+
// Generate Zod schema for parameters
|
|
225
|
+
const inputSchema = this.generateZodSchema(config.parameters || [], toolName);
|
|
226
|
+
const toolLogic = this.createToolLogic(toolName, config, inputSchema, buildContext);
|
|
227
|
+
const annotations = this.buildAnnotations(toolName, config, toolsets);
|
|
228
|
+
const responseFormatter = this.getResponseFormatter(config);
|
|
229
|
+
const toolConfig = {
|
|
230
|
+
name: toolName,
|
|
231
|
+
title: this.formatToolTitle(toolName),
|
|
232
|
+
description: config.description,
|
|
233
|
+
inputSchema,
|
|
234
|
+
outputSchema: standardSqlToolOutputSchema,
|
|
235
|
+
annotations,
|
|
236
|
+
logic: toolLogic,
|
|
237
|
+
responseFormatter,
|
|
238
|
+
};
|
|
239
|
+
logger.debug(buildContext, `Tool configuration built successfully: ${toolName}`);
|
|
240
|
+
return toolConfig;
|
|
241
|
+
}, {
|
|
242
|
+
operation: "ToolConfigBuilder.buildToolConfig",
|
|
243
|
+
context: buildContext,
|
|
244
|
+
errorCode: JsonRpcErrorCode.InternalError,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Create a unified tool handler function
|
|
249
|
+
* This replaces the duplicate handler logic in yamlToolFactory
|
|
250
|
+
* @param toolName - Name of the tool
|
|
251
|
+
* @param config - Tool configuration
|
|
252
|
+
* @param context - Request context
|
|
253
|
+
* @returns Tool handler function
|
|
254
|
+
* @private
|
|
255
|
+
*/
|
|
256
|
+
createToolLogic(toolName, config, inputSchema, context) {
|
|
257
|
+
return async (params, requestContext) => {
|
|
258
|
+
const executionContext = requestContextService.createRequestContext({
|
|
259
|
+
parentRequestId: context.requestId,
|
|
260
|
+
operation: `ExecuteYamlTool_${toolName}`,
|
|
261
|
+
toolName,
|
|
262
|
+
input: params,
|
|
263
|
+
requestContext,
|
|
264
|
+
});
|
|
265
|
+
return ErrorHandler.tryCatch(async () => {
|
|
266
|
+
if (!config.statement) {
|
|
267
|
+
throw new McpError(JsonRpcErrorCode.InvalidParams, `Tool ${toolName} has no SQL statement defined`, { toolName });
|
|
268
|
+
}
|
|
269
|
+
const result = await SQLToolFactory.executeStatementWithParameters(toolName, config.source, config.statement, params, config.parameters || [], executionContext, config.security);
|
|
270
|
+
const simplifiedColumns = (result.columns ?? []).map((column, index) => {
|
|
271
|
+
const record = column;
|
|
272
|
+
const name = record.name ?? record.label ?? `column_${index}`;
|
|
273
|
+
return {
|
|
274
|
+
name,
|
|
275
|
+
type: record.type,
|
|
276
|
+
label: record.label ?? record.name,
|
|
277
|
+
};
|
|
278
|
+
});
|
|
279
|
+
return {
|
|
280
|
+
success: true,
|
|
281
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
282
|
+
data: result.data,
|
|
283
|
+
metadata: {
|
|
284
|
+
executionTime: result.executionTime,
|
|
285
|
+
rowCount: result.rowCount,
|
|
286
|
+
affectedRows: result.affectedRows,
|
|
287
|
+
columns: simplifiedColumns.length > 0 ? simplifiedColumns : undefined,
|
|
288
|
+
parameterMode: result.parameterMetadata?.mode,
|
|
289
|
+
parameterCount: result.parameterMetadata?.parameterCount,
|
|
290
|
+
processedParameters: result.parameterMetadata?.processedParameters,
|
|
291
|
+
toolName,
|
|
292
|
+
sqlStatement: config.statement,
|
|
293
|
+
parameters: params,
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
}, {
|
|
297
|
+
operation: `ExecuteYamlTool_${toolName}`,
|
|
298
|
+
context: executionContext,
|
|
299
|
+
input: params,
|
|
300
|
+
errorCode: JsonRpcErrorCode.InternalError,
|
|
301
|
+
});
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Determines the appropriate response formatter based on tool configuration.
|
|
306
|
+
* For SQL formatters, extracts and passes formatting configuration (tableFormat, maxDisplayRows).
|
|
307
|
+
*/
|
|
308
|
+
getResponseFormatter(config) {
|
|
309
|
+
if (config.responseFormat === "markdown") {
|
|
310
|
+
// Extract formatting configuration from tool config
|
|
311
|
+
const formatterConfig = {
|
|
312
|
+
tableFormat: config.tableFormat,
|
|
313
|
+
maxDisplayRows: config.maxDisplayRows,
|
|
314
|
+
};
|
|
315
|
+
// Return a wrapper that passes the config to sqlResponseFormatter
|
|
316
|
+
return (result) => sqlResponseFormatter(result, formatterConfig);
|
|
317
|
+
}
|
|
318
|
+
return defaultResponseFormatter;
|
|
319
|
+
}
|
|
320
|
+
buildAnnotations(toolName, config, toolsets) {
|
|
321
|
+
const annotationInput = {
|
|
322
|
+
...(config.annotations ?? {}),
|
|
323
|
+
};
|
|
324
|
+
const legacyReadOnly = config.readOnlyHint;
|
|
325
|
+
const legacyOpenWorld = config.openWorldHint;
|
|
326
|
+
const legacyIdempotent = config.idempotentHint;
|
|
327
|
+
const legacyDestructive = config.destructiveHint;
|
|
328
|
+
if (Array.isArray(annotationInput.toolsets) &&
|
|
329
|
+
annotationInput.toolsets.length > 0) {
|
|
330
|
+
logger.warning({
|
|
331
|
+
toolName,
|
|
332
|
+
providedToolsets: annotationInput.toolsets,
|
|
333
|
+
resolvedToolsets: toolsets,
|
|
334
|
+
}, "Tool annotations specified 'toolsets', but toolset membership is derived from YAML toolset mappings. Ignoring provided values.");
|
|
335
|
+
}
|
|
336
|
+
// Remove any externally provided toolsets to prevent divergence from configured mappings
|
|
337
|
+
delete annotationInput.toolsets;
|
|
338
|
+
const mergedCustomMetadata = this.mergeCustomMetadata(annotationInput.customMetadata, config.metadata);
|
|
339
|
+
const resolvedAnnotations = {
|
|
340
|
+
...annotationInput,
|
|
341
|
+
title: annotationInput.title ?? this.formatToolTitle(toolName),
|
|
342
|
+
domain: annotationInput.domain ?? config.domain,
|
|
343
|
+
category: annotationInput.category ?? config.category,
|
|
344
|
+
readOnlyHint: annotationInput.readOnlyHint ??
|
|
345
|
+
legacyReadOnly ??
|
|
346
|
+
config.security?.readOnly ??
|
|
347
|
+
true,
|
|
348
|
+
openWorldHint: annotationInput.openWorldHint ?? legacyOpenWorld,
|
|
349
|
+
idempotentHint: annotationInput.idempotentHint ?? legacyIdempotent,
|
|
350
|
+
destructiveHint: annotationInput.destructiveHint ?? legacyDestructive,
|
|
351
|
+
toolsets,
|
|
352
|
+
};
|
|
353
|
+
if (mergedCustomMetadata) {
|
|
354
|
+
resolvedAnnotations.customMetadata = mergedCustomMetadata;
|
|
355
|
+
}
|
|
356
|
+
return resolvedAnnotations;
|
|
357
|
+
}
|
|
358
|
+
mergeCustomMetadata(annotationsMetadata, toolMetadata) {
|
|
359
|
+
const candidates = [annotationsMetadata, toolMetadata].filter((value) => value !== null && typeof value === "object" && !Array.isArray(value));
|
|
360
|
+
if (candidates.length === 0) {
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
363
|
+
return Object.assign({}, ...candidates);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Format tool name into a human-readable title
|
|
367
|
+
* @param toolName - Tool name
|
|
368
|
+
* @returns Formatted title
|
|
369
|
+
* @private
|
|
370
|
+
*/
|
|
371
|
+
formatToolTitle(toolName) {
|
|
372
|
+
return toolName
|
|
373
|
+
.split(/[_-]/)
|
|
374
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
375
|
+
.join(" ");
|
|
376
|
+
}
|
|
377
|
+
// ============================================================================
|
|
378
|
+
// Configuration Parsing Methods (moved from YamlConfigBuilder)
|
|
379
|
+
// ============================================================================
|
|
380
|
+
/**
|
|
381
|
+
* Build configuration from multiple sources
|
|
382
|
+
* @param sources - Array of configuration sources
|
|
383
|
+
* @param options - Merge options
|
|
384
|
+
* @param context - Request context
|
|
385
|
+
* @returns Built configuration
|
|
386
|
+
*/
|
|
387
|
+
async buildFromSources(sources, options, context) {
|
|
388
|
+
const operationContext = context ||
|
|
389
|
+
requestContextService.createRequestContext({
|
|
390
|
+
operation: "ToolConfigBuilder.buildFromSources",
|
|
391
|
+
});
|
|
392
|
+
return ErrorHandler.tryCatch(async () => {
|
|
393
|
+
logger.info(operationContext, `Building YAML configuration from sources: ${sources.length} sources`);
|
|
394
|
+
const filePaths = await this.resolveAllFilePaths(sources, operationContext);
|
|
395
|
+
const configs = await this.loadAllConfigurations(filePaths, operationContext);
|
|
396
|
+
const mergedConfig = await this.mergeConfigurations(configs, options, operationContext);
|
|
397
|
+
const stats = {
|
|
398
|
+
sourcesLoaded: filePaths.length,
|
|
399
|
+
sourcesMerged: configs.length,
|
|
400
|
+
toolsTotal: Object.keys(mergedConfig.tools || {}).length,
|
|
401
|
+
toolsetsTotal: Object.keys(mergedConfig.toolsets || {}).length,
|
|
402
|
+
sourcesTotal: Object.keys(mergedConfig.sources || {}).length,
|
|
403
|
+
};
|
|
404
|
+
logger.info({
|
|
405
|
+
...operationContext,
|
|
406
|
+
...stats,
|
|
407
|
+
}, "YAML configuration built successfully");
|
|
408
|
+
return {
|
|
409
|
+
success: true,
|
|
410
|
+
config: mergedConfig,
|
|
411
|
+
stats,
|
|
412
|
+
resolvedFilePaths: filePaths,
|
|
413
|
+
};
|
|
414
|
+
}, {
|
|
415
|
+
operation: "ToolConfigBuilder.buildFromSources",
|
|
416
|
+
context: operationContext,
|
|
417
|
+
errorCode: JsonRpcErrorCode.ConfigurationError,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Resolve all file paths from sources
|
|
422
|
+
* @private
|
|
423
|
+
*/
|
|
424
|
+
async resolveAllFilePaths(sources, context) {
|
|
425
|
+
const allPaths = [];
|
|
426
|
+
for (const source of sources) {
|
|
427
|
+
try {
|
|
428
|
+
const paths = await this.resolveSourcePaths(source);
|
|
429
|
+
allPaths.push(...paths);
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
if (source.required) {
|
|
433
|
+
throw error;
|
|
434
|
+
}
|
|
435
|
+
logger.warning(context, `Optional source not found: ${source.path} (${source.type})`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
// Remove duplicates
|
|
439
|
+
return [...new Set(allPaths)];
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Resolve paths for a single source
|
|
443
|
+
* @private
|
|
444
|
+
*/
|
|
445
|
+
async resolveSourcePaths(source) {
|
|
446
|
+
switch (source.type) {
|
|
447
|
+
case "file":
|
|
448
|
+
return this.resolveFilePath(source.path);
|
|
449
|
+
case "directory":
|
|
450
|
+
return this.resolveDirectoryPaths(source.path);
|
|
451
|
+
case "glob":
|
|
452
|
+
return this.resolveGlobPaths(source.path, source.baseDir);
|
|
453
|
+
default:
|
|
454
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Unknown source type: ${source.type}`);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Resolve a single file path
|
|
459
|
+
* @private
|
|
460
|
+
*/
|
|
461
|
+
resolveFilePath(filePath) {
|
|
462
|
+
const resolvedPath = resolve(filePath);
|
|
463
|
+
if (!existsSync(resolvedPath)) {
|
|
464
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Configuration file not found: ${resolvedPath}`);
|
|
465
|
+
}
|
|
466
|
+
return [resolvedPath];
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Resolve directory paths
|
|
470
|
+
* @private
|
|
471
|
+
*/
|
|
472
|
+
resolveDirectoryPaths(directoryPath) {
|
|
473
|
+
const resolvedDir = resolve(directoryPath);
|
|
474
|
+
if (!existsSync(resolvedDir)) {
|
|
475
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Configuration directory not found: ${resolvedDir}`);
|
|
476
|
+
}
|
|
477
|
+
const pattern = join(resolvedDir, "**/*.{yaml,yml}");
|
|
478
|
+
return glob.sync(pattern, { absolute: true });
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Resolve glob paths
|
|
482
|
+
* @private
|
|
483
|
+
*/
|
|
484
|
+
resolveGlobPaths(pattern, baseDir) {
|
|
485
|
+
const searchPattern = baseDir ? join(baseDir, pattern) : pattern;
|
|
486
|
+
const paths = glob.sync(searchPattern, { absolute: true });
|
|
487
|
+
if (paths.length === 0) {
|
|
488
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `No files found matching pattern: ${searchPattern}`);
|
|
489
|
+
}
|
|
490
|
+
return paths;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Load all configurations from file paths
|
|
494
|
+
* @private
|
|
495
|
+
*/
|
|
496
|
+
async loadAllConfigurations(filePaths, context) {
|
|
497
|
+
const configs = [];
|
|
498
|
+
for (const filePath of filePaths) {
|
|
499
|
+
try {
|
|
500
|
+
logger.debug(context, `Loading configuration from: ${filePath}`);
|
|
501
|
+
const result = await ConfigParser.parseYamlFile(filePath, context);
|
|
502
|
+
if (result.success && result.config) {
|
|
503
|
+
configs.push(result.config);
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
logger.error(context, `Failed to load configuration from: ${filePath}`);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
logger.error(context, `Error loading configuration from: ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
511
|
+
throw error;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
return configs;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Merge multiple configurations
|
|
518
|
+
* Uses environment-configured merge options from config.yamlMergeOptions as defaults
|
|
519
|
+
* @private
|
|
520
|
+
*/
|
|
521
|
+
async mergeConfigurations(configs, options, context) {
|
|
522
|
+
if (configs.length === 0) {
|
|
523
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, "No valid configurations to merge");
|
|
524
|
+
}
|
|
525
|
+
if (configs.length === 1) {
|
|
526
|
+
return configs[0];
|
|
527
|
+
}
|
|
528
|
+
// Use environment-configured merge options as defaults, allow explicit overrides
|
|
529
|
+
const mergeOptions = {
|
|
530
|
+
...config.yamlMergeOptions,
|
|
531
|
+
...options,
|
|
532
|
+
};
|
|
533
|
+
logger.debug(context || {}, `Merging ${configs.length} configurations with options: ${JSON.stringify(mergeOptions)}`);
|
|
534
|
+
const mergedConfig = {
|
|
535
|
+
sources: {},
|
|
536
|
+
tools: {},
|
|
537
|
+
toolsets: {},
|
|
538
|
+
metadata: {},
|
|
539
|
+
};
|
|
540
|
+
// Merge each configuration
|
|
541
|
+
for (const configToMerge of configs) {
|
|
542
|
+
await this.mergeIntoTarget(mergedConfig, configToMerge, mergeOptions, context);
|
|
543
|
+
}
|
|
544
|
+
// Validate merged configuration if requested
|
|
545
|
+
if (mergeOptions.validateMerged) {
|
|
546
|
+
await this.validateMergedConfiguration(mergedConfig, context);
|
|
547
|
+
}
|
|
548
|
+
return mergedConfig;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Merge a configuration into the target
|
|
552
|
+
* @private
|
|
553
|
+
*/
|
|
554
|
+
async mergeIntoTarget(target, source, options, context) {
|
|
555
|
+
// Merge sources
|
|
556
|
+
if (source.sources) {
|
|
557
|
+
if (!target.sources) {
|
|
558
|
+
target.sources = {};
|
|
559
|
+
}
|
|
560
|
+
for (const [sourceName, sourceConfig] of Object.entries(source.sources)) {
|
|
561
|
+
if (target.sources[sourceName]) {
|
|
562
|
+
if (!options.allowDuplicateSources) {
|
|
563
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Duplicate source name: ${sourceName}`);
|
|
564
|
+
}
|
|
565
|
+
logger.warning(context || {}, `Overriding existing source: ${sourceName}`);
|
|
566
|
+
}
|
|
567
|
+
target.sources[sourceName] = sourceConfig;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
// Merge tools
|
|
571
|
+
if (source.tools) {
|
|
572
|
+
if (!target.tools) {
|
|
573
|
+
target.tools = {};
|
|
574
|
+
}
|
|
575
|
+
for (const [toolName, toolConfig] of Object.entries(source.tools)) {
|
|
576
|
+
if (target.tools[toolName]) {
|
|
577
|
+
if (!options.allowDuplicateTools) {
|
|
578
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Duplicate tool name: ${toolName}`);
|
|
579
|
+
}
|
|
580
|
+
logger.warning(context || {}, `Overriding existing tool: ${toolName}`);
|
|
581
|
+
}
|
|
582
|
+
target.tools[toolName] = toolConfig;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
// Merge toolsets
|
|
586
|
+
if (source.toolsets) {
|
|
587
|
+
if (!target.toolsets) {
|
|
588
|
+
target.toolsets = {};
|
|
589
|
+
}
|
|
590
|
+
for (const [toolsetName, toolsetConfig] of Object.entries(source.toolsets)) {
|
|
591
|
+
if (target.toolsets[toolsetName]) {
|
|
592
|
+
if (options.mergeArrays) {
|
|
593
|
+
// Merge tool arrays
|
|
594
|
+
target.toolsets[toolsetName].tools = [
|
|
595
|
+
...target.toolsets[toolsetName].tools,
|
|
596
|
+
...toolsetConfig.tools,
|
|
597
|
+
];
|
|
598
|
+
}
|
|
599
|
+
else {
|
|
600
|
+
// Replace with new toolset
|
|
601
|
+
target.toolsets[toolsetName] = toolsetConfig;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
else {
|
|
605
|
+
target.toolsets[toolsetName] = toolsetConfig;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
// Merge metadata
|
|
610
|
+
if (source.metadata) {
|
|
611
|
+
if (!target.metadata) {
|
|
612
|
+
target.metadata = {};
|
|
613
|
+
}
|
|
614
|
+
target.metadata = { ...target.metadata, ...source.metadata };
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Validate the merged configuration
|
|
619
|
+
* @private
|
|
620
|
+
*/
|
|
621
|
+
async validateMergedConfiguration(config, context) {
|
|
622
|
+
// Validate that all tool sources exist (only if both sections exist)
|
|
623
|
+
if (config.tools && config.sources) {
|
|
624
|
+
for (const [toolName, toolConfig] of Object.entries(config.tools)) {
|
|
625
|
+
if (!config.sources[toolConfig.source]) {
|
|
626
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Tool '${toolName}' references non-existent source '${toolConfig.source}'`);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
// Validate that all toolset tools exist (only if both sections exist)
|
|
631
|
+
if (config.toolsets && config.tools) {
|
|
632
|
+
for (const [toolsetName, toolsetConfig] of Object.entries(config.toolsets)) {
|
|
633
|
+
for (const toolName of toolsetConfig.tools) {
|
|
634
|
+
if (!config.tools[toolName]) {
|
|
635
|
+
throw new McpError(JsonRpcErrorCode.ConfigurationError, `Toolset '${toolsetName}' references non-existent tool '${toolName}'`);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
logger.debug(context || {}, "Merged configuration validated successfully");
|
|
641
|
+
}
|
|
642
|
+
// Static factory methods for convenience
|
|
643
|
+
static async fromFile(filePath, context) {
|
|
644
|
+
const builder = ToolConfigBuilder.getInstance();
|
|
645
|
+
return builder.buildFromSources([{ type: "file", path: filePath, required: true }], undefined, context);
|
|
646
|
+
}
|
|
647
|
+
static async fromFiles(filePaths, context) {
|
|
648
|
+
const builder = ToolConfigBuilder.getInstance();
|
|
649
|
+
const sources = filePaths.map((path) => ({
|
|
650
|
+
type: "file",
|
|
651
|
+
path,
|
|
652
|
+
required: true,
|
|
653
|
+
}));
|
|
654
|
+
return builder.buildFromSources(sources, undefined, context);
|
|
655
|
+
}
|
|
656
|
+
static async fromDirectory(directoryPath, context) {
|
|
657
|
+
const builder = ToolConfigBuilder.getInstance();
|
|
658
|
+
return builder.buildFromSources([{ type: "directory", path: directoryPath, required: true }], undefined, context);
|
|
659
|
+
}
|
|
660
|
+
static async fromGlob(pattern, baseDir, context) {
|
|
661
|
+
const builder = ToolConfigBuilder.getInstance();
|
|
662
|
+
return builder.buildFromSources([{ type: "glob", path: pattern, baseDir, required: true }], undefined, context);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
//# sourceMappingURL=toolConfigBuilder.js.map
|