@theglitchking/hit-em-with-the-docs 2.3.0 → 2.5.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.
Files changed (45) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +4 -0
  4. package/dist/action/core/audit/auditor.d.ts.map +1 -1
  5. package/dist/action/core/integrate/integrator.d.ts.map +1 -1
  6. package/dist/action/core/knowledge-base/fix-legacy-layout.d.ts +61 -0
  7. package/dist/action/core/knowledge-base/fix-legacy-layout.d.ts.map +1 -0
  8. package/dist/action/core/knowledge-base/migrate.d.ts +42 -8
  9. package/dist/action/core/knowledge-base/migrate.d.ts.map +1 -1
  10. package/dist/action/core/maintain/orchestrator.d.ts +2 -0
  11. package/dist/action/core/maintain/orchestrator.d.ts.map +1 -1
  12. package/dist/action/generators/regenerate.d.ts +38 -0
  13. package/dist/action/generators/regenerate.d.ts.map +1 -0
  14. package/dist/action/index.d.ts +1 -0
  15. package/dist/action/index.d.ts.map +1 -1
  16. package/dist/action/index.js +1 -1
  17. package/dist/cli/index.js +103 -4
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/core/audit/auditor.d.ts.map +1 -1
  20. package/dist/core/audit/auditor.js +62 -2
  21. package/dist/core/audit/auditor.js.map +1 -1
  22. package/dist/core/integrate/integrator.d.ts.map +1 -1
  23. package/dist/core/integrate/integrator.js +9 -31
  24. package/dist/core/integrate/integrator.js.map +1 -1
  25. package/dist/core/knowledge-base/fix-legacy-layout.d.ts +61 -0
  26. package/dist/core/knowledge-base/fix-legacy-layout.d.ts.map +1 -0
  27. package/dist/core/knowledge-base/fix-legacy-layout.js +189 -0
  28. package/dist/core/knowledge-base/fix-legacy-layout.js.map +1 -0
  29. package/dist/core/knowledge-base/migrate.d.ts +42 -8
  30. package/dist/core/knowledge-base/migrate.d.ts.map +1 -1
  31. package/dist/core/knowledge-base/migrate.js +59 -24
  32. package/dist/core/knowledge-base/migrate.js.map +1 -1
  33. package/dist/core/maintain/orchestrator.d.ts +2 -0
  34. package/dist/core/maintain/orchestrator.d.ts.map +1 -1
  35. package/dist/core/maintain/orchestrator.js +19 -0
  36. package/dist/core/maintain/orchestrator.js.map +1 -1
  37. package/dist/generators/regenerate.d.ts +38 -0
  38. package/dist/generators/regenerate.d.ts.map +1 -0
  39. package/dist/generators/regenerate.js +137 -0
  40. package/dist/generators/regenerate.js.map +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -0
  44. package/dist/index.js.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Migrate 2.3.0-buggy incident folders into the canonical layout (2.4.0).
