domain-knowledge-kit 0.2.10 → 0.2.12

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/README.md +1 -0
  2. package/dist/cli.js +41 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/features/agent/commands/init.d.ts.map +1 -1
  5. package/dist/features/agent/commands/init.js +46 -8
  6. package/dist/features/agent/commands/init.js.map +1 -1
  7. package/dist/features/agent/commands/prime.d.ts.map +1 -1
  8. package/dist/features/agent/commands/prime.js +67 -16
  9. package/dist/features/agent/commands/prime.js.map +1 -1
  10. package/dist/features/audit/commands/stats.d.ts.map +1 -1
  11. package/dist/features/audit/commands/stats.js +24 -1
  12. package/dist/features/audit/commands/stats.js.map +1 -1
  13. package/dist/features/pipeline/commands/render.d.ts.map +1 -1
  14. package/dist/features/pipeline/commands/render.js +3 -2
  15. package/dist/features/pipeline/commands/render.js.map +1 -1
  16. package/dist/features/pipeline/renderer.d.ts.map +1 -1
  17. package/dist/features/pipeline/renderer.js +4 -0
  18. package/dist/features/pipeline/renderer.js.map +1 -1
  19. package/dist/features/pipeline/tests/validator.test.js +16 -0
  20. package/dist/features/pipeline/tests/validator.test.js.map +1 -1
  21. package/dist/features/pipeline/validator.d.ts.map +1 -1
  22. package/dist/features/pipeline/validator.js +22 -14
  23. package/dist/features/pipeline/validator.js.map +1 -1
  24. package/dist/features/query/commands/graph.d.ts +6 -0
  25. package/dist/features/query/commands/graph.d.ts.map +1 -1
  26. package/dist/features/query/commands/graph.js +223 -53
  27. package/dist/features/query/commands/graph.js.map +1 -1
  28. package/dist/features/query/commands/list.d.ts.map +1 -1
  29. package/dist/features/query/commands/list.js +5 -2
  30. package/dist/features/query/commands/list.js.map +1 -1
  31. package/dist/features/query/commands/locate.d.ts +3 -0
  32. package/dist/features/query/commands/locate.d.ts.map +1 -0
  33. package/dist/features/query/commands/locate.js +96 -0
  34. package/dist/features/query/commands/locate.js.map +1 -0
  35. package/dist/features/query/commands/related.d.ts.map +1 -1
  36. package/dist/features/query/commands/related.js +4 -3
  37. package/dist/features/query/commands/related.js.map +1 -1
  38. package/dist/features/query/commands/search.d.ts.map +1 -1
  39. package/dist/features/query/commands/search.js +3 -2
  40. package/dist/features/query/commands/search.js.map +1 -1
  41. package/dist/features/query/commands/show.d.ts.map +1 -1
  42. package/dist/features/query/commands/show.js +4 -3
  43. package/dist/features/query/commands/show.js.map +1 -1
  44. package/dist/features/query/commands/summary.d.ts.map +1 -1
  45. package/dist/features/query/commands/summary.js +61 -5
  46. package/dist/features/query/commands/summary.js.map +1 -1
  47. package/dist/features/refactor/commands/move.d.ts +14 -0
  48. package/dist/features/refactor/commands/move.d.ts.map +1 -0
  49. package/dist/features/refactor/commands/move.js +166 -0
  50. package/dist/features/refactor/commands/move.js.map +1 -0
  51. package/dist/features/refactor/commands/rename.d.ts.map +1 -1
  52. package/dist/features/refactor/commands/rename.js +329 -131
  53. package/dist/features/refactor/commands/rename.js.map +1 -1
  54. package/dist/features/refactor/commands/rm.d.ts.map +1 -1
  55. package/dist/features/refactor/commands/rm.js +349 -76
  56. package/dist/features/refactor/commands/rm.js.map +1 -1
  57. package/dist/features/refactor/refactor-helpers.d.ts +117 -0
  58. package/dist/features/refactor/refactor-helpers.d.ts.map +1 -0
  59. package/dist/features/refactor/refactor-helpers.js +653 -0
  60. package/dist/features/refactor/refactor-helpers.js.map +1 -0
  61. package/dist/features/scaffold/commands/add-item.d.ts +5 -13
  62. package/dist/features/scaffold/commands/add-item.d.ts.map +1 -1
  63. package/dist/features/scaffold/commands/add-item.js +75 -95
  64. package/dist/features/scaffold/commands/add-item.js.map +1 -1
  65. package/dist/features/scaffold/commands/new-adr.d.ts.map +1 -1
  66. package/dist/features/scaffold/commands/new-adr.js +0 -9
  67. package/dist/features/scaffold/commands/new-adr.js.map +1 -1
  68. package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
  69. package/dist/features/scaffold/commands/new-domain.js +8 -3
  70. package/dist/features/scaffold/commands/new-domain.js.map +1 -1
  71. package/dist/shared/graph.d.ts.map +1 -1
  72. package/dist/shared/graph.js +5 -0
  73. package/dist/shared/graph.js.map +1 -1
  74. package/dist/shared/similarity.d.ts +3 -0
  75. package/dist/shared/similarity.d.ts.map +1 -0
  76. package/dist/shared/similarity.js +52 -0
  77. package/dist/shared/similarity.js.map +1 -0
  78. package/dist/shared/tests/graph.test.js +8 -0
  79. package/dist/shared/tests/graph.test.js.map +1 -1
  80. package/package.json +3 -2
  81. package/tools/dkk/templates/index.md.hbs +4 -0
  82. package/dist/features/adr/commands/adr-related.d.ts +0 -14
  83. package/dist/features/adr/commands/adr-related.d.ts.map +0 -1
  84. package/dist/features/adr/commands/adr-related.js +0 -146
  85. package/dist/features/adr/commands/adr-related.js.map +0 -1
  86. package/dist/features/adr/commands/adr-show.d.ts +0 -10
  87. package/dist/features/adr/commands/adr-show.d.ts.map +0 -1
  88. package/dist/features/adr/commands/adr-show.js +0 -30
  89. package/dist/features/adr/commands/adr-show.js.map +0 -1
