@sdd-method/sdd-cli 1.29.1 → 1.30.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 +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/catalogue/graph-run.d.ts +1 -28
- package/dist/lib/catalogue/graph-run.d.ts.map +1 -1
- package/dist/lib/catalogue/graph-run.js +3 -57
- package/dist/lib/catalogue/graph-run.js.map +1 -1
- package/dist/lib/catalogue/impact-run.d.ts +1 -1
- package/dist/lib/catalogue/impact-run.d.ts.map +1 -1
- package/dist/lib/catalogue/impact-run.js +1 -1
- package/dist/lib/catalogue/impact-run.js.map +1 -1
- package/dist/lib/catalogue/relationship-semantics.d.ts +29 -0
- package/dist/lib/catalogue/relationship-semantics.d.ts.map +1 -0
- package/dist/lib/catalogue/relationship-semantics.js +66 -0
- package/dist/lib/catalogue/relationship-semantics.js.map +1 -0
- package/dist/lib/pack/index.d.ts +1 -9
- package/dist/lib/pack/index.d.ts.map +1 -1
- package/dist/lib/pack/index.js +2 -53
- package/dist/lib/pack/index.js.map +1 -1
- package/dist/lib/pack/log.d.ts +6 -0
- package/dist/lib/pack/log.d.ts.map +1 -0
- package/dist/lib/pack/log.js +18 -0
- package/dist/lib/pack/log.js.map +1 -0
- package/dist/lib/pack/validate.d.ts +10 -0
- package/dist/lib/pack/validate.d.ts.map +1 -0
- package/dist/lib/pack/validate.js +49 -0
- package/dist/lib/pack/validate.js.map +1 -0
- package/dist/lib/snapshot/advance.d.ts +39 -0
- package/dist/lib/snapshot/advance.d.ts.map +1 -0
- package/dist/lib/snapshot/advance.js +253 -0
- package/dist/lib/snapshot/advance.js.map +1 -0
- package/dist/lib/snapshot/catalogue-diff.d.ts +21 -0
- package/dist/lib/snapshot/catalogue-diff.d.ts.map +1 -0
- package/dist/lib/snapshot/catalogue-diff.js +133 -0
- package/dist/lib/snapshot/catalogue-diff.js.map +1 -0
- package/dist/lib/snapshot/diff.d.ts +73 -0
- package/dist/lib/snapshot/diff.d.ts.map +1 -0
- package/dist/lib/snapshot/diff.js +177 -0
- package/dist/lib/snapshot/diff.js.map +1 -0
- package/dist/lib/snapshot/fold.d.ts +14 -0
- package/dist/lib/snapshot/fold.d.ts.map +1 -0
- package/dist/lib/snapshot/fold.js +106 -0
- package/dist/lib/snapshot/fold.js.map +1 -0
- package/dist/lib/snapshot/land.d.ts +21 -0
- package/dist/lib/snapshot/land.d.ts.map +1 -0
- package/dist/lib/snapshot/land.js +160 -0
- package/dist/lib/snapshot/land.js.map +1 -0
- package/dist/lib/snapshot/manifest.d.ts +59 -0
- package/dist/lib/snapshot/manifest.d.ts.map +1 -0
- package/dist/lib/snapshot/manifest.js +152 -0
- package/dist/lib/snapshot/manifest.js.map +1 -0
- package/dist/lib/snapshot/targets.d.ts +26 -0
- package/dist/lib/snapshot/targets.d.ts.map +1 -0
- package/dist/lib/snapshot/targets.js +121 -0
- package/dist/lib/snapshot/targets.js.map +1 -0
- package/dist/lib/snapshot/verify.d.ts +18 -0
- package/dist/lib/snapshot/verify.d.ts.map +1 -0
- package/dist/lib/snapshot/verify.js +82 -0
- package/dist/lib/snapshot/verify.js.map +1 -0
- package/dist/verbs/catalogue-verify.d.ts +6 -0
- package/dist/verbs/catalogue-verify.d.ts.map +1 -0
- package/dist/verbs/catalogue-verify.js +114 -0
- package/dist/verbs/catalogue-verify.js.map +1 -0
- package/dist/verbs/catalogue.d.ts.map +1 -1
- package/dist/verbs/catalogue.js +15 -90
- package/dist/verbs/catalogue.js.map +1 -1
- package/dist/verbs/pack-validate.d.ts +3 -0
- package/dist/verbs/pack-validate.d.ts.map +1 -0
- package/dist/verbs/pack-validate.js +17 -0
- package/dist/verbs/pack-validate.js.map +1 -0
- package/dist/verbs/pack.d.ts.map +1 -1
- package/dist/verbs/pack.js +3 -10
- package/dist/verbs/pack.js.map +1 -1
- package/dist/verbs/snapshot.d.ts +3 -0
- package/dist/verbs/snapshot.d.ts.map +1 -0
- package/dist/verbs/snapshot.js +119 -0
- package/dist/verbs/snapshot.js.map +1 -0
- package/dist/verify-bin.d.ts +3 -0
- package/dist/verify-bin.d.ts.map +1 -0
- package/dist/verify-bin.js +8 -0
- package/dist/verify-bin.js.map +1 -0
- package/dist/verify-program.d.ts +14 -0
- package/dist/verify-program.d.ts.map +1 -0
- package/dist/verify-program.js +115 -0
- package/dist/verify-program.js.map +1 -0
- package/package.json +3 -3
- package/scripts/build-verify-package.mjs +199 -0
- package/scripts/verify-acceptance.sh +178 -0
- package/dist/conformance-bin.d.ts +0 -3
- package/dist/conformance-bin.d.ts.map +0 -1
- package/dist/conformance-bin.js +0 -8
- package/dist/conformance-bin.js.map +0 -1
- package/dist/conformance-program.d.ts +0 -6
- package/dist/conformance-program.d.ts.map +0 -1
- package/dist/conformance-program.js +0 -59
- package/dist/conformance-program.js.map +0 -1
- package/scripts/build-conformance-package.mjs +0 -57
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AAwBpD,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAahE;AAED,wBAAgB,YAAY,IAAI,OAAO,CAqCtC"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { registerPack } from "./verbs/pack.js";
|
|
|
13
13
|
import { registerPlan } from "./verbs/plan.js";
|
|
14
14
|
import { registerRender } from "./verbs/render.js";
|
|
15
15
|
import { registerScaffold } from "./verbs/scaffold.js";
|
|
16
|
+
import { registerSnapshot } from "./verbs/snapshot.js";
|
|
16
17
|
import { registerSync } from "./verbs/sync.js";
|
|
17
18
|
import { registerValidate } from "./verbs/validate.js";
|
|
18
19
|
const SPEC_URL = "https://github.com/tomfosteruk/sdd-method/blob/main/docs/method/cli/sdd-cli-specification.md";
|
|
@@ -59,6 +60,7 @@ export function buildProgram() {
|
|
|
59
60
|
registerRender(program);
|
|
60
61
|
registerScaffold(program);
|
|
61
62
|
registerMetamodel(program);
|
|
63
|
+
registerSnapshot(program);
|
|
62
64
|
for (const { verb, summary } of NOT_YET_IMPLEMENTED) {
|
|
63
65
|
registerNotYetImplemented(program, verb, summary);
|
|
64
66
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,34 +12,7 @@
|
|
|
12
12
|
* Tier is explicit, never inferred, same discipline as every other reader.
|
|
13
13
|
*/
|
|
14
14
|
import { type GraphCounts, type GraphTier } from "./graph-projection.js";
|
|
15
|
-
|
|
16
|
-
* Vendored copy of sdd-method's orchestration/rubric-coverage-map.yaml —
|
|
17
|
-
* byte-identical to the canonical (rubric-coverage-map-drift.test.ts guards
|
|
18
|
-
* it, same one-way contract as canonical-schema.yaml). The build copies it
|
|
19
|
-
* alongside the compiled module via scripts/copy-yaml-assets.mjs.
|
|
20
|
-
*/
|
|
21
|
-
export declare const VENDORED_COVERAGE_MAP_PATH: string;
|
|
22
|
-
/** Impact-flow token (M-ADR 0206 §4.1): which endpoint RECEIVES impact. */
|
|
23
|
-
export type ImpactFlow = "toward-source" | "toward-target" | "both" | "none";
|
|
24
|
-
export interface FlowByColumn {
|
|
25
|
-
readonly column: string;
|
|
26
|
-
readonly values: Readonly<Record<string, ImpactFlow>>;
|
|
27
|
-
}
|
|
28
|
-
export interface RelationshipDecl {
|
|
29
|
-
readonly class: string;
|
|
30
|
-
readonly impactFlow?: ImpactFlow;
|
|
31
|
-
readonly impactFlowBy?: FlowByColumn;
|
|
32
|
-
}
|
|
33
|
-
export interface RelationshipSemantics {
|
|
34
|
-
/** catalogue name -> kind (entity | edge | finding | enum). */
|
|
35
|
-
readonly kinds: ReadonlyMap<string, string>;
|
|
36
|
-
/** edge catalogue name -> its declaration. */
|
|
37
|
-
readonly edges: ReadonlyMap<string, RelationshipDecl>;
|
|
38
|
-
/** "catalogue.column" -> declaration, for entity-carried FKs. */
|
|
39
|
-
readonly entityFks: ReadonlyMap<string, RelationshipDecl>;
|
|
40
|
-
}
|
|
41
|
-
export declare function loadRelationshipSemantics(mapPath?: string): Promise<RelationshipSemantics>;
|
|
42
|
-
export declare function loadCatalogueKinds(mapPath?: string): Promise<Map<string, string>>;
|
|
15
|
+
export * from "./relationship-semantics.js";
|
|
43
16
|
export interface GraphRunInputs {
|
|
44
17
|
/** SDD repo root (defaults to cwd). */
|
|
45
18
|
readonly sddPath?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"graph-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAI/B,cAAc,6BAA6B,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
|
|
@@ -12,67 +12,13 @@
|
|
|
12
12
|
* Tier is explicit, never inferred, same discipline as every other reader.
|
|
13
13
|
*/
|
|
14
14
|
import { existsSync } from "node:fs";
|
|
15
|
-
import {
|
|
16
|
-
import { fileURLToPath } from "node:url";
|
|
15
|
+
import { writeFile } from "node:fs/promises";
|
|
17
16
|
import { join, resolve } from "node:path";
|
|
18
|
-
import { parse as parseYaml } from "yaml";
|
|
19
17
|
import { readCatalogueCsv } from "./csv-reader.js";
|
|
20
18
|
import { loadCanonicalSchema } from "./schema-loader.js";
|
|
21
19
|
import { projectGraph, } from "./graph-projection.js";
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* byte-identical to the canonical (rubric-coverage-map-drift.test.ts guards
|
|
25
|
-
* it, same one-way contract as canonical-schema.yaml). The build copies it
|
|
26
|
-
* alongside the compiled module via scripts/copy-yaml-assets.mjs.
|
|
27
|
-
*/
|
|
28
|
-
export const VENDORED_COVERAGE_MAP_PATH = join(fileURLToPath(new URL(".", import.meta.url)), "rubric-coverage-map.yaml");
|
|
29
|
-
function toDecl(where, e) {
|
|
30
|
-
if (e.class === undefined) {
|
|
31
|
-
throw new Error(`rubric-coverage-map: ${where} has no class declaration (M-ADR 0206)`);
|
|
32
|
-
}
|
|
33
|
-
if ((e.impact_flow === undefined) === (e.impact_flow_by === undefined)) {
|
|
34
|
-
throw new Error(`rubric-coverage-map: ${where} must declare exactly one of impact_flow / impact_flow_by`);
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
class: e.class,
|
|
38
|
-
...(e.impact_flow !== undefined
|
|
39
|
-
? { impactFlow: e.impact_flow }
|
|
40
|
-
: {}),
|
|
41
|
-
...(e.impact_flow_by !== undefined
|
|
42
|
-
? {
|
|
43
|
-
impactFlowBy: {
|
|
44
|
-
column: e.impact_flow_by.column,
|
|
45
|
-
values: e.impact_flow_by.values,
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
: {}),
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export async function loadRelationshipSemantics(mapPath = VENDORED_COVERAGE_MAP_PATH) {
|
|
52
|
-
const raw = parseYaml(await readFile(mapPath, "utf-8"));
|
|
53
|
-
const kinds = new Map();
|
|
54
|
-
const edges = new Map();
|
|
55
|
-
const entityFks = new Map();
|
|
56
|
-
for (const [name, entry] of Object.entries(raw.coverage)) {
|
|
57
|
-
kinds.set(name, entry.kind);
|
|
58
|
-
if (entry.kind === "edge" || entry.kind === "annotation") {
|
|
59
|
-
// an annotation classifies at top level exactly as an edge does (schema 3.9.0)
|
|
60
|
-
edges.set(name, toDecl(`edge ${name}`, entry));
|
|
61
|
-
}
|
|
62
|
-
for (const [col, decl] of Object.entries(entry.relationships ?? {})) {
|
|
63
|
-
entityFks.set(`${name}.${col}`, toDecl(`entity FK ${name}.${col}`, decl));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return { kinds, edges, entityFks };
|
|
67
|
-
}
|
|
68
|
-
export async function loadCatalogueKinds(mapPath = VENDORED_COVERAGE_MAP_PATH) {
|
|
69
|
-
const raw = parseYaml(await readFile(mapPath, "utf-8"));
|
|
70
|
-
const kinds = new Map();
|
|
71
|
-
for (const [name, entry] of Object.entries(raw.coverage)) {
|
|
72
|
-
kinds.set(name, entry.kind);
|
|
73
|
-
}
|
|
74
|
-
return kinds;
|
|
75
|
-
}
|
|
20
|
+
import { loadCatalogueKinds, loadRelationshipSemantics } from "./relationship-semantics.js";
|
|
21
|
+
export * from "./relationship-semantics.js";
|
|
76
22
|
export async function runCatalogueGraph(inputs, write) {
|
|
77
23
|
const sddRoot = resolve(inputs.sddPath ?? process.cwd());
|
|
78
24
|
const dir = resolve(sddRoot, inputs.cataloguesDir ?? "catalogues");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"graph-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/graph-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* "new" row: the query that looks more informative is the query that never
|
|
30
30
|
* terminates. As a bare id-set the closure saturates and stops.
|
|
31
31
|
*/
|
|
32
|
-
import { type ImpactFlow, type RelationshipSemantics } from "./
|
|
32
|
+
import { type ImpactFlow, type RelationshipSemantics } from "./relationship-semantics.js";
|
|
33
33
|
import { type GraphTier } from "./graph-projection.js";
|
|
34
34
|
export interface ImpactEdge {
|
|
35
35
|
readonly source: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"impact-run.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;CAClD;AA6BD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,CAmElB;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,SAAS,eAAe,EAAE,EACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAyFtD"}
|
|
@@ -33,7 +33,7 @@ import { existsSync } from "node:fs";
|
|
|
33
33
|
import { join, resolve } from "node:path";
|
|
34
34
|
import { readCatalogueCsv } from "./csv-reader.js";
|
|
35
35
|
import { loadCanonicalSchema } from "./schema-loader.js";
|
|
36
|
-
import { loadCatalogueKinds, loadRelationshipSemantics, } from "./
|
|
36
|
+
import { loadCatalogueKinds, loadRelationshipSemantics, } from "./relationship-semantics.js";
|
|
37
37
|
import { projectGraph } from "./graph-projection.js";
|
|
38
38
|
function resolveFlow(edge, semantics) {
|
|
39
39
|
const decl = edge.type.includes(".")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAG1B,MAAM,
|
|
1
|
+
{"version":3,"file":"impact-run.js","sourceRoot":"","sources":["../../../src/lib/catalogue/impact-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendored copy of sdd-method's orchestration/rubric-coverage-map.yaml —
|
|
3
|
+
* byte-identical to the canonical (rubric-coverage-map-drift.test.ts guards
|
|
4
|
+
* it, same one-way contract as canonical-schema.yaml). The build copies it
|
|
5
|
+
* alongside the compiled module via scripts/copy-yaml-assets.mjs.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VENDORED_COVERAGE_MAP_PATH: string;
|
|
8
|
+
/** Impact-flow token (M-ADR 0206 §4.1): which endpoint RECEIVES impact. */
|
|
9
|
+
export type ImpactFlow = "toward-source" | "toward-target" | "both" | "none";
|
|
10
|
+
export interface FlowByColumn {
|
|
11
|
+
readonly column: string;
|
|
12
|
+
readonly values: Readonly<Record<string, ImpactFlow>>;
|
|
13
|
+
}
|
|
14
|
+
export interface RelationshipDecl {
|
|
15
|
+
readonly class: string;
|
|
16
|
+
readonly impactFlow?: ImpactFlow;
|
|
17
|
+
readonly impactFlowBy?: FlowByColumn;
|
|
18
|
+
}
|
|
19
|
+
export interface RelationshipSemantics {
|
|
20
|
+
/** catalogue name -> kind (entity | edge | finding | enum). */
|
|
21
|
+
readonly kinds: ReadonlyMap<string, string>;
|
|
22
|
+
/** edge catalogue name -> its declaration. */
|
|
23
|
+
readonly edges: ReadonlyMap<string, RelationshipDecl>;
|
|
24
|
+
/** "catalogue.column" -> declaration, for entity-carried FKs. */
|
|
25
|
+
readonly entityFks: ReadonlyMap<string, RelationshipDecl>;
|
|
26
|
+
}
|
|
27
|
+
export declare function loadRelationshipSemantics(mapPath?: string): Promise<RelationshipSemantics>;
|
|
28
|
+
export declare function loadCatalogueKinds(mapPath?: string): Promise<Map<string, string>>;
|
|
29
|
+
//# sourceMappingURL=relationship-semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-semantics.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/relationship-semantics.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3D;AA6CD,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC,CAkBhC;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,MAAmC,GAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAS9B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Relationship semantics and catalogue kinds, read from the vendored
|
|
2
|
+
// rubric-coverage-map.yaml — READ-ONLY. Split out of `graph-run.ts`, which also
|
|
3
|
+
// holds `runCatalogueGraph`, the verb that writes `<catalogues-dir>-graph.jsonl`
|
|
4
|
+
// by default. `catalogue impact` needs these loaders and nothing that writes,
|
|
5
|
+
// and the verify-only CLI ships `impact` (M-ADR 0212 §4.3b): while they lived in
|
|
6
|
+
// graph-run the writer came along with them, and the package build caught it.
|
|
7
|
+
// `graph-run.ts` re-exports everything here, so existing imports are unchanged.
|
|
8
|
+
import { readFile } from "node:fs/promises";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { parse as parseYaml } from "yaml";
|
|
12
|
+
/**
|
|
13
|
+
* Vendored copy of sdd-method's orchestration/rubric-coverage-map.yaml —
|
|
14
|
+
* byte-identical to the canonical (rubric-coverage-map-drift.test.ts guards
|
|
15
|
+
* it, same one-way contract as canonical-schema.yaml). The build copies it
|
|
16
|
+
* alongside the compiled module via scripts/copy-yaml-assets.mjs.
|
|
17
|
+
*/
|
|
18
|
+
export const VENDORED_COVERAGE_MAP_PATH = join(fileURLToPath(new URL(".", import.meta.url)), "rubric-coverage-map.yaml");
|
|
19
|
+
function toDecl(where, e) {
|
|
20
|
+
if (e.class === undefined) {
|
|
21
|
+
throw new Error(`rubric-coverage-map: ${where} has no class declaration (M-ADR 0206)`);
|
|
22
|
+
}
|
|
23
|
+
if ((e.impact_flow === undefined) === (e.impact_flow_by === undefined)) {
|
|
24
|
+
throw new Error(`rubric-coverage-map: ${where} must declare exactly one of impact_flow / impact_flow_by`);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
class: e.class,
|
|
28
|
+
...(e.impact_flow !== undefined
|
|
29
|
+
? { impactFlow: e.impact_flow }
|
|
30
|
+
: {}),
|
|
31
|
+
...(e.impact_flow_by !== undefined
|
|
32
|
+
? {
|
|
33
|
+
impactFlowBy: {
|
|
34
|
+
column: e.impact_flow_by.column,
|
|
35
|
+
values: e.impact_flow_by.values,
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
: {}),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export async function loadRelationshipSemantics(mapPath = VENDORED_COVERAGE_MAP_PATH) {
|
|
42
|
+
const raw = parseYaml(await readFile(mapPath, "utf-8"));
|
|
43
|
+
const kinds = new Map();
|
|
44
|
+
const edges = new Map();
|
|
45
|
+
const entityFks = new Map();
|
|
46
|
+
for (const [name, entry] of Object.entries(raw.coverage)) {
|
|
47
|
+
kinds.set(name, entry.kind);
|
|
48
|
+
if (entry.kind === "edge" || entry.kind === "annotation") {
|
|
49
|
+
// an annotation classifies at top level exactly as an edge does (schema 3.9.0)
|
|
50
|
+
edges.set(name, toDecl(`edge ${name}`, entry));
|
|
51
|
+
}
|
|
52
|
+
for (const [col, decl] of Object.entries(entry.relationships ?? {})) {
|
|
53
|
+
entityFks.set(`${name}.${col}`, toDecl(`entity FK ${name}.${col}`, decl));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { kinds, edges, entityFks };
|
|
57
|
+
}
|
|
58
|
+
export async function loadCatalogueKinds(mapPath = VENDORED_COVERAGE_MAP_PATH) {
|
|
59
|
+
const raw = parseYaml(await readFile(mapPath, "utf-8"));
|
|
60
|
+
const kinds = new Map();
|
|
61
|
+
for (const [name, entry] of Object.entries(raw.coverage)) {
|
|
62
|
+
kinds.set(name, entry.kind);
|
|
63
|
+
}
|
|
64
|
+
return kinds;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=relationship-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-semantics.js","sourceRoot":"","sources":["../../../src/lib/catalogue/relationship-semantics.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/pack/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type BuildResult } from "./builder.js";
|
|
2
|
-
|
|
2
|
+
export { runPackValidate, type PackValidateOptions, type PackValidateResult, } from "./validate.js";
|
|
3
3
|
/**
|
|
4
4
|
* Entry points for the `sdd-cli pack` verb family. Per ADR 0151
|
|
5
5
|
* + companion plan Phase 3.
|
|
@@ -29,13 +29,5 @@ export interface PackBuildResult {
|
|
|
29
29
|
exitCode: number;
|
|
30
30
|
build?: BuildResult;
|
|
31
31
|
}
|
|
32
|
-
export interface PackValidateOptions {
|
|
33
|
-
seedPath: string;
|
|
34
|
-
}
|
|
35
|
-
export interface PackValidateResult {
|
|
36
|
-
exitCode: number;
|
|
37
|
-
errors: ValidationError[];
|
|
38
|
-
}
|
|
39
32
|
export declare function runPackBuild(opts: PackBuildOptions, stdout?: (s: string) => void): Promise<PackBuildResult>;
|
|
40
|
-
export declare function runPackValidate(opts: PackValidateOptions, stdout?: (s: string) => void): Promise<PackValidateResult>;
|
|
41
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3D,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,eAAe,CAAC,CAuG1B"}
|
package/dist/lib/pack/index.js
CHANGED
|
@@ -2,7 +2,8 @@ import { buildPack } from "./builder.js";
|
|
|
2
2
|
import { validateSeed } from "./schema.js";
|
|
3
3
|
import { loadSeed } from "./seed.js";
|
|
4
4
|
import { getPackageVersion } from "../package-version.js";
|
|
5
|
-
|
|
5
|
+
import { fail, info, pass, section } from "./log.js";
|
|
6
|
+
export { runPackValidate, } from "./validate.js";
|
|
6
7
|
export async function runPackBuild(opts, stdout = (s) => process.stdout.write(s)) {
|
|
7
8
|
stdout(section("Pack build"));
|
|
8
9
|
let seed;
|
|
@@ -83,56 +84,4 @@ export async function runPackBuild(opts, stdout = (s) => process.stdout.write(s)
|
|
|
83
84
|
}
|
|
84
85
|
return { exitCode: 0, build: result };
|
|
85
86
|
}
|
|
86
|
-
export async function runPackValidate(opts, stdout = (s) => process.stdout.write(s)) {
|
|
87
|
-
stdout(section("Pack validate"));
|
|
88
|
-
let seed;
|
|
89
|
-
try {
|
|
90
|
-
seed = await loadSeed(opts.seedPath);
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
stdout(fail(`Seed load failed: ${err.message}`));
|
|
94
|
-
return { exitCode: 1, errors: [{ field: "(load)", message: err.message }] };
|
|
95
|
-
}
|
|
96
|
-
// A seed key this build does not know is REPORTED rather than dropped in silence.
|
|
97
|
-
// Not fatal: an older sdd-cli must still build a seed that declares something newer
|
|
98
|
-
// than itself, exactly as for `.sdd/sdd-manifest.yaml`. Silence here is what let an
|
|
99
|
-
// adopter follow the schema and get a clean validation with no effect.
|
|
100
|
-
if (seed.unknownKeys && seed.unknownKeys.length > 0) {
|
|
101
|
-
stdout(info(`${seed.unknownKeys.length} seed key(s) not understood by sdd-cli ${getPackageVersion()} ` +
|
|
102
|
-
`and therefore IGNORED: ${seed.unknownKeys.join(", ")}. If the seed follows a newer ` +
|
|
103
|
-
`context-pack-seed-schema than this build, upgrade sdd-cli; otherwise remove or correct the key.`));
|
|
104
|
-
}
|
|
105
|
-
const validation = validateSeed(seed);
|
|
106
|
-
if (!validation.ok) {
|
|
107
|
-
stdout(fail("Seed validation failed:"));
|
|
108
|
-
for (const e of validation.errors) {
|
|
109
|
-
stdout(fail(` ${e.field}: ${e.message}`));
|
|
110
|
-
}
|
|
111
|
-
return { exitCode: 1, errors: validation.errors };
|
|
112
|
-
}
|
|
113
|
-
stdout(pass(`Seed valid: ${seed.scope} v${seed.version}`));
|
|
114
|
-
stdout(info(seed.forwardBase
|
|
115
|
-
? `Forward base: ${seed.forwardBase.bundle} >= ${seed.forwardBase.minimumVersion}`
|
|
116
|
-
: "Forward base: none (profile-agnostic pack, ADR 0176 §4.6)"));
|
|
117
|
-
if (seed.scaffoldSourcePaths) {
|
|
118
|
-
stdout(info(`Scaffold-source prefixes: ${seed.scaffoldSourcePaths.join(", ")}`));
|
|
119
|
-
}
|
|
120
|
-
stdout(info(`Managed paths: ${seed.managedPaths.length}`));
|
|
121
|
-
if (seed.requiresPack) {
|
|
122
|
-
stdout(info(`requires_pack: ${seed.requiresPack.name} ${seed.requiresPack.version}`));
|
|
123
|
-
}
|
|
124
|
-
return { exitCode: 0, errors: [] };
|
|
125
|
-
}
|
|
126
|
-
function section(title) {
|
|
127
|
-
return `\n${SECTION_RULE}\n ${title}\n${SECTION_RULE}\n\n`;
|
|
128
|
-
}
|
|
129
|
-
function info(msg) {
|
|
130
|
-
return `[INFO] ${msg}\n`;
|
|
131
|
-
}
|
|
132
|
-
function pass(msg) {
|
|
133
|
-
return `[PASS] ${msg}\n`;
|
|
134
|
-
}
|
|
135
|
-
function fail(msg) {
|
|
136
|
-
return `[FAIL] ${msg}\n`;
|
|
137
|
-
}
|
|
138
87
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAiB,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EACL,eAAe,GAGhB,MAAM,eAAe,CAAC;AAmCvB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAsB,EACtB,SAA8B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9B,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,kFAAkF;IAClF,oFAAoF;IACpF,oFAAoF;IACpF,uEAAuE;IACvE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,CACJ,IAAI,CACF,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,0CAA0C,iBAAiB,EAAE,GAAG;YACxF,0BAA0B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,iGAAiG,CACpG,CACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,CACJ,IAAI,CACF,IAAI,CAAC,WAAW;QACd,CAAC,CAAC,iBAAiB,IAAI,CAAC,WAAW,CAAC,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;QAClF,CAAC,CAAC,2DAA2D,CAChE,CACF,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEpE,+EAA+E;IAC/E,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACtF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CACJ,IAAI,CACF,wBAAwB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7F,CACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,CAAC;YACvB,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI;gBACtC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;aAC9D,CAAC;YACF,GAAG,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,6DAA6D;IAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACnC,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CACJ,IAAI,CACF,0BAA0B,EAAE,CAAC,eAAe,+CAA+C,CAC5F,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CACJ,IAAI,CACF,wCAAwC,EAAE,CAAC,YAAY,OAAO,EAAE,CAAC,eAAe,GAAG;YACjF,6DAA6D,EAAE,CAAC,mBAAmB,CAAC,MAAM,GAAG;YAC7F,8EAA8E;YAC9E,yCAAyC,CAC5C,CACF,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const SECTION_RULE: string;
|
|
2
|
+
export declare function section(title: string): string;
|
|
3
|
+
export declare function info(msg: string): string;
|
|
4
|
+
export declare function pass(msg: string): string;
|
|
5
|
+
export declare function fail(msg: string): string;
|
|
6
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/log.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,QAAiB,CAAC;AAE3C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Output helpers shared by `pack build` and `pack validate`. Split out so
|
|
2
|
+
// `pack validate` can be imported without pulling in the builder — the
|
|
3
|
+
// verify-only CLI ships validation and must not ship the code that writes
|
|
4
|
+
// a pack (M-ADR 0212 §4.3b).
|
|
5
|
+
export const SECTION_RULE = "═".repeat(59);
|
|
6
|
+
export function section(title) {
|
|
7
|
+
return `\n${SECTION_RULE}\n ${title}\n${SECTION_RULE}\n\n`;
|
|
8
|
+
}
|
|
9
|
+
export function info(msg) {
|
|
10
|
+
return `[INFO] ${msg}\n`;
|
|
11
|
+
}
|
|
12
|
+
export function pass(msg) {
|
|
13
|
+
return `[PASS] ${msg}\n`;
|
|
14
|
+
}
|
|
15
|
+
export function fail(msg) {
|
|
16
|
+
return `[FAIL] ${msg}\n`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/lib/pack/log.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,0EAA0E;AAC1E,6BAA6B;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK,YAAY,OAAO,KAAK,KAAK,YAAY,MAAM,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ValidationError } from "./schema.js";
|
|
2
|
+
export interface PackValidateOptions {
|
|
3
|
+
seedPath: string;
|
|
4
|
+
}
|
|
5
|
+
export interface PackValidateResult {
|
|
6
|
+
exitCode: number;
|
|
7
|
+
errors: ValidationError[];
|
|
8
|
+
}
|
|
9
|
+
export declare function runPackValidate(opts: PackValidateOptions, stdout?: (s: string) => void): Promise<PackValidateResult>;
|
|
10
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/lib/pack/validate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAKjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAqC,GAC3D,OAAO,CAAC,kBAAkB,CAAC,CAkD7B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// `pack validate` — reads and checks a context-pack seed; writes nothing.
|
|
2
|
+
// Kept free of any import that reaches `./builder.js`, so that importing it
|
|
3
|
+
// cannot drag pack-building code into a package that must not author
|
|
4
|
+
// (M-ADR 0212 §4.3b). `index.ts` re-exports it, so existing imports are unchanged.
|
|
5
|
+
import { validateSeed } from "./schema.js";
|
|
6
|
+
import { loadSeed } from "./seed.js";
|
|
7
|
+
import { getPackageVersion } from "../package-version.js";
|
|
8
|
+
import { fail, info, pass, section } from "./log.js";
|
|
9
|
+
export async function runPackValidate(opts, stdout = (s) => process.stdout.write(s)) {
|
|
10
|
+
stdout(section("Pack validate"));
|
|
11
|
+
let seed;
|
|
12
|
+
try {
|
|
13
|
+
seed = await loadSeed(opts.seedPath);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
stdout(fail(`Seed load failed: ${err.message}`));
|
|
17
|
+
return { exitCode: 1, errors: [{ field: "(load)", message: err.message }] };
|
|
18
|
+
}
|
|
19
|
+
// A seed key this build does not know is REPORTED rather than dropped in silence.
|
|
20
|
+
// Not fatal: an older sdd-cli must still build a seed that declares something newer
|
|
21
|
+
// than itself, exactly as for `.sdd/sdd-manifest.yaml`. Silence here is what let an
|
|
22
|
+
// adopter follow the schema and get a clean validation with no effect.
|
|
23
|
+
if (seed.unknownKeys && seed.unknownKeys.length > 0) {
|
|
24
|
+
stdout(info(`${seed.unknownKeys.length} seed key(s) not understood by sdd-cli ${getPackageVersion()} ` +
|
|
25
|
+
`and therefore IGNORED: ${seed.unknownKeys.join(", ")}. If the seed follows a newer ` +
|
|
26
|
+
`context-pack-seed-schema than this build, upgrade sdd-cli; otherwise remove or correct the key.`));
|
|
27
|
+
}
|
|
28
|
+
const validation = validateSeed(seed);
|
|
29
|
+
if (!validation.ok) {
|
|
30
|
+
stdout(fail("Seed validation failed:"));
|
|
31
|
+
for (const e of validation.errors) {
|
|
32
|
+
stdout(fail(` ${e.field}: ${e.message}`));
|
|
33
|
+
}
|
|
34
|
+
return { exitCode: 1, errors: validation.errors };
|
|
35
|
+
}
|
|
36
|
+
stdout(pass(`Seed valid: ${seed.scope} v${seed.version}`));
|
|
37
|
+
stdout(info(seed.forwardBase
|
|
38
|
+
? `Forward base: ${seed.forwardBase.bundle} >= ${seed.forwardBase.minimumVersion}`
|
|
39
|
+
: "Forward base: none (profile-agnostic pack, ADR 0176 §4.6)"));
|
|
40
|
+
if (seed.scaffoldSourcePaths) {
|
|
41
|
+
stdout(info(`Scaffold-source prefixes: ${seed.scaffoldSourcePaths.join(", ")}`));
|
|
42
|
+
}
|
|
43
|
+
stdout(info(`Managed paths: ${seed.managedPaths.length}`));
|
|
44
|
+
if (seed.requiresPack) {
|
|
45
|
+
stdout(info(`requires_pack: ${seed.requiresPack.name} ${seed.requiresPack.version}`));
|
|
46
|
+
}
|
|
47
|
+
return { exitCode: 0, errors: [] };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/pack/validate.ts"],"names":[],"mappings":"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"}
|