@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,236 @@
|
|
|
1
|
+
import { ErrorHandler, getRequestContext, measureToolExecution, requestContextService, withRequestContext, } from "../../../utils/internal/index.js";
|
|
2
|
+
import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
|
|
3
|
+
// Import shared schemas from centralized location
|
|
4
|
+
import { StandardSqlToolOutputSchema, } from "../../schemas/index.js";
|
|
5
|
+
// Import formatting utilities
|
|
6
|
+
import { markdown, tableFormatter, buildColumnAlignmentMap, formatColumnHeader, } from "../../../utils/formatting/index.js";
|
|
7
|
+
// Re-export standardized SQL tool output schema from centralized schemas
|
|
8
|
+
export const standardSqlToolOutputSchema = StandardSqlToolOutputSchema;
|
|
9
|
+
/**
|
|
10
|
+
* Formats SQL tool output into a professionally formatted markdown response.
|
|
11
|
+
* Uses MarkdownBuilder for structure and TableFormatter for type-aware table rendering.
|
|
12
|
+
* Provides column type indicators, NULL tracking, and performance metrics.
|
|
13
|
+
*
|
|
14
|
+
* @param result - The SQL tool execution result
|
|
15
|
+
* @param config - Optional formatting configuration
|
|
16
|
+
* @returns Array of content blocks for MCP response
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const result = await executeSqlTool(params);
|
|
21
|
+
* const formatted = sqlResponseFormatter(result, {
|
|
22
|
+
* tableFormat: 'grid',
|
|
23
|
+
* maxDisplayRows: 50
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const sqlResponseFormatter = (result, config) => {
|
|
28
|
+
const tableFormat = config?.tableFormat || "markdown";
|
|
29
|
+
const maxDisplayRows = config?.maxDisplayRows || 100;
|
|
30
|
+
// Handle error cases
|
|
31
|
+
if (!result.success || !result.data) {
|
|
32
|
+
const errorMessage = result.error || "Unknown error occurred";
|
|
33
|
+
const { metadata } = result;
|
|
34
|
+
const errorBuilder = markdown()
|
|
35
|
+
.alert("caution", "❌ SQL Query Failed")
|
|
36
|
+
.blankLine();
|
|
37
|
+
if (metadata?.toolName) {
|
|
38
|
+
errorBuilder.keyValue("Tool", metadata.toolName);
|
|
39
|
+
}
|
|
40
|
+
errorBuilder.keyValue("Error", errorMessage);
|
|
41
|
+
if (result.errorCode) {
|
|
42
|
+
errorBuilder.keyValue("Error Code", String(result.errorCode));
|
|
43
|
+
}
|
|
44
|
+
if (metadata?.sqlStatement) {
|
|
45
|
+
const truncatedSql = metadata.sqlStatement.length > 200
|
|
46
|
+
? metadata.sqlStatement.substring(0, 197) + "..."
|
|
47
|
+
: metadata.sqlStatement;
|
|
48
|
+
errorBuilder
|
|
49
|
+
.blankLine()
|
|
50
|
+
.h3("SQL Statement")
|
|
51
|
+
.codeBlock(truncatedSql, "sql");
|
|
52
|
+
}
|
|
53
|
+
const errorMarkdown = errorBuilder.build();
|
|
54
|
+
return [{ type: "text", text: errorMarkdown }];
|
|
55
|
+
}
|
|
56
|
+
const { data, metadata } = result;
|
|
57
|
+
const rowCount = data.length;
|
|
58
|
+
// Start building the markdown response
|
|
59
|
+
const mdBuilder = markdown();
|
|
60
|
+
// Tool header
|
|
61
|
+
if (metadata?.toolName) {
|
|
62
|
+
mdBuilder.h2(metadata.toolName);
|
|
63
|
+
}
|
|
64
|
+
// Success indicator
|
|
65
|
+
mdBuilder
|
|
66
|
+
.alert("tip", "✅ Query completed successfully")
|
|
67
|
+
.blankLine()
|
|
68
|
+
.paragraph(`Found **${rowCount} row${rowCount !== 1 ? "s" : ""}** from the database query`);
|
|
69
|
+
// SQL Statement section
|
|
70
|
+
if (metadata?.sqlStatement) {
|
|
71
|
+
const truncatedSql = metadata.sqlStatement.length > 500
|
|
72
|
+
? metadata.sqlStatement.substring(0, 497) + "..."
|
|
73
|
+
: metadata.sqlStatement;
|
|
74
|
+
mdBuilder.h3("SQL Statement").codeBlock(truncatedSql, "sql");
|
|
75
|
+
}
|
|
76
|
+
// Parameters section
|
|
77
|
+
if (metadata?.parameters && Object.keys(metadata.parameters).length > 0) {
|
|
78
|
+
mdBuilder.h3("Parameters");
|
|
79
|
+
const paramList = Object.entries(metadata.parameters).map(([key, value]) => {
|
|
80
|
+
const displayValue = value === null || value === undefined
|
|
81
|
+
? "NULL"
|
|
82
|
+
: typeof value === "string" && value.length > 100
|
|
83
|
+
? `${String(value).substring(0, 97)}...`
|
|
84
|
+
: String(value);
|
|
85
|
+
return `\`${key}\`: ${displayValue}`;
|
|
86
|
+
});
|
|
87
|
+
mdBuilder.list(paramList);
|
|
88
|
+
}
|
|
89
|
+
// Handle empty results
|
|
90
|
+
if (rowCount === 0) {
|
|
91
|
+
mdBuilder
|
|
92
|
+
.paragraph("No rows returned from the query.")
|
|
93
|
+
.h3("Execution Summary")
|
|
94
|
+
.keyValue("Execution time", metadata?.executionTime ? `${metadata.executionTime}ms` : "N/A")
|
|
95
|
+
.keyValue("Parameters used", String(metadata?.parameterCount || 0));
|
|
96
|
+
return [{ type: "text", text: mdBuilder.build() }];
|
|
97
|
+
}
|
|
98
|
+
// Extract column information
|
|
99
|
+
const columns = metadata?.columns || [];
|
|
100
|
+
const firstRow = data[0] || {};
|
|
101
|
+
const allColumns = columns.length > 0
|
|
102
|
+
? columns
|
|
103
|
+
: Object.keys(firstRow).map((key) => ({
|
|
104
|
+
name: key,
|
|
105
|
+
type: undefined,
|
|
106
|
+
label: key,
|
|
107
|
+
}));
|
|
108
|
+
// Prepare data for table formatter
|
|
109
|
+
const displayRows = data.slice(0, maxDisplayRows);
|
|
110
|
+
const columnCount = allColumns.length;
|
|
111
|
+
// Format headers with type indicators
|
|
112
|
+
const headers = allColumns.map((col) => formatColumnHeader(col.label || col.name, col.type));
|
|
113
|
+
// Build column alignment map based on types
|
|
114
|
+
const alignment = buildColumnAlignmentMap(allColumns);
|
|
115
|
+
// Convert data rows to string arrays
|
|
116
|
+
const rows = displayRows.map((row) => allColumns.map((col) => {
|
|
117
|
+
const value = row[col.name];
|
|
118
|
+
if (value === null || value === undefined)
|
|
119
|
+
return null;
|
|
120
|
+
return String(value);
|
|
121
|
+
}));
|
|
122
|
+
// Format table with metadata tracking
|
|
123
|
+
const tableResult = tableFormatter.formatRawWithMetadata(headers, rows, {
|
|
124
|
+
style: tableFormat,
|
|
125
|
+
alignment,
|
|
126
|
+
nullReplacement: "-",
|
|
127
|
+
maxWidth: 50,
|
|
128
|
+
truncate: true,
|
|
129
|
+
});
|
|
130
|
+
// Add truncation notice if applicable
|
|
131
|
+
if (displayRows.length < rowCount) {
|
|
132
|
+
mdBuilder.alert("note", `Showing ${displayRows.length} of ${rowCount} rows. ${rowCount - displayRows.length} rows omitted.`);
|
|
133
|
+
}
|
|
134
|
+
// Results section
|
|
135
|
+
mdBuilder.h3("Results").raw(tableResult.table);
|
|
136
|
+
// NULL value summary (only if there are NULLs)
|
|
137
|
+
const nullCounts = tableResult.metadata.nullCounts;
|
|
138
|
+
const totalNulls = Object.values(nullCounts).reduce((sum, count) => sum + count, 0);
|
|
139
|
+
// Summary section
|
|
140
|
+
const summaryItems = [
|
|
141
|
+
`**Total rows**: ${rowCount}`,
|
|
142
|
+
`**Columns**: ${columnCount}`,
|
|
143
|
+
];
|
|
144
|
+
if (metadata?.executionTime) {
|
|
145
|
+
summaryItems.push(`**Execution time**: ${metadata.executionTime}ms`);
|
|
146
|
+
}
|
|
147
|
+
if (totalNulls > 0) {
|
|
148
|
+
const nullDetails = Object.entries(nullCounts)
|
|
149
|
+
.filter(([, count]) => count > 0)
|
|
150
|
+
.map(([col, count]) => {
|
|
151
|
+
// Convert column index to name for display
|
|
152
|
+
const colIndex = parseInt(col);
|
|
153
|
+
const colName = isNaN(colIndex)
|
|
154
|
+
? col
|
|
155
|
+
: allColumns[colIndex]?.name || col;
|
|
156
|
+
return `${colName} (${count})`;
|
|
157
|
+
})
|
|
158
|
+
.join(", ");
|
|
159
|
+
summaryItems.push(`**NULL values**: ${totalNulls} total - ${nullDetails}`);
|
|
160
|
+
}
|
|
161
|
+
if (metadata?.affectedRows !== undefined) {
|
|
162
|
+
summaryItems.push(`**Affected rows**: ${metadata.affectedRows}`);
|
|
163
|
+
}
|
|
164
|
+
if (metadata?.parameterCount) {
|
|
165
|
+
summaryItems.push(`**Parameters processed**: ${metadata.parameterCount}`);
|
|
166
|
+
}
|
|
167
|
+
mdBuilder.h3("Summary").list(summaryItems);
|
|
168
|
+
return [{ type: "text", text: mdBuilder.build() }];
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Formats successful SQL tool output into a text block that highlights
|
|
172
|
+
* row counts and execution timing for quick operator feedback.
|
|
173
|
+
*/
|
|
174
|
+
// Default formatter for successful responses (fallback)
|
|
175
|
+
export const defaultResponseFormatter = (result) => [
|
|
176
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
177
|
+
];
|
|
178
|
+
/**
|
|
179
|
+
* Creates an MCP-compatible handler from a declarative tool definition.
|
|
180
|
+
* Handles input validation, performance measurement, standardized error
|
|
181
|
+
* formatting, and context propagation.
|
|
182
|
+
*/
|
|
183
|
+
export function createHandlerFromDefinition(definition) {
|
|
184
|
+
return async (rawParams, mcpContext) => {
|
|
185
|
+
const handlerContext = requestContextService.createRequestContext({
|
|
186
|
+
parentContext: mcpContext,
|
|
187
|
+
operation: `tool:${definition.name}`,
|
|
188
|
+
toolName: definition.name,
|
|
189
|
+
});
|
|
190
|
+
return withRequestContext(handlerContext, async () => {
|
|
191
|
+
try {
|
|
192
|
+
const validatedInput = definition.inputSchema.parse(rawParams ?? {});
|
|
193
|
+
const result = await measureToolExecution(definition.name, () => definition.logic(validatedInput, handlerContext), validatedInput);
|
|
194
|
+
const output = definition.outputSchema.parse(result);
|
|
195
|
+
const contentBlocks = definition.responseFormatter
|
|
196
|
+
? definition.responseFormatter(output)
|
|
197
|
+
: defaultResponseFormatter(output);
|
|
198
|
+
return {
|
|
199
|
+
content: contentBlocks,
|
|
200
|
+
structuredContent: output,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
const capturedContext = getRequestContext() ?? handlerContext ?? undefined;
|
|
205
|
+
const handledError = ErrorHandler.handleError(error, {
|
|
206
|
+
operation: `tool:${definition.name}`,
|
|
207
|
+
context: capturedContext,
|
|
208
|
+
input: rawParams,
|
|
209
|
+
errorCode: error instanceof McpError ? error.code : undefined,
|
|
210
|
+
});
|
|
211
|
+
const mcpError = handledError instanceof McpError
|
|
212
|
+
? handledError
|
|
213
|
+
: new McpError(JsonRpcErrorCode.InternalError, handledError instanceof Error
|
|
214
|
+
? handledError.message
|
|
215
|
+
: String(handledError));
|
|
216
|
+
return {
|
|
217
|
+
isError: true,
|
|
218
|
+
content: [
|
|
219
|
+
{
|
|
220
|
+
type: "text",
|
|
221
|
+
text: `Error executing '${definition.name}': ${mcpError.message}`,
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
structuredContent: {
|
|
225
|
+
success: false,
|
|
226
|
+
data: [],
|
|
227
|
+
error: mcpError.message,
|
|
228
|
+
errorCode: mcpError.code,
|
|
229
|
+
errorDetails: mcpError.details,
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=toolDefinitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolDefinitions.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolDefinitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview SQL execution engine for YAML-defined tools
|
|
3
|
+
* Processes SQL parameters and executes queries using SourceManager
|
|
4
|
+
*
|
|
5
|
+
* @module src/utils/yaml/yamlSqlExecutor
|
|
6
|
+
*/
|
|
7
|
+
import { SourceManager } from "../../services/sourceManager.js";
|
|
8
|
+
import { SqlToolParameter, SqlToolSecurityConfig, SqlToolExecutionResult } from "../../schemas/index.js";
|
|
9
|
+
import { RequestContext } from "../../../utils/internal/requestContext.js";
|
|
10
|
+
/**
|
|
11
|
+
* SQL execution engine for YAML-defined tools
|
|
12
|
+
* Handles parameter binding and multi-source query execution
|
|
13
|
+
*/
|
|
14
|
+
export declare class SQLToolFactory {
|
|
15
|
+
private static sourceManager;
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the SQL executor with a source manager
|
|
18
|
+
* @param sourceManager - Source manager instance
|
|
19
|
+
*/
|
|
20
|
+
static initialize(sourceManager: SourceManager): void;
|
|
21
|
+
/**
|
|
22
|
+
* Validate SQL statement for common issues
|
|
23
|
+
* @param statement - SQL statement to validate
|
|
24
|
+
* @param toolName - Tool name for error reporting
|
|
25
|
+
* @param context - Request context
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
static validateSqlStatement(statement: string, toolName: string, context: RequestContext): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute a SQL statement with parameter binding
|
|
31
|
+
* @param toolName - Name of the tool
|
|
32
|
+
* @param sourceName - Source to execute against
|
|
33
|
+
* @param sqlStatement - SQL statement with parameter placeholders
|
|
34
|
+
* @param parameters - Parameters for processing
|
|
35
|
+
* @param parameterDefinitions - Parameter definitions for validation
|
|
36
|
+
* @param context - Request context (optional)
|
|
37
|
+
* @param securityConfig - Security configuration for validation (optional)
|
|
38
|
+
* @returns Execution result
|
|
39
|
+
*/
|
|
40
|
+
static executeStatementWithParameters<T = Record<string, unknown>>(toolName: string, sourceName: string, sqlStatement: string, parameters: Record<string, unknown>, parameterDefinitions?: SqlToolParameter[], context?: RequestContext, securityConfig?: SqlToolSecurityConfig): Promise<SqlToolExecutionResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Execute a query with auth-aware routing
|
|
43
|
+
* Routes to authenticated pools when IBM i tokens are present, otherwise uses source manager
|
|
44
|
+
* @param sql - Processed SQL statement
|
|
45
|
+
* @param parameters - Binding parameters
|
|
46
|
+
* @param sourceName - Source name for fallback routing
|
|
47
|
+
* @param context - Request context
|
|
48
|
+
* @param securityConfig - Optional security configuration
|
|
49
|
+
* @returns Query execution result
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
private static executeWithAuthRouting;
|
|
53
|
+
/**
|
|
54
|
+
* Get initialized state
|
|
55
|
+
* @returns Whether the executor is initialized
|
|
56
|
+
*/
|
|
57
|
+
static isInitialized(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get the source manager instance (for testing)
|
|
60
|
+
* @returns Source manager instance
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
static getSourceManager(): SourceManager | undefined;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=toolFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolFactory.d.ts","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAEL,cAAc,EACf,MAAM,oCAAoC,CAAC;AAM5C;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;IAE5C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAWrD;;;;;;OAMG;WACU,oBAAoB,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAsChB;;;;;;;;;;OAUG;WACU,8BAA8B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,oBAAoB,GAAE,gBAAgB,EAAO,EAC7C,OAAO,CAAC,EAAE,cAAc,EACxB,cAAc,CAAC,EAAE,qBAAqB,GACrC,OAAO,CAAC,sBAAsB,CAAC;IAgLlC;;;;;;;;;;OAUG;mBACkB,sBAAsB;IAyD3C;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;IAI/B;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,aAAa,GAAG,SAAS;CAGrD"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview SQL execution engine for YAML-defined tools
|
|
3
|
+
* Processes SQL parameters and executes queries using SourceManager
|
|
4
|
+
*
|
|
5
|
+
* @module src/utils/yaml/yamlSqlExecutor
|
|
6
|
+
*/
|
|
7
|
+
import { AuthenticatedPoolManager } from "../../services/authenticatedPoolManager.js";
|
|
8
|
+
import { ErrorHandler, logger } from "../../../utils/internal/index.js";
|
|
9
|
+
import { requestContextService, } from "../../../utils/internal/requestContext.js";
|
|
10
|
+
import { JsonRpcErrorCode, McpError } from "../../../types-global/errors.js";
|
|
11
|
+
import { ParameterProcessor } from "../sql/parameterProcessor.js";
|
|
12
|
+
import { authContext } from "../../../mcp-server/transports/auth/index.js";
|
|
13
|
+
/**
|
|
14
|
+
* SQL execution engine for YAML-defined tools
|
|
15
|
+
* Handles parameter binding and multi-source query execution
|
|
16
|
+
*/
|
|
17
|
+
export class SQLToolFactory {
|
|
18
|
+
static sourceManager;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the SQL executor with a source manager
|
|
21
|
+
* @param sourceManager - Source manager instance
|
|
22
|
+
*/
|
|
23
|
+
static initialize(sourceManager) {
|
|
24
|
+
this.sourceManager = sourceManager;
|
|
25
|
+
logger.info({
|
|
26
|
+
requestId: "sql-executor-init",
|
|
27
|
+
timestamp: new Date().toISOString(),
|
|
28
|
+
}, "YAML SQL Executor initialized successfully");
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate SQL statement for common issues
|
|
32
|
+
* @param statement - SQL statement to validate
|
|
33
|
+
* @param toolName - Tool name for error reporting
|
|
34
|
+
* @param context - Request context
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
static async validateSqlStatement(statement, toolName, context) {
|
|
38
|
+
logger.debug({
|
|
39
|
+
...context,
|
|
40
|
+
statementLength: statement.length,
|
|
41
|
+
}, `Validating SQL statement for tool: ${toolName}`);
|
|
42
|
+
// Basic SQL validation
|
|
43
|
+
if (!statement?.trim()) {
|
|
44
|
+
throw new McpError(JsonRpcErrorCode.ValidationError, `SQL statement cannot be empty for tool: ${toolName}`, { toolName });
|
|
45
|
+
}
|
|
46
|
+
// Check for potential SQL injection patterns
|
|
47
|
+
const suspiciousPatterns = [
|
|
48
|
+
/;\s*(drop|delete|truncate|alter)\s+/i,
|
|
49
|
+
/union\s+select/i,
|
|
50
|
+
/exec\s*\(/i,
|
|
51
|
+
];
|
|
52
|
+
for (const pattern of suspiciousPatterns) {
|
|
53
|
+
if (pattern.test(statement)) {
|
|
54
|
+
logger.warning({
|
|
55
|
+
...context,
|
|
56
|
+
pattern: pattern.source,
|
|
57
|
+
}, `Potentially unsafe SQL pattern detected in tool: ${toolName}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Execute a SQL statement with parameter binding
|
|
63
|
+
* @param toolName - Name of the tool
|
|
64
|
+
* @param sourceName - Source to execute against
|
|
65
|
+
* @param sqlStatement - SQL statement with parameter placeholders
|
|
66
|
+
* @param parameters - Parameters for processing
|
|
67
|
+
* @param parameterDefinitions - Parameter definitions for validation
|
|
68
|
+
* @param context - Request context (optional)
|
|
69
|
+
* @param securityConfig - Security configuration for validation (optional)
|
|
70
|
+
* @returns Execution result
|
|
71
|
+
*/
|
|
72
|
+
static async executeStatementWithParameters(toolName, sourceName, sqlStatement, parameters, parameterDefinitions = [], context, securityConfig) {
|
|
73
|
+
const operationContext = context ||
|
|
74
|
+
requestContextService.createRequestContext({
|
|
75
|
+
operation: "ExecuteYamlStatementWithParameters",
|
|
76
|
+
toolName,
|
|
77
|
+
sourceName,
|
|
78
|
+
});
|
|
79
|
+
const startTime = Date.now();
|
|
80
|
+
return ErrorHandler.tryCatch(async () => {
|
|
81
|
+
if (!this.sourceManager) {
|
|
82
|
+
throw new McpError(JsonRpcErrorCode.InternalError, "YAML SQL executor not initialized. Call YamlSqlExecutor.initialize() first.");
|
|
83
|
+
}
|
|
84
|
+
logger.debug({
|
|
85
|
+
...operationContext,
|
|
86
|
+
sqlLength: sqlStatement.length,
|
|
87
|
+
parameterCount: Object.keys(parameters).length,
|
|
88
|
+
definitionCount: parameterDefinitions.length,
|
|
89
|
+
}, `Processing SQL statement with parameters for tool: ${toolName}`);
|
|
90
|
+
let processedSql;
|
|
91
|
+
let bindingParameters = [];
|
|
92
|
+
// Special handling for direct SQL substitution (e.g., execute_sql tool)
|
|
93
|
+
if (parameterDefinitions.length === 1 &&
|
|
94
|
+
parameterDefinitions[0] &&
|
|
95
|
+
sqlStatement.trim() === `:${parameterDefinitions[0].name}`) {
|
|
96
|
+
// This is a direct SQL substitution case (like execute_sql)
|
|
97
|
+
const paramName = parameterDefinitions[0].name;
|
|
98
|
+
if (paramName in parameters &&
|
|
99
|
+
typeof parameters[paramName] === "string") {
|
|
100
|
+
processedSql = parameters[paramName];
|
|
101
|
+
bindingParameters = [];
|
|
102
|
+
logger.debug({
|
|
103
|
+
...operationContext,
|
|
104
|
+
originalStatement: sqlStatement,
|
|
105
|
+
substitutedSql: processedSql.substring(0, 100) +
|
|
106
|
+
(processedSql.length > 100 ? "..." : ""),
|
|
107
|
+
parameterName: paramName,
|
|
108
|
+
}, `Applied direct SQL substitution for tool: ${toolName}`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
throw new McpError(JsonRpcErrorCode.ValidationError, `Missing or invalid SQL parameter '${paramName}' for direct substitution`, { paramName, toolName });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (parameterDefinitions.length > 0) {
|
|
115
|
+
// Process with unified parameter validation and binding
|
|
116
|
+
const result = await ParameterProcessor.process(sqlStatement, parameters, parameterDefinitions, {
|
|
117
|
+
detailedLogging: true,
|
|
118
|
+
validateSyntax: true,
|
|
119
|
+
context: operationContext,
|
|
120
|
+
strictTypeValidation: true,
|
|
121
|
+
});
|
|
122
|
+
processedSql = result.sql;
|
|
123
|
+
bindingParameters = result.parameters;
|
|
124
|
+
if (result.missingParameters.length > 0) {
|
|
125
|
+
logger.warning({
|
|
126
|
+
...operationContext,
|
|
127
|
+
missingParameters: result.missingParameters,
|
|
128
|
+
}, `Missing parameters for tool ${toolName}`);
|
|
129
|
+
}
|
|
130
|
+
logger.debug({
|
|
131
|
+
...operationContext,
|
|
132
|
+
mode: result.mode,
|
|
133
|
+
parameterCount: bindingParameters.length,
|
|
134
|
+
parametersUsed: result.parameterNames,
|
|
135
|
+
}, `SQL processed with parameter binding`);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// No parameter definitions - use SQL as-is
|
|
139
|
+
processedSql = sqlStatement;
|
|
140
|
+
bindingParameters = [];
|
|
141
|
+
logger.debug({
|
|
142
|
+
...operationContext,
|
|
143
|
+
sqlLength: sqlStatement.length,
|
|
144
|
+
}, `SQL used as-is (no parameters defined)`);
|
|
145
|
+
}
|
|
146
|
+
// Execute the query with auth-aware routing
|
|
147
|
+
const result = await this.executeWithAuthRouting(processedSql, bindingParameters, sourceName, operationContext, securityConfig);
|
|
148
|
+
const executionTime = Date.now() - startTime;
|
|
149
|
+
logger.debug({
|
|
150
|
+
...operationContext,
|
|
151
|
+
executionTime,
|
|
152
|
+
rowCount: result.data?.length || 0,
|
|
153
|
+
success: result.success,
|
|
154
|
+
}, `SQL executed successfully for tool: ${toolName}`);
|
|
155
|
+
const simplifiedColumns = (result.metadata?.columns ?? []).map((column, index) => {
|
|
156
|
+
const record = column;
|
|
157
|
+
const name = record.name ?? record.label ?? `column_${index}`;
|
|
158
|
+
return {
|
|
159
|
+
name,
|
|
160
|
+
type: record.type,
|
|
161
|
+
label: record.label ?? record.name,
|
|
162
|
+
};
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
data: result.data || [],
|
|
166
|
+
rowCount: result.data?.length || 0,
|
|
167
|
+
affectedRows: result.metadata
|
|
168
|
+
?.affectedRows,
|
|
169
|
+
columns: simplifiedColumns,
|
|
170
|
+
executionTime,
|
|
171
|
+
parameterMetadata: {
|
|
172
|
+
mode: parameterDefinitions.length > 0 ? "parameters" : "none",
|
|
173
|
+
parameterCount: bindingParameters.length,
|
|
174
|
+
processedParameters: parameterDefinitions.map((p) => p.name),
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}, {
|
|
178
|
+
operation: "ExecuteYamlStatementWithParameters",
|
|
179
|
+
context: operationContext,
|
|
180
|
+
errorCode: JsonRpcErrorCode.InternalError,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Execute a query with auth-aware routing
|
|
185
|
+
* Routes to authenticated pools when IBM i tokens are present, otherwise uses source manager
|
|
186
|
+
* @param sql - Processed SQL statement
|
|
187
|
+
* @param parameters - Binding parameters
|
|
188
|
+
* @param sourceName - Source name for fallback routing
|
|
189
|
+
* @param context - Request context
|
|
190
|
+
* @param securityConfig - Optional security configuration
|
|
191
|
+
* @returns Query execution result
|
|
192
|
+
* @private
|
|
193
|
+
*/
|
|
194
|
+
static async executeWithAuthRouting(sql, parameters, sourceName, context, securityConfig) {
|
|
195
|
+
// Check for IBM i authentication context
|
|
196
|
+
const authInfo = authContext.getStore()?.authInfo;
|
|
197
|
+
if (authInfo?.ibmiToken) {
|
|
198
|
+
// Use authenticated pool manager when IBM i token is present
|
|
199
|
+
logger.debug({
|
|
200
|
+
...context,
|
|
201
|
+
authClientId: authInfo.clientId,
|
|
202
|
+
ibmiHost: authInfo.ibmiHost,
|
|
203
|
+
routingMode: "authenticated",
|
|
204
|
+
}, "Executing SQL via authenticated pool");
|
|
205
|
+
const poolManager = AuthenticatedPoolManager.getInstance();
|
|
206
|
+
return poolManager.executeQuery(authInfo.ibmiToken, sql, parameters, context);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Fall back to regular source manager (environment credentials)
|
|
210
|
+
logger.debug({
|
|
211
|
+
...context,
|
|
212
|
+
sourceName,
|
|
213
|
+
routingMode: "environment",
|
|
214
|
+
}, "Executing SQL via source manager");
|
|
215
|
+
return securityConfig
|
|
216
|
+
? this.sourceManager.executeQuery(sourceName, sql, parameters, context, securityConfig)
|
|
217
|
+
: this.sourceManager.executeQuery(sourceName, sql, parameters, context);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get initialized state
|
|
222
|
+
* @returns Whether the executor is initialized
|
|
223
|
+
*/
|
|
224
|
+
static isInitialized() {
|
|
225
|
+
return !!this.sourceManager;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get the source manager instance (for testing)
|
|
229
|
+
* @returns Source manager instance
|
|
230
|
+
* @internal
|
|
231
|
+
*/
|
|
232
|
+
static getSourceManager() {
|
|
233
|
+
return this.sourceManager;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=toolFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolFactory.js","sourceRoot":"","sources":["../../../../src/ibmi-mcp-server/utils/config/toolFactory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAMtF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAGpE;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,aAAa,CAAgB;IAE5C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,aAA4B;QAC5C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,MAAM,CAAC,IAAI,CACT;YACE,SAAS,EAAE,mBAAmB;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,EACD,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,SAAiB,EACjB,QAAgB,EAChB,OAAuB;QAEvB,MAAM,CAAC,KAAK,CACV;YACE,GAAG,OAAO;YACV,eAAe,EAAE,SAAS,CAAC,MAAM;SAClC,EACD,sCAAsC,QAAQ,EAAE,CACjD,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,eAAe,EAChC,2CAA2C,QAAQ,EAAE,EACrD,EAAE,QAAQ,EAAE,CACb,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,kBAAkB,GAAG;YACzB,sCAAsC;YACtC,iBAAiB;YACjB,YAAY;SACb,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,OAAO,CACZ;oBACE,GAAG,OAAO;oBACV,OAAO,EAAE,OAAO,CAAC,MAAM;iBACxB,EACD,oDAAoD,QAAQ,EAAE,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,8BAA8B,CACzC,QAAgB,EAChB,UAAkB,EAClB,YAAoB,EACpB,UAAmC,EACnC,uBAA2C,EAAE,EAC7C,OAAwB,EACxB,cAAsC;QAEtC,MAAM,gBAAgB,GACpB,OAAO;YACP,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,oCAAoC;gBAC/C,QAAQ;gBACR,UAAU;aACX,CAAC,CAAC;QAEL,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,YAAY,CAAC,QAAQ,CAC1B,KAAK,IAAI,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,6EAA6E,CAC9E,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CACV;gBACE,GAAG,gBAAgB;gBACnB,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;gBAC9C,eAAe,EAAE,oBAAoB,CAAC,MAAM;aAC7C,EACD,sDAAsD,QAAQ,EAAE,CACjE,CAAC;YAEF,IAAI,YAAoB,CAAC;YACzB,IAAI,iBAAiB,GAA8C,EAAE,CAAC;YAEtE,wEAAwE;YACxE,IACE,oBAAoB,CAAC,MAAM,KAAK,CAAC;gBACjC,oBAAoB,CAAC,CAAC,CAAC;gBACvB,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAC1D,CAAC;gBACD,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/C,IACE,SAAS,IAAI,UAAU;oBACvB,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,QAAQ,EACzC,CAAC;oBACD,YAAY,GAAG,UAAU,CAAC,SAAS,CAAW,CAAC;oBAC/C,iBAAiB,GAAG,EAAE,CAAC;oBAEvB,MAAM,CAAC,KAAK,CACV;wBACE,GAAG,gBAAgB;wBACnB,iBAAiB,EAAE,YAAY;wBAC/B,cAAc,EACZ,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;4BAC9B,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1C,aAAa,EAAE,SAAS;qBACzB,EACD,6CAA6C,QAAQ,EAAE,CACxD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,eAAe,EAChC,qCAAqC,SAAS,2BAA2B,EACzE,EAAE,SAAS,EAAE,QAAQ,EAAE,CACxB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,wDAAwD;gBACxD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAC7C,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB;oBACE,eAAe,EAAE,IAAI;oBACrB,cAAc,EAAE,IAAI;oBACpB,OAAO,EAAE,gBAAgB;oBACzB,oBAAoB,EAAE,IAAI;iBAC3B,CACF,CAAC;gBAEF,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC1B,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;gBAEtC,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,OAAO,CACZ;wBACE,GAAG,gBAAgB;wBACnB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;qBAC5C,EACD,+BAA+B,QAAQ,EAAE,CAC1C,CAAC;gBACJ,CAAC;gBAED,MAAM,CAAC,KAAK,CACV;oBACE,GAAG,gBAAgB;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,cAAc,EAAE,iBAAiB,CAAC,MAAM;oBACxC,cAAc,EAAE,MAAM,CAAC,cAAc;iBACtC,EACD,sCAAsC,CACvC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,YAAY,GAAG,YAAY,CAAC;gBAC5B,iBAAiB,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,CACV;oBACE,GAAG,gBAAgB;oBACnB,SAAS,EAAE,YAAY,CAAC,MAAM;iBAC/B,EACD,wCAAwC,CACzC,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC9C,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,CACf,CAAC;YAEF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE7C,MAAM,CAAC,KAAK,CACV;gBACE,GAAG,gBAAgB;gBACnB,aAAa;gBACb,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;gBAClC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,EACD,uCAAuC,QAAQ,EAAE,CAClD,CAAC;YAEF,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAC5D,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChB,MAAM,MAAM,GAAG,MAId,CAAC;gBAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,UAAU,KAAK,EAAE,CAAC;gBAE9D,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;iBACnC,CAAC;YACJ,CAAC,CACF,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;gBAClC,YAAY,EAAG,MAAM,CAAC,QAAsC;oBAC1D,EAAE,YAAY;gBAChB,OAAO,EAAE,iBAAiB;gBAC1B,aAAa;gBACb,iBAAiB,EAAE;oBACjB,IAAI,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;oBAC7D,cAAc,EAAE,iBAAiB,CAAC,MAAM;oBACxC,mBAAmB,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC7D;aACF,CAAC;QACJ,CAAC,EACD;YACE,SAAS,EAAE,oCAAoC;YAC/C,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,gBAAgB,CAAC,aAAa;SAC1C,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACK,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACzC,GAAW,EACX,UAAqD,EACrD,UAAkB,EAClB,OAAuB,EACvB,cAAsC;QAEtC,yCAAyC;QACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;QAElD,IAAI,QAAQ,EAAE,SAAS,EAAE,CAAC;YACxB,6DAA6D;YAC7D,MAAM,CAAC,KAAK,CACV;gBACE,GAAG,OAAO;gBACV,YAAY,EAAE,QAAQ,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW,EAAE,eAAe;aAC7B,EACD,sCAAsC,CACvC,CAAC;YAEF,MAAM,WAAW,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC;YAC3D,OAAO,WAAW,CAAC,YAAY,CAC7B,QAAQ,CAAC,SAAS,EAClB,GAAG,EACH,UAAU,EACV,OAAO,CACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,MAAM,CAAC,KAAK,CACV;gBACE,GAAG,OAAO;gBACV,UAAU;gBACV,WAAW,EAAE,aAAa;aAC3B,EACD,kCAAkC,CACnC,CAAC;YAEF,OAAO,cAAc;gBACnB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAC7B,UAAU,EACV,GAAG,EACH,UAAU,EACV,OAAO,EACP,cAAc,CACf;gBACH,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAC7B,UAAU,EACV,GAAG,EACH,UAAU,EACV,OAAO,CACR,CAAC;QACR,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
|