@@ -1,93 +1,366 @@
1
1
  import { existsSync, rmSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { loadDomainModel } from "../../../shared/loader.js";
4
- import { contextsDir } from "../../../shared/paths.js";
4
+ import { contextsDir, adrDir } from "../../../shared/paths.js";
5
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);
6
+ import { parseYaml, stringifyYaml } from "../../../shared/yaml.js";
7
+ import { classifyId, KIND_TO_DIR, removeGlossaryEntry, removeActorEntry, removeFlowFromIndex, removeFlowStepsForItem, removeFlowStepsForContext, removeContextFromIndex, cleanDomainItemRef, updateAdrFrontmatter, allAdrFiles, allDomainFiles, printDiff, } from "../refactor-helpers.js";
8
+ // ── Dependent detection ───────────────────────────────────────────────
9
+ /**
10
+ * Find all items that hold YAML references to the node being removed.
11
+ *
12
+ * Extends the basic "edge.to === id" check with cases where the graph
13
+ * edge goes FROM the removed node, but the TARGET file holds the back-
14
+ * reference (e.g. event.raised_by, policy.when.events, command.actor).
15
+ */
16
+ function findDependents(graph, id, nodeKind) {
17
+ const dependents = new Set();
18
+ for (const edge of graph.edges) {
19
+ if (edge.label === "contains")
20
+ continue;
21
+ // Target of an edge points to this node → source holds reference
22
+ if (edge.to === id) {
23
+ dependents.add(edge.from);
20
24
  }
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);
25
+ // Source is this node; check edge labels where the TARGET holds a
26
+ // back-reference in its own file.
27
+ if (edge.from === id) {
28
+ if (edge.label === "triggers") {
29
+ // event --triggers--> policy: policy.when.events references this event
30
+ dependents.add(edge.to);
31
+ }
32
+ else if (edge.label === "initiates") {
33
+ // actor --initiates--> command: command.actor references this actor
34
+ dependents.add(edge.to);
35
+ }
36
+ else if (nodeKind === "aggregate" &&
37
+ (edge.label === "emits" || edge.label === "handles")) {
38
+ // aggregate --emits--> event: event.raised_by references this aggregate
39
+ // aggregate --handles--> command: command.handled_by references this aggregate
40
+ dependents.add(edge.to);
41
+ }
27
42
  }
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);
43
+ }
44
+ return dependents;
45
+ }
46
+ // ── Inline YAML helpers ───────────────────────────────────────────────
47
+ /** Remove an adr_ref entry from a domain YAML file (YAML-aware). */
48
+ function cleanAdrRef(filePath, adrId, showDiff) {
49
+ if (!existsSync(filePath))
50
+ return;
51
+ const content = readFileSync(filePath, "utf-8");
52
+ const data = parseYaml(content);
53
+ if (!data.adr_refs?.includes(adrId))
54
+ return;
55
+ data.adr_refs = data.adr_refs.filter((r) => r !== adrId);
56
+ if (data.adr_refs.length === 0)
57
+ delete data.adr_refs;
58
+ const newContent = stringifyYaml(data);
59
+ if (showDiff)
60
+ printDiff(filePath, content, newContent);
61
+ writeFileSync(filePath, newContent, "utf-8");
62
+ }
63
+ /** Remove a scoped ID from domain_refs or any list field in a YAML file. */
64
+ function cleanScopedIdFromFile(filePath, scopedId, showDiff) {
65
+ if (!existsSync(filePath))
66
+ return;
67
+ const content = readFileSync(filePath, "utf-8");
68
+ const data = parseYaml(content);
69
+ let changed = false;
70
+ for (const key of ["domain_refs", "adr_refs"]) {
71
+ const arr = data[key];
72
+ if (arr?.includes(scopedId)) {
73
+ const filtered = arr.filter((r) => r !== scopedId);
74
+ if (filtered.length === 0)
75
+ delete data[key];
76
+ else
77
+ data[key] = filtered;
78
+ changed = true;
33
79
  }
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.
80
+ }
81
+ if (!changed)
82
+ return;
83
+ const newContent = stringifyYaml(data);
84
+ if (showDiff)
85
+ printDiff(filePath, content, newContent);
86
+ writeFileSync(filePath, newContent, "utf-8");
87
+ }
88
+ // ── Per-kind removal helpers ──────────────────────────────────────────
89
+ function rmActor(actorName, graph, opts) {
90
+ const actorNodeId = `actor.${actorName}`;
91
+ if (!graph.hasNode(actorNodeId)) {
92
+ console.error(`Actor '${actorName}' not found.`);
93
+ process.exit(1);
94
+ }
95
+ const dependents = findDependents(graph, actorNodeId, "actor");
96
+ const realDeps = new Set([...dependents].filter((d) => graph.nodes.get(d)?.kind !== "adr"));
97
+ if (realDeps.size > 0 && !opts.force) {
98
+ console.error(`Cannot remove actor '${actorName}'. It is referenced by:`);
99
+ for (const dep of realDeps)
100
+ console.error(` - ${dep}`);
101
+ console.error(`\nUse --force to clean up references and remove.`);
102
+ process.exit(1);
103
+ }
104
+ if (realDeps.size > 0 && opts.force) {
105
+ const ctxBase = contextsDir(opts.root);
106
+ for (const depId of realDeps) {
107
+ const depNode = graph.nodes.get(depId);
108
+ if (!depNode?.context)
109
+ continue;
110
+ const typeDir = KIND_TO_DIR[depNode.kind];
111
+ if (!typeDir)
112
+ continue;
113
+ const filePath = join(ctxBase, depNode.context, typeDir, `${depNode.name}.yml`);
114
+ cleanDomainItemRef(filePath, depNode.kind, actorName, opts.diff ?? false);
46
115
  }
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);
116
+ }
117
+ removeActorEntry(opts.root, actorName, opts.diff ?? false);
118
+ console.log(`Successfully removed actor '${actorName}'.`);
119
+ }
120
+ function rmFlow(flowName, graph, opts) {
121
+ if (!graph.hasNode(`flow.${flowName}`)) {
122
+ console.error(`Flow '${flowName}' not found.`);
123
+ process.exit(1);
124
+ }
125
+ removeFlowFromIndex(opts.root, flowName, opts.diff ?? false);
126
+ console.log(`Successfully removed flow '${flowName}'.`);
127
+ }
128
+ function rmAdr(adrId, graph, opts) {
129
+ if (!graph.hasNode(adrId)) {
130
+ console.error(`ADR '${adrId}' not found.`);
131
+ process.exit(1);
132
+ }
133
+ const dependents = findDependents(graph, adrId, "adr");
134
+ const domainDeps = [];
135
+ const adrDeps = [];
136
+ for (const depId of dependents) {
137
+ const node = graph.nodes.get(depId);
138
+ if (!node)
139
+ continue;
140
+ if (node.kind === "adr")
141
+ adrDeps.push(node);
142
+ else
143
+ domainDeps.push(node);
144
+ }
145
+ if ((domainDeps.length > 0 || adrDeps.length > 0) && !opts.force) {
146
+ console.error(`Cannot remove '${adrId}'. It is referenced by:`);
147
+ for (const n of [...domainDeps, ...adrDeps])
148
+ console.error(` - ${n.id}`);
149
+ console.error(`\nUse --force to clean up references and remove.`);
150
+ process.exit(1);
151
+ }
152
+ if (opts.force) {
153
+ const ctxBase = contextsDir(opts.root);
154
+ for (const node of domainDeps) {
155
+ if (!node.context || node.kind === "glossary")
156
+ continue;
157
+ const typeDir = KIND_TO_DIR[node.kind];
158
+ if (!typeDir)
159
+ continue;
160
+ const filePath = join(ctxBase, node.context, typeDir, `${node.name}.yml`);
161
+ cleanAdrRef(filePath, adrId, opts.diff ?? false);
162
+ }
163
+ const adrBase = adrDir(opts.root);
164
+ for (const node of adrDeps) {
165
+ const filePath = join(adrBase, `${node.name}.md`);
166
+ updateAdrFrontmatter(filePath, (fm) => {
167
+ if (fm["superseded_by"] !== adrId)
168
+ return false;
169
+ delete fm["superseded_by"];
170
+ return true;
171
+ }, opts.diff ?? false);
172
+ }
173
+ }
174
+ const adrPath = join(adrDir(opts.root), `${adrId}.md`);
175
+ if (!existsSync(adrPath)) {
176
+ console.error(`ADR file not found: ${adrPath}`);
177
+ process.exit(1);
178
+ }
179
+ if (opts.diff) {
180
+ console.log(`\n--- a/${adrPath}\n+++ /dev/null`);
181
+ console.log(`- (File deleted: ${adrPath})`);
182
+ }
183
+ rmSync(adrPath);
184
+ console.log(`Successfully removed '${adrId}'.`);
185
+ }
186
+ function rmContext(ctxName, graph, opts) {
187
+ if (!graph.hasNode(`context.${ctxName}`)) {
188
+ console.error(`Context '${ctxName}' not found.`);
189
+ process.exit(1);
190
+ }
191
+ const ctxDir = join(contextsDir(opts.root), ctxName);
192
+ const ctxItems = [...graph.nodes.values()].filter((n) => n.context === ctxName);
193
+ const hasItems = ctxItems.some((n) => n.kind !== "context");
194
+ // Find external nodes (outside this context) that reference items in this context
195
+ const externalRefs = new Set();
196
+ for (const edge of graph.edges) {
197
+ if (edge.label === "contains")
198
+ continue;
199
+ const toCtx = graph.nodes.get(edge.to)?.context;
200
+ const fromNode = graph.nodes.get(edge.from);
201
+ if (toCtx === ctxName && fromNode?.context !== ctxName) {
202
+ externalRefs.add(edge.from);
203
+ }
204
+ }
205
+ if ((hasItems || externalRefs.size > 0) && !opts.force) {
206
+ if (hasItems) {
207
+ console.error(`Cannot remove context '${ctxName}': it contains ${ctxItems.filter((n) => n.kind !== "context").length} item(s).`);
208
+ }
209
+ if (externalRefs.size > 0) {
210
+ console.error(`Cannot remove context '${ctxName}': it has external references:`);
211
+ for (const ref of externalRefs)
212
+ console.error(` - ${ref}`);
54
213
  }
55
- if (dependents.size > 0 && opts.force) {
56
- console.warn(`Warning: Removed '${id}' despite ${dependents.size} dependents.`);
214
+ console.error(`\nUse --force to clean up all references and remove.`);
215
+ process.exit(1);
216
+ }
217
+ if (opts.force) {
218
+ // Remove flow steps that reference items in this context
219
+ removeFlowStepsForContext(opts.root, ctxName, opts.diff ?? false);
220
+ // Remove domain_refs in ADRs pointing to items in this context
221
+ for (const adrFilePath of allAdrFiles(opts.root)) {
222
+ updateAdrFrontmatter(adrFilePath, (fm) => {
223
+ const refs = fm["domain_refs"];
224
+ if (!refs?.length)
225
+ return false;
226
+ const filtered = refs.filter((r) => !r.startsWith(`${ctxName}.`));
227
+ if (filtered.length === refs.length)
228
+ return false;
229
+ if (filtered.length === 0)
230
+ delete fm["domain_refs"];
231
+ else
232
+ fm["domain_refs"] = filtered;
233
+ return true;
234
+ }, opts.diff ?? false);
57
235
  }
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
- }
236
+ // Remove cross-context references in other domain item files
237
+ for (const filePath of allDomainFiles(opts.root)) {
238
+ if (filePath.includes(`/contexts/${ctxName}/`))
239
+ continue;
240
+ for (const itemNode of ctxItems) {
241
+ if (itemNode.kind === "context")
242
+ continue;
243
+ cleanScopedIdFromFile(filePath, itemNode.id, opts.diff ?? false);
77
244
  }
78
245
  }
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);
246
+ }
247
+ if (opts.diff) {
248
+ console.log(`\n--- a/${ctxDir}/\n+++ /dev/null\n- (Directory removed: ${ctxDir}/)`);
249
+ }
250
+ rmSync(ctxDir, { recursive: true });
251
+ removeContextFromIndex(opts.root, ctxName, opts.diff ?? false);
252
+ console.log(`Successfully removed context '${ctxName}'.`);
253
+ }
254
+ function rmDomainItem(id, graph, opts) {
255
+ const dot = id.indexOf(".");
256
+ const ctx = id.slice(0, dot);
257
+ const name = id.slice(dot + 1);
258
+ if (!graph.hasNode(id)) {
259
+ console.error(`Item '${id}' not found.`);
260
+ process.exit(1);
261
+ }
262
+ const node = graph.nodes.get(id);
263
+ const dependents = findDependents(graph, id, node.kind);
264
+ const realDeps = new Set([...dependents].filter((d) => graph.nodes.get(d)?.kind !== "context"));
265
+ if (realDeps.size > 0 && !opts.force) {
266
+ console.error(`Cannot remove '${id}'. It is referenced by:`);
267
+ for (const dep of realDeps)
268
+ console.error(` - ${dep}`);
269
+ console.error(`\nUse --force to clean up references and remove.`);
270
+ process.exit(1);
271
+ }
272
+ if (realDeps.size > 0 && opts.force) {
273
+ const ctxBase = contextsDir(opts.root);
274
+ for (const depId of realDeps) {
275
+ const depNode = graph.nodes.get(depId);
276
+ if (depNode.kind === "adr") {
277
+ const adrFilePath = join(adrDir(opts.root), `${depNode.name}.md`);
278
+ updateAdrFrontmatter(adrFilePath, (fm) => {
279
+ const refs = fm["domain_refs"];
280
+ if (!refs?.includes(id))
281
+ return false;
282
+ const filtered = refs.filter((r) => r !== id);
283
+ if (filtered.length === 0)
284
+ delete fm["domain_refs"];
285
+ else
286
+ fm["domain_refs"] = filtered;
287
+ return true;
288
+ }, opts.diff ?? false);
289
+ continue;
290
+ }
291
+ if (depNode.kind === "flow") {
292
+ removeFlowStepsForItem(opts.root, id, opts.diff ?? false);
293
+ continue;
88
294
  }
295
+ if (depNode.kind === "context" || depNode.kind === "glossary")
296
+ continue;
297
+ if (!depNode.context)
298
+ continue;
299
+ const typeDir = KIND_TO_DIR[depNode.kind];
300
+ if (!typeDir)
301
+ continue;
302
+ const filePath = join(ctxBase, depNode.context, typeDir, `${depNode.name}.yml`);
303
+ cleanDomainItemRef(filePath, depNode.kind, name, opts.diff ?? false);
304
+ }
305
+ }
306
+ const ctxDir = join(contextsDir(opts.root), ctx);
307
+ if (node.kind === "glossary") {
308
+ removeGlossaryEntry(ctxDir, name, opts.diff ?? false);
309
+ }
310
+ else {
311
+ const typeDir = KIND_TO_DIR[node.kind];
312
+ const itemPath = join(ctxDir, typeDir, `${name}.yml`);
313
+ if (!existsSync(itemPath)) {
314
+ console.error(`File not found: ${itemPath}`);
315
+ process.exit(1);
316
+ }
317
+ if (opts.diff) {
318
+ console.log(`\n--- a/${itemPath}\n+++ /dev/null`);
319
+ console.log(`- (File deleted: ${itemPath})`);
320
+ }
321
+ rmSync(itemPath);
322
+ }
323
+ console.log(`Successfully removed '${id}'.`);
324
+ }
325
+ // ── Command registration ──────────────────────────────────────────────
326
+ export function registerRm(program) {
327
+ program
328
+ .command("rm <id>")
329
+ .alias("remove")
330
+ .alias("delete")
331
+ .description("Remove an item safely, without leaving dangling references")
332
+ .option("--diff", "Show a diff of changes made")
333
+ .option("-f, --force", "Clean up dangling references and remove (required when dependents exist)")
334
+ .option("-r, --root <path>", "Override repository root")
335
+ .addHelpText("after", `
336
+ ID formats:
337
+ ctx.ItemName domain item (event/command/policy/aggregate/read_model/glossary)
338
+ actor.ActorName actor
339
+ flow.FlowName flow
340
+ adr-NNNN Architecture Decision Record
341
+ context.ctxName bounded context (or bare: ctxName)
342
+ `)
343
+ .action((id, opts) => {
344
+ const model = loadDomainModel({ root: opts.root });
345
+ const graph = DomainGraph.from(model);
346
+ const parsed = classifyId(id);
347
+ switch (parsed.kind) {
348
+ case "actor":
349
+ rmActor(parsed.name, graph, opts);
350
+ break;
351
+ case "flow":
352
+ rmFlow(parsed.name, graph, opts);
353
+ break;
354
+ case "adr":
355
+ rmAdr(parsed.name, graph, opts);
356
+ break;
357
+ case "context":
358
+ rmContext(parsed.name, graph, opts);
359
+ break;
360
+ case "domain":
361
+ rmDomainItem(id, graph, opts);
362
+ break;
89
363
  }
90
- console.log(`Successfully removed '${id}'.`);
91
364
  });
92
365
  }
