codesift-mcp 0.14.0 → 0.15.1

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 (458) hide show
  1. package/README.md +5 -1
  2. package/dist/cli/commands-admin.d.ts +18 -0
  3. package/dist/cli/commands-admin.d.ts.map +1 -0
  4. package/dist/cli/commands-admin.js +187 -0
  5. package/dist/cli/commands-admin.js.map +1 -0
  6. package/dist/cli/commands-daemon.d.ts +42 -0
  7. package/dist/cli/commands-daemon.d.ts.map +1 -0
  8. package/dist/cli/commands-daemon.js +163 -0
  9. package/dist/cli/commands-daemon.js.map +1 -0
  10. package/dist/cli/commands-index.d.ts +12 -0
  11. package/dist/cli/commands-index.d.ts.map +1 -0
  12. package/dist/cli/commands-index.js +133 -0
  13. package/dist/cli/commands-index.js.map +1 -0
  14. package/dist/cli/commands-maintenance.d.ts +12 -0
  15. package/dist/cli/commands-maintenance.d.ts.map +1 -0
  16. package/dist/cli/commands-maintenance.js +409 -0
  17. package/dist/cli/commands-maintenance.js.map +1 -0
  18. package/dist/cli/commands-query.d.ts +21 -0
  19. package/dist/cli/commands-query.d.ts.map +1 -0
  20. package/dist/cli/commands-query.js +270 -0
  21. package/dist/cli/commands-query.js.map +1 -0
  22. package/dist/cli/commands.d.ts +2 -36
  23. package/dist/cli/commands.d.ts.map +1 -1
  24. package/dist/cli/commands.js +8 -867
  25. package/dist/cli/commands.js.map +1 -1
  26. package/dist/cli/embed-child.js +13 -2
  27. package/dist/cli/embed-child.js.map +1 -1
  28. package/dist/instructions.d.ts +1 -1
  29. package/dist/instructions.d.ts.map +1 -1
  30. package/dist/instructions.js +5 -2
  31. package/dist/instructions.js.map +1 -1
  32. package/dist/parser/extractors/php-class-metadata.d.ts +10 -0
  33. package/dist/parser/extractors/php-class-metadata.d.ts.map +1 -0
  34. package/dist/parser/extractors/php-class-metadata.js +65 -0
  35. package/dist/parser/extractors/php-class-metadata.js.map +1 -0
  36. package/dist/parser/extractors/php-doc.d.ts +13 -0
  37. package/dist/parser/extractors/php-doc.d.ts.map +1 -0
  38. package/dist/parser/extractors/php-doc.js +39 -0
  39. package/dist/parser/extractors/php-doc.js.map +1 -0
  40. package/dist/parser/extractors/php-node-metadata.d.ts +26 -0
  41. package/dist/parser/extractors/php-node-metadata.d.ts.map +1 -0
  42. package/dist/parser/extractors/php-node-metadata.js +132 -0
  43. package/dist/parser/extractors/php-node-metadata.js.map +1 -0
  44. package/dist/parser/extractors/php-symbol-builders.d.ts +13 -0
  45. package/dist/parser/extractors/php-symbol-builders.d.ts.map +1 -0
  46. package/dist/parser/extractors/php-symbol-builders.js +58 -0
  47. package/dist/parser/extractors/php-symbol-builders.js.map +1 -0
  48. package/dist/parser/extractors/php-walker.d.ts +4 -0
  49. package/dist/parser/extractors/php-walker.d.ts.map +1 -0
  50. package/dist/parser/extractors/php-walker.js +238 -0
  51. package/dist/parser/extractors/php-walker.js.map +1 -0
  52. package/dist/parser/extractors/php.d.ts +2 -33
  53. package/dist/parser/extractors/php.d.ts.map +1 -1
  54. package/dist/parser/extractors/php.js +2 -747
  55. package/dist/parser/extractors/php.js.map +1 -1
  56. package/dist/register-tool-loaders.d.ts +11 -11
  57. package/dist/register-tool-loaders.d.ts.map +1 -1
  58. package/dist/register-tools/runtime.d.ts +11 -0
  59. package/dist/register-tools/runtime.d.ts.map +1 -1
  60. package/dist/register-tools/runtime.js +40 -0
  61. package/dist/register-tools/runtime.js.map +1 -1
  62. package/dist/register-tools.d.ts.map +1 -1
  63. package/dist/register-tools.js +5 -1
  64. package/dist/register-tools.js.map +1 -1
  65. package/dist/retrieval/semantic-handlers.d.ts.map +1 -1
  66. package/dist/retrieval/semantic-handlers.js +10 -3
  67. package/dist/retrieval/semantic-handlers.js.map +1 -1
  68. package/dist/search/semantic.d.ts +2 -0
  69. package/dist/search/semantic.d.ts.map +1 -1
  70. package/dist/search/semantic.js +41 -9
  71. package/dist/search/semantic.js.map +1 -1
  72. package/dist/storage/chunk-store.d.ts +14 -2
  73. package/dist/storage/chunk-store.d.ts.map +1 -1
  74. package/dist/storage/chunk-store.js +214 -34
  75. package/dist/storage/chunk-store.js.map +1 -1
  76. package/dist/storage/embedding-store.d.ts +0 -12
  77. package/dist/storage/embedding-store.d.ts.map +1 -1
  78. package/dist/storage/embedding-store.js +69 -9
  79. package/dist/storage/embedding-store.js.map +1 -1
  80. package/dist/storage/index-cache.d.ts +12 -0
  81. package/dist/storage/index-cache.d.ts.map +1 -0
  82. package/dist/storage/index-cache.js +89 -0
  83. package/dist/storage/index-cache.js.map +1 -0
  84. package/dist/storage/index-json-mutations.d.ts +11 -0
  85. package/dist/storage/index-json-mutations.d.ts.map +1 -0
  86. package/dist/storage/index-json-mutations.js +93 -0
  87. package/dist/storage/index-json-mutations.js.map +1 -0
  88. package/dist/storage/index-migration.d.ts +22 -0
  89. package/dist/storage/index-migration.d.ts.map +1 -0
  90. package/dist/storage/index-migration.js +80 -0
  91. package/dist/storage/index-migration.js.map +1 -0
  92. package/dist/storage/index-store.d.ts +5 -61
  93. package/dist/storage/index-store.d.ts.map +1 -1
  94. package/dist/storage/index-store.js +33 -414
  95. package/dist/storage/index-store.js.map +1 -1
  96. package/dist/storage/index-version.d.ts +39 -0
  97. package/dist/storage/index-version.d.ts.map +1 -0
  98. package/dist/storage/index-version.js +87 -0
  99. package/dist/storage/index-version.js.map +1 -0
  100. package/dist/storage/registry.d.ts +9 -1
  101. package/dist/storage/registry.d.ts.map +1 -1
  102. package/dist/storage/registry.js +169 -8
  103. package/dist/storage/registry.js.map +1 -1
  104. package/dist/storage/shared-embedding-cache.d.ts +23 -3
  105. package/dist/storage/shared-embedding-cache.d.ts.map +1 -1
  106. package/dist/storage/shared-embedding-cache.js +300 -45
  107. package/dist/storage/shared-embedding-cache.js.map +1 -1
  108. package/dist/storage/telemetry/config.d.ts.map +1 -1
  109. package/dist/storage/telemetry/config.js +3 -2
  110. package/dist/storage/telemetry/config.js.map +1 -1
  111. package/dist/storage/telemetry/retro-aggregator.d.ts +21 -0
  112. package/dist/storage/telemetry/retro-aggregator.d.ts.map +1 -1
  113. package/dist/storage/telemetry/retro-aggregator.js +58 -16
  114. package/dist/storage/telemetry/retro-aggregator.js.map +1 -1
  115. package/dist/storage/telemetry/sanitizer.d.ts +16 -0
  116. package/dist/storage/telemetry/sanitizer.d.ts.map +1 -1
  117. package/dist/storage/telemetry/sanitizer.js +2 -0
  118. package/dist/storage/telemetry/sanitizer.js.map +1 -1
  119. package/dist/storage/telemetry/uploader.d.ts +3 -1
  120. package/dist/storage/telemetry/uploader.d.ts.map +1 -1
  121. package/dist/storage/telemetry/uploader.js +158 -21
  122. package/dist/storage/telemetry/uploader.js.map +1 -1
  123. package/dist/storage/usage-tracker.d.ts +8 -12
  124. package/dist/storage/usage-tracker.d.ts.map +1 -1
  125. package/dist/storage/usage-tracker.js +74 -1
  126. package/dist/storage/usage-tracker.js.map +1 -1
  127. package/dist/tools/cross-repo-contract-adapters.d.ts +39 -0
  128. package/dist/tools/cross-repo-contract-adapters.d.ts.map +1 -0
  129. package/dist/tools/cross-repo-contract-adapters.js +70 -0
  130. package/dist/tools/cross-repo-contract-adapters.js.map +1 -0
  131. package/dist/tools/cross-repo-contract-group.d.ts +17 -0
  132. package/dist/tools/cross-repo-contract-group.d.ts.map +1 -0
  133. package/dist/tools/cross-repo-contract-group.js +89 -0
  134. package/dist/tools/cross-repo-contract-group.js.map +1 -0
  135. package/dist/tools/cross-repo-contract-matcher.d.ts +24 -0
  136. package/dist/tools/cross-repo-contract-matcher.d.ts.map +1 -0
  137. package/dist/tools/cross-repo-contract-matcher.js +134 -0
  138. package/dist/tools/cross-repo-contract-matcher.js.map +1 -0
  139. package/dist/tools/cross-repo-contract-resolver.d.ts +9 -0
  140. package/dist/tools/cross-repo-contract-resolver.d.ts.map +1 -0
  141. package/dist/tools/cross-repo-contract-resolver.js +86 -0
  142. package/dist/tools/cross-repo-contract-resolver.js.map +1 -0
  143. package/dist/tools/cross-repo-contract-tools.d.ts +12 -135
  144. package/dist/tools/cross-repo-contract-tools.d.ts.map +1 -1
  145. package/dist/tools/cross-repo-contract-tools.js +8 -589
  146. package/dist/tools/cross-repo-contract-tools.js.map +1 -1
  147. package/dist/tools/cross-repo-contract-types.d.ts +30 -0
  148. package/dist/tools/cross-repo-contract-types.d.ts.map +1 -0
  149. package/dist/tools/cross-repo-contract-types.js +3 -0
  150. package/dist/tools/cross-repo-contract-types.js.map +1 -0
  151. package/dist/tools/cross-repo-outbound-calls.d.ts +28 -0
  152. package/dist/tools/cross-repo-outbound-calls.d.ts.map +1 -0
  153. package/dist/tools/cross-repo-outbound-calls.js +347 -0
  154. package/dist/tools/cross-repo-outbound-calls.js.map +1 -0
  155. package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts.map +1 -1
  156. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js +2 -0
  157. package/dist/tools/cross-repo-outbound-lexer/call-detectors.js.map +1 -1
  158. package/dist/tools/cross-repo-outbound-lexer/types.d.ts +2 -0
  159. package/dist/tools/cross-repo-outbound-lexer/types.d.ts.map +1 -1
  160. package/dist/tools/index-tools/file-indexer.js +3 -3
  161. package/dist/tools/index-tools/file-indexer.js.map +1 -1
  162. package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
  163. package/dist/tools/index-tools/folder-indexer.js +47 -2
  164. package/dist/tools/index-tools/folder-indexer.js.map +1 -1
  165. package/dist/tools/index-tools/parse.d.ts +12 -3
  166. package/dist/tools/index-tools/parse.d.ts.map +1 -1
  167. package/dist/tools/index-tools/parse.js +33 -8
  168. package/dist/tools/index-tools/parse.js.map +1 -1
  169. package/dist/tools/index-tools/registry.d.ts +19 -0
  170. package/dist/tools/index-tools/registry.d.ts.map +1 -1
  171. package/dist/tools/index-tools/registry.js +88 -2
  172. package/dist/tools/index-tools/registry.js.map +1 -1
  173. package/dist/tools/index-tools/state.d.ts +31 -0
  174. package/dist/tools/index-tools/state.d.ts.map +1 -1
  175. package/dist/tools/index-tools/state.js +53 -0
  176. package/dist/tools/index-tools/state.js.map +1 -1
  177. package/dist/tools/index-tools/types.d.ts +9 -0
  178. package/dist/tools/index-tools/types.d.ts.map +1 -1
  179. package/dist/tools/index-tools/watcher.js +3 -3
  180. package/dist/tools/index-tools/watcher.js.map +1 -1
  181. package/dist/tools/index-tools/worktree-seed.d.ts +44 -0
  182. package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -0
  183. package/dist/tools/index-tools/worktree-seed.js +302 -0
  184. package/dist/tools/index-tools/worktree-seed.js.map +1 -0
  185. package/dist/tools/index-tools.d.ts.map +1 -1
  186. package/dist/tools/index-tools.js +3 -1
  187. package/dist/tools/index-tools.js.map +1 -1
  188. package/dist/tools/nest-ext-tools/graphql.d.ts +17 -0
  189. package/dist/tools/nest-ext-tools/graphql.d.ts.map +1 -0
  190. package/dist/tools/nest-ext-tools/graphql.js +54 -0
  191. package/dist/tools/nest-ext-tools/graphql.js.map +1 -0
  192. package/dist/tools/nest-ext-tools/microservice.d.ts +17 -0
  193. package/dist/tools/nest-ext-tools/microservice.d.ts.map +1 -0
  194. package/dist/tools/nest-ext-tools/microservice.js +51 -0
  195. package/dist/tools/nest-ext-tools/microservice.js.map +1 -0
  196. package/dist/tools/nest-ext-tools/openapi.d.ts +81 -0
  197. package/dist/tools/nest-ext-tools/openapi.d.ts.map +1 -0
  198. package/dist/tools/nest-ext-tools/openapi.js +254 -0
  199. package/dist/tools/nest-ext-tools/openapi.js.map +1 -0
  200. package/dist/tools/nest-ext-tools/queue.d.ts +27 -0
  201. package/dist/tools/nest-ext-tools/queue.d.ts.map +1 -0
  202. package/dist/tools/nest-ext-tools/queue.js +95 -0
  203. package/dist/tools/nest-ext-tools/queue.js.map +1 -0
  204. package/dist/tools/nest-ext-tools/schedule.d.ts +19 -0
  205. package/dist/tools/nest-ext-tools/schedule.d.ts.map +1 -0
  206. package/dist/tools/nest-ext-tools/schedule.js +89 -0
  207. package/dist/tools/nest-ext-tools/schedule.js.map +1 -0
  208. package/dist/tools/nest-ext-tools/scope.d.ts +19 -0
  209. package/dist/tools/nest-ext-tools/scope.d.ts.map +1 -0
  210. package/dist/tools/nest-ext-tools/scope.js +151 -0
  211. package/dist/tools/nest-ext-tools/scope.js.map +1 -0
  212. package/dist/tools/nest-ext-tools/shared.d.ts +33 -0
  213. package/dist/tools/nest-ext-tools/shared.d.ts.map +1 -0
  214. package/dist/tools/nest-ext-tools/shared.js +279 -0
  215. package/dist/tools/nest-ext-tools/shared.js.map +1 -0
  216. package/dist/tools/nest-ext-tools/typeorm.d.ts +22 -0
  217. package/dist/tools/nest-ext-tools/typeorm.d.ts.map +1 -0
  218. package/dist/tools/nest-ext-tools/typeorm.js +59 -0
  219. package/dist/tools/nest-ext-tools/typeorm.js.map +1 -0
  220. package/dist/tools/nest-ext-tools/websocket.d.ts +21 -0
  221. package/dist/tools/nest-ext-tools/websocket.d.ts.map +1 -0
  222. package/dist/tools/nest-ext-tools/websocket.js +70 -0
  223. package/dist/tools/nest-ext-tools/websocket.js.map +1 -0
  224. package/dist/tools/nest-ext-tools.d.ts +10 -204
  225. package/dist/tools/nest-ext-tools.d.ts.map +1 -1
  226. package/dist/tools/nest-ext-tools.js +10 -749
  227. package/dist/tools/nest-ext-tools.js.map +1 -1
  228. package/dist/tools/perf-tools.js +2 -2
  229. package/dist/tools/python-audit/checks/dead-code.d.ts +1 -1
  230. package/dist/tools/python-audit/checks/dead-code.d.ts.map +1 -1
  231. package/dist/tools/python-constants/constant-match.d.ts +5 -0
  232. package/dist/tools/python-constants/constant-match.d.ts.map +1 -0
  233. package/dist/tools/python-constants/constant-match.js +24 -0
  234. package/dist/tools/python-constants/constant-match.js.map +1 -0
  235. package/dist/tools/python-constants/file-context.d.ts +5 -0
  236. package/dist/tools/python-constants/file-context.d.ts.map +1 -0
  237. package/dist/tools/python-constants/file-context.js +91 -0
  238. package/dist/tools/python-constants/file-context.js.map +1 -0
  239. package/dist/tools/python-constants/function-defaults.d.ts +5 -0
  240. package/dist/tools/python-constants/function-defaults.d.ts.map +1 -0
  241. package/dist/tools/python-constants/function-defaults.js +98 -0
  242. package/dist/tools/python-constants/function-defaults.js.map +1 -0
  243. package/dist/tools/python-constants/model.d.ts +78 -0
  244. package/dist/tools/python-constants/model.d.ts.map +1 -0
  245. package/dist/tools/python-constants/model.js +2 -0
  246. package/dist/tools/python-constants/model.js.map +1 -0
  247. package/dist/tools/python-constants/syntax.d.ts +22 -0
  248. package/dist/tools/python-constants/syntax.d.ts.map +1 -0
  249. package/dist/tools/python-constants/syntax.js +93 -0
  250. package/dist/tools/python-constants/syntax.js.map +1 -0
  251. package/dist/tools/python-constants/value-resolver.d.ts +6 -0
  252. package/dist/tools/python-constants/value-resolver.d.ts.map +1 -0
  253. package/dist/tools/python-constants/value-resolver.js +320 -0
  254. package/dist/tools/python-constants/value-resolver.js.map +1 -0
  255. package/dist/tools/python-constants-tools.d.ts +3 -45
  256. package/dist/tools/python-constants-tools.d.ts.map +1 -1
  257. package/dist/tools/python-constants-tools.js +2 -505
  258. package/dist/tools/python-constants-tools.js.map +1 -1
  259. package/dist/tools/route-tools/django.d.ts +8 -0
  260. package/dist/tools/route-tools/django.d.ts.map +1 -0
  261. package/dist/tools/route-tools/django.js +52 -0
  262. package/dist/tools/route-tools/django.js.map +1 -0
  263. package/dist/tools/route-tools/express.d.ts +5 -0
  264. package/dist/tools/route-tools/express.d.ts.map +1 -0
  265. package/dist/tools/route-tools/express.js +33 -0
  266. package/dist/tools/route-tools/express.js.map +1 -0
  267. package/dist/tools/route-tools/file-sources.d.ts +7 -0
  268. package/dist/tools/route-tools/file-sources.d.ts.map +1 -0
  269. package/dist/tools/route-tools/file-sources.js +15 -0
  270. package/dist/tools/route-tools/file-sources.js.map +1 -0
  271. package/dist/tools/route-tools/handler-discovery.d.ts +4 -0
  272. package/dist/tools/route-tools/handler-discovery.d.ts.map +1 -0
  273. package/dist/tools/route-tools/handler-discovery.js +38 -0
  274. package/dist/tools/route-tools/handler-discovery.js.map +1 -0
  275. package/dist/tools/route-tools/hono.d.ts +5 -0
  276. package/dist/tools/route-tools/hono.d.ts.map +1 -0
  277. package/dist/tools/route-tools/hono.js +61 -0
  278. package/dist/tools/route-tools/hono.js.map +1 -0
  279. package/dist/tools/route-tools/ktor.d.ts +5 -0
  280. package/dist/tools/route-tools/ktor.d.ts.map +1 -0
  281. package/dist/tools/route-tools/ktor.js +76 -0
  282. package/dist/tools/route-tools/ktor.js.map +1 -0
  283. package/dist/tools/route-tools/laravel.d.ts +5 -0
  284. package/dist/tools/route-tools/laravel.d.ts.map +1 -0
  285. package/dist/tools/route-tools/laravel.js +45 -0
  286. package/dist/tools/route-tools/laravel.js.map +1 -0
  287. package/dist/tools/route-tools/mermaid-call-chain.d.ts +3 -0
  288. package/dist/tools/route-tools/mermaid-call-chain.d.ts.map +1 -0
  289. package/dist/tools/route-tools/mermaid-call-chain.js +50 -0
  290. package/dist/tools/route-tools/mermaid-call-chain.js.map +1 -0
  291. package/dist/tools/route-tools/nest.d.ts +5 -0
  292. package/dist/tools/route-tools/nest.d.ts.map +1 -0
  293. package/dist/tools/route-tools/nest.js +75 -0
  294. package/dist/tools/route-tools/nest.js.map +1 -0
  295. package/dist/tools/route-tools/next-trace.d.ts +4 -0
  296. package/dist/tools/route-tools/next-trace.d.ts.map +1 -0
  297. package/dist/tools/route-tools/next-trace.js +48 -0
  298. package/dist/tools/route-tools/next-trace.js.map +1 -0
  299. package/dist/tools/route-tools/next.d.ts +7 -0
  300. package/dist/tools/route-tools/next.d.ts.map +1 -0
  301. package/dist/tools/route-tools/next.js +77 -0
  302. package/dist/tools/route-tools/next.js.map +1 -0
  303. package/dist/tools/route-tools/python-decorators.d.ts +7 -0
  304. package/dist/tools/route-tools/python-decorators.d.ts.map +1 -0
  305. package/dist/tools/route-tools/python-decorators.js +53 -0
  306. package/dist/tools/route-tools/python-decorators.js.map +1 -0
  307. package/dist/tools/route-tools/route-mermaid.d.ts +4 -0
  308. package/dist/tools/route-tools/route-mermaid.d.ts.map +1 -0
  309. package/dist/tools/route-tools/route-mermaid.js +53 -0
  310. package/dist/tools/route-tools/route-mermaid.js.map +1 -0
  311. package/dist/tools/route-tools/spring-kotlin.d.ts +5 -0
  312. package/dist/tools/route-tools/spring-kotlin.d.ts.map +1 -0
  313. package/dist/tools/route-tools/spring-kotlin.js +52 -0
  314. package/dist/tools/route-tools/spring-kotlin.js.map +1 -0
  315. package/dist/tools/route-tools/trace-analysis.d.ts +4 -0
  316. package/dist/tools/route-tools/trace-analysis.d.ts.map +1 -0
  317. package/dist/tools/route-tools/trace-analysis.js +37 -0
  318. package/dist/tools/route-tools/trace-analysis.js.map +1 -0
  319. package/dist/tools/route-tools/trace-route.d.ts +6 -0
  320. package/dist/tools/route-tools/trace-route.d.ts.map +1 -0
  321. package/dist/tools/route-tools/trace-route.js +53 -0
  322. package/dist/tools/route-tools/trace-route.js.map +1 -0
  323. package/dist/tools/route-tools/types.d.ts +35 -0
  324. package/dist/tools/route-tools/types.d.ts.map +1 -0
  325. package/dist/tools/route-tools/types.js +2 -0
  326. package/dist/tools/route-tools/types.js.map +1 -0
  327. package/dist/tools/route-tools/yii2.d.ts +5 -0
  328. package/dist/tools/route-tools/yii2.d.ts.map +1 -0
  329. package/dist/tools/route-tools/yii2.js +73 -0
  330. package/dist/tools/route-tools/yii2.js.map +1 -0
  331. package/dist/tools/route-tools.d.ts +7 -49
  332. package/dist/tools/route-tools.d.ts.map +1 -1
  333. package/dist/tools/route-tools.js +5 -978
  334. package/dist/tools/route-tools.js.map +1 -1
  335. package/dist/tools/symbol-analysis-tools.d.ts +81 -0
  336. package/dist/tools/symbol-analysis-tools.d.ts.map +1 -0
  337. package/dist/tools/symbol-analysis-tools.js +327 -0
  338. package/dist/tools/symbol-analysis-tools.js.map +1 -0
  339. package/dist/tools/symbol-context-tools.d.ts +68 -0
  340. package/dist/tools/symbol-context-tools.d.ts.map +1 -0
  341. package/dist/tools/symbol-context-tools.js +232 -0
  342. package/dist/tools/symbol-context-tools.js.map +1 -0
  343. package/dist/tools/symbol-lookup-tools.d.ts +77 -0
  344. package/dist/tools/symbol-lookup-tools.d.ts.map +1 -0
  345. package/dist/tools/symbol-lookup-tools.js +305 -0
  346. package/dist/tools/symbol-lookup-tools.js.map +1 -0
  347. package/dist/tools/symbol-reference-tools.d.ts +38 -0
  348. package/dist/tools/symbol-reference-tools.d.ts.map +1 -0
  349. package/dist/tools/symbol-reference-tools.js +253 -0
  350. package/dist/tools/symbol-reference-tools.js.map +1 -0
  351. package/dist/tools/symbol-tool-internals.d.ts +9 -0
  352. package/dist/tools/symbol-tool-internals.d.ts.map +1 -0
  353. package/dist/tools/symbol-tool-internals.js +47 -0
  354. package/dist/tools/symbol-tool-internals.js.map +1 -0
  355. package/dist/tools/symbol-tools.d.ts +11 -270
  356. package/dist/tools/symbol-tools.d.ts.map +1 -1
  357. package/dist/tools/symbol-tools.js +7 -1131
  358. package/dist/tools/symbol-tools.js.map +1 -1
  359. package/dist/tools/taint/python-context.d.ts +10 -0
  360. package/dist/tools/taint/python-context.d.ts.map +1 -0
  361. package/dist/tools/taint/python-context.js +150 -0
  362. package/dist/tools/taint/python-context.js.map +1 -0
  363. package/dist/tools/taint/taint-analyzer.d.ts +2 -0
  364. package/dist/tools/taint/taint-analyzer.d.ts.map +1 -0
  365. package/dist/tools/taint/taint-analyzer.js +2 -0
  366. package/dist/tools/taint/taint-analyzer.js.map +1 -0
  367. package/dist/tools/taint/taint-expression.d.ts +18 -0
  368. package/dist/tools/taint/taint-expression.d.ts.map +1 -0
  369. package/dist/tools/taint/taint-expression.js +265 -0
  370. package/dist/tools/taint/taint-expression.js.map +1 -0
  371. package/dist/tools/taint/taint-flow.d.ts +10 -0
  372. package/dist/tools/taint/taint-flow.d.ts.map +1 -0
  373. package/dist/tools/taint/taint-flow.js +178 -0
  374. package/dist/tools/taint/taint-flow.js.map +1 -0
  375. package/dist/tools/taint/taint-model.d.ts +113 -0
  376. package/dist/tools/taint/taint-model.d.ts.map +1 -0
  377. package/dist/tools/taint/taint-model.js +277 -0
  378. package/dist/tools/taint/taint-model.js.map +1 -0
  379. package/dist/tools/taint-tools.d.ts +2 -34
  380. package/dist/tools/taint-tools.d.ts.map +1 -1
  381. package/dist/tools/taint-tools.js +2 -852
  382. package/dist/tools/taint-tools.js.map +1 -1
  383. package/dist/tools/typescript-constants/file-context.d.ts +7 -0
  384. package/dist/tools/typescript-constants/file-context.d.ts.map +1 -0
  385. package/dist/tools/typescript-constants/file-context.js +219 -0
  386. package/dist/tools/typescript-constants/file-context.js.map +1 -0
  387. package/dist/tools/typescript-constants/symbol-resolver.d.ts +7 -0
  388. package/dist/tools/typescript-constants/symbol-resolver.d.ts.map +1 -0
  389. package/dist/tools/typescript-constants/symbol-resolver.js +165 -0
  390. package/dist/tools/typescript-constants/symbol-resolver.js.map +1 -0
  391. package/dist/tools/typescript-constants/types.d.ts +44 -0
  392. package/dist/tools/typescript-constants/types.d.ts.map +1 -0
  393. package/dist/tools/typescript-constants/types.js +2 -0
  394. package/dist/tools/typescript-constants/types.js.map +1 -0
  395. package/dist/tools/typescript-constants/value-evaluator.d.ts +8 -0
  396. package/dist/tools/typescript-constants/value-evaluator.d.ts.map +1 -0
  397. package/dist/tools/typescript-constants/value-evaluator.js +404 -0
  398. package/dist/tools/typescript-constants/value-evaluator.js.map +1 -0
  399. package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
  400. package/dist/tools/typescript-constants-tools.js +19 -709
  401. package/dist/tools/typescript-constants-tools.js.map +1 -1
  402. package/dist/utils/import-graph/collect.d.ts +5 -0
  403. package/dist/utils/import-graph/collect.d.ts.map +1 -0
  404. package/dist/utils/import-graph/collect.js +47 -0
  405. package/dist/utils/import-graph/collect.js.map +1 -0
  406. package/dist/utils/import-graph/edge-accumulator.d.ts +7 -0
  407. package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -0
  408. package/dist/utils/import-graph/edge-accumulator.js +47 -0
  409. package/dist/utils/import-graph/edge-accumulator.js.map +1 -0
  410. package/dist/utils/import-graph/language-imports.d.ts +6 -0
  411. package/dist/utils/import-graph/language-imports.d.ts.map +1 -0
  412. package/dist/utils/import-graph/language-imports.js +84 -0
  413. package/dist/utils/import-graph/language-imports.js.map +1 -0
  414. package/dist/utils/import-graph/metrics.d.ts +6 -0
  415. package/dist/utils/import-graph/metrics.d.ts.map +1 -0
  416. package/dist/utils/import-graph/metrics.js +51 -0
  417. package/dist/utils/import-graph/metrics.js.map +1 -0
  418. package/dist/utils/import-graph/path-map.d.ts +7 -0
  419. package/dist/utils/import-graph/path-map.d.ts.map +1 -0
  420. package/dist/utils/import-graph/path-map.js +56 -0
  421. package/dist/utils/import-graph/path-map.js.map +1 -0
  422. package/dist/utils/import-graph/python-php-edge-collectors.d.ts +5 -0
  423. package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -0
  424. package/dist/utils/import-graph/python-php-edge-collectors.js +56 -0
  425. package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -0
  426. package/dist/utils/import-graph/source-edge-collector.d.ts +13 -0
  427. package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -0
  428. package/dist/utils/import-graph/source-edge-collector.js +42 -0
  429. package/dist/utils/import-graph/source-edge-collector.js.map +1 -0
  430. package/dist/utils/import-graph/source-imports.d.ts +5 -0
  431. package/dist/utils/import-graph/source-imports.d.ts.map +1 -0
  432. package/dist/utils/import-graph/source-imports.js +33 -0
  433. package/dist/utils/import-graph/source-imports.js.map +1 -0
  434. package/dist/utils/import-graph/types.d.ts +15 -0
  435. package/dist/utils/import-graph/types.d.ts.map +1 -0
  436. package/dist/utils/import-graph/types.js +2 -0
  437. package/dist/utils/import-graph/types.js.map +1 -0
  438. package/dist/utils/import-graph/typescript-edge-collector.d.ts +7 -0
  439. package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -0
  440. package/dist/utils/import-graph/typescript-edge-collector.js +58 -0
  441. package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -0
  442. package/dist/utils/import-graph/workspace-alias.d.ts +7 -0
  443. package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -0
  444. package/dist/utils/import-graph/workspace-alias.js +95 -0
  445. package/dist/utils/import-graph/workspace-alias.js.map +1 -0
  446. package/dist/utils/import-graph/workspace-entry.d.ts +3 -0
  447. package/dist/utils/import-graph/workspace-entry.d.ts.map +1 -0
  448. package/dist/utils/import-graph/workspace-entry.js +81 -0
  449. package/dist/utils/import-graph/workspace-entry.js.map +1 -0
  450. package/dist/utils/import-graph.d.ts +10 -94
  451. package/dist/utils/import-graph.d.ts.map +1 -1
  452. package/dist/utils/import-graph.js +6 -702
  453. package/dist/utils/import-graph.js.map +1 -1
  454. package/package.json +1 -1
  455. package/rules/codesift.md +11 -2
  456. package/rules/codesift.mdc +11 -2
  457. package/rules/codex.md +11 -2
  458. package/rules/gemini.md +11 -2
