maxsimcli 3.11.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.
Files changed (197) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapters/index.d.ts +0 -11
  3. package/dist/adapters/index.d.ts.map +1 -1
  4. package/dist/adapters/index.js +4 -40
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/assets/CHANGELOG.md +36 -0
  7. package/dist/assets/dashboard/client/assets/{index-CZ8WC97G.js → index-C_eAetZJ.js} +66 -66
  8. package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +32 -0
  9. package/dist/assets/dashboard/client/index.html +2 -2
  10. package/dist/assets/dashboard/server.js +467 -271
  11. package/dist/assets/templates/agents/AGENTS.md +94 -0
  12. package/dist/assets/templates/agents/maxsim-debugger.md +2 -2
  13. package/dist/assets/templates/agents/maxsim-executor.md +5 -5
  14. package/dist/assets/templates/agents/maxsim-phase-researcher.md +2 -2
  15. package/dist/assets/templates/agents/maxsim-plan-checker.md +2 -2
  16. package/dist/assets/templates/agents/maxsim-planner.md +3 -3
  17. package/dist/assets/templates/commands/maxsim/add-todo.md +15 -5
  18. package/dist/assets/templates/commands/maxsim/discuss-phase.md +1 -0
  19. package/dist/assets/templates/commands/maxsim/init-existing.md +4 -0
  20. package/dist/assets/templates/commands/maxsim/new-project.md +4 -0
  21. package/dist/assets/templates/commands/maxsim/settings.md +1 -1
  22. package/dist/assets/templates/references/thinking-partner.md +41 -0
  23. package/dist/assets/templates/skills/batch-worktree/SKILL.md +137 -0
  24. package/dist/assets/templates/skills/brainstorming/SKILL.md +159 -0
  25. package/dist/assets/templates/skills/code-review/SKILL.md +151 -0
  26. package/dist/assets/templates/skills/memory-management/SKILL.md +174 -0
  27. package/dist/assets/templates/skills/roadmap-writing/SKILL.md +198 -0
  28. package/dist/assets/templates/skills/sdd/SKILL.md +175 -0
  29. package/dist/assets/templates/skills/simplify/SKILL.md +185 -0
  30. package/dist/assets/templates/skills/using-maxsim/SKILL.md +120 -0
  31. package/dist/assets/templates/templates/acceptance-criteria.md +10 -0
  32. package/dist/assets/templates/templates/config.json +1 -1
  33. package/dist/assets/templates/templates/decisions.md +10 -0
  34. package/dist/assets/templates/templates/no-gos.md +9 -0
  35. package/dist/assets/templates/workflows/add-tests.md +3 -3
  36. package/dist/assets/templates/workflows/add-todo.md +89 -0
  37. package/dist/assets/templates/workflows/complete-milestone.md +1 -1
  38. package/dist/assets/templates/workflows/discuss-phase.md +85 -1
  39. package/dist/assets/templates/workflows/execute-phase.md +26 -16
  40. package/dist/assets/templates/workflows/execute-plan.md +166 -0
  41. package/dist/assets/templates/workflows/init-existing.md +123 -3
  42. package/dist/assets/templates/workflows/new-milestone.md +4 -0
  43. package/dist/assets/templates/workflows/new-project.md +111 -3
  44. package/dist/assets/templates/workflows/plan-phase.md +5 -5
  45. package/dist/assets/templates/workflows/quick.md +2 -2
  46. package/dist/assets/templates/workflows/settings.md +8 -4
  47. package/dist/assets/templates/workflows/verify-work.md +1 -1
  48. package/dist/cli.cjs +1512 -1026
  49. package/dist/cli.cjs.map +1 -1
  50. package/dist/cli.js +170 -278
  51. package/dist/cli.js.map +1 -1
  52. package/dist/core/artefakte.d.ts +12 -0
  53. package/dist/core/artefakte.d.ts.map +1 -0
  54. package/dist/core/artefakte.js +136 -0
  55. package/dist/core/artefakte.js.map +1 -0
  56. package/dist/core/commands.d.ts +13 -13
  57. package/dist/core/commands.d.ts.map +1 -1
  58. package/dist/core/commands.js +48 -58
  59. package/dist/core/commands.js.map +1 -1
  60. package/dist/core/config.d.ts +4 -3
  61. package/dist/core/config.d.ts.map +1 -1
  62. package/dist/core/config.js +14 -18
  63. package/dist/core/config.js.map +1 -1
  64. package/dist/core/context-loader.d.ts +20 -0
  65. package/dist/core/context-loader.d.ts.map +1 -0
  66. package/dist/core/context-loader.js +154 -0
  67. package/dist/core/context-loader.js.map +1 -0
  68. package/dist/core/core.d.ts +26 -2
  69. package/dist/core/core.d.ts.map +1 -1
  70. package/dist/core/core.js +90 -24
  71. package/dist/core/core.js.map +1 -1
  72. package/dist/core/dashboard-launcher.d.ts +56 -0
  73. package/dist/core/dashboard-launcher.d.ts.map +1 -0
  74. package/dist/core/dashboard-launcher.js +246 -0
  75. package/dist/core/dashboard-launcher.js.map +1 -0
  76. package/dist/core/frontmatter.d.ts +5 -5
  77. package/dist/core/frontmatter.d.ts.map +1 -1
  78. package/dist/core/frontmatter.js +21 -26
  79. package/dist/core/frontmatter.js.map +1 -1
  80. package/dist/core/index.d.ts +10 -3
  81. package/dist/core/index.d.ts.map +1 -1
  82. package/dist/core/index.js +40 -2
  83. package/dist/core/index.js.map +1 -1
  84. package/dist/core/init.d.ts +14 -15
  85. package/dist/core/init.d.ts.map +1 -1
  86. package/dist/core/init.js +93 -155
  87. package/dist/core/init.js.map +1 -1
  88. package/dist/core/milestone.d.ts +3 -3
  89. package/dist/core/milestone.d.ts.map +1 -1
  90. package/dist/core/milestone.js +9 -9
  91. package/dist/core/milestone.js.map +1 -1
  92. package/dist/core/phase.d.ts +9 -9
  93. package/dist/core/phase.d.ts.map +1 -1
  94. package/dist/core/phase.js +65 -63
  95. package/dist/core/phase.js.map +1 -1
  96. package/dist/core/roadmap.d.ts +4 -3
  97. package/dist/core/roadmap.d.ts.map +1 -1
  98. package/dist/core/roadmap.js +46 -108
  99. package/dist/core/roadmap.js.map +1 -1
  100. package/dist/core/skills.d.ts +19 -0
  101. package/dist/core/skills.d.ts.map +1 -0
  102. package/dist/core/skills.js +145 -0
  103. package/dist/core/skills.js.map +1 -0
  104. package/dist/core/start.d.ts +15 -0
  105. package/dist/core/start.d.ts.map +1 -0
  106. package/dist/core/start.js +80 -0
  107. package/dist/core/start.js.map +1 -0
  108. package/dist/core/state.d.ts +13 -13
  109. package/dist/core/state.d.ts.map +1 -1
  110. package/dist/core/state.js +125 -130
  111. package/dist/core/state.js.map +1 -1
  112. package/dist/core/template.d.ts +3 -3
  113. package/dist/core/template.d.ts.map +1 -1
  114. package/dist/core/template.js +12 -14
  115. package/dist/core/template.js.map +1 -1
  116. package/dist/core/types.d.ts +15 -4
  117. package/dist/core/types.d.ts.map +1 -1
  118. package/dist/core/types.js +9 -2
  119. package/dist/core/types.js.map +1 -1
  120. package/dist/core/verify.d.ts +10 -9
  121. package/dist/core/verify.d.ts.map +1 -1
  122. package/dist/core/verify.js +38 -48
  123. package/dist/core/verify.js.map +1 -1
  124. package/dist/core-TFSlUjV1.cjs +4312 -0
  125. package/dist/core-TFSlUjV1.cjs.map +1 -0
  126. package/dist/install/adapters.d.ts +6 -0
  127. package/dist/install/adapters.d.ts.map +1 -0
  128. package/dist/install/adapters.js +65 -0
  129. package/dist/install/adapters.js.map +1 -0
  130. package/dist/install/copy.d.ts +6 -0
  131. package/dist/install/copy.d.ts.map +1 -0
  132. package/dist/install/copy.js +71 -0
  133. package/dist/install/copy.js.map +1 -0
  134. package/dist/install/dashboard.d.ts +16 -0
  135. package/dist/install/dashboard.d.ts.map +1 -0
  136. package/dist/install/dashboard.js +273 -0
  137. package/dist/install/dashboard.js.map +1 -0
  138. package/dist/install/hooks.d.ts +31 -0
  139. package/dist/install/hooks.d.ts.map +1 -0
  140. package/dist/install/hooks.js +260 -0
  141. package/dist/install/hooks.js.map +1 -0
  142. package/dist/install/index.d.ts +2 -0
  143. package/dist/install/index.d.ts.map +1 -0
  144. package/dist/install/index.js +535 -0
  145. package/dist/install/index.js.map +1 -0
  146. package/dist/install/manifest.d.ts +23 -0
  147. package/dist/install/manifest.d.ts.map +1 -0
  148. package/dist/install/manifest.js +129 -0
  149. package/dist/install/manifest.js.map +1 -0
  150. package/dist/install/patches.d.ts +10 -0
  151. package/dist/install/patches.d.ts.map +1 -0
  152. package/dist/install/patches.js +124 -0
  153. package/dist/install/patches.js.map +1 -0
  154. package/dist/install/shared.d.ts +56 -0
  155. package/dist/install/shared.d.ts.map +1 -0
  156. package/dist/install/shared.js +172 -0
  157. package/dist/install/shared.js.map +1 -0
  158. package/dist/install/uninstall.d.ts +5 -0
  159. package/dist/install/uninstall.d.ts.map +1 -0
  160. package/dist/install/uninstall.js +222 -0
  161. package/dist/install/uninstall.js.map +1 -0
  162. package/dist/install.cjs +793 -1648
  163. package/dist/install.cjs.map +1 -1
  164. package/dist/mcp-server.cjs +38 -14
  165. package/dist/mcp-server.cjs.map +1 -1
  166. package/dist/skills-BOSxYUzf.cjs +6812 -0
  167. package/dist/skills-BOSxYUzf.cjs.map +1 -0
  168. package/package.json +1 -1
  169. package/dist/adapters/codex.d.ts +0 -19
  170. package/dist/adapters/codex.d.ts.map +0 -1
  171. package/dist/adapters/codex.js +0 -94
  172. package/dist/adapters/codex.js.map +0 -1
  173. package/dist/adapters/gemini.d.ts +0 -19
  174. package/dist/adapters/gemini.d.ts.map +0 -1
  175. package/dist/adapters/gemini.js +0 -96
  176. package/dist/adapters/gemini.js.map +0 -1
  177. package/dist/adapters/opencode.d.ts +0 -17
  178. package/dist/adapters/opencode.d.ts.map +0 -1
  179. package/dist/adapters/opencode.js +0 -111
  180. package/dist/adapters/opencode.js.map +0 -1
  181. package/dist/adapters/transforms/content.d.ts +0 -39
  182. package/dist/adapters/transforms/content.d.ts.map +0 -1
  183. package/dist/adapters/transforms/content.js +0 -125
  184. package/dist/adapters/transforms/content.js.map +0 -1
  185. package/dist/adapters/transforms/frontmatter.d.ts +0 -42
  186. package/dist/adapters/transforms/frontmatter.d.ts.map +0 -1
  187. package/dist/adapters/transforms/frontmatter.js +0 -204
  188. package/dist/adapters/transforms/frontmatter.js.map +0 -1
  189. package/dist/adapters/transforms/tool-maps.d.ts +0 -20
  190. package/dist/adapters/transforms/tool-maps.d.ts.map +0 -1
  191. package/dist/adapters/transforms/tool-maps.js +0 -64
  192. package/dist/adapters/transforms/tool-maps.js.map +0 -1
  193. package/dist/assets/dashboard/client/assets/index-DzJChB-D.css +0 -32
  194. package/dist/install.d.ts +0 -2
  195. package/dist/install.d.ts.map +0 -1
  196. package/dist/install.js +0 -1841
  197. package/dist/install.js.map +0 -1
@@ -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
- /** Log only when MAXSIM_DEBUG is set. */
4317
- function debugLog(e) {
4318
- if (process.env.MAXSIM_DEBUG) console.error(e);
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 pattern = new RegExp(`\\*\\*${fieldName}:\\*\\*\\s*(.+)`, "i");
11615
- const match = content.match(pattern);
11616
- return match ? match[1].trim() : null;
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 pattern = new RegExp(`(\\*\\*${escaped}:\\*\\*\\s*)(.*)`, "i");
11621
- if (pattern.test(content)) return content.replace(pattern, (_match, prefix) => `${prefix}${newValue}`);
11622
- return null;
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.