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.
- package/.agents/agents/role-design-author.md +5 -3
- package/.agents/skills/maestro/SKILL.md +8 -1
- package/.agents/skills/maestro-help/SKILL.md +39 -10
- package/.agents/skills/maestro-help/index/catalog.json +118 -53
- package/.agents/skills/maestro-help/phases/01-parse-intent.md +9 -6
- package/.agents/skills/maestro-help/phases/02-search-present.md +55 -15
- package/.agents/skills/maestro-help/phases/03-workflow-guide.md +35 -2
- package/.agents/skills/maestro-ralph/SKILL.md +9 -2
- package/.agents/skills/maestro-ralph-beta/SKILL.md +7 -2
- package/.agents/skills/maestro-ralph-execute/SKILL.md +1 -0
- package/.agents/skills/manage-harvest/SKILL.md +3 -0
- package/.agents/skills/manage-knowledge-audit/SKILL.md +29 -0
- package/.agents/skills/odyssey-debug/SKILL.md +7 -1
- package/.agents/skills/odyssey-improve/SKILL.md +7 -1
- package/.agents/skills/odyssey-planex/SKILL.md +11 -1
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +7 -1
- package/.agents/skills/odyssey-ui/SKILL.md +7 -1
- package/.agents/skills/quality-review/SKILL.md +3 -0
- package/.agy/agents/role-design-author.md +5 -3
- package/.agy/skills/maestro/SKILL.md +8 -1
- package/.agy/skills/maestro-help/SKILL.md +39 -10
- package/.agy/skills/maestro-help/index/catalog.json +118 -53
- package/.agy/skills/maestro-help/phases/01-parse-intent.md +9 -6
- package/.agy/skills/maestro-help/phases/02-search-present.md +55 -15
- package/.agy/skills/maestro-help/phases/03-workflow-guide.md +35 -2
- package/.agy/skills/maestro-ralph/SKILL.md +9 -2
- package/.agy/skills/maestro-ralph-beta/SKILL.md +7 -2
- package/.agy/skills/maestro-ralph-execute/SKILL.md +1 -0
- package/.agy/skills/manage-harvest/SKILL.md +3 -0
- package/.agy/skills/manage-knowledge-audit/SKILL.md +29 -0
- package/.agy/skills/odyssey-debug/SKILL.md +7 -1
- package/.agy/skills/odyssey-improve/SKILL.md +7 -1
- package/.agy/skills/odyssey-planex/SKILL.md +11 -1
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +7 -1
- package/.agy/skills/odyssey-ui/SKILL.md +7 -1
- package/.agy/skills/quality-review/SKILL.md +3 -0
- package/.claude/agents/role-design-author.md +5 -3
- package/.claude/commands/maestro-ralph-beta.md +7 -2
- package/.claude/commands/maestro-ralph-execute.md +1 -0
- package/.claude/commands/maestro-ralph.md +9 -2
- package/.claude/commands/maestro.md +8 -1
- package/.claude/commands/manage-harvest.md +3 -0
- package/.claude/commands/manage-knowledge-audit.md +29 -0
- package/.claude/commands/odyssey-debug.md +7 -1
- package/.claude/commands/odyssey-improve.md +7 -1
- package/.claude/commands/odyssey-planex.md +11 -1
- package/.claude/commands/odyssey-review-test-fix.md +7 -1
- package/.claude/commands/odyssey-ui.md +7 -1
- package/.claude/commands/quality-review.md +3 -0
- package/.claude/skills/maestro-help/SKILL.md +39 -10
- package/.claude/skills/maestro-help/index/catalog.json +118 -53
- package/.claude/skills/maestro-help/phases/01-parse-intent.md +9 -6
- package/.claude/skills/maestro-help/phases/02-search-present.md +55 -15
- package/.claude/skills/maestro-help/phases/03-workflow-guide.md +35 -2
- package/.codex/skills/manage-harvest/SKILL.md +2 -1
- package/.codex/skills/quality-review/SKILL.md +4 -2
- package/README.md +196 -87
- package/README.zh-CN.md +198 -79
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +9 -4
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +8 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +22 -42
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +1 -4
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +28 -42
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +22 -22
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +12 -12
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +10 -3
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/src/commands/install-backend.d.ts +1 -1
- package/dashboard/dist-server/src/commands/install-backend.js +1 -1
- package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
- package/dashboard/dist-server/src/core/component-defs.d.ts +1 -0
- package/dashboard/dist-server/src/core/component-defs.js +68 -19
- package/dashboard/dist-server/src/core/component-defs.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/db/types.d.ts +2 -1
- package/dashboard/dist-server/src/graph/kg/db/types.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.d.ts +22 -0
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js +64 -0
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -0
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js +12 -98
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dashboard/dist-server/src/hooks/keyword-spec-injector.js +5 -2
- package/dashboard/dist-server/src/hooks/keyword-spec-injector.js.map +1 -1
- package/dashboard/dist-server/src/hooks/wiki-role-loader.js +2 -1
- package/dashboard/dist-server/src/hooks/wiki-role-loader.js.map +1 -1
- package/dashboard/dist-server/src/tools/domain-loader.js +22 -16
- package/dashboard/dist-server/src/tools/domain-loader.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-entry-parser.d.ts +6 -1
- package/dashboard/dist-server/src/tools/spec-entry-parser.js +44 -13
- package/dashboard/dist-server/src/tools/spec-entry-parser.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-keyword-index.d.ts +2 -0
- package/dashboard/dist-server/src/tools/spec-keyword-index.js +4 -9
- package/dashboard/dist-server/src/tools/spec-keyword-index.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-loader.js +3 -11
- package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +14 -0
- package/dashboard/dist-server/src/utils/frontmatter.d.ts +15 -0
- package/dashboard/dist-server/src/utils/frontmatter.js +76 -0
- package/dashboard/dist-server/src/utils/frontmatter.js.map +1 -0
- package/dist/src/commands/domain.d.ts.map +1 -1
- package/dist/src/commands/domain.js +8 -2
- package/dist/src/commands/domain.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +1 -1
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +6 -2
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/knowhow.d.ts.map +1 -1
- package/dist/src/commands/knowhow.js +3 -26
- package/dist/src/commands/knowhow.js.map +1 -1
- package/dist/src/commands/search.d.ts +1 -1
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.js +43 -41
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +106 -6
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/uninstall.d.ts.map +1 -1
- package/dist/src/commands/uninstall.js +12 -3
- package/dist/src/commands/uninstall.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +2 -0
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/core/component-defs.d.ts +1 -0
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +68 -19
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/core/extension-loader.d.ts.map +1 -1
- package/dist/src/core/extension-loader.js +4 -0
- package/dist/src/core/extension-loader.js.map +1 -1
- package/dist/src/core/install-executor.d.ts.map +1 -1
- package/dist/src/core/install-executor.js +2 -0
- package/dist/src/core/install-executor.js.map +1 -1
- package/dist/src/graph/analyzers/fs-analyzer.js +2 -2
- package/dist/src/graph/analyzers/fs-analyzer.js.map +1 -1
- package/dist/src/graph/kg/db/node-kind-registry.d.ts +18 -0
- package/dist/src/graph/kg/db/node-kind-registry.d.ts.map +1 -0
- package/dist/src/graph/kg/db/node-kind-registry.js +42 -0
- package/dist/src/graph/kg/db/node-kind-registry.js.map +1 -0
- package/dist/src/graph/kg/db/types.d.ts +2 -1
- package/dist/src/graph/kg/db/types.d.ts.map +1 -1
- package/dist/src/graph/kg/db/types.js.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts +23 -0
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js +64 -0
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -0
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.js +12 -98
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.js +5 -2
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -1
- package/dist/src/hooks/wiki-role-loader.d.ts.map +1 -1
- package/dist/src/hooks/wiki-role-loader.js +2 -1
- package/dist/src/hooks/wiki-role-loader.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/domain-loader.d.ts.map +1 -1
- package/dist/src/tools/domain-loader.js +22 -16
- package/dist/src/tools/domain-loader.js.map +1 -1
- package/dist/src/tools/spec-conflict-marker.d.ts +55 -0
- package/dist/src/tools/spec-conflict-marker.d.ts.map +1 -0
- package/dist/src/tools/spec-conflict-marker.js +228 -0
- package/dist/src/tools/spec-conflict-marker.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +6 -1
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
- package/dist/src/tools/spec-entry-parser.js +44 -13
- package/dist/src/tools/spec-entry-parser.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +2 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -1
- package/dist/src/tools/spec-keyword-index.js +4 -9
- package/dist/src/tools/spec-keyword-index.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +3 -11
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/spec-writer.d.ts.map +1 -1
- package/dist/src/tools/spec-writer.js +2 -6
- package/dist/src/tools/spec-writer.js.map +1 -1
- package/dist/src/tools/store-knowhow.d.ts.map +1 -1
- package/dist/src/tools/store-knowhow.js +6 -52
- package/dist/src/tools/store-knowhow.js.map +1 -1
- package/dist/src/tui/install-ui/ComponentGrid.d.ts +0 -4
- package/dist/src/tui/install-ui/ComponentGrid.d.ts.map +1 -1
- package/dist/src/tui/install-ui/ComponentGrid.js +57 -31
- package/dist/src/tui/install-ui/ComponentGrid.js.map +1 -1
- package/dist/src/tui/install-ui/GroupedHub.js +1 -1
- package/dist/src/tui/install-ui/GroupedHub.js.map +1 -1
- package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -1
- package/dist/src/tui/install-ui/useInstallFlowState.js +3 -3
- package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -1
- package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -1
- package/dist/src/tui/uninstall-ui/UninstallFlow.js +3 -1
- package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -1
- package/dist/src/types/index.d.ts +14 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/frontmatter.d.ts +16 -0
- package/dist/src/utils/frontmatter.d.ts.map +1 -0
- package/dist/src/utils/frontmatter.js +76 -0
- package/dist/src/utils/frontmatter.js.map +1 -0
- package/dist/src/utils/migration-registry.d.ts.map +1 -1
- package/dist/src/utils/migration-registry.js +14 -1
- package/dist/src/utils/migration-registry.js.map +1 -1
- package/package.json +2 -2
- package/workflows/claude-instructions.md +48 -45
- 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, '"');
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
|
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
|
-
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-keyword-index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
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
|
-
|
|
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;
|
|
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;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiB3D,+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;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,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,sDAAsD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
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
|
/**
|