@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,220 @@
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 { callLLM } from '../llm/ai-client.js';
13
+ import { createLogger } from '../utils/logger.js';
14
+ const log = createLogger('ai-failure-analyzer');
15
+ /**
16
+ * Analyzes failures using AI to generate actionable insights
17
+ *
18
+ * @param failureAnalysis - Structured failure analysis from heuristic analyzer
19
+ * @returns AI-generated insights and recommendations
20
+ */
21
+ export async function analyzeFailuresWithAI(failureAnalysis) {
22
+ log.info('Starting AI failure analysis', {
23
+ totalFailures: failureAnalysis.summary.totalFailures
24
+ });
25
+ if (failureAnalysis.summary.totalFailures === 0) {
26
+ return {
27
+ summary: 'No hay fallos que analizar. Todos los tests pasaron exitosamente.',
28
+ recommendations: []
29
+ };
30
+ }
31
+ // Build compact prompt for AI
32
+ const prompt = buildAnalysisPrompt(failureAnalysis);
33
+ try {
34
+ const result = await callLLM(prompt, {
35
+ maxTokens: 4096,
36
+ temperature: 0.3
37
+ });
38
+ if (!result.success || !result.text) {
39
+ log.warn('AI analysis failed, returning basic summary');
40
+ return buildFallbackAnalysis(failureAnalysis);
41
+ }
42
+ // Parse AI response
43
+ const aiAnalysis = parseAIResponse(result.text, failureAnalysis);
44
+ log.info('AI analysis complete', {
45
+ recommendationsCount: aiAnalysis.recommendations.length,
46
+ patternsCount: aiAnalysis.patterns?.length || 0
47
+ });
48
+ return aiAnalysis;
49
+ }
50
+ catch (error) {
51
+ log.error('AI analysis failed', { error });
52
+ return buildFallbackAnalysis(failureAnalysis);
53
+ }
54
+ }
55
+ /**
56
+ * Builds the prompt for AI analysis
57
+ */
58
+ function buildAnalysisPrompt(analysis) {
59
+ const failureSummary = {
60
+ total: analysis.summary.totalFailures,
61
+ byType: Object.entries(analysis.summary.byType)
62
+ .filter(([_, count]) => count > 0)
63
+ .map(([type, count]) => `${type}: ${count}`),
64
+ bySeverity: analysis.summary.bySeverity,
65
+ topFailures: analysis.failures.slice(0, 10).map(f => ({
66
+ test: f.testCase.name,
67
+ endpoint: `${f.request.method} ${f.request.url}`,
68
+ type: f.failureType,
69
+ expected: f.expected.status,
70
+ actual: f.actual.status,
71
+ error: f.validationErrors?.map(e => e.message).join('; ')
72
+ }))
73
+ };
74
+ return `Analiza estos fallos de tests de API y genera recomendaciones accionables.
75
+
76
+ FALLOS:
77
+ ${JSON.stringify(failureSummary, null, 2)}
78
+
79
+ Retorna SOLO JSON en este formato (sin texto adicional):
80
+ {
81
+ "summary": "Resumen ejecutivo en 2-3 oraciones explicando los problemas principales",
82
+ "recommendations": [
83
+ {
84
+ "issue": "Descripción del problema",
85
+ "fix": "Solución específica y accionable",
86
+ "priority": "critical|high|medium|low",
87
+ "autoRepairSuggestion": "Comando o código para reparar automáticamente (opcional)"
88
+ }
89
+ ],
90
+ "patterns": [
91
+ {
92
+ "pattern": "Nombre del patrón detectado",
93
+ "occurrences": número,
94
+ "description": "Explicación del patrón",
95
+ "impact": "critical|high|medium|low"
96
+ }
97
+ ],
98
+ "criticalIssues": [
99
+ {
100
+ "title": "Título del issue crítico",
101
+ "description": "Descripción detallada",
102
+ "affectedEndpoints": ["GET /endpoint1", "POST /endpoint2"]
103
+ }
104
+ ]
105
+ }
106
+
107
+ IMPORTANTE:
108
+ - El "summary" DEBE ser texto legible, NO un objeto JSON
109
+ - Prioriza recomendaciones accionables sobre análisis genérico
110
+ - Detecta patrones comunes (ej: todos los POST fallan con 401 → problema de auth)
111
+ - Sugiere fixes específicos, no solo "revisar el código"`;
112
+ }
113
+ /**
114
+ * Parses AI response into structured analysis
115
+ */
116
+ function parseAIResponse(text, fallback) {
117
+ try {
118
+ // Extract JSON from response (handle markdown code blocks)
119
+ const jsonMatch = text.match(/```(?:json)?\s*(\{[\s\S]*\})\s*```/) ||
120
+ text.match(/(\{[\s\S]*\})/);
121
+ if (!jsonMatch) {
122
+ log.warn('No JSON found in AI response, using fallback');
123
+ return buildFallbackAnalysis(fallback);
124
+ }
125
+ const parsed = JSON.parse(jsonMatch[1]);
126
+ // Validate summary is a string, not an object
127
+ if (typeof parsed.summary !== 'string') {
128
+ log.warn('AI returned object as summary, converting to string');
129
+ parsed.summary = `Se detectaron ${fallback.summary.totalFailures} fallos: ` +
130
+ `${fallback.summary.bySeverity.critical} críticos, ` +
131
+ `${fallback.summary.bySeverity.high} altos. ` +
132
+ `Los tipos más comunes son: ${Object.entries(fallback.summary.byType)
133
+ .filter(([_, count]) => count > 0)
134
+ .slice(0, 3)
135
+ .map(([type, count]) => `${type} (${count})`)
136
+ .join(', ')}.`;
137
+ }
138
+ return {
139
+ summary: parsed.summary || buildFallbackSummary(fallback),
140
+ recommendations: parsed.recommendations || [],
141
+ patterns: parsed.patterns || [],
142
+ errorExplanations: parsed.errorExplanations || {},
143
+ criticalIssues: parsed.criticalIssues || []
144
+ };
145
+ }
146
+ catch (error) {
147
+ log.error('Failed to parse AI response', { error });
148
+ return buildFallbackAnalysis(fallback);
149
+ }
150
+ }
151
+ /**
152
+ * Builds fallback analysis when AI is unavailable
153
+ */
154
+ function buildFallbackAnalysis(analysis) {
155
+ return {
156
+ summary: buildFallbackSummary(analysis),
157
+ recommendations: buildFallbackRecommendations(analysis),
158
+ patterns: [],
159
+ errorExplanations: {}
160
+ };
161
+ }
162
+ /**
163
+ * Builds fallback summary from structured data
164
+ */
165
+ function buildFallbackSummary(analysis) {
166
+ const { totalFailures, bySeverity, byType } = analysis.summary;
167
+ const topTypes = Object.entries(byType)
168
+ .filter(([_, count]) => count > 0)
169
+ .sort(([_, a], [__, b]) => b - a)
170
+ .slice(0, 3)
171
+ .map(([type, count]) => `${type} (${count})`)
172
+ .join(', ');
173
+ return `Se detectaron ${totalFailures} test${totalFailures !== 1 ? 's' : ''} fallido${totalFailures !== 1 ? 's' : ''}. ` +
174
+ `Severidad: ${bySeverity.critical} crítico${bySeverity.critical !== 1 ? 's' : ''}, ` +
175
+ `${bySeverity.high} alto${bySeverity.high !== 1 ? 's' : ''}, ` +
176
+ `${bySeverity.medium} medio${bySeverity.medium !== 1 ? 's' : ''}, ` +
177
+ `${bySeverity.low} bajo${bySeverity.low !== 1 ? 's' : ''}. ` +
178
+ `Tipos más comunes: ${topTypes}.`;
179
+ }
180
+ /**
181
+ * Builds fallback recommendations from structured data
182
+ */
183
+ function buildFallbackRecommendations(analysis) {
184
+ const recommendations = [];
185
+ const { byType } = analysis.summary;
186
+ // Auth failures
187
+ if (byType.auth_failure > 0) {
188
+ recommendations.push({
189
+ issue: `${byType.auth_failure} test${byType.auth_failure !== 1 ? 's' : ''} fallaron por autenticación`,
190
+ fix: 'Verificar que los tokens de autenticación sean válidos y no hayan expirado',
191
+ priority: 'critical'
192
+ });
193
+ }
194
+ // Status mismatches
195
+ if (byType.status_mismatch > 0) {
196
+ recommendations.push({
197
+ issue: `${byType.status_mismatch} test${byType.status_mismatch !== 1 ? 's' : ''} recibieron status code incorrecto`,
198
+ fix: 'Revisar la lógica del endpoint y validar que los códigos de estado sean correctos según el caso',
199
+ priority: 'high'
200
+ });
201
+ }
202
+ // Connection errors
203
+ if (byType.connection_error > 0) {
204
+ recommendations.push({
205
+ issue: `${byType.connection_error} test${byType.connection_error !== 1 ? 's' : ''} no pudieron conectarse al servidor`,
206
+ fix: 'Verificar que el servidor esté corriendo y accesible en la URL configurada',
207
+ priority: 'critical'
208
+ });
209
+ }
210
+ // Schema validation
211
+ if (byType.schema_validation_failed > 0) {
212
+ recommendations.push({
213
+ issue: `${byType.schema_validation_failed} test${byType.schema_validation_failed !== 1 ? 's' : ''} fallaron en validación de schema`,
214
+ fix: 'Revisar que la respuesta del API cumpla con el schema definido en OpenAPI',
215
+ priority: 'medium'
216
+ });
217
+ }
218
+ return recommendations;
219
+ }
220
+ //# sourceMappingURL=ai-failure-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-failure-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/ai-failure-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Comparison Utilities
3
+ *
4
+ * Shared utility functions for source comparison logic.
5
+ *
6
+ * @module analyzers/comparison-utils
7
+ */
8
+ /**
9
+ * Calculates priority level for a discrepancy based on endpoint importance.
10
+ *
11
+ * Uses keyword-based heuristics to determine business priority:
12
+ * - critical: auth, payment, login, checkout, order, transaction
13
+ * - high: user, account, profile, admin, subscription
14
+ * - medium: product, item, cart, search, notification
15
+ * - low: debug, test, health, metrics, deprecated
16
+ *
17
+ * @param endpoint - Endpoint path
18
+ * @param severity - Severity level
19
+ * @returns Priority level
20
+ */
21
+ export declare function calculatePriority(endpoint: string | undefined, severity: 'error' | 'warning' | 'info'): 'critical' | 'high' | 'medium' | 'low';
22
+ /**
23
+ * Creates a normalized key for endpoint comparison
24
+ *
25
+ * @param method - HTTP method
26
+ * @param path - Endpoint path
27
+ * @param normalizeParams - Whether to normalize path parameters
28
+ * @returns Normalized endpoint key
29
+ */
30
+ export declare function createEndpointKey(method: string, path: string, normalizeParams: boolean): string;
31
+ //# sourceMappingURL=comparison-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-utils.d.ts","sourceRoot":"","sources":["../../src/analyzers/comparison-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GACrC,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CA4CxC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAWhG"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Comparison Utilities
3
+ *
4
+ * Shared utility functions for source comparison logic.
5
+ *
6
+ * @module analyzers/comparison-utils
7
+ */
8
+ /**
9
+ * Calculates priority level for a discrepancy based on endpoint importance.
10
+ *
11
+ * Uses keyword-based heuristics to determine business priority:
12
+ * - critical: auth, payment, login, checkout, order, transaction
13
+ * - high: user, account, profile, admin, subscription
14
+ * - medium: product, item, cart, search, notification
15
+ * - low: debug, test, health, metrics, deprecated
16
+ *
17
+ * @param endpoint - Endpoint path
18
+ * @param severity - Severity level
19
+ * @returns Priority level
20
+ */
21
+ export function calculatePriority(endpoint, severity) {
22
+ if (!endpoint) {
23
+ if (severity === 'error')
24
+ return 'high';
25
+ if (severity === 'warning')
26
+ return 'medium';
27
+ return 'low';
28
+ }
29
+ const path = endpoint.toLowerCase();
30
+ const criticalKeywords = [
31
+ 'auth', 'login', 'signin', 'signup', 'register',
32
+ 'payment', 'checkout', 'purchase', 'buy',
33
+ 'order', 'transaction', 'transfer',
34
+ 'password', 'reset', 'verify', 'token'
35
+ ];
36
+ const highKeywords = [
37
+ 'user', 'account', 'profile', 'settings',
38
+ 'admin', 'role', 'permission',
39
+ 'subscription', 'billing', 'invoice'
40
+ ];
41
+ const mediumKeywords = [
42
+ 'product', 'item', 'catalog',
43
+ 'cart', 'wishlist',
44
+ 'search', 'filter', 'query',
45
+ 'notification', 'message', 'email'
46
+ ];
47
+ const lowKeywords = [
48
+ 'debug', 'test', 'mock',
49
+ 'health', 'ping', 'status',
50
+ 'metrics', 'analytics', 'log',
51
+ 'deprecated', 'legacy', 'old'
52
+ ];
53
+ if (criticalKeywords.some(k => path.includes(k)))
54
+ return 'critical';
55
+ if (highKeywords.some(k => path.includes(k)))
56
+ return 'high';
57
+ if (mediumKeywords.some(k => path.includes(k)))
58
+ return 'medium';
59
+ if (lowKeywords.some(k => path.includes(k)))
60
+ return 'low';
61
+ if (severity === 'error')
62
+ return 'high';
63
+ if (severity === 'warning')
64
+ return 'medium';
65
+ return 'low';
66
+ }
67
+ /**
68
+ * Creates a normalized key for endpoint comparison
69
+ *
70
+ * @param method - HTTP method
71
+ * @param path - Endpoint path
72
+ * @param normalizeParams - Whether to normalize path parameters
73
+ * @returns Normalized endpoint key
74
+ */
75
+ export function createEndpointKey(method, path, normalizeParams) {
76
+ let normalizedPath = path;
77
+ if (normalizeParams) {
78
+ // Normalize path parameters: /users/:id -> /users/{id}
79
+ normalizedPath = path.replace(/:(\w+)/g, '{$1}');
80
+ // Normalize trailing slashes
81
+ normalizedPath = normalizedPath.replace(/\/$/, '');
82
+ }
83
+ return `${method.toUpperCase()} ${normalizedPath}`;
84
+ }
85
+ //# sourceMappingURL=comparison-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-utils.js","sourceRoot":"","sources":["../../src/analyzers/comparison-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA4B,EAC5B,QAAsC;IAEtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEpC,MAAM,gBAAgB,GAAG;QACvB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU;QAC/C,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK;QACxC,OAAO,EAAE,aAAa,EAAE,UAAU;QAClC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;KACvC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU;QACxC,OAAO,EAAE,MAAM,EAAE,YAAY;QAC7B,cAAc,EAAE,SAAS,EAAE,SAAS;KACrC,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,SAAS,EAAE,MAAM,EAAE,SAAS;QAC5B,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,QAAQ,EAAE,OAAO;QAC3B,cAAc,EAAE,SAAS,EAAE,OAAO;KACnC,CAAC;IAEF,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,MAAM,EAAE,MAAM;QACvB,QAAQ,EAAE,MAAM,EAAE,QAAQ;QAC1B,SAAS,EAAE,WAAW,EAAE,KAAK;QAC7B,YAAY,EAAE,QAAQ,EAAE,KAAK;KAC9B,CAAC;IAEF,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACpE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5D,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1D,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAY,EAAE,eAAwB;IACtF,IAAI,cAAc,GAAG,IAAI,CAAC;IAE1B,IAAI,eAAe,EAAE,CAAC;QACpB,uDAAuD;QACvD,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjD,6BAA6B;QAC7B,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * API Context Analyzer
3
+ *
4
+ * Analyzes OpenAPI specifications to determine the type of API
5
+ * (banking, ecommerce, blog, internal, etc.) for contextual test generation.
6
+ *
7
+ * @module analyzers/context-analyzer
8
+ */
9
+ import type { OpenAPIV3 } from 'openapi-types';
10
+ import type { APIContext } from '../llm/data-generator-ai.js';
11
+ export type { APIContext };
12
+ /**
13
+ * Detects the type of API from the OpenAPI specification
14
+ *
15
+ * @param spec - OpenAPI specification document
16
+ * @returns API context with detected type and settings
17
+ */
18
+ export declare function detectAPIContext(spec: OpenAPIV3.Document): Promise<APIContext>;
19
+ /**
20
+ * Enriches APIContext with entity types inferred from endpoints
21
+ *
22
+ * Extracts entity names from endpoint paths (e.g., /api/users/{id} → 'users')
23
+ * to help the AI engine understand what domain entities the API deals with.
24
+ *
25
+ * @param context - Base API context to enrich
26
+ * @param endpoints - Array of parsed endpoints
27
+ * @returns Enriched API context with entityTypes populated
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const baseContext = { type: 'banking', domain: 'banking', industry: 'financial', entityTypes: [] };
32
+ * const endpoints = [{ path: '/api/accounts/{id}' }, { path: '/api/transactions' }];
33
+ * const enriched = enrichAPIContext(baseContext, endpoints);
34
+ * // enriched.entityTypes = ['accounts', 'transactions']
35
+ * ```
36
+ */
37
+ export declare function enrichAPIContext(context: APIContext, endpoints: {
38
+ path: string;
39
+ }[]): APIContext;
40
+ /**
41
+ * Infers the purpose of a specific endpoint
42
+ *
43
+ * @param path - Endpoint path
44
+ * @param method - HTTP method
45
+ * @param operation - OpenAPI operation object
46
+ * @returns Inferred purpose
47
+ */
48
+ export declare function inferEndpointPurpose(path: string, method: string, operation?: OpenAPIV3.OperationObject): string;
49
+ //# sourceMappingURL=context-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/context-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,YAAY,EAAE,UAAU,EAAE,CAAC;AAI3B;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDpF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAC5B,UAAU,CAgCZ;AAwJD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,CAAC,eAAe,GACpC,MAAM,CAsCR"}