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 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/adapters/trpc/extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 📋 tRPC Schema Adapter Module
3
+ *
4
+ * Exports for tRPC router schema extraction and normalization.
5
+ *
6
+ * This module provides tools to extract Zod schemas from tRPC
7
+ * router definitions and convert them to the framework's
8
+ * NormalizedSchema format for contract validation.
9
+ *
10
+ * @module adapters/trpc
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { TRPCAdapter, parseTRPCRef, buildTRPCRefId } from './adapters/trpc/index.js';
15
+ *
16
+ * // Use the adapter directly
17
+ * const adapter = new TRPCAdapter();
18
+ * const schema = await adapter.extract({
19
+ * source: 'trpc',
20
+ * id: 'trpc:users.getById@./router.ts'
21
+ * });
22
+ *
23
+ * // Or parse/build ref IDs manually
24
+ * const ref = parseTRPCRef('trpc:users.create.output@./router.ts');
25
+ * const id = buildTRPCRefId('users.create', 'output', './router.ts');
26
+ * ```
27
+ */
28
+ export { TRPCAdapter } from './adapter.js';
29
+ export { parseTRPCRef, buildTRPCRefId, type TRPCRef } from './parser.js';
30
+ export { extractProcedures, createProject, type ProcedureInfo, } from './extractor.js';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/trpc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 📋 tRPC Schema Adapter Module
3
+ *
4
+ * Exports for tRPC router schema extraction and normalization.
5
+ *
6
+ * This module provides tools to extract Zod schemas from tRPC
7
+ * router definitions and convert them to the framework's
8
+ * NormalizedSchema format for contract validation.
9
+ *
10
+ * @module adapters/trpc
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { TRPCAdapter, parseTRPCRef, buildTRPCRefId } from './adapters/trpc/index.js';
15
+ *
16
+ * // Use the adapter directly
17
+ * const adapter = new TRPCAdapter();
18
+ * const schema = await adapter.extract({
19
+ * source: 'trpc',
20
+ * id: 'trpc:users.getById@./router.ts'
21
+ * });
22
+ *
23
+ * // Or parse/build ref IDs manually
24
+ * const ref = parseTRPCRef('trpc:users.create.output@./router.ts');
25
+ * const id = buildTRPCRefId('users.create', 'output', './router.ts');
26
+ * ```
27
+ */
28
+ // ============================================================================
29
+ // Adapter
30
+ // ============================================================================
31
+ export { TRPCAdapter } from './adapter.js';
32
+ // ============================================================================
33
+ // Parser Utilities
34
+ // ============================================================================
35
+ export { parseTRPCRef, buildTRPCRefId } from './parser.js';
36
+ // ============================================================================
37
+ // Extractor Utilities
38
+ // ============================================================================
39
+ export { extractProcedures, createProject, } from './extractor.js';
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/trpc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * 🔗 tRPC Ref ID Parser
3
+ *
4
+ * Parses and builds SchemaRef ID strings for the tRPC adapter.
5
+ *
6
+ * The tRPC adapter uses structured reference IDs to identify
7
+ * specific schemas within tRPC router files. Each ID encodes:
8
+ * - The procedure path (e.g., `users.getById`)
9
+ * - The schema type (`input` or `output`)
10
+ * - The source file path
11
+ *
12
+ * This module provides utilities to parse these IDs and
13
+ * reconstruct them from components.
14
+ *
15
+ * @module adapters/trpc/parser
16
+ */
17
+ /**
18
+ * Parsed components of a tRPC reference ID.
19
+ *
20
+ * Reference IDs encode the procedure path, schema type, and file path:
21
+ * - `trpc:users.getById@./router.ts` - Input schema (default)
22
+ * - `trpc:users.getById.input@./router.ts` - Explicit input
23
+ * - `trpc:users.getById.output@./router.ts` - Output schema
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const ref: TRPCRef = {
28
+ * path: 'users.getById',
29
+ * schemaType: 'input',
30
+ * filePath: './server/routers/user.ts'
31
+ * };
32
+ * ```
33
+ */
34
+ export interface TRPCRef {
35
+ /**
36
+ * Procedure path using dot notation.
37
+ * For nested routers, this includes the full path (e.g., `users.posts.list`).
38
+ */
39
+ path: string;
40
+ /**
41
+ * Schema type to extract.
42
+ * - `input`: The procedure's input validation schema (from `.input()`)
43
+ * - `output`: The procedure's output validation schema (from `.output()`)
44
+ */
45
+ schemaType: 'input' | 'output';
46
+ /** Path to the TypeScript source file containing the router */
47
+ filePath: string;
48
+ }
49
+ /**
50
+ * Parse a tRPC reference ID string into its components.
51
+ *
52
+ * Supported formats:
53
+ * - `trpc:{path}@{file}` - Default (input schema)
54
+ * - `trpc:{path}.input@{file}` - Explicit input schema
55
+ * - `trpc:{path}.output@{file}` - Explicit output schema
56
+ *
57
+ * The parser handles these edge cases:
58
+ * - Empty or null input → returns null
59
+ * - Missing `trpc:` prefix → returns null
60
+ * - Missing `@` separator → returns null
61
+ * - Empty path or file → returns null
62
+ *
63
+ * @param refId - The tRPC reference ID string to parse
64
+ * @returns Parsed TRPCRef object, or null if the ID is invalid
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * // Parse a default (input) reference
69
+ * parseTRPCRef('trpc:users.getById@./router.ts')
70
+ * // → { path: 'users.getById', schemaType: 'input', filePath: './router.ts' }
71
+ *
72
+ * // Parse an explicit output reference
73
+ * parseTRPCRef('trpc:users.create.output@./router.ts')
74
+ * // → { path: 'users.create', schemaType: 'output', filePath: './router.ts' }
75
+ *
76
+ * // Handle nested router paths
77
+ * parseTRPCRef('trpc:admin.users.permissions.grant@./router.ts')
78
+ * // → { path: 'admin.users.permissions.grant', schemaType: 'input', filePath: './router.ts' }
79
+ *
80
+ * // Invalid inputs return null
81
+ * parseTRPCRef('invalid') // → null
82
+ * parseTRPCRef('') // → null
83
+ * ```
84
+ */
85
+ export declare function parseTRPCRef(refId: string): TRPCRef | null;
86
+ /**
87
+ * Build a tRPC reference ID string from its components.
88
+ *
89
+ * This is the inverse of `parseTRPCRef` - it takes parsed
90
+ * components and constructs a valid reference ID string.
91
+ *
92
+ * Format conventions:
93
+ * - Input schemas use the default format without `.input` suffix
94
+ * - Output schemas explicitly include the `.output` suffix
95
+ * - This keeps the common case (input) shorter
96
+ *
97
+ * @param path - Procedure path using dot notation (e.g., `users.getById`)
98
+ * @param schemaType - Schema type: `'input'` or `'output'`
99
+ * @param filePath - Path to the source file containing the router
100
+ * @returns The formatted tRPC reference ID string
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // Build an input reference (default, no suffix)
105
+ * buildTRPCRefId('users.getById', 'input', './router.ts')
106
+ * // → 'trpc:users.getById@./router.ts'
107
+ *
108
+ * // Build an output reference (explicit suffix)
109
+ * buildTRPCRefId('users.create', 'output', './router.ts')
110
+ * // → 'trpc:users.create.output@./router.ts'
111
+ *
112
+ * // Round-trip example
113
+ * const ref = parseTRPCRef('trpc:users.list@./router.ts');
114
+ * const id = buildTRPCRefId(ref.path, ref.schemaType, ref.filePath);
115
+ * // id === 'trpc:users.list@./router.ts'
116
+ * ```
117
+ */
118
+ export declare function buildTRPCRefId(path: string, schemaType: 'input' | 'output', filePath: string): string;
119
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/adapters/trpc/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE/B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAmC1D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,GAAG,QAAQ,EAC9B,QAAQ,EAAE,MAAM,GACf,MAAM,CAMR"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * 🔗 tRPC Ref ID Parser
3
+ *
4
+ * Parses and builds SchemaRef ID strings for the tRPC adapter.
5
+ *
6
+ * The tRPC adapter uses structured reference IDs to identify
7
+ * specific schemas within tRPC router files. Each ID encodes:
8
+ * - The procedure path (e.g., `users.getById`)
9
+ * - The schema type (`input` or `output`)
10
+ * - The source file path
11
+ *
12
+ * This module provides utilities to parse these IDs and
13
+ * reconstruct them from components.
14
+ *
15
+ * @module adapters/trpc/parser
16
+ */
17
+ // ============================================================================
18
+ // Parsing
19
+ // ============================================================================
20
+ /**
21
+ * Parse a tRPC reference ID string into its components.
22
+ *
23
+ * Supported formats:
24
+ * - `trpc:{path}@{file}` - Default (input schema)
25
+ * - `trpc:{path}.input@{file}` - Explicit input schema
26
+ * - `trpc:{path}.output@{file}` - Explicit output schema
27
+ *
28
+ * The parser handles these edge cases:
29
+ * - Empty or null input → returns null
30
+ * - Missing `trpc:` prefix → returns null
31
+ * - Missing `@` separator → returns null
32
+ * - Empty path or file → returns null
33
+ *
34
+ * @param refId - The tRPC reference ID string to parse
35
+ * @returns Parsed TRPCRef object, or null if the ID is invalid
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Parse a default (input) reference
40
+ * parseTRPCRef('trpc:users.getById@./router.ts')
41
+ * // → { path: 'users.getById', schemaType: 'input', filePath: './router.ts' }
42
+ *
43
+ * // Parse an explicit output reference
44
+ * parseTRPCRef('trpc:users.create.output@./router.ts')
45
+ * // → { path: 'users.create', schemaType: 'output', filePath: './router.ts' }
46
+ *
47
+ * // Handle nested router paths
48
+ * parseTRPCRef('trpc:admin.users.permissions.grant@./router.ts')
49
+ * // → { path: 'admin.users.permissions.grant', schemaType: 'input', filePath: './router.ts' }
50
+ *
51
+ * // Invalid inputs return null
52
+ * parseTRPCRef('invalid') // → null
53
+ * parseTRPCRef('') // → null
54
+ * ```
55
+ */
56
+ export function parseTRPCRef(refId) {
57
+ // Must have trpc: prefix
58
+ if (!refId || !refId.startsWith('trpc:')) {
59
+ return null;
60
+ }
61
+ // Remove prefix
62
+ const rest = refId.slice(5); // 'trpc:'.length
63
+ // Must have @ separator
64
+ const atIndex = rest.lastIndexOf('@');
65
+ if (atIndex === -1 || atIndex === 0) {
66
+ return null;
67
+ }
68
+ const pathPart = rest.slice(0, atIndex);
69
+ const filePath = rest.slice(atIndex + 1);
70
+ if (!pathPart || !filePath) {
71
+ return null;
72
+ }
73
+ // Determine schema type and actual path
74
+ let schemaType = 'input';
75
+ let path = pathPart;
76
+ if (pathPart.endsWith('.input')) {
77
+ schemaType = 'input';
78
+ path = pathPart.slice(0, -6); // '.input'.length
79
+ }
80
+ else if (pathPart.endsWith('.output')) {
81
+ schemaType = 'output';
82
+ path = pathPart.slice(0, -7); // '.output'.length
83
+ }
84
+ return { path, schemaType, filePath };
85
+ }
86
+ // ============================================================================
87
+ // Building
88
+ // ============================================================================
89
+ /**
90
+ * Build a tRPC reference ID string from its components.
91
+ *
92
+ * This is the inverse of `parseTRPCRef` - it takes parsed
93
+ * components and constructs a valid reference ID string.
94
+ *
95
+ * Format conventions:
96
+ * - Input schemas use the default format without `.input` suffix
97
+ * - Output schemas explicitly include the `.output` suffix
98
+ * - This keeps the common case (input) shorter
99
+ *
100
+ * @param path - Procedure path using dot notation (e.g., `users.getById`)
101
+ * @param schemaType - Schema type: `'input'` or `'output'`
102
+ * @param filePath - Path to the source file containing the router
103
+ * @returns The formatted tRPC reference ID string
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // Build an input reference (default, no suffix)
108
+ * buildTRPCRefId('users.getById', 'input', './router.ts')
109
+ * // → 'trpc:users.getById@./router.ts'
110
+ *
111
+ * // Build an output reference (explicit suffix)
112
+ * buildTRPCRefId('users.create', 'output', './router.ts')
113
+ * // → 'trpc:users.create.output@./router.ts'
114
+ *
115
+ * // Round-trip example
116
+ * const ref = parseTRPCRef('trpc:users.list@./router.ts');
117
+ * const id = buildTRPCRefId(ref.path, ref.schemaType, ref.filePath);
118
+ * // id === 'trpc:users.list@./router.ts'
119
+ * ```
120
+ */
121
+ export function buildTRPCRefId(path, schemaType, filePath) {
122
+ // Default (input) doesn't need suffix for brevity
123
+ if (schemaType === 'input') {
124
+ return `trpc:${path}@${filePath}`;
125
+ }
126
+ return `trpc:${path}.${schemaType}@${filePath}`;
127
+ }
128
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/adapters/trpc/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyCH,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,yBAAyB;IACzB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;IAE9C,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,IAAI,UAAU,GAAuB,OAAO,CAAC;IAC7C,IAAI,IAAI,GAAG,QAAQ,CAAC;IAEpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,UAAU,GAAG,OAAO,CAAC;QACrB,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;IAClD,CAAC;SAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,UAAU,GAAG,QAAQ,CAAC;QACtB,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;IACnD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,UAA8B,EAC9B,QAAgB;IAEhB,kDAAkD;IAClD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,IAAI,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Trace MCP - Schema Comparator
3
+ * Compares producer schemas (backend) against consumer usage (frontend)
4
+ */
5
+ import type { ProducerSchema, ConsumerSchema, TraceResult, Mismatch } from '../types.js';
6
+ import type { DataFlowDirection } from '../core/types.js';
7
+ export interface CompareOptions {
8
+ /** Strict mode: treat missing optional properties as warnings */
9
+ strict?: boolean;
10
+ /** Ignore certain property names */
11
+ ignoreProperties?: string[];
12
+ /**
13
+ * Data flow direction for compatibility checking
14
+ * - producer_to_consumer: API response flow (extra producer fields OK)
15
+ * - consumer_to_producer: API request flow (extra consumer fields OK)
16
+ * - bidirectional: Must match exactly
17
+ * @default "producer_to_consumer"
18
+ */
19
+ direction?: DataFlowDirection;
20
+ }
21
+ /**
22
+ * Compare backend producer schemas against frontend consumer expectations
23
+ */
24
+ export declare function compareSchemas(producers: ProducerSchema[], consumers: ConsumerSchema[], options?: CompareOptions): TraceResult;
25
+ /**
26
+ * Quick check: does producer provide all properties consumer expects?
27
+ */
28
+ export declare function checkPropertyCoverage(producer: ProducerSchema, consumer: ConsumerSchema): Mismatch[];
29
+ /**
30
+ * Convenience function: Compare a backend directory against a frontend directory
31
+ */
32
+ export declare function compareDirectories(backendDir: string, frontendDir: string, options?: CompareOptions): Promise<TraceResult>;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compare/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAyB,MAAM,aAAa,CAAC;AAChH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,cAAc,EAAE,EAC3B,SAAS,EAAE,cAAc,EAAE,EAC3B,OAAO,GAAE,cAAmB,GAC3B,WAAW,CAgEb;AAuND;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB,QAAQ,EAAE,CAEZ;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CActB"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Trace MCP - Schema Comparator
3
+ * Compares producer schemas (backend) against consumer usage (frontend)
4
+ */
5
+ /**
6
+ * Compare backend producer schemas against frontend consumer expectations
7
+ */
8
+ export function compareSchemas(producers, consumers, options = {}) {
9
+ // Default to producer_to_consumer (API response pattern)
10
+ const direction = options.direction || 'producer_to_consumer';
11
+ if (process.env.DEBUG_TRACE_MCP) {
12
+ console.error(`[Comparator] Comparing ${producers.length} producers vs ${consumers.length} consumers`);
13
+ console.error(`[Comparator] Direction: ${direction}`);
14
+ }
15
+ const matches = [];
16
+ const mismatches = [];
17
+ // Index producers by tool name for quick lookup
18
+ const producerMap = new Map();
19
+ for (const producer of producers) {
20
+ producerMap.set(producer.toolName, producer);
21
+ }
22
+ // Analyze each consumer usage
23
+ for (const consumer of consumers) {
24
+ const producer = producerMap.get(consumer.toolName);
25
+ if (!producer) {
26
+ // Tool not found in producer definitions
27
+ mismatches.push({
28
+ toolName: consumer.toolName,
29
+ issueType: 'UNKNOWN_TOOL',
30
+ description: `Tool "${consumer.toolName}" is called but not defined in producer`,
31
+ consumerLocation: consumer.callSite,
32
+ });
33
+ continue;
34
+ }
35
+ // Check argument mismatches (consumer → producer direction)
36
+ const argMismatches = checkArgumentMismatches(producer, consumer, direction);
37
+ mismatches.push(...argMismatches);
38
+ // Check expected property mismatches (producer → consumer direction)
39
+ const propMismatches = checkPropertyMismatches(producer, consumer, options, direction);
40
+ mismatches.push(...propMismatches);
41
+ // If no mismatches for this call, it's a match
42
+ if (argMismatches.length === 0 && propMismatches.length === 0) {
43
+ matches.push({
44
+ toolName: consumer.toolName,
45
+ producerLocation: producer.location,
46
+ consumerLocation: consumer.callSite,
47
+ });
48
+ }
49
+ }
50
+ return {
51
+ timestamp: new Date().toISOString(),
52
+ producerSource: producers.length > 0 ? producers[0].location.file : '',
53
+ consumerSource: consumers.length > 0 ? consumers[0].callSite.file : '',
54
+ matches,
55
+ mismatches,
56
+ summary: {
57
+ totalTools: producers.length,
58
+ totalCalls: consumers.length,
59
+ matchCount: matches.length,
60
+ mismatchCount: mismatches.length,
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Check if consumer provides correct arguments to the tool
66
+ * This represents consumer → producer data flow (request direction)
67
+ */
68
+ function checkArgumentMismatches(producer, consumer, direction) {
69
+ const mismatches = [];
70
+ const inputSchema = producer.inputSchema;
71
+ if (!inputSchema.properties) {
72
+ return mismatches;
73
+ }
74
+ const requiredArgs = inputSchema.required || [];
75
+ const definedArgs = Object.keys(inputSchema.properties);
76
+ const providedArgs = Object.keys(consumer.argumentsProvided);
77
+ // Check for missing required arguments
78
+ // This is ALWAYS an error regardless of direction
79
+ for (const required of requiredArgs) {
80
+ if (!providedArgs.includes(required)) {
81
+ mismatches.push({
82
+ toolName: consumer.toolName,
83
+ issueType: 'ARGUMENT_ERROR',
84
+ description: `Missing required argument "${required}"`,
85
+ producerLocation: producer.location,
86
+ consumerLocation: consumer.callSite,
87
+ details: { missingArg: required, providedArgs },
88
+ });
89
+ }
90
+ }
91
+ // Check for unknown arguments (consumer → producer direction)
92
+ // Treatment depends on direction:
93
+ // - consumer_to_producer: extra consumer args are OK (producer ignores them)
94
+ // - producer_to_consumer: this shouldn't happen for arguments (arguments go consumer → producer)
95
+ // - bidirectional: must match exactly
96
+ for (const provided of providedArgs) {
97
+ if (!definedArgs.includes(provided)) {
98
+ // For consumer_to_producer direction, extra consumer fields are acceptable (downgrade to warning)
99
+ const isError = direction !== 'consumer_to_producer';
100
+ // Check for similar names (potential typo or naming convention mismatch)
101
+ const similar = findSimilarName(provided, definedArgs);
102
+ if (isError) {
103
+ mismatches.push({
104
+ toolName: consumer.toolName,
105
+ issueType: 'ARGUMENT_ERROR',
106
+ description: similar
107
+ ? `Unknown argument "${provided}" - did you mean "${similar}"?`
108
+ : `Unknown argument "${provided}" not in tool schema`,
109
+ producerLocation: producer.location,
110
+ consumerLocation: consumer.callSite,
111
+ details: { unknownArg: provided, definedArgs, suggestedArg: similar },
112
+ });
113
+ }
114
+ else {
115
+ // In consumer_to_producer mode, this is just informational
116
+ // (We don't have a warnings array in current schema, so skip for now)
117
+ // TODO: Add warnings support
118
+ }
119
+ }
120
+ }
121
+ return mismatches;
122
+ }
123
+ /**
124
+ * Check if consumer expects properties that producer doesn't provide
125
+ * This represents producer → consumer data flow (response direction)
126
+ * This is the core mismatch detection (e.g., expecting "characterClass" but producer has "class")
127
+ */
128
+ function checkPropertyMismatches(producer, consumer, options, direction) {
129
+ const mismatches = [];
130
+ const ignoreProps = options.ignoreProperties || [];
131
+ // For now, we can't fully know the output schema structure
132
+ // But we can detect common patterns and warn about potential issues
133
+ for (const expectedProp of consumer.expectedProperties) {
134
+ if (ignoreProps.includes(expectedProp))
135
+ continue;
136
+ // Check for common naming convention mismatches
137
+ const potentialMatch = detectNamingMismatch(expectedProp, producer);
138
+ if (potentialMatch) {
139
+ // Property mismatches in producer → consumer direction:
140
+ // - producer_to_consumer: consumer expects property producer doesn't have = ERROR
141
+ // - consumer_to_producer: not applicable (this checks response properties)
142
+ // - bidirectional: must match = ERROR
143
+ const isError = direction !== 'consumer_to_producer';
144
+ if (isError) {
145
+ mismatches.push({
146
+ toolName: consumer.toolName,
147
+ issueType: 'MISSING_PROPERTY',
148
+ description: `Consumer expects "${expectedProp}" but producer has "${potentialMatch}"`,
149
+ producerLocation: producer.location,
150
+ consumerLocation: consumer.callSite,
151
+ details: {
152
+ expected: expectedProp,
153
+ actual: potentialMatch,
154
+ suggestion: `Change "${expectedProp}" to "${potentialMatch}" in consumer code`,
155
+ direction: direction,
156
+ },
157
+ });
158
+ }
159
+ }
160
+ }
161
+ return mismatches;
162
+ }
163
+ /**
164
+ * Detect if expected property has a naming convention mismatch
165
+ */
166
+ function detectNamingMismatch(expectedProp, producer) {
167
+ // Common patterns to check
168
+ const patterns = [
169
+ // characterClass vs class
170
+ [/^(.+)Class$/, (m) => m[1].toLowerCase()],
171
+ [/^(.+)_class$/, (m) => m[1]],
172
+ // className vs class
173
+ [/^class(.+)$/, (m) => m[1].toLowerCase()],
174
+ // charClass vs class
175
+ [/^char(.+)$/i, (m) => m[1].toLowerCase()],
176
+ ];
177
+ // Check if expected property follows a pattern that suggests a simpler name in producer
178
+ for (const [pattern, transform] of patterns) {
179
+ const match = expectedProp.match(pattern);
180
+ if (match) {
181
+ const simpleName = transform(match);
182
+ // Check if producer's input schema has the simpler name
183
+ // (This is a heuristic - in reality we'd check the output)
184
+ if (producer.inputSchema.properties?.[simpleName]) {
185
+ return simpleName;
186
+ }
187
+ // Also check common variations
188
+ if (simpleName === 'class') {
189
+ return 'class'; // Known naming conflict with JS reserved word
190
+ }
191
+ }
192
+ }
193
+ return null;
194
+ }
195
+ /**
196
+ * Find a similar name in a list (for typo detection)
197
+ */
198
+ function findSimilarName(name, candidates) {
199
+ const nameLower = name.toLowerCase();
200
+ for (const candidate of candidates) {
201
+ const candidateLower = candidate.toLowerCase();
202
+ // Exact match (different case)
203
+ if (nameLower === candidateLower) {
204
+ return candidate;
205
+ }
206
+ // One is a suffix/prefix of the other
207
+ if (nameLower.includes(candidateLower) || candidateLower.includes(nameLower)) {
208
+ return candidate;
209
+ }
210
+ // Levenshtein distance <= 2
211
+ if (levenshteinDistance(nameLower, candidateLower) <= 2) {
212
+ return candidate;
213
+ }
214
+ }
215
+ return null;
216
+ }
217
+ /**
218
+ * Simple Levenshtein distance for typo detection
219
+ */
220
+ function levenshteinDistance(a, b) {
221
+ const matrix = [];
222
+ for (let i = 0; i <= b.length; i++) {
223
+ matrix[i] = [i];
224
+ }
225
+ for (let j = 0; j <= a.length; j++) {
226
+ matrix[0][j] = j;
227
+ }
228
+ for (let i = 1; i <= b.length; i++) {
229
+ for (let j = 1; j <= a.length; j++) {
230
+ if (b[i - 1] === a[j - 1]) {
231
+ matrix[i][j] = matrix[i - 1][j - 1];
232
+ }
233
+ else {
234
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
235
+ }
236
+ }
237
+ }
238
+ return matrix[b.length][a.length];
239
+ }
240
+ /**
241
+ * Quick check: does producer provide all properties consumer expects?
242
+ */
243
+ export function checkPropertyCoverage(producer, consumer) {
244
+ return checkPropertyMismatches(producer, consumer, {}, 'producer_to_consumer');
245
+ }
246
+ /**
247
+ * Convenience function: Compare a backend directory against a frontend directory
248
+ */
249
+ export async function compareDirectories(backendDir, frontendDir, options = {}) {
250
+ // Import dynamically to avoid circular deps
251
+ const { extractProducerSchemas } = await import('../extract/index.js');
252
+ const { traceConsumerUsage } = await import('../trace/index.js');
253
+ if (process.env.DEBUG_TRACE_MCP) {
254
+ console.error(`[Compare] Backend: ${backendDir}`);
255
+ console.error(`[Compare] Frontend: ${frontendDir}`);
256
+ }
257
+ const producers = await extractProducerSchemas({ rootDir: backendDir });
258
+ const consumers = await traceConsumerUsage({ rootDir: frontendDir });
259
+ return compareSchemas(producers, consumers, options);
260
+ }
261
+ //# sourceMappingURL=index.js.map