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
package/README.md CHANGED
@@ -18,30 +18,41 @@ Domain Knowledge Kit (DKK) is a CLI tool for teams practicing Domain-Driven Desi
18
18
  # Install
19
19
  npm install -g domain-knowledge-kit
20
20
 
21
- # Create a bounded context
22
- cat > domain/contexts/ordering.yml << 'EOF'
21
+ # Create a bounded context (per-item directory format)
22
+ mkdir -p .dkk/domain/contexts/ordering/{events,commands,aggregates}
23
+
24
+ # Context metadata
25
+ cat > .dkk/domain/contexts/ordering/context.yml << 'EOF'
23
26
  name: ordering
24
27
  description: Handles customer order lifecycle.
25
- events:
26
- - name: OrderPlaced
27
- description: Raised when a customer order is confirmed.
28
- raised_by: Order
29
- commands:
30
- - name: PlaceOrder
31
- description: Submit a new customer order.
32
- handled_by: Order
33
- aggregates:
34
- - name: Order
35
- description: Manages order state and invariants.
36
- handles: [PlaceOrder]
37
- emits: [OrderPlaced]
38
- policies: []
39
- read_models: []
40
- glossary: []
41
28
  EOF
42
29
 
43
- # Register it
44
- # Add "- name: ordering" to the contexts array in domain/index.yml
30
+ # One file per domain item
31
+ cat > .dkk/domain/contexts/ordering/events/OrderPlaced.yml << 'EOF'
32
+ name: OrderPlaced
33
+ description: Raised when a customer order is confirmed.
34
+ raised_by: Order
35
+ EOF
36
+
37
+ cat > .dkk/domain/contexts/ordering/commands/PlaceOrder.yml << 'EOF'
38
+ name: PlaceOrder
39
+ description: Submit a new customer order.
40
+ handled_by: Order
41
+ EOF
42
+
43
+ cat > .dkk/domain/contexts/ordering/aggregates/Order.yml << 'EOF'
44
+ name: Order
45
+ description: Manages order state and invariants.
46
+ handles:
47
+ commands:
48
+ - PlaceOrder
49
+ emits:
50
+ events:
51
+ - OrderPlaced
52
+ EOF
53
+
54
+ # Register it in .dkk/domain/index.yml
55
+ # Add "- name: ordering" to the contexts array
45
56
 
46
57
  # Validate and render
47
58
  dkk validate
@@ -96,13 +107,20 @@ Agents can then search, show, and traverse your domain model — making domain-a
96
107
  ## Directory Layout
97
108
 
