domain-knowledge-kit 0.2.15 → 0.2.16

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 (177) hide show
  1. package/README.md +4 -0
  2. package/dist/cli.js +20 -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 +141 -3
  6. package/dist/features/agent/commands/init.js.map +1 -1
  7. package/dist/features/agent/commands/prime.d.ts +11 -0
  8. package/dist/features/agent/commands/prime.d.ts.map +1 -1
  9. package/dist/features/agent/commands/prime.js +104 -8
  10. package/dist/features/agent/commands/prime.js.map +1 -1
  11. package/dist/features/federation/commands/consumers.d.ts +40 -0
  12. package/dist/features/federation/commands/consumers.d.ts.map +1 -0
  13. package/dist/features/federation/commands/consumers.js +126 -0
  14. package/dist/features/federation/commands/consumers.js.map +1 -0
  15. package/dist/features/federation/commands/peers-add.d.ts +14 -0
  16. package/dist/features/federation/commands/peers-add.d.ts.map +1 -0
  17. package/dist/features/federation/commands/peers-add.js +79 -0
  18. package/dist/features/federation/commands/peers-add.js.map +1 -0
  19. package/dist/features/federation/commands/peers-list.d.ts +8 -0
  20. package/dist/features/federation/commands/peers-list.d.ts.map +1 -0
  21. package/dist/features/federation/commands/peers-list.js +51 -0
  22. package/dist/features/federation/commands/peers-list.js.map +1 -0
  23. package/dist/features/federation/commands/peers-status.d.ts +8 -0
  24. package/dist/features/federation/commands/peers-status.d.ts.map +1 -0
  25. package/dist/features/federation/commands/peers-status.js +78 -0
  26. package/dist/features/federation/commands/peers-status.js.map +1 -0
  27. package/dist/features/federation/commands/pull.d.ts +18 -0
  28. package/dist/features/federation/commands/pull.d.ts.map +1 -0
  29. package/dist/features/federation/commands/pull.js +153 -0
  30. package/dist/features/federation/commands/pull.js.map +1 -0
  31. package/dist/features/federation/git-fetcher.d.ts +45 -0
  32. package/dist/features/federation/git-fetcher.d.ts.map +1 -0
  33. package/dist/features/federation/git-fetcher.js +70 -0
  34. package/dist/features/federation/git-fetcher.js.map +1 -0
  35. package/dist/features/federation/loader.d.ts +60 -0
  36. package/dist/features/federation/loader.d.ts.map +1 -0
  37. package/dist/features/federation/loader.js +193 -0
  38. package/dist/features/federation/loader.js.map +1 -0
  39. package/dist/features/federation/lock.d.ts +12 -0
  40. package/dist/features/federation/lock.d.ts.map +1 -0
  41. package/dist/features/federation/lock.js +48 -0
  42. package/dist/features/federation/lock.js.map +1 -0
  43. package/dist/features/federation/tests/git-fetcher.test.d.ts +2 -0
  44. package/dist/features/federation/tests/git-fetcher.test.d.ts.map +1 -0
  45. package/dist/features/federation/tests/git-fetcher.test.js +167 -0
  46. package/dist/features/federation/tests/git-fetcher.test.js.map +1 -0
  47. package/dist/features/federation/tests/loader.test.d.ts +2 -0
  48. package/dist/features/federation/tests/loader.test.d.ts.map +1 -0
  49. package/dist/features/federation/tests/loader.test.js +144 -0
  50. package/dist/features/federation/tests/loader.test.js.map +1 -0
  51. package/dist/features/federation/tests/phase5.test.d.ts +2 -0
  52. package/dist/features/federation/tests/phase5.test.d.ts.map +1 -0
  53. package/dist/features/federation/tests/phase5.test.js +137 -0
  54. package/dist/features/federation/tests/phase5.test.js.map +1 -0
  55. package/dist/features/federation/tests/schema-load.test.d.ts +2 -0
  56. package/dist/features/federation/tests/schema-load.test.d.ts.map +1 -0
  57. package/dist/features/federation/tests/schema-load.test.js +97 -0
  58. package/dist/features/federation/tests/schema-load.test.js.map +1 -0
  59. package/dist/features/federation/tests/validator.test.d.ts +2 -0
  60. package/dist/features/federation/tests/validator.test.d.ts.map +1 -0
  61. package/dist/features/federation/tests/validator.test.js +319 -0
  62. package/dist/features/federation/tests/validator.test.js.map +1 -0
  63. package/dist/features/mcp/commands/serve.d.ts +10 -0
  64. package/dist/features/mcp/commands/serve.d.ts.map +1 -0
  65. package/dist/features/mcp/commands/serve.js +12 -0
  66. package/dist/features/mcp/commands/serve.js.map +1 -0
  67. package/dist/features/mcp/server.d.ts +15 -0
  68. package/dist/features/mcp/server.d.ts.map +1 -0
  69. package/dist/features/mcp/server.js +438 -0
  70. package/dist/features/mcp/server.js.map +1 -0
  71. package/dist/features/pipeline/commands/validate.d.ts.map +1 -1
  72. package/dist/features/pipeline/commands/validate.js +7 -0
  73. package/dist/features/pipeline/commands/validate.js.map +1 -1
  74. package/dist/features/pipeline/indexer.d.ts +28 -2
  75. package/dist/features/pipeline/indexer.d.ts.map +1 -1
  76. package/dist/features/pipeline/indexer.js +82 -27
  77. package/dist/features/pipeline/indexer.js.map +1 -1
  78. package/dist/features/pipeline/validator.d.ts +10 -0
  79. package/dist/features/pipeline/validator.d.ts.map +1 -1
  80. package/dist/features/pipeline/validator.js +274 -27
  81. package/dist/features/pipeline/validator.js.map +1 -1
  82. package/dist/features/query/commands/list.d.ts +10 -0
  83. package/dist/features/query/commands/list.d.ts.map +1 -1
  84. package/dist/features/query/commands/list.js +1 -1
  85. package/dist/features/query/commands/list.js.map +1 -1
  86. package/dist/features/query/commands/locate.d.ts +1 -0
  87. package/dist/features/query/commands/locate.d.ts.map +1 -1
  88. package/dist/features/query/commands/locate.js +1 -1
  89. package/dist/features/query/commands/locate.js.map +1 -1
  90. package/dist/features/query/commands/search.d.ts.map +1 -1
  91. package/dist/features/query/commands/search.js +2 -0
  92. package/dist/features/query/commands/search.js.map +1 -1
  93. package/dist/features/query/commands/show.d.ts +15 -0
  94. package/dist/features/query/commands/show.d.ts.map +1 -1
  95. package/dist/features/query/commands/show.js +116 -58
  96. package/dist/features/query/commands/show.js.map +1 -1
  97. package/dist/features/query/commands/story.d.ts +70 -0
  98. package/dist/features/query/commands/story.d.ts.map +1 -1
  99. package/dist/features/query/commands/story.js +2 -2
  100. package/dist/features/query/commands/story.js.map +1 -1
  101. package/dist/features/query/commands/summary.d.ts +3 -0
  102. package/dist/features/query/commands/summary.d.ts.map +1 -1
  103. package/dist/features/query/commands/summary.js +1 -1
  104. package/dist/features/query/commands/summary.js.map +1 -1
  105. package/dist/features/query/searcher.d.ts +18 -1
  106. package/dist/features/query/searcher.d.ts.map +1 -1
  107. package/dist/features/query/searcher.js +11 -2
  108. package/dist/features/query/searcher.js.map +1 -1
  109. package/dist/features/scaffold/commands/service-init.d.ts +12 -0
  110. package/dist/features/scaffold/commands/service-init.d.ts.map +1 -0
  111. package/dist/features/scaffold/commands/service-init.js +69 -0
  112. package/dist/features/scaffold/commands/service-init.js.map +1 -0
  113. package/dist/shared/graph.d.ts +8 -0
  114. package/dist/shared/graph.d.ts.map +1 -1
  115. package/dist/shared/graph.js +180 -112
  116. package/dist/shared/graph.js.map +1 -1
  117. package/dist/shared/index.d.ts +4 -1
  118. package/dist/shared/index.d.ts.map +1 -1
  119. package/dist/shared/index.js +6 -1
  120. package/dist/shared/index.js.map +1 -1
  121. package/dist/shared/loader.d.ts +22 -0
  122. package/dist/shared/loader.d.ts.map +1 -1
  123. package/dist/shared/loader.js +31 -1
  124. package/dist/shared/loader.js.map +1 -1
  125. package/dist/shared/paths.d.ts +59 -7
  126. package/dist/shared/paths.d.ts.map +1 -1
  127. package/dist/shared/paths.js +93 -11
  128. package/dist/shared/paths.js.map +1 -1
  129. package/dist/shared/refs.d.ts +96 -0
  130. package/dist/shared/refs.d.ts.map +1 -0
  131. package/dist/shared/refs.js +182 -0
  132. package/dist/shared/refs.js.map +1 -0
  133. package/dist/shared/service-id.d.ts +11 -0
  134. package/dist/shared/service-id.d.ts.map +1 -0
  135. package/dist/shared/service-id.js +64 -0
  136. package/dist/shared/service-id.js.map +1 -0
  137. package/dist/shared/tests/paths.test.d.ts +2 -0
  138. package/dist/shared/tests/paths.test.d.ts.map +1 -0
  139. package/dist/shared/tests/paths.test.js +111 -0
  140. package/dist/shared/tests/paths.test.js.map +1 -0
  141. package/dist/shared/tests/refs.test.d.ts +2 -0
  142. package/dist/shared/tests/refs.test.d.ts.map +1 -0
  143. package/dist/shared/tests/refs.test.js +104 -0
  144. package/dist/shared/tests/refs.test.js.map +1 -0
  145. package/dist/shared/types/domain.d.ts +14 -0
  146. package/dist/shared/types/domain.d.ts.map +1 -1
  147. package/dist/shared/types/federation.d.ts +60 -0
  148. package/dist/shared/types/federation.d.ts.map +1 -0
  149. package/dist/shared/types/federation.js +12 -0
  150. package/dist/shared/types/federation.js.map +1 -0
  151. package/package.json +6 -3
  152. package/tools/dkk/claude/agents/dkk-domain-reviewer.md +69 -0
  153. package/tools/dkk/claude/commands/dkk-adr.md +11 -0
  154. package/tools/dkk/claude/commands/dkk-impact.md +34 -0
  155. package/tools/dkk/claude/commands/dkk-implement.md +12 -0
  156. package/tools/dkk/claude/commands/dkk-prime.md +6 -0
  157. package/tools/dkk/claude/commands/dkk-review.md +12 -0
  158. package/tools/dkk/claude/commands/dkk-story.md +12 -0
  159. package/tools/dkk/claude/hooks/post-edit-validate.mjs +51 -0
  160. package/tools/dkk/claude/hooks/pre-edit-block-generated.mjs +39 -0
  161. package/tools/dkk/claude/hooks/session-start-prime.mjs +33 -0
  162. package/tools/dkk/claude/hooks/stop-validate.mjs +48 -0
  163. package/tools/dkk/claude/settings.json +62 -0
  164. package/tools/dkk/claude/skills/dkk-adr-author/SKILL.md +54 -0
  165. package/tools/dkk/claude/skills/dkk-flow-implementer/SKILL.md +51 -0
  166. package/tools/dkk/claude/skills/dkk-story-analyst/SKILL.md +108 -0
  167. package/tools/dkk/schema/actors.schema.json +1 -1
  168. package/tools/dkk/schema/adr-frontmatter.schema.json +4 -4
  169. package/tools/dkk/schema/aggregate.schema.json +1 -1
  170. package/tools/dkk/schema/command.schema.json +1 -1
  171. package/tools/dkk/schema/event.schema.json +1 -1
  172. package/tools/dkk/schema/federation.schema.json +71 -0
  173. package/tools/dkk/schema/glossary.schema.json +1 -1
  174. package/tools/dkk/schema/index.schema.json +2 -2
  175. package/tools/dkk/schema/policy.schema.json +1 -1
  176. package/tools/dkk/schema/read-model.schema.json +1 -1
  177. package/tools/dkk/schema/service.schema.json +30 -0
