@genvidtech/c3-domain-manager 0.0.1 → 0.6.2
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/LICENSE +18 -0
- package/README.md +195 -29
- package/dist/adapters/locations.d.ts +22 -0
- package/dist/adapters/locations.d.ts.map +1 -0
- package/dist/adapters/locations.js +42 -0
- package/dist/adapters/locations.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +99 -0
- package/dist/cli.js.map +1 -0
- package/dist/domain/classification.d.ts +8 -0
- package/dist/domain/classification.d.ts.map +1 -0
- package/dist/domain/classification.js +66 -0
- package/dist/domain/classification.js.map +1 -0
- package/dist/domain/contextMap.d.ts +8 -0
- package/dist/domain/contextMap.d.ts.map +1 -0
- package/dist/domain/contextMap.js +168 -0
- package/dist/domain/contextMap.js.map +1 -0
- package/dist/domain/domainAnalysis.d.ts +25 -0
- package/dist/domain/domainAnalysis.d.ts.map +1 -0
- package/dist/domain/domainAnalysis.js +136 -0
- package/dist/domain/domainAnalysis.js.map +1 -0
- package/dist/domain/domainGenerator.d.ts +33 -0
- package/dist/domain/domainGenerator.d.ts.map +1 -0
- package/dist/domain/domainGenerator.js +312 -0
- package/dist/domain/domainGenerator.js.map +1 -0
- package/dist/domain/editorValidation.d.ts +19 -0
- package/dist/domain/editorValidation.d.ts.map +1 -0
- package/dist/domain/editorValidation.js +40 -0
- package/dist/domain/editorValidation.js.map +1 -0
- package/dist/domain/formatting.d.ts +16 -0
- package/dist/domain/formatting.d.ts.map +1 -0
- package/dist/domain/formatting.js +414 -0
- package/dist/domain/formatting.js.map +1 -0
- package/dist/domain/glossary.d.ts +20 -0
- package/dist/domain/glossary.d.ts.map +1 -0
- package/dist/domain/glossary.js +62 -0
- package/dist/domain/glossary.js.map +1 -0
- package/dist/domain/health.d.ts +14 -0
- package/dist/domain/health.d.ts.map +1 -0
- package/dist/domain/health.js +21 -0
- package/dist/domain/health.js.map +1 -0
- package/dist/domain/relationships.d.ts +13 -0
- package/dist/domain/relationships.d.ts.map +1 -0
- package/dist/domain/relationships.js +74 -0
- package/dist/domain/relationships.js.map +1 -0
- package/dist/domain/types.d.ts +290 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +29 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +519 -0
- package/dist/mcp/server.js.map +1 -0
- package/docs/TOC.md +27 -0
- package/docs/decisions/0001-adopt-c3source-extractors.md +67 -0
- package/docs/decisions/0002-configurable-locations-adapters-seam.md +72 -0
- package/docs/decisions/0003-adopt-loadprojectconfig-schema-first.md +73 -0
- package/docs/decisions/0004-adopt-mcp-utils-0.4.0-helpers.md +74 -0
- package/docs/decisions/0005-validateforeditor-read-side-diagnostic.md +65 -0
- package/docs/decisions/0006-event-variable-reference-coupling.md +77 -0
- package/docs/decisions/0007-project-dir-resolverootfolder.md +72 -0
- package/docs/decisions/0008-adopt-openproject-option-a.md +77 -0
- package/docs/domain-architecture.md +242 -0
- package/docs/releasing.md +122 -0
- package/package.json +79 -8
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
// --- Formatting ---
|
|
2
|
+
/**
|
|
3
|
+
* Format the domain index page (master overview of all domains).
|
|
4
|
+
*/
|
|
5
|
+
export function formatDomainIndex(domains, unclassified) {
|
|
6
|
+
const lines = [];
|
|
7
|
+
// Count totals
|
|
8
|
+
const totalEventSheets = domains.reduce((sum, d) => sum + d.eventSheets.length, 0);
|
|
9
|
+
const totalLayouts = domains.reduce((sum, d) => sum + d.layouts.length, 0);
|
|
10
|
+
const totalScripts = domains.reduce((sum, d) => sum + d.scripts.length, 0);
|
|
11
|
+
lines.push("# C3 Domain Index");
|
|
12
|
+
lines.push("");
|
|
13
|
+
lines.push(`Files: ${totalEventSheets} eventSheets, ${totalLayouts} layouts, ${totalScripts} scripts`);
|
|
14
|
+
lines.push("");
|
|
15
|
+
// Separate regular domains from shared subdomains
|
|
16
|
+
const regularDomains = domains.filter((d) => !d.isSharedSubdomain);
|
|
17
|
+
const sharedSubdomains = domains.filter((d) => d.isSharedSubdomain);
|
|
18
|
+
// Domains table
|
|
19
|
+
lines.push("## Domains");
|
|
20
|
+
lines.push("");
|
|
21
|
+
const strategyGroups = [
|
|
22
|
+
{ label: "Core Domains", domains: regularDomains.filter((d) => d.strategy === "core") },
|
|
23
|
+
{ label: "Supporting Domains", domains: regularDomains.filter((d) => d.strategy === "supporting") },
|
|
24
|
+
{ label: "Generic Domains", domains: regularDomains.filter((d) => d.strategy === "generic") },
|
|
25
|
+
{ label: "Unclassified Domains", domains: regularDomains.filter((d) => !d.strategy) },
|
|
26
|
+
];
|
|
27
|
+
const allUnclassified = regularDomains.every((d) => !d.strategy);
|
|
28
|
+
if (allUnclassified) {
|
|
29
|
+
// Backward compat: single flat table
|
|
30
|
+
lines.push("| Domain | Description | EventSheets | Layouts | Scripts | Dependencies |");
|
|
31
|
+
lines.push("| --- | --- | --- | --- | --- | --- |");
|
|
32
|
+
for (const domain of regularDomains) {
|
|
33
|
+
const scriptsStr = formatScriptsCount(domain.scripts);
|
|
34
|
+
const deps = formatDependencies(domain.includesFrom);
|
|
35
|
+
const safeFileName = domain.name.replace(/\//g, "-");
|
|
36
|
+
lines.push(`| [${domain.name}](${safeFileName}.md) | ${domain.description} | ${domain.eventSheets.length} | ${domain.layouts.length} | ${scriptsStr} | ${deps} |`);
|
|
37
|
+
}
|
|
38
|
+
lines.push("");
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Grouped by strategy
|
|
42
|
+
for (const group of strategyGroups) {
|
|
43
|
+
if (group.domains.length === 0)
|
|
44
|
+
continue;
|
|
45
|
+
const sorted = [...group.domains].sort((a, b) => a.name.localeCompare(b.name));
|
|
46
|
+
lines.push(`### ${group.label}`);
|
|
47
|
+
lines.push("");
|
|
48
|
+
lines.push("| Domain | Description | EventSheets | Layouts | Scripts | Dependencies |");
|
|
49
|
+
lines.push("| --- | --- | --- | --- | --- | --- |");
|
|
50
|
+
for (const domain of sorted) {
|
|
51
|
+
const scriptsStr = formatScriptsCount(domain.scripts);
|
|
52
|
+
const deps = formatDependencies(domain.includesFrom);
|
|
53
|
+
const safeFileName = domain.name.replace(/\//g, "-");
|
|
54
|
+
lines.push(`| [${domain.name}](${safeFileName}.md) | ${domain.description} | ${domain.eventSheets.length} | ${domain.layouts.length} | ${scriptsStr} | ${deps} |`);
|
|
55
|
+
}
|
|
56
|
+
lines.push("");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Shared Subdomains table
|
|
60
|
+
if (sharedSubdomains.length > 0) {
|
|
61
|
+
lines.push("## Shared Subdomains");
|
|
62
|
+
lines.push("");
|
|
63
|
+
lines.push("| Subdomain | Description | EventSheets | Layouts | Scripts |");
|
|
64
|
+
lines.push("| --- | --- | --- | --- | --- |");
|
|
65
|
+
for (const subdomain of sharedSubdomains) {
|
|
66
|
+
const scriptsStr = formatScriptsCount(subdomain.scripts);
|
|
67
|
+
const safeFileName = subdomain.name.replace(/\//g, "-");
|
|
68
|
+
lines.push(`| [${subdomain.name}](${safeFileName}.md) | ${subdomain.description} | ${subdomain.eventSheets.length} | ${subdomain.layouts.length} | ${scriptsStr} |`);
|
|
69
|
+
}
|
|
70
|
+
lines.push("");
|
|
71
|
+
}
|
|
72
|
+
// Cross-domain hubs
|
|
73
|
+
lines.push("## Cross-Domain Hubs");
|
|
74
|
+
lines.push("");
|
|
75
|
+
const hubs = findCrossDomainHubs(domains);
|
|
76
|
+
if (hubs.length === 0) {
|
|
77
|
+
lines.push("No cross-domain hubs detected.");
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
for (const hub of hubs) {
|
|
81
|
+
lines.push(`- **${hub.sheetName}** (${hub.domainName}): includes ${hub.totalSheets} sheets from ${hub.domainNames.join(", ")}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
lines.push("");
|
|
85
|
+
// Unclassified files
|
|
86
|
+
if (unclassified.length === 0) {
|
|
87
|
+
lines.push("## Unclassified Files");
|
|
88
|
+
lines.push("");
|
|
89
|
+
lines.push("All files classified.");
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
lines.push(`## Unclassified Files (${unclassified.length})`);
|
|
93
|
+
lines.push("");
|
|
94
|
+
for (const file of unclassified) {
|
|
95
|
+
lines.push(`- ${file}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
lines.push("");
|
|
99
|
+
return lines.join("\n");
|
|
100
|
+
}
|
|
101
|
+
function formatScriptsCount(scripts) {
|
|
102
|
+
const dirs = scripts.filter((s) => s.isDirectory).length;
|
|
103
|
+
const files = scripts.filter((s) => !s.isDirectory).length;
|
|
104
|
+
const parts = [];
|
|
105
|
+
if (dirs > 0)
|
|
106
|
+
parts.push(`${dirs} ${dirs === 1 ? "dir" : "dirs"}`);
|
|
107
|
+
if (files > 0)
|
|
108
|
+
parts.push(`${files} ${files === 1 ? "file" : "files"}`);
|
|
109
|
+
return parts.length > 0 ? parts.join(", ") : "0";
|
|
110
|
+
}
|
|
111
|
+
function formatDependencies(includesFrom) {
|
|
112
|
+
if (includesFrom.size === 0)
|
|
113
|
+
return "";
|
|
114
|
+
const domainNames = Array.from(includesFrom.keys()).sort();
|
|
115
|
+
return "\u2192 " + domainNames.join(", ");
|
|
116
|
+
}
|
|
117
|
+
function findCrossDomainHubs(domains) {
|
|
118
|
+
const hubs = [];
|
|
119
|
+
for (const domain of domains) {
|
|
120
|
+
if (domain.includesFrom.size < 3)
|
|
121
|
+
continue;
|
|
122
|
+
// Count total included sheets across all domains
|
|
123
|
+
let totalSheets = 0;
|
|
124
|
+
const domainNames = [];
|
|
125
|
+
for (const [domainName, sheets] of domain.includesFrom) {
|
|
126
|
+
totalSheets += sheets.length;
|
|
127
|
+
domainNames.push(domainName);
|
|
128
|
+
}
|
|
129
|
+
if (totalSheets >= 5 && domainNames.length >= 3) {
|
|
130
|
+
// Find the eventSheet that's likely the hub (use first eventSheet as representative)
|
|
131
|
+
const sheetName = domain.eventSheets.length > 0
|
|
132
|
+
? extractFileName(domain.eventSheets[0].path)
|
|
133
|
+
: domain.name;
|
|
134
|
+
hubs.push({
|
|
135
|
+
sheetName,
|
|
136
|
+
domainName: domain.name,
|
|
137
|
+
totalSheets,
|
|
138
|
+
domainNames: domainNames.sort(),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return hubs.sort((a, b) => a.domainName.localeCompare(b.domainName));
|
|
143
|
+
}
|
|
144
|
+
function extractFileName(filePath) {
|
|
145
|
+
const parts = filePath.split("/");
|
|
146
|
+
const fileName = parts[parts.length - 1];
|
|
147
|
+
return fileName.replace(/\.json$/, "");
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Format a single domain's detail page.
|
|
151
|
+
*/
|
|
152
|
+
export function formatDomainPage(domain) {
|
|
153
|
+
const lines = [];
|
|
154
|
+
// Header
|
|
155
|
+
lines.push(`# ${domain.name}`);
|
|
156
|
+
lines.push("");
|
|
157
|
+
lines.push(domain.description);
|
|
158
|
+
lines.push("");
|
|
159
|
+
if (domain.strategy) {
|
|
160
|
+
lines.push(`**Strategy:** ${domain.strategy}`);
|
|
161
|
+
lines.push("");
|
|
162
|
+
}
|
|
163
|
+
// EventSheets section
|
|
164
|
+
formatEventSheetsSection(domain, lines);
|
|
165
|
+
// Functions section
|
|
166
|
+
formatFunctionsSection(domain, lines);
|
|
167
|
+
// Layouts section
|
|
168
|
+
formatLayoutsSection(domain, lines);
|
|
169
|
+
// Scripts section
|
|
170
|
+
formatScriptsSection(domain, lines);
|
|
171
|
+
// Cross-Domain Dependencies
|
|
172
|
+
formatCrossDomainSection(domain, lines);
|
|
173
|
+
return lines.join("\n");
|
|
174
|
+
}
|
|
175
|
+
function formatEventSheetsSection(domain, lines) {
|
|
176
|
+
lines.push(`## EventSheets (${domain.eventSheets.length})`);
|
|
177
|
+
lines.push("");
|
|
178
|
+
if (domain.eventSheets.length === 0)
|
|
179
|
+
return;
|
|
180
|
+
// Group by directory
|
|
181
|
+
const groups = new Map();
|
|
182
|
+
for (const sheet of domain.eventSheets) {
|
|
183
|
+
const dir = sheet.directory || "";
|
|
184
|
+
const existing = groups.get(dir) ?? [];
|
|
185
|
+
const fileName = sheet.path.split("/").pop() ?? sheet.path;
|
|
186
|
+
existing.push(fileName);
|
|
187
|
+
groups.set(dir, existing);
|
|
188
|
+
}
|
|
189
|
+
// Sort groups: alphabetical, with "" (Root) last
|
|
190
|
+
const sortedKeys = Array.from(groups.keys()).sort((a, b) => {
|
|
191
|
+
if (a === "")
|
|
192
|
+
return 1;
|
|
193
|
+
if (b === "")
|
|
194
|
+
return -1;
|
|
195
|
+
return a.localeCompare(b);
|
|
196
|
+
});
|
|
197
|
+
for (const dir of sortedKeys) {
|
|
198
|
+
const files = groups.get(dir).sort();
|
|
199
|
+
const label = dir === "" ? "Root" : `${dir}/`;
|
|
200
|
+
lines.push(`### ${label} (${files.length})`);
|
|
201
|
+
for (const file of files) {
|
|
202
|
+
lines.push(`- ${file}`);
|
|
203
|
+
}
|
|
204
|
+
lines.push("");
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function formatFunctionsSection(domain, lines) {
|
|
208
|
+
lines.push(`## Functions (${domain.functions.length})`);
|
|
209
|
+
lines.push("");
|
|
210
|
+
if (domain.functions.length === 0)
|
|
211
|
+
return;
|
|
212
|
+
// Group by sourceSheet
|
|
213
|
+
const groups = new Map();
|
|
214
|
+
for (const func of domain.functions) {
|
|
215
|
+
const existing = groups.get(func.sourceSheet) ?? [];
|
|
216
|
+
existing.push(func);
|
|
217
|
+
groups.set(func.sourceSheet, existing);
|
|
218
|
+
}
|
|
219
|
+
const sortedKeys = Array.from(groups.keys()).sort();
|
|
220
|
+
for (const sheet of sortedKeys) {
|
|
221
|
+
const funcs = groups.get(sheet).sort((a, b) => a.name.localeCompare(b.name));
|
|
222
|
+
lines.push(`### ${sheet}`);
|
|
223
|
+
for (const func of funcs) {
|
|
224
|
+
if (func.objectClass) {
|
|
225
|
+
lines.push(`- ${func.objectClass}.${func.aceName}(${func.params}) \u2192 ${func.returnType}`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
lines.push(`- ${func.name}(${func.params}) \u2192 ${func.returnType}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
lines.push("");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function formatLayoutsSection(domain, lines) {
|
|
235
|
+
lines.push(`## Layouts (${domain.layouts.length})`);
|
|
236
|
+
lines.push("");
|
|
237
|
+
if (domain.layouts.length === 0)
|
|
238
|
+
return;
|
|
239
|
+
const sortedLayouts = [...domain.layouts].sort((a, b) => a.path.localeCompare(b.path));
|
|
240
|
+
for (const layout of sortedLayouts) {
|
|
241
|
+
let line = `- ${layout.path} \u2192 ${layout.eventSheet}`;
|
|
242
|
+
if (layout.eventSheetDomain !== domain.name) {
|
|
243
|
+
line += ` (cross-domain: ${layout.eventSheetDomain})`;
|
|
244
|
+
}
|
|
245
|
+
lines.push(line);
|
|
246
|
+
}
|
|
247
|
+
lines.push("");
|
|
248
|
+
}
|
|
249
|
+
function formatScriptsSection(domain, lines) {
|
|
250
|
+
lines.push("## Scripts");
|
|
251
|
+
lines.push("");
|
|
252
|
+
if (domain.scripts.length === 0)
|
|
253
|
+
return;
|
|
254
|
+
const dirs = domain.scripts.filter((s) => s.isDirectory).sort((a, b) => a.path.localeCompare(b.path));
|
|
255
|
+
const files = domain.scripts.filter((s) => !s.isDirectory).sort((a, b) => a.path.localeCompare(b.path));
|
|
256
|
+
if (dirs.length > 0) {
|
|
257
|
+
lines.push("### Directories");
|
|
258
|
+
for (const dir of dirs) {
|
|
259
|
+
lines.push(`- ${dir.path}`);
|
|
260
|
+
}
|
|
261
|
+
lines.push("");
|
|
262
|
+
}
|
|
263
|
+
if (files.length > 0) {
|
|
264
|
+
lines.push("### Files");
|
|
265
|
+
for (const file of files) {
|
|
266
|
+
lines.push(`- ${file.path}`);
|
|
267
|
+
}
|
|
268
|
+
lines.push("");
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Format a DomainConfig into human-readable text.
|
|
273
|
+
* When section is "all", all three sections are concatenated with blank line separators.
|
|
274
|
+
*/
|
|
275
|
+
export function formatDomainConfig(config, section = "all") {
|
|
276
|
+
if (section === "domains")
|
|
277
|
+
return formatDomainsSection(config);
|
|
278
|
+
if (section === "sharedSubdomains")
|
|
279
|
+
return formatSharedSubdomainsSection(config);
|
|
280
|
+
if (section === "overrides")
|
|
281
|
+
return formatOverridesSection(config);
|
|
282
|
+
// "all"
|
|
283
|
+
const parts = [
|
|
284
|
+
formatDomainsSection(config),
|
|
285
|
+
formatSharedSubdomainsSection(config),
|
|
286
|
+
formatOverridesSection(config),
|
|
287
|
+
];
|
|
288
|
+
return parts.join("\n");
|
|
289
|
+
}
|
|
290
|
+
function formatDomainsSection(config) {
|
|
291
|
+
const lines = [];
|
|
292
|
+
const entries = Object.entries(config.domains).sort(([a], [b]) => a.localeCompare(b));
|
|
293
|
+
lines.push(`## Domains (${entries.length})`);
|
|
294
|
+
for (const [name, def] of entries) {
|
|
295
|
+
lines.push("");
|
|
296
|
+
lines.push(name);
|
|
297
|
+
lines.push(` Description: ${def.description}`);
|
|
298
|
+
if (def.strategy) {
|
|
299
|
+
lines.push(` Strategy: ${def.strategy}`);
|
|
300
|
+
}
|
|
301
|
+
if (def.eventSheetDirs && def.eventSheetDirs.length > 0) {
|
|
302
|
+
lines.push(` eventSheetDirs: ${def.eventSheetDirs.join(", ")}`);
|
|
303
|
+
}
|
|
304
|
+
if (def.layoutDirs && def.layoutDirs.length > 0) {
|
|
305
|
+
lines.push(` layoutDirs: ${def.layoutDirs.join(", ")}`);
|
|
306
|
+
}
|
|
307
|
+
if (def.scriptDirs && def.scriptDirs.length > 0) {
|
|
308
|
+
lines.push(` scriptDirs: ${def.scriptDirs.join(", ")}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
lines.push("");
|
|
312
|
+
return lines.join("\n");
|
|
313
|
+
}
|
|
314
|
+
function formatSharedSubdomainsSection(config) {
|
|
315
|
+
const lines = [];
|
|
316
|
+
const entries = Object.entries(config.sharedSubdomains ?? {}).sort(([a], [b]) => a.localeCompare(b));
|
|
317
|
+
lines.push(`## Shared Subdomains (${entries.length})`);
|
|
318
|
+
for (const [name, def] of entries) {
|
|
319
|
+
lines.push("");
|
|
320
|
+
lines.push(name);
|
|
321
|
+
lines.push(` Description: ${def.description}`);
|
|
322
|
+
if (def.eventSheetDirs && def.eventSheetDirs.length > 0) {
|
|
323
|
+
lines.push(` eventSheetDirs: ${def.eventSheetDirs.join(", ")}`);
|
|
324
|
+
}
|
|
325
|
+
if (def.layoutDirs && def.layoutDirs.length > 0) {
|
|
326
|
+
lines.push(` layoutDirs: ${def.layoutDirs.join(", ")}`);
|
|
327
|
+
}
|
|
328
|
+
if (def.scriptDirs && def.scriptDirs.length > 0) {
|
|
329
|
+
lines.push(` scriptDirs: ${def.scriptDirs.join(", ")}`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
lines.push("");
|
|
333
|
+
return lines.join("\n");
|
|
334
|
+
}
|
|
335
|
+
function formatOverridesSection(config) {
|
|
336
|
+
const lines = [];
|
|
337
|
+
const entries = Object.entries(config.overrides ?? {}).sort(([a], [b]) => a.localeCompare(b));
|
|
338
|
+
lines.push(`## Overrides (${entries.length})`);
|
|
339
|
+
lines.push("");
|
|
340
|
+
for (const [filePath, domain] of entries) {
|
|
341
|
+
lines.push(`${filePath} -> ${domain}`);
|
|
342
|
+
}
|
|
343
|
+
lines.push("");
|
|
344
|
+
return lines.join("\n");
|
|
345
|
+
}
|
|
346
|
+
function formatCrossDomainSection(domain, lines) {
|
|
347
|
+
lines.push("## Cross-Domain Dependencies");
|
|
348
|
+
lines.push("");
|
|
349
|
+
// Includes from this domain (outgoing)
|
|
350
|
+
lines.push("### Includes from this domain");
|
|
351
|
+
if (domain.includesFrom.size === 0) {
|
|
352
|
+
lines.push("None.");
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
const sortedDomains = Array.from(domain.includesFrom.keys()).sort();
|
|
356
|
+
for (const targetDomain of sortedDomains) {
|
|
357
|
+
const sheets = [...domain.includesFrom.get(targetDomain)].sort();
|
|
358
|
+
const count = sheets.length;
|
|
359
|
+
let sheetList;
|
|
360
|
+
if (sheets.length > 5) {
|
|
361
|
+
sheetList = sheets.slice(0, 5).join(", ") + ", ...";
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
sheetList = sheets.join(", ");
|
|
365
|
+
}
|
|
366
|
+
lines.push(`- \u2192 ${targetDomain} (${count} ${count === 1 ? "sheet" : "sheets"}): ${sheetList}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
lines.push("");
|
|
370
|
+
// Includes into this domain (incoming)
|
|
371
|
+
lines.push("### Includes into this domain");
|
|
372
|
+
if (domain.includedBy.size === 0) {
|
|
373
|
+
lines.push("None.");
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
const sortedDomains = Array.from(domain.includedBy.keys()).sort();
|
|
377
|
+
for (const sourceDomain of sortedDomains) {
|
|
378
|
+
const sheets = [...domain.includedBy.get(sourceDomain)].sort();
|
|
379
|
+
let sheetList;
|
|
380
|
+
if (sheets.length > 5) {
|
|
381
|
+
sheetList = sheets.slice(0, 5).join(", ") + ", ...";
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
sheetList = sheets.join(", ");
|
|
385
|
+
}
|
|
386
|
+
lines.push(`- \u2190 ${sourceDomain}: ${sheetList}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
lines.push("");
|
|
390
|
+
// Event-variable references from this domain (outgoing) \u2014 only when present
|
|
391
|
+
if (domain.referencesFrom.size > 0) {
|
|
392
|
+
lines.push("### Event-variable references from this domain");
|
|
393
|
+
const sortedDomains = Array.from(domain.referencesFrom.keys()).sort();
|
|
394
|
+
for (const targetDomain of sortedDomains) {
|
|
395
|
+
const vars = [...domain.referencesFrom.get(targetDomain)].sort();
|
|
396
|
+
const count = vars.length;
|
|
397
|
+
const varList = vars.length > 5 ? vars.slice(0, 5).join(", ") + ", ..." : vars.join(", ");
|
|
398
|
+
lines.push(`- \u2192 ${targetDomain} (${count} ${count === 1 ? "variable" : "variables"}): ${varList}`);
|
|
399
|
+
}
|
|
400
|
+
lines.push("");
|
|
401
|
+
}
|
|
402
|
+
// Event-variable references into this domain (incoming) \u2014 only when present
|
|
403
|
+
if (domain.referencedBy.size > 0) {
|
|
404
|
+
lines.push("### Event-variable references into this domain");
|
|
405
|
+
const sortedDomains = Array.from(domain.referencedBy.keys()).sort();
|
|
406
|
+
for (const sourceDomain of sortedDomains) {
|
|
407
|
+
const vars = [...domain.referencedBy.get(sourceDomain)].sort();
|
|
408
|
+
const varList = vars.length > 5 ? vars.slice(0, 5).join(", ") + ", ..." : vars.join(", ");
|
|
409
|
+
lines.push(`- \u2190 ${sourceDomain}: ${varList}`);
|
|
410
|
+
}
|
|
411
|
+
lines.push("");
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/domain/formatting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DomainConfig } from "./types.js";
|
|
2
|
+
export interface GlossaryEntry {
|
|
3
|
+
term: string;
|
|
4
|
+
definition: string;
|
|
5
|
+
domain: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CollisionReport {
|
|
8
|
+
term: string;
|
|
9
|
+
entries: Array<{
|
|
10
|
+
domain: string;
|
|
11
|
+
definition: string;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
/** Collect all glossary entries from domain config. */
|
|
15
|
+
export declare function collectGlossary(config: DomainConfig): GlossaryEntry[];
|
|
16
|
+
/** Find terms that appear in multiple domains with different definitions. */
|
|
17
|
+
export declare function findCollisions(entries: GlossaryEntry[]): CollisionReport[];
|
|
18
|
+
/** Format collision report as human-readable text. */
|
|
19
|
+
export declare function formatGlossaryReport(collisions: CollisionReport[]): string;
|
|
20
|
+
//# sourceMappingURL=glossary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/domain/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CAsBrE;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAyB1E;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAc1E"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/** Collect all glossary entries from domain config. */
|
|
2
|
+
export function collectGlossary(config) {
|
|
3
|
+
const entries = [];
|
|
4
|
+
for (const [name, def] of Object.entries(config.domains)) {
|
|
5
|
+
if (def.glossary) {
|
|
6
|
+
for (const [term, definition] of Object.entries(def.glossary)) {
|
|
7
|
+
entries.push({ term, definition, domain: name });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
if (config.sharedSubdomains) {
|
|
12
|
+
for (const [name, def] of Object.entries(config.sharedSubdomains)) {
|
|
13
|
+
if (def.glossary) {
|
|
14
|
+
for (const [term, definition] of Object.entries(def.glossary)) {
|
|
15
|
+
entries.push({ term, definition, domain: name });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return entries;
|
|
21
|
+
}
|
|
22
|
+
/** Find terms that appear in multiple domains with different definitions. */
|
|
23
|
+
export function findCollisions(entries) {
|
|
24
|
+
// Group by lowercase term
|
|
25
|
+
const groups = new Map();
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
const key = entry.term.toLowerCase();
|
|
28
|
+
const existing = groups.get(key) ?? [];
|
|
29
|
+
existing.push(entry);
|
|
30
|
+
groups.set(key, existing);
|
|
31
|
+
}
|
|
32
|
+
const collisions = [];
|
|
33
|
+
for (const [, group] of groups) {
|
|
34
|
+
if (group.length < 2)
|
|
35
|
+
continue;
|
|
36
|
+
// Check if there are different definitions
|
|
37
|
+
const uniqueDefs = new Set(group.map(e => e.definition));
|
|
38
|
+
if (uniqueDefs.size < 2)
|
|
39
|
+
continue; // Same definition everywhere — not a collision
|
|
40
|
+
collisions.push({
|
|
41
|
+
term: group[0].term, // Use first occurrence's casing
|
|
42
|
+
entries: group.map(e => ({ domain: e.domain, definition: e.definition })),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return collisions.sort((a, b) => a.term.toLowerCase().localeCompare(b.term.toLowerCase()));
|
|
46
|
+
}
|
|
47
|
+
/** Format collision report as human-readable text. */
|
|
48
|
+
export function formatGlossaryReport(collisions) {
|
|
49
|
+
if (collisions.length === 0) {
|
|
50
|
+
return "No glossary collisions found.";
|
|
51
|
+
}
|
|
52
|
+
const lines = [`${collisions.length} glossary collision(s) found:`, ""];
|
|
53
|
+
for (const collision of collisions) {
|
|
54
|
+
lines.push(`**${collision.term}**`);
|
|
55
|
+
for (const entry of collision.entries) {
|
|
56
|
+
lines.push(` - ${entry.domain}: ${entry.definition}`);
|
|
57
|
+
}
|
|
58
|
+
lines.push("");
|
|
59
|
+
}
|
|
60
|
+
return lines.join("\n");
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=glossary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/domain/glossary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DomainData } from "./types.js";
|
|
2
|
+
export interface HealthMetrics {
|
|
3
|
+
ca: number;
|
|
4
|
+
ce: number;
|
|
5
|
+
instability: number;
|
|
6
|
+
coverage: number;
|
|
7
|
+
}
|
|
8
|
+
/** Compute health metrics for a single domain. */
|
|
9
|
+
export declare function computeHealth(domain: DomainData): HealthMetrics;
|
|
10
|
+
/** Format health report as a text table. */
|
|
11
|
+
export declare function formatHealthReport(results: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
} & HealthMetrics>): string;
|
|
14
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/domain/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CAO/D;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAC,GAAG,MAAM,CAY3F"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Compute health metrics for a single domain. */
|
|
2
|
+
export function computeHealth(domain) {
|
|
3
|
+
const ce = new Set([...domain.includesFrom.keys(), ...domain.referencesFrom.keys()]).size;
|
|
4
|
+
const ca = new Set([...domain.includedBy.keys(), ...domain.referencedBy.keys()]).size;
|
|
5
|
+
const instability = ca + ce === 0 ? 0 : ce / (ca + ce);
|
|
6
|
+
const coverage = domain.eventSheets.length + domain.layouts.length + domain.scripts.length > 0 ? 1 : 0;
|
|
7
|
+
return { ca, ce, instability, coverage };
|
|
8
|
+
}
|
|
9
|
+
/** Format health report as a text table. */
|
|
10
|
+
export function formatHealthReport(results) {
|
|
11
|
+
if (results.length === 0)
|
|
12
|
+
return "No domains to report on.";
|
|
13
|
+
const lines = [];
|
|
14
|
+
lines.push("| Domain | Ca | Ce | Instability | Coverage |");
|
|
15
|
+
lines.push("| --- | --- | --- | --- | --- |");
|
|
16
|
+
for (const r of results.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
17
|
+
lines.push(`| ${r.name} | ${r.ca} | ${r.ce} | ${r.instability.toFixed(2)} | ${r.coverage} |`);
|
|
18
|
+
}
|
|
19
|
+
return lines.join("\n");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/domain/health.ts"],"names":[],"mappings":"AASA,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,QAAQ,GACZ,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,OAAgD;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAE5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAE9C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DomainConfig, DomainData } from "./types.js";
|
|
2
|
+
export interface BoundaryViolation {
|
|
3
|
+
type: "undeclared" | "stale" | "forbidden";
|
|
4
|
+
message: string;
|
|
5
|
+
from?: string;
|
|
6
|
+
to?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BoundaryReport {
|
|
9
|
+
violations: BoundaryViolation[];
|
|
10
|
+
}
|
|
11
|
+
export declare function validateBoundaries(domains: DomainData[], config: DomainConfig, filterDomain?: string): BoundaryReport;
|
|
12
|
+
export declare function formatBoundaryReport(report: BoundaryReport): string;
|
|
13
|
+
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/domain/relationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO3D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,CAgErH;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAYnE"}
|