@sdd-method/sdd-cli 0.9.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 (373) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +17 -0
  3. package/README.md +151 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +8 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +66 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/lib/bundle.d.ts +20 -0
  13. package/dist/lib/bundle.d.ts.map +1 -0
  14. package/dist/lib/bundle.js +75 -0
  15. package/dist/lib/bundle.js.map +1 -0
  16. package/dist/lib/generate-claude-md/index.d.ts +16 -0
  17. package/dist/lib/generate-claude-md/index.d.ts.map +1 -0
  18. package/dist/lib/generate-claude-md/index.js +89 -0
  19. package/dist/lib/generate-claude-md/index.js.map +1 -0
  20. package/dist/lib/hooks-seed/entries.d.ts +16 -0
  21. package/dist/lib/hooks-seed/entries.d.ts.map +1 -0
  22. package/dist/lib/hooks-seed/entries.js +47 -0
  23. package/dist/lib/hooks-seed/entries.js.map +1 -0
  24. package/dist/lib/hooks-seed/index.d.ts +17 -0
  25. package/dist/lib/hooks-seed/index.d.ts.map +1 -0
  26. package/dist/lib/hooks-seed/index.js +15 -0
  27. package/dist/lib/hooks-seed/index.js.map +1 -0
  28. package/dist/lib/hooks-seed/merge.d.ts +24 -0
  29. package/dist/lib/hooks-seed/merge.d.ts.map +1 -0
  30. package/dist/lib/hooks-seed/merge.js +73 -0
  31. package/dist/lib/hooks-seed/merge.js.map +1 -0
  32. package/dist/lib/hooks-seed/types.d.ts +27 -0
  33. package/dist/lib/hooks-seed/types.d.ts.map +1 -0
  34. package/dist/lib/hooks-seed/types.js +20 -0
  35. package/dist/lib/hooks-seed/types.js.map +1 -0
  36. package/dist/lib/init/app.d.ts +21 -0
  37. package/dist/lib/init/app.d.ts.map +1 -0
  38. package/dist/lib/init/app.js +132 -0
  39. package/dist/lib/init/app.js.map +1 -0
  40. package/dist/lib/init/ci-workflow.d.ts +29 -0
  41. package/dist/lib/init/ci-workflow.d.ts.map +1 -0
  42. package/dist/lib/init/ci-workflow.js +78 -0
  43. package/dist/lib/init/ci-workflow.js.map +1 -0
  44. package/dist/lib/init/claude-md.d.ts +19 -0
  45. package/dist/lib/init/claude-md.d.ts.map +1 -0
  46. package/dist/lib/init/claude-md.js +140 -0
  47. package/dist/lib/init/claude-md.js.map +1 -0
  48. package/dist/lib/init/index.d.ts +33 -0
  49. package/dist/lib/init/index.d.ts.map +1 -0
  50. package/dist/lib/init/index.js +232 -0
  51. package/dist/lib/init/index.js.map +1 -0
  52. package/dist/lib/init/integration.d.ts +53 -0
  53. package/dist/lib/init/integration.d.ts.map +1 -0
  54. package/dist/lib/init/integration.js +237 -0
  55. package/dist/lib/init/integration.js.map +1 -0
  56. package/dist/lib/init/platform.d.ts +26 -0
  57. package/dist/lib/init/platform.d.ts.map +1 -0
  58. package/dist/lib/init/platform.js +188 -0
  59. package/dist/lib/init/platform.js.map +1 -0
  60. package/dist/lib/list/discover.d.ts +8 -0
  61. package/dist/lib/list/discover.d.ts.map +1 -0
  62. package/dist/lib/list/discover.js +77 -0
  63. package/dist/lib/list/discover.js.map +1 -0
  64. package/dist/lib/list/format.d.ts +9 -0
  65. package/dist/lib/list/format.d.ts.map +1 -0
  66. package/dist/lib/list/format.js +44 -0
  67. package/dist/lib/list/format.js.map +1 -0
  68. package/dist/lib/list/index.d.ts +12 -0
  69. package/dist/lib/list/index.d.ts.map +1 -0
  70. package/dist/lib/list/index.js +15 -0
  71. package/dist/lib/list/index.js.map +1 -0
  72. package/dist/lib/lock-file.d.ts +14 -0
  73. package/dist/lib/lock-file.d.ts.map +1 -0
  74. package/dist/lib/lock-file.js +80 -0
  75. package/dist/lib/lock-file.js.map +1 -0
  76. package/dist/lib/mcp/build-info.d.ts +9 -0
  77. package/dist/lib/mcp/build-info.d.ts.map +1 -0
  78. package/dist/lib/mcp/build-info.js +10 -0
  79. package/dist/lib/mcp/build-info.js.map +1 -0
  80. package/dist/lib/mcp/errors.d.ts +23 -0
  81. package/dist/lib/mcp/errors.d.ts.map +1 -0
  82. package/dist/lib/mcp/errors.js +25 -0
  83. package/dist/lib/mcp/errors.js.map +1 -0
  84. package/dist/lib/mcp/parse/frontmatter.d.ts +22 -0
  85. package/dist/lib/mcp/parse/frontmatter.d.ts.map +1 -0
  86. package/dist/lib/mcp/parse/frontmatter.js +49 -0
  87. package/dist/lib/mcp/parse/frontmatter.js.map +1 -0
  88. package/dist/lib/mcp/parse/gate-registry.d.ts +19 -0
  89. package/dist/lib/mcp/parse/gate-registry.d.ts.map +1 -0
  90. package/dist/lib/mcp/parse/gate-registry.js +68 -0
  91. package/dist/lib/mcp/parse/gate-registry.js.map +1 -0
  92. package/dist/lib/mcp/parse/paths.d.ts +21 -0
  93. package/dist/lib/mcp/parse/paths.d.ts.map +1 -0
  94. package/dist/lib/mcp/parse/paths.js +83 -0
  95. package/dist/lib/mcp/parse/paths.js.map +1 -0
  96. package/dist/lib/mcp/pin/errors.d.ts +11 -0
  97. package/dist/lib/mcp/pin/errors.d.ts.map +1 -0
  98. package/dist/lib/mcp/pin/errors.js +32 -0
  99. package/dist/lib/mcp/pin/errors.js.map +1 -0
  100. package/dist/lib/mcp/pin/index.d.ts +18 -0
  101. package/dist/lib/mcp/pin/index.d.ts.map +1 -0
  102. package/dist/lib/mcp/pin/index.js +29 -0
  103. package/dist/lib/mcp/pin/index.js.map +1 -0
  104. package/dist/lib/mcp/pin/read.d.ts +24 -0
  105. package/dist/lib/mcp/pin/read.d.ts.map +1 -0
  106. package/dist/lib/mcp/pin/read.js +64 -0
  107. package/dist/lib/mcp/pin/read.js.map +1 -0
  108. package/dist/lib/mcp/pin/resolve.d.ts +12 -0
  109. package/dist/lib/mcp/pin/resolve.d.ts.map +1 -0
  110. package/dist/lib/mcp/pin/resolve.js +33 -0
  111. package/dist/lib/mcp/pin/resolve.js.map +1 -0
  112. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts +14 -0
  113. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts.map +1 -0
  114. package/dist/lib/mcp/prompts/evaluate-cascade.js +147 -0
  115. package/dist/lib/mcp/prompts/evaluate-cascade.js.map +1 -0
  116. package/dist/lib/mcp/prompts/index.d.ts +9 -0
  117. package/dist/lib/mcp/prompts/index.d.ts.map +1 -0
  118. package/dist/lib/mcp/prompts/index.js +23 -0
  119. package/dist/lib/mcp/prompts/index.js.map +1 -0
  120. package/dist/lib/mcp/prompts/propose-adr.d.ts +12 -0
  121. package/dist/lib/mcp/prompts/propose-adr.d.ts.map +1 -0
  122. package/dist/lib/mcp/prompts/propose-adr.js +94 -0
  123. package/dist/lib/mcp/prompts/propose-adr.js.map +1 -0
  124. package/dist/lib/mcp/prompts/review-data-model-change.d.ts +10 -0
  125. package/dist/lib/mcp/prompts/review-data-model-change.d.ts.map +1 -0
  126. package/dist/lib/mcp/prompts/review-data-model-change.js +134 -0
  127. package/dist/lib/mcp/prompts/review-data-model-change.js.map +1 -0
  128. package/dist/lib/mcp/prompts/template-loader.d.ts +29 -0
  129. package/dist/lib/mcp/prompts/template-loader.d.ts.map +1 -0
  130. package/dist/lib/mcp/prompts/template-loader.js +44 -0
  131. package/dist/lib/mcp/prompts/template-loader.js.map +1 -0
  132. package/dist/lib/mcp/prompts/types.d.ts +17 -0
  133. package/dist/lib/mcp/prompts/types.d.ts.map +1 -0
  134. package/dist/lib/mcp/prompts/types.js +10 -0
  135. package/dist/lib/mcp/prompts/types.js.map +1 -0
  136. package/dist/lib/mcp/prompts/write-capability-spec.d.ts +8 -0
  137. package/dist/lib/mcp/prompts/write-capability-spec.d.ts.map +1 -0
  138. package/dist/lib/mcp/prompts/write-capability-spec.js +85 -0
  139. package/dist/lib/mcp/prompts/write-capability-spec.js.map +1 -0
  140. package/dist/lib/mcp/prompts/write-feature-spec.d.ts +10 -0
  141. package/dist/lib/mcp/prompts/write-feature-spec.d.ts.map +1 -0
  142. package/dist/lib/mcp/prompts/write-feature-spec.js +94 -0
  143. package/dist/lib/mcp/prompts/write-feature-spec.js.map +1 -0
  144. package/dist/lib/mcp/prompts/write-work-order.d.ts +7 -0
  145. package/dist/lib/mcp/prompts/write-work-order.d.ts.map +1 -0
  146. package/dist/lib/mcp/prompts/write-work-order.js +69 -0
  147. package/dist/lib/mcp/prompts/write-work-order.js.map +1 -0
  148. package/dist/lib/mcp/reader.d.ts +37 -0
  149. package/dist/lib/mcp/reader.d.ts.map +1 -0
  150. package/dist/lib/mcp/reader.js +93 -0
  151. package/dist/lib/mcp/reader.js.map +1 -0
  152. package/dist/lib/mcp/resources/adrs.d.ts +3 -0
  153. package/dist/lib/mcp/resources/adrs.d.ts.map +1 -0
  154. package/dist/lib/mcp/resources/adrs.js +97 -0
  155. package/dist/lib/mcp/resources/adrs.js.map +1 -0
  156. package/dist/lib/mcp/resources/data-models.d.ts +14 -0
  157. package/dist/lib/mcp/resources/data-models.d.ts.map +1 -0
  158. package/dist/lib/mcp/resources/data-models.js +81 -0
  159. package/dist/lib/mcp/resources/data-models.js.map +1 -0
  160. package/dist/lib/mcp/resources/gates.d.ts +9 -0
  161. package/dist/lib/mcp/resources/gates.d.ts.map +1 -0
  162. package/dist/lib/mcp/resources/gates.js +90 -0
  163. package/dist/lib/mcp/resources/gates.js.map +1 -0
  164. package/dist/lib/mcp/resources/glossary.d.ts +16 -0
  165. package/dist/lib/mcp/resources/glossary.d.ts.map +1 -0
  166. package/dist/lib/mcp/resources/glossary.js +87 -0
  167. package/dist/lib/mcp/resources/glossary.js.map +1 -0
  168. package/dist/lib/mcp/resources/specs.d.ts +23 -0
  169. package/dist/lib/mcp/resources/specs.d.ts.map +1 -0
  170. package/dist/lib/mcp/resources/specs.js +151 -0
  171. package/dist/lib/mcp/resources/specs.js.map +1 -0
  172. package/dist/lib/mcp/resources/version.d.ts +3 -0
  173. package/dist/lib/mcp/resources/version.d.ts.map +1 -0
  174. package/dist/lib/mcp/resources/version.js +45 -0
  175. package/dist/lib/mcp/resources/version.js.map +1 -0
  176. package/dist/lib/mcp/server.d.ts +29 -0
  177. package/dist/lib/mcp/server.d.ts.map +1 -0
  178. package/dist/lib/mcp/server.js +104 -0
  179. package/dist/lib/mcp/server.js.map +1 -0
  180. package/dist/lib/mcp/tools/cascade-impact.d.ts +22 -0
  181. package/dist/lib/mcp/tools/cascade-impact.d.ts.map +1 -0
  182. package/dist/lib/mcp/tools/cascade-impact.js +53 -0
  183. package/dist/lib/mcp/tools/cascade-impact.js.map +1 -0
  184. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts +7 -0
  185. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts.map +1 -0
  186. package/dist/lib/mcp/tools/find-consumers-of-contract.js +70 -0
  187. package/dist/lib/mcp/tools/find-consumers-of-contract.js.map +1 -0
  188. package/dist/lib/mcp/tools/find-consumers.d.ts +7 -0
  189. package/dist/lib/mcp/tools/find-consumers.d.ts.map +1 -0
  190. package/dist/lib/mcp/tools/find-consumers.js +52 -0
  191. package/dist/lib/mcp/tools/find-consumers.js.map +1 -0
  192. package/dist/lib/mcp/tools/find-dependencies.d.ts +8 -0
  193. package/dist/lib/mcp/tools/find-dependencies.d.ts.map +1 -0
  194. package/dist/lib/mcp/tools/find-dependencies.js +89 -0
  195. package/dist/lib/mcp/tools/find-dependencies.js.map +1 -0
  196. package/dist/lib/mcp/tools/find-dependents.d.ts +8 -0
  197. package/dist/lib/mcp/tools/find-dependents.d.ts.map +1 -0
  198. package/dist/lib/mcp/tools/find-dependents.js +89 -0
  199. package/dist/lib/mcp/tools/find-dependents.js.map +1 -0
  200. package/dist/lib/mcp/tools/find-producers.d.ts +8 -0
  201. package/dist/lib/mcp/tools/find-producers.d.ts.map +1 -0
  202. package/dist/lib/mcp/tools/find-producers.js +57 -0
  203. package/dist/lib/mcp/tools/find-producers.js.map +1 -0
  204. package/dist/lib/mcp/tools/find-related-specs.d.ts +9 -0
  205. package/dist/lib/mcp/tools/find-related-specs.d.ts.map +1 -0
  206. package/dist/lib/mcp/tools/find-related-specs.js +92 -0
  207. package/dist/lib/mcp/tools/find-related-specs.js.map +1 -0
  208. package/dist/lib/mcp/tools/list-adrs.d.ts +3 -0
  209. package/dist/lib/mcp/tools/list-adrs.d.ts.map +1 -0
  210. package/dist/lib/mcp/tools/list-adrs.js +73 -0
  211. package/dist/lib/mcp/tools/list-adrs.js.map +1 -0
  212. package/dist/lib/mcp/tools/query-gate-status.d.ts +3 -0
  213. package/dist/lib/mcp/tools/query-gate-status.d.ts.map +1 -0
  214. package/dist/lib/mcp/tools/query-gate-status.js +82 -0
  215. package/dist/lib/mcp/tools/query-gate-status.js.map +1 -0
  216. package/dist/lib/mcp/tools/search-specs.d.ts +12 -0
  217. package/dist/lib/mcp/tools/search-specs.d.ts.map +1 -0
  218. package/dist/lib/mcp/tools/search-specs.js +151 -0
  219. package/dist/lib/mcp/tools/search-specs.js.map +1 -0
  220. package/dist/lib/mcp/workspace.d.ts +25 -0
  221. package/dist/lib/mcp/workspace.d.ts.map +1 -0
  222. package/dist/lib/mcp/workspace.js +129 -0
  223. package/dist/lib/mcp/workspace.js.map +1 -0
  224. package/dist/lib/mcp-seed/entries.d.ts +19 -0
  225. package/dist/lib/mcp-seed/entries.d.ts.map +1 -0
  226. package/dist/lib/mcp-seed/entries.js +14 -0
  227. package/dist/lib/mcp-seed/entries.js.map +1 -0
  228. package/dist/lib/mcp-seed/index.d.ts +36 -0
  229. package/dist/lib/mcp-seed/index.d.ts.map +1 -0
  230. package/dist/lib/mcp-seed/index.js +28 -0
  231. package/dist/lib/mcp-seed/index.js.map +1 -0
  232. package/dist/lib/mcp-seed/merge.d.ts +34 -0
  233. package/dist/lib/mcp-seed/merge.d.ts.map +1 -0
  234. package/dist/lib/mcp-seed/merge.js +99 -0
  235. package/dist/lib/mcp-seed/merge.js.map +1 -0
  236. package/dist/lib/mcp-seed/types.d.ts +24 -0
  237. package/dist/lib/mcp-seed/types.d.ts.map +1 -0
  238. package/dist/lib/mcp-seed/types.js +13 -0
  239. package/dist/lib/mcp-seed/types.js.map +1 -0
  240. package/dist/lib/plan/index.d.ts +19 -0
  241. package/dist/lib/plan/index.d.ts.map +1 -0
  242. package/dist/lib/plan/index.js +69 -0
  243. package/dist/lib/plan/index.js.map +1 -0
  244. package/dist/lib/plan/read-sdd.d.ts +46 -0
  245. package/dist/lib/plan/read-sdd.d.ts.map +1 -0
  246. package/dist/lib/plan/read-sdd.js +102 -0
  247. package/dist/lib/plan/read-sdd.js.map +1 -0
  248. package/dist/lib/plan/render-template.d.ts +8 -0
  249. package/dist/lib/plan/render-template.d.ts.map +1 -0
  250. package/dist/lib/plan/render-template.js +60 -0
  251. package/dist/lib/plan/render-template.js.map +1 -0
  252. package/dist/lib/repo-kind.d.ts +20 -0
  253. package/dist/lib/repo-kind.d.ts.map +1 -0
  254. package/dist/lib/repo-kind.js +73 -0
  255. package/dist/lib/repo-kind.js.map +1 -0
  256. package/dist/lib/scripts.d.ts +2 -0
  257. package/dist/lib/scripts.d.ts.map +1 -0
  258. package/dist/lib/scripts.js +7 -0
  259. package/dist/lib/scripts.js.map +1 -0
  260. package/dist/lib/sdd-index/cascade.d.ts +46 -0
  261. package/dist/lib/sdd-index/cascade.d.ts.map +1 -0
  262. package/dist/lib/sdd-index/cascade.js +91 -0
  263. package/dist/lib/sdd-index/cascade.js.map +1 -0
  264. package/dist/lib/sdd-index/contracts.d.ts +29 -0
  265. package/dist/lib/sdd-index/contracts.d.ts.map +1 -0
  266. package/dist/lib/sdd-index/contracts.js +216 -0
  267. package/dist/lib/sdd-index/contracts.js.map +1 -0
  268. package/dist/lib/sdd-index/data-model.d.ts +13 -0
  269. package/dist/lib/sdd-index/data-model.d.ts.map +1 -0
  270. package/dist/lib/sdd-index/data-model.js +23 -0
  271. package/dist/lib/sdd-index/data-model.js.map +1 -0
  272. package/dist/lib/sdd-index/execution-map.d.ts +34 -0
  273. package/dist/lib/sdd-index/execution-map.d.ts.map +1 -0
  274. package/dist/lib/sdd-index/execution-map.js +105 -0
  275. package/dist/lib/sdd-index/execution-map.js.map +1 -0
  276. package/dist/lib/sdd-index/graph.d.ts +28 -0
  277. package/dist/lib/sdd-index/graph.d.ts.map +1 -0
  278. package/dist/lib/sdd-index/graph.js +122 -0
  279. package/dist/lib/sdd-index/graph.js.map +1 -0
  280. package/dist/lib/sdd-index/index.d.ts +29 -0
  281. package/dist/lib/sdd-index/index.d.ts.map +1 -0
  282. package/dist/lib/sdd-index/index.js +79 -0
  283. package/dist/lib/sdd-index/index.js.map +1 -0
  284. package/dist/lib/sdd-index/repo-config.d.ts +23 -0
  285. package/dist/lib/sdd-index/repo-config.d.ts.map +1 -0
  286. package/dist/lib/sdd-index/repo-config.js +150 -0
  287. package/dist/lib/sdd-index/repo-config.js.map +1 -0
  288. package/dist/lib/sdd-index/types.d.ts +106 -0
  289. package/dist/lib/sdd-index/types.d.ts.map +1 -0
  290. package/dist/lib/sdd-index/types.js +13 -0
  291. package/dist/lib/sdd-index/types.js.map +1 -0
  292. package/dist/lib/sdd-index/watch.d.ts +24 -0
  293. package/dist/lib/sdd-index/watch.d.ts.map +1 -0
  294. package/dist/lib/sdd-index/watch.js +112 -0
  295. package/dist/lib/sdd-index/watch.js.map +1 -0
  296. package/dist/lib/spawn.d.ts +8 -0
  297. package/dist/lib/spawn.d.ts.map +1 -0
  298. package/dist/lib/spawn.js +16 -0
  299. package/dist/lib/spawn.js.map +1 -0
  300. package/dist/lib/sync/apply.d.ts +3 -0
  301. package/dist/lib/sync/apply.d.ts.map +1 -0
  302. package/dist/lib/sync/apply.js +16 -0
  303. package/dist/lib/sync/apply.js.map +1 -0
  304. package/dist/lib/sync/diff.d.ts +8 -0
  305. package/dist/lib/sync/diff.d.ts.map +1 -0
  306. package/dist/lib/sync/diff.js +48 -0
  307. package/dist/lib/sync/diff.js.map +1 -0
  308. package/dist/lib/sync/index.d.ts +17 -0
  309. package/dist/lib/sync/index.d.ts.map +1 -0
  310. package/dist/lib/sync/index.js +184 -0
  311. package/dist/lib/sync/index.js.map +1 -0
  312. package/dist/lib/sync/settings-merge.d.ts +45 -0
  313. package/dist/lib/sync/settings-merge.d.ts.map +1 -0
  314. package/dist/lib/sync/settings-merge.js +109 -0
  315. package/dist/lib/sync/settings-merge.js.map +1 -0
  316. package/dist/lib/sync/source-tag.d.ts +5 -0
  317. package/dist/lib/sync/source-tag.d.ts.map +1 -0
  318. package/dist/lib/sync/source-tag.js +34 -0
  319. package/dist/lib/sync/source-tag.js.map +1 -0
  320. package/dist/lib/sync/yaml-block-merge.d.ts +50 -0
  321. package/dist/lib/sync/yaml-block-merge.d.ts.map +1 -0
  322. package/dist/lib/sync/yaml-block-merge.js +113 -0
  323. package/dist/lib/sync/yaml-block-merge.js.map +1 -0
  324. package/dist/lib/validate/aggregate.d.ts +13 -0
  325. package/dist/lib/validate/aggregate.d.ts.map +1 -0
  326. package/dist/lib/validate/aggregate.js +35 -0
  327. package/dist/lib/validate/aggregate.js.map +1 -0
  328. package/dist/lib/validate/dispatch.d.ts +34 -0
  329. package/dist/lib/validate/dispatch.d.ts.map +1 -0
  330. package/dist/lib/validate/dispatch.js +167 -0
  331. package/dist/lib/validate/dispatch.js.map +1 -0
  332. package/dist/lib/validate/index.d.ts +13 -0
  333. package/dist/lib/validate/index.d.ts.map +1 -0
  334. package/dist/lib/validate/index.js +69 -0
  335. package/dist/lib/validate/index.js.map +1 -0
  336. package/dist/lib/validate/runner.d.ts +16 -0
  337. package/dist/lib/validate/runner.d.ts.map +1 -0
  338. package/dist/lib/validate/runner.js +66 -0
  339. package/dist/lib/validate/runner.js.map +1 -0
  340. package/dist/verbs/generate-claude-md.d.ts +3 -0
  341. package/dist/verbs/generate-claude-md.d.ts.map +1 -0
  342. package/dist/verbs/generate-claude-md.js +36 -0
  343. package/dist/verbs/generate-claude-md.js.map +1 -0
  344. package/dist/verbs/init.d.ts +3 -0
  345. package/dist/verbs/init.d.ts.map +1 -0
  346. package/dist/verbs/init.js +90 -0
  347. package/dist/verbs/init.js.map +1 -0
  348. package/dist/verbs/list.d.ts +3 -0
  349. package/dist/verbs/list.d.ts.map +1 -0
  350. package/dist/verbs/list.js +43 -0
  351. package/dist/verbs/list.js.map +1 -0
  352. package/dist/verbs/mcp.d.ts +3 -0
  353. package/dist/verbs/mcp.d.ts.map +1 -0
  354. package/dist/verbs/mcp.js +22 -0
  355. package/dist/verbs/mcp.js.map +1 -0
  356. package/dist/verbs/plan.d.ts +3 -0
  357. package/dist/verbs/plan.d.ts.map +1 -0
  358. package/dist/verbs/plan.js +41 -0
  359. package/dist/verbs/plan.js.map +1 -0
  360. package/dist/verbs/sync.d.ts +3 -0
  361. package/dist/verbs/sync.d.ts.map +1 -0
  362. package/dist/verbs/sync.js +27 -0
  363. package/dist/verbs/sync.js.map +1 -0
  364. package/dist/verbs/validate.d.ts +3 -0
  365. package/dist/verbs/validate.d.ts.map +1 -0
  366. package/dist/verbs/validate.js +21 -0
  367. package/dist/verbs/validate.js.map +1 -0
  368. package/package.json +61 -0
  369. package/scripts/README.md +48 -0
  370. package/scripts/sync-method-baseline.sh +258 -0
  371. package/scripts/validate-app-dependencies.sh +289 -0
  372. package/scripts/validate-app-docs.sh +185 -0
  373. package/scripts/validate-integration-docs.sh +222 -0
