@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/lock-file.d.ts
CHANGED
|
@@ -1,14 +1,49 @@
|
|
|
1
|
+
import { type BundleName, type RepoKind } from "./repo-kind.js";
|
|
1
2
|
export declare const LOCK_FILE = "method-baseline.lock";
|
|
2
|
-
export
|
|
3
|
-
|
|
3
|
+
export declare const LOCK_VERSION: 2;
|
|
4
|
+
/**
|
|
5
|
+
* One synced bundle (forward base or additive extension). Each lock
|
|
6
|
+
* file carries a list of these — re-syncing one bundle replaces its
|
|
7
|
+
* entry; other bundles' entries are preserved.
|
|
8
|
+
*/
|
|
9
|
+
export interface BundleEntry {
|
|
10
|
+
name: BundleName;
|
|
4
11
|
bundleVersion: string;
|
|
5
12
|
sourceCommit: string;
|
|
6
13
|
bundleSha256: string;
|
|
7
14
|
syncedAtUtc: string;
|
|
15
|
+
isForwardBase: boolean;
|
|
8
16
|
managedPaths: string[];
|
|
9
17
|
}
|
|
18
|
+
export interface LockFile {
|
|
19
|
+
methodRepo: string;
|
|
20
|
+
lockVersion: typeof LOCK_VERSION;
|
|
21
|
+
bundles: BundleEntry[];
|
|
22
|
+
}
|
|
10
23
|
export declare function readLockFile(repoRoot: string): Promise<LockFile | null>;
|
|
11
24
|
export declare function writeLockFile(repoRoot: string, lock: LockFile): Promise<void>;
|
|
12
|
-
export
|
|
25
|
+
export interface ParseLockFileOptions {
|
|
26
|
+
/**
|
|
27
|
+
* If the input is a legacy v1 lock (no `lock_version:` line), this
|
|
28
|
+
* supplies the bundle name to migrate it under. Required for v1
|
|
29
|
+
* input; ignored for v2.
|
|
30
|
+
*/
|
|
31
|
+
legacyBundleName?: BundleName;
|
|
32
|
+
}
|
|
33
|
+
export declare function parseLockFile(raw: string, opts?: ParseLockFileOptions): LockFile;
|
|
13
34
|
export declare function serialiseLockFile(lock: LockFile): string;
|
|
35
|
+
export declare function findBundle(lock: LockFile | null, name: BundleName): BundleEntry | null;
|
|
36
|
+
/**
|
|
37
|
+
* Replace the bundle entry with `entry.name`, or append it. Returns a
|
|
38
|
+
* new LockFile preserving order (existing bundles keep their position;
|
|
39
|
+
* a new bundle goes at the end).
|
|
40
|
+
*/
|
|
41
|
+
export declare function upsertBundle(lock: LockFile | null, entry: BundleEntry): LockFile;
|
|
42
|
+
/**
|
|
43
|
+
* True if any bundle in the lock other than `excluding` is a forward
|
|
44
|
+
* base. Used to enforce requires_forward_base for additive layers.
|
|
45
|
+
*/
|
|
46
|
+
export declare function hasForwardBase(lock: LockFile | null, excluding?: BundleName): boolean;
|
|
47
|
+
export declare function pathToBundleMap(lock: LockFile | null, excluding?: BundleName): Map<string, BundleName>;
|
|
48
|
+
export type { RepoKind };
|
|
14
49
|
//# sourceMappingURL=lock-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-file.d.ts","sourceRoot":"","sources":["../../src/lib/lock-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lock-file.d.ts","sourceRoot":"","sources":["../../src/lib/lock-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,SAAS,yBAAyB,CAAC;AAChD,eAAO,MAAM,YAAY,EAAG,CAAU,CAAC;AAEvC;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,YAAY,CAAC;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAoB7E;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,UAAU,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,oBAAyB,GAC9B,QAAQ,CASV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAqBxD;AAwLD,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,IAAI,EAAE,UAAU,GACf,WAAW,GAAG,IAAI,CAGpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,CAYhF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,SAAS,CAAC,EAAE,UAAU,GACrB,OAAO,CAKT;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,SAAS,CAAC,EAAE,UAAU,GACrB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAQzB;AAGD,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/lib/lock-file.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { bundleNameFromRepoKind, isBundleName, isForwardBase, readRepoKind, } from "./repo-kind.js";
|
|
3
4
|
export const LOCK_FILE = "method-baseline.lock";
|
|
5
|
+
export const LOCK_VERSION = 2;
|
|
4
6
|
export async function readLockFile(repoRoot) {
|
|
5
7
|
let raw;
|
|
6
8
|
try {
|
|
@@ -11,16 +13,165 @@ export async function readLockFile(repoRoot) {
|
|
|
11
13
|
return null;
|
|
12
14
|
throw err;
|
|
13
15
|
}
|
|
14
|
-
|
|
16
|
+
if (isV2(raw))
|
|
17
|
+
return parseLockFile(raw);
|
|
18
|
+
// Legacy v1 lock — auto-migrate by inferring the bundle name from
|
|
19
|
+
// .sdd-repo-kind. Mirrors the bash sync script's migration path.
|
|
20
|
+
const repoKind = await readRepoKind(repoRoot);
|
|
21
|
+
if (!repoKind) {
|
|
22
|
+
throw new Error(`Legacy lock detected but cannot infer bundle name: ${LOCK_FILE} is v1 ` +
|
|
23
|
+
`and .sdd-repo-kind is missing. Set .sdd-repo-kind manually or ` +
|
|
24
|
+
`delete the lock file before re-syncing.`);
|
|
25
|
+
}
|
|
26
|
+
return parseLockFile(raw, { legacyBundleName: bundleNameFromRepoKind(repoKind) });
|
|
15
27
|
}
|
|
16
28
|
export async function writeLockFile(repoRoot, lock) {
|
|
17
29
|
await writeFile(join(repoRoot, LOCK_FILE), serialiseLockFile(lock), "utf8");
|
|
18
30
|
}
|
|
19
|
-
export function parseLockFile(raw) {
|
|
31
|
+
export function parseLockFile(raw, opts = {}) {
|
|
32
|
+
if (isV2(raw))
|
|
33
|
+
return parseV2(raw);
|
|
34
|
+
if (!opts.legacyBundleName) {
|
|
35
|
+
throw new Error(`Cannot parse legacy v1 lock without legacyBundleName option ` +
|
|
36
|
+
`(needed to migrate to v2 shape).`);
|
|
37
|
+
}
|
|
38
|
+
return migrateV1(raw, opts.legacyBundleName);
|
|
39
|
+
}
|
|
40
|
+
export function serialiseLockFile(lock) {
|
|
41
|
+
const lines = [
|
|
42
|
+
`method_repo: ${lock.methodRepo}`,
|
|
43
|
+
`lock_version: ${lock.lockVersion}`,
|
|
44
|
+
"bundles:",
|
|
45
|
+
];
|
|
46
|
+
for (const b of lock.bundles) {
|
|
47
|
+
lines.push(` - name: ${b.name}`, ` bundle_version: "${b.bundleVersion}"`, ` source_commit: "${b.sourceCommit}"`, ` bundle_sha256: "${b.bundleSha256}"`, ` synced_at_utc: "${b.syncedAtUtc}"`, ` is_forward_base: ${b.isForwardBase}`, ` managed_paths:`);
|
|
48
|
+
for (const p of b.managedPaths) {
|
|
49
|
+
lines.push(` - ${p}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return lines.join("\n") + "\n";
|
|
53
|
+
}
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// Internal helpers
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
function isV2(raw) {
|
|
58
|
+
return /^lock_version:/m.test(raw);
|
|
59
|
+
}
|
|
60
|
+
function stripQuotes(value) {
|
|
61
|
+
if (value.length >= 2 && value.startsWith('"') && value.endsWith('"')) {
|
|
62
|
+
return value.slice(1, -1);
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
function parseV2(raw) {
|
|
67
|
+
let methodRepo;
|
|
68
|
+
let lockVersion;
|
|
69
|
+
const bundles = [];
|
|
70
|
+
let inBundles = false;
|
|
71
|
+
let inPaths = false;
|
|
72
|
+
let cur = {
|
|
73
|
+
managedPaths: [],
|
|
74
|
+
};
|
|
75
|
+
const flushBundle = () => {
|
|
76
|
+
if (cur.name === undefined)
|
|
77
|
+
return;
|
|
78
|
+
const required = [
|
|
79
|
+
"name",
|
|
80
|
+
"bundleVersion",
|
|
81
|
+
"sourceCommit",
|
|
82
|
+
"bundleSha256",
|
|
83
|
+
"syncedAtUtc",
|
|
84
|
+
"isForwardBase",
|
|
85
|
+
];
|
|
86
|
+
for (const k of required) {
|
|
87
|
+
if (cur[k] === undefined) {
|
|
88
|
+
throw new Error(`${LOCK_FILE} bundle entry "${cur.name}" missing required key: ${k}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
bundles.push(cur);
|
|
92
|
+
cur = { managedPaths: [] };
|
|
93
|
+
inPaths = false;
|
|
94
|
+
};
|
|
95
|
+
for (const rawLine of raw.split("\n")) {
|
|
96
|
+
const line = rawLine.replace(/\r$/, "");
|
|
97
|
+
if (!inBundles) {
|
|
98
|
+
if (line === "bundles:") {
|
|
99
|
+
inBundles = true;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const top = /^([a-z_][a-z0-9_]*): (.*)$/.exec(line);
|
|
103
|
+
if (top) {
|
|
104
|
+
const [, key, value] = top;
|
|
105
|
+
if (key === "method_repo")
|
|
106
|
+
methodRepo = stripQuotes(value);
|
|
107
|
+
else if (key === "lock_version")
|
|
108
|
+
lockVersion = Number(stripQuotes(value));
|
|
109
|
+
}
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// Inside the bundles block.
|
|
113
|
+
if (line.startsWith(" - name:")) {
|
|
114
|
+
flushBundle();
|
|
115
|
+
const name = stripQuotes(line.slice(" - name:".length).trim());
|
|
116
|
+
if (!isBundleName(name)) {
|
|
117
|
+
throw new Error(`${LOCK_FILE}: unknown bundle name "${name}"`);
|
|
118
|
+
}
|
|
119
|
+
cur.name = name;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (line === " managed_paths:") {
|
|
123
|
+
inPaths = true;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (inPaths && line.startsWith(" - ")) {
|
|
127
|
+
cur.managedPaths.push(line.slice(" - ".length));
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const meta = /^ ([a-z_][a-z0-9_]*): (.*)$/.exec(line);
|
|
131
|
+
if (meta) {
|
|
132
|
+
inPaths = false;
|
|
133
|
+
const [, key, rawValue] = meta;
|
|
134
|
+
const value = stripQuotes(rawValue);
|
|
135
|
+
switch (key) {
|
|
136
|
+
case "bundle_version":
|
|
137
|
+
cur.bundleVersion = value;
|
|
138
|
+
break;
|
|
139
|
+
case "source_commit":
|
|
140
|
+
cur.sourceCommit = value;
|
|
141
|
+
break;
|
|
142
|
+
case "bundle_sha256":
|
|
143
|
+
cur.bundleSha256 = value;
|
|
144
|
+
break;
|
|
145
|
+
case "synced_at_utc":
|
|
146
|
+
cur.syncedAtUtc = value;
|
|
147
|
+
break;
|
|
148
|
+
case "is_forward_base":
|
|
149
|
+
cur.isForwardBase = value === "true";
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
// Top-level scalar after the bundles block ends — e.g. trailing
|
|
155
|
+
// file-level metadata (none today, but tolerated).
|
|
156
|
+
if (line.length > 0 && !line.startsWith(" ") && !line.startsWith("\t")) {
|
|
157
|
+
inBundles = false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
flushBundle();
|
|
161
|
+
if (methodRepo === undefined) {
|
|
162
|
+
throw new Error(`${LOCK_FILE} is missing required key: method_repo`);
|
|
163
|
+
}
|
|
164
|
+
if (lockVersion !== LOCK_VERSION) {
|
|
165
|
+
throw new Error(`${LOCK_FILE} lock_version is ${lockVersion}; expected ${LOCK_VERSION}`);
|
|
166
|
+
}
|
|
167
|
+
return { methodRepo, lockVersion: LOCK_VERSION, bundles };
|
|
168
|
+
}
|
|
169
|
+
function migrateV1(raw, legacyBundleName) {
|
|
20
170
|
const scalars = new Map();
|
|
21
171
|
const managedPaths = [];
|
|
22
172
|
let inManagedList = false;
|
|
23
|
-
for (const
|
|
173
|
+
for (const rawLine of raw.split("\n")) {
|
|
174
|
+
const line = rawLine.replace(/\r$/, "");
|
|
24
175
|
if (inManagedList) {
|
|
25
176
|
if (line.startsWith(" - ")) {
|
|
26
177
|
managedPaths.push(line.slice(4));
|
|
@@ -32,11 +183,9 @@ export function parseLockFile(raw) {
|
|
|
32
183
|
inManagedList = true;
|
|
33
184
|
continue;
|
|
34
185
|
}
|
|
35
|
-
const
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
scalars.set(key, stripQuotes(rawValue));
|
|
39
|
-
}
|
|
186
|
+
const m = /^([a-z_][a-z0-9_]*): (.*)$/.exec(line);
|
|
187
|
+
if (m)
|
|
188
|
+
scalars.set(m[1], stripQuotes(m[2]));
|
|
40
189
|
}
|
|
41
190
|
const required = [
|
|
42
191
|
"method_repo",
|
|
@@ -47,34 +196,69 @@ export function parseLockFile(raw) {
|
|
|
47
196
|
];
|
|
48
197
|
for (const key of required) {
|
|
49
198
|
if (!scalars.has(key)) {
|
|
50
|
-
throw new Error(
|
|
199
|
+
throw new Error(`${LOCK_FILE} (legacy) is missing required key: ${key}`);
|
|
51
200
|
}
|
|
52
201
|
}
|
|
53
202
|
return {
|
|
54
203
|
methodRepo: scalars.get("method_repo"),
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
204
|
+
lockVersion: LOCK_VERSION,
|
|
205
|
+
bundles: [
|
|
206
|
+
{
|
|
207
|
+
name: legacyBundleName,
|
|
208
|
+
bundleVersion: scalars.get("bundle_version"),
|
|
209
|
+
sourceCommit: scalars.get("source_commit"),
|
|
210
|
+
bundleSha256: scalars.get("bundle_sha256"),
|
|
211
|
+
syncedAtUtc: scalars.get("synced_at_utc"),
|
|
212
|
+
isForwardBase: isForwardBase(legacyBundleName),
|
|
213
|
+
managedPaths,
|
|
214
|
+
},
|
|
215
|
+
],
|
|
60
216
|
};
|
|
61
217
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"managed_paths:",
|
|
70
|
-
...lock.managedPaths.map((p) => ` - ${p}`),
|
|
71
|
-
];
|
|
72
|
-
return lines.join("\n") + "\n";
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
// Convenience helpers for sync code.
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
export function findBundle(lock, name) {
|
|
222
|
+
if (!lock)
|
|
223
|
+
return null;
|
|
224
|
+
return lock.bundles.find((b) => b.name === name) ?? null;
|
|
73
225
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
226
|
+
/**
|
|
227
|
+
* Replace the bundle entry with `entry.name`, or append it. Returns a
|
|
228
|
+
* new LockFile preserving order (existing bundles keep their position;
|
|
229
|
+
* a new bundle goes at the end).
|
|
230
|
+
*/
|
|
231
|
+
export function upsertBundle(lock, entry) {
|
|
232
|
+
const base = lock ?? {
|
|
233
|
+
methodRepo: "sdd-method",
|
|
234
|
+
lockVersion: LOCK_VERSION,
|
|
235
|
+
bundles: [],
|
|
236
|
+
};
|
|
237
|
+
const idx = base.bundles.findIndex((b) => b.name === entry.name);
|
|
238
|
+
const bundles = idx >= 0
|
|
239
|
+
? base.bundles.map((b, i) => (i === idx ? entry : b))
|
|
240
|
+
: [...base.bundles, entry];
|
|
241
|
+
return { ...base, bundles };
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* True if any bundle in the lock other than `excluding` is a forward
|
|
245
|
+
* base. Used to enforce requires_forward_base for additive layers.
|
|
246
|
+
*/
|
|
247
|
+
export function hasForwardBase(lock, excluding) {
|
|
248
|
+
if (!lock)
|
|
249
|
+
return false;
|
|
250
|
+
return lock.bundles.some((b) => b.name !== excluding && b.isForwardBase);
|
|
251
|
+
}
|
|
252
|
+
export function pathToBundleMap(lock, excluding) {
|
|
253
|
+
const m = new Map();
|
|
254
|
+
if (!lock)
|
|
255
|
+
return m;
|
|
256
|
+
for (const b of lock.bundles) {
|
|
257
|
+
if (excluding !== undefined && b.name === excluding)
|
|
258
|
+
continue;
|
|
259
|
+
for (const p of b.managedPaths)
|
|
260
|
+
m.set(p, b.name);
|
|
77
261
|
}
|
|
78
|
-
return
|
|
262
|
+
return m;
|
|
79
263
|
}
|
|
80
264
|
//# sourceMappingURL=lock-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-file.js","sourceRoot":"","sources":["../../src/lib/lock-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lock-file.js","sourceRoot":"","sources":["../../src/lib/lock-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,YAAY,GAGb,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAU,CAAC;AAuBvC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,kEAAkE;IAClE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,sDAAsD,SAAS,SAAS;YACtE,gEAAgE;YAChE,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,IAAc;IAEd,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAWD,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,OAA6B,EAAE;IAE/B,IAAI,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC5D,kCAAkC,CACrC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,MAAM,KAAK,GAAa;QACtB,gBAAgB,IAAI,CAAC,UAAU,EAAE;QACjC,iBAAiB,IAAI,CAAC,WAAW,EAAE;QACnC,UAAU;KACX,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,aAAa,CAAC,CAAC,IAAI,EAAE,EACrB,wBAAwB,CAAC,CAAC,aAAa,GAAG,EAC1C,uBAAuB,CAAC,CAAC,YAAY,GAAG,EACxC,uBAAuB,CAAC,CAAC,YAAY,GAAG,EACxC,uBAAuB,CAAC,CAAC,WAAW,GAAG,EACvC,wBAAwB,CAAC,CAAC,aAAa,EAAE,EACzC,oBAAoB,CACrB,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,IAAI,CAAC,GAAW;IACvB,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,UAA8B,CAAC;IACnC,IAAI,WAA+B,CAAC;IACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,GAAG,GAAsD;QAC3D,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QACnC,MAAM,QAAQ,GAA6B;YACzC,MAAM;YACN,eAAe;YACf,cAAc;YACd,cAAc;YACd,aAAa;YACb,eAAe;SAChB,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,kBAAkB,GAAG,CAAC,IAAI,2BAA2B,CAAC,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAkB,CAAC,CAAC;QACjC,GAAG,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAC3B,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,SAAS,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;gBAC3B,IAAI,GAAG,KAAK,aAAa;oBAAE,UAAU,GAAG,WAAW,CAAC,KAAM,CAAC,CAAC;qBACvD,IAAI,GAAG,KAAK,cAAc;oBAAE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,KAAM,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,SAAS;QACX,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,WAAW,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,0BAA0B,IAAI,GAAG,CAAC,CAAC;YACjE,CAAC;YACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;YAChB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,QAAS,CAAC,CAAC;YACrC,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,gBAAgB;oBACnB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC1B,MAAM;gBACR,KAAK,eAAe;oBAClB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;oBACzB,MAAM;gBACR,KAAK,eAAe;oBAClB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;oBACzB,MAAM;gBACR,KAAK,eAAe;oBAClB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACR,KAAK,iBAAiB;oBACpB,GAAG,CAAC,aAAa,GAAG,KAAK,KAAK,MAAM,CAAC;oBACrC,MAAM;YACV,CAAC;YACD,SAAS;QACX,CAAC;QACD,gEAAgE;QAChE,mDAAmD;QACnD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,WAAW,EAAE,CAAC;IAEd,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,uCAAuC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,oBAAoB,WAAW,cAAc,YAAY,EAAE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,gBAA4B;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,eAAe;KACP,CAAC;IACX,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,sCAAsC,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAE;QACvC,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,gBAAgB;gBACtB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAE;gBAC7C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAE;gBAC3C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAE;gBAC3C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAE;gBAC1C,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC;gBAC9C,YAAY;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,MAAM,UAAU,UAAU,CACxB,IAAqB,EACrB,IAAgB;IAEhB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAqB,EAAE,KAAkB;IACpE,MAAM,IAAI,GAAa,IAAI,IAAI;QAC7B,UAAU,EAAE,YAAY;QACxB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,OAAO,GACX,GAAG,IAAI,CAAC;QACN,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAqB,EACrB,SAAsB;IAEtB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,aAAa,CAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAqB,EACrB,SAAsB;IAEtB,MAAM,CAAC,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC9D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* released; Phase 6 of the MCP plan may swap this for a generated file
|
|
4
4
|
* populated by `npm version`.
|
|
5
5
|
*/
|
|
6
|
-
export declare const SERVER_VERSION = "0.
|
|
6
|
+
export declare const SERVER_VERSION = "0.11.0";
|
|
7
7
|
export declare const DISTRIBUTION = "sdd-method";
|
|
8
8
|
export declare const MCP_PROTOCOL_SPEC_VERSION = "2025-06-18";
|
|
9
9
|
//# sourceMappingURL=build-info.d.ts.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* populated by `npm version`.
|
|
5
5
|
*/
|
|
6
6
|
// Mirror of package.json version — bump in lockstep on release.
|
|
7
|
-
export const SERVER_VERSION = "0.
|
|
7
|
+
export const SERVER_VERSION = "0.11.0";
|
|
8
8
|
export const DISTRIBUTION = "sdd-method";
|
|
9
9
|
export const MCP_PROTOCOL_SPEC_VERSION = "2025-06-18";
|
|
10
10
|
//# sourceMappingURL=build-info.js.map
|
package/dist/lib/repo-kind.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type Profile = "platform" | "application" | "integration" | "reverse";
|
|
2
2
|
export type RepoKind = "platform-product" | "application-product" | "integration-product" | "reverse-corpus";
|
|
3
|
-
export type BundleName = "platform-baseline" | "app-baseline" | "integration-baseline" | "reverse-baseline";
|
|
3
|
+
export type BundleName = "platform-baseline" | "app-baseline" | "integration-baseline" | "reverse-baseline" | "reverse-extension-baseline";
|
|
4
4
|
export declare const REPO_KIND_FILE = ".sdd-repo-kind";
|
|
5
5
|
/**
|
|
6
6
|
* Legacy marker filename from the pre-rebrand era. Read-only fallback during
|
|
@@ -11,8 +11,23 @@ export declare const REPO_KIND_FILE = ".sdd-repo-kind";
|
|
|
11
11
|
export declare const LEGACY_REPO_KIND_FILE = ".iteraitive-repo-kind";
|
|
12
12
|
export declare function profileFromRepoKind(kind: RepoKind): Profile;
|
|
13
13
|
export declare function repoKindFromProfile(profile: Profile): RepoKind;
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Returns the profile a bundle authoritatively claims, or null for
|
|
16
|
+
* additive bundles that don't claim a profile of their own.
|
|
17
|
+
*/
|
|
18
|
+
export declare function profileFromBundleName(name: BundleName): Profile | null;
|
|
15
19
|
export declare function bundleNameFromProfile(profile: Profile): BundleName;
|
|
20
|
+
/**
|
|
21
|
+
* Forward-base bundles set `.sdd-repo-kind` and qualify as the base
|
|
22
|
+
* layer that additive extensions compose on top of. Additive bundles
|
|
23
|
+
* (e.g. `reverse-extension-baseline`) return false.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isForwardBase(name: BundleName): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Maps repo-kind → forward-base bundle name. Used when migrating a
|
|
28
|
+
* legacy v1 lock file (which doesn't record bundle name) to v2.
|
|
29
|
+
*/
|
|
30
|
+
export declare function bundleNameFromRepoKind(kind: RepoKind): BundleName;
|
|
16
31
|
export declare function isRepoKind(value: string): value is RepoKind;
|
|
17
32
|
export declare function isBundleName(value: string): value is BundleName;
|
|
18
33
|
export declare function readRepoKind(repoRoot: string): Promise<RepoKind | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-kind.d.ts","sourceRoot":"","sources":["../../src/lib/repo-kind.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;AAE7E,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"repo-kind.d.ts","sourceRoot":"","sources":["../../src/lib/repo-kind.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;AAE7E,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,cAAc,GACd,sBAAsB,GACtB,kBAAkB,GAClB,4BAA4B,CAAC;AAgBjC,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAmC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAE9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAElE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAEjE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAE3D;AAUD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAoB7E;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
package/dist/lib/repo-kind.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Forward-base bundles set `.sdd-repo-kind` and qualify as the base
|
|
5
|
+
* layer that additive extensions can compose on top of (per ADR 0135).
|
|
6
|
+
* The legacy self-contained `reverse-baseline` is retained as a
|
|
7
|
+
* forward base for compat with adopters who haven't migrated to the
|
|
8
|
+
* `reverse-extension-baseline` additive shape yet.
|
|
9
|
+
*/
|
|
10
|
+
const FORWARD_BASE_BUNDLES = new Set([
|
|
11
|
+
"platform-baseline",
|
|
12
|
+
"app-baseline",
|
|
13
|
+
"integration-baseline",
|
|
14
|
+
"reverse-baseline",
|
|
15
|
+
]);
|
|
3
16
|
export const REPO_KIND_FILE = ".sdd-repo-kind";
|
|
4
17
|
/**
|
|
5
18
|
* Legacy marker filename from the pre-rebrand era. Read-only fallback during
|
|
@@ -20,6 +33,11 @@ const REPO_KIND_BY_PROFILE = {
|
|
|
20
33
|
integration: "integration-product",
|
|
21
34
|
reverse: "reverse-corpus",
|
|
22
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Forward-base bundles map 1:1 to a profile. Additive bundles
|
|
38
|
+
* (`reverse-extension-baseline`) have no profile of their own — they
|
|
39
|
+
* compose on top of whatever forward base is already locked.
|
|
40
|
+
*/
|
|
23
41
|
const PROFILE_BY_BUNDLE_NAME = {
|
|
24
42
|
"platform-baseline": "platform",
|
|
25
43
|
"app-baseline": "application",
|
|
@@ -38,17 +56,43 @@ export function profileFromRepoKind(kind) {
|
|
|
38
56
|
export function repoKindFromProfile(profile) {
|
|
39
57
|
return REPO_KIND_BY_PROFILE[profile];
|
|
40
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns the profile a bundle authoritatively claims, or null for
|
|
61
|
+
* additive bundles that don't claim a profile of their own.
|
|
62
|
+
*/
|
|
41
63
|
export function profileFromBundleName(name) {
|
|
42
|
-
return PROFILE_BY_BUNDLE_NAME[name];
|
|
64
|
+
return PROFILE_BY_BUNDLE_NAME[name] ?? null;
|
|
43
65
|
}
|
|
44
66
|
export function bundleNameFromProfile(profile) {
|
|
45
67
|
return BUNDLE_NAME_BY_PROFILE[profile];
|
|
46
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Forward-base bundles set `.sdd-repo-kind` and qualify as the base
|
|
71
|
+
* layer that additive extensions compose on top of. Additive bundles
|
|
72
|
+
* (e.g. `reverse-extension-baseline`) return false.
|
|
73
|
+
*/
|
|
74
|
+
export function isForwardBase(name) {
|
|
75
|
+
return FORWARD_BASE_BUNDLES.has(name);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Maps repo-kind → forward-base bundle name. Used when migrating a
|
|
79
|
+
* legacy v1 lock file (which doesn't record bundle name) to v2.
|
|
80
|
+
*/
|
|
81
|
+
export function bundleNameFromRepoKind(kind) {
|
|
82
|
+
return BUNDLE_NAME_BY_PROFILE[PROFILE_BY_REPO_KIND[kind]];
|
|
83
|
+
}
|
|
47
84
|
export function isRepoKind(value) {
|
|
48
85
|
return value in PROFILE_BY_REPO_KIND;
|
|
49
86
|
}
|
|
87
|
+
const ALL_BUNDLE_NAMES = new Set([
|
|
88
|
+
"platform-baseline",
|
|
89
|
+
"app-baseline",
|
|
90
|
+
"integration-baseline",
|
|
91
|
+
"reverse-baseline",
|
|
92
|
+
"reverse-extension-baseline",
|
|
93
|
+
]);
|
|
50
94
|
export function isBundleName(value) {
|
|
51
|
-
return value
|
|
95
|
+
return ALL_BUNDLE_NAMES.has(value);
|
|
52
96
|
}
|
|
53
97
|
export async function readRepoKind(repoRoot) {
|
|
54
98
|
// Canonical first; fall back to legacy marker during the rebrand transition.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-kind.js","sourceRoot":"","sources":["../../src/lib/repo-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"repo-kind.js","sourceRoot":"","sources":["../../src/lib/repo-kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/sync/index.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA2C,GACpE,OAAO,CAAC,UAAU,CAAC,CAmQrB"}
|