@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
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env node
2
+ // Publish one release's four CLI packages to npm from cli-build's output, so npm holds the same bytes
3
+ // as the reference every other channel verifies against (method distribution, sdm-e47.8). Tom's act:
4
+ // it needs his npm login.
5
+ //
6
+ // node scripts/publish-release.mjs <out> --second <out2> [--dry-run]
7
+ //
8
+ // <out> dagger/cli-build/cli-build.sh's output for the release commit: the four tarballs,
9
+ // install.sh, SHA256SUMS and TREE.
10
+ // --second a second, independent build of the same commit (cli-build.sh --rebuild, or another
11
+ // machine). Its SHA256SUMS must equal the first's byte for byte: a build that does not
12
+ // reproduce is not a reference anyone can verify against.
13
+ // --dry-run every check, then `npm publish --dry-run`; nothing is published.
14
+ //
15
+ // Before publishing: the release gate (clean tree, HEAD on origin/main, the tag on origin at HEAD,
16
+ // personas re-stamped); TREE names HEAD's tree; every file matches SHA256SUMS; the tarballs are
17
+ // exactly the four this commit's versions name. After: npm's recorded integrity for each version
18
+ // equals the local tarball's. A version already on npm is never republished: identical bytes pass,
19
+ // different bytes fail, since one version would then mean two artefacts.
20
+ //
21
+ // npm skips lifecycle scripts when publishing a tarball, so `prepublishOnly` never sees this path;
22
+ // this script runs the gate itself, and the gate refuses a folder publish outright.
23
+ import { execFileSync, spawnSync } from "node:child_process";
24
+ import { createHash } from "node:crypto";
25
+ import { readFileSync, readdirSync } from "node:fs";
26
+ import { dirname, join, resolve } from "node:path";
27
+ import { fileURLToPath } from "node:url";
28
+
29
+ const root = join(dirname(fileURLToPath(import.meta.url)), "..");
30
+ const fail = (msg) => {
31
+ console.error(`[FAIL] publish-release: ${msg}`);
32
+ process.exit(1);
33
+ };
34
+ const run = (cmd, args, opts = {}) => execFileSync(cmd, args, { cwd: root, encoding: "utf-8", ...opts }).trim();
35
+
36
+ const args = process.argv.slice(2);
37
+ let out, second, dryRun = false;
38
+ for (let i = 0; i < args.length; i++) {
39
+ if (args[i] === "--second") second = args[++i];
40
+ else if (args[i] === "--dry-run") dryRun = true;
41
+ else if (args[i].startsWith("-")) fail(`unknown option ${args[i]}`);
42
+ else if (out === undefined) out = args[i];
43
+ else fail(`unexpected argument ${args[i]}`);
44
+ }
45
+ if (!out || !second) fail("usage: publish-release.mjs <out> --second <out2> [--dry-run]");
46
+ out = resolve(out);
47
+ second = resolve(second);
48
+
49
+ // 1. Traceability: the same gate a folder publish ran.
50
+ const gate = spawnSync(process.execPath, [join(root, "scripts", "release-gate.mjs"), "--traceability"], { cwd: root, stdio: "inherit" });
51
+ if (gate.status !== 0) process.exit(1);
52
+
53
+ // 2. The output is this commit's build.
54
+ const tree = run("git", ["rev-parse", "HEAD^{tree}"]);
55
+ let built;
56
+ try {
57
+ built = readFileSync(join(out, "TREE"), "utf-8").trim();
58
+ } catch {
59
+ fail(`${out}/TREE is missing; build with dagger/cli-build/cli-build.sh`);
60
+ }
61
+ if (built !== tree) fail(`${out} was built from tree ${built.slice(0, 12)}, not HEAD's ${tree.slice(0, 12)}`);
62
+
63
+ // 3. Every file matches SHA256SUMS, and the tarballs are exactly the four this commit names.
64
+ const sums = readFileSync(join(out, "SHA256SUMS"), "utf-8");
65
+ const check = spawnSync("sha256sum", ["--strict", "-c", "SHA256SUMS"], { cwd: out, encoding: "utf-8" });
66
+ if (check.status !== 0) fail(`${out} does not match its SHA256SUMS:\n${check.stdout}${check.stderr}`);
67
+ const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf-8"));
68
+ const persona = (p) => JSON.parse(readFileSync(join(root, "scripts", `${p}-version.json`), "utf-8")).version;
69
+ const packages = [
70
+ { name: pkg.name, version: pkg.version },
71
+ ...["verify", "maintain", "author"].map((p) => ({ name: `@sdd-method/${p}-cli`, version: persona(p) })),
72
+ ].map((p) => ({ ...p, file: `${p.name.replace(/^@/, "").replace("/", "-")}-${p.version}.tgz` }));
73
+ const expected = packages.map((p) => p.file).sort();
74
+ const present = readdirSync(out).filter((f) => f.endsWith(".tgz")).sort();
75
+ if (JSON.stringify(present) !== JSON.stringify(expected))
76
+ fail(`${out} holds ${present.join(", ") || "no tarballs"}; this commit's versions name ${expected.join(", ")}`);
77
+ for (const f of [...expected, "install.sh"]) {
78
+ if (!new RegExp(`^[0-9a-f]{64} ${f.replace(/\./g, "\\.")}$`, "m").test(sums)) fail(`SHA256SUMS does not list ${f}`);
79
+ }
80
+
81
+ // 4. The second build reproduces the first.
82
+ let secondSums;
83
+ try {
84
+ secondSums = readFileSync(join(second, "SHA256SUMS"), "utf-8");
85
+ } catch {
86
+ fail(`${second}/SHA256SUMS is missing`);
87
+ }
88
+ if (secondSums !== sums) fail(`the second build differs from the first; the build does not reproduce, so it is no reference:\n--- ${out}\n${sums}--- ${second}\n${secondSums}`);
89
+ console.log(`[PASS] publish-release: ${out} is HEAD's build, matches its SHA256SUMS, and ${second} reproduces it`);
90
+
91
+ // 5. Publish what npm lacks; never republish; then npm must hold these bytes.
92
+ const integrity = (file) => `sha512-${createHash("sha512").update(readFileSync(join(out, file))).digest("base64")}`;
93
+ const onNpm = (p) => {
94
+ const r = spawnSync("npm", ["view", `${p.name}@${p.version}`, "dist.integrity"], { cwd: out, encoding: "utf-8" });
95
+ return r.status === 0 && r.stdout.trim() !== "" ? r.stdout.trim() : null;
96
+ };
97
+ for (const p of packages) {
98
+ const local = integrity(p.file);
99
+ const existing = onNpm(p);
100
+ if (existing !== null) {
101
+ if (existing !== local) fail(`${p.name}@${p.version} is already on npm with other bytes (${existing.slice(0, 20)}…, local ${local.slice(0, 20)}…); bump the version`);
102
+ console.log(`[PASS] publish-release: ${p.name}@${p.version} is already on npm with these bytes`);
103
+ continue;
104
+ }
105
+ const tag = p.version.includes("-") ? ["--tag", "next"] : [];
106
+ const pub = spawnSync("npm", ["publish", join(out, p.file), "--access", "public", ...tag, ...(dryRun ? ["--dry-run"] : [])], { cwd: out, stdio: "inherit" });
107
+ if (pub.status !== 0) fail(`npm publish ${p.file} failed`);
108
+ if (dryRun) continue;
109
+ let recorded = null;
110
+ for (let i = 0; i < 10 && recorded === null; i++) {
111
+ recorded = onNpm(p);
112
+ if (recorded === null) spawnSync("sleep", ["3"]);
113
+ }
114
+ if (recorded !== local) fail(`npm records ${p.name}@${p.version} as ${recorded ?? "absent"}, not the local ${local}`);
115
+ console.log(`[PASS] publish-release: ${p.name}@${p.version} published; npm holds the reference bytes`);
116
+ }
117
+ console.log(dryRun ? "[PASS] publish-release: dry run complete; nothing published" : `[PASS] publish-release: all four packages on npm match ${out}/SHA256SUMS`);
@@ -1,11 +1,17 @@
1
1
  #!/usr/bin/env node