93
366
  //# sourceMappingURL=rm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import type { NodeKind } from "../../shared/graph.js";
2
+ export declare const KIND_TO_DIR: Record<string, string>;
3
+ export type IdKind = "actor" | "flow" | "adr" | "context" | "domain";
4
+ export interface ParsedId {
5
+ kind: IdKind;
6
+ /** Simple name (actor name, flow name, ADR id, context name, or item name). */
7
+ name: string;
8
+ /** Context portion for domain items (e.g. "ordering" from "ordering.PlaceOrder"). */
9
+ ctx?: string;
10
+ /** Full original id string. */
11
+ raw: string;
12
+ }
13
+ /**
14
+ * Classify a user-supplied item id into its kind and component parts.
15
+ *
16
+ * Supported formats:
17
+ * actor.ActorName → actor
18
+ * flow.FlowName → flow
19
+ * adr-NNNN → adr
20
+ * context.ctxName → context
21
+ * ctxName → context (bare, no dot)
22
+ * ctx.ItemName → domain item
23
+ */
24
+ export declare function classifyId(id: string): ParsedId;
25
+ export declare function printDiff(filePath: string, oldContent: string, newContent: string): void;
26
+ /**
27
+ * List all YAML item files under a context directory (including context.yml).
28
+ */
29
+ export declare function listContextFiles(ctxPath: string): string[];
30
+ /**
31
+ * Collect all YAML item files across all contexts.
32
+ */
33
+ export declare function allDomainFiles(root?: string): string[];
34
+ /**
35
+ * Collect all ADR markdown files.
36
+ */
37
+ export declare function allAdrFiles(root?: string): string[];
38
+ /**
39
+ * Rewrite all occurrences of oldId → newId in a file using word-boundary
40
+ * regex. Returns true if any changes were made.
41
+ *
42
+ * Safe for scoped IDs like "ordering.OrderPlaced" and "adr-0001".
43
+ */
44
+ export declare function rewriteFile(filePath: string, oldId: string, newId: string, showDiff?: boolean): boolean;
45
+ /**
46
+ * Update an ADR markdown file's YAML frontmatter in-place.
47
+ * The mutator `fn` receives the parsed frontmatter object.
48
+ * Returns true if any changes were made.
49
+ */
50
+ export declare function updateAdrFrontmatter(filePath: string, fn: (fm: Record<string, unknown>) => boolean, showDiff?: boolean): boolean;
51
+ /**
52
+ * Remove a glossary entry (by term) from context.yml.
53
+ * Returns true if the entry was found and removed.
54
+ */
55
+ export declare function removeGlossaryEntry(ctxPath: string, term: string, showDiff?: boolean): boolean;
56
+ /**
57
+ * Rename a glossary term in context.yml.
58
+ * Returns true if the entry was found and renamed.
59
+ */
60
+ export declare function renameGlossaryEntry(ctxPath: string, oldTerm: string, newTerm: string, showDiff?: boolean): boolean;
61
+ /**
62
+ * Remove an actor from actors.yml. Returns true if removed.
63
+ */
64
+ export declare function removeActorEntry(root: string | undefined, actorName: string, showDiff?: boolean): boolean;
65
+ /**
66
+ * Rename an actor in actors.yml. Returns true if renamed.
67
+ */
68
+ export declare function renameActorEntry(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
69
+ /**
70
+ * Remove a reference to `targetName` from the appropriate YAML fields
71
+ * of a domain item file, based on the item's kind.
72
+ *
73
+ * `targetName` is the simple (unscoped) name used in within-context refs.
74
+ * `targetScopedId` is the full scoped id, used here only for actor removal
75
+ * from read_models where the actor name equals the `targetName`.
76
+ *
77
+ * Returns true if any changes were made.
78
+ */
79
+ export declare function cleanDomainItemRef(filePath: string, depKind: NodeKind, targetName: string, showDiff?: boolean): boolean;
80
+ /**
81
+ * Update a reference to `oldName` → `newName` in a domain item's YAML fields.
82
+ * Returns true if any changes were made.
83
+ */
84
+ export declare function renameDomainItemRef(filePath: string, depKind: NodeKind, oldName: string, newName: string, showDiff?: boolean): boolean;
85
+ /**
86
+ * Remove a flow from index.yml by name. Returns true if removed.
87
+ */
88
+ export declare function removeFlowFromIndex(root: string | undefined, flowName: string, showDiff?: boolean): boolean;
89
+ /**
90
+ * Rename a flow in index.yml. Returns true if renamed.
91
+ */
92
+ export declare function renameFlowInIndex(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
93
+ /**
94
+ * Remove all flow steps that reference a given scoped domain item id.
95
+ * Flows that become empty (0 steps) are removed entirely.
96
+ * Returns the number of steps removed.
97
+ */
98
+ export declare function removeFlowStepsForItem(root: string | undefined, scopedId: string, showDiff?: boolean): number;
99
+ /**
100
+ * Remove all flow steps that reference any item in a given context.
101
+ * Flows that become empty are removed entirely.
102
+ */
103
+ export declare function removeFlowStepsForContext(root: string | undefined, ctxName: string, showDiff?: boolean): number;
104
+ /**
105
+ * Update flow steps that reference an old scoped id to use a new scoped id.
106
+ * Returns the number of steps updated.
107
+ */
108
+ export declare function updateFlowStepsForItem(root: string | undefined, oldScopedId: string, newScopedId: string, showDiff?: boolean): number;
109
+ /**
110
+ * Remove a context entry from index.yml. Returns true if removed.
111
+ */
112
+ export declare function removeContextFromIndex(root: string | undefined, ctxName: string, showDiff?: boolean): boolean;
113
+ /**
114
+ * Rename a context entry in index.yml. Returns true if renamed.
115
+ */
116
+ export declare function renameContextInIndex(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
117
+ //# sourceMappingURL=refactor-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor-helpers.d.ts","sourceRoot":"","sources":["../../../src/features/refactor/refactor-helpers.ts"],"names":[],"mappings":"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"}