domain-knowledge-kit 0.2.8 → 0.2.10

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 (40) hide show
  1. package/README.md +34 -139
  2. package/dist/cli.js +10 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/features/audit/commands/stats.d.ts +3 -0
  5. package/dist/features/audit/commands/stats.d.ts.map +1 -0
  6. package/dist/features/audit/commands/stats.js +90 -0
  7. package/dist/features/audit/commands/stats.js.map +1 -0
  8. package/dist/features/pipeline/commands/validate.d.ts.map +1 -1
  9. package/dist/features/pipeline/commands/validate.js +32 -13
  10. package/dist/features/pipeline/commands/validate.js.map +1 -1
  11. package/dist/features/query/commands/graph.d.ts +3 -0
  12. package/dist/features/query/commands/graph.d.ts.map +1 -0
  13. package/dist/features/query/commands/graph.js +86 -0
  14. package/dist/features/query/commands/graph.js.map +1 -0
  15. package/dist/features/query/commands/summary.d.ts +7 -0
  16. package/dist/features/query/commands/summary.d.ts.map +1 -0
  17. package/dist/features/query/commands/summary.js +43 -0
  18. package/dist/features/query/commands/summary.js.map +1 -0
  19. package/dist/features/refactor/commands/rename.d.ts +3 -0
  20. package/dist/features/refactor/commands/rename.d.ts.map +1 -0
  21. package/dist/features/refactor/commands/rename.js +152 -0
  22. package/dist/features/refactor/commands/rename.js.map +1 -0
  23. package/dist/features/refactor/commands/rm.d.ts +3 -0
  24. package/dist/features/refactor/commands/rm.d.ts.map +1 -0
  25. package/dist/features/refactor/commands/rm.js +93 -0
  26. package/dist/features/refactor/commands/rm.js.map +1 -0
  27. package/dist/features/scaffold/commands/add-item.d.ts +11 -0
  28. package/dist/features/scaffold/commands/add-item.d.ts.map +1 -1
  29. package/dist/features/scaffold/commands/add-item.js +119 -23
  30. package/dist/features/scaffold/commands/add-item.js.map +1 -1
  31. package/dist/features/scaffold/commands/new-adr.d.ts.map +1 -1
  32. package/dist/features/scaffold/commands/new-adr.js +19 -2
  33. package/dist/features/scaffold/commands/new-adr.js.map +1 -1
  34. package/dist/features/scaffold/commands/new-context.d.ts.map +1 -1
  35. package/dist/features/scaffold/commands/new-context.js +10 -0
  36. package/dist/features/scaffold/commands/new-context.js.map +1 -1
  37. package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
  38. package/dist/features/scaffold/commands/new-domain.js +9 -0
  39. package/dist/features/scaffold/commands/new-domain.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,152 @@
