@theglitchking/hit-em-with-the-docs 2.2.0 → 2.4.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 (118) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +7 -0
  4. package/commands/audit-facts.md +25 -0
  5. package/commands/cite.md +17 -0
  6. package/commands/extract-facts.md +66 -0
  7. package/commands/find-citers.md +16 -0
  8. package/commands/help.md +86 -0
  9. package/commands/migrate-incident.md +18 -0
  10. package/dist/action/core/audit/auditor.d.ts +14 -0
  11. package/dist/action/core/audit/auditor.d.ts.map +1 -1
  12. package/dist/action/core/domains/classifier.d.ts +15 -1
  13. package/dist/action/core/domains/classifier.d.ts.map +1 -1
  14. package/dist/action/core/knowledge-base/audit.d.ts +67 -0
  15. package/dist/action/core/knowledge-base/audit.d.ts.map +1 -0
  16. package/dist/action/core/knowledge-base/cite.d.ts +41 -0
  17. package/dist/action/core/knowledge-base/cite.d.ts.map +1 -0
  18. package/dist/action/core/knowledge-base/citers.d.ts +119 -0
  19. package/dist/action/core/knowledge-base/citers.d.ts.map +1 -0
  20. package/dist/action/core/knowledge-base/extract.d.ts +61 -0
  21. package/dist/action/core/knowledge-base/extract.d.ts.map +1 -0
  22. package/dist/action/core/knowledge-base/fix-legacy-layout.d.ts +61 -0
  23. package/dist/action/core/knowledge-base/fix-legacy-layout.d.ts.map +1 -0
  24. package/dist/action/core/knowledge-base/migrate.d.ts +67 -0
  25. package/dist/action/core/knowledge-base/migrate.d.ts.map +1 -0
  26. package/dist/action/core/maintain/orchestrator.d.ts.map +1 -1
  27. package/dist/action/core/metadata/errors.d.ts +62 -0
  28. package/dist/action/core/metadata/errors.d.ts.map +1 -0
  29. package/dist/action/core/metadata/schema.d.ts +709 -58
  30. package/dist/action/core/metadata/schema.d.ts.map +1 -1
  31. package/dist/action/generators/facts-index.d.ts +27 -0
  32. package/dist/action/generators/facts-index.d.ts.map +1 -0
  33. package/dist/action/generators/incidents-index.d.ts +21 -0
  34. package/dist/action/generators/incidents-index.d.ts.map +1 -0
  35. package/dist/action/generators/symptoms-index.d.ts +20 -0
  36. package/dist/action/generators/symptoms-index.d.ts.map +1 -0
  37. package/dist/action/generators/table.d.ts +8 -0
  38. package/dist/action/generators/table.d.ts.map +1 -0
  39. package/dist/action/index.d.ts +7 -0
  40. package/dist/action/index.d.ts.map +1 -1
  41. package/dist/action/index.js +4 -4
  42. package/dist/action/utils/config.d.ts +99 -0
  43. package/dist/action/utils/config.d.ts.map +1 -0
  44. package/dist/cli/index.js +315 -1
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/core/audit/auditor.d.ts +14 -0
  47. package/dist/core/audit/auditor.d.ts.map +1 -1
  48. package/dist/core/audit/auditor.js +19 -3
  49. package/dist/core/audit/auditor.js.map +1 -1
  50. package/dist/core/domains/classifier.d.ts +15 -1
  51. package/dist/core/domains/classifier.d.ts.map +1 -1
  52. package/dist/core/domains/classifier.js +83 -1
  53. package/dist/core/domains/classifier.js.map +1 -1
  54. package/dist/core/knowledge-base/audit.d.ts +67 -0
  55. package/dist/core/knowledge-base/audit.d.ts.map +1 -0
  56. package/dist/core/knowledge-base/audit.js +158 -0
  57. package/dist/core/knowledge-base/audit.js.map +1 -0
  58. package/dist/core/knowledge-base/cite.d.ts +41 -0
  59. package/dist/core/knowledge-base/cite.d.ts.map +1 -0
  60. package/dist/core/knowledge-base/cite.js +82 -0
  61. package/dist/core/knowledge-base/cite.js.map +1 -0
  62. package/dist/core/knowledge-base/citers.d.ts +119 -0
  63. package/dist/core/knowledge-base/citers.d.ts.map +1 -0
  64. package/dist/core/knowledge-base/citers.js +249 -0
  65. package/dist/core/knowledge-base/citers.js.map +1 -0
  66. package/dist/core/knowledge-base/extract.d.ts +61 -0
  67. package/dist/core/knowledge-base/extract.d.ts.map +1 -0
  68. package/dist/core/knowledge-base/extract.js +132 -0
  69. package/dist/core/knowledge-base/extract.js.map +1 -0
  70. package/dist/core/knowledge-base/fix-legacy-layout.d.ts +61 -0
  71. package/dist/core/knowledge-base/fix-legacy-layout.d.ts.map +1 -0
  72. package/dist/core/knowledge-base/fix-legacy-layout.js +189 -0
  73. package/dist/core/knowledge-base/fix-legacy-layout.js.map +1 -0
  74. package/dist/core/knowledge-base/migrate.d.ts +67 -0
  75. package/dist/core/knowledge-base/migrate.d.ts.map +1 -0
  76. package/dist/core/knowledge-base/migrate.js +147 -0
  77. package/dist/core/knowledge-base/migrate.js.map +1 -0
  78. package/dist/core/maintain/orchestrator.d.ts.map +1 -1
  79. package/dist/core/maintain/orchestrator.js +48 -1
  80. package/dist/core/maintain/orchestrator.js.map +1 -1
  81. package/dist/core/metadata/errors.d.ts +62 -0
  82. package/dist/core/metadata/errors.d.ts.map +1 -0
  83. package/dist/core/metadata/errors.js +95 -0
  84. package/dist/core/metadata/errors.js.map +1 -0
  85. package/dist/core/metadata/schema.d.ts +709 -58
  86. package/dist/core/metadata/schema.d.ts.map +1 -1
  87. package/dist/core/metadata/schema.js +453 -79
  88. package/dist/core/metadata/schema.js.map +1 -1
  89. package/dist/generators/facts-index.d.ts +27 -0
  90. package/dist/generators/facts-index.d.ts.map +1 -0
  91. package/dist/generators/facts-index.js +111 -0
  92. package/dist/generators/facts-index.js.map +1 -0
  93. package/dist/generators/incidents-index.d.ts +21 -0
  94. package/dist/generators/incidents-index.d.ts.map +1 -0
  95. package/dist/generators/incidents-index.js +79 -0
  96. package/dist/generators/incidents-index.js.map +1 -0
  97. package/dist/generators/symptoms-index.d.ts +20 -0
  98. package/dist/generators/symptoms-index.d.ts.map +1 -0
  99. package/dist/generators/symptoms-index.js +123 -0
  100. package/dist/generators/symptoms-index.js.map +1 -0
  101. package/dist/generators/table.d.ts +8 -0
  102. package/dist/generators/table.d.ts.map +1 -0
  103. package/dist/generators/table.js +23 -0
  104. package/dist/generators/table.js.map +1 -0
  105. package/dist/index.d.ts +7 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +8 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/utils/config.d.ts +99 -0
  110. package/dist/utils/config.d.ts.map +1 -0
  111. package/dist/utils/config.js +95 -0
  112. package/dist/utils/config.js.map +1 -0
  113. package/package.json +1 -1
  114. package/templates/knowledge-base/README.md +31 -0
  115. package/templates/knowledge-base/fact.template.md +44 -0
  116. package/templates/knowledge-base/incident-facts.template.md +31 -0
  117. package/templates/knowledge-base/incident-narrative.template.md +50 -0
  118. package/templates/knowledge-base/playbook-symptoms.template.md +74 -0
