maxsimcli 1.0.9 → 1.0.10
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/dist/.tsbuildinfo +1 -1
- package/dist/assets/CHANGELOG.md +4 -0
- package/dist/cli.cjs +101 -32
- package/dist/cli.cjs.map +1 -1
- package/dist/install.cjs +1 -1
- package/package.json +3 -3
package/dist/cli.cjs
CHANGED
|
@@ -107,6 +107,7 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
107
107
|
exports.execGit = execGit;
|
|
108
108
|
exports.normalizePhaseName = normalizePhaseName;
|
|
109
109
|
exports.comparePhaseNum = comparePhaseNum;
|
|
110
|
+
exports.getPhasePattern = getPhasePattern;
|
|
110
111
|
exports.findPhaseInternal = findPhaseInternal;
|
|
111
112
|
exports.getArchivedPhaseDirs = getArchivedPhaseDirs;
|
|
112
113
|
exports.getRoadmapPhaseInternal = getRoadmapPhaseInternal;
|
|
@@ -329,6 +330,25 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
329
330
|
}
|
|
330
331
|
return (pa[3] ? parseFloat(pa[3]) : -1) - (pb[3] ? parseFloat(pb[3]) : -1);
|
|
331
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Returns the canonical regex for matching Phase heading lines in ROADMAP.md.
|
|
335
|
+
*
|
|
336
|
+
* General form (no escapedPhaseNum):
|
|
337
|
+
* Matches: ## Phase 03: Name Here
|
|
338
|
+
* Group 1: phase number string (e.g. "03", "3A", "2.1")
|
|
339
|
+
* Group 2: phase name string (e.g. "Name Here")
|
|
340
|
+
*
|
|
341
|
+
* Specific form (with escapedPhaseNum):
|
|
342
|
+
* Matches: ## Phase 03: Name Here
|
|
343
|
+
* Group 1: phase name string only
|
|
344
|
+
*
|
|
345
|
+
* @param escapedPhaseNum - regex-escaped phase number string to match a specific phase
|
|
346
|
+
* @param flags - regex flags (default: 'gi')
|
|
347
|
+
*/
|
|
348
|
+
function getPhasePattern(escapedPhaseNum, flags = "gi") {
|
|
349
|
+
if (escapedPhaseNum) return new RegExp(`#{2,4}\\s*Phase\\s+${escapedPhaseNum}:\\s*([^\\n]+)`, flags);
|
|
350
|
+
return new RegExp(`#{2,4}\\s*Phase\\s+(\\d+[A-Z]?(?:\\.\\d+)?)\\s*:\\s*([^\\n]+)`, flags);
|
|
351
|
+
}
|
|
332
352
|
function searchPhaseInDir(baseDir, relBase, normalized) {
|
|
333
353
|
try {
|
|
334
354
|
const match = node_fs_1$10.default.readdirSync(baseDir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name).sort((a, b) => comparePhaseNum(a, b)).find((d) => d.startsWith(normalized));
|
|
@@ -385,7 +405,9 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
385
405
|
return result;
|
|
386
406
|
}
|
|
387
407
|
}
|
|
388
|
-
} catch {
|
|
408
|
+
} catch (e) {
|
|
409
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
410
|
+
}
|
|
389
411
|
return null;
|
|
390
412
|
}
|
|
391
413
|
function getArchivedPhaseDirs(cwd) {
|
|
@@ -407,7 +429,9 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
407
429
|
fullPath: node_path_1$10.default.join(archivePath, dir)
|
|
408
430
|
});
|
|
409
431
|
}
|
|
410
|
-
} catch {
|
|
432
|
+
} catch (e) {
|
|
433
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
434
|
+
}
|
|
411
435
|
return results;
|
|
412
436
|
}
|
|
413
437
|
function getRoadmapPhaseInternal(cwd, phaseNum) {
|
|
@@ -416,8 +440,7 @@ var require_core = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
416
440
|
if (!node_fs_1$10.default.existsSync(roadmapPath)) return null;
|
|
417
441
|
try {
|
|
418
442
|
const content = node_fs_1$10.default.readFileSync(roadmapPath, "utf-8");
|
|
419
|
-
const
|
|
420
|
-
const phasePattern = new RegExp(`#{2,4}\\s*Phase\\s+${escapedPhase}:\\s*([^\\n]+)`, "i");
|
|
443
|
+
const phasePattern = getPhasePattern(phaseNum.toString().replace(/\./g, "\\."), "i");
|
|
421
444
|
const headerMatch = content.match(phasePattern);
|
|
422
445
|
if (!headerMatch) return null;
|
|
423
446
|
const phaseName = headerMatch[1].trim();
|
|
@@ -968,7 +991,9 @@ var require_state = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
968
991
|
let stateRaw = "";
|
|
969
992
|
try {
|
|
970
993
|
stateRaw = node_fs_1$7.default.readFileSync(node_path_1$7.default.join(planningDir, "STATE.md"), "utf-8");
|
|
971
|
-
} catch {
|
|
994
|
+
} catch (e) {
|
|
995
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
996
|
+
}
|
|
972
997
|
const configExists = node_fs_1$7.default.existsSync(node_path_1$7.default.join(planningDir, "config.json"));
|
|
973
998
|
const roadmapExists = node_fs_1$7.default.existsSync(node_path_1$7.default.join(planningDir, "ROADMAP.md"));
|
|
974
999
|
const stateExists = stateRaw.length > 0;
|
|
@@ -1446,7 +1471,7 @@ var require_roadmap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1446
1471
|
try {
|
|
1447
1472
|
const content = node_fs_1$6.default.readFileSync(roadmapPath, "utf-8");
|
|
1448
1473
|
const escapedPhase = phaseNum.replace(/\./g, "\\.");
|
|
1449
|
-
const phasePattern =
|
|
1474
|
+
const phasePattern = (0, core_js_1.getPhasePattern)(escapedPhase, "i");
|
|
1450
1475
|
const headerMatch = content.match(phasePattern);
|
|
1451
1476
|
if (!headerMatch) {
|
|
1452
1477
|
const checklistPattern = new RegExp(`-\\s*\\[[ x]\\]\\s*\\*\\*Phase\\s+${escapedPhase}:\\s*([^*]+)\\*\\*`, "i");
|
|
@@ -1501,7 +1526,7 @@ var require_roadmap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1501
1526
|
}
|
|
1502
1527
|
const content = node_fs_1$6.default.readFileSync(roadmapPath, "utf-8");
|
|
1503
1528
|
const phasesDir = node_path_1$6.default.join(cwd, ".planning", "phases");
|
|
1504
|
-
const phasePattern =
|
|
1529
|
+
const phasePattern = (0, core_js_1.getPhasePattern)();
|
|
1505
1530
|
const phases = [];
|
|
1506
1531
|
let match;
|
|
1507
1532
|
while ((match = phasePattern.exec(content)) !== null) {
|
|
@@ -1536,7 +1561,9 @@ var require_roadmap = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1536
1561
|
else if (hasContext) diskStatus = "discussed";
|
|
1537
1562
|
else diskStatus = "empty";
|
|
1538
1563
|
}
|
|
1539
|
-
} catch {
|
|
1564
|
+
} catch (e) {
|
|
1565
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
1566
|
+
}
|
|
1540
1567
|
const checkboxPattern = new RegExp(`-\\s*\\[(x| )\\]\\s*.*Phase\\s+${phaseNum.replace(".", "\\.")}`, "i");
|
|
1541
1568
|
const checkboxMatch = content.match(checkboxPattern);
|
|
1542
1569
|
const roadmapComplete = checkboxMatch ? checkboxMatch[1] === "x" : false;
|
|
@@ -1850,8 +1877,12 @@ var require_commands = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1850
1877
|
area: todoArea,
|
|
1851
1878
|
path: node_path_1$4.default.join(".planning", "todos", "pending", file)
|
|
1852
1879
|
});
|
|
1853
|
-
} catch {
|
|
1854
|
-
|
|
1880
|
+
} catch (e) {
|
|
1881
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
1882
|
+
}
|
|
1883
|
+
} catch (e) {
|
|
1884
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
1885
|
+
}
|
|
1855
1886
|
const result = {
|
|
1856
1887
|
count,
|
|
1857
1888
|
todos
|
|
@@ -1896,7 +1927,9 @@ var require_commands = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1896
1927
|
fullPath: node_path_1$4.default.join(phasesDir, dir),
|
|
1897
1928
|
milestone: null
|
|
1898
1929
|
});
|
|
1899
|
-
} catch {
|
|
1930
|
+
} catch (e) {
|
|
1931
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
1932
|
+
}
|
|
1900
1933
|
if (allPhaseDirs.length === 0) {
|
|
1901
1934
|
(0, core_js_1.output)({
|
|
1902
1935
|
phases: {},
|
|
@@ -1931,7 +1964,9 @@ var require_commands = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
1931
1964
|
});
|
|
1932
1965
|
const techStack = fm["tech-stack"];
|
|
1933
1966
|
if (techStack && techStack.added) techStack.added.forEach((t) => digest.tech_stack.add(typeof t === "string" ? t : t.name));
|
|
1934
|
-
} catch {
|
|
1967
|
+
} catch (e) {
|
|
1968
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
1969
|
+
}
|
|
1935
1970
|
}
|
|
1936
1971
|
const outputDigest = {
|
|
1937
1972
|
phases: {},
|
|
@@ -2162,7 +2197,9 @@ var require_commands = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2162
2197
|
status
|
|
2163
2198
|
});
|
|
2164
2199
|
}
|
|
2165
|
-
} catch {
|
|
2200
|
+
} catch (e) {
|
|
2201
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2202
|
+
}
|
|
2166
2203
|
const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;
|
|
2167
2204
|
if (format === "table") {
|
|
2168
2205
|
const barWidth = 10;
|
|
@@ -2662,7 +2699,7 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2662
2699
|
}
|
|
2663
2700
|
const roadmapContent = node_fs_1$3.default.readFileSync(roadmapPath, "utf-8");
|
|
2664
2701
|
const roadmapPhases = /* @__PURE__ */ new Set();
|
|
2665
|
-
const phasePattern =
|
|
2702
|
+
const phasePattern = (0, core_js_1.getPhasePattern)();
|
|
2666
2703
|
let m;
|
|
2667
2704
|
while ((m = phasePattern.exec(roadmapContent)) !== null) roadmapPhases.add(m[1]);
|
|
2668
2705
|
const diskPhases = /* @__PURE__ */ new Set();
|
|
@@ -2672,7 +2709,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2672
2709
|
const dm = dir.match(/^(\d+[A-Z]?(?:\.\d+)?)/i);
|
|
2673
2710
|
if (dm) diskPhases.add(dm[1]);
|
|
2674
2711
|
}
|
|
2675
|
-
} catch {
|
|
2712
|
+
} catch (e) {
|
|
2713
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2714
|
+
}
|
|
2676
2715
|
for (const p of roadmapPhases) if (!diskPhases.has(p) && !diskPhases.has((0, core_js_1.normalizePhaseName)(p))) warnings.push(`Phase ${p} in ROADMAP.md but no directory on disk`);
|
|
2677
2716
|
for (const p of diskPhases) {
|
|
2678
2717
|
const unpadded = String(parseInt(p, 10));
|
|
@@ -2695,7 +2734,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2695
2734
|
const summaryIdsSet = new Set(summaries.map((s) => s.replace("-SUMMARY.md", "")));
|
|
2696
2735
|
for (const sid of summaryIdsSet) if (!planIdsSet.has(sid)) warnings.push(`Summary ${sid}-SUMMARY.md in ${dir} has no matching PLAN.md`);
|
|
2697
2736
|
}
|
|
2698
|
-
} catch {
|
|
2737
|
+
} catch (e) {
|
|
2738
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2739
|
+
}
|
|
2699
2740
|
try {
|
|
2700
2741
|
const dirs = node_fs_1$3.default.readdirSync(phasesDir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
2701
2742
|
for (const dir of dirs) {
|
|
@@ -2705,7 +2746,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2705
2746
|
if (!(0, frontmatter_js_1.extractFrontmatter)(content).wave) warnings.push(`${dir}/${plan}: missing 'wave' in frontmatter`);
|
|
2706
2747
|
}
|
|
2707
2748
|
}
|
|
2708
|
-
} catch {
|
|
2749
|
+
} catch (e) {
|
|
2750
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2751
|
+
}
|
|
2709
2752
|
const passed = errors.length === 0;
|
|
2710
2753
|
const result = {
|
|
2711
2754
|
passed,
|
|
@@ -2770,7 +2813,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2770
2813
|
const dm = e.name.match(/^(\d+(?:\.\d+)?)/);
|
|
2771
2814
|
if (dm) diskPhases.add(dm[1]);
|
|
2772
2815
|
}
|
|
2773
|
-
} catch {
|
|
2816
|
+
} catch (e) {
|
|
2817
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2818
|
+
}
|
|
2774
2819
|
for (const ref of phaseRefs) {
|
|
2775
2820
|
const normalizedRef = String(parseInt(ref, 10)).padStart(2, "0");
|
|
2776
2821
|
if (!diskPhases.has(ref) && !diskPhases.has(normalizedRef) && !diskPhases.has(String(parseInt(ref, 10)))) {
|
|
@@ -2800,7 +2845,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2800
2845
|
try {
|
|
2801
2846
|
const entries = node_fs_1$3.default.readdirSync(phasesDir, { withFileTypes: true });
|
|
2802
2847
|
for (const e of entries) if (e.isDirectory() && !e.name.match(/^\d{2}(?:\.\d+)?-[\w-]+$/)) addIssue("warning", "W005", `Phase directory "${e.name}" doesn't follow NN-name format`, "Rename to match pattern (e.g., 01-setup)");
|
|
2803
|
-
} catch {
|
|
2848
|
+
} catch (e) {
|
|
2849
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2850
|
+
}
|
|
2804
2851
|
try {
|
|
2805
2852
|
const entries = node_fs_1$3.default.readdirSync(phasesDir, { withFileTypes: true });
|
|
2806
2853
|
for (const e of entries) {
|
|
@@ -2814,11 +2861,13 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2814
2861
|
if (!summaryBases.has(planBase)) addIssue("info", "I001", `${e.name}/${plan} has no SUMMARY.md`, "May be in progress");
|
|
2815
2862
|
}
|
|
2816
2863
|
}
|
|
2817
|
-
} catch {
|
|
2864
|
+
} catch (e) {
|
|
2865
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2866
|
+
}
|
|
2818
2867
|
if (node_fs_1$3.default.existsSync(roadmapPath)) {
|
|
2819
2868
|
const roadmapContent = node_fs_1$3.default.readFileSync(roadmapPath, "utf-8");
|
|
2820
2869
|
const roadmapPhases = /* @__PURE__ */ new Set();
|
|
2821
|
-
const phasePattern =
|
|
2870
|
+
const phasePattern = (0, core_js_1.getPhasePattern)();
|
|
2822
2871
|
let m;
|
|
2823
2872
|
while ((m = phasePattern.exec(roadmapContent)) !== null) roadmapPhases.add(m[1]);
|
|
2824
2873
|
const diskPhases = /* @__PURE__ */ new Set();
|
|
@@ -2828,7 +2877,9 @@ var require_verify = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
2828
2877
|
const dm = e.name.match(/^(\d+[A-Z]?(?:\.\d+)?)/i);
|
|
2829
2878
|
if (dm) diskPhases.add(dm[1]);
|
|
2830
2879
|
}
|
|
2831
|
-
} catch {
|
|
2880
|
+
} catch (e) {
|
|
2881
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
2882
|
+
}
|
|
2832
2883
|
for (const p of roadmapPhases) {
|
|
2833
2884
|
const padded = String(parseInt(p, 10)).padStart(2, "0");
|
|
2834
2885
|
if (!diskPhases.has(p) && !diskPhases.has(padded)) addIssue("warning", "W006", `Phase ${p} in ROADMAP.md but no directory on disk`, "Create phase directory or remove from roadmap");
|
|
@@ -3085,7 +3136,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3085
3136
|
try {
|
|
3086
3137
|
const match = node_fs_1$2.default.readdirSync(phasesDir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name).sort((a, b) => (0, core_js_1.comparePhaseNum)(a, b)).find((d) => d.startsWith(normalized));
|
|
3087
3138
|
if (match) phaseDir = node_path_1$2.default.join(phasesDir, match);
|
|
3088
|
-
} catch {
|
|
3139
|
+
} catch (e) {
|
|
3140
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3141
|
+
}
|
|
3089
3142
|
if (!phaseDir) {
|
|
3090
3143
|
(0, core_js_1.output)({
|
|
3091
3144
|
phase: normalized,
|
|
@@ -3147,7 +3200,7 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3147
3200
|
if (!node_fs_1$2.default.existsSync(roadmapPath)) (0, core_js_1.error)("ROADMAP.md not found");
|
|
3148
3201
|
const content = node_fs_1$2.default.readFileSync(roadmapPath, "utf-8");
|
|
3149
3202
|
const slug = (0, core_js_1.generateSlugInternal)(description);
|
|
3150
|
-
const phasePattern =
|
|
3203
|
+
const phasePattern = (0, core_js_1.getPhasePattern)();
|
|
3151
3204
|
let maxPhase = 0;
|
|
3152
3205
|
let m;
|
|
3153
3206
|
while ((m = phasePattern.exec(content)) !== null) {
|
|
@@ -3181,7 +3234,7 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3181
3234
|
const content = node_fs_1$2.default.readFileSync(roadmapPath, "utf-8");
|
|
3182
3235
|
const slug = (0, core_js_1.generateSlugInternal)(description);
|
|
3183
3236
|
const afterPhaseEscaped = (0, core_js_1.normalizePhaseName)(afterPhase).replace(/^0+/, "").replace(/\./g, "\\.");
|
|
3184
|
-
if (!
|
|
3237
|
+
if (!(0, core_js_1.getPhasePattern)(afterPhaseEscaped, "i").test(content)) (0, core_js_1.error)(`Phase ${afterPhase} not found in ROADMAP.md`);
|
|
3185
3238
|
const phasesDir = node_path_1$2.default.join(cwd, ".planning", "phases");
|
|
3186
3239
|
const normalizedBase = (0, core_js_1.normalizePhaseName)(afterPhase);
|
|
3187
3240
|
const existingDecimals = [];
|
|
@@ -3192,7 +3245,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3192
3245
|
const dm = dir.match(decimalPattern);
|
|
3193
3246
|
if (dm) existingDecimals.push(parseInt(dm[1], 10));
|
|
3194
3247
|
}
|
|
3195
|
-
} catch {
|
|
3248
|
+
} catch (e) {
|
|
3249
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3250
|
+
}
|
|
3196
3251
|
const decimalPhase = `${normalizedBase}.${existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1}`;
|
|
3197
3252
|
const dirName = `${decimalPhase}-${slug}`;
|
|
3198
3253
|
const dirPath = node_path_1$2.default.join(cwd, ".planning", "phases", dirName);
|
|
@@ -3228,7 +3283,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3228
3283
|
let targetDir = null;
|
|
3229
3284
|
try {
|
|
3230
3285
|
targetDir = node_fs_1$2.default.readdirSync(phasesDir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name).sort((a, b) => (0, core_js_1.comparePhaseNum)(a, b)).find((d) => d.startsWith(normalized + "-") || d === normalized) || null;
|
|
3231
|
-
} catch {
|
|
3286
|
+
} catch (e) {
|
|
3287
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3288
|
+
}
|
|
3232
3289
|
if (targetDir && !force) {
|
|
3233
3290
|
const targetPath = node_path_1$2.default.join(phasesDir, targetDir);
|
|
3234
3291
|
const summaries = node_fs_1$2.default.readdirSync(targetPath).filter((f) => f.endsWith("-SUMMARY.md") || f === "SUMMARY.md");
|
|
@@ -3277,7 +3334,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3277
3334
|
});
|
|
3278
3335
|
}
|
|
3279
3336
|
}
|
|
3280
|
-
} catch {
|
|
3337
|
+
} catch (e) {
|
|
3338
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3339
|
+
}
|
|
3281
3340
|
} else {
|
|
3282
3341
|
const removedInt = parseInt(normalized, 10);
|
|
3283
3342
|
try {
|
|
@@ -3323,7 +3382,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3323
3382
|
});
|
|
3324
3383
|
}
|
|
3325
3384
|
}
|
|
3326
|
-
} catch {
|
|
3385
|
+
} catch (e) {
|
|
3386
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3387
|
+
}
|
|
3327
3388
|
}
|
|
3328
3389
|
let roadmapContent = node_fs_1$2.default.readFileSync(roadmapPath, "utf-8");
|
|
3329
3390
|
const targetEscaped = targetPhase.replace(/\./g, "\\.");
|
|
@@ -3426,7 +3487,9 @@ var require_phase = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
3426
3487
|
}
|
|
3427
3488
|
}
|
|
3428
3489
|
}
|
|
3429
|
-
} catch {
|
|
3490
|
+
} catch (e) {
|
|
3491
|
+
if (process.env.MAXSIM_DEBUG) console.error(e);
|
|
3492
|
+
}
|
|
3430
3493
|
if (node_fs_1$2.default.existsSync(statePath)) {
|
|
3431
3494
|
let stateContent = node_fs_1$2.default.readFileSync(statePath, "utf-8");
|
|
3432
3495
|
stateContent = stateContent.replace(/(\*\*Current Phase:\*\*\s*).*/, `$1${nextPhaseNum || phaseNum}`);
|
|
@@ -4154,8 +4217,8 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4154
4217
|
* @maxsim/core — Shared utilities, constants, and type definitions
|
|
4155
4218
|
*/
|
|
4156
4219
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4157
|
-
exports.
|
|
4158
|
-
exports.cmdInitProgress = exports.cmdInitMapCodebase = exports.cmdInitMilestoneOp = exports.cmdInitTodos = exports.cmdInitPhaseOp = exports.cmdInitVerifyWork = exports.cmdInitResume = exports.cmdInitQuick = exports.cmdInitNewMilestone = exports.cmdInitNewProject = exports.cmdInitPlanPhase = exports.cmdInitExecutePhase = exports.cmdTemplateFill = exports.cmdTemplateSelect = exports.cmdPhaseComplete = exports.cmdPhaseRemove = exports.cmdPhaseInsert = exports.cmdPhaseAdd = exports.cmdPhasePlanIndex = exports.cmdFindPhase = exports.cmdPhaseNextDecimal = exports.cmdPhasesList = exports.cmdValidateHealth = exports.cmdValidateConsistency = exports.cmdVerifyKeyLinks = exports.cmdVerifyArtifacts = exports.cmdVerifyCommits = exports.cmdVerifyReferences = exports.cmdVerifyPhaseCompleteness = exports.cmdVerifyPlanStructure = exports.cmdVerifySummary = exports.cmdScaffold = exports.cmdTodoComplete = exports.cmdProgressRender = exports.cmdWebsearch = exports.cmdSummaryExtract = exports.cmdCommit = exports.cmdResolveModel = exports.cmdHistoryDigest = exports.cmdVerifyPathExists = exports.cmdListTodos = exports.cmdCurrentTimestamp = exports.cmdGenerateSlug = exports.cmdMilestoneComplete = exports.cmdRequirementsMarkComplete = exports.cmdRoadmapUpdatePlanProgress = void 0;
|
|
4220
|
+
exports.cmdRoadmapGetPhase = exports.cmdStateSnapshot = exports.cmdStateRecordSession = exports.cmdStateResolveBlocker = exports.cmdStateAddBlocker = exports.cmdStateAddDecision = exports.cmdStateUpdateProgress = exports.cmdStateRecordMetric = exports.cmdStateAdvancePlan = exports.cmdStateUpdate = exports.cmdStatePatch = exports.cmdStateGet = exports.cmdStateLoad = exports.stateReplaceField = exports.stateExtractField = exports.cmdConfigGet = exports.cmdConfigSet = exports.cmdConfigEnsureSection = exports.cmdFrontmatterValidate = exports.cmdFrontmatterMerge = exports.cmdFrontmatterSet = exports.cmdFrontmatterGet = exports.FRONTMATTER_SCHEMAS = exports.parseMustHavesBlock = exports.spliceFrontmatter = exports.reconstructFrontmatter = exports.extractFrontmatter = exports.getMilestoneInfo = exports.generateSlugInternal = exports.pathExistsInternal = exports.resolveModelInternal = exports.getRoadmapPhaseInternal = exports.getArchivedPhaseDirs = exports.findPhaseInternal = exports.getPhasePattern = exports.comparePhaseNum = exports.normalizePhaseName = exports.execGit = exports.isGitIgnored = exports.loadConfig = exports.safeReadFile = exports.error = exports.output = exports.MODEL_PROFILES = exports.PLANNING_CONFIG_DEFAULTS = exports.err = exports.ok = exports.phaseSlug = exports.phasePath = exports.phaseNumber = void 0;
|
|
4221
|
+
exports.cmdInitProgress = exports.cmdInitMapCodebase = exports.cmdInitMilestoneOp = exports.cmdInitTodos = exports.cmdInitPhaseOp = exports.cmdInitVerifyWork = exports.cmdInitResume = exports.cmdInitQuick = exports.cmdInitNewMilestone = exports.cmdInitNewProject = exports.cmdInitPlanPhase = exports.cmdInitExecutePhase = exports.cmdTemplateFill = exports.cmdTemplateSelect = exports.cmdPhaseComplete = exports.cmdPhaseRemove = exports.cmdPhaseInsert = exports.cmdPhaseAdd = exports.cmdPhasePlanIndex = exports.cmdFindPhase = exports.cmdPhaseNextDecimal = exports.cmdPhasesList = exports.cmdValidateHealth = exports.cmdValidateConsistency = exports.cmdVerifyKeyLinks = exports.cmdVerifyArtifacts = exports.cmdVerifyCommits = exports.cmdVerifyReferences = exports.cmdVerifyPhaseCompleteness = exports.cmdVerifyPlanStructure = exports.cmdVerifySummary = exports.cmdScaffold = exports.cmdTodoComplete = exports.cmdProgressRender = exports.cmdWebsearch = exports.cmdSummaryExtract = exports.cmdCommit = exports.cmdResolveModel = exports.cmdHistoryDigest = exports.cmdVerifyPathExists = exports.cmdListTodos = exports.cmdCurrentTimestamp = exports.cmdGenerateSlug = exports.cmdMilestoneComplete = exports.cmdRequirementsMarkComplete = exports.cmdRoadmapUpdatePlanProgress = exports.cmdRoadmapAnalyze = void 0;
|
|
4159
4222
|
var types_js_1 = require_types();
|
|
4160
4223
|
Object.defineProperty(exports, "phaseNumber", {
|
|
4161
4224
|
enumerable: true,
|
|
@@ -4248,6 +4311,12 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4248
4311
|
return core_js_1.comparePhaseNum;
|
|
4249
4312
|
}
|
|
4250
4313
|
});
|
|
4314
|
+
Object.defineProperty(exports, "getPhasePattern", {
|
|
4315
|
+
enumerable: true,
|
|
4316
|
+
get: function() {
|
|
4317
|
+
return core_js_1.getPhasePattern;
|
|
4318
|
+
}
|
|
4319
|
+
});
|
|
4251
4320
|
Object.defineProperty(exports, "findPhaseInternal", {
|
|
4252
4321
|
enumerable: true,
|
|
4253
4322
|
get: function() {
|