98
109
  ```
99
- domain/ # Domain model (YAML)
100
- index.yml # Contexts + flows
101
- actors.yml # Global actors
102
- contexts/<name>.yml # Bounded context definitions
103
- .dkk/ # Generated + managed
104
- adr/ # Architecture Decision Records
105
- docs/ # Generated docs (do not edit)
110
+ .dkk/ # Domain model + generated + managed
111
+ domain/ # Domain model (YAML)
112
+ index.yml # Contexts + flows
113
+ actors.yml # Global actors
114
+ contexts/ # Bounded contexts (one dir each)
115
+ <name>/ # Context directory
116
+ context.yml # Context metadata + glossary
117
+ events/ # One .yml file per event
118
+ commands/ # One .yml file per command
119
+ aggregates/ # One .yml file per aggregate
120
+ policies/ # One .yml file per policy
121
+ read-models/ # One .yml file per read model
122
+ adr/ # Architecture Decision Records
123
+ docs/ # Generated docs (do not edit)
106
124
  src/ # Source code (vertical slices)
107
125
  tools/dkk/ # Schemas + templates
108
126
  schema/ # JSON Schemas for validation
package/dist/cli.js CHANGED
@@ -2,14 +2,23 @@
2
2
  import { Command } from "commander";
3
3
  import { registerList } from "./features/query/commands/list.js";
4
4
  import { registerShow } from "./features/query/commands/show.js";
5
+ import { registerSummary } from "./features/query/commands/summary.js";
5
6
  import { registerSearch } from "./features/query/commands/search.js";
6
7
  import { registerRelated } from "./features/query/commands/related.js";
8
+ import { registerGraph } from "./features/query/commands/graph.js";
7
9
  import { registerValidate } from "./features/pipeline/commands/validate.js";
8
10
  import { registerRender } from "./features/pipeline/commands/render.js";
9
11
  import { registerAdrShow } from "./features/adr/commands/adr-show.js";
10
12
  import { registerAdrRelated } from "./features/adr/commands/adr-related.js";
11
13
  import { registerInit } from "./features/agent/commands/init.js";
12
14
  import { registerPrime } from "./features/agent/commands/prime.js";
15
+ import { registerNewDomain } from "./features/scaffold/commands/new-domain.js";
16
+ import { registerNewContext } from "./features/scaffold/commands/new-context.js";
17
+ import { registerNewAdr } from "./features/scaffold/commands/new-adr.js";
18
+ import { registerAddItem } from "./features/scaffold/commands/add-item.js";
19
+ import { registerRename } from "./features/refactor/commands/rename.js";
20
+ import { registerRm } from "./features/refactor/commands/rm.js";
21
+ import { registerStats } from "./features/audit/commands/stats.js";
13
22
  import { formatCliError } from "./shared/errors.js";
14
23
  /** Whether to show full stack traces (set DEBUG=1 in env). */
15
24
  const DEBUG = Boolean(process.env.DEBUG);
@@ -22,18 +31,32 @@ program
22
31
  // Top-level commands
23
32
  registerList(program);
24
33
  registerShow(program);
34
+ registerSummary(program);
25
35
  registerSearch(program);
26
36
  registerRelated(program);
37
+ registerGraph(program);
27
38
  registerValidate(program);
28
39
  registerRender(program);
29
40
  registerInit(program);
30
41
  registerPrime(program);
42
+ registerRename(program);
43
+ registerRm(program);
44
+ registerStats(program);
31
45
  // ADR sub-command group
32
46
  const adrCmd = program
33
47
  .command("adr")
34
48
  .description("ADR-related commands");
35
49
  registerAdrShow(adrCmd);
36
50
  registerAdrRelated(adrCmd);
51
+ // "new" sub-command group
52
+ const newCmd = program
53
+ .command("new")
54
+ .description("Scaffold new domain structures");
55
+ registerNewDomain(newCmd);
56
+ registerNewContext(newCmd);
57
+ registerNewAdr(newCmd);
58
+ // Top-level "add" command for individual domain items
59
+ registerAddItem(program);
37
60
  program.parseAsync().catch((err) => {
38
61
  console.error(`Error: ${formatCliError(err)}`);
39
62
  if (DEBUG && err instanceof Error && err.stack) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEzC,yEAAyE;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,2BAA2B,CAAC;KACxC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,qBAAqB;AACrB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AAEvB,wBAAwB;AACxB,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE3B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,KAAK,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA6ChD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAmC/C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA8ChD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAmC/C"}
@@ -29,9 +29,10 @@ dkk render # Validate, render docs, rebuild search index
29
29
  Before committing domain changes, run:
30
30
 
31
31
  \`\`\`bash
32
- dkk validate
33
- dkk render
32
+ dkk render # Validates → renders docs → rebuilds search index
34
33
  \`\`\`
34
+
35
+ \`dkk validate\` is available as a quick dry-run check (no rendering).
35
36
  `.trimStart();
36
37
  }
37
38
  /** Build the full delimited block. */
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAEtC,iDAAiD;AACjD,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BR,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAED,sCAAsC;AACtC,SAAS,gBAAgB;IACvB,OAAO,GAAG,YAAY,KAAK,UAAU,EAAE,GAAG,UAAU,IAAI,CAAC;AAC3D,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,YAAY,CAAC,OAAY;IACvC,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,uCAAuC;YACvC,aAAa,CAAC,UAAU,EAAE,2BAA2B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC1D,iFAAiF;YACjF,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvF,aAAa,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1D,aAAa,CAAC,UAAU,EAAE,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAEtC,iDAAiD;AACjD,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BR,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAED,sCAAsC;AACtC,SAAS,gBAAgB;IACvB,OAAO,GAAG,YAAY,KAAK,UAAU,EAAE,GAAG,UAAU,IAAI,CAAC;AAC3D,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,YAAY,CAAC,OAAY;IACvC,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,uCAAuC;YACvC,aAAa,CAAC,UAAU,EAAE,2BAA2B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC1D,iFAAiF;YACjF,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvF,aAAa,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1D,aAAa,CAAC,UAAU,EAAE,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * `dkk prime` command — output full agent context to stdout.
3
3
  *
