@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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Manages asynchronous context propagation using AsyncLocalStorage.
|
|
3
|
+
* This module provides a mechanism to store and retrieve a `RequestContext` across
|
|
4
|
+
* asynchronous operations, ensuring that critical metadata like `requestId` and trace
|
|
5
|
+
* information is available throughout the entire call stack without prop drilling.
|
|
6
|
+
* @module src/utils/internal/asyncContext
|
|
7
|
+
* @see {@link src/utils/internal/requestContext.ts} for the definition of RequestContext.
|
|
8
|
+
*/
|
|
9
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
10
|
+
/**
|
|
11
|
+
* The singleton `AsyncLocalStorage` instance for storing the `RequestContext`.
|
|
12
|
+
* This holds the context for the duration of a single asynchronous operation,
|
|
13
|
+
* such as an incoming tool call or a scheduled job.
|
|
14
|
+
*/
|
|
15
|
+
export const requestContextStore = new AsyncLocalStorage();
|
|
16
|
+
/**
|
|
17
|
+
* Retrieves the current `RequestContext` from the async local storage.
|
|
18
|
+
* It is a synchronous call that depends on the execution context.
|
|
19
|
+
*
|
|
20
|
+
* @returns {RequestContext | undefined} The current `RequestContext` if it exists
|
|
21
|
+
* in the current async context, otherwise `undefined`.
|
|
22
|
+
*/
|
|
23
|
+
export function getRequestContext() {
|
|
24
|
+
return requestContextStore.getStore();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A higher-order function that runs a given function within a specified `RequestContext`.
|
|
28
|
+
* This is the primary mechanism for establishing an async context for an operation.
|
|
29
|
+
*
|
|
30
|
+
* @template T The return type of the function to be executed.
|
|
31
|
+
* @param {RequestContext} context - The `RequestContext` to set for the duration of the function's execution.
|
|
32
|
+
* @param {() => T} fn - The function to execute within the context.
|
|
33
|
+
* @returns {T} The result returned by the function `fn`.
|
|
34
|
+
*/
|
|
35
|
+
export function withRequestContext(context, fn) {
|
|
36
|
+
return requestContextStore.run(context, fn);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=asyncContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncContext.js","sourceRoot":"","sources":["../../../src/utils/internal/asyncContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAI,OAAuB,EAAE,EAAW;IACxE,OAAO,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { JsonRpcErrorCode } from "../../types-global/errors.js";
|
|
2
|
+
import { RequestContext } from "./requestContext.js";
|
|
3
|
+
/**
|
|
4
|
+
* Defines a generic structure for providing context with errors.
|
|
5
|
+
* This context can include identifiers like `requestId` or any other relevant
|
|
6
|
+
* key-value pairs that aid in debugging or understanding the error's circumstances.
|
|
7
|
+
*/
|
|
8
|
+
export type ErrorContext = RequestContext;
|
|
9
|
+
/**
|
|
10
|
+
* Configuration options for the `ErrorHandler.handleError` method.
|
|
11
|
+
* These options control how an error is processed, logged, and whether it's rethrown.
|
|
12
|
+
*/
|
|
13
|
+
export interface ErrorHandlerOptions {
|
|
14
|
+
/**
|
|
15
|
+
* The context of the operation that caused the error.
|
|
16
|
+
* This can include `requestId` and other relevant debugging information.
|
|
17
|
+
*/
|
|
18
|
+
context?: ErrorContext;
|
|
19
|
+
/**
|
|
20
|
+
* A descriptive name of the operation being performed when the error occurred.
|
|
21
|
+
* This helps in identifying the source or nature of the error in logs.
|
|
22
|
+
* Example: "UserLogin", "ProcessPayment", "FetchUserProfile".
|
|
23
|
+
*/
|
|
24
|
+
operation: string;
|
|
25
|
+
/**
|
|
26
|
+
* The input data or parameters that were being processed when the error occurred.
|
|
27
|
+
* This input will be sanitized before logging to prevent sensitive data exposure.
|
|
28
|
+
*/
|
|
29
|
+
input?: unknown;
|
|
30
|
+
/**
|
|
31
|
+
* If true, the (potentially transformed) error will be rethrown after handling.
|
|
32
|
+
* Defaults to `false`.
|
|
33
|
+
*/
|
|
34
|
+
rethrow?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* A specific `JsonRpcErrorCode` to assign to the error, overriding any
|
|
37
|
+
* automatically determined error code.
|
|
38
|
+
*/
|
|
39
|
+
errorCode?: JsonRpcErrorCode;
|
|
40
|
+
/**
|
|
41
|
+
* A custom function to map or transform the original error into a new `Error` instance.
|
|
42
|
+
* If provided, this function is used instead of the default `McpError` creation.
|
|
43
|
+
* @param error - The original error that occurred.
|
|
44
|
+
* @returns The transformed error.
|
|
45
|
+
*/
|
|
46
|
+
errorMapper?: (error: unknown) => Error;
|
|
47
|
+
/**
|
|
48
|
+
* If true, indicates that the error is critical and might require immediate attention
|
|
49
|
+
* or could lead to system instability. This is primarily for logging and alerting.
|
|
50
|
+
* Defaults to `false`.
|
|
51
|
+
*/
|
|
52
|
+
critical?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Defines a rule for mapping error patterns to a specific JSON-RPC error code.
|
|
56
|
+
*/
|
|
57
|
+
export interface ErrorMappingRule {
|
|
58
|
+
/**
|
|
59
|
+
* A string or regular expression to match against the error message.
|
|
60
|
+
*/
|
|
61
|
+
pattern: string | RegExp;
|
|
62
|
+
/**
|
|
63
|
+
* The `JsonRpcErrorCode` to assign if the pattern matches.
|
|
64
|
+
*/
|
|
65
|
+
errorCode: JsonRpcErrorCode;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A utility class providing static methods for comprehensive error handling.
|
|
69
|
+
*/
|
|
70
|
+
export declare class ErrorHandler {
|
|
71
|
+
/**
|
|
72
|
+
* Determines an appropriate `JsonRpcErrorCode` for a given error.
|
|
73
|
+
* @param error - The error instance or value to classify.
|
|
74
|
+
* @returns The determined error code.
|
|
75
|
+
*/
|
|
76
|
+
static determineErrorCode(error: unknown): JsonRpcErrorCode;
|
|
77
|
+
static handleError(error: unknown, options: ErrorHandlerOptions): Error;
|
|
78
|
+
private static _recordOtelError;
|
|
79
|
+
private static _createFinalError;
|
|
80
|
+
private static _buildLogPayload;
|
|
81
|
+
/**
|
|
82
|
+
* Formats an error into a consistent object structure for API responses.
|
|
83
|
+
* @param error - The error instance or value to format.
|
|
84
|
+
* @returns A structured representation of the error.
|
|
85
|
+
*/
|
|
86
|
+
static formatError(error: unknown): Record<string, unknown>;
|
|
87
|
+
/**
|
|
88
|
+
* Safely executes a function and handles errors using `ErrorHandler.handleError`.
|
|
89
|
+
* @param fn - The function to execute.
|
|
90
|
+
* @param options - Error handling options.
|
|
91
|
+
* @returns A promise resolving with the result of `fn`.
|
|
92
|
+
*/
|
|
93
|
+
static tryCatch<T>(fn: () => Promise<T> | T, options: Omit<ErrorHandlerOptions, "rethrow">): Promise<T>;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=errorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../../src/utils/internal/errorHandler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAY,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;OAEG;IACH,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAkFD;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;WACW,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;WAsBpD,WAAW,CACvB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,mBAAmB,GAC3B,KAAK;IA2BR,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA2BhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwB/B;;;;OAIG;WACW,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBlE;;;;;OAKG;WACiB,QAAQ,CAAC,CAAC,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACxB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAC5C,OAAO,CAAC,CAAC,CAAC;CAOd"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview This module provides utilities for robust error handling.
|
|
3
|
+
* It defines structures for error context, options for handling errors,
|
|
4
|
+
* and mappings for classifying errors. The main `ErrorHandler` class
|
|
5
|
+
* offers static methods for consistent error processing, logging, and transformation.
|
|
6
|
+
* @module src/utils/internal/errorHandler
|
|
7
|
+
*/
|
|
8
|
+
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
9
|
+
import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
|
|
10
|
+
import { requestContextService, sanitizeInputForLogging } from "../index.js";
|
|
11
|
+
import { logOperationError } from "./logging-helpers.js";
|
|
12
|
+
/**
|
|
13
|
+
* Maps standard JavaScript error constructor names to `JsonRpcErrorCode` values.
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
const ERROR_TYPE_MAPPINGS = {
|
|
17
|
+
SyntaxError: JsonRpcErrorCode.InvalidParams,
|
|
18
|
+
TypeError: JsonRpcErrorCode.InvalidParams,
|
|
19
|
+
ReferenceError: JsonRpcErrorCode.InternalError,
|
|
20
|
+
RangeError: JsonRpcErrorCode.InvalidParams,
|
|
21
|
+
URIError: JsonRpcErrorCode.InvalidParams,
|
|
22
|
+
EvalError: JsonRpcErrorCode.InternalError,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Array of `ErrorMappingRule` to classify errors by message/name patterns.
|
|
26
|
+
* Order matters: more specific patterns should precede generic ones.
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
const COMMON_ERROR_PATTERNS = [
|
|
30
|
+
{
|
|
31
|
+
pattern: /auth|unauthorized|unauthenticated|invalid.*token/i,
|
|
32
|
+
errorCode: JsonRpcErrorCode.Unauthorized,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
pattern: /permission|forbidden|access.*denied/i,
|
|
36
|
+
errorCode: JsonRpcErrorCode.Forbidden,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
pattern: /not found|missing|no such/i,
|
|
40
|
+
errorCode: JsonRpcErrorCode.NotFound,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
pattern: /invalid|validation|malformed|bad request|wrong format|missing required/i,
|
|
44
|
+
errorCode: JsonRpcErrorCode.InvalidParams, // Use the standard code for invalid parameters
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
pattern: /conflict|already exists|duplicate/i,
|
|
48
|
+
errorCode: JsonRpcErrorCode.Conflict,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
pattern: /rate limit|too many requests/i,
|
|
52
|
+
errorCode: JsonRpcErrorCode.RateLimited,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
pattern: /timeout|timed out/i,
|
|
56
|
+
errorCode: JsonRpcErrorCode.Timeout,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
pattern: /service unavailable|bad gateway/i,
|
|
60
|
+
errorCode: JsonRpcErrorCode.ServiceUnavailable,
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
/**
|
|
64
|
+
* Creates a "safe" RegExp for testing error messages.
|
|
65
|
+
* @param pattern - The string or RegExp pattern.
|
|
66
|
+
* @returns A new RegExp instance.
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
function createSafeRegex(pattern) {
|
|
70
|
+
if (pattern instanceof RegExp) {
|
|
71
|
+
let flags = pattern.flags.replace("g", "");
|
|
72
|
+
if (!flags.includes("i"))
|
|
73
|
+
flags += "i";
|
|
74
|
+
return new RegExp(pattern.source, flags);
|
|
75
|
+
}
|
|
76
|
+
return new RegExp(pattern, "i");
|
|
77
|
+
}
|
|
78
|
+
function getErrorName(error) {
|
|
79
|
+
if (error instanceof Error)
|
|
80
|
+
return error.name || "Error";
|
|
81
|
+
return "NonError";
|
|
82
|
+
}
|
|
83
|
+
function getErrorMessage(error) {
|
|
84
|
+
if (error instanceof Error)
|
|
85
|
+
return error.message;
|
|
86
|
+
if (typeof error === "string")
|
|
87
|
+
return error;
|
|
88
|
+
return "An unknown error occurred.";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A utility class providing static methods for comprehensive error handling.
|
|
92
|
+
*/
|
|
93
|
+
export class ErrorHandler {
|
|
94
|
+
/**
|
|
95
|
+
* Determines an appropriate `JsonRpcErrorCode` for a given error.
|
|
96
|
+
* @param error - The error instance or value to classify.
|
|
97
|
+
* @returns The determined error code.
|
|
98
|
+
*/
|
|
99
|
+
static determineErrorCode(error) {
|
|
100
|
+
if (error instanceof McpError) {
|
|
101
|
+
return error.code;
|
|
102
|
+
}
|
|
103
|
+
const errorName = getErrorName(error);
|
|
104
|
+
const errorMessage = getErrorMessage(error);
|
|
105
|
+
const mappedFromType = ERROR_TYPE_MAPPINGS[errorName];
|
|
106
|
+
if (mappedFromType) {
|
|
107
|
+
return mappedFromType;
|
|
108
|
+
}
|
|
109
|
+
for (const mapping of COMMON_ERROR_PATTERNS) {
|
|
110
|
+
const regex = createSafeRegex(mapping.pattern);
|
|
111
|
+
if (regex.test(errorMessage) || regex.test(errorName)) {
|
|
112
|
+
return mapping.errorCode;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return JsonRpcErrorCode.InternalError;
|
|
116
|
+
}
|
|
117
|
+
static handleError(error, options) {
|
|
118
|
+
this._recordOtelError(error);
|
|
119
|
+
const finalError = this._createFinalError(error, options);
|
|
120
|
+
const logPayload = this._buildLogPayload(finalError, error, options);
|
|
121
|
+
// Ensure a valid context exists for logging.
|
|
122
|
+
const contextForLogging = options.context ??
|
|
123
|
+
requestContextService.createRequestContext({
|
|
124
|
+
operation: options.operation,
|
|
125
|
+
});
|
|
126
|
+
// Use the centralized logging helper for consistent error logging.
|
|
127
|
+
logOperationError(contextForLogging, finalError.message, finalError, logPayload);
|
|
128
|
+
if (options.rethrow ?? false) {
|
|
129
|
+
throw finalError;
|
|
130
|
+
}
|
|
131
|
+
return finalError;
|
|
132
|
+
}
|
|
133
|
+
static _recordOtelError(error) {
|
|
134
|
+
const activeSpan = trace.getActiveSpan();
|
|
135
|
+
if (!activeSpan)
|
|
136
|
+
return;
|
|
137
|
+
if (error instanceof Error) {
|
|
138
|
+
activeSpan.recordException(error);
|
|
139
|
+
}
|
|
140
|
+
activeSpan.setStatus({
|
|
141
|
+
code: SpanStatusCode.ERROR,
|
|
142
|
+
message: getErrorMessage(error),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
static _createFinalError(error, options) {
|
|
146
|
+
if (options.errorMapper) {
|
|
147
|
+
return options.errorMapper(error);
|
|
148
|
+
}
|
|
149
|
+
const determinedCode = options.errorCode || this.determineErrorCode(error);
|
|
150
|
+
const originalMessage = getErrorMessage(error);
|
|
151
|
+
if (error instanceof McpError) {
|
|
152
|
+
error.code = determinedCode; // Allow override
|
|
153
|
+
return error;
|
|
154
|
+
}
|
|
155
|
+
return new McpError(determinedCode, `Error in ${options.operation}: ${originalMessage}`, {
|
|
156
|
+
originalErrorName: getErrorName(error),
|
|
157
|
+
originalMessage,
|
|
158
|
+
}, { cause: error instanceof Error ? error : undefined });
|
|
159
|
+
}
|
|
160
|
+
static _buildLogPayload(finalError, originalError, options) {
|
|
161
|
+
const { context = {}, operation, input, critical = false } = options;
|
|
162
|
+
const payload = {
|
|
163
|
+
...context,
|
|
164
|
+
operation,
|
|
165
|
+
input: input !== undefined ? sanitizeInputForLogging(input) : undefined,
|
|
166
|
+
critical,
|
|
167
|
+
errorCode: finalError instanceof McpError
|
|
168
|
+
? finalError.code
|
|
169
|
+
: this.determineErrorCode(finalError),
|
|
170
|
+
originalErrorType: getErrorName(originalError),
|
|
171
|
+
finalErrorType: getErrorName(finalError),
|
|
172
|
+
};
|
|
173
|
+
// The Pino error serializer will handle the stack trace automatically.
|
|
174
|
+
return payload;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Formats an error into a consistent object structure for API responses.
|
|
178
|
+
* @param error - The error instance or value to format.
|
|
179
|
+
* @returns A structured representation of the error.
|
|
180
|
+
*/
|
|
181
|
+
static formatError(error) {
|
|
182
|
+
if (error instanceof McpError) {
|
|
183
|
+
return {
|
|
184
|
+
code: error.code,
|
|
185
|
+
message: error.message,
|
|
186
|
+
details: error.details ?? {},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
code: this.determineErrorCode(error),
|
|
191
|
+
message: getErrorMessage(error),
|
|
192
|
+
details: { errorType: getErrorName(error) },
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Safely executes a function and handles errors using `ErrorHandler.handleError`.
|
|
197
|
+
* @param fn - The function to execute.
|
|
198
|
+
* @param options - Error handling options.
|
|
199
|
+
* @returns A promise resolving with the result of `fn`.
|
|
200
|
+
*/
|
|
201
|
+
static async tryCatch(fn, options) {
|
|
202
|
+
try {
|
|
203
|
+
return await Promise.resolve(fn());
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw this.handleError(error, { ...options, rethrow: true });
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../src/utils/internal/errorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel file for internal utility modules.
|
|
3
|
+
* This file re-exports core internal utilities related to error handling,
|
|
4
|
+
* logging, and request context management.
|
|
5
|
+
* @module src/utils/internal
|
|
6
|
+
*/
|
|
7
|
+
export * from "./asyncContext.js";
|
|
8
|
+
export * from "./errorHandler.js";
|
|
9
|
+
export * from "./logger.js";
|
|
10
|
+
export * from "./performance.js";
|
|
11
|
+
export * from "./requestContext.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/internal/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel file for internal utility modules.
|
|
3
|
+
* This file re-exports core internal utilities related to error handling,
|
|
4
|
+
* logging, and request context management.
|
|
5
|
+
* @module src/utils/internal
|
|
6
|
+
*/
|
|
7
|
+
export * from "./asyncContext.js";
|
|
8
|
+
export * from "./errorHandler.js";
|
|
9
|
+
export * from "./logger.js";
|
|
10
|
+
export * from "./performance.js";
|
|
11
|
+
export * from "./requestContext.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/internal/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import pino from "pino";
|
|
2
|
+
import { RequestContext } from "./requestContext.js";
|
|
3
|
+
export type McpLogLevel = "debug" | "info" | "notice" | "warning" | "error" | "crit" | "alert" | "emerg";
|
|
4
|
+
export interface McpLogPayload {
|
|
5
|
+
message: string;
|
|
6
|
+
context?: RequestContext;
|
|
7
|
+
error?: {
|
|
8
|
+
message: string;
|
|
9
|
+
stack?: string;
|
|
10
|
+
};
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export type McpNotificationData = McpLogPayload | Record<string, unknown>;
|
|
14
|
+
export type McpNotificationSender = (level: McpLogLevel, data: McpNotificationData, loggerName?: string) => void;
|
|
15
|
+
export declare const logger: {
|
|
16
|
+
debug: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
17
|
+
info: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
18
|
+
notice: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
19
|
+
warning: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
20
|
+
error: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
21
|
+
crit: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
22
|
+
alert: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
23
|
+
emerg: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
24
|
+
fatal: (obj: Error | Record<string, unknown> | string, msg?: string) => void;
|
|
25
|
+
logInteraction: (interactionName: string, data: Record<string, unknown>) => void;
|
|
26
|
+
setMcpNotificationSender: (sender: McpNotificationSender | undefined) => void;
|
|
27
|
+
setLevel: (newLevel: McpLogLevel) => void;
|
|
28
|
+
pino: pino.Logger;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/internal/logger.ts"],"names":[],"mappings":"AASA,OAAO,IAGN,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,CAAC;AAeZ,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1E,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,mBAAmB,EACzB,UAAU,CAAC,EAAE,MAAM,KAChB,IAAI,CAAC;AA4MV,eAAO,MAAM,MAAM;iBA3BX,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;gBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;kBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;mBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;iBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;gBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;iBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;iBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;iBAAtD,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,QAAQ,MAAM;sCAsC1B,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;uCAIpC,qBAAqB,GAAG,SAAS;yBAI/C,WAAW;;CAYjC,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides a globally accessible, pre-configured Pino logger instance.
|
|
3
|
+
* This module handles environment-aware logging, structured JSON output for production,
|
|
4
|
+
* pretty-printing for development, and safe file-based logging for STDIO transports.
|
|
5
|
+
* It integrates with the async context to automatically enrich logs with request details.
|
|
6
|
+
* @module src/utils/internal/logger
|
|
7
|
+
*/
|
|
8
|
+
import os from "os";
|
|
9
|
+
import path from "path";
|
|
10
|
+
import pino from "pino";
|
|
11
|
+
import { config } from "../../config/index.js";
|
|
12
|
+
import { getRequestContext } from "./asyncContext.js";
|
|
13
|
+
// Pino levels are 'trace', 'debug', 'info', 'warn', 'error', 'fatal'.
|
|
14
|
+
// We map our custom MCP levels to these.
|
|
15
|
+
const mcpToPinoLevel = {
|
|
16
|
+
debug: "debug",
|
|
17
|
+
info: "info",
|
|
18
|
+
notice: "info",
|
|
19
|
+
warning: "warn",
|
|
20
|
+
error: "error",
|
|
21
|
+
crit: "fatal",
|
|
22
|
+
alert: "fatal",
|
|
23
|
+
emerg: "fatal",
|
|
24
|
+
};
|
|
25
|
+
let mcpNotificationSender;
|
|
26
|
+
function createPinoLogger() {
|
|
27
|
+
const isProd = config.environment === "production";
|
|
28
|
+
const isStdioTransport = config.mcpTransportType === "stdio";
|
|
29
|
+
const resolvedLogsDir = config.logsPath;
|
|
30
|
+
const logLevel = mcpToPinoLevel[config.logLevel] || "info";
|
|
31
|
+
// Build a transport target list so we can combine console + file outputs.
|
|
32
|
+
const targets = [];
|
|
33
|
+
// Console pretty printing for local dev (non-stdio, non-prod) if TTY.
|
|
34
|
+
if (!isProd && !isStdioTransport && process.stdout.isTTY) {
|
|
35
|
+
targets.push({
|
|
36
|
+
target: "pino-pretty",
|
|
37
|
+
options: {
|
|
38
|
+
colorize: true,
|
|
39
|
+
destination: process.stderr.fd,
|
|
40
|
+
ignore: "pid,hostname,env,name",
|
|
41
|
+
translateTime: "SYS:yyyy-mm-dd HH:MM:ss.l",
|
|
42
|
+
},
|
|
43
|
+
level: "debug",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// File logging: required for stdio/prod; optional for others when logs dir is available.
|
|
47
|
+
if (isStdioTransport || isProd) {
|
|
48
|
+
if (!resolvedLogsDir) {
|
|
49
|
+
throw new Error("Configuration Error: LOGS_PATH must be defined for STDIO transport or production environments.");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (resolvedLogsDir) {
|
|
53
|
+
// Combined rotating log file (JSON) similar to previous combined.log
|
|
54
|
+
targets.push({
|
|
55
|
+
target: "pino-roll",
|
|
56
|
+
options: {
|
|
57
|
+
file: path.join(resolvedLogsDir, "combined.log"),
|
|
58
|
+
frequency: "daily",
|
|
59
|
+
mkdir: true,
|
|
60
|
+
size: "10m",
|
|
61
|
+
files: 5,
|
|
62
|
+
},
|
|
63
|
+
level: "info",
|
|
64
|
+
});
|
|
65
|
+
// Level-specific rolling files to mirror prior Winston setup
|
|
66
|
+
targets.push({
|
|
67
|
+
target: "pino-roll",
|
|
68
|
+
options: {
|
|
69
|
+
file: path.join(resolvedLogsDir, "error.log"),
|
|
70
|
+
frequency: "daily",
|
|
71
|
+
mkdir: true,
|
|
72
|
+
size: "10m",
|
|
73
|
+
files: 5,
|
|
74
|
+
},
|
|
75
|
+
level: "error",
|
|
76
|
+
}, {
|
|
77
|
+
target: "pino-roll",
|
|
78
|
+
options: {
|
|
79
|
+
file: path.join(resolvedLogsDir, "warn.log"),
|
|
80
|
+
frequency: "daily",
|
|
81
|
+
mkdir: true,
|
|
82
|
+
size: "10m",
|
|
83
|
+
files: 5,
|
|
84
|
+
},
|
|
85
|
+
level: "warn",
|
|
86
|
+
}, {
|
|
87
|
+
target: "pino-roll",
|
|
88
|
+
options: {
|
|
89
|
+
file: path.join(resolvedLogsDir, "info.log"),
|
|
90
|
+
frequency: "daily",
|
|
91
|
+
mkdir: true,
|
|
92
|
+
size: "10m",
|
|
93
|
+
files: 5,
|
|
94
|
+
},
|
|
95
|
+
level: "info",
|
|
96
|
+
}, {
|
|
97
|
+
target: "pino-roll",
|
|
98
|
+
options: {
|
|
99
|
+
file: path.join(resolvedLogsDir, "debug.log"),
|
|
100
|
+
frequency: "daily",
|
|
101
|
+
mkdir: true,
|
|
102
|
+
size: "10m",
|
|
103
|
+
files: 5,
|
|
104
|
+
},
|
|
105
|
+
level: "debug",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const pinoInstance = pino({
|
|
109
|
+
name: config.mcpServerName || "mcp-server",
|
|
110
|
+
level: logLevel,
|
|
111
|
+
timestamp: pino.stdTimeFunctions.isoTime,
|
|
112
|
+
redact: {
|
|
113
|
+
paths: [
|
|
114
|
+
"password",
|
|
115
|
+
"token",
|
|
116
|
+
"apiKey",
|
|
117
|
+
"secret",
|
|
118
|
+
"authorization",
|
|
119
|
+
"cookie",
|
|
120
|
+
],
|
|
121
|
+
censor: "[REDACTED]",
|
|
122
|
+
},
|
|
123
|
+
base: {
|
|
124
|
+
pid: process.pid,
|
|
125
|
+
hostname: os.hostname(),
|
|
126
|
+
env: config.environment,
|
|
127
|
+
},
|
|
128
|
+
// Automatically add request context to every log message via async local storage.
|
|
129
|
+
// mixin() {
|
|
130
|
+
// return getRequestContext() ?? {};
|
|
131
|
+
// },
|
|
132
|
+
// Use Pino's standard error serializer for robust error logging.
|
|
133
|
+
serializers: {
|
|
134
|
+
err: pino.stdSerializers.err,
|
|
135
|
+
},
|
|
136
|
+
transport: targets.length > 0 ? { targets } : undefined,
|
|
137
|
+
});
|
|
138
|
+
// Set up a global uncaught exception handler to ensure fatal errors are logged before exit.
|
|
139
|
+
process.on("uncaughtException", (err) => {
|
|
140
|
+
pinoInstance.fatal(err, "Uncaught exception detected. The application will now exit.");
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
return pinoInstance;
|
|
144
|
+
}
|
|
145
|
+
const mainLogger = createPinoLogger();
|
|
146
|
+
// Create a dedicated logger for interaction-specific logs.
|
|
147
|
+
// Create a dedicated interaction logger that writes to interactions.log if logsPath is available.
|
|
148
|
+
let interactionLogger;
|
|
149
|
+
if (config.logsPath) {
|
|
150
|
+
const interactionLogLevel = mcpToPinoLevel[config.logLevel] || "info";
|
|
151
|
+
interactionLogger = pino({
|
|
152
|
+
name: `${config.mcpServerName || "mcp-server"}-interactions`,
|
|
153
|
+
level: interactionLogLevel,
|
|
154
|
+
timestamp: pino.stdTimeFunctions.isoTime,
|
|
155
|
+
transport: {
|
|
156
|
+
targets: [
|
|
157
|
+
{
|
|
158
|
+
target: "pino-roll",
|
|
159
|
+
options: {
|
|
160
|
+
file: path.join(config.logsPath, "interactions.log"),
|
|
161
|
+
frequency: "daily",
|
|
162
|
+
mkdir: true,
|
|
163
|
+
size: "10m",
|
|
164
|
+
files: 5,
|
|
165
|
+
},
|
|
166
|
+
level: "info",
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
interactionLogger = mainLogger.child({ name: "interaction-logger" });
|
|
174
|
+
}
|
|
175
|
+
// Wrapper function to preserve the original MCP log levels and handle notifications.
|
|
176
|
+
const logWrapper = (level) => (obj, msg) => {
|
|
177
|
+
const pinoLevel = mcpToPinoLevel[level];
|
|
178
|
+
if (typeof obj === "string") {
|
|
179
|
+
mainLogger[pinoLevel](obj);
|
|
180
|
+
}
|
|
181
|
+
else if (obj instanceof Error) {
|
|
182
|
+
// Pino convention: pass error as 'err' property for the serializer to pick it up.
|
|
183
|
+
mainLogger[pinoLevel]({ err: obj }, msg);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
mainLogger[pinoLevel](obj, msg);
|
|
187
|
+
}
|
|
188
|
+
if (mcpNotificationSender) {
|
|
189
|
+
const payload = {
|
|
190
|
+
message: typeof obj === "string"
|
|
191
|
+
? obj
|
|
192
|
+
: msg || obj.message || "No message provided.",
|
|
193
|
+
context: getRequestContext(),
|
|
194
|
+
};
|
|
195
|
+
if (typeof obj === "object" && obj !== null) {
|
|
196
|
+
Object.assign(payload, obj);
|
|
197
|
+
}
|
|
198
|
+
mcpNotificationSender(level, payload, config.mcpServerName);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
export const logger = {
|
|
202
|
+
debug: logWrapper("debug"),
|
|
203
|
+
info: logWrapper("info"),
|
|
204
|
+
notice: logWrapper("notice"),
|
|
205
|
+
warning: logWrapper("warning"),
|
|
206
|
+
error: logWrapper("error"),
|
|
207
|
+
crit: logWrapper("crit"),
|
|
208
|
+
alert: logWrapper("alert"),
|
|
209
|
+
emerg: logWrapper("emerg"),
|
|
210
|
+
fatal: logWrapper("emerg"), // Alias fatal to emerg for convenience
|
|
211
|
+
logInteraction: (interactionName, data) => {
|
|
212
|
+
interactionLogger.info({ interactionName, ...data });
|
|
213
|
+
},
|
|
214
|
+
setMcpNotificationSender: (sender) => {
|
|
215
|
+
mcpNotificationSender = sender;
|
|
216
|
+
},
|
|
217
|
+
setLevel: (newLevel) => {
|
|
218
|
+
if (mcpToPinoLevel[newLevel]) {
|
|
219
|
+
mainLogger.level = mcpToPinoLevel[newLevel];
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
mainLogger.warn(`Invalid MCP log level provided: ${newLevel}. Log level remains unchanged.`);
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
// Expose the raw pino instance for advanced use cases, like passing to other libraries.
|
|
226
|
+
pino: mainLogger,
|
|
227
|
+
};
|
|
228
|
+
//# sourceMappingURL=logger.js.map
|