@@ -0,0 +1,90 @@
1
+ import { runInit } from "../lib/init/index.js";
2
+ import { INTEGRATION_PROFILE_TYPES, isIntegrationProfileType, } from "../lib/init/integration.js";
3
+ const VALID_PROFILES = [
4
+ "platform",
5
+ "application",
6
+ "integration",
7
+ ];
8
+ export function registerInit(program) {
9
+ program
10
+ .command("init")
11
+ .description("Scaffold a new SDD repository from a method baseline bundle")
12
+ .requiredOption("--profile <profile>", "repo profile: platform | application | integration")
13
+ .requiredOption("--bundle <path>", "path to the method-baseline tarball")
14
+ .option("--app-id <id>", "app identifier (required for --profile application)")
15
+ .option("--integration-id <id>", "integration identifier (required for --profile integration)")
16
+ .option("--profile-type <type>", `integration profile type: ${INTEGRATION_PROFILE_TYPES.join(" | ")}`)
17
+ .option("--provider-name <name>", "human-readable provider name")
18
+ .option("--published-by <value>", "integration publisher: internal | third-party")
19
+ .option("--sdk-version <ver>", "integration SDK version")
20
+ .option("--supported-asset-types <csv>", "comma-separated supported asset types (default: vehicle)")
21
+ .option("--inbound-only", "mark integration as inbound-only")
22
+ .option("--outbound-only", "mark integration as outbound-only")
23
+ .option("--platform-name <name>", "human-readable platform name (required for --profile platform)")
24
+ .option("--platform-id <slug>", "kebab-case platform slug (defaults to kebab-case of --platform-name)")
25
+ .option("--target-dir <dir>", "target directory", process.cwd())
26
+ .option("--allow-existing", "allow bootstrapping into a non-empty directory")
27
+ .option("--no-git-init", "skip git init")
28
+ .option("--dry-run", "report planned actions without writing")
29
+ .option("--platform-root <dir>", "path to sdd-method for post-bootstrap app-dependencies validation")
30
+ .option("--agent-harness <name>", "opt into a harness-specific hooks baseline. Supported: claude-code")
31
+ .action(async (opts) => {
32
+ if (!VALID_PROFILES.includes(opts.profile)) {
33
+ process.stderr.write(`[FAIL] --profile must be one of: ${VALID_PROFILES.join(", ")}\n`);
34
+ process.exit(1);
35
+ }
36
+ const profile = opts.profile;
37
+ if (profile === "integration" && opts.profileType) {
38
+ if (!isIntegrationProfileType(opts.profileType)) {
39
+ process.stderr.write(`[FAIL] --profile-type must be one of: ${INTEGRATION_PROFILE_TYPES.join(", ")}\n`);
40
+ process.exit(1);
41
+ }
42
+ }
43
+ if (opts.publishedBy !== undefined &&
44
+ opts.publishedBy !== "internal" &&
45
+ opts.publishedBy !== "third-party") {
46
+ process.stderr.write(`[FAIL] --published-by must be one of: internal, third-party\n`);
47
+ process.exit(1);
48
+ }
49
+ const supportedAssetTypes = opts.supportedAssetTypes
50
+ ? opts.supportedAssetTypes
51
+ .split(",")
52
+ .map((s) => s.trim())
53
+ .filter((s) => s.length > 0)
54
+ : undefined;
55
+ const { exitCode } = await runInit({
56
+ profile,
57
+ bundle: opts.bundle,
58
+ targetDir: opts.targetDir,
59
+ allowExisting: opts.allowExisting === true,
60
+ gitInit: opts.gitInit,
61
+ dryRun: opts.dryRun === true,
62
+ ...(opts.platformRoot ? { platformRoot: opts.platformRoot } : {}),
63
+ ...(opts.appId ? { appId: opts.appId } : {}),
64
+ ...(opts.integrationId ? { integrationId: opts.integrationId } : {}),
65
+ ...(opts.profileType && isIntegrationProfileType(opts.profileType)
66
+ ? { profileType: opts.profileType }
67
+ : {}),
68
+ ...(opts.providerName ? { providerName: opts.providerName } : {}),
69
+ ...(opts.publishedBy === "internal" || opts.publishedBy === "third-party"
70
+ ? { publishedBy: opts.publishedBy }
71
+ : {}),
72
+ ...(opts.sdkVersion ? { sdkVersion: opts.sdkVersion } : {}),
73
+ ...(supportedAssetTypes ? { supportedAssetTypes } : {}),
74
+ ...(opts.inboundOnly !== undefined ? { inboundOnly: opts.inboundOnly } : {}),
75
+ ...(opts.outboundOnly !== undefined ? { outboundOnly: opts.outboundOnly } : {}),
76
+ ...(opts.platformName ? { platformName: opts.platformName } : {}),
77
+ ...(opts.platformId ? { platformId: opts.platformId } : {}),
78
+ ...(opts.agentHarness === "claude-code"
79
+ ? { agentHarness: opts.agentHarness }
80
+ : {}),
81
+ });
82
+ if (opts.agentHarness !== undefined &&
83
+ opts.agentHarness !== "claude-code") {
84
+ process.stderr.write(`[WARN] Unsupported --agent-harness "${opts.agentHarness}"; only "claude-code" is recognised today. Hooks baseline skipped.\n`);
85
+ }
86
+ if (exitCode !== 0)
87
+ process.exit(exitCode);
88
+ });
89
+ }
90
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/verbs/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerList(program: Command): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/verbs/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BnD"}
@@ -0,0 +1,43 @@
1
+ import { runList } from "../lib/list/index.js";
2
+ const VALID_PROFILES = [
3
+ "platform",
4
+ "application",
5
+ "integration",
6
+ ];
7
+ export function registerList(program) {
8
+ program
9
+ .command("list")
10
+ .description("Enumerate SDD repositories discoverable in the current workspace")
11
+ .option("--profile <profile>", "filter by profile: platform | application | integration")
12
+ .option("--workspace-root <path>", "workspace directory to walk (repeatable; defaults to cwd)", collectRoots, [])
13
+ .option("--format <format>", "output format: text | json", "text")
14
+ .action(async (opts) => {
15
+ const profileFilter = parseProfile(opts.profile);
16
+ const format = parseFormat(opts.format);
17
+ const { exitCode } = await runList({
18
+ workspaceRoots: opts.workspaceRoot ?? [],
19
+ format,
20
+ ...(profileFilter ? { profileFilter } : {}),
21
+ }, (s) => process.stdout.write(s));
22
+ if (exitCode !== 0)
23
+ process.exit(exitCode);
24
+ });
25
+ }
26
+ function collectRoots(value, prior) {
27
+ prior.push(value);
28
+ return prior;
29
+ }
30
+ function parseProfile(value) {
31
+ if (value === undefined)
32
+ return undefined;
33
+ if (!VALID_PROFILES.includes(value)) {
34
+ throw new Error(`Unknown --profile "${value}". Expected one of: ${VALID_PROFILES.join(", ")}`);
35
+ }
36
+ return value;
37
+ }
38
+ function parseFormat(value) {
39
+ if (value === "text" || value === "json")
40
+ return value;
41
+ throw new Error(`Unknown --format "${value}". Expected "text" or "json".`);
42
+ }
43
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/verbs/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,cAAc,GAAuB;IACzC,UAAU;IACV,aAAa;IACb,aAAa;CACd,CAAC;AAQF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,kEAAkE,CACnE;SACA,MAAM,CACL,qBAAqB,EACrB,yDAAyD,CAC1D;SACA,MAAM,CACL,yBAAyB,EACzB,2DAA2D,EAC3D,YAAY,EACZ,EAAc,CACf;SACA,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAChC;YACE,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACxC,MAAM;YACN,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAe;IAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAgB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,KAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,+BAA+B,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerMcp(program: Command): void;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/verbs/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BlD"}
@@ -0,0 +1,22 @@
1
+ import { runMcpServe } from "../lib/mcp/server.js";
2
+ export function registerMcp(program) {
3
+ const mcp = program
4
+ .command("mcp")
5
+ .description("Model Context Protocol (MCP) server management. See `sdd-cli mcp serve --help` for the stdio server.");
6
+ mcp
7
+ .command("serve")
8
+ .description("Start a local stdio MCP server exposing the SDD as resources and tools. Spawned by an MCP client (e.g. Claude Code) over stdio.")
9
+ .option("--sdd-repo <dir>", "explicit SDD repository path; overrides sibling discovery but is itself overridden by the SDD_REPO_PATH environment variable")
10
+ .action(async (opts) => {
11
+ try {
12
+ await runMcpServe({
13
+ ...(opts.sddRepo ? { sddRepo: opts.sddRepo } : {}),
14
+ });
15
+ }
16
+ catch {
17
+ // Fatal errors are already surfaced on stderr by runMcpServe.
18
+ process.exit(1);
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/verbs/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CACV,sGAAsG,CACvG,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,iIAAiI,CAClI;SACA,MAAM,CACL,kBAAkB,EAClB,8HAA8H,CAC/H;SACA,MAAM,CAAC,KAAK,EAAE,IAA8B,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerPlan(program: Command): void;
3
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/verbs/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4CnD"}
@@ -0,0 +1,41 @@
1
+ import { runPlanPilot } from "../lib/plan/index.js";
2
+ export function registerPlan(program) {
3
+ program
4
+ .command("plan")
5
+ .description("Scaffold a plan markdown file from a method-distributed template. Currently supports --pilot for pilot-kickoff plans; future subcommands may add --initiative / --migration.")
6
+ .option("--pilot", "scaffold a pilot-kickoff plan (requires --service, --capability, --domain)", false)
7
+ .option("--service <name>", "service / pilot name, e.g. party-management")
8
+ .option("--capability <name>", "capability under test, e.g. organization-management")
9
+ .option("--domain <name>", "domain the capability belongs to, e.g. party")
10
+ .option("--workspace-root <path>", "SDD root (defaults to cwd)")
11
+ .option("--output <path>", "destination file (defaults to content/product/plans/{service}-pilot-kickoff.md)")
12
+ .option("--dry-run", "print rendered output to stdout without writing", false)
13
+ .action(async (opts) => {
14
+ if (opts.pilot !== true) {
15
+ process.stderr.write("[FAIL] plan: no mode specified. Pass --pilot (other modes not yet implemented).\n");
16
+ process.exit(1);
17
+ }
18
+ const missing = [];
19
+ if (!opts.service)
20
+ missing.push("--service");
21
+ if (!opts.capability)
22
+ missing.push("--capability");
23
+ if (!opts.domain)
24
+ missing.push("--domain");
25
+ if (missing.length > 0) {
26
+ process.stderr.write(`[FAIL] plan --pilot: missing required flag(s): ${missing.join(", ")}\n`);
27
+ process.exit(1);
28
+ }
29
+ const result = await runPlanPilot({
30
+ sddRoot: opts.workspaceRoot ?? process.cwd(),
31
+ service: opts.service,
32
+ capability: opts.capability,
33
+ domain: opts.domain,
34
+ ...(opts.output !== undefined ? { outputPath: opts.output } : {}),
35
+ ...(opts.dryRun === true ? { dryRun: true } : {}),
36
+ }, (s) => process.stdout.write(s));
37
+ if (result.exitCode !== 0)
38
+ process.exit(result.exitCode);
39
+ });
40
+ }
41
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/verbs/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYpD,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,8KAA8K,CAC/K;SACA,MAAM,CAAC,SAAS,EAAE,4EAA4E,EAAE,KAAK,CAAC;SACtG,MAAM,CAAC,kBAAkB,EAAE,6CAA6C,CAAC;SACzE,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,8CAA8C,CAAC;SACzE,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,iFAAiF,CAAC;SAC5G,MAAM,CAAC,WAAW,EAAE,iDAAiD,EAAE,KAAK,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mFAAmF,CACpF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B;YACE,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAQ;YACtB,UAAU,EAAE,IAAI,CAAC,UAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAO;YACpB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerSync(program: Command): void;
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/verbs/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+BnD"}
@@ -0,0 +1,27 @@
1
+ import { runSync } from "../lib/sync/index.js";
2
+ export function registerSync(program) {
3
+ program
4
+ .command("sync")
5
+ .description("Pull the latest upstream method baseline into this SDD repository")
6
+ .requiredOption("--bundle <path>", "path to the method-baseline tarball")
7
+ .option("--target-repo <dir>", "target SDD repo", process.cwd())
8
+ .option("--dry-run", "report planned actions without writing")
9
+ .option("--allow-overwrite", "accept overwrites of locally-modified method content")
10
+ .option("--no-delete", "preserve files removed upstream")
11
+ .option("--agent-harness <name>", "refresh the harness-specific hooks baseline. Supported: claude-code")
12
+ .action(async (opts) => {
13
+ const { exitCode } = await runSync({
14
+ bundle: opts.bundle,
15
+ targetRepo: opts.targetRepo,
16
+ dryRun: opts.dryRun === true,
17
+ allowOverwrite: opts.allowOverwrite === true,
18
+ delete: opts.delete,
19
+ ...(opts.agentHarness === "claude-code"
20
+ ? { agentHarness: opts.agentHarness }
21
+ : {}),
22
+ });
23
+ if (exitCode !== 0)
24
+ process.exit(exitCode);
25
+ });
26
+ }
27
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/verbs/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAW/C,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,mEAAmE,CACpE;SACA,cAAc,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SACxE,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CACL,mBAAmB,EACnB,sDAAsD,CACvD;SACA,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;SACxD,MAAM,CACL,wBAAwB,EACxB,qEAAqE,CACtE;SACA,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;YAC5B,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa;gBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;gBACrC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerValidate(program: Command): void;
3
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/verbs/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBvD"}
@@ -0,0 +1,21 @@
1
+ import { runValidate } from "../lib/validate/index.js";
2
+ export function registerValidate(program) {
3
+ program
4
+ .command("validate")
5
+ .description("Run the method-level validation suite for this SDD repository")
6
+ .option("--target-repo <dir>", "target SDD repo", process.cwd())
7
+ .option("--platform-root <dir>", "path to the sdd-method (or platform) repo, required for app-dependencies")
8
+ .option("--validator <name>", "run only the named validator")
9
+ .option("--strict", "treat warnings as failures")
10
+ .action(async (opts) => {
11
+ const { exitCode } = await runValidate({
12
+ targetRepo: opts.targetRepo,
13
+ ...(opts.platformRoot ? { platformRoot: opts.platformRoot } : {}),
14
+ ...(opts.validator ? { validator: opts.validator } : {}),
15
+ strict: opts.strict === true,
16
+ });
17
+ if (exitCode !== 0)
18
+ process.exit(exitCode);
19
+ });
20
+ }
21
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/verbs/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AASvD,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,+DAA+D,CAChE;SACA,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CACL,uBAAuB,EACvB,0EAA0E,CAC3E;SACA,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;SAC5D,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,IAA8B,EAAE,EAAE;QAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;SAC7B,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@sdd-method/sdd-cli",
3
+ "version": "0.9.0",
4
+ "description": "Method-layer CLI for SDD repository lifecycle — init, sync, validate, list, plan, generate-claude-md, mcp serve. v0.9.0 ships method enforcement automation Phases 0+1+2 per ADR 0129: GitHub Actions CI baseline seeded by init/sync (Layer 1 authoritative) and opt-in Claude Code hooks via --agent-harness claude-code (Layer 2 accelerator), both delegating to sdd-cli validate with per-entry ownership.",
5
+ "keywords": [
6
+ "sdd-method",
7
+ "sdd",
8
+ "spec-driven-development",
9
+ "cli"
10
+ ],
11
+ "homepage": "https://github.com/tomfosteruk/sdd-cli#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/tomfosteruk/sdd-cli/issues"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/tomfosteruk/sdd-cli.git"
18
+ },
19
+ "license": "Apache-2.0",
20
+ "author": "Tom Foster",
21
+ "type": "module",
22
+ "bin": {
23
+ "sdd-cli": "dist/cli.js"
24
+ },
25
+ "exports": {
26
+ ".": "./dist/index.js"
27
+ },
28
+ "main": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "files": [
31
+ "dist",
32
+ "scripts",
33
+ "README.md",
34
+ "LICENSE",
35
+ "NOTICE"
36
+ ],
37
+ "scripts": {
38
+ "build": "tsc",
39
+ "typecheck": "tsc --noEmit",
40
+ "test": "npm run build && vitest run",
41
+ "test:watch": "vitest",
42
+ "prepublishOnly": "npm run build"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^22.0.0",
46
+ "typescript": "^5.5.0",
47
+ "vitest": "^2.0.0"
48
+ },
49
+ "engines": {
50
+ "node": ">=20.0.0"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "dependencies": {
56
+ "@modelcontextprotocol/sdk": "^1.29.0",
57
+ "commander": "^12.1.0",
58
+ "yaml": "^2.5.0",
59
+ "zod": "^4.3.6"
60
+ }
61
+ }
@@ -0,0 +1,48 @@
1
+ # Bundled upstream scripts
2
+
3
+ Frozen copies of bash scripts from
4
+ [`sdd-method`](https://github.com/tomfosteruk/sdd-method) that
5
+ `sdd-cli` either shells out to (`validate-*`) or retains as a regression
6
+ oracle (`sync-method-baseline.sh`, which is superseded by native TypeScript
7
+ sync in v0.2.0 but kept so `tests/parity/` can keep catching drift).
8
+
9
+ Files in this directory are **byte-identical** to their upstream source. Do
10
+ not edit here — edit upstream, then run the refresh procedure below to copy
11
+ the new version in. Byte-identity keeps `diff` usable as a drift-detection
12
+ signal.
13
+
14
+ ## Provenance
15
+
16
+ | File | Upstream path | Pinned to |
17
+ |---|---|---|
18
+ | `sync-method-baseline.sh` | `orchestration/scripts/sync-method-baseline.sh` | `4d80826` |
19
+ | `validate-app-docs.sh` | `orchestration/scripts/validate-app-docs.sh` | `db4cb25` |
20
+ | `validate-app-dependencies.sh` | `orchestration/scripts/validate-app-dependencies.sh` | `db4cb25` |
21
+ | `validate-integration-docs.sh` | `orchestration/scripts/validate-integration-docs.sh` | `db4cb25` |
22
+
23
+ Only the validators that accept a `--*-root` flag are bundled. The
24
+ no-flag validators (`validate-adr-structure.sh`, `validate-spec-lifecycle.sh`,
25
+ `validate-runway-classification.sh`) compute their root as `SCRIPT_DIR/../..`,
26
+ which means they only make sense when run from the target repo's own
27
+ `orchestration/scripts/` directory (where `sync` places them). The
28
+ `sdd-cli validate` dispatcher spawns those directly from the target repo.
29
+
30
+ ## Refresh procedure
31
+
32
+ ```bash
33
+ cp ../sdd-method/orchestration/scripts/<script>.sh scripts/
34
+ # Then update the SHA in this README and commit both together.
35
+ ```
36
+
37
+ Automation (pre-build sync step) is a later milestone. Refresh is currently
38
+ manual and visible.
39
+
40
+ ## Lifecycle
41
+
42
+ The `sync-method-baseline.sh` oracle is frozen at 4a8cd05 and stays for
43
+ regression testing — the native TS sync is tested against it in
44
+ `tests/parity/`.
45
+
46
+ The `validate-*.sh` scripts are what `sdd-cli validate` spawns. Native TS
47
+ reimplementation of individual validators is v0.3.0+, smallest-first
48
+ (adr-structure, spec-lifecycle).