package/README.md CHANGED
@@ -24,6 +24,10 @@ Architectural decisions aren't born in a vacuum. Understanding *why* a choice wa
24
24
 
25
25
  Knowledge that lives next to the code is knowledge that gets used. DKK colocates your domain model, ADRs, and generated docs inside the repository itself. AI agents can discover, query, and traverse this knowledge without leaving the codebase — making every interaction domain-aware.
26
26
 
27
+ ### One domain model can span many repositories
28
+
29
+ In enterprise architectures each service lives in its own repo, but the domain it participates in does not. DKK supports **multi-repo federation**: a repo declares itself a service with `.dkk/service.yml`, lists peer services in `.dkk/federation.yml` (by filesystem path or git URL + branch), and the loader transparently merges peer domain models into the local one. Cross-service references use the additive grammar `<service>:<context>.<Item>` — bare refs stay local-only. No CI required, no publish step, no orphan branches: a peer's raw `.dkk/` directory is the artifact. The AI assistant in any repo can answer "what does `ordering:OrderPlaced` contain, and who else consumes it?" without leaving the current working directory.
30
+
27
31
  ---
28
32
 
29
33
  ## Documentation
package/dist/cli.js CHANGED
@@ -16,10 +16,17 @@ import { registerNewDomain } from "./features/scaffold/commands/new-domain.js";
16
16
  import { registerNewContext } from "./features/scaffold/commands/new-context.js";