1
+ import { existsSync, readFileSync, renameSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { loadDomainModel } from "../../../shared/loader.js";
4
+ import { contextsDir, adrDir, indexFile } from "../../../shared/paths.js";
5
+ import { DomainGraph } from "../../../shared/graph.js";
6
+ function rewriteReferences(filePath, oldId, newId, showDiff = false) {
7
+ if (!existsSync(filePath))
8
+ return;
9
+ const content = readFileSync(filePath, "utf-8");
10
+ // Simple regex replace for the ID string. This handles most cases
11
+ // (e.g. lists of references) without breaking YAML formatting.
12
+ // We use word boundaries to avoid partial matches.
13
+ // Exception: ID contains dot, so we need a broader boundary match
14
+ const regex = new RegExp(`\\b${oldId.replace(/\./g, '\\.')}\\b`, 'g');
15
+ if (regex.test(content)) {
16
+ const newContent = content.replace(regex, newId);
17
+ writeFileSync(filePath, newContent, "utf-8");
18
+ if (showDiff) {
19
+ console.log(`\n--- a/${filePath}\n+++ b/${filePath}`);
20
+ const oLines = content.split('\n');
21
+ const nLines = newContent.split('\n');
22
+ for (let i = 0; i < oLines.length; i++) {
23
+ if (oLines[i] !== nLines[i]) {
24
+ console.log(`- ${oLines[i]}`);
25
+ console.log(`+ ${nLines[i]}`);
26
+ }
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+ export function registerRename(program) {
34
+ program
35
+ .command("rename <old-id> <new-id>")
36
+ .description("Rename a domain item and update all references to it")
37
+ .option("--diff", "Output a diff representation of the resulting changes")
38
+ .option("-r, --root <path>", "Override repository root")
39
+ .action((oldId, newId, opts) => {
40
+ // Validation format
41
+ if (!oldId.includes(".") || !newId.includes(".")) {
42
+ console.error("IDs must be scoped (e.g. 'ordering.OrderPlaced').");
43
+ process.exit(1);
44
+ }
45
+ const [oldCtx, oldName] = oldId.split(".");
46
+ const [newCtx, newName] = newId.split(".");
47
+ if (oldCtx !== newCtx) {
48
+ console.error("Cross-context renaming is not supported by this command.");
49
+ process.exit(1);
50
+ }
51
+ const model = loadDomainModel({ root: opts.root });
52
+ const graph = DomainGraph.from(model);
53
+ if (!graph.hasNode(oldId)) {
54
+ console.error(`Item '${oldId}' not found.`);
55
+ process.exit(1);
56
+ }
57
+ if (graph.hasNode(newId)) {
58
+ console.error(`Status check: Target ID '${newId}' already exists.`);
59
+ process.exit(1);
60
+ }
61
+ const node = graph.nodes.get(oldId);
62
+ // Cannot rename contexts or flow easily safely right now with simple regex
63
+ if (node.kind === "context" || node.kind === "flow" || node.kind === "actor" || node.kind === "adr") {
64
+ console.error(`Rename target must be a domain item, got kind: ${node.kind}.`);
65
+ process.exit(1);
66
+ }
67
+ console.log(`Renaming ${node.kind} '${oldId}' to '${newId}'...`);
68
+ // Find items that reference this
69
+ const dependents = new Set();
70
+ for (const edge of graph.edges) {
71
+ if (edge.to === oldId && edge.label !== "contains") {
72
+ dependents.add(edge.from);
73
+ }
74
+ }
75
+ let updatedFiles = 0;
76
+ // 1. Rewrite references in dependent domain items
77
+ for (const depId of dependents) {
78
+ const depNode = graph.nodes.get(depId);
79
+ if (depNode.kind === "adr") {
80
+ const adrPath = join(adrDir(opts.root), `${depNode.name}.md`);
81
+ if (rewriteReferences(adrPath, oldId, newId, opts.diff))
82
+ updatedFiles++;
83
+ continue;
84
+ }
85
+ if (depNode.kind === "flow") {
86
+ const domIdxPath = indexFile(opts.root);
87
+ if (rewriteReferences(domIdxPath, oldId, newId, opts.diff))
88
+ updatedFiles++;
89
+ continue;
90
+ }
91
+ if (depNode.kind === "actor") {
92
+ // Actor file is single
93
+ continue; // Actor doesn't reference items, items reference actors
94
+ }
95
+ // General domain item
96
+ if (depNode.context) {
97
+ const ctxDir = join(contextsDir(opts.root), depNode.context);
98
+ // We don't know the exact file without scanning or mapping kinds to dirs.
99
+ // So we just map the kind backwards to the file path.
100
+ const kindToDir = {
101
+ event: "events", command: "commands", aggregate: "aggregates",
102
+ policy: "policies", read_model: "read-models"
103
+ };
104
+ if (depNode.kind === "glossary") {
105
+ const metaPath = join(ctxDir, "context.yml");
106
+ if (rewriteReferences(metaPath, oldId, newId, opts.diff))
107
+ updatedFiles++;
108
+ }
109
+ else if (kindToDir[depNode.kind]) {
110
+ const itemPath = join(ctxDir, kindToDir[depNode.kind], `${depNode.name}.yml`);
111
+ if (rewriteReferences(itemPath, oldId, newId, opts.diff))
112
+ updatedFiles++;
113
+ }
114
+ }
115
+ }
116
+ // 2. Rename the file itself and modify its internal name property
117
+ const ctxDir = join(contextsDir(opts.root), oldCtx);
118
+ const kindToDir = {
119
+ event: "events", command: "commands", aggregate: "aggregates",
120
+ policy: "policies", read_model: "read-models"
121
+ };
122
+ if (node.kind === "glossary") {
123
+ const metaPath = join(ctxDir, "context.yml");
124
+ if (rewriteReferences(metaPath, oldName, newName, opts.diff))
125
+ updatedFiles++;
126
+ }
127
+ else {
128
+ const typeDir = kindToDir[node.kind];
129
+ const oldPath = join(ctxDir, typeDir, `${oldName}.yml`);
130
+ const newPath = join(ctxDir, typeDir, `${newName}.yml`);
131
+ // Rewrite inner name property
132
+ const content = readFileSync(oldPath, "utf-8");
133
+ const newContent = content.replace(/^name:\s*"?.*"?\s*$/m, `name: ${newName}`);
134
+ writeFileSync(oldPath, newContent, "utf-8");
135
+ if (opts.diff) {
136
+ console.log(`\n--- a/${oldPath}\n+++ b/${newPath}`);
137
+ const oLines = content.split('\n');
138
+ const nLines = newContent.split('\n');
139
+ for (let i = 0; i < oLines.length; i++) {
140
+ if (oLines[i] !== nLines[i]) {
141
+ console.log(`- ${oLines[i]}`);
142
+ console.log(`+ ${nLines[i]}`);
143
+ }
144
+ }
145
+ }
146
+ renameSync(oldPath, newPath);
147
+ updatedFiles++;
148
+ }
149
+ console.log(`Successfully renamed to '${newId}'. Updated ${updatedFiles} configurations.`);
150
+ });
151
+ }
152
+ //# sourceMappingURL=rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rename.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command as Cmd } from "commander";
2
+ export declare function registerRm(program: Cmd): void;
3
+ //# sourceMappingURL=rm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAOhD,wBAAgB,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAsG7C"}
@@ -0,0 +1,93 @@
1
+ import { existsSync, rmSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { loadDomainModel } from "../../../shared/loader.js";
4
+ import { contextsDir } from "../../../shared/paths.js";
5
+ import { DomainGraph } from "../../../shared/graph.js";
6
+ export function registerRm(program) {
7
+ program
8
+ .command("rm <id>")
9
+ .alias("remove")
10
+ .alias("delete")
11
+ .description("Remove a domain item securely without dangling references")
12
+ .option("--diff", "Output a diff representation of the resulting changes")
13
+ .option("-f, --force", "Force removal even if there are dependents")
14
+ .option("-r, --root <path>", "Override repository root")
15
+ .action((id, opts) => {
16
+ // Validation format
17
+ if (!id.includes(".")) {
18
+ console.error("ID must be scoped (e.g. 'ordering.OrderPlaced').");
19
+ process.exit(1);
20
+ }
21
+ const [ctx, name] = id.split(".");
22
+ const model = loadDomainModel({ root: opts.root });
23
+ const graph = DomainGraph.from(model);
24
+ if (!graph.hasNode(id)) {
25
+ console.error(`Item '${id}' not found.`);
26
+ process.exit(1);
27
+ }
28
+ const node = graph.nodes.get(id);
29
+ // Cannot remove contexts or flow easily right now
30
+ if (node.kind === "context" || node.kind === "flow" || node.kind === "actor" || node.kind === "adr") {
31
+ console.error(`Remove target must be a domain item, got kind: ${node.kind}.`);
32
+ process.exit(1);
33
+ }
34
+ // Find items that reference this
35
+ const dependents = new Set();
36
+ for (const edge of graph.edges) {
37
+ // If another node points TO this node, it's a dependent.
38
+ // Note: "contains" is context -> item, not a real dependency preventing removal
39
+ // "emits" could mean Event -> Aggregate
40
+ if (edge.to === id && edge.label !== "contains") {
41
+ dependents.add(edge.from);
42
+ }
43
+ // Some edges go FROM the node being deleted TO the dependent,
44
+ // e.g. Event --raised_by--> Aggregate. This is fine, deleting the event just removes the capability.
45
+ // But if something subscribes TO the event, that's bad.
46
+ }
47
+ if (dependents.size > 0 && !opts.force) {
48
+ console.error(`Cannot remove '${id}'. It is referenced by:`);
49
+ for (const dep of dependents) {
50
+ console.error(` - ${dep}`);
51
+ }
52
+ console.error(`\nUse --force to override.`);
53
+ process.exit(1);
54
+ }
55
+ if (dependents.size > 0 && opts.force) {
56
+ console.warn(`Warning: Removed '${id}' despite ${dependents.size} dependents.`);
57
+ }
58
+ // Remove the file itself
59
+ const ctxDir = join(contextsDir(opts.root), ctx);
60
+ const kindToDir = {
61
+ event: "events", command: "commands", aggregate: "aggregates",
62
+ policy: "policies", read_model: "read-models"
63
+ };
64
+ if (node.kind === "glossary") {
65
+ const metaPath = join(ctxDir, "context.yml");
66
+ const content = readFileSync(metaPath, "utf-8");
67
+ // Minimalist glossary removal logic
68
+ const lines = content.split("\n");
69
+ const newLines = lines.filter(line => !line.includes(`term: ${name}`));
70
+ writeFileSync(metaPath, newLines.join("\n"), "utf-8");
71
+ if (opts.diff) {
72
+ console.log(`\n--- a/${metaPath}\n+++ b/${metaPath}`);
73
+ for (const line of lines) {
74
+ if (line.includes(`term: ${name}`))
75
+ console.log(`- ${line}`);
76
+ }
77
+ }
78
+ }
79
+ else {
80
+ const typeDir = kindToDir[node.kind];
81
+ const itemPath = join(ctxDir, typeDir, `${name}.yml`);
82
+ if (existsSync(itemPath)) {
83
+ if (opts.diff) {
84
+ console.log(`\n--- a/${itemPath}\n+++ /dev/null`);
85
+ console.log(`- (File deleted: ${itemPath})`);
86
+ }
87
+ rmSync(itemPath);
88
+ }
89
+ }
90
+ console.log(`Successfully removed '${id}'.`);
91
+ });
92
+ }
93
+ //# sourceMappingURL=rm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,16 @@
11
11
  * (glossary entries are stored inline in context.yml, not as separate files).
12
12
  */
13
13
  import type { Command as Cmd } from "commander";
14
+ export interface AddItemRelations {
15
+ raisedBy?: string;
16
+ handledBy?: string;
17
+ actor?: string;
18
+ triggers?: string[];
19
+ emits?: string[];
20
+ handles?: string[];
21
+ subscribesTo?: string[];
22
+ usedBy?: string[];
23
+ fromObj?: Record<string, unknown>;
24
+ }
14
25
  export declare function registerAddItem(program: Cmd): void;
15
26
  //# sourceMappingURL=add-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-item.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/add-item.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA8EhD,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAgGlD"}
1
+ {"version":3,"file":"add-item.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/add-item.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAyBhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAwFD,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA8JlD"}
@@ -2,6 +2,8 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { contextsDir } from "../../../shared/paths.js";
4
4
  import { parseYaml, stringifyYaml } from "../../../shared/yaml.js";
5
+ import { loadDomainModel } from "../../../shared/loader.js";
6
+ import { DomainGraph } from "../../../shared/graph.js";
5
7
  // ── Constants ─────────────────────────────────────────────────────────
6
8
  /** Supported item types and their plural directory names. */
7
9
  const TYPE_DIR_MAP = {
@@ -13,43 +15,74 @@ const TYPE_DIR_MAP = {
13
15
  };
14
16
  /** All supported item types (including glossary which is handled differently). */
15
17
  const SUPPORTED_TYPES = [...Object.keys(TYPE_DIR_MAP), "glossary"];
16
- // ── YAML generators ──────────────────────────────────────────────────
17
- function eventYaml(name, description) {
18
- return `name: ${name}\ndescription: ${description}\n`;
18
+ function eventYaml(name, description, rel) {
19
+ let out = `name: ${name}\ndescription: "${description}"\n`;
20
+ if (rel.fromObj?.fields)
21
+ out += `fields:\n${stringifyYaml(rel.fromObj.fields).trimEnd().split('\n').map(l => ` ${l}`).join('\n')}\n`;
22
+ if (rel.raisedBy)
23
+ out += `raised_by: ${rel.raisedBy}\n`;
24
+ return out;
19
25
  }
20
- function commandYaml(name, description) {
21
- return `name: ${name}\ndescription: ${description}\n`;
26
+ function commandYaml(name, description, rel) {
27
+ let out = `name: ${name}\ndescription: "${description}"\n`;
28
+ if (rel.fromObj?.fields)
29
+ out += `fields:\n${stringifyYaml(rel.fromObj.fields).trimEnd().split('\n').map(l => ` ${l}`).join('\n')}\n`;
30
+ if (rel.actor)
31
+ out += `actor: ${rel.actor}\n`;
32
+ if (rel.handledBy)
33
+ out += `handled_by: ${rel.handledBy}\n`;
34
+ return out;
22
35
  }
23
- function aggregateYaml(name, description) {
36
+ function aggregateYaml(name, description, rel) {
37
+ const handles = rel.handles?.length ? rel.handles.map(h => ` - ${h}`).join('\n') : " []";
38
+ const emits = rel.emits?.length ? rel.emits.map(e => ` - ${e}`).join('\n') : " []";
24
39
  return [
25
40
  `name: ${name}`,
26
- `description: ${description}`,
41
+ `description: "${description}"`,
27
42
  "handles:",
28
- " commands: []",
43
+ ` commands:\n${handles === " []" ? " []" : handles}`,
29
44
  "emits:",
30
- " events: []",
45
+ ` events:\n${emits === " []" ? " []" : emits}`,
31
46
  "",
32
47
  ].join("\n");
33
48
  }
34
- function policyYaml(name, description) {
35
- return `name: ${name}\ndescription: ${description}\n`;
49
+ function policyYaml(name, description, rel) {
50
+ const triggers = rel.triggers?.length ? rel.triggers.map(t => ` - ${t}`).join('\n') : " []";
51
+ const emits = rel.emits?.length ? rel.emits.map(e => ` - ${e}`).join('\n') : " []";
52
+ return [
53
+ `name: ${name}`,
54
+ `description: "${description}"`,
55
+ "when:",
56
+ ` events:\n${triggers === " []" ? " []" : triggers}`,
57
+ "then:",
58
+ ` commands:\n${emits === " []" ? " []" : emits}`,
59
+ "",
60
+ ].join("\n");
36
61
  }
37
- function readModelYaml(name, description) {
38
- return `name: ${name}\ndescription: ${description}\n`;
62
+ function readModelYaml(name, description, rel) {
63
+ const subs = rel.subscribesTo?.length ? rel.subscribesTo.map(s => ` - ${s}`).join('\n') : " []";
64
+ const users = rel.usedBy?.length ? rel.usedBy.map(u => ` - ${u}`).join('\n') : " []";
65
+ return [
66
+ `name: ${name}`,
67
+ `description: "${description}"`,
68
+ `subscribes_to:\n${subs === " []" ? " []" : subs}`,
69
+ `used_by:\n${users === " []" ? " []" : users}`,
70
+ "",
71
+ ].join("\n");
39
72
  }
40
73
  /** Return YAML content for a file-based item type. */
41
- function generateYaml(type, name, description) {
74
+ function generateYaml(type, name, description, rel) {
42
75
  switch (type) {
43
76
  case "event":
44
- return eventYaml(name, description);
77
+ return eventYaml(name, description, rel);
45
78
  case "command":
46
- return commandYaml(name, description);
79
+ return commandYaml(name, description, rel);
47
80
  case "aggregate":
48
- return aggregateYaml(name, description);
81
+ return aggregateYaml(name, description, rel);
49
82
  case "policy":
50
- return policyYaml(name, description);
83
+ return policyYaml(name, description, rel);
51
84
  case "read-model":
52
- return readModelYaml(name, description);
85
+ return readModelYaml(name, description, rel);
53
86
  default:
54
87
  throw new Error(`Unknown type: ${type}`);
55
88
  }
@@ -60,12 +93,26 @@ function isValidItemName(name) {
60
93
  return /^[A-Za-z][A-Za-z0-9]*$/.test(name);
61
94
  }
62
95
  // ── Registration ──────────────────────────────────────────────────────
96
+ function parseCsv(val) {
97
+ return val.split(',').map(s => s.trim()).filter(Boolean);
98
+ }
63
99
  export function registerAddItem(program) {
64
100
  program
65
101
  .command("add <type> <name>")
66
102
  .description(`Scaffold a domain item. Types: ${SUPPORTED_TYPES.join(", ")}`)
67
103
  .requiredOption("-c, --context <ctx>", "Target bounded context (kebab-case)")
68
104
  .option("-d, --description <text>", "Description of the item")
105
+ .option("--raised-by <id>", "Aggregate that raises this event")
106
+ .option("--handled-by <id>", "Aggregate that handles this command")
107
+ .option("--actor <id>", "Actor that initiates this command")
108
+ .option("--triggers <ids>", "Events that trigger this policy (comma-separated)", parseCsv)
109
+ .option("--emits <ids>", "Commands emitted by policy / events emitted by aggregate (comma-separated)", parseCsv)
110
+ .option("--handles <ids>", "Commands handled by aggregate (comma-separated)", parseCsv)
111
+ .option("--subscribes-to <ids>", "Events subscribed to by read-model (comma-separated)", parseCsv)
112
+ .option("--used-by <ids>", "Actors that use this read-model (comma-separated)", parseCsv)
113
+ .option("--from <id>", "Clone structure from existing item ID")
114
+ .option("--json", "Output as JSON")
115
+ .option("--minify", "Minify JSON output")
69
116
  .option("-r, --root <path>", "Override repository root")
70
117
  .action((type, name, opts) => {
71
118
  // Validate type
@@ -86,7 +133,7 @@ export function registerAddItem(program) {
86
133
  console.error(`Error: Context "${opts.context}" does not exist. No context.yml found at ${contextYmlPath}.`);
87
134
  process.exit(1);
88
135
  }
89
- const description = opts.description ?? `TODO: describe ${name}`;
136
+ let description = opts.description ?? `TODO: describe ${name}`;
90
137
  // Handle glossary separately — append to context.yml
91
138
  if (type === "glossary") {
92
139
  const raw = readFileSync(contextYmlPath, "utf-8");
@@ -104,22 +151,71 @@ export function registerAddItem(program) {
104
151
  console.log(`Added glossary entry "${name}" to context "${opts.context}" in context.yml.`);
105
152
  return;
106
153
  }
154
+ // Handle --from templating
155
+ let fromObj = undefined;
156
+ if (opts.from) {
157
+ const model = loadDomainModel({ root: opts.root });
158
+ const graph = DomainGraph.from(model);
159
+ if (!graph.hasNode(opts.from)) {
160
+ console.error(`Error: --from target '${opts.from}' not found.`);
161
+ process.exit(1);
162
+ }
163
+ // For cloning fields, we need the actual Yaml representation
164
+ // We can re-use the load function but doing it manually is tedious.
165
+ // Since we know the context and name, we can just parse the file directly:
166
+ const [fromCtx, fromName] = opts.from.split('.');
167
+ const fromKind = graph.nodes.get(opts.from)?.kind ?? 'event';
168
+ if (TYPE_DIR_MAP[fromKind]) {
169
+ const fromPath = join(ctxBase, fromCtx, TYPE_DIR_MAP[fromKind], `${fromName}.yml`);
170
+ if (existsSync(fromPath)) {
171
+ fromObj = parseYaml(readFileSync(fromPath, 'utf-8'));
172
+ if (!opts.description && fromObj.description) {
173
+ description = fromObj.description;
174
+ }
175
+ }
176
+ }
177
+ }
107
178
  // File-based types
108
179
  const dirName = TYPE_DIR_MAP[type];
109
180
  const typeDir = join(ctxDir, dirName);
110
181
  const filePath = join(typeDir, `${name}.yml`);
111
182
  // Check if item already exists
112
183
  if (existsSync(filePath)) {
113
- console.error(`Error: ${type} "${name}" already exists at ${filePath}.`);
184
+ if (opts.json) {
185
+ console.log(JSON.stringify({ error: `${type} "${name}" already exists at ${filePath}` }, null, opts.minify ? 0 : 2));
186
+ }
187
+ else {
188
+ console.error(`Error: ${type} "${name}" already exists at ${filePath}.`);
189
+ }
114
190
  process.exit(1);
115
191
  }
116
192
  // Create type subdirectory if needed
117
193
  mkdirSync(typeDir, { recursive: true });
194
+ const rel = {
195
+ raisedBy: opts.raisedBy,
196
+ handledBy: opts.handledBy,
197
+ actor: opts.actor,
198
+ triggers: opts.triggers,
199
+ emits: opts.emits,
200
+ handles: opts.handles,
201
+ subscribesTo: opts.subscribesTo,
202
+ usedBy: opts.usedBy,
203
+ fromObj: fromObj
204
+ };
118
205
  // Write YAML file
119
- const yaml = generateYaml(type, name, description);
206
+ const yaml = generateYaml(type, name, description, rel);
120
207
  writeFileSync(filePath, yaml, "utf-8");
208
+ if (opts.json) {
209
+ console.log(JSON.stringify({
210
+ id: `${opts.context}.${name}`,
211
+ path: filePath,
212
+ type,
213
+ name
214
+ }, null, opts.minify ? 0 : 2));
215
+ return;
216
+ }
121
217
  console.log(`Created ${type} "${name}" in context "${opts.context}":`);
122
- console.log(` contexts/${opts.context}/${dirName}/${name}.yml`);
218
+ console.log(` ${filePath}`);
123
219
  });
124
220
  }
125
221
  //# sourceMappingURL=add-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-item.js","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/add-item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-item.js","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/add-item.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,yEAAyE;AAEzE,6DAA6D;AAC7D,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,UAAU;IAClB,YAAY,EAAE,aAAa;CAC5B,CAAC;AAEF,kFAAkF;AAClF,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;AAgBnE,SAAS,SAAS,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAqB;IACzE,IAAI,GAAG,GAAG,SAAS,IAAI,mBAAmB,WAAW,KAAK,CAAC;IAC3D,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM;QAAE,GAAG,IAAI,YAAY,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtI,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,IAAI,cAAc,GAAG,CAAC,QAAQ,IAAI,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAqB;IAC3E,IAAI,GAAG,GAAG,SAAS,IAAI,mBAAmB,WAAW,KAAK,CAAC;IAC3D,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM;QAAE,GAAG,IAAI,YAAY,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtI,IAAI,GAAG,CAAC,KAAK;QAAE,GAAG,IAAI,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC;IAC9C,IAAI,GAAG,CAAC,SAAS;QAAE,GAAG,IAAI,eAAe,GAAG,CAAC,SAAS,IAAI,CAAC;IAC3D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAqB;IAC7E,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/F,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzF,OAAO;QACL,SAAS,IAAI,EAAE;QACf,iBAAiB,WAAW,GAAG;QAC/B,UAAU;QACV,gBAAgB,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE;QAC3D,QAAQ;QACR,cAAc,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE;QACrD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAqB;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzF,OAAO;QACL,SAAS,IAAI,EAAE;QACf,iBAAiB,WAAW,GAAG;QAC/B,OAAO;QACP,cAAc,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC3D,OAAO;QACP,gBAAgB,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE;QACvD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,WAAmB,EAAE,GAAqB;IAC7E,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAClG,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvF,OAAO;QACL,SAAS,IAAI,EAAE;QACf,iBAAiB,WAAW,GAAG;QAC/B,mBAAmB,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;QACpD,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;QAChD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,sDAAsD;AACtD,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,WAAmB,EAAE,GAAqB;IAC1F,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7C,KAAK,WAAW;YACd,OAAO,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC/C,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5C,KAAK,YAAY;YACf,OAAO,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC/C;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,yEAAyE;AAEzE,0EAA0E;AAC1E,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,yEAAyE;AAEzE,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAY;IAC1C,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,kCAAkC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/D;SACA,cAAc,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;SAC5E,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;SAC7D,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;SAClE,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,EAAE,QAAQ,CAAC;SACzF,MAAM,CAAC,eAAe,EAAE,4EAA4E,EAAE,QAAQ,CAAC;SAC/G,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,QAAQ,CAAC;SACtF,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,EAAE,QAAQ,CAAC;SACjG,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,EAAE,QAAQ,CAAC;SACxF,MAAM,CAAC,aAAa,EAAE,uCAAuC,CAAC;SAC9D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CACL,CACE,IAAY,EACZ,IAAY,EACZ,IAIC,EACD,EAAE;QACF,gBAAgB;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CACX,6BAA6B,IAAI,uBAAuB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,qBAAqB,IAAI,oDAAoD,CAC9E,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEnD,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CACX,mBAAmB,IAAI,CAAC,OAAO,6CAA6C,cAAc,GAAG,CAC9F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,IAAI,EAAE,CAAC;QAE/D,qDAAqD;QACrD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,SAAS,CAAkB,GAAG,CAAC,CAAC;YAE7C,sBAAsB;YACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,KAAK,CACX,0BAA0B,IAAI,gCAAgC,IAAI,CAAC,OAAO,IAAI,CAC/E,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5D,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAE5D,OAAO,CAAC,GAAG,CACT,yBAAyB,IAAI,iBAAiB,IAAI,CAAC,OAAO,mBAAmB,CAC9E,CAAC;YACF,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,GAAwC,SAAS,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,6DAA6D;YAC7D,oEAAoE;YACpE,2EAA2E;YAC3E,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC;YAC7D,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;gBACnF,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvB,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAA4B,CAAC;oBAChF,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;wBAC3C,WAAW,GAAG,OAAO,CAAC,WAAqB,CAAC;oBAChD,CAAC;gBACL,CAAC;YACJ,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAE9C,+BAA+B;QAC/B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,IAAI,uBAAuB,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzH,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,IAAI,uBAAuB,QAAQ,GAAG,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,qCAAqC;QACrC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,MAAM,GAAG,GAAqB;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,OAAO;SACnB,CAAC;QAEF,kBAAkB;QAClB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QACxD,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvB,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC7B,IAAI,EAAE,QAAQ;gBACd,IAAI;gBACJ,IAAI;aACP,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,IAAI,iBAAiB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"new-adr.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-adr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA2ChD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA8DjD"}
1
+ {"version":3,"file":"new-adr.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-adr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA+ChD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA+EjD"}
@@ -36,12 +36,19 @@ function slugify(title) {
36
36
  .replace(/[^a-z0-9]+/g, "-")
37
37
  .replace(/^-|-$/g, "");
38
38
  }
39
+ function parseCsv(val) {
40
+ return val.split(',').map(s => s.trim()).filter(Boolean);
41
+ }
39
42
  export function registerNewAdr(program) {
40
43
  program
41
44
  .command("adr <title>")
42
45
  .description("Scaffold a new ADR file with frontmatter template")
43
46
  .option("-r, --root <path>", "Override repository root")
44
47
  .option("-s, --status <status>", "ADR status (proposed, accepted, deprecated)", "proposed")
48
+ .option("--domain-refs <ids>", "Domain references (comma-separated)", parseCsv)
49
+ .option("--deciders <names>", "Deciders (comma-separated)", parseCsv)
50
+ .option("--json", "Output as JSON")
51
+ .option("--minify", "Minify JSON")
45
52
  .action((title, opts) => {
46
53
  const status = opts.status ?? "proposed";
47
54
  const validStatuses = ["proposed", "accepted", "deprecated", "superseded"];
@@ -61,13 +68,15 @@ export function registerNewAdr(program) {
61
68
  process.exit(1);
62
69
  }
63
70
  const _slug = slugify(title);
71
+ const decidersStr = opts.deciders?.length ? opts.deciders.map(d => `\n - "${d}"`).join('') : " []";
72
+ const domainRefsStr = opts.domainRefs?.length ? opts.domainRefs.map(r => `\n - ${r}`).join('') : " []";
64
73
  const content = `---
65
74
  id: ${id}
66
75
  title: ${title}
67
76
  status: ${status}
68
77
  date: ${today()}
69
- deciders: []
70
- domain_refs: []
78
+ deciders:${decidersStr}
79
+ domain_refs:${domainRefsStr}
71
80
  ---
72
81
 
73
82
  # ${id.toUpperCase()} — ${title}
@@ -88,6 +97,14 @@ domain_refs: []
88
97
  <!-- What becomes easier or harder as a result of this decision? -->
89
98
  `;
90
99
  writeFileSync(filePath, content, "utf-8");
100
+ if (opts.json) {
101
+ console.log(JSON.stringify({
102
+ id,
103
+ path: filePath,
104
+ title
105
+ }, null, opts.minify ? 0 : 2));
106
+ return;
107
+ }
91
108
  console.log(`Created ${filename}`);
92
109
  console.log(` .dkk/adr/${filename}`);
93
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"new-adr.js","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-adr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-adr.js","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-adr.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"new-context.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAYhD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAoErD"}
1
+ {"version":3,"file":"new-context.d.ts","sourceRoot":"","sources":["../../../../src/features/scaffold/commands/new-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAYhD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA+ErD"}