4
- * Prints a comprehensive DKK usage guide for AI agent consumption.
4
+ * Prints a comprehensive DKK usage guide for AI agent consumption,
5
+ * followed by a dynamic "Current Domain Summary" section generated
6
+ * from the live domain model on disk.
7
+ *
5
8
  * Hardcoded template covering project overview, core principles,
6
9
  * domain structure, retrieval workflow, change workflow, ID conventions,
7
10
  * CLI reference, and file conventions.
@@ -1 +1 @@
1
- {"version":3,"file":"prime.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA0QhD,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAOhD"}
1
+ {"version":3,"file":"prime.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AA8ahD,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAYhD"}
@@ -1,3 +1,7 @@
1
+ import { existsSync } from "node:fs";
2
+ import { loadDomainModel } from "../../../shared/loader.js";
3
+ import { forEachItem } from "../../../shared/item-visitor.js";
4
+ import { domainDir } from "../../../shared/paths.js";
1
5
  /** The full agent context document. */
2
6
  function primeContent() {
3
7
  return `# Domain Knowledge Kit — Agent Context
@@ -8,20 +12,25 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
8
12
 
9
13
  ## Core Principles
10
14
 
11
- 1. **Domain YAML is the single source of truth.** Never generate domain knowledge from code; always read and edit the YAML files under \`domain/\`.
15
+ 1. **Domain YAML is the single source of truth.** Never generate domain knowledge from code; always read and edit the YAML files under \`.dkk/domain/\`.
12
16
  2. **ADRs live in \`.dkk/adr/\`** as Markdown files with YAML frontmatter. They link to domain items via \`domain_refs\` and domain items link back via \`adr_refs\`.
13
- 3. **Every change to domain files must pass quality gates:** run \`dkk validate\` then \`dkk render\` before committing.
17
+ 3. **Every change to domain files must pass quality gates:** run \`dkk render\` before committing (validates automatically, then renders docs and rebuilds the search index). Use \`dkk validate\` for a quick dry-run check without rendering.
14
18
 
15
19
  ## Domain Model Structure
16
20
 
17
21
  \`\`\`
18
- domain/
19
- index.yml # Top-level: registered contexts + cross-context flows
20
- actors.yml # Global actors (human | system | external)
21
- contexts/
22
- <name>.yml # Bounded context with events, commands, policies,
23
- # aggregates, read_models, glossary
24
22
  .dkk/
23
+ domain/
24
+ index.yml # Top-level: registered contexts + cross-context flows
25
+ actors.yml # Global actors (human | system | external)
26
+ contexts/
27
+ <name>/ # One directory per bounded context
28
+ context.yml # Context metadata (name, description, glossary)
29
+ events/ # One .yml file per domain event
30
+ commands/ # One .yml file per command
31
+ aggregates/ # One .yml file per aggregate
32
+ policies/ # One .yml file per policy
33
+ read-models/ # One .yml file per read model
25
34
  adr/
26
35
  adr-NNNN.md # Architecture Decision Records (YAML frontmatter)
27
36
  \`\`\`
@@ -102,18 +111,18 @@ When modifying the domain model:
102
111
  dkk list --context <name>
103
112
  \`\`\`
104
113
  2. **Edit YAML files directly** — Apply changes to the appropriate files:
105
- - **New context:** Create \`domain/contexts/<name>.yml\` and register in \`domain/index.yml\`.
106
- - **New domain item:** Add to the correct array (\`events\`, \`commands\`, \`policies\`, \`aggregates\`, \`read_models\`, \`glossary\`) in \`domain/contexts/<name>.yml\`.
107
- - **New actor:** Add to \`domain/actors.yml\` under \`actors\`.
108
- - **New flow:** Add to \`domain/index.yml\` under \`flows\`.
109
- - **Modified item:** Edit in place, preserving all existing fields.
114
+ - **New context:** Create \`.dkk/domain/contexts/<name>/context.yml\` with name/description/glossary, create subdirs (\`events/\`, \`commands/\`, etc.), and register in \`.dkk/domain/index.yml\`.
115
+ - **New domain item:** Create a new \`.yml\` file in the correct subdirectory (e.g. \`.dkk/domain/contexts/<name>/events/OrderPlaced.yml\`).
116
+ - **New actor:** Add to \`.dkk/domain/actors.yml\` under \`actors\`.
117
+ - **New flow:** Add to \`.dkk/domain/index.yml\` under \`flows\`.
118
+ - **Modified item:** Edit the item's \`.yml\` file in place, preserving all existing fields.
110
119
  3. **Maintain referential integrity:**
111
120
  - \`adr_refs\` must point to existing ADRs in \`.dkk/adr/\`.
112
121
  - \`domain_refs\` in ADR frontmatter must point to existing domain items.
113
122
  - Update cross-references (\`handles\`, \`emits\`, \`triggers\`, \`subscribes_to\`, \`used_by\`, \`raised_by\`, \`handled_by\`, \`actor\`) on related items to stay consistent.
114
123
  - Every new event should have \`raised_by\` pointing to its aggregate.
115
124
  - Every new command should have \`handled_by\` pointing to its aggregate.
116
- - Update aggregate \`handles\` and \`emits\` arrays when adding commands/events.
125
+ - Update aggregate \`handles.commands\` and \`emits.events\` arrays when adding commands/events.
117
126
  4. **Follow naming conventions:**
118
127
  - Items: PascalCase (\`OrderPlaced\`, \`PlaceOrder\`).
119
128
  - Contexts: kebab-case (\`ordering\`, \`inventory-management\`).
@@ -125,13 +134,14 @@ When modifying the domain model:
125
134
  - Consider creating a new ADR if the change introduces a significant decision.
126
135
  6. **Run quality gates:**
127
136
  \`\`\`bash
128
- dkk validate
129
- dkk render
137
+ dkk render # Validates → renders docs → rebuilds search index
130
138
  \`\`\`
131
139
 
132
140
  ### YAML Structure Reference
133
141
 
134
- **Context file** (\`domain/contexts/<name>.yml\`):
142
+ Each domain item is a separate YAML file in a typed subdirectory under the context directory.
143
+
144
+ **Context metadata** (\`.dkk/domain/contexts/<name>/context.yml\`):
135
145
 
136
146
  \`\`\`yaml
137
147
  name: ordering
@@ -139,49 +149,71 @@ description: Handles customer order lifecycle.
139
149
  glossary:
140
150
  - term: Order
141
151
  definition: A customer's request to purchase items.
142
- events:
143
- - name: OrderPlaced
144
- description: Raised when a customer order is confirmed.
145
- fields:
146
- - name: orderId
147
- type: UUID
148
- raised_by: Order
149
- adr_refs:
150
- - adr-0001
151
- commands:
152
- - name: PlaceOrder
153
- description: Submit a new customer order.
154
- fields:
155
- - name: items
156
- type: "OrderItem[]"
157
- actor: Customer
158
- handled_by: Order
159
- policies:
160
- - name: SendConfirmationEmail
161
- description: Sends email when order is placed.
162
- when:
163
- events:
164
- - OrderPlaced
165
- then:
166
- commands:
167
- - NotifyCustomer
168
- aggregates:
169
- - name: Order
170
- description: Manages order state and invariants.
171
- handles:
172
- - PlaceOrder
173
- emits:
174
- - OrderPlaced
175
- read_models:
176
- - name: OrderSummary
177
- description: Read-optimized view of order details.
178
- subscribes_to:
179
- - OrderPlaced
180
- used_by:
181
- - Customer
182
152
  \`\`\`
183
153
 
184
- **Actors file** (\`domain/actors.yml\`):
154
+ **Event** (\`.dkk/domain/contexts/<name>/events/OrderPlaced.yml\`):
155
+
156
+ \`\`\`yaml
157
+ name: OrderPlaced
158
+ description: Raised when a customer order is confirmed.
159
+ fields:
160
+ - name: orderId
161
+ type: UUID
162
+ raised_by: Order
163
+ adr_refs:
164
+ - adr-0001
165
+ \`\`\`
166
+
167
+ **Command** (\`.dkk/domain/contexts/<name>/commands/PlaceOrder.yml\`):
168
+
169
+ \`\`\`yaml
170
+ name: PlaceOrder
171
+ description: Submit a new customer order.
172
+ fields:
173
+ - name: items
174
+ type: "OrderItem[]"
175
+ actor: Customer
176
+ handled_by: Order
177
+ \`\`\`
178
+
179
+ **Policy** (\`.dkk/domain/contexts/<name>/policies/SendConfirmationEmail.yml\`):
180
+
181
+ \`\`\`yaml
182
+ name: SendConfirmationEmail
183
+ description: Sends email when order is placed.
184
+ when:
185
+ events:
186
+ - OrderPlaced
187
+ then:
188
+ commands:
189
+ - NotifyCustomer
190
+ \`\`\`
191
+
192
+ **Aggregate** (\`.dkk/domain/contexts/<name>/aggregates/Order.yml\`):
193
+
194
+ \`\`\`yaml
195
+ name: Order
196
+ description: Manages order state and invariants.
197
+ handles:
198
+ commands:
199
+ - PlaceOrder
200
+ emits:
201
+ events:
202
+ - OrderPlaced
203
+ \`\`\`
204
+
205
+ **Read model** (\`.dkk/domain/contexts/<name>/read-models/OrderSummary.yml\`):
206
+
207
+ \`\`\`yaml
208
+ name: OrderSummary
209
+ description: Read-optimized view of order details.
210
+ subscribes_to:
211
+ - OrderPlaced
212
+ used_by:
213
+ - Customer
214
+ \`\`\`
215
+
216
+ **Actors file** (\`.dkk/domain/actors.yml\`):
185
217
 
186
218
  \`\`\`yaml
187
219
  actors:
@@ -190,7 +222,7 @@ actors:
190
222
  description: End user who places and tracks orders.
191
223
  \`\`\`
192
224
 
193
- **Index file** (\`domain/index.yml\`):
225
+ **Index file** (\`.dkk/domain/index.yml\`):
194
226
 
195
227
  \`\`\`yaml
196
228
  contexts:
@@ -240,7 +272,7 @@ The validator checks:
240
272
 
241
273
  - **Schema conformance** — Each YAML file is validated against its JSON Schema.
242
274
  - **Cross-references** — All item-to-item, item-to-ADR, and ADR-to-item references resolve correctly.
243
- - **Context registration** — Every context file in \`domain/contexts/\` is registered in \`domain/index.yml\`.
275
+ - **Context registration** — Every context directory in \`.dkk/domain/contexts/\` is registered in \`.dkk/domain/index.yml\`.
244
276
 
245
277
  ## Generated Documentation
246
278
 
@@ -261,13 +293,133 @@ Do not edit files under \`.dkk/docs/\` by hand; they are regenerated on each ren
261
293
  - Generated documentation goes to \`.dkk/docs/\` (do not edit by hand).
262
294
  `;
263
295
  }