2
- // Release gate for @sdd-method/sdd-cli. Run by `prepublishOnly`, so `npm publish` refuses unless the
3
- // version being published is traceable: the tree is clean, HEAD is on origin/main, and the tag
4
- // v<version> is on origin and points at HEAD. A publish whose commit was never pushed, or never tagged,
5
- // cannot be traced back to its source afterwards; this makes both impossible rather than remembered.
2
+ // Release gate for @sdd-method/sdd-cli: the version being published must be traceable. The tree is
3
+ // clean, HEAD is on origin/main, and the tag v<version> is on origin and points at HEAD. A publish
4
+ // whose commit was never pushed, or never tagged, cannot be traced back to its source afterwards;
5
+ // this makes both impossible rather than remembered.
6
6
  //
7
- // node scripts/release-gate.mjs the pre-publish gate (exit 1 on any failure)
8
- // node scripts/release-gate.mjs --audit every version on npm has its tag on origin
7
+ // node scripts/release-gate.mjs --traceability the checks; scripts/publish-release.mjs runs them
8
+ // node scripts/release-gate.mjs --audit every version on npm has its tag on origin
9
+ // node scripts/release-gate.mjs `prepublishOnly`: refuses every folder publish
10
+ //
11
+ // A release publishes cli-build's container-built tarballs through scripts/publish-release.mjs, so
12
+ // npm and every other channel hold the same bytes (method distribution, sdm-e47.8). A folder publish
13
+ // packs on the host instead, whose zlib writes other bytes, so `prepublishOnly` refuses it. npm skips
14
+ // lifecycle scripts for a tarball publish, which is why publish-release.mjs runs the checks itself.
9
15
  import { execFileSync } from "node:child_process";