@@ -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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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Flat-file incident → folder migration (2.3.0 PR3, target-path fix in 2.4.0).
3
+ *
4
+ * Reads a legacy flat-file incident and converts it into the folder form
5
+ * AT THE CANONICAL VAULT LOCATION:
6
+ *
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
+ *
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.
27
+ */
28
+ export interface MigrateIncidentOptions {
29
+ /** Absolute path to the flat-file incident markdown. */
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;
37
+ /** If true, returns the migration plan without writing. */
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;
45
+ }
46
+ export interface MigrateIncidentResult {
47
+ flatFilePath: string;
48
+ /** The canonical target — always under `<vaultRoot>/incidents/`. */
49
+ targetFolder: string;
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';
58
+ narrativePath: string;
59
+ factsPath: string;
60
+ evidencePath: string;
61
+ /** What the narrative.md content will be. */
62
+ narrativeContent: string;
63
+ /** What the facts.md content will be. */
64
+ factsContent: string;
65
+ }
66
+ export declare function migrateIncident(options: MigrateIncidentOptions): Promise<MigrateIncidentResult>;
67
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Flat-file incident → folder migration (2.3.0 PR3, target-path fix in 2.4.0).
3
+ *
4
+ * Reads a legacy flat-file incident and converts it into the folder form
5
+ * AT THE CANONICAL VAULT LOCATION:
6
+ *
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
+ *
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.
27
+ */
28
+ import { readFile, writeFile, mkdir, rename } from 'fs/promises';
29
+ import { existsSync } from 'fs';
30
+ import { basename, dirname, join } from 'path';
31
+ import matter from 'gray-matter';
32
+ export async function migrateIncident(options) {
33
+ const { flatFilePath, vaultRoot, dryRun = false, force = false } = options;
34
+ const sourceContent = await readFile(flatFilePath, 'utf-8');
35
+ const parsed = matter(sourceContent);
36
+ const fm = (parsed.data ?? {});
37
+ // Derive the target folder name. Priority:
38
+ // 1. Frontmatter `id:` (if YYYY-MM-DD-slug shape)
39
+ // 2. The flat file's basename minus `.md`
40
+ const flatBase = basename(flatFilePath, '.md');
41
+ const idFromFrontmatter = typeof fm.id === 'string' ? fm.id : undefined;
42
+ const folderSlug = idFromFrontmatter && /^\d{4}-\d{2}-\d{2}-[a-z0-9-]+$/.test(idFromFrontmatter)
43
+ ? idFromFrontmatter
44
+ : flatBase;
45
+ // Canonical target: <vault-root>/incidents/<slug>/
46
+ const targetFolder = join(vaultRoot, 'incidents', folderSlug);
47
+ const narrativePath = join(targetFolder, 'narrative.md');
48
+ const factsPath = join(targetFolder, 'facts.md');
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');
53
+ // Build narrative.md frontmatter — promote/normalize fields, set tier.
54
+ const narrativeFrontmatter = {
55
+ title: fm.title ?? flatBase,
56
+ tier: 'incident-narrative',
57
+ domains: Array.isArray(fm.domains) ? fm.domains : ['incidents'],
58
+ status: typeof fm.status === 'string' ? fm.status : 'active',
59
+ last_updated: typeof fm.last_updated === 'string'
60
+ ? fm.last_updated
61
+ : new Date().toISOString().slice(0, 10),
62
+ id: folderSlug,
63
+ date: deriveDateFromSlug(folderSlug) ?? fm.date ?? folderSlug.slice(0, 10),
64
+ severity: typeof fm.severity === 'string' ? fm.severity : 'medium',
65
+ resolution_status: typeof fm.resolution_status === 'string' ? fm.resolution_status : 'resolved',
66
+ components: Array.isArray(fm.components) ? fm.components : ['unknown'],
67
+ };
68
+ if (Array.isArray(fm.tags))
69
+ narrativeFrontmatter.tags = fm.tags;
70
+ const narrativeContent = matter.stringify(parsed.content, narrativeFrontmatter);
71
+ // Build facts.md skeleton.
72
+ const factsFrontmatter = {
73
+ title: `Facts from ${folderSlug}`,
74
+ tier: 'incident-facts',
75
+ domains: ['incidents'],
76
+ status: 'active',
77
+ last_updated: new Date().toISOString().slice(0, 10),
78
+ incident_id: folderSlug,
79
+ produced: [],
80
+ };
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);
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
+ }
111
+ }
112
+ if (dryRun) {
113
+ return {
114
+ flatFilePath,
115
+ targetFolder,
116
+ action: 'dry_run',
117
+ narrativePath,
118
+ factsPath,
119
+ evidencePath,
120
+ narrativeContent,
121
+ factsContent,
122
+ };
123
+ }
124
+ // Ensure the canonical parent (<vault>/incidents/) exists. Generator
125
+ // already handles a missing dir; we should too.
126
+ await mkdir(evidencePath, { recursive: true }); // also creates targetFolder
127
+ await writeFile(narrativePath, narrativeContent, 'utf-8');
128
+ await writeFile(factsPath, factsContent, 'utf-8');
129
+ // Move the flat file to a `.migrated` extension so consumers don't read it
130
+ // accidentally. Preserves the original for rollback.
131
+ await rename(flatFilePath, `${flatFilePath}.migrated`);
132
+ return {
133
+ flatFilePath,
134
+ targetFolder,
135
+ action: 'migrated',
136
+ narrativePath,
137
+ factsPath,
138
+ evidencePath,
139
+ narrativeContent,
140
+ factsContent,
141
+ };
142
+ }
143
+ function deriveDateFromSlug(slug) {
144
+ const m = slug.match(/^(\d{4}-\d{2}-\d{2})/);
145
+ return m ? m[1] : undefined;
146
+ }
147
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/knowledge-base/migrate.ts"],"names":[],"mappings":"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"}
@@ -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;AAI3E,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,CA0JtF;AA4OD;;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;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,4 +1,4 @@
1
- import { join } from 'path';
1
+ import { dirname, join } from 'path';
2
2
  import { writeFile, mkdir } from 'fs/promises';
