@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,81 @@
1
+ /**
2
+ * Report Service - Test result reporting and formatting
3
+ *
4
+ * Centralizes all test result reporting including:
5
+ * - Markdown generation
6
+ * - HTML generation
7
+ * - JSON formatting
8
+ * - Summary statistics
9
+ *
10
+ * @module mcp/services/report-service
11
+ */
12
+ import type { TestResult } from '../../types/index.js';
13
+ /**
14
+ * Options for HTML report generation
15
+ */
16
+ export interface HtmlReportOptions {
17
+ apiName?: string;
18
+ title?: string;
19
+ includeFullDetails?: boolean;
20
+ includeCharts?: boolean;
21
+ theme?: 'light' | 'dark';
22
+ aiAnalysis?: any;
23
+ coverage?: any;
24
+ sourceComparison?: any;
25
+ failureDiscrepancyCorrelation?: any;
26
+ }
27
+ /**
28
+ * Service for test result reporting
29
+ */
30
+ export declare class ReportService {
31
+ /**
32
+ * Generates a Markdown report from test results
33
+ *
34
+ * @param results - Test results to report
35
+ * @returns Markdown formatted report
36
+ */
37
+ generateMarkdown(results: TestResult[]): string;
38
+ /**
39
+ * Generates an HTML report from test results
40
+ *
41
+ * @param results - Test results to report
42
+ * @param options - HTML generation options
43
+ * @returns HTML formatted report
44
+ */
45
+ generateHTML(results: TestResult[], options?: HtmlReportOptions): string;
46
+ /**
47
+ * Generates a JSON report from test results
48
+ *
49
+ * @param results - Test results to report
50
+ * @returns JSON formatted report
51
+ */
52
+ generateJSON(results: TestResult[]): string;
53
+ /**
54
+ * Calculates summary statistics from test results
55
+ *
56
+ * @param results - Test results to summarize
57
+ * @returns Summary object
58
+ */
59
+ calculateSummary(results: TestResult[]): {
60
+ total: number;
61
+ passed: number;
62
+ failed: number;
63
+ skipped: number;
64
+ passRate: string;
65
+ duration: number;
66
+ avgResponseTime: number;
67
+ byCategory: Record<string, {
68
+ passed: number;
69
+ failed: number;
70
+ total: number;
71
+ }>;
72
+ };
73
+ /**
74
+ * Groups test results by category
75
+ *
76
+ * @param results - Test results to group
77
+ * @returns Results grouped by category
78
+ */
79
+ private groupByCategory;
80
+ }
81
+ //# sourceMappingURL=report-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/report-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,6BAA6B,CAAC,EAAE,GAAG,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAgD/C;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAuDxE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IA2B3C;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/E;IAwCD;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAaxB"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Report Service - Test result reporting and formatting
3
+ *
4
+ * Centralizes all test result reporting including:
5
+ * - Markdown generation
6
+ * - HTML generation
7
+ * - JSON formatting
8
+ * - Summary statistics
9
+ *
10
+ * @module mcp/services/report-service
11
+ */
12
+ import { generateProfessionalHtmlReport } from '../../reporters/html-report-generator.js';
13
+ import { createLogger } from '../../utils/logger.js';
14
+ const log = createLogger('report-service');
15
+ /**
16
+ * Service for test result reporting
17
+ */
18
+ export class ReportService {
19
+ /**
20
+ * Generates a Markdown report from test results
21
+ *
22
+ * @param results - Test results to report
23
+ * @returns Markdown formatted report
24
+ */
25
+ generateMarkdown(results) {
26
+ log.info('Generating Markdown report', { testCount: results.length });
27
+ const passed = results.filter(r => r.status === 'passed').length;
28
+ const failed = results.filter(r => r.status === 'failed').length;
29
+ const total = results.length;
30
+ const passRate = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
31
+ const lines = [];
32
+ // Header
33
+ lines.push('# Test Results\n');
34
+ lines.push(`**Total:** ${total} | **Passed:** ${passed} | **Failed:** ${failed} | **Pass Rate:** ${passRate}%\n`);
35
+ // Results by category
36
+ const byCategory = this.groupByCategory(results);
37
+ if (Object.keys(byCategory).length > 0) {
38
+ lines.push('## Results by Category\n');
39
+ for (const [category, categoryResults] of Object.entries(byCategory)) {
40
+ const catPassed = categoryResults.filter(r => r.status === 'passed').length;
41
+ const catTotal = categoryResults.length;
42
+ lines.push(`- **${category}**: ${catPassed}/${catTotal} passed\n`);
43
+ }
44
+ lines.push('');
45
+ }
46
+ // Failed tests detail
47
+ const failedTests = results.filter(r => r.status === 'failed');
48
+ if (failedTests.length > 0) {
49
+ lines.push('## Failed Tests\n');
50
+ for (const result of failedTests) {
51
+ lines.push(`### ${result.testCase.name}\n`);
52
+ lines.push(`- **Endpoint:** \`${result.testCase.method} ${result.testCase.path}\`\n`);
53
+ lines.push(`- **Expected Status:** ${result.testCase.expectedStatus}\n`);
54
+ lines.push(`- **Actual Status:** ${result.actualStatus || 'N/A'}\n`);
55
+ if (result.error) {
56
+ lines.push(`- **Error:** ${result.error}\n`);
57
+ }
58
+ lines.push('');
59
+ }
60
+ }
61
+ const markdown = lines.join('');
62
+ log.info('Markdown report generated', { length: markdown.length });
63
+ return markdown;
64
+ }
65
+ /**
66
+ * Generates an HTML report from test results
67
+ *
68
+ * @param results - Test results to report
69
+ * @param options - HTML generation options
70
+ * @returns HTML formatted report
71
+ */
72
+ generateHTML(results, options) {
73
+ log.info('Generating HTML report', {
74
+ testCount: results.length,
75
+ options
76
+ });
77
+ try {
78
+ const summary = this.calculateSummary(results);
79
+ const byCategory = this.groupByCategory(results);
80
+ const byCategoryStats = Object.entries(byCategory).reduce((acc, [cat, catResults]) => {
81
+ acc[cat] = {
82
+ passed: catResults.filter(r => r.status === 'passed').length,
83
+ failed: catResults.filter(r => r.status === 'failed').length,
84
+ total: catResults.length
85
+ };
86
+ return acc;
87
+ }, {});
88
+ // Build ReportData object
89
+ const reportData = {
90
+ ...(options?.apiName && { apiName: options.apiName }),
91
+ summary,
92
+ allTests: results.map(r => ({
93
+ id: r.testCase.id,
94
+ name: r.testCase.name,
95
+ category: r.testCase.category,
96
+ status: r.status,
97
+ method: r.testCase.method,
98
+ path: r.testCase.path,
99
+ endpoint: `${r.testCase.method} ${r.testCase.path}`,
100
+ expectedStatus: r.testCase.expectedStatus,
101
+ actualStatus: r.actualStatus,
102
+ error: r.error,
103
+ duration: r.responseTime
104
+ })),
105
+ byCategory: byCategoryStats,
106
+ byEndpoint: {},
107
+ environment: 'Test',
108
+ timestamp: new Date().toISOString(),
109
+ ...(options?.aiAnalysis && { aiAnalysis: options.aiAnalysis }),
110
+ ...(options?.coverage && { coverage: options.coverage }),
111
+ ...(options?.sourceComparison && { sourceComparison: options.sourceComparison }),
112
+ ...(options?.failureDiscrepancyCorrelation && { failureDiscrepancyCorrelation: options.failureDiscrepancyCorrelation })
113
+ };
114
+ const html = generateProfessionalHtmlReport(reportData);
115
+ log.info('HTML report generated', { length: html.length });
116
+ return html;
117
+ }
118
+ catch (error) {
119
+ log.error('HTML report generation failed', { error });
120
+ throw new Error(`HTML report generation failed: ${error}`);
121
+ }
122
+ }
123
+ /**
124
+ * Generates a JSON report from test results
125
+ *
126
+ * @param results - Test results to report
127
+ * @returns JSON formatted report
128
+ */
129
+ generateJSON(results) {
130
+ log.info('Generating JSON report', { testCount: results.length });
131
+ const summary = this.calculateSummary(results);
132
+ const report = {
133
+ summary,
134
+ results: results.map(r => ({
135
+ id: r.testCase.id,
136
+ name: r.testCase.name,
137
+ status: r.status,
138
+ method: r.testCase.method,
139
+ path: r.testCase.path,
140
+ expectedStatus: r.testCase.expectedStatus,
141
+ actualStatus: r.actualStatus,
142
+ responseTime: r.responseTime,
143
+ error: r.error,
144
+ category: r.testCase.category
145
+ }))
146
+ };
147
+ const json = JSON.stringify(report, null, 2);
148
+ log.info('JSON report generated', { length: json.length });
149
+ return json;
150
+ }
151
+ /**
152
+ * Calculates summary statistics from test results
153
+ *
154
+ * @param results - Test results to summarize
155
+ * @returns Summary object
156
+ */
157
+ calculateSummary(results) {
158
+ const total = results.length;
159
+ const passed = results.filter(r => r.status === 'passed').length;
160
+ const failed = results.filter(r => r.status === 'failed').length;
161
+ const skipped = results.filter(r => r.status === 'skipped').length;
162
+ const passRate = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
163
+ const responseTimes = results
164
+ .filter(r => r.responseTime !== undefined)
165
+ .map(r => r.responseTime);
166
+ const totalDuration = responseTimes.length > 0
167
+ ? responseTimes.reduce((a, b) => a + b, 0)
168
+ : 0;
169
+ const avgResponseTime = responseTimes.length > 0
170
+ ? totalDuration / responseTimes.length
171
+ : 0;
172
+ const byCategory = this.groupByCategory(results);
173
+ const byCategorySummary = {};
174
+ for (const [category, categoryResults] of Object.entries(byCategory)) {
175
+ byCategorySummary[category] = {
176
+ passed: categoryResults.filter(r => r.status === 'passed').length,
177
+ failed: categoryResults.filter(r => r.status === 'failed').length,
178
+ total: categoryResults.length
179
+ };
180
+ }
181
+ return {
182
+ total,
183
+ passed,
184
+ failed,
185
+ skipped,
186
+ passRate,
187
+ duration: totalDuration,
188
+ avgResponseTime,
189
+ byCategory: byCategorySummary
190
+ };
191
+ }
192
+ /**
193
+ * Groups test results by category
194
+ *
195
+ * @param results - Test results to group
196
+ * @returns Results grouped by category
197
+ */
198
+ groupByCategory(results) {
199
+ const grouped = {};
200
+ for (const result of results) {
201
+ const category = result.testCase.category;
202
+ if (!grouped[category]) {
203
+ grouped[category] = [];
204
+ }
205
+ grouped[category].push(result);
206
+ }
207
+ return grouped;
208
+ }
209
+ }
210
+ //# sourceMappingURL=report-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-service.js","sourceRoot":"","sources":["../../../src/mcp/services/report-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Spec Service - OpenAPI specification operations
3
+ *
4
+ * Centralizes all OpenAPI spec parsing, endpoint extraction,
5
+ * and authentication inference logic.
6
+ *
7
+ * @module mcp/services/spec-service
8
+ */
9
+ import type { OpenAPIV3 } from 'openapi-types';
10
+ import type { ParsedEndpoint, AuthConfig } from '../../types/index.js';
11
+ /**
12
+ * Service for OpenAPI specification operations
13
+ */
14
+ export declare class SpecService {
15
+ /**
16
+ * Parses an OpenAPI specification from a file
17
+ *
18
+ * @param specPath - Path to OpenAPI spec file (YAML or JSON)
19
+ * @returns Parsed OpenAPI document
20
+ */
21
+ parseSpec(specPath: string): Promise<OpenAPIV3.Document>;
22
+ /**
23
+ * Extracts endpoints from an OpenAPI document
24
+ *
25
+ * @param spec - OpenAPI document
26
+ * @returns Array of parsed endpoints with metadata
27
+ */
28
+ extractEndpoints(spec: OpenAPIV3.Document): Promise<ParsedEndpoint[]>;
29
+ /**
30
+ * Infers authentication configuration from OpenAPI spec
31
+ *
32
+ * @param spec - OpenAPI document
33
+ * @returns Inferred auth configuration
34
+ */
35
+ inferAuth(spec: OpenAPIV3.Document): Promise<AuthConfig>;
36
+ /**
37
+ * Discovers OpenAPI spec from a base URL
38
+ *
39
+ * Attempts to find the spec at common paths like:
40
+ * - /openapi.json
41
+ * - /swagger.json
42
+ * - /api-docs
43
+ * - etc.
44
+ *
45
+ * @param baseUrl - Base URL of the API
46
+ * @returns Path to discovered spec (temp file) or null if not found
47
+ */
48
+ discoverSpec(baseUrl: string): Promise<string | null>;
49
+ /**
50
+ * Parses spec from path or discovers from base URL
51
+ *
52
+ * @param specPath - Optional path to spec file
53
+ * @param baseUrl - Optional base URL for discovery
54
+ * @returns Parsed OpenAPI document
55
+ */
56
+ parseOrDiscoverSpec(specPath?: string, baseUrl?: string): Promise<OpenAPIV3.Document>;
57
+ }
58
+ //# sourceMappingURL=spec-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/spec-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvE;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;IAkB9D;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmB3E;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB9D;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmB3D;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;CAmB/B"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Spec Service - OpenAPI specification operations
3
+ *
4
+ * Centralizes all OpenAPI spec parsing, endpoint extraction,
5
+ * and authentication inference logic.
6
+ *
7
+ * @module mcp/services/spec-service
8
+ */
9
+ import { parseOpenAPISpec, extractEndpoints, inferAuthFromSpec } from '../../parsers/openapi-parser.js';
10
+ import { discoverOpenAPI } from '../../utils/openapi-discovery.js';
11
+ import { createLogger } from '../../utils/logger.js';
12
+ const log = createLogger('spec-service');
13
+ /**
14
+ * Service for OpenAPI specification operations
15
+ */
16
+ export class SpecService {
17
+ /**
18
+ * Parses an OpenAPI specification from a file
19
+ *
20
+ * @param specPath - Path to OpenAPI spec file (YAML or JSON)
21
+ * @returns Parsed OpenAPI document
22
+ */
23
+ async parseSpec(specPath) {
24
+ log.info('Parsing OpenAPI spec', { path: specPath });
25
+ try {
26
+ const spec = await parseOpenAPISpec(specPath);
27
+ log.info('OpenAPI spec parsed successfully', {
28
+ path: specPath,
29
+ title: spec.info?.title,
30
+ version: spec.info?.version,
31
+ paths: Object.keys(spec.paths || {}).length
32
+ });
33
+ return spec;
34
+ }
35
+ catch (error) {
36
+ log.error('Failed to parse OpenAPI spec', { path: specPath, error });
37
+ throw new Error(`Failed to parse OpenAPI spec from ${specPath}: ${error}`);
38
+ }
39
+ }
40
+ /**
41
+ * Extracts endpoints from an OpenAPI document
42
+ *
43
+ * @param spec - OpenAPI document
44
+ * @returns Array of parsed endpoints with metadata
45
+ */
46
+ async extractEndpoints(spec) {
47
+ log.info('Extracting endpoints from spec', {
48
+ title: spec.info?.title,
49
+ pathCount: Object.keys(spec.paths || {}).length
50
+ });
51
+ try {
52
+ const endpoints = extractEndpoints(spec);
53
+ log.info('Endpoints extracted successfully', {
54
+ count: endpoints.length,
55
+ methods: [...new Set(endpoints.map(e => e.method))]
56
+ });
57
+ return endpoints;
58
+ }
59
+ catch (error) {
60
+ log.error('Failed to extract endpoints', { error });
61
+ throw new Error(`Failed to extract endpoints: ${error}`);
62
+ }
63
+ }
64
+ /**
65
+ * Infers authentication configuration from OpenAPI spec
66
+ *
67
+ * @param spec - OpenAPI document
68
+ * @returns Inferred auth configuration
69
+ */
70
+ async inferAuth(spec) {
71
+ log.info('Inferring authentication from spec', {
72
+ title: spec.info?.title
73
+ });
74
+ try {
75
+ const auth = inferAuthFromSpec(spec);
76
+ log.info('Authentication inferred', {
77
+ type: auth.type,
78
+ hasToken: !!auth.token,
79
+ hasOAuth2: !!auth.oauth2
80
+ });
81
+ return auth;
82
+ }
83
+ catch (error) {
84
+ log.error('Failed to infer auth', { error });
85
+ throw new Error(`Failed to infer authentication: ${error}`);
86
+ }
87
+ }
88
+ /**
89
+ * Discovers OpenAPI spec from a base URL
90
+ *
91
+ * Attempts to find the spec at common paths like:
92
+ * - /openapi.json
93
+ * - /swagger.json
94
+ * - /api-docs
95
+ * - etc.
96
+ *
97
+ * @param baseUrl - Base URL of the API
98
+ * @returns Path to discovered spec (temp file) or null if not found
99
+ */
100
+ async discoverSpec(baseUrl) {
101
+ log.info('Discovering OpenAPI spec', { baseUrl });
102
+ try {
103
+ const specPath = await discoverOpenAPI(baseUrl);
104
+ if (specPath) {
105
+ log.info('OpenAPI spec discovered', { baseUrl, path: specPath });
106
+ }
107
+ else {
108
+ log.warn('OpenAPI spec not found', { baseUrl });
109
+ }
110
+ return specPath;
111
+ }
112
+ catch (error) {
113
+ log.error('Failed to discover OpenAPI spec', { baseUrl, error });
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Parses spec from path or discovers from base URL
119
+ *
120
+ * @param specPath - Optional path to spec file
121
+ * @param baseUrl - Optional base URL for discovery
122
+ * @returns Parsed OpenAPI document
123
+ */
124
+ async parseOrDiscoverSpec(specPath, baseUrl) {
125
+ // If spec path provided, use it
126
+ if (specPath) {
127
+ return this.parseSpec(specPath);
128
+ }
129
+ // Otherwise, try to discover from base URL
130
+ if (baseUrl) {
131
+ const discoveredPath = await this.discoverSpec(baseUrl);
132
+ if (discoveredPath) {
133
+ return this.parseSpec(discoveredPath);
134
+ }
135
+ throw new Error(`OpenAPI spec not found at ${baseUrl}. Please provide specPath explicitly.`);
136
+ }
137
+ throw new Error('Either specPath or baseUrl must be provided');
138
+ }
139
+ }
140
+ //# sourceMappingURL=spec-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-service.js","sourceRoot":"","sources":["../../../src/mcp/services/spec-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Endpoint Extractor
3
+ *
4
+ * Extracts and resolves endpoint information from OpenAPI specifications.
5
+ *
6
+ * @module parsers/endpoint-extractor
7
+ */
8
+ import type { OpenAPIV3 } from 'openapi-types';
9
+ import type { ParsedEndpoint } from '../types/index.js';
10
+ /**
11
+ * Extracts all endpoints from an OpenAPI specification
12
+ *
13
+ * @param spec - Parsed OpenAPI specification
14
+ * @returns Array of parsed endpoints with their metadata
15
+ */
16
+ export declare function extractEndpoints(spec: OpenAPIV3.Document): ParsedEndpoint[];
17
+ /**
18
+ * Extracts security schemes from an OpenAPI specification
19
+ *
20
+ * @param spec - Parsed OpenAPI specification
21
+ * @returns Map of security scheme name to security scheme object
22
+ */
23
+ export declare function extractSecuritySchemes(spec: OpenAPIV3.Document): Record<string, OpenAPIV3.SecuritySchemeObject>;
24
+ /**
25
+ * Resolves security requirements to actual security scheme objects
26
+ *
27
+ * @param security - Security requirements array from operation or global
28
+ * @param schemes - Available security schemes from spec
29
+ * @returns Array of resolved security scheme objects
30
+ */
31
+ export declare function resolveSecurityRequirements(security: OpenAPIV3.SecurityRequirementObject[] | undefined, schemes: Record<string, OpenAPIV3.SecuritySchemeObject>): OpenAPIV3.SecuritySchemeObject[];
32
+ //# sourceMappingURL=endpoint-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-extractor.d.ts","sourceRoot":"","sources":["../../src/parsers/endpoint-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMpE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,cAAc,EAAE,CAyI3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,CAAC,QAAQ,GACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,CAAC,yBAAyB,EAAE,GAAG,SAAS,EAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,GACtD,SAAS,CAAC,oBAAoB,EAAE,CAmBlC"}