@@ -2,7 +2,8 @@ import { appendFile, mkdir } from "node:fs/promises";
2
2
  import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import { homedir, hostname } from "node:os";
5
- import { randomUUID } from "node:crypto";
5
+ import { execFileSync } from "node:child_process";
6
+ import { randomUUID, createHash } from "node:crypto";
6
7
  // ---------------------------------------------------------------------------
7
8
  // Session ID — unique per process lifetime
8
9
  // ---------------------------------------------------------------------------
@@ -19,6 +20,70 @@ const SESSION_ID = randomUUID();
19
20
  * before `launchctl setenv` never sees it) we fall back to a machine-local id
20
21
  * persisted once under the data dir, so the identity survives renames.
21
22
  */
23
+ /**
24
+ * A stable, machine-local identifier that no rename, DHCP lease or missing env var can change.
25
+ *
26
+ * `resolveHostTag` is a NAME, chosen by a human and therefore fallible: it depends on an env var
27
+ * reaching the process and on a file having been written first. Measured on this machine, it failed
28
+ * anyway — 1,175 entries carried the wrong name AFTER the persisted id existed, across 239 separate
29
+ * sessions, and every hypothesis for which process produced them was checked and disproved. That is
30
+ * the point: a name you cannot verify is a name you cannot debug.
31
+ *
32
+ * This is the answer to "which computer wrote this line?" independent of the name. It reads the
33
+ * hardware/OS identity (macOS `IOPlatformUUID`, Linux `/etc/machine-id`), hashes it so nothing
34
+ * identifying leaves the machine, and caches the result in the data dir. On failure it falls back to
35
+ * a random id persisted once — still stable for that install, which is all the field promises.
36
+ *
37
+ * Twelve hex characters: enough that a collision across a personal fleet is not a real concern, short
38
+ * enough to read in a log line.
39
+ */
40
+ let machineIdCache = null;
41
+ export function machineId() {
42
+ if (machineIdCache)
43
+ return machineIdCache;
44
+ const dir = process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
45
+ const idPath = join(dir, "machine-id");
46
+ try {
47
+ const cached = readFileSync(idPath, "utf-8").trim();
48
+ if (cached)
49
+ return (machineIdCache = cached);
50
+ }
51
+ catch { /* not derived yet */ }
52
+ let raw = "";
53
+ try {
54
+ if (process.platform === "darwin") {
55
+ const out = execFileSync("ioreg", ["-rd1", "-c", "IOPlatformExpertDevice"], {
56
+ encoding: "utf-8", timeout: 5000,
57
+ });
58
+ raw = /"IOPlatformUUID"\s*=\s*"([^"]+)"/.exec(out)?.[1] ?? "";
59
+ }
60
+ else {
61
+ for (const p of ["/etc/machine-id", "/var/lib/dbus/machine-id"]) {
62
+ try {
63
+ raw = readFileSync(p, "utf-8").trim();
64
+ if (raw)
65
+ break;
66
+ }
67
+ catch { /* next */ }
68
+ }
69
+ }
70
+ }
71
+ catch { /* fall through to the random id */ }
72
+ // Hashed, never raw: the UUID identifies the hardware, and this field rides an anonymous channel.
73
+ const id = raw
74
+ ? createHash("sha256").update(raw).digest("hex").slice(0, 12)
75
+ : randomUUID().replace(/-/g, "").slice(0, 12);
76
+ try {
77
+ mkdirSync(dir, { recursive: true });
78
+ writeFileSync(idPath, id, "utf-8");
79
+ }
80
+ catch { /* read-only data dir — still stable for this process */ }
81
+ return (machineIdCache = id);
82
+ }
83
+ /** Test-only — drop the memoised value. */
84
+ export function _resetMachineIdForTests() {
85
+ machineIdCache = null;
86
+ }
22
87
  export function resolveHostTag() {
23
88
  const explicit = process.env["CODESIFT_HOST_TAG"]?.trim();
24
89
  // Seed the persisted id FROM the explicit tag when there is one. The whole
@@ -64,6 +129,13 @@ function loadOrCreateStableHostId(seed, opts) {
64
129
  return seed;
65
130
  }
66
131
  const HOST = resolveHostTag();
132
+ /**
133
+ * Computed once, like HOST — but unlike HOST it cannot go stale, because it does not depend on an
134
+ * env var arriving or a file being written first. A long-lived process that captured the wrong NAME
135
+ * at startup (measured: 4 sessions wrote `Gregs-MacBook-Pro-M5-2.local` for four days) still stamps
136
+ * the right MACHINE, so its entries remain attributable.
137
+ */
138
+ const MACHINE = machineId();
67
139
  // ---------------------------------------------------------------------------
68
140
  // Path
69
141
  // ---------------------------------------------------------------------------
@@ -295,6 +367,7 @@ export function trackToolCall(tool, args, resultText, resultData, elapsedMs, ext
295
367
  result_chunks: extractResultChunks(resultData),
296
368
  session_id: SESSION_ID,
297
369
  host: HOST,
370
+ machine: MACHINE,
298
371
  ...(sentTokens !== undefined && sentTokens !== resultTokens ? { result_tokens_sent: sentTokens } : {}),
299
372
  ...(extra?.error ? { error: true } : {}),
300
373
  ...(extra?.cacheHit ? { cache_hit: true } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../src/storage/usage-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../src/storage/usage-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { RepoEndpoint } from "../types.js";
2
+ import type { ApiContractResult as HonoContractResult } from "./hono-api-contract.js";
3
+ import type { NestRouteInventoryResult } from "./nest-tools.js";
4
+ import type { ApiContractResult as NextjsContractResult } from "./nextjs-api-contract-tools.js";
5
+ /**
6
+ * Replace all path-parameter segments with the canonical `{param}` placeholder.
7
+ *
8
+ * Recognised styles:
9
+ * - Express / Hono `:name`
10
+ * - OpenAPI / NestJS `{name}`
11
+ * - Next.js `[name]`
12
+ * - Next.js catch-all `[...name]`
13
+ *
14
+ * Trailing slashes are stripped (except for a bare "/").
15
+ * Method strings are UPPERCASED by callers; this function only handles paths.
16
+ */
17
+ export declare function normalizePathParams(path: string): string;
18
+ /**
19
+ * Adapt an `extractApiContract` result (Hono) into `RepoEndpoint[]`.
20
+ *
21
+ * Only the `summary` format carries the per-route list; `openapi` format and
22
+ * missing/undefined summary both return [].
23
+ */
24
+ export declare function adaptHonoContract(repo: string, r: HonoContractResult): RepoEndpoint[];
25
+ /**
26
+ * Adapt a `nestRouteInventory` result into `RepoEndpoint[]`.
27
+ *
28
+ * `NestRouteEntry.file` is a required string field — the value is used as-is
29
+ * (may be "" for entries where the controller file couldn't be resolved).
30
+ */
31
+ export declare function adaptNestInventory(repo: string, r: NestRouteInventoryResult): RepoEndpoint[];
32
+ /**
33
+ * Adapt a Next.js `ApiContractResult` into `RepoEndpoint[]`.
34
+ *
35
+ * `HandlerShape.method` is a single `HttpMethod` string per entry (Next.js
36
+ * emits one handler per HTTP verb), so each handler maps to one RepoEndpoint.
37
+ */
38
+ export declare function adaptNextjsContract(repo: string, r: NextjsContractResult): RepoEndpoint[];
39
+ //# sourceMappingURL=cross-repo-contract-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-adapters.d.ts","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEhG;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAOrF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,wBAAwB,GAAG,YAAY,EAAE,CAO5F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,oBAAoB,GAAG,YAAY,EAAE,CAOzF"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Replace all path-parameter segments with the canonical `{param}` placeholder.
3
+ *
4
+ * Recognised styles:
5
+ * - Express / Hono `:name`
6
+ * - OpenAPI / NestJS `{name}`
7
+ * - Next.js `[name]`
8
+ * - Next.js catch-all `[...name]`
9
+ *
10
+ * Trailing slashes are stripped (except for a bare "/").
11
+ * Method strings are UPPERCASED by callers; this function only handles paths.
12
+ */
13
+ export function normalizePathParams(path) {
14
+ // Replace :name segments
15
+ let result = path.replace(/:([^/]+)/g, "{param}");
16
+ // Replace {name} segments (already-braced OpenAPI style)
17
+ result = result.replace(/\{([^}]+)\}/g, "{param}");
18
+ // Replace [...name] and [name] Next.js segments
19
+ result = result.replace(/\[\.\.\.([^\]]+)\]/g, "{param}");
20
+ result = result.replace(/\[([^\]]+)\]/g, "{param}");
21
+ // Strip trailing slash (but keep bare "/")
22
+ if (result.length > 1 && result.endsWith("/")) {
23
+ result = result.slice(0, -1);
24
+ }
25
+ return result;
26
+ }
27
+ /**
28
+ * Adapt an `extractApiContract` result (Hono) into `RepoEndpoint[]`.
29
+ *
30
+ * Only the `summary` format carries the per-route list; `openapi` format and
31
+ * missing/undefined summary both return [].
32
+ */
33
+ export function adaptHonoContract(repo, r) {
34
+ if (!r.summary)
35
+ return [];
36
+ return r.summary.map((entry) => {
37
+ const method = entry.method.toUpperCase();
38
+ const normalized_path = normalizePathParams(entry.path);
39
+ return { repo, method, path: entry.path, normalized_path, file: entry.file };
40
+ });
41
+ }
42
+ /**
43
+ * Adapt a `nestRouteInventory` result into `RepoEndpoint[]`.
44
+ *
45
+ * `NestRouteEntry.file` is a required string field — the value is used as-is
46
+ * (may be "" for entries where the controller file couldn't be resolved).
47
+ */
48
+ export function adaptNestInventory(repo, r) {
49
+ const routes = r.routes ?? [];
50
+ return routes.map((entry) => {
51
+ const method = entry.method.toUpperCase();
52
+ const normalized_path = normalizePathParams(entry.path);
53
+ return { repo, method, path: entry.path, normalized_path, file: entry.file };
54
+ });
55
+ }
56
+ /**
57
+ * Adapt a Next.js `ApiContractResult` into `RepoEndpoint[]`.
58
+ *
59
+ * `HandlerShape.method` is a single `HttpMethod` string per entry (Next.js
60
+ * emits one handler per HTTP verb), so each handler maps to one RepoEndpoint.
61
+ */
62
+ export function adaptNextjsContract(repo, r) {
63
+ const handlers = r.handlers ?? [];
64
+ return handlers.map((handler) => {
65
+ const method = handler.method.toUpperCase();
66
+ const normalized_path = normalizePathParams(handler.path);
67
+ return { repo, method, path: handler.path, normalized_path, file: handler.file };
68
+ });
69
+ }
70
+ //# sourceMappingURL=cross-repo-contract-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-adapters.js","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-adapters.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,yBAAyB;IACzB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAClD,yDAAyD;IACzD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACnD,gDAAgD;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACpD,2CAA2C;IAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,CAAqB;IACnE,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,CAA2B;IAC1E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,CAAuB;IACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IAClC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type GroupContractResult, type RepoResolver } from "./cross-repo-contract-types.js";
2
+ export declare function matchGroupContracts(groupName: string, opts?: {
3
+ registryPath?: string;
4
+ resolver?: RepoResolver;
5
+ }): Promise<GroupContractResult>;
6
+ /**
7
+ * Answer "who calls METHOD path" within a group. Returns producer↔consumer
8
+ * `matches` for the endpoint AND `consumers_of_path` — every raw consumer call
9
+ * hitting that path, INCLUDING calls to endpoints with no producer in the group
10
+ * (an external/un-indexed service). Method is uppercased; the path is normalised
11
+ * (`:id`/`{id}`/`[id]` → `{param}`) so any param style works.
12
+ */
13
+ export declare function findEndpointConsumers(groupName: string, method: string, path: string, opts?: {
14
+ registryPath?: string;
15
+ resolver?: RepoResolver;
16
+ }): Promise<GroupContractResult>;
17
+ //# sourceMappingURL=cross-repo-contract-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-group.d.ts","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-group.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,mBAAmB,EAExB,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAmExC,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,GACxD,OAAO,CAAC,mBAAmB,CAAC,CAI9B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,GACxD,OAAO,CAAC,mBAAmB,CAAC,CA0B9B"}
@@ -0,0 +1,89 @@
1
+ import { normalizePathParams } from "./cross-repo-contract-adapters.js";
2
+ import { instantiatesTemplate, matchContracts, matchesPartialPrefix } from "./cross-repo-contract-matcher.js";
3
+ import { defaultRepoResolver } from "./cross-repo-contract-resolver.js";
4
+ import { MAX_GROUP_REPOS, } from "./cross-repo-contract-types.js";
5
+ /**
6
+ * Answer "who calls what" across a registered repo group: extract producer
7
+ * endpoints and consumer outbound calls for every indexed repo in the group,
8
+ * then match them. Unindexed repos collect a warning and are skipped; a group
9
+ * over MAX_GROUP_REPOS is capped with a truncation warning.
10
+ */
11
+ async function collectGroupData(groupName, opts) {
12
+ const { getGroup, getGroupRegistryPath } = await import("../storage/group-registry.js");
13
+ let registryPath = opts?.registryPath;
14
+ if (!registryPath) {
15
+ const { loadConfig } = await import("../config.js");
16
+ registryPath = getGroupRegistryPath(loadConfig().dataDir);
17
+ }
18
+ const group = await getGroup(registryPath, groupName);
19
+ if (!group) {
20
+ return { producers: [], consumers: [], warnings: [], repos_processed: 0, error: `repo group "${groupName}" not found` };
21
+ }
22
+ const resolver = opts?.resolver ?? defaultRepoResolver;
23
+ const warnings = [];
24
+ let repos = group.repos;
25
+ if (repos.length > MAX_GROUP_REPOS) {
26
+ warnings.push(`group "${groupName}" has ${repos.length} repos; capped at ${MAX_GROUP_REPOS}`);
27
+ repos = repos.slice(0, MAX_GROUP_REPOS);
28
+ }
29
+ const producers = [];
30
+ const consumers = [];
31
+ let processed = 0;
32
+ for (const repo of repos) {
33
+ let data;
34
+ try {
35
+ data = await resolver(repo);
36
+ }
37
+ catch (err) {
38
+ warnings.push(`repo "${repo}" failed to resolve: ${err instanceof Error ? err.message : String(err)}`);
39
+ continue;
40
+ }
41
+ if (data.warnings)
42
+ warnings.push(...data.warnings);
43
+ if (!data.indexed) {
44
+ warnings.push(`repo "${repo}" is not indexed — skipped`);
45
+ continue;
46
+ }
47
+ producers.push(...data.producers);
48
+ consumers.push(...data.consumers);
49
+ processed++;
50
+ }
51
+ return { producers, consumers, warnings, repos_processed: processed };
52
+ }
53
+ export async function matchGroupContracts(groupName, opts) {
54
+ const d = await collectGroupData(groupName, opts);
55
+ if (d.error)
56
+ return { matches: [], warnings: d.warnings, repos_processed: d.repos_processed, error: d.error };
57
+ return { matches: matchContracts(d.producers, d.consumers), warnings: d.warnings, repos_processed: d.repos_processed };
58
+ }
59
+ /**
60
+ * Answer "who calls METHOD path" within a group. Returns producer↔consumer
61
+ * `matches` for the endpoint AND `consumers_of_path` — every raw consumer call
62
+ * hitting that path, INCLUDING calls to endpoints with no producer in the group
63
+ * (an external/un-indexed service). Method is uppercased; the path is normalised
64
+ * (`:id`/`{id}`/`[id]` → `{param}`) so any param style works.
65
+ */
66
+ export async function findEndpointConsumers(groupName, method, path, opts) {
67
+ const d = await collectGroupData(groupName, opts);
68
+ if (d.error)
69
+ return { matches: [], warnings: d.warnings, repos_processed: d.repos_processed, error: d.error };
70
+ const wantMethod = method.toUpperCase();
71
+ const wantPath = normalizePathParams(path);
72
+ const matches = matchContracts(d.producers, d.consumers).filter((m) => m.method === wantMethod && m.path === wantPath);
73
+ // Raw consumers of the queried path — independent of whether a group producer
74
+ // serves it (covers external endpoints the group does not produce).
75
+ const consumersOfPath = d.consumers.filter((c) => {
76
+ if (c.method !== wantMethod)
77
+ return false;
78
+ return c.partial
79
+ ? matchesPartialPrefix(c.url_prefix, wantPath)
80
+ : instantiatesTemplate(c.url_prefix, wantPath);
81
+ });
82
+ return {
83
+ matches,
84
+ warnings: d.warnings,
85
+ repos_processed: d.repos_processed,
86
+ consumers_of_path: consumersOfPath,
87
+ };
88
+ }
89
+ //# sourceMappingURL=cross-repo-contract-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-group.js","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EACL,eAAe,GAIhB,MAAM,gCAAgC,CAAC;AAYxC;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAC7B,SAAiB,EACjB,IAAyD;IAEzD,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACxF,IAAI,YAAY,GAAG,IAAI,EAAE,YAAY,CAAC;IACtC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACpD,YAAY,GAAG,oBAAoB,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,SAAS,aAAa,EAAE,CAAC;IAC1H,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,mBAAmB,CAAC;IACvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,UAAU,SAAS,SAAS,KAAK,CAAC,MAAM,qBAAqB,eAAe,EAAE,CAAC,CAAC;QAC9F,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,MAAM,SAAS,GAA2C,EAAE,CAAC;IAC7D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,4BAA4B,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,SAAS,EAAE,CAAC;IACd,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,IAAyD;IAEzD,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9G,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;AACzH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,MAAc,EACd,IAAY,EACZ,IAAyD;IAEzD,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9G,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAC7D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CACtD,CAAC;IAEF,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO;YACd,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC9C,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,iBAAiB,EAAE,eAAe;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ContractMatch, RepoEndpoint } from "../types.js";
2
+ import type { OutboundCall } from "./cross-repo-outbound-calls.js";
3
+ /** Test whether a concrete path instantiates a normalised template path. */
4
+ declare function instantiatesTemplate(concretePath: string, normalizedTemplate: string): boolean;
5
+ /** Test whether a partial consumer URL prefix matches a template's literal head. */
6
+ declare function matchesPartialPrefix(urlPrefix: string, normalizedTemplate: string): boolean;
7
+ /**
8
+ * Match producer `RepoEndpoint[]` against consumer outbound calls (annotated with repo).
9
+ *
10
+ * Matching rules:
11
+ * - Same HTTP method (case-insensitive, already uppercased by adapters)
12
+ * - Cross-repo only (producer.repo !== consumer.repo)
13
+ * - Non-partial consumer: concrete path INSTANTIATES the normalised template → "exact"
14
+ * - Partial consumer: url_prefix is a path-prefix of the template's literal head → "partial"
15
+ *
16
+ * One consumer can match multiple producers (all reported).
17
+ * Multiple consumers can match one producer (all reported).
18
+ * Deduplication: identical (producer_repo, consumer_repo, consumer_file, line, path, method) → single entry.
19
+ */
20
+ export declare function matchContracts(producers: RepoEndpoint[], consumers: Array<OutboundCall & {
21
+ repo: string;
22
+ }>): ContractMatch[];
23
+ export { instantiatesTemplate, matchesPartialPrefix };
24
+ //# sourceMappingURL=cross-repo-contract-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-matcher.d.ts","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAmBnE,4EAA4E;AAC5E,iBAAS,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAcvF;AA8BD,oFAAoF;AACpF,iBAAS,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CASpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,YAAY,EAAE,EACzB,SAAS,EAAE,KAAK,CAAC,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,aAAa,EAAE,CA6CjB;AAED,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,134 @@
1
+ /** Split a path into non-empty segments (splitting on "/"). */
2
+ function pathSegments(path) {
3
+ return path.split("/").filter((s) => s.length > 0);
4
+ }
5
+ /** Compute the longest literal prefix of a normalised template path. */
6
+ function templateLiteralHead(normalizedPath) {
7
+ const segs = pathSegments(normalizedPath);
8
+ const literalSegs = [];
9
+ for (const seg of segs) {
10
+ if (seg === "{param}")
11
+ break;
12
+ literalSegs.push(seg);
13
+ }
14
+ if (literalSegs.length === 0)
15
+ return "/";
16
+ return "/" + literalSegs.join("/") + "/";
17
+ }
18
+ /** Test whether a concrete path instantiates a normalised template path. */
19
+ function instantiatesTemplate(concretePath, normalizedTemplate) {
20
+ const concSegs = pathSegments(concretePath);
21
+ const tmplSegs = pathSegments(normalizedTemplate);
22
+ if (concSegs.length !== tmplSegs.length)
23
+ return false;
24
+ for (let i = 0; i < tmplSegs.length; i++) {
25
+ const t = tmplSegs[i];
26
+ const c = concSegs[i];
27
+ if (t === "{param}") {
28
+ if (c.length === 0)
29
+ return false; // must match exactly one non-empty segment
30
+ }
31
+ else {
32
+ if (t !== c)
33
+ return false;
34
+ }
35
+ }
36
+ return true;
37
+ }
38
+ /** Match a Next.js catch-all while preserving the public `{param}` normal form. */
39
+ function instantiatesProducer(concretePath, producer) {
40
+ const rawSegments = pathSegments(producer.path);
41
+ const catchAllIndex = rawSegments.findIndex((segment) => /^\[\.\.\.[^\]]+\]$/.test(segment) || /^\[\[\.\.\.[^\]]+\]\]$/.test(segment));
42
+ if (catchAllIndex === -1) {
43
+ return instantiatesTemplate(concretePath, producer.normalized_path);
44
+ }
45
+ // Next.js catch-all parameters are terminal. Fall back to the conservative
46
+ // fixed-width matcher if an extractor ever returns a different shape.
47
+ if (catchAllIndex !== rawSegments.length - 1) {
48
+ return instantiatesTemplate(concretePath, producer.normalized_path);
49
+ }
50
+ const concreteSegments = pathSegments(concretePath);
51
+ const templateSegments = pathSegments(producer.normalized_path);
52
+ const optional = rawSegments[catchAllIndex].startsWith("[[");
53
+ const minimumSegments = catchAllIndex + (optional ? 0 : 1);
54
+ if (concreteSegments.length < minimumSegments)
55
+ return false;
56
+ for (let index = 0; index < catchAllIndex; index++) {
57
+ const templateSegment = templateSegments[index];
58
+ if (templateSegment !== "{param}" && templateSegment !== concreteSegments[index])
59
+ return false;
60
+ }
61
+ return true;
62
+ }
63
+ /** Test whether a partial consumer URL prefix matches a template's literal head. */
64
+ function matchesPartialPrefix(urlPrefix, normalizedTemplate) {
65
+ if (!urlPrefix)
66
+ return false;
67
+ if (pathSegments(urlPrefix).length === 0)
68
+ return false;
69
+ const head = templateLiteralHead(normalizedTemplate);
70
+ // Normalise: ensure both end with "/" for prefix comparison
71
+ const normPrefix = urlPrefix.endsWith("/") ? urlPrefix : urlPrefix + "/";
72
+ const normHead = head.endsWith("/") ? head : head + "/";
73
+ // The consumer prefix must equal or be a path-prefix of the template literal head
74
+ return normHead.startsWith(normPrefix) || normPrefix === normHead;
75
+ }
76
+ /**
77
+ * Match producer `RepoEndpoint[]` against consumer outbound calls (annotated with repo).
78
+ *
79
+ * Matching rules:
80
+ * - Same HTTP method (case-insensitive, already uppercased by adapters)
81
+ * - Cross-repo only (producer.repo !== consumer.repo)
82
+ * - Non-partial consumer: concrete path INSTANTIATES the normalised template → "exact"
83
+ * - Partial consumer: url_prefix is a path-prefix of the template's literal head → "partial"
84
+ *
85
+ * One consumer can match multiple producers (all reported).
86
+ * Multiple consumers can match one producer (all reported).
87
+ * Deduplication: identical (producer_repo, consumer_repo, consumer_file, line, path, method) → single entry.
88
+ */
89
+ export function matchContracts(producers, consumers) {
90
+ const results = [];
91
+ const seen = new Set();
92
+ for (const p of producers) {
93
+ for (const c of consumers) {
94
+ // Cross-repo only
95
+ if (p.repo === c.repo)
96
+ continue;
97
+ // Method must match
98
+ if (p.method.toUpperCase() !== c.method.toUpperCase())
99
+ continue;
100
+ let confidence = null;
101
+ if (!c.partial) {
102
+ // Exact: concrete path must instantiate the normalised template
103
+ if (instantiatesProducer(c.url_prefix, p)) {
104
+ confidence = "exact";
105
+ }
106
+ }
107
+ else {
108
+ // Partial: prefix must match template's literal head
109
+ if (matchesPartialPrefix(c.url_prefix, p.normalized_path)) {
110
+ confidence = "partial";
111
+ }
112
+ }
113
+ if (confidence === null)
114
+ continue;
115
+ // Deduplication key
116
+ const key = `${p.repo}|${c.repo}|${c.file}|${c.line}|${p.normalized_path}|${c.method}`;
117
+ if (seen.has(key))
118
+ continue;
119
+ seen.add(key);
120
+ results.push({
121
+ producer_repo: p.repo,
122
+ consumer_repo: c.repo,
123
+ method: c.method,
124
+ path: p.normalized_path,
125
+ consumer_file: c.file,
126
+ consumer_line: c.line,
127
+ confidence,
128
+ });
129
+ }
130
+ }
131
+ return results;
132
+ }
133
+ export { instantiatesTemplate, matchesPartialPrefix };
134
+ //# sourceMappingURL=cross-repo-contract-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-matcher.js","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { RepoContractData } from "./cross-repo-contract-types.js";
2
+ /**
3
+ * Default repo resolver: real getCodeIndex → framework-detected producer
4
+ * extraction (hono/nest/nextjs adapters) + indexed-source outbound scan.
5
+ * Dynamic imports avoid a register-tools ↔ index-tools cycle at module load.
6
+ */
7
+ declare function defaultRepoResolver(repo: string): Promise<RepoContractData>;
8
+ export { defaultRepoResolver };
9
+ //# sourceMappingURL=cross-repo-contract-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-repo-contract-resolver.d.ts","sourceRoot":"","sources":["../../src/tools/cross-repo-contract-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvE;;;;GAIG;AACH,iBAAe,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyE1E;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}