@sdd-method/sdd-cli 0.10.0 → 0.12.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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/catalogue/aggregate.d.ts +39 -0
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -0
- package/dist/lib/catalogue/aggregate.js +344 -0
- package/dist/lib/catalogue/aggregate.js.map +1 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts +25 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.js +111 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -0
- package/dist/lib/catalogue/build.d.ts +42 -0
- package/dist/lib/catalogue/build.d.ts.map +1 -0
- package/dist/lib/catalogue/build.js +373 -0
- package/dist/lib/catalogue/build.js.map +1 -0
- package/dist/lib/catalogue/builders/adr-supersedes.d.ts +14 -0
- package/dist/lib/catalogue/builders/adr-supersedes.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/adr-supersedes.js +62 -0
- package/dist/lib/catalogue/builders/adr-supersedes.js.map +1 -0
- package/dist/lib/catalogue/builders/adrs.d.ts +27 -0
- package/dist/lib/catalogue/builders/adrs.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/adrs.js +191 -0
- package/dist/lib/catalogue/builders/adrs.js.map +1 -0
- package/dist/lib/catalogue/builders/c4-containers.d.ts +16 -0
- package/dist/lib/catalogue/builders/c4-containers.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/c4-containers.js +169 -0
- package/dist/lib/catalogue/builders/c4-containers.js.map +1 -0
- package/dist/lib/catalogue/builders/c4-systems.d.ts +10 -0
- package/dist/lib/catalogue/builders/c4-systems.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/c4-systems.js +99 -0
- package/dist/lib/catalogue/builders/c4-systems.js.map +1 -0
- package/dist/lib/catalogue/builders/capabilities.d.ts +11 -0
- package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/capabilities.js +173 -0
- package/dist/lib/catalogue/builders/capabilities.js.map +1 -0
- package/dist/lib/catalogue/builders/capability-edges.d.ts +27 -0
- package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/capability-edges.js +166 -0
- package/dist/lib/catalogue/builders/capability-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/contracts.d.ts +15 -0
- package/dist/lib/catalogue/builders/contracts.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/contracts.js +153 -0
- package/dist/lib/catalogue/builders/contracts.js.map +1 -0
- package/dist/lib/catalogue/builders/domains.d.ts +10 -0
- package/dist/lib/catalogue/builders/domains.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/domains.js +93 -0
- package/dist/lib/catalogue/builders/domains.js.map +1 -0
- package/dist/lib/catalogue/builders/event-edges.d.ts +20 -0
- package/dist/lib/catalogue/builders/event-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/event-edges.js +112 -0
- package/dist/lib/catalogue/builders/event-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/events.d.ts +26 -0
- package/dist/lib/catalogue/builders/events.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/events.js +99 -0
- package/dist/lib/catalogue/builders/events.js.map +1 -0
- package/dist/lib/catalogue/builders/feature-groups.d.ts +10 -0
- package/dist/lib/catalogue/builders/feature-groups.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/feature-groups.js +118 -0
- package/dist/lib/catalogue/builders/feature-groups.js.map +1 -0
- package/dist/lib/catalogue/builders/features.d.ts +35 -0
- package/dist/lib/catalogue/builders/features.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/features.js +206 -0
- package/dist/lib/catalogue/builders/features.js.map +1 -0
- package/dist/lib/catalogue/builders/glossary-xref.d.ts +11 -0
- package/dist/lib/catalogue/builders/glossary-xref.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/glossary-xref.js +107 -0
- package/dist/lib/catalogue/builders/glossary-xref.js.map +1 -0
- package/dist/lib/catalogue/builders/glossary.d.ts +14 -0
- package/dist/lib/catalogue/builders/glossary.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/glossary.js +150 -0
- package/dist/lib/catalogue/builders/glossary.js.map +1 -0
- package/dist/lib/catalogue/builders/index.d.ts +57 -0
- package/dist/lib/catalogue/builders/index.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/index.js +33 -0
- package/dist/lib/catalogue/builders/index.js.map +1 -0
- package/dist/lib/catalogue/builders/integrations.d.ts +12 -0
- package/dist/lib/catalogue/builders/integrations.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/integrations.js +85 -0
- package/dist/lib/catalogue/builders/integrations.js.map +1 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.d.ts +26 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.js +133 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/personas.d.ts +22 -0
- package/dist/lib/catalogue/builders/personas.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/personas.js +150 -0
- package/dist/lib/catalogue/builders/personas.js.map +1 -0
- package/dist/lib/catalogue/builders/product-edges.d.ts +15 -0
- package/dist/lib/catalogue/builders/product-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/product-edges.js +97 -0
- package/dist/lib/catalogue/builders/product-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/products.d.ts +26 -0
- package/dist/lib/catalogue/builders/products.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/products.js +57 -0
- package/dist/lib/catalogue/builders/products.js.map +1 -0
- package/dist/lib/catalogue/builders/repo-edges.d.ts +18 -0
- package/dist/lib/catalogue/builders/repo-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/repo-edges.js +113 -0
- package/dist/lib/catalogue/builders/repo-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/repositories.d.ts +78 -0
- package/dist/lib/catalogue/builders/repositories.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/repositories.js +204 -0
- package/dist/lib/catalogue/builders/repositories.js.map +1 -0
- package/dist/lib/catalogue/builders/service-contract.d.ts +11 -0
- package/dist/lib/catalogue/builders/service-contract.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/service-contract.js +53 -0
- package/dist/lib/catalogue/builders/service-contract.js.map +1 -0
- package/dist/lib/catalogue/builders/services.d.ts +15 -0
- package/dist/lib/catalogue/builders/services.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/services.js +40 -0
- package/dist/lib/catalogue/builders/services.js.map +1 -0
- package/dist/lib/catalogue/builders/user-journeys.d.ts +24 -0
- package/dist/lib/catalogue/builders/user-journeys.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/user-journeys.js +253 -0
- package/dist/lib/catalogue/builders/user-journeys.js.map +1 -0
- package/dist/lib/catalogue/canonical-schema.yaml +624 -0
- package/dist/lib/catalogue/cli-version.d.ts +10 -0
- package/dist/lib/catalogue/cli-version.d.ts.map +1 -0
- package/dist/lib/catalogue/cli-version.js +10 -0
- package/dist/lib/catalogue/cli-version.js.map +1 -0
- package/dist/lib/catalogue/csv-reader.d.ts +7 -0
- package/dist/lib/catalogue/csv-reader.d.ts.map +1 -0
- package/dist/lib/catalogue/csv-reader.js +97 -0
- package/dist/lib/catalogue/csv-reader.js.map +1 -0
- package/dist/lib/catalogue/csv-writer.d.ts +29 -0
- package/dist/lib/catalogue/csv-writer.d.ts.map +1 -0
- package/dist/lib/catalogue/csv-writer.js +55 -0
- package/dist/lib/catalogue/csv-writer.js.map +1 -0
- package/dist/lib/catalogue/findings.d.ts +27 -0
- package/dist/lib/catalogue/findings.d.ts.map +1 -0
- package/dist/lib/catalogue/findings.js +34 -0
- package/dist/lib/catalogue/findings.js.map +1 -0
- package/dist/lib/catalogue/fk-validator.d.ts +44 -0
- package/dist/lib/catalogue/fk-validator.d.ts.map +1 -0
- package/dist/lib/catalogue/fk-validator.js +90 -0
- package/dist/lib/catalogue/fk-validator.js.map +1 -0
- package/dist/lib/catalogue/index.d.ts +27 -0
- package/dist/lib/catalogue/index.d.ts.map +1 -0
- package/dist/lib/catalogue/index.js +18 -0
- package/dist/lib/catalogue/index.js.map +1 -0
- package/dist/lib/catalogue/manifest-loader.d.ts +47 -0
- package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/manifest-loader.js +161 -0
- package/dist/lib/catalogue/manifest-loader.js.map +1 -0
- package/dist/lib/catalogue/schema-compat.d.ts +47 -0
- package/dist/lib/catalogue/schema-compat.d.ts.map +1 -0
- package/dist/lib/catalogue/schema-compat.js +52 -0
- package/dist/lib/catalogue/schema-compat.js.map +1 -0
- package/dist/lib/catalogue/schema-loader.d.ts +58 -0
- package/dist/lib/catalogue/schema-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/schema-loader.js +86 -0
- package/dist/lib/catalogue/schema-loader.js.map +1 -0
- package/dist/lib/catalogue/traceability-loader.d.ts +56 -0
- package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/traceability-loader.js +217 -0
- package/dist/lib/catalogue/traceability-loader.js.map +1 -0
- package/dist/lib/catalogue/validate.d.ts +16 -0
- package/dist/lib/catalogue/validate.d.ts.map +1 -0
- package/dist/lib/catalogue/validate.js +137 -0
- package/dist/lib/catalogue/validate.js.map +1 -0
- package/dist/lib/catalogue/version.d.ts +3 -0
- package/dist/lib/catalogue/version.d.ts.map +1 -0
- package/dist/lib/catalogue/version.js +18 -0
- package/dist/lib/catalogue/version.js.map +1 -0
- package/dist/lib/init/index.d.ts.map +1 -1
- package/dist/lib/init/index.js +6 -1
- package/dist/lib/init/index.js.map +1 -1
- package/dist/lib/init/integration.d.ts +1 -1
- package/dist/lib/init/integration.d.ts.map +1 -1
- package/dist/lib/init/integration.js +5 -0
- package/dist/lib/init/integration.js.map +1 -1
- package/dist/lib/list/discover.js +8 -1
- package/dist/lib/list/discover.js.map +1 -1
- package/dist/lib/lock-file.d.ts +38 -3
- package/dist/lib/lock-file.d.ts.map +1 -1
- package/dist/lib/lock-file.js +213 -29
- package/dist/lib/lock-file.js.map +1 -1
- package/dist/lib/mcp/build-info.d.ts +1 -1
- package/dist/lib/mcp/build-info.js +1 -1
- package/dist/lib/repo-kind.d.ts +17 -2
- package/dist/lib/repo-kind.d.ts.map +1 -1
- package/dist/lib/repo-kind.js +46 -2
- package/dist/lib/repo-kind.js.map +1 -1
- package/dist/lib/sync/index.d.ts.map +1 -1
- package/dist/lib/sync/index.js +65 -20
- package/dist/lib/sync/index.js.map +1 -1
- package/dist/verbs/catalogue.d.ts +3 -0
- package/dist/verbs/catalogue.d.ts.map +1 -0
- package/dist/verbs/catalogue.js +60 -0
- package/dist/verbs/catalogue.js.map +1 -0
- package/package.json +3 -3
- package/scripts/copy-yaml-assets.mjs +38 -0
- package/scripts/sync-canonical-schema.sh +39 -0
package/dist/lib/sync/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { access, readFile } from "node:fs/promises";
|
|
3
3
|
import { loadBundle } from "../bundle.js";
|
|
4
|
-
import { readLockFile, writeLockFile } from "../lock-file.js";
|
|
5
|
-
import { REPO_KIND_FILE, profileFromBundleName, repoKindFromProfile, writeRepoKind, } from "../repo-kind.js";
|
|
4
|
+
import { findBundle, hasForwardBase, pathToBundleMap, readLockFile, upsertBundle, writeLockFile, } from "../lock-file.js";
|
|
5
|
+
import { REPO_KIND_FILE, isForwardBase, profileFromBundleName, repoKindFromProfile, writeRepoKind, } from "../repo-kind.js";
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
import { copyManagedFiles, removeManagedFiles } from "./apply.js";
|
|
8
8
|
import { PROTECTED_PREFIXES, computeRemovals, findConflicts, findMissingPayloadFiles, findProtectedPaths, } from "./diff.js";
|
|
@@ -41,19 +41,46 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
|
|
|
41
41
|
return { exitCode: 1 };
|
|
42
42
|
}
|
|
43
43
|
const prevLock = await readLockFile(opts.targetRepo);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
// Validate protected prefixes across ALL previously-locked paths.
|
|
45
|
+
if (prevLock) {
|
|
46
|
+
for (const b of prevLock.bundles) {
|
|
47
|
+
const protectedPrev = findProtectedPaths(b.managedPaths);
|
|
48
|
+
if (protectedPrev.length > 0) {
|
|
49
|
+
stdout(fail(`Existing lock file contains protected product-owned path: ${protectedPrev[0]} (bundle: ${b.name})`));
|
|
50
|
+
stdout(fail("Resolve this manually before refreshing the method baseline."));
|
|
51
|
+
return { exitCode: 1 };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Additive bundles require a forward base already in the lock.
|
|
56
|
+
const incomingBundleName = bundle.manifest.bundleName;
|
|
57
|
+
const incomingIsForward = isForwardBase(incomingBundleName);
|
|
58
|
+
if (!incomingIsForward && !hasForwardBase(prevLock, incomingBundleName)) {
|
|
59
|
+
stdout(fail(`${incomingBundleName} is an additive extension. Sync a forward base first.`));
|
|
60
|
+
stdout(fail(`Forward bases: platform-baseline, app-baseline, integration-baseline, reverse-baseline.`));
|
|
49
61
|
return { exitCode: 1 };
|
|
50
62
|
}
|
|
63
|
+
// Cross-bundle ownership: a path managed by another bundle in the
|
|
64
|
+
// lock cannot also be claimed by this bundle.
|
|
65
|
+
const otherBundlePaths = pathToBundleMap(prevLock, incomingBundleName);
|
|
66
|
+
for (const p of bundle.managedPaths) {
|
|
67
|
+
const owner = otherBundlePaths.get(p);
|
|
68
|
+
if (owner !== undefined) {
|
|
69
|
+
stdout(fail(`Path '${p}' is already managed by bundle '${owner}'; cannot also be claimed by '${incomingBundleName}'.`));
|
|
70
|
+
stdout(fail("Method baselines must not overlap. Fix upstream and rebuild."));
|
|
71
|
+
return { exitCode: 1 };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Removals are scoped to THIS bundle's previously-managed paths.
|
|
75
|
+
const prevBundleEntry = findBundle(prevLock, incomingBundleName);
|
|
76
|
+
const prevPaths = prevBundleEntry?.managedPaths ?? [];
|
|
51
77
|
const removals = computeRemovals(prevPaths, bundle.managedPaths, {
|
|
52
78
|
noDelete: !opts.delete,
|
|
53
79
|
});
|
|
80
|
+
stdout(info(`Bundle: ${incomingBundleName} (version: ${bundle.manifest.bundleVersion})`));
|
|
54
81
|
stdout(info(`Incoming managed files: ${bundle.managedPaths.length}`));
|
|
55
82
|
stdout(info(`Conflicts: ${conflicts.length}`));
|
|
56
|
-
stdout(info(`Removals from previous
|
|
83
|
+
stdout(info(`Removals from previous sync of this bundle: ${removals.length}`));
|
|
57
84
|
stdout(info(`Protected ownership prefixes: ${PROTECTED_PREFIXES.join(" ")}`));
|
|
58
85
|
if (opts.dryRun) {
|
|
59
86
|
stdout(info("Dry run enabled. No files modified."));
|
|
@@ -69,10 +96,36 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
|
|
|
69
96
|
}
|
|
70
97
|
return { exitCode: 0 };
|
|
71
98
|
}
|
|
72
|
-
const profile = profileFromBundleName(bundle.manifest.bundleName);
|
|
73
|
-
const repoKind = repoKindFromProfile(profile);
|
|
74
99
|
await copyManagedFiles(bundle.managedPaths, bundle.payloadDir, opts.targetRepo);
|
|
75
100
|
await removeManagedFiles(removals, opts.targetRepo);
|
|
101
|
+
const bundleSha = await sha256File(opts.bundle);
|
|
102
|
+
const newEntry = {
|
|
103
|
+
name: incomingBundleName,
|
|
104
|
+
bundleVersion: bundle.manifest.bundleVersion,
|
|
105
|
+
sourceCommit: bundle.manifest.sourceCommit,
|
|
106
|
+
bundleSha256: bundleSha,
|
|
107
|
+
syncedAtUtc: nowUtcIso(),
|
|
108
|
+
isForwardBase: incomingIsForward,
|
|
109
|
+
managedPaths: [...bundle.managedPaths],
|
|
110
|
+
};
|
|
111
|
+
// Additive layers (e.g. reverse-extension-baseline) own only the
|
|
112
|
+
// reverse-method content. They do NOT set .sdd-repo-kind, refresh
|
|
113
|
+
// .claude/settings.json, or rewrite the CI workflow — the forward
|
|
114
|
+
// base owns those.
|
|
115
|
+
if (!incomingIsForward) {
|
|
116
|
+
await writeLockFile(opts.targetRepo, upsertBundle(prevLock, newEntry));
|
|
117
|
+
stdout(pass(`Method baseline synced to: ${opts.targetRepo}`));
|
|
118
|
+
stdout(info("Updated lock file: method-baseline.lock (lock_version: 2)"));
|
|
119
|
+
stdout(info("Additive layer applied; .sdd-repo-kind unchanged."));
|
|
120
|
+
return { exitCode: 0 };
|
|
121
|
+
}
|
|
122
|
+
// Forward base path: settings, workflow, repo-kind all belong here.
|
|
123
|
+
const profile = profileFromBundleName(incomingBundleName);
|
|
124
|
+
if (!profile) {
|
|
125
|
+
// Should be unreachable: forward bases all map to a profile.
|
|
126
|
+
throw new Error(`Forward-base bundle "${incomingBundleName}" has no profile mapping`);
|
|
127
|
+
}
|
|
128
|
+
const repoKind = repoKindFromProfile(profile);
|
|
76
129
|
await writeRepoKind(opts.targetRepo, repoKind);
|
|
77
130
|
const settingsResult = await syncMethodManagedSettings({
|
|
78
131
|
targetRepo: opts.targetRepo,
|
|
@@ -126,17 +179,9 @@ export async function runSync(opts, stdout = (line) => process.stdout.write(line
|
|
|
126
179
|
if (workflowResult.changed) {
|
|
127
180
|
stdout(info(`Refreshed ${WORKFLOW_REL_PATH}.`));
|
|
128
181
|
}
|
|
129
|
-
|
|
130
|
-
await writeLockFile(opts.targetRepo, {
|
|
131
|
-
methodRepo: "sdd-method",
|
|
132
|
-
bundleVersion: bundle.manifest.bundleVersion,
|
|
133
|
-
sourceCommit: bundle.manifest.sourceCommit,
|
|
134
|
-
bundleSha256: bundleSha,
|
|
135
|
-
syncedAtUtc: nowUtcIso(),
|
|
136
|
-
managedPaths: [...bundle.managedPaths],
|
|
137
|
-
});
|
|
182
|
+
await writeLockFile(opts.targetRepo, upsertBundle(prevLock, newEntry));
|
|
138
183
|
stdout(pass(`Method baseline synced to: ${opts.targetRepo}`));
|
|
139
|
-
stdout(info("Updated lock file: method-baseline.lock"));
|
|
184
|
+
stdout(info("Updated lock file: method-baseline.lock (lock_version: 2)"));
|
|
140
185
|
stdout(info(`Set repo kind marker: ${REPO_KIND_FILE} = ${repoKind}`));
|
|
141
186
|
return { exitCode: 0 };
|
|
142
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/verbs/catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FxD"}
|
|
@@ -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.
|
|
4
|
-
"description": "Method-layer CLI for SDD repository lifecycle — init, sync, validate, list, plan, generate-claude-md, mcp serve. v0.
|
|
3
|
+
"version": "0.12.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.12.0 extends the integration profileType enum to 11 values (per sdd-method ADR 0137 — adds device-platform, oem-platform, fleet-partner, camera-platform, data-aggregator) and fixes the init→sync conflict that aborted bootstrap mid-flight when the scaffold step's seed files collided with the bundle's canonical versions. v0.11.0 shipped 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.",
|
|
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
|