maxsimcli 3.12.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/index.d.ts +0 -11
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +4 -40
- package/dist/adapters/index.js.map +1 -1
- package/dist/assets/CHANGELOG.md +17 -0
- package/dist/assets/dashboard/client/assets/{index-wtQDvXzr.js → index-C_eAetZJ.js} +60 -60
- package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +32 -0
- package/dist/assets/dashboard/client/index.html +2 -2
- package/dist/assets/dashboard/server.js +467 -271
- package/dist/assets/templates/agents/AGENTS.md +13 -1
- package/dist/assets/templates/agents/maxsim-debugger.md +2 -2
- package/dist/assets/templates/agents/maxsim-executor.md +5 -5
- package/dist/assets/templates/agents/maxsim-phase-researcher.md +2 -2
- package/dist/assets/templates/agents/maxsim-plan-checker.md +2 -2
- package/dist/assets/templates/agents/maxsim-planner.md +3 -3
- package/dist/assets/templates/commands/maxsim/add-todo.md +15 -5
- package/dist/assets/templates/commands/maxsim/discuss-phase.md +1 -0
- package/dist/assets/templates/commands/maxsim/init-existing.md +4 -0
- package/dist/assets/templates/commands/maxsim/new-project.md +4 -0
- package/dist/assets/templates/references/thinking-partner.md +41 -0
- package/dist/assets/templates/skills/batch-worktree/SKILL.md +137 -0
- package/dist/assets/templates/skills/brainstorming/SKILL.md +159 -0
- package/dist/assets/templates/skills/roadmap-writing/SKILL.md +198 -0
- package/dist/assets/templates/skills/sdd/SKILL.md +175 -0
- package/dist/assets/templates/skills/simplify/SKILL.md +48 -0
- package/dist/assets/templates/skills/using-maxsim/SKILL.md +6 -1
- package/dist/assets/templates/templates/acceptance-criteria.md +10 -0
- package/dist/assets/templates/templates/decisions.md +10 -0
- package/dist/assets/templates/templates/no-gos.md +9 -0
- package/dist/assets/templates/workflows/add-todo.md +89 -0
- package/dist/assets/templates/workflows/discuss-phase.md +85 -1
- package/dist/assets/templates/workflows/execute-phase.md +22 -2
- package/dist/assets/templates/workflows/execute-plan.md +166 -0
- package/dist/assets/templates/workflows/init-existing.md +116 -0
- package/dist/assets/templates/workflows/new-project.md +105 -1
- package/dist/assets/templates/workflows/plan-phase.md +3 -3
- package/dist/assets/templates/workflows/quick.md +2 -2
- package/dist/cli.cjs +1264 -882
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +97 -74
- package/dist/cli.js.map +1 -1
- package/dist/core/artefakte.d.ts +12 -0
- package/dist/core/artefakte.d.ts.map +1 -0
- package/dist/core/artefakte.js +136 -0
- package/dist/core/artefakte.js.map +1 -0
- package/dist/core/commands.d.ts +13 -13
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +44 -57
- package/dist/core/commands.js.map +1 -1
- package/dist/core/config.d.ts +4 -3
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +14 -18
- package/dist/core/config.js.map +1 -1
- package/dist/core/context-loader.d.ts +20 -0
- package/dist/core/context-loader.d.ts.map +1 -0
- package/dist/core/context-loader.js +154 -0
- package/dist/core/context-loader.js.map +1 -0
- package/dist/core/core.d.ts +8 -2
- package/dist/core/core.d.ts.map +1 -1
- package/dist/core/core.js +47 -11
- package/dist/core/core.js.map +1 -1
- package/dist/core/dashboard-launcher.d.ts +1 -1
- package/dist/core/dashboard-launcher.d.ts.map +1 -1
- package/dist/core/dashboard-launcher.js +18 -15
- package/dist/core/dashboard-launcher.js.map +1 -1
- package/dist/core/frontmatter.d.ts +5 -5
- package/dist/core/frontmatter.d.ts.map +1 -1
- package/dist/core/frontmatter.js +21 -26
- package/dist/core/frontmatter.js.map +1 -1
- package/dist/core/index.d.ts +8 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +23 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +14 -14
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +93 -154
- package/dist/core/init.js.map +1 -1
- package/dist/core/milestone.d.ts +3 -3
- package/dist/core/milestone.d.ts.map +1 -1
- package/dist/core/milestone.js +9 -9
- package/dist/core/milestone.js.map +1 -1
- package/dist/core/phase.d.ts +9 -9
- package/dist/core/phase.d.ts.map +1 -1
- package/dist/core/phase.js +64 -68
- package/dist/core/phase.js.map +1 -1
- package/dist/core/roadmap.d.ts +4 -3
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/roadmap.js +46 -109
- package/dist/core/roadmap.js.map +1 -1
- package/dist/core/skills.d.ts +19 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +145 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/start.d.ts +15 -0
- package/dist/core/start.d.ts.map +1 -0
- package/dist/core/start.js +80 -0
- package/dist/core/start.js.map +1 -0
- package/dist/core/state.d.ts +13 -13
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +119 -126
- package/dist/core/state.js.map +1 -1
- package/dist/core/template.d.ts +3 -3
- package/dist/core/template.d.ts.map +1 -1
- package/dist/core/template.js +12 -14
- package/dist/core/template.js.map +1 -1
- package/dist/core/types.d.ts +14 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/verify.d.ts +10 -9
- package/dist/core/verify.d.ts.map +1 -1
- package/dist/core/verify.js +38 -48
- package/dist/core/verify.js.map +1 -1
- package/dist/core-TFSlUjV1.cjs +4312 -0
- package/dist/core-TFSlUjV1.cjs.map +1 -0
- package/dist/install/adapters.d.ts +2 -11
- package/dist/install/adapters.d.ts.map +1 -1
- package/dist/install/adapters.js +16 -154
- package/dist/install/adapters.js.map +1 -1
- package/dist/install/copy.d.ts +1 -10
- package/dist/install/copy.d.ts.map +1 -1
- package/dist/install/copy.js +5 -125
- package/dist/install/copy.js.map +1 -1
- package/dist/install/hooks.d.ts +4 -5
- package/dist/install/hooks.d.ts.map +1 -1
- package/dist/install/hooks.js +46 -71
- package/dist/install/hooks.js.map +1 -1
- package/dist/install/index.js +163 -226
- package/dist/install/index.js.map +1 -1
- package/dist/install/manifest.d.ts +5 -2
- package/dist/install/manifest.d.ts.map +1 -1
- package/dist/install/manifest.js +20 -26
- package/dist/install/manifest.js.map +1 -1
- package/dist/install/patches.d.ts +1 -2
- package/dist/install/patches.d.ts.map +1 -1
- package/dist/install/patches.js +4 -16
- package/dist/install/patches.js.map +1 -1
- package/dist/install/shared.d.ts +24 -18
- package/dist/install/shared.d.ts.map +1 -1
- package/dist/install/shared.js +65 -35
- package/dist/install/shared.js.map +1 -1
- package/dist/install/uninstall.d.ts +2 -3
- package/dist/install/uninstall.d.ts.map +1 -1
- package/dist/install/uninstall.js +24 -82
- package/dist/install/uninstall.js.map +1 -1
- package/dist/install.cjs +321 -1230
- package/dist/install.cjs.map +1 -1
- package/dist/mcp-server.cjs +38 -14
- package/dist/mcp-server.cjs.map +1 -1
- package/dist/skills-BOSxYUzf.cjs +6812 -0
- package/dist/skills-BOSxYUzf.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/adapters/codex.d.ts +0 -19
- package/dist/adapters/codex.d.ts.map +0 -1
- package/dist/adapters/codex.js +0 -94
- package/dist/adapters/codex.js.map +0 -1
- package/dist/adapters/gemini.d.ts +0 -19
- package/dist/adapters/gemini.d.ts.map +0 -1
- package/dist/adapters/gemini.js +0 -96
- package/dist/adapters/gemini.js.map +0 -1
- package/dist/adapters/opencode.d.ts +0 -17
- package/dist/adapters/opencode.d.ts.map +0 -1
- package/dist/adapters/opencode.js +0 -111
- package/dist/adapters/opencode.js.map +0 -1
- package/dist/adapters/transforms/content.d.ts +0 -39
- package/dist/adapters/transforms/content.d.ts.map +0 -1
- package/dist/adapters/transforms/content.js +0 -125
- package/dist/adapters/transforms/content.js.map +0 -1
- package/dist/adapters/transforms/frontmatter.d.ts +0 -42
- package/dist/adapters/transforms/frontmatter.d.ts.map +0 -1
- package/dist/adapters/transforms/frontmatter.js +0 -204
- package/dist/adapters/transforms/frontmatter.js.map +0 -1
- package/dist/adapters/transforms/tool-maps.d.ts +0 -20
- package/dist/adapters/transforms/tool-maps.d.ts.map +0 -1
- package/dist/adapters/transforms/tool-maps.js +0 -64
- package/dist/adapters/transforms/tool-maps.js.map +0 -1
- package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +0 -32
package/dist/mcp-server.cjs
CHANGED
|
@@ -4313,9 +4313,15 @@ function listSubDirs(dir, sortByPhase = false) {
|
|
|
4313
4313
|
const dirs = node_fs.default.readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
4314
4314
|
return sortByPhase ? dirs.sort((a, b) => comparePhaseNum(a, b)) : dirs;
|
|
4315
4315
|
}
|
|
4316
|
-
/**
|
|
4317
|
-
function
|
|
4318
|
-
|
|
4316
|
+
/** Extract a human-readable message from an unknown thrown value. */
|
|
4317
|
+
function errorMsg(e) {
|
|
4318
|
+
return e instanceof Error ? e.message : String(e);
|
|
4319
|
+
}
|
|
4320
|
+
/** Log only when MAXSIM_DEBUG is set. Accepts an optional context label. */
|
|
4321
|
+
function debugLog(contextOrError, error) {
|
|
4322
|
+
if (!process.env.MAXSIM_DEBUG) return;
|
|
4323
|
+
if (error !== void 0) console.error(`[maxsim:${contextOrError}]`, error);
|
|
4324
|
+
else console.error(contextOrError);
|
|
4319
4325
|
}
|
|
4320
4326
|
/** Escape a phase number for use in regex. */
|
|
4321
4327
|
function escapePhaseNum(phase) {
|
|
@@ -4392,7 +4398,12 @@ function searchPhaseInDir(baseDir, relBase, normalized) {
|
|
|
4392
4398
|
has_context: hasContext,
|
|
4393
4399
|
has_verification: hasVerification
|
|
4394
4400
|
};
|
|
4395
|
-
} catch {
|
|
4401
|
+
} catch (e) {
|
|
4402
|
+
debugLog("search-phase-in-dir-failed", {
|
|
4403
|
+
dir: baseDir,
|
|
4404
|
+
phase: normalized,
|
|
4405
|
+
error: errorMsg(e)
|
|
4406
|
+
});
|
|
4396
4407
|
return null;
|
|
4397
4408
|
}
|
|
4398
4409
|
}
|
|
@@ -4421,7 +4432,7 @@ function findPhaseInternal(cwd, phase) {
|
|
|
4421
4432
|
}
|
|
4422
4433
|
}
|
|
4423
4434
|
} catch (e) {
|
|
4424
|
-
debugLog(e);
|
|
4435
|
+
debugLog("find-phase-milestone-search-failed", e);
|
|
4425
4436
|
}
|
|
4426
4437
|
return null;
|
|
4427
4438
|
}
|
|
@@ -4444,7 +4455,7 @@ function getArchivedPhaseDirs(cwd) {
|
|
|
4444
4455
|
});
|
|
4445
4456
|
}
|
|
4446
4457
|
} catch (e) {
|
|
4447
|
-
debugLog(e);
|
|
4458
|
+
debugLog("get-archived-phase-dirs-failed", e);
|
|
4448
4459
|
}
|
|
4449
4460
|
return results;
|
|
4450
4461
|
}
|
|
@@ -11178,7 +11189,7 @@ function phaseInsertCore(cwd, afterPhase, description, options) {
|
|
|
11178
11189
|
if (dm) existingDecimals.push(parseInt(dm[1], 10));
|
|
11179
11190
|
}
|
|
11180
11191
|
} catch (e) {
|
|
11181
|
-
debugLog(e);
|
|
11192
|
+
debugLog("phase-insert-decimal-scan-failed", e);
|
|
11182
11193
|
}
|
|
11183
11194
|
const decimalPhase = `${normalizedBase}.${existingDecimals.length === 0 ? 1 : Math.max(...existingDecimals) + 1}`;
|
|
11184
11195
|
const dirName = `${decimalPhase}-${slug}`;
|
|
@@ -11224,7 +11235,9 @@ function phaseCompleteCore(cwd, phaseNum) {
|
|
|
11224
11235
|
roadmapContent = roadmapContent.replace(tablePattern, `$1 Complete $2 ${today} $3`);
|
|
11225
11236
|
const planCountPattern = new RegExp(`(#{2,4}\\s*Phase\\s+${phaseEscaped}[\\s\\S]*?\\*\\*Plans:\\*\\*\\s*)[^\\n]+`, "i");
|
|
11226
11237
|
roadmapContent = roadmapContent.replace(planCountPattern, `$1${summaryCount}/${planCount} plans complete`);
|
|
11238
|
+
debugLog("phase-complete-write", `writing ROADMAP.md for phase ${phaseNum}`);
|
|
11227
11239
|
node_fs.default.writeFileSync(rmPath, roadmapContent, "utf-8");
|
|
11240
|
+
debugLog("phase-complete-write", `ROADMAP.md updated for phase ${phaseNum}`);
|
|
11228
11241
|
const reqPath = planningPath(cwd, "REQUIREMENTS.md");
|
|
11229
11242
|
if (node_fs.default.existsSync(reqPath)) {
|
|
11230
11243
|
const reqMatch = roadmapContent.match(new RegExp(`Phase\\s+${escapePhaseNum(phaseNum)}[\\s\\S]*?\\*\\*Requirements:\\*\\*\\s*([^\\n]+)`, "i"));
|
|
@@ -11235,7 +11248,9 @@ function phaseCompleteCore(cwd, phaseNum) {
|
|
|
11235
11248
|
reqContent = reqContent.replace(new RegExp(`(-\\s*\\[)[ ](\\]\\s*\\*\\*${reqId}\\*\\*)`, "gi"), "$1x$2");
|
|
11236
11249
|
reqContent = reqContent.replace(new RegExp(`(\\|\\s*${reqId}\\s*\\|[^|]+\\|)\\s*Pending\\s*(\\|)`, "gi"), "$1 Complete $2");
|
|
11237
11250
|
}
|
|
11251
|
+
debugLog("phase-complete-write", `writing REQUIREMENTS.md for phase ${phaseNum}`);
|
|
11238
11252
|
node_fs.default.writeFileSync(reqPath, reqContent, "utf-8");
|
|
11253
|
+
debugLog("phase-complete-write", `REQUIREMENTS.md updated for phase ${phaseNum}`);
|
|
11239
11254
|
requirementsUpdated = true;
|
|
11240
11255
|
}
|
|
11241
11256
|
}
|
|
@@ -11257,7 +11272,7 @@ function phaseCompleteCore(cwd, phaseNum) {
|
|
|
11257
11272
|
}
|
|
11258
11273
|
}
|
|
11259
11274
|
} catch (e) {
|
|
11260
|
-
debugLog(e);
|
|
11275
|
+
debugLog("phase-complete-next-phase-scan-failed", e);
|
|
11261
11276
|
}
|
|
11262
11277
|
if (node_fs.default.existsSync(stPath)) {
|
|
11263
11278
|
let stateContent = node_fs.default.readFileSync(stPath, "utf-8");
|
|
@@ -11267,7 +11282,9 @@ function phaseCompleteCore(cwd, phaseNum) {
|
|
|
11267
11282
|
stateContent = stateContent.replace(/(\*\*Current Plan:\*\*\s*).*/, `$1Not started`);
|
|
11268
11283
|
stateContent = stateContent.replace(/(\*\*Last Activity:\*\*\s*).*/, `$1${today}`);
|
|
11269
11284
|
stateContent = stateContent.replace(/(\*\*Last Activity Description:\*\*\s*).*/, `$1Phase ${phaseNum} complete${nextPhaseNum ? `, transitioned to Phase ${nextPhaseNum}` : ""}`);
|
|
11285
|
+
debugLog("phase-complete-write", `writing STATE.md for phase ${phaseNum}`);
|
|
11270
11286
|
node_fs.default.writeFileSync(stPath, stateContent, "utf-8");
|
|
11287
|
+
debugLog("phase-complete-write", `STATE.md updated for phase ${phaseNum}`);
|
|
11271
11288
|
}
|
|
11272
11289
|
return {
|
|
11273
11290
|
completed_phase: phaseNum,
|
|
@@ -11611,15 +11628,22 @@ function escapeStringRegexp(string) {
|
|
|
11611
11628
|
* Ported from maxsim/bin/lib/state.cjs
|
|
11612
11629
|
*/
|
|
11613
11630
|
function stateExtractField(content, fieldName) {
|
|
11614
|
-
const
|
|
11615
|
-
const
|
|
11616
|
-
|
|
11631
|
+
const escaped = escapeStringRegexp(fieldName);
|
|
11632
|
+
const boldPattern = new RegExp(`\\*\\*\\s*${escaped}\\s*:\\s*\\*\\*\\s*(.+)`, "i");
|
|
11633
|
+
const boldMatch = content.match(boldPattern);
|
|
11634
|
+
if (boldMatch) return boldMatch[1].trim();
|
|
11635
|
+
const plainPattern = new RegExp(`^\\s*${escaped}\\s*:\\s*(.+)`, "im");
|
|
11636
|
+
const plainMatch = content.match(plainPattern);
|
|
11637
|
+
return plainMatch ? plainMatch[1].trim() : null;
|
|
11617
11638
|
}
|
|
11618
11639
|
function stateReplaceField(content, fieldName, newValue) {
|
|
11619
11640
|
const escaped = escapeStringRegexp(fieldName);
|
|
11620
|
-
const
|
|
11621
|
-
|
|
11622
|
-
return
|
|
11641
|
+
const boldPattern = new RegExp(`(\\*\\*\\s*${escaped}\\s*:\\s*\\*\\*\\s*)(.*)`, "i");
|
|
11642
|
+
let replaced = content.replace(boldPattern, (_match, prefix) => `${prefix}${newValue}`);
|
|
11643
|
+
if (replaced !== content) return replaced;
|
|
11644
|
+
const plainPattern = new RegExp(`(^[ \\t]*${escaped}\\s*:\\s*)(.*)`, "im");
|
|
11645
|
+
replaced = content.replace(plainPattern, (_match, prefix) => `${prefix}${newValue}`);
|
|
11646
|
+
return replaced !== content ? replaced : null;
|
|
11623
11647
|
}
|
|
11624
11648
|
/**
|
|
11625
11649
|
* Append an entry to a section in STATE.md content, removing placeholder text.
|