@theglitchking/hit-em-with-the-docs 2.4.0 → 2.6.0
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +76 -0
- package/commands/domain.md +48 -0
- package/dist/action/core/audit/auditor.d.ts.map +1 -1
- package/dist/action/core/audit/rules.d.ts.map +1 -1
- package/dist/action/core/domains/constants.d.ts +28 -23
- package/dist/action/core/domains/constants.d.ts.map +1 -1
- package/dist/action/core/domains/detector.d.ts +1 -1
- package/dist/action/core/domains/detector.d.ts.map +1 -1
- package/dist/action/core/domains/manage.d.ts +76 -0
- package/dist/action/core/domains/manage.d.ts.map +1 -0
- package/dist/action/core/domains/registry.d.ts +54 -0
- package/dist/action/core/domains/registry.d.ts.map +1 -0
- package/dist/action/core/integrate/integrator.d.ts.map +1 -1
- package/dist/action/core/links/tracker.d.ts.map +1 -1
- package/dist/action/core/maintain/orchestrator.d.ts +2 -0
- package/dist/action/core/maintain/orchestrator.d.ts.map +1 -1
- package/dist/action/generators/index-generator.d.ts.map +1 -1
- package/dist/action/generators/regenerate.d.ts +38 -0
- package/dist/action/generators/regenerate.d.ts.map +1 -0
- package/dist/action/generators/registry-generator.d.ts.map +1 -1
- package/dist/action/generators/scaffold.d.ts.map +1 -1
- package/dist/action/index.d.ts +2 -0
- package/dist/action/index.d.ts.map +1 -1
- package/dist/action/index.js +4 -4
- package/dist/action/utils/config.d.ts +139 -0
- package/dist/action/utils/config.d.ts.map +1 -1
- package/dist/action/utils/glob.d.ts +13 -1
- package/dist/action/utils/glob.d.ts.map +1 -1
- package/dist/cli/index.js +157 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit/auditor.d.ts.map +1 -1
- package/dist/core/audit/auditor.js +62 -2
- package/dist/core/audit/auditor.js.map +1 -1
- package/dist/core/audit/rules.d.ts.map +1 -1
- package/dist/core/audit/rules.js +3 -2
- package/dist/core/audit/rules.js.map +1 -1
- package/dist/core/domains/constants.d.ts +28 -23
- package/dist/core/domains/constants.d.ts.map +1 -1
- package/dist/core/domains/constants.js +11 -41
- package/dist/core/domains/constants.js.map +1 -1
- package/dist/core/domains/detector.d.ts +1 -1
- package/dist/core/domains/detector.d.ts.map +1 -1
- package/dist/core/domains/detector.js +5 -5
- package/dist/core/domains/detector.js.map +1 -1
- package/dist/core/domains/manage.d.ts +76 -0
- package/dist/core/domains/manage.d.ts.map +1 -0
- package/dist/core/domains/manage.js +171 -0
- package/dist/core/domains/manage.js.map +1 -0
- package/dist/core/domains/registry.d.ts +54 -0
- package/dist/core/domains/registry.d.ts.map +1 -0
- package/dist/core/domains/registry.js +116 -0
- package/dist/core/domains/registry.js.map +1 -0
- package/dist/core/integrate/integrator.d.ts.map +1 -1
- package/dist/core/integrate/integrator.js +9 -31
- package/dist/core/integrate/integrator.js.map +1 -1
- package/dist/core/links/tracker.d.ts.map +1 -1
- package/dist/core/links/tracker.js +8 -5
- package/dist/core/links/tracker.js.map +1 -1
- package/dist/core/maintain/orchestrator.d.ts +2 -0
- package/dist/core/maintain/orchestrator.d.ts.map +1 -1
- package/dist/core/maintain/orchestrator.js +21 -2
- package/dist/core/maintain/orchestrator.js.map +1 -1
- package/dist/core/metadata/schema.d.ts +48 -48
- package/dist/generators/index-generator.d.ts.map +1 -1
- package/dist/generators/index-generator.js +10 -10
- package/dist/generators/index-generator.js.map +1 -1
- package/dist/generators/regenerate.d.ts +38 -0
- package/dist/generators/regenerate.d.ts.map +1 -0
- package/dist/generators/regenerate.js +138 -0
- package/dist/generators/regenerate.js.map +1 -0
- package/dist/generators/registry-generator.d.ts.map +1 -1
- package/dist/generators/registry-generator.js +6 -6
- package/dist/generators/registry-generator.js.map +1 -1
- package/dist/generators/scaffold.d.ts.map +1 -1
- package/dist/generators/scaffold.js +43 -9
- package/dist/generators/scaffold.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +139 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +82 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/glob.d.ts +13 -1
- package/dist/utils/glob.d.ts.map +1 -1
- package/dist/utils/glob.js +23 -2
- package/dist/utils/glob.js.map +1 -1
- package/package.json +1 -1
- package/templates/claude/CLAUDE.md +5 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { readdir, readFile, writeFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { getAllDomains } from '../core/domains/registry.js';
|
|
4
|
+
import { parseFrontmatter } from '../utils/frontmatter.js';
|
|
5
|
+
import { formatDate } from '../core/metadata/generator.js';
|
|
6
|
+
import { pathExists } from '../utils/glob.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
import { generateRootIndex, generateDomainIndexContent, } from './index-generator.js';
|
|
9
|
+
import { generateRootRegistry, generateDomainRegistryContent, } from './registry-generator.js';
|
|
10
|
+
/** Generated files that are never themselves treated as documents. */
|
|
11
|
+
const SYSTEM_FILES = new Set(['INDEX.md', 'REGISTRY.md']);
|
|
12
|
+
/**
|
|
13
|
+
* List the document files in a domain directory, excluding the generated
|
|
14
|
+
* INDEX.md / REGISTRY.md. Returns sorted file names (not paths). Empty when
|
|
15
|
+
* the domain directory does not exist.
|
|
16
|
+
*/
|
|
17
|
+
export async function listDomainDocFiles(docsPath, domain) {
|
|
18
|
+
try {
|
|
19
|
+
const names = await readdir(join(docsPath, domain));
|
|
20
|
+
return names
|
|
21
|
+
.filter((n) => n.endsWith('.md') && !SYSTEM_FILES.has(n))
|
|
22
|
+
.sort();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Normalise a frontmatter date (Date | ISO string | plain date) to YYYY-MM-DD. */
|
|
29
|
+
function normalizeDate(value) {
|
|
30
|
+
if (value instanceof Date)
|
|
31
|
+
return formatDate(value);
|
|
32
|
+
if (typeof value === 'string') {
|
|
33
|
+
const match = value.match(/\d{4}-\d{2}-\d{2}/);
|
|
34
|
+
return match ? match[0] : value;
|
|
35
|
+
}
|
|
36
|
+
return formatDate(new Date());
|
|
37
|
+
}
|
|
38
|
+
/** Count words in a markdown body (frontmatter already stripped). */
|
|
39
|
+
function countWords(body) {
|
|
40
|
+
return body.split(/\s+/).filter(Boolean).length;
|
|
41
|
+
}
|
|
42
|
+
/** Derive a human title from a file name when frontmatter has no title. */
|
|
43
|
+
function titleFromFileName(fileName) {
|
|
44
|
+
return fileName
|
|
45
|
+
.replace(/\.md$/, '')
|
|
46
|
+
.replace(/[-_]/g, ' ')
|
|
47
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build IndexEntry[] for one domain by reading every document's frontmatter.
|
|
51
|
+
* `pathPrefix` is prepended to each entry's `path` — `''` for domain-relative
|
|
52
|
+
* paths (domain INDEX/REGISTRY) or `'<domain>/'` for root-relative paths.
|
|
53
|
+
*/
|
|
54
|
+
async function buildDomainEntries(docsPath, domain, pathPrefix) {
|
|
55
|
+
const files = await listDomainDocFiles(docsPath, domain);
|
|
56
|
+
const entries = [];
|
|
57
|
+
for (const fileName of files) {
|
|
58
|
+
let raw;
|
|
59
|
+
try {
|
|
60
|
+
raw = await readFile(join(docsPath, domain, fileName), 'utf-8');
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const { data, content } = parseFrontmatter(raw);
|
|
66
|
+
entries.push({
|
|
67
|
+
path: pathPrefix + fileName,
|
|
68
|
+
title: typeof data.title === 'string' && data.title.trim()
|
|
69
|
+
? data.title
|
|
70
|
+
: titleFromFileName(fileName),
|
|
71
|
+
tier: typeof data.tier === 'string' ? data.tier : 'guide',
|
|
72
|
+
status: typeof data.status === 'string' ? data.status : 'active',
|
|
73
|
+
lastUpdated: normalizeDate(data.last_updated),
|
|
74
|
+
wordCount: typeof data.word_count === 'number'
|
|
75
|
+
? data.word_count
|
|
76
|
+
: countWords(content),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return entries;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Regenerate domain + root INDEX.md / REGISTRY.md from the documents on disk.
|
|
83
|
+
*
|
|
84
|
+
* This is the single source of truth for index generation, shared by
|
|
85
|
+
* `integrate`, `maintain`, and the `index` CLI command. It replaces the
|
|
86
|
+
* fragile regex-append path in `integrate` that could only update an
|
|
87
|
+
* already-populated table — and silently no-op'd on a freshly scaffolded
|
|
88
|
+
* INDEX.md, so the first document into any domain was never registered
|
|
89
|
+
* (see https://github.com/TheGlitchKing/hit-em-with-the-docs/issues/7).
|
|
90
|
+
*/
|
|
91
|
+
export async function regenerateIndexes(options) {
|
|
92
|
+
const { docsPath, silent = false } = options;
|
|
93
|
+
const allDomains = getAllDomains();
|
|
94
|
+
const targetDomains = options.domains ?? allDomains;
|
|
95
|
+
const result = {
|
|
96
|
+
documentCounts: {},
|
|
97
|
+
filesWritten: [],
|
|
98
|
+
totalDocuments: 0,
|
|
99
|
+
};
|
|
100
|
+
// Scan every domain — the root INDEX needs counts for all of them even
|
|
101
|
+
// when only a subset of domain files is being rewritten.
|
|
102
|
+
const rootEntriesByDomain = {};
|
|
103
|
+
for (const domain of allDomains) {
|
|
104
|
+
const domainEntries = await buildDomainEntries(docsPath, domain, '');
|
|
105
|
+
result.documentCounts[domain] = domainEntries.length;
|
|
106
|
+
result.totalDocuments += domainEntries.length;
|
|
107
|
+
rootEntriesByDomain[domain] = domainEntries.map((e) => ({
|
|
108
|
+
...e,
|
|
109
|
+
path: `${domain}/${e.path}`,
|
|
110
|
+
}));
|
|
111
|
+
// Only (re)write a domain's own files when it is in the target set and
|
|
112
|
+
// its directory actually exists on disk.
|
|
113
|
+
if (!targetDomains.includes(domain))
|
|
114
|
+
continue;
|
|
115
|
+
const domainDir = join(docsPath, domain);
|
|
116
|
+
if (!(await pathExists(domainDir)))
|
|
117
|
+
continue;
|
|
118
|
+
const indexPath = join(domainDir, 'INDEX.md');
|
|
119
|
+
const registryPath = join(domainDir, 'REGISTRY.md');
|
|
120
|
+
await writeFile(indexPath, generateDomainIndexContent(domain, domainEntries), 'utf-8');
|
|
121
|
+
await writeFile(registryPath, generateDomainRegistryContent(domain, domainEntries), 'utf-8');
|
|
122
|
+
result.filesWritten.push(indexPath, registryPath);
|
|
123
|
+
}
|
|
124
|
+
// Root INDEX.md / REGISTRY.md — always refreshed.
|
|
125
|
+
if (await pathExists(docsPath)) {
|
|
126
|
+
const rootIndexPath = join(docsPath, 'INDEX.md');
|
|
127
|
+
const rootRegistryPath = join(docsPath, 'REGISTRY.md');
|
|
128
|
+
await writeFile(rootIndexPath, generateRootIndex(rootEntriesByDomain), 'utf-8');
|
|
129
|
+
await writeFile(rootRegistryPath, generateRootRegistry(), 'utf-8');
|
|
130
|
+
result.filesWritten.push(rootIndexPath, rootRegistryPath);
|
|
131
|
+
}
|
|
132
|
+
if (!silent) {
|
|
133
|
+
logger.success(`Regenerated ${result.filesWritten.length} index file(s) — ` +
|
|
134
|
+
`${result.totalDocuments} document(s) across ${allDomains.length} domains`);
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=regenerate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regenerate.js","sourceRoot":"","sources":["../../src/generators/regenerate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-generator.d.ts","sourceRoot":"","sources":["../../src/generators/registry-generator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"registry-generator.d.ts","sourceRoot":"","sources":["../../src/generators/registry-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAO3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA6D7C;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,UAAU,EAAO,GACzB,MAAM,CA8ER"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAllDomains, getDomainDefinition, getDomainsByCategory, } from '../core/domains/registry.js';
|
|
2
2
|
import { formatDate } from '../core/metadata/generator.js';
|
|
3
3
|
/**
|
|
4
4
|
* Generate the root REGISTRY.md content (quick reference)
|
|
@@ -24,8 +24,8 @@ purpose: Quick reference for all documentation domains
|
|
|
24
24
|
| Domain | Category | Priority | Keywords |
|
|
25
25
|
|--------|----------|----------|----------|
|
|
26
26
|
`;
|
|
27
|
-
for (const domain of
|
|
28
|
-
const def =
|
|
27
|
+
for (const domain of getAllDomains()) {
|
|
28
|
+
const def = getDomainDefinition(domain);
|
|
29
29
|
const keywords = def.keywords.slice(0, 3).join(', ');
|
|
30
30
|
content += `| [${def.name}](${domain}/) | ${def.category} | ${def.loadPriority}/10 | ${keywords} |\n`;
|
|
31
31
|
}
|
|
@@ -33,10 +33,10 @@ purpose: Quick reference for all documentation domains
|
|
|
33
33
|
// Group by category
|
|
34
34
|
const categories = ['core', 'development', 'features', 'advanced'];
|
|
35
35
|
for (const category of categories) {
|
|
36
|
-
const categoryDomains =
|
|
36
|
+
const categoryDomains = getDomainsByCategory(category);
|
|
37
37
|
content += `### ${capitalize(category)}\n\n`;
|
|
38
38
|
for (const domain of categoryDomains) {
|
|
39
|
-
const def =
|
|
39
|
+
const def = getDomainDefinition(domain);
|
|
40
40
|
content += `- **[${def.name}](${domain}/)** - ${def.description}\n`;
|
|
41
41
|
}
|
|
42
42
|
content += `\n`;
|
|
@@ -59,7 +59,7 @@ purpose: Quick reference for all documentation domains
|
|
|
59
59
|
* Generate domain-specific REGISTRY.md content
|
|
60
60
|
*/
|
|
61
61
|
export function generateDomainRegistryContent(domain, entries = []) {
|
|
62
|
-
const def =
|
|
62
|
+
const def = getDomainDefinition(domain);
|
|
63
63
|
const now = formatDate(new Date());
|
|
64
64
|
let content = `---
|
|
65
65
|
title: ${def.name} Registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-generator.js","sourceRoot":"","sources":["../../src/generators/registry-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry-generator.js","sourceRoot":"","sources":["../../src/generators/registry-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAS3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAsDtF;AAuND;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC,CA4BD"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { mkdir, writeFile } from 'fs/promises';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import { getAllDomains, getDomainDefinition } from '../core/domains/registry.js';
|
|
4
4
|
import { generateRootIndex } from './index-generator.js';
|
|
5
5
|
import { generateRootRegistry } from './registry-generator.js';
|
|
6
6
|
import { generateDomainIndex } from './templates/domain-index.js';
|
|
7
7
|
import { generateDomainRegistry } from './templates/domain-registry.js';
|
|
8
8
|
import { logger } from '../utils/logger.js';
|
|
9
|
-
import { pathExists } from '../utils/glob.js';
|
|
9
|
+
import { pathExists, ARCHIVE_DIR } from '../utils/glob.js';
|
|
10
10
|
/**
|
|
11
11
|
* Create the complete documentation scaffold
|
|
12
12
|
*/
|
|
13
13
|
export async function createScaffold(options) {
|
|
14
|
-
const { rootPath, overwrite = false, domains =
|
|
14
|
+
const { rootPath, overwrite = false, domains = getAllDomains(), silent = false, } = options;
|
|
15
15
|
const result = {
|
|
16
16
|
success: true,
|
|
17
17
|
created: [],
|
|
@@ -96,7 +96,7 @@ async function createRootFiles(rootPath, result, overwrite) {
|
|
|
96
96
|
*/
|
|
97
97
|
async function createDomainStructure(rootPath, domain, result, overwrite) {
|
|
98
98
|
const domainPath = join(rootPath, domain);
|
|
99
|
-
const def =
|
|
99
|
+
const def = getDomainDefinition(domain);
|
|
100
100
|
// Create domain directory
|
|
101
101
|
await createDirectory(domainPath, result, overwrite);
|
|
102
102
|
// Create INDEX.md
|
|
@@ -107,16 +107,50 @@ async function createDomainStructure(rootPath, domain, result, overwrite) {
|
|
|
107
107
|
await createFile(join(domainPath, 'REGISTRY.md'), registryContent, result, overwrite);
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
* Create special directories (drafts, reports)
|
|
110
|
+
* Create special directories (drafts, reports, archive)
|
|
111
111
|
*/
|
|
112
112
|
async function createSpecialDirectories(rootPath, result, overwrite) {
|
|
113
113
|
// Drafts directory
|
|
114
114
|
await createDirectory(join(rootPath, 'drafts'), result, overwrite);
|
|
115
115
|
// Reports directory
|
|
116
116
|
await createDirectory(join(rootPath, 'reports'), result, overwrite);
|
|
117
|
+
// Archive directory — deprecated docs live here and are NOT scanned.
|
|
118
|
+
await createDirectory(join(rootPath, ARCHIVE_DIR), result, overwrite);
|
|
117
119
|
// Create .gitkeep files to preserve empty directories
|
|
118
120
|
await createFile(join(rootPath, 'drafts', '.gitkeep'), '# This file ensures the drafts directory is tracked by git\n', result, overwrite);
|
|
119
121
|
await createFile(join(rootPath, 'reports', '.gitkeep'), '# This file ensures the reports directory is tracked by git\n', result, overwrite);
|
|
122
|
+
// Archive README documents the convention (and keeps the dir tracked).
|
|
123
|
+
await createFile(join(rootPath, ARCHIVE_DIR, 'README.md'), generateArchiveReadme(), result, overwrite);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate the archive/ README — the user-facing instruction for the
|
|
127
|
+
* deprecated-docs convention.
|
|
128
|
+
*/
|
|
129
|
+
function generateArchiveReadme() {
|
|
130
|
+
return `# Archive
|
|
131
|
+
|
|
132
|
+
This folder is the parking lot for **deprecated documentation**.
|
|
133
|
+
|
|
134
|
+
Move a doc here when it is retired but you don't want to delete it (historical
|
|
135
|
+
reference, superseded guides, old runbooks, etc.).
|
|
136
|
+
|
|
137
|
+
## hewtd ignores this folder
|
|
138
|
+
|
|
139
|
+
Everything under \`archive/\` is **excluded from every hewtd scan** — \`audit\`,
|
|
140
|
+
\`link-check\`, \`metadata-sync\`, \`integrate\` duplicate-detection, the link
|
|
141
|
+
graph, and \`search\`. Archived docs:
|
|
142
|
+
|
|
143
|
+
- are **not** validated against the frontmatter schema,
|
|
144
|
+
- do **not** appear in any INDEX.md / REGISTRY.md,
|
|
145
|
+
- do **not** break link-check or audit if their frontmatter is stale.
|
|
146
|
+
|
|
147
|
+
In other words: parking a doc here takes it out of the active corpus without
|
|
148
|
+
losing it. To bring a doc back, move it into the appropriate domain folder and
|
|
149
|
+
run \`hewtd maintain\`.
|
|
150
|
+
|
|
151
|
+
> Note: \`archive/\` is a reserved name. Do not create a custom domain called
|
|
152
|
+
> \`archive\`.
|
|
153
|
+
`;
|
|
120
154
|
}
|
|
121
155
|
/**
|
|
122
156
|
* Generate root README content
|
|
@@ -124,7 +158,7 @@ async function createSpecialDirectories(rootPath, result, overwrite) {
|
|
|
124
158
|
function generateRootReadme() {
|
|
125
159
|
return `# Documentation
|
|
126
160
|
|
|
127
|
-
This documentation system uses a hierarchical
|
|
161
|
+
This documentation system uses a hierarchical, domain-based structure for optimal organization and discoverability.
|
|
128
162
|
|
|
129
163
|
## Quick Navigation
|
|
130
164
|
|
|
@@ -135,7 +169,7 @@ This documentation system uses a hierarchical 15-domain structure for optimal or
|
|
|
135
169
|
|
|
136
170
|
| Domain | Description |
|
|
137
171
|
|--------|-------------|
|
|
138
|
-
${
|
|
172
|
+
${getAllDomains().map((d) => `| [${d}](${d}/) | ${getDomainDefinition(d).description} |`).join('\n')}
|
|
139
173
|
|
|
140
174
|
## Adding New Documentation
|
|
141
175
|
|
|
@@ -190,12 +224,12 @@ export async function getScaffoldStatus(rootPath) {
|
|
|
190
224
|
return {
|
|
191
225
|
exists: false,
|
|
192
226
|
domains: [],
|
|
193
|
-
missingDomains:
|
|
227
|
+
missingDomains: getAllDomains(),
|
|
194
228
|
};
|
|
195
229
|
}
|
|
196
230
|
const presentDomains = [];
|
|
197
231
|
const missingDomains = [];
|
|
198
|
-
for (const domain of
|
|
232
|
+
for (const domain of getAllDomains()) {
|
|
199
233
|
const domainPath = join(rootPath, domain);
|
|
200
234
|
if (await pathExists(domainPath)) {
|
|
201
235
|
presentDomains.push(domain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/generators/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* intelligent automation, pattern discovery, and agent orchestration.
|
|
6
6
|
*/
|
|
7
7
|
export * from './core/domains/constants.js';
|
|
8
|
+
export * from './core/domains/registry.js';
|
|
8
9
|
export * from './core/domains/detector.js';
|
|
9
10
|
export * from './core/domains/classifier.js';
|
|
10
11
|
export * from './core/metadata/schema.js';
|
|
@@ -16,6 +17,7 @@ export * from './utils/markdown.js';
|
|
|
16
17
|
export * from './generators/scaffold.js';
|
|
17
18
|
export * from './generators/index-generator.js';
|
|
18
19
|
export * from './generators/registry-generator.js';
|
|
20
|
+
export * from './generators/regenerate.js';
|
|
19
21
|
export * from './core/metadata/sync.js';
|
|
20
22
|
export * from './core/links/checker.js';
|
|
21
23
|
export * from './core/links/tracker.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAG3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAGzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
// Core domain system
|
|
8
8
|
export * from './core/domains/constants.js';
|
|
9
|
+
export * from './core/domains/registry.js';
|
|
9
10
|
export * from './core/domains/detector.js';
|
|
10
11
|
export * from './core/domains/classifier.js';
|
|
11
12
|
// Metadata system
|
|
@@ -20,6 +21,7 @@ export * from './utils/markdown.js';
|
|
|
20
21
|
export * from './generators/scaffold.js';
|
|
21
22
|
export * from './generators/index-generator.js';
|
|
22
23
|
export * from './generators/registry-generator.js';
|
|
24
|
+
export * from './generators/regenerate.js';
|
|
23
25
|
// Core automation
|
|
24
26
|
export * from './core/metadata/sync.js';
|
|
25
27
|
export * from './core/links/checker.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAE7C,kBAAkB;AAClB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAE7C,YAAY;AACZ,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,aAAa;AACb,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAE7C,kBAAkB;AAClB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAE7C,YAAY;AACZ,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,aAAa;AACb,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAE3C,kBAAkB;AAClB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAEhD,mBAAmB;AACnB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAEhD,UAAU;AACV,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AAEzC,qCAAqC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -10,6 +10,43 @@ import { z } from 'zod';
|
|
|
10
10
|
export declare const DEFAULT_VAULT_ROOT = ".documentation/knowledge-base/";
|
|
11
11
|
export declare const DEFAULT_PLAYBOOK_GLOBS: string[];
|
|
12
12
|
export declare const DEFAULT_AUDIT_WINDOW_DAYS = 90;
|
|
13
|
+
/**
|
|
14
|
+
* Valid `category` values for a domain. Kept in sync with `DomainDefinition`
|
|
15
|
+
* in `core/domains/constants.ts` — duplicated here intentionally so the config
|
|
16
|
+
* loader carries no dependency on the domain layer (the registry imports the
|
|
17
|
+
* config, not the other way around).
|
|
18
|
+
*/
|
|
19
|
+
export declare const DOMAIN_CATEGORY_VALUES: readonly ["core", "development", "features", "advanced"];
|
|
20
|
+
/**
|
|
21
|
+
* Schema for a single custom domain entry. Mirrors `DomainDefinition`. Used
|
|
22
|
+
* by the registry merge layer and by `hewtd domain add` (which validates
|
|
23
|
+
* strictly before writing). Collision with a built-in id is NOT checked here —
|
|
24
|
+
* that requires knowing the built-in set, so it is enforced in the registry
|
|
25
|
+
* merge (drop-with-warning) and in the CLI writer (hard error).
|
|
26
|
+
*/
|
|
27
|
+
export declare const customDomainSchema: z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
name: z.ZodString;
|
|
30
|
+
description: z.ZodString;
|
|
31
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
32
|
+
loadPriority: z.ZodNumber;
|
|
33
|
+
category: z.ZodEnum<["core", "development", "features", "advanced"]>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
description: string;
|
|
38
|
+
keywords: string[];
|
|
39
|
+
loadPriority: number;
|
|
40
|
+
category: "features" | "core" | "development" | "advanced";
|
|
41
|
+
}, {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
description: string;
|
|
45
|
+
keywords: string[];
|
|
46
|
+
loadPriority: number;
|
|
47
|
+
category: "features" | "core" | "development" | "advanced";
|
|
48
|
+
}>;
|
|
49
|
+
export type CustomDomainConfig = z.infer<typeof customDomainSchema>;
|
|
13
50
|
/**
|
|
14
51
|
* Schema for `.claude/hit-em-with-the-docs.json`. Every field is optional
|
|
15
52
|
* with a sensible default. The runtime's `updatePolicy` is preserved via
|
|
@@ -42,6 +79,35 @@ declare const pluginConfigSchema: z.ZodObject<{
|
|
|
42
79
|
playbook_paths?: string[] | undefined;
|
|
43
80
|
audit_window_days?: number | undefined;
|
|
44
81
|
}>>;
|
|
82
|
+
domains: z.ZodDefault<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
83
|
+
id: z.ZodString;
|
|
84
|
+
name: z.ZodString;
|
|
85
|
+
description: z.ZodString;
|
|
86
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
87
|
+
loadPriority: z.ZodNumber;
|
|
88
|
+
category: z.ZodEnum<["core", "development", "features", "advanced"]>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
id: string;
|
|
91
|
+
name: string;
|
|
92
|
+
description: string;
|
|
93
|
+
keywords: string[];
|
|
94
|
+
loadPriority: number;
|
|
95
|
+
category: "features" | "core" | "development" | "advanced";
|
|
96
|
+
}, {
|
|
97
|
+
id: string;
|
|
98
|
+
name: string;
|
|
99
|
+
description: string;
|
|
100
|
+
keywords: string[];
|
|
101
|
+
loadPriority: number;
|
|
102
|
+
category: "features" | "core" | "development" | "advanced";
|
|
103
|
+
}>, "many">, {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
description: string;
|
|
107
|
+
keywords: string[];
|
|
108
|
+
loadPriority: number;
|
|
109
|
+
category: "features" | "core" | "development" | "advanced";
|
|
110
|
+
}[], unknown>>;
|
|
45
111
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
46
112
|
vault: z.ZodDefault<z.ZodObject<{
|
|
47
113
|
root: z.ZodDefault<z.ZodString>;
|
|
@@ -56,6 +122,35 @@ declare const pluginConfigSchema: z.ZodObject<{
|
|
|
56
122
|
playbook_paths?: string[] | undefined;
|
|
57
123
|
audit_window_days?: number | undefined;
|
|
58
124
|
}>>;
|
|
125
|
+
domains: z.ZodDefault<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
126
|
+
id: z.ZodString;
|
|
127
|
+
name: z.ZodString;
|
|
128
|
+
description: z.ZodString;
|
|
129
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
130
|
+
loadPriority: z.ZodNumber;
|
|
131
|
+
category: z.ZodEnum<["core", "development", "features", "advanced"]>;
|
|
132
|
+
}, "strip", z.ZodTypeAny, {
|
|
133
|
+
id: string;
|
|
134
|
+
name: string;
|
|
135
|
+
description: string;
|
|
136
|
+
keywords: string[];
|
|
137
|
+
loadPriority: number;
|
|
138
|
+
category: "features" | "core" | "development" | "advanced";
|
|
139
|
+
}, {
|
|
140
|
+
id: string;
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
keywords: string[];
|
|
144
|
+
loadPriority: number;
|
|
145
|
+
category: "features" | "core" | "development" | "advanced";
|
|
146
|
+
}>, "many">, {
|
|
147
|
+
id: string;
|
|
148
|
+
name: string;
|
|
149
|
+
description: string;
|
|
150
|
+
keywords: string[];
|
|
151
|
+
loadPriority: number;
|
|
152
|
+
category: "features" | "core" | "development" | "advanced";
|
|
153
|
+
}[], unknown>>;
|
|
59
154
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
60
155
|
vault: z.ZodDefault<z.ZodObject<{
|
|
61
156
|
root: z.ZodDefault<z.ZodString>;
|
|
@@ -70,6 +165,35 @@ declare const pluginConfigSchema: z.ZodObject<{
|
|
|
70
165
|
playbook_paths?: string[] | undefined;
|
|
71
166
|
audit_window_days?: number | undefined;
|
|
72
167
|
}>>;
|
|
168
|
+
domains: z.ZodDefault<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
169
|
+
id: z.ZodString;
|
|
170
|
+
name: z.ZodString;
|
|
171
|
+
description: z.ZodString;
|
|
172
|
+
keywords: z.ZodArray<z.ZodString, "many">;
|
|
173
|
+
loadPriority: z.ZodNumber;
|
|
174
|
+
category: z.ZodEnum<["core", "development", "features", "advanced"]>;
|
|
175
|
+
}, "strip", z.ZodTypeAny, {
|
|
176
|
+
id: string;
|
|
177
|
+
name: string;
|
|
178
|
+
description: string;
|
|
179
|
+
keywords: string[];
|
|
180
|
+
loadPriority: number;
|
|
181
|
+
category: "features" | "core" | "development" | "advanced";
|
|
182
|
+
}, {
|
|
183
|
+
id: string;
|
|
184
|
+
name: string;
|
|
185
|
+
description: string;
|
|
186
|
+
keywords: string[];
|
|
187
|
+
loadPriority: number;
|
|
188
|
+
category: "features" | "core" | "development" | "advanced";
|
|
189
|
+
}>, "many">, {
|
|
190
|
+
id: string;
|
|
191
|
+
name: string;
|
|
192
|
+
description: string;
|
|
193
|
+
keywords: string[];
|
|
194
|
+
loadPriority: number;
|
|
195
|
+
category: "features" | "core" | "development" | "advanced";
|
|
196
|
+
}[], unknown>>;
|
|
73
197
|
}, z.ZodTypeAny, "passthrough">>;
|
|
74
198
|
export type VaultConfig = z.infer<typeof vaultConfigSchema>;
|
|
75
199
|
export type PluginConfig = z.infer<typeof pluginConfigSchema>;
|
|
@@ -85,6 +209,21 @@ export declare function loadPluginConfig(projectRoot?: string): Promise<PluginCo
|
|
|
85
209
|
* Same fail-open behavior.
|
|
86
210
|
*/
|
|
87
211
|
export declare function loadPluginConfigSync(projectRoot?: string): PluginConfig;
|
|
212
|
+
/**
|
|
213
|
+
* Read the RAW config object (unparsed, no defaults applied) for a project.
|
|
214
|
+
* Returns `{}` when the file is missing or unreadable/malformed. Use this when
|
|
215
|
+
* you need to MUTATE the config and write it back without clobbering keys this
|
|
216
|
+
* module doesn't model (e.g. the runtime's `updatePolicy`). Never throws.
|
|
217
|
+
*/
|
|
218
|
+
export declare function readRawConfig(projectRoot?: string): Promise<Record<string, unknown>>;
|
|
219
|
+
/**
|
|
220
|
+
* Write the RAW config object back to `.claude/hit-em-with-the-docs.json`,
|
|
221
|
+
* creating the `.claude/` directory if needed. Pretty-printed with a trailing
|
|
222
|
+
* newline. Returns the absolute path written.
|
|
223
|
+
*/
|
|
224
|
+
export declare function writeRawConfig(projectRoot: string, data: Record<string, unknown>): Promise<string>;
|
|
225
|
+
/** Absolute path to a project's config file (whether or not it exists). */
|
|
226
|
+
export declare function configFilePath(projectRoot: string): string;
|
|
88
227
|
/**
|
|
89
228
|
* Resolve the vault root for a project, applying config + defaults.
|
|
90
229
|
* The returned path is absolute.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,sBAAsB,UAA6B,CAAC;AACjE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAK5C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,0DAKzB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAgBpE;;;;GAIG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;GAMT,CAAC;AAEf,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAKR,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBlF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,CAiBvE;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAElF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,GACnB,MAAM,EAAE,CAEV"}
|