@sdd-method/sdd-cli 2.4.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/author-program.d.ts.map +1 -1
  2. package/dist/author-program.js +1 -0
  3. package/dist/author-program.js.map +1 -1
  4. package/dist/lib/behaviour-store/archive.d.ts +12 -0
  5. package/dist/lib/behaviour-store/archive.d.ts.map +1 -1
  6. package/dist/lib/behaviour-store/archive.js +13 -0
  7. package/dist/lib/behaviour-store/archive.js.map +1 -1
  8. package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
  9. package/dist/lib/catalogue/aggregate.js +62 -0
  10. package/dist/lib/catalogue/aggregate.js.map +1 -1
  11. package/dist/lib/catalogue/build.d.ts.map +1 -1
  12. package/dist/lib/catalogue/build.js +12 -0
  13. package/dist/lib/catalogue/build.js.map +1 -1
  14. package/dist/lib/catalogue/builders/capability-spec.d.ts.map +1 -1
  15. package/dist/lib/catalogue/builders/capability-spec.js +1 -0
  16. package/dist/lib/catalogue/builders/capability-spec.js.map +1 -1
  17. package/dist/lib/catalogue/builders/feature-grounding.d.ts.map +1 -1
  18. package/dist/lib/catalogue/builders/feature-grounding.js +1 -0
  19. package/dist/lib/catalogue/builders/feature-grounding.js.map +1 -1
  20. package/dist/lib/catalogue/builders/features.d.ts +12 -0
  21. package/dist/lib/catalogue/builders/features.d.ts.map +1 -1
  22. package/dist/lib/catalogue/builders/features.js +23 -2
  23. package/dist/lib/catalogue/builders/features.js.map +1 -1
  24. package/dist/lib/catalogue/builders/journey-requirement.d.ts +22 -0
  25. package/dist/lib/catalogue/builders/journey-requirement.d.ts.map +1 -0
  26. package/dist/lib/catalogue/builders/journey-requirement.js +144 -0
  27. package/dist/lib/catalogue/builders/journey-requirement.js.map +1 -0
  28. package/dist/lib/catalogue/builders/requirements.d.ts +8 -2
  29. package/dist/lib/catalogue/builders/requirements.d.ts.map +1 -1
  30. package/dist/lib/catalogue/builders/requirements.js +43 -16
  31. package/dist/lib/catalogue/builders/requirements.js.map +1 -1
  32. package/dist/lib/catalogue/canonical-schema.yaml +81 -14
  33. package/dist/lib/catalogue/manifest-loader.d.ts +5 -0
  34. package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -1
  35. package/dist/lib/catalogue/manifest-loader.js +13 -0
  36. package/dist/lib/catalogue/manifest-loader.js.map +1 -1
  37. package/dist/lib/catalogue/rubric-coverage-map.yaml +18 -0
  38. package/dist/lib/catalogue/schema-compat.d.ts +1 -1
  39. package/dist/lib/catalogue/schema-compat.js +1 -1
  40. package/dist/lib/intents/format.d.ts +18 -0
  41. package/dist/lib/intents/format.d.ts.map +1 -0
  42. package/dist/lib/intents/format.js +77 -0
  43. package/dist/lib/intents/format.js.map +1 -0
  44. package/dist/lib/intents/migrate.d.ts +44 -0
  45. package/dist/lib/intents/migrate.d.ts.map +1 -0
  46. package/dist/lib/intents/migrate.js +670 -0
  47. package/dist/lib/intents/migrate.js.map +1 -0
  48. package/dist/lib/metamodel/roundtrip-gate.d.ts.map +1 -1
  49. package/dist/lib/metamodel/roundtrip-gate.js +8 -2
  50. package/dist/lib/metamodel/roundtrip-gate.js.map +1 -1
  51. package/dist/lib/metamodel/schema-projection.d.ts.map +1 -1
  52. package/dist/lib/metamodel/schema-projection.js +13 -0
  53. package/dist/lib/metamodel/schema-projection.js.map +1 -1
  54. package/dist/lib/metamodel/tql-subset-parser.d.ts +6 -0
  55. package/dist/lib/metamodel/tql-subset-parser.d.ts.map +1 -1
  56. package/dist/lib/metamodel/tql-subset-parser.js +35 -2
  57. package/dist/lib/metamodel/tql-subset-parser.js.map +1 -1
  58. package/dist/lib/validate/agreement-evidence.d.ts +52 -0
  59. package/dist/lib/validate/agreement-evidence.d.ts.map +1 -0
  60. package/dist/lib/validate/agreement-evidence.js +204 -0
  61. package/dist/lib/validate/agreement-evidence.js.map +1 -0
  62. package/dist/lib/validate/behaviour-store.d.ts +17 -1
  63. package/dist/lib/validate/behaviour-store.d.ts.map +1 -1
  64. package/dist/lib/validate/behaviour-store.js +475 -28
  65. package/dist/lib/validate/behaviour-store.js.map +1 -1
  66. package/dist/lib/validate/dispatch.d.ts.map +1 -1
  67. package/dist/lib/validate/dispatch.js +21 -0
  68. package/dist/lib/validate/dispatch.js.map +1 -1
  69. package/dist/lib/validate/feature-spec-pointers.d.ts +12 -0
  70. package/dist/lib/validate/feature-spec-pointers.d.ts.map +1 -0
  71. package/dist/lib/validate/feature-spec-pointers.js +175 -0
  72. package/dist/lib/validate/feature-spec-pointers.js.map +1 -0
  73. package/dist/lib/validate/intents.d.ts +5 -0
  74. package/dist/lib/validate/intents.d.ts.map +1 -0
  75. package/dist/lib/validate/intents.js +76 -0
  76. package/dist/lib/validate/intents.js.map +1 -0
  77. package/dist/lib/validate/journey-impact.d.ts +10 -0
  78. package/dist/lib/validate/journey-impact.d.ts.map +1 -0
  79. package/dist/lib/validate/journey-impact.js +193 -0
  80. package/dist/lib/validate/journey-impact.js.map +1 -0
  81. package/dist/maintain-version.json +2 -2
  82. package/dist/verbs/migrate.d.ts.map +1 -1
  83. package/dist/verbs/migrate.js +44 -0
  84. package/dist/verbs/migrate.js.map +1 -1
  85. package/dist/verify-version.json +2 -2
  86. package/package.json +1 -1
  87. package/scripts/author-version.json +2 -2
  88. package/scripts/maintain-version.json +2 -2
  89. package/scripts/verify-version.json +2 -2
