@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.
Files changed (431) hide show
  1. package/.env.example +91 -0
  2. package/README.md +472 -0
  3. package/dist/ai-engine/assertion-generator.d.ts +48 -0
  4. package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
  5. package/dist/ai-engine/assertion-generator.js +166 -0
  6. package/dist/ai-engine/assertion-generator.js.map +1 -0
  7. package/dist/ai-engine/context-data-generator.d.ts +38 -0
  8. package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
  9. package/dist/ai-engine/context-data-generator.js +146 -0
  10. package/dist/ai-engine/context-data-generator.js.map +1 -0
  11. package/dist/ai-engine/dataflow-detector.d.ts +53 -0
  12. package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
  13. package/dist/ai-engine/dataflow-detector.js +217 -0
  14. package/dist/ai-engine/dataflow-detector.js.map +1 -0
  15. package/dist/ai-engine/dependency-detector.d.ts +52 -0
  16. package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
  17. package/dist/ai-engine/dependency-detector.js +241 -0
  18. package/dist/ai-engine/dependency-detector.js.map +1 -0
  19. package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
  20. package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
  21. package/dist/ai-engine/edge-case-suggester.js +177 -0
  22. package/dist/ai-engine/edge-case-suggester.js.map +1 -0
  23. package/dist/ai-engine/index.d.ts +13 -0
  24. package/dist/ai-engine/index.d.ts.map +1 -0
  25. package/dist/ai-engine/index.js +13 -0
  26. package/dist/ai-engine/index.js.map +1 -0
  27. package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
  28. package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
  29. package/dist/analyzers/ai-failure-analyzer.js +220 -0
  30. package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
  31. package/dist/analyzers/comparison-utils.d.ts +31 -0
  32. package/dist/analyzers/comparison-utils.d.ts.map +1 -0
  33. package/dist/analyzers/comparison-utils.js +85 -0
  34. package/dist/analyzers/comparison-utils.js.map +1 -0
  35. package/dist/analyzers/context-analyzer.d.ts +49 -0
  36. package/dist/analyzers/context-analyzer.d.ts.map +1 -0
  37. package/dist/analyzers/context-analyzer.js +292 -0
  38. package/dist/analyzers/context-analyzer.js.map +1 -0
  39. package/dist/analyzers/dependency-analyzer.d.ts +44 -0
  40. package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
  41. package/dist/analyzers/dependency-analyzer.js +313 -0
  42. package/dist/analyzers/dependency-analyzer.js.map +1 -0
  43. package/dist/analyzers/failure-analyzer.d.ts +122 -0
  44. package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
  45. package/dist/analyzers/failure-analyzer.js +140 -0
  46. package/dist/analyzers/failure-analyzer.js.map +1 -0
  47. package/dist/analyzers/failure-detectors/index.d.ts +33 -0
  48. package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
  49. package/dist/analyzers/failure-detectors/index.js +164 -0
  50. package/dist/analyzers/failure-detectors/index.js.map +1 -0
  51. package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
  52. package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
  53. package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
  54. package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
  55. package/dist/analyzers/index.d.ts +10 -0
  56. package/dist/analyzers/index.d.ts.map +1 -0
  57. package/dist/analyzers/index.js +10 -0
  58. package/dist/analyzers/index.js.map +1 -0
  59. package/dist/analyzers/semantic-matcher.d.ts +123 -0
  60. package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
  61. package/dist/analyzers/semantic-matcher.js +297 -0
  62. package/dist/analyzers/semantic-matcher.js.map +1 -0
  63. package/dist/analyzers/source-comparator.d.ts +177 -0
  64. package/dist/analyzers/source-comparator.d.ts.map +1 -0
  65. package/dist/analyzers/source-comparator.js +225 -0
  66. package/dist/analyzers/source-comparator.js.map +1 -0
  67. package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
  68. package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
  69. package/dist/business-rules/business-rules-analyzer.js +363 -0
  70. package/dist/business-rules/business-rules-analyzer.js.map +1 -0
  71. package/dist/business-rules/business-rules-generator.d.ts +78 -0
  72. package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
  73. package/dist/business-rules/business-rules-generator.js +357 -0
  74. package/dist/business-rules/business-rules-generator.js.map +1 -0
  75. package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
  76. package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
  77. package/dist/business-rules/extractors/rule-extractors.js +189 -0
  78. package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
  79. package/dist/business-rules/value-generators.d.ts +70 -0
  80. package/dist/business-rules/value-generators.d.ts.map +1 -0
  81. package/dist/business-rules/value-generators.js +142 -0
  82. package/dist/business-rules/value-generators.js.map +1 -0
  83. package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
  84. package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
  85. package/dist/executor/auth-providers/auth-header-builder.js +47 -0
  86. package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
  87. package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
  88. package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
  89. package/dist/executor/auth-providers/oauth2-provider.js +114 -0
  90. package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
  91. package/dist/executor/http-client.d.ts +133 -0
  92. package/dist/executor/http-client.d.ts.map +1 -0
  93. package/dist/executor/http-client.js +172 -0
  94. package/dist/executor/http-client.js.map +1 -0
  95. package/dist/executor/http-request-builder.d.ts +69 -0
  96. package/dist/executor/http-request-builder.d.ts.map +1 -0
  97. package/dist/executor/http-request-builder.js +140 -0
  98. package/dist/executor/http-request-builder.js.map +1 -0
  99. package/dist/executor/http-response-parser.d.ts +28 -0
  100. package/dist/executor/http-response-parser.d.ts.map +1 -0
  101. package/dist/executor/http-response-parser.js +74 -0
  102. package/dist/executor/http-response-parser.js.map +1 -0
  103. package/dist/executor/response-handler.d.ts +66 -0
  104. package/dist/executor/response-handler.d.ts.map +1 -0
  105. package/dist/executor/response-handler.js +135 -0
  106. package/dist/executor/response-handler.js.map +1 -0
  107. package/dist/executor/result-processor.d.ts +27 -0
  108. package/dist/executor/result-processor.d.ts.map +1 -0
  109. package/dist/executor/result-processor.js +140 -0
  110. package/dist/executor/result-processor.js.map +1 -0
  111. package/dist/executor/result-utils.d.ts +21 -0
  112. package/dist/executor/result-utils.d.ts.map +1 -0
  113. package/dist/executor/result-utils.js +29 -0
  114. package/dist/executor/result-utils.js.map +1 -0
  115. package/dist/executor/test-executor.d.ts +49 -0
  116. package/dist/executor/test-executor.d.ts.map +1 -0
  117. package/dist/executor/test-executor.js +226 -0
  118. package/dist/executor/test-executor.js.map +1 -0
  119. package/dist/executor/test-runner.d.ts +85 -0
  120. package/dist/executor/test-runner.d.ts.map +1 -0
  121. package/dist/executor/test-runner.js +177 -0
  122. package/dist/executor/test-runner.js.map +1 -0
  123. package/dist/executor/token-detector/index.d.ts +7 -0
  124. package/dist/executor/token-detector/index.d.ts.map +1 -0
  125. package/dist/executor/token-detector/index.js +7 -0
  126. package/dist/executor/token-detector/index.js.map +1 -0
  127. package/dist/executor/token-detector/token-detector.d.ts +64 -0
  128. package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
  129. package/dist/executor/token-detector/token-detector.js +140 -0
  130. package/dist/executor/token-detector/token-detector.js.map +1 -0
  131. package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
  132. package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
  133. package/dist/generators/business-rule-from-stories-generator.js +227 -0
  134. package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
  135. package/dist/generators/data/ai-data-generator.d.ts +23 -0
  136. package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
  137. package/dist/generators/data/ai-data-generator.js +41 -0
  138. package/dist/generators/data/ai-data-generator.js.map +1 -0
  139. package/dist/generators/data/base-generator.d.ts +121 -0
  140. package/dist/generators/data/base-generator.d.ts.map +1 -0
  141. package/dist/generators/data/base-generator.js +200 -0
  142. package/dist/generators/data/base-generator.js.map +1 -0
  143. package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
  144. package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
  145. package/dist/generators/data/heuristic-data-generator.js +49 -0
  146. package/dist/generators/data/heuristic-data-generator.js.map +1 -0
  147. package/dist/generators/data/index.d.ts +48 -0
  148. package/dist/generators/data/index.d.ts.map +1 -0
  149. package/dist/generators/data/index.js +201 -0
  150. package/dist/generators/data/index.js.map +1 -0
  151. package/dist/generators/data/schema-walker.d.ts +45 -0
  152. package/dist/generators/data/schema-walker.d.ts.map +1 -0
  153. package/dist/generators/data/schema-walker.js +103 -0
  154. package/dist/generators/data/schema-walker.js.map +1 -0
  155. package/dist/generators/data/type-strategies.d.ts +79 -0
  156. package/dist/generators/data/type-strategies.d.ts.map +1 -0
  157. package/dist/generators/data/type-strategies.js +394 -0
  158. package/dist/generators/data/type-strategies.js.map +1 -0
  159. package/dist/generators/data-generator.d.ts +11 -0
  160. package/dist/generators/data-generator.d.ts.map +1 -0
  161. package/dist/generators/data-generator.js +11 -0
  162. package/dist/generators/data-generator.js.map +1 -0
  163. package/dist/generators/edge-case-generator.d.ts +55 -0
  164. package/dist/generators/edge-case-generator.d.ts.map +1 -0
  165. package/dist/generators/edge-case-generator.js +327 -0
  166. package/dist/generators/edge-case-generator.js.map +1 -0
  167. package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
  168. package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
  169. package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
  170. package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
  171. package/dist/generators/error-case-generator.d.ts +11 -0
  172. package/dist/generators/error-case-generator.d.ts.map +1 -0
  173. package/dist/generators/error-case-generator.js +11 -0
  174. package/dist/generators/error-case-generator.js.map +1 -0
  175. package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
  176. package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
  177. package/dist/generators/errors/auth-error-strategy.js +118 -0
  178. package/dist/generators/errors/auth-error-strategy.js.map +1 -0
  179. package/dist/generators/errors/business-error-strategy.d.ts +44 -0
  180. package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
  181. package/dist/generators/errors/business-error-strategy.js +152 -0
  182. package/dist/generators/errors/business-error-strategy.js.map +1 -0
  183. package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
  184. package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
  185. package/dist/generators/errors/error-strategy-factory.js +47 -0
  186. package/dist/generators/errors/error-strategy-factory.js.map +1 -0
  187. package/dist/generators/errors/error-strategy.d.ts +62 -0
  188. package/dist/generators/errors/error-strategy.d.ts.map +1 -0
  189. package/dist/generators/errors/error-strategy.js +69 -0
  190. package/dist/generators/errors/error-strategy.js.map +1 -0
  191. package/dist/generators/errors/index.d.ts +23 -0
  192. package/dist/generators/errors/index.d.ts.map +1 -0
  193. package/dist/generators/errors/index.js +73 -0
  194. package/dist/generators/errors/index.js.map +1 -0
  195. package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
  196. package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
  197. package/dist/generators/errors/validation-error-strategy.js +214 -0
  198. package/dist/generators/errors/validation-error-strategy.js.map +1 -0
  199. package/dist/generators/happy-path-generator.d.ts +93 -0
  200. package/dist/generators/happy-path-generator.d.ts.map +1 -0
  201. package/dist/generators/happy-path-generator.js +275 -0
  202. package/dist/generators/happy-path-generator.js.map +1 -0
  203. package/dist/generators/test-enricher.d.ts +44 -0
  204. package/dist/generators/test-enricher.d.ts.map +1 -0
  205. package/dist/generators/test-enricher.js +109 -0
  206. package/dist/generators/test-enricher.js.map +1 -0
  207. package/dist/index.d.ts +9 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +14 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/llm/ai-cache.d.ts +123 -0
  212. package/dist/llm/ai-cache.d.ts.map +1 -0
  213. package/dist/llm/ai-cache.js +220 -0
  214. package/dist/llm/ai-cache.js.map +1 -0
  215. package/dist/llm/ai-client.d.ts +92 -0
  216. package/dist/llm/ai-client.d.ts.map +1 -0
  217. package/dist/llm/ai-client.js +386 -0
  218. package/dist/llm/ai-client.js.map +1 -0
  219. package/dist/llm/data-generator-ai.d.ts +84 -0
  220. package/dist/llm/data-generator-ai.d.ts.map +1 -0
  221. package/dist/llm/data-generator-ai.js +284 -0
  222. package/dist/llm/data-generator-ai.js.map +1 -0
  223. package/dist/llm/index.d.ts +7 -0
  224. package/dist/llm/index.d.ts.map +1 -0
  225. package/dist/llm/index.js +7 -0
  226. package/dist/llm/index.js.map +1 -0
  227. package/dist/mcp/handlers/base-handler.d.ts +72 -0
  228. package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
  229. package/dist/mcp/handlers/base-handler.js +86 -0
  230. package/dist/mcp/handlers/base-handler.js.map +1 -0
  231. package/dist/mcp/handlers/compare-sources.d.ts +91 -0
  232. package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
  233. package/dist/mcp/handlers/compare-sources.js +182 -0
  234. package/dist/mcp/handlers/compare-sources.js.map +1 -0
  235. package/dist/mcp/handlers/export-results.d.ts +53 -0
  236. package/dist/mcp/handlers/export-results.d.ts.map +1 -0
  237. package/dist/mcp/handlers/export-results.js +132 -0
  238. package/dist/mcp/handlers/export-results.js.map +1 -0
  239. package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
  240. package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
  241. package/dist/mcp/handlers/export-to-postman.js +128 -0
  242. package/dist/mcp/handlers/export-to-postman.js.map +1 -0
  243. package/dist/mcp/handlers/generate-tests.d.ts +74 -0
  244. package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
  245. package/dist/mcp/handlers/generate-tests.js +519 -0
  246. package/dist/mcp/handlers/generate-tests.js.map +1 -0
  247. package/dist/mcp/handlers/index.d.ts +13 -0
  248. package/dist/mcp/handlers/index.d.ts.map +1 -0
  249. package/dist/mcp/handlers/index.js +12 -0
  250. package/dist/mcp/handlers/index.js.map +1 -0
  251. package/dist/mcp/handlers/run-tests.d.ts +89 -0
  252. package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
  253. package/dist/mcp/handlers/run-tests.js +233 -0
  254. package/dist/mcp/handlers/run-tests.js.map +1 -0
  255. package/dist/mcp/handlers/types.d.ts +61 -0
  256. package/dist/mcp/handlers/types.d.ts.map +1 -0
  257. package/dist/mcp/handlers/types.js +9 -0
  258. package/dist/mcp/handlers/types.js.map +1 -0
  259. package/dist/mcp/server.d.ts +64 -0
  260. package/dist/mcp/server.d.ts.map +1 -0
  261. package/dist/mcp/server.js +200 -0
  262. package/dist/mcp/server.js.map +1 -0
  263. package/dist/mcp/services/file-service.d.ts +66 -0
  264. package/dist/mcp/services/file-service.d.ts.map +1 -0
  265. package/dist/mcp/services/file-service.js +143 -0
  266. package/dist/mcp/services/file-service.js.map +1 -0
  267. package/dist/mcp/services/llm-service.d.ts +70 -0
  268. package/dist/mcp/services/llm-service.d.ts.map +1 -0
  269. package/dist/mcp/services/llm-service.js +189 -0
  270. package/dist/mcp/services/llm-service.js.map +1 -0
  271. package/dist/mcp/services/postman-service.d.ts +128 -0
  272. package/dist/mcp/services/postman-service.d.ts.map +1 -0
  273. package/dist/mcp/services/postman-service.js +266 -0
  274. package/dist/mcp/services/postman-service.js.map +1 -0
  275. package/dist/mcp/services/report-service.d.ts +81 -0
  276. package/dist/mcp/services/report-service.d.ts.map +1 -0
  277. package/dist/mcp/services/report-service.js +210 -0
  278. package/dist/mcp/services/report-service.js.map +1 -0
  279. package/dist/mcp/services/spec-service.d.ts +58 -0
  280. package/dist/mcp/services/spec-service.d.ts.map +1 -0
  281. package/dist/mcp/services/spec-service.js +140 -0
  282. package/dist/mcp/services/spec-service.js.map +1 -0
  283. package/dist/parsers/endpoint-extractor.d.ts +32 -0
  284. package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
  285. package/dist/parsers/endpoint-extractor.js +160 -0
  286. package/dist/parsers/endpoint-extractor.js.map +1 -0
  287. package/dist/parsers/openapi-parser.d.ts +120 -0
  288. package/dist/parsers/openapi-parser.d.ts.map +1 -0
  289. package/dist/parsers/openapi-parser.js +257 -0
  290. package/dist/parsers/openapi-parser.js.map +1 -0
  291. package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
  292. package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
  293. package/dist/parsers/visitors/auth-visitor.js +116 -0
  294. package/dist/parsers/visitors/auth-visitor.js.map +1 -0
  295. package/dist/prd/index.d.ts +10 -0
  296. package/dist/prd/index.d.ts.map +1 -0
  297. package/dist/prd/index.js +10 -0
  298. package/dist/prd/index.js.map +1 -0
  299. package/dist/prd/prd-reader.d.ts +124 -0
  300. package/dist/prd/prd-reader.d.ts.map +1 -0
  301. package/dist/prd/prd-reader.js +308 -0
  302. package/dist/prd/prd-reader.js.map +1 -0
  303. package/dist/prd/prd-storage.d.ts +232 -0
  304. package/dist/prd/prd-storage.d.ts.map +1 -0
  305. package/dist/prd/prd-storage.js +129 -0
  306. package/dist/prd/prd-storage.js.map +1 -0
  307. package/dist/repairers/test-auto-repairer.d.ts +61 -0
  308. package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
  309. package/dist/repairers/test-auto-repairer.js +213 -0
  310. package/dist/repairers/test-auto-repairer.js.map +1 -0
  311. package/dist/reporters/comparison-report-generator.d.ts +58 -0
  312. package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
  313. package/dist/reporters/comparison-report-generator.js +369 -0
  314. package/dist/reporters/comparison-report-generator.js.map +1 -0
  315. package/dist/reporters/gherkin-formatter.d.ts +34 -0
  316. package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
  317. package/dist/reporters/gherkin-formatter.js +231 -0
  318. package/dist/reporters/gherkin-formatter.js.map +1 -0
  319. package/dist/reporters/html-report-generator.d.ts +174 -0
  320. package/dist/reporters/html-report-generator.d.ts.map +1 -0
  321. package/dist/reporters/html-report-generator.js +194 -0
  322. package/dist/reporters/html-report-generator.js.map +1 -0
  323. package/dist/reporters/report-charts.d.ts +23 -0
  324. package/dist/reporters/report-charts.d.ts.map +1 -0
  325. package/dist/reporters/report-charts.js +182 -0
  326. package/dist/reporters/report-charts.js.map +1 -0
  327. package/dist/reporters/report-sections.d.ts +34 -0
  328. package/dist/reporters/report-sections.d.ts.map +1 -0
  329. package/dist/reporters/report-sections.js +481 -0
  330. package/dist/reporters/report-sections.js.map +1 -0
  331. package/dist/reporters/report-styles.d.ts +12 -0
  332. package/dist/reporters/report-styles.d.ts.map +1 -0
  333. package/dist/reporters/report-styles.js +412 -0
  334. package/dist/reporters/report-styles.js.map +1 -0
  335. package/dist/reporters/report-test-details.d.ts +56 -0
  336. package/dist/reporters/report-test-details.d.ts.map +1 -0
  337. package/dist/reporters/report-test-details.js +328 -0
  338. package/dist/reporters/report-test-details.js.map +1 -0
  339. package/dist/reporters/report-utils.d.ts +40 -0
  340. package/dist/reporters/report-utils.d.ts.map +1 -0
  341. package/dist/reporters/report-utils.js +163 -0
  342. package/dist/reporters/report-utils.js.map +1 -0
  343. package/dist/types/ai-config.d.ts +63 -0
  344. package/dist/types/ai-config.d.ts.map +1 -0
  345. package/dist/types/ai-config.js +79 -0
  346. package/dist/types/ai-config.js.map +1 -0
  347. package/dist/types/business-rules.d.ts +235 -0
  348. package/dist/types/business-rules.d.ts.map +1 -0
  349. package/dist/types/business-rules.js +6 -0
  350. package/dist/types/business-rules.js.map +1 -0
  351. package/dist/types/config.d.ts +106 -0
  352. package/dist/types/config.d.ts.map +1 -0
  353. package/dist/types/config.js +6 -0
  354. package/dist/types/config.js.map +1 -0
  355. package/dist/types/core.d.ts +72 -0
  356. package/dist/types/core.d.ts.map +1 -0
  357. package/dist/types/core.js +6 -0
  358. package/dist/types/core.js.map +1 -0
  359. package/dist/types/index.d.ts +17 -0
  360. package/dist/types/index.d.ts.map +1 -0
  361. package/dist/types/index.js +10 -0
  362. package/dist/types/index.js.map +1 -0
  363. package/dist/types/openapi.d.ts +139 -0
  364. package/dist/types/openapi.d.ts.map +1 -0
  365. package/dist/types/openapi.js +6 -0
  366. package/dist/types/openapi.js.map +1 -0
  367. package/dist/types/pact.d.ts +101 -0
  368. package/dist/types/pact.d.ts.map +1 -0
  369. package/dist/types/pact.js +6 -0
  370. package/dist/types/pact.js.map +1 -0
  371. package/dist/types/reporting.d.ts +93 -0
  372. package/dist/types/reporting.d.ts.map +1 -0
  373. package/dist/types/reporting.js +6 -0
  374. package/dist/types/reporting.js.map +1 -0
  375. package/dist/types/test-case.d.ts +233 -0
  376. package/dist/types/test-case.d.ts.map +1 -0
  377. package/dist/types/test-case.js +6 -0
  378. package/dist/types/test-case.js.map +1 -0
  379. package/dist/types/test-execution.d.ts +80 -0
  380. package/dist/types/test-execution.d.ts.map +1 -0
  381. package/dist/types/test-execution.js +6 -0
  382. package/dist/types/test-execution.js.map +1 -0
  383. package/dist/utils/auth-generator.d.ts +30 -0
  384. package/dist/utils/auth-generator.d.ts.map +1 -0
  385. package/dist/utils/auth-generator.js +68 -0
  386. package/dist/utils/auth-generator.js.map +1 -0
  387. package/dist/utils/config.d.ts +181 -0
  388. package/dist/utils/config.d.ts.map +1 -0
  389. package/dist/utils/config.js +141 -0
  390. package/dist/utils/config.js.map +1 -0
  391. package/dist/utils/coverage-calculator.d.ts +81 -0
  392. package/dist/utils/coverage-calculator.d.ts.map +1 -0
  393. package/dist/utils/coverage-calculator.js +134 -0
  394. package/dist/utils/coverage-calculator.js.map +1 -0
  395. package/dist/utils/data-loader.d.ts +52 -0
  396. package/dist/utils/data-loader.d.ts.map +1 -0
  397. package/dist/utils/data-loader.js +192 -0
  398. package/dist/utils/data-loader.js.map +1 -0
  399. package/dist/utils/errors.d.ts +167 -0
  400. package/dist/utils/errors.d.ts.map +1 -0
  401. package/dist/utils/errors.js +257 -0
  402. package/dist/utils/errors.js.map +1 -0
  403. package/dist/utils/logger.d.ts +220 -0
  404. package/dist/utils/logger.d.ts.map +1 -0
  405. package/dist/utils/logger.js +325 -0
  406. package/dist/utils/logger.js.map +1 -0
  407. package/dist/utils/openapi-discovery.d.ts +31 -0
  408. package/dist/utils/openapi-discovery.d.ts.map +1 -0
  409. package/dist/utils/openapi-discovery.js +322 -0
  410. package/dist/utils/openapi-discovery.js.map +1 -0
  411. package/dist/utils/path-resolver.d.ts +101 -0
  412. package/dist/utils/path-resolver.d.ts.map +1 -0
  413. package/dist/utils/path-resolver.js +167 -0
  414. package/dist/utils/path-resolver.js.map +1 -0
  415. package/dist/utils/resilience.d.ts +181 -0
  416. package/dist/utils/resilience.d.ts.map +1 -0
  417. package/dist/utils/resilience.js +269 -0
  418. package/dist/utils/resilience.js.map +1 -0
  419. package/dist/validators/openapi-validator.d.ts +198 -0
  420. package/dist/validators/openapi-validator.d.ts.map +1 -0
  421. package/dist/validators/openapi-validator.js +349 -0
  422. package/dist/validators/openapi-validator.js.map +1 -0
  423. package/dist/validators/response-matcher.d.ts +84 -0
  424. package/dist/validators/response-matcher.d.ts.map +1 -0
  425. package/dist/validators/response-matcher.js +234 -0
  426. package/dist/validators/response-matcher.js.map +1 -0
  427. package/dist/validators/schema-validator.d.ts +174 -0
  428. package/dist/validators/schema-validator.d.ts.map +1 -0
  429. package/dist/validators/schema-validator.js +340 -0
  430. package/dist/validators/schema-validator.js.map +1 -0
  431. package/package.json +76 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Dependency Detector - Automatic test dependency detection