3
3
  import { logger } from '../../utils/logger.js';
4
4
  import { pathExists } from '../../utils/glob.js';
@@ -7,6 +7,11 @@ import { checkLinks } from '../links/checker.js';
7
7
  import { auditDocumentation } from '../audit/auditor.js';
8
8
  import { DOMAINS } from '../domains/constants.js';
9
9
  import { formatDate } from '../metadata/generator.js';
10
+ import { loadPluginConfig, resolveVaultRoot, resolvePlaybookGlobs, } from '../../utils/config.js';
11
+ import { buildCiterIndex } from '../knowledge-base/citers.js';
12
+ import { generateFactsIndex } from '../../generators/facts-index.js';
13
+ import { generateIncidentsIndex } from '../../generators/incidents-index.js';
14
+ import { generateSymptomsIndex } from '../../generators/symptoms-index.js';
10
15
  /**
11
16
  * Run full maintenance on documentation
12
17
  */
@@ -102,6 +107,16 @@ export async function runMaintenance(options) {
102
107
  const message = error instanceof Error ? error.message : String(error);
103
108
  result.errors.push(`Audit failed: ${message}`);
104
109
  }
110
+ // Step 3.5: Knowledge-base indexes (2.3.0+) — only when a vault root
111
+ // exists. Backward-compat hard requirement: a project with no
112
+ // knowledge-base/ subtree must observe zero behavior change vs. 2.2.0.
113
+ try {
114
+ await maybeGenerateKbIndexes(docsPath, silent, result);
115
+ }
116
+ catch (error) {
117
+ const message = error instanceof Error ? error.message : String(error);
118
+ result.errors.push(`Knowledge-base index generation failed: ${message}`);
119
+ }
105
120
  // Calculate overall health score
