mnehmos.trace.mcp 1.0.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 (339) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1662 -0
  3. package/dist/adapters/bootstrap.d.ts +29 -0
  4. package/dist/adapters/bootstrap.d.ts.map +1 -0
  5. package/dist/adapters/bootstrap.js +46 -0
  6. package/dist/adapters/bootstrap.js.map +1 -0
  7. package/dist/adapters/errors.d.ts +94 -0
  8. package/dist/adapters/errors.d.ts.map +1 -0
  9. package/dist/adapters/errors.js +107 -0
  10. package/dist/adapters/errors.js.map +1 -0
  11. package/dist/adapters/graphql/index.d.ts +9 -0
  12. package/dist/adapters/graphql/index.d.ts.map +1 -0
  13. package/dist/adapters/graphql/index.js +9 -0
  14. package/dist/adapters/graphql/index.js.map +1 -0
  15. package/dist/adapters/graphql/sdl-parser.d.ts +74 -0
  16. package/dist/adapters/graphql/sdl-parser.d.ts.map +1 -0
  17. package/dist/adapters/graphql/sdl-parser.js +559 -0
  18. package/dist/adapters/graphql/sdl-parser.js.map +1 -0
  19. package/dist/adapters/grpc/adapter.d.ts +76 -0
  20. package/dist/adapters/grpc/adapter.d.ts.map +1 -0
  21. package/dist/adapters/grpc/adapter.js +362 -0
  22. package/dist/adapters/grpc/adapter.js.map +1 -0
  23. package/dist/adapters/grpc/index.d.ts +10 -0
  24. package/dist/adapters/grpc/index.d.ts.map +1 -0
  25. package/dist/adapters/grpc/index.js +12 -0
  26. package/dist/adapters/grpc/index.js.map +1 -0
  27. package/dist/adapters/grpc/proto-parser.d.ts +76 -0
  28. package/dist/adapters/grpc/proto-parser.d.ts.map +1 -0
  29. package/dist/adapters/grpc/proto-parser.js +523 -0
  30. package/dist/adapters/grpc/proto-parser.js.map +1 -0
  31. package/dist/adapters/grpc/type-converter.d.ts +43 -0
  32. package/dist/adapters/grpc/type-converter.d.ts.map +1 -0
  33. package/dist/adapters/grpc/type-converter.js +270 -0
  34. package/dist/adapters/grpc/type-converter.js.map +1 -0
  35. package/dist/adapters/grpc/types.d.ts +85 -0
  36. package/dist/adapters/grpc/types.d.ts.map +1 -0
  37. package/dist/adapters/grpc/types.js +7 -0
  38. package/dist/adapters/grpc/types.js.map +1 -0
  39. package/dist/adapters/index.d.ts +39 -0
  40. package/dist/adapters/index.d.ts.map +1 -0
  41. package/dist/adapters/index.js +50 -0
  42. package/dist/adapters/index.js.map +1 -0
  43. package/dist/adapters/mcp.d.ts +23 -0
  44. package/dist/adapters/mcp.d.ts.map +1 -0
  45. package/dist/adapters/mcp.js +293 -0
  46. package/dist/adapters/mcp.js.map +1 -0
  47. package/dist/adapters/openapi/adapter.d.ts +213 -0
  48. package/dist/adapters/openapi/adapter.d.ts.map +1 -0
  49. package/dist/adapters/openapi/adapter.js +557 -0
  50. package/dist/adapters/openapi/adapter.js.map +1 -0
  51. package/dist/adapters/openapi/convert.d.ts +120 -0
  52. package/dist/adapters/openapi/convert.d.ts.map +1 -0
  53. package/dist/adapters/openapi/convert.js +363 -0
  54. package/dist/adapters/openapi/convert.js.map +1 -0
  55. package/dist/adapters/openapi/index.d.ts +39 -0
  56. package/dist/adapters/openapi/index.d.ts.map +1 -0
  57. package/dist/adapters/openapi/index.js +48 -0
  58. package/dist/adapters/openapi/index.js.map +1 -0
  59. package/dist/adapters/openapi/parser.d.ts +95 -0
  60. package/dist/adapters/openapi/parser.d.ts.map +1 -0
  61. package/dist/adapters/openapi/parser.js +171 -0
  62. package/dist/adapters/openapi/parser.js.map +1 -0
  63. package/dist/adapters/registry.d.ts +116 -0
  64. package/dist/adapters/registry.d.ts.map +1 -0
  65. package/dist/adapters/registry.js +246 -0
  66. package/dist/adapters/registry.js.map +1 -0
  67. package/dist/adapters/trpc/adapter.d.ts +159 -0
  68. package/dist/adapters/trpc/adapter.d.ts.map +1 -0
  69. package/dist/adapters/trpc/adapter.js +223 -0
  70. package/dist/adapters/trpc/adapter.js.map +1 -0
  71. package/dist/adapters/trpc/extractor.d.ts +218 -0
  72. package/dist/adapters/trpc/extractor.d.ts.map +1 -0
  73. package/dist/adapters/trpc/extractor.js +708 -0
  74. package/dist/adapters/trpc/extractor.js.map +1 -0
  75. package/dist/adapters/trpc/index.d.ts +31 -0
  76. package/dist/adapters/trpc/index.d.ts.map +1 -0
  77. package/dist/adapters/trpc/index.js +40 -0
  78. package/dist/adapters/trpc/index.js.map +1 -0
  79. package/dist/adapters/trpc/parser.d.ts +119 -0
  80. package/dist/adapters/trpc/parser.d.ts.map +1 -0
  81. package/dist/adapters/trpc/parser.js +128 -0
  82. package/dist/adapters/trpc/parser.js.map +1 -0
  83. package/dist/compare/index.d.ts +33 -0
  84. package/dist/compare/index.d.ts.map +1 -0
  85. package/dist/compare/index.js +261 -0
  86. package/dist/compare/index.js.map +1 -0
  87. package/dist/core/types.d.ts +188 -0
  88. package/dist/core/types.d.ts.map +1 -0
  89. package/dist/core/types.js +9 -0
  90. package/dist/core/types.js.map +1 -0
  91. package/dist/extract/index.d.ts +26 -0
  92. package/dist/extract/index.d.ts.map +1 -0
  93. package/dist/extract/index.js +44 -0
  94. package/dist/extract/index.js.map +1 -0
  95. package/dist/index.d.ts +9 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +674 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/languages/base.d.ts +57 -0
  100. package/dist/languages/base.d.ts.map +1 -0
  101. package/dist/languages/base.js +6 -0
  102. package/dist/languages/base.js.map +1 -0
  103. package/dist/languages/bootstrap.d.ts +10 -0
  104. package/dist/languages/bootstrap.d.ts.map +1 -0
  105. package/dist/languages/bootstrap.js +25 -0
  106. package/dist/languages/bootstrap.js.map +1 -0
  107. package/dist/languages/go/handlers/chi.d.ts +24 -0
  108. package/dist/languages/go/handlers/chi.d.ts.map +1 -0
  109. package/dist/languages/go/handlers/chi.js +205 -0
  110. package/dist/languages/go/handlers/chi.js.map +1 -0
  111. package/dist/languages/go/handlers/gin.d.ts +24 -0
  112. package/dist/languages/go/handlers/gin.d.ts.map +1 -0
  113. package/dist/languages/go/handlers/gin.js +156 -0
  114. package/dist/languages/go/handlers/gin.js.map +1 -0
  115. package/dist/languages/go/handlers/stdlib.d.ts +19 -0
  116. package/dist/languages/go/handlers/stdlib.d.ts.map +1 -0
  117. package/dist/languages/go/handlers/stdlib.js +112 -0
  118. package/dist/languages/go/handlers/stdlib.js.map +1 -0
  119. package/dist/languages/go/index.d.ts +18 -0
  120. package/dist/languages/go/index.d.ts.map +1 -0
  121. package/dist/languages/go/index.js +20 -0
  122. package/dist/languages/go/index.js.map +1 -0
  123. package/dist/languages/go/parser.d.ts +33 -0
  124. package/dist/languages/go/parser.d.ts.map +1 -0
  125. package/dist/languages/go/parser.js +95 -0
  126. package/dist/languages/go/parser.js.map +1 -0
  127. package/dist/languages/go/struct-extractor.d.ts +59 -0
  128. package/dist/languages/go/struct-extractor.d.ts.map +1 -0
  129. package/dist/languages/go/struct-extractor.js +483 -0
  130. package/dist/languages/go/struct-extractor.js.map +1 -0
  131. package/dist/languages/go/tag-parser.d.ts +62 -0
  132. package/dist/languages/go/tag-parser.d.ts.map +1 -0
  133. package/dist/languages/go/tag-parser.js +108 -0
  134. package/dist/languages/go/tag-parser.js.map +1 -0
  135. package/dist/languages/go/type-converter.d.ts +32 -0
  136. package/dist/languages/go/type-converter.d.ts.map +1 -0
  137. package/dist/languages/go/type-converter.js +226 -0
  138. package/dist/languages/go/type-converter.js.map +1 -0
  139. package/dist/languages/go/types.d.ts +153 -0
  140. package/dist/languages/go/types.d.ts.map +1 -0
  141. package/dist/languages/go/types.js +6 -0
  142. package/dist/languages/go/types.js.map +1 -0
  143. package/dist/languages/import-resolver.d.ts +645 -0
  144. package/dist/languages/import-resolver.d.ts.map +1 -0
  145. package/dist/languages/import-resolver.js +1278 -0
  146. package/dist/languages/import-resolver.js.map +1 -0
  147. package/dist/languages/index.d.ts +34 -0
  148. package/dist/languages/index.d.ts.map +1 -0
  149. package/dist/languages/index.js +93 -0
  150. package/dist/languages/index.js.map +1 -0
  151. package/dist/languages/json-schema.d.ts +40 -0
  152. package/dist/languages/json-schema.d.ts.map +1 -0
  153. package/dist/languages/json-schema.js +188 -0
  154. package/dist/languages/json-schema.js.map +1 -0
  155. package/dist/languages/python-ast/index.d.ts +8 -0
  156. package/dist/languages/python-ast/index.d.ts.map +1 -0
  157. package/dist/languages/python-ast/index.js +7 -0
  158. package/dist/languages/python-ast/index.js.map +1 -0
  159. package/dist/languages/python-ast/parser.d.ts +174 -0
  160. package/dist/languages/python-ast/parser.d.ts.map +1 -0
  161. package/dist/languages/python-ast/parser.js +1205 -0
  162. package/dist/languages/python-ast/parser.js.map +1 -0
  163. package/dist/languages/python-ast/type-resolver.d.ts +75 -0
  164. package/dist/languages/python-ast/type-resolver.d.ts.map +1 -0
  165. package/dist/languages/python-ast/type-resolver.js +421 -0
  166. package/dist/languages/python-ast/type-resolver.js.map +1 -0
  167. package/dist/languages/python-ast/types.d.ts +216 -0
  168. package/dist/languages/python-ast/types.d.ts.map +1 -0
  169. package/dist/languages/python-ast/types.js +6 -0
  170. package/dist/languages/python-ast/types.js.map +1 -0
  171. package/dist/languages/python.d.ts +55 -0
  172. package/dist/languages/python.d.ts.map +1 -0
  173. package/dist/languages/python.js +311 -0
  174. package/dist/languages/python.js.map +1 -0
  175. package/dist/languages/typescript.d.ts +272 -0
  176. package/dist/languages/typescript.d.ts.map +1 -0
  177. package/dist/languages/typescript.js +1381 -0
  178. package/dist/languages/typescript.js.map +1 -0
  179. package/dist/patterns/base.d.ts +146 -0
  180. package/dist/patterns/base.d.ts.map +1 -0
  181. package/dist/patterns/base.js +89 -0
  182. package/dist/patterns/base.js.map +1 -0
  183. package/dist/patterns/errors.d.ts +172 -0
  184. package/dist/patterns/errors.d.ts.map +1 -0
  185. package/dist/patterns/errors.js +185 -0
  186. package/dist/patterns/errors.js.map +1 -0
  187. package/dist/patterns/extractors.d.ts +170 -0
  188. package/dist/patterns/extractors.d.ts.map +1 -0
  189. package/dist/patterns/extractors.js +305 -0
  190. package/dist/patterns/extractors.js.map +1 -0
  191. package/dist/patterns/graphql/apollo-client.d.ts +80 -0
  192. package/dist/patterns/graphql/apollo-client.d.ts.map +1 -0
  193. package/dist/patterns/graphql/apollo-client.js +800 -0
  194. package/dist/patterns/graphql/apollo-client.js.map +1 -0
  195. package/dist/patterns/graphql/apollo-server.d.ts +55 -0
  196. package/dist/patterns/graphql/apollo-server.d.ts.map +1 -0
  197. package/dist/patterns/graphql/apollo-server.js +523 -0
  198. package/dist/patterns/graphql/apollo-server.js.map +1 -0
  199. package/dist/patterns/graphql/index.d.ts +11 -0
  200. package/dist/patterns/graphql/index.d.ts.map +1 -0
  201. package/dist/patterns/graphql/index.js +12 -0
  202. package/dist/patterns/graphql/index.js.map +1 -0
  203. package/dist/patterns/graphql/types.d.ts +213 -0
  204. package/dist/patterns/graphql/types.d.ts.map +1 -0
  205. package/dist/patterns/graphql/types.js +16 -0
  206. package/dist/patterns/graphql/types.js.map +1 -0
  207. package/dist/patterns/http-clients/axios.d.ts +148 -0
  208. package/dist/patterns/http-clients/axios.d.ts.map +1 -0
  209. package/dist/patterns/http-clients/axios.js +652 -0
  210. package/dist/patterns/http-clients/axios.js.map +1 -0
  211. package/dist/patterns/http-clients/fetch.d.ts +88 -0
  212. package/dist/patterns/http-clients/fetch.d.ts.map +1 -0
  213. package/dist/patterns/http-clients/fetch.js +364 -0
  214. package/dist/patterns/http-clients/fetch.js.map +1 -0
  215. package/dist/patterns/http-clients/index.d.ts +36 -0
  216. package/dist/patterns/http-clients/index.d.ts.map +1 -0
  217. package/dist/patterns/http-clients/index.js +50 -0
  218. package/dist/patterns/http-clients/index.js.map +1 -0
  219. package/dist/patterns/http-clients/property-access.d.ts +46 -0
  220. package/dist/patterns/http-clients/property-access.d.ts.map +1 -0
  221. package/dist/patterns/http-clients/property-access.js +818 -0
  222. package/dist/patterns/http-clients/property-access.js.map +1 -0
  223. package/dist/patterns/http-clients/type-inference.d.ts +48 -0
  224. package/dist/patterns/http-clients/type-inference.d.ts.map +1 -0
  225. package/dist/patterns/http-clients/type-inference.js +293 -0
  226. package/dist/patterns/http-clients/type-inference.js.map +1 -0
  227. package/dist/patterns/http-clients/types.d.ts +168 -0
  228. package/dist/patterns/http-clients/types.d.ts.map +1 -0
  229. package/dist/patterns/http-clients/types.js +10 -0
  230. package/dist/patterns/http-clients/types.js.map +1 -0
  231. package/dist/patterns/http-clients/url-extractor.d.ts +53 -0
  232. package/dist/patterns/http-clients/url-extractor.d.ts.map +1 -0
  233. package/dist/patterns/http-clients/url-extractor.js +338 -0
  234. package/dist/patterns/http-clients/url-extractor.js.map +1 -0
  235. package/dist/patterns/index.d.ts +44 -0
  236. package/dist/patterns/index.d.ts.map +1 -0
  237. package/dist/patterns/index.js +49 -0
  238. package/dist/patterns/index.js.map +1 -0
  239. package/dist/patterns/python/aiohttp.d.ts +21 -0
  240. package/dist/patterns/python/aiohttp.d.ts.map +1 -0
  241. package/dist/patterns/python/aiohttp.js +188 -0
  242. package/dist/patterns/python/aiohttp.js.map +1 -0
  243. package/dist/patterns/python/httpx.d.ts +20 -0
  244. package/dist/patterns/python/httpx.d.ts.map +1 -0
  245. package/dist/patterns/python/httpx.js +183 -0
  246. package/dist/patterns/python/httpx.js.map +1 -0
  247. package/dist/patterns/python/index.d.ts +32 -0
  248. package/dist/patterns/python/index.d.ts.map +1 -0
  249. package/dist/patterns/python/index.js +63 -0
  250. package/dist/patterns/python/index.js.map +1 -0
  251. package/dist/patterns/python/property-access.d.ts +27 -0
  252. package/dist/patterns/python/property-access.d.ts.map +1 -0
  253. package/dist/patterns/python/property-access.js +132 -0
  254. package/dist/patterns/python/property-access.js.map +1 -0
  255. package/dist/patterns/python/requests.d.ts +19 -0
  256. package/dist/patterns/python/requests.d.ts.map +1 -0
  257. package/dist/patterns/python/requests.js +239 -0
  258. package/dist/patterns/python/requests.js.map +1 -0
  259. package/dist/patterns/python/types.d.ts +95 -0
  260. package/dist/patterns/python/types.d.ts.map +1 -0
  261. package/dist/patterns/python/types.js +43 -0
  262. package/dist/patterns/python/types.js.map +1 -0
  263. package/dist/patterns/registry.d.ts +181 -0
  264. package/dist/patterns/registry.d.ts.map +1 -0
  265. package/dist/patterns/registry.js +304 -0
  266. package/dist/patterns/registry.js.map +1 -0
  267. package/dist/patterns/rest/express.d.ts +78 -0
  268. package/dist/patterns/rest/express.d.ts.map +1 -0
  269. package/dist/patterns/rest/express.js +289 -0
  270. package/dist/patterns/rest/express.js.map +1 -0
  271. package/dist/patterns/rest/fastify.d.ts +93 -0
  272. package/dist/patterns/rest/fastify.d.ts.map +1 -0
  273. package/dist/patterns/rest/fastify.js +420 -0
  274. package/dist/patterns/rest/fastify.js.map +1 -0
  275. package/dist/patterns/rest/index.d.ts +31 -0
  276. package/dist/patterns/rest/index.d.ts.map +1 -0
  277. package/dist/patterns/rest/index.js +45 -0
  278. package/dist/patterns/rest/index.js.map +1 -0
  279. package/dist/patterns/rest/middleware.d.ts +25 -0
  280. package/dist/patterns/rest/middleware.d.ts.map +1 -0
  281. package/dist/patterns/rest/middleware.js +219 -0
  282. package/dist/patterns/rest/middleware.js.map +1 -0
  283. package/dist/patterns/rest/path-parser.d.ts +50 -0
  284. package/dist/patterns/rest/path-parser.d.ts.map +1 -0
  285. package/dist/patterns/rest/path-parser.js +137 -0
  286. package/dist/patterns/rest/path-parser.js.map +1 -0
  287. package/dist/patterns/rest/response-inference.d.ts +44 -0
  288. package/dist/patterns/rest/response-inference.d.ts.map +1 -0
  289. package/dist/patterns/rest/response-inference.js +218 -0
  290. package/dist/patterns/rest/response-inference.js.map +1 -0
  291. package/dist/patterns/rest/types.d.ts +102 -0
  292. package/dist/patterns/rest/types.d.ts.map +1 -0
  293. package/dist/patterns/rest/types.js +10 -0
  294. package/dist/patterns/rest/types.js.map +1 -0
  295. package/dist/patterns/types.d.ts +105 -0
  296. package/dist/patterns/types.d.ts.map +1 -0
  297. package/dist/patterns/types.js +11 -0
  298. package/dist/patterns/types.js.map +1 -0
  299. package/dist/report/index.d.ts +11 -0
  300. package/dist/report/index.d.ts.map +1 -0
  301. package/dist/report/index.js +55 -0
  302. package/dist/report/index.js.map +1 -0
  303. package/dist/tools/contract-comments.d.ts +48 -0
  304. package/dist/tools/contract-comments.d.ts.map +1 -0
  305. package/dist/tools/contract-comments.js +130 -0
  306. package/dist/tools/contract-comments.js.map +1 -0
  307. package/dist/tools/index.d.ts +6 -0
  308. package/dist/tools/index.d.ts.map +1 -0
  309. package/dist/tools/index.js +6 -0
  310. package/dist/tools/index.js.map +1 -0
  311. package/dist/tools/scaffold.d.ts +38 -0
  312. package/dist/tools/scaffold.d.ts.map +1 -0
  313. package/dist/tools/scaffold.js +373 -0
  314. package/dist/tools/scaffold.js.map +1 -0
  315. package/dist/trace/index.d.ts +28 -0
  316. package/dist/trace/index.d.ts.map +1 -0
  317. package/dist/trace/index.js +45 -0
  318. package/dist/trace/index.js.map +1 -0
  319. package/dist/types.d.ts +135 -0
  320. package/dist/types.d.ts.map +1 -0
  321. package/dist/types.js +22 -0
  322. package/dist/types.js.map +1 -0
  323. package/dist/watch/cache.d.ts +41 -0
  324. package/dist/watch/cache.d.ts.map +1 -0
  325. package/dist/watch/cache.js +230 -0
  326. package/dist/watch/cache.js.map +1 -0
  327. package/dist/watch/index.d.ts +9 -0
  328. package/dist/watch/index.d.ts.map +1 -0
  329. package/dist/watch/index.js +7 -0
  330. package/dist/watch/index.js.map +1 -0
  331. package/dist/watch/project.d.ts +128 -0
  332. package/dist/watch/project.d.ts.map +1 -0
  333. package/dist/watch/project.js +152 -0
  334. package/dist/watch/project.js.map +1 -0
  335. package/dist/watch/watcher.d.ts +76 -0
  336. package/dist/watch/watcher.d.ts.map +1 -0
  337. package/dist/watch/watcher.js +235 -0
  338. package/dist/watch/watcher.js.map +1 -0
  339. package/package.json +70 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * 🔄 OpenAPI Type Converter
