domain-knowledge-kit 0.2.7 → 0.2.9

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 (81) hide show
  1. package/README.md +45 -27
  2. package/dist/cli.js +23 -0
  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 +3 -2
  6. package/dist/features/agent/commands/init.js.map +1 -1
  7. package/dist/features/agent/commands/prime.d.ts +4 -1
  8. package/dist/features/agent/commands/prime.d.ts.map +1 -1
  9. package/dist/features/agent/commands/prime.js +213 -61
  10. package/dist/features/agent/commands/prime.js.map +1 -1
  11. package/dist/features/audit/commands/stats.d.ts +3 -0
  12. package/dist/features/audit/commands/stats.d.ts.map +1 -0
  13. package/dist/features/audit/commands/stats.js +90 -0
  14. package/dist/features/audit/commands/stats.js.map +1 -0
  15. package/dist/features/pipeline/commands/validate.d.ts.map +1 -1
  16. package/dist/features/pipeline/commands/validate.js +32 -13
  17. package/dist/features/pipeline/commands/validate.js.map +1 -1
  18. package/dist/features/pipeline/renderer.js +1 -1
  19. package/dist/features/pipeline/renderer.js.map +1 -1
  20. package/dist/features/pipeline/tests/indexer.test.js +5 -5
  21. package/dist/features/pipeline/tests/indexer.test.js.map +1 -1
  22. package/dist/features/pipeline/tests/validator.test.js +25 -25
  23. package/dist/features/pipeline/tests/validator.test.js.map +1 -1
  24. package/dist/features/query/commands/graph.d.ts +3 -0
  25. package/dist/features/query/commands/graph.d.ts.map +1 -0
  26. package/dist/features/query/commands/graph.js +86 -0
  27. package/dist/features/query/commands/graph.js.map +1 -0
  28. package/dist/features/query/commands/search.d.ts +3 -0
  29. package/dist/features/query/commands/search.d.ts.map +1 -1
  30. package/dist/features/query/commands/search.js +29 -8
  31. package/dist/features/query/commands/search.js.map +1 -1
  32. package/dist/features/query/commands/summary.d.ts +7 -0
  33. package/dist/features/query/commands/summary.d.ts.map +1 -0
  34. package/dist/features/query/commands/summary.js +43 -0
  35. package/dist/features/query/commands/summary.js.map +1 -0
  36. package/dist/features/query/tests/searcher.test.js +5 -5
  37. package/dist/features/query/tests/searcher.test.js.map +1 -1
  38. package/dist/features/refactor/commands/rename.d.ts +3 -0
  39. package/dist/features/refactor/commands/rename.d.ts.map +1 -0
  40. package/dist/features/refactor/commands/rename.js +152 -0
  41. package/dist/features/refactor/commands/rename.js.map +1 -0
  42. package/dist/features/refactor/commands/rm.d.ts +3 -0
  43. package/dist/features/refactor/commands/rm.d.ts.map +1 -0
  44. package/dist/features/refactor/commands/rm.js +93 -0
  45. package/dist/features/refactor/commands/rm.js.map +1 -0
  46. package/dist/features/scaffold/commands/add-item.d.ts +26 -0
  47. package/dist/features/scaffold/commands/add-item.d.ts.map +1 -0
  48. package/dist/features/scaffold/commands/add-item.js +221 -0
  49. package/dist/features/scaffold/commands/add-item.js.map +1 -0
  50. package/dist/features/scaffold/commands/new-adr.d.ts +12 -0
  51. package/dist/features/scaffold/commands/new-adr.d.ts.map +1 -0
  52. package/dist/features/scaffold/commands/new-adr.js +112 -0
  53. package/dist/features/scaffold/commands/new-adr.js.map +1 -0
  54. package/dist/features/scaffold/commands/new-context.d.ts +17 -0
  55. package/dist/features/scaffold/commands/new-context.d.ts.map +1 -0
  56. package/dist/features/scaffold/commands/new-context.js +77 -0
  57. package/dist/features/scaffold/commands/new-context.js.map +1 -0
  58. package/dist/features/scaffold/commands/new-domain.d.ts +14 -0
  59. package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -0
  60. package/dist/features/scaffold/commands/new-domain.js +95 -0
  61. package/dist/features/scaffold/commands/new-domain.js.map +1 -0
  62. package/dist/shared/errors.js +1 -1
  63. package/dist/shared/errors.js.map +1 -1
  64. package/dist/shared/index.d.ts +1 -1
  65. package/dist/shared/index.d.ts.map +1 -1
  66. package/dist/shared/index.js +1 -1
  67. package/dist/shared/index.js.map +1 -1
  68. package/dist/shared/loader.js +2 -2
  69. package/dist/shared/paths.d.ts +32 -11
  70. package/dist/shared/paths.d.ts.map +1 -1
  71. package/dist/shared/paths.js +49 -19
  72. package/dist/shared/paths.js.map +1 -1
  73. package/dist/shared/tests/graph.test.js +9 -9
  74. package/dist/shared/tests/graph.test.js.map +1 -1
  75. package/dist/shared/tests/loader.test.js +20 -20
  76. package/dist/shared/tests/loader.test.js.map +1 -1
  77. package/dist/shared/tests/verify-collision-fix.test.js +1 -1
  78. package/dist/shared/tests/verify-collision-fix.test.js.map +1 -1
  79. package/dist/shared/types/domain.d.ts +4 -4
  80. package/dist/shared/types/domain.d.ts.map +1 -1
  81. package/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { loadDomainModel } from "../../../shared/loader.js";