17
17
  import { registerNewAdr } from "./features/scaffold/commands/new-adr.js";
18
18
  import { registerAddItem } from "./features/scaffold/commands/add-item.js";
19
+ import { registerServiceInit } from "./features/scaffold/commands/service-init.js";
20
+ import { registerPeersAdd } from "./features/federation/commands/peers-add.js";
21
+ import { registerPeersList } from "./features/federation/commands/peers-list.js";
22
+ import { registerPeersStatus } from "./features/federation/commands/peers-status.js";
23
+ import { registerPull } from "./features/federation/commands/pull.js";
24
+ import { registerConsumers } from "./features/federation/commands/consumers.js";
19
25
  import { registerRename } from "./features/refactor/commands/rename.js";
20
26
  import { registerRm } from "./features/refactor/commands/rm.js";
21
27
  import { registerMove } from "./features/refactor/commands/move.js";
22
28
  import { registerStats } from "./features/audit/commands/stats.js";
29
+ import { registerMcp } from "./features/mcp/commands/serve.js";
23
30
  import { formatCliError } from "./shared/errors.js";
24
31
  /** Whether to show full stack traces (set DEBUG=1 in env). */
25
32
  const DEBUG = Boolean(process.env.DEBUG);
@@ -55,6 +62,7 @@ registerRename(program);
55
62
  registerRm(program);
