@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,12 @@
1
+ /**
2
+ * MCP Handlers - Exports all tool handlers
3
+ *
4
+ * @module mcp/handlers
5
+ */
6
+ export { GenerateTestsHandler } from './generate-tests.js';
7
+ export { RunTestsHandler } from './run-tests.js';
8
+ export { ExportResultsHandler } from './export-results.js';
9
+ export { CompareSourcesHandler } from './compare-sources.js';
10
+ export { ExportToPostmanHandler } from './export-to-postman.js';
11
+ export { BaseToolHandler } from './base-handler.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Run Tests Handler
3
+ *
4
+ * Handles the run-tests tool which executes test suites against APIs.
5
+ *
6
+ * @module mcp/handlers/run-tests
7
+ */
8
+ import { BaseToolHandler } from './base-handler.js';
9
+ import type { ToolResponse } from './types.js';
10
+ import { SpecService } from '../services/spec-service.js';
11
+ /**
12
+ * Handler for test execution tool
13
+ */
14
+ export declare class RunTestsHandler extends BaseToolHandler {
15
+ private specService;
16
+ readonly name = "run-tests";
17
+ readonly description: string;
18
+ readonly inputSchema: {
19
+ type: string;
20
+ properties: {
21
+ specPath: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ baseUrl: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ tests: {
30
+ type: string;
31
+ description: string;
32
+ items: {
33
+ type: string;
34
+ };
35
+ };
36
+ credentials: {
37
+ type: string;
38
+ description: string;
39
+ properties: {
40
+ bearerToken: {
41
+ type: string;
42
+ description: string;
43
+ };
44
+ apiKey: {
45
+ type: string;
46
+ description: string;
47
+ };
48
+ username: {
49
+ type: string;
50
+ description: string;
51
+ };
52
+ password: {
53
+ type: string;
54
+ description: string;
55
+ };
56
+ clientId: {
57
+ type: string;
58
+ description: string;
59
+ };
60
+ clientSecret: {
61
+ type: string;
62
+ description: string;
63
+ };
64
+ };
65
+ };
66
+ authToken: {
67
+ type: string;
68
+ description: string;
69
+ };
70
+ testData: {
71
+ type: string;
72
+ description: string;
73
+ additionalProperties: boolean;
74
+ };
75
+ parallel: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ timeout: {
80
+ type: string;
81
+ description: string;
82
+ };
83
+ };
84
+ required: string[];
85
+ };
86
+ constructor(specService: SpecService);
87
+ handle(args: unknown): Promise<ToolResponse>;
88
+ }
89
+ //# sourceMappingURL=run-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/run-tests.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;IA+FhD,OAAO,CAAC,WAAW;IA9FrB,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,SASuD;IAE3E,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+ElB;gBAGQ,WAAW,EAAE,WAAW;IAK5B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;CAuEnD"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Run Tests Handler
3
+ *
4
+ * Handles the run-tests tool which executes test suites against APIs.
5
+ *
6
+ * @module mcp/handlers/run-tests
7
+ */
8
+ import { BaseToolHandler } from './base-handler.js';
9
+ import { TestRunner } from '../../executor/test-runner.js';
10
+ /**
11
+ * Handler for test execution tool
12
+ */
13
+ export class RunTestsHandler extends BaseToolHandler {
14
+ specService;
15
+ name = 'run-tests';
16
+ description = 'STEP 2 of 3 — Execute test cases against a live API and return pass/fail results. ' +
17
+ 'Receives the "tests" array from generate-tests and runs each test case against baseUrl. ' +
18
+ 'Happy-path tests run sequentially first; if a login endpoint returns a token, it is ' +
19
+ 'automatically captured and injected as Bearer token for all subsequent protected endpoints — ' +
20
+ 'no manual token handling needed. ' +
21
+ 'For APIs that require credentials, provide the "credentials" object: ' +
22
+ 'use bearerToken for a pre-existing JWT, apiKey for API key auth, ' +
23
+ 'username+password for Basic/form login, or clientId+clientSecret for OAuth2. ' +
24
+ 'The auth type is auto-detected from the OpenAPI spec security schemes.';
25
+ inputSchema = {
26
+ type: 'object',
27
+ properties: {
28
+ specPath: {
29
+ type: 'string',
30
+ description: 'Path to the OpenAPI spec file (YAML or JSON). ' +
31
+ 'Required for schema validation and OAuth2 token URL auto-discovery. ' +
32
+ 'Example: "/project/api/openapi.yaml".'
33
+ },
34
+ baseUrl: {
35
+ type: 'string',
36
+ description: 'Base URL of the live API to test. ' +
37
+ 'Example: "https://api.example.com" or "http://localhost:3000". ' +
38
+ 'All test requests are sent to this URL.'
39
+ },
40
+ tests: {
41
+ type: 'array',
42
+ description: 'Array of test cases to execute — pass the "tests" value returned by generate-tests directly here.',
43
+ items: { type: 'object' }
44
+ },
45
+ credentials: {
46
+ type: 'object',
47
+ description: 'API credentials for authenticated endpoints. ' +
48
+ 'Provide only the fields that match your auth type — the tool auto-detects which to use. ' +
49
+ 'bearerToken: use when you already have a JWT/Bearer token. ' +
50
+ 'apiKey: use for API key auth (sent as X-API-Key header). ' +
51
+ 'username + password: use for Basic auth or form-based login. ' +
52
+ 'clientId + clientSecret: use for OAuth2 client credentials flow. ' +
53
+ 'Example for OAuth2: { "clientId": "myapp", "clientSecret": "s3cr3t" }.',
54
+ properties: {
55
+ bearerToken: {
56
+ type: 'string',
57
+ description: 'Pre-existing Bearer/JWT token to use for the Authorization header'
58
+ },
59
+ apiKey: {
60
+ type: 'string',
61
+ description: 'API key value (sent as X-API-Key request header)'
62
+ },
63
+ username: {
64
+ type: 'string',
65
+ description: 'Username for Basic auth or OAuth2 password flow'
66
+ },
67
+ password: {
68
+ type: 'string',
69
+ description: 'Password for Basic auth or OAuth2 password flow'
70
+ },
71
+ clientId: {
72
+ type: 'string',
73
+ description: 'OAuth2 client ID for client credentials flow'
74
+ },
75
+ clientSecret: {
76
+ type: 'string',
77
+ description: 'OAuth2 client secret for client credentials flow'
78
+ }
79
+ }
80
+ },
81
+ authToken: {
82
+ type: 'string',
83
+ description: 'Bearer token shortcut (deprecated — use credentials.bearerToken instead).'
84
+ },
85
+ testData: {
86
+ type: 'object',
87
+ description: 'Domain-specific values to inject into tests at runtime. ' +
88
+ 'Use the same keys as in generate-tests. ' +
89
+ 'Example: { "userId": "123", "productId": "prod_abc" }.',
90
+ additionalProperties: true
91
+ },
92
+ parallel: {
93
+ type: 'boolean',
94
+ description: 'Run non-happy-path tests in parallel batches for speed (default: false). ' +
95
+ 'Happy-path tests always run sequentially for automatic token detection.'
96
+ },
97
+ timeout: {
98
+ type: 'number',
99
+ description: 'Per-request timeout in milliseconds (default: 5000). ' +
100
+ 'Increase for slow APIs. Example: 10000 for 10 seconds.'
101
+ }
102
+ },
103
+ required: ['baseUrl']
104
+ };
105
+ constructor(specService) {
106
+ super();
107
+ this.specService = specService;
108
+ }
109
+ async handle(args) {
110
+ const params = args;
111
+ this.log.info('Running tests', {
112
+ baseUrl: params.baseUrl,
113
+ testCount: params.tests?.length || 0,
114
+ hasAuth: !!(params.authToken || params.credentials),
115
+ parallel: params.parallel || false
116
+ });
117
+ try {
118
+ // Get tests to run
119
+ const tests = params.tests || [];
120
+ if (tests.length === 0) {
121
+ throw new Error('No tests provided. Use generate-tests first or provide tests array.');
122
+ }
123
+ // Parse spec first (needed for both endpoint extraction and OAuth2 tokenUrl discovery)
124
+ let endpoints = [];
125
+ let specDoc = null;
126
+ if (params.specPath) {
127
+ specDoc = await this.specService.parseSpec(params.specPath);
128
+ endpoints = await this.specService.extractEndpoints(specDoc);
129
+ }
130
+ // Build minimal environment for TestRunner
131
+ const environment = {
132
+ name: 'test',
133
+ baseUrl: params.baseUrl,
134
+ timeout: params.timeout || 5000,
135
+ auth: buildAuthConfig(params.credentials, params.authToken, specDoc),
136
+ };
137
+ // Run tests
138
+ const runner = new TestRunner(environment);
139
+ const runResult = await runner.runTests(tests, endpoints, {
140
+ parallel: params.parallel ? 5 : 1
141
+ });
142
+ const results = runResult.results;
143
+ const total = results.length;
144
+ const passed = results.filter(r => r.status === 'passed').length;
145
+ const failed = results.filter(r => r.status === 'failed').length;
146
+ this.log.info('Tests completed', { total, passed, failed });
147
+ return this.formatResponse({
148
+ success: true,
149
+ results,
150
+ summary: {
151
+ total,
152
+ passed,
153
+ failed,
154
+ passRate: total > 0
155
+ ? `${((passed / total) * 100).toFixed(2)}%`
156
+ : '0.00%',
157
+ }
158
+ });
159
+ }
160
+ catch (error) {
161
+ return this.formatError(error);
162
+ }
163
+ }
164
+ }
165
+ /**
166
+ * Builds an AuthConfig from flat credentials and/or a legacy authToken.
167
+ * Auth type is auto-detected from the available credential fields.
168
+ * For OAuth2, the tokenUrl is extracted from the OpenAPI spec when available.
169
+ */
170
+ function buildAuthConfig(credentials, authToken, specDoc) {
171
+ // 1. Deprecated authToken shortcut (no credentials object)
172
+ if (authToken && !credentials) {
173
+ return { type: 'bearer', token: authToken };
174
+ }
175
+ if (!credentials)
176
+ return undefined;
177
+ // 2. Explicit bearer token inside credentials (highest priority)
178
+ if (credentials.bearerToken) {
179
+ return { type: 'bearer', token: credentials.bearerToken };
180
+ }
181
+ // 3. Legacy authToken alongside credentials
182
+ if (authToken) {
183
+ return { type: 'bearer', token: authToken };
184
+ }
185
+ // 4. OAuth2: needs clientId + clientSecret; tokenUrl extracted from spec when available
186
+ if (credentials.clientId && credentials.clientSecret) {
187
+ const tokenUrl = extractOAuth2TokenUrl(specDoc) || '';
188
+ return {
189
+ type: 'oauth2',
190
+ oauth2: {
191
+ tokenUrl,
192
+ clientId: credentials.clientId,
193
+ clientSecret: credentials.clientSecret,
194
+ ...(credentials.username && { username: credentials.username }),
195
+ ...(credentials.password && { password: credentials.password }),
196
+ }
197
+ };
198
+ }
199
+ // 5. API key → default header name X-API-Key
200
+ if (credentials.apiKey) {
201
+ return {
202
+ type: 'api-key',
203
+ apiKey: { name: 'X-API-Key', in: 'header', value: credentials.apiKey }
204
+ };
205
+ }
206
+ // 6. Basic auth (username + password without OAuth2 client credentials)
207
+ if (credentials.username && credentials.password) {
208
+ return {
209
+ type: 'basic',
210
+ basic: { username: credentials.username, password: credentials.password }
211
+ };
212
+ }
213
+ return undefined;
214
+ }
215
+ /**
216
+ * Attempts to extract an OAuth2 tokenUrl from the OpenAPI spec's security schemes.
217
+ * Returns the first tokenUrl found across all OAuth2 flows, or undefined.
218
+ */
219
+ function extractOAuth2TokenUrl(specDoc) {
220
+ const schemes = specDoc?.components?.securitySchemes;
221
+ if (!schemes)
222
+ return undefined;
223
+ for (const scheme of Object.values(schemes)) {
224
+ if (scheme.type === 'oauth2' && scheme.flows) {
225
+ for (const flow of Object.values(scheme.flows)) {
226
+ if (flow?.tokenUrl)
227
+ return flow.tokenUrl;
228
+ }
229
+ }
230
+ }
231
+ return undefined;
232
+ }
233
+ //# sourceMappingURL=run-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../../src/mcp/handlers/run-tests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Handler types - Common interfaces for MCP tool handlers
3
+ *
4
+ * Defines the contract that all tool handlers must implement.
5
+ *
6
+ * @module mcp/handlers/types
7
+ */
8
+ /**
9
+ * Response from a tool handler
10
+ */
11
+ export interface ToolResponse {
12
+ /**
13
+ * Content blocks to return to the MCP client
14
+ */
15
+ content: Array<{
16
+ /**
17
+ * Content type (usually 'text')
18
+ */
19
+ type: string;
20
+ /**
21
+ * Content text/data
22
+ */
23
+ text: string;
24
+ }>;
25
+ /**
26
+ * Optional error flag
27
+ */
28
+ isError?: boolean;
29
+ }
30
+ /**
31
+ * Tool handler interface
32
+ *
33
+ * All MCP tool handlers must implement this interface.
34
+ */
35
+ export interface ToolHandler {
36
+ /**
37
+ * Tool name (matches MCP tool name)
38
+ */
39
+ readonly name: string;
40
+ /**
41
+ * Tool description (shown to MCP clients)
42
+ */
43
+ readonly description: string;
44
+ /**
45
+ * JSON Schema for tool input validation
46
+ */
47
+ readonly inputSchema: {
48
+ type: string;
49
+ properties?: Record<string, unknown>;
50
+ required?: string[];
51
+ [key: string]: unknown;
52
+ };
53
+ /**
54
+ * Handles the tool invocation
55
+ *
56
+ * @param args - Tool arguments (validated against inputSchema)
57
+ * @returns Tool response
58
+ */
59
+ handle(args: unknown): Promise<ToolResponse>;
60
+ }
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC;QACb;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QAEb;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IAEH;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IAEF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9C"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Handler types - Common interfaces for MCP tool handlers
3
+ *
4
+ * Defines the contract that all tool handlers must implement.
5
+ *
6
+ * @module mcp/handlers/types
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/handlers/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * MCP Server Implementation
3
+ *
4
+ * Model Context Protocol server for OpenAPI contract testing.
5
+ * Provides tools for test generation, execution, and contract validation
6
+ * via STDIO transport for MCP client integration.
7
+ *
8
+ * This server uses a handler registry pattern for clean separation of concerns.
9
+ *
10
+ * @module mcp/server
11
+ */
12
+ import { type ToolHandler } from './handlers/index.js';
13
+ /**
14
+ * OpenAPI Contract Tester MCP Server
15
+ *
16
+ * Provides 5 essential tools for API testing:
17
+ * 1. generate-tests - Generate intelligent test suites from OpenAPI specs (AI-powered)
18
+ * 2. run-tests - Execute test suites against APIs with auto-repair
19
+ * 3. export-results - Export test results with AI analysis and coverage
20
+ * 4. compare-sources - Compare OpenAPI vs Code vs PRD
21
+ * 5. export-to-postman - Export tests as Postman Collection v2.1 (Newman compatible)
22
+ *
23
+ * Architecture:
24
+ * - Uses Strategy pattern for tool handlers
25
+ * - Each handler implements ToolHandler interface
26
+ * - Services provide shared functionality (spec parsing, LLM calls, reporting, file I/O)
27
+ * - Handler registry enables clean dispatch and extensibility
28
+ */
29
+ export declare class OpenAPIContractTesterServer {
30
+ private server;
31
+ private handlers;
32
+ private specService;
33
+ private reportService;
34
+ private fileService;
35
+ private postmanService;
36
+ constructor();
37
+ /**
38
+ * Registers all tool handlers
39
+ * @private
40
+ */
41
+ private registerHandlers;
42
+ /**
43
+ * Sets up MCP request handlers
44
+ * @private
45
+ */
46
+ private setupHandlers;
47
+ /**
48
+ * Starts the MCP server
49
+ */
50
+ run(): Promise<void>;
51
+ /**
52
+ * Stops the MCP server gracefully
53
+ */
54
+ stop(): Promise<void>;
55
+ /**
56
+ * Gets the list of registered handlers (for testing/debugging)
57
+ */
58
+ getHandlers(): ReadonlyMap<string, ToolHandler>;
59
+ }
60
+ /**
61
+ * Creates and starts the MCP server
62
+ */
63
+ export declare function startMCPServer(): Promise<void>;
64
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAQ7B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAA2B;IAG3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;;IAmCvC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqErB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB1B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B;;OAEG;IACH,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC;CAGhD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD"}