@sdd-method/sdd-cli 1.42.0 → 1.44.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 (402) hide show
  1. package/NOTICE +1 -1
  2. package/README.md +16 -70
  3. package/dist/author-bin.d.ts +3 -0
  4. package/dist/author-bin.d.ts.map +1 -0
  5. package/dist/author-bin.js +8 -0
  6. package/dist/author-bin.js.map +1 -0
  7. package/dist/author-program.d.ts +8 -0
  8. package/dist/author-program.d.ts.map +1 -0
  9. package/dist/author-program.js +99 -0
  10. package/dist/author-program.js.map +1 -0
  11. package/dist/cli.js +0 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/lib/agent-harness.d.ts +11 -8
  16. package/dist/lib/agent-harness.d.ts.map +1 -1
  17. package/dist/lib/agent-harness.js +17 -8
  18. package/dist/lib/agent-harness.js.map +1 -1
  19. package/dist/lib/briefing/index.d.ts +1 -1
  20. package/dist/lib/briefing/index.d.ts.map +1 -1
  21. package/dist/lib/briefing/index.js +1 -1
  22. package/dist/lib/briefing/index.js.map +1 -1
  23. package/dist/lib/briefing/render.d.ts +18 -1
  24. package/dist/lib/briefing/render.d.ts.map +1 -1
  25. package/dist/lib/briefing/render.js +17 -8
  26. package/dist/lib/briefing/render.js.map +1 -1
  27. package/dist/lib/catalogue/aggregate.js +6 -6
  28. package/dist/lib/catalogue/aggregate.js.map +1 -1
  29. package/dist/lib/catalogue/aggregation-manifest-loader.js +4 -4
  30. package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -1
  31. package/dist/lib/catalogue/build.js +1 -1
  32. package/dist/lib/catalogue/build.js.map +1 -1
  33. package/dist/lib/catalogue/builders/c4-components.js +1 -1
  34. package/dist/lib/catalogue/builders/c4-components.js.map +1 -1
  35. package/dist/lib/catalogue/builders/c4-containers.d.ts +1 -1
  36. package/dist/lib/catalogue/builders/c4-containers.js +1 -1
  37. package/dist/lib/catalogue/builders/c4-l1-candidates.js +1 -1
  38. package/dist/lib/catalogue/builders/c4-l1-candidates.js.map +1 -1
  39. package/dist/lib/catalogue/builders/container-dependency.d.ts +1 -1
  40. package/dist/lib/catalogue/builders/container-dependency.js +1 -1
  41. package/dist/lib/catalogue/builders/data-store-mapping.js +1 -1
  42. package/dist/lib/catalogue/builders/data-store-mapping.js.map +1 -1
  43. package/dist/lib/catalogue/builders/screen-tree.d.ts +1 -1
  44. package/dist/lib/catalogue/builders/screen-tree.js +1 -1
  45. package/dist/lib/catalogue/contract-path-resolution.d.ts +2 -2
  46. package/dist/lib/catalogue/contract-path-resolution.js +2 -2
  47. package/dist/lib/catalogue/dedupe-keyed-tables.d.ts +1 -1
  48. package/dist/lib/catalogue/dedupe-keyed-tables.js +0 -0
  49. package/dist/lib/catalogue/dedupe-keyed-tables.js.map +1 -1
  50. package/dist/lib/catalogue/freshness.d.ts +1 -0
  51. package/dist/lib/catalogue/freshness.d.ts.map +1 -1
  52. package/dist/lib/catalogue/freshness.js +4 -3
  53. package/dist/lib/catalogue/freshness.js.map +1 -1
  54. package/dist/lib/catalogue/scores-coverage.js +1 -1
  55. package/dist/lib/catalogue/scores-coverage.js.map +1 -1
  56. package/dist/lib/catalogue/service-contract-aliases-loader.d.ts +1 -1
  57. package/dist/lib/catalogue/service-contract-aliases-loader.js +1 -1
  58. package/dist/lib/ci-binding/index.d.ts.map +1 -1
  59. package/dist/lib/ci-binding/index.js +44 -5
  60. package/dist/lib/ci-binding/index.js.map +1 -1
  61. package/dist/lib/ci-binding/module.d.ts +10 -0
  62. package/dist/lib/ci-binding/module.d.ts.map +1 -1
  63. package/dist/lib/ci-binding/module.js +74 -2
  64. package/dist/lib/ci-binding/module.js.map +1 -1
  65. package/dist/lib/context-pull/index.d.ts +15 -9
  66. package/dist/lib/context-pull/index.d.ts.map +1 -1
  67. package/dist/lib/context-pull/index.js +79 -39
  68. package/dist/lib/context-pull/index.js.map +1 -1
  69. package/dist/lib/context-pull/retired-mcp-setup.d.ts +7 -0
  70. package/dist/lib/context-pull/retired-mcp-setup.d.ts.map +1 -0
  71. package/dist/lib/context-pull/retired-mcp-setup.js +7 -0
  72. package/dist/lib/context-pull/retired-mcp-setup.js.map +1 -0
  73. package/dist/lib/hooks-seed/entries.d.ts +41 -2
  74. package/dist/lib/hooks-seed/entries.d.ts.map +1 -1
  75. package/dist/lib/hooks-seed/entries.js +55 -4
  76. package/dist/lib/hooks-seed/entries.js.map +1 -1
  77. package/dist/lib/hooks-seed/index.d.ts +5 -9
  78. package/dist/lib/hooks-seed/index.d.ts.map +1 -1
  79. package/dist/lib/hooks-seed/index.js +4 -7
  80. package/dist/lib/hooks-seed/index.js.map +1 -1
  81. package/dist/lib/hooks-seed/merge.d.ts +7 -0
  82. package/dist/lib/hooks-seed/merge.d.ts.map +1 -1
  83. package/dist/lib/hooks-seed/merge.js +31 -0
  84. package/dist/lib/hooks-seed/merge.js.map +1 -1
  85. package/dist/lib/init/app.d.ts +0 -1
  86. package/dist/lib/init/app.d.ts.map +1 -1
  87. package/dist/lib/init/app.js +0 -7
  88. package/dist/lib/init/app.js.map +1 -1
  89. package/dist/lib/init/ci-workflow.js +26 -2
  90. package/dist/lib/init/ci-workflow.js.map +1 -1
  91. package/dist/lib/init/integration.d.ts +0 -1
  92. package/dist/lib/init/integration.d.ts.map +1 -1
  93. package/dist/lib/init/integration.js +0 -7
  94. package/dist/lib/init/integration.js.map +1 -1
  95. package/dist/lib/init/platform.d.ts +2 -10
  96. package/dist/lib/init/platform.d.ts.map +1 -1
  97. package/dist/lib/init/platform.js +7 -13
  98. package/dist/lib/init/platform.js.map +1 -1
  99. package/dist/lib/lock-file.d.ts +7 -0
  100. package/dist/lib/lock-file.d.ts.map +1 -1
  101. package/dist/lib/lock-file.js +10 -0
  102. package/dist/lib/lock-file.js.map +1 -1
  103. package/dist/lib/pack/builder.d.ts +14 -0
  104. package/dist/lib/pack/builder.d.ts.map +1 -1
  105. package/dist/lib/pack/builder.js +56 -4
  106. package/dist/lib/pack/builder.js.map +1 -1
  107. package/dist/lib/pack/index.d.ts +3 -1
  108. package/dist/lib/pack/index.d.ts.map +1 -1
  109. package/dist/lib/pack/index.js +1 -0
  110. package/dist/lib/pack/index.js.map +1 -1
  111. package/dist/lib/pack/publish-transform.js +1 -1
  112. package/dist/lib/pack/publish-transform.js.map +1 -1
  113. package/dist/lib/plan/index.d.ts.map +1 -1
  114. package/dist/lib/plan/index.js +4 -4
  115. package/dist/lib/plan/index.js.map +1 -1
  116. package/dist/lib/plan/read-sdd.js +1 -1
  117. package/dist/lib/plan/render-template.d.ts +8 -0
  118. package/dist/lib/plan/render-template.d.ts.map +1 -1
  119. package/dist/lib/plan/render-template.js +27 -3
  120. package/dist/lib/plan/render-template.js.map +1 -1
  121. package/dist/lib/sdd-index/repo-config.d.ts +1 -1
  122. package/dist/lib/sdd-index/repo-config.js +1 -1
  123. package/dist/lib/{mcp/reader.d.ts → sdd-reader.d.ts} +3 -5
  124. package/dist/lib/sdd-reader.d.ts.map +1 -0
  125. package/dist/lib/{mcp/reader.js → sdd-reader.js} +3 -5
  126. package/dist/lib/sdd-reader.js.map +1 -0
  127. package/dist/lib/snapshot/targets.js +1 -1
  128. package/dist/lib/snapshot/targets.js.map +1 -1
  129. package/dist/lib/sync/briefing-merge.d.ts +1 -1
  130. package/dist/lib/sync/briefing-merge.d.ts.map +1 -1
  131. package/dist/lib/sync/briefing-merge.js +50 -34
  132. package/dist/lib/sync/briefing-merge.js.map +1 -1
  133. package/dist/lib/sync/diff.js +1 -1
  134. package/dist/lib/sync/diff.js.map +1 -1
  135. package/dist/lib/sync/index.d.ts +14 -6
  136. package/dist/lib/sync/index.d.ts.map +1 -1
  137. package/dist/lib/sync/index.js +46 -72
  138. package/dist/lib/sync/index.js.map +1 -1
  139. package/dist/lib/sync/settings-merge.d.ts +29 -49
  140. package/dist/lib/sync/settings-merge.d.ts.map +1 -1
  141. package/dist/lib/sync/settings-merge.js +71 -163
  142. package/dist/lib/sync/settings-merge.js.map +1 -1
  143. package/dist/lib/validate/plan.d.ts +10 -1
  144. package/dist/lib/validate/plan.d.ts.map +1 -1
  145. package/dist/lib/validate/plan.js +6 -3
  146. package/dist/lib/validate/plan.js.map +1 -1
  147. package/dist/maintain-program.d.ts.map +1 -1
  148. package/dist/maintain-program.js +6 -3
  149. package/dist/maintain-program.js.map +1 -1
  150. package/dist/maintain-version.json +2 -2
  151. package/dist/verbs/catalogue-check.d.ts +10 -0
  152. package/dist/verbs/catalogue-check.d.ts.map +1 -0
  153. package/dist/verbs/catalogue-check.js +28 -0
  154. package/dist/verbs/catalogue-check.js.map +1 -0
  155. package/dist/verbs/catalogue.d.ts.map +1 -1
  156. package/dist/verbs/catalogue.js +2 -0
  157. package/dist/verbs/catalogue.js.map +1 -1
  158. package/dist/verbs/context.js +1 -1
  159. package/dist/verbs/context.js.map +1 -1
  160. package/dist/verbs/pack-build.d.ts.map +1 -1
  161. package/dist/verbs/pack-build.js +22 -0
  162. package/dist/verbs/pack-build.js.map +1 -1
  163. package/dist/verbs/plan.js +1 -1
  164. package/dist/verbs/plan.js.map +1 -1
  165. package/dist/verbs/sync.d.ts.map +1 -1
  166. package/dist/verbs/sync.js +17 -0
  167. package/dist/verbs/sync.js.map +1 -1
  168. package/dist/verbs/validate.d.ts.map +1 -1
  169. package/dist/verbs/validate.js +6 -1
  170. package/dist/verbs/validate.js.map +1 -1
  171. package/dist/verify-program.js +2 -2
  172. package/dist/verify-program.js.map +1 -1
  173. package/dist/verify-version.json +2 -2
  174. package/package.json +5 -13
  175. package/scripts/README.md +1 -1
  176. package/scripts/author-acceptance.mjs +170 -0
  177. package/scripts/author-version.json +4 -0
  178. package/scripts/build-persona-package.mjs +46 -13
  179. package/scripts/maintain-acceptance.mjs +3 -2
  180. package/scripts/maintain-version.json +2 -2
  181. package/scripts/publish-release.mjs +117 -0
  182. package/scripts/release-gate.mjs +19 -8
  183. package/scripts/verify-version.json +2 -2
  184. package/scripts/vitest-tmpdir.mjs +26 -0
  185. package/dist/lib/catalogue/advisory-container-type.d.ts +0 -13
  186. package/dist/lib/catalogue/advisory-container-type.d.ts.map +0 -1
  187. package/dist/lib/catalogue/advisory-container-type.js +0 -56
  188. package/dist/lib/catalogue/advisory-container-type.js.map +0 -1
  189. package/dist/lib/hooks-seed/copilot.d.ts +0 -93
  190. package/dist/lib/hooks-seed/copilot.d.ts.map +0 -1
  191. package/dist/lib/hooks-seed/copilot.js +0 -167
  192. package/dist/lib/hooks-seed/copilot.js.map +0 -1
  193. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts +0 -12
  194. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts.map +0 -1
  195. package/dist/lib/hooks-seed/lifecycle-mapping.js +0 -28
  196. package/dist/lib/hooks-seed/lifecycle-mapping.js.map +0 -1
  197. package/dist/lib/mcp/build-info.d.ts +0 -7
  198. package/dist/lib/mcp/build-info.d.ts.map +0 -1
  199. package/dist/lib/mcp/build-info.js +0 -10
  200. package/dist/lib/mcp/build-info.js.map +0 -1
  201. package/dist/lib/mcp/errors.d.ts +0 -23
  202. package/dist/lib/mcp/errors.d.ts.map +0 -1
  203. package/dist/lib/mcp/errors.js +0 -25
  204. package/dist/lib/mcp/errors.js.map +0 -1
  205. package/dist/lib/mcp/parse/frontmatter.d.ts +0 -22
  206. package/dist/lib/mcp/parse/frontmatter.d.ts.map +0 -1
  207. package/dist/lib/mcp/parse/frontmatter.js +0 -49
  208. package/dist/lib/mcp/parse/frontmatter.js.map +0 -1
  209. package/dist/lib/mcp/parse/gate-registry.d.ts +0 -78
  210. package/dist/lib/mcp/parse/gate-registry.d.ts.map +0 -1
  211. package/dist/lib/mcp/parse/gate-registry.js +0 -164
  212. package/dist/lib/mcp/parse/gate-registry.js.map +0 -1
  213. package/dist/lib/mcp/parse/paths.d.ts +0 -21
  214. package/dist/lib/mcp/parse/paths.d.ts.map +0 -1
  215. package/dist/lib/mcp/parse/paths.js +0 -84
  216. package/dist/lib/mcp/parse/paths.js.map +0 -1
  217. package/dist/lib/mcp/pin/errors.d.ts +0 -11
  218. package/dist/lib/mcp/pin/errors.d.ts.map +0 -1
  219. package/dist/lib/mcp/pin/errors.js +0 -32
  220. package/dist/lib/mcp/pin/errors.js.map +0 -1
  221. package/dist/lib/mcp/pin/index.d.ts +0 -18
  222. package/dist/lib/mcp/pin/index.d.ts.map +0 -1
  223. package/dist/lib/mcp/pin/index.js +0 -29
  224. package/dist/lib/mcp/pin/index.js.map +0 -1
  225. package/dist/lib/mcp/pin/read.d.ts +0 -24
  226. package/dist/lib/mcp/pin/read.d.ts.map +0 -1
  227. package/dist/lib/mcp/pin/read.js +0 -64
  228. package/dist/lib/mcp/pin/read.js.map +0 -1
  229. package/dist/lib/mcp/pin/resolve.d.ts +0 -12
  230. package/dist/lib/mcp/pin/resolve.d.ts.map +0 -1
  231. package/dist/lib/mcp/pin/resolve.js +0 -33
  232. package/dist/lib/mcp/pin/resolve.js.map +0 -1
  233. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts +0 -14
  234. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts.map +0 -1
  235. package/dist/lib/mcp/prompts/evaluate-cascade.js +0 -147
  236. package/dist/lib/mcp/prompts/evaluate-cascade.js.map +0 -1
  237. package/dist/lib/mcp/prompts/index.d.ts +0 -9
  238. package/dist/lib/mcp/prompts/index.d.ts.map +0 -1
  239. package/dist/lib/mcp/prompts/index.js +0 -23
  240. package/dist/lib/mcp/prompts/index.js.map +0 -1
  241. package/dist/lib/mcp/prompts/propose-adr.d.ts +0 -12
  242. package/dist/lib/mcp/prompts/propose-adr.d.ts.map +0 -1
  243. package/dist/lib/mcp/prompts/propose-adr.js +0 -100
  244. package/dist/lib/mcp/prompts/propose-adr.js.map +0 -1
  245. package/dist/lib/mcp/prompts/review-data-model-change.d.ts +0 -10
  246. package/dist/lib/mcp/prompts/review-data-model-change.d.ts.map +0 -1
  247. package/dist/lib/mcp/prompts/review-data-model-change.js +0 -134
  248. package/dist/lib/mcp/prompts/review-data-model-change.js.map +0 -1
  249. package/dist/lib/mcp/prompts/template-loader.d.ts +0 -29
  250. package/dist/lib/mcp/prompts/template-loader.d.ts.map +0 -1
  251. package/dist/lib/mcp/prompts/template-loader.js +0 -44
  252. package/dist/lib/mcp/prompts/template-loader.js.map +0 -1
  253. package/dist/lib/mcp/prompts/types.d.ts +0 -17
  254. package/dist/lib/mcp/prompts/types.d.ts.map +0 -1
  255. package/dist/lib/mcp/prompts/types.js +0 -10
  256. package/dist/lib/mcp/prompts/types.js.map +0 -1
  257. package/dist/lib/mcp/prompts/write-capability-spec.d.ts +0 -8
  258. package/dist/lib/mcp/prompts/write-capability-spec.d.ts.map +0 -1
  259. package/dist/lib/mcp/prompts/write-capability-spec.js +0 -85
  260. package/dist/lib/mcp/prompts/write-capability-spec.js.map +0 -1
  261. package/dist/lib/mcp/prompts/write-feature-spec.d.ts +0 -10
  262. package/dist/lib/mcp/prompts/write-feature-spec.d.ts.map +0 -1
  263. package/dist/lib/mcp/prompts/write-feature-spec.js +0 -94
  264. package/dist/lib/mcp/prompts/write-feature-spec.js.map +0 -1
  265. package/dist/lib/mcp/prompts/write-work-order.d.ts +0 -7
  266. package/dist/lib/mcp/prompts/write-work-order.d.ts.map +0 -1
  267. package/dist/lib/mcp/prompts/write-work-order.js +0 -69
  268. package/dist/lib/mcp/prompts/write-work-order.js.map +0 -1
  269. package/dist/lib/mcp/reader.d.ts.map +0 -1
  270. package/dist/lib/mcp/reader.js.map +0 -1
  271. package/dist/lib/mcp/resources/adrs.d.ts +0 -3
  272. package/dist/lib/mcp/resources/adrs.d.ts.map +0 -1
  273. package/dist/lib/mcp/resources/adrs.js +0 -97
  274. package/dist/lib/mcp/resources/adrs.js.map +0 -1
  275. package/dist/lib/mcp/resources/catalogue.d.ts +0 -19
  276. package/dist/lib/mcp/resources/catalogue.d.ts.map +0 -1
  277. package/dist/lib/mcp/resources/catalogue.js +0 -240
  278. package/dist/lib/mcp/resources/catalogue.js.map +0 -1
  279. package/dist/lib/mcp/resources/data-models.d.ts +0 -14
  280. package/dist/lib/mcp/resources/data-models.d.ts.map +0 -1
  281. package/dist/lib/mcp/resources/data-models.js +0 -81
  282. package/dist/lib/mcp/resources/data-models.js.map +0 -1
  283. package/dist/lib/mcp/resources/gates.d.ts +0 -9
  284. package/dist/lib/mcp/resources/gates.d.ts.map +0 -1
  285. package/dist/lib/mcp/resources/gates.js +0 -76
  286. package/dist/lib/mcp/resources/gates.js.map +0 -1
  287. package/dist/lib/mcp/resources/glossary.d.ts +0 -16
  288. package/dist/lib/mcp/resources/glossary.d.ts.map +0 -1
  289. package/dist/lib/mcp/resources/glossary.js +0 -87
  290. package/dist/lib/mcp/resources/glossary.js.map +0 -1
  291. package/dist/lib/mcp/resources/specs.d.ts +0 -23
  292. package/dist/lib/mcp/resources/specs.d.ts.map +0 -1
  293. package/dist/lib/mcp/resources/specs.js +0 -151
  294. package/dist/lib/mcp/resources/specs.js.map +0 -1
  295. package/dist/lib/mcp/resources/version.d.ts +0 -3
  296. package/dist/lib/mcp/resources/version.d.ts.map +0 -1
  297. package/dist/lib/mcp/resources/version.js +0 -45
  298. package/dist/lib/mcp/resources/version.js.map +0 -1
  299. package/dist/lib/mcp/server.d.ts +0 -29
  300. package/dist/lib/mcp/server.d.ts.map +0 -1
  301. package/dist/lib/mcp/server.js +0 -108
  302. package/dist/lib/mcp/server.js.map +0 -1
  303. package/dist/lib/mcp/tools/cascade-impact.d.ts +0 -22
  304. package/dist/lib/mcp/tools/cascade-impact.d.ts.map +0 -1
  305. package/dist/lib/mcp/tools/cascade-impact.js +0 -53
  306. package/dist/lib/mcp/tools/cascade-impact.js.map +0 -1
  307. package/dist/lib/mcp/tools/catalogue.d.ts +0 -16
  308. package/dist/lib/mcp/tools/catalogue.d.ts.map +0 -1
  309. package/dist/lib/mcp/tools/catalogue.js +0 -268
  310. package/dist/lib/mcp/tools/catalogue.js.map +0 -1
  311. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts +0 -7
  312. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts.map +0 -1
  313. package/dist/lib/mcp/tools/find-consumers-of-contract.js +0 -70
  314. package/dist/lib/mcp/tools/find-consumers-of-contract.js.map +0 -1
  315. package/dist/lib/mcp/tools/find-consumers.d.ts +0 -7
  316. package/dist/lib/mcp/tools/find-consumers.d.ts.map +0 -1
  317. package/dist/lib/mcp/tools/find-consumers.js +0 -52
  318. package/dist/lib/mcp/tools/find-consumers.js.map +0 -1
  319. package/dist/lib/mcp/tools/find-dependencies.d.ts +0 -8
  320. package/dist/lib/mcp/tools/find-dependencies.d.ts.map +0 -1
  321. package/dist/lib/mcp/tools/find-dependencies.js +0 -101
  322. package/dist/lib/mcp/tools/find-dependencies.js.map +0 -1
  323. package/dist/lib/mcp/tools/find-dependents.d.ts +0 -8
  324. package/dist/lib/mcp/tools/find-dependents.d.ts.map +0 -1
  325. package/dist/lib/mcp/tools/find-dependents.js +0 -89
  326. package/dist/lib/mcp/tools/find-dependents.js.map +0 -1
  327. package/dist/lib/mcp/tools/find-producers.d.ts +0 -8
  328. package/dist/lib/mcp/tools/find-producers.d.ts.map +0 -1
  329. package/dist/lib/mcp/tools/find-producers.js +0 -57
  330. package/dist/lib/mcp/tools/find-producers.js.map +0 -1
  331. package/dist/lib/mcp/tools/find-related-specs.d.ts +0 -9
  332. package/dist/lib/mcp/tools/find-related-specs.d.ts.map +0 -1
  333. package/dist/lib/mcp/tools/find-related-specs.js +0 -92
  334. package/dist/lib/mcp/tools/find-related-specs.js.map +0 -1
  335. package/dist/lib/mcp/tools/list-adrs.d.ts +0 -3
  336. package/dist/lib/mcp/tools/list-adrs.d.ts.map +0 -1
  337. package/dist/lib/mcp/tools/list-adrs.js +0 -73
  338. package/dist/lib/mcp/tools/list-adrs.js.map +0 -1
  339. package/dist/lib/mcp/tools/query-gate-status.d.ts +0 -3
  340. package/dist/lib/mcp/tools/query-gate-status.d.ts.map +0 -1
  341. package/dist/lib/mcp/tools/query-gate-status.js +0 -68
  342. package/dist/lib/mcp/tools/query-gate-status.js.map +0 -1
  343. package/dist/lib/mcp/tools/search-specs.d.ts +0 -12
  344. package/dist/lib/mcp/tools/search-specs.d.ts.map +0 -1
  345. package/dist/lib/mcp/tools/search-specs.js +0 -151
  346. package/dist/lib/mcp/tools/search-specs.js.map +0 -1
  347. package/dist/lib/mcp/workspace.d.ts +0 -31
  348. package/dist/lib/mcp/workspace.d.ts.map +0 -1
  349. package/dist/lib/mcp/workspace.js +0 -146
  350. package/dist/lib/mcp/workspace.js.map +0 -1
  351. package/dist/lib/mcp-seed/entries.d.ts +0 -32
  352. package/dist/lib/mcp-seed/entries.d.ts.map +0 -1
  353. package/dist/lib/mcp-seed/entries.js +0 -14
  354. package/dist/lib/mcp-seed/entries.js.map +0 -1
  355. package/dist/lib/mcp-seed/index.d.ts +0 -36
  356. package/dist/lib/mcp-seed/index.d.ts.map +0 -1
  357. package/dist/lib/mcp-seed/index.js +0 -28
  358. package/dist/lib/mcp-seed/index.js.map +0 -1
  359. package/dist/lib/mcp-seed/merge.d.ts +0 -34
  360. package/dist/lib/mcp-seed/merge.d.ts.map +0 -1
  361. package/dist/lib/mcp-seed/merge.js +0 -99
  362. package/dist/lib/mcp-seed/merge.js.map +0 -1
  363. package/dist/lib/mcp-seed/types.d.ts +0 -24
  364. package/dist/lib/mcp-seed/types.d.ts.map +0 -1
  365. package/dist/lib/mcp-seed/types.js +0 -13
  366. package/dist/lib/mcp-seed/types.js.map +0 -1
  367. package/dist/lib/sdd-index/cascade.d.ts +0 -46
  368. package/dist/lib/sdd-index/cascade.d.ts.map +0 -1
  369. package/dist/lib/sdd-index/cascade.js +0 -91
  370. package/dist/lib/sdd-index/cascade.js.map +0 -1
  371. package/dist/lib/sdd-index/contracts.d.ts +0 -29
  372. package/dist/lib/sdd-index/contracts.d.ts.map +0 -1
  373. package/dist/lib/sdd-index/contracts.js +0 -216
  374. package/dist/lib/sdd-index/contracts.js.map +0 -1
  375. package/dist/lib/sdd-index/data-model.d.ts +0 -13
  376. package/dist/lib/sdd-index/data-model.d.ts.map +0 -1
  377. package/dist/lib/sdd-index/data-model.js +0 -23
  378. package/dist/lib/sdd-index/data-model.js.map +0 -1
  379. package/dist/lib/sdd-index/execution-map.d.ts +0 -34
  380. package/dist/lib/sdd-index/execution-map.d.ts.map +0 -1
  381. package/dist/lib/sdd-index/execution-map.js +0 -105
  382. package/dist/lib/sdd-index/execution-map.js.map +0 -1
  383. package/dist/lib/sdd-index/graph.d.ts +0 -28
  384. package/dist/lib/sdd-index/graph.d.ts.map +0 -1
  385. package/dist/lib/sdd-index/graph.js +0 -122
  386. package/dist/lib/sdd-index/graph.js.map +0 -1
  387. package/dist/lib/sdd-index/index.d.ts +0 -29
  388. package/dist/lib/sdd-index/index.d.ts.map +0 -1
  389. package/dist/lib/sdd-index/index.js +0 -79
  390. package/dist/lib/sdd-index/index.js.map +0 -1
  391. package/dist/lib/sdd-index/watch.d.ts +0 -24
  392. package/dist/lib/sdd-index/watch.d.ts.map +0 -1
  393. package/dist/lib/sdd-index/watch.js +0 -112
  394. package/dist/lib/sdd-index/watch.js.map +0 -1
  395. package/dist/lib/sync/copilot-hooks-merge.d.ts +0 -36
  396. package/dist/lib/sync/copilot-hooks-merge.d.ts.map +0 -1
  397. package/dist/lib/sync/copilot-hooks-merge.js +0 -108
  398. package/dist/lib/sync/copilot-hooks-merge.js.map +0 -1
  399. package/dist/verbs/mcp.d.ts +0 -3
  400. package/dist/verbs/mcp.d.ts.map +0 -1
  401. package/dist/verbs/mcp.js +0 -22
  402. package/dist/verbs/mcp.js.map +0 -1
@@ -1,268 +0,0 @@
1
- /**
2
- * Catalogue tools (sdd-mcp Phase 8, Step 4). Read-only, on-demand
3
- * queries over the consumer repo's built catalogues:
4
- *
5
- * query_catalogue_coverage — row count + internal-FK pass + coverage for one catalogue
6
- * find_products_by_category — products filtered by category
7
- * find_orphan_rows — rows whose internal FK target is missing
8
- * query_edges_for_entity — every edge row referencing a given entity
9
- *
10
- * FK semantics follow ADR 0134: external FKs are validated only at
11
- * aggregation, so per-SDD coverage and orphan checks consider internal
12
- * FKs only. Reuses the existing schema-loader + csv-reader.
13
- */
14
- import { readdir } from "node:fs/promises";
15
- import { join } from "node:path";
16
- import { z } from "zod";
17
- import { McpEnvelopeError } from "../errors.js";
18
- import { loadCanonicalSchema, findCatalogue, } from "../../catalogue/schema-loader.js";
19
- import { readCatalogueCsv, } from "../../catalogue/csv-reader.js";
20
- async function loadAll(sddRoot) {
21
- const schema = await loadCanonicalSchema();
22
- const dir = join(sddRoot, "catalogues");
23
- const present = new Map();
24
- let files;
25
- try {
26
- files = await readdir(dir);
27
- }
28
- catch {
29
- return { schema, present };
30
- }
31
- for (const f of files) {
32
- if (!f.endsWith(".csv"))
33
- continue;
34
- const name = f.slice(0, -".csv".length);
35
- present.set(name, await readCatalogueCsv(join(dir, f)));
36
- }
37
- return { schema, present };
38
- }
39
- /** Referenced catalogue + column from an FK `references` string ("cat.col"). */
40
- function refParts(references) {
41
- const [catalogue, column] = references.split(".");
42
- return { catalogue: catalogue ?? "", column: column ?? "id" };
43
- }
44
- /** Compute internal-FK orphan rows for one catalogue (or all when name is null). */
45
- function orphansFor(loaded, only) {
46
- const out = [];
47
- // Pre-build PK value sets per present catalogue.
48
- const pkSets = new Map();
49
- for (const [name, csv] of loaded.present) {
50
- let def;
51
- try {
52
- def = findCatalogue(loaded.schema, name);
53
- }
54
- catch {
55
- continue;
56
- }
57
- pkSets.set(name, new Set(csv.rows.map((r) => r[def.primaryKey] ?? "")));
58
- }
59
- for (const [name, csv] of loaded.present) {
60
- if (only !== null && name !== only)
61
- continue;
62
- let def;
63
- try {
64
- def = findCatalogue(loaded.schema, name);
65
- }
66
- catch {
67
- continue;
68
- }
69
- for (const fk of def.foreignKeys) {
70
- if (fk.external)
71
- continue; // external FKs validated at aggregation only
72
- const { catalogue: targetCat } = refParts(fk.references);
73
- const targetPks = pkSets.get(targetCat);
74
- for (const row of csv.rows) {
75
- const val = row[fk.column] ?? "";
76
- if (val === "")
77
- continue; // empty FK value — nullable or unset
78
- // Missing target catalogue, or value not found in the target's PKs.
79
- if (targetPks === undefined || !targetPks.has(val)) {
80
- out.push({
81
- catalogue: name,
82
- row_id: row[def.primaryKey] ?? "",
83
- broken_fk_column: fk.column,
84
- references: fk.references,
85
- missing_target: val,
86
- });
87
- }
88
- }
89
- }
90
- }
91
- return out;
92
- }
93
- function asText(payload) {
94
- return { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }] };
95
- }
96
- export function register(server, sddRoot) {
97
- // --- query_catalogue_coverage ---
98
- server.registerTool("query_catalogue_coverage", {
99
- title: "Query catalogue coverage",
100
- description: "Row count, internal-FK pass, and coverage metrics for one built catalogue. Read-only on-demand mirror of the catalogue-integrity gate.",
101
- inputSchema: {
102
- catalogue: z
103
- .string()
104
- .min(1)
105
- .describe("Catalogue name (e.g. 'products'). See sdd://catalogue."),
106
- },
107
- }, async ({ catalogue }) => {
108
- const loaded = await loadAll(sddRoot);
109
- try {
110
- findCatalogue(loaded.schema, catalogue);
111
- }
112
- catch {
113
- throw new McpEnvelopeError({
114
- code: "CATALOGUE_NOT_DECLARED",
115
- message: `"${catalogue}" is not declared in the canonical schema (version ${loaded.schema.schemaVersion}).`,
116
- remediation: "Query sdd://catalogue/schema for declared names.",
117
- context: { catalogue, schema_version: loaded.schema.schemaVersion },
118
- });
119
- }
120
- const csv = loaded.present.get(catalogue);
121
- if (csv === undefined) {
122
- throw new McpEnvelopeError({
123
- code: "CATALOGUE_NOT_BUILT",
124
- message: `Catalogue "${catalogue}" is declared but not built under ${sddRoot}/catalogues.`,
125
- remediation: "Build catalogues (catalogue-integrity-gate skill or `sdd-cli catalogue build`) before querying coverage.",
126
- context: { catalogue, sdd_root: sddRoot },
127
- });
128
- }
129
- const orphans = orphansFor(loaded, catalogue);
130
- return asText({
131
- catalogue,
132
- schema_version: loaded.schema.schemaVersion,
133
- row_count: csv.rows.length,
134
- fk_pass: orphans.length === 0,
135
- coverage: {
136
- internal_fk_orphan_count: orphans.length,
137
- columns_present: csv.columns.length,
138
- },
139
- });
140
- });
141
- // --- find_products_by_category ---
142
- server.registerTool("find_products_by_category", {
143
- title: "Find products by category",
144
- description: "Products in the products catalogue matching a given category, with domain, profile, and category.",
145
- inputSchema: {
146
- category: z
147
- .string()
148
- .min(1)
149
- .describe("Product category value (e.g. 'platform-root', 'application-product'). See sdd://catalogue/category-taxonomy."),
150
- },
151
- }, async ({ category }) => {
152
- const loaded = await loadAll(sddRoot);
153
- const csv = loaded.present.get("products");
154
- if (csv === undefined) {
155
- throw new McpEnvelopeError({
156
- code: "CATALOGUE_NOT_BUILT",
157
- message: `The products catalogue is not built under ${sddRoot}/catalogues.`,
158
- remediation: "Build catalogues before querying products.",
159
- context: { sdd_root: sddRoot },
160
- });
161
- }
162
- const matches = csv.rows
163
- .filter((r) => r["category"] === category)
164
- .map((r) => ({
165
- id: r["id"] ?? "",
166
- name: r["name"] ?? "",
167
- domain_id: r["domain_id"] ?? "",
168
- profile: r["profile"] ?? "",
169
- category: r["category"] ?? "",
170
- }));
171
- return asText({ category, match_count: matches.length, products: matches });
172
- });
173
- // --- find_orphan_rows ---
174
- server.registerTool("find_orphan_rows", {
175
- title: "Find orphan rows",
176
- description: "Rows whose internal foreign-key value has no matching primary key in the referenced catalogue. Triages FK-FAIL without re-running the full builder. Optional catalogue filter.",
177
- inputSchema: {
178
- catalogue: z
179
- .string()
180
- .optional()
181
- .describe("Optional: restrict to one catalogue. Omit to scan all."),
182
- },
183
- }, async ({ catalogue }) => {
184
- const loaded = await loadAll(sddRoot);
185
- if (catalogue !== undefined) {
186
- try {
187
- findCatalogue(loaded.schema, catalogue);
188
- }
189
- catch {
190
- throw new McpEnvelopeError({
191
- code: "CATALOGUE_NOT_DECLARED",
192
- message: `"${catalogue}" is not declared in the canonical schema.`,
193
- remediation: "Query sdd://catalogue/schema for declared names.",
194
- context: { catalogue },
195
- });
196
- }
197
- }
198
- const orphans = orphansFor(loaded, catalogue ?? null);
199
- return asText({
200
- scope: catalogue ?? "all",
201
- schema_version: loaded.schema.schemaVersion,
202
- orphan_count: orphans.length,
203
- orphans,
204
- });
205
- });
206
- // --- query_edges_for_entity ---
207
- server.registerTool("query_edges_for_entity", {
208
- title: "Query edges for entity",
209
- description: "Every edge row, in any catalogue, whose foreign key references the given entity (incoming + outgoing). Powers impact-analysis and dependency queries.",
210
- inputSchema: {
211
- entity_type: z
212
- .string()
213
- .min(1)
214
- .describe("Entity type — the singular of its catalogue (e.g. 'capability', 'service', 'product') or the catalogue name itself."),
215
- entity_id: z.string().min(1).describe("The entity's id value."),
216
- },
217
- }, async ({ entity_type, entity_id }) => {
218
- const loaded = await loadAll(sddRoot);
219
- // Resolve entity_type -> base catalogue name.
220
- const candidates = [
221
- entity_type,
222
- `${entity_type}s`,
223
- entity_type.replace(/y$/, "ies"),
224
- ];
225
- const base = loaded.schema.catalogues.find((c) => candidates.includes(c.name));
226
- if (base === undefined) {
227
- throw new McpEnvelopeError({
228
- code: "ENTITY_TYPE_UNKNOWN",
229
- message: `Could not resolve entity_type "${entity_type}" to a catalogue.`,
230
- remediation: "Use a catalogue's singular (e.g. 'capability') or its name (e.g. 'capabilities'). See sdd://catalogue/schema.",
231
- context: { entity_type, tried: candidates },
232
- });
233
- }
234
- const targetRef = `${base.name}.${base.primaryKey}`;
235
- const edges = [];
236
- for (const [name, csv] of loaded.present) {
237
- let def;
238
- try {
239
- def = findCatalogue(loaded.schema, name);
240
- }
241
- catch {
242
- continue;
243
- }
244
- const matchingFks = def.foreignKeys.filter((fk) => fk.references === targetRef);
245
- if (matchingFks.length === 0)
246
- continue;
247
- for (const row of csv.rows) {
248
- for (const fk of matchingFks) {
249
- if ((row[fk.column] ?? "") === entity_id) {
250
- edges.push({
251
- catalogue: name,
252
- row_id: row[def.primaryKey] ?? "",
253
- via_column: fk.column,
254
- row,
255
- });
256
- }
257
- }
258
- }
259
- }
260
- return asText({
261
- entity_type: base.name,
262
- entity_id,
263
- edge_count: edges.length,
264
- edges,
265
- });
266
- });
267
- }
268
- //# sourceMappingURL=catalogue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/catalogue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,aAAa,GAGd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AAQvC,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,UAAkB;IAClC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;AAChE,CAAC;AAUD,oFAAoF;AACpF,SAAS,UAAU,CACjB,MAAwB,EACxB,IAAmB;IAEnB,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,iDAAiD;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,GAAiB,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC7C,IAAI,GAAiB,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,QAAQ;gBAAE,SAAS,CAAC,6CAA6C;YACxE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,GAAG,KAAK,EAAE;oBAAE,SAAS,CAAC,qCAAqC;gBAC/D,oEAAoE;gBACpE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnD,GAAG,CAAC,IAAI,CAAC;wBACP,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;wBACjC,gBAAgB,EAAE,EAAE,CAAC,MAAM;wBAC3B,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,cAAc,EAAE,GAAG;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,OAAe;IACzD,mCAAmC;IACnC,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,wIAAwI;QAC1I,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,wDAAwD,CAAC;SACtE;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,IAAI,SAAS,sDAAsD,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI;gBAC3G,WAAW,EAAE,kDAAkD;gBAC/D,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;aACpE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,cAAc,SAAS,qCAAqC,OAAO,cAAc;gBAC1F,WAAW,EACT,0GAA0G;gBAC5G,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC;YACZ,SAAS;YACT,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;YAC3C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YAC1B,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;YAC7B,QAAQ,EAAE;gBACR,wBAAwB,EAAE,OAAO,CAAC,MAAM;gBACxC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;aACpC;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,mGAAmG;QACrG,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,8GAA8G,CAC/G;SACJ;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,6CAA6C,OAAO,cAAc;gBAC3E,WAAW,EAAE,4CAA4C;gBACzD,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YACjB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;YAC/B,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;YAC3B,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;SAC9B,CAAC,CAAC,CAAC;QACN,OAAO,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,gBAAgB,CAAC;oBACzB,IAAI,EAAE,wBAAwB;oBAC9B,OAAO,EAAE,IAAI,SAAS,4CAA4C;oBAClE,WAAW,EAAE,kDAAkD;oBAC/D,OAAO,EAAE,EAAE,SAAS,EAAE;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;YACZ,KAAK,EAAE,SAAS,IAAI,KAAK;YACzB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;YAC3C,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,qHAAqH,CACtH;YACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAChE;KACF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,8CAA8C;QAC9C,MAAM,UAAU,GAAG;YACjB,WAAW;YACX,GAAG,WAAW,GAAG;YACjB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACjC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5B,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,kCAAkC,WAAW,mBAAmB;gBACzE,WAAW,EACT,+GAA+G;gBACjH,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,GAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CACxC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CACpC,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACvC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;wBACzC,KAAK,CAAC,IAAI,CAAC;4BACT,SAAS,EAAE,IAAI;4BACf,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;4BACjC,UAAU,EAAE,EAAE,CAAC,MAAM;4BACrB,GAAG;yBACJ,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;YACZ,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,SAAS;YACT,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * find_consumers_of_contract — given a contract path (relative to the
3
- * SDD root), return every service that pins it in their repo-config.
4
- */
5
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- export declare function register(server: McpServer, sddRoot: string): void;
7
- //# sourceMappingURL=find-consumers-of-contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-consumers-of-contract.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-consumers-of-contract.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAqEjE"}
@@ -1,70 +0,0 @@
1
- /**
2
- * find_consumers_of_contract — given a contract path (relative to the
3
- * SDD root), return every service that pins it in their repo-config.
4
- */
5
- import { z } from "zod";
6
- import { McpEnvelopeError } from "../errors.js";
7
- import { readerFor } from "../pin/index.js";
8
- import { getSddIndex } from "../../sdd-index/index.js";
9
- export function register(server, sddRoot) {
10
- server.registerTool("find_consumers_of_contract", {
11
- title: "Find consumers of contract",
12
- description: "Given a contract path (relative to the SDD root), list every service that pins it, with their version range and stability class.",
13
- inputSchema: {
14
- contract_path: z
15
- .string()
16
- .min(1)
17
- .describe("Contract path relative to the SDD root (e.g. 'contracts/party/party.events.v1.merged.avsc')."),
18
- pin_to_commit: z
19
- .string()
20
- .optional()
21
- .describe("Optional commit SHA (or ref) to pin the SDD to."),
22
- },
23
- }, async ({ contract_path, pin_to_commit }) => {
24
- const reader = readerFor(sddRoot, pin_to_commit);
25
- const index = getSddIndex(reader);
26
- const node = index.contracts.get(contract_path);
27
- if (!node) {
28
- throw new McpEnvelopeError({
29
- code: "CONTRACT_NOT_FOUND",
30
- message: `No contract at '${contract_path}' found in the SDD index.`,
31
- remediation: `The contract must be declared in at least one orchestration/repo-config/**/*.yaml file. Known contracts: ${Array.from(index.contracts.keys()).sort().join(", ") || "(none)"}.`,
32
- context: {
33
- contract_path,
34
- known: Array.from(index.contracts.keys()).sort(),
35
- },
36
- });
37
- }
38
- const pinsForContract = index.pins.get(contract_path);
39
- const consumers = node.consumers.map((id) => {
40
- const svc = index.services.get(id);
41
- const ref = svc?.contracts.find((c) => c.path === contract_path);
42
- return {
43
- service: id,
44
- domain: svc?.domain ?? null,
45
- version_pin: pinsForContract?.get(id) ?? ref?.version ?? null,
46
- stability: ref?.stability ?? null,
47
- package: ref?.package ?? null,
48
- };
49
- });
50
- const payload = {
51
- query: { contract_path },
52
- contract: {
53
- path: node.path,
54
- kind: node.kind,
55
- producers: node.producers,
56
- produced_aggregates: node.producedAggregates,
57
- produced_events: node.producedEvents,
58
- },
59
- consumers,
60
- total: consumers.length,
61
- pin_to_commit: reader.pin,
62
- sources: [`sdd://contracts/${node.path}`],
63
- metadata_incomplete: node.metadataIncomplete,
64
- };
65
- return {
66
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
67
- };
68
- });
69
- }
70
- //# sourceMappingURL=find-consumers-of-contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-consumers-of-contract.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-consumers-of-contract.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * find_consumers — given an aggregate name or event name, return the
3
- * services that consume it. Backed by the SDD index's `consumers` map.
4
- */
5
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- export declare function register(server: McpServer, sddRoot: string): void;
7
- //# sourceMappingURL=find-consumers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-consumers.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-consumers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA6DjE"}
@@ -1,52 +0,0 @@
1
- /**
2
- * find_consumers — given an aggregate name or event name, return the
3
- * services that consume it. Backed by the SDD index's `consumers` map.
4
- */
5
- import { z } from "zod";
6
- import { readerFor } from "../pin/index.js";
7
- import { getSddIndex } from "../../sdd-index/index.js";
8
- export function register(server, sddRoot) {
9
- server.registerTool("find_consumers", {
10
- title: "Find consumers",
11
- description: "Given an aggregate name or event name, return the services that consume it (via contract subscriptions declared in orchestration/repo-config/).",
12
- inputSchema: {
13
- target: z
14
- .string()
15
- .min(1)
16
- .describe("Aggregate name (e.g. 'Party') or event name (e.g. 'PartyMerged' / 'party.mergedInto'). Case-sensitive."),
17
- pin_to_commit: z
18
- .string()
19
- .optional()
20
- .describe("Optional commit SHA (or ref) to pin the SDD to. Reads from a git worktree at that commit rather than the working tree."),
21
- },
22
- }, async ({ target, pin_to_commit }) => {
23
- const reader = readerFor(sddRoot, pin_to_commit);
24
- const index = getSddIndex(reader);
25
- const consumers = index.consumers.get(target) ?? [];
26
- const matches = consumers.map((serviceId) => {
27
- const svc = index.services.get(serviceId);
28
- const contracts = svc?.contracts ?? [];
29
- const refMatching = contracts.find((c) => index.contracts.get(c.path)?.producedAggregates.includes(target) ||
30
- index.contracts.get(c.path)?.producedEvents.includes(target));
31
- return {
32
- service: serviceId,
33
- domain: svc?.domain ?? null,
34
- contract_path: refMatching?.path ?? null,
35
- version_pin: refMatching?.version ?? null,
36
- stability: refMatching?.stability ?? null,
37
- };
38
- });
39
- const payload = {
40
- query: { target },
41
- matches,
42
- total: matches.length,
43
- pin_to_commit: reader.pin,
44
- sources: Array.from(new Set(matches.map((m) => m.contract_path).filter(Boolean))).map((p) => `sdd://contracts/${p}`),
45
- metadata_incomplete: matches.some((m) => m.contract_path && !m.version_pin),
46
- };
47
- return {
48
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
49
- };
50
- });
51
- }
52
- //# sourceMappingURL=find-consumers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-consumers.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-consumers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,OAAe;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,iJAAiJ;QACnJ,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,wGAAwG,CACzG;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wHAAwH,CACzH;SACJ;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC/D,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,IAAI;gBAC3B,aAAa,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI;gBACxC,WAAW,EAAE,WAAW,EAAE,OAAO,IAAI,IAAI;gBACzC,SAAS,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI;aAC1C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,GAAG;YACzB,OAAO,EAAE,KAAK,CAAC,IAAI,CACjB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACpC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CACzC;SACF,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * find_dependencies — given a service name, return the upstream
3
- * services, contracts, and execution-map dependency edges that this
4
- * service relies on.
5
- */
6
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- export declare function register(server: McpServer, sddRoot: string): void;
8
- //# sourceMappingURL=find-dependencies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-dependencies.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-dependencies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsGjE"}
@@ -1,101 +0,0 @@
1
- /**
2
- * find_dependencies — given a service name, return the upstream
3
- * services, contracts, and execution-map dependency edges that this
4
- * service relies on.
5
- */
6
- import { z } from "zod";
7
- import { McpEnvelopeError } from "../errors.js";
8
- import { readerFor } from "../pin/index.js";
9
- import { getSddIndex } from "../../sdd-index/index.js";
10
- export function register(server, sddRoot) {
11
- server.registerTool("find_dependencies", {
12
- title: "Find dependencies",
13
- description: "List the upstream services, contracts, and execution-map edges a given service depends on (from orchestration/repo-config and docs/platform/execution-dependency-map.md).",
14
- inputSchema: {
15
- service: z
16
- .string()
17
- .min(1)
18
- .describe("Service id (matches the repo-config `repo` field)."),
19
- pin_to_commit: z
20
- .string()
21
- .optional()
22
- .describe("Optional commit SHA (or ref) to pin the SDD to."),
23
- },
24
- }, async ({ service, pin_to_commit }) => {
25
- const reader = readerFor(sddRoot, pin_to_commit);
26
- const index = getSddIndex(reader);
27
- const svc = index.services.get(service);
28
- if (!svc) {
29
- throw new McpEnvelopeError({
30
- code: "SERVICE_NOT_FOUND",
31
- message: `No service named '${service}' in the SDD index.`,
32
- remediation: `Check spelling. Known services: ${Array.from(index.services.keys()).sort().join(", ") || "(none)"}.`,
33
- context: {
34
- service,
35
- known: Array.from(index.services.keys()).sort(),
36
- },
37
- });
38
- }
39
- const serviceDeps = svc.internalDependencies.map((id) => {
40
- const dep = index.services.get(id);
41
- return {
42
- service: id,
43
- domain: dep?.domain ?? null,
44
- kind: "internal",
45
- };
46
- });
47
- const contractDeps = svc.contracts.map((ref) => {
48
- const node = index.contracts.get(ref.path);
49
- const isOwnProduction = node?.producers.includes(service) ?? false;
50
- return {
51
- path: ref.path,
52
- kind: ref.kind,
53
- role: isOwnProduction ? "produces" : "consumes",
54
- package: ref.package ?? null,
55
- version_pin: ref.version ?? null,
56
- stability: ref.stability ?? null,
57
- producer: node?.producers[0] ?? null,
58
- };
59
- });
60
- const executionEdges = index.executionEdges
61
- .filter((e) => e.from === service)
62
- .map((e) => ({
63
- to: e.to,
64
- kind: e.kind,
65
- note: e.note ?? null,
66
- }));
67
- const payload = {
68
- query: { service },
69
- service_domain: svc.domain,
70
- dependencies: {
71
- services: serviceDeps,
72
- contracts: contractDeps,
73
- execution_edges: executionEdges,
74
- },
75
- pin_to_commit: reader.pin,
76
- sources: [
77
- `sdd://repo-config/${svc.domain}/${service}`,
78
- ...(index.executionEdges.length > 0
79
- ? ["sdd://execution-dependency-map"]
80
- : []),
81
- ],
82
- metadata_incomplete: contractDeps.some((c) => c.role === "consumes" && !c.producer),
83
- // M-ADR 0197 §4.7's fourth failure mode — distinct from
84
- // metadata_incomplete above, which is about contract-producer
85
- // resolution, an unrelated question. `vacuous: true` means this
86
- // service is a declared non-primary entry (M-ADR 0197 §4.6) with
87
- // no per-entry authoring surface yet: the empty dependencies above
88
- // are not evidence it has none, they are a fact that cannot yet be
89
- // expressed. Absent (not merely false) when the service isn't a
90
- // declared non-primary entry at all, so callers can tell "known
91
- // complete" from "known incomplete" from "this key doesn't apply".
92
- ...(svc.extra?.["declaredNonPrimary"] === true
93
- ? { vacuous: true }
94
- : {}),
95
- };
96
- return {
97
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
98
- };
99
- });
100
- }
101
- //# sourceMappingURL=find-dependencies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-dependencies.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * find_dependents — given a service name, return services downstream
3
- * of it: those that name it as an internal dependency, consume a
4
- * contract it produces, or have an execution-map edge pointing at it.
5
- */
6
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- export declare function register(server: McpServer, sddRoot: string): void;
8
- //# sourceMappingURL=find-dependents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-dependents.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/find-dependents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkGjE"}