56
63
  registerMove(program);
57
64
  registerStats(program);
65
+ registerMcp(program);
58
66
  // "new" sub-command group
59
67
  const newCmd = program
60
68
  .command("new")
@@ -64,6 +72,18 @@ registerNewContext(newCmd);
64
72
  registerNewAdr(newCmd);
65
73
  // Top-level "add" command for individual domain items
66
74
  registerAddItem(program);
75
+ // Federation: service identity
76
+ registerServiceInit(program);
77
+ // Federation: peer management
78
+ const peersCmd = program
79
+ .command("peers")
80
+ .description("Federation peer management");
81
+ registerPeersAdd(peersCmd);
82
+ registerPeersList(peersCmd);
83
+ registerPeersStatus(peersCmd);
84
+ // Federation: dkk pull + dkk consumers
85
+ registerPull(program);
86
+ registerConsumers(program);
67
87
  // ── Agent mode injection ─────────────────────────────────────────────
68
88
  program.option("--agent", "Enable agent mode (JSON + minify by default)");
69
89
  // Add --no-json to commands that have --json
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
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;AAmIhD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAwC/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;AA+RhD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA6C/C"}
@@ -1,6 +1,6 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, statSync, chmodSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { repoRoot, packageSkillsDir } from "../../../shared/paths.js";
3
+ import { repoRoot, packageSkillsDir, packageClaudeDir } from "../../../shared/paths.js";
4
4
  const START_MARKER = "<!-- dkk:start -->";
5
5
  const END_MARKER = "<!-- dkk:end -->";
