@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,284 @@
1
+ /**
2
+ * AI-Powered Data Generator
3
+ *
4
+ * Generates contextual, realistic test data using LLM.
5
+ * Used as a fallback when Faker data is not appropriate for the API domain.
6
+ *
7
+ * @module llm/data-generator-ai
8
+ */
9
+ import { callLLM } from './ai-client.js';
10
+ import { createLogger } from '../utils/logger.js';
11
+ const log = createLogger('data-generator-ai');
12
+ /**
13
+ * Checks if an endpoint is critical and requires AI-generated data
14
+ *
15
+ * @param context - API context
16
+ * @returns true if endpoint is critical
17
+ */
18
+ export function isCriticalEndpoint(context) {
19
+ if (!context?.endpoint)
20
+ return false;
21
+ const criticalPaths = [
22
+ 'login',
23
+ 'auth',
24
+ 'payment',
25
+ 'transfer',
26
+ 'password',
27
+ 'register',
28
+ 'signup',
29
+ 'checkout',
30
+ 'transaction',
31
+ 'account',
32
+ 'wallet',
33
+ 'balance'
34
+ ];
35
+ const endpoint = context.endpoint.toLowerCase();
36
+ return criticalPaths.some(path => endpoint.includes(path));
37
+ }
38
+ /**
39
+ * Generates a realistic value using AI based on schema and context
40
+ *
41
+ * @param schema - JSON Schema object
42
+ * @param propertyName - Name of the property being generated
43
+ * @param context - API context for domain-specific generation
44
+ * @returns Generated value or null if AI fails
45
+ */
46
+ export async function generateValueWithAI(schema, propertyName, context) {
47
+ try {
48
+ const prompt = buildPromptForValue(schema, propertyName, context);
49
+ log.debug('Generating value with AI', { propertyName, context });
50
+ const result = await callLLM(prompt, {
51
+ maxTokens: 256,
52
+ temperature: 0.3,
53
+ timeout: 10000
54
+ });
55
+ if (!result.success || !result.text) {
56
+ log.warn('AI generation failed', { propertyName, error: result.error });
57
+ return null;
58
+ }
59
+ const generatedValue = parseAIValue(result.text.trim(), schema.type);
60
+ log.debug('AI generated value', { propertyName, value: generatedValue });
61
+ return generatedValue;
62
+ }
63
+ catch (error) {
64
+ log.error('AI generation error', {
65
+ propertyName,
66
+ error: error instanceof Error ? error.message : String(error)
67
+ });
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Builds a prompt for generating a single value
73
+ *
74
+ * @param schema - JSON Schema object
75
+ * @param propertyName - Name of the property
76
+ * @param context - API context
77
+ * @returns Prompt string
78
+ */
79
+ function buildPromptForValue(schema, propertyName, context) {
80
+ const constraints = buildConstraintsDescription(schema);
81
+ return `Generate realistic test data for an API endpoint.
82
+
83
+ Property: ${propertyName}
84
+ Type: ${schema.type || 'string'}
85
+ Format: ${schema.format || 'none'}
86
+ ${constraints ? `Constraints: ${constraints}\n` : ''}
87
+ API Context:
88
+ - Type: ${context?.type || 'unknown'}
89
+ - Endpoint: ${context?.endpoint || 'unknown'}
90
+ - Purpose: ${context?.purpose || 'general'}
91
+
92
+ Generate ONE realistic value that:
93
+ 1. Matches the schema type and format
94
+ 2. Respects all constraints (min, max, pattern, enum)
95
+ 3. Is appropriate for the API type (e.g., realistic IBAN for banking ${propertyName})
96
+ 4. Would likely exist in a real database for ${context?.type || 'this'} applications
97
+
98
+ Examples of good values:
99
+ - For "email" in banking API: "john.smith@company.com" (professional)
100
+ - For "amount" in banking API: "150.50" (realistic transaction)
101
+ - For "iban" in banking API: "DE89370400440532013000" (valid IBAN format)
102
+ - For "username" in blog API: "tech_blogger_2024" (casual)
103
+
104
+ Respond with ONLY the value, no explanation, no quotes unless it's a string that needs them.`;
105
+ }
106
+ /**
107
+ * Builds a description of schema constraints
108
+ *
109
+ * @param schema - JSON Schema object
110
+ * @returns Constraints description
111
+ */
112
+ function buildConstraintsDescription(schema) {
113
+ const parts = [];
114
+ if (schema.minimum !== undefined) {
115
+ parts.push(`min: ${schema.minimum}`);
116
+ }
117
+ if (schema.maximum !== undefined) {
118
+ parts.push(`max: ${schema.maximum}`);
119
+ }
120
+ if (schema.minLength !== undefined) {
121
+ parts.push(`minLength: ${schema.minLength}`);
122
+ }
123
+ if (schema.maxLength !== undefined) {
124
+ parts.push(`maxLength: ${schema.maxLength}`);
125
+ }
126
+ if (schema.pattern) {
127
+ parts.push(`pattern: ${schema.pattern}`);
128
+ }
129
+ if (schema.enum) {
130
+ parts.push(`enum: [${schema.enum.join(', ')}]`);
131
+ }
132
+ return parts.join(', ');
133
+ }
134
+ /**
135
+ * Parses AI-generated text into the appropriate type
136
+ *
137
+ * @param text - AI-generated text
138
+ * @param schemaType - Expected schema type
139
+ * @returns Parsed value
140
+ */
141
+ function parseAIValue(text, schemaType) {
142
+ // Remove surrounding quotes if present
143
+ let cleaned = text.trim();
144
+ if ((cleaned.startsWith('"') && cleaned.endsWith('"')) ||
145
+ (cleaned.startsWith("'") && cleaned.endsWith("'"))) {
146
+ cleaned = cleaned.slice(1, -1);
147
+ }
148
+ // Parse based on schema type
149
+ switch (schemaType) {
150
+ case 'integer':
151
+ return parseInt(cleaned, 10);
152
+ case 'number':
153
+ return parseFloat(cleaned);
154
+ case 'boolean':
155
+ return cleaned.toLowerCase() === 'true';
156
+ case 'array':
157
+ try {
158
+ return JSON.parse(text);
159
+ }
160
+ catch {
161
+ // If JSON parse fails, split by comma
162
+ return cleaned.split(',').map(s => s.trim());
163
+ }
164
+ case 'object':
165
+ try {
166
+ return JSON.parse(text);
167
+ }
168
+ catch {
169
+ return { value: cleaned };
170
+ }
171
+ case 'string':
172
+ default:
173
+ return cleaned;
174
+ }
175
+ }
176
+ /**
177
+ * Generates intelligent edge case values using AI
178
+ *
179
+ * @param schema - JSON Schema object
180
+ * @param propertyName - Name of the property
181
+ * @param context - API context
182
+ * @returns Array of edge case values with descriptions
183
+ */
184
+ export async function generateEdgeCasesWithAI(schema, propertyName, context) {
185
+ try {
186
+ const prompt = `Generate realistic edge case values for API testing.
187
+
188
+ Property: ${propertyName}
189
+ Type: ${schema.type || 'string'}
190
+ API Type: ${context?.type || 'unknown'}
191
+ Endpoint: ${context?.endpoint || 'unknown'}
192
+
193
+ Generate 3 edge cases that are realistic for a ${context?.type || 'generic'} API:
194
+ 1. A valid edge case (boundary value that should work)
195
+ 2. An invalid edge case (should fail validation)
196
+ 3. A domain-specific edge case (specific to ${context?.type || 'this domain'})
197
+
198
+ Format your response as JSON array:
199
+ [
200
+ {"value": "...", "description": "...", "expectedStatus": 200},
201
+ {"value": "...", "description": "...", "expectedStatus": 400},
202
+ {"value": "...", "description": "...", "expectedStatus": 400}
203
+ ]`;
204
+ const result = await callLLM(prompt, {
205
+ maxTokens: 512,
206
+ temperature: 0.4,
207
+ timeout: 15000
208
+ });
209
+ if (!result.success || !result.text) {
210
+ log.warn('AI edge case generation failed', { propertyName });
211
+ return [];
212
+ }
213
+ // Try to parse JSON response
214
+ try {
215
+ const edgeCases = JSON.parse(result.text.trim());
216
+ if (Array.isArray(edgeCases)) {
217
+ return edgeCases;
218
+ }
219
+ }
220
+ catch (parseError) {
221
+ log.warn('Failed to parse AI edge cases', { propertyName, parseError });
222
+ }
223
+ return [];
224
+ }
225
+ catch (error) {
226
+ log.error('AI edge case generation error', {
227
+ propertyName,
228
+ error: error instanceof Error ? error.message : String(error)
229
+ });
230
+ return [];
231
+ }
232
+ }
233
+ /**
234
+ * Infers the purpose of an endpoint from its path and method
235
+ *
236
+ * @param endpoint - Endpoint path
237
+ * @param method - HTTP method
238
+ * @returns Inferred purpose
239
+ */
240
+ export function inferEndpointPurpose(endpoint, method) {
241
+ const path = endpoint.toLowerCase();
242
+ const m = method.toUpperCase();
243
+ // Authentication
244
+ if (path.includes('login') || path.includes('signin'))
245
+ return 'login';
246
+ if (path.includes('logout') || path.includes('signout'))
247
+ return 'logout';
248
+ if (path.includes('register') || path.includes('signup'))
249
+ return 'register';
250
+ if (path.includes('auth'))
251
+ return 'authentication';
252
+ // Payment & Financial
253
+ if (path.includes('payment') || path.includes('pay'))
254
+ return 'payment';
255
+ if (path.includes('transfer'))
256
+ return 'transfer';
257
+ if (path.includes('transaction'))
258
+ return 'transaction';
259
+ if (path.includes('balance'))
260
+ return 'balance_check';
261
+ if (path.includes('wallet'))
262
+ return 'wallet_management';
263
+ // User management
264
+ if (path.includes('user') || path.includes('profile')) {
265
+ if (m === 'POST')
266
+ return 'create_user';
267
+ if (m === 'PUT' || m === 'PATCH')
268
+ return 'update_user';
269
+ if (m === 'DELETE')
270
+ return 'delete_user';
271
+ return 'get_user';
272
+ }
273
+ // Generic CRUD
274
+ if (m === 'POST')
275
+ return 'create';
276
+ if (m === 'PUT' || m === 'PATCH')
277
+ return 'update';
278
+ if (m === 'DELETE')
279
+ return 'delete';
280
+ if (m === 'GET')
281
+ return 'retrieve';
282
+ return 'general';
283
+ }
284
+ //# sourceMappingURL=data-generator-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-generator-ai.js","sourceRoot":"","sources":["../../src/llm/data-generator-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * LLM Module Exports
3
+ *
4
+ * @module llm
5
+ */
6
+ export { callLLM, callLLMWithData, toTOONFormat, isLLMAvailable, getConfiguredAIUrl, type LLMCallOptions, type LLMResult } from './ai-client.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,eAAe,EACf,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * LLM Module Exports
3
+ *
4
+ * @module llm
5
+ */
6
+ export { callLLM, callLLMWithData, toTOONFormat, isLLMAvailable, getConfiguredAIUrl } from './ai-client.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,eAAe,EACf,YAAY,EACZ,cAAc,EACd,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Base Handler - Abstract base class for tool handlers
3
+ *
4
+ * Provides common functionality for all tool handlers including:
5
+ * - Logging
6
+ * - Response formatting
7
+ * - Error handling
8
+ *
9
+ * @module mcp/handlers/base-handler
10
+ */
11
+ import type { ToolHandler, ToolResponse } from './types.js';
12
+ import { createLogger } from '../../utils/logger.js';
13
+ /**
14
+ * Abstract base class for tool handlers
15
+ *
16
+ * Provides common functionality that all handlers can use.
17
+ */
18
+ export declare abstract class BaseToolHandler implements ToolHandler {
19
+ /**
20
+ * Logger instance for this handler
21
+ */
22
+ protected log: ReturnType<typeof createLogger>;
23
+ /**
24
+ * Tool name (must be implemented by subclass)
25
+ */
26
+ abstract readonly name: string;
27
+ /**
28
+ * Tool description (must be implemented by subclass)
29
+ */
30
+ abstract readonly description: string;
31
+ /**
32
+ * Tool input schema (must be implemented by subclass)
33
+ */
34
+ abstract readonly inputSchema: {
35
+ type: string;
36
+ properties?: Record<string, unknown>;
37
+ required?: string[];
38
+ [key: string]: unknown;
39
+ };
40
+ constructor();
41
+ /**
42
+ * Handle tool invocation (must be implemented by subclass)
43
+ *
44
+ * @param args - Tool arguments
45
+ * @returns Tool response
46
+ */
47
+ abstract handle(args: unknown): Promise<ToolResponse>;
48
+ /**
49
+ * Formats a successful response
50
+ *
51
+ * @param data - Data to return
52
+ * @param asJson - Whether to JSON stringify the data (default: true)
53
+ * @returns Formatted tool response
54
+ */
55
+ protected formatResponse(data: unknown, asJson?: boolean): ToolResponse;
56
+ /**
57
+ * Formats an error response
58
+ *
59
+ * @param error - Error object or message
60
+ * @returns Formatted error response
61
+ */
62
+ protected formatError(error: unknown): ToolResponse;
63
+ /**
64
+ * Wraps handler execution with try/catch and logging
65
+ *
66
+ * @param fn - Handler function to execute
67
+ * @param context - Context info for logging
68
+ * @returns Tool response
69
+ */
70
+ protected executeWithErrorHandling<T>(fn: () => Promise<T>, context?: Record<string, unknown>): Promise<ToolResponse>;
71
+ }
72
+ //# sourceMappingURL=base-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;;;GAIG;AACH,8BAAsB,eAAgB,YAAW,WAAW;IAC1D;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IAE/C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;QAC7B,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;;IAMF;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAErD;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,UAAO,GAAG,YAAY;IAYpE;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY;IAsBnD;;;;;;OAMG;cACa,wBAAwB,CAAC,CAAC,EACxC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC;CAWzB"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Base Handler - Abstract base class for tool handlers
3
+ *
4
+ * Provides common functionality for all tool handlers including:
5
+ * - Logging
6
+ * - Response formatting
7
+ * - Error handling
8
+ *
9
+ * @module mcp/handlers/base-handler
10
+ */
11
+ import { createLogger } from '../../utils/logger.js';
12
+ import { formatError } from '../../utils/errors.js';
13
+ /**
14
+ * Abstract base class for tool handlers
15
+ *
16
+ * Provides common functionality that all handlers can use.
17
+ */
18
+ export class BaseToolHandler {
19
+ /**
20
+ * Logger instance for this handler
21
+ */
22
+ log;
23
+ constructor() {
24
+ this.log = createLogger(this.constructor.name);
25
+ }
26
+ /**
27
+ * Formats a successful response
28
+ *
29
+ * @param data - Data to return
30
+ * @param asJson - Whether to JSON stringify the data (default: true)
31
+ * @returns Formatted tool response
32
+ */
33
+ formatResponse(data, asJson = true) {
34
+ const text = asJson ? JSON.stringify(data, null, 2) : String(data);
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text
40
+ }
41
+ ]
42
+ };
43
+ }
44
+ /**
45
+ * Formats an error response
46
+ *
47
+ * @param error - Error object or message
48
+ * @returns Formatted error response
49
+ */
50
+ formatError(error) {
51
+ const errorMessage = formatError(error);
52
+ this.log.error('Handler error', { error: errorMessage });
53
+ return {
54
+ content: [
55
+ {
56
+ type: 'text',
57
+ text: JSON.stringify({
58
+ error: errorMessage,
59
+ success: false
60
+ }, null, 2)
61
+ }
62
+ ],
63
+ isError: true
64
+ };
65
+ }
66
+ /**
67
+ * Wraps handler execution with try/catch and logging
68
+ *
69
+ * @param fn - Handler function to execute
70
+ * @param context - Context info for logging
71
+ * @returns Tool response
72
+ */
73
+ async executeWithErrorHandling(fn, context) {
74
+ try {
75
+ this.log.info('Handler started', context);
76
+ const result = await fn();
77
+ this.log.info('Handler completed successfully', context);
78
+ return this.formatResponse(result);
79
+ }
80
+ catch (error) {
81
+ this.log.error('Handler failed', { ...context, error });
82
+ return this.formatError(error);
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=base-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../../src/mcp/handlers/base-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,OAAgB,eAAe;IACnC;;OAEG;IACO,GAAG,CAAkC;IAsB/C;QACE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAUD;;;;;;OAMG;IACO,cAAc,CAAC,IAAa,EAAE,MAAM,GAAG,IAAI;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACO,WAAW,CAAC,KAAc;QAClC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,KAAK,EAAE,YAAY;wBACnB,OAAO,EAAE,KAAK;qBACf,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,wBAAwB,CACtC,EAAoB,EACpB,OAAiC;QAEjC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Compare Sources Handler
3
+ *
4
+ * Handles the compare-sources tool which compares OpenAPI spec vs Code vs PRD.
5
+ *
6
+ * @module mcp/handlers/compare-sources
7
+ */
8
+ import { BaseToolHandler } from './base-handler.js';
9
+ import type { ToolResponse } from './types.js';
10
+ import { SpecService } from '../services/spec-service.js';
11
+ import { FileService } from '../services/file-service.js';
12
+ /**
13
+ * Handler for source comparison tool
14
+ */
15
+ export declare class CompareSourcesHandler extends BaseToolHandler {
16
+ private specService;
17
+ private fileService;
18
+ readonly name = "compare-sources";
19
+ readonly description: string;
20
+ readonly inputSchema: {
21
+ type: string;
22
+ properties: {
23
+ specPath: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ codeEndpoints: {
28
+ type: string;
29
+ description: string;
30
+ items: {
31
+ type: string;
32
+ properties: {
33
+ method: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ path: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ sourceFile: {
42
+ type: string;
43
+ description: string;
44
+ };
45
+ handlerName: {
46
+ type: string;
47
+ description: string;
48
+ };
49
+ requiresAuth: {
50
+ type: string;
51
+ description: string;
52
+ };
53
+ parameters: {
54
+ type: string;
55
+ items: {
56
+ type: string;
57
+ };
58
+ description: string;
59
+ };
60
+ };
61
+ required: string[];
62
+ };
63
+ };
64
+ prdPath: {
65
+ type: string;
66
+ description: string;
67
+ };
68
+ format: {
69
+ type: string;
70
+ enum: string[];
71
+ description: string;
72
+ };
73
+ outputPath: {
74
+ type: string;
75
+ description: string;
76
+ };
77
+ workingDirectory: {
78
+ type: string;
79
+ description: string;
80
+ };
81
+ enableSemanticAnalysis: {
82
+ type: string;
83
+ description: string;
84
+ };
85
+ };
86
+ required: string[];
87
+ };
88
+ constructor(specService: SpecService, fileService: FileService);
89
+ handle(args: unknown): Promise<ToolResponse>;
90
+ }
91
+ //# sourceMappingURL=compare-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-sources.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/compare-sources.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;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IA0FtD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IA1FrB,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,SAQyF;IAE7G,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2ElB;gBAGQ,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW;IAK5B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;CA0GnD"}