maxsimcli 4.6.0 → 4.7.1

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 (234) hide show
  1. package/dist/assets/CHANGELOG.md +39 -0
  2. package/dist/cli.cjs +470 -961
  3. package/dist/cli.cjs.map +1 -1
  4. package/dist/{core-RRjCSt0G.cjs → core-D5zUr9cb.cjs} +4 -3
  5. package/dist/core-D5zUr9cb.cjs.map +1 -0
  6. package/dist/install.cjs +3 -195
  7. package/dist/install.cjs.map +1 -1
  8. package/dist/mcp-server.cjs +2853 -217
  9. package/dist/mcp-server.cjs.map +1 -1
  10. package/dist/{skills-MYlMkYNt.cjs → skills-CjFWZIGM.cjs} +6 -6
  11. package/dist/{skills-MYlMkYNt.cjs.map → skills-CjFWZIGM.cjs.map} +1 -1
  12. package/package.json +1 -7
  13. package/dist/.tsbuildinfo +0 -1
  14. package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +0 -32
  15. package/dist/assets/dashboard/client/assets/index-nAXJLp0_.js +0 -233
  16. package/dist/assets/dashboard/client/index.html +0 -19
  17. package/dist/assets/dashboard/server.js +0 -78813
  18. package/dist/backend/index.d.ts +0 -4
  19. package/dist/backend/index.d.ts.map +0 -1
  20. package/dist/backend/index.js +0 -12
  21. package/dist/backend/index.js.map +0 -1
  22. package/dist/backend/lifecycle.d.ts +0 -13
  23. package/dist/backend/lifecycle.d.ts.map +0 -1
  24. package/dist/backend/lifecycle.js +0 -168
  25. package/dist/backend/lifecycle.js.map +0 -1
  26. package/dist/backend/server.d.ts +0 -13
  27. package/dist/backend/server.d.ts.map +0 -1
  28. package/dist/backend/server.js +0 -1013
  29. package/dist/backend/server.js.map +0 -1
  30. package/dist/backend/terminal.d.ts +0 -49
  31. package/dist/backend/terminal.d.ts.map +0 -1
  32. package/dist/backend/terminal.js +0 -209
  33. package/dist/backend/terminal.js.map +0 -1
  34. package/dist/backend/types.d.ts +0 -77
  35. package/dist/backend/types.d.ts.map +0 -1
  36. package/dist/backend/types.js +0 -6
  37. package/dist/backend/types.js.map +0 -1
  38. package/dist/backend-server.cjs +0 -80672
  39. package/dist/backend-server.cjs.map +0 -1
  40. package/dist/backend-server.d.cts +0 -2
  41. package/dist/backend-server.d.ts +0 -11
  42. package/dist/backend-server.d.ts.map +0 -1
  43. package/dist/backend-server.js +0 -43
  44. package/dist/backend-server.js.map +0 -1
  45. package/dist/cli.d.cts +0 -2
  46. package/dist/cli.d.ts +0 -7
  47. package/dist/cli.d.ts.map +0 -1
  48. package/dist/cli.js +0 -510
  49. package/dist/cli.js.map +0 -1
  50. package/dist/core/artefakte.d.ts +0 -12
  51. package/dist/core/artefakte.d.ts.map +0 -1
  52. package/dist/core/artefakte.js +0 -152
  53. package/dist/core/artefakte.js.map +0 -1
  54. package/dist/core/commands.d.ts +0 -26
  55. package/dist/core/commands.d.ts.map +0 -1
  56. package/dist/core/commands.js +0 -550
  57. package/dist/core/commands.js.map +0 -1
  58. package/dist/core/config.d.ts +0 -10
  59. package/dist/core/config.d.ts.map +0 -1
  60. package/dist/core/config.js +0 -143
  61. package/dist/core/config.js.map +0 -1
  62. package/dist/core/context-loader.d.ts +0 -21
  63. package/dist/core/context-loader.d.ts.map +0 -1
  64. package/dist/core/context-loader.js +0 -212
  65. package/dist/core/context-loader.js.map +0 -1
  66. package/dist/core/core.d.ts +0 -91
  67. package/dist/core/core.d.ts.map +0 -1
  68. package/dist/core/core.js +0 -823
  69. package/dist/core/core.js.map +0 -1
  70. package/dist/core/dashboard-launcher.d.ts +0 -56
  71. package/dist/core/dashboard-launcher.d.ts.map +0 -1
  72. package/dist/core/dashboard-launcher.js +0 -246
  73. package/dist/core/dashboard-launcher.js.map +0 -1
  74. package/dist/core/drift.d.ts +0 -37
  75. package/dist/core/drift.d.ts.map +0 -1
  76. package/dist/core/drift.js +0 -213
  77. package/dist/core/drift.js.map +0 -1
  78. package/dist/core/frontmatter.d.ts +0 -33
  79. package/dist/core/frontmatter.d.ts.map +0 -1
  80. package/dist/core/frontmatter.js +0 -193
  81. package/dist/core/frontmatter.js.map +0 -1
  82. package/dist/core/index.d.ts +0 -28
  83. package/dist/core/index.d.ts.map +0 -1
  84. package/dist/core/index.js +0 -189
  85. package/dist/core/index.js.map +0 -1
  86. package/dist/core/init.d.ts +0 -287
  87. package/dist/core/init.d.ts.map +0 -1
  88. package/dist/core/init.js +0 -816
  89. package/dist/core/init.js.map +0 -1
  90. package/dist/core/milestone.d.ts +0 -9
  91. package/dist/core/milestone.d.ts.map +0 -1
  92. package/dist/core/milestone.js +0 -230
  93. package/dist/core/milestone.js.map +0 -1
  94. package/dist/core/phase.d.ts +0 -53
  95. package/dist/core/phase.d.ts.map +0 -1
  96. package/dist/core/phase.js +0 -891
  97. package/dist/core/phase.js.map +0 -1
  98. package/dist/core/roadmap.d.ts +0 -10
  99. package/dist/core/roadmap.d.ts.map +0 -1
  100. package/dist/core/roadmap.js +0 -165
  101. package/dist/core/roadmap.js.map +0 -1
  102. package/dist/core/skills.d.ts +0 -20
  103. package/dist/core/skills.d.ts.map +0 -1
  104. package/dist/core/skills.js +0 -144
  105. package/dist/core/skills.js.map +0 -1
  106. package/dist/core/start.d.ts +0 -15
  107. package/dist/core/start.d.ts.map +0 -1
  108. package/dist/core/start.js +0 -80
  109. package/dist/core/start.js.map +0 -1
  110. package/dist/core/state.d.ts +0 -32
  111. package/dist/core/state.d.ts.map +0 -1
  112. package/dist/core/state.js +0 -582
  113. package/dist/core/state.js.map +0 -1
  114. package/dist/core/template.d.ts +0 -30
  115. package/dist/core/template.d.ts.map +0 -1
  116. package/dist/core/template.js +0 -223
  117. package/dist/core/template.js.map +0 -1
  118. package/dist/core/types.d.ts +0 -519
  119. package/dist/core/types.d.ts.map +0 -1
  120. package/dist/core/types.js +0 -60
  121. package/dist/core/types.js.map +0 -1
  122. package/dist/core/verify.d.ts +0 -128
  123. package/dist/core/verify.d.ts.map +0 -1
  124. package/dist/core/verify.js +0 -754
  125. package/dist/core/verify.js.map +0 -1
  126. package/dist/core-RRjCSt0G.cjs.map +0 -1
  127. package/dist/esm-iIOBzmdz.cjs +0 -1561
  128. package/dist/esm-iIOBzmdz.cjs.map +0 -1
  129. package/dist/hooks/index.d.ts +0 -11
  130. package/dist/hooks/index.d.ts.map +0 -1
  131. package/dist/hooks/index.js +0 -18
  132. package/dist/hooks/index.js.map +0 -1
  133. package/dist/hooks/maxsim-check-update.d.ts +0 -17
  134. package/dist/hooks/maxsim-check-update.d.ts.map +0 -1
  135. package/dist/hooks/maxsim-check-update.js +0 -101
  136. package/dist/hooks/maxsim-check-update.js.map +0 -1
  137. package/dist/hooks/maxsim-context-monitor.d.ts +0 -21
  138. package/dist/hooks/maxsim-context-monitor.d.ts.map +0 -1
  139. package/dist/hooks/maxsim-context-monitor.js +0 -131
  140. package/dist/hooks/maxsim-context-monitor.js.map +0 -1
  141. package/dist/hooks/maxsim-statusline.d.ts +0 -19
  142. package/dist/hooks/maxsim-statusline.d.ts.map +0 -1
  143. package/dist/hooks/maxsim-statusline.js +0 -146
  144. package/dist/hooks/maxsim-statusline.js.map +0 -1
  145. package/dist/hooks/shared.d.ts +0 -11
  146. package/dist/hooks/shared.d.ts.map +0 -1
  147. package/dist/hooks/shared.js +0 -29
  148. package/dist/hooks/shared.js.map +0 -1
  149. package/dist/index.d.ts +0 -2
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/index.js +0 -3
  152. package/dist/index.js.map +0 -1
  153. package/dist/install/adapters.d.ts +0 -6
  154. package/dist/install/adapters.d.ts.map +0 -1
  155. package/dist/install/adapters.js +0 -65
  156. package/dist/install/adapters.js.map +0 -1
  157. package/dist/install/copy.d.ts +0 -6
  158. package/dist/install/copy.d.ts.map +0 -1
  159. package/dist/install/copy.js +0 -71
  160. package/dist/install/copy.js.map +0 -1
  161. package/dist/install/dashboard.d.ts +0 -16
  162. package/dist/install/dashboard.d.ts.map +0 -1
  163. package/dist/install/dashboard.js +0 -273
  164. package/dist/install/dashboard.js.map +0 -1
  165. package/dist/install/hooks.d.ts +0 -31
  166. package/dist/install/hooks.d.ts.map +0 -1
  167. package/dist/install/hooks.js +0 -260
  168. package/dist/install/hooks.js.map +0 -1
  169. package/dist/install/index.d.ts +0 -2
  170. package/dist/install/index.d.ts.map +0 -1
  171. package/dist/install/index.js +0 -534
  172. package/dist/install/index.js.map +0 -1
  173. package/dist/install/manifest.d.ts +0 -23
  174. package/dist/install/manifest.d.ts.map +0 -1
  175. package/dist/install/manifest.js +0 -133
  176. package/dist/install/manifest.js.map +0 -1
  177. package/dist/install/patches.d.ts +0 -10
  178. package/dist/install/patches.d.ts.map +0 -1
  179. package/dist/install/patches.js +0 -124
  180. package/dist/install/patches.js.map +0 -1
  181. package/dist/install/shared.d.ts +0 -56
  182. package/dist/install/shared.d.ts.map +0 -1
  183. package/dist/install/shared.js +0 -181
  184. package/dist/install/shared.js.map +0 -1
  185. package/dist/install/uninstall.d.ts +0 -5
  186. package/dist/install/uninstall.d.ts.map +0 -1
  187. package/dist/install/uninstall.js +0 -222
  188. package/dist/install/uninstall.js.map +0 -1
  189. package/dist/install/utils.d.ts +0 -27
  190. package/dist/install/utils.d.ts.map +0 -1
  191. package/dist/install/utils.js +0 -99
  192. package/dist/install/utils.js.map +0 -1
  193. package/dist/install.d.cts +0 -2
  194. package/dist/lifecycle-DxCru7rk.cjs +0 -136
  195. package/dist/lifecycle-DxCru7rk.cjs.map +0 -1
  196. package/dist/mcp/config-tools.d.ts +0 -13
  197. package/dist/mcp/config-tools.d.ts.map +0 -1
  198. package/dist/mcp/config-tools.js +0 -66
  199. package/dist/mcp/config-tools.js.map +0 -1
  200. package/dist/mcp/context-tools.d.ts +0 -13
  201. package/dist/mcp/context-tools.d.ts.map +0 -1
  202. package/dist/mcp/context-tools.js +0 -176
  203. package/dist/mcp/context-tools.js.map +0 -1
  204. package/dist/mcp/index.d.ts +0 -11
  205. package/dist/mcp/index.d.ts.map +0 -1
  206. package/dist/mcp/index.js +0 -26
  207. package/dist/mcp/index.js.map +0 -1
  208. package/dist/mcp/phase-tools.d.ts +0 -13
  209. package/dist/mcp/phase-tools.d.ts.map +0 -1
  210. package/dist/mcp/phase-tools.js +0 -177
  211. package/dist/mcp/phase-tools.js.map +0 -1
  212. package/dist/mcp/roadmap-tools.d.ts +0 -13
  213. package/dist/mcp/roadmap-tools.d.ts.map +0 -1
  214. package/dist/mcp/roadmap-tools.js +0 -79
  215. package/dist/mcp/roadmap-tools.js.map +0 -1
  216. package/dist/mcp/state-tools.d.ts +0 -13
  217. package/dist/mcp/state-tools.d.ts.map +0 -1
  218. package/dist/mcp/state-tools.js +0 -185
  219. package/dist/mcp/state-tools.js.map +0 -1
  220. package/dist/mcp/todo-tools.d.ts +0 -13
  221. package/dist/mcp/todo-tools.d.ts.map +0 -1
  222. package/dist/mcp/todo-tools.js +0 -143
  223. package/dist/mcp/todo-tools.js.map +0 -1
  224. package/dist/mcp/utils.d.ts +0 -27
  225. package/dist/mcp/utils.d.ts.map +0 -1
  226. package/dist/mcp/utils.js +0 -82
  227. package/dist/mcp/utils.js.map +0 -1
  228. package/dist/mcp-server.d.cts +0 -2
  229. package/dist/mcp-server.d.ts +0 -12
  230. package/dist/mcp-server.d.ts.map +0 -1
  231. package/dist/mcp-server.js +0 -31
  232. package/dist/mcp-server.js.map +0 -1
  233. package/dist/server-By0TN-nC.cjs +0 -2995
  234. package/dist/server-By0TN-nC.cjs.map +0 -1
