roadmapsmith 0.6.0 → 0.7.1
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/bin/cli.js +35 -3
- package/package.json +11 -3
- package/src/generator/index.js +563 -562
- package/src/model.js +1 -0
- package/src/renderer/professional.js +536 -476
- package/src/validator/index.js +347 -42
package/bin/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ const { readTextIfExists, writeText, printDryRunDiff } = require('../src/io');
|
|
|
9
9
|
const { renderRoadmapTemplate, renderAgentsTemplate } = require('../src/templates');
|
|
10
10
|
const { generateRoadmapDocument } = require('../src/generator');
|
|
11
11
|
const { parseRoadmap } = require('../src/parser');
|
|
12
|
-
const { buildValidationContext, validateTasks, auditValidation } = require('../src/validator');
|
|
12
|
+
const { buildValidationContext, validateTasks, auditValidation, CONFIDENCE_RANK, applyMinimumConfidence } = require('../src/validator');
|
|
13
13
|
const { applySync } = require('../src/sync');
|
|
14
14
|
|
|
15
15
|
function printHelp() {
|
|
@@ -18,7 +18,8 @@ function printHelp() {
|
|
|
18
18
|
' roadmapsmith init [--roadmap-file <path>] [--agents-file <path>] [--dry-run]',
|
|
19
19
|
' roadmapsmith generate [--project-root <path>] [--config <path>] [--roadmap-file <path>] [--dry-run] [--audit]',
|
|
20
20
|
' roadmapsmith sync [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--dry-run] [--audit]',
|
|
21
|
-
' roadmapsmith validate [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--task <id|text>] [--json]'
|
|
21
|
+
' roadmapsmith validate [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--task <id|text>] [--json]',
|
|
22
|
+
' roadmapsmith doctor [--roadmap-file <path>] [--project-root <path>] [--config <path>]'
|
|
22
23
|
].join('\n'));
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -152,6 +153,7 @@ async function run() {
|
|
|
152
153
|
const parsedRoadmap = parseRoadmap(content);
|
|
153
154
|
const validationContext = buildValidationContext(projectRoot, config, loadPlugins(projectRoot, config.plugins));
|
|
154
155
|
const results = validateTasks(parsedRoadmap.tasks, validationContext, config, validationContext.plugins);
|
|
156
|
+
applyMinimumConfidence(results, config.validation?.minimumConfidence);
|
|
155
157
|
const next = applySync(content, parsedRoadmap.tasks, results);
|
|
156
158
|
const dryRun = isEnabled(flags['dry-run']);
|
|
157
159
|
const writeResult = writeText(roadmapFile, next, { dryRun });
|
|
@@ -187,7 +189,6 @@ async function run() {
|
|
|
187
189
|
const validationContext = buildValidationContext(projectRoot, config, loadPlugins(projectRoot, config.plugins));
|
|
188
190
|
const results = validateTasks(tasks, validationContext, config, validationContext.plugins);
|
|
189
191
|
|
|
190
|
-
const CONFIDENCE_RANK = { low: 0, medium: 1, high: 2 };
|
|
191
192
|
const minRank = CONFIDENCE_RANK[config.validation && config.validation.minimumConfidence] ?? 0;
|
|
192
193
|
const visibleTasks = tasks.filter((task) => (CONFIDENCE_RANK[results[task.id].confidence] ?? 0) >= minRank);
|
|
193
194
|
|
|
@@ -207,6 +208,37 @@ async function run() {
|
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
209
210
|
|
|
211
|
+
if (command === 'doctor') {
|
|
212
|
+
const projectRoot = path.resolve(String(flags['project-root'] || process.cwd()));
|
|
213
|
+
let ok = true;
|
|
214
|
+
|
|
215
|
+
let config;
|
|
216
|
+
try {
|
|
217
|
+
config = loadConfig({ projectRoot, configPath: flags.config });
|
|
218
|
+
console.log('[ok] Config loaded without errors');
|
|
219
|
+
} catch (error) {
|
|
220
|
+
console.error(`[fail] Config error: ${error.message}`);
|
|
221
|
+
ok = false;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (config) {
|
|
225
|
+
const roadmapFile = resolveRoadmapFile(projectRoot, config, flags['roadmap-file']);
|
|
226
|
+
if (fs.existsSync(roadmapFile)) {
|
|
227
|
+
console.log(`[ok] ROADMAP file found: ${roadmapFile}`);
|
|
228
|
+
} else {
|
|
229
|
+
console.error(`[fail] ROADMAP file not found: ${roadmapFile}`);
|
|
230
|
+
ok = false;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (!ok) {
|
|
235
|
+
process.exitCode = 1;
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
console.log('doctor: all checks passed');
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
|
|
210
242
|
throw new Error(`Unknown command: ${command}`);
|
|
211
243
|
}
|
|
212
244
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "roadmapsmith",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"description": "Evidence-backed ROADMAP.md generator and sync tool for AI coding agents.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"roadmapsmith": "bin/cli.js"
|
|
@@ -23,7 +23,15 @@
|
|
|
23
23
|
"monorepo",
|
|
24
24
|
"claude-code",
|
|
25
25
|
"ai-agent",
|
|
26
|
-
"project-management"
|
|
26
|
+
"project-management",
|
|
27
|
+
"coding-agents",
|
|
28
|
+
"agent-skills",
|
|
29
|
+
"roadmap-generator",
|
|
30
|
+
"roadmap-sync",
|
|
31
|
+
"task-validation",
|
|
32
|
+
"developer-tools",
|
|
33
|
+
"markdown",
|
|
34
|
+
"agent-workflow"
|
|
27
35
|
],
|
|
28
36
|
"author": "PapiScholz",
|
|
29
37
|
"license": "MIT",
|