10
16
  import { readFileSync } from "node:fs";
11
17
  import { dirname, join } from "node:path";
@@ -30,7 +36,12 @@ const fail = (msg) => {
30
36
  process.exit(1);
31
37
  };
32
38
 
33
- if (process.argv.includes("--audit")) {
39
+ const mode = process.argv[2];
40
+ if (mode === undefined)
41
+ fail("a folder publish packs on this host, not the reference build; build with dagger/cli-build/cli-build.sh (twice) and publish with node scripts/publish-release.mjs <out> --second <out2>");
42
+ if (mode !== "--traceability" && mode !== "--audit") fail(`unknown mode ${mode}; use --traceability or --audit`);
43
+
44
+ if (mode === "--audit") {
34
45
  const published = JSON.parse(run("npm", ["view", pkg.name, "versions", "--json"]));
35
46
  const tags = remoteTags();
36
47
  const missing = published.filter((v) => !tags.has(`v${v}`));
@@ -42,7 +53,7 @@ if (process.argv.includes("--audit")) {
42
53
  // M-ADR 0218 §4.6: the persona packages are released WITH sdd-cli, in one change-set. A release that
43
54
  // bumps sdd-cli without re-stamping a persona's version file would build a package that claims an
44
55
  // engine it is not, so the publish refuses (the build refuses it too).
45
- for (const persona of ["verify", "maintain"]) {
56
+ for (const persona of ["verify", "maintain", "author"]) {
46
57
  const f = JSON.parse(readFileSync(join(root, "scripts", `${persona}-version.json`), "utf-8"));
47
58
  if (f.built_against_sdd_cli !== pkg.version)
48
59
  fail(`scripts/${persona}-version.json says built_against_sdd_cli ${f.built_against_sdd_cli}, but this release is ${pkg.version}; bump the persona's version and re-stamp it in the release commit`);
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.1.0",
3
- "built_against_sdd_cli": "1.42.0"
2
+ "version": "1.3.0",
3
+ "built_against_sdd_cli": "1.44.0"
4
4
  }
@@ -0,0 +1,26 @@
1
+ // Gives each test run its own temp directory and removes it whole when the run ends.
2
+ //
3
+ // Every fixture is created under os.tmpdir(), which reads TMPDIR. Setting TMPDIR here, in the
4
+ // main process before any worker starts, sends every fixture of this run (and of the bash
5
+ // scripts the tests spawn, which honour TMPDIR via mktemp) into one directory, whatever prefix
6
+ // its test chose. vitest-teardown.mjs could only sweep the prefixes it listed: 3 of the 129 the
7
+ // tests used, so the rest accumulated in /tmp (14,203 directories on 2026-10-16). A concurrent
8
+ // run on the same machine has its own directory, so neither run can touch the other's fixtures.
9
+ import { mkdtempSync, rmSync } from "node:fs";
10
+ import { tmpdir } from "node:os";
11
+ import { join } from "node:path";
12
+ import sweepLegacy from "./vitest-teardown.mjs";
13
+
14
+ export default function setup() {
15
+ const original = process.env.TMPDIR;
16
+ const dir = mkdtempSync(join(tmpdir(), "sdd-cli-vitest-"));
17
+ process.env.TMPDIR = dir;
18
+ return async () => {
19
+ if (process.env.SDD_CLI_KEEP_TMP) process.stdout.write(`vitest-tmpdir: kept ${dir}\n`);
20
+ else rmSync(dir, { recursive: true, force: true });
21
+ // Fixtures from runs before this setup existed sit directly in /tmp; sweep them by prefix and age.
22
+ if (original === undefined) delete process.env.TMPDIR;
23
+ else process.env.TMPDIR = original;
24
+ await sweepLegacy();
25
+ };
26
+ }
@@ -1,13 +0,0 @@
1
- import type { CatalogueRow } from "./csv-writer.js";
2
- import type { FindingsLog } from "./findings.js";
3
- import type { CanonicalSchema } from "./schema-loader.js";
4
- /**
5
- * Emit a `convention` finding for every `c4_containers` row whose `type` is
6
- * outside the canonical `c4_container_type` set. Advisory only — never fails
7
- * the build/validate (except under `--strict`, which fails on any finding).
8
- *
9
- * Self-disabling: returns early if the enum is missing (3.0.0+ removed it) or
10
- * already bound via `column_enums` (the FAIL path then owns enforcement).
11
- */
12
- export declare function checkContainerTypeAdvisory(schema: CanonicalSchema, rowsByCatalogue: ReadonlyMap<string, readonly CatalogueRow[]>, findings: FindingsLog): void;
13
- //# sourceMappingURL=advisory-container-type.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advisory-container-type.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/advisory-container-type.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,EAC7D,QAAQ,EAAE,WAAW,GACpB,IAAI,CAwBN"}
@@ -1,56 +0,0 @@
1
- // ADR 0155 transitional advisory check (2.x schema line only).
2
- //
3
- // The `c4_container_type` enum (Application | Data Store) is deliberately NOT
4
- // bound via `c4_containers.column_enums` during 2.x — binding it would hard-
5
- // fail FK/enum validation. Instead, a non-canonical `c4_containers.type`
6
- // (the deprecated `Infrastructure` / `External System`) is recognised-but-
7
- // WARNed, prompting migration before the 3.0.0 breaking removal binds the enum.
8
- //
9
- // The canonical builder cannot itself emit a legacy type (it derives `type`
10
- // fresh from the C4 macro: Container→Application, ContainerDb/ContainerQueue→
11
- // Data Store, and Container_Ext is routed to c4_external_systems). So this
12
- // check is near-inert at `build` time and exists there to satisfy the spec's
13
- // "a conforming builder MUST emit [finding] convention" literally and to catch
14
- // any non-canonical row a future/alternative builder produces. It has real
15
- // teeth at `validate` time, where it reads an existing catalogues/ directory —
16
- // e.g. an adopter who upgraded sdd-cli but has not yet rebuilt a catalogue that
17
- // still carries Infrastructure rows from the old builder.
18
- //
19
- // DELETE this module at the 3.0.0 major bump: enforcement moves to the
20
- // column_enums FAIL path once the enum is bound. The guard below makes that
21
- // safe — once `c4_container_type` is bound (or removed), this check disables
22
- // itself to avoid double-reporting.
23
- const CATALOGUE = "c4_containers";
24
- const COLUMN = "type";
25
- const ENUM = "c4_container_type";
26
- /**
27
- * Emit a `convention` finding for every `c4_containers` row whose `type` is
28
- * outside the canonical `c4_container_type` set. Advisory only — never fails
29
- * the build/validate (except under `--strict`, which fails on any finding).
30
- *
31
- * Self-disabling: returns early if the enum is missing (3.0.0+ removed it) or
32
- * already bound via `column_enums` (the FAIL path then owns enforcement).
33
- */
34
- export function checkContainerTypeAdvisory(schema, rowsByCatalogue, findings) {
35
- const enumDef = schema.enums[ENUM];
36
- if (!enumDef)
37
- return;
38
- const cat = schema.catalogues.find((c) => c.name === CATALOGUE);
39
- if (cat && cat.columnEnums[COLUMN])
40
- return;
41
- const allowed = new Set(enumDef.values.map((v) => v.value));
42
- const canonical = enumDef.values.map((v) => v.value).join(" | ");
43
- const rows = rowsByCatalogue.get(CATALOGUE) ?? [];
44
- for (const row of rows) {
45
- const value = String(row[COLUMN] ?? "").trim();
46
- if (value === "" || allowed.has(value))
47
- continue;
48
- const id = String(row["id"] ?? "<no-id>");
49
- findings.add("convention", `${CATALOGUE} row ${id} has non-canonical ${COLUMN} "${value}" ` +
50
- `(per ADR 0155 the canonical c4_container_type is ${canonical}; ` +
51
- `"External System" belongs in c4_external_systems, ` +
52
- `"Infrastructure" retypes to Application/Data Store). ` +
53
- `Recognised-but-deprecated during 2.x; removed at schema 3.0.0.`);
54
- }
55
- }
56
- //# sourceMappingURL=advisory-container-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"advisory-container-type.js","sourceRoot":"","sources":["../../../src/lib/catalogue/advisory-container-type.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,0DAA0D;AAC1D,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,oCAAoC;AAMpC,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAEjC;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAuB,EACvB,eAA6D,EAC7D,QAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChE,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO;IAE3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAElD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACjD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QAC1C,QAAQ,CAAC,GAAG,CACV,YAAY,EACZ,GAAG,SAAS,QAAQ,EAAE,sBAAsB,MAAM,KAAK,KAAK,IAAI;YAC9D,oDAAoD,SAAS,IAAI;YACjE,oDAAoD;YACpD,uDAAuD;YACvD,gEAAgE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Builders + drift detection for the method-managed GitHub Copilot CLI
3
- * hooks, per `docs/method/methods/hook-contracts.md` (Hook 1, Hook 2)
4
- * and the portable contracts in `hook-portable-contract-schema.yaml`.
5
- *
6
- * The Copilot CLI surface differs from Claude Code in three ways
7
- * (per ADR 0141 §4.3 + hook-contracts.md):
8
- *
9
- * 1. Hook configs live in per-event JSON files (`.github/hooks/<event>.json`),
10
- * not a single settings.json.
11
- * 2. No per-tool matcher — every `preToolUse` hook fires for every
12
- * tool, with in-script filtering instead.
13
- * 3. Approval semantic is declarative (`approval: deny-on-nonzero`)
14
- * rather than exit-code based.
15
- *
16
- * Ownership is sentinel-based, same as Claude Code: the `bash` and
17
- * `powershell` command strings carry `# sdd-method-managed:true`.
18
- * Adopter-added events in the same `events[]` array lack the sentinel
19
- * and survive sync.
20
- */
21
- import { type PortableLifecycleEventClass } from "./lifecycle-mapping.js";
22
- /**
23
- * The shape of one event entry in `.github/hooks/<event>.json`.
24
- * `command` may be either a single shell string or a per-shell object —
25
- * we always emit the per-shell object for Windows/PowerShell parity.
26
- */
27
- export interface CopilotHookCommand {
28
- readonly bash: string;
29
- readonly powershell: string;
30
- }
31
- export interface CopilotHookEvent {
32
- readonly type: string;
33
- readonly command: CopilotHookCommand;
34
- readonly timeout_ms?: number;
35
- readonly approval?: "always-allow" | "deny-on-nonzero";
36
- }
37
- export interface CopilotHookFile {
38
- readonly version: 1;
39
- readonly events: readonly CopilotHookEvent[];
40
- readonly [key: string]: unknown;
41
- }
42
- export declare function copilotHookFilePath(portable: PortableLifecycleEventClass): string;
43
- /**
44
- * Hook 1 — `block-edits-to-method-managed-paths` (pre_tool_use).
45
- * Copilot CLI has no per-tool matcher, so the script
46
- * (orchestration/scripts/copilot-method-guard.{sh,ps1}) does the
47
- * filtering on tool name in addition to the path check. Method-side
48
- * authors the scripts; we just emit the wiring.
49
- */
50
- export declare function buildCopilotPreToolUseEvent(): CopilotHookEvent;
51
- /**
52
- * Hook 2 — `validate-adr-structure-on-session-start` (session_start).
53
- * Output is surfaced as session-baseline context; non-blocking
54
- * (`approval: always-allow`) to match the portable contract's `warn`
55
- * exit-code semantic.
56
- */
57
- export declare function buildCopilotSessionStartEvent(): CopilotHookEvent;
58
- /**
59
- * Method-managed Copilot CLI hook surface. The map is portable-class →
60
- * `{ filePath, events: [method-managed events to write] }`. The
61
- * settings-merge pass walks this to render each `.github/hooks/*.json`
62
- * file with sentinel-based ownership.
63
- */
64
- export type CopilotHookSurface = Readonly<Record<PortableLifecycleEventClass, {
65
- filePath: string;
66
- events: readonly CopilotHookEvent[];
67
- }>>;
68
- export declare function buildMethodManagedCopilotHooks(): Partial<CopilotHookSurface>;
69
- /**
70
- * An event entry is method-managed iff its `command.bash` (or
71
- * `command.powershell`) carries the sentinel.
72
- */
73
- export declare function isMethodManagedEvent(event: CopilotHookEvent): boolean;
74
- export interface CopilotMergeResult {
75
- readonly file: CopilotHookFile;
76
- /** True iff a method-managed event differs from incoming or was added. */
77
- readonly changed: boolean;
78
- }
79
- /**
80
- * Upsert method-managed events into an existing hook file. Adopter-
81
- * added events (no sentinel) survive. An unmarked adopter event that
82
- * is equivalent (modulo sentinel) to a method-managed event we're
83
- * adding gets de-duped — same safety net as the Claude Code merge
84
- * post-v0.12.2.
85
- */
86
- export declare function upsertCopilotHookFile(existing: CopilotHookFile | null, owned: readonly CopilotHookEvent[]): CopilotMergeResult;
87
- /**
88
- * Detect adopter drift: an event still carrying the sentinel but whose
89
- * content no longer matches the canonical version we'd write. Returns
90
- * `true` iff drift is present.
91
- */
92
- export declare function detectCopilotHookDrift(existing: CopilotHookFile | null, owned: readonly CopilotHookEvent[]): boolean;
93
- //# sourceMappingURL=copilot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAmB,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAI3F;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,iBAAiB,CAAC;CACxD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAUD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAQR;AAOD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,IAAI,gBAAgB,CAY9D;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,gBAAgB,CAchE;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,MAAM,CACJ,2BAA2B,EAC3B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAC1D,CACF,CAAC;AAEF,wBAAgB,8BAA8B,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAW5E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAUrE;AA4BD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,kBAAkB,CA6BpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,OAAO,CAKT"}
@@ -1,167 +0,0 @@
1
- /**
2
- * Builders + drift detection for the method-managed GitHub Copilot CLI
3
- * hooks, per `docs/method/methods/hook-contracts.md` (Hook 1, Hook 2)
4
- * and the portable contracts in `hook-portable-contract-schema.yaml`.
5
- *
6
- * The Copilot CLI surface differs from Claude Code in three ways
7
- * (per ADR 0141 §4.3 + hook-contracts.md):
8
- *
9
- * 1. Hook configs live in per-event JSON files (`.github/hooks/<event>.json`),
10
- * not a single settings.json.
11
- * 2. No per-tool matcher — every `preToolUse` hook fires for every
12
- * tool, with in-script filtering instead.
13
- * 3. Approval semantic is declarative (`approval: deny-on-nonzero`)
14
- * rather than exit-code based.
15
- *
16
- * Ownership is sentinel-based, same as Claude Code: the `bash` and
17
- * `powershell` command strings carry `# sdd-method-managed:true`.
18
- * Adopter-added events in the same `events[]` array lack the sentinel
19
- * and survive sync.
20
- */
21
- import { METHOD_MANAGED_SENTINEL } from "./types.js";
22
- import { nativeEventName } from "./lifecycle-mapping.js";
23
- const HARNESS = "github-copilot-cli";
24
- /** Filename per portable lifecycle class. */
25
- const HOOK_FILE_BY_PORTABLE = {
26
- pre_tool_use: "pre-tool-use.json",
27
- session_start: "session-start.json",
28
- };
29
- export function copilotHookFilePath(portable) {
30
- const name = HOOK_FILE_BY_PORTABLE[portable];
31
- if (!name) {
32
- throw new Error(`No Copilot CLI hook file mapped for portable class "${portable}"`);
33
- }
34
- return `.github/hooks/${name}`;
35
- }
36
- function withSentinel(command) {
37
- if (command.includes(METHOD_MANAGED_SENTINEL))
38
- return command;
39
- return `${command} ${METHOD_MANAGED_SENTINEL}`;
40
- }
41
- /**
42
- * Hook 1 — `block-edits-to-method-managed-paths` (pre_tool_use).
43
- * Copilot CLI has no per-tool matcher, so the script
44
- * (orchestration/scripts/copilot-method-guard.{sh,ps1}) does the
45
- * filtering on tool name in addition to the path check. Method-side
46
- * authors the scripts; we just emit the wiring.
47
- */
48
- export function buildCopilotPreToolUseEvent() {
49
- return {
50
- type: nativeEventName(HARNESS, "pre_tool_use"),
51
- command: {
52
- bash: withSentinel("./orchestration/scripts/copilot-method-guard.sh"),
53
- powershell: withSentinel("./orchestration/scripts/copilot-method-guard.ps1"),
54
- },
55
- timeout_ms: 5000,
56
- approval: "deny-on-nonzero",
57
- };
58
- }
59
- /**
60
- * Hook 2 — `validate-adr-structure-on-session-start` (session_start).
61
- * Output is surfaced as session-baseline context; non-blocking
62
- * (`approval: always-allow`) to match the portable contract's `warn`
63
- * exit-code semantic.
64
- */
65
- export function buildCopilotSessionStartEvent() {
66
- return {
67
- type: nativeEventName(HARNESS, "session_start"),
68
- command: {
69
- bash: withSentinel("sdd-cli validate --validator adr-structure 2>&1 | head -20"),
70
- powershell: withSentinel("sdd-cli validate --validator adr-structure 2>&1 | Select-Object -First 20"),
71
- },
72
- timeout_ms: 30000,
73
- approval: "always-allow",
74
- };
75
- }
76
- export function buildMethodManagedCopilotHooks() {
77
- return {
78
- pre_tool_use: {
79
- filePath: copilotHookFilePath("pre_tool_use"),
80
- events: [buildCopilotPreToolUseEvent()],
81
- },
82
- session_start: {
83
- filePath: copilotHookFilePath("session_start"),
84
- events: [buildCopilotSessionStartEvent()],
85
- },
86
- };
87
- }
88
- /**
89
- * An event entry is method-managed iff its `command.bash` (or
90
- * `command.powershell`) carries the sentinel.
91
- */
92
- export function isMethodManagedEvent(event) {
93
- const bash = typeof event.command?.bash === "string" ? event.command.bash : "";
94
- const ps = typeof event.command?.powershell === "string"
95
- ? event.command.powershell
96
- : "";
97
- return (bash.includes(METHOD_MANAGED_SENTINEL) ||
98
- ps.includes(METHOD_MANAGED_SENTINEL));
99
- }
100
- /**
101
- * Strip the sentinel and trailing whitespace from a command string so
102
- * two commands can be compared modulo ownership marker. Symmetric to
103
- * the Claude Code merge logic.
104
- */
105
- function normaliseCommandString(command) {
106
- return command.replace(METHOD_MANAGED_SENTINEL, "").trimEnd();
107
- }
108
- function eventsEquivalentExcludingSentinel(a, b) {
109
- if (a.type !== b.type)
110
- return false;
111
- if (a.approval !== b.approval)
112
- return false;
113
- if (a.timeout_ms !== b.timeout_ms)
114
- return false;
115
- const aBash = a.command?.bash ?? "";
116
- const bBash = b.command?.bash ?? "";
117
- const aPs = a.command?.powershell ?? "";
118
- const bPs = b.command?.powershell ?? "";
119
- return (normaliseCommandString(aBash) === normaliseCommandString(bBash) &&
120
- normaliseCommandString(aPs) === normaliseCommandString(bPs));
121
- }
122
- /**
123
- * Upsert method-managed events into an existing hook file. Adopter-
124
- * added events (no sentinel) survive. An unmarked adopter event that
125
- * is equivalent (modulo sentinel) to a method-managed event we're
126
- * adding gets de-duped — same safety net as the Claude Code merge
127
- * post-v0.12.2.
128
- */
129
- export function upsertCopilotHookFile(existing, owned) {
130
- const currentEvents = existing?.events ?? [];
131
- let dedupedAny = false;
132
- const adopterEvents = currentEvents.filter((evt) => {
133
- if (isMethodManagedEvent(evt))
134
- return false;
135
- const equivalent = owned.some((o) => eventsEquivalentExcludingSentinel(evt, o));
136
- if (equivalent) {
137
- dedupedAny = true;
138
- return false;
139
- }
140
- return true;
141
- });
142
- const before = currentEvents.filter((e) => isMethodManagedEvent(e));
143
- const after = owned;
144
- const methodChanged = JSON.stringify(before) !== JSON.stringify(after);
145
- const nextFile = {
146
- version: 1,
147
- events: [...adopterEvents, ...owned],
148
- };
149
- return {
150
- file: nextFile,
151
- changed: methodChanged || dedupedAny,
152
- };
153
- }
154
- /**
155
- * Detect adopter drift: an event still carrying the sentinel but whose
156
- * content no longer matches the canonical version we'd write. Returns
157
- * `true` iff drift is present.
158
- */
159
- export function detectCopilotHookDrift(existing, owned) {
160
- if (!existing)
161
- return false;
162
- const existingMethod = existing.events.filter((e) => isMethodManagedEvent(e));
163
- if (existingMethod.length === 0)
164
- return false;
165
- return JSON.stringify(existingMethod) !== JSON.stringify(owned);
166
- }
167
- //# sourceMappingURL=copilot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/copilot.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Portable lifecycle event class → harness-native event mapping per
3
- * ADR 0141 §4.3 and the table in `docs/method/foundations/lifecycle-event-classes.yaml`.
4
- *
5
- * Adding a new harness binding is mechanical: extend `AgentHarness`
6
- * in src/lib/agent-harness.ts and add a row here. Hook builders
7
- * consume this mapping rather than hand-coding native event names.
8
- */
9
- import type { AgentHarness } from "../agent-harness.js";
10
- export type PortableLifecycleEventClass = "pre_tool_use" | "post_tool_use" | "user_prompt_submit" | "session_start" | "session_stop";
11
- export declare function nativeEventName(harness: AgentHarness, portable: PortableLifecycleEventClass): string;
12
- //# sourceMappingURL=lifecycle-mapping.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle-mapping.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/lifecycle-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,2BAA2B,GACnC,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,cAAc,CAAC;AAqBnB,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,2BAA2B,GACpC,MAAM,CAER"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Portable lifecycle event class → harness-native event mapping per
3
- * ADR 0141 §4.3 and the table in `docs/method/foundations/lifecycle-event-classes.yaml`.
4
- *
5
- * Adding a new harness binding is mechanical: extend `AgentHarness`
6
- * in src/lib/agent-harness.ts and add a row here. Hook builders
7
- * consume this mapping rather than hand-coding native event names.
8
- */
9
- const MAPPINGS = {
10
- "claude-code": {
11
- pre_tool_use: "PreToolUse",
12
- post_tool_use: "PostToolUse",
13
- user_prompt_submit: "UserPromptSubmit",
14
- session_start: "SessionStart",
15
- session_stop: "Stop",
16
- },
17
- "github-copilot-cli": {
18
- pre_tool_use: "preToolUse",
19
- post_tool_use: "postToolUse",
20
- user_prompt_submit: "userPromptSubmitted",
21
- session_start: "sessionStart",
22
- session_stop: "agentStop",
23
- },
24
- };
25
- export function nativeEventName(harness, portable) {
26
- return MAPPINGS[harness][portable];
27
- }
28
- //# sourceMappingURL=lifecycle-mapping.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle-mapping.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/lifecycle-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,QAAQ,GAEV;IACF,aAAa,EAAE;QACb,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,aAAa;QAC5B,kBAAkB,EAAE,kBAAkB;QACtC,aAAa,EAAE,cAAc;QAC7B,YAAY,EAAE,MAAM;KACrB;IACD,oBAAoB,EAAE;QACpB,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,aAAa;QAC5B,kBAAkB,EAAE,qBAAqB;QACzC,aAAa,EAAE,cAAc;QAC7B,YAAY,EAAE,WAAW;KAC1B;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,QAAqC;IAErC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Build-time constants for the MCP server.
3
- */
4
- export declare const SERVER_VERSION: string;
5
- export declare const DISTRIBUTION = "sdd-method";
6
- export declare const MCP_PROTOCOL_SPEC_VERSION = "2025-06-18";
7
- //# sourceMappingURL=build-info.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../../src/lib/mcp/build-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,cAAc,QAAqB,CAAC;AAEjD,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC,eAAO,MAAM,yBAAyB,eAAe,CAAC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Build-time constants for the MCP server.
3
- */
4
- import { getSddCliVersion } from "../package-version.js";
5
- // Sourced from package.json at module load via getSddCliVersion() (the engine version) so
6
- // the MCP server identity cannot drift from the published version.
7
- export const SERVER_VERSION = getSddCliVersion();
8
- export const DISTRIBUTION = "sdd-method";
9
- export const MCP_PROTOCOL_SPEC_VERSION = "2025-06-18";
10
- //# sourceMappingURL=build-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../../src/lib/mcp/build-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,0FAA0F;AAC1F,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC"}