@@ -0,0 +1,193 @@
1
+ // journey-impact: the journeys a change can break, and whether its proposal names them (M-ADR 0229 §4.5, Proposed).
2
+ // Report only (M-ADR 0229 §4.5, Proposed): every finding is a [WARN] and the check exits 0. Gate 0 carries this report; nothing
3
+ // blocks on it, and the judge does not fail a change for it.
4
+ //
5
+ // For each open change in the behaviour store (openspec/changes/<change>/, not the archive):
6
+ // listed every journey whose journey_requirement rows name a requirement the change's deltas MODIFY, REMOVE
7
+ // or RENAME (by its former name), and every untraced journey (no journey_requirement row) whose
8
+ // journey_feature rows touch a feature the change has a delta for. The population is the catalogue's,
9
+ // never the proposal's.
10
+ // unnamed a listed journey the proposal's `## Affected Journeys` section does not name.
11
+ // unshown a journey named `altered` with nothing to show it: no delta in the change to a feature of kind journey
12
+ // whose id is the journey's id or ends with it (option B), and no task naming it (option A).
13
+ // A proposal line is `- <journey-id>: altered ...` or `- <journey-id>: unaffected, <reason>`; an unaffected line
14
+ // with no reason is reported too.
15
+ //
16
+ // Also reported: a journey citing a requirement of a feature its journey_feature rows do not name (one record or
17
+ // the other is wrong, M-ADR 0229 §4.4, Proposed); and an SDD with catalogued journeys whose manifest declares no journey master and that names no
18
+ // platform it inherits from (an unresolved root, M-ADR 0229 §4.2, Proposed). A member that names its platform inherits the
19
+ // root's declaration, which is checked at the root.
20
+ //
21
+ // Reads the aggregated catalogue (catalogues-aggregated/*.csv) where this SDD has one, since a root's changes can
22
+ // break journeys its members catalogue and only the aggregate joins the two; otherwise the SDD's own catalogues/.
23
+ // Without journey_requirement.csv the catalogue predates schema 4.4.0 and the check is unresolved, not passed. Without a store or open changes it reports [N/A] for the change
24
+ // part, an empty population.
25
+ import { readdir, readFile } from "node:fs/promises";
26
+ import { join } from "node:path";
27
+ import { parseDocument } from "yaml";
28
+ import { parseRequirements, renamedFrom } from "../behaviour-store/archive.js";
29
+ import { parseCatalogueCsv } from "../catalogue/csv-reader.js";
30
+ const CHANGES_DIR = join("openspec", "changes");
31
+ async function readText(p) {
32
+ try {
33
+ return await readFile(p, "utf8");
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ async function subdirs(p) {
40
+ try {
41
+ return (await readdir(p, { withFileTypes: true })).filter((e) => e.isDirectory()).map((e) => e.name).sort();
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ async function catalogueDir(repo) {
48
+ return (await readText(join(repo, "catalogues-aggregated", "user_journeys.csv"))) !== null ? "catalogues-aggregated" : "catalogues";
49
+ }
50
+ async function csv(repo, name, dir = "catalogues") {
51
+ const text = await readText(join(repo, dir, `${name}.csv`));
52
+ return text === null ? null : parseCatalogueCsv(text).rows;
53
+ }
54
+ /** The `## Affected Journeys` section: journey id -> what the proposal says of it. */
55
+ export function parseAffectedJourneys(proposal) {
56
+ const out = new Map();
57
+ let inSection = false;
58
+ for (const line of proposal.split("\n")) {
59
+ const h = /^##\s+(.+?)\s*$/.exec(line);
60
+ if (h) {
61
+ inSection = /^affected journeys$/i.test(h[1].trim());
62
+ continue;
63
+ }
64
+ if (!inSection)
65
+ continue;
66
+ const m = /^\s*[-*]\s+`?([a-z0-9][a-z0-9-]*)`?\s*:\s*(altered|unaffected)?\b[\s,;:.—-]*(.*)$/i.exec(line);
67
+ if (!m)
68
+ continue;
69
+ const verdict = m[2]?.toLowerCase() ?? "other";
70
+ out.set(m[1], { verdict, rest: (m[3] ?? "").trim() });
71
+ }
72
+ return out;
73
+ }
74
+ export async function checkJourneyImpact(repo) {
75
+ const lines = [];
76
+ const warnings = [];
77
+ const dir = await catalogueDir(repo);
78
+ const journeys = await csv(repo, "user_journeys", dir);
79
+ if (journeys === null || journeys.length === 0) {
80
+ return { exitCode: 0, stdout: "[N/A] journey-impact: no catalogued user journeys (catalogues/ or catalogues-aggregated/ user_journeys.csv) in this repository\n" };
81
+ }
82
+ // The journey master (§4.2).
83
+ const manifest = (await readText(join(repo, ".sdd", "sdd-manifest.yaml"))) ?? "";
84
+ let declared = false;
85
+ let platform = "";
86
+ try {
87
+ const m = parseDocument(manifest).toJS();
88
+ declared = typeof m?.journeys?.master === "string";
89
+ platform = String(m?.platform_sdd_id ?? m?.ecosystem_root ?? "");
90
+ }
91
+ catch {
92
+ // an unparseable manifest is the manifest check's to report
93
+ }
94
+ if (declared)
95
+ lines.push("journey master: declared in this SDD's manifest");
96
+ else if (platform)
97
+ lines.push(`journey master: not declared here; inherited from platform ${platform}, where it is checked`);
98
+ else
99
+ warnings.push(`.sdd/sdd-manifest.yaml: ${journeys.length} catalogued journey(s) and no journey master (journeys.master: test-file or store), and no platform to inherit one from: unresolved (M-ADR 0229 §4.2, Proposed)`);
100
+ const jr = await csv(repo, "journey_requirement", dir);
101
+ const jf = (await csv(repo, "journey_feature", dir)) ?? [];
102
+ const featureKinds = new Map(((await csv(repo, "features", dir)) ?? []).map((f) => [f["id"], f["kind"] ?? ""]));
103
+ lines.push(`catalogue: ${dir}/`);
104
+ if (jr === null) {
105
+ warnings.push(`${dir}/journey_requirement.csv: missing, so the catalogue predates schema 4.4.0; rebuild it. The journeys a change can break are unresolved`);
106
+ }
107
+ const byRequirement = new Map();
108
+ const traced = new Set();
109
+ for (const r of jr ?? []) {
110
+ traced.add(r["journey_id"]);
111
+ const s = byRequirement.get(r["requirement_id"]) ?? new Set();
112
+ s.add(r["journey_id"]);
113
+ byRequirement.set(r["requirement_id"], s);
114
+ }
115
+ const untracedByFeature = new Map();
116
+ for (const r of jf) {
117
+ if (traced.has(r["journey_id"]))
118
+ continue;
119
+ const s = untracedByFeature.get(r["feature_id"]) ?? new Set();
120
+ s.add(r["journey_id"]);
121
+ untracedByFeature.set(r["feature_id"], s);
122
+ }
123
+ const touched = new Map();
124
+ for (const r of jf) {
125
+ const s = touched.get(r["journey_id"]) ?? new Set();
126
+ s.add(r["feature_id"]);
127
+ touched.set(r["journey_id"], s);
128
+ }
129
+ const mismatched = new Set();
130
+ for (const r of jr ?? []) {
131
+ const feature = r["requirement_id"].split("::")[0];
132
+ const key = `${r["journey_id"]}|${feature}`;
133
+ if (touched.get(r["journey_id"])?.has(feature) || mismatched.has(key))
134
+ continue;
135
+ mismatched.add(key);
136
+ warnings.push(`journey ${r["journey_id"]} cites requirements of ${feature}, which its journey_feature rows do not name: the journey's related features or its tags are wrong (M-ADR 0229 §4.4, Proposed)`);
137
+ }
138
+ const untracedCount = journeys.filter((j) => !traced.has(j["id"])).length;
139
+ lines.push(`journeys: ${journeys.length} catalogued, ${journeys.length - untracedCount} traced to requirements, ${untracedCount} untraced`);
140
+ const changes = (await subdirs(join(repo, CHANGES_DIR))).filter((c) => c !== "archive");
141
+ if (changes.length === 0)
142
+ lines.push("[N/A] changes: no open changes in openspec/changes/");
143
+ for (const change of changes) {
144
+ const dir = join(repo, CHANGES_DIR, change);
145
+ const listed = new Map(); // journey -> why
146
+ for (const feature of await subdirs(join(dir, "specs"))) {
147
+ const text = (await readText(join(dir, "specs", feature, "spec.md"))) ?? "";
148
+ const targets = new Set();
149
+ for (const r of parseRequirements(text))
150
+ if (r.operation === "MODIFIED" || r.operation === "REMOVED")
151
+ targets.add(r.name);
152
+ for (const from of renamedFrom(text))
153
+ targets.add(from);
154
+ for (const name of targets) {
155
+ for (const j of byRequirement.get(`${feature}::${name}`) ?? [])
156
+ if (!listed.has(j))
157
+ listed.set(j, `cites ${feature}::${name}`);
158
+ }
159
+ for (const j of untracedByFeature.get(feature) ?? [])
160
+ if (!listed.has(j))
161
+ listed.set(j, `untraced, touches ${feature}`);
162
+ }
163
+ if (listed.size === 0) {
164
+ lines.push(`${change}: no journey cites what it changes`);
165
+ continue;
166
+ }
167
+ const proposal = (await readText(join(dir, "proposal.md"))) ?? "";
168
+ const tasks = (await readText(join(dir, "tasks.md"))) ?? "";
169
+ const named = parseAffectedJourneys(proposal);
170
+ const deltaFeatures = new Set(await subdirs(join(dir, "specs")));
171
+ lines.push(`${change}: ${listed.size} journey(s) listed (${[...listed.entries()].map(([j, why]) => `${j}: ${why}`).join("; ")})`);
172
+ for (const [j, why] of listed) {
173
+ const n = named.get(j);
174
+ if (!n || n.verdict === "other") {
175
+ warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is listed (${why}) and the proposal's ## Affected Journeys does not name it as altered or unaffected`);
176
+ continue;
177
+ }
178
+ if (n.verdict === "unaffected" && n.rest === "")
179
+ warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is named unaffected without a reason`);
180
+ if (n.verdict === "altered") {
181
+ const journeyDelta = [...deltaFeatures].some((f) => featureKinds.get(f) === "journey" && (f === j || f.endsWith(`-${j}`)));
182
+ const shown = journeyDelta || tasks.includes(j);
183
+ if (!shown)
184
+ warnings.push(`${CHANGES_DIR}/${change}/proposal.md: journey ${j} is named altered, and the change shows nothing for it: no delta to its journey feature and no task naming it`);
185
+ }
186
+ }
187
+ }
188
+ const body = lines.map((l) => `${l}\n`).join("");
189
+ if (warnings.length === 0)
190
+ return { exitCode: 0, stdout: `journey-impact:\n${body}[PASS] journey-impact: every listed journey is named\n` };
191
+ return { exitCode: 0, stdout: `journey-impact:\n${body}${warnings.map((w) => `[WARN] ${w}\n`).join("")}[WARN] journey-impact: ${warnings.length} finding(s), report only (M-ADR 0229 §4.5, Proposed)\n` };
192
+ }
193
+ //# sourceMappingURL=journey-impact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-impact.js","sourceRoot":"","sources":["../../../src/lib/validate/journey-impact.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "0.10.0",
3
- "built_against_sdd_cli": "2.4.0"
2
+ "version": "0.12.0",
3
+ "built_against_sdd_cli": "3.0.0"
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/verbs/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBtD"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/verbs/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEtD"}
@@ -1,4 +1,5 @@
1
1
  import { resolve } from "node:path";
2
+ import { migrateIntents } from "../lib/intents/migrate.js";
2
3
  import { migrateVocabulary } from "../lib/vocabulary/migrate.js";
3
4
  /**
4
5
  * `migrate vocabulary` (M-ADR 0222 §4.1): rewrite the SDD's own files from the former tool-read values to the
@@ -28,5 +29,48 @@ export function registerMigrate(program) {
28
29
  if (r.rewrites.length > 0)
29
30
  process.exit(1);
30
31
  });
32
+ const many = (v, prev) => [...prev, v];
33
+ migrate
34
+ .command("intents")
35
+ .description("Turn Ideas and Epic Briefs into intents (M-ADR 0227), one per request id: an Idea and its Epic Brief are one " +
36
+ "request at two stages. Rebuilds each intent's \"Where it went\" from evidence (paths the sources cite, SDD files " +
37
+ "and commits naming the id, plan files naming it) and writes the planning state to a tool-neutral work-item " +
38
+ "import file, with a table of old paths to intents for re-pointing citations. Dry run unless --write; never " +
39
+ "overwrites an existing intent")
40
+ .requiredOption("--source <dir>", "a directory of Idea and Epic Brief files, searched recursively (repeatable)", many, [])
41
+ .option("--sdd <dir>", "an SDD searched for evidence and offered as a home; the first is the default home (repeatable; default: the current directory)", many, [])
42
+ .option("--plans <dir>", "a directory of plan files: evidence only, never converted (repeatable)", many, [])
43
+ .option("--idea-map <file>", "the idea map, for status, priority and dependency edges")
44
+ .option("--out <dir>", "where the report, work-items.json and citations.tsv go", "intent-migration")
45
+ .option("--index-threshold <n>", "a file naming more request ids than this is an index, not evidence", "5")
46
+ .option("--home <id=sdd-id>", "a reviewer's home for a request id (repeatable)", many, [])
47
+ .option("--status <id=open|closed>", "a reviewer's status for a request id (repeatable)", many, [])
48
+ .option("--write", "write each intent into the SDD it is placed in, under every --sdd named (default: a dry run that writes them under --out)")
49
+ .action(async (o) => {
50
+ const pairs = (list, name) => new Map(list.map((x) => {
51
+ const [k, v] = x.split("=");
52
+ if (!k || !v)
53
+ throw new Error(`--${name} takes <id>=<value>, not "${x}"`);
54
+ return [k.trim(), v.trim()];
55
+ }));
56
+ const statuses = pairs(o.status, "status");
57
+ for (const [k, v] of statuses)
58
+ if (v !== "open" && v !== "closed")
59
+ throw new Error(`--status ${k}=${v}: the status is open or closed`);
60
+ const r = await migrateIntents({
61
+ sources: o.source,
62
+ sdds: o.sdd.length ? o.sdd : [process.cwd()],
63
+ plans: o.plans,
64
+ ...(o.ideaMap ? { ideaMap: o.ideaMap } : {}),
65
+ out: resolve(o.out),
66
+ write: o.write === true,
67
+ indexThreshold: Number(o.indexThreshold),
68
+ homes: pairs(o.home, "home"),
69
+ statuses: statuses,
70
+ });
71
+ process.stdout.write(`[INFO] migrate intents: ${r.ids} request id(s); ${r.flags.size} flagged; ${r.unrecognised.length} file(s) not read as an Idea or Epic Brief\n` +
72
+ (o.write ? `[INFO] migrate intents: wrote ${r.written.length} intent(s); ${r.skippedExisting.length} not written (a file exists)\n` : "") +
73
+ `[INFO] migrate intents: report, work-items.json and citations.tsv in ${resolve(o.out)}\n`);
74
+ });
31
75
  }
32
76
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/verbs/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,+DAA+D,CAAC,CAAC;IACxH,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,oVAAoV,CACrV;SACA,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QAC1I,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC,CACC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,oDAAoD,CAAC,CAAC,YAAY,wBAAwB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAAI;YAC1K,CAAC,CAAC,8BAA8B,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC,YAAY,eAAe,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAAI,CACxM,CAAC;QACF,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/verbs/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "2.4.0",
3
- "built_against_sdd_cli": "2.4.0"
2
+ "version": "3.0.0",
3
+ "built_against_sdd_cli": "3.0.0"
4
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdd-method/sdd-cli",
3
- "version": "2.4.0",
3
+ "version": "3.0.0",
4
4
  "description": "The full SDD method CLI (sdd-cli): init, sync, validate, catalogue build and aggregate, scaffold, plan, pack build and every other method verb for spec-driven-development repositories. The verify-only, author and maintain personas ship as @sdd-method/verify-cli, @sdd-method/author-cli and @sdd-method/maintain-cli.",
5
5
  "keywords": [
6
6
  "sdd-method",
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "0.9.0",
3
- "built_against_sdd_cli": "2.4.0"
2
+ "version": "0.11.0",
3
+ "built_against_sdd_cli": "3.0.0"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "0.10.0",
3
- "built_against_sdd_cli": "2.4.0"
2
+ "version": "0.12.0",
3
+ "built_against_sdd_cli": "3.0.0"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "2.4.0",
3
- "built_against_sdd_cli": "2.4.0"
2
+ "version": "3.0.0",
3
+ "built_against_sdd_cli": "3.0.0"
4
4
  }