4
+ import { DomainGraph } from "../../../shared/graph.js";
5
+ function escapeMermaidId(id) {
6
+ return id.replace(/[\.\-]/g, "_");
7
+ }
8
+ export function registerGraph(program) {
9
+ program
10
+ .command("graph")
11
+ .description("Generate a Mermaid.js flowchart of the domain model")
12
+ .option("-o, --output <file>", "Output file path (default: .dkk/docs/graph.md)")
13
+ .option("-d, --depth <n>", "Maximum traversal depth for large graphs", parseInt, 3)
14
+ .option("-r, --root <path>", "Override repository root")
15
+ .action((opts) => {
16
+ const model = loadDomainModel({ root: opts.root });
17
+ const graph = DomainGraph.from(model);
18
+ const outPath = opts.output || (opts.root ? join(opts.root, ".dkk", "docs", "graph.md") : join(process.cwd(), ".dkk", "docs", "graph.md"));
19
+ const lines = ["```mermaid", "flowchart TD"];
20
+ // Write nodes
21
+ const writtenNodes = new Set();
22
+ for (const [id, node] of graph.nodes) {
23
+ const mId = escapeMermaidId(id);
24
+ writtenNodes.add(mId);
25
+ const label = node.name;
26
+ let shape = `[${label}]`;
27
+ switch (node.kind) {
28
+ case "event":
29
+ shape = `> ${label} ]`;
30
+ break;
31
+ case "command":
32
+ shape = `([${label}])`;
33
+ break;
34
+ case "aggregate":
35
+ shape = `[[${label}]]`;
36
+ break;
37
+ case "policy":
38
+ shape = `{{${label}}}`;
39
+ break;
40
+ case "read_model":
41
+ shape = `[(${label})]`;
42
+ break;
43
+ case "actor":
44
+ shape = `(( ${label} ))`;
45
+ break;
46
+ case "flow":
47
+ shape = `[[${label}]]`;
48
+ break;
49
+ case "adr":
50
+ shape = `[\\${label}\\]`;
51
+ break;
52
+ }
53
+ lines.push(` ${mId}${shape}`);
54
+ }
55
+ lines.push("\n %% Relationships");
56
+ // Write edges
57
+ for (const edge of graph.edges) {
58
+ // Filter out internal structural edges
59
+ if (edge.label === "contains" || edge.label === "flow_next" || edge.label === "adr_ref") {
60
+ continue;
61
+ }
62
+ const from = escapeMermaidId(edge.from);
63
+ const to = escapeMermaidId(edge.to);
64
+ let link = `-->`;
65
+ if (edge.label === "subscribes_to" || edge.label === "used_by") {
66
+ link = `-.->`;
67
+ }
68
+ else if (edge.label === "handles") {
69
+ link = `==>`;
70
+ }
71
+ lines.push(` ${from} ${link}|${edge.label}| ${to}`);
72
+ }
73
+ lines.push("```\n");
74
+ const content = lines.join("\n");
75
+ try {
76
+ writeFileSync(outPath, content, "utf-8");
77
+ console.log(`Generated Mermaid graph at ${outPath}`);
78
+ }
79
+ catch (err) {
80
+ const msg = err instanceof Error ? err.message : String(err);
81
+ console.error(`Failed to write graph to ${outPath}:`, msg);
82
+ process.exit(1);
83
+ }
84
+ });
85
+ }
86
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../src/features/query/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Runs a full-text search against the SQLite FTS5 index and displays
5
5
  * ranked results with optional context/type/tag filters.
