maxsimcli 4.0.2 → 4.1.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 (68) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/assets/CHANGELOG.md +8 -0
  3. package/dist/backend/index.d.ts +4 -0
  4. package/dist/backend/index.d.ts.map +1 -0
  5. package/dist/backend/index.js +12 -0
  6. package/dist/backend/index.js.map +1 -0
  7. package/dist/backend/lifecycle.d.ts +13 -0
  8. package/dist/backend/lifecycle.d.ts.map +1 -0
  9. package/dist/backend/lifecycle.js +168 -0
  10. package/dist/backend/lifecycle.js.map +1 -0
  11. package/dist/backend/server.d.ts +13 -0
  12. package/dist/backend/server.d.ts.map +1 -0
  13. package/dist/backend/server.js +1013 -0
  14. package/dist/backend/server.js.map +1 -0
  15. package/dist/backend/terminal.d.ts +49 -0
  16. package/dist/backend/terminal.d.ts.map +1 -0
  17. package/dist/backend/terminal.js +209 -0
  18. package/dist/backend/terminal.js.map +1 -0
  19. package/dist/backend/types.d.ts +77 -0
  20. package/dist/backend/types.d.ts.map +1 -0
  21. package/dist/backend/types.js +6 -0
  22. package/dist/backend/types.js.map +1 -0
  23. package/dist/backend-server.cjs +80513 -0
  24. package/dist/backend-server.cjs.map +1 -0
  25. package/dist/backend-server.d.cts +2 -0
  26. package/dist/backend-server.d.ts +11 -0
  27. package/dist/backend-server.d.ts.map +1 -0
  28. package/dist/backend-server.js +43 -0
  29. package/dist/backend-server.js.map +1 -0
  30. package/dist/cli.cjs +71 -29
  31. package/dist/cli.cjs.map +1 -1
  32. package/dist/cli.js +23 -3
  33. package/dist/cli.js.map +1 -1
  34. package/dist/core/skills.d.ts +4 -3
  35. package/dist/core/skills.d.ts.map +1 -1
  36. package/dist/core/skills.js +14 -15
  37. package/dist/core/skills.js.map +1 -1
  38. package/dist/{core-TFSlUjV1.cjs → core-RRjCSt0G.cjs} +1 -9
  39. package/dist/{core-TFSlUjV1.cjs.map → core-RRjCSt0G.cjs.map} +1 -1
  40. package/dist/esm-iIOBzmdz.cjs +1561 -0
  41. package/dist/esm-iIOBzmdz.cjs.map +1 -0
  42. package/dist/install.cjs +2 -2
  43. package/dist/lifecycle-D4E9yP6E.cjs +136 -0
  44. package/dist/lifecycle-D4E9yP6E.cjs.map +1 -0
  45. package/dist/mcp/config-tools.d.ts +13 -0
  46. package/dist/mcp/config-tools.d.ts.map +1 -0
  47. package/dist/mcp/config-tools.js +66 -0
  48. package/dist/mcp/config-tools.js.map +1 -0
  49. package/dist/mcp/context-tools.d.ts +13 -0
  50. package/dist/mcp/context-tools.d.ts.map +1 -0
  51. package/dist/mcp/context-tools.js +172 -0
  52. package/dist/mcp/context-tools.js.map +1 -0
  53. package/dist/mcp/index.d.ts +0 -1
  54. package/dist/mcp/index.d.ts.map +1 -1
  55. package/dist/mcp/index.js +6 -1
  56. package/dist/mcp/index.js.map +1 -1
  57. package/dist/mcp/roadmap-tools.d.ts +13 -0
  58. package/dist/mcp/roadmap-tools.d.ts.map +1 -0
  59. package/dist/mcp/roadmap-tools.js +79 -0
  60. package/dist/mcp/roadmap-tools.js.map +1 -0
  61. package/dist/mcp-server.cjs +641 -3
  62. package/dist/mcp-server.cjs.map +1 -1
  63. package/dist/server-pvY2WbKj.cjs +2980 -0
  64. package/dist/server-pvY2WbKj.cjs.map +1 -0
  65. package/dist/{skills-BOSxYUzf.cjs → skills-MYlMkYNt.cjs} +41 -29
  66. package/dist/skills-MYlMkYNt.cjs.map +1 -0
  67. package/package.json +7 -1
  68. package/dist/skills-BOSxYUzf.cjs.map +0 -1