6
6
  /**
@@ -62,7 +62,10 @@ dkk stats # Domain statistics + orphaned items
62
62
 
63
63
  # Agent
64
64
  dkk init # Create/update AGENTS.md with DKK section
65
+ dkk init --claude # Also scaffold .claude/ (settings, hooks, skills, agents, commands)
66
+ dkk init --skills # Also install agent skills into .github/skills/
65
67
  dkk prime # Output full agent context
68
+ dkk mcp # Run the DKK MCP server (stdio) for Claude Code etc.
66
69
  \`\`\`
67
70
 
68
71
  ### Quality Gates
@@ -118,13 +121,145 @@ function installSkills(root, force) {
118
121
  }
119
122
  }
120
123
  }
124
+ /**
125
+ * Copy every file in `srcDir` (one level deep) into `destDir`. Skips files
126
+ * that already exist unless `force` is true. Reports each file with a
127
+ * `.claude/<relSubpath>/<filename>` label.
128
+ *
129
+ * If `executable` is true, sets 0o755 on each copied file (used for hook
130
+ * scripts).
131
+ */
132
+ function copyFlatDir(opts) {
133
+ const { srcDir, destDir, relSubpath, force, executable } = opts;
134
+ if (!existsSync(srcDir))
135
+ return;
136
+ mkdirSync(destDir, { recursive: true });
137
+ for (const fileName of readdirSync(srcDir)) {
138
+ const srcFile = join(srcDir, fileName);
139
+ if (!statSync(srcFile).isFile())
140
+ continue;
141
+ const destFile = join(destDir, fileName);
142
+ const relPath = `${relSubpath}/${fileName}`;
143
+ if (existsSync(destFile) && !force) {
144
+ console.log(`Skipped ${relPath} (already exists — use --force to overwrite)`);
145
+ continue;
146
+ }
147
+ const alreadyExisted = existsSync(destFile);
148
+ writeFileSync(destFile, readFileSync(srcFile, "utf-8"), "utf-8");
149
+ if (executable) {
150
+ try {
151
+ chmodSync(destFile, 0o755);
152
+ }
153
+ catch {
154
+ // Non-POSIX filesystems may reject chmod — safe to ignore.
155
+ }
156
+ }
157
+ console.log(`${alreadyExisted ? "Updated" : "Created"} ${relPath}`);
158
+ }
159
+ }
160
+ /**
161
+ * Copy a directory of skill subdirectories. Layout is `<srcDir>/<skill>/<file>`,
162
+ * mirrored under `<destDir>/<skill>/<file>`. Skips files that already exist
163
+ * unless `force` is true.
164
+ */
165
+ function copyNestedDir(opts) {
166
+ const { srcDir, destDir, relSubpath, force } = opts;
167
+ if (!existsSync(srcDir))
168
+ return;
169
+ for (const subName of readdirSync(srcDir)) {
170
+ const subSrc = join(srcDir, subName);
171
+ if (!statSync(subSrc).isDirectory())
172
+ continue;
173
+ const subDest = join(destDir, subName);
174
+ mkdirSync(subDest, { recursive: true });
175
+ for (const fileName of readdirSync(subSrc)) {
176
+ const srcFile = join(subSrc, fileName);
177
+ if (!statSync(srcFile).isFile())
178
+ continue;
179
+ const destFile = join(subDest, fileName);
180
+ const relPath = `${relSubpath}/${subName}/${fileName}`;
181
+ if (existsSync(destFile) && !force) {
182
+ console.log(`Skipped ${relPath} (already exists — use --force to overwrite)`);
183
+ continue;
184
+ }
185
+ const alreadyExisted = existsSync(destFile);
186
+ writeFileSync(destFile, readFileSync(srcFile, "utf-8"), "utf-8");
187
+ console.log(`${alreadyExisted ? "Updated" : "Created"} ${relPath}`);
188
+ }
189
+ }
190
+ }
191
+ /**
192
+ * Copy the bundled Claude Code config (`settings.json`, hooks, skills,
193
+ * subagents, slash commands) from the DKK package into the consumer
194
+ * project's `.claude/` directory.
195
+ *
196
+ * Layout produced (all skip-if-present unless `--force`):
197
+ * .claude/
198
+ * settings.json
199
+ * hooks/<hook>.mjs (executable bit set)
200
+ * skills/<skill>/SKILL.md
201
+ * agents/<agent>.md
202
+ * commands/<command>.md
203
+ */
204
+ function installClaudeConfig(root, force) {
205
+ const srcDir = packageClaudeDir();
206
+ const destDir = join(root, ".claude");
207
+ if (!existsSync(srcDir)) {
208
+ console.warn(`Warning: DKK package Claude template not found at ${srcDir}`);
209
+ return;
210
+ }
211
+ mkdirSync(destDir, { recursive: true });
212
+ // 1. settings.json
213
+ const settingsSrc = join(srcDir, "settings.json");
214
+ const settingsDest = join(destDir, "settings.json");
215
+ if (existsSync(settingsSrc)) {
216
+ if (existsSync(settingsDest) && !force) {
217
+ console.log(`Skipped .claude/settings.json (already exists — use --force to overwrite)`);
218
+ }
219
+ else {
220
+ const alreadyExisted = existsSync(settingsDest);
221
+ writeFileSync(settingsDest, readFileSync(settingsSrc, "utf-8"), "utf-8");
222
+ console.log(`${alreadyExisted ? "Updated" : "Created"} .claude/settings.json`);
223
+ }
224
+ }
225
+ // 2. hooks/ (flat, executable)
226
+ copyFlatDir({
227
+ srcDir: join(srcDir, "hooks"),
228
+ destDir: join(destDir, "hooks"),
229
+ relSubpath: ".claude/hooks",
230
+ force,
231
+ executable: true,
232
+ });
233
+ // 3. skills/<skill>/SKILL.md (nested)
234
+ copyNestedDir({
235
+ srcDir: join(srcDir, "skills"),
236
+ destDir: join(destDir, "skills"),
237
+ relSubpath: ".claude/skills",
238
+ force,
239
+ });
240
+ // 4. agents/<agent>.md (flat)
241
+ copyFlatDir({
242
+ srcDir: join(srcDir, "agents"),
243
+ destDir: join(destDir, "agents"),
244
+ relSubpath: ".claude/agents",
245
+ force,
246
+ });
247
+ // 5. commands/<command>.md (flat)
248
+ copyFlatDir({
249
+ srcDir: join(srcDir, "commands"),
250
+ destDir: join(destDir, "commands"),
251
+ relSubpath: ".claude/commands",
252
+ force,
253
+ });
254
+ }
121
255
  /** Register the `init` subcommand. */
