maxsimcli 4.16.0 → 5.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 (37) hide show
  1. package/dist/assets/CHANGELOG.md +7 -0
  2. package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -1
  3. package/dist/assets/hooks/maxsim-notification-sound.cjs +70 -0
  4. package/dist/assets/hooks/maxsim-notification-sound.cjs.map +1 -0
  5. package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -1
  6. package/dist/assets/hooks/maxsim-stop-sound.cjs +70 -0
  7. package/dist/assets/hooks/maxsim-stop-sound.cjs.map +1 -0
  8. package/dist/assets/hooks/maxsim-sync-reminder.cjs.map +1 -1
  9. package/dist/assets/templates/agents/executor.md +2 -2
  10. package/dist/assets/templates/agents/planner.md +1 -1
  11. package/dist/assets/templates/agents/verifier.md +1 -1
  12. package/dist/assets/templates/commands/maxsim/quick.md +2 -2
  13. package/dist/assets/templates/skills/github-artifact-protocol/SKILL.md +8 -8
  14. package/dist/assets/templates/skills/github-tools-guide/SKILL.md +96 -0
  15. package/dist/assets/templates/workflows/execute-plan.md +82 -68
  16. package/dist/assets/templates/workflows/execute.md +51 -36
  17. package/dist/assets/templates/workflows/go.md +21 -16
  18. package/dist/assets/templates/workflows/init-existing.md +13 -16
  19. package/dist/assets/templates/workflows/new-milestone.md +23 -1
  20. package/dist/assets/templates/workflows/new-project.md +13 -16
  21. package/dist/assets/templates/workflows/plan-create.md +16 -24
  22. package/dist/assets/templates/workflows/plan-discuss.md +6 -8
  23. package/dist/assets/templates/workflows/plan-research.md +7 -6
  24. package/dist/assets/templates/workflows/plan.md +21 -14
  25. package/dist/assets/templates/workflows/progress.md +45 -20
  26. package/dist/assets/templates/workflows/quick.md +21 -13
  27. package/dist/assets/templates/workflows/sdd.md +13 -11
  28. package/dist/assets/templates/workflows/verify-phase.md +77 -58
  29. package/dist/cli.cjs +4410 -2265
  30. package/dist/cli.cjs.map +1 -1
  31. package/dist/install.cjs +60 -37
  32. package/dist/install.cjs.map +1 -1
  33. package/package.json +2 -4
  34. package/dist/assets/templates/workflows/discovery-phase.md +0 -292
  35. package/dist/assets/templates/workflows/execute-phase.md +0 -752
  36. package/dist/mcp-server.cjs +0 -41031
  37. package/dist/mcp-server.cjs.map +0 -1
package/dist/install.cjs CHANGED
@@ -7290,6 +7290,7 @@ const builtInSkills = [
7290
7290
  "commit-conventions",
7291
7291
  "evidence-collection",
7292
7292
  "github-artifact-protocol",
7293
+ "github-tools-guide",
7293
7294
  "handoff-contract",
7294
7295
  "input-validation",
7295
7296
  "research-methodology",
@@ -7581,6 +7582,8 @@ function configureSettingsHooks(targetDir) {
7581
7582
  const statuslineCommand = "node " + dirName + "/hooks/maxsim-statusline.js";
7582
7583
  const updateCheckCommand = "node " + dirName + "/hooks/maxsim-check-update.js";
7583
7584
  const syncReminderCommand = "node " + dirName + "/hooks/maxsim-sync-reminder.js";
7585
+ const notificationSoundCommand = "node " + dirName + "/hooks/maxsim-notification-sound.js";
7586
+ const stopSoundCommand = "node " + dirName + "/hooks/maxsim-stop-sound.js";
7584
7587
  if (!settings.hooks) settings.hooks = {};
7585
7588
  const installHooks = settings.hooks;
7586
7589
  if (!installHooks.SessionStart) installHooks.SessionStart = [];
@@ -7602,12 +7605,32 @@ function configureSettingsHooks(targetDir) {
7602
7605
  });
7603
7606
  console.log(` ${chalk.green("✓")} Configured sync reminder hook`);
7604
7607
  }
7608
+ if (!installHooks.PostToolUse.some((entry) => entry.hooks && entry.hooks.some((h) => h.command && h.command.includes("maxsim-notification-sound")))) {
7609
+ installHooks.PostToolUse.push({
7610
+ matcher: "AskUserQuestion",
7611
+ hooks: [{
7612
+ type: "command",
7613
+ command: notificationSoundCommand
7614
+ }]
7615
+ });
7616
+ console.log(` ${chalk.green("✓")} Configured notification sound hook`);
7617
+ }
7618
+ if (!installHooks.Stop) installHooks.Stop = [];
7619
+ if (!installHooks.Stop.some((entry) => entry.hooks && entry.hooks.some((h) => h.command && h.command.includes("maxsim-stop-sound")))) {
7620
+ installHooks.Stop.push({ hooks: [{
7621
+ type: "command",
7622
+ command: stopSoundCommand
7623
+ }] });
7624
+ console.log(` ${chalk.green("✓")} Configured stop sound hook`);
7625
+ }
7605
7626
  return {
7606
7627
  settingsPath,
7607
7628
  settings,
7608
7629
  statuslineCommand,
7609
7630
  updateCheckCommand,
7610
- syncReminderCommand
7631
+ syncReminderCommand,
7632
+ notificationSoundCommand,
7633
+ stopSoundCommand
7611
7634
  };
7612
7635
  }
