@sdd-method/sdd-cli 0.9.0 → 0.11.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 (182) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +3 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/catalogue/aggregate.d.ts +39 -0
  5. package/dist/lib/catalogue/aggregate.d.ts.map +1 -0
  6. package/dist/lib/catalogue/aggregate.js +344 -0
  7. package/dist/lib/catalogue/aggregate.js.map +1 -0
  8. package/dist/lib/catalogue/aggregation-manifest-loader.d.ts +25 -0
  9. package/dist/lib/catalogue/aggregation-manifest-loader.d.ts.map +1 -0
  10. package/dist/lib/catalogue/aggregation-manifest-loader.js +111 -0
  11. package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -0
  12. package/dist/lib/catalogue/build.d.ts +42 -0
  13. package/dist/lib/catalogue/build.d.ts.map +1 -0
  14. package/dist/lib/catalogue/build.js +373 -0
  15. package/dist/lib/catalogue/build.js.map +1 -0
  16. package/dist/lib/catalogue/builders/adr-supersedes.d.ts +14 -0
  17. package/dist/lib/catalogue/builders/adr-supersedes.d.ts.map +1 -0
  18. package/dist/lib/catalogue/builders/adr-supersedes.js +62 -0
  19. package/dist/lib/catalogue/builders/adr-supersedes.js.map +1 -0
  20. package/dist/lib/catalogue/builders/adrs.d.ts +27 -0
  21. package/dist/lib/catalogue/builders/adrs.d.ts.map +1 -0
  22. package/dist/lib/catalogue/builders/adrs.js +191 -0
  23. package/dist/lib/catalogue/builders/adrs.js.map +1 -0
  24. package/dist/lib/catalogue/builders/c4-containers.d.ts +16 -0
  25. package/dist/lib/catalogue/builders/c4-containers.d.ts.map +1 -0
  26. package/dist/lib/catalogue/builders/c4-containers.js +169 -0
  27. package/dist/lib/catalogue/builders/c4-containers.js.map +1 -0
  28. package/dist/lib/catalogue/builders/c4-systems.d.ts +10 -0
  29. package/dist/lib/catalogue/builders/c4-systems.d.ts.map +1 -0
  30. package/dist/lib/catalogue/builders/c4-systems.js +99 -0
  31. package/dist/lib/catalogue/builders/c4-systems.js.map +1 -0
  32. package/dist/lib/catalogue/builders/capabilities.d.ts +11 -0
  33. package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -0
  34. package/dist/lib/catalogue/builders/capabilities.js +173 -0
  35. package/dist/lib/catalogue/builders/capabilities.js.map +1 -0
  36. package/dist/lib/catalogue/builders/capability-edges.d.ts +27 -0
  37. package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -0
  38. package/dist/lib/catalogue/builders/capability-edges.js +166 -0
  39. package/dist/lib/catalogue/builders/capability-edges.js.map +1 -0
  40. package/dist/lib/catalogue/builders/contracts.d.ts +15 -0
  41. package/dist/lib/catalogue/builders/contracts.d.ts.map +1 -0
  42. package/dist/lib/catalogue/builders/contracts.js +153 -0
  43. package/dist/lib/catalogue/builders/contracts.js.map +1 -0
  44. package/dist/lib/catalogue/builders/domains.d.ts +10 -0
  45. package/dist/lib/catalogue/builders/domains.d.ts.map +1 -0
  46. package/dist/lib/catalogue/builders/domains.js +93 -0
  47. package/dist/lib/catalogue/builders/domains.js.map +1 -0
  48. package/dist/lib/catalogue/builders/event-edges.d.ts +20 -0
  49. package/dist/lib/catalogue/builders/event-edges.d.ts.map +1 -0
  50. package/dist/lib/catalogue/builders/event-edges.js +112 -0
  51. package/dist/lib/catalogue/builders/event-edges.js.map +1 -0
  52. package/dist/lib/catalogue/builders/events.d.ts +26 -0
  53. package/dist/lib/catalogue/builders/events.d.ts.map +1 -0
  54. package/dist/lib/catalogue/builders/events.js +99 -0
  55. package/dist/lib/catalogue/builders/events.js.map +1 -0
  56. package/dist/lib/catalogue/builders/feature-groups.d.ts +10 -0
  57. package/dist/lib/catalogue/builders/feature-groups.d.ts.map +1 -0
  58. package/dist/lib/catalogue/builders/feature-groups.js +118 -0
  59. package/dist/lib/catalogue/builders/feature-groups.js.map +1 -0
  60. package/dist/lib/catalogue/builders/features.d.ts +35 -0
  61. package/dist/lib/catalogue/builders/features.d.ts.map +1 -0
  62. package/dist/lib/catalogue/builders/features.js +206 -0
  63. package/dist/lib/catalogue/builders/features.js.map +1 -0
  64. package/dist/lib/catalogue/builders/glossary-xref.d.ts +11 -0
  65. package/dist/lib/catalogue/builders/glossary-xref.d.ts.map +1 -0
  66. package/dist/lib/catalogue/builders/glossary-xref.js +107 -0
  67. package/dist/lib/catalogue/builders/glossary-xref.js.map +1 -0
  68. package/dist/lib/catalogue/builders/glossary.d.ts +14 -0
  69. package/dist/lib/catalogue/builders/glossary.d.ts.map +1 -0
  70. package/dist/lib/catalogue/builders/glossary.js +150 -0
  71. package/dist/lib/catalogue/builders/glossary.js.map +1 -0
  72. package/dist/lib/catalogue/builders/index.d.ts +57 -0
  73. package/dist/lib/catalogue/builders/index.d.ts.map +1 -0
  74. package/dist/lib/catalogue/builders/index.js +33 -0
  75. package/dist/lib/catalogue/builders/index.js.map +1 -0
  76. package/dist/lib/catalogue/builders/integrations.d.ts +12 -0
  77. package/dist/lib/catalogue/builders/integrations.d.ts.map +1 -0
  78. package/dist/lib/catalogue/builders/integrations.js +85 -0
  79. package/dist/lib/catalogue/builders/integrations.js.map +1 -0
  80. package/dist/lib/catalogue/builders/persona-journey-edges.d.ts +26 -0
  81. package/dist/lib/catalogue/builders/persona-journey-edges.d.ts.map +1 -0
  82. package/dist/lib/catalogue/builders/persona-journey-edges.js +133 -0
  83. package/dist/lib/catalogue/builders/persona-journey-edges.js.map +1 -0
  84. package/dist/lib/catalogue/builders/personas.d.ts +22 -0
  85. package/dist/lib/catalogue/builders/personas.d.ts.map +1 -0
  86. package/dist/lib/catalogue/builders/personas.js +150 -0
  87. package/dist/lib/catalogue/builders/personas.js.map +1 -0
  88. package/dist/lib/catalogue/builders/product-edges.d.ts +15 -0
  89. package/dist/lib/catalogue/builders/product-edges.d.ts.map +1 -0
  90. package/dist/lib/catalogue/builders/product-edges.js +97 -0
  91. package/dist/lib/catalogue/builders/product-edges.js.map +1 -0
  92. package/dist/lib/catalogue/builders/products.d.ts +26 -0
  93. package/dist/lib/catalogue/builders/products.d.ts.map +1 -0
  94. package/dist/lib/catalogue/builders/products.js +57 -0
  95. package/dist/lib/catalogue/builders/products.js.map +1 -0
  96. package/dist/lib/catalogue/builders/repo-edges.d.ts +18 -0
  97. package/dist/lib/catalogue/builders/repo-edges.d.ts.map +1 -0
  98. package/dist/lib/catalogue/builders/repo-edges.js +113 -0
  99. package/dist/lib/catalogue/builders/repo-edges.js.map +1 -0
  100. package/dist/lib/catalogue/builders/repositories.d.ts +78 -0
  101. package/dist/lib/catalogue/builders/repositories.d.ts.map +1 -0
  102. package/dist/lib/catalogue/builders/repositories.js +204 -0
  103. package/dist/lib/catalogue/builders/repositories.js.map +1 -0
  104. package/dist/lib/catalogue/builders/service-contract.d.ts +11 -0
  105. package/dist/lib/catalogue/builders/service-contract.d.ts.map +1 -0
  106. package/dist/lib/catalogue/builders/service-contract.js +53 -0
  107. package/dist/lib/catalogue/builders/service-contract.js.map +1 -0
  108. package/dist/lib/catalogue/builders/services.d.ts +15 -0
  109. package/dist/lib/catalogue/builders/services.d.ts.map +1 -0
  110. package/dist/lib/catalogue/builders/services.js +40 -0
  111. package/dist/lib/catalogue/builders/services.js.map +1 -0
  112. package/dist/lib/catalogue/builders/user-journeys.d.ts +24 -0
  113. package/dist/lib/catalogue/builders/user-journeys.d.ts.map +1 -0
  114. package/dist/lib/catalogue/builders/user-journeys.js +253 -0
  115. package/dist/lib/catalogue/builders/user-journeys.js.map +1 -0
  116. package/dist/lib/catalogue/canonical-schema.yaml +624 -0
  117. package/dist/lib/catalogue/cli-version.d.ts +10 -0
  118. package/dist/lib/catalogue/cli-version.d.ts.map +1 -0
  119. package/dist/lib/catalogue/cli-version.js +10 -0
  120. package/dist/lib/catalogue/cli-version.js.map +1 -0
  121. package/dist/lib/catalogue/csv-reader.d.ts +7 -0
  122. package/dist/lib/catalogue/csv-reader.d.ts.map +1 -0
  123. package/dist/lib/catalogue/csv-reader.js +97 -0
  124. package/dist/lib/catalogue/csv-reader.js.map +1 -0
  125. package/dist/lib/catalogue/csv-writer.d.ts +29 -0
  126. package/dist/lib/catalogue/csv-writer.d.ts.map +1 -0
  127. package/dist/lib/catalogue/csv-writer.js +55 -0
  128. package/dist/lib/catalogue/csv-writer.js.map +1 -0
  129. package/dist/lib/catalogue/findings.d.ts +27 -0
  130. package/dist/lib/catalogue/findings.d.ts.map +1 -0
  131. package/dist/lib/catalogue/findings.js +34 -0
  132. package/dist/lib/catalogue/findings.js.map +1 -0
  133. package/dist/lib/catalogue/fk-validator.d.ts +44 -0
  134. package/dist/lib/catalogue/fk-validator.d.ts.map +1 -0
  135. package/dist/lib/catalogue/fk-validator.js +90 -0
  136. package/dist/lib/catalogue/fk-validator.js.map +1 -0
  137. package/dist/lib/catalogue/index.d.ts +27 -0
  138. package/dist/lib/catalogue/index.d.ts.map +1 -0
  139. package/dist/lib/catalogue/index.js +18 -0
  140. package/dist/lib/catalogue/index.js.map +1 -0
  141. package/dist/lib/catalogue/manifest-loader.d.ts +47 -0
  142. package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -0
  143. package/dist/lib/catalogue/manifest-loader.js +161 -0
  144. package/dist/lib/catalogue/manifest-loader.js.map +1 -0
  145. package/dist/lib/catalogue/schema-compat.d.ts +47 -0
  146. package/dist/lib/catalogue/schema-compat.d.ts.map +1 -0
  147. package/dist/lib/catalogue/schema-compat.js +52 -0
  148. package/dist/lib/catalogue/schema-compat.js.map +1 -0
  149. package/dist/lib/catalogue/schema-loader.d.ts +58 -0
  150. package/dist/lib/catalogue/schema-loader.d.ts.map +1 -0
  151. package/dist/lib/catalogue/schema-loader.js +86 -0
  152. package/dist/lib/catalogue/schema-loader.js.map +1 -0
  153. package/dist/lib/catalogue/traceability-loader.d.ts +56 -0
  154. package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -0
  155. package/dist/lib/catalogue/traceability-loader.js +217 -0
  156. package/dist/lib/catalogue/traceability-loader.js.map +1 -0
  157. package/dist/lib/catalogue/validate.d.ts +16 -0
  158. package/dist/lib/catalogue/validate.d.ts.map +1 -0
  159. package/dist/lib/catalogue/validate.js +137 -0
  160. package/dist/lib/catalogue/validate.js.map +1 -0
  161. package/dist/lib/catalogue/version.d.ts +3 -0
  162. package/dist/lib/catalogue/version.d.ts.map +1 -0
  163. package/dist/lib/catalogue/version.js +18 -0
  164. package/dist/lib/catalogue/version.js.map +1 -0
  165. package/dist/lib/init/index.d.ts.map +1 -1
  166. package/dist/lib/init/index.js +6 -0
  167. package/dist/lib/init/index.js.map +1 -1
  168. package/dist/lib/mcp/build-info.d.ts +1 -1
  169. package/dist/lib/mcp/build-info.d.ts.map +1 -1
  170. package/dist/lib/mcp/build-info.js +1 -1
  171. package/dist/lib/mcp/build-info.js.map +1 -1
  172. package/dist/lib/repo-kind.d.ts +3 -3
  173. package/dist/lib/repo-kind.d.ts.map +1 -1
  174. package/dist/lib/repo-kind.js +4 -0
  175. package/dist/lib/repo-kind.js.map +1 -1
  176. package/dist/verbs/catalogue.d.ts +3 -0
  177. package/dist/verbs/catalogue.d.ts.map +1 -0
  178. package/dist/verbs/catalogue.js +60 -0
  179. package/dist/verbs/catalogue.js.map +1 -0
  180. package/package.json +3 -3
  181. package/scripts/copy-yaml-assets.mjs +38 -0
  182. package/scripts/sync-canonical-schema.sh +39 -0