122
256
  export function registerInit(program) {
123
257
  program
124
258
  .command("init")
125
259
  .description("Create or update AGENTS.md with DKK onboarding section")
126
260
  .option("--skills", "Also install DKK skill files into .github/skills/")
127
- .option("--force", "Overwrite existing skill files (only applies with --skills)")
261
+ .option("--claude", "Also install Claude Code config (.claude/ settings, hooks, skills, agents, commands)")
262
+ .option("--force", "Overwrite existing skill or Claude files (applies with --skills or --claude)")
128
263
  .option("-r, --root <path>", "Override repository root")
129
264
  .action((opts) => {
130
265
  const root = repoRoot(opts.root);
@@ -157,6 +292,9 @@ export function registerInit(program) {
157
292
  if (opts.skills) {
158
293
  installSkills(root, opts.force ?? false);
159
294
  }
295
+ if (opts.claude) {
296
+ installClaudeConfig(root, opts.force ?? false);
297
+ }
160
298
  });
161
299
  }
162
300
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/init.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,17 @@
10
10
  * CLI reference, and file conventions.
11
11
  */
12
12
  import type { Command as Cmd } from "commander";
13
+ /**
14
+ * The full agent context document.
15
+ * Keep the CLI Command Reference tables in sync with the Quick Reference block in init.ts#dkkSection.
16
+ */
17
+ export declare function primeContent(): string;
18
+ /**
19
+ * Build a dynamic "Current Domain Summary" section from the live domain
20
+ * model on disk. Returns the Markdown string to append after the static
21
+ * instructions.
22
+ */
23
+ export declare function buildDomainSummary(root?: string): string;
13
24
  /** Register the `prime` subcommand. */
14
25
  export declare function registerPrime(program: Cmd): void;
15
26
  //# sourceMappingURL=prime.d.ts.map
@@ -1 +1 @@
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;AAmfhD,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAYhD"}
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;AAOhD;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA6arC;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAiJxD;AAED,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAYhD"}
@@ -6,13 +6,15 @@ import { domainDir } from "../../../shared/paths.js";
6
6
  * The full agent context document.
7
7
  * Keep the CLI Command Reference tables in sync with the Quick Reference block in init.ts#dkkSection.
8
8
  */
9
- function primeContent() {
9
+ export function primeContent() {
10
10
  return `# Domain Knowledge Kit — Agent Context
11
11
 
12
12
  ## Project Overview
13
13
 
14
14
  This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain model with Architecture Decision Records (ADRs), full-text search, and generated Markdown documentation. The CLI tool is \`dkk\`.
15
15
 
16
+ DKK supports **multi-repo federation**: when a \`.dkk/service.yml\` exists, the repo declares itself a service, and a \`.dkk/federation.yml\` can list peer services (other repos, by local path or git URL). The loader transparently merges peer domain models so that queries, search, graph traversal, validation, and \`dkk consumers\` span every loaded peer. Cross-service references use the additive grammar \`<service>:<context>.<Item>\` — bare refs stay local-only.
17
+
16
18
  ## Core Principles
17
19
 
18
20
  1. **Domain YAML is the single source of truth.** Never generate domain knowledge from code.
@@ -26,6 +28,11 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
26
28
 
27
29
  \`\`\`
28
30
  .dkk/
31
+ service.yml # OPTIONAL: declares this repo as a federated service
32
+ # { name: kebab-case, exports: [<ctx-name>, ...] }
33
+ federation.yml # OPTIONAL: lists peer services (local path or git URL+branch)
34
+ federation.lock.json # AUTO: pins resolved git-source commit SHAs
35
+ imports/ # AUTO (gitignored): cached peer .dkk/ trees from \`dkk pull\`
29
36
  domain/
30
37
  index.yml # Top-level: registered contexts + cross-context flows
31
38
  actors.yml # Global actors (human | system | external)
@@ -64,6 +71,18 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
64
71
  | Flow | \`flow.<Name>\` | \`flow.OrderFulfillment\` |
65
72
  | Context | \`context.<name>\` | \`context.ordering\` |
66
73
 
74
+ **Federated form** (cross-repo references): prefix any id with \`<service>:\`.
75
+
76
+ | Federated Form | Example |
77
+ |------------------------------------------------|----------------------------------------|
78
+ | \`<service>:<context>.<ItemName>\` | \`ordering:ordering.OrderPlaced\` |
79
+ | \`<service>:actor.<Name>\` | \`payments:actor.PaymentGateway\` |
80
+ | \`<service>:adr-NNNN\` | \`ordering:adr-0007\` |
81
+ | \`<service>:flow.<Name>\` | \`ordering:flow.OrderFulfillment\` |
82
+ | \`<service>:context.<name>\` | \`ordering:context.ordering\` |
83
+
84
+ Bare ids resolve only against the local repo. Service-prefixed ids resolve against \`model.peers.get(<service>)\`. A self-prefix (\`<localService>:<id>\`) is treated as local. Use the fully-qualified form (\`<service>:<context>.<Name>\`) when writing cross-service refs in YAML — the name-only shorthand is reserved for \`dkk show\`.
85
+
67
86
  ## CLI Command Reference
68
87
 
69
88
  ### Query
@@ -115,10 +134,29 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
115
134
 
116
135
  ### Agent
117
136
 
118
- | Command | Purpose |
119
- |---------------|------------------------------------------------------|
120
- | \`dkk init\` | Create/update AGENTS.md with DKK section |
121
- | \`dkk prime\` | Output this agent context to stdout |
137
+ | Command | Purpose |
138
+ |------------------------|------------------------------------------------------|
139
+ | \`dkk init\` | Create/update AGENTS.md with DKK section |
140
+ | \`dkk init --skills\` | Also install agent skills into \`.github/skills/\` |
141
+ | \`dkk init --claude\` | Also scaffold \`.claude/\` (settings, hooks, skills, agents, commands) |
142
+ | \`dkk prime\` | Output this agent context to stdout |
143
+ | \`dkk mcp\` | Run the DKK MCP server over stdio |
144
+
145
+ ### Federation
146
+
147
+ | Command | Purpose |
148
+ |----------------------------------------------------|------------------------------------------------------|
149
+ | \`dkk service init --name <n> --export <ctx>\` | Declare this repo a federated service (writes \`.dkk/service.yml\`) |
150
+ | \`dkk peers add <name> --local <path>\` | Register a peer by filesystem path |
151
+ | \`dkk peers add <name> --git <url> --branch <b>\` | Register a peer by git URL + branch |
152
+ | \`dkk peers list\` | List configured peers + reachability state |
153
+ | \`dkk peers status\` | Detailed peer status: service id, exports, contexts |
154
+ | \`dkk pull [name]\` | Sparse-checkout git peers into \`.dkk/imports/\` |
155
+ | \`dkk pull --refresh\` | Re-fetch even when cache exists |
156
+ | \`dkk pull --offline\` | Use cache only; no network |
157
+ | \`dkk consumers <id>\` | Reverse-lookup: which peers reference this item |
158
+ | \`dkk validate --federation strict\` | Promote unreachable-peer warnings to errors (CI gate) |
159
+ | \`dkk search --service <n>\` | Narrow search to one service (local or peer) |
122
160
 
123
161
  ## Domain Search Workflow
124
162
 
@@ -335,13 +373,49 @@ When reviewing changes for domain impact:
335
373
  \`\`\`
336
374
  7. **Compile impact analysis** — Report impacted items, blast radius, invariant violations, affected ADRs, and recommendations.
337
375
 
376
+ ## Federation Workflow
377
+
378
+ When the local repo has a \`.dkk/federation.yml\`, the loader hydrates every reachable peer's domain into \`model.peers\`. Reading commands (\`dkk show\`, \`dkk search\`, \`dkk related\`, \`dkk graph\`) and the MCP server transparently span peers.
379
+
380
+ 1. **Inspect peer state**:
381
+ \`\`\`bash
382
+ dkk peers list # quick overview
383
+ dkk peers status # exports + contexts per peer
384
+ \`\`\`
385
+ 2. **Reference a peer item** — when authoring a local policy, ADR, or flow that consumes something across the boundary, use the fully-qualified form:
386
+ \`\`\`yaml
387
+ when:
388
+ events:
389
+ - ordering:ordering.OrderPlaced # peer service "ordering", context "ordering", item "OrderPlaced"
390
+ \`\`\`
391
+ 3. **Inspect a peer item directly**:
392
+ \`\`\`bash
393
+ dkk show ordering:OrderPlaced # shorthand (single-export service)
394
+ dkk show ordering:ordering.OrderPlaced # fully qualified
395
+ \`\`\`
396
+ 4. **Find downstream consumers of a local item** before renaming/deprecating:
397
+ \`\`\`bash
398
+ dkk consumers ordering.OrderPlaced
399
+ \`\`\`
400
+ 5. **Refresh git-source peers** when needed:
401
+ \`\`\`bash
402
+ dkk pull ordering # fetch (no-op if SHA matches the lockfile)
403
+ dkk pull ordering --refresh # force re-fetch
404
+ \`\`\`
405
+
406
+ **Reference resolution rules:**
407
+ - A **bare** ref (\`OrderPlaced\`, \`ordering.OrderPlaced\`) resolves only against the local repo's items. Never falls through to peers — collisions are silent data corruption.
408
+ - A **service-prefixed** ref (\`ordering:ordering.OrderPlaced\`) resolves only against \`model.peers.get(<service>)\`. If the service equals the local service name, it's treated as a local ref (self-prefix is harmless).
409
+ - An **unreachable peer** produces a warning by default. CI gates that must guarantee resolution should run \`dkk validate --federation strict\`.
410
+
338
411
  ## Validation
339
412
 
340
413
  The validator checks:
341
414
 
342
- - **Schema conformance** — Each YAML file is validated against its JSON Schema.
343
- - **Cross-references** — All item-to-item, item-to-ADR, and ADR-to-item references resolve correctly.
415
+ - **Schema conformance** — Each YAML file is validated against its JSON Schema. \`.dkk/service.yml\` and \`.dkk/federation.yml\` are validated at load time.
416
+ - **Cross-references** — All item-to-item, item-to-ADR, and ADR-to-item references resolve correctly, including federated forms.
344
417
  - **Context registration** — Every context directory in \`.dkk/domain/contexts/\` is registered in \`.dkk/domain/index.yml\`.
418
+ - **Federation strictness** (\`--federation strict\`): unreachable peers escalate from warnings to errors; refs to non-exported peer contexts always warn.
345
419
 
346
420
  ## Generated Documentation
347
421
 
@@ -368,7 +442,7 @@ Do not edit files under \`.dkk/docs/\` by hand; they are regenerated on each ren
368
442
  * model on disk. Returns the Markdown string to append after the static
369
443
  * instructions.
370
444
  */
371
- function buildDomainSummary(root) {
445
+ export function buildDomainSummary(root) {
372
446
  // If there's no .dkk/domain/ directory at all, short-circuit.
373
447
  if (!existsSync(domainDir(root))) {
374
448
  return ("\n## Current Domain Summary\n\n" +
@@ -408,6 +482,28 @@ function buildDomainSummary(root) {
408
482
  `**${totalItems}** domain item(s), ` +
409
483
  `**${model.actors.length}** actor(s), ` +
410
484
  `**${model.adrs.size}** ADR(s)\n`);
485
+ // ── Service identity & peers (federation) ────────────────────────
486
+ if (model.service) {
487
+ lines.push(`### Service Identity\n`);
488
+ lines.push(`- **name:** \`${model.service.name}\``);
489
+ lines.push(`- **exports:** ${model.service.exports.map((e) => `\`${e}\``).join(", ") || "(none)"}`);
490
+ if (model.service.description) {
491
+ lines.push(`- **description:** ${model.service.description}`);
492
+ }
493
+ lines.push("");
494
+ }
495
+ if (model.peers && model.peers.size > 0) {
496
+ lines.push(`### Federated Peers (${model.peers.size})\n`);
497
+ for (const [peerName, peerModel] of model.peers) {
498
+ const peerExports = peerModel.service?.exports ?? [];
499
+ const peerCtxCount = peerModel.contexts.size;
500
+ const exportsStr = peerExports.length ? peerExports.map((e) => `\`${e}\``).join(", ") : "(none declared)";
501
+ lines.push(`- **${peerName}**: ${peerCtxCount} context(s), exports: ${exportsStr}`);
502
+ }
503
+ lines.push("");
504
+ lines.push("Reference any peer item as \`<service>:<context>.<Name>\` (e.g. \`ordering:ordering.OrderPlaced\`).");
505
+ lines.push("");
506
+ }
411
507
  // ── Contexts detail ──────────────────────────────────────────────
412
508
  if (model.contexts.size > 0) {
413
509
  lines.push("### Contexts\n");
@@ -1 +1 @@
1
- {"version":3,"file":"prime.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAiB,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;;GAGG;AACH,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiWR,CAAC;AACF,CAAC;AAED,wEAAwE;AAExE;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAa;IACvC,8DAA8D;IAC9D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO,CACL,iCAAiC;YACjC,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,KAAkB,CAAC;IACvB,IAAI,CAAC;QACH,KAAK,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CACL,iCAAiC;YACjC,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpF,OAAO,CACL,iCAAiC;YACjC,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE5C,oEAAoE;IACpE,MAAM,MAAM,GAA6B;QACvC,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CACR,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,yBAAyB;QACjD,KAAK,UAAU,qBAAqB;QACpC,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,eAAe;QACvC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAClC,CAAC;IAEF,oEAAoE;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,MAAM,MAAM,GAA6B;gBACvC,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,eAAe,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,gBAAgB,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,mBAAmB,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,WAAW,GAAG,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,qEAAqE;IACrE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,qEAAqE;IACrE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,qEAAqE;IACrE,MAAM,UAAU,GAA2C,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,gBAAgB,MAAM,cAAc,MAAM,GAAG,CACpE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,OAAY;IACxC,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,2DAA2D,CAAC;SACpF,MAAM,CAAC,CAAC,IAA6C,EAAE,EAAE;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,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,40 @@
1
+ /**
2
+ * `dkk consumers <id>` — reverse lookup across federated peers.
3
+ *
4
+ * Given a local item id (e.g. `ordering.OrderPlaced`), walk every
5
+ * loaded peer model and report references back to that item. This is
6
+ * the producer-side answer to "who breaks if I rename this?".
7
+ *
8
+ * The walk inspects the ref-bearing fields that the validator already
9
+ * understands: events.raised_by, commands.handled_by / actor,
10
+ * aggregates.handles / emits, policies.when / then, read_models.subscribes_to
11
+ * / used_by, ADR domain_refs / superseded_by, and flow step refs.
12
+ *
13
+ * Both fully-qualified peer refs (`<localService>:<ctx>.<Name>`) and
14
+ * the same-service bare form (when a peer happens to have a local
15
+ * service named the same as ours — rare) are matched.
16
+ */
17
+ import type { Command as Cmd } from "commander";
18
+ import type { DomainModel } from "../../../shared/types/domain.js";
19
+ import "../loader.js";
20
+ interface ConsumerHit {
21
+ /** Peer service that references the queried item. */
22
+ service: string;
23
+ /** Reference path describing where in the peer model the match was found. */
24
+ source: string;
25
+ /** The relation kind (e.g. "when.events", "subscribes_to", "domain_refs"). */
26
+ relation: string;
27
+ /** The raw ref string as written in the peer's YAML. */
28
+ ref: string;
29
+ }
30
+ export declare function registerConsumers(program: Cmd): void;
31
+ /**
32
+ * Walk every loaded peer model and collect references back to the
33
+ * queried item. Matches both the fully-qualified peer form
34
+ * (`<localService>:<ctx>.<Name>`) and bare names — the latter handles
35
+ * the case where a peer references the same item via shorthand
36
+ * inside its own walk (uncommon, but possible).
37
+ */
38
+ export declare function findConsumers(model: DomainModel, rawId: string, localService: string | undefined): ConsumerHit[];
39
+ export {};
40
+ //# sourceMappingURL=consumers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumers.d.ts","sourceRoot":"","sources":["../../../../src/features/federation/commands/consumers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,cAAc,CAAC;AAEtB,UAAU,WAAW;IACnB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;CACb;AAQD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAkCpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,WAAW,EAAE,CAmCf"}