@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,386 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Client Module
|
|
3
|
+
*
|
|
4
|
+
* Generic LLM client that supports various AI API providers.
|
|
5
|
+
* Uses TOON format to reduce token usage by ~40%.
|
|
6
|
+
*
|
|
7
|
+
* @module llm/ai-client
|
|
8
|
+
*/
|
|
9
|
+
import { encode as toTOON } from '@toon-format/toon';
|
|
10
|
+
import { createLogger } from '../utils/logger.js';
|
|
11
|
+
import { aiCache } from './ai-cache.js';
|
|
12
|
+
import http from 'http';
|
|
13
|
+
import https from 'https';
|
|
14
|
+
const log = createLogger('ai-client');
|
|
15
|
+
/**
|
|
16
|
+
* Default AI configuration
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_AI_BASE_URL = 'http://localhost:13800/cell_apps/v1.1/gemini/v1beta/models';
|
|
19
|
+
const DEFAULT_AI_MODEL = 'gemini-3-flash-preview';
|
|
20
|
+
const DEFAULT_AI_ENDPOINT = 'generateContent';
|
|
21
|
+
/**
|
|
22
|
+
* Model limits for LLM
|
|
23
|
+
*/
|
|
24
|
+
const MODEL_LIMITS = {
|
|
25
|
+
maxContextTokens: 32000, // Total context window
|
|
26
|
+
thinkingMargin: 3000, // Reserve for thinking tokens
|
|
27
|
+
minOutputTokens: 1024, // Minimum output tokens
|
|
28
|
+
maxOutputTokens: 8192, // Maximum output tokens
|
|
29
|
+
charsPerToken: 4, // Approximate chars per token
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Get the AI API URL from environment or use default
|
|
33
|
+
*
|
|
34
|
+
* Priority order:
|
|
35
|
+
* 1. AI_API_URL (complete URL override)
|
|
36
|
+
* 2. AI_MODEL (model name only, uses default base URL)
|
|
37
|
+
* 3. DEFAULT values
|
|
38
|
+
*
|
|
39
|
+
* @returns The full AI API URL
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Using defaults
|
|
43
|
+
* // Returns: http://localhost:13800/cell_apps/v1.1/gemini/v1beta/models/gemini-3-flash-preview:generateContent
|
|
44
|
+
*
|
|
45
|
+
* // Using AI_MODEL env var
|
|
46
|
+
* // AI_MODEL=gemini-2.0-flash-exp
|
|
47
|
+
* // Returns: http://localhost:13800/cell_apps/v1.1/gemini/v1beta/models/gemini-2.0-flash-exp:generateContent
|
|
48
|
+
*
|
|
49
|
+
* // Using AI_API_URL env var (complete override)
|
|
50
|
+
* // AI_API_URL=https://custom-api.com/v1/generate
|
|
51
|
+
* // Returns: https://custom-api.com/v1/generate
|
|
52
|
+
*/
|
|
53
|
+
function getAIApiUrl() {
|
|
54
|
+
// Priority 1: Complete URL override
|
|
55
|
+
if (process.env.AI_API_URL) {
|
|
56
|
+
return process.env.AI_API_URL;
|
|
57
|
+
}
|
|
58
|
+
// Priority 2: Model override with default base URL
|
|
59
|
+
const model = process.env.AI_MODEL || DEFAULT_AI_MODEL;
|
|
60
|
+
const baseUrl = process.env.AI_BASE_URL || DEFAULT_AI_BASE_URL;
|
|
61
|
+
const endpoint = process.env.AI_ENDPOINT || DEFAULT_AI_ENDPOINT;
|
|
62
|
+
return `${baseUrl}/${model}:${endpoint}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Estimates token count from text (approximate)
|
|
66
|
+
* @param text - Text to estimate tokens for
|
|
67
|
+
* @returns Estimated token count
|
|
68
|
+
*/
|
|
69
|
+
function estimateTokens(text) {
|
|
70
|
+
return Math.ceil(text.length / MODEL_LIMITS.charsPerToken);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Calculates optimal maxOutputTokens based on prompt size
|
|
74
|
+
* Accounts for thinking tokens used by LLM
|
|
75
|
+
*
|
|
76
|
+
* @param promptTokens - Estimated tokens in the prompt
|
|
77
|
+
* @returns Optimal maxOutputTokens value
|
|
78
|
+
*/
|
|
79
|
+
function calculateMaxOutputTokens(promptTokens) {
|
|
80
|
+
const availableTokens = MODEL_LIMITS.maxContextTokens - promptTokens - MODEL_LIMITS.thinkingMargin;
|
|
81
|
+
// Clamp between min and max
|
|
82
|
+
return Math.max(MODEL_LIMITS.minOutputTokens, Math.min(MODEL_LIMITS.maxOutputTokens, availableTokens));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Converts data to TOON format for token-efficient prompts
|
|
86
|
+
*
|
|
87
|
+
* @param data - Data to convert
|
|
88
|
+
* @returns TOON string or JSON fallback
|
|
89
|
+
*/
|
|
90
|
+
export function toTOONFormat(data) {
|
|
91
|
+
try {
|
|
92
|
+
return toTOON(data);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
log.warn('TOON conversion failed, using JSON', { error });
|
|
96
|
+
return JSON.stringify(data, null, 2);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Makes HTTP/HTTPS request using native Node.js modules
|
|
101
|
+
* This works reliably with local AI proxies (e.g., localhost:13800)
|
|
102
|
+
* whereas fetch() can have streaming issues with some proxies
|
|
103
|
+
*
|
|
104
|
+
* @param url - Full URL to request
|
|
105
|
+
* @param payload - JSON payload to send
|
|
106
|
+
* @param timeout - Timeout in milliseconds
|
|
107
|
+
* @returns Promise with response text
|
|
108
|
+
*/
|
|
109
|
+
async function httpRequest(url, payload, timeout) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
const urlObj = new URL(url);
|
|
112
|
+
const isHttps = urlObj.protocol === 'https:';
|
|
113
|
+
const httpModule = isHttps ? https : http;
|
|
114
|
+
const body = JSON.stringify(payload);
|
|
115
|
+
const options = {
|
|
116
|
+
hostname: urlObj.hostname,
|
|
117
|
+
port: urlObj.port || (isHttps ? 443 : 80),
|
|
118
|
+
path: urlObj.pathname + urlObj.search,
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: {
|
|
121
|
+
'Content-Type': 'application/json',
|
|
122
|
+
'Content-Length': Buffer.byteLength(body)
|
|
123
|
+
},
|
|
124
|
+
timeout
|
|
125
|
+
};
|
|
126
|
+
log.debug('Starting HTTP request', { hostname: options.hostname, port: options.port });
|
|
127
|
+
const req = httpModule.request(options, (res) => {
|
|
128
|
+
log.debug('HTTP response received', { status: res.statusCode });
|
|
129
|
+
const chunks = [];
|
|
130
|
+
res.on('data', (chunk) => {
|
|
131
|
+
log.debug('Received chunk', { size: chunk.length });
|
|
132
|
+
chunks.push(chunk);
|
|
133
|
+
});
|
|
134
|
+
res.on('end', () => {
|
|
135
|
+
const responseText = Buffer.concat(chunks).toString('utf-8');
|
|
136
|
+
log.debug('HTTP response complete', { totalBytes: responseText.length });
|
|
137
|
+
resolve({
|
|
138
|
+
status: res.statusCode || 500,
|
|
139
|
+
text: responseText
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
res.on('error', (error) => {
|
|
143
|
+
log.error('HTTP response error', { error: error.message });
|
|
144
|
+
reject(error);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
req.on('timeout', () => {
|
|
148
|
+
req.destroy();
|
|
149
|
+
log.error('HTTP request timeout', { timeout });
|
|
150
|
+
reject(new Error(`Request timed out after ${timeout}ms`));
|
|
151
|
+
});
|
|
152
|
+
req.on('error', (error) => {
|
|
153
|
+
log.error('HTTP request error', { error: error.message });
|
|
154
|
+
reject(error);
|
|
155
|
+
});
|
|
156
|
+
req.write(body);
|
|
157
|
+
req.end();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Calls the LLM with a prompt and returns the response
|
|
162
|
+
*
|
|
163
|
+
* @param prompt - The prompt to send to the LLM
|
|
164
|
+
* @param options - Call options
|
|
165
|
+
* @returns LLM response
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const result = await callLLM('Analyze these test failures and suggest fixes');
|
|
170
|
+
* if (result.success) {
|
|
171
|
+
* console.log(result.text);
|
|
172
|
+
* }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export async function callLLM(prompt, options = {}) {
|
|
176
|
+
const { temperature = 0.3, timeout = 300000 // 5 minutes default timeout (very generous for complex analysis)
|
|
177
|
+
} = options;
|
|
178
|
+
// Check cache first
|
|
179
|
+
const cached = aiCache.get(prompt);
|
|
180
|
+
if (cached) {
|
|
181
|
+
log.info('LLM response from cache', {
|
|
182
|
+
promptLength: prompt.length,
|
|
183
|
+
responseLength: cached.length
|
|
184
|
+
});
|
|
185
|
+
aiCache.logStats(); // Log cache stats periodically
|
|
186
|
+
return { success: true, text: cached };
|
|
187
|
+
}
|
|
188
|
+
const apiUrl = getAIApiUrl();
|
|
189
|
+
// Calculate optimal maxOutputTokens dynamically based on prompt size
|
|
190
|
+
const estimatedPromptTokens = estimateTokens(prompt);
|
|
191
|
+
const maxTokens = options.maxTokens || calculateMaxOutputTokens(estimatedPromptTokens);
|
|
192
|
+
log.info('Calling LLM (cache miss)', {
|
|
193
|
+
apiUrl,
|
|
194
|
+
promptLength: prompt.length,
|
|
195
|
+
estimatedPromptTokens,
|
|
196
|
+
maxTokens,
|
|
197
|
+
temperature
|
|
198
|
+
});
|
|
199
|
+
try {
|
|
200
|
+
// Prepare request payload
|
|
201
|
+
const requestPayload = {
|
|
202
|
+
contents: [
|
|
203
|
+
{
|
|
204
|
+
parts: [{ text: prompt }]
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
generationConfig: {
|
|
208
|
+
maxOutputTokens: maxTokens,
|
|
209
|
+
temperature: temperature
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
log.debug('LLM Request payload', {
|
|
213
|
+
prompt: prompt.length > 500 ? prompt.slice(0, 500) + '...' : prompt,
|
|
214
|
+
fullPromptLength: prompt.length,
|
|
215
|
+
generationConfig: requestPayload.generationConfig
|
|
216
|
+
});
|
|
217
|
+
// Use native http/https module instead of fetch
|
|
218
|
+
// (fetch can have issues with some local AI proxy streaming)
|
|
219
|
+
const response = await httpRequest(apiUrl, requestPayload, timeout);
|
|
220
|
+
log.debug('Response received', {
|
|
221
|
+
status: response.status,
|
|
222
|
+
length: response.text.length,
|
|
223
|
+
preview: response.text.slice(0, 200)
|
|
224
|
+
});
|
|
225
|
+
if (response.status !== 200) {
|
|
226
|
+
log.error('LLM API error', { status: response.status, error: response.text });
|
|
227
|
+
return {
|
|
228
|
+
success: false,
|
|
229
|
+
error: `API error: ${response.status} - ${response.text}`
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const rawText = response.text;
|
|
233
|
+
log.debug('LLM Full Response', {
|
|
234
|
+
fullResponse: rawText.length > 2000 ? rawText.slice(0, 2000) + '...' : rawText,
|
|
235
|
+
fullLength: rawText.length
|
|
236
|
+
});
|
|
237
|
+
// Parse JSON from text
|
|
238
|
+
log.debug('Parsing JSON from text');
|
|
239
|
+
let data;
|
|
240
|
+
try {
|
|
241
|
+
data = JSON.parse(rawText);
|
|
242
|
+
log.debug('JSON parsed successfully');
|
|
243
|
+
// Log parsed response structure
|
|
244
|
+
log.debug('Parsed LLM Response', {
|
|
245
|
+
hasCandidates: !!data.candidates,
|
|
246
|
+
candidatesCount: data.candidates?.length || 0,
|
|
247
|
+
hasError: !!data.error,
|
|
248
|
+
finishReason: data.candidates?.[0]?.finishReason,
|
|
249
|
+
textLength: data.candidates?.[0]?.content?.parts?.[0]?.text?.length || 0
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
catch (parseError) {
|
|
253
|
+
log.error('JSON parse failed', {
|
|
254
|
+
error: parseError instanceof Error ? parseError.message : String(parseError),
|
|
255
|
+
rawTextLength: rawText.length,
|
|
256
|
+
rawTextPreview: rawText.slice(0, 500)
|
|
257
|
+
});
|
|
258
|
+
return {
|
|
259
|
+
success: false,
|
|
260
|
+
error: `Failed to parse JSON response: ${parseError instanceof Error ? parseError.message : String(parseError)}`
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
// Check for API error in response
|
|
264
|
+
if (data.error) {
|
|
265
|
+
log.error('LLM returned error', { error: data.error });
|
|
266
|
+
return {
|
|
267
|
+
success: false,
|
|
268
|
+
error: data.error.message || 'Unknown API error'
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// Extract text from response
|
|
272
|
+
const text = data.candidates?.[0]?.content?.parts?.[0]?.text;
|
|
273
|
+
if (!text) {
|
|
274
|
+
log.warn('LLM returned empty response', { data });
|
|
275
|
+
return {
|
|
276
|
+
success: false,
|
|
277
|
+
error: 'Empty response from LLM'
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
log.debug('LLM response received', { responseLength: text.length });
|
|
281
|
+
// Store in cache
|
|
282
|
+
aiCache.set(prompt, text);
|
|
283
|
+
log.debug('Response cached');
|
|
284
|
+
return {
|
|
285
|
+
success: true,
|
|
286
|
+
text
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
291
|
+
// Check if it's a timeout error
|
|
292
|
+
if (errorMessage.includes('timed out')) {
|
|
293
|
+
log.error('LLM call timed out', { timeout, error: errorMessage });
|
|
294
|
+
return {
|
|
295
|
+
success: false,
|
|
296
|
+
error: `Request timed out after ${timeout}ms`
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
log.error('LLM call failed', { errorMessage, errorType: error instanceof Error ? error.name : typeof error });
|
|
300
|
+
return {
|
|
301
|
+
success: false,
|
|
302
|
+
error: errorMessage
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Calls the LLM with structured data (automatically converts to TOON)
|
|
308
|
+
*
|
|
309
|
+
* @param instruction - What you want the LLM to do
|
|
310
|
+
* @param data - Structured data to include (will be converted to TOON)
|
|
311
|
+
* @param options - Call options
|
|
312
|
+
* @returns LLM response
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* const result = await callLLMWithData(
|
|
317
|
+
* 'Analyze these failures and suggest fixes',
|
|
318
|
+
* { failures: [{ endpoint: '/users', status: 401, count: 10 }] }
|
|
319
|
+
* );
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
export async function callLLMWithData(instruction, data, options = {}) {
|
|
323
|
+
const toonData = toTOONFormat(data);
|
|
324
|
+
const prompt = `${instruction}\n\nData:\n${toonData}`;
|
|
325
|
+
log.debug('Calling LLM with TOON data', {
|
|
326
|
+
instructionLength: instruction.length,
|
|
327
|
+
dataLength: toonData.length
|
|
328
|
+
});
|
|
329
|
+
return callLLM(prompt, options);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Cache for LLM availability check
|
|
333
|
+
*/
|
|
334
|
+
let llmAvailabilityCache = null;
|
|
335
|
+
const LLM_AVAILABILITY_CACHE_TTL = 30000; // 30 seconds
|
|
336
|
+
/**
|
|
337
|
+
* Checks if the LLM service is available
|
|
338
|
+
* Result is cached for 30 seconds to avoid repeated checks
|
|
339
|
+
*
|
|
340
|
+
* @returns true if LLM is reachable
|
|
341
|
+
*/
|
|
342
|
+
export async function isLLMAvailable() {
|
|
343
|
+
const now = Date.now();
|
|
344
|
+
// Return cached result if still valid
|
|
345
|
+
if (llmAvailabilityCache && (now - llmAvailabilityCache.timestamp) < LLM_AVAILABILITY_CACHE_TTL) {
|
|
346
|
+
log.debug('LLM availability check (from cache)', {
|
|
347
|
+
available: llmAvailabilityCache.available,
|
|
348
|
+
cacheAge: now - llmAvailabilityCache.timestamp
|
|
349
|
+
});
|
|
350
|
+
return llmAvailabilityCache.available;
|
|
351
|
+
}
|
|
352
|
+
// Cache expired or doesn't exist - perform actual check
|
|
353
|
+
log.debug('LLM availability check (fresh check)');
|
|
354
|
+
try {
|
|
355
|
+
const result = await callLLM('Say "ok"', {
|
|
356
|
+
maxTokens: 10,
|
|
357
|
+
timeout: 5000
|
|
358
|
+
});
|
|
359
|
+
const available = result.success;
|
|
360
|
+
// Update cache
|
|
361
|
+
llmAvailabilityCache = {
|
|
362
|
+
available,
|
|
363
|
+
timestamp: now
|
|
364
|
+
};
|
|
365
|
+
log.info('LLM availability check complete', { available });
|
|
366
|
+
return available;
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
// Cache negative result too
|
|
370
|
+
llmAvailabilityCache = {
|
|
371
|
+
available: false,
|
|
372
|
+
timestamp: now
|
|
373
|
+
};
|
|
374
|
+
log.info('LLM availability check failed');
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Gets the configured AI API URL
|
|
380
|
+
*
|
|
381
|
+
* @returns The API URL being used
|
|
382
|
+
*/
|
|
383
|
+
export function getConfiguredAIUrl() {
|
|
384
|
+
return getAIApiUrl();
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=ai-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-client.js","sourceRoot":"","sources":["../../src/llm/ai-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI-Powered Data Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates contextual, realistic test data using LLM.
|
|
5
|
+
* Used as a fallback when Faker data is not appropriate for the API domain.
|
|
6
|
+
*
|
|
7
|
+
* @module llm/data-generator-ai
|
|
8
|
+
*/
|
|
9
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
10
|
+
/**
|
|
11
|
+
* API context for intelligent data generation
|
|
12
|
+
*/
|
|
13
|
+
export interface APIContext {
|
|
14
|
+
/**
|
|
15
|
+
* Type of API (banking, ecommerce, blog, internal, other)
|
|
16
|
+
*/
|
|
17
|
+
type?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Domain of the API (more specific than type)
|
|
20
|
+
*/
|
|
21
|
+
domain?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Industry classification
|
|
24
|
+
*/
|
|
25
|
+
industry?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Entity types in the API (users, products, orders, etc.)
|
|
28
|
+
*/
|
|
29
|
+
entityTypes?: string[];
|
|
30
|
+
/**
|
|
31
|
+
* Endpoint path for context-specific generation
|
|
32
|
+
*/
|
|
33
|
+
endpoint?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Purpose of the endpoint (login, payment, transfer, etc.)
|
|
36
|
+
*/
|
|
37
|
+
purpose?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Validation level (strict for banking, relaxed for blogs)
|
|
40
|
+
*/
|
|
41
|
+
validationLevel?: 'strict' | 'relaxed';
|
|
42
|
+
/**
|
|
43
|
+
* Whether to use real formats (IBANs, credit cards, etc.)
|
|
44
|
+
*/
|
|
45
|
+
useRealFormats?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Checks if an endpoint is critical and requires AI-generated data
|
|
49
|
+
*
|
|
50
|
+
* @param context - API context
|
|
51
|
+
* @returns true if endpoint is critical
|
|
52
|
+
*/
|
|
53
|
+
export declare function isCriticalEndpoint(context?: APIContext): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Generates a realistic value using AI based on schema and context
|
|
56
|
+
*
|
|
57
|
+
* @param schema - JSON Schema object
|
|
58
|
+
* @param propertyName - Name of the property being generated
|
|
59
|
+
* @param context - API context for domain-specific generation
|
|
60
|
+
* @returns Generated value or null if AI fails
|
|
61
|
+
*/
|
|
62
|
+
export declare function generateValueWithAI(schema: OpenAPIV3.SchemaObject, propertyName: string, context?: APIContext): Promise<unknown | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Generates intelligent edge case values using AI
|
|
65
|
+
*
|
|
66
|
+
* @param schema - JSON Schema object
|
|
67
|
+
* @param propertyName - Name of the property
|
|
68
|
+
* @param context - API context
|
|
69
|
+
* @returns Array of edge case values with descriptions
|
|
70
|
+
*/
|
|
71
|
+
export declare function generateEdgeCasesWithAI(schema: OpenAPIV3.SchemaObject, propertyName: string, context?: APIContext): Promise<Array<{
|
|
72
|
+
value: unknown;
|
|
73
|
+
description: string;
|
|
74
|
+
expectedStatus: number;
|
|
75
|
+
}>>;
|
|
76
|
+
/**
|
|
77
|
+
* Infers the purpose of an endpoint from its path and method
|
|
78
|
+
*
|
|
79
|
+
* @param endpoint - Endpoint path
|
|
80
|
+
* @param method - HTTP method
|
|
81
|
+
* @returns Inferred purpose
|
|
82
|
+
*/
|
|
83
|
+
export declare function inferEndpointPurpose(endpoint: string, method: string): string;
|
|
84
|
+
//# sourceMappingURL=data-generator-ai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-generator-ai.d.ts","sourceRoot":"","sources":["../../src/llm/data-generator-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAEvC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAoBhE;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,CAAC,YAAY,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA4BzB;AAyHD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkDjF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgC7E"}
|