@@ -0,0 +1,60 @@
1
+ import { runCatalogueBuild, runCatalogueAggregate, runCatalogueValidate, runCatalogueVersion, } from "../lib/catalogue/index.js";
2
+ export function registerCatalogue(program) {
3
+ const catalogue = program
4
+ .command("catalogue")
5
+ .description("Build, aggregate, and validate per-SDD catalogues per ADR 0134");
6
+ catalogue
7
+ .command("build")
8
+ .description("Build catalogues for the current SDD repo from method-defined sources")
9
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
10
+ .option("--out <path>", "Output directory for catalogues/ (defaults to <sdd-path>/catalogues)")
11
+ .option("--strict", "Treat findings as failures (default: only internal FK FAIL exits non-zero)")
12
+ .action(async (opts) => {
13
+ const result = await runCatalogueBuild({
14
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
15
+ ...(opts.out !== undefined ? { outDir: opts.out } : {}),
16
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
17
+ }, (s) => process.stdout.write(s));
18
+ if (result.exitCode !== 0)
19
+ process.exit(result.exitCode);
20
+ });
21
+ catalogue
22
+ .command("aggregate")
23
+ .description("Aggregate sibling SDD catalogues into a single ecosystem catalogue")
24
+ .option("--sdd-path <path>", "Path to the ecosystem-root SDD repo (defaults to cwd)")
25
+ .option("--manifest <path>", "Path to the aggregation manifest (defaults to orchestration/aggregation-manifest.yaml)")
26
+ .option("--out <path>", "Output directory for aggregated catalogues/ (defaults to <sdd-path>/catalogues-aggregated)")
27
+ .option("--strict", "Treat findings as failures")
28
+ .action(async (opts) => {
29
+ const result = await runCatalogueAggregate({
30
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
31
+ ...(opts.manifest !== undefined
32
+ ? { manifestPath: opts.manifest }
33
+ : {}),
34
+ ...(opts.out !== undefined ? { outDir: opts.out } : {}),
35
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
36
+ }, (s) => process.stdout.write(s));
37
+ if (result.exitCode !== 0)
38
+ process.exit(result.exitCode);
39
+ });
40
+ catalogue
41
+ .command("validate")
42
+ .description("Re-run column-shape + FK validation against existing catalogues/ (no rebuild)")
43
+ .option("--sdd-path <path>", "Path to the SDD repo root (defaults to cwd)")
44
+ .option("--strict", "Treat findings as failures")
45
+ .action(async (opts) => {
46
+ const result = await runCatalogueValidate({
47
+ ...(opts.sddPath !== undefined ? { sddPath: opts.sddPath } : {}),
48
+ ...(opts.strict !== undefined ? { strict: opts.strict } : {}),
49
+ }, (s) => process.stdout.write(s));
50
+ if (result.exitCode !== 0)
51
+ process.exit(result.exitCode);
52
+ });
53
+ catalogue
54
+ .command("version")
55
+ .description("Print the catalogue schema version + sdd-cli version pin")
56
+ .action(async () => {
57
+ await runCatalogueVersion((s) => process.stdout.write(s));
58
+ });
59
+ }
60
+ //# sourceMappingURL=catalogue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
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.",
3
+ "version": "0.11.0",
4
+ "description": "Method-layer CLI for SDD repository lifecycle — init, sync, validate, list, plan, generate-claude-md, mcp serve, catalogue {build,aggregate,validate,version}. v0.11.0 ships the canonical catalogue surface per ADR 0134 + schema 2.1.0 (ADR 0136): per-SDD catalogue build covering all four profiles, federation aggregator, validate + version subcommands, and the C4 + persona/journey/product-edge builders that complete Phase 2. v0.10.0 added reverse profile + reverse-baseline support (the fourth distribution baseline), enabling sync against brownfield reverse-SDD corpora alongside platform/app/integration profiles.",
5
5
  "keywords": [
6
6
  "sdd-method",
7
7
  "sdd",
@@ -35,7 +35,7 @@
35
35
  "NOTICE"
36
36
  ],
