@theglitchking/hit-em-with-the-docs 2.5.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 +74 -0
- package/commands/domain.md +48 -0
- 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/links/tracker.d.ts.map +1 -1
- package/dist/action/generators/index-generator.d.ts.map +1 -1
- package/dist/action/generators/regenerate.d.ts.map +1 -1
- 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 +1 -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 +127 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit/auditor.js +2 -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/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.js +2 -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.map +1 -1
- package/dist/generators/regenerate.js +5 -4
- package/dist/generators/regenerate.js.map +1 -1
- 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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/core/audit/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/core/audit/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,38 +3,43 @@
|
|
|
3
3
|
* The system organizes documentation into 15 specialized domains.
|
|
4
4
|
*/
|
|
5
5
|
export declare const DOMAINS: readonly ["agents", "api", "architecture", "backups", "database", "devops", "features", "plans", "procedures", "quickstart", "security", "standards", "testing", "troubleshooting", "workflows"];
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The 15 compiled-in domains. These are guaranteed present in every project.
|
|
8
|
+
*/
|
|
9
|
+
export type BuiltinDomain = (typeof DOMAINS)[number];
|
|
10
|
+
/**
|
|
11
|
+
* A domain id. Widened from the built-in union to also accept arbitrary
|
|
12
|
+
* (config-supplied) custom domain ids, while preserving autocomplete and
|
|
13
|
+
* compile-time safety for references to the built-ins (e.g. `'security'`).
|
|
14
|
+
*
|
|
15
|
+
* The active set at runtime — built-ins plus any custom domains from
|
|
16
|
+
* `.claude/hit-em-with-the-docs.json` — is resolved by the registry
|
|
17
|
+
* (`./registry.ts`). Use the registry's accessors (`getAllDomains`,
|
|
18
|
+
* `isValidDomain`, `getDomainDefinition`, …) for the live set; the `DOMAINS`
|
|
19
|
+
* and `DOMAIN_DEFINITIONS` exports below are the BUILT-INS ONLY.
|
|
20
|
+
*/
|
|
21
|
+
export type Domain = BuiltinDomain | (string & {});
|
|
22
|
+
export type DomainCategory = 'core' | 'development' | 'features' | 'advanced';
|
|
7
23
|
export interface DomainDefinition {
|
|
8
24
|
id: Domain;
|
|
9
25
|
name: string;
|
|
10
26
|
description: string;
|
|
11
27
|
keywords: string[];
|
|
12
28
|
loadPriority: number;
|
|
13
|
-
category:
|
|
29
|
+
category: DomainCategory;
|
|
14
30
|
}
|
|
15
|
-
export declare const DOMAIN_DEFINITIONS: Record<Domain, DomainDefinition>;
|
|
16
|
-
/**
|
|
17
|
-
* Get domain definition by ID
|
|
18
|
-
*/
|
|
19
|
-
export declare function getDomainDefinition(domain: Domain): DomainDefinition;
|
|
20
|
-
/**
|
|
21
|
-
* Get all domain IDs
|
|
22
|
-
*/
|
|
23
|
-
export declare function getAllDomains(): readonly Domain[];
|
|
24
|
-
/**
|
|
25
|
-
* Get domains by category
|
|
26
|
-
*/
|
|
27
|
-
export declare function getDomainsByCategory(category: DomainDefinition['category']): Domain[];
|
|
28
|
-
/**
|
|
29
|
-
* Get domains sorted by load priority (highest first)
|
|
30
|
-
*/
|
|
31
|
-
export declare function getDomainsByPriority(): Domain[];
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
32
|
+
* Built-in domain definitions ONLY. The runtime-active set (built-ins +
|
|
33
|
+
* custom) lives in the registry — do not iterate this directly in feature
|
|
34
|
+
* code; call `getAllDomains()` / `getDomainDefinition()` from `./registry.ts`.
|
|
34
35
|
*/
|
|
35
|
-
export declare
|
|
36
|
+
export declare const DOMAIN_DEFINITIONS: Record<BuiltinDomain, DomainDefinition>;
|
|
36
37
|
/**
|
|
37
|
-
*
|
|
38
|
+
* Check whether a string is one of the 15 BUILT-IN domains. This is a pure,
|
|
39
|
+
* registry-independent check used where built-in-ness specifically matters
|
|
40
|
+
* (e.g. `hewtd domain remove` refusing to remove a built-in). For "is this a
|
|
41
|
+
* valid domain in the active set (built-in OR custom)", use `isValidDomain()`
|
|
42
|
+
* from `./registry.ts`.
|
|
38
43
|
*/
|
|
39
|
-
export declare function
|
|
44
|
+
export declare function isBuiltinDomain(value: string): value is BuiltinDomain;
|
|
40
45
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/domains/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,OAAO,kMAgBV,CAAC;AAEX,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/domains/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,OAAO,kMAgBV,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAwLtE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE"}
|
|
@@ -19,6 +19,11 @@ export const DOMAINS = [
|
|
|
19
19
|
'troubleshooting',
|
|
20
20
|
'workflows',
|
|
21
21
|
];
|
|
22
|
+
/**
|
|
23
|
+
* Built-in domain definitions ONLY. The runtime-active set (built-ins +
|
|
24
|
+
* custom) lives in the registry — do not iterate this directly in feature
|
|
25
|
+
* code; call `getAllDomains()` / `getDomainDefinition()` from `./registry.ts`.
|
|
26
|
+
*/
|
|
22
27
|
export const DOMAIN_DEFINITIONS = {
|
|
23
28
|
security: {
|
|
24
29
|
id: 'security',
|
|
@@ -205,48 +210,13 @@ export const DOMAIN_DEFINITIONS = {
|
|
|
205
210
|
},
|
|
206
211
|
};
|
|
207
212
|
/**
|
|
208
|
-
*
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Get all domain IDs
|
|
213
|
+
* Check whether a string is one of the 15 BUILT-IN domains. This is a pure,
|
|
214
|
+
* registry-independent check used where built-in-ness specifically matters
|
|
215
|
+
* (e.g. `hewtd domain remove` refusing to remove a built-in). For "is this a
|
|
216
|
+
* valid domain in the active set (built-in OR custom)", use `isValidDomain()`
|
|
217
|
+
* from `./registry.ts`.
|
|
215
218
|
*/
|
|
216
|
-
export function
|
|
217
|
-
return DOMAINS;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get domains by category
|
|
221
|
-
*/
|
|
222
|
-
export function getDomainsByCategory(category) {
|
|
223
|
-
return DOMAINS.filter((d) => DOMAIN_DEFINITIONS[d].category === category);
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Get domains sorted by load priority (highest first)
|
|
227
|
-
*/
|
|
228
|
-
export function getDomainsByPriority() {
|
|
229
|
-
return [...DOMAINS].sort((a, b) => DOMAIN_DEFINITIONS[b].loadPriority - DOMAIN_DEFINITIONS[a].loadPriority);
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Check if a string is a valid domain
|
|
233
|
-
*/
|
|
234
|
-
export function isValidDomain(value) {
|
|
219
|
+
export function isBuiltinDomain(value) {
|
|
235
220
|
return DOMAINS.includes(value);
|
|
236
221
|
}
|
|
237
|
-
/**
|
|
238
|
-
* Get all keywords across all domains
|
|
239
|
-
*/
|
|
240
|
-
export function getAllKeywords() {
|
|
241
|
-
const keywordMap = new Map();
|
|
242
|
-
for (const domain of DOMAINS) {
|
|
243
|
-
const def = DOMAIN_DEFINITIONS[domain];
|
|
244
|
-
for (const keyword of def.keywords) {
|
|
245
|
-
const existing = keywordMap.get(keyword) ?? [];
|
|
246
|
-
existing.push(domain);
|
|
247
|
-
keywordMap.set(keyword, existing);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return keywordMap;
|
|
251
|
-
}
|
|
252
222
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/domains/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ;IACR,KAAK;IACL,cAAc;IACd,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,WAAW;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/domains/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ;IACR,KAAK;IACL,cAAc;IACd,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;IACV,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,WAAW;CACH,CAAC;AA+BX;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE;YACR,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK;YACrE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM;YACnE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa;SAC3E;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM;KACjB;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE;YACR,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;YACjE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW;YACzE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY;YACtE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY;SACjE;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM;KACjB;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE;YACR,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ;YACpE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;YACjE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;YAC7D,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ;SAC7C;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM;KACjB;IACD,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,kDAAkD;QAC/D,QAAQ,EAAE;YACR,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;YACpE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU;YACpE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;SACvE;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM;KACjB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE;YACR,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU;YAC3E,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO;YACrE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO;SACpE;QACD,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,aAAa;KACxB;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE;YACR,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa;YAC9D,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM;YACtE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS;YACtE,UAAU,EAAE,KAAK,EAAE,KAAK;SACzB;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,aAAa;KACxB;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qDAAqD;QAClE,QAAQ,EAAE;YACR,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU;YAC1E,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM;YACjE,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU;YACrE,KAAK,EAAE,UAAU,EAAE,SAAS;SAC7B;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,aAAa;KACxB;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;YACtE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ;YACnE,eAAe,EAAE,YAAY;SAC9B;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE;YACR,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS;YAClE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO;YACrE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe;SAClD;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM;YACxE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU;YACxE,WAAW,EAAE,SAAS,EAAE,QAAQ;SACjC;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE;YACR,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW;YACpE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;YAC/D,eAAe,EAAE,eAAe;SACjC;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK;YACnE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ;YAChE,eAAe,EAAE,OAAO,EAAE,MAAM;SACjC;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE;YACR,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB;YAC3E,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU;SACpE;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,wCAAwC;QACrD,QAAQ,EAAE;YACR,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ;YAC1E,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW;YACxE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;SACzD;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE;YACR,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK;YACtE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU;YAC1E,SAAS,EAAE,YAAY;SACxB;QACD,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAQ,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/core/domains/detector.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/core/domains/detector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACjD,kBAAkB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAyB,GAClC,qBAAqB,CA8BvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAyB,GAClC,qBAAqB,CA8CvB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAyD9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBhE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAyB,GAClC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAWtF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { basename, relative } from 'path';
|
|
2
|
-
import {
|
|
2
|
+
import { getAllDomains, getDomainDefinition, getAllKeywords, isValidDomain, } from './registry.js';
|
|
3
3
|
/**
|
|
4
4
|
* Detect domain from file path and/or content
|
|
5
5
|
*/
|
|
@@ -65,7 +65,7 @@ export function detectDomainFromPath(filePath, docsRoot = '.documentation') {
|
|
|
65
65
|
// Also check filename for domain hints
|
|
66
66
|
if (!result.domain) {
|
|
67
67
|
const fileName = basename(filePath, '.md');
|
|
68
|
-
for (const domain of
|
|
68
|
+
for (const domain of getAllDomains()) {
|
|
69
69
|
if (fileName.includes(domain)) {
|
|
70
70
|
result.domain = domain;
|
|
71
71
|
result.confidence = 0.6;
|
|
@@ -134,8 +134,8 @@ export function suggestDomainsForFile(fileName) {
|
|
|
134
134
|
const baseName = basename(fileName, '.md').toLowerCase();
|
|
135
135
|
const suggestions = [];
|
|
136
136
|
// Check each domain's keywords against the filename
|
|
137
|
-
for (const domain of
|
|
138
|
-
const def =
|
|
137
|
+
for (const domain of getAllDomains()) {
|
|
138
|
+
const def = getDomainDefinition(domain);
|
|
139
139
|
for (const keyword of def.keywords) {
|
|
140
140
|
if (baseName.includes(keyword.replace(/-/g, ''))) {
|
|
141
141
|
if (!suggestions.includes(domain)) {
|
|
@@ -146,7 +146,7 @@ export function suggestDomainsForFile(fileName) {
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
// Also check if domain name is in filename
|
|
149
|
-
for (const domain of
|
|
149
|
+
for (const domain of getAllDomains()) {
|
|
150
150
|
if (baseName.includes(domain) && !suggestions.includes(domain)) {
|
|
151
151
|
suggestions.unshift(domain);
|
|
152
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/core/domains/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/core/domains/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom-domain management: the deterministic WRITER behind
|
|
3
|
+
* `hewtd domain add|remove|list`.
|
|
4
|
+
*
|
|
5
|
+
* All mutation logic lives here (not in the slash command) so it is unit-
|
|
6
|
+
* testable and reused across the CLI, the GitHub Action, and the library
|
|
7
|
+
* export — none of which have an LLM present. The slash command is a thin
|
|
8
|
+
* interaction wrapper that calls this via the CLI.
|
|
9
|
+
*/
|
|
10
|
+
import { DOMAIN_CATEGORY_VALUES, type CustomDomainConfig } from '../../utils/config.js';
|
|
11
|
+
import { type DomainDefinition } from './constants.js';
|
|
12
|
+
export interface DomainListResult {
|
|
13
|
+
builtin: DomainDefinition[];
|
|
14
|
+
custom: DomainDefinition[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* List the active domain set, partitioned into built-in vs custom. Reads the
|
|
18
|
+
* registry for the given project root (uncached, so it reflects on-disk config
|
|
19
|
+
* even mid-process).
|
|
20
|
+
*/
|
|
21
|
+
export declare function listDomains(projectRoot: string): DomainListResult;
|
|
22
|
+
export interface AddDomainInput {
|
|
23
|
+
projectRoot: string;
|
|
24
|
+
/** Documentation root (e.g. absolute path to `.documentation`). */
|
|
25
|
+
docsPath: string;
|
|
26
|
+
spec: {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
keywords: string[];
|
|
31
|
+
loadPriority: number;
|
|
32
|
+
category: string;
|
|
33
|
+
};
|
|
34
|
+
dryRun?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface AddDomainResult {
|
|
37
|
+
ok: boolean;
|
|
38
|
+
/** Validation / collision errors (empty when ok). */
|
|
39
|
+
errors: string[];
|
|
40
|
+
action: 'added' | 'dry_run' | 'rejected';
|
|
41
|
+
spec?: CustomDomainConfig;
|
|
42
|
+
configPath: string;
|
|
43
|
+
domainFolder?: string;
|
|
44
|
+
filesWritten?: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate and add a custom domain: writes the entry into config and scaffolds
|
|
48
|
+
* its `.documentation/<id>/` folder (+ INDEX/REGISTRY), then refreshes the root
|
|
49
|
+
* indexes so the new domain is listed. Idempotency: refuses an id that is a
|
|
50
|
+
* built-in or already a configured custom domain.
|
|
51
|
+
*/
|
|
52
|
+
export declare function addDomain(input: AddDomainInput): Promise<AddDomainResult>;
|
|
53
|
+
export interface RemoveDomainInput {
|
|
54
|
+
projectRoot: string;
|
|
55
|
+
docsPath: string;
|
|
56
|
+
id: string;
|
|
57
|
+
dryRun?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface RemoveDomainResult {
|
|
60
|
+
ok: boolean;
|
|
61
|
+
errors: string[];
|
|
62
|
+
action: 'removed' | 'dry_run' | 'rejected';
|
|
63
|
+
configPath: string;
|
|
64
|
+
/** Number of documents left behind in the folder (NOT deleted). */
|
|
65
|
+
orphanedDocs: number;
|
|
66
|
+
domainFolder: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Remove a custom domain from config. NON-DESTRUCTIVE: the
|
|
70
|
+
* `.documentation/<id>/` folder and any docs in it are left on disk — the
|
|
71
|
+
* caller is told how many docs are now orphaned. Refuses to remove a built-in.
|
|
72
|
+
*/
|
|
73
|
+
export declare function removeDomain(input: RemoveDomainInput): Promise<RemoveDomainResult>;
|
|
74
|
+
/** Re-exported for the CLI's `--category` help text. */
|
|
75
|
+
export { DOMAIN_CATEGORY_VALUES };
|
|
76
|
+
//# sourceMappingURL=manage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../../src/core/domains/manage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,sBAAsB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAYxE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAUjE;AAMD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,qDAAqD;IACrD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACzC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA8E/E;AAMD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED,wDAAwD;AACxD,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom-domain management: the deterministic WRITER behind
|
|
3
|
+
* `hewtd domain add|remove|list`.
|
|
4
|
+
*
|
|
5
|
+
* All mutation logic lives here (not in the slash command) so it is unit-
|
|
6
|
+
* testable and reused across the CLI, the GitHub Action, and the library
|
|
7
|
+
* export — none of which have an LLM present. The slash command is a thin
|
|
8
|
+
* interaction wrapper that calls this via the CLI.
|
|
9
|
+
*/
|
|
10
|
+
import { customDomainSchema, readRawConfig, writeRawConfig, configFilePath, DOMAIN_CATEGORY_VALUES, } from '../../utils/config.js';
|
|
11
|
+
import { isBuiltinDomain } from './constants.js';
|
|
12
|
+
import { buildRegistry, resetRegistry } from './registry.js';
|
|
13
|
+
import { createScaffold } from '../../generators/scaffold.js';
|
|
14
|
+
import { regenerateIndexes, listDomainDocFiles } from '../../generators/regenerate.js';
|
|
15
|
+
import { ARCHIVE_DIR } from '../../utils/glob.js';
|
|
16
|
+
/**
|
|
17
|
+
* Reserved structural folder names that must never be registered as domains.
|
|
18
|
+
* These are scan-special directories, not part of the active doc corpus.
|
|
19
|
+
*/
|
|
20
|
+
const RESERVED_DIR_NAMES = ['drafts', 'reports', ARCHIVE_DIR];
|
|
21
|
+
/**
|
|
22
|
+
* List the active domain set, partitioned into built-in vs custom. Reads the
|
|
23
|
+
* registry for the given project root (uncached, so it reflects on-disk config
|
|
24
|
+
* even mid-process).
|
|
25
|
+
*/
|
|
26
|
+
export function listDomains(projectRoot) {
|
|
27
|
+
const registry = buildRegistry(projectRoot);
|
|
28
|
+
const builtin = [];
|
|
29
|
+
const custom = [];
|
|
30
|
+
for (const id of registry.ids) {
|
|
31
|
+
const def = registry.definitions.get(id);
|
|
32
|
+
if (isBuiltinDomain(id))
|
|
33
|
+
builtin.push(def);
|
|
34
|
+
else
|
|
35
|
+
custom.push(def);
|
|
36
|
+
}
|
|
37
|
+
return { builtin, custom };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validate and add a custom domain: writes the entry into config and scaffolds
|
|
41
|
+
* its `.documentation/<id>/` folder (+ INDEX/REGISTRY), then refreshes the root
|
|
42
|
+
* indexes so the new domain is listed. Idempotency: refuses an id that is a
|
|
43
|
+
* built-in or already a configured custom domain.
|
|
44
|
+
*/
|
|
45
|
+
export async function addDomain(input) {
|
|
46
|
+
const { projectRoot, docsPath, spec, dryRun = false } = input;
|
|
47
|
+
const configPath = configFilePath(projectRoot);
|
|
48
|
+
const errors = [];
|
|
49
|
+
// Strict, user-facing validation (the config loader's lenient filter is the
|
|
50
|
+
// last line of defence; this is the first).
|
|
51
|
+
const parsed = customDomainSchema.safeParse(spec);
|
|
52
|
+
if (!parsed.success) {
|
|
53
|
+
for (const issue of parsed.error.issues) {
|
|
54
|
+
errors.push(`${issue.path.join('.') || '(root)'}: ${issue.message}`);
|
|
55
|
+
}
|
|
56
|
+
return { ok: false, errors, action: 'rejected', configPath };
|
|
57
|
+
}
|
|
58
|
+
const valid = parsed.data;
|
|
59
|
+
if (isBuiltinDomain(valid.id)) {
|
|
60
|
+
errors.push(`"${valid.id}" is a built-in domain; pick a different id.`);
|
|
61
|
+
return { ok: false, errors, action: 'rejected', configPath };
|
|
62
|
+
}
|
|
63
|
+
if (RESERVED_DIR_NAMES.includes(valid.id)) {
|
|
64
|
+
errors.push(`"${valid.id}" is a reserved documentation folder (not a domain); pick a different id.`);
|
|
65
|
+
return { ok: false, errors, action: 'rejected', configPath };
|
|
66
|
+
}
|
|
67
|
+
const raw = await readRawConfig(projectRoot);
|
|
68
|
+
const existing = Array.isArray(raw.domains)
|
|
69
|
+
? raw.domains
|
|
70
|
+
: [];
|
|
71
|
+
const alreadyConfigured = existing.some((d) => d && typeof d === 'object' && d.id === valid.id);
|
|
72
|
+
if (alreadyConfigured) {
|
|
73
|
+
errors.push(`Custom domain "${valid.id}" already exists in config.`);
|
|
74
|
+
return { ok: false, errors, action: 'rejected', configPath };
|
|
75
|
+
}
|
|
76
|
+
const domainFolder = `${docsPath}/${valid.id}`;
|
|
77
|
+
if (dryRun) {
|
|
78
|
+
return {
|
|
79
|
+
ok: true,
|
|
80
|
+
errors,
|
|
81
|
+
action: 'dry_run',
|
|
82
|
+
spec: valid,
|
|
83
|
+
configPath,
|
|
84
|
+
domainFolder,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Persist the config entry, preserving every other key (vault, updatePolicy…).
|
|
88
|
+
raw.domains = [...existing, valid];
|
|
89
|
+
await writeRawConfig(projectRoot, raw);
|
|
90
|
+
// Invalidate the cached registry so scaffolding sees the new domain.
|
|
91
|
+
resetRegistry();
|
|
92
|
+
// createScaffold creates the (missing) domain folder + initial INDEX/REGISTRY.
|
|
93
|
+
// regenerateIndexes then refreshes the ROOT index so it lists the new domain.
|
|
94
|
+
const scaffold = await createScaffold({
|
|
95
|
+
rootPath: docsPath,
|
|
96
|
+
domains: [valid.id],
|
|
97
|
+
silent: true,
|
|
98
|
+
});
|
|
99
|
+
const regen = await regenerateIndexes({ docsPath, silent: true });
|
|
100
|
+
return {
|
|
101
|
+
ok: true,
|
|
102
|
+
errors,
|
|
103
|
+
action: 'added',
|
|
104
|
+
spec: valid,
|
|
105
|
+
configPath,
|
|
106
|
+
domainFolder,
|
|
107
|
+
filesWritten: [...scaffold.created, ...regen.filesWritten],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Remove a custom domain from config. NON-DESTRUCTIVE: the
|
|
112
|
+
* `.documentation/<id>/` folder and any docs in it are left on disk — the
|
|
113
|
+
* caller is told how many docs are now orphaned. Refuses to remove a built-in.
|
|
114
|
+
*/
|
|
115
|
+
export async function removeDomain(input) {
|
|
116
|
+
const { projectRoot, docsPath, id, dryRun = false } = input;
|
|
117
|
+
const configPath = configFilePath(projectRoot);
|
|
118
|
+
const domainFolder = `${docsPath}/${id}`;
|
|
119
|
+
const errors = [];
|
|
120
|
+
if (isBuiltinDomain(id)) {
|
|
121
|
+
errors.push(`"${id}" is a built-in domain and cannot be removed (built-ins are part of the compiled contract).`);
|
|
122
|
+
return {
|
|
123
|
+
ok: false,
|
|
124
|
+
errors,
|
|
125
|
+
action: 'rejected',
|
|
126
|
+
configPath,
|
|
127
|
+
orphanedDocs: 0,
|
|
128
|
+
domainFolder,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const raw = await readRawConfig(projectRoot);
|
|
132
|
+
const existing = Array.isArray(raw.domains) ? raw.domains : [];
|
|
133
|
+
const present = existing.some((d) => d && typeof d === 'object' && d.id === id);
|
|
134
|
+
if (!present) {
|
|
135
|
+
errors.push(`"${id}" is not a configured custom domain. Nothing to remove.`);
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
errors,
|
|
139
|
+
action: 'rejected',
|
|
140
|
+
configPath,
|
|
141
|
+
orphanedDocs: 0,
|
|
142
|
+
domainFolder,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Count docs that will be orphaned (folder is never deleted).
|
|
146
|
+
const orphanedDocs = (await listDomainDocFiles(docsPath, id)).length;
|
|
147
|
+
if (dryRun) {
|
|
148
|
+
return {
|
|
149
|
+
ok: true,
|
|
150
|
+
errors,
|
|
151
|
+
action: 'dry_run',
|
|
152
|
+
configPath,
|
|
153
|
+
orphanedDocs,
|
|
154
|
+
domainFolder,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
raw.domains = existing.filter((d) => !(d && typeof d === 'object' && d.id === id));
|
|
158
|
+
await writeRawConfig(projectRoot, raw);
|
|
159
|
+
resetRegistry();
|
|
160
|
+
return {
|
|
161
|
+
ok: true,
|
|
162
|
+
errors,
|
|
163
|
+
action: 'removed',
|
|
164
|
+
configPath,
|
|
165
|
+
orphanedDocs,
|
|
166
|
+
domainFolder,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/** Re-exported for the CLI's `--category` help text. */
|
|
170
|
+
export { DOMAIN_CATEGORY_VALUES };
|
|
171
|
+
//# sourceMappingURL=manage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../src/core/domains/manage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime domain registry.
|
|
3
|
+
*
|
|
4
|
+
* The set of valid domains used to be a compile-time constant. As of the
|
|
5
|
+
* custom-domains feature it is resolved at runtime: the 15 built-ins
|
|
6
|
+
* (`DOMAINS` / `DOMAIN_DEFINITIONS`) merged with any custom domains declared
|
|
7
|
+
* in `.claude/hit-em-with-the-docs.json` (`domains: [...]`).
|
|
8
|
+
*
|
|
9
|
+
* This module is the single source of truth for the ACTIVE set. The helper
|
|
10
|
+
* functions here (getAllDomains, getDomainDefinition, isValidDomain, …)
|
|
11
|
+
* replace the const-based versions that previously lived in `constants.ts`;
|
|
12
|
+
* every consumer should import them from here.
|
|
13
|
+
*
|
|
14
|
+
* The registry is a cached singleton. The CLI is a short-lived per-invocation
|
|
15
|
+
* process, so reading config once and caching is correct and keeps the
|
|
16
|
+
* consumer surface synchronous. Tests must call `resetRegistry()` between
|
|
17
|
+
* cases that change config.
|
|
18
|
+
*/
|
|
19
|
+
import { type Domain, type DomainDefinition } from './constants.js';
|
|
20
|
+
export interface DomainRegistry {
|
|
21
|
+
/** Ordered ids: built-ins first (declared order), then custom (config order). */
|
|
22
|
+
ids: Domain[];
|
|
23
|
+
definitions: Map<Domain, DomainDefinition>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build a fresh registry from disk config (no caching). Exposed mainly for
|
|
27
|
+
* tests and for callers that need a registry for a specific project root.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildRegistry(projectRoot?: string): DomainRegistry;
|
|
30
|
+
/**
|
|
31
|
+
* The cached active registry. Built lazily on first access from the config at
|
|
32
|
+
* `process.cwd()` (or `projectRoot` if passed on the first call).
|
|
33
|
+
*/
|
|
34
|
+
export declare function getRegistry(projectRoot?: string): DomainRegistry;
|
|
35
|
+
/** Clear the cached registry. Call this in test setup after mutating config. */
|
|
36
|
+
export declare function resetRegistry(): void;
|
|
37
|
+
/** All active domain ids (built-in + custom), in registry order. */
|
|
38
|
+
export declare function getAllDomains(): Domain[];
|
|
39
|
+
/**
|
|
40
|
+
* Definition for an active domain. Throws on an unknown id — callers iterate
|
|
41
|
+
* `getAllDomains()` or guard with `isValidDomain()` first, so a miss is a bug.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getDomainDefinition(domain: Domain): DomainDefinition;
|
|
44
|
+
/** True if `value` is a valid domain in the active set (built-in OR custom). */
|
|
45
|
+
export declare function isValidDomain(value: string): value is Domain;
|
|
46
|
+
/** Active domains in a given category. */
|
|
47
|
+
export declare function getDomainsByCategory(category: DomainCategoryArg): Domain[];
|
|
48
|
+
type DomainCategoryArg = DomainDefinition['category'];
|
|
49
|
+
/** Active domains sorted by load priority (highest first). */
|
|
50
|
+
export declare function getDomainsByPriority(): Domain[];
|
|
51
|
+
/** Map of keyword → domains that declare it, across the active set. */
|
|
52
|
+
export declare function getAllKeywords(): Map<string, Domain[]>;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/domains/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,CAkClE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,CAKhE;AAED,gFAAgF;AAChF,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAMD,oEAAoE;AACpE,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMpE;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAE5D;AAED,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAG1E;AACD,KAAK,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAEtD,8DAA8D;AAC9D,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAM/C;AAED,uEAAuE;AACvE,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CActD"}
|