296
+ // ── Dynamic domain summary ───────────────────────────────────────────
297
+ /**
298
+ * Build a dynamic "Current Domain Summary" section from the live domain
299
+ * model on disk. Returns the Markdown string to append after the static
300
+ * instructions.
301
+ */
302
+ function buildDomainSummary(root) {
303
+ // If there's no .dkk/domain/ directory at all, short-circuit.
304
+ if (!existsSync(domainDir(root))) {
305
+ return ("\n## Current Domain Summary\n\n" +
306
+ "No domain model found. Run `dkk new domain` to get started.\n");
307
+ }
308
+ let model;
309
+ try {
310
+ model = loadDomainModel({ root });
311
+ }
312
+ catch {
313
+ return ("\n## Current Domain Summary\n\n" +
314
+ "No domain model found. Run `dkk new domain` to get started.\n");
315
+ }
316
+ // If there are zero contexts, actors, and ADRs the model is essentially empty.
317
+ if (model.contexts.size === 0 && model.actors.length === 0 && model.adrs.size === 0) {
318
+ return ("\n## Current Domain Summary\n\n" +
319
+ "No domain model found. Run `dkk new domain` to get started.\n");
320
+ }
321
+ const lines = [];
322
+ lines.push("\n## Current Domain Summary\n");
323
+ // ── Global totals ────────────────────────────────────────────────
324
+ const totals = {
325
+ event: 0,
326
+ command: 0,
327
+ policy: 0,
328
+ aggregate: 0,
329
+ read_model: 0,
330
+ glossary: 0,
331
+ };
332
+ for (const ctx of model.contexts.values()) {
333
+ forEachItem(ctx, (type) => {
334
+ totals[type]++;
335
+ });
336
+ }
337
+ const totalItems = Object.values(totals).reduce((a, b) => a + b, 0);
338
+ lines.push(`**${model.contexts.size}** bounded context(s), ` +
339
+ `**${totalItems}** domain item(s), ` +
340
+ `**${model.actors.length}** actor(s), ` +
341
+ `**${model.adrs.size}** ADR(s)\n`);
342
+ // ── Contexts detail ──────────────────────────────────────────────
343
+ if (model.contexts.size > 0) {
344
+ lines.push("### Contexts\n");
345
+ for (const ctx of model.contexts.values()) {
346
+ const counts = {
347
+ event: 0,
348
+ command: 0,
349
+ policy: 0,
350
+ aggregate: 0,
351
+ read_model: 0,
352
+ glossary: 0,
353
+ };
354
+ forEachItem(ctx, (type) => {
355
+ counts[type]++;
356
+ });
357
+ const parts = [];
358
+ if (counts.event)
359
+ parts.push(`${counts.event} event(s)`);
360
+ if (counts.command)
361
+ parts.push(`${counts.command} command(s)`);
362
+ if (counts.aggregate)
363
+ parts.push(`${counts.aggregate} aggregate(s)`);
364
+ if (counts.policy)
365
+ parts.push(`${counts.policy} policy/policies`);
366
+ if (counts.read_model)
367
+ parts.push(`${counts.read_model} read model(s)`);
368
+ if (counts.glossary)
369
+ parts.push(`${counts.glossary} glossary term(s)`);
370
+ const countStr = parts.length ? ` — ${parts.join(", ")}` : "";
371
+ lines.push(`- **${ctx.name}**: ${ctx.description}${countStr}`);
372
+ }
373
+ lines.push("");
374
+ }
375
+ // ── Actors ────────────────────────────────────────────────────────
376
+ if (model.actors.length > 0) {
377
+ lines.push("### Actors\n");
378
+ for (const actor of model.actors) {
379
+ lines.push(`- **${actor.name}** (${actor.type}): ${actor.description}`);
380
+ }
381
+ lines.push("");
382
+ }
383
+ // ── ADRs ──────────────────────────────────────────────────────────
384
+ if (model.adrs.size > 0) {
385
+ lines.push("### Architecture Decision Records\n");
386
+ for (const adr of model.adrs.values()) {
387
+ lines.push(`- **${adr.id}**: ${adr.title} [${adr.status}]`);
388
+ }
389
+ lines.push("");
390
+ }
391
+ // ── Key relationships (aggregates → commands / events) ────────────
392
+ const aggregates = [];
393
+ for (const ctx of model.contexts.values()) {
394
+ for (const agg of ctx.aggregates ?? []) {
395
+ aggregates.push({ ctx: ctx.name, agg });
396
+ }
397
+ }
398
+ if (aggregates.length > 0) {
399
+ lines.push("### Key Relationships\n");
400
+ for (const { ctx, agg } of aggregates) {
401
+ const cmds = agg.handles?.commands ?? [];
402
+ const evts = agg.emits?.events ?? [];
403
+ const cmdStr = cmds.length ? cmds.join(", ") : "none";
404
+ const evtStr = evts.length ? evts.join(", ") : "none";
405
+ lines.push(`- **${ctx}.${agg.name}**: handles [${cmdStr}] → emits [${evtStr}]`);
406
+ }
407
+ lines.push("");
408
+ }
409
+ return lines.join("\n");
410
+ }
264
411
  /** Register the `prime` subcommand. */
265
412
  export function registerPrime(program) {
266
413
  program
267
414
  .command("prime")
268
415
  .description("Output full DKK agent context to stdout")
269
- .action(() => {
416
+ .option("-r, --root <path>", "Override repository root")
417
+ .option("--static-only", "Output only the static instructions (skip domain summary)")
418
+ .action((opts) => {
270
419
  process.stdout.write(primeContent());
420
+ if (!opts.staticOnly) {
421
+ process.stdout.write(buildDomainSummary(opts.root));
422
+ }
271
423
  });
272
424
  }
273
425
  //# sourceMappingURL=prime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prime.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"AAUA,uCAAuC;AACvC,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmQR,CAAC;AACF,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,OAAY;IACxC,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"prime.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command as Cmd } from "commander";
2
+ export declare function registerStats(program: Cmd): void;
3
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../../src/features/audit/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhD,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA4EhD"}