@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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides a utility function to make fetch requests with a specified timeout.
|
|
3
|
+
* @module src/utils/network/fetchWithTimeout
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from "../internal/logger.js"; // Adjusted import path
|
|
6
|
+
import { McpError, JsonRpcErrorCode } from "../../types-global/errors.js";
|
|
7
|
+
/**
|
|
8
|
+
* Fetches a resource with a specified timeout.
|
|
9
|
+
*
|
|
10
|
+
* @param url - The URL to fetch.
|
|
11
|
+
* @param timeoutMs - The timeout duration in milliseconds.
|
|
12
|
+
* @param context - The request context for logging.
|
|
13
|
+
* @param options - Optional fetch options (RequestInit), excluding 'signal'.
|
|
14
|
+
* @returns A promise that resolves to the Response object.
|
|
15
|
+
* @throws {McpError} If the request times out or another fetch-related error occurs.
|
|
16
|
+
*/
|
|
17
|
+
export async function fetchWithTimeout(url, timeoutMs, context, options) {
|
|
18
|
+
const controller = new AbortController();
|
|
19
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
20
|
+
const urlString = url.toString();
|
|
21
|
+
const operationDescription = `fetch ${options?.method || "GET"} ${urlString}`;
|
|
22
|
+
logger.debug(context, `Attempting ${operationDescription} with ${timeoutMs}ms timeout.`);
|
|
23
|
+
try {
|
|
24
|
+
const response = await fetch(url, {
|
|
25
|
+
...options,
|
|
26
|
+
signal: controller.signal,
|
|
27
|
+
});
|
|
28
|
+
clearTimeout(timeoutId);
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const errorBody = await response
|
|
31
|
+
.text()
|
|
32
|
+
.catch(() => "Could not read response body");
|
|
33
|
+
logger.error({
|
|
34
|
+
...context,
|
|
35
|
+
statusCode: response.status,
|
|
36
|
+
statusText: response.statusText,
|
|
37
|
+
responseBody: errorBody,
|
|
38
|
+
errorSource: "FetchHttpError",
|
|
39
|
+
}, `Fetch failed for ${urlString} with status ${response.status}.`);
|
|
40
|
+
throw new McpError(JsonRpcErrorCode.ServiceUnavailable, `Fetch failed for ${urlString}. Status: ${response.status}`, {
|
|
41
|
+
...context,
|
|
42
|
+
statusCode: response.status,
|
|
43
|
+
statusText: response.statusText,
|
|
44
|
+
responseBody: errorBody,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
logger.debug(context, `Successfully fetched ${urlString}. Status: ${response.status}`);
|
|
48
|
+
return response;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
clearTimeout(timeoutId);
|
|
52
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
53
|
+
logger.error({
|
|
54
|
+
...context,
|
|
55
|
+
errorSource: "FetchTimeout",
|
|
56
|
+
}, `${operationDescription} timed out after ${timeoutMs}ms.`);
|
|
57
|
+
throw new McpError(JsonRpcErrorCode.Timeout, `${operationDescription} timed out.`, { ...context, errorSource: "FetchTimeout" });
|
|
58
|
+
}
|
|
59
|
+
// Log and re-throw other errors as McpError
|
|
60
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
61
|
+
logger.error({
|
|
62
|
+
...context,
|
|
63
|
+
originalErrorName: error instanceof Error ? error.name : "UnknownError",
|
|
64
|
+
errorSource: "FetchNetworkError",
|
|
65
|
+
}, `Network error during ${operationDescription}: ${errorMessage}`);
|
|
66
|
+
if (error instanceof McpError) {
|
|
67
|
+
// If it's already an McpError, re-throw it
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
throw new McpError(JsonRpcErrorCode.ServiceUnavailable, // Generic error for network/service issues
|
|
71
|
+
`Network error during ${operationDescription}: ${errorMessage}`, {
|
|
72
|
+
...context,
|
|
73
|
+
originalErrorName: error instanceof Error ? error.name : "UnknownError",
|
|
74
|
+
errorSource: "FetchNetworkErrorWrapper",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=fetchWithTimeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchWithTimeout.js","sourceRoot":"","sources":["../../../src/utils/network/fetchWithTimeout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/network/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,uBAAuB,CAAC;AACtC,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/network/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides utility functions for parsing natural language date strings
|
|
3
|
+
* into Date objects or detailed parsing results using the `chrono-node` library.
|
|
4
|
+
* @module src/utils/parsing/dateParser
|
|
5
|
+
*/
|
|
6
|
+
import * as chrono from "chrono-node";
|
|
7
|
+
import { RequestContext } from "../index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parses a natural language date string into a JavaScript Date object.
|
|
10
|
+
* Uses `chrono.parseDate` for lenient parsing of various date formats.
|
|
11
|
+
*
|
|
12
|
+
* @param text - The natural language date string to parse.
|
|
13
|
+
* @param context - The request context for logging and error tracking.
|
|
14
|
+
* @param refDate - Optional reference date for parsing relative dates. Defaults to current date/time.
|
|
15
|
+
* @returns A promise resolving with a Date object or `null` if parsing fails.
|
|
16
|
+
* @throws {McpError} If an unexpected error occurs during parsing.
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseDateString(text: string, context: RequestContext, refDate?: Date): Promise<Date | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Parses a natural language date string and returns detailed parsing results.
|
|
22
|
+
* Provides more information than just the Date object, including matched text and components.
|
|
23
|
+
*
|
|
24
|
+
* @param text - The natural language date string to parse.
|
|
25
|
+
* @param context - The request context for logging and error tracking.
|
|
26
|
+
* @param refDate - Optional reference date for parsing relative dates. Defaults to current date/time.
|
|
27
|
+
* @returns A promise resolving with an array of `chrono.ParsedResult` objects. Empty if no dates found.
|
|
28
|
+
* @throws {McpError} If an unexpected error occurs during parsing.
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseDateStringDetailed(text: string, context: RequestContext, refDate?: Date): Promise<chrono.ParsedResult[]>;
|
|
32
|
+
/**
|
|
33
|
+
* An object providing date parsing functionalities.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { dateParser, requestContextService } from './utils'; // Assuming utils/index.js exports these
|
|
38
|
+
* const context = requestContextService.createRequestContext({ operation: 'TestDateParsing' });
|
|
39
|
+
*
|
|
40
|
+
* async function testParsing() {
|
|
41
|
+
* const dateObj = await dateParser.parseDate("next Friday at 3pm", context);
|
|
42
|
+
* if (dateObj) {
|
|
43
|
+
* console.log("Parsed Date:", dateObj.toISOString());
|
|
44
|
+
* }
|
|
45
|
+
*
|
|
46
|
+
* const detailedResults = await dateParser.parse("Meeting on 2024-12-25 and another one tomorrow", context);
|
|
47
|
+
* detailedResults.forEach(result => {
|
|
48
|
+
* console.log("Detailed Result:", result.text, result.start.date());
|
|
49
|
+
* });
|
|
50
|
+
* }
|
|
51
|
+
* testParsing();
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare const dateParser: {
|
|
55
|
+
/**
|
|
56
|
+
* Parses a natural language date string and returns detailed parsing results
|
|
57
|
+
* from `chrono-node`.
|
|
58
|
+
* @param text - The natural language date string to parse.
|
|
59
|
+
* @param context - The request context for logging and error tracking.
|
|
60
|
+
* @param refDate - Optional reference date for parsing relative dates.
|
|
61
|
+
* @returns A promise resolving with an array of `chrono.ParsedResult` objects.
|
|
62
|
+
*/
|
|
63
|
+
parse: typeof parseDateStringDetailed;
|
|
64
|
+
/**
|
|
65
|
+
* Parses a natural language date string into a single JavaScript Date object.
|
|
66
|
+
* @param text - The natural language date string to parse.
|
|
67
|
+
* @param context - The request context for logging and error tracking.
|
|
68
|
+
* @param refDate - Optional reference date for parsing relative dates.
|
|
69
|
+
* @returns A promise resolving with a Date object or `null`.
|
|
70
|
+
*/
|
|
71
|
+
parseDate: typeof parseDateString;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=dateParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAwB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExE;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,IAAI,GACb,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA0BtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,IAAI,GACb,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAwBhC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;;;OAOG;;IAEH;;;;;;OAMG;;CAEJ,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides utility functions for parsing natural language date strings
|
|
3
|
+
* into Date objects or detailed parsing results using the `chrono-node` library.
|
|
4
|
+
* @module src/utils/parsing/dateParser
|
|
5
|
+
*/
|
|
6
|
+
import * as chrono from "chrono-node";
|
|
7
|
+
import { JsonRpcErrorCode } from "../../types-global/errors.js";
|
|
8
|
+
import { ErrorHandler, logger } from "../index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Parses a natural language date string into a JavaScript Date object.
|
|
11
|
+
* Uses `chrono.parseDate` for lenient parsing of various date formats.
|
|
12
|
+
*
|
|
13
|
+
* @param text - The natural language date string to parse.
|
|
14
|
+
* @param context - The request context for logging and error tracking.
|
|
15
|
+
* @param refDate - Optional reference date for parsing relative dates. Defaults to current date/time.
|
|
16
|
+
* @returns A promise resolving with a Date object or `null` if parsing fails.
|
|
17
|
+
* @throws {McpError} If an unexpected error occurs during parsing.
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
export async function parseDateString(text, context, refDate) {
|
|
21
|
+
const operation = "parseDateString";
|
|
22
|
+
const logContext = { ...context, operation, inputText: text, refDate };
|
|
23
|
+
logger.debug(logContext, `Attempting to parse date string: "${text}"`);
|
|
24
|
+
return await ErrorHandler.tryCatch(async () => {
|
|
25
|
+
const parsedDate = chrono.parseDate(text, refDate, { forwardDate: true });
|
|
26
|
+
if (parsedDate) {
|
|
27
|
+
logger.debug(logContext, `Successfully parsed "${text}" to ${parsedDate.toISOString()}`);
|
|
28
|
+
return parsedDate;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
logger.warning(logContext, `Failed to parse date string: "${text}"`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
operation,
|
|
36
|
+
context: logContext,
|
|
37
|
+
input: { text, refDate },
|
|
38
|
+
errorCode: JsonRpcErrorCode.ParseError,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parses a natural language date string and returns detailed parsing results.
|
|
43
|
+
* Provides more information than just the Date object, including matched text and components.
|
|
44
|
+
*
|
|
45
|
+
* @param text - The natural language date string to parse.
|
|
46
|
+
* @param context - The request context for logging and error tracking.
|
|
47
|
+
* @param refDate - Optional reference date for parsing relative dates. Defaults to current date/time.
|
|
48
|
+
* @returns A promise resolving with an array of `chrono.ParsedResult` objects. Empty if no dates found.
|
|
49
|
+
* @throws {McpError} If an unexpected error occurs during parsing.
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
export async function parseDateStringDetailed(text, context, refDate) {
|
|
53
|
+
const operation = "parseDateStringDetailed";
|
|
54
|
+
const logContext = { ...context, operation, inputText: text, refDate };
|
|
55
|
+
logger.debug(logContext, `Attempting detailed parse of date string: "${text}"`);
|
|
56
|
+
return await ErrorHandler.tryCatch(async () => {
|
|
57
|
+
const results = chrono.parse(text, refDate, { forwardDate: true });
|
|
58
|
+
logger.debug(logContext, `Detailed parse of "${text}" resulted in ${results.length} result(s)`);
|
|
59
|
+
return results;
|
|
60
|
+
}, {
|
|
61
|
+
operation,
|
|
62
|
+
context: logContext,
|
|
63
|
+
input: { text, refDate },
|
|
64
|
+
errorCode: JsonRpcErrorCode.ParseError,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* An object providing date parsing functionalities.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* import { dateParser, requestContextService } from './utils'; // Assuming utils/index.js exports these
|
|
73
|
+
* const context = requestContextService.createRequestContext({ operation: 'TestDateParsing' });
|
|
74
|
+
*
|
|
75
|
+
* async function testParsing() {
|
|
76
|
+
* const dateObj = await dateParser.parseDate("next Friday at 3pm", context);
|
|
77
|
+
* if (dateObj) {
|
|
78
|
+
* console.log("Parsed Date:", dateObj.toISOString());
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* const detailedResults = await dateParser.parse("Meeting on 2024-12-25 and another one tomorrow", context);
|
|
82
|
+
* detailedResults.forEach(result => {
|
|
83
|
+
* console.log("Detailed Result:", result.text, result.start.date());
|
|
84
|
+
* });
|
|
85
|
+
* }
|
|
86
|
+
* testParsing();
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const dateParser = {
|
|
90
|
+
/**
|
|
91
|
+
* Parses a natural language date string and returns detailed parsing results
|
|
92
|
+
* from `chrono-node`.
|
|
93
|
+
* @param text - The natural language date string to parse.
|
|
94
|
+
* @param context - The request context for logging and error tracking.
|
|
95
|
+
* @param refDate - Optional reference date for parsing relative dates.
|
|
96
|
+
* @returns A promise resolving with an array of `chrono.ParsedResult` objects.
|
|
97
|
+
*/
|
|
98
|
+
parse: parseDateStringDetailed,
|
|
99
|
+
/**
|
|
100
|
+
* Parses a natural language date string into a single JavaScript Date object.
|
|
101
|
+
* @param text - The natural language date string to parse.
|
|
102
|
+
* @param context - The request context for logging and error tracking.
|
|
103
|
+
* @param refDate - Optional reference date for parsing relative dates.
|
|
104
|
+
* @returns A promise resolving with a Date object or `null`.
|
|
105
|
+
*/
|
|
106
|
+
parseDate: parseDateString,
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=dateParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAkB,MAAM,kBAAkB,CAAC;AAExE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,OAAuB,EACvB,OAAc;IAEd,MAAM,SAAS,GAAG,iBAAiB,CAAC;IACpC,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,qCAAqC,IAAI,GAAG,CAAC,CAAC;IAEvE,OAAO,MAAM,YAAY,CAAC,QAAQ,CAChC,KAAK,IAAI,EAAE;QACT,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,UAAU,EACV,wBAAwB,IAAI,QAAQ,UAAU,CAAC,WAAW,EAAE,EAAE,CAC/D,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,iCAAiC,IAAI,GAAG,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EACD;QACE,SAAS;QACT,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QACxB,SAAS,EAAE,gBAAgB,CAAC,UAAU;KACvC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAY,EACZ,OAAuB,EACvB,OAAc;IAEd,MAAM,SAAS,GAAG,yBAAyB,CAAC;IAC5C,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACvE,MAAM,CAAC,KAAK,CACV,UAAU,EACV,8CAA8C,IAAI,GAAG,CACtD,CAAC;IAEF,OAAO,MAAM,YAAY,CAAC,QAAQ,CAChC,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CACV,UAAU,EACV,sBAAsB,IAAI,iBAAiB,OAAO,CAAC,MAAM,YAAY,CACtE,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,EACD;QACE,SAAS;QACT,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QACxB,SAAS,EAAE,gBAAgB,CAAC,UAAU;KACvC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;;;;;;OAOG;IACH,KAAK,EAAE,uBAAuB;IAC9B;;;;;;OAMG;IACH,SAAS,EAAE,eAAe;CAC3B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel file for parsing utility modules.
|
|
3
|
+
* This file re-exports utilities related to parsing various data formats,
|
|
4
|
+
* such as JSON and dates.
|
|
5
|
+
* @module src/utils/parsing
|
|
6
|
+
*/
|
|
7
|
+
export * from "./dateParser.js";
|
|
8
|
+
export * from "./jsonParser.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel file for parsing utility modules.
|
|
3
|
+
* This file re-exports utilities related to parsing various data formats,
|
|
4
|
+
* such as JSON and dates.
|
|
5
|
+
* @module src/utils/parsing
|
|
6
|
+
*/
|
|
7
|
+
export * from "./dateParser.js";
|
|
8
|
+
export * from "./jsonParser.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { RequestContext } from "../index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Enum mirroring `partial-json`'s `Allow` constants. These specify
|
|
4
|
+
* what types of partial JSON structures are permissible during parsing.
|
|
5
|
+
* They can be combined using bitwise OR (e.g., `Allow.STR | Allow.OBJ`).
|
|
6
|
+
*
|
|
7
|
+
* The available properties are:
|
|
8
|
+
* - `STR`: Allow partial string.
|
|
9
|
+
* - `NUM`: Allow partial number.
|
|
10
|
+
* - `ARR`: Allow partial array.
|
|
11
|
+
* - `OBJ`: Allow partial object.
|
|
12
|
+
* - `NULL`: Allow partial null.
|
|
13
|
+
* - `BOOL`: Allow partial boolean.
|
|
14
|
+
* - `NAN`: Allow partial NaN. (Note: Standard JSON does not support NaN)
|
|
15
|
+
* - `INFINITY`: Allow partial Infinity. (Note: Standard JSON does not support Infinity)
|
|
16
|
+
* - `_INFINITY`: Allow partial -Infinity. (Note: Standard JSON does not support -Infinity)
|
|
17
|
+
* - `INF`: Allow both partial Infinity and -Infinity.
|
|
18
|
+
* - `SPECIAL`: Allow all special values (NaN, Infinity, -Infinity).
|
|
19
|
+
* - `ATOM`: Allow all atomic values (strings, numbers, booleans, null, special values).
|
|
20
|
+
* - `COLLECTION`: Allow all collection values (objects, arrays).
|
|
21
|
+
* - `ALL`: Allow all value types to be partial (default for `partial-json`'s parse).
|
|
22
|
+
* @see {@link https://github.com/promplate/partial-json-parser-js} for more details.
|
|
23
|
+
*/
|
|
24
|
+
export declare const Allow: {
|
|
25
|
+
STR: number;
|
|
26
|
+
NUM: number;
|
|
27
|
+
ARR: number;
|
|
28
|
+
OBJ: number;
|
|
29
|
+
NULL: number;
|
|
30
|
+
BOOL: number;
|
|
31
|
+
NAN: number;
|
|
32
|
+
INFINITY: number;
|
|
33
|
+
_INFINITY: number;
|
|
34
|
+
INF: number;
|
|
35
|
+
SPECIAL: number;
|
|
36
|
+
ATOM: number;
|
|
37
|
+
COLLECTION: number;
|
|
38
|
+
ALL: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Utility class for parsing potentially partial JSON strings.
|
|
42
|
+
* Wraps the 'partial-json' library for robust JSON parsing, handling
|
|
43
|
+
* incomplete structures and optional <think> blocks from LLMs.
|
|
44
|
+
*/
|
|
45
|
+
export declare class JsonParser {
|
|
46
|
+
/**
|
|
47
|
+
* Parses a JSON string, which may be partial or prefixed with a <think> block.
|
|
48
|
+
* If a <think> block is present, its content is logged, and parsing proceeds on the
|
|
49
|
+
* remainder. Uses 'partial-json' to handle incomplete JSON.
|
|
50
|
+
*
|
|
51
|
+
* @template T The expected type of the parsed JSON object. Defaults to `any`.
|
|
52
|
+
* @param jsonString - The JSON string to parse.
|
|
53
|
+
* @param allowPartial - Bitwise OR combination of `Allow` constants specifying permissible
|
|
54
|
+
* partial JSON types. Defaults to `Allow.ALL`.
|
|
55
|
+
* @param context - Optional `RequestContext` for logging and error correlation.
|
|
56
|
+
* @returns The parsed JavaScript value.
|
|
57
|
+
* @throws {McpError} If the string is empty after processing or if `partial-json` fails.
|
|
58
|
+
*/
|
|
59
|
+
parse<T = unknown>(jsonString: string, allowPartial?: number, context?: RequestContext): T;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Singleton instance of the `JsonParser`.
|
|
63
|
+
* Use this instance to parse JSON strings, with support for partial JSON and <think> blocks.
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* import { jsonParser, Allow, requestContextService } from './utils';
|
|
67
|
+
* const context = requestContextService.createRequestContext({ operation: 'TestJsonParsing' });
|
|
68
|
+
*
|
|
69
|
+
* const fullJson = '{"key": "value"}';
|
|
70
|
+
* const parsedFull = jsonParser.parse(fullJson, Allow.ALL, context);
|
|
71
|
+
* console.log(parsedFull); // Output: { key: 'value' }
|
|
72
|
+
*
|
|
73
|
+
* const partialObject = '<think>This is a thought.</think>{"key": "value", "arr": [1,';
|
|
74
|
+
* try {
|
|
75
|
+
* const parsedPartial = jsonParser.parse(partialObject, undefined, context);
|
|
76
|
+
* console.log(parsedPartial);
|
|
77
|
+
* } catch (e) {
|
|
78
|
+
* console.error("Parsing partial object failed:", e);
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare const jsonParser: JsonParser;
|
|
83
|
+
//# sourceMappingURL=jsonParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;CAAmB,CAAC;AAStC;;;;GAIG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,GAAG,OAAO,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAkB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,CAAC;CAoEL;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides a utility class for parsing potentially partial JSON strings.
|
|
3
|
+
* It wraps the 'partial-json' npm library and includes functionality to handle
|
|
4
|
+
* optional <think>...</think> blocks often found at the beginning of LLM outputs.
|
|
5
|
+
* @module src/utils/parsing/jsonParser
|
|
6
|
+
*/
|
|
7
|
+
import { parse as parsePartialJson, Allow as PartialJsonAllow, } from "partial-json";
|
|
8
|
+
import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
|
|
9
|
+
import { logger, requestContextService, } from "../index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Enum mirroring `partial-json`'s `Allow` constants. These specify
|
|
12
|
+
* what types of partial JSON structures are permissible during parsing.
|
|
13
|
+
* They can be combined using bitwise OR (e.g., `Allow.STR | Allow.OBJ`).
|
|
14
|
+
*
|
|
15
|
+
* The available properties are:
|
|
16
|
+
* - `STR`: Allow partial string.
|
|
17
|
+
* - `NUM`: Allow partial number.
|
|
18
|
+
* - `ARR`: Allow partial array.
|
|
19
|
+
* - `OBJ`: Allow partial object.
|
|
20
|
+
* - `NULL`: Allow partial null.
|
|
21
|
+
* - `BOOL`: Allow partial boolean.
|
|
22
|
+
* - `NAN`: Allow partial NaN. (Note: Standard JSON does not support NaN)
|
|
23
|
+
* - `INFINITY`: Allow partial Infinity. (Note: Standard JSON does not support Infinity)
|
|
24
|
+
* - `_INFINITY`: Allow partial -Infinity. (Note: Standard JSON does not support -Infinity)
|
|
25
|
+
* - `INF`: Allow both partial Infinity and -Infinity.
|
|
26
|
+
* - `SPECIAL`: Allow all special values (NaN, Infinity, -Infinity).
|
|
27
|
+
* - `ATOM`: Allow all atomic values (strings, numbers, booleans, null, special values).
|
|
28
|
+
* - `COLLECTION`: Allow all collection values (objects, arrays).
|
|
29
|
+
* - `ALL`: Allow all value types to be partial (default for `partial-json`'s parse).
|
|
30
|
+
* @see {@link https://github.com/promplate/partial-json-parser-js} for more details.
|
|
31
|
+
*/
|
|
32
|
+
export const Allow = PartialJsonAllow;
|
|
33
|
+
/**
|
|
34
|
+
* Regular expression to find a <think> block at the start of a string.
|
|
35
|
+
* Captures content within <think>...</think> (Group 1) and the rest of the string (Group 2).
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
const thinkBlockRegex = /^<think>([\s\S]*?)<\/think>\s*([\s\S]*)$/;
|
|
39
|
+
/**
|
|
40
|
+
* Utility class for parsing potentially partial JSON strings.
|
|
41
|
+
* Wraps the 'partial-json' library for robust JSON parsing, handling
|
|
42
|
+
* incomplete structures and optional <think> blocks from LLMs.
|
|
43
|
+
*/
|
|
44
|
+
export class JsonParser {
|
|
45
|
+
/**
|
|
46
|
+
* Parses a JSON string, which may be partial or prefixed with a <think> block.
|
|
47
|
+
* If a <think> block is present, its content is logged, and parsing proceeds on the
|
|
48
|
+
* remainder. Uses 'partial-json' to handle incomplete JSON.
|
|
49
|
+
*
|
|
50
|
+
* @template T The expected type of the parsed JSON object. Defaults to `any`.
|
|
51
|
+
* @param jsonString - The JSON string to parse.
|
|
52
|
+
* @param allowPartial - Bitwise OR combination of `Allow` constants specifying permissible
|
|
53
|
+
* partial JSON types. Defaults to `Allow.ALL`.
|
|
54
|
+
* @param context - Optional `RequestContext` for logging and error correlation.
|
|
55
|
+
* @returns The parsed JavaScript value.
|
|
56
|
+
* @throws {McpError} If the string is empty after processing or if `partial-json` fails.
|
|
57
|
+
*/
|
|
58
|
+
parse(jsonString, allowPartial = Allow.ALL, context) {
|
|
59
|
+
let stringToParse = jsonString;
|
|
60
|
+
const match = jsonString.match(thinkBlockRegex);
|
|
61
|
+
if (match) {
|
|
62
|
+
const thinkContent = match[1]?.trim() ?? "";
|
|
63
|
+
const restOfString = match[2] ?? "";
|
|
64
|
+
const logContext = context ||
|
|
65
|
+
requestContextService.createRequestContext({
|
|
66
|
+
operation: "JsonParser.thinkBlock",
|
|
67
|
+
});
|
|
68
|
+
if (thinkContent) {
|
|
69
|
+
logger.debug({
|
|
70
|
+
...logContext,
|
|
71
|
+
thinkContent,
|
|
72
|
+
}, "LLM <think> block detected and logged.");
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
logger.debug(logContext, "Empty LLM <think> block detected.");
|
|
76
|
+
}
|
|
77
|
+
stringToParse = restOfString;
|
|
78
|
+
}
|
|
79
|
+
stringToParse = stringToParse.trim();
|
|
80
|
+
if (!stringToParse) {
|
|
81
|
+
throw new McpError(JsonRpcErrorCode.ValidationError, "JSON string is empty after removing <think> block and trimming.", context);
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
return parsePartialJson(stringToParse, allowPartial);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
const error = e;
|
|
88
|
+
const errorLogContext = context ||
|
|
89
|
+
requestContextService.createRequestContext({
|
|
90
|
+
operation: "JsonParser.parseError",
|
|
91
|
+
});
|
|
92
|
+
logger.error({
|
|
93
|
+
...errorLogContext,
|
|
94
|
+
errorDetails: error.message,
|
|
95
|
+
contentAttempted: stringToParse.substring(0, 200),
|
|
96
|
+
}, "Failed to parse JSON content.");
|
|
97
|
+
throw new McpError(JsonRpcErrorCode.ValidationError, `Failed to parse JSON: ${error.message}`, {
|
|
98
|
+
...context,
|
|
99
|
+
originalContentSample: stringToParse.substring(0, 200) +
|
|
100
|
+
(stringToParse.length > 200 ? "..." : ""),
|
|
101
|
+
rawError: error instanceof Error ? error.stack : String(error),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Singleton instance of the `JsonParser`.
|
|
108
|
+
* Use this instance to parse JSON strings, with support for partial JSON and <think> blocks.
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* import { jsonParser, Allow, requestContextService } from './utils';
|
|
112
|
+
* const context = requestContextService.createRequestContext({ operation: 'TestJsonParsing' });
|
|
113
|
+
*
|
|
114
|
+
* const fullJson = '{"key": "value"}';
|
|
115
|
+
* const parsedFull = jsonParser.parse(fullJson, Allow.ALL, context);
|
|
116
|
+
* console.log(parsedFull); // Output: { key: 'value' }
|
|
117
|
+
*
|
|
118
|
+
* const partialObject = '<think>This is a thought.</think>{"key": "value", "arr": [1,';
|
|
119
|
+
* try {
|
|
120
|
+
* const parsedPartial = jsonParser.parse(partialObject, undefined, context);
|
|
121
|
+
* console.log(parsedPartial);
|
|
122
|
+
* } catch (e) {
|
|
123
|
+
* console.error("Parsing partial object failed:", e);
|
|
124
|
+
* }
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export const jsonParser = new JsonParser();
|
|
128
|
+
//# sourceMappingURL=jsonParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/scheduling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/scheduling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provides a singleton service for scheduling and managing cron jobs.
|
|
3
|
+
* This service wraps the 'node-cron' library to offer a unified interface for
|
|
4
|
+
* defining, starting, stopping, and listing recurring tasks within the application.
|
|
5
|
+
* @module src/utils/scheduling/scheduler
|
|
6
|
+
*/
|
|
7
|
+
import { ScheduledTask } from "node-cron";
|
|
8
|
+
import { RequestContext } from "../internal/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Represents a scheduled job managed by the SchedulerService.
|
|
11
|
+
*/
|
|
12
|
+
export interface Job {
|
|
13
|
+
/** A unique identifier for the job. */
|
|
14
|
+
id: string;
|
|
15
|
+
/** The cron pattern defining the job's schedule. */
|
|
16
|
+
schedule: string;
|
|
17
|
+
/** A description of what the job does. */
|
|
18
|
+
description: string;
|
|
19
|
+
/** The underlying 'node-cron' task instance. */
|
|
20
|
+
task: ScheduledTask;
|
|
21
|
+
/** Indicates whether the job is currently running. */
|
|
22
|
+
isRunning: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A singleton service for scheduling and managing cron jobs.
|
|
26
|
+
*/
|
|
27
|
+
export declare class SchedulerService {
|
|
28
|
+
private static instance;
|
|
29
|
+
private jobs;
|
|
30
|
+
/** @private */
|
|
31
|
+
private constructor();
|
|
32
|
+
/**
|
|
33
|
+
* Gets the singleton instance of the SchedulerService.
|
|
34
|
+
* @returns The singleton SchedulerService instance.
|
|
35
|
+
*/
|
|
36
|
+
static getInstance(): SchedulerService;
|
|
37
|
+
/**
|
|
38
|
+
* Schedules a new job.
|
|
39
|
+
*
|
|
40
|
+
* @param id - A unique identifier for the job.
|
|
41
|
+
* @param schedule - The cron pattern for the schedule (e.g., '* * * * *').
|
|
42
|
+
* @param taskFunction - The function to execute on schedule. It receives a RequestContext.
|
|
43
|
+
* @param description - A description of the job.
|
|
44
|
+
* @returns The newly created Job object.
|
|
45
|
+
*/
|
|
46
|
+
schedule(id: string, schedule: string, taskFunction: (context: RequestContext) => void | Promise<void>, description: string): Job;
|
|
47
|
+
/**
|
|
48
|
+
* Starts a scheduled job.
|
|
49
|
+
* @param id - The ID of the job to start.
|
|
50
|
+
*/
|
|
51
|
+
start(id: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Stops a scheduled job.
|
|
54
|
+
* @param id - The ID of the job to stop.
|
|
55
|
+
*/
|
|
56
|
+
stop(id: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Removes a job from the scheduler. The job is stopped before being removed.
|
|
59
|
+
* @param id - The ID of the job to remove.
|
|
60
|
+
*/
|
|
61
|
+
remove(id: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Gets a list of all scheduled jobs.
|
|
64
|
+
* @returns An array of all Job objects.
|
|
65
|
+
*/
|
|
66
|
+
listJobs(): Job[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The singleton instance of the SchedulerService.
|
|
70
|
+
* Use this instance for all job scheduling operations.
|
|
71
|
+
*/
|
|
72
|
+
export declare const schedulerService: SchedulerService;
|
|
73
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/utils/scheduling/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAa,EAAE,aAAa,EAAc,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAU,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,IAAI,EAAE,aAAa,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,IAAI,CAA+B;IAE3C,eAAe;IACf,OAAO;IAUP;;;OAGG;WACW,WAAW,IAAI,gBAAgB;IAO7C;;;;;;;;OAQG;IACI,QAAQ,CACb,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC/D,WAAW,EAAE,MAAM,GAClB,GAAG;IAqEN;;;OAGG;IACI,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAe9B;;;OAGG;IACI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAe7B;;;OAGG;IACI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgB/B;;;OAGG;IACI,QAAQ,IAAI,GAAG,EAAE;CAGzB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,kBAAiC,CAAC"}
|