@@ -1,534 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const fs = __importStar(require("node:fs"));
40
- const path = __importStar(require("node:path"));
41
- const os = __importStar(require("node:os"));
42
- const fs_extra_1 = __importDefault(require("fs-extra"));
43
- const chalk_1 = __importDefault(require("chalk"));
44
- const figlet_1 = __importDefault(require("figlet"));
45
- const ora_1 = __importDefault(require("ora"));
46
- const prompts_1 = require("@inquirer/prompts");
47
- const minimist_1 = __importDefault(require("minimist"));
48
- const utils_js_1 = require("./utils.js");
49
- const shared_js_1 = require("./shared.js");
50
- const adapters_js_1 = require("./adapters.js");
51
- const dashboard_js_1 = require("./dashboard.js");
52
- const hooks_js_1 = require("./hooks.js");
53
- const manifest_js_1 = require("./manifest.js");
54
- const patches_js_1 = require("./patches.js");
55
- const copy_js_1 = require("./copy.js");
56
- const uninstall_js_1 = require("./uninstall.js");
57
- // Parse args
58
- const args = process.argv.slice(2);
59
- const argv = (0, minimist_1.default)(args, {
60
- boolean: ['global', 'local', 'claude', 'uninstall', 'help', 'version', 'force-statusline', 'network'],
61
- string: ['config-dir'],
62
- alias: { g: 'global', l: 'local', u: 'uninstall', h: 'help', c: 'config-dir' },
63
- });
64
- const hasGlobal = !!argv['global'];
65
- const hasLocal = !!argv['local'];
66
- const hasUninstall = !!argv['uninstall'];
67
- const banner = '\n' +
68
- chalk_1.default.cyan(figlet_1.default.textSync('MAXSIM', { font: 'ANSI Shadow' })
69
- .split('\n')
70
- .map((line) => ' ' + line)
71
- .join('\n')) +
72
- '\n' +
73
- '\n' +
74
- ' MAXSIM ' +
75
- chalk_1.default.dim('v' + shared_js_1.pkg.version) +
76
- '\n' +
77
- ' A meta-prompting, context engineering and spec-driven\n' +
78
- ' development system for Claude Code.\n';
79
- // Parse --config-dir argument
80
- const explicitConfigDir = argv['config-dir'] || null;
81
- const hasHelp = !!argv['help'];
82
- const hasVersion = !!argv['version'];
83
- const forceStatusline = !!argv['force-statusline'];
84
- // Reject deprecated multi-runtime flags
85
- const deprecatedFlags = ['opencode', 'gemini', 'codex', 'both', 'all'];
86
- for (const flag of deprecatedFlags) {
87
- if (argv[flag]) {
88
- console.error(`Error: The --${flag} flag is no longer supported. MAXSIM v2.0 is Claude Code only.`);
89
- process.exit(1);
90
- }
91
- }
92
- // Show version if requested (before banner for clean output)
93
- if (hasVersion) {
94
- console.log(shared_js_1.pkg.version);
95
- process.exit(0);
96
- }
97
- console.log(banner);
98
- // Show help if requested
99
- if (hasHelp) {
100
- console.log(` ${chalk_1.default.yellow('Usage:')} npx maxsimcli [options]\n\n ${chalk_1.default.yellow('Options:')}\n ${chalk_1.default.cyan('-g, --global')} Install globally (to config directory)\n ${chalk_1.default.cyan('-l, --local')} Install locally (to current directory)\n ${chalk_1.default.cyan('-u, --uninstall')} Uninstall MAXSIM (remove all MAXSIM files)\n ${chalk_1.default.cyan('-c, --config-dir <path>')} Specify custom config directory\n ${chalk_1.default.cyan('-h, --help')} Show this help message\n ${chalk_1.default.cyan('--force-statusline')} Replace existing statusline config\n\n ${chalk_1.default.yellow('Examples:')}\n ${chalk_1.default.dim('# Interactive install (prompts for location)')}\n npx maxsimcli\n\n ${chalk_1.default.dim('# Install globally')}\n npx maxsimcli --global\n\n ${chalk_1.default.dim('# Install to current project only')}\n npx maxsimcli --local\n\n ${chalk_1.default.dim('# Install to custom config directory')}\n npx maxsimcli --global --config-dir ~/.claude-work\n\n ${chalk_1.default.dim('# Uninstall MAXSIM globally')}\n npx maxsimcli --global --uninstall\n\n ${chalk_1.default.yellow('Notes:')}\n The --config-dir option is useful when you have multiple configurations.\n It takes priority over the CLAUDE_CONFIG_DIR environment variable.\n`);
101
- process.exit(0);
102
- }
103
- async function install(isGlobal) {
104
- const dirName = (0, shared_js_1.getDirName)();
105
- const src = shared_js_1.templatesRoot;
106
- const targetDir = isGlobal
107
- ? (0, shared_js_1.getGlobalDir)(explicitConfigDir)
108
- : path.join(process.cwd(), dirName);
109
- const locationLabel = isGlobal
110
- ? targetDir.replace(os.homedir(), '~')
111
- : targetDir.replace(process.cwd(), '.');
112
- const pathPrefix = isGlobal
113
- ? `${targetDir.replace(/\\/g, '/')}/`
114
- : `./${dirName}/`;
115
- console.log(` Installing for ${chalk_1.default.cyan('Claude Code')} to ${chalk_1.default.cyan(locationLabel)}\n`);
116
- const failures = [];
117
- // Detect prior install via manifest — used for re-run safety
118
- const existingManifest = (0, manifest_js_1.readManifest)(targetDir);
119
- const isAlreadyCurrent = existingManifest !== null && existingManifest.version === shared_js_1.pkg.version;
120
- if (existingManifest !== null) {
121
- const { complete, missing } = (0, shared_js_1.verifyInstallComplete)(targetDir, existingManifest);
122
- if (!complete) {
123
- console.log(` ${chalk_1.default.yellow('!')} Previous install (v${existingManifest.version}) is incomplete — ${missing.length} missing file(s). Re-installing.`);
124
- }
125
- else if (isAlreadyCurrent) {
126
- console.log(` ${chalk_1.default.dim(`Version ${shared_js_1.pkg.version} already installed — upgrading in place`)}`);
127
- }
128
- }
129
- // Save any locally modified MAXSIM files before they get wiped
130
- (0, patches_js_1.saveLocalPatches)(targetDir);
131
- // Clean up orphaned files from previous versions
132
- (0, hooks_js_1.cleanupOrphanedFiles)(targetDir);
133
- // Claude uses commands/maxsim/
134
- let spinner = (0, ora_1.default)({ text: 'Installing commands...', color: 'cyan' }).start();
135
- const commandsDir = path.join(targetDir, 'commands');
136
- fs.mkdirSync(commandsDir, { recursive: true });
137
- const maxsimSrc = path.join(src, 'commands', 'maxsim');
138
- const maxsimDest = path.join(commandsDir, 'maxsim');
139
- (0, copy_js_1.copyWithPathReplacement)(maxsimSrc, maxsimDest, pathPrefix, explicitConfigDir, true);
140
- if ((0, shared_js_1.verifyInstalled)(maxsimDest, 'commands/maxsim')) {
141
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed commands/maxsim');
142
- }
143
- else {
144
- spinner.fail('Failed to install commands/maxsim');
145
- failures.push('commands/maxsim');
146
- }
147
- // Copy maxsim directory content (workflows, templates, references) with path replacement
148
- spinner = (0, ora_1.default)({ text: 'Installing workflows and templates...', color: 'cyan' }).start();
149
- const skillDest = path.join(targetDir, 'maxsim');
150
- const maxsimSubdirs = ['workflows', 'templates', 'references'];
151
- if (fs.existsSync(skillDest)) {
152
- fs.rmSync(skillDest, { recursive: true });
153
- }
154
- fs.mkdirSync(skillDest, { recursive: true });
155
- for (const subdir of maxsimSubdirs) {
156
- const subdirSrc = path.join(src, subdir);
157
- if (fs.existsSync(subdirSrc)) {
158
- const subdirDest = path.join(skillDest, subdir);
159
- (0, copy_js_1.copyWithPathReplacement)(subdirSrc, subdirDest, pathPrefix, explicitConfigDir);
160
- }
161
- }
162
- if ((0, shared_js_1.verifyInstalled)(skillDest, 'maxsim')) {
163
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed maxsim');
164
- }
165
- else {
166
- spinner.fail('Failed to install maxsim');
167
- failures.push('maxsim');
168
- }
169
- // Copy agents to agents directory
170
- const agentsSrc = path.join(src, 'agents');
171
- if (fs.existsSync(agentsSrc)) {
172
- spinner = (0, ora_1.default)({ text: 'Installing agents...', color: 'cyan' }).start();
173
- const agentsDest = path.join(targetDir, 'agents');
174
- fs.mkdirSync(agentsDest, { recursive: true });
175
- // Remove old MAXSIM agents before copying new ones
176
- if (fs.existsSync(agentsDest)) {
177
- for (const file of fs.readdirSync(agentsDest)) {
178
- if (file.startsWith('maxsim-') && file.endsWith('.md')) {
179
- fs.unlinkSync(path.join(agentsDest, file));
180
- }
181
- }
182
- }
183
- const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });
184
- for (const entry of agentEntries) {
185
- if (entry.isFile() && entry.name.endsWith('.md')) {
186
- let content = fs.readFileSync(path.join(agentsSrc, entry.name), 'utf8');
187
- const dirRegex = /~\/\.claude\//g;
188
- content = content.replace(dirRegex, pathPrefix);
189
- content = (0, utils_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(explicitConfigDir));
190
- fs.writeFileSync(path.join(agentsDest, entry.name), content);
191
- }
192
- }
193
- if ((0, shared_js_1.verifyInstalled)(agentsDest, 'agents')) {
194
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed agents');
195
- }
196
- else {
197
- spinner.fail('Failed to install agents');
198
- failures.push('agents');
199
- }
200
- }
201
- // Remove legacy agents/skills/ directory (skills moved to skills/ in v1.x)
202
- const legacySkillsDir = path.join(targetDir, 'agents', 'skills');
203
- if (fs.existsSync(legacySkillsDir)) {
204
- fs.rmSync(legacySkillsDir, { recursive: true });
205
- console.log(` ${chalk_1.default.green('\u2713')} Removed legacy agents/skills/ directory`);
206
- }
207
- // Copy skills to skills/ directory
208
- const skillsSrc = path.join(src, 'skills');
209
- if (fs.existsSync(skillsSrc)) {
210
- spinner = (0, ora_1.default)({ text: 'Installing skills...', color: 'cyan' }).start();
211
- const skillsDest = path.join(targetDir, 'skills');
212
- // Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)
213
- if (fs.existsSync(skillsDest)) {
214
- for (const skill of shared_js_1.builtInSkills) {
215
- const skillDir = path.join(skillsDest, skill);
216
- if (fs.existsSync(skillDir)) {
217
- fs.rmSync(skillDir, { recursive: true });
218
- }
219
- }
220
- }
221
- // Copy skills directory recursively
222
- fs_extra_1.default.copySync(skillsSrc, skillsDest, { overwrite: true });
223
- // Process path prefixes in skill files
224
- const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });
225
- for (const entry of skillEntries) {
226
- if (entry.isDirectory()) {
227
- const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');
228
- if (fs.existsSync(skillMd)) {
229
- let content = fs.readFileSync(skillMd, 'utf8');
230
- const dirRegex = /~\/\.claude\//g;
231
- content = content.replace(dirRegex, pathPrefix);
232
- content = (0, utils_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(explicitConfigDir));
233
- fs.writeFileSync(skillMd, content);
234
- }
235
- }
236
- }
237
- const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })
238
- .filter(e => e.isDirectory()).length;
239
- if (installedSkillDirs > 0) {
240
- spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillDirs} skills to skills/`);
241
- }
242
- else {
243
- spinner.fail('Failed to install skills');
244
- failures.push('skills');
245
- }
246
- }
247
- // Copy CHANGELOG.md
248
- const changelogSrc = path.join(src, '..', 'CHANGELOG.md');
249
- const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');
250
- if (fs.existsSync(changelogSrc)) {
251
- spinner = (0, ora_1.default)({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();
252
- fs.copyFileSync(changelogSrc, changelogDest);
253
- if ((0, shared_js_1.verifyFileInstalled)(changelogDest, 'CHANGELOG.md')) {
254
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed CHANGELOG.md');
255
- }
256
- else {
257
- spinner.fail('Failed to install CHANGELOG.md');
258
- failures.push('CHANGELOG.md');
259
- }
260
- }
261
- // Copy CLAUDE.md
262
- const claudeMdSrc = path.join(src, 'CLAUDE.md');
263
- const claudeMdDest = path.join(targetDir, 'CLAUDE.md');
264
- if (fs.existsSync(claudeMdSrc)) {
265
- spinner = (0, ora_1.default)({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();
266
- fs.copyFileSync(claudeMdSrc, claudeMdDest);
267
- if ((0, shared_js_1.verifyFileInstalled)(claudeMdDest, 'CLAUDE.md')) {
268
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed CLAUDE.md');
269
- }
270
- else {
271
- spinner.fail('Failed to install CLAUDE.md');
272
- failures.push('CLAUDE.md');
273
- }
274
- }
275
- // Write VERSION file
276
- const versionDest = path.join(targetDir, 'maxsim', 'VERSION');
277
- fs.writeFileSync(versionDest, shared_js_1.pkg.version);
278
- if ((0, shared_js_1.verifyFileInstalled)(versionDest, 'VERSION')) {
279
- console.log(` ${chalk_1.default.green('\u2713')} Wrote VERSION (${shared_js_1.pkg.version})`);
280
- }
281
- else {
282
- failures.push('VERSION');
283
- }
284
- // Write package.json to force CommonJS mode for MAXSIM scripts
285
- const pkgJsonDest = path.join(targetDir, 'package.json');
286
- fs.writeFileSync(pkgJsonDest, '{"type":"commonjs"}\n');
287
- console.log(` ${chalk_1.default.green('\u2713')} Wrote package.json (CommonJS mode)`);
288
- // Install maxsim-tools.cjs binary
289
- const toolSrc = path.resolve(__dirname, 'cli.cjs');
290
- const binDir = path.join(targetDir, 'maxsim', 'bin');
291
- const toolDest = path.join(binDir, 'maxsim-tools.cjs');
292
- if (fs.existsSync(toolSrc)) {
293
- fs.mkdirSync(binDir, { recursive: true });
294
- fs.copyFileSync(toolSrc, toolDest);
295
- console.log(` ${chalk_1.default.green('\u2713')} Installed maxsim-tools.cjs`);
296
- }
297
- else {
298
- console.warn(` ${chalk_1.default.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);
299
- failures.push('maxsim-tools.cjs');
300
- }
301
- // Install mcp-server.cjs
302
- const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');
303
- const mcpDest = path.join(binDir, 'mcp-server.cjs');
304
- if (fs.existsSync(mcpSrc)) {
305
- fs.mkdirSync(binDir, { recursive: true });
306
- fs.copyFileSync(mcpSrc, mcpDest);
307
- console.log(` ${chalk_1.default.green('\u2713')} Installed mcp-server.cjs`);
308
- }
309
- else {
310
- console.warn(` ${chalk_1.default.yellow('!')} mcp-server.cjs not found — MCP server not installed`);
311
- }
312
- // Install hooks
313
- (0, hooks_js_1.installHookFiles)(targetDir, isGlobal, failures);
314
- // Copy dashboard
315
- const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');
316
- if (fs.existsSync(dashboardSrc)) {
317
- let networkMode = false;
318
- try {
319
- networkMode = await (0, prompts_1.confirm)({
320
- message: 'Allow dashboard to be accessible on your local network? (adds firewall rule, enables QR code)',
321
- default: false,
322
- });
323
- }
324
- catch {
325
- // Non-interactive terminal — default to false
326
- }
327
- spinner = (0, ora_1.default)({ text: 'Installing dashboard...', color: 'cyan' }).start();
328
- const dashboardDest = path.join(targetDir, 'dashboard');
329
- (0, shared_js_1.safeRmDir)(dashboardDest);
330
- (0, shared_js_1.copyDirRecursive)(dashboardSrc, dashboardDest);
331
- const dashboardConfigDest = path.join(targetDir, 'dashboard.json');
332
- const projectCwd = isGlobal ? targetDir : process.cwd();
333
- fs.writeFileSync(dashboardConfigDest, JSON.stringify({ projectCwd, networkMode }, null, 2) + '\n');
334
- if (fs.existsSync(path.join(dashboardDest, 'server.js'))) {
335
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed dashboard');
336
- }
337
- else {
338
- spinner.succeed(chalk_1.default.green('\u2713') + ' Installed dashboard (server.js not found in bundle)');
339
- }
340
- if (networkMode) {
341
- (0, dashboard_js_1.applyFirewallRule)(3333);
342
- }
343
- }
344
- // Write .mcp.json for Claude Code MCP server auto-discovery
345
- const mcpJsonPath = isGlobal
346
- ? path.join(targetDir, '..', '.mcp.json')
347
- : path.join(process.cwd(), '.mcp.json');
348
- let mcpConfig = {};
349
- let skipMcpConfig = false;
350
- if (fs.existsSync(mcpJsonPath)) {
351
- // Back up existing .mcp.json before modification
352
- fs.copyFileSync(mcpJsonPath, mcpJsonPath + '.bak');
353
- try {
354
- mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
355
- }
356
- catch {
357
- // Corrupted .mcp.json — warn user
358
- console.warn(` ${chalk_1.default.yellow('!')} .mcp.json is corrupted (invalid JSON). Backup saved to .mcp.json.bak`);
359
- let startFresh = true;
360
- try {
361
- startFresh = await (0, prompts_1.confirm)({
362
- message: '.mcp.json is corrupted. Start with a fresh config? (No = abort MCP setup)',
363
- default: true,
364
- });
365
- }
366
- catch {
367
- // Non-interactive — default to starting fresh
368
- }
369
- if (!startFresh) {
370
- console.log(` ${chalk_1.default.yellow('!')} Skipping .mcp.json configuration`);
371
- skipMcpConfig = true;
372
- }
373
- }
374
- }
375
- if (!skipMcpConfig) {
376
- const mcpServers = mcpConfig.mcpServers ?? {};
377
- mcpServers['maxsim'] = {
378
- command: 'node',
379
- args: ['.claude/maxsim/bin/mcp-server.cjs'],
380
- env: {},
381
- };
382
- mcpConfig.mcpServers = mcpServers;
383
- fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\n', 'utf-8');
384
- console.log(` ${chalk_1.default.green('\u2713')} Configured .mcp.json for MCP server auto-discovery`);
385
- }
386
- if (failures.length > 0) {
387
- console.error(`\n ${chalk_1.default.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`);
388
- process.exit(1);
389
- }
390
- // Write file manifest for future modification detection
391
- (0, manifest_js_1.writeManifest)(targetDir);
392
- console.log(` ${chalk_1.default.green('\u2713')} Wrote file manifest (${manifest_js_1.MANIFEST_NAME})`);
393
- // Report any backed-up local patches
394
- (0, patches_js_1.reportLocalPatches)(targetDir);
395
- // Configure statusline and hooks in settings.json
396
- const { settingsPath, settings, statuslineCommand } = (0, hooks_js_1.configureSettingsHooks)(targetDir, isGlobal);
397
- return { settingsPath, settings, statuslineCommand };
398
- }
399
- /**
400
- * Prompt for install location
401
- */
402
- async function promptLocation() {
403
- if (!process.stdin.isTTY) {
404
- console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to global install') + '\n');
405
- return true; // isGlobal
406
- }
407
- const globalPath = (0, shared_js_1.getGlobalDir)(explicitConfigDir).replace(os.homedir(), '~');
408
- const choice = await (0, prompts_1.select)({
409
- message: 'Where would you like to install?',
410
- choices: [
411
- {
412
- name: 'Global ' + chalk_1.default.dim(`(${globalPath})`) + ' — available in all projects',
413
- value: 'global',
414
- },
415
- {
416
- name: 'Local ' + chalk_1.default.dim('(./.claude)') + ' — this project only',
417
- value: 'local',
418
- },
419
- ],
420
- });
421
- return choice === 'global';
422
- }
423
- /**
424
- * Prompt whether to enable Agent Teams (experimental feature)
425
- */
426
- async function promptAgentTeams() {
427
- console.log();
428
- console.log(chalk_1.default.cyan(' Agent Teams') + chalk_1.default.dim(' (experimental)'));
429
- console.log(chalk_1.default.dim(' Coordinate multiple Claude Code instances working in parallel.'));
430
- console.log(chalk_1.default.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));
431
- console.log();
432
- return (0, prompts_1.confirm)({
433
- message: 'Enable Agent Teams?',
434
- default: false,
435
- });
436
- }
437
- /**
438
- * Install MAXSIM for Claude Code
439
- */
440
- async function installForClaude(isGlobal, isInteractive) {
441
- const result = await install(isGlobal);
442
- let shouldInstallStatusline = false;
443
- if (result.settings) {
444
- shouldInstallStatusline = await (0, hooks_js_1.handleStatusline)(result.settings, isInteractive, forceStatusline);
445
- }
446
- // Prompt for Agent Teams
447
- let enableAgentTeams = false;
448
- if (isInteractive) {
449
- enableAgentTeams = await promptAgentTeams();
450
- }
451
- // Apply Agent Teams setting
452
- if (enableAgentTeams && result.settings) {
453
- const env = result.settings.env ?? {};
454
- env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';
455
- result.settings.env = env;
456
- }
457
- (0, hooks_js_1.finishInstall)(result.settingsPath, result.settings, result.statuslineCommand, shouldInstallStatusline, isGlobal);
458
- }
459
- // Main logic
460
- // Subcommand routing — intercept before install flow
461
- const subcommand = argv._[0];
462
- (async () => {
463
- // Dashboard subcommand
464
- if (subcommand === 'dashboard') {
465
- await (0, dashboard_js_1.runDashboardSubcommand)(argv);
466
- return;
467
- }
468
- // Skill management subcommands
469
- if (subcommand === 'skill-list' || subcommand === 'skill-install' || subcommand === 'skill-update') {
470
- const { cmdSkillList, cmdSkillInstall, cmdSkillUpdate } = await import('../core/skills.js');
471
- const { CliOutput, writeOutput, CliError } = await import('../core/core.js');
472
- const cwd = process.cwd();
473
- try {
474
- if (subcommand === 'skill-list') {
475
- cmdSkillList(cwd, false);
476
- }
477
- else if (subcommand === 'skill-install') {
478
- cmdSkillInstall(cwd, argv._[1], false);
479
- }
480
- else if (subcommand === 'skill-update') {
481
- cmdSkillUpdate(cwd, argv._[1], false);
482
- }
483
- }
484
- catch (thrown) {
485
- if (thrown instanceof CliOutput) {
486
- writeOutput(thrown);
487
- process.exit(0);
488
- }
489
- if (thrown instanceof CliError) {
490
- console.error('Error: ' + thrown.message);
491
- process.exit(1);
492
- }
493
- throw thrown;
494
- }
495
- return;
496
- }
497
- if (hasGlobal && hasLocal) {
498
- console.error(chalk_1.default.yellow('Cannot specify both --global and --local'));
499
- process.exit(1);
500
- }
501
- else if (explicitConfigDir && hasLocal) {
502
- console.error(chalk_1.default.yellow('Cannot use --config-dir with --local'));
503
- process.exit(1);
504
- }
505
- else if (hasUninstall) {
506
- if (!hasGlobal && !hasLocal) {
507
- console.error(chalk_1.default.yellow('--uninstall requires --global or --local'));
508
- process.exit(1);
509
- }
510
- (0, uninstall_js_1.uninstall)(hasGlobal, explicitConfigDir);
511
- }
512
- else if (hasGlobal || hasLocal) {
513
- await installForClaude(hasGlobal, false);
514
- }
515
- else {
516
- if (!process.stdin.isTTY) {
517
- console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to global install') + '\n');
518
- await installForClaude(true, false);
519
- }
520
- else {
521
- const isGlobal = await promptLocation();
522
- await installForClaude(isGlobal, true);
523
- }
524
- }
525
- })().catch((err) => {
526
- if (err instanceof Error && err.message.includes('User force closed')) {
527
- // User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly
528
- console.log('\n' + chalk_1.default.yellow('Installation cancelled') + '\n');
529
- process.exit(0);
530
- }
531
- console.error(chalk_1.default.red('Unexpected error:'), err);
532
- process.exit(1);
533
- });
534
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export declare const MANIFEST_NAME = "maxsim-file-manifest.json";
2
- /**
3
- * Compute SHA256 hash of file contents
4
- */
5
- export declare function fileHash(filePath: string): string;
6
- /**
7
- * Recursively collect all files in dir with their hashes
8
- */
9
- export declare function generateManifest(dir: string, baseDir?: string): Record<string, string>;
10
- export interface Manifest {
11
- version: string;
12
- timestamp: string;
13
- files: Record<string, string>;
14
- }
15
- /**
16
- * Write file manifest after installation for future modification detection
17
- */
18
- export declare function writeManifest(configDir: string): Manifest;
19
- /**
20
- * Read an existing manifest from the config directory, or return null if none exists / is invalid
21
- */
22
- export declare function readManifest(configDir: string): Manifest | null;
23
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/install/manifest.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,8BAA8B,CAAC;AAEzD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAChB,QAAQ,CA2CV;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ/D"}