@@ -0,0 +1,2 @@
1
+
2
+ export { };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MAXSIM Backend Server — Entry point
3
+ *
4
+ * Starts the unified backend server (Express + WS + MCP + Terminal).
5
+ * Environment: MAXSIM_PORT, MAXSIM_PROJECT_CWD
6
+ *
7
+ * CRITICAL: Never import output() or error() from core — they call process.exit().
8
+ * CRITICAL: Never write to stdout directly — stdout may be reserved for protocol use.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=backend-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-server.d.ts","sourceRoot":"","sources":["../src/backend-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * MAXSIM Backend Server — Entry point
4
+ *
5
+ * Starts the unified backend server (Express + WS + MCP + Terminal).
6
+ * Environment: MAXSIM_PORT, MAXSIM_PROJECT_CWD
7
+ *
8
+ * CRITICAL: Never import output() or error() from core — they call process.exit().
9
+ * CRITICAL: Never write to stdout directly — stdout may be reserved for protocol use.
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const server_js_1 = require("./backend/server.js");
17
+ const port = parseInt(process.env.MAXSIM_PORT || '3142', 10);
18
+ const cwd = process.env.MAXSIM_PROJECT_CWD || process.cwd();
19
+ const config = {
20
+ port,
21
+ host: '127.0.0.1',
22
+ projectCwd: cwd,
23
+ enableTerminal: true,
24
+ enableFileWatcher: true,
25
+ enableMcp: true,
26
+ logDir: node_path_1.default.join(cwd, '.planning', 'logs'),
27
+ };
28
+ const server = (0, server_js_1.createBackendServer)(config);
29
+ process.on('SIGTERM', async () => {
30
+ await server.stop();
31
+ process.exit(0);
32
+ });
33
+ process.on('SIGINT', async () => {
34
+ await server.stop();
35
+ process.exit(0);
36
+ });
37
+ server.start().then(() => {
38
+ console.error(`MAXSIM backend running on port ${server.getPort()} for ${cwd}`);
39
+ }).catch((err) => {
40
+ console.error('Backend server error:', err);
41
+ process.exitCode = 1;
42
+ });
43
+ //# sourceMappingURL=backend-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-server.js","sourceRoot":"","sources":["../src/backend-server.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAEH,0DAA6B;AAC7B,mDAA0D;AAG1D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AAE5D,MAAM,MAAM,GAAkB;IAC5B,IAAI;IACJ,IAAI,EAAE,WAAW;IACjB,UAAU,EAAE,GAAG;IACf,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,GAAG,IAAA,+BAAmB,EAAC,MAAM,CAAC,CAAC;AAE3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/dist/cli.cjs CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
3
  //#region \0rolldown/runtime.js
3
4
  var __create = Object.create;
4
5
  var __defProp$1 = Object.defineProperty;
