domain-knowledge-kit 0.2.10 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli.js +41 -10
- package/dist/cli.js.map +1 -1
- package/dist/features/agent/commands/init.d.ts.map +1 -1
- package/dist/features/agent/commands/init.js +46 -8
- package/dist/features/agent/commands/init.js.map +1 -1
- package/dist/features/agent/commands/prime.d.ts.map +1 -1
- package/dist/features/agent/commands/prime.js +67 -16
- package/dist/features/agent/commands/prime.js.map +1 -1
- package/dist/features/audit/commands/stats.d.ts.map +1 -1
- package/dist/features/audit/commands/stats.js +24 -1
- package/dist/features/audit/commands/stats.js.map +1 -1
- package/dist/features/pipeline/commands/render.d.ts.map +1 -1
- package/dist/features/pipeline/commands/render.js +3 -2
- package/dist/features/pipeline/commands/render.js.map +1 -1
- package/dist/features/pipeline/renderer.d.ts.map +1 -1
- package/dist/features/pipeline/renderer.js +4 -0
- package/dist/features/pipeline/renderer.js.map +1 -1
- package/dist/features/pipeline/tests/validator.test.js +16 -0
- package/dist/features/pipeline/tests/validator.test.js.map +1 -1
- package/dist/features/pipeline/validator.d.ts.map +1 -1
- package/dist/features/pipeline/validator.js +22 -14
- package/dist/features/pipeline/validator.js.map +1 -1
- package/dist/features/query/commands/graph.d.ts +6 -0
- package/dist/features/query/commands/graph.d.ts.map +1 -1
- package/dist/features/query/commands/graph.js +223 -53
- package/dist/features/query/commands/graph.js.map +1 -1
- package/dist/features/query/commands/list.d.ts.map +1 -1
- package/dist/features/query/commands/list.js +5 -2
- package/dist/features/query/commands/list.js.map +1 -1
- package/dist/features/query/commands/locate.d.ts +3 -0
- package/dist/features/query/commands/locate.d.ts.map +1 -0
- package/dist/features/query/commands/locate.js +96 -0
- package/dist/features/query/commands/locate.js.map +1 -0
- package/dist/features/query/commands/related.d.ts.map +1 -1
- package/dist/features/query/commands/related.js +4 -3
- package/dist/features/query/commands/related.js.map +1 -1
- package/dist/features/query/commands/search.d.ts.map +1 -1
- package/dist/features/query/commands/search.js +3 -2
- package/dist/features/query/commands/search.js.map +1 -1
- package/dist/features/query/commands/show.d.ts.map +1 -1
- package/dist/features/query/commands/show.js +4 -3
- package/dist/features/query/commands/show.js.map +1 -1
- package/dist/features/query/commands/summary.d.ts.map +1 -1
- package/dist/features/query/commands/summary.js +61 -5
- package/dist/features/query/commands/summary.js.map +1 -1
- package/dist/features/refactor/commands/move.d.ts +14 -0
- package/dist/features/refactor/commands/move.d.ts.map +1 -0
- package/dist/features/refactor/commands/move.js +166 -0
- package/dist/features/refactor/commands/move.js.map +1 -0
- package/dist/features/refactor/commands/rename.d.ts.map +1 -1
- package/dist/features/refactor/commands/rename.js +329 -131
- package/dist/features/refactor/commands/rename.js.map +1 -1
- package/dist/features/refactor/commands/rm.d.ts.map +1 -1
- package/dist/features/refactor/commands/rm.js +349 -76
- package/dist/features/refactor/commands/rm.js.map +1 -1
- package/dist/features/refactor/refactor-helpers.d.ts +117 -0
- package/dist/features/refactor/refactor-helpers.d.ts.map +1 -0
- package/dist/features/refactor/refactor-helpers.js +653 -0
- package/dist/features/refactor/refactor-helpers.js.map +1 -0
- package/dist/features/scaffold/commands/add-item.d.ts +5 -13
- package/dist/features/scaffold/commands/add-item.d.ts.map +1 -1
- package/dist/features/scaffold/commands/add-item.js +75 -95
- package/dist/features/scaffold/commands/add-item.js.map +1 -1
- package/dist/features/scaffold/commands/new-adr.d.ts.map +1 -1
- package/dist/features/scaffold/commands/new-adr.js +0 -9
- package/dist/features/scaffold/commands/new-adr.js.map +1 -1
- package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
- package/dist/features/scaffold/commands/new-domain.js +8 -3
- package/dist/features/scaffold/commands/new-domain.js.map +1 -1
- package/dist/shared/graph.d.ts.map +1 -1
- package/dist/shared/graph.js +5 -0
- package/dist/shared/graph.js.map +1 -1
- package/dist/shared/similarity.d.ts +3 -0
- package/dist/shared/similarity.d.ts.map +1 -0
- package/dist/shared/similarity.js +52 -0
- package/dist/shared/similarity.js.map +1 -0
- package/dist/shared/tests/graph.test.js +8 -0
- package/dist/shared/tests/graph.test.js.map +1 -1
- package/package.json +3 -2
- package/tools/dkk/templates/index.md.hbs +4 -0
- package/dist/features/adr/commands/adr-related.d.ts +0 -14
- package/dist/features/adr/commands/adr-related.d.ts.map +0 -1
- package/dist/features/adr/commands/adr-related.js +0 -146
- package/dist/features/adr/commands/adr-related.js.map +0 -1
- package/dist/features/adr/commands/adr-show.d.ts +0 -10
- package/dist/features/adr/commands/adr-show.d.ts.map +0 -1
- package/dist/features/adr/commands/adr-show.js +0 -30
- package/dist/features/adr/commands/adr-show.js.map +0 -1
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ All technical details, CLI references, and integration guides live in the [`docs
|
|
|
37
37
|
| **[CLI Reference](docs/cli-reference.md)** | Every command and flag |
|
|
38
38
|
| **[ADR Guide](docs/adr-guide.md)** | Writing, linking, and querying ADRs |
|
|
39
39
|
| **[AI Agent Integration](docs/ai-agent-integration.md)** | Onboarding agents, context-efficient retrieval |
|
|
40
|
+
| **[Way of Working](docs/way-of-working.md)** | Team adoption practices, PR review, CI, governance |
|
|
40
41
|
|
|
41
42
|
## License
|
|
42
43
|
|
package/dist/cli.js
CHANGED
|
@@ -6,10 +6,9 @@ import { registerSummary } from "./features/query/commands/summary.js";
|
|
|
6
6
|
import { registerSearch } from "./features/query/commands/search.js";
|
|
7
7
|
import { registerRelated } from "./features/query/commands/related.js";
|
|
8
8
|
import { registerGraph } from "./features/query/commands/graph.js";
|
|
9
|
+
import { registerLocate } from "./features/query/commands/locate.js";
|
|
9
10
|
import { registerValidate } from "./features/pipeline/commands/validate.js";
|
|
10
11
|
import { registerRender } from "./features/pipeline/commands/render.js";
|
|
11
|
-
import { registerAdrShow } from "./features/adr/commands/adr-show.js";
|
|
12
|
-
import { registerAdrRelated } from "./features/adr/commands/adr-related.js";
|
|
13
12
|
import { registerInit } from "./features/agent/commands/init.js";
|
|
14
13
|
import { registerPrime } from "./features/agent/commands/prime.js";
|
|
15
14
|
import { registerNewDomain } from "./features/scaffold/commands/new-domain.js";
|
|
@@ -18,6 +17,7 @@ import { registerNewAdr } from "./features/scaffold/commands/new-adr.js";
|
|
|
18
17
|
import { registerAddItem } from "./features/scaffold/commands/add-item.js";
|
|
19
18
|
import { registerRename } from "./features/refactor/commands/rename.js";
|
|
20
19
|
import { registerRm } from "./features/refactor/commands/rm.js";
|
|
20
|
+
import { registerMove } from "./features/refactor/commands/move.js";
|
|
21
21
|
import { registerStats } from "./features/audit/commands/stats.js";
|
|
22
22
|
import { formatCliError } from "./shared/errors.js";
|
|
23
23
|
/** Whether to show full stack traces (set DEBUG=1 in env). */
|
|
@@ -26,8 +26,17 @@ const DEBUG = Boolean(process.env.DEBUG);
|
|
|
26
26
|
const program = new Command();
|
|
27
27
|
program
|
|
28
28
|
.name("dkk")
|
|
29
|
-
.description("Domain Knowledge
|
|
30
|
-
.version("0.1.0")
|
|
29
|
+
.description("Domain Knowledge Kit CLI")
|
|
30
|
+
.version("0.1.0")
|
|
31
|
+
.configureHelp({ helpWidth: 100 })
|
|
32
|
+
.addHelpText("after", `
|
|
33
|
+
Domain Types:
|
|
34
|
+
aggregate, command, event, policy, read_model, actor, glossary, rule, context, adr, flow
|
|
35
|
+
|
|
36
|
+
ID Formats:
|
|
37
|
+
PascalCase (domain items: OrderPlaced, PlaceOrder, etc.)
|
|
38
|
+
kebab-case (contexts, adrs: sales, adr-0001, etc.)
|
|
39
|
+
`);
|
|
31
40
|
// Top-level commands
|
|
32
41
|
registerList(program);
|
|
33
42
|
registerShow(program);
|
|
@@ -35,19 +44,15 @@ registerSummary(program);
|
|
|
35
44
|
registerSearch(program);
|
|
36
45
|
registerRelated(program);
|
|
37
46
|
registerGraph(program);
|
|
47
|
+
registerLocate(program);
|
|
38
48
|
registerValidate(program);
|
|
39
49
|
registerRender(program);
|
|
40
50
|
registerInit(program);
|
|
41
51
|
registerPrime(program);
|
|
42
52
|
registerRename(program);
|
|
43
53
|
registerRm(program);
|
|
54
|
+
registerMove(program);
|
|
44
55
|
registerStats(program);
|
|
45
|
-
// ADR sub-command group
|
|
46
|
-
const adrCmd = program
|
|
47
|
-
.command("adr")
|
|
48
|
-
.description("ADR-related commands");
|
|
49
|
-
registerAdrShow(adrCmd);
|
|
50
|
-
registerAdrRelated(adrCmd);
|
|
51
56
|
// "new" sub-command group
|
|
52
57
|
const newCmd = program
|
|
53
58
|
.command("new")
|
|
@@ -57,6 +62,32 @@ registerNewContext(newCmd);
|
|
|
57
62
|
registerNewAdr(newCmd);
|
|
58
63
|
// Top-level "add" command for individual domain items
|
|
59
64
|
registerAddItem(program);
|
|
65
|
+
// ── Agent mode injection ─────────────────────────────────────────────
|
|
66
|
+
program.option("--agent", "Enable agent mode (JSON + minify by default)");
|
|
67
|
+
// Add --no-json to commands that have --json
|
|
68
|
+
function injectAgentModeOpts(cmd) {
|
|
69
|
+
if (cmd.options.some((o) => o.long === "--json")) {
|
|
70
|
+
cmd.option("--no-json", "Disable JSON output");
|
|
71
|
+
}
|
|
72
|
+
if (cmd.options.some((o) => o.long === "--minify")) {
|
|
73
|
+
cmd.option("--no-minify", "Disable minified output");
|
|
74
|
+
}
|
|
75
|
+
cmd.commands.forEach(injectAgentModeOpts);
|
|
76
|
+
}
|
|
77
|
+
injectAgentModeOpts(program);
|
|
78
|
+
program.hook("preAction", (thisCmd, actionCmd) => {
|
|
79
|
+
const isAgent = thisCmd.opts().agent || process.env.DKK_AGENT_MODE === "1";
|
|
80
|
+
if (isAgent) {
|
|
81
|
+
if (actionCmd.options.some((o) => o.long === "--json") &&
|
|
82
|
+
actionCmd.getOptionValue("json") === undefined) {
|
|
83
|
+
actionCmd.setOptionValue("json", true);
|
|
84
|
+
}
|
|
85
|
+
if (actionCmd.options.some((o) => o.long === "--minify") &&
|
|
86
|
+
actionCmd.getOptionValue("minify") === undefined) {
|
|
87
|
+
actionCmd.setOptionValue("minify", true);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
60
91
|
program.parseAsync().catch((err) => {
|
|
61
92
|
console.error(`Error: ${formatCliError(err)}`);
|
|
62
93
|
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,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,
|
|
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;
|
|
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;AAoFhD,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAmC/C"}
|
|
@@ -3,7 +3,10 @@ import { join } from "node:path";
|
|
|
3
3
|
import { repoRoot } from "../../../shared/paths.js";
|
|
4
4
|
const START_MARKER = "<!-- dkk:start -->";
|
|
5
5
|
const END_MARKER = "<!-- dkk:end -->";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* The DKK section content (without markers).
|
|
8
|
+
* Keep the command list in sync with the CLI Reference tables in prime.ts#primeContent.
|
|
9
|
+
*/
|
|
7
10
|
function dkkSection() {
|
|
8
11
|
return `
|
|
9
12
|
## Domain Knowledge Kit
|
|
@@ -12,16 +15,51 @@ This project uses a structured, YAML-based domain model managed by **dkk** (Doma
|
|
|
12
15
|
|
|
13
16
|
Run \`dkk prime\` to get full agent context including domain structure, CLI commands, and workflows.
|
|
14
17
|
|
|
18
|
+
### ⚠️ Events vs Architecture
|
|
19
|
+
|
|
20
|
+
Events and Commands map business domain concepts. They **DO NOT** imply Event-Driven Architecture (EDA) or CQRS decisions.
|
|
21
|
+
|
|
22
|
+
### 🚫 No Manual YAML Edits
|
|
23
|
+
|
|
24
|
+
**Domain YAML is the single source of truth.** To update the domain model, ALWAYS use the DKK CLI commands (e.g. \`dkk add\`, \`dkk rename\`, \`dkk rm\`). Do not manually edit the underlying YAML files directly.
|
|
25
|
+
|
|
26
|
+
### 🏛️ Prioritize ADRs
|
|
27
|
+
|
|
28
|
+
**Always consult Architecture Decision Records.** Before proposing architectural refactors, making tech choices, or modifying domain logic, use \`dkk search "your topic"\` or \`dkk show <id>\` to understand existing constraints and decisions.
|
|
29
|
+
|
|
15
30
|
### Quick Reference
|
|
16
31
|
|
|
17
32
|
\`\`\`bash
|
|
18
|
-
|
|
19
|
-
dkk list
|
|
20
|
-
dkk show <id>
|
|
21
|
-
dkk
|
|
22
|
-
dkk
|
|
23
|
-
dkk
|
|
24
|
-
dkk
|
|
33
|
+
# Query
|
|
34
|
+
dkk list # List all domain items (--context, --type filters)
|
|
35
|
+
dkk show <id> # Display full YAML of a domain item
|
|
36
|
+
dkk summary <id> # Concise item summary (AI-optimized)
|
|
37
|
+
dkk search "<query>" # Full-text search
|
|
38
|
+
dkk related <id> # Graph traversal of related items
|
|
39
|
+
dkk graph # Mermaid.js flowchart (--layout LR|TD, --node-types ...)
|
|
40
|
+
|
|
41
|
+
# Pipeline
|
|
42
|
+
dkk validate # Schema + cross-reference validation
|
|
43
|
+
dkk render # Validate, render docs, rebuild search index
|
|
44
|
+
|
|
45
|
+
# ADR
|
|
46
|
+
|
|
47
|
+
# Scaffold
|
|
48
|
+
dkk new domain # Scaffold .dkk/domain/ structure
|
|
49
|
+
dkk new context <name> # Scaffold a new bounded context
|
|
50
|
+
dkk new adr "<title>" # Scaffold a new ADR file
|
|
51
|
+
dkk add <type> <name> --context <ctx> # Scaffold an individual domain item
|
|
52
|
+
|
|
53
|
+
# Refactor
|
|
54
|
+
dkk rename <old-id> <new-id> # Rename item and update all references
|
|
55
|
+
dkk rm <id> # Remove item safely
|
|
56
|
+
|
|
57
|
+
# Audit
|
|
58
|
+
dkk stats # Domain statistics + orphaned items
|
|
59
|
+
|
|
60
|
+
# Agent
|
|
61
|
+
dkk init # Create/update AGENTS.md with DKK section
|
|
62
|
+
dkk prime # Output full agent context
|
|
25
63
|
\`\`\`
|
|
26
64
|
|
|
27
65
|
### Quality Gates
|
|
@@ -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
|
|
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;;;GAGG;AACH,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DR,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 +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;
|
|
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;AAiehD,uCAAuC;AACvC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAYhD"}
|
|
@@ -2,7 +2,10 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import { loadDomainModel } from "../../../shared/loader.js";
|
|
3
3
|
import { forEachItem } from "../../../shared/item-visitor.js";
|
|
4
4
|
import { domainDir } from "../../../shared/paths.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* The full agent context document.
|
|
7
|
+
* Keep the CLI Command Reference tables in sync with the Quick Reference block in init.ts#dkkSection.
|
|
8
|
+
*/
|
|
6
9
|
function primeContent() {
|
|
7
10
|
return `# Domain Knowledge Kit — Agent Context
|
|
8
11
|
|
|
@@ -12,9 +15,10 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
|
|
|
12
15
|
|
|
13
16
|
## Core Principles
|
|
14
17
|
|
|
15
|
-
1. **Domain YAML is the single source of truth.** Never generate domain knowledge from code
|
|
18
|
+
1. **Domain YAML is the single source of truth.** Never generate domain knowledge from code. To update the domain model, ALWAYS use the DKK CLI commands (e.g. \`dkk add\`, \`dkk rename\`, \`dkk rm\`). Do not manually edit the underlying YAML files directly.
|
|
16
19
|
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\`.
|
|
17
|
-
3. **
|
|
20
|
+
3. **Prioritize ADRs in decision-making.** Before proposing architectural refactors, making tech choices, or modifying domain logic, consult existing decisions via \`dkk search "your topic"\` or \`dkk show <id>\`.
|
|
21
|
+
4. **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.
|
|
18
22
|
|
|
19
23
|
## Domain Model Structure
|
|
20
24
|
|
|
@@ -60,18 +64,59 @@ This project uses a **Domain Knowledge Pack**: a structured, YAML-based domain m
|
|
|
60
64
|
|
|
61
65
|
## CLI Command Reference
|
|
62
66
|
|
|
67
|
+
### Query
|
|
68
|
+
|
|
63
69
|
| Command | Purpose |
|
|
64
70
|
|-------------------------------|------------------------------------------------------|
|
|
65
71
|
| \`dkk list\` | List all domain items (filterable by \`--context\`, \`--type\`) |
|
|
66
72
|
| \`dkk show <id>\` | Display full YAML of a domain item |
|
|
73
|
+
| \`dkk summary <id>\` | Concise item summary with direct relations (AI-optimized) |
|
|
67
74
|
| \`dkk search <query>\` | FTS5 full-text search with ranking |
|
|
68
75
|
| \`dkk related <id>\` | BFS graph traversal of related items |
|
|
76
|
+
| \`dkk graph\` | Mermaid.js flowchart (--layout LR|TD, --node-types to filter kinds) |
|
|
77
|
+
|
|
78
|
+
### Pipeline
|
|
79
|
+
|
|
80
|
+
| Command | Purpose |
|
|
81
|
+
|-------------------------------|------------------------------------------------------|
|
|
69
82
|
| \`dkk validate\` | Schema + cross-reference validation |
|
|
70
83
|
| \`dkk render\` | Validate → render docs → rebuild search index |
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
|
84
|
+
|
|
85
|
+
### ADR
|
|
86
|
+
|
|
87
|
+
| Command | Purpose |
|
|
88
|
+
|-------------------------------|------------------------------------------------------|
|
|
89
|
+
| \`dkk show <id>\` | Display ADR frontmatter |
|
|
90
|
+
| \`dkk related <id>\` | Show bidirectional ADR ↔ domain links |
|
|
91
|
+
|
|
92
|
+
### Scaffold
|
|
93
|
+
|
|
94
|
+
| Command | Purpose |
|
|
95
|
+
|------------------------------------------|------------------------------------------------------|
|
|
96
|
+
| \`dkk new domain\` | Scaffold a complete \`.dkk/domain/\` structure |
|
|
97
|
+
| \`dkk new context <name>\` | Scaffold a new bounded context and register it |
|
|
98
|
+
| \`dkk new adr <title>\` | Scaffold a new ADR file (auto-increments number) |
|
|
99
|
+
| \`dkk add <type> <name> --context <ctx>\` | Scaffold an individual domain item |
|
|
100
|
+
|
|
101
|
+
### Refactor
|
|
102
|
+
|
|
103
|
+
| Command | Purpose |
|
|
104
|
+
|----------------------------------|------------------------------------------------------|
|
|
105
|
+
| \`dkk rename <old-id> <new-id>\` | Rename a domain item and update all references |
|
|
106
|
+
| \`dkk rm <id>\` | Remove a domain item safely (aliases: remove, delete) |
|
|
107
|
+
|
|
108
|
+
### Audit
|
|
109
|
+
|
|
110
|
+
| Command | Purpose |
|
|
111
|
+
|---------------|----------------------------------------------------------|
|
|
112
|
+
| \`dkk stats\` | Print domain model statistics and potential orphaned items |
|
|
113
|
+
|
|
114
|
+
### Agent
|
|
115
|
+
|
|
116
|
+
| Command | Purpose |
|
|
117
|
+
|---------------|------------------------------------------------------|
|
|
118
|
+
| \`dkk init\` | Create/update AGENTS.md with DKK section |
|
|
119
|
+
| \`dkk prime\` | Output this agent context to stdout |
|
|
75
120
|
|
|
76
121
|
## Domain Search Workflow
|
|
77
122
|
|
|
@@ -93,7 +138,7 @@ When answering questions about the domain, always query the model — never gues
|
|
|
93
138
|
\`\`\`
|
|
94
139
|
5. **Check ADR links** — Find architecture decisions connected to results:
|
|
95
140
|
\`\`\`bash
|
|
96
|
-
dkk
|
|
141
|
+
dkk related <id>
|
|
97
142
|
\`\`\`
|
|
98
143
|
6. **Compile the answer** — Present results as a structured summary including:
|
|
99
144
|
- Relevant domain items with ID, type, context, name, and excerpt.
|
|
@@ -102,37 +147,43 @@ When answering questions about the domain, always query the model — never gues
|
|
|
102
147
|
|
|
103
148
|
## Domain Update Workflow
|
|
104
149
|
|
|
105
|
-
When modifying the domain model:
|
|
150
|
+
When modifying the domain model or proposing architectural refactors:
|
|
106
151
|
|
|
107
|
-
1. **
|
|
152
|
+
1. **Consult ADRs First** — Before making decisions or structural changes, check existing constraints and decisions:
|
|
153
|
+
\`\`\`bash
|
|
154
|
+
dkk search "<topic>" --type adr
|
|
155
|
+
# or
|
|
156
|
+
dkk related <id>
|
|
157
|
+
\`\`\`
|
|
158
|
+
2. **Inspect current state** — Load current definitions and neighbours:
|
|
108
159
|
\`\`\`bash
|
|
109
160
|
dkk show <id>
|
|
110
161
|
dkk related <id>
|
|
111
162
|
dkk list --context <name>
|
|
112
163
|
\`\`\`
|
|
113
|
-
|
|
164
|
+
3. **Edit YAML files directly** — Apply changes to the appropriate files:
|
|
114
165
|
- **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
166
|
- **New domain item:** Create a new \`.yml\` file in the correct subdirectory (e.g. \`.dkk/domain/contexts/<name>/events/OrderPlaced.yml\`).
|
|
116
167
|
- **New actor:** Add to \`.dkk/domain/actors.yml\` under \`actors\`.
|
|
117
168
|
- **New flow:** Add to \`.dkk/domain/index.yml\` under \`flows\`.
|
|
118
169
|
- **Modified item:** Edit the item's \`.yml\` file in place, preserving all existing fields.
|
|
119
|
-
|
|
170
|
+
4. **Maintain referential integrity:**
|
|
120
171
|
- \`adr_refs\` must point to existing ADRs in \`.dkk/adr/\`.
|
|
121
172
|
- \`domain_refs\` in ADR frontmatter must point to existing domain items.
|
|
122
173
|
- Update cross-references (\`handles\`, \`emits\`, \`triggers\`, \`subscribes_to\`, \`used_by\`, \`raised_by\`, \`handled_by\`, \`actor\`) on related items to stay consistent.
|
|
123
174
|
- Every new event should have \`raised_by\` pointing to its aggregate.
|
|
124
175
|
- Every new command should have \`handled_by\` pointing to its aggregate.
|
|
125
176
|
- Update aggregate \`handles.commands\` and \`emits.events\` arrays when adding commands/events.
|
|
126
|
-
|
|
177
|
+
5. **Follow naming conventions:**
|
|
127
178
|
- Items: PascalCase (\`OrderPlaced\`, \`PlaceOrder\`).
|
|
128
179
|
- Contexts: kebab-case (\`ordering\`, \`inventory-management\`).
|
|
129
180
|
- ADR ids: \`adr-NNNN\` (zero-padded 4-digit number).
|
|
130
181
|
- Actors: PascalCase (\`Customer\`, \`PaymentGateway\`).
|
|
131
|
-
|
|
182
|
+
6. **Update ADRs** — If the change affects an architectural decision:
|
|
132
183
|
- Add \`domain_refs\` to the ADR frontmatter for new items.
|
|
133
184
|
- Add \`adr_refs\` to new/modified domain items pointing to relevant ADRs.
|
|
134
185
|
- Consider creating a new ADR if the change introduces a significant decision.
|
|
135
|
-
|
|
186
|
+
7. **Run quality gates:**
|
|
136
187
|
\`\`\`bash
|
|
137
188
|
dkk render # Validates → renders docs → rebuilds search index
|
|
138
189
|
\`\`\`
|
|
@@ -262,7 +313,7 @@ When reviewing changes for domain impact:
|
|
|
262
313
|
Watch for: broken \`adr_refs\`, broken \`domain_refs\` in ADRs, dangling cross-references, missing context registrations.
|
|
263
314
|
6. **Find linked ADRs** — Identify decisions that may need updating:
|
|
264
315
|
\`\`\`bash
|
|
265
|
-
dkk
|
|
316
|
+
dkk related <id>
|
|
266
317
|
\`\`\`
|
|
267
318
|
7. **Compile impact analysis** — Report impacted items, blast radius, invariant violations, affected ADRs, and recommendations.
|
|
268
319
|
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"prime.js","sourceRoot":"","sources":["../../../../src/features/agent/commands/prime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CAoGhD"}
|
|
@@ -3,7 +3,9 @@ import { DomainGraph } from "../../../shared/graph.js";
|
|
|
3
3
|
export function registerStats(program) {
|
|
4
4
|
program
|
|
5
5
|
.command("stats")
|
|
6
|
-
.description("Print domain model statistics and
|
|
6
|
+
.description("Print domain model statistics and detect unreferenced items")
|
|
7
|
+
.option("--json", "Output as JSON")
|
|
8
|
+
.option("--minify", "Minify JSON output (useful for AI agents)")
|
|
7
9
|
.option("-r, --root <path>", "Override repository root")
|
|
8
10
|
.action((opts) => {
|
|
9
11
|
const model = loadDomainModel({ root: opts.root });
|
|
@@ -64,6 +66,27 @@ export function registerStats(program) {
|
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
}
|
|
69
|
+
if (opts.json) {
|
|
70
|
+
const payload = {
|
|
71
|
+
counts: {
|
|
72
|
+
contexts: stats.contexts,
|
|
73
|
+
events: stats.events,
|
|
74
|
+
commands: stats.commands,
|
|
75
|
+
aggregates: stats.aggregates,
|
|
76
|
+
policies: stats.policies,
|
|
77
|
+
readModels: stats.readModels,
|
|
78
|
+
actors: stats.actors,
|
|
79
|
+
flows: stats.flows,
|
|
80
|
+
adrs: stats.adrs,
|
|
81
|
+
},
|
|
82
|
+
health: {
|
|
83
|
+
orphanedCount: stats.orphaned.length,
|
|
84
|
+
orphaned: stats.orphaned,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
console.log(JSON.stringify(payload, null, opts.minify ? 0 : 2));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
67
90
|
console.log(`\n📊 Domain Model Statistics\n`);
|
|
68
91
|
console.log(` Contexts: ${stats.contexts}`);
|
|
69
92
|
console.log(` Events: ${stats.events}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../src/features/audit/commands/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,UAAU,aAAa,CAAC,OAAY;IACxC,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../src/features/audit/commands/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/features/pipeline/commands/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAMhD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/features/pipeline/commands/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC;AAMhD,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CA+DjD"}
|
|
@@ -9,6 +9,7 @@ export function registerRender(program) {
|
|
|
9
9
|
.description("Validate, render Markdown docs, and rebuild search index")
|
|
10
10
|
.option("--skip-validation", "Skip schema + cross-ref validation")
|
|
11
11
|
.option("--json", "Output as JSON")
|
|
12
|
+
.option("--minify", "Minify JSON output (useful for AI agents)")
|
|
12
13
|
.option("-r, --root <path>", "Override repository root")
|
|
13
14
|
.action((opts) => {
|
|
14
15
|
const model = loadDomainModel({ root: opts.root });
|
|
@@ -33,7 +34,7 @@ export function registerRender(program) {
|
|
|
33
34
|
success: false,
|
|
34
35
|
error: "Validation failed",
|
|
35
36
|
validationErrors: result.errors.map((e) => ({ message: e.message, path: e.path ?? null })),
|
|
36
|
-
}, null, 2));
|
|
37
|
+
}, null, opts.minify ? 0 : 2));
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
39
40
|
console.error(`\n\u2717 Validation failed with ${result.errors.length} error(s). Fix errors before rendering.\n`);
|
|
@@ -61,7 +62,7 @@ export function registerRender(program) {
|
|
|
61
62
|
rendered: renderResult.fileCount,
|
|
62
63
|
files: renderResult.files,
|
|
63
64
|
searchIndex: dbPath,
|
|
64
|
-
}, null, 2));
|
|
65
|
+
}, null, opts.minify ? 0 : 2));
|
|
65
66
|
}
|
|
66
67
|
else {
|
|
67
68
|
console.log("Done.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/features/pipeline/commands/render.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,wCAAwC;AACxC,MAAM,UAAU,cAAc,CAAC,OAAY;IACzC,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;SACjE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/features/pipeline/commands/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/features/pipeline/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/features/pipeline/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,8BAA8B,CAAC;AAQtC,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAkOD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,eAAoB,GAC5B,YAAY,CA+Ed"}
|
|
@@ -16,6 +16,8 @@ import { join } from "node:path";
|
|
|
16
16
|
import Handlebars from "handlebars";
|
|
17
17
|
import { forEachItem, itemAdrRefs } from "../../shared/item-visitor.js";
|
|
18
18
|
import { docsDir, templatesDir } from "../../shared/paths.js";
|
|
19
|
+
import { DomainGraph } from "../../shared/graph.js";
|
|
20
|
+
import { generateFlowSequence } from "../query/commands/graph.js";
|
|
19
21
|
// ── Handlebars helpers ────────────────────────────────────────────────
|
|
20
22
|
/** Register custom Handlebars helpers used across all templates. */
|
|
21
23
|
function registerHelpers(hbs) {
|
|
@@ -193,9 +195,11 @@ export function renderDocs(model, options = {}) {
|
|
|
193
195
|
rmSync(outDir, { recursive: true, force: true });
|
|
194
196
|
ensureDir(outDir);
|
|
195
197
|
// ── 1. Render top-level index ─────────────────────────────────────
|
|
198
|
+
const graph = DomainGraph.from(model);
|
|
196
199
|
const flowsData = (model.index.flows ?? []).map((f) => ({
|
|
197
200
|
...f,
|
|
198
201
|
steps: f.steps.map((s, i) => ({ ...s, stepNumber: i + 1 })),
|
|
202
|
+
sequenceDiagram: generateFlowSequence(f, graph),
|
|
199
203
|
}));
|
|
200
204
|
const indexData = {
|
|
201
205
|
contexts: model.index.contexts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/features/pipeline/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,UAAU,MAAM,YAAY,CAAC;AAQpC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/features/pipeline/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -281,6 +281,21 @@ function testMissingContextFile() {
|
|
|
281
281
|
assert("detects missing context file", hasError(result, "phantom"));
|
|
282
282
|
rmSync(root, { recursive: true, force: true });
|
|
283
283
|
}
|
|
284
|
+
// ── Test: Context on disk but not in index ────────────────────────────
|
|
285
|
+
function testUnindexedContext() {
|
|
286
|
+
console.log("\n=== Context on disk but not in index ===");
|
|
287
|
+
const root = makeTempRoot("unindexed");
|
|
288
|
+
// Index has NO contexts registered
|
|
289
|
+
writeYaml(join(root, ".dkk", "domain", "index.yml"), "contexts: []\n");
|
|
290
|
+
writeYaml(join(root, ".dkk", "domain", "actors.yml"), "actors: []\n");
|
|
291
|
+
// But a context directory exists on disk
|
|
292
|
+
writeContextDir(root, 'name: orphan\ndescription: "Unregistered context"');
|
|
293
|
+
const model = loadDomainModel({ root });
|
|
294
|
+
const result = validateDomainModel(model, { schemaDir: SCHEMA_DIR });
|
|
295
|
+
assert("detects context on disk not in index", hasError(result, "orphan"));
|
|
296
|
+
assert("result is invalid", !result.valid);
|
|
297
|
+
rmSync(root, { recursive: true, force: true });
|
|
298
|
+
}
|
|
284
299
|
// ── Test: Broken flow step refs ───────────────────────────────────────
|
|
285
300
|
function testBrokenFlowSteps() {
|
|
286
301
|
console.log("\n=== Broken flow step refs ===");
|
|
@@ -359,6 +374,7 @@ testBrokenIntraContextRefs();
|
|
|
359
374
|
testDuplicateNames();
|
|
360
375
|
testGlossaryAggregateCollision();
|
|
361
376
|
testMissingContextFile();
|
|
377
|
+
testUnindexedContext();
|
|
362
378
|
testBrokenFlowSteps();
|
|
363
379
|
testBrokenSupersededBy();
|
|
364
380
|
testWarnMissingFields();
|