106
121
  result.healthScore = calculateHealthScore(result);
107
122
  // Generate report
@@ -348,6 +363,38 @@ version: '1.0.0'
348
363
  await writeFile(reportPath, content, 'utf-8');
349
364
  return reportPath;
350
365
  }
366
+ /**
367
+ * Generate the three knowledge-base indexes when a vault root exists.
368
+ * No-op (silent) when the vault root doesn't exist — backward-compat hard
369
+ * requirement: a 2.2.0-era project tree must observe zero behavior change.
370
+ */
371
+ async function maybeGenerateKbIndexes(docsPath, silent, result) {
372
+ // Project root is the parent of docsPath (e.g. .documentation/ → project root).
373
+ // Config and playbook globs are resolved relative to the project root.
374
+ const projectRoot = dirname(docsPath);
375
+ const config = await loadPluginConfig(projectRoot);
376
+ const vaultRoot = resolveVaultRoot(projectRoot, config);
377
+ if (!(await pathExists(vaultRoot))) {
378
+ // No vault — backward-compat path. Don't even log.
379
+ return;
380
+ }
381
+ if (!silent) {
382
+ logger.subheader('Step 3.5: Knowledge-base Indexes');
383
+ }
384
+ const playbookGlobs = resolvePlaybookGlobs(projectRoot, config);
385
+ const index = await buildCiterIndex({ projectRoot, vaultRoot, playbookGlobs });
386
+ const factsPath = await generateFactsIndex({ vaultRoot, index });
387
+ const incidentsPath = await generateIncidentsIndex({ vaultRoot, index });
388
+ const symptomsPath = await generateSymptomsIndex({ vaultRoot, index });
389
+ if (!silent) {
390
+ logger.success(`Generated ${index.facts.size} facts → ${factsPath}`);
391
+ logger.success(`Generated ${index.incidents.size} incidents → ${incidentsPath}`);
392
+ logger.success(`Generated symptoms index → ${symptomsPath}`);
393
+ }
394
+ // Suppress unused-var: result is part of the signature for future use
395
+ // (e.g. surfacing KB stats into the maintenance report).
396
+ void result;
397
+ }
351
398
  /**
352
399
  * Quick health check without full maintenance
353
400
  */
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AA4B3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,EACJ,QAAQ,EACR,KAAK,GAAG,KAAK,EACb,GAAG,GAAG,KAAK,EACX,MAAM,GAAG,KAAK,GACf,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;YACZ,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,EAAE;SACtB;QACD,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,YAAY,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,kBAAkB,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC;YACvC,QAAQ;YACR,MAAM,EAAE,CAAC,GAAG;YACZ,GAAG;YACH,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,GAAG,MAAM,UAAU,CAAC;gBAClC,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,GAAG,MAAM,kBAAkB,CAAC;YACtC,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,qEAAqE;IACrE,8DAA8D;IAC9D,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAElD,kBAAkB;IAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,UAAU,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,iBAAiB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;IACV,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,UAAU,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,YAAY,QAAQ,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,MAAM,GAAuB;QACjC,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;KACtB,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAErD,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAsB;IAClD,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,wBAAwB;IACxB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM;YACzC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM;YACzC,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC/C,KAAK,IAAI,YAAY,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QACvF,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,cAAc,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClG,KAAK,IAAI,UAAU,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,QAAgB,EAChB,MAAsB,EACtB,SAAiB;IAEjB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAI,OAAO,GAAG;8BACc,GAAG;;;;iBAIhB,GAAG;;;;;;iBAMH,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzB,QAAQ;oBACJ,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;qBAM5B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC9B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;oBACxD,MAAM,CAAC,YAAY,EAAE,UAAU,IAAI,CAAC;kBACtC,MAAM,CAAC,YAAY,EAAE,UAAU,IAAI,CAAC;mBACnC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,IAAI,aAAa;mBACrD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;;;;CAIlD,CAAC;IAEA,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,2BAA2B,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,yBAAyB,CAAC;YACrC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,IAAI,MAAM,CAAC;QACpB,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,gCAAgC,CAAC;YAC5C,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,OAAO,IAAI,MAAM,CAAC;QACpB,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,mCAAmC,CAAC;YAC/C,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7F,OAAO,IAAI,MAAM,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,IAAI;;;;kBAIG,MAAM,CAAC,YAAY,CAAC,UAAU;YACpC,MAAM,CAAC,YAAY,CAAC,UAAU;YAC9B,MAAM,CAAC,YAAY,CAAC,UAAU;aAC7B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;uBACvB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;;CAE1E,CAAC;IACA,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI;;;;kBAIG,MAAM,CAAC,SAAS,CAAC,UAAU;kBAC3B,MAAM,CAAC,SAAS,CAAC,UAAU;mBAC1B,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;mBACnC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB;;CAEzD,CAAC;QAEE,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,sBAAsB,CAAC;YAClC,OAAO,IAAI,4BAA4B,CAAC;YACxC,OAAO,IAAI,4BAA4B,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7D,OAAO,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,UAAU,MAAM,CAAC;YAClF,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC7C,OAAO,IAAI,aAAa,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC;YAC7E,CAAC;YACD,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI;;;;mBAII,MAAM,CAAC,KAAK,CAAC,WAAW;mBACxB,MAAM,CAAC,KAAK,CAAC,WAAW;mBACxB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;0BAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;wBAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;;CAErE,CAAC;QAEE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC9E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,yBAAyB,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC;YACvD,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC5B,OAAO,IAAI,aAAa,WAAW,CAAC,MAAM,GAAG,EAAE,iBAAiB,CAAC;YACnE,CAAC;YACD,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI;;CAEd,CAAC;QACE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,IAAI;;;;CAIZ,CAAC;IAEA,cAAc;IACd,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,SAAS,KAAK,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACnC,QAAgB,EAChB,MAAe,EACf,MAAsB;IAEtB,gFAAgF;IAChF,uEAAuE;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACnC,mDAAmD;QACnD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAE/E,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,IAAI,YAAY,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,CAAC,SAAS,CAAC,IAAI,gBAAgB,aAAa,EAAE,CAAC,CAAC;QACjF,MAAM,CAAC,OAAO,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,sEAAsE;IACtE,yDAAyD;IACzD,KAAK,MAAM,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAKrD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,wBAAwB,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAEpE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;QACzB,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Error codes for knowledge-base primitive validation (introduced in 2.3.0).
3
+ *
4
+ * The schema's .refine() rules prefix their messages with one of these codes
5
+ * in square brackets, e.g. `[FACT_MISSING_ID] id is required when tier is "fact"`.
6
+ * The audit layer parses the code out of the message to populate AuditIssue.code,
7
+ * which lets CI and tooling switch on specific violation types without
8
+ * substring-matching prose.
9
+ *
10
+ * Codes are namespaced by primitive:
11
+ * FACT_* — facts
12
+ * INCIDENT_* — incident folders (narrative + facts.md)
13
+ * PLAYBOOK_* — playbook symptoms blocks (the symptoms: frontmatter field)
14
+ */
15
+ export declare const KB_ERROR_CODES: {
16
+ readonly FACT_MISSING_ID: "FACT_MISSING_ID";
17
+ readonly FACT_ID_FILENAME_MISMATCH: "FACT_ID_FILENAME_MISMATCH";
18
+ readonly FACT_MISSING_PROVENANCE: "FACT_MISSING_PROVENANCE";
19
+ readonly FACT_INVALID_CONFIDENCE: "FACT_INVALID_CONFIDENCE";
20
+ readonly FACT_MISSING_LAST_VERIFIED: "FACT_MISSING_LAST_VERIFIED";
21
+ readonly FACT_VERIFY_COMMAND_MULTILINE_SHEBANG: "FACT_VERIFY_COMMAND_MULTILINE_SHEBANG";
22
+ readonly INCIDENT_FOLDER_MISSING_NARRATIVE: "INCIDENT_FOLDER_MISSING_NARRATIVE";
23
+ readonly INCIDENT_FOLDER_MISSING_FACTS: "INCIDENT_FOLDER_MISSING_FACTS";
24
+ readonly INCIDENT_NARRATIVE_MISSING_DATE: "INCIDENT_NARRATIVE_MISSING_DATE";
25
+ readonly INCIDENT_NARRATIVE_MISSING_SEVERITY: "INCIDENT_NARRATIVE_MISSING_SEVERITY";
26
+ readonly INCIDENT_NARRATIVE_INVALID_SEVERITY: "INCIDENT_NARRATIVE_INVALID_SEVERITY";
27
+ readonly INCIDENT_NARRATIVE_MISSING_RESOLUTION_STATUS: "INCIDENT_NARRATIVE_MISSING_RESOLUTION_STATUS";
28
+ readonly INCIDENT_NARRATIVE_INVALID_RESOLUTION_STATUS: "INCIDENT_NARRATIVE_INVALID_RESOLUTION_STATUS";
29
+ readonly INCIDENT_NARRATIVE_MISSING_COMPONENTS: "INCIDENT_NARRATIVE_MISSING_COMPONENTS";
30
+ readonly INCIDENT_FACTS_MISSING_INCIDENT_ID: "INCIDENT_FACTS_MISSING_INCIDENT_ID";
31
+ readonly INCIDENT_FACTS_MISSING_PRODUCED: "INCIDENT_FACTS_MISSING_PRODUCED";
32
+ readonly INCIDENT_FACTS_DANGLING_REF: "INCIDENT_FACTS_DANGLING_REF";
33
+ readonly PLAYBOOK_SYMPTOM_MISSING_KEY: "PLAYBOOK_SYMPTOM_MISSING_KEY";
34
+ readonly PLAYBOOK_SYMPTOM_MISSING_TARGET: "PLAYBOOK_SYMPTOM_MISSING_TARGET";
35
+ readonly PLAYBOOK_SYMPTOM_MISSING_CITES: "PLAYBOOK_SYMPTOM_MISSING_CITES";
36
+ readonly PLAYBOOK_SYMPTOM_DANGLING_CITE: "PLAYBOOK_SYMPTOM_DANGLING_CITE";
37
+ };
38
+ export type KbErrorCode = (typeof KB_ERROR_CODES)[keyof typeof KB_ERROR_CODES];
39
+ /**
40
+ * Severity for each KB error code.
41
+ *
42
+ * Most violations are `error`. The shebang check on verify_command is `warning`
43
+ * because the spec calls it out as "warning only — multi-line is fine, shebang
44
+ * missing is OK". Dangling refs (facts referencing non-existent fact-ids, or
45
+ * playbook citations to non-existent fact-ids) are `error`.
46
+ */
47
+ export declare const KB_ERROR_SEVERITY: Record<KbErrorCode, 'error' | 'warning'>;
48
+ /**
49
+ * Format a code-prefixed error message. The audit layer parses the leading
50
+ * `[CODE]` to populate `AuditIssue.code` without losing the human-readable
51
+ * description.
52
+ */
53
+ export declare function formatKbError(code: KbErrorCode, message: string): string;
54
+ /**
55
+ * Extract a KB error code from a refine() message, if present. Returns null
56
+ * for messages that don't begin with `[CODE] `.
57
+ */
58
+ export declare function parseKbErrorCode(message: string): {
59
+ code: KbErrorCode;
60
+ message: string;
61
+ } | null;
62
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/metadata/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;CA6BjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAsBtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS/C"}