7613
7636
  /**
@@ -8002,6 +8025,25 @@ function uninstall(isGlobal, explicitConfigDir = null) {
8002
8025
  console.log(` ${chalk.green("✓")} Removed MAXSIM package.json`);
8003
8026
  }
8004
8027
  } catch {}
8028
+ const mcpJsonPath = node_path.join(process.cwd(), ".mcp.json");
8029
+ if (node_fs.existsSync(mcpJsonPath)) try {
8030
+ const mcpConfig = JSON.parse(node_fs.readFileSync(mcpJsonPath, "utf-8"));
8031
+ const mcpServers = mcpConfig.mcpServers;
8032
+ if (mcpServers && mcpServers["maxsim"]) {
8033
+ delete mcpServers["maxsim"];
8034
+ if (Object.keys(mcpServers).length === 0) delete mcpConfig.mcpServers;
8035
+ if (Object.keys(mcpConfig).length === 0) node_fs.unlinkSync(mcpJsonPath);
8036
+ else node_fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + "\n", "utf-8");
8037
+ removedCount++;
8038
+ console.log(` ${chalk.green("✓")} Removed MAXSIM MCP entry from .mcp.json`);
8039
+ }
8040
+ } catch {}
8041
+ const mcpBinPath = node_path.join(targetDir, "maxsim", "bin", "mcp-server.cjs");
8042
+ if (node_fs.existsSync(mcpBinPath)) {
8043
+ node_fs.unlinkSync(mcpBinPath);
8044
+ removedCount++;
8045
+ console.log(` ${chalk.green("✓")} Removed mcp-server.cjs binary`);
8046
+ }
8005
8047
  const settingsPath = node_path.join(targetDir, "settings.json");
8006
8048
  if (node_fs.existsSync(settingsPath)) {
8007
8049
  const settings = readSettings(settingsPath);
@@ -8281,46 +8323,27 @@ async function install() {
8281
8323
  console.warn(` ${chalk.yellow("!")} cli.cjs not found at ${toolSrc} -- maxsim-tools.cjs not installed`);
8282
8324
  failures.push("maxsim-tools.cjs");
8283
8325
  }
8284
- const mcpSrc = node_path.resolve(__dirname, "mcp-server.cjs");
8285
- const mcpDest = node_path.join(binDir, "mcp-server.cjs");
8286
- if (node_fs.existsSync(mcpSrc)) {
8287
- node_fs.mkdirSync(binDir, { recursive: true });
8288
- node_fs.copyFileSync(mcpSrc, mcpDest);
8289
- console.log(` ${chalk.green("✓")} Installed mcp-server.cjs`);
8290
- } else console.warn(` ${chalk.yellow("!")} mcp-server.cjs not found -- MCP server not installed`);
8291
8326
  installHookFiles(targetDir, failures);
8292
8327
  const mcpJsonPath = node_path.join(process.cwd(), ".mcp.json");
8293
- let mcpConfig = {};
8294
- let skipMcpConfig = false;
8295
- if (node_fs.existsSync(mcpJsonPath)) {
8296
- node_fs.copyFileSync(mcpJsonPath, mcpJsonPath + ".bak");
8297
- try {
8298
- mcpConfig = JSON.parse(node_fs.readFileSync(mcpJsonPath, "utf-8"));
8299
- } catch {
8300
- console.warn(` ${chalk.yellow("!")} .mcp.json is corrupted (invalid JSON). Backup saved to .mcp.json.bak`);
8301
- let startFresh = true;
8302
- try {
8303
- startFresh = await dist_default({
8304
- message: ".mcp.json is corrupted. Start with a fresh config? (No = abort MCP setup)",
8305
- default: true
8306
- });
8307
- } catch {}
8308
- if (!startFresh) {
8309
- console.log(` ${chalk.yellow("!")} Skipping .mcp.json configuration`);
8310
- skipMcpConfig = true;
8328
+ if (node_fs.existsSync(mcpJsonPath)) try {
8329
+ const mcpConfig = JSON.parse(node_fs.readFileSync(mcpJsonPath, "utf-8"));
8330
+ const mcpServers = mcpConfig.mcpServers;
8331
+ if (mcpServers && mcpServers["maxsim"]) {
8332
+ delete mcpServers["maxsim"];
8333
+ if (Object.keys(mcpServers).length === 0) delete mcpConfig.mcpServers;
8334
+ if (Object.keys(mcpConfig).length === 0) {
8335
+ node_fs.unlinkSync(mcpJsonPath);
8336
+ console.log(` ${chalk.green("✓")} Removed .mcp.json (no remaining MCP servers)`);
8337
+ } else {
8338
+ node_fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + "\n", "utf-8");
8339
+ console.log(` ${chalk.green("✓")} Removed MAXSIM MCP entry from .mcp.json`);
8311
8340
  }
8312
8341
  }
8313
- }
8314
- if (!skipMcpConfig) {
8315
- const mcpServers = mcpConfig.mcpServers ?? {};
8316
- mcpServers["maxsim"] = {
8317
- command: "node",
8318
- args: [".claude/maxsim/bin/mcp-server.cjs"],
8319
- env: {}
8320
- };
8321
- mcpConfig.mcpServers = mcpServers;
8322
- node_fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + "\n", "utf-8");
8323
- console.log(` ${chalk.green("✓")} Configured .mcp.json for MCP server auto-discovery`);
8342
+ } catch {}
8343
+ const oldMcpBin = node_path.join(binDir, "mcp-server.cjs");
8344
+ if (node_fs.existsSync(oldMcpBin)) {
8345
+ node_fs.unlinkSync(oldMcpBin);
8346
+ console.log(` ${chalk.green("")} Removed legacy mcp-server.cjs`);
8324
8347
  }
8325
8348
  if (failures.length > 0) {
8326
8349
  console.error(`\n ${chalk.yellow("Installation incomplete!")} Failed: ${failures.join(", ")}`);