3
+ *
4
+ * Automatically detects dependencies between tests using heuristics and optionally AI.
5
+ * Identifies which tests must run before others based on resource creation,
6
+ * authentication requirements, and endpoint relationships.
7
+ *
8
+ * @module ai-engine/dependency-detector
9
+ */
10
+ import type { TestCase, ParsedEndpoint } from '../types/index.js';
11
+ import type { AIConfig } from '../types/ai-config.js';
12
+ /**
13
+ * Detects dependencies between tests automatically
14
+ *
15
+ * Uses heuristic rules first, then optionally AI for complex cases
16
+ *
17
+ * @param tests - Array of test cases
18
+ * @param endpoints - Array of parsed endpoints
19
+ * @param aiConfig - AI configuration
20
+ * @returns Dependency map (testId -> array of testIds it depends on)
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const deps = await detectDependencies(tests, endpoints, aiConfig);
25
+ * // Returns: { "get-user": ["login"], "update-user": ["login", "get-user"] }
26
+ * ```
27
+ */
28
+ export declare function detectDependencies(tests: TestCase[], endpoints: ParsedEndpoint[], aiConfig: AIConfig): Promise<Record<string, string[]>>;
29
+ /**
30
+ * Detects dependencies using heuristic rules (no AI)
31
+ *
32
+ * Rules:
33
+ * 1. All protected endpoints depend on login/auth endpoint
34
+ * 2. GET /resource/{id} depends on POST /resource
35
+ * 3. PUT /resource/{id} depends on POST /resource
36
+ * 4. DELETE /resource/{id} depends on POST /resource
37
+ * 5. Tests in same category (same path prefix) maintain order
38
+ *
39
+ * @param tests - Array of test cases
40
+ * @param endpoints - Array of parsed endpoints
41
+ * @returns Dependency map
42
+ */
43
+ export declare function detectHeuristicDependencies(tests: TestCase[], _endpoints: ParsedEndpoint[]): Record<string, string[]>;
44
+ /**
45
+ * Topologically sorts tests based on dependencies
46
+ *
47
+ * @param tests - Array of tests
48
+ * @param dependencies - Dependency map
49
+ * @returns Sorted tests (dependencies first)
50
+ */
51
+ export declare function sortTestsByDependencies(tests: TestCase[], dependencies: Record<string, string[]>): TestCase[];
52
+ //# sourceMappingURL=dependency-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-detector.d.ts","sourceRoot":"","sources":["../../src/ai-engine/dependency-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMtD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,QAAQ,EAAE,EACjB,SAAS,EAAE,cAAc,EAAE,EAC3B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CA+BnC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,cAAc,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAuD1B;AAsFD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACrC,QAAQ,EAAE,CA+CZ"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Dependency Detector - Automatic test dependency detection
3
+ *
4
+ * Automatically detects dependencies between tests using heuristics and optionally AI.
5
+ * Identifies which tests must run before others based on resource creation,
6
+ * authentication requirements, and endpoint relationships.
7
+ *
8
+ * @module ai-engine/dependency-detector
9
+ */
10
+ import { createLogger } from '../utils/logger.js';
11
+ import { callLLM } from '../llm/ai-client.js';
12
+ const log = createLogger('dependency-detector');
13
+ /**
14
+ * Detects dependencies between tests automatically
15
+ *
16
+ * Uses heuristic rules first, then optionally AI for complex cases
17
+ *
18
+ * @param tests - Array of test cases
19
+ * @param endpoints - Array of parsed endpoints
20
+ * @param aiConfig - AI configuration
21
+ * @returns Dependency map (testId -> array of testIds it depends on)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const deps = await detectDependencies(tests, endpoints, aiConfig);
26
+ * // Returns: { "get-user": ["login"], "update-user": ["login", "get-user"] }
27
+ * ```
28
+ */
29
+ export async function detectDependencies(tests, endpoints, aiConfig) {
30
+ log.info('Detecting test dependencies', {
31
+ testCount: tests.length,
32
+ aiLevel: aiConfig.level
33
+ });
34
+ // Always use heuristic detection (free, fast, reliable)
35
+ const heuristicDeps = detectHeuristicDependencies(tests, endpoints);
36
+ log.info('Heuristic dependencies detected', {
37
+ count: Object.keys(heuristicDeps).length
38
+ });
39
+ // If AI capabilities enabled, enhance with AI detection
40
+ if (aiConfig.capabilities.autoDependencies && aiConfig.level !== 'off') {
41
+ try {
42
+ const aiDeps = await detectAIDependencies(tests, endpoints, aiConfig);
43
+ log.info('AI dependencies detected', {
44
+ count: Object.keys(aiDeps).length
45
+ });
46
+ // Merge: heuristic takes precedence (more reliable)
47
+ return { ...aiDeps, ...heuristicDeps };
48
+ }
49
+ catch (error) {
50
+ log.warn('AI dependency detection failed, using heuristics only', {
51
+ error: error instanceof Error ? error.message : String(error)
52
+ });
53
+ }
54
+ }
55
+ return heuristicDeps;
56
+ }
57
+ /**
58
+ * Detects dependencies using heuristic rules (no AI)
59
+ *
60
+ * Rules:
61
+ * 1. All protected endpoints depend on login/auth endpoint
62
+ * 2. GET /resource/{id} depends on POST /resource
63
+ * 3. PUT /resource/{id} depends on POST /resource
64
+ * 4. DELETE /resource/{id} depends on POST /resource
65
+ * 5. Tests in same category (same path prefix) maintain order
66
+ *
67
+ * @param tests - Array of test cases
68
+ * @param endpoints - Array of parsed endpoints
69
+ * @returns Dependency map
70
+ */
71
+ export function detectHeuristicDependencies(tests, _endpoints) {
72
+ const deps = {};
73
+ // Find login/auth test (POST to /login, /auth, /token, /oauth/token, etc.)
74
+ const authTest = tests.find(t => t.method === 'POST' &&
75
+ t.category === 'happy-path' &&
76
+ (t.path.includes('login') ||
77
+ t.path.includes('auth') ||
78
+ t.path.includes('token') ||
79
+ t.path.includes('oauth')));
80
+ // Rule 1: Protected endpoints depend on auth
81
+ if (authTest) {
82
+ for (const test of tests) {
83
+ if (test.id === authTest.id)
84
+ continue; // Skip auth test itself
85
+ if (test.requiresAuth && test.category === 'happy-path') {
86
+ deps[test.id] = deps[test.id] || [];
87
+ if (!deps[test.id].includes(authTest.id)) {
88
+ deps[test.id].push(authTest.id);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ // Rules 2-4: Resource CRUD dependencies
94
+ for (const test of tests) {
95
+ // Only apply to happy-path tests
96
+ if (test.category !== 'happy-path')
97
+ continue;
98
+ // Extract resource path (e.g., /users/{id} -> /users)
99
+ const resourcePath = extractResourcePath(test.path);
100
+ if (!resourcePath)
101
+ continue;
102
+ // Find creation test (POST to resource)
103
+ const createTest = tests.find(t => t.method === 'POST' &&
104
+ t.category === 'happy-path' &&
105
+ t.path === resourcePath &&
106
+ t.id !== test.id);
107
+ if (!createTest)
108
+ continue;
109
+ // If test is GET/PUT/DELETE on resource/{id}, depend on POST
110
+ if (test.path.includes('{') && (test.method === 'GET' || test.method === 'PUT' || test.method === 'DELETE')) {
111
+ deps[test.id] = deps[test.id] || [];
112
+ if (!deps[test.id].includes(createTest.id)) {
113
+ deps[test.id].push(createTest.id);
114
+ }
115
+ }
116
+ }
117
+ return deps;
118
+ }
119
+ /**
120
+ * Detects dependencies using AI (complex cases)
121
+ *
122
+ * @param tests - Array of test cases
123
+ * @param endpoints - Array of parsed endpoints
124
+ * @param aiConfig - AI configuration
125
+ * @returns Dependency map
126
+ */
127
+ async function detectAIDependencies(tests, _endpoints, aiConfig) {
128
+ // Prepare test summary for AI
129
+ const testSummary = tests.map(t => ({
130
+ id: t.id,
131
+ method: t.method,
132
+ path: t.path,
133
+ category: t.category,
134
+ requiresAuth: t.requiresAuth
135
+ }));
136
+ const prompt = `Analyze these API test cases and identify dependencies.
137
+
138
+ TESTS:
139
+ ${JSON.stringify(testSummary, null, 2)}
140
+
141
+ RULES:
142
+ 1. Test B depends on Test A if B needs data created by A
143
+ 2. Protected endpoints need authentication first
144
+ 3. Update/Delete operations need resource creation first
145
+ 4. Consider logical flow (login -> profile -> update-profile)
146
+
147
+ Return ONLY JSON in this format:
148
+ {
149
+ "dependencies": {
150
+ "test-id": ["dependency-1", "dependency-2"],
151
+ ...
152
+ }
153
+ }
154
+
155
+ Respond with JSON only, no markdown.`;
156
+ const result = await callLLM(prompt, aiConfig.llm);
157
+ if (!result.success || !result.text) {
158
+ return {};
159
+ }
160
+ try {
161
+ // Parse AI response
162
+ const text = result.text.trim();
163
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
164
+ if (!jsonMatch)
165
+ return {};
166
+ const parsed = JSON.parse(jsonMatch[0]);
167
+ return parsed.dependencies || {};
168
+ }
169
+ catch (error) {
170
+ log.warn('Failed to parse AI dependencies response', {
171
+ error: error instanceof Error ? error.message : String(error)
172
+ });
173
+ return {};
174
+ }
175
+ }
176
+ /**
177
+ * Extracts resource path from an endpoint path
178
+ *
179
+ * @param path - Endpoint path (e.g., /users/{id}, /api/v1/products/{productId})
180
+ * @returns Resource path (e.g., /users, /api/v1/products) or undefined
181
+ *
182
+ * @example
183
+ * extractResourcePath('/users/{id}') // '/users'
184
+ * extractResourcePath('/api/products/{productId}/reviews') // '/api/products'
185
+ */
186
+ function extractResourcePath(path) {
187
+ // Remove path parameters
188
+ const parts = path.split('/').filter(p => p && !p.startsWith('{'));
189
+ if (parts.length === 0)
190
+ return undefined;
191
+ // Reconstruct path without parameters
192
+ return '/' + parts.join('/');
193
+ }
194
+ /**
195
+ * Topologically sorts tests based on dependencies
196
+ *
197
+ * @param tests - Array of tests
198
+ * @param dependencies - Dependency map
199
+ * @returns Sorted tests (dependencies first)
200
+ */
201
+ export function sortTestsByDependencies(tests, dependencies) {
202
+ const sorted = [];
203
+ const visited = new Set();
204
+ const visiting = new Set();
205
+ // Create test map for quick lookup
206
+ const testMap = new Map(tests.map(t => [t.id, t]));
207
+ const visit = (testId) => {
208
+ if (visited.has(testId))
209
+ return;
210
+ if (visiting.has(testId)) {
211
+ log.warn('Circular dependency detected', { testId });
212
+ return;
213
+ }
214
+ visiting.add(testId);
215
+ // Visit dependencies first
216
+ const deps = dependencies[testId] || [];
217
+ for (const depId of deps) {
218
+ if (testMap.has(depId)) {
219
+ visit(depId);
220
+ }
221
+ }
222
+ visiting.delete(testId);
223
+ visited.add(testId);
224
+ const test = testMap.get(testId);
225
+ if (test) {
226
+ sorted.push(test);
227
+ }
228
+ };
229
+ // Visit all tests
230
+ for (const test of tests) {
231
+ visit(test.id);
232
+ }
233
+ // Add any tests not in dependency graph
234
+ for (const test of tests) {
235
+ if (!visited.has(test.id)) {
236
+ sorted.push(test);
237
+ }
238
+ }
239
+ return sorted;
240
+ }
241
+ //# sourceMappingURL=dependency-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-detector.js","sourceRoot":"","sources":["../../src/ai-engine/dependency-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Edge Case Suggester - Domain-specific edge cases
3
+ *
4
+ * Suggests edge cases based on API domain knowledge beyond boundary value analysis.
5
+ * For example: payment APIs need duplicate transaction tests, booking APIs need
6
+ * double-booking tests.
7
+ *
8
+ * @module ai-engine/edge-case-suggester
9
+ */
10
+ import type { TestCase, ParsedEndpoint } from '../types/index.js';
11
+ import type { AIConfig } from '../types/ai-config.js';
12
+ import type { APIContext } from '../analyzers/context-analyzer.js';
13
+ /**
14
+ * Edge case suggestion
15
+ */
16
+ export interface EdgeCaseSuggestion {
17
+ /** Suggested test case ID */
18
+ id: string;
19
+ /** Test name */
20
+ name: string;
21
+ /** Description of the edge case */
22
+ description: string;
23
+ /** Endpoint method */
24
+ method: string;
25
+ /** Endpoint path */
26
+ path: string;
27
+ /** Category */
28
+ category: 'edge-case';
29
+ /** Expected status code */
30
+ expectedStatus: number;
31
+ /** Test data suggestions */
32
+ dataSuggestion: string;
33
+ /** Reason why this edge case is important */
34
+ rationale: string;
35
+ }
36
+ /**
37
+ * Suggests domain-specific edge cases
38
+ *
39
+ * @param endpoints - Array of parsed endpoints
40
+ * @param apiContext - API context
41
+ * @param aiConfig - AI configuration
42
+ * @returns Array of edge case suggestions
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const suggestions = await suggestDomainEdgeCases(endpoints, { domain: 'banking' }, config);
47
+ * // Returns suggestions like:
48
+ * // - Negative amount transfer
49
+ * // - Transfer to same account
50
+ * // - Insufficient balance
51
+ * ```
52
+ */
53
+ export declare function suggestDomainEdgeCases(endpoints: ParsedEndpoint[], apiContext: APIContext, aiConfig: AIConfig): Promise<EdgeCaseSuggestion[]>;
54
+ /**
55
+ * Converts edge case suggestions to actual test cases
56
+ *
57
+ * Note: This generates test TEMPLATES that need data populated
58
+ *
59
+ * @param suggestions - Edge case suggestions
60
+ * @returns Test cases (with placeholder data)
61
+ */
62
+ export declare function suggestionsToTests(suggestions: EdgeCaseSuggestion[]): TestCase[];
63
+ //# sourceMappingURL=edge-case-suggester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-case-suggester.d.ts","sourceRoot":"","sources":["../../src/ai-engine/edge-case-suggester.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAMnE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,QAAQ,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,cAAc,EAAE,EAC3B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAmC/B;AAmFD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAmChF"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Edge Case Suggester - Domain-specific edge cases
3
+ *
4
+ * Suggests edge cases based on API domain knowledge beyond boundary value analysis.
5
+ * For example: payment APIs need duplicate transaction tests, booking APIs need
6
+ * double-booking tests.
7
+ *
8
+ * @module ai-engine/edge-case-suggester
9
+ */
10
+ import { createLogger } from '../utils/logger.js';
11
+ import { callLLM } from '../llm/ai-client.js';
12
+ const log = createLogger('edge-case-suggester');
13
+ /**
14
+ * Suggests domain-specific edge cases
15
+ *
16
+ * @param endpoints - Array of parsed endpoints
17
+ * @param apiContext - API context
18
+ * @param aiConfig - AI configuration
19
+ * @returns Array of edge case suggestions
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const suggestions = await suggestDomainEdgeCases(endpoints, { domain: 'banking' }, config);
24
+ * // Returns suggestions like:
25
+ * // - Negative amount transfer
26
+ * // - Transfer to same account
27
+ * // - Insufficient balance
28
+ * ```
29
+ */
30
+ export async function suggestDomainEdgeCases(endpoints, apiContext, aiConfig) {
31
+ // Check if capability is enabled (don't require 'advanced' level)
32
+ if (!aiConfig.capabilities.domainEdgeCases) {
33
+ log.info('Domain edge cases capability disabled');
34
+ return [];
35
+ }
36
+ // Validate API context has necessary fields
37
+ if (!apiContext.domain && !apiContext.type) {
38
+ log.warn('APIContext missing domain/type, cannot suggest edge cases', { apiContext });
39
+ return [];
40
+ }
41
+ // Use domain or fall back to type
42
+ const domain = apiContext.domain || apiContext.type || 'unknown';
43
+ const industry = apiContext.industry || 'unknown';
44
+ const entityTypes = apiContext.entityTypes || [];
45
+ log.info('Suggesting domain-specific edge cases', {
46
+ domain,
47
+ industry,
48
+ entityTypes: entityTypes.length,
49
+ endpointCount: endpoints.length
50
+ });
51
+ try {
52
+ const suggestions = await generateAIEdgeCases(endpoints, apiContext, aiConfig);
53
+ log.info('Domain edge cases suggested', { count: suggestions.length });
54
+ return suggestions;
55
+ }
56
+ catch (error) {
57
+ log.warn('AI edge case suggestion failed', {
58
+ error: error instanceof Error ? error.message : String(error)
59
+ });
60
+ return [];
61
+ }
62
+ }
63
+ /**
64
+ * Generates edge case suggestions using AI
65
+ */
66
+ async function generateAIEdgeCases(endpoints, apiContext, aiConfig) {
67
+ // Prepare endpoint summary
68
+ const endpointSummary = endpoints.slice(0, 20).map(e => ({
69
+ method: e.method,
70
+ path: e.path,
71
+ description: e.operation?.summary || e.operation?.description
72
+ }));
73
+ const prompt = `Suggest domain-specific edge cases for this ${apiContext.domain || 'API'}.
74
+
75
+ API CONTEXT:
76
+ - Domain: ${apiContext.domain || 'unknown'}
77
+ - Industry: ${apiContext.industry || 'unknown'}
78
+ - Entity Types: ${apiContext.entityTypes?.join(', ') || 'unknown'}
79
+
80
+ ENDPOINTS:
81
+ ${JSON.stringify(endpointSummary, null, 2)}
82
+
83
+ INSTRUCTIONS:
84
+ Based on the domain, suggest edge cases that are SPECIFIC to this industry.
85
+
86
+ Examples by domain:
87
+ - Banking: negative amounts, duplicate transfers, insufficient balance
88
+ - E-commerce: out of stock, invalid promo codes, cart expiration
89
+ - Healthcare: duplicate prescriptions, medication conflicts, invalid insurance
90
+ - Booking: double booking, past dates, cancellation policies
91
+
92
+ Generate 5-10 domain-specific edge cases.
93
+
94
+ Return JSON array:
95
+ [
96
+ {
97
+ "id": "test-id",
98
+ "name": "Test name",
99
+ "description": "What this tests",
100
+ "method": "POST",
101
+ "path": "/endpoint",
102
+ "expectedStatus": 400,
103
+ "dataSuggestion": "What data to use",
104
+ "rationale": "Why this is important for ${apiContext.domain}"
105
+ }
106
+ ]
107
+
108
+ Respond with JSON array only.`;
109
+ const result = await callLLM(prompt, {
110
+ ...aiConfig.llm,
111
+ maxTokens: 2048
112
+ });
113
+ if (!result.success || !result.text) {
114
+ return [];
115
+ }
116
+ try {
117
+ const text = result.text.trim();
118
+ const jsonMatch = text.match(/\[[\s\S]*?\]/);
119
+ if (!jsonMatch)
120
+ return [];
121
+ const suggestions = JSON.parse(jsonMatch[0]);
122
+ return suggestions.map((s) => ({
123
+ ...s,
124
+ category: 'edge-case'
125
+ })).filter((s) => s.id && s.name && s.method && s.path);
126
+ }
127
+ catch (error) {
128
+ log.warn('Failed to parse AI edge case suggestions', {
129
+ error: error instanceof Error ? error.message : String(error)
130
+ });
131
+ return [];
132
+ }
133
+ }
134
+ /**
135
+ * Converts edge case suggestions to actual test cases
136
+ *
137
+ * Note: This generates test TEMPLATES that need data populated
138
+ *
139
+ * @param suggestions - Edge case suggestions
140
+ * @returns Test cases (with placeholder data)
141
+ */
142
+ export function suggestionsToTests(suggestions) {
143
+ // Validate input
144
+ if (!suggestions || !Array.isArray(suggestions) || suggestions.length === 0) {
145
+ log.debug('No suggestions to convert to tests');
146
+ return [];
147
+ }
148
+ // Map and filter invalid suggestions
149
+ return suggestions
150
+ .map(s => ({
151
+ id: s.id,
152
+ name: s.name,
153
+ description: s.description,
154
+ category: s.category,
155
+ method: s.method, // Cast from string to HttpMethod
156
+ path: s.path,
157
+ pathParams: {},
158
+ queryParams: {},
159
+ headers: {},
160
+ body: undefined, // Need to populate based on dataSuggestion
161
+ expectedStatus: s.expectedStatus,
162
+ validateSchema: false, // Edge cases may not match schema
163
+ _aiSuggestion: {
164
+ dataSuggestion: s.dataSuggestion,
165
+ rationale: s.rationale
166
+ }
167
+ }))
168
+ .filter(test => {
169
+ // Filter out invalid tests (missing required fields)
170
+ const isValid = test.id && test.name && test.method && test.path;
171
+ if (!isValid) {
172
+ log.warn('Filtering out invalid AI suggestion', { test });
173
+ }
174
+ return isValid;
175
+ });
176
+ }
177
+ //# sourceMappingURL=edge-case-suggester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-case-suggester.js","sourceRoot":"","sources":["../../src/ai-engine/edge-case-suggester.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * AI Engine - AI-powered test generation modules
3
+ *
4
+ * Central export for all AI-powered test generation capabilities
5
+ *
6
+ * @module ai-engine
7
+ */
8
+ export * from './dependency-detector.js';
9
+ export * from './dataflow-detector.js';
10
+ export * from './context-data-generator.js';
11
+ export * from './assertion-generator.js';
12
+ export * from './edge-case-suggester.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * AI Engine - AI-powered test generation modules
3
+ *
4
+ * Central export for all AI-powered test generation capabilities
5
+ *
6
+ * @module ai-engine
7
+ */
8
+ export * from './dependency-detector.js';
9
+ export * from './dataflow-detector.js';
10
+ export * from './context-data-generator.js';
11
+ export * from './assertion-generator.js';
12
+ export * from './edge-case-suggester.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai-engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * AI-Powered Failure Analyzer
3
+ *
4
+ * Takes structured failure data and uses LLM to generate:
5
+ * - Human-readable summary
6
+ * - Actionable recommendations
7
+ * - Pattern detection
8
+ * - Critical issues identification
9
+ *
10
+ * @module analyzers/ai-failure-analyzer
11
+ */
12
+ import type { FailureAnalysisResult } from './failure-analyzer.js';
13
+ export interface AIAnalysisResult {
14
+ summary: string;
15
+ recommendations: Array<{
16
+ issue: string;
17
+ fix: string;
18
+ priority?: 'critical' | 'high' | 'medium' | 'low';
19
+ autoRepairSuggestion?: string;
20
+ }>;
21
+ patterns?: Array<{
22
+ pattern: string;
23
+ occurrences: number;
24
+ description: string;
25
+ impact: 'critical' | 'high' | 'medium' | 'low';
26
+ }>;
27
+ errorExplanations?: Record<string, string>;
28
+ criticalIssues?: Array<{
29
+ title: string;
30
+ description: string;
31
+ affectedEndpoints: string[];
32
+ }>;
33
+ }
34
+ /**
35
+ * Analyzes failures using AI to generate actionable insights
36
+ *
37
+ * @param failureAnalysis - Structured failure analysis from heuristic analyzer
38
+ * @returns AI-generated insights and recommendations
39
+ */
40
+ export declare function analyzeFailuresWithAI(failureAnalysis: FailureAnalysisResult): Promise<AIAnalysisResult>;
41
+ //# sourceMappingURL=ai-failure-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-failure-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/ai-failure-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAKnE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,KAAK,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAClD,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KAChD,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;CACJ;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,qBAAqB,GACrC,OAAO,CAAC,gBAAgB,CAAC,CAuC3B"}