@machina.ai/openapi-contract-tester 2.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/.env.example +91 -0
- package/README.md +472 -0
- package/dist/ai-engine/assertion-generator.d.ts +48 -0
- package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
- package/dist/ai-engine/assertion-generator.js +166 -0
- package/dist/ai-engine/assertion-generator.js.map +1 -0
- package/dist/ai-engine/context-data-generator.d.ts +38 -0
- package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
- package/dist/ai-engine/context-data-generator.js +146 -0
- package/dist/ai-engine/context-data-generator.js.map +1 -0
- package/dist/ai-engine/dataflow-detector.d.ts +53 -0
- package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
- package/dist/ai-engine/dataflow-detector.js +217 -0
- package/dist/ai-engine/dataflow-detector.js.map +1 -0
- package/dist/ai-engine/dependency-detector.d.ts +52 -0
- package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
- package/dist/ai-engine/dependency-detector.js +241 -0
- package/dist/ai-engine/dependency-detector.js.map +1 -0
- package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
- package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
- package/dist/ai-engine/edge-case-suggester.js +177 -0
- package/dist/ai-engine/edge-case-suggester.js.map +1 -0
- package/dist/ai-engine/index.d.ts +13 -0
- package/dist/ai-engine/index.d.ts.map +1 -0
- package/dist/ai-engine/index.js +13 -0
- package/dist/ai-engine/index.js.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.js +220 -0
- package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
- package/dist/analyzers/comparison-utils.d.ts +31 -0
- package/dist/analyzers/comparison-utils.d.ts.map +1 -0
- package/dist/analyzers/comparison-utils.js +85 -0
- package/dist/analyzers/comparison-utils.js.map +1 -0
- package/dist/analyzers/context-analyzer.d.ts +49 -0
- package/dist/analyzers/context-analyzer.d.ts.map +1 -0
- package/dist/analyzers/context-analyzer.js +292 -0
- package/dist/analyzers/context-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +44 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +313 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/failure-analyzer.d.ts +122 -0
- package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/failure-analyzer.js +140 -0
- package/dist/analyzers/failure-analyzer.js.map +1 -0
- package/dist/analyzers/failure-detectors/index.d.ts +33 -0
- package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
- package/dist/analyzers/failure-detectors/index.js +164 -0
- package/dist/analyzers/failure-detectors/index.js.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
- package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
- package/dist/analyzers/index.d.ts +10 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +10 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-matcher.d.ts +123 -0
- package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
- package/dist/analyzers/semantic-matcher.js +297 -0
- package/dist/analyzers/semantic-matcher.js.map +1 -0
- package/dist/analyzers/source-comparator.d.ts +177 -0
- package/dist/analyzers/source-comparator.d.ts.map +1 -0
- package/dist/analyzers/source-comparator.js +225 -0
- package/dist/analyzers/source-comparator.js.map +1 -0
- package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
- package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
- package/dist/business-rules/business-rules-analyzer.js +363 -0
- package/dist/business-rules/business-rules-analyzer.js.map +1 -0
- package/dist/business-rules/business-rules-generator.d.ts +78 -0
- package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
- package/dist/business-rules/business-rules-generator.js +357 -0
- package/dist/business-rules/business-rules-generator.js.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.js +189 -0
- package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
- package/dist/business-rules/value-generators.d.ts +70 -0
- package/dist/business-rules/value-generators.d.ts.map +1 -0
- package/dist/business-rules/value-generators.js +142 -0
- package/dist/business-rules/value-generators.js.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.js +47 -0
- package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.js +114 -0
- package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
- package/dist/executor/http-client.d.ts +133 -0
- package/dist/executor/http-client.d.ts.map +1 -0
- package/dist/executor/http-client.js +172 -0
- package/dist/executor/http-client.js.map +1 -0
- package/dist/executor/http-request-builder.d.ts +69 -0
- package/dist/executor/http-request-builder.d.ts.map +1 -0
- package/dist/executor/http-request-builder.js +140 -0
- package/dist/executor/http-request-builder.js.map +1 -0
- package/dist/executor/http-response-parser.d.ts +28 -0
- package/dist/executor/http-response-parser.d.ts.map +1 -0
- package/dist/executor/http-response-parser.js +74 -0
- package/dist/executor/http-response-parser.js.map +1 -0
- package/dist/executor/response-handler.d.ts +66 -0
- package/dist/executor/response-handler.d.ts.map +1 -0
- package/dist/executor/response-handler.js +135 -0
- package/dist/executor/response-handler.js.map +1 -0
- package/dist/executor/result-processor.d.ts +27 -0
- package/dist/executor/result-processor.d.ts.map +1 -0
- package/dist/executor/result-processor.js +140 -0
- package/dist/executor/result-processor.js.map +1 -0
- package/dist/executor/result-utils.d.ts +21 -0
- package/dist/executor/result-utils.d.ts.map +1 -0
- package/dist/executor/result-utils.js +29 -0
- package/dist/executor/result-utils.js.map +1 -0
- package/dist/executor/test-executor.d.ts +49 -0
- package/dist/executor/test-executor.d.ts.map +1 -0
- package/dist/executor/test-executor.js +226 -0
- package/dist/executor/test-executor.js.map +1 -0
- package/dist/executor/test-runner.d.ts +85 -0
- package/dist/executor/test-runner.d.ts.map +1 -0
- package/dist/executor/test-runner.js +177 -0
- package/dist/executor/test-runner.js.map +1 -0
- package/dist/executor/token-detector/index.d.ts +7 -0
- package/dist/executor/token-detector/index.d.ts.map +1 -0
- package/dist/executor/token-detector/index.js +7 -0
- package/dist/executor/token-detector/index.js.map +1 -0
- package/dist/executor/token-detector/token-detector.d.ts +64 -0
- package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
- package/dist/executor/token-detector/token-detector.js +140 -0
- package/dist/executor/token-detector/token-detector.js.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.js +227 -0
- package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
- package/dist/generators/data/ai-data-generator.d.ts +23 -0
- package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
- package/dist/generators/data/ai-data-generator.js +41 -0
- package/dist/generators/data/ai-data-generator.js.map +1 -0
- package/dist/generators/data/base-generator.d.ts +121 -0
- package/dist/generators/data/base-generator.d.ts.map +1 -0
- package/dist/generators/data/base-generator.js +200 -0
- package/dist/generators/data/base-generator.js.map +1 -0
- package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
- package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
- package/dist/generators/data/heuristic-data-generator.js +49 -0
- package/dist/generators/data/heuristic-data-generator.js.map +1 -0
- package/dist/generators/data/index.d.ts +48 -0
- package/dist/generators/data/index.d.ts.map +1 -0
- package/dist/generators/data/index.js +201 -0
- package/dist/generators/data/index.js.map +1 -0
- package/dist/generators/data/schema-walker.d.ts +45 -0
- package/dist/generators/data/schema-walker.d.ts.map +1 -0
- package/dist/generators/data/schema-walker.js +103 -0
- package/dist/generators/data/schema-walker.js.map +1 -0
- package/dist/generators/data/type-strategies.d.ts +79 -0
- package/dist/generators/data/type-strategies.d.ts.map +1 -0
- package/dist/generators/data/type-strategies.js +394 -0
- package/dist/generators/data/type-strategies.js.map +1 -0
- package/dist/generators/data-generator.d.ts +11 -0
- package/dist/generators/data-generator.d.ts.map +1 -0
- package/dist/generators/data-generator.js +11 -0
- package/dist/generators/data-generator.js.map +1 -0
- package/dist/generators/edge-case-generator.d.ts +55 -0
- package/dist/generators/edge-case-generator.d.ts.map +1 -0
- package/dist/generators/edge-case-generator.js +327 -0
- package/dist/generators/edge-case-generator.js.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
- package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
- package/dist/generators/error-case-generator.d.ts +11 -0
- package/dist/generators/error-case-generator.d.ts.map +1 -0
- package/dist/generators/error-case-generator.js +11 -0
- package/dist/generators/error-case-generator.js.map +1 -0
- package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
- package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/auth-error-strategy.js +118 -0
- package/dist/generators/errors/auth-error-strategy.js.map +1 -0
- package/dist/generators/errors/business-error-strategy.d.ts +44 -0
- package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/business-error-strategy.js +152 -0
- package/dist/generators/errors/business-error-strategy.js.map +1 -0
- package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
- package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy-factory.js +47 -0
- package/dist/generators/errors/error-strategy-factory.js.map +1 -0
- package/dist/generators/errors/error-strategy.d.ts +62 -0
- package/dist/generators/errors/error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy.js +69 -0
- package/dist/generators/errors/error-strategy.js.map +1 -0
- package/dist/generators/errors/index.d.ts +23 -0
- package/dist/generators/errors/index.d.ts.map +1 -0
- package/dist/generators/errors/index.js +73 -0
- package/dist/generators/errors/index.js.map +1 -0
- package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
- package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/validation-error-strategy.js +214 -0
- package/dist/generators/errors/validation-error-strategy.js.map +1 -0
- package/dist/generators/happy-path-generator.d.ts +93 -0
- package/dist/generators/happy-path-generator.d.ts.map +1 -0
- package/dist/generators/happy-path-generator.js +275 -0
- package/dist/generators/happy-path-generator.js.map +1 -0
- package/dist/generators/test-enricher.d.ts +44 -0
- package/dist/generators/test-enricher.d.ts.map +1 -0
- package/dist/generators/test-enricher.js +109 -0
- package/dist/generators/test-enricher.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ai-cache.d.ts +123 -0
- package/dist/llm/ai-cache.d.ts.map +1 -0
- package/dist/llm/ai-cache.js +220 -0
- package/dist/llm/ai-cache.js.map +1 -0
- package/dist/llm/ai-client.d.ts +92 -0
- package/dist/llm/ai-client.d.ts.map +1 -0
- package/dist/llm/ai-client.js +386 -0
- package/dist/llm/ai-client.js.map +1 -0
- package/dist/llm/data-generator-ai.d.ts +84 -0
- package/dist/llm/data-generator-ai.d.ts.map +1 -0
- package/dist/llm/data-generator-ai.js +284 -0
- package/dist/llm/data-generator-ai.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +72 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
- package/dist/mcp/handlers/base-handler.js +86 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -0
- package/dist/mcp/handlers/compare-sources.d.ts +91 -0
- package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
- package/dist/mcp/handlers/compare-sources.js +182 -0
- package/dist/mcp/handlers/compare-sources.js.map +1 -0
- package/dist/mcp/handlers/export-results.d.ts +53 -0
- package/dist/mcp/handlers/export-results.d.ts.map +1 -0
- package/dist/mcp/handlers/export-results.js +132 -0
- package/dist/mcp/handlers/export-results.js.map +1 -0
- package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
- package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
- package/dist/mcp/handlers/export-to-postman.js +128 -0
- package/dist/mcp/handlers/export-to-postman.js.map +1 -0
- package/dist/mcp/handlers/generate-tests.d.ts +74 -0
- package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/generate-tests.js +519 -0
- package/dist/mcp/handlers/generate-tests.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +13 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +12 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/run-tests.d.ts +89 -0
- package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/run-tests.js +233 -0
- package/dist/mcp/handlers/run-tests.js.map +1 -0
- package/dist/mcp/handlers/types.d.ts +61 -0
- package/dist/mcp/handlers/types.d.ts.map +1 -0
- package/dist/mcp/handlers/types.js +9 -0
- package/dist/mcp/handlers/types.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +200 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/services/file-service.d.ts +66 -0
- package/dist/mcp/services/file-service.d.ts.map +1 -0
- package/dist/mcp/services/file-service.js +143 -0
- package/dist/mcp/services/file-service.js.map +1 -0
- package/dist/mcp/services/llm-service.d.ts +70 -0
- package/dist/mcp/services/llm-service.d.ts.map +1 -0
- package/dist/mcp/services/llm-service.js +189 -0
- package/dist/mcp/services/llm-service.js.map +1 -0
- package/dist/mcp/services/postman-service.d.ts +128 -0
- package/dist/mcp/services/postman-service.d.ts.map +1 -0
- package/dist/mcp/services/postman-service.js +266 -0
- package/dist/mcp/services/postman-service.js.map +1 -0
- package/dist/mcp/services/report-service.d.ts +81 -0
- package/dist/mcp/services/report-service.d.ts.map +1 -0
- package/dist/mcp/services/report-service.js +210 -0
- package/dist/mcp/services/report-service.js.map +1 -0
- package/dist/mcp/services/spec-service.d.ts +58 -0
- package/dist/mcp/services/spec-service.d.ts.map +1 -0
- package/dist/mcp/services/spec-service.js +140 -0
- package/dist/mcp/services/spec-service.js.map +1 -0
- package/dist/parsers/endpoint-extractor.d.ts +32 -0
- package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
- package/dist/parsers/endpoint-extractor.js +160 -0
- package/dist/parsers/endpoint-extractor.js.map +1 -0
- package/dist/parsers/openapi-parser.d.ts +120 -0
- package/dist/parsers/openapi-parser.d.ts.map +1 -0
- package/dist/parsers/openapi-parser.js +257 -0
- package/dist/parsers/openapi-parser.js.map +1 -0
- package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
- package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
- package/dist/parsers/visitors/auth-visitor.js +116 -0
- package/dist/parsers/visitors/auth-visitor.js.map +1 -0
- package/dist/prd/index.d.ts +10 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +10 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/prd/prd-reader.d.ts +124 -0
- package/dist/prd/prd-reader.d.ts.map +1 -0
- package/dist/prd/prd-reader.js +308 -0
- package/dist/prd/prd-reader.js.map +1 -0
- package/dist/prd/prd-storage.d.ts +232 -0
- package/dist/prd/prd-storage.d.ts.map +1 -0
- package/dist/prd/prd-storage.js +129 -0
- package/dist/prd/prd-storage.js.map +1 -0
- package/dist/repairers/test-auto-repairer.d.ts +61 -0
- package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
- package/dist/repairers/test-auto-repairer.js +213 -0
- package/dist/repairers/test-auto-repairer.js.map +1 -0
- package/dist/reporters/comparison-report-generator.d.ts +58 -0
- package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
- package/dist/reporters/comparison-report-generator.js +369 -0
- package/dist/reporters/comparison-report-generator.js.map +1 -0
- package/dist/reporters/gherkin-formatter.d.ts +34 -0
- package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
- package/dist/reporters/gherkin-formatter.js +231 -0
- package/dist/reporters/gherkin-formatter.js.map +1 -0
- package/dist/reporters/html-report-generator.d.ts +174 -0
- package/dist/reporters/html-report-generator.d.ts.map +1 -0
- package/dist/reporters/html-report-generator.js +194 -0
- package/dist/reporters/html-report-generator.js.map +1 -0
- package/dist/reporters/report-charts.d.ts +23 -0
- package/dist/reporters/report-charts.d.ts.map +1 -0
- package/dist/reporters/report-charts.js +182 -0
- package/dist/reporters/report-charts.js.map +1 -0
- package/dist/reporters/report-sections.d.ts +34 -0
- package/dist/reporters/report-sections.d.ts.map +1 -0
- package/dist/reporters/report-sections.js +481 -0
- package/dist/reporters/report-sections.js.map +1 -0
- package/dist/reporters/report-styles.d.ts +12 -0
- package/dist/reporters/report-styles.d.ts.map +1 -0
- package/dist/reporters/report-styles.js +412 -0
- package/dist/reporters/report-styles.js.map +1 -0
- package/dist/reporters/report-test-details.d.ts +56 -0
- package/dist/reporters/report-test-details.d.ts.map +1 -0
- package/dist/reporters/report-test-details.js +328 -0
- package/dist/reporters/report-test-details.js.map +1 -0
- package/dist/reporters/report-utils.d.ts +40 -0
- package/dist/reporters/report-utils.d.ts.map +1 -0
- package/dist/reporters/report-utils.js +163 -0
- package/dist/reporters/report-utils.js.map +1 -0
- package/dist/types/ai-config.d.ts +63 -0
- package/dist/types/ai-config.d.ts.map +1 -0
- package/dist/types/ai-config.js +79 -0
- package/dist/types/ai-config.js.map +1 -0
- package/dist/types/business-rules.d.ts +235 -0
- package/dist/types/business-rules.d.ts.map +1 -0
- package/dist/types/business-rules.js +6 -0
- package/dist/types/business-rules.js.map +1 -0
- package/dist/types/config.d.ts +106 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/core.d.ts +72 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +139 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +6 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/pact.d.ts +101 -0
- package/dist/types/pact.d.ts.map +1 -0
- package/dist/types/pact.js +6 -0
- package/dist/types/pact.js.map +1 -0
- package/dist/types/reporting.d.ts +93 -0
- package/dist/types/reporting.d.ts.map +1 -0
- package/dist/types/reporting.js +6 -0
- package/dist/types/reporting.js.map +1 -0
- package/dist/types/test-case.d.ts +233 -0
- package/dist/types/test-case.d.ts.map +1 -0
- package/dist/types/test-case.js +6 -0
- package/dist/types/test-case.js.map +1 -0
- package/dist/types/test-execution.d.ts +80 -0
- package/dist/types/test-execution.d.ts.map +1 -0
- package/dist/types/test-execution.js +6 -0
- package/dist/types/test-execution.js.map +1 -0
- package/dist/utils/auth-generator.d.ts +30 -0
- package/dist/utils/auth-generator.d.ts.map +1 -0
- package/dist/utils/auth-generator.js +68 -0
- package/dist/utils/auth-generator.js.map +1 -0
- package/dist/utils/config.d.ts +181 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +141 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/coverage-calculator.d.ts +81 -0
- package/dist/utils/coverage-calculator.d.ts.map +1 -0
- package/dist/utils/coverage-calculator.js +134 -0
- package/dist/utils/coverage-calculator.js.map +1 -0
- package/dist/utils/data-loader.d.ts +52 -0
- package/dist/utils/data-loader.d.ts.map +1 -0
- package/dist/utils/data-loader.js +192 -0
- package/dist/utils/data-loader.js.map +1 -0
- package/dist/utils/errors.d.ts +167 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +257 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +220 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +325 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/openapi-discovery.d.ts +31 -0
- package/dist/utils/openapi-discovery.d.ts.map +1 -0
- package/dist/utils/openapi-discovery.js +322 -0
- package/dist/utils/openapi-discovery.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +101 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +167 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/resilience.d.ts +181 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +269 -0
- package/dist/utils/resilience.js.map +1 -0
- package/dist/validators/openapi-validator.d.ts +198 -0
- package/dist/validators/openapi-validator.d.ts.map +1 -0
- package/dist/validators/openapi-validator.js +349 -0
- package/dist/validators/openapi-validator.js.map +1 -0
- package/dist/validators/response-matcher.d.ts +84 -0
- package/dist/validators/response-matcher.d.ts.map +1 -0
- package/dist/validators/response-matcher.js +234 -0
- package/dist/validators/response-matcher.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +174 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +340 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Implementation
|
|
3
|
+
*
|
|
4
|
+
* Model Context Protocol server for OpenAPI contract testing.
|
|
5
|
+
* Provides tools for test generation, execution, and contract validation
|
|
6
|
+
* via STDIO transport for MCP client integration.
|
|
7
|
+
*
|
|
8
|
+
* This server uses a handler registry pattern for clean separation of concerns.
|
|
9
|
+
*
|
|
10
|
+
* @module mcp/server
|
|
11
|
+
*/
|
|
12
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
13
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
14
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
15
|
+
// Services
|
|
16
|
+
import { SpecService } from './services/spec-service.js';
|
|
17
|
+
import { ReportService } from './services/report-service.js';
|
|
18
|
+
import { FileService } from './services/file-service.js';
|
|
19
|
+
import { PostmanService } from './services/postman-service.js';
|
|
20
|
+
// Handlers
|
|
21
|
+
import { GenerateTestsHandler, RunTestsHandler, ExportResultsHandler, CompareSourcesHandler, ExportToPostmanHandler } from './handlers/index.js';
|
|
22
|
+
// Utils
|
|
23
|
+
import { createLogger } from '../utils/logger.js';
|
|
24
|
+
import { MCPError, ErrorCode } from '../utils/errors.js';
|
|
25
|
+
const log = createLogger('mcp-server');
|
|
26
|
+
/**
|
|
27
|
+
* OpenAPI Contract Tester MCP Server
|
|
28
|
+
*
|
|
29
|
+
* Provides 5 essential tools for API testing:
|
|
30
|
+
* 1. generate-tests - Generate intelligent test suites from OpenAPI specs (AI-powered)
|
|
31
|
+
* 2. run-tests - Execute test suites against APIs with auto-repair
|
|
32
|
+
* 3. export-results - Export test results with AI analysis and coverage
|
|
33
|
+
* 4. compare-sources - Compare OpenAPI vs Code vs PRD
|
|
34
|
+
* 5. export-to-postman - Export tests as Postman Collection v2.1 (Newman compatible)
|
|
35
|
+
*
|
|
36
|
+
* Architecture:
|
|
37
|
+
* - Uses Strategy pattern for tool handlers
|
|
38
|
+
* - Each handler implements ToolHandler interface
|
|
39
|
+
* - Services provide shared functionality (spec parsing, LLM calls, reporting, file I/O)
|
|
40
|
+
* - Handler registry enables clean dispatch and extensibility
|
|
41
|
+
*/
|
|
42
|
+
export class OpenAPIContractTesterServer {
|
|
43
|
+
server;
|
|
44
|
+
handlers;
|
|
45
|
+
// Shared services
|
|
46
|
+
specService;
|
|
47
|
+
reportService;
|
|
48
|
+
fileService;
|
|
49
|
+
postmanService;
|
|
50
|
+
constructor() {
|
|
51
|
+
// Initialize MCP server
|
|
52
|
+
this.server = new Server({
|
|
53
|
+
name: 'openapi-contract-tester',
|
|
54
|
+
version: '2.0.0',
|
|
55
|
+
}, {
|
|
56
|
+
capabilities: {
|
|
57
|
+
tools: {},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
// Initialize services
|
|
61
|
+
this.specService = new SpecService();
|
|
62
|
+
this.reportService = new ReportService();
|
|
63
|
+
this.fileService = new FileService();
|
|
64
|
+
this.postmanService = new PostmanService();
|
|
65
|
+
// Initialize handler registry
|
|
66
|
+
this.handlers = new Map();
|
|
67
|
+
this.registerHandlers();
|
|
68
|
+
// Setup MCP request handlers
|
|
69
|
+
this.setupHandlers();
|
|
70
|
+
log.info('MCP Server initialized', {
|
|
71
|
+
handlers: Array.from(this.handlers.keys()),
|
|
72
|
+
version: '2.0.0'
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Registers all tool handlers
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
79
|
+
registerHandlers() {
|
|
80
|
+
// Create handler instances with dependencies
|
|
81
|
+
const generateTestsHandler = new GenerateTestsHandler(this.specService);
|
|
82
|
+
const runTestsHandler = new RunTestsHandler(this.specService);
|
|
83
|
+
const exportResultsHandler = new ExportResultsHandler(this.reportService, this.fileService);
|
|
84
|
+
const compareSourcesHandler = new CompareSourcesHandler(this.specService, this.fileService);
|
|
85
|
+
const exportToPostmanHandler = new ExportToPostmanHandler(this.postmanService, this.fileService);
|
|
86
|
+
// Register handlers in registry
|
|
87
|
+
this.handlers.set(generateTestsHandler.name, generateTestsHandler);
|
|
88
|
+
this.handlers.set(runTestsHandler.name, runTestsHandler);
|
|
89
|
+
this.handlers.set(exportResultsHandler.name, exportResultsHandler);
|
|
90
|
+
this.handlers.set(compareSourcesHandler.name, compareSourcesHandler);
|
|
91
|
+
this.handlers.set(exportToPostmanHandler.name, exportToPostmanHandler);
|
|
92
|
+
log.info('Handlers registered', {
|
|
93
|
+
count: this.handlers.size,
|
|
94
|
+
names: Array.from(this.handlers.keys())
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Sets up MCP request handlers
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
setupHandlers() {
|
|
102
|
+
// List available tools
|
|
103
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
104
|
+
const tools = Array.from(this.handlers.values()).map(handler => ({
|
|
105
|
+
name: handler.name,
|
|
106
|
+
description: handler.description,
|
|
107
|
+
inputSchema: handler.inputSchema
|
|
108
|
+
}));
|
|
109
|
+
log.debug('ListTools request', { toolCount: tools.length });
|
|
110
|
+
return { tools };
|
|
111
|
+
});
|
|
112
|
+
// Handle tool calls via registry
|
|
113
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
114
|
+
const toolName = request.params.name;
|
|
115
|
+
log.info('Tool call received', {
|
|
116
|
+
tool: toolName,
|
|
117
|
+
hasArguments: !!request.params.arguments
|
|
118
|
+
});
|
|
119
|
+
// Look up handler in registry
|
|
120
|
+
const handler = this.handlers.get(toolName);
|
|
121
|
+
if (!handler) {
|
|
122
|
+
const availableTools = Array.from(this.handlers.keys()).join(', ');
|
|
123
|
+
const errorMessage = `Unknown tool: ${toolName}. Available tools: ${availableTools}`;
|
|
124
|
+
log.error('Tool not found', {
|
|
125
|
+
requestedTool: toolName,
|
|
126
|
+
availableTools: Array.from(this.handlers.keys())
|
|
127
|
+
});
|
|
128
|
+
throw new MCPError(ErrorCode.MCP_INVALID_ARGUMENTS, errorMessage, `Tool '${toolName}' is not registered`);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
// Delegate to handler
|
|
132
|
+
const response = await handler.handle(request.params.arguments);
|
|
133
|
+
log.info('Tool call completed successfully', {
|
|
134
|
+
tool: toolName,
|
|
135
|
+
isError: response.isError || false
|
|
136
|
+
});
|
|
137
|
+
// Return response compatible with MCP SDK
|
|
138
|
+
return {
|
|
139
|
+
content: response.content
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
log.error('Tool call failed', {
|
|
144
|
+
tool: toolName,
|
|
145
|
+
error: error instanceof Error ? error.message : String(error)
|
|
146
|
+
});
|
|
147
|
+
// Re-throw to let MCP SDK handle it
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
log.info('MCP request handlers configured');
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Starts the MCP server
|
|
155
|
+
*/
|
|
156
|
+
async run() {
|
|
157
|
+
try {
|
|
158
|
+
log.info('Starting MCP server', { mode: 'stdio', version: '2.0.0' });
|
|
159
|
+
const transport = new StdioServerTransport();
|
|
160
|
+
await this.server.connect(transport);
|
|
161
|
+
// Only log to stderr (safe for STDIO protocol)
|
|
162
|
+
console.error('OpenAPI Contract Tester MCP Server v2.0.0 running on stdio');
|
|
163
|
+
log.info('MCP server started successfully', {
|
|
164
|
+
handlers: Array.from(this.handlers.keys())
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
log.error('Failed to start MCP server', { error });
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Stops the MCP server gracefully
|
|
174
|
+
*/
|
|
175
|
+
async stop() {
|
|
176
|
+
try {
|
|
177
|
+
log.info('Stopping MCP server');
|
|
178
|
+
await this.server.close();
|
|
179
|
+
log.info('MCP server stopped successfully');
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
log.error('Error stopping MCP server', { error });
|
|
183
|
+
throw error;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Gets the list of registered handlers (for testing/debugging)
|
|
188
|
+
*/
|
|
189
|
+
getHandlers() {
|
|
190
|
+
return this.handlers;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Creates and starts the MCP server
|
|
195
|
+
*/
|
|
196
|
+
export async function startMCPServer() {
|
|
197
|
+
const server = new OpenAPIContractTesterServer();
|
|
198
|
+
await server.run();
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Service - Centralized file I/O operations
|
|
3
|
+
*
|
|
4
|
+
* Handles all file system operations for the MCP server including:
|
|
5
|
+
* - Path resolution
|
|
6
|
+
* - Test data loading
|
|
7
|
+
* - PRD loading
|
|
8
|
+
* - File saving
|
|
9
|
+
*
|
|
10
|
+
* @module mcp/services/file-service
|
|
11
|
+
*/
|
|
12
|
+
import { type NormalizedPrd } from '../../prd/prd-storage.js';
|
|
13
|
+
/**
|
|
14
|
+
* Service for centralized file operations
|
|
15
|
+
*/
|
|
16
|
+
export declare class FileService {
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a file path (absolute, relative, or with ~)
|
|
19
|
+
*
|
|
20
|
+
* @param filePath - Path to resolve
|
|
21
|
+
* @param workingDirectory - Optional working directory for relative paths
|
|
22
|
+
* @returns Resolved absolute path
|
|
23
|
+
*/
|
|
24
|
+
resolveFilePath(filePath: string, workingDirectory?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Loads test data from a JSON file
|
|
27
|
+
*
|
|
28
|
+
* @param filePath - Path to JSON test data file
|
|
29
|
+
* @param workingDirectory - Optional working directory
|
|
30
|
+
* @returns Parsed test data object
|
|
31
|
+
*/
|
|
32
|
+
loadTestData(filePath: string, workingDirectory?: string): Promise<Record<string, unknown>>;
|
|
33
|
+
/**
|
|
34
|
+
* Loads PRD (Product Requirements Document) from various formats
|
|
35
|
+
*
|
|
36
|
+
* @param source - File path, directory, or URL to PRD
|
|
37
|
+
* @param workingDirectory - Optional working directory
|
|
38
|
+
* @returns Normalized PRD object
|
|
39
|
+
*/
|
|
40
|
+
loadPrd(source: string, workingDirectory?: string): Promise<NormalizedPrd>;
|
|
41
|
+
/**
|
|
42
|
+
* Saves content to a file
|
|
43
|
+
*
|
|
44
|
+
* @param filePath - Path where to save the file
|
|
45
|
+
* @param content - Content to write
|
|
46
|
+
* @param workingDirectory - Optional working directory
|
|
47
|
+
*/
|
|
48
|
+
saveFile(filePath: string, content: string, workingDirectory?: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Checks if a file exists
|
|
51
|
+
*
|
|
52
|
+
* @param filePath - Path to check
|
|
53
|
+
* @param workingDirectory - Optional working directory
|
|
54
|
+
* @returns True if file exists
|
|
55
|
+
*/
|
|
56
|
+
fileExists(filePath: string, workingDirectory?: string): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Reads a file as string
|
|
59
|
+
*
|
|
60
|
+
* @param filePath - Path to file
|
|
61
|
+
* @param workingDirectory - Optional working directory
|
|
62
|
+
* @returns File contents as string
|
|
63
|
+
*/
|
|
64
|
+
readFile(filePath: string, workingDirectory?: string): Promise<string>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=file-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/file-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKvE;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAOpE;;;;;;OAMG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBjG;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBhF;;;;;;OAMG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3F;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/E;;;;;;OAMG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAa7E"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Service - Centralized file I/O operations
|
|
3
|
+
*
|
|
4
|
+
* Handles all file system operations for the MCP server including:
|
|
5
|
+
* - Path resolution
|
|
6
|
+
* - Test data loading
|
|
7
|
+
* - PRD loading
|
|
8
|
+
* - File saving
|
|
9
|
+
*
|
|
10
|
+
* @module mcp/services/file-service
|
|
11
|
+
*/
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { resolveFilePath } from '../../utils/path-resolver.js';
|
|
15
|
+
import { loadTestData } from '../../utils/data-loader.js';
|
|
16
|
+
import { loadPrd } from '../../prd/prd-storage.js';
|
|
17
|
+
import { createLogger } from '../../utils/logger.js';
|
|
18
|
+
const log = createLogger('file-service');
|
|
19
|
+
/**
|
|
20
|
+
* Service for centralized file operations
|
|
21
|
+
*/
|
|
22
|
+
export class FileService {
|
|
23
|
+
/**
|
|
24
|
+
* Resolves a file path (absolute, relative, or with ~)
|
|
25
|
+
*
|
|
26
|
+
* @param filePath - Path to resolve
|
|
27
|
+
* @param workingDirectory - Optional working directory for relative paths
|
|
28
|
+
* @returns Resolved absolute path
|
|
29
|
+
*/
|
|
30
|
+
resolveFilePath(filePath, workingDirectory) {
|
|
31
|
+
log.debug('Resolving file path', { filePath, workingDirectory });
|
|
32
|
+
const resolved = resolveFilePath(filePath, workingDirectory);
|
|
33
|
+
log.debug('Path resolved', { original: filePath, resolved });
|
|
34
|
+
return resolved;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Loads test data from a JSON file
|
|
38
|
+
*
|
|
39
|
+
* @param filePath - Path to JSON test data file
|
|
40
|
+
* @param workingDirectory - Optional working directory
|
|
41
|
+
* @returns Parsed test data object
|
|
42
|
+
*/
|
|
43
|
+
async loadTestData(filePath, workingDirectory) {
|
|
44
|
+
const resolvedPath = this.resolveFilePath(filePath, workingDirectory);
|
|
45
|
+
log.info('Loading test data', { path: resolvedPath });
|
|
46
|
+
try {
|
|
47
|
+
const data = await loadTestData(resolvedPath);
|
|
48
|
+
log.info('Test data loaded successfully', {
|
|
49
|
+
path: resolvedPath,
|
|
50
|
+
keys: Object.keys(data)
|
|
51
|
+
});
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
log.error('Failed to load test data', { path: resolvedPath, error });
|
|
56
|
+
throw new Error(`Failed to load test data from ${resolvedPath}: ${error}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Loads PRD (Product Requirements Document) from various formats
|
|
61
|
+
*
|
|
62
|
+
* @param source - File path, directory, or URL to PRD
|
|
63
|
+
* @param workingDirectory - Optional working directory
|
|
64
|
+
* @returns Normalized PRD object
|
|
65
|
+
*/
|
|
66
|
+
async loadPrd(source, workingDirectory) {
|
|
67
|
+
const resolvedPath = this.resolveFilePath(source, workingDirectory);
|
|
68
|
+
log.info('Loading PRD', { path: resolvedPath });
|
|
69
|
+
try {
|
|
70
|
+
const prd = await loadPrd(resolvedPath);
|
|
71
|
+
log.info('PRD loaded successfully', {
|
|
72
|
+
path: resolvedPath,
|
|
73
|
+
userStories: prd.userStories?.length || 0
|
|
74
|
+
});
|
|
75
|
+
return prd;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
log.error('Failed to load PRD', { path: resolvedPath, error });
|
|
79
|
+
throw new Error(`Failed to load PRD from ${resolvedPath}: ${error}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Saves content to a file
|
|
84
|
+
*
|
|
85
|
+
* @param filePath - Path where to save the file
|
|
86
|
+
* @param content - Content to write
|
|
87
|
+
* @param workingDirectory - Optional working directory
|
|
88
|
+
*/
|
|
89
|
+
async saveFile(filePath, content, workingDirectory) {
|
|
90
|
+
const resolvedPath = this.resolveFilePath(filePath, workingDirectory);
|
|
91
|
+
log.info('Saving file', { path: resolvedPath, size: content.length });
|
|
92
|
+
try {
|
|
93
|
+
// Create directory if it doesn't exist
|
|
94
|
+
const dir = path.dirname(resolvedPath);
|
|
95
|
+
await fs.mkdir(dir, { recursive: true });
|
|
96
|
+
// Write file
|
|
97
|
+
await fs.writeFile(resolvedPath, content, 'utf-8');
|
|
98
|
+
log.info('File saved successfully', { path: resolvedPath });
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
log.error('Failed to save file', { path: resolvedPath, error });
|
|
102
|
+
throw new Error(`Failed to save file to ${resolvedPath}: ${error}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Checks if a file exists
|
|
107
|
+
*
|
|
108
|
+
* @param filePath - Path to check
|
|
109
|
+
* @param workingDirectory - Optional working directory
|
|
110
|
+
* @returns True if file exists
|
|
111
|
+
*/
|
|
112
|
+
async fileExists(filePath, workingDirectory) {
|
|
113
|
+
const resolvedPath = this.resolveFilePath(filePath, workingDirectory);
|
|
114
|
+
try {
|
|
115
|
+
await fs.access(resolvedPath);
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Reads a file as string
|
|
124
|
+
*
|
|
125
|
+
* @param filePath - Path to file
|
|
126
|
+
* @param workingDirectory - Optional working directory
|
|
127
|
+
* @returns File contents as string
|
|
128
|
+
*/
|
|
129
|
+
async readFile(filePath, workingDirectory) {
|
|
130
|
+
const resolvedPath = this.resolveFilePath(filePath, workingDirectory);
|
|
131
|
+
log.debug('Reading file', { path: resolvedPath });
|
|
132
|
+
try {
|
|
133
|
+
const content = await fs.readFile(resolvedPath, 'utf-8');
|
|
134
|
+
log.debug('File read successfully', { path: resolvedPath, size: content.length });
|
|
135
|
+
return content;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
log.error('Failed to read file', { path: resolvedPath, error });
|
|
139
|
+
throw new Error(`Failed to read file ${resolvedPath}: ${error}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=file-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-service.js","sourceRoot":"","sources":["../../../src/mcp/services/file-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Service - AI/LLM operations
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all LLM interactions including:
|
|
5
|
+
* - Calling AI for test generation
|
|
6
|
+
* - TOON format conversion
|
|
7
|
+
* - Prompt construction
|
|
8
|
+
*
|
|
9
|
+
* @module mcp/services/llm-service
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Service for LLM operations
|
|
13
|
+
*/
|
|
14
|
+
export declare class LLMService {
|
|
15
|
+
/**
|
|
16
|
+
* Calls the LLM with a prompt
|
|
17
|
+
*
|
|
18
|
+
* @param prompt - Prompt text to send to LLM
|
|
19
|
+
* @param options - Optional configuration
|
|
20
|
+
* @returns LLM response text
|
|
21
|
+
*/
|
|
22
|
+
callLLM(prompt: string, options?: {
|
|
23
|
+
model?: string;
|
|
24
|
+
temperature?: number;
|
|
25
|
+
}): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Formats data as TOON (Tree Object Oriented Notation)
|
|
28
|
+
*
|
|
29
|
+
* @param data - Data to format
|
|
30
|
+
* @returns TOON formatted string
|
|
31
|
+
*/
|
|
32
|
+
formatAsTOON(data: unknown): string;
|
|
33
|
+
/**
|
|
34
|
+
* Parses TOON formatted text back to data
|
|
35
|
+
*
|
|
36
|
+
* @param text - TOON formatted text
|
|
37
|
+
* @returns Parsed data
|
|
38
|
+
*/
|
|
39
|
+
parseTOONResponse(text: string): unknown;
|
|
40
|
+
/**
|
|
41
|
+
* Converts data to TOON format for AI consumption
|
|
42
|
+
*
|
|
43
|
+
* Uses toTOONFormat from ai-client which handles special formatting
|
|
44
|
+
* for AI prompts.
|
|
45
|
+
*
|
|
46
|
+
* @param data - Data to convert
|
|
47
|
+
* @returns TOON formatted string for AI
|
|
48
|
+
*/
|
|
49
|
+
toTOONFormatForAI(data: unknown): string;
|
|
50
|
+
/**
|
|
51
|
+
* Constructs a prompt for test generation
|
|
52
|
+
*
|
|
53
|
+
* @param params - Parameters for prompt construction
|
|
54
|
+
* @returns Constructed prompt
|
|
55
|
+
*/
|
|
56
|
+
constructTestGenerationPrompt(params: {
|
|
57
|
+
endpoints: unknown[];
|
|
58
|
+
userStories?: string;
|
|
59
|
+
apiContext?: unknown;
|
|
60
|
+
categories?: string[];
|
|
61
|
+
}): string;
|
|
62
|
+
/**
|
|
63
|
+
* Constructs a prompt for failure analysis
|
|
64
|
+
*
|
|
65
|
+
* @param failedTests - Failed test results
|
|
66
|
+
* @returns Constructed prompt
|
|
67
|
+
*/
|
|
68
|
+
constructFailureAnalysisPrompt(failedTests: unknown[]): string;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=llm-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/llm-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH;;GAEG;AACH,qBAAa,UAAU;IACrB;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBlG;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAenC;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAexC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAexC;;;;;OAKG;IACH,6BAA6B,CAAC,MAAM,EAAE;QACpC,SAAS,EAAE,OAAO,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,MAAM;IA2DV;;;;;OAKG;IACH,8BAA8B,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM;CAqB/D"}
|