37
37
  "scripts": {
38
- "build": "tsc",
38
+ "build": "tsc && node scripts/copy-yaml-assets.mjs",
39
39
  "typecheck": "tsc --noEmit",
40
40
  "test": "npm run build && vitest run",
41
41
  "test:watch": "vitest",
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ // Copy YAML asset files from src/ to dist/ preserving relative paths.
3
+ // Run as a postbuild step (tsc doesn't copy non-TS files).
4
+ //
5
+ // Currently the only such asset is src/lib/catalogue/canonical-schema.yaml,
6
+ // vendored from sdd-method per the SCHEMA_COMPAT contract in
7
+ // src/lib/catalogue/schema-compat.ts. Add more YAML assets here as the
8
+ // canonical builder grows.
9
+
10
+ import { mkdir, readdir, copyFile, stat } from "node:fs/promises";
11
+ import { fileURLToPath } from "node:url";
12
+ import { dirname, join, relative } from "node:path";
13
+
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+ const SRC = join(__dirname, "..", "src");
17
+ const DEST = join(__dirname, "..", "dist");
18
+
19
+ async function* walk(dir) {
20
+ for (const entry of await readdir(dir, { withFileTypes: true })) {
21
+ const full = join(dir, entry.name);
22
+ if (entry.isDirectory()) {
23
+ yield* walk(full);
24
+ } else if (entry.name.endsWith(".yaml") || entry.name.endsWith(".yml")) {
25
+ yield full;
26
+ }
27
+ }
28
+ }
29
+
30
+ let copied = 0;
31
+ for await (const srcFile of walk(SRC)) {
32
+ const rel = relative(SRC, srcFile);
33
+ const destFile = join(DEST, rel);
34
+ await mkdir(dirname(destFile), { recursive: true });
35
+ await copyFile(srcFile, destFile);
36
+ copied++;
37
+ }
38
+ console.log(`copy-yaml-assets: ${copied} file(s) copied to dist/`);
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env bash
2
+ # Sync the canonical catalogue-schema.yaml from sdd-method into sdd-cli's
3
+ # vendored copy. Run when sdd-method publishes a new schema_version that
4
+ # sdd-cli should adopt (per SCHEMA_COMPAT range in src/lib/catalogue/schema-compat.ts).
5
+ #
6
+ # Usage:
7
+ # scripts/sync-canonical-schema.sh # sync from default ~/Projects/sdd-method
8
+ # scripts/sync-canonical-schema.sh /path/to/sdd-method # sync from explicit path
9
+ #
10
+ # After syncing, run:
11
+ # npm run build && npm test
12
+ # to verify nothing in the canonical changed in a way SCHEMA_COMPAT can't accept.
13
+
14
+ set -euo pipefail
15
+
16
+ SDD_METHOD_PATH="${1:-$HOME/Projects/sdd-method}"
17
+ SOURCE="$SDD_METHOD_PATH/docs/method/methods/catalogue-schema.yaml"
18
+ DEST="$(dirname "$0")/../src/lib/catalogue/canonical-schema.yaml"
19
+
20
+ if [[ ! -f "$SOURCE" ]]; then
21
+ echo "ERROR: canonical schema not found at $SOURCE" >&2
22
+ echo " Pass the sdd-method repo path as the first argument." >&2
23
+ exit 1
24
+ fi
25
+
26
+ OLD_VERSION=""
27
+ if [[ -f "$DEST" ]]; then
28
+ OLD_VERSION=$(grep -E '^schema_version:' "$DEST" | head -1 | sed -E 's/.*"([^"]+)".*/\1/')
29
+ fi
30
+ NEW_VERSION=$(grep -E '^schema_version:' "$SOURCE" | head -1 | sed -E 's/.*"([^"]+)".*/\1/')
31
+
32
+ cp "$SOURCE" "$DEST"
33
+
34
+ if [[ -n "$OLD_VERSION" && "$OLD_VERSION" != "$NEW_VERSION" ]]; then
35
+ echo "Synced canonical-schema.yaml: $OLD_VERSION -> $NEW_VERSION"
36
+ echo "Check src/lib/catalogue/schema-compat.ts catalogue_schema range covers $NEW_VERSION."
37
+ else
38
+ echo "Synced canonical-schema.yaml @ $NEW_VERSION (unchanged)"
39
+ fi