@@ -15372,12 +15373,12 @@ function readSkillInfo(skillDir, dirName) {
15372
15373
  /**
15373
15374
  * List all installed skills from `.claude/skills/`.
15374
15375
  */
15375
- function cmdSkillList(cwd, raw) {
15376
+ function cmdSkillList(cwd) {
15376
15377
  const dir = skillsDir(cwd);
15377
- if (!node_fs.default.existsSync(dir)) output({
15378
+ if (!node_fs.default.existsSync(dir)) return cmdOk({
15378
15379
  skills: [],
15379
15380
  count: 0
15380
- }, raw, "No skills installed.");
15381
+ }, "No skills installed.");
15381
15382
  const entries = node_fs.default.readdirSync(dir, { withFileTypes: true });
15382
15383
  const skills = [];
15383
15384
  for (const entry of entries) {
@@ -15385,56 +15386,52 @@ function cmdSkillList(cwd, raw) {
15385
15386
  const info = readSkillInfo(node_path.default.join(dir, entry.name), entry.name);
15386
15387
  if (info) skills.push(info);
15387
15388
  }
15388
- output({
15389
+ return cmdOk({
15389
15390
  skills,
15390
15391
  count: skills.length
15391
- }, raw, skills.map((s) => `${s.name}: ${s.description}`).join("\n"));
15392
+ }, skills.map((s) => `${s.name}: ${s.description}`).join("\n"));
15392
15393
  }
15393
15394
  /**
15394
15395
  * Install a specific skill from the templates directory.
15395
15396
  */
15396
- function cmdSkillInstall(cwd, skillName, raw) {
15397
- if (!skillName) error("skill name required. Usage: skill-install <name>");
15397
+ function cmdSkillInstall(cwd, skillName) {
15398
+ if (!skillName) return cmdErr("skill name required. Usage: skill-install <name>");
15398
15399
  const srcFile = node_path.default.join(skillsTemplateDir(), skillName, "SKILL.md");
15399
- if (!node_fs.default.existsSync(srcFile)) error(`Skill "${skillName}" not found in templates. Available: ${listAvailableTemplates().join(", ")}`);
15400
+ if (!node_fs.default.existsSync(srcFile)) return cmdErr(`Skill "${skillName}" not found in templates. Available: ${listAvailableTemplates().join(", ")}`);
15400
15401
  const destDir = node_path.default.join(skillsDir(cwd), skillName);
15401
15402
  const destFile = node_path.default.join(destDir, "SKILL.md");
15402
15403
  node_fs.default.mkdirSync(destDir, { recursive: true });
15403
15404
  node_fs.default.copyFileSync(srcFile, destFile);
15404
- output({
15405
+ return cmdOk({
15405
15406
  installed: true,
15406
15407
  skill: skillName,
15407
15408
  path: node_path.default.relative(cwd, destFile)
15408
- }, raw, `Installed skill: ${skillName}`);
15409
+ }, `Installed skill: ${skillName}`);
15409
15410
  }
15410
15411
  /**
15411
15412
  * Update one or all installed skills from the templates source.
15412
15413
  */
15413
- function cmdSkillUpdate(cwd, skillName, raw) {
15414
+ function cmdSkillUpdate(cwd, skillName) {
15414
15415
  const dir = skillsDir(cwd);
15415
15416
  const templateDir = skillsTemplateDir();
15416
15417
  if (skillName) {
15417
15418
  const srcFile = node_path.default.join(templateDir, skillName, "SKILL.md");
15418
- if (!node_fs.default.existsSync(srcFile)) error(`Skill template "${skillName}" not found.`);
15419
+ if (!node_fs.default.existsSync(srcFile)) return cmdErr(`Skill template "${skillName}" not found.`);
15419
15420
  const destDir = node_path.default.join(dir, skillName);
15420
- if (!node_fs.default.existsSync(destDir)) error(`Skill "${skillName}" is not installed. Use skill-install first.`);
15421
+ if (!node_fs.default.existsSync(destDir)) return cmdErr(`Skill "${skillName}" is not installed. Use skill-install first.`);
15421
15422
  const destFile = node_path.default.join(destDir, "SKILL.md");
15422
15423
  node_fs.default.copyFileSync(srcFile, destFile);
15423
- output({
15424
+ return cmdOk({
15424
15425
  updated: [skillName],
15425
15426
  skipped: [],
15426
15427
  not_found: []
15427
- }, raw, `Updated skill: ${skillName}`);
15428
- return;
15429
- }
15430
- if (!node_fs.default.existsSync(dir)) {
15431
- output({
15432
- updated: [],
15433
- skipped: [],
15434
- not_found: []
15435
- }, raw, "No skills installed.");
15436
- return;
15428
+ }, `Updated skill: ${skillName}`);
15437
15429
  }
15430
+ if (!node_fs.default.existsSync(dir)) return cmdOk({
15431
+ updated: [],
15432
+ skipped: [],
15433
+ not_found: []
15434
+ }, "No skills installed.");
15438
15435
  const entries = node_fs.default.readdirSync(dir, { withFileTypes: true });
15439
15436
  const updated = [];
15440
15437
  const skipped = [];
@@ -15451,10 +15448,10 @@ function cmdSkillUpdate(cwd, skillName, raw) {
15451
15448
  updated.push(name);
15452
15449
  }
15453
15450
  const summary = updated.length > 0 ? `Updated ${updated.length} skill(s): ${updated.join(", ")}` : "No skills updated.";
15454
- output({
15451
+ return cmdOk({
15455
15452
  updated,
15456
15453
  skipped
15457
- }, raw, summary);
15454
+ }, summary);
15458
15455
  }
15459
15456
  function listAvailableTemplates() {
15460
15457
  const dir = skillsTemplateDir();
@@ -16501,9 +16498,9 @@ const COMMANDS = {
16501
16498
  "artefakte-append": (args, cwd, raw) => handleResult(cmdArtefakteAppend(cwd, args[1], getFlag(args, "--entry") ?? void 0, getFlag(args, "--phase") ?? void 0, raw), raw),
16502
16499
  "artefakte-list": (args, cwd, raw) => handleResult(cmdArtefakteList(cwd, getFlag(args, "--phase") ?? void 0, raw), raw),
16503
16500
  "context-load": (args, cwd, raw) => handleResult(cmdContextLoad(cwd, getFlag(args, "--phase") ?? void 0, getFlag(args, "--topic") ?? void 0, hasFlag(args, "include-history")), raw),
16504
- "skill-list": (_args, cwd, raw) => cmdSkillList(cwd, raw),
16505
- "skill-install": (args, cwd, raw) => cmdSkillInstall(cwd, args[1], raw),
16506
- "skill-update": (args, cwd, raw) => cmdSkillUpdate(cwd, args[1], raw),
16501
+ "skill-list": (_args, cwd, raw) => handleResult(cmdSkillList(cwd), raw),
16502
+ "skill-install": (args, cwd, raw) => handleResult(cmdSkillInstall(cwd, args[1]), raw),
16503
+ "skill-update": (args, cwd, raw) => handleResult(cmdSkillUpdate(cwd, args[1]), raw),
16507
16504
  "start": async (args, cwd, raw) => handleResult(await cmdStart(cwd, {
16508
16505
  noBrowser: hasFlag(args, "no-browser"),
16509
16506
  networkMode: hasFlag(args, "network")
@@ -16512,6 +16509,23 @@ const COMMANDS = {
16512
16509
  "start-server": async () => {
16513
16510
  const serverPath = node_path.join(__dirname, "mcp-server.cjs");
16514
16511
  (0, node_child_process.spawn)(process.execPath, [serverPath], { stdio: "inherit" }).on("exit", (code) => process.exit(code ?? 0));
16512
+ },
16513
+ "backend-start": async (args, cwd, raw) => {
16514
+ const { startBackend } = await Promise.resolve().then(() => require("./lifecycle-D4E9yP6E.cjs"));
16515
+ const portFlag = args.find((a) => a.startsWith("--port="))?.split("=")[1];
16516
+ const background = !args.includes("--foreground");
16517
+ output(await startBackend(cwd, {
16518
+ port: portFlag ? parseInt(portFlag, 10) : void 0,
16519
+ background
16520
+ }), raw);
16521
+ },
16522
+ "backend-stop": async (_args, cwd, raw) => {
16523
+ const { stopBackend } = await Promise.resolve().then(() => require("./lifecycle-D4E9yP6E.cjs"));
16524
+ output({ stopped: await stopBackend(cwd) }, raw);
16525
+ },
16526
+ "backend-status": async (_args, cwd, raw) => {
16527
+ const { getBackendStatus } = await Promise.resolve().then(() => require("./lifecycle-D4E9yP6E.cjs"));
16528
+ output(await getBackendStatus(cwd) || { running: false }, raw);
16515
16529
  }
16516
16530
  };
16517
16531
  async function main() {
@@ -16604,4 +16618,32 @@ async function handleDashboard(args) {
16604
16618
  main();
16605
16619
 
16606
16620
  //#endregion
16621
+ exports.__commonJSMin = __commonJSMin;
16622
+ exports.__toESM = __toESM;
16623
+ exports.appendToStateSection = appendToStateSection;
16624
+ exports.cmdConfigGet = cmdConfigGet;
16625
+ exports.cmdConfigSet = cmdConfigSet;
16626
+ exports.cmdContextLoad = cmdContextLoad;
16627
+ exports.cmdRoadmapAnalyze = cmdRoadmapAnalyze;
16628
+ exports.comparePhaseNum = comparePhaseNum;
16629
+ exports.escapeStringRegexp = escapeStringRegexp;
16630
+ exports.extractFrontmatter = extractFrontmatter;
16631
+ exports.findPhaseInternal = findPhaseInternal;
16632
+ exports.generateSlugInternal = generateSlugInternal;
16633
+ exports.getArchivedPhaseDirs = getArchivedPhaseDirs;
16634
+ exports.getPhasePattern = getPhasePattern;
16635
+ exports.listSubDirs = listSubDirs;
16636
+ exports.loadConfig = loadConfig;
16637
+ exports.normalizePhaseName = normalizePhaseName;
16638
+ exports.parseTodoFrontmatter = parseTodoFrontmatter;
16639
+ exports.phaseAddCore = phaseAddCore;
16640
+ exports.phaseCompleteCore = phaseCompleteCore;
16641
+ exports.phaseInsertCore = phaseInsertCore;
16642
+ exports.phasesPath = phasesPath;
16643
+ exports.planningPath = planningPath;
16644
+ exports.safeReadFile = safeReadFile;
16645
+ exports.stateExtractField = stateExtractField;
16646
+ exports.statePath = statePath;
16647
+ exports.stateReplaceField = stateReplaceField;
16648
+ exports.todayISO = todayISO;
16607
16649
  //# sourceMappingURL=cli.cjs.map