3
+ * Converts OpenAPI schemas to NormalizedSchema/NormalizedType
4
+ *
5
+ * This module handles the transformation of OpenAPI 3.x schema objects
6
+ * into the trace-mcp normalized schema format. It supports:
7
+ * - Primitive types (string, number, boolean, integer)
8
+ * - Complex types (object, array)
9
+ * - Composition keywords (allOf, anyOf, oneOf)
10
+ * - Enums and const values
11
+ * - Constraint extraction (min/max, patterns, formats)
12
+ *
13
+ * @module adapters/openapi/convert
14
+ */
15
+ import type { OpenAPIV3 } from 'openapi-types';
16
+ import type { NormalizedSchema, NormalizedType, Constraints, SchemaRef } from '../../core/types.js';
17
+ /** Union type for OpenAPI schemas (either concrete or reference) */
18
+ type OpenAPISchema = OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
19
+ /**
20
+ * Convert an OpenAPI schema to a NormalizedType.
21
+ *
22
+ * Handles all OpenAPI type constructs:
23
+ * - `$ref` → ref kind
24
+ * - `oneOf`/`anyOf` → union kind
25
+ * - `allOf` → intersection kind
26
+ * - `enum` → union of literals
27
+ * - `const` → literal kind
28
+ * - Primitives → primitive kind
29
+ * - `array` → array kind
30
+ * - `object` → object kind
31
+ *
32
+ * @param schema - The OpenAPI schema to convert
33
+ * @returns The normalized type representation
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Convert a string type
38
+ * const type = convertToNormalizedType({ type: 'string' });
39
+ * // { kind: 'primitive', value: 'string' }
40
+ *
41
+ * // Convert an enum
42
+ * const type = convertToNormalizedType({ enum: ['active', 'inactive'] });
43
+ * // { kind: 'union', variants: [{ kind: 'literal', value: 'active' }, ...] }
44
+ *
45
+ * // Convert an array
46
+ * const type = convertToNormalizedType({ type: 'array', items: { type: 'string' } });
47
+ * // { kind: 'array', element: { kind: 'primitive', value: 'string' } }
48
+ * ```
49
+ */
50
+ export declare function convertToNormalizedType(schema: OpenAPISchema): NormalizedType;
51
+ /**
52
+ * Extract validation constraints from an OpenAPI schema.
53
+ *
54
+ * Supports the following constraint types:
55
+ * - String: minLength, maxLength, pattern, format
56
+ * - Number: minimum, maximum
57
+ * - Enum: allowed values
58
+ *
59
+ * @param schema - The OpenAPI schema object to extract constraints from
60
+ * @returns Constraints object if any constraints found, undefined otherwise
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const constraints = extractConstraints({
65
+ * type: 'string',
66
+ * minLength: 1,
67
+ * maxLength: 100,
68
+ * pattern: '^[a-z]+$'
69
+ * });
70
+ * // { minLength: 1, maxLength: 100, pattern: '^[a-z]+$' }
71
+ * ```
72
+ */
73
+ export declare function extractConstraints(schema: OpenAPIV3.SchemaObject): Constraints | undefined;
74
+ /**
75
+ * Convert an OpenAPI schema object to a NormalizedSchema.
76
+ *
77
+ * This is the main conversion function for object-like schemas.
78
+ * It extracts properties, required fields, and handles allOf merging.
79
+ *
80
+ * @param schema - The OpenAPI schema object to convert
81
+ * @param source - The SchemaRef identifying the source
82
+ * @param name - Optional name for the schema
83
+ * @returns The normalized schema representation
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const schema = convertToNormalizedSchema({
88
+ * type: 'object',
89
+ * required: ['id', 'name'],
90
+ * properties: {
91
+ * id: { type: 'integer' },
92
+ * name: { type: 'string' },
93
+ * email: { type: 'string', format: 'email' }
94
+ * }
95
+ * }, { source: 'openapi', id: 'schema:User@./api.yaml' }, 'User');
96
+ * ```
97
+ */
98
+ export declare function convertToNormalizedSchema(schema: OpenAPIV3.SchemaObject, source: SchemaRef, name?: string): NormalizedSchema;
99
+ /**
100
+ * Convert an array of OpenAPI parameters to a NormalizedSchema.
101
+ *
102
+ * This handles path, query, and header parameters, converting
103
+ * each to a property in the resulting schema.
104
+ *
105
+ * @param parameters - Array of OpenAPI parameter objects
106
+ * @param source - The SchemaRef identifying the source
107
+ * @returns A normalized schema with parameters as properties
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const schema = convertParametersToSchema([
112
+ * { name: 'id', in: 'path', required: true, schema: { type: 'integer' } },
113
+ * { name: 'limit', in: 'query', required: false, schema: { type: 'integer' } }
114
+ * ], ref);
115
+ * // Properties: { id: { type: number, optional: false }, limit: { type: number, optional: true } }
116
+ * ```
117
+ */
118
+ export declare function convertParametersToSchema(parameters: OpenAPIV3.ParameterObject[], source: SchemaRef): NormalizedSchema;
119
+ export {};
120
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/adapters/openapi/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EAEd,WAAW,EACX,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,oEAAoE;AACpE,KAAK,aAAa,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC;AAYxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAuE7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,GAAG,WAAW,GAAG,SAAS,CA2C1F;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,CAAC,YAAY,EAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,gBAAgB,CAmElB;AAwCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,SAAS,CAAC,eAAe,EAAE,EACvC,MAAM,EAAE,SAAS,GAChB,gBAAgB,CAsDlB"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * 🔄 OpenAPI Type Converter
3
+ * Converts OpenAPI schemas to NormalizedSchema/NormalizedType
4
+ *
5
+ * This module handles the transformation of OpenAPI 3.x schema objects
6
+ * into the trace-mcp normalized schema format. It supports:
7
+ * - Primitive types (string, number, boolean, integer)
8
+ * - Complex types (object, array)
9
+ * - Composition keywords (allOf, anyOf, oneOf)
10
+ * - Enums and const values
11
+ * - Constraint extraction (min/max, patterns, formats)
12
+ *
13
+ * @module adapters/openapi/convert
14
+ */
15
+ /**
16
+ * Type guard to check if a schema is a $ref reference object.
17
+ *
18
+ * @param schema - The schema to check
19
+ * @returns True if the schema is a reference object
20
+ */
21
+ function isRefObject(schema) {
22
+ return '$ref' in schema;
23
+ }
24
+ /**
25
+ * Convert an OpenAPI schema to a NormalizedType.
26
+ *
27
+ * Handles all OpenAPI type constructs:
28
+ * - `$ref` → ref kind
29
+ * - `oneOf`/`anyOf` → union kind
30
+ * - `allOf` → intersection kind
31
+ * - `enum` → union of literals
32
+ * - `const` → literal kind
33
+ * - Primitives → primitive kind
34
+ * - `array` → array kind
35
+ * - `object` → object kind
36
+ *
37
+ * @param schema - The OpenAPI schema to convert
38
+ * @returns The normalized type representation
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Convert a string type
43
+ * const type = convertToNormalizedType({ type: 'string' });
44
+ * // { kind: 'primitive', value: 'string' }
45
+ *
46
+ * // Convert an enum
47
+ * const type = convertToNormalizedType({ enum: ['active', 'inactive'] });
48
+ * // { kind: 'union', variants: [{ kind: 'literal', value: 'active' }, ...] }
49
+ *
50
+ * // Convert an array
51
+ * const type = convertToNormalizedType({ type: 'array', items: { type: 'string' } });
52
+ * // { kind: 'array', element: { kind: 'primitive', value: 'string' } }
53
+ * ```
54
+ */
55
+ export function convertToNormalizedType(schema) {
56
+ // Handle $ref (circular references that weren't dereferenced)
57
+ if (isRefObject(schema)) {
58
+ const name = schema.$ref.split('/').pop() || 'Unknown';
59
+ return { kind: 'ref', name };
60
+ }
61
+ // Handle composition keywords first (oneOf, anyOf, allOf)
62
+ if (schema.oneOf) {
63
+ const variants = schema.oneOf.map(s => convertToNormalizedType(s));
64
+ return { kind: 'union', variants };
65
+ }
66
+ if (schema.anyOf) {
67
+ const variants = schema.anyOf.map(s => convertToNormalizedType(s));
68
+ return { kind: 'union', variants };
69
+ }
70
+ if (schema.allOf) {
71
+ const members = schema.allOf.map(s => convertToNormalizedType(s));
72
+ return { kind: 'intersection', members };
73
+ }
74
+ // Handle enum (before primitive types)
75
+ if (schema.enum && Array.isArray(schema.enum)) {
76
+ return {
77
+ kind: 'union',
78
+ variants: schema.enum.map(v => ({
79
+ kind: 'literal',
80
+ value: v,
81
+ })),
82
+ };
83
+ }
84
+ // Handle const
85
+ if ('const' in schema && schema.const !== undefined) {
86
+ return { kind: 'literal', value: schema.const };
87
+ }
88
+ // Handle by OpenAPI type keyword
89
+ switch (schema.type) {
90
+ case 'string':
91
+ return { kind: 'primitive', value: 'string' };
92
+ case 'boolean':
93
+ return { kind: 'primitive', value: 'boolean' };
94
+ case 'integer':
95
+ case 'number':
96
+ return { kind: 'primitive', value: 'number' };
97
+ case 'array': {
98
+ const element = schema.items
99
+ ? convertToNormalizedType(schema.items)
100
+ : { kind: 'unknown' };
101
+ return { kind: 'array', element };
102
+ }
103
+ case 'object': {
104
+ const nestedSchema = convertToNormalizedSchema(schema, { source: 'openapi', id: '' });
105
+ return { kind: 'object', schema: nestedSchema };
106
+ }
107
+ default:
108
+ // No type specified - check if has properties (implicit object)
109
+ if (schema.properties) {
110
+ const nestedSchema = convertToNormalizedSchema(schema, { source: 'openapi', id: '' });
111
+ return { kind: 'object', schema: nestedSchema };
112
+ }
113
+ return { kind: 'any' };
114
+ }
115
+ }
116
+ /**
117
+ * Extract validation constraints from an OpenAPI schema.
118
+ *
119
+ * Supports the following constraint types:
120
+ * - String: minLength, maxLength, pattern, format
121
+ * - Number: minimum, maximum
122
+ * - Enum: allowed values
123
+ *
124
+ * @param schema - The OpenAPI schema object to extract constraints from
125
+ * @returns Constraints object if any constraints found, undefined otherwise
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const constraints = extractConstraints({
130
+ * type: 'string',
131
+ * minLength: 1,
132
+ * maxLength: 100,
133
+ * pattern: '^[a-z]+$'
134
+ * });
135
+ * // { minLength: 1, maxLength: 100, pattern: '^[a-z]+$' }
136
+ * ```
137
+ */
138
+ export function extractConstraints(schema) {
139
+ const constraints = {};
140
+ let hasConstraints = false;
141
+ // String constraints
142
+ if (schema.minLength !== undefined) {
143
+ constraints.minLength = schema.minLength;
144
+ hasConstraints = true;
145
+ }
146
+ if (schema.maxLength !== undefined) {
147
+ constraints.maxLength = schema.maxLength;
148
+ hasConstraints = true;
149
+ }
150
+ if (schema.pattern !== undefined) {
151
+ constraints.pattern = schema.pattern;
152
+ hasConstraints = true;
153
+ }
154
+ if (schema.format !== undefined) {
155
+ constraints.format = schema.format;
156
+ hasConstraints = true;
157
+ }
158
+ // Number constraints
159
+ if (schema.minimum !== undefined) {
160
+ constraints.minimum = schema.minimum;
161
+ hasConstraints = true;
162
+ }
163
+ if (schema.maximum !== undefined) {
164
+ constraints.maximum = schema.maximum;
165
+ hasConstraints = true;
166
+ }
167
+ // Enum constraint
168
+ if (schema.enum !== undefined) {
169
+ constraints.enum = schema.enum;
170
+ hasConstraints = true;
171
+ }
172
+ return hasConstraints ? constraints : undefined;
173
+ }
174
+ /**
175
+ * Convert an OpenAPI schema object to a NormalizedSchema.
176
+ *
177
+ * This is the main conversion function for object-like schemas.
178
+ * It extracts properties, required fields, and handles allOf merging.
179
+ *
180
+ * @param schema - The OpenAPI schema object to convert
181
+ * @param source - The SchemaRef identifying the source
182
+ * @param name - Optional name for the schema
183
+ * @returns The normalized schema representation
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * const schema = convertToNormalizedSchema({
188
+ * type: 'object',
189
+ * required: ['id', 'name'],
190
+ * properties: {
191
+ * id: { type: 'integer' },
192
+ * name: { type: 'string' },
193
+ * email: { type: 'string', format: 'email' }
194
+ * }
195
+ * }, { source: 'openapi', id: 'schema:User@./api.yaml' }, 'User');
196
+ * ```
197
+ */
198
+ export function convertToNormalizedSchema(schema, source, name) {
199
+ const properties = {};
200
+ const required = schema.required || [];
201
+ // Handle allOf by merging all constituent schemas
202
+ if (schema.allOf) {
203
+ const merged = mergeAllOfSchemas(schema.allOf);
204
+ return convertToNormalizedSchema(merged, source, name);
205
+ }
206
+ // Extract and convert properties
207
+ if (schema.properties) {
208
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
209
+ const prop = propSchema;
210
+ const isRequired = required.includes(propName);
211
+ if (isRefObject(prop)) {
212
+ // Handle $ref properties
213
+ const refName = prop.$ref.split('/').pop() || 'Unknown';
214
+ properties[propName] = {
215
+ type: { kind: 'ref', name: refName },
216
+ optional: !isRequired,
217
+ nullable: false,
218
+ readonly: false,
219
+ deprecated: false,
220
+ };
221
+ }
222
+ else {
223
+ // Handle concrete schema properties
224
+ const isNullable = prop.nullable === true;
225
+ const isDeprecated = prop.deprecated === true;
226
+ const isReadonly = prop.readOnly === true;
227
+ const description = prop.description;
228
+ const constraints = extractConstraints(prop);
229
+ properties[propName] = {
230
+ type: convertToNormalizedType(prop),
231
+ optional: !isRequired,
232
+ nullable: isNullable,
233
+ readonly: isReadonly,
234
+ deprecated: isDeprecated,
235
+ description,
236
+ constraints,
237
+ };
238
+ }
239
+ }
240
+ }
241
+ const result = {
242
+ properties,
243
+ required,
244
+ source,
245
+ };
246
+ if (name) {
247
+ result.name = name;
248
+ }
249
+ // Handle additionalProperties
250
+ if (schema.additionalProperties !== undefined) {
251
+ if (typeof schema.additionalProperties === 'boolean') {
252
+ result.additionalProperties = schema.additionalProperties;
253
+ }
254
+ else {
255
+ result.additionalProperties = convertToNormalizedType(schema.additionalProperties);
256
+ }
257
+ }
258
+ return result;
259
+ }
260
+ /**
261
+ * Merge allOf schemas into a single combined schema object.
262
+ *
263
+ * This function flattens allOf arrays by combining properties
264
+ * and required arrays from all constituent schemas.
265
+ *
266
+ * @param allOf - Array of schemas to merge
267
+ * @returns A single merged schema object
268
+ *
269
+ * @internal
270
+ */
271
+ function mergeAllOfSchemas(allOf) {
272
+ const merged = {
273
+ type: 'object',
274
+ properties: {},
275
+ required: [],
276
+ };
277
+ for (const schema of allOf) {
278
+ if (isRefObject(schema)) {
279
+ // Skip refs in merge - they should be dereferenced already
280
+ continue;
281
+ }
282
+ // Merge properties
283
+ if (schema.properties) {
284
+ merged.properties = { ...merged.properties, ...schema.properties };
285
+ }
286
+ // Merge required arrays
287
+ if (schema.required) {
288
+ merged.required = [...(merged.required || []), ...schema.required];
289
+ }
290
+ }
291
+ return merged;
292
+ }
293
+ /**
294
+ * Convert an array of OpenAPI parameters to a NormalizedSchema.
295
+ *
296
+ * This handles path, query, and header parameters, converting
297
+ * each to a property in the resulting schema.
298
+ *
299
+ * @param parameters - Array of OpenAPI parameter objects
300
+ * @param source - The SchemaRef identifying the source
301
+ * @returns A normalized schema with parameters as properties
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * const schema = convertParametersToSchema([
306
+ * { name: 'id', in: 'path', required: true, schema: { type: 'integer' } },
307
+ * { name: 'limit', in: 'query', required: false, schema: { type: 'integer' } }
308
+ * ], ref);
309
+ * // Properties: { id: { type: number, optional: false }, limit: { type: number, optional: true } }
310
+ * ```
311
+ */
312
+ export function convertParametersToSchema(parameters, source) {
313
+ const properties = {};
314
+ const required = [];
315
+ for (const param of parameters) {
316
+ const paramSchema = param.schema;
317
+ if (!paramSchema) {
318
+ // Parameter without schema - treat as any
319
+ properties[param.name] = {
320
+ type: { kind: 'any' },
321
+ optional: !param.required,
322
+ nullable: false,
323
+ readonly: false,
324
+ deprecated: param.deprecated || false,
325
+ description: param.description,
326
+ };
327
+ continue;
328
+ }
329
+ if (isRefObject(paramSchema)) {
330
+ // Handle $ref parameters
331
+ const refName = paramSchema.$ref.split('/').pop() || 'Unknown';
332
+ properties[param.name] = {
333
+ type: { kind: 'ref', name: refName },
334
+ optional: !param.required,
335
+ nullable: false,
336
+ readonly: false,
337
+ deprecated: param.deprecated || false,
338
+ description: param.description,
339
+ };
340
+ }
341
+ else {
342
+ // Handle concrete schema parameters
343
+ properties[param.name] = {
344
+ type: convertToNormalizedType(paramSchema),
345
+ optional: !param.required,
346
+ nullable: paramSchema.nullable || false,
347
+ readonly: paramSchema.readOnly || false,
348
+ deprecated: param.deprecated || false,
349
+ description: param.description,
350
+ constraints: extractConstraints(paramSchema),
351
+ };
352
+ }
353
+ if (param.required) {
354
+ required.push(param.name);
355
+ }
356
+ }
357
+ return {
358
+ properties,
359
+ required,
360
+ source,
361
+ };
362
+ }
363
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/adapters/openapi/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 📋 OpenAPI Schema Adapter
3
+ * Extracts schemas from OpenAPI 3.x / Swagger specifications
4
+ *
5
+ * This module provides a complete adapter for working with OpenAPI
6
+ * specifications in the trace-mcp schema extraction framework.
7
+ *
8
+ * ## Features
9
+ * - 📄 Parse OpenAPI 3.x specifications
10
+ * - 🔗 Reference ID parsing and building
11
+ * - 🔄 Type conversion to normalized format
12
+ * - 📊 Constraint extraction (validation rules)
13
+ * - 🗂️ Endpoint and component schema extraction
14
+ *
15
+ * ## Usage
16
+ * ```typescript
17
+ * import { OpenAPIAdapter, parseOpenAPIRef } from '@trace-mcp/adapters/openapi';
18
+ * import { registerAdapter } from '@trace-mcp/adapters/registry';
19
+ *
20
+ * // Register the adapter
21
+ * registerAdapter(new OpenAPIAdapter());
22
+ *
23
+ * // Parse a ref ID
24
+ * const ref = parseOpenAPIRef('endpoint:GET:/users@./api.yaml');
25
+ *
26
+ * // Extract a schema
27
+ * const adapter = new OpenAPIAdapter();
28
+ * const schema = await adapter.extract({
29
+ * source: 'openapi',
30
+ * id: 'schema:User@./api.yaml'
31
+ * });
32
+ * ```
33
+ *
34
+ * @module adapters/openapi
35
+ */
36
+ export { OpenAPIAdapter } from './adapter.js';
37
+ export { parseOpenAPIRef, buildOpenAPIRefId, type OpenAPIRef } from './parser.js';
38
+ export { convertToNormalizedSchema, convertToNormalizedType, convertParametersToSchema, extractConstraints, } from './convert.js';
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMlF,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 📋 OpenAPI Schema Adapter
3
+ * Extracts schemas from OpenAPI 3.x / Swagger specifications
4
+ *
5
+ * This module provides a complete adapter for working with OpenAPI
6
+ * specifications in the trace-mcp schema extraction framework.
7
+ *
8
+ * ## Features
9
+ * - 📄 Parse OpenAPI 3.x specifications
10
+ * - 🔗 Reference ID parsing and building
11
+ * - 🔄 Type conversion to normalized format
12
+ * - 📊 Constraint extraction (validation rules)
13
+ * - 🗂️ Endpoint and component schema extraction
14
+ *
15
+ * ## Usage
16
+ * ```typescript
17
+ * import { OpenAPIAdapter, parseOpenAPIRef } from '@trace-mcp/adapters/openapi';
18
+ * import { registerAdapter } from '@trace-mcp/adapters/registry';
19
+ *
20
+ * // Register the adapter
21
+ * registerAdapter(new OpenAPIAdapter());
22
+ *
23
+ * // Parse a ref ID
24
+ * const ref = parseOpenAPIRef('endpoint:GET:/users@./api.yaml');
25
+ *
26
+ * // Extract a schema
27
+ * const adapter = new OpenAPIAdapter();
28
+ * const schema = await adapter.extract({
29
+ * source: 'openapi',
30
+ * id: 'schema:User@./api.yaml'
31
+ * });
32
+ * ```
33
+ *
34
+ * @module adapters/openapi
35
+ */
36
+ // ============================================================================
37
+ // Main Adapter
38
+ // ============================================================================
39
+ export { OpenAPIAdapter } from './adapter.js';
40
+ // ============================================================================
41
+ // Parser Utilities
42
+ // ============================================================================
43
+ export { parseOpenAPIRef, buildOpenAPIRefId } from './parser.js';
44
+ // ============================================================================
45
+ // Conversion Utilities
46
+ // ============================================================================
47
+ export { convertToNormalizedSchema, convertToNormalizedType, convertParametersToSchema, extractConstraints, } from './convert.js';
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/openapi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAElF,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}