6
+ *
7
+ * When the search index does not exist yet, the command automatically
8
+ * builds it from the domain model (unless `--no-auto-index` is set).
6
9
  */
7
10
  import type { Command as Cmd } from "commander";
8
11
  /** Register the `search` subcommand. */
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/features/query/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA+DjD"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/features/query/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAMhD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAyFjD"}
@@ -1,17 +1,19 @@
1
1
  import { search } from "../searcher.js";
2
2
  import { DomainGraph } from "../../../shared/graph.js";
3
3
  import { loadDomainModel } from "../../../shared/loader.js";
4
+ import { buildIndex } from "../../pipeline/indexer.js";
4
5
  /** Register the `search` subcommand. */
5
6
  export function registerSearch(program) {
6
7
  program
7
8
  .command("search <query>")
8
- .description("Full-text search across domain items (requires index; run 'domain-knowledge-kit render' first)")
9
+ .description("Full-text search across domain items (auto-builds index if needed)")
9
10
  .option("-c, --context <name>", "Filter results to a bounded context")
10
11
  .option("-t, --type <type>", "Filter results by item type")
11
12
  .option("--tag <tag>", "Filter results by tag/keyword")
12
13
  .option("--limit <n>", "Maximum results to return", "20")
13
14
  .option("--expand", "Expand top results with graph neighbours")
14
15
  .option("--json", "Output as JSON")
16
+ .option("--no-auto-index", "Fail instead of auto-building a missing search index")
15
17
  .option("-r, --root <path>", "Override repository root")
16
18
  .action((query, opts) => {
17
19
  const filters = {
@@ -19,16 +21,35 @@ export function registerSearch(program) {
19
21
  type: opts.type,
20
22
  tag: opts.tag,
21
23
  };
24
+ const searchOpts = {
25
+ root: opts.root,
26
+ limit: parseInt(opts.limit ?? "20", 10),
27
+ };
22
28
  let graph;
23
- if (opts.expand) {
29
+ /** Execute the search (shared by first attempt and retry). */
30
+ const doSearch = () => {
31
+ if (opts.expand && !graph) {
32
+ const model = loadDomainModel({ root: opts.root });
33
+ graph = DomainGraph.from(model);
34
+ }
35
+ return search(query, filters, { ...searchOpts, graph });
36
+ };
37
+ let results;
38
+ try {
39
+ results = doSearch();
40
+ }
41
+ catch (err) {
42
+ const isIndexMissing = err instanceof Error && err.message.includes("Search index not found");
43
+ if (!isIndexMissing || opts.autoIndex === false) {
44
+ throw err;
45
+ }
46
+ // Auto-build the search index and retry.
47
+ process.stderr.write("Search index not found — building…");
24
48
  const model = loadDomainModel({ root: opts.root });
25
- graph = DomainGraph.from(model);
49
+ buildIndex(model, { root: opts.root });
50
+ process.stderr.write(" done.\n");
51
+ results = doSearch();
26
52
  }
27
- const results = search(query, filters, {
28
- root: opts.root,
29
- limit: parseInt(opts.limit ?? "20", 10),
30
- graph,
31
- });
32
53
  if (opts.json) {
33
54
  console.log(JSON.stringify(results, null, 2));
34
55
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/features/query/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/features/query/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `domain summary <id>` command — concise overview of an item.
3
+ */
4
+ import type { Command as Cmd } from "commander";
5
+ /** Register the `summary` subcommand. */
6
+ export declare function registerSummary(program: Cmd): void;
7
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../../src/features/query/commands/summary.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhD,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAwClD"}
@@ -0,0 +1,43 @@
1
+ import { loadDomainModel } from "../../../shared/loader.js";
2
+ import { DomainGraph } from "../../../shared/graph.js";
3
+ /** Register the `summary` subcommand. */
4
+ export function registerSummary(program) {
5
+ program
6
+ .command("summary <id>")
7
+ .description("Show a concise summary of a domain item (useful for AI context)")
8
+ .option("--json", "Output as JSON")
9
+ .option("--minify", "Minify JSON output")
10
+ .option("-r, --root <path>", "Override repository root")
11
+ .action((id, opts) => {
12
+ const model = loadDomainModel({ root: opts.root });
13
+ const graph = DomainGraph.from(model);
14
+ const node = graph.nodes.get(id);
15
+ if (!node) {
16
+ if (opts.json) {
17
+ console.log(JSON.stringify({ error: `Item "${id}" not found` }, null, opts.minify ? 0 : 2));
18
+ }
19
+ else {
20
+ console.error(`Error: Item "${id}" not found.`);
21
+ }
22
+ process.exit(1);
23
+ }
24
+ const related = Array.from(graph.getRelated(id, 1));
25
+ if (opts.json) {
26
+ const payload = {
27
+ id: node.id,
28
+ name: node.name,
29
+ kind: node.kind,
30
+ context: node.context,
31
+ related,
32
+ };
33
+ console.log(JSON.stringify(payload, null, opts.minify ? 0 : 2));
34
+ return;
35
+ }
36
+ console.log(`\n# [${node.kind}] ${node.name}${node.context ? ` (Context: ${node.context})` : ""}\n`);
37
+ console.log(`Related (${related.length}):`);
38
+ for (const r of related)
39
+ console.log(` - ${r}`);
40
+ console.log();
41
+ });
42
+ }
43
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../../src/features/query/commands/summary.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,OAAY;IAC1C,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;SACxC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,CAAC,EAAU,EAAE,IAAyD,EAAE,EAAE;QAChF,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,OAAO,GAAG;gBACd,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO;aACR,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -13,7 +13,7 @@ import { buildIndex } from "../../pipeline/indexer.js";
13
13
  import { search } from "../searcher.js";
14
14
  // ── Fixture setup ─────────────────────────────────────────────────────
15
15
  const TMP = join(tmpdir(), `dkk-search-test-${Date.now()}`);
16
- const DOMAIN = join(TMP, "domain");
16
+ const DOMAIN = join(TMP, ".dkk", "domain");
17
17
  const CONTEXTS = join(DOMAIN, "contexts");
18
18
  const ADR_DIR = join(TMP, ".dkk", "adr");
19
19
  const DB_PATH = join(TMP, ".dkk", "index.db");
@@ -28,7 +28,7 @@ function setup() {
28
28
  mkdirSync(join(CONTEXTS, "shipping", "aggregates"), { recursive: true });
29
29
  mkdirSync(join(CONTEXTS, "shipping", "read-models"), { recursive: true });
30
30
  mkdirSync(ADR_DIR, { recursive: true });
31
- // domain/index.yml
31
+ // .dkk/domain/index.yml
32
32
  writeFileSync(join(DOMAIN, "index.yml"), [
33
33
  "contexts:",
34
34
  " - name: ordering",
@@ -46,7 +46,7 @@ function setup() {
46
46
  " - ref: shipping.ShipOrder",
47
47
  " type: command",
48
48
  ].join("\n"));
49
- // domain/actors.yml
49
+ // .dkk/domain/actors.yml
50
50
  writeFileSync(join(DOMAIN, "actors.yml"), [
51
51
  "actors:",
52
52
  " - name: Customer",
@@ -56,7 +56,7 @@ function setup() {
56
56
  " type: system",
57
57
  ' description: "Automated warehouse robot"',
58
58
  ].join("\n"));
59
- // domain/contexts/ordering/ — per-item directory
59
+ // .dkk/domain/contexts/ordering/ — per-item directory
60
60
  writeFileSync(join(CONTEXTS, "ordering", "context.yml"), [
61
61
  "name: ordering",
62
62
  'description: "Handles the order lifecycle"',
@@ -124,7 +124,7 @@ function setup() {
124
124
  "used_by:",
125
125
  " - Customer",
126
126
  ].join("\n"));
127
- // domain/contexts/shipping/ — per-item directory
127
+ // .dkk/domain/contexts/shipping/ — per-item directory
128
128
  writeFileSync(join(CONTEXTS, "shipping", "context.yml"), [
129
129
  "name: shipping",
130
130
  'description: "Handles shipment tracking"',
@@ -1 +1 @@
1
- {"version":3,"file":"searcher.test.js","sourceRoot":"","sources":["../../../../src/features/query/tests/searcher.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searcher.test.js","sourceRoot":"","sources":["../../../../src/features/query/tests/searcher.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command as Cmd } from "commander";
2
+ export declare function registerRename(program: Cmd): void;
3
+ //# sourceMappingURL=rename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename.d.ts","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rename.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAkChD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAyIjD"}
@@ -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