maestro-flow 0.5.32 → 0.5.34

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 (213) hide show
  1. package/.agents/agents/role-design-author.md +5 -3
  2. package/.agents/skills/maestro/SKILL.md +8 -1
  3. package/.agents/skills/maestro-help/SKILL.md +39 -10
  4. package/.agents/skills/maestro-help/index/catalog.json +118 -53
  5. package/.agents/skills/maestro-help/phases/01-parse-intent.md +9 -6
  6. package/.agents/skills/maestro-help/phases/02-search-present.md +55 -15
  7. package/.agents/skills/maestro-help/phases/03-workflow-guide.md +35 -2
  8. package/.agents/skills/maestro-ralph/SKILL.md +9 -2
  9. package/.agents/skills/maestro-ralph-beta/SKILL.md +7 -2
  10. package/.agents/skills/maestro-ralph-execute/SKILL.md +1 -0
  11. package/.agents/skills/manage-harvest/SKILL.md +3 -0
  12. package/.agents/skills/manage-knowledge-audit/SKILL.md +29 -0
  13. package/.agents/skills/odyssey-debug/SKILL.md +7 -1
  14. package/.agents/skills/odyssey-improve/SKILL.md +7 -1
  15. package/.agents/skills/odyssey-planex/SKILL.md +11 -1
  16. package/.agents/skills/odyssey-review-test-fix/SKILL.md +7 -1
  17. package/.agents/skills/odyssey-ui/SKILL.md +7 -1
  18. package/.agents/skills/quality-review/SKILL.md +3 -0
  19. package/.agy/agents/role-design-author.md +5 -3
  20. package/.agy/skills/maestro/SKILL.md +8 -1
  21. package/.agy/skills/maestro-help/SKILL.md +39 -10
  22. package/.agy/skills/maestro-help/index/catalog.json +118 -53
  23. package/.agy/skills/maestro-help/phases/01-parse-intent.md +9 -6
  24. package/.agy/skills/maestro-help/phases/02-search-present.md +55 -15
  25. package/.agy/skills/maestro-help/phases/03-workflow-guide.md +35 -2
  26. package/.agy/skills/maestro-ralph/SKILL.md +9 -2
  27. package/.agy/skills/maestro-ralph-beta/SKILL.md +7 -2
  28. package/.agy/skills/maestro-ralph-execute/SKILL.md +1 -0
  29. package/.agy/skills/manage-harvest/SKILL.md +3 -0
  30. package/.agy/skills/manage-knowledge-audit/SKILL.md +29 -0
  31. package/.agy/skills/odyssey-debug/SKILL.md +7 -1
  32. package/.agy/skills/odyssey-improve/SKILL.md +7 -1
  33. package/.agy/skills/odyssey-planex/SKILL.md +11 -1
  34. package/.agy/skills/odyssey-review-test-fix/SKILL.md +7 -1
  35. package/.agy/skills/odyssey-ui/SKILL.md +7 -1
  36. package/.agy/skills/quality-review/SKILL.md +3 -0
  37. package/.claude/agents/role-design-author.md +5 -3
  38. package/.claude/commands/maestro-ralph-beta.md +7 -2
  39. package/.claude/commands/maestro-ralph-execute.md +1 -0
  40. package/.claude/commands/maestro-ralph.md +9 -2
  41. package/.claude/commands/maestro.md +8 -1
  42. package/.claude/commands/manage-harvest.md +3 -0
  43. package/.claude/commands/manage-knowledge-audit.md +29 -0
  44. package/.claude/commands/odyssey-debug.md +7 -1
  45. package/.claude/commands/odyssey-improve.md +7 -1
  46. package/.claude/commands/odyssey-planex.md +11 -1
  47. package/.claude/commands/odyssey-review-test-fix.md +7 -1
  48. package/.claude/commands/odyssey-ui.md +7 -1
  49. package/.claude/commands/quality-review.md +3 -0
  50. package/.claude/skills/maestro-help/SKILL.md +39 -10
  51. package/.claude/skills/maestro-help/index/catalog.json +118 -53
  52. package/.claude/skills/maestro-help/phases/01-parse-intent.md +9 -6
  53. package/.claude/skills/maestro-help/phases/02-search-present.md +55 -15
  54. package/.claude/skills/maestro-help/phases/03-workflow-guide.md +35 -2
  55. package/.codex/skills/manage-harvest/SKILL.md +2 -1
  56. package/.codex/skills/quality-review/SKILL.md +4 -2
  57. package/README.md +196 -87
  58. package/README.zh-CN.md +198 -79
  59. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +9 -4
  60. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
  61. package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +8 -5
  62. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +22 -42
  63. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  64. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +1 -4
  65. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +28 -42
  66. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  67. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +22 -22
  68. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  69. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +12 -12
  70. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  71. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +10 -3
  72. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  73. package/dashboard/dist-server/src/commands/install-backend.d.ts +1 -1
  74. package/dashboard/dist-server/src/commands/install-backend.js +1 -1
  75. package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
  76. package/dashboard/dist-server/src/core/component-defs.d.ts +1 -0
  77. package/dashboard/dist-server/src/core/component-defs.js +68 -19
  78. package/dashboard/dist-server/src/core/component-defs.js.map +1 -1
  79. package/dashboard/dist-server/src/graph/kg/db/types.d.ts +2 -1
  80. package/dashboard/dist-server/src/graph/kg/db/types.js.map +1 -1
  81. package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.d.ts +22 -0
  82. package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js +64 -0
  83. package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -0
  84. package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js +12 -98
  85. package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js.map +1 -1
  86. package/dashboard/dist-server/src/hooks/keyword-spec-injector.js +5 -2
  87. package/dashboard/dist-server/src/hooks/keyword-spec-injector.js.map +1 -1
  88. package/dashboard/dist-server/src/hooks/wiki-role-loader.js +2 -1
  89. package/dashboard/dist-server/src/hooks/wiki-role-loader.js.map +1 -1
  90. package/dashboard/dist-server/src/tools/domain-loader.js +22 -16
  91. package/dashboard/dist-server/src/tools/domain-loader.js.map +1 -1
  92. package/dashboard/dist-server/src/tools/spec-entry-parser.d.ts +6 -1
  93. package/dashboard/dist-server/src/tools/spec-entry-parser.js +44 -13
  94. package/dashboard/dist-server/src/tools/spec-entry-parser.js.map +1 -1
  95. package/dashboard/dist-server/src/tools/spec-keyword-index.d.ts +2 -0
  96. package/dashboard/dist-server/src/tools/spec-keyword-index.js +4 -9
  97. package/dashboard/dist-server/src/tools/spec-keyword-index.js.map +1 -1
  98. package/dashboard/dist-server/src/tools/spec-loader.js +3 -11
  99. package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
  100. package/dashboard/dist-server/src/types/index.d.ts +14 -0
  101. package/dashboard/dist-server/src/utils/frontmatter.d.ts +15 -0
  102. package/dashboard/dist-server/src/utils/frontmatter.js +76 -0
  103. package/dashboard/dist-server/src/utils/frontmatter.js.map +1 -0
  104. package/dist/src/commands/domain.d.ts.map +1 -1
  105. package/dist/src/commands/domain.js +8 -2
  106. package/dist/src/commands/domain.js.map +1 -1
  107. package/dist/src/commands/install-backend.d.ts +1 -1
  108. package/dist/src/commands/install-backend.d.ts.map +1 -1
  109. package/dist/src/commands/install-backend.js +1 -1
  110. package/dist/src/commands/install-backend.js.map +1 -1
  111. package/dist/src/commands/install.d.ts.map +1 -1
  112. package/dist/src/commands/install.js +6 -2
  113. package/dist/src/commands/install.js.map +1 -1
  114. package/dist/src/commands/knowhow.d.ts.map +1 -1
  115. package/dist/src/commands/knowhow.js +3 -26
  116. package/dist/src/commands/knowhow.js.map +1 -1
  117. package/dist/src/commands/search.d.ts +1 -1
  118. package/dist/src/commands/search.d.ts.map +1 -1
  119. package/dist/src/commands/search.js +43 -41
  120. package/dist/src/commands/search.js.map +1 -1
  121. package/dist/src/commands/spec.d.ts.map +1 -1
  122. package/dist/src/commands/spec.js +106 -6
  123. package/dist/src/commands/spec.js.map +1 -1
  124. package/dist/src/commands/uninstall.d.ts.map +1 -1
  125. package/dist/src/commands/uninstall.js +12 -3
  126. package/dist/src/commands/uninstall.js.map +1 -1
  127. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  128. package/dist/src/config/cli-tools-config.js +2 -0
  129. package/dist/src/config/cli-tools-config.js.map +1 -1
  130. package/dist/src/core/component-defs.d.ts +1 -0
  131. package/dist/src/core/component-defs.d.ts.map +1 -1
  132. package/dist/src/core/component-defs.js +68 -19
  133. package/dist/src/core/component-defs.js.map +1 -1
  134. package/dist/src/core/extension-loader.d.ts.map +1 -1
  135. package/dist/src/core/extension-loader.js +4 -0
  136. package/dist/src/core/extension-loader.js.map +1 -1
  137. package/dist/src/core/install-executor.d.ts.map +1 -1
  138. package/dist/src/core/install-executor.js +2 -0
  139. package/dist/src/core/install-executor.js.map +1 -1
  140. package/dist/src/graph/analyzers/fs-analyzer.js +2 -2
  141. package/dist/src/graph/analyzers/fs-analyzer.js.map +1 -1
  142. package/dist/src/graph/kg/db/node-kind-registry.d.ts +18 -0
  143. package/dist/src/graph/kg/db/node-kind-registry.d.ts.map +1 -0
  144. package/dist/src/graph/kg/db/node-kind-registry.js +42 -0
  145. package/dist/src/graph/kg/db/node-kind-registry.js.map +1 -0
  146. package/dist/src/graph/kg/db/types.d.ts +2 -1
  147. package/dist/src/graph/kg/db/types.d.ts.map +1 -1
  148. package/dist/src/graph/kg/db/types.js.map +1 -1
  149. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts +23 -0
  150. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts.map +1 -0
  151. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js +64 -0
  152. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -0
  153. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
  154. package/dist/src/graph/kg/extraction/orchestrator.js +12 -98
  155. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
  156. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -1
  157. package/dist/src/hooks/keyword-spec-injector.js +5 -2
  158. package/dist/src/hooks/keyword-spec-injector.js.map +1 -1
  159. package/dist/src/hooks/wiki-role-loader.d.ts.map +1 -1
  160. package/dist/src/hooks/wiki-role-loader.js +2 -1
  161. package/dist/src/hooks/wiki-role-loader.js.map +1 -1
  162. package/dist/src/index.d.ts +6 -0
  163. package/dist/src/index.d.ts.map +1 -1
  164. package/dist/src/index.js +4 -0
  165. package/dist/src/index.js.map +1 -1
  166. package/dist/src/tools/domain-loader.d.ts.map +1 -1
  167. package/dist/src/tools/domain-loader.js +22 -16
  168. package/dist/src/tools/domain-loader.js.map +1 -1
  169. package/dist/src/tools/spec-conflict-marker.d.ts +55 -0
  170. package/dist/src/tools/spec-conflict-marker.d.ts.map +1 -0
  171. package/dist/src/tools/spec-conflict-marker.js +228 -0
  172. package/dist/src/tools/spec-conflict-marker.js.map +1 -0
  173. package/dist/src/tools/spec-entry-parser.d.ts +6 -1
  174. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  175. package/dist/src/tools/spec-entry-parser.js +44 -13
  176. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  177. package/dist/src/tools/spec-keyword-index.d.ts +2 -0
  178. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -1
  179. package/dist/src/tools/spec-keyword-index.js +4 -9
  180. package/dist/src/tools/spec-keyword-index.js.map +1 -1
  181. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  182. package/dist/src/tools/spec-loader.js +3 -11
  183. package/dist/src/tools/spec-loader.js.map +1 -1
  184. package/dist/src/tools/spec-writer.d.ts.map +1 -1
  185. package/dist/src/tools/spec-writer.js +2 -6
  186. package/dist/src/tools/spec-writer.js.map +1 -1
  187. package/dist/src/tools/store-knowhow.d.ts.map +1 -1
  188. package/dist/src/tools/store-knowhow.js +6 -52
  189. package/dist/src/tools/store-knowhow.js.map +1 -1
  190. package/dist/src/tui/install-ui/ComponentGrid.d.ts +0 -4
  191. package/dist/src/tui/install-ui/ComponentGrid.d.ts.map +1 -1
  192. package/dist/src/tui/install-ui/ComponentGrid.js +57 -31
  193. package/dist/src/tui/install-ui/ComponentGrid.js.map +1 -1
  194. package/dist/src/tui/install-ui/GroupedHub.js +1 -1
  195. package/dist/src/tui/install-ui/GroupedHub.js.map +1 -1
  196. package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -1
  197. package/dist/src/tui/install-ui/useInstallFlowState.js +3 -3
  198. package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -1
  199. package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -1
  200. package/dist/src/tui/uninstall-ui/UninstallFlow.js +3 -1
  201. package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -1
  202. package/dist/src/types/index.d.ts +14 -0
  203. package/dist/src/types/index.d.ts.map +1 -1
  204. package/dist/src/utils/frontmatter.d.ts +16 -0
  205. package/dist/src/utils/frontmatter.d.ts.map +1 -0
  206. package/dist/src/utils/frontmatter.js +76 -0
  207. package/dist/src/utils/frontmatter.js.map +1 -0
  208. package/dist/src/utils/migration-registry.d.ts.map +1 -1
  209. package/dist/src/utils/migration-registry.js +14 -1
  210. package/dist/src/utils/migration-registry.js.map +1 -1
  211. package/package.json +2 -2
  212. package/workflows/claude-instructions.md +48 -45
  213. package/workflows/codex-instructions.md +25 -19
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Spec Conflict Marker
3
+ *
4
+ * Mark, clear, and list conflict annotations on <spec-entry> tags.
5
+ * Used by agents during search (mark conflicts) and by audit commands (clear conflicts).
6
+ *
7
+ * Conflict flow:
8
+ * 1. Agent search → detects knowledge conflict → markConflict()
9
+ * 2. Injection → entries with confidence="contested" show warnings, sorted last
10
+ * 3. /manage-knowledge-audit → reviews marks → clearConflict() or setConfidence()
11
+ */
12
+ import { readFileSync, writeFileSync, readdirSync, existsSync } from 'node:fs';
13
+ import { join } from 'node:path';
14
+ import { parseSpecEntries, VALID_CONFIDENCE_LEVELS } from './spec-entry-parser.js';
15
+ import { stripFrontmatter } from '../utils/frontmatter.js';
16
+ // ============================================================================
17
+ // Marker ID generation
18
+ // ============================================================================
19
+ function generateMarkerId() {
20
+ const now = new Date();
21
+ const date = now.toISOString().slice(0, 10).replace(/-/g, '');
22
+ const rand = Math.random().toString(36).slice(2, 6);
23
+ return `CMK-${date}-${rand}`;
24
+ }
25
+ // ============================================================================
26
+ // Public API
27
+ // ============================================================================
28
+ /**
29
+ * Mark a spec entry as conflicted by injecting conflict attributes into its tag.
30
+ */
31
+ export function markConflict(projectPath, file, lineStart, options) {
32
+ const specsDir = join(projectPath, '.workflow', 'specs');
33
+ const filePath = join(specsDir, file);
34
+ if (!existsSync(filePath)) {
35
+ return { success: false, error: `File not found: ${file}` };
36
+ }
37
+ let content;
38
+ try {
39
+ content = readFileSync(filePath, 'utf-8');
40
+ }
41
+ catch {
42
+ return { success: false, error: `Cannot read: ${file}` };
43
+ }
44
+ const lines = content.split('\n');
45
+ const targetLineIdx = lineStart - 1;
46
+ if (targetLineIdx < 0 || targetLineIdx >= lines.length) {
47
+ return { success: false, error: `Line ${lineStart} out of range` };
48
+ }
49
+ const line = lines[targetLineIdx];
50
+ if (!line.includes('<spec-entry')) {
51
+ return { success: false, error: `Line ${lineStart} is not a <spec-entry> tag` };
52
+ }
53
+ const marker = options.marker || generateMarkerId();
54
+ const confidence = options.confidence || 'contested';
55
+ let updated = line;
56
+ updated = upsertAttribute(updated, 'confidence', confidence);
57
+ updated = upsertAttribute(updated, 'conflict-marker', marker);
58
+ updated = upsertAttribute(updated, 'conflict-note', options.note);
59
+ lines[targetLineIdx] = updated;
60
+ writeFileSync(filePath, lines.join('\n'), 'utf-8');
61
+ return { success: true };
62
+ }
63
+ /**
64
+ * Clear conflict markers from a spec entry, optionally setting a new confidence level.
65
+ */
66
+ export function clearConflict(projectPath, file, lineStart, newConfidence) {
67
+ const specsDir = join(projectPath, '.workflow', 'specs');
68
+ const filePath = join(specsDir, file);
69
+ if (!existsSync(filePath)) {
70
+ return { success: false, error: `File not found: ${file}` };
71
+ }
72
+ let content;
73
+ try {
74
+ content = readFileSync(filePath, 'utf-8');
75
+ }
76
+ catch {
77
+ return { success: false, error: `Cannot read: ${file}` };
78
+ }
79
+ const lines = content.split('\n');
80
+ const targetLineIdx = lineStart - 1;
81
+ if (targetLineIdx < 0 || targetLineIdx >= lines.length) {
82
+ return { success: false, error: `Line ${lineStart} out of range` };
83
+ }
84
+ let line = lines[targetLineIdx];
85
+ if (!line.includes('<spec-entry')) {
86
+ return { success: false, error: `Line ${lineStart} is not a <spec-entry> tag` };
87
+ }
88
+ line = removeAttribute(line, 'conflict-marker');
89
+ line = removeAttribute(line, 'conflict-note');
90
+ if (newConfidence) {
91
+ line = upsertAttribute(line, 'confidence', newConfidence);
92
+ }
93
+ else {
94
+ line = removeAttribute(line, 'confidence');
95
+ }
96
+ lines[targetLineIdx] = line;
97
+ writeFileSync(filePath, lines.join('\n'), 'utf-8');
98
+ return { success: true };
99
+ }
100
+ /**
101
+ * Set confidence level on a spec entry without modifying conflict markers.
102
+ */
103
+ export function setConfidence(projectPath, file, lineStart, confidence) {
104
+ if (!VALID_CONFIDENCE_LEVELS.includes(confidence)) {
105
+ return { success: false, error: `Invalid confidence: ${confidence}` };
106
+ }
107
+ const specsDir = join(projectPath, '.workflow', 'specs');
108
+ const filePath = join(specsDir, file);
109
+ if (!existsSync(filePath)) {
110
+ return { success: false, error: `File not found: ${file}` };
111
+ }
112
+ let content;
113
+ try {
114
+ content = readFileSync(filePath, 'utf-8');
115
+ }
116
+ catch {
117
+ return { success: false, error: `Cannot read: ${file}` };
118
+ }
119
+ const lines = content.split('\n');
120
+ const targetLineIdx = lineStart - 1;
121
+ if (targetLineIdx < 0 || targetLineIdx >= lines.length) {
122
+ return { success: false, error: `Line ${lineStart} out of range` };
123
+ }
124
+ let line = lines[targetLineIdx];
125
+ if (!line.includes('<spec-entry')) {
126
+ return { success: false, error: `Line ${lineStart} is not a <spec-entry> tag` };
127
+ }
128
+ line = upsertAttribute(line, 'confidence', confidence);
129
+ lines[targetLineIdx] = line;
130
+ writeFileSync(filePath, lines.join('\n'), 'utf-8');
131
+ return { success: true };
132
+ }
133
+ /**
134
+ * List all entries with conflict markers or degraded confidence across all spec files.
135
+ */
136
+ export function listConflicts(projectPath) {
137
+ const specsDir = join(projectPath, '.workflow', 'specs');
138
+ if (!existsSync(specsDir))
139
+ return [];
140
+ let files;
141
+ try {
142
+ files = readdirSync(specsDir).filter(f => f.endsWith('.md'));
143
+ }
144
+ catch {
145
+ return [];
146
+ }
147
+ const conflicts = [];
148
+ for (const file of files) {
149
+ let raw;
150
+ try {
151
+ raw = readFileSync(join(specsDir, file), 'utf-8');
152
+ }
153
+ catch {
154
+ continue;
155
+ }
156
+ const body = stripFrontmatter(raw);
157
+ const { entries } = parseSpecEntries(body);
158
+ for (const entry of entries) {
159
+ if (entry.conflictMarker || entry.confidence === 'contested' || entry.confidence === 'low') {
160
+ conflicts.push({
161
+ file,
162
+ lineStart: entry.lineStart,
163
+ title: entry.title,
164
+ category: entry.category,
165
+ confidence: entry.confidence || 'medium',
166
+ conflictMarker: entry.conflictMarker,
167
+ conflictNote: entry.conflictNote,
168
+ date: entry.date,
169
+ });
170
+ }
171
+ }
172
+ }
173
+ return conflicts;
174
+ }
175
+ /**
176
+ * Bulk clear all conflict markers in a spec file.
177
+ */
178
+ export function clearAllConflicts(projectPath, file, newConfidence) {
179
+ const specsDir = join(projectPath, '.workflow', 'specs');
180
+ const filePath = join(specsDir, file);
181
+ if (!existsSync(filePath)) {
182
+ return { cleared: 0, errors: [`File not found: ${file}`] };
183
+ }
184
+ let content;
185
+ try {
186
+ content = readFileSync(filePath, 'utf-8');
187
+ }
188
+ catch {
189
+ return { cleared: 0, errors: [`Cannot read: ${file}`] };
190
+ }
191
+ const body = stripFrontmatter(content);
192
+ const { entries } = parseSpecEntries(body);
193
+ const marked = entries.filter(e => e.conflictMarker || e.confidence === 'contested');
194
+ if (marked.length === 0) {
195
+ return { cleared: 0, errors: [] };
196
+ }
197
+ let cleared = 0;
198
+ const errors = [];
199
+ for (const entry of marked.reverse()) {
200
+ const result = clearConflict(projectPath, file, entry.lineStart, newConfidence);
201
+ if (result.success) {
202
+ cleared++;
203
+ }
204
+ else {
205
+ errors.push(result.error || 'Unknown error');
206
+ }
207
+ }
208
+ return { cleared, errors };
209
+ }
210
+ // ============================================================================
211
+ // Attribute manipulation helpers
212
+ // ============================================================================
213
+ function upsertAttribute(tagLine, attr, value) {
214
+ const escaped = value.replace(/"/g, '&quot;');
215
+ const attrRe = new RegExp(`\\s${attr}="[^"]*"`, 'g');
216
+ if (attrRe.test(tagLine)) {
217
+ return tagLine.replace(attrRe, ` ${attr}="${escaped}"`);
218
+ }
219
+ const insertPoint = tagLine.indexOf('>');
220
+ if (insertPoint === -1)
221
+ return tagLine;
222
+ return tagLine.slice(0, insertPoint) + ` ${attr}="${escaped}"` + tagLine.slice(insertPoint);
223
+ }
224
+ function removeAttribute(tagLine, attr) {
225
+ return tagLine.replace(new RegExp(`\\s*${attr}="[^"]*"`, 'g'), '');
226
+ }
227
+ // stripFrontmatter imported from utils/frontmatter.ts
228
+ //# sourceMappingURL=spec-conflict-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-conflict-marker.js","sourceRoot":"","sources":["../../../src/tools/spec-conflict-marker.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@
4
4
  * Parses `<spec-entry>` closed-tag blocks from spec markdown files.
5
5
  * Supports dual-format: new `<spec-entry>` tags + legacy heading-based entries.
6
6
  */
7
+ export type ConfidenceLevel = 'high' | 'medium' | 'low' | 'contested';
8
+ export declare const VALID_CONFIDENCE_LEVELS: readonly ConfidenceLevel[];
7
9
  export interface SpecEntryParsed {
8
10
  category: string;
9
11
  keywords: string[];
@@ -12,6 +14,9 @@ export interface SpecEntryParsed {
12
14
  ref?: string;
13
15
  description?: string;
14
16
  domain?: string;
17
+ confidence?: ConfidenceLevel;
18
+ conflictMarker?: string;
19
+ conflictNote?: string;
15
20
  title: string;
16
21
  content: string;
17
22
  lineStart: number;
@@ -56,5 +61,5 @@ export declare function formatSpecEntries(entries: SpecEntryParsed[], keyword?:
56
61
  * Format a single entry for writing to a spec file.
57
62
  * Writes `category=` attribute as the primary classifier.
58
63
  */
59
- export declare function formatNewEntry(category: string, keywords: string[], date: string, title: string, content: string, source?: string, ref?: string, description?: string): string;
64
+ export declare function formatNewEntry(category: string, keywords: string[], date: string, title: string, content: string, source?: string, ref?: string, description?: string, confidence?: ConfidenceLevel, conflictMarker?: string, conflictNote?: string): string;
60
65
  //# sourceMappingURL=spec-entry-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-entry-parser.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-entry-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,gBAAgB,0EAA2E,CAAC;AAEzG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyB9D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA0D7D;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAoBlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKjG;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAQtF;AAqCD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAQR"}
1
+ {"version":3,"file":"spec-entry-parser.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-entry-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;AAEtE,eAAO,MAAM,uBAAuB,EAAE,SAAS,eAAe,EAAoD,CAAC;AAEnH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,gBAAgB,0EAA2E,CAAC;AAEzG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyB9D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAiE7D;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAoBlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKjG;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBtF;AAkDD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,eAAe,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAYR"}
@@ -4,6 +4,7 @@
4
4
  * Parses `<spec-entry>` closed-tag blocks from spec markdown files.
5
5
  * Supports dual-format: new `<spec-entry>` tags + legacy heading-based entries.
6
6
  */
7
+ export const VALID_CONFIDENCE_LEVELS = ['high', 'medium', 'low', 'contested'];
7
8
  // ============================================================================
8
9
  // Valid categories (shared with spec-loader)
9
10
  // ============================================================================
@@ -51,6 +52,9 @@ export function parseSpecEntries(content) {
51
52
  const title = attrs.title || (titleMatch ? titleMatch[1].trim() : '');
52
53
  // Validate and build entry
53
54
  const ref = attrs.ref || undefined;
55
+ const confidence = attrs.confidence;
56
+ const conflictMarker = attrs['conflict-marker'] || undefined;
57
+ const conflictNote = attrs['conflict-note'] || undefined;
54
58
  const entry = {
55
59
  category: attrs.category ?? '',
56
60
  keywords: attrs.keywords ? attrs.keywords.split(',').map(k => k.trim().toLowerCase()).filter(Boolean) : [],
@@ -59,6 +63,9 @@ export function parseSpecEntries(content) {
59
63
  ref,
60
64
  description: attrs.description || undefined,
61
65
  domain: attrs.domain || undefined,
66
+ confidence: confidence && VALID_CONFIDENCE_LEVELS.includes(confidence) ? confidence : undefined,
67
+ conflictMarker,
68
+ conflictNote,
62
69
  title,
63
70
  content: body.trim(),
64
71
  lineStart,
@@ -123,7 +130,17 @@ export function formatSpecEntries(entries, keyword) {
123
130
  : entries;
124
131
  if (filtered.length === 0)
125
132
  return '';
126
- return filtered.map(formatEntryClean).join('\n\n---\n\n');
133
+ const normal = filtered.filter(e => e.confidence !== 'contested');
134
+ const contested = filtered.filter(e => e.confidence === 'contested');
135
+ const parts = [];
136
+ if (normal.length > 0) {
137
+ parts.push(normal.map(formatEntryClean).join('\n\n---\n\n'));
138
+ }
139
+ if (contested.length > 0) {
140
+ parts.push(`> **${contested.length} contested entries** (pending audit review)\n\n` +
141
+ contested.map(formatEntryClean).join('\n\n---\n\n'));
142
+ }
143
+ return parts.join('\n\n---\n\n');
127
144
  }
128
145
  /**
129
146
  * Format a single parsed entry as clean markdown with metadata line.
@@ -131,8 +148,15 @@ export function formatSpecEntries(entries, keyword) {
131
148
  * Input content: `### Title\n\nBody`
132
149
  * Output: `### Title\n> category · kw1, kw2 · date · source\n\nBody`
133
150
  */
151
+ const CONFIDENCE_BADGES = {
152
+ contested: '[CONTESTED]',
153
+ low: '[LOW CONFIDENCE]',
154
+ };
134
155
  function formatEntryClean(e) {
135
156
  const meta = [];
157
+ const badge = e.confidence ? CONFIDENCE_BADGES[e.confidence] : undefined;
158
+ if (badge)
159
+ meta.push(badge);
136
160
  if (e.category)
137
161
  meta.push(e.category);
138
162
  if (e.keywords.length > 0)
@@ -141,10 +165,15 @@ function formatEntryClean(e) {
141
165
  meta.push(e.date);
142
166
  if (e.source)
143
167
  meta.push(e.source);
144
- if (meta.length === 0 && !e.ref)
168
+ if (meta.length === 0 && !e.ref && !e.conflictNote)
145
169
  return e.content;
146
170
  const metaLine = meta.length > 0 ? `> ${meta.join(' \u00b7 ')}` : '';
147
- // Build ref detail line: knowhow/AST-oauth-flow.md → knowhow-oauth-flow
171
+ let conflictLine = '';
172
+ if (e.conflictNote) {
173
+ conflictLine = `\n> Conflict: ${e.conflictNote}`;
174
+ if (e.conflictMarker)
175
+ conflictLine += ` (${e.conflictMarker})`;
176
+ }
148
177
  let refLine = '';
149
178
  if (e.ref) {
150
179
  const refStem = e.ref.replace(/^knowhow\//, '').replace(/\.md$/, '');
@@ -152,24 +181,27 @@ function formatEntryClean(e) {
152
181
  const refId = `knowhow-${refSlug}`;
153
182
  refLine = `\n\u2192 Detail: maestro wiki load ${refId}`;
154
183
  }
155
- // Inject after first ### heading line
156
184
  const idx = e.content.indexOf('\n');
157
185
  if (idx !== -1 && e.content.trimStart().startsWith('###')) {
158
- return e.content.slice(0, idx) + (metaLine ? '\n' + metaLine : '') + refLine + e.content.slice(idx);
186
+ return e.content.slice(0, idx) + (metaLine ? '\n' + metaLine : '') + conflictLine + refLine + e.content.slice(idx);
159
187
  }
160
- return (metaLine ? metaLine + '\n\n' : '') + e.content + refLine;
188
+ return (metaLine ? metaLine + '\n\n' : '') + e.content + conflictLine + refLine;
161
189
  }
162
190
  /**
163
191
  * Format a single entry for writing to a spec file.
164
192
  * Writes `category=` attribute as the primary classifier.
165
193
  */
166
- export function formatNewEntry(category, keywords, date, title, content, source, ref, description) {
194
+ export function formatNewEntry(category, keywords, date, title, content, source, ref, description, confidence, conflictMarker, conflictNote) {
195
+ const esc = (s) => s.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
167
196
  const kwStr = keywords.map(k => k.toLowerCase().trim()).filter(Boolean).join(',');
168
- const sourceAttr = source ? ` source="${source}"` : '';
169
- const refAttr = ref ? ` ref="${ref}"` : '';
170
- const descAttr = description ? ` description="${description}"` : '';
171
- const titleAttr = ` title="${title}"`;
172
- return `<spec-entry category="${category}" keywords="${kwStr}" date="${date}"${titleAttr}${descAttr}${sourceAttr}${refAttr}>\n\n### ${title}\n\n${content}\n\n</spec-entry>`;
197
+ const sourceAttr = source ? ` source="${esc(source)}"` : '';
198
+ const refAttr = ref ? ` ref="${esc(ref)}"` : '';
199
+ const descAttr = description ? ` description="${esc(description)}"` : '';
200
+ const titleAttr = ` title="${esc(title)}"`;
201
+ const confidenceAttr = confidence ? ` confidence="${confidence}"` : '';
202
+ const conflictMarkerAttr = conflictMarker ? ` conflict-marker="${conflictMarker}"` : '';
203
+ const conflictNoteAttr = conflictNote ? ` conflict-note="${conflictNote}"` : '';
204
+ return `<spec-entry category="${category}" keywords="${kwStr}" date="${date}"${titleAttr}${descAttr}${sourceAttr}${refAttr}${confidenceAttr}${conflictMarkerAttr}${conflictNoteAttr}>\n\n### ${title}\n\n${content}\n\n</spec-entry>`;
173
205
  }
174
206
  // ============================================================================
175
207
  // Internal helpers
@@ -197,7 +229,6 @@ function lineNumber(content, charIndex) {
197
229
  function parseLegacyEntries(content, consumed) {
198
230
  const lines = content.split('\n');
199
231
  const legacy = [];
200
- let currentOffset = 0;
201
232
  // Build a set of line numbers that are inside <spec-entry> blocks
202
233
  const consumedLines = new Set();
203
234
  for (const range of consumed) {
@@ -1 +1 @@
1
- {"version":3,"file":"spec-entry-parser.js","sourceRoot":"","sources":["../../../src/tools/spec-entry-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-entry-parser.js","sourceRoot":"","sources":["../../../src/tools/spec-entry-parser.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export interface IndexedEntry {
12
12
  content: string;
13
13
  title: string;
14
14
  id: string;
15
+ confidence?: string;
16
+ conflictMarker?: string;
15
17
  }
16
18
  /**
17
19
  * Build a keyword → entries inverted index from all spec files.
@@ -1 +1 @@
1
- {"version":3,"file":"spec-keyword-index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAsDlF;AAaD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAerG"}
1
+ {"version":3,"file":"spec-keyword-index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAwDlF;AAaD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAerG"}
@@ -9,6 +9,7 @@ import { readFileSync, existsSync, readdirSync } from 'node:fs';
9
9
  import { join } from 'node:path';
10
10
  import { parseSpecEntries } from './spec-entry-parser.js';
11
11
  import { CATEGORY_MAP } from './spec-loader.js';
12
+ import { stripFrontmatter } from '../utils/frontmatter.js';
12
13
  // ============================================================================
13
14
  // Public API
14
15
  // ============================================================================
@@ -48,6 +49,8 @@ export function buildKeywordIndex(projectPath) {
48
49
  content: entry.content,
49
50
  title: entry.title,
50
51
  id: `${file}:${entry.lineStart}`,
52
+ confidence: entry.confidence,
53
+ conflictMarker: entry.conflictMarker,
51
54
  };
52
55
  for (const kw of entry.keywords) {
53
56
  addToIndex(index, kw, indexed);
@@ -106,13 +109,5 @@ export function lookupKeywords(index, keywords) {
106
109
  // ============================================================================
107
110
  // Internal
108
111
  // ============================================================================
109
- function stripFrontmatter(raw) {
110
- const trimmed = raw.trimStart();
111
- if (!trimmed.startsWith('---'))
112
- return raw;
113
- const endIdx = trimmed.indexOf('\n---', 3);
114
- if (endIdx === -1)
115
- return raw;
116
- return trimmed.substring(endIdx + 4).trim();
117
- }
112
+ // stripFrontmatter imported from utils/frontmatter.ts
118
113
  //# sourceMappingURL=spec-keyword-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-keyword-index.js","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAwB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAehD,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;QAEtD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAiB;gBAC5B,IAAI;gBACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,YAAY;gBACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE;aACjC,CAAC;YAEF,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBAE/B,+CAA+C;gBAC/C,iDAAiD;gBACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BACxC,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;4BACnC,IAAI,GAAG,KAAK,EAAE;gCAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;wBAClD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAkC,EAAE,GAAW,EAAE,KAAmB;IACtF,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,IAAI,EAAE,CAAC;QACT,6CAA6C;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAkC,EAAE,OAAe;IAC/E,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAkC,EAAE,QAAkB;IACnF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"spec-keyword-index.js","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAE/F,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CASrD,CAAC;AAGF,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAcvD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAW1F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA0DrK;AAuXD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,CA0BvF"}
1
+ {"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAE/F,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CASrD,CAAC;AAGF,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAcvD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAW1F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA0DrK;AA+WD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,CA0BvF"}
@@ -10,6 +10,7 @@ import { join } from 'node:path';
10
10
  import { parseSpecEntries, formatSpecEntries } from './spec-entry-parser.js';
11
11
  import { paths } from '../config/paths.js';
12
12
  import { SPEC_SEED_DOCS, formatSeedFrontmatter, hasFrontmatter, renderSeedContent, } from './spec-seeds.js';
13
+ import { stripFrontmatter } from '../utils/frontmatter.js';
13
14
  // ============================================================================
14
15
  // Filename → Category mapping (single source of truth)
15
16
  // ============================================================================
@@ -375,15 +376,6 @@ function discoverKnowhowTools(workflowRoot, category) {
375
376
  tools.map(t => `### ${t.title} (tool)\n\n${t.summary}\n\n→ Load: maestro wiki load ${t.id}`).join('\n\n---\n\n');
376
377
  return { content, count: tools.length };
377
378
  }
378
- function stripFrontmatter(raw) {
379
- const trimmed = raw.trimStart();
380
- if (!trimmed.startsWith('---'))
381
- return raw;
382
- const endIdx = trimmed.indexOf('\n---', 3);
383
- if (endIdx === -1)
384
- return raw;
385
- return trimmed.substring(endIdx + 4).trim();
386
- }
387
379
  // ============================================================================
388
380
  // Auto-init seed files
389
381
  // ============================================================================
@@ -403,7 +395,6 @@ const autoInitChecked = new Set();
403
395
  function autoInitSeeds(specsDir) {
404
396
  if (autoInitChecked.has(specsDir))
405
397
  return;
406
- autoInitChecked.add(specsDir);
407
398
  // For project-local paths, only auto-init when .workflow/ already exists.
408
399
  // Global path (under ~/.maestro/) always qualifies.
409
400
  const isGlobal = specsDir === paths.specs;
@@ -434,9 +425,10 @@ function autoInitSeeds(specsDir) {
434
425
  writeFileSync(filePath, merged, 'utf-8');
435
426
  }
436
427
  }
428
+ autoInitChecked.add(specsDir);
437
429
  }
438
430
  catch {
439
- // Best-effort — don't block loading
431
+ // Best-effort — don't block loading; don't mark as checked so retry is possible
440
432
  }
441
433
  }
442
434
  /**