3
+ *
4
+ * In 2.3.0, `hewtd migrate-incident <flat-file>` wrote the new folder
5
+ * AS A SIBLING of the flat file. When the flat file lived at the vault
6
+ * root (the documented example), the resulting folder ended up at
7
+ * `<vault-root>/<slug>/` instead of `<vault-root>/incidents/<slug>/`.
8
+ * The `incidents/INDEX.md` generator scans only the canonical path, so
9
+ * those folders were silently absent from the index.
10
+ *
11
+ * This module:
12
+ * 1. Detects legacy folders — anything matching `<vault-root>/<slug>/`
13
+ * that contains a valid `narrative.md` AND isn't already under the
14
+ * canonical `<vault-root>/incidents/` parent.
15
+ * 2. Moves them into `<vault-root>/incidents/<slug>/` (preserving any
16
+ * `facts.md` / `evidence/` contents).
17
+ * 3. Rewrites `provenance:` references in any `<vault-root>/facts/*.md`
18
+ * files that pointed at the old folder paths.
19
+ *
20
+ * Idempotent: re-running on a clean vault is a no-op with a status report.
21
+ */
22
+ import { readFile, writeFile, rename, mkdir, readdir, stat } from 'fs/promises';
23
+ import { existsSync } from 'fs';
24
+ import { join, relative } from 'path';
25
+ import matter from 'gray-matter';
26
+ /**
27
+ * Discover and (optionally) relocate 2.3.0-layout incident folders.
28
+ */
29
+ export async function fixLegacyLayout(options) {
30
+ const { vaultRoot, projectRoot, dryRun = false } = options;
31
+ const result = {
32
+ vaultRoot,
33
+ moved: [],
34
+ rewrittenProvenance: [],
35
+ skipped: [],
36
+ action: 'no_op',
37
+ };
38
+ if (!existsSync(vaultRoot)) {
39
+ return result;
40
+ }
41
+ // Walk one level deep under vaultRoot, looking for `<slug>/narrative.md`
42
+ // entries that are NOT inside `incidents/`, `facts/`, or `symptoms/`.
43
+ const RESERVED_DIRS = new Set(['incidents', 'facts', 'symptoms']);
44
+ const topLevel = await readdir(vaultRoot, { withFileTypes: true });
45
+ const legacyCandidates = [];
46
+ for (const entry of topLevel) {
47
+ if (!entry.isDirectory())
48
+ continue;
49
+ if (RESERVED_DIRS.has(entry.name))
50
+ continue;
51
+ const folderPath = join(vaultRoot, entry.name);
52
+ const narrativePath = join(folderPath, 'narrative.md');
53
+ if (!existsSync(narrativePath)) {
54
+ continue;
55
+ }
56
+ // Confirm this is genuinely an incident folder by reading the narrative
57
+ // frontmatter — protects against false positives (e.g. user-created
58
+ // folders that happen to contain a narrative.md from some other context).
59
+ const isIncident = await looksLikeIncidentFolder(narrativePath);
60
+ if (!isIncident) {
61
+ result.skipped.push({
62
+ path: folderPath,
63
+ reason: 'narrative.md present but tier is not "incident-narrative"',
64
+ });
65
+ continue;
66
+ }
67
+ legacyCandidates.push({
68
+ slug: entry.name,
69
+ from: folderPath,
70
+ to: join(vaultRoot, 'incidents', entry.name),
71
+ });
72
+ }
73
+ if (legacyCandidates.length === 0) {
74
+ return result;
75
+ }
76
+ // Build the provenance-rewrite plan FIRST (before moving anything) so
77
+ // we can reason about it. Old refs look like:
78
+ // `<rel-vault>/2026-04-23-foo/` (no `incidents/`)
79
+ // New refs:
80
+ // `<rel-vault>/incidents/2026-04-23-foo/`
81
+ const factsDir = join(vaultRoot, 'facts');
82
+ const provenanceRewrites = [];
83
+ if (existsSync(factsDir)) {
84
+ const factFiles = await readdir(factsDir);
85
+ for (const factFile of factFiles) {
86
+ if (!factFile.endsWith('.md'))
87
+ continue;
88
+ if (factFile === 'INDEX.md')
89
+ continue;
90
+ const factPath = join(factsDir, factFile);
91
+ const factStat = await stat(factPath);
92
+ if (!factStat.isFile())
93
+ continue;
94
+ const factRaw = await readFile(factPath, 'utf-8');
95
+ const factParsed = matter(factRaw);
96
+ const provenance = factParsed.data.provenance;
97
+ if (!Array.isArray(provenance))
98
+ continue;
99
+ let didRewrite = false;
100
+ const newProvenance = [];
101
+ for (const ref of provenance) {
102
+ if (typeof ref !== 'string') {
103
+ newProvenance.push(ref);
104
+ continue;
105
+ }
106
+ let rewritten = ref;
107
+ for (const candidate of legacyCandidates) {
108
+ // Generate possible old-ref shapes and rewrite.
109
+ // - relative from project root: `<rel-vault>/<slug>/`
110
+ // - bare slug + trailing slash: `<slug>/`
111
+ // - bare slug no slash: `<slug>`
112
+ const relOld = `${relative(projectRoot, candidate.from)}/`;
113
+ const relNew = `${relative(projectRoot, candidate.to)}/`;
114
+ if (ref === relOld || ref === relOld.slice(0, -1)) {
115
+ rewritten = relNew;
116
+ break;
117
+ }
118
+ if (ref === `${candidate.slug}/` || ref === candidate.slug) {
119
+ // Bare-slug reference; rewrite to the canonical relative path.
120
+ rewritten = relNew;
121
+ break;
122
+ }
123
+ }
124
+ if (rewritten !== ref) {
125
+ didRewrite = true;
126
+ provenanceRewrites.push({
127
+ factPath,
128
+ oldRef: ref,
129
+ newRef: rewritten,
130
+ });
131
+ }
132
+ newProvenance.push(rewritten);
133
+ }
134
+ if (didRewrite && !dryRun) {
135
+ const newData = { ...factParsed.data, provenance: newProvenance };
136
+ await writeFile(factPath, matter.stringify(factParsed.content, newData), 'utf-8');
137
+ }
138
+ }
139
+ }
140
+ // Now do the actual folder moves (if not dry-run). Ensure incidents/
141
+ // parent dir exists first.
142
+ if (!dryRun) {
143
+ const incidentsParent = join(vaultRoot, 'incidents');
144
+ await mkdir(incidentsParent, { recursive: true });
145
+ for (const candidate of legacyCandidates) {
146
+ // Refuse to clobber an existing folder at the destination.
147
+ if (existsSync(candidate.to)) {
148
+ result.skipped.push({
149
+ path: candidate.from,
150
+ reason: `destination already exists at ${candidate.to}; manual merge required`,
151
+ });
152
+ continue;
153
+ }
154
+ await rename(candidate.from, candidate.to);
155
+ result.moved.push(candidate);
156
+ }
157
+ }
158
+ else {
159
+ // Dry-run: report what WOULD be moved without doing it.
160
+ for (const candidate of legacyCandidates) {
161
+ if (existsSync(candidate.to)) {
162
+ result.skipped.push({
163
+ path: candidate.from,
164
+ reason: `destination already exists at ${candidate.to}; manual merge required`,
165
+ });
166
+ continue;
167
+ }
168
+ result.moved.push(candidate);
169
+ }
170
+ }
171
+ result.rewrittenProvenance = provenanceRewrites;
172
+ result.action = dryRun
173
+ ? 'dry_run'
174
+ : result.moved.length > 0 || provenanceRewrites.length > 0
175
+ ? 'fixed'
176
+ : 'no_op';
177
+ return result;
178
+ }
179
+ async function looksLikeIncidentFolder(narrativePath) {
180
+ try {
181
+ const content = await readFile(narrativePath, 'utf-8');
182
+ const { data } = matter(content);
183
+ return data.tier === 'incident-narrative';
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ }
189
+ //# sourceMappingURL=fix-legacy-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-legacy-layout.js","sourceRoot":"","sources":["../../../src/core/knowledge-base/fix-legacy-layout.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,60 @@
1
1
  /**
2
- * Flat-file incident → folder migration (2.3.0 PR3).
2
+ * Flat-file incident → folder migration (2.3.0 PR3, target-path fix in 2.4.0).
3
3
  *
4
- * Reads a legacy flat-file incident (e.g. `knowledge-base/2026-04-23-foo.md`)
5
- * and converts it into the folder form:
4
+ * Reads a legacy flat-file incident and converts it into the folder form
5
+ * AT THE CANONICAL VAULT LOCATION:
6
6
  *
7
- * <flat-file>.md → <slug>/narrative.md
8
- * <slug>/facts.md (skeleton)
9
- * <slug>/evidence/ (empty, ready for artifacts)
7
+ * <flat-file>.md → <vault-root>/incidents/<slug>/narrative.md
8
+ * <vault-root>/incidents/<slug>/facts.md (skeleton)
9
+ * <vault-root>/incidents/<slug>/evidence/ (empty)
10
10
  *
11
- * Idempotent: re-running on an already-migrated incident detects the folder
12
- * exists and warns + no-ops.
11
+ * In 2.3.0 the target was derived from the flat file's parent directory,
12
+ * which produced folders OUTSIDE `<vault-root>/incidents/` when the source
13
+ * was at the vault root. The `incidents/INDEX.md` generator scans only
14
+ * `<vault-root>/incidents/<slug>/narrative.md` and silently missed those
15
+ * folders. 2.4.0 fixes this by always writing under `<vault-root>/incidents/`.
16
+ *
17
+ * Idempotency:
18
+ * - If a valid `narrative.md` exists at EITHER the new path (canonical)
19
+ * OR the legacy path (`<source-parent>/<slug>/narrative.md`), the
20
+ * migration is treated as already done — no-op unless `--force`.
21
+ * - This protects against double-migration and is robust against
22
+ * consumers who already migrated under the 2.3.0 buggy layout.
23
+ *
24
+ * For consumers stuck on the 2.3.0 buggy layout, see `fixLegacyLayout()`
25
+ * which moves stale folders into `<vault-root>/incidents/` and rewrites
26
+ * any fact `provenance:` references.
13
27
  */
14
28
  export interface MigrateIncidentOptions {
15
29
  /** Absolute path to the flat-file incident markdown. */
16
30
  flatFilePath: string;
31
+ /**
32
+ * Absolute path to the vault root. The migrated folder lands at
33
+ * `<vaultRoot>/incidents/<slug>/`. Required since 2.4.0 — the 2.3.0
34
+ * "sibling of the flat file" behavior was the source of the path bug.
35
+ */
36
+ vaultRoot: string;
17
37
  /** If true, returns the migration plan without writing. */
18
38
  dryRun?: boolean;
39
+ /**
40
+ * If true, proceed with migration even if a folder already exists at
41
+ * the canonical or legacy location. Used to recover from a partial
42
+ * migration.
43
+ */
44
+ force?: boolean;
19
45
  }
20
46
  export interface MigrateIncidentResult {
21
47
  flatFilePath: string;
48
+ /** The canonical target — always under `<vaultRoot>/incidents/`. */
22
49
  targetFolder: string;
23
50
  action: 'migrated' | 'already_migrated' | 'dry_run';
51
+ /**
52
+ * Populated when `action === 'already_migrated'` to indicate WHERE the
53
+ * existing migration was found. `'new'` = canonical `<vault>/incidents/`;
54
+ * `'legacy'` = 2.3.0-style sibling-of-flat-file location. Helps consumers
55
+ * decide whether to run `fix-legacy-layout`.
56
+ */
57
+ existingLocation?: 'new' | 'legacy';
24
58
  narrativePath: string;
25
59
  factsPath: string;
26
60
  evidencePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/core/knowledge-base/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAwGhC"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/core/knowledge-base/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACpD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA8HhC"}
@@ -1,22 +1,36 @@
1
1
  /**
2
- * Flat-file incident → folder migration (2.3.0 PR3).
2
+ * Flat-file incident → folder migration (2.3.0 PR3, target-path fix in 2.4.0).
3
3
  *
4
- * Reads a legacy flat-file incident (e.g. `knowledge-base/2026-04-23-foo.md`)
5
- * and converts it into the folder form:
4
+ * Reads a legacy flat-file incident and converts it into the folder form
5
+ * AT THE CANONICAL VAULT LOCATION:
6
6
  *
7
- * <flat-file>.md → <slug>/narrative.md
8
- * <slug>/facts.md (skeleton)
9
- * <slug>/evidence/ (empty, ready for artifacts)
7
+ * <flat-file>.md → <vault-root>/incidents/<slug>/narrative.md
8
+ * <vault-root>/incidents/<slug>/facts.md (skeleton)
9
+ * <vault-root>/incidents/<slug>/evidence/ (empty)
10
10
  *
11
- * Idempotent: re-running on an already-migrated incident detects the folder
12
- * exists and warns + no-ops.
11
+ * In 2.3.0 the target was derived from the flat file's parent directory,
12
+ * which produced folders OUTSIDE `<vault-root>/incidents/` when the source
13
+ * was at the vault root. The `incidents/INDEX.md` generator scans only
14
+ * `<vault-root>/incidents/<slug>/narrative.md` and silently missed those
15
+ * folders. 2.4.0 fixes this by always writing under `<vault-root>/incidents/`.
16
+ *
17
+ * Idempotency:
18
+ * - If a valid `narrative.md` exists at EITHER the new path (canonical)
19
+ * OR the legacy path (`<source-parent>/<slug>/narrative.md`), the
20
+ * migration is treated as already done — no-op unless `--force`.
21
+ * - This protects against double-migration and is robust against
22
+ * consumers who already migrated under the 2.3.0 buggy layout.
23
+ *
24
+ * For consumers stuck on the 2.3.0 buggy layout, see `fixLegacyLayout()`
25
+ * which moves stale folders into `<vault-root>/incidents/` and rewrites
26
+ * any fact `provenance:` references.
13
27
  */
14
28
  import { readFile, writeFile, mkdir, rename } from 'fs/promises';
15
29
  import { existsSync } from 'fs';
16
30
  import { basename, dirname, join } from 'path';
17
31
  import matter from 'gray-matter';
18
32
  export async function migrateIncident(options) {
19
- const { flatFilePath, dryRun = false } = options;
33
+ const { flatFilePath, vaultRoot, dryRun = false, force = false } = options;
20
34
  const sourceContent = await readFile(flatFilePath, 'utf-8');
21
35
  const parsed = matter(sourceContent);
22
36
  const fm = (parsed.data ?? {});
@@ -28,11 +42,14 @@ export async function migrateIncident(options) {
28
42
  const folderSlug = idFromFrontmatter && /^\d{4}-\d{2}-\d{2}-[a-z0-9-]+$/.test(idFromFrontmatter)
29
43
  ? idFromFrontmatter
30
44
  : flatBase;
31
- const parentDir = dirname(flatFilePath);
32
- const targetFolder = join(parentDir, folderSlug);
45
+ // Canonical target: <vault-root>/incidents/<slug>/
46
+ const targetFolder = join(vaultRoot, 'incidents', folderSlug);
33
47
  const narrativePath = join(targetFolder, 'narrative.md');
34
48
  const factsPath = join(targetFolder, 'facts.md');
35
49
  const evidencePath = join(targetFolder, 'evidence');
50
+ // Legacy 2.3.0 location: <source-parent>/<slug>/
51
+ const legacyTargetFolder = join(dirname(flatFilePath), folderSlug);
52
+ const legacyNarrativePath = join(legacyTargetFolder, 'narrative.md');
36
53
  // Build narrative.md frontmatter — promote/normalize fields, set tier.
37
54
  const narrativeFrontmatter = {
38
55
  title: fm.title ?? flatBase,
@@ -62,18 +79,35 @@ export async function migrateIncident(options) {
62
79
  produced: [],
63
80
  };
64
81
  const factsContent = matter.stringify(`\n# Facts from ${folderSlug}\n\n## Produced\n_(No facts extracted yet. Use \`hewtd extract-facts ${folderSlug}/\` to propose facts from the narrative.)_\n`, factsFrontmatter);
65
- // Idempotency check: if target folder already exists, no-op.
66
- if (existsSync(targetFolder)) {
67
- return {
68
- flatFilePath,
69
- targetFolder,
70
- action: 'already_migrated',
71
- narrativePath,
72
- factsPath,
73
- evidencePath,
74
- narrativeContent,
75
- factsContent,
76
- };
82
+ // Idempotency check (unless --force): check BOTH new and legacy locations
83
+ // for an existing valid migration.
84
+ if (!force) {
85
+ if (existsSync(narrativePath)) {
86
+ return {
87
+ flatFilePath,
88
+ targetFolder,
89
+ action: 'already_migrated',
90
+ existingLocation: 'new',
91
+ narrativePath,
92
+ factsPath,
93
+ evidencePath,
94
+ narrativeContent,
95
+ factsContent,
96
+ };
97
+ }
98
+ if (existsSync(legacyNarrativePath)) {
99
+ return {
100
+ flatFilePath,
101
+ targetFolder,
102
+ action: 'already_migrated',
103
+ existingLocation: 'legacy',
104
+ narrativePath: legacyNarrativePath,
105
+ factsPath: join(legacyTargetFolder, 'facts.md'),
106
+ evidencePath: join(legacyTargetFolder, 'evidence'),
107
+ narrativeContent,
108
+ factsContent,
109
+ };
110
+ }
77
111
  }
78
112
  if (dryRun) {
79
113
  return {
@@ -87,7 +121,8 @@ export async function migrateIncident(options) {
87
121
  factsContent,
88
122
  };
89
123
  }
90
- // Execute the migration.
124
+ // Ensure the canonical parent (<vault>/incidents/) exists. Generator
125
+ // already handles a missing dir; we should too.
91
126
  await mkdir(evidencePath, { recursive: true }); // also creates targetFolder
92
127
  await writeFile(narrativePath, narrativeContent, 'utf-8');
93
128
  await writeFile(factsPath, factsContent, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/knowledge-base/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/knowledge-base/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type SyncResult } from '../metadata/sync.js';
2
2
  import { type LinkCheckResult } from '../links/checker.js';
3
3
  import { type AuditResult } from '../audit/auditor.js';
4
+ import { type RegenerateResult } from '../../generators/regenerate.js';
4
5
  export interface MaintainOptions {
5
6
  docsPath: string;
6
7
  quick?: boolean;
@@ -11,6 +12,7 @@ export interface MaintainResult {
11
12
  success: boolean;
12
13
  domainHealth: DomainHealthResult;
13
14
  metadataSync?: SyncResult;
15
+ indexRegeneration?: RegenerateResult;
14
16
  linkCheck?: LinkCheckResult;
15
17
  audit?: AuditResult;
16
18
  healthScore: number;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/maintain/orchestrator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAa3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAoKtF;AAwRD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAoBD"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/maintain/orchestrator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAY3E,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAsLtF;AAyRD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAoBD"}
@@ -12,6 +12,7 @@ import { buildCiterIndex } from '../knowledge-base/citers.js';
12
12
  import { generateFactsIndex } from '../../generators/facts-index.js';
13
13
  import { generateIncidentsIndex } from '../../generators/incidents-index.js';
14
14
  import { generateSymptomsIndex } from '../../generators/symptoms-index.js';
15
+ import { regenerateIndexes, } from '../../generators/regenerate.js';
15
16
  /**
16
17
  * Run full maintenance on documentation
17
18
  */
@@ -74,6 +75,23 @@ export async function runMaintenance(options) {
74
75
  result.errors.push(`Metadata sync failed: ${message}`);
75
76
  result.success = false;
76
77
  }
78
+ // Step 1.5: Index Regeneration
79
+ //
80
+ // Domain and root INDEX.md/REGISTRY.md are derived artifacts — they are
81
+ // rebuilt from the documents on disk on every maintain run so they never
82
+ // drift from reality. This also self-heals any INDEX.md/REGISTRY.md that
83
+ // checkDomainHealth reported as missing. Runs in quick mode too: it is
84
+ // cheap and is the core "self-managing" guarantee.
85
+ if (!silent) {
86
+ logger.subheader('Step 1.5: Index Regeneration');
87
+ }
88
+ try {
89
+ result.indexRegeneration = await regenerateIndexes({ docsPath, silent });
90
+ }
91
+ catch (error) {
92
+ const message = error instanceof Error ? error.message : String(error);
93
+ result.errors.push(`Index regeneration failed: ${message}`);
94
+ }
77
95
  // Step 2: Link Check (skip in quick mode)
78
96
  if (!quick) {
79
97
  if (!silent) {
@@ -252,6 +270,7 @@ version: '1.0.0'
252
270
  |--------|-------|
253
271
  | Overall Health | ${result.healthScore.toFixed(1)}% |
254
272
  | Domain Health | ${result.domainHealth.healthy ? 'Healthy' : 'Issues Found'} |
273
+ | Indexes Regenerated | ${result.indexRegeneration?.filesWritten.length ?? 0} files |
255
274
  | Files Scanned | ${result.metadataSync?.totalFiles ?? 0} |
256
275
  | Valid Files | ${result.metadataSync?.validFiles ?? 0} |
257
276
  | Broken Links | ${result.linkCheck?.brokenLinks.length ?? 'Not checked'} |
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/maintain/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/maintain/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type Domain } from '../core/domains/constants.js';
2
+ export interface RegenerateOptions {
3
+ /** Path to the documentation root (e.g. `.documentation`). */
4
+ docsPath: string;
5
+ /**
6
+ * Restrict domain INDEX.md/REGISTRY.md writes to these domains. The root
7
+ * INDEX.md/REGISTRY.md are always refreshed regardless. Defaults to all
8
+ * domains.
9
+ */
10
+ domains?: Domain[];
11
+ silent?: boolean;
12
+ }
13
+ export interface RegenerateResult {
14
+ /** Per-domain document counts — all domains, regardless of the filter. */
15
+ documentCounts: Record<string, number>;
16
+ /** Absolute paths of every INDEX.md / REGISTRY.md written. */
17
+ filesWritten: string[];
18
+ /** Total documents across all domains. */
19
+ totalDocuments: number;
20
+ }
21
+ /**
22
+ * List the document files in a domain directory, excluding the generated
23
+ * INDEX.md / REGISTRY.md. Returns sorted file names (not paths). Empty when
24
+ * the domain directory does not exist.
25
+ */
26
+ export declare function listDomainDocFiles(docsPath: string, domain: string): Promise<string[]>;
27
+ /**
28
+ * Regenerate domain + root INDEX.md / REGISTRY.md from the documents on disk.
29
+ *
30
+ * This is the single source of truth for index generation, shared by
31
+ * `integrate`, `maintain`, and the `index` CLI command. It replaces the
32
+ * fragile regex-append path in `integrate` that could only update an
33
+ * already-populated table — and silently no-op'd on a freshly scaffolded
34
+ * INDEX.md, so the first document into any domain was never registered
35
+ * (see https://github.com/TheGlitchKing/hit-em-with-the-docs/issues/7).
36
+ */
37
+ export declare function regenerateIndexes(options: RegenerateOptions): Promise<RegenerateResult>;
38
+ //# sourceMappingURL=regenerate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerate.d.ts","sourceRoot":"","sources":["../../src/generators/regenerate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAkBpE,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,8DAA8D;IAC9D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAkED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAiE3B"}