@sdd-method/sdd-cli 1.43.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 (325) hide show
  1. package/NOTICE +1 -1
  2. package/README.md +13 -14
  3. package/dist/author-program.js +1 -1
  4. package/dist/author-program.js.map +1 -1
  5. package/dist/cli.js +0 -0
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/catalogue/aggregate.js +6 -6
  9. package/dist/lib/catalogue/aggregate.js.map +1 -1
  10. package/dist/lib/catalogue/build.js +1 -1
  11. package/dist/lib/catalogue/build.js.map +1 -1
  12. package/dist/lib/catalogue/builders/c4-components.js +1 -1
  13. package/dist/lib/catalogue/builders/c4-components.js.map +1 -1
  14. package/dist/lib/catalogue/builders/c4-containers.d.ts +1 -1
  15. package/dist/lib/catalogue/builders/c4-containers.js +1 -1
  16. package/dist/lib/catalogue/builders/c4-l1-candidates.js +1 -1
  17. package/dist/lib/catalogue/builders/c4-l1-candidates.js.map +1 -1
  18. package/dist/lib/catalogue/builders/container-dependency.d.ts +1 -1
  19. package/dist/lib/catalogue/builders/container-dependency.js +1 -1
  20. package/dist/lib/catalogue/builders/data-store-mapping.js +1 -1
  21. package/dist/lib/catalogue/builders/data-store-mapping.js.map +1 -1
  22. package/dist/lib/catalogue/builders/screen-tree.d.ts +1 -1
  23. package/dist/lib/catalogue/builders/screen-tree.js +1 -1
  24. package/dist/lib/catalogue/contract-path-resolution.d.ts +2 -2
  25. package/dist/lib/catalogue/contract-path-resolution.js +2 -2
  26. package/dist/lib/catalogue/dedupe-keyed-tables.d.ts +1 -1
  27. package/dist/lib/catalogue/dedupe-keyed-tables.js +0 -0
  28. package/dist/lib/catalogue/dedupe-keyed-tables.js.map +1 -1
  29. package/dist/lib/catalogue/scores-coverage.js +1 -1
  30. package/dist/lib/catalogue/scores-coverage.js.map +1 -1
  31. package/dist/lib/catalogue/service-contract-aliases-loader.d.ts +1 -1
  32. package/dist/lib/catalogue/service-contract-aliases-loader.js +1 -1
  33. package/dist/lib/ci-binding/index.d.ts.map +1 -1
  34. package/dist/lib/ci-binding/index.js +44 -5
  35. package/dist/lib/ci-binding/index.js.map +1 -1
  36. package/dist/lib/ci-binding/module.d.ts +10 -0
  37. package/dist/lib/ci-binding/module.d.ts.map +1 -1
  38. package/dist/lib/ci-binding/module.js +74 -2
  39. package/dist/lib/ci-binding/module.js.map +1 -1
  40. package/dist/lib/hooks-seed/entries.d.ts +35 -11
  41. package/dist/lib/hooks-seed/entries.d.ts.map +1 -1
  42. package/dist/lib/hooks-seed/entries.js +43 -21
  43. package/dist/lib/hooks-seed/entries.js.map +1 -1
  44. package/dist/lib/hooks-seed/index.d.ts +2 -1
  45. package/dist/lib/hooks-seed/index.d.ts.map +1 -1
  46. package/dist/lib/hooks-seed/index.js +1 -1
  47. package/dist/lib/hooks-seed/index.js.map +1 -1
  48. package/dist/lib/init/ci-workflow.js +26 -2
  49. package/dist/lib/init/ci-workflow.js.map +1 -1
  50. package/dist/lib/init/platform.d.ts.map +1 -1
  51. package/dist/lib/init/platform.js +1 -0
  52. package/dist/lib/init/platform.js.map +1 -1
  53. package/dist/lib/lock-file.d.ts +7 -0
  54. package/dist/lib/lock-file.d.ts.map +1 -1
  55. package/dist/lib/lock-file.js +10 -0
  56. package/dist/lib/lock-file.js.map +1 -1
  57. package/dist/lib/pack/builder.d.ts +14 -0
  58. package/dist/lib/pack/builder.d.ts.map +1 -1
  59. package/dist/lib/pack/builder.js +56 -4
  60. package/dist/lib/pack/builder.js.map +1 -1
  61. package/dist/lib/pack/index.d.ts +3 -1
  62. package/dist/lib/pack/index.d.ts.map +1 -1
  63. package/dist/lib/pack/index.js +1 -0
  64. package/dist/lib/pack/index.js.map +1 -1
  65. package/dist/lib/pack/publish-transform.js +1 -1
  66. package/dist/lib/pack/publish-transform.js.map +1 -1
  67. package/dist/lib/snapshot/targets.js +1 -1
  68. package/dist/lib/snapshot/targets.js.map +1 -1
  69. package/dist/lib/sync/index.d.ts +11 -0
  70. package/dist/lib/sync/index.d.ts.map +1 -1
  71. package/dist/lib/sync/index.js +26 -2
  72. package/dist/lib/sync/index.js.map +1 -1
  73. package/dist/lib/sync/settings-merge.d.ts +3 -1
  74. package/dist/lib/sync/settings-merge.d.ts.map +1 -1
  75. package/dist/lib/sync/settings-merge.js +1 -1
  76. package/dist/lib/sync/settings-merge.js.map +1 -1
  77. package/dist/lib/validate/plan.d.ts +10 -1
  78. package/dist/lib/validate/plan.d.ts.map +1 -1
  79. package/dist/lib/validate/plan.js +6 -3
  80. package/dist/lib/validate/plan.js.map +1 -1
  81. package/dist/maintain-program.js +1 -1
  82. package/dist/maintain-program.js.map +1 -1
  83. package/dist/maintain-version.json +2 -2
  84. package/dist/verbs/pack-build.d.ts.map +1 -1
  85. package/dist/verbs/pack-build.js +22 -0
  86. package/dist/verbs/pack-build.js.map +1 -1
  87. package/dist/verbs/plan.js +1 -1
  88. package/dist/verbs/plan.js.map +1 -1
  89. package/dist/verbs/sync.d.ts.map +1 -1
  90. package/dist/verbs/sync.js +17 -0
  91. package/dist/verbs/sync.js.map +1 -1
  92. package/dist/verbs/validate.d.ts.map +1 -1
  93. package/dist/verbs/validate.js +6 -1
  94. package/dist/verbs/validate.js.map +1 -1
  95. package/dist/verify-program.js +1 -1
  96. package/dist/verify-program.js.map +1 -1
  97. package/dist/verify-version.json +2 -2
  98. package/package.json +2 -10
  99. package/scripts/README.md +1 -1
  100. package/scripts/author-version.json +2 -2
  101. package/scripts/maintain-acceptance.mjs +3 -2
  102. package/scripts/maintain-version.json +2 -2
  103. package/scripts/publish-release.mjs +117 -0
  104. package/scripts/release-gate.mjs +18 -7
  105. package/scripts/verify-version.json +2 -2
  106. package/dist/lib/catalogue/advisory-container-type.d.ts +0 -13
  107. package/dist/lib/catalogue/advisory-container-type.d.ts.map +0 -1
  108. package/dist/lib/catalogue/advisory-container-type.js +0 -56
  109. package/dist/lib/catalogue/advisory-container-type.js.map +0 -1
  110. package/dist/lib/hooks-seed/copilot.d.ts +0 -93
  111. package/dist/lib/hooks-seed/copilot.d.ts.map +0 -1
  112. package/dist/lib/hooks-seed/copilot.js +0 -167
  113. package/dist/lib/hooks-seed/copilot.js.map +0 -1
  114. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts +0 -12
  115. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts.map +0 -1
  116. package/dist/lib/hooks-seed/lifecycle-mapping.js +0 -28
  117. package/dist/lib/hooks-seed/lifecycle-mapping.js.map +0 -1
  118. package/dist/lib/mcp/build-info.d.ts +0 -7
  119. package/dist/lib/mcp/build-info.d.ts.map +0 -1
  120. package/dist/lib/mcp/build-info.js +0 -10
  121. package/dist/lib/mcp/build-info.js.map +0 -1
  122. package/dist/lib/mcp/errors.d.ts +0 -23
  123. package/dist/lib/mcp/errors.d.ts.map +0 -1
  124. package/dist/lib/mcp/errors.js +0 -25
  125. package/dist/lib/mcp/errors.js.map +0 -1
  126. package/dist/lib/mcp/parse/frontmatter.d.ts +0 -22
  127. package/dist/lib/mcp/parse/frontmatter.d.ts.map +0 -1
  128. package/dist/lib/mcp/parse/frontmatter.js +0 -49
  129. package/dist/lib/mcp/parse/frontmatter.js.map +0 -1
  130. package/dist/lib/mcp/parse/gate-registry.d.ts +0 -78
  131. package/dist/lib/mcp/parse/gate-registry.d.ts.map +0 -1
  132. package/dist/lib/mcp/parse/gate-registry.js +0 -164
  133. package/dist/lib/mcp/parse/gate-registry.js.map +0 -1
  134. package/dist/lib/mcp/parse/paths.d.ts +0 -21
  135. package/dist/lib/mcp/parse/paths.d.ts.map +0 -1
  136. package/dist/lib/mcp/parse/paths.js +0 -84
  137. package/dist/lib/mcp/parse/paths.js.map +0 -1
  138. package/dist/lib/mcp/pin/errors.d.ts +0 -11
  139. package/dist/lib/mcp/pin/errors.d.ts.map +0 -1
  140. package/dist/lib/mcp/pin/errors.js +0 -32
  141. package/dist/lib/mcp/pin/errors.js.map +0 -1
  142. package/dist/lib/mcp/pin/index.d.ts +0 -18
  143. package/dist/lib/mcp/pin/index.d.ts.map +0 -1
  144. package/dist/lib/mcp/pin/index.js +0 -29
  145. package/dist/lib/mcp/pin/index.js.map +0 -1
  146. package/dist/lib/mcp/pin/read.d.ts +0 -24
  147. package/dist/lib/mcp/pin/read.d.ts.map +0 -1
  148. package/dist/lib/mcp/pin/read.js +0 -64
  149. package/dist/lib/mcp/pin/read.js.map +0 -1
  150. package/dist/lib/mcp/pin/resolve.d.ts +0 -12
  151. package/dist/lib/mcp/pin/resolve.d.ts.map +0 -1
  152. package/dist/lib/mcp/pin/resolve.js +0 -33
  153. package/dist/lib/mcp/pin/resolve.js.map +0 -1
  154. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts +0 -14
  155. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts.map +0 -1
  156. package/dist/lib/mcp/prompts/evaluate-cascade.js +0 -147
  157. package/dist/lib/mcp/prompts/evaluate-cascade.js.map +0 -1
  158. package/dist/lib/mcp/prompts/index.d.ts +0 -9
  159. package/dist/lib/mcp/prompts/index.d.ts.map +0 -1
  160. package/dist/lib/mcp/prompts/index.js +0 -23
  161. package/dist/lib/mcp/prompts/index.js.map +0 -1
  162. package/dist/lib/mcp/prompts/propose-adr.d.ts +0 -12
  163. package/dist/lib/mcp/prompts/propose-adr.d.ts.map +0 -1
  164. package/dist/lib/mcp/prompts/propose-adr.js +0 -100
  165. package/dist/lib/mcp/prompts/propose-adr.js.map +0 -1
  166. package/dist/lib/mcp/prompts/review-data-model-change.d.ts +0 -10
  167. package/dist/lib/mcp/prompts/review-data-model-change.d.ts.map +0 -1
  168. package/dist/lib/mcp/prompts/review-data-model-change.js +0 -134
  169. package/dist/lib/mcp/prompts/review-data-model-change.js.map +0 -1
  170. package/dist/lib/mcp/prompts/template-loader.d.ts +0 -29
  171. package/dist/lib/mcp/prompts/template-loader.d.ts.map +0 -1
  172. package/dist/lib/mcp/prompts/template-loader.js +0 -44
  173. package/dist/lib/mcp/prompts/template-loader.js.map +0 -1
  174. package/dist/lib/mcp/prompts/types.d.ts +0 -17
  175. package/dist/lib/mcp/prompts/types.d.ts.map +0 -1
  176. package/dist/lib/mcp/prompts/types.js +0 -10
  177. package/dist/lib/mcp/prompts/types.js.map +0 -1
  178. package/dist/lib/mcp/prompts/write-capability-spec.d.ts +0 -8
  179. package/dist/lib/mcp/prompts/write-capability-spec.d.ts.map +0 -1
  180. package/dist/lib/mcp/prompts/write-capability-spec.js +0 -85
  181. package/dist/lib/mcp/prompts/write-capability-spec.js.map +0 -1
  182. package/dist/lib/mcp/prompts/write-feature-spec.d.ts +0 -10
  183. package/dist/lib/mcp/prompts/write-feature-spec.d.ts.map +0 -1
  184. package/dist/lib/mcp/prompts/write-feature-spec.js +0 -94
  185. package/dist/lib/mcp/prompts/write-feature-spec.js.map +0 -1
  186. package/dist/lib/mcp/prompts/write-work-order.d.ts +0 -7
  187. package/dist/lib/mcp/prompts/write-work-order.d.ts.map +0 -1
  188. package/dist/lib/mcp/prompts/write-work-order.js +0 -69
  189. package/dist/lib/mcp/prompts/write-work-order.js.map +0 -1
  190. package/dist/lib/mcp/reader.d.ts +0 -37
  191. package/dist/lib/mcp/reader.d.ts.map +0 -1
  192. package/dist/lib/mcp/reader.js +0 -93
  193. package/dist/lib/mcp/reader.js.map +0 -1
  194. package/dist/lib/mcp/resources/adrs.d.ts +0 -3
  195. package/dist/lib/mcp/resources/adrs.d.ts.map +0 -1
  196. package/dist/lib/mcp/resources/adrs.js +0 -97
  197. package/dist/lib/mcp/resources/adrs.js.map +0 -1
  198. package/dist/lib/mcp/resources/catalogue.d.ts +0 -19
  199. package/dist/lib/mcp/resources/catalogue.d.ts.map +0 -1
  200. package/dist/lib/mcp/resources/catalogue.js +0 -240
  201. package/dist/lib/mcp/resources/catalogue.js.map +0 -1
  202. package/dist/lib/mcp/resources/data-models.d.ts +0 -14
  203. package/dist/lib/mcp/resources/data-models.d.ts.map +0 -1
  204. package/dist/lib/mcp/resources/data-models.js +0 -81
  205. package/dist/lib/mcp/resources/data-models.js.map +0 -1
  206. package/dist/lib/mcp/resources/gates.d.ts +0 -9
  207. package/dist/lib/mcp/resources/gates.d.ts.map +0 -1
  208. package/dist/lib/mcp/resources/gates.js +0 -76
  209. package/dist/lib/mcp/resources/gates.js.map +0 -1
  210. package/dist/lib/mcp/resources/glossary.d.ts +0 -16
  211. package/dist/lib/mcp/resources/glossary.d.ts.map +0 -1
  212. package/dist/lib/mcp/resources/glossary.js +0 -87
  213. package/dist/lib/mcp/resources/glossary.js.map +0 -1
  214. package/dist/lib/mcp/resources/specs.d.ts +0 -23
  215. package/dist/lib/mcp/resources/specs.d.ts.map +0 -1
  216. package/dist/lib/mcp/resources/specs.js +0 -151
  217. package/dist/lib/mcp/resources/specs.js.map +0 -1
  218. package/dist/lib/mcp/resources/version.d.ts +0 -3
  219. package/dist/lib/mcp/resources/version.d.ts.map +0 -1
  220. package/dist/lib/mcp/resources/version.js +0 -45
  221. package/dist/lib/mcp/resources/version.js.map +0 -1
  222. package/dist/lib/mcp/server.d.ts +0 -29
  223. package/dist/lib/mcp/server.d.ts.map +0 -1
  224. package/dist/lib/mcp/server.js +0 -108
  225. package/dist/lib/mcp/server.js.map +0 -1
  226. package/dist/lib/mcp/tools/cascade-impact.d.ts +0 -22
  227. package/dist/lib/mcp/tools/cascade-impact.d.ts.map +0 -1
  228. package/dist/lib/mcp/tools/cascade-impact.js +0 -53
  229. package/dist/lib/mcp/tools/cascade-impact.js.map +0 -1
  230. package/dist/lib/mcp/tools/catalogue.d.ts +0 -16
  231. package/dist/lib/mcp/tools/catalogue.d.ts.map +0 -1
  232. package/dist/lib/mcp/tools/catalogue.js +0 -268
  233. package/dist/lib/mcp/tools/catalogue.js.map +0 -1
  234. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts +0 -7
  235. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts.map +0 -1
  236. package/dist/lib/mcp/tools/find-consumers-of-contract.js +0 -70
  237. package/dist/lib/mcp/tools/find-consumers-of-contract.js.map +0 -1
  238. package/dist/lib/mcp/tools/find-consumers.d.ts +0 -7
  239. package/dist/lib/mcp/tools/find-consumers.d.ts.map +0 -1
  240. package/dist/lib/mcp/tools/find-consumers.js +0 -52
  241. package/dist/lib/mcp/tools/find-consumers.js.map +0 -1
  242. package/dist/lib/mcp/tools/find-dependencies.d.ts +0 -8
  243. package/dist/lib/mcp/tools/find-dependencies.d.ts.map +0 -1
  244. package/dist/lib/mcp/tools/find-dependencies.js +0 -101
  245. package/dist/lib/mcp/tools/find-dependencies.js.map +0 -1
  246. package/dist/lib/mcp/tools/find-dependents.d.ts +0 -8
  247. package/dist/lib/mcp/tools/find-dependents.d.ts.map +0 -1
  248. package/dist/lib/mcp/tools/find-dependents.js +0 -89
  249. package/dist/lib/mcp/tools/find-dependents.js.map +0 -1
  250. package/dist/lib/mcp/tools/find-producers.d.ts +0 -8
  251. package/dist/lib/mcp/tools/find-producers.d.ts.map +0 -1
  252. package/dist/lib/mcp/tools/find-producers.js +0 -57
  253. package/dist/lib/mcp/tools/find-producers.js.map +0 -1
  254. package/dist/lib/mcp/tools/find-related-specs.d.ts +0 -9
  255. package/dist/lib/mcp/tools/find-related-specs.d.ts.map +0 -1
  256. package/dist/lib/mcp/tools/find-related-specs.js +0 -92
  257. package/dist/lib/mcp/tools/find-related-specs.js.map +0 -1
  258. package/dist/lib/mcp/tools/list-adrs.d.ts +0 -3
  259. package/dist/lib/mcp/tools/list-adrs.d.ts.map +0 -1
  260. package/dist/lib/mcp/tools/list-adrs.js +0 -73
  261. package/dist/lib/mcp/tools/list-adrs.js.map +0 -1
  262. package/dist/lib/mcp/tools/query-gate-status.d.ts +0 -3
  263. package/dist/lib/mcp/tools/query-gate-status.d.ts.map +0 -1
  264. package/dist/lib/mcp/tools/query-gate-status.js +0 -68
  265. package/dist/lib/mcp/tools/query-gate-status.js.map +0 -1
  266. package/dist/lib/mcp/tools/search-specs.d.ts +0 -12
  267. package/dist/lib/mcp/tools/search-specs.d.ts.map +0 -1
  268. package/dist/lib/mcp/tools/search-specs.js +0 -151
  269. package/dist/lib/mcp/tools/search-specs.js.map +0 -1
  270. package/dist/lib/mcp/workspace.d.ts +0 -31
  271. package/dist/lib/mcp/workspace.d.ts.map +0 -1
  272. package/dist/lib/mcp/workspace.js +0 -146
  273. package/dist/lib/mcp/workspace.js.map +0 -1
  274. package/dist/lib/mcp-seed/entries.d.ts +0 -32
  275. package/dist/lib/mcp-seed/entries.d.ts.map +0 -1
  276. package/dist/lib/mcp-seed/entries.js +0 -14
  277. package/dist/lib/mcp-seed/entries.js.map +0 -1
  278. package/dist/lib/mcp-seed/index.d.ts +0 -36
  279. package/dist/lib/mcp-seed/index.d.ts.map +0 -1
  280. package/dist/lib/mcp-seed/index.js +0 -28
  281. package/dist/lib/mcp-seed/index.js.map +0 -1
  282. package/dist/lib/mcp-seed/merge.d.ts +0 -34
  283. package/dist/lib/mcp-seed/merge.d.ts.map +0 -1
  284. package/dist/lib/mcp-seed/merge.js +0 -99
  285. package/dist/lib/mcp-seed/merge.js.map +0 -1
  286. package/dist/lib/mcp-seed/types.d.ts +0 -24
  287. package/dist/lib/mcp-seed/types.d.ts.map +0 -1
  288. package/dist/lib/mcp-seed/types.js +0 -13
  289. package/dist/lib/mcp-seed/types.js.map +0 -1
  290. package/dist/lib/sdd-index/cascade.d.ts +0 -46
  291. package/dist/lib/sdd-index/cascade.d.ts.map +0 -1
  292. package/dist/lib/sdd-index/cascade.js +0 -91
  293. package/dist/lib/sdd-index/cascade.js.map +0 -1
  294. package/dist/lib/sdd-index/contracts.d.ts +0 -29
  295. package/dist/lib/sdd-index/contracts.d.ts.map +0 -1
  296. package/dist/lib/sdd-index/contracts.js +0 -216
  297. package/dist/lib/sdd-index/contracts.js.map +0 -1
  298. package/dist/lib/sdd-index/data-model.d.ts +0 -13
  299. package/dist/lib/sdd-index/data-model.d.ts.map +0 -1
  300. package/dist/lib/sdd-index/data-model.js +0 -23
  301. package/dist/lib/sdd-index/data-model.js.map +0 -1
  302. package/dist/lib/sdd-index/execution-map.d.ts +0 -34
  303. package/dist/lib/sdd-index/execution-map.d.ts.map +0 -1
  304. package/dist/lib/sdd-index/execution-map.js +0 -105
  305. package/dist/lib/sdd-index/execution-map.js.map +0 -1
  306. package/dist/lib/sdd-index/graph.d.ts +0 -28
  307. package/dist/lib/sdd-index/graph.d.ts.map +0 -1
  308. package/dist/lib/sdd-index/graph.js +0 -122
  309. package/dist/lib/sdd-index/graph.js.map +0 -1
  310. package/dist/lib/sdd-index/index.d.ts +0 -29
  311. package/dist/lib/sdd-index/index.d.ts.map +0 -1
  312. package/dist/lib/sdd-index/index.js +0 -79
  313. package/dist/lib/sdd-index/index.js.map +0 -1
  314. package/dist/lib/sdd-index/watch.d.ts +0 -24
  315. package/dist/lib/sdd-index/watch.d.ts.map +0 -1
  316. package/dist/lib/sdd-index/watch.js +0 -112
  317. package/dist/lib/sdd-index/watch.js.map +0 -1
  318. package/dist/lib/sync/copilot-hooks-merge.d.ts +0 -36
  319. package/dist/lib/sync/copilot-hooks-merge.d.ts.map +0 -1
  320. package/dist/lib/sync/copilot-hooks-merge.js +0 -108
  321. package/dist/lib/sync/copilot-hooks-merge.js.map +0 -1
  322. package/dist/verbs/mcp.d.ts +0 -3
  323. package/dist/verbs/mcp.d.ts.map +0 -1
  324. package/dist/verbs/mcp.js +0 -22
  325. package/dist/verbs/mcp.js.map +0 -1
@@ -1,151 +0,0 @@
1
- /**
2
- * Capability and feature specs. The MCP plan references the URIs
3
- * sdd://specs/capability/{domain}/{capability} and
4
- * sdd://specs/feature/{domain}/{capability}/{feature}; the on-disk
5
- * layout is adopter-driven (docs/domains/{d}/product/{capability}.md
6
- * and similar). Phase 1 does a best-effort discovery under
7
- * docs/domains/{d}/product/ and exposes found specs; absent specs
8
- * surface as a structured NOT_FOUND with a pointer to the catalogue.
9
- */
10
- import { readFileSync } from "node:fs";
11
- import { join } from "node:path";
12
- import { ResourceTemplate, } from "@modelcontextprotocol/sdk/server/mcp.js";
13
- import { McpEnvelopeError } from "../errors.js";
14
- import { safeIsDir, safeIsFile } from "../parse/paths.js";
15
- import { readdirSync } from "node:fs";
16
- export function register(server, sddRoot) {
17
- server.registerResource("capability-spec", new ResourceTemplate("sdd://specs/capability/{domain}/{capability}", {
18
- list: async () => {
19
- const specs = discoverCapabilitySpecs(sddRoot);
20
- return {
21
- resources: specs.map((s) => ({
22
- uri: `sdd://specs/capability/${s.domain}/${s.capability}`,
23
- name: `Capability spec: ${s.domain} / ${s.capability}`,
24
- mimeType: "text/markdown",
25
- })),
26
- };
27
- },
28
- }), {
29
- title: "Capability spec",
30
- description: "Capability-level specification for a given domain. Read from the first matching docs/domains/{domain}/product/{capability}*.md file.",
31
- mimeType: "text/markdown",
32
- }, async (uri, { domain, capability }) => {
33
- if (typeof domain !== "string" || typeof capability !== "string") {
34
- throw invalidArgs(uri.href);
35
- }
36
- const path = findCapabilitySpec(sddRoot, domain, capability);
37
- if (!path) {
38
- throw notFound("CAPABILITY_SPEC_NOT_FOUND", `No capability spec found for ${domain}/${capability}.`, { domain, capability, sdd_root: sddRoot });
39
- }
40
- return readMarkdown(uri.href, path);
41
- });
42
- server.registerResource("feature-spec", new ResourceTemplate("sdd://specs/feature/{domain}/{capability}/{feature}", {
43
- list: async () => {
44
- const specs = discoverFeatureSpecs(sddRoot);
45
- return {
46
- resources: specs.map((s) => ({
47
- uri: `sdd://specs/feature/${s.domain}/${s.capability}/${s.feature}`,
48
- name: `Feature spec: ${s.domain} / ${s.capability} / ${s.feature}`,
49
- mimeType: "text/markdown",
50
- })),
51
- };
52
- },
53
- }), {
54
- title: "Feature spec",
55
- description: "Feature-level specification nested under a capability. Read from docs/domains/{domain}/product/{capability}/{feature}*.md.",
56
- mimeType: "text/markdown",
57
- }, async (uri, { domain, capability, feature }) => {
58
- if (typeof domain !== "string" ||
59
- typeof capability !== "string" ||
60
- typeof feature !== "string") {
61
- throw invalidArgs(uri.href);
62
- }
63
- const path = findFeatureSpec(sddRoot, domain, capability, feature);
64
- if (!path) {
65
- throw notFound("FEATURE_SPEC_NOT_FOUND", `No feature spec found for ${domain}/${capability}/${feature}.`, { domain, capability, feature, sdd_root: sddRoot });
66
- }
67
- return readMarkdown(uri.href, path);
68
- });
69
- }
70
- export function discoverCapabilitySpecs(sddRoot) {
71
- const out = [];
72
- const domainsRoot = join(sddRoot, "docs", "domains");
73
- if (!safeIsDir(domainsRoot))
74
- return out;
75
- for (const domain of safeReaddir(domainsRoot)) {
76
- if (domain.startsWith("_"))
77
- continue;
78
- const productDir = join(domainsRoot, domain, "product");
79
- if (!safeIsDir(productDir))
80
- continue;
81
- for (const entry of safeReaddir(productDir)) {
82
- const full = join(productDir, entry);
83
- if (entry.endsWith(".md") && safeIsFile(full)) {
84
- const slug = entry.replace(/\.md$/, "");
85
- out.push({ domain, capability: slug, path: full });
86
- }
87
- }
88
- }
89
- return out;
90
- }
91
- export function discoverFeatureSpecs(sddRoot) {
92
- const out = [];
93
- const caps = discoverCapabilitySpecs(sddRoot);
94
- for (const cap of caps) {
95
- const nestedDir = join(sddRoot, "docs", "domains", cap.domain, "product", cap.capability);
96
- if (!safeIsDir(nestedDir))
97
- continue;
98
- for (const entry of safeReaddir(nestedDir)) {
99
- const full = join(nestedDir, entry);
100
- if (entry.endsWith(".md") && safeIsFile(full)) {
101
- const feature = entry.replace(/\.md$/, "");
102
- out.push({ ...cap, feature, path: full });
103
- }
104
- }
105
- }
106
- return out;
107
- }
108
- function findCapabilitySpec(sddRoot, domain, capability) {
109
- return discoverCapabilitySpecs(sddRoot).find((s) => s.domain === domain && s.capability === capability)?.path;
110
- }
111
- function findFeatureSpec(sddRoot, domain, capability, feature) {
112
- return discoverFeatureSpecs(sddRoot).find((s) => s.domain === domain &&
113
- s.capability === capability &&
114
- s.feature === feature)?.path;
115
- }
116
- function readMarkdown(uri, path) {
117
- return {
118
- contents: [
119
- {
120
- uri,
121
- mimeType: "text/markdown",
122
- text: readFileSync(path, "utf8"),
123
- },
124
- ],
125
- };
126
- }
127
- function invalidArgs(uri) {
128
- return new McpEnvelopeError({
129
- code: "SPEC_URI_INVALID",
130
- message: `Spec URI ${uri} is missing required template parameters.`,
131
- remediation: "Check the URI shape: sdd://specs/capability/{domain}/{capability} or sdd://specs/feature/{domain}/{capability}/{feature}.",
132
- context: { uri },
133
- });
134
- }
135
- function notFound(code, message, ctx) {
136
- return new McpEnvelopeError({
137
- code,
138
- message,
139
- remediation: "Spec files are adopter-instantiated and may be absent in the canonical method repo. Query the discovered list via the MCP resources/list operation to see which specs this SDD exposes.",
140
- context: ctx,
141
- });
142
- }
143
- function safeReaddir(dir) {
144
- try {
145
- return readdirSync(dir);
146
- }
147
- catch {
148
- return [];
149
- }
150
- }
151
- //# sourceMappingURL=specs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../../src/lib/mcp/resources/specs.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function register(server: McpServer, sddRoot: string): void;
3
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/resources/version.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAgCjE"}
@@ -1,45 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { DISTRIBUTION, MCP_PROTOCOL_SPEC_VERSION, SERVER_VERSION, } from "../build-info.js";
4
- export function register(server, sddRoot) {
5
- server.registerResource("method-version", "sdd://method/version", {
6
- title: "Method version",
7
- description: "Method distribution version, server build, SDD commit, and MCP protocol spec version. Clients read this at session start to detect mismatches.",
8
- mimeType: "application/json",
9
- }, async () => {
10
- const payload = {
11
- method_version: SERVER_VERSION,
12
- distribution: DISTRIBUTION,
13
- server_build: new Date().toISOString(),
14
- sdd_repo_commit: await readHeadCommit(sddRoot),
15
- protocol: {
16
- name: "mcp",
17
- spec_version: MCP_PROTOCOL_SPEC_VERSION,
18
- },
19
- };
20
- return {
21
- contents: [
22
- {
23
- uri: "sdd://method/version",
24
- mimeType: "application/json",
25
- text: JSON.stringify(payload, null, 2),
26
- },
27
- ],
28
- };
29
- });
30
- }
31
- async function readHeadCommit(sddRoot) {
32
- try {
33
- const headRef = (await readFile(join(sddRoot, ".git", "HEAD"), "utf8")).trim();
34
- if (headRef.startsWith("ref: ")) {
35
- const refPath = headRef.slice("ref: ".length);
36
- const sha = (await readFile(join(sddRoot, ".git", refPath), "utf8")).trim();
37
- return sha || null;
38
- }
39
- return headRef || null;
40
- }
41
- catch {
42
- return null;
43
- }
44
- }
45
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/lib/mcp/resources/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,OAAe;IACzD,MAAM,CAAC,gBAAgB,CACrB,gBAAgB,EAChB,sBAAsB,EACtB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,gJAAgJ;QAClJ,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG;YACd,cAAc,EAAE,cAAc;YAC9B,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtC,eAAe,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC;YAC9C,QAAQ,EAAE;gBACR,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,yBAAyB;aACxC;SACF,CAAC;QACF,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,sBAAsB;oBAC3B,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CACd,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CACtD,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,CACV,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CACvD,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,GAAG,IAAI,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,OAAO,IAAI,IAAI,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * sdd-mcp server lifecycle: construct the McpServer, register the
3
- * minimum Phase 1 surface, wire stdio transport, and wait for the host
4
- * to close the connection.
5
- *
6
- * Logging discipline: NEVER write to stdout in this module or anything
7
- * it calls. stdout is the MCP protocol channel; any non-protocol byte
8
- * corrupts the wire. Use stderr for diagnostics.
9
- */
10
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
- export interface RunMcpServeOptions {
12
- readonly cwd?: string;
13
- readonly sddRepo?: string;
14
- readonly env?: NodeJS.ProcessEnv;
15
- /**
16
- * Connect the server and return immediately instead of waiting for
17
- * the transport to close. Used by the integration tests, which
18
- * attach their own in-memory transports and drive the server
19
- * programmatically.
20
- */
21
- readonly testMode?: boolean;
22
- }
23
- export interface RunMcpServeResult {
24
- readonly server: McpServer;
25
- /** Resolved SDD absolute path. */
26
- readonly sddRepoPath: string;
27
- }
28
- export declare function runMcpServe(opts?: RunMcpServeOptions): Promise<RunMcpServeResult>;
29
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,WAAW,CAC/B,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAwF5B"}
@@ -1,108 +0,0 @@
1
- /**
2
- * sdd-mcp server lifecycle: construct the McpServer, register the
3
- * minimum Phase 1 surface, wire stdio transport, and wait for the host
4
- * to close the connection.
5
- *
6
- * Logging discipline: NEVER write to stdout in this module or anything
7
- * it calls. stdout is the MCP protocol channel; any non-protocol byte
8
- * corrupts the wire. Use stderr for diagnostics.
9
- */
10
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
12
- import { SERVER_VERSION } from "./build-info.js";
13
- import { envelopeFromUnknown } from "./errors.js";
14
- import { register as registerAdrs } from "./resources/adrs.js";
15
- import { register as registerCatalogue } from "./resources/catalogue.js";
16
- import { register as registerDataModels } from "./resources/data-models.js";
17
- import { register as registerGates } from "./resources/gates.js";
18
- import { register as registerGlossary } from "./resources/glossary.js";
19
- import { register as registerSpecs } from "./resources/specs.js";
20
- import { register as registerVersion } from "./resources/version.js";
21
- import { register as registerCascadeImpact } from "./tools/cascade-impact.js";
22
- import { register as registerCatalogueTools } from "./tools/catalogue.js";
23
- import { register as registerFindConsumers } from "./tools/find-consumers.js";
24
- import { register as registerFindConsumersOfContract } from "./tools/find-consumers-of-contract.js";
25
- import { register as registerFindDependencies } from "./tools/find-dependencies.js";
26
- import { register as registerFindDependents } from "./tools/find-dependents.js";
27
- import { register as registerFindProducers } from "./tools/find-producers.js";
28
- import { register as registerFindRelatedSpecs } from "./tools/find-related-specs.js";
29
- import { register as registerListAdrs } from "./tools/list-adrs.js";
30
- import { register as registerQueryGateStatus } from "./tools/query-gate-status.js";
31
- import { register as registerSearchSpecs } from "./tools/search-specs.js";
32
- import { registerAllPrompts } from "./prompts/index.js";
33
- import { resolveSddRepo } from "./workspace.js";
34
- import { shutdownPinSubsystem } from "./pin/index.js";
35
- import { liveReader } from "./reader.js";
36
- import { startIndexWatcher } from "../sdd-index/watch.js";
37
- export async function runMcpServe(opts = {}) {
38
- const env = opts.env ?? process.env;
39
- const cwd = opts.cwd ?? process.cwd();
40
- let sddRepoPath;
41
- try {
42
- const resolved = resolveSddRepo({
43
- cwd,
44
- env,
45
- ...(opts.sddRepo ? { flagPath: opts.sddRepo } : {}),
46
- });
47
- sddRepoPath = resolved.path;
48
- process.stderr.write(`[sdd-mcp] SDD repo resolved via ${resolved.source}: ${resolved.path}\n`);
49
- }
50
- catch (err) {
51
- const envelope = envelopeFromUnknown(err);
52
- process.stderr.write(`[sdd-mcp] fatal: ${envelope.code} — ${envelope.message}\n` +
53
- `[sdd-mcp] remediation: ${envelope.remediation}\n`);
54
- throw err;
55
- }
56
- const server = new McpServer({
57
- name: "sdd-mcp",
58
- version: SERVER_VERSION,
59
- }, {
60
- capabilities: {
61
- resources: {},
62
- tools: {},
63
- prompts: {},
64
- },
65
- });
66
- registerVersion(server, sddRepoPath);
67
- registerAdrs(server, sddRepoPath);
68
- registerSpecs(server, sddRepoPath);
69
- registerDataModels(server, sddRepoPath);
70
- registerGates(server, sddRepoPath);
71
- registerGlossary(server, sddRepoPath);
72
- registerCatalogue(server, sddRepoPath);
73
- registerListAdrs(server, sddRepoPath);
74
- registerQueryGateStatus(server, sddRepoPath);
75
- registerSearchSpecs(server, sddRepoPath);
76
- registerFindRelatedSpecs(server, sddRepoPath);
77
- registerFindConsumers(server, sddRepoPath);
78
- registerFindProducers(server, sddRepoPath);
79
- registerFindDependencies(server, sddRepoPath);
80
- registerFindDependents(server, sddRepoPath);
81
- registerFindConsumersOfContract(server, sddRepoPath);
82
- registerCascadeImpact(server, sddRepoPath);
83
- registerCatalogueTools(server, sddRepoPath);
84
- registerAllPrompts(server, sddRepoPath);
85
- if (opts.testMode) {
86
- return { server, sddRepoPath };
87
- }
88
- const watcher = startIndexWatcher(liveReader(sddRepoPath));
89
- const transport = new StdioServerTransport();
90
- await server.connect(transport);
91
- // Wait until the host closes stdio. McpServer owns the transport
92
- // lifecycle; when the parent exits or closes stdin, the transport
93
- // fires onclose and this promise resolves.
94
- await new Promise((resolveDone) => {
95
- transport.onclose = () => {
96
- resolveDone();
97
- };
98
- const onSignal = () => {
99
- void server.close().finally(() => resolveDone());
100
- };
101
- process.once("SIGTERM", onSignal);
102
- process.once("SIGINT", onSignal);
103
- });
104
- watcher.stop();
105
- shutdownPinSubsystem();
106
- return { server, sddRepoPath };
107
- }
108
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lib/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * cascade_impact — dry-run the cascade-update checklist for a
3
- * proposed change. Thin wrapper around the shared library function
4
- * in `src/lib/sdd-index/cascade.ts` so the Phase 5 `evaluate_cascade`
5
- * prompt and this tool agree on behaviour.
6
- *
7
- * Per [ADR 0128] §4.5 this tool *reports* cascade status; it never
8
- * enforces — enforcement stays with hooks and CI.
9
- */
10
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
11
- import { z } from "zod";
12
- export declare const cascadeImpactArgsSchema: {
13
- change_type: z.ZodEnum<{
14
- service: "service";
15
- capability: "capability";
16
- entity: "entity";
17
- }>;
18
- target: z.ZodString;
19
- pin_to_commit: z.ZodOptional<z.ZodString>;
20
- };
21
- export declare function register(server: McpServer, sddRoot: string): void;
22
- //# sourceMappingURL=cascade-impact.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cascade-impact.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/cascade-impact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,uBAAuB;;;;;;;;CAkBnC,CAAC;AAEF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA6BjE"}
@@ -1,53 +0,0 @@
1
- /**
2
- * cascade_impact — dry-run the cascade-update checklist for a
3
- * proposed change. Thin wrapper around the shared library function
4
- * in `src/lib/sdd-index/cascade.ts` so the Phase 5 `evaluate_cascade`
5
- * prompt and this tool agree on behaviour.
6
- *
7
- * Per [ADR 0128] §4.5 this tool *reports* cascade status; it never
8
- * enforces — enforcement stays with hooks and CI.
9
- */
10
- import { z } from "zod";
11
- import { McpEnvelopeError } from "../errors.js";
12
- import { readerFor } from "../pin/index.js";
13
- import { CascadeImpactError, runCascadeImpact, } from "../../sdd-index/cascade.js";
14
- export const cascadeImpactArgsSchema = {
15
- change_type: z
16
- .enum(["service", "capability", "entity"])
17
- .describe("What kind of thing is changing: a service, a capability, or a domain-model entity (aggregate/event)."),
18
- target: z
19
- .string()
20
- .min(1)
21
- .describe("Name of the changed artefact (service id, capability slug, or entity name)."),
22
- pin_to_commit: z
23
- .string()
24
- .optional()
25
- .describe("Optional commit SHA (or ref) to pin the SDD to. Executes the script against a git worktree at that commit."),
26
- };
27
- export function register(server, sddRoot) {
28
- server.registerTool("cascade_impact", {
29
- title: "Cascade impact dry-run",
30
- description: "Wrap the adopter's orchestration/scripts/validate-cascade-completeness.sh to report which artefacts a proposed change would cascade through. Decorates script output with per-service metadata from the SDD index. Read-only.",
31
- inputSchema: cascadeImpactArgsSchema,
32
- }, async ({ change_type, target, pin_to_commit }) => {
33
- const reader = readerFor(sddRoot, pin_to_commit);
34
- try {
35
- const payload = runCascadeImpact(reader, { change_type, target });
36
- return {
37
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
38
- };
39
- }
40
- catch (err) {
41
- if (err instanceof CascadeImpactError) {
42
- throw new McpEnvelopeError({
43
- code: err.code,
44
- message: err.message,
45
- remediation: err.remediation,
46
- context: err.context,
47
- });
48
- }
49
- throw err;
50
- }
51
- });
52
- }
53
- //# sourceMappingURL=cascade-impact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cascade-impact.js","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/cascade-impact.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SACzC,QAAQ,CACP,sGAAsG,CACvG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,6EAA6E,CAC9E;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4GAA4G,CAC7G;CACJ,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,OAAe;IACzD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,+NAA+N;QACjO,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,MAAM,IAAI,gBAAgB,CAAC;oBACzB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,16 +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 type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
15
- export declare function register(server: McpServer, sddRoot: string): void;
16
- //# sourceMappingURL=catalogue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../../../src/lib/mcp/tools/catalogue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwGzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAwMjE"}