maxsimcli 3.10.3 → 3.12.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/assets/CHANGELOG.md +26 -0
- package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +32 -0
- package/dist/assets/dashboard/client/assets/{index-CZ8WC97G.js → index-wtQDvXzr.js} +64 -64
- package/dist/assets/dashboard/client/index.html +2 -2
- package/dist/assets/dashboard/server.js +5 -1
- package/dist/assets/templates/agents/AGENTS.md +82 -0
- package/dist/assets/templates/commands/maxsim/settings.md +1 -1
- package/dist/assets/templates/skills/code-review/SKILL.md +151 -0
- package/dist/assets/templates/skills/memory-management/SKILL.md +174 -0
- package/dist/assets/templates/skills/simplify/SKILL.md +137 -0
- package/dist/assets/templates/skills/using-maxsim/SKILL.md +115 -0
- package/dist/assets/templates/templates/config.json +1 -1
- package/dist/assets/templates/workflows/add-tests.md +3 -3
- package/dist/assets/templates/workflows/complete-milestone.md +1 -1
- package/dist/assets/templates/workflows/execute-phase.md +4 -14
- package/dist/assets/templates/workflows/execute-plan.md +10 -0
- package/dist/assets/templates/workflows/init-existing.md +7 -3
- package/dist/assets/templates/workflows/new-milestone.md +4 -0
- package/dist/assets/templates/workflows/new-project.md +6 -2
- package/dist/assets/templates/workflows/plan-phase.md +2 -2
- package/dist/assets/templates/workflows/settings.md +8 -4
- package/dist/assets/templates/workflows/verify-work.md +1 -1
- package/dist/cli.cjs +818 -599
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +78 -204
- package/dist/cli.js.map +1 -1
- package/dist/core/commands.d.ts +7 -0
- package/dist/core/commands.d.ts.map +1 -1
- package/dist/core/commands.js +40 -35
- package/dist/core/commands.js.map +1 -1
- package/dist/core/core.d.ts +39 -1
- package/dist/core/core.d.ts.map +1 -1
- package/dist/core/core.js +122 -47
- package/dist/core/core.js.map +1 -1
- package/dist/core/dashboard-launcher.d.ts +56 -0
- package/dist/core/dashboard-launcher.d.ts.map +1 -0
- package/dist/core/dashboard-launcher.js +243 -0
- package/dist/core/dashboard-launcher.js.map +1 -0
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +20 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +2 -3
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +33 -52
- package/dist/core/init.js.map +1 -1
- package/dist/core/milestone.d.ts.map +1 -1
- package/dist/core/milestone.js +15 -20
- package/dist/core/milestone.js.map +1 -1
- package/dist/core/phase.d.ts +33 -0
- package/dist/core/phase.d.ts.map +1 -1
- package/dist/core/phase.js +282 -225
- package/dist/core/phase.js.map +1 -1
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/roadmap.js +17 -18
- package/dist/core/roadmap.js.map +1 -1
- package/dist/core/state.d.ts +5 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +51 -42
- package/dist/core/state.js.map +1 -1
- package/dist/core/template.d.ts.map +1 -1
- package/dist/core/template.js +1 -1
- package/dist/core/template.js.map +1 -1
- package/dist/core/types.d.ts +4 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/verify.d.ts.map +1 -1
- package/dist/core/verify.js +61 -80
- package/dist/core/verify.js.map +1 -1
- package/dist/install/adapters.d.ts +15 -0
- package/dist/install/adapters.d.ts.map +1 -0
- package/dist/install/adapters.js +203 -0
- package/dist/install/adapters.js.map +1 -0
- package/dist/install/copy.d.ts +15 -0
- package/dist/install/copy.d.ts.map +1 -0
- package/dist/install/copy.js +191 -0
- package/dist/install/copy.js.map +1 -0
- package/dist/install/dashboard.d.ts +16 -0
- package/dist/install/dashboard.d.ts.map +1 -0
- package/dist/install/dashboard.js +273 -0
- package/dist/install/dashboard.js.map +1 -0
- package/dist/install/hooks.d.ts +32 -0
- package/dist/install/hooks.d.ts.map +1 -0
- package/dist/install/hooks.js +285 -0
- package/dist/install/hooks.js.map +1 -0
- package/dist/install/index.d.ts +2 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +598 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/manifest.d.ts +20 -0
- package/dist/install/manifest.d.ts.map +1 -0
- package/dist/install/manifest.js +135 -0
- package/dist/install/manifest.js.map +1 -0
- package/dist/install/patches.d.ts +11 -0
- package/dist/install/patches.d.ts.map +1 -0
- package/dist/install/patches.js +136 -0
- package/dist/install/patches.js.map +1 -0
- package/dist/install/shared.d.ts +50 -0
- package/dist/install/shared.d.ts.map +1 -0
- package/dist/install/shared.js +142 -0
- package/dist/install/shared.js.map +1 -0
- package/dist/install/uninstall.d.ts +6 -0
- package/dist/install/uninstall.d.ts.map +1 -0
- package/dist/install/uninstall.js +280 -0
- package/dist/install/uninstall.js.map +1 -0
- package/dist/install.cjs +782 -705
- package/dist/install.cjs.map +1 -1
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +21 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/phase-tools.d.ts +13 -0
- package/dist/mcp/phase-tools.d.ts.map +1 -0
- package/dist/mcp/phase-tools.js +164 -0
- package/dist/mcp/phase-tools.js.map +1 -0
- package/dist/mcp/state-tools.d.ts +13 -0
- package/dist/mcp/state-tools.d.ts.map +1 -0
- package/dist/mcp/state-tools.js +185 -0
- package/dist/mcp/state-tools.js.map +1 -0
- package/dist/mcp/todo-tools.d.ts +13 -0
- package/dist/mcp/todo-tools.d.ts.map +1 -0
- package/dist/mcp/todo-tools.js +143 -0
- package/dist/mcp/todo-tools.js.map +1 -0
- package/dist/mcp/utils.d.ts +27 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +82 -0
- package/dist/mcp/utils.js.map +1 -0
- package/dist/mcp-server.cjs +11806 -0
- package/dist/mcp-server.cjs.map +1 -0
- package/dist/mcp-server.d.cts +2 -0
- package/dist/mcp-server.d.ts +12 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +31 -0
- package/dist/mcp-server.js.map +1 -0
- package/package.json +5 -3
- package/dist/assets/dashboard/client/assets/index-DzJChB-D.css +0 -32
- package/dist/install.d.ts +0 -2
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -1804
- package/dist/install.js.map +0 -1
|
@@ -0,0 +1,598 @@
|
|
|
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 index_js_1 = require("../adapters/index.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', 'opencode', 'claude', 'gemini', 'codex', 'both', 'all', '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 hasOpencode = !!argv['opencode'];
|
|
67
|
+
const hasClaude = !!argv['claude'];
|
|
68
|
+
const hasGemini = !!argv['gemini'];
|
|
69
|
+
const hasCodex = !!argv['codex'];
|
|
70
|
+
const hasBoth = !!argv['both']; // Legacy flag, keeps working
|
|
71
|
+
const hasAll = !!argv['all'];
|
|
72
|
+
const hasUninstall = !!argv['uninstall'];
|
|
73
|
+
// Runtime selection - can be set by flags or interactive prompt
|
|
74
|
+
let selectedRuntimes = [];
|
|
75
|
+
if (hasAll) {
|
|
76
|
+
selectedRuntimes = ['claude', 'opencode', 'gemini', 'codex'];
|
|
77
|
+
}
|
|
78
|
+
else if (hasBoth) {
|
|
79
|
+
selectedRuntimes = ['claude', 'opencode'];
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (hasOpencode)
|
|
83
|
+
selectedRuntimes.push('opencode');
|
|
84
|
+
if (hasClaude)
|
|
85
|
+
selectedRuntimes.push('claude');
|
|
86
|
+
if (hasGemini)
|
|
87
|
+
selectedRuntimes.push('gemini');
|
|
88
|
+
if (hasCodex)
|
|
89
|
+
selectedRuntimes.push('codex');
|
|
90
|
+
}
|
|
91
|
+
const banner = '\n' +
|
|
92
|
+
chalk_1.default.cyan(figlet_1.default.textSync('MAXSIM', { font: 'ANSI Shadow' })
|
|
93
|
+
.split('\n')
|
|
94
|
+
.map((line) => ' ' + line)
|
|
95
|
+
.join('\n')) +
|
|
96
|
+
'\n' +
|
|
97
|
+
'\n' +
|
|
98
|
+
' MAXSIM ' +
|
|
99
|
+
chalk_1.default.dim('v' + shared_js_1.pkg.version) +
|
|
100
|
+
'\n' +
|
|
101
|
+
' A meta-prompting, context engineering and spec-driven\n' +
|
|
102
|
+
' development system for Claude Code, OpenCode, Gemini, and Codex.\n';
|
|
103
|
+
// Parse --config-dir argument
|
|
104
|
+
const explicitConfigDir = argv['config-dir'] || null;
|
|
105
|
+
const hasHelp = !!argv['help'];
|
|
106
|
+
const hasVersion = !!argv['version'];
|
|
107
|
+
const forceStatusline = !!argv['force-statusline'];
|
|
108
|
+
// Show version if requested (before banner for clean output)
|
|
109
|
+
if (hasVersion) {
|
|
110
|
+
console.log(shared_js_1.pkg.version);
|
|
111
|
+
process.exit(0);
|
|
112
|
+
}
|
|
113
|
+
console.log(banner);
|
|
114
|
+
// Show help if requested
|
|
115
|
+
if (hasHelp) {
|
|
116
|
+
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('--claude')} Install for Claude Code only\n ${chalk_1.default.cyan('--opencode')} Install for OpenCode only\n ${chalk_1.default.cyan('--gemini')} Install for Gemini only\n ${chalk_1.default.cyan('--codex')} Install for Codex only\n ${chalk_1.default.cyan('--all')} Install for all runtimes\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 runtime and location)')}\n npx maxsimcli\n\n ${chalk_1.default.dim('# Install for Claude Code globally')}\n npx maxsimcli --claude --global\n\n ${chalk_1.default.dim('# Install for Gemini globally')}\n npx maxsimcli --gemini --global\n\n ${chalk_1.default.dim('# Install for Codex globally')}\n npx maxsimcli --codex --global\n\n ${chalk_1.default.dim('# Install for all runtimes globally')}\n npx maxsimcli --all --global\n\n ${chalk_1.default.dim('# Install to custom config directory')}\n npx maxsimcli --codex --global --config-dir ~/.codex-work\n\n ${chalk_1.default.dim('# Install to current project only')}\n npx maxsimcli --claude --local\n\n ${chalk_1.default.dim('# Uninstall MAXSIM from Codex globally')}\n npx maxsimcli --codex --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 CLAUDE_CONFIG_DIR / GEMINI_CONFIG_DIR / CODEX_HOME environment variables.\n`);
|
|
117
|
+
process.exit(0);
|
|
118
|
+
}
|
|
119
|
+
async function install(isGlobal, runtime = 'claude') {
|
|
120
|
+
const isOpencode = runtime === 'opencode';
|
|
121
|
+
const isGemini = runtime === 'gemini';
|
|
122
|
+
const isCodex = runtime === 'codex';
|
|
123
|
+
const dirName = (0, shared_js_1.getDirName)(runtime);
|
|
124
|
+
const src = shared_js_1.templatesRoot;
|
|
125
|
+
const targetDir = isGlobal
|
|
126
|
+
? (0, shared_js_1.getGlobalDir)(runtime, explicitConfigDir)
|
|
127
|
+
: path.join(process.cwd(), dirName);
|
|
128
|
+
const locationLabel = isGlobal
|
|
129
|
+
? targetDir.replace(os.homedir(), '~')
|
|
130
|
+
: targetDir.replace(process.cwd(), '.');
|
|
131
|
+
const pathPrefix = isGlobal
|
|
132
|
+
? `${targetDir.replace(/\\/g, '/')}/`
|
|
133
|
+
: `./${dirName}/`;
|
|
134
|
+
let runtimeLabel = 'Claude Code';
|
|
135
|
+
if (isOpencode)
|
|
136
|
+
runtimeLabel = 'OpenCode';
|
|
137
|
+
if (isGemini)
|
|
138
|
+
runtimeLabel = 'Gemini';
|
|
139
|
+
if (isCodex)
|
|
140
|
+
runtimeLabel = 'Codex';
|
|
141
|
+
console.log(` Installing for ${chalk_1.default.cyan(runtimeLabel)} to ${chalk_1.default.cyan(locationLabel)}\n`);
|
|
142
|
+
const failures = [];
|
|
143
|
+
// Save any locally modified MAXSIM files before they get wiped
|
|
144
|
+
(0, patches_js_1.saveLocalPatches)(targetDir);
|
|
145
|
+
// Clean up orphaned files from previous versions
|
|
146
|
+
(0, hooks_js_1.cleanupOrphanedFiles)(targetDir);
|
|
147
|
+
// OpenCode uses command/ (flat), Codex uses skills/, Claude/Gemini use commands/maxsim/
|
|
148
|
+
let spinner = (0, ora_1.default)({ text: 'Installing commands...', color: 'cyan' }).start();
|
|
149
|
+
if (isOpencode) {
|
|
150
|
+
const commandDir = path.join(targetDir, 'command');
|
|
151
|
+
fs.mkdirSync(commandDir, { recursive: true });
|
|
152
|
+
const maxsimSrc = path.join(src, 'commands', 'maxsim');
|
|
153
|
+
(0, copy_js_1.copyFlattenedCommands)(maxsimSrc, commandDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);
|
|
154
|
+
if ((0, shared_js_1.verifyInstalled)(commandDir, 'command/maxsim-*')) {
|
|
155
|
+
const count = fs
|
|
156
|
+
.readdirSync(commandDir)
|
|
157
|
+
.filter((f) => f.startsWith('maxsim-')).length;
|
|
158
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${count} commands to command/`);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
spinner.fail('Failed to install commands');
|
|
162
|
+
failures.push('command/maxsim-*');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else if (isCodex) {
|
|
166
|
+
const skillsDir = path.join(targetDir, 'skills');
|
|
167
|
+
const maxsimSrc = path.join(src, 'commands', 'maxsim');
|
|
168
|
+
(0, copy_js_1.copyCommandsAsCodexSkills)(maxsimSrc, skillsDir, 'maxsim', pathPrefix, runtime, explicitConfigDir);
|
|
169
|
+
const installedSkillNames = (0, copy_js_1.listCodexSkillNames)(skillsDir);
|
|
170
|
+
if (installedSkillNames.length > 0) {
|
|
171
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillNames.length} skills to skills/`);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
spinner.fail('Failed to install skills');
|
|
175
|
+
failures.push('skills/maxsim-*');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
const commandsDir = path.join(targetDir, 'commands');
|
|
180
|
+
fs.mkdirSync(commandsDir, { recursive: true });
|
|
181
|
+
const maxsimSrc = path.join(src, 'commands', 'maxsim');
|
|
182
|
+
const maxsimDest = path.join(commandsDir, 'maxsim');
|
|
183
|
+
(0, copy_js_1.copyWithPathReplacement)(maxsimSrc, maxsimDest, pathPrefix, runtime, explicitConfigDir, true);
|
|
184
|
+
if ((0, shared_js_1.verifyInstalled)(maxsimDest, 'commands/maxsim')) {
|
|
185
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed commands/maxsim');
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
spinner.fail('Failed to install commands/maxsim');
|
|
189
|
+
failures.push('commands/maxsim');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Copy maxsim directory content (workflows, templates, references) with path replacement
|
|
193
|
+
spinner = (0, ora_1.default)({ text: 'Installing workflows and templates...', color: 'cyan' }).start();
|
|
194
|
+
const skillDest = path.join(targetDir, 'maxsim');
|
|
195
|
+
const maxsimSubdirs = ['workflows', 'templates', 'references'];
|
|
196
|
+
if (fs.existsSync(skillDest)) {
|
|
197
|
+
fs.rmSync(skillDest, { recursive: true });
|
|
198
|
+
}
|
|
199
|
+
fs.mkdirSync(skillDest, { recursive: true });
|
|
200
|
+
for (const subdir of maxsimSubdirs) {
|
|
201
|
+
const subdirSrc = path.join(src, subdir);
|
|
202
|
+
if (fs.existsSync(subdirSrc)) {
|
|
203
|
+
const subdirDest = path.join(skillDest, subdir);
|
|
204
|
+
(0, copy_js_1.copyWithPathReplacement)(subdirSrc, subdirDest, pathPrefix, runtime, explicitConfigDir);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if ((0, shared_js_1.verifyInstalled)(skillDest, 'maxsim')) {
|
|
208
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed maxsim');
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
spinner.fail('Failed to install maxsim');
|
|
212
|
+
failures.push('maxsim');
|
|
213
|
+
}
|
|
214
|
+
// Copy agents to agents directory
|
|
215
|
+
const agentsSrc = path.join(src, 'agents');
|
|
216
|
+
if (fs.existsSync(agentsSrc)) {
|
|
217
|
+
spinner = (0, ora_1.default)({ text: 'Installing agents...', color: 'cyan' }).start();
|
|
218
|
+
const agentsDest = path.join(targetDir, 'agents');
|
|
219
|
+
fs.mkdirSync(agentsDest, { recursive: true });
|
|
220
|
+
// Remove old MAXSIM agents before copying new ones
|
|
221
|
+
if (fs.existsSync(agentsDest)) {
|
|
222
|
+
for (const file of fs.readdirSync(agentsDest)) {
|
|
223
|
+
if (file.startsWith('maxsim-') && file.endsWith('.md')) {
|
|
224
|
+
fs.unlinkSync(path.join(agentsDest, file));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const agentEntries = fs.readdirSync(agentsSrc, { withFileTypes: true });
|
|
229
|
+
for (const entry of agentEntries) {
|
|
230
|
+
if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
231
|
+
let content = fs.readFileSync(path.join(agentsSrc, entry.name), 'utf8');
|
|
232
|
+
const dirRegex = /~\/\.claude\//g;
|
|
233
|
+
content = content.replace(dirRegex, pathPrefix);
|
|
234
|
+
content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(runtime, explicitConfigDir));
|
|
235
|
+
if (isOpencode) {
|
|
236
|
+
content = (0, index_js_1.convertClaudeToOpencodeFrontmatter)(content);
|
|
237
|
+
}
|
|
238
|
+
else if (isGemini) {
|
|
239
|
+
content = (0, index_js_1.convertClaudeToGeminiAgent)(content);
|
|
240
|
+
}
|
|
241
|
+
else if (isCodex) {
|
|
242
|
+
content = (0, index_js_1.convertClaudeToCodexMarkdown)(content);
|
|
243
|
+
}
|
|
244
|
+
fs.writeFileSync(path.join(agentsDest, entry.name), content);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if ((0, shared_js_1.verifyInstalled)(agentsDest, 'agents')) {
|
|
248
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed agents');
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
spinner.fail('Failed to install agents');
|
|
252
|
+
failures.push('agents');
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Copy skills to agents/skills/ directory
|
|
256
|
+
const skillsSrc = path.join(src, 'skills');
|
|
257
|
+
if (fs.existsSync(skillsSrc)) {
|
|
258
|
+
spinner = (0, ora_1.default)({ text: 'Installing skills...', color: 'cyan' }).start();
|
|
259
|
+
const skillsDest = path.join(targetDir, 'agents', 'skills');
|
|
260
|
+
// Remove old MAXSIM built-in skills before copying new ones (preserve user custom skills)
|
|
261
|
+
if (fs.existsSync(skillsDest)) {
|
|
262
|
+
const builtInSkills = ['tdd', 'systematic-debugging', 'verification-before-completion'];
|
|
263
|
+
for (const skill of builtInSkills) {
|
|
264
|
+
const skillDir = path.join(skillsDest, skill);
|
|
265
|
+
if (fs.existsSync(skillDir)) {
|
|
266
|
+
fs.rmSync(skillDir, { recursive: true });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Copy skills directory recursively
|
|
271
|
+
fs_extra_1.default.copySync(skillsSrc, skillsDest, { overwrite: true });
|
|
272
|
+
// Process path prefixes in skill files
|
|
273
|
+
const skillEntries = fs.readdirSync(skillsDest, { withFileTypes: true });
|
|
274
|
+
for (const entry of skillEntries) {
|
|
275
|
+
if (entry.isDirectory()) {
|
|
276
|
+
const skillMd = path.join(skillsDest, entry.name, 'SKILL.md');
|
|
277
|
+
if (fs.existsSync(skillMd)) {
|
|
278
|
+
let content = fs.readFileSync(skillMd, 'utf8');
|
|
279
|
+
const dirRegex = /~\/\.claude\//g;
|
|
280
|
+
content = content.replace(dirRegex, pathPrefix);
|
|
281
|
+
content = (0, index_js_1.processAttribution)(content, (0, adapters_js_1.getCommitAttribution)(runtime, explicitConfigDir));
|
|
282
|
+
fs.writeFileSync(skillMd, content);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const installedSkillDirs = fs.readdirSync(skillsDest, { withFileTypes: true })
|
|
287
|
+
.filter(e => e.isDirectory()).length;
|
|
288
|
+
if (installedSkillDirs > 0) {
|
|
289
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ` Installed ${installedSkillDirs} skills to agents/skills/`);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
spinner.fail('Failed to install skills');
|
|
293
|
+
failures.push('agents/skills');
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Copy CHANGELOG.md
|
|
297
|
+
const changelogSrc = path.join(src, '..', 'CHANGELOG.md');
|
|
298
|
+
const changelogDest = path.join(targetDir, 'maxsim', 'CHANGELOG.md');
|
|
299
|
+
if (fs.existsSync(changelogSrc)) {
|
|
300
|
+
spinner = (0, ora_1.default)({ text: 'Installing CHANGELOG.md...', color: 'cyan' }).start();
|
|
301
|
+
fs.copyFileSync(changelogSrc, changelogDest);
|
|
302
|
+
if ((0, shared_js_1.verifyFileInstalled)(changelogDest, 'CHANGELOG.md')) {
|
|
303
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed CHANGELOG.md');
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
spinner.fail('Failed to install CHANGELOG.md');
|
|
307
|
+
failures.push('CHANGELOG.md');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Copy CLAUDE.md
|
|
311
|
+
const claudeMdSrc = path.join(src, 'CLAUDE.md');
|
|
312
|
+
const claudeMdDest = path.join(targetDir, 'CLAUDE.md');
|
|
313
|
+
if (fs.existsSync(claudeMdSrc)) {
|
|
314
|
+
spinner = (0, ora_1.default)({ text: 'Installing CLAUDE.md...', color: 'cyan' }).start();
|
|
315
|
+
fs.copyFileSync(claudeMdSrc, claudeMdDest);
|
|
316
|
+
if ((0, shared_js_1.verifyFileInstalled)(claudeMdDest, 'CLAUDE.md')) {
|
|
317
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed CLAUDE.md');
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
spinner.fail('Failed to install CLAUDE.md');
|
|
321
|
+
failures.push('CLAUDE.md');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Write VERSION file
|
|
325
|
+
const versionDest = path.join(targetDir, 'maxsim', 'VERSION');
|
|
326
|
+
fs.writeFileSync(versionDest, shared_js_1.pkg.version);
|
|
327
|
+
if ((0, shared_js_1.verifyFileInstalled)(versionDest, 'VERSION')) {
|
|
328
|
+
console.log(` ${chalk_1.default.green('\u2713')} Wrote VERSION (${shared_js_1.pkg.version})`);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
failures.push('VERSION');
|
|
332
|
+
}
|
|
333
|
+
if (!isCodex) {
|
|
334
|
+
// Write package.json to force CommonJS mode for MAXSIM scripts
|
|
335
|
+
const pkgJsonDest = path.join(targetDir, 'package.json');
|
|
336
|
+
fs.writeFileSync(pkgJsonDest, '{"type":"commonjs"}\n');
|
|
337
|
+
console.log(` ${chalk_1.default.green('\u2713')} Wrote package.json (CommonJS mode)`);
|
|
338
|
+
// Install maxsim-tools.cjs binary
|
|
339
|
+
const toolSrc = path.resolve(__dirname, 'cli.cjs');
|
|
340
|
+
const binDir = path.join(targetDir, 'maxsim', 'bin');
|
|
341
|
+
const toolDest = path.join(binDir, 'maxsim-tools.cjs');
|
|
342
|
+
if (fs.existsSync(toolSrc)) {
|
|
343
|
+
fs.mkdirSync(binDir, { recursive: true });
|
|
344
|
+
fs.copyFileSync(toolSrc, toolDest);
|
|
345
|
+
console.log(` ${chalk_1.default.green('\u2713')} Installed maxsim-tools.cjs`);
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
console.warn(` ${chalk_1.default.yellow('!')} cli.cjs not found at ${toolSrc} — maxsim-tools.cjs not installed`);
|
|
349
|
+
failures.push('maxsim-tools.cjs');
|
|
350
|
+
}
|
|
351
|
+
// Install mcp-server.cjs
|
|
352
|
+
const mcpSrc = path.resolve(__dirname, 'mcp-server.cjs');
|
|
353
|
+
const mcpDest = path.join(binDir, 'mcp-server.cjs');
|
|
354
|
+
if (fs.existsSync(mcpSrc)) {
|
|
355
|
+
fs.mkdirSync(binDir, { recursive: true });
|
|
356
|
+
fs.copyFileSync(mcpSrc, mcpDest);
|
|
357
|
+
console.log(` ${chalk_1.default.green('\u2713')} Installed mcp-server.cjs`);
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
console.warn(` ${chalk_1.default.yellow('!')} mcp-server.cjs not found — MCP server not installed`);
|
|
361
|
+
}
|
|
362
|
+
// Install hooks
|
|
363
|
+
(0, hooks_js_1.installHookFiles)(targetDir, runtime, isGlobal, failures);
|
|
364
|
+
}
|
|
365
|
+
// Copy dashboard
|
|
366
|
+
const dashboardSrc = path.resolve(__dirname, 'assets', 'dashboard');
|
|
367
|
+
if (fs.existsSync(dashboardSrc)) {
|
|
368
|
+
let networkMode = false;
|
|
369
|
+
try {
|
|
370
|
+
networkMode = await (0, prompts_1.confirm)({
|
|
371
|
+
message: 'Allow dashboard to be accessible on your local network? (adds firewall rule, enables QR code)',
|
|
372
|
+
default: false,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
// Non-interactive terminal — default to false
|
|
377
|
+
}
|
|
378
|
+
spinner = (0, ora_1.default)({ text: 'Installing dashboard...', color: 'cyan' }).start();
|
|
379
|
+
const dashboardDest = path.join(targetDir, 'dashboard');
|
|
380
|
+
(0, shared_js_1.safeRmDir)(dashboardDest);
|
|
381
|
+
(0, shared_js_1.copyDirRecursive)(dashboardSrc, dashboardDest);
|
|
382
|
+
const dashboardConfigDest = path.join(targetDir, 'dashboard.json');
|
|
383
|
+
const projectCwd = isGlobal ? targetDir : process.cwd();
|
|
384
|
+
fs.writeFileSync(dashboardConfigDest, JSON.stringify({ projectCwd, networkMode }, null, 2) + '\n');
|
|
385
|
+
if (fs.existsSync(path.join(dashboardDest, 'server.js'))) {
|
|
386
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed dashboard');
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
spinner.succeed(chalk_1.default.green('\u2713') + ' Installed dashboard (server.js not found in bundle)');
|
|
390
|
+
}
|
|
391
|
+
if (networkMode) {
|
|
392
|
+
(0, dashboard_js_1.applyFirewallRule)(3333);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Write .mcp.json for Claude Code MCP server auto-discovery
|
|
396
|
+
if (!isOpencode && !isCodex && !isGemini) {
|
|
397
|
+
const mcpJsonPath = isGlobal
|
|
398
|
+
? path.join(targetDir, '..', '.mcp.json')
|
|
399
|
+
: path.join(process.cwd(), '.mcp.json');
|
|
400
|
+
let mcpConfig = {};
|
|
401
|
+
if (fs.existsSync(mcpJsonPath)) {
|
|
402
|
+
try {
|
|
403
|
+
mcpConfig = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// Corrupted file — start fresh
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
const mcpServers = mcpConfig.mcpServers ?? {};
|
|
410
|
+
mcpServers['maxsim'] = {
|
|
411
|
+
command: 'node',
|
|
412
|
+
args: ['.claude/maxsim/bin/mcp-server.cjs'],
|
|
413
|
+
env: {},
|
|
414
|
+
};
|
|
415
|
+
mcpConfig.mcpServers = mcpServers;
|
|
416
|
+
fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\n', 'utf-8');
|
|
417
|
+
console.log(` ${chalk_1.default.green('\u2713')} Configured .mcp.json for MCP server auto-discovery`);
|
|
418
|
+
}
|
|
419
|
+
if (failures.length > 0) {
|
|
420
|
+
console.error(`\n ${chalk_1.default.yellow('Installation incomplete!')} Failed: ${failures.join(', ')}`);
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
// Write file manifest for future modification detection
|
|
424
|
+
(0, manifest_js_1.writeManifest)(targetDir, runtime);
|
|
425
|
+
console.log(` ${chalk_1.default.green('\u2713')} Wrote file manifest (${manifest_js_1.MANIFEST_NAME})`);
|
|
426
|
+
// Report any backed-up local patches
|
|
427
|
+
(0, patches_js_1.reportLocalPatches)(targetDir, runtime);
|
|
428
|
+
if (isCodex) {
|
|
429
|
+
return {
|
|
430
|
+
settingsPath: null,
|
|
431
|
+
settings: null,
|
|
432
|
+
statuslineCommand: null,
|
|
433
|
+
runtime,
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
// Configure statusline and hooks in settings.json
|
|
437
|
+
const { settingsPath, settings, statuslineCommand } = (0, hooks_js_1.configureSettingsHooks)(targetDir, runtime, isGlobal);
|
|
438
|
+
// Enable experimental agents for Gemini CLI
|
|
439
|
+
if (isGemini) {
|
|
440
|
+
if (!settings.experimental) {
|
|
441
|
+
settings.experimental = {};
|
|
442
|
+
}
|
|
443
|
+
const experimental = settings.experimental;
|
|
444
|
+
if (!experimental.enableAgents) {
|
|
445
|
+
experimental.enableAgents = true;
|
|
446
|
+
console.log(` ${chalk_1.default.green('\u2713')} Enabled experimental agents`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
return { settingsPath, settings, statuslineCommand, runtime };
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Prompt for runtime selection (multi-select)
|
|
453
|
+
*/
|
|
454
|
+
async function promptRuntime() {
|
|
455
|
+
const selected = await (0, prompts_1.checkbox)({
|
|
456
|
+
message: 'Which runtime(s) would you like to install for?',
|
|
457
|
+
choices: [
|
|
458
|
+
{ name: 'Claude Code ' + chalk_1.default.dim('(~/.claude)'), value: 'claude', checked: true },
|
|
459
|
+
{ name: 'OpenCode ' + chalk_1.default.dim('(~/.config/opencode)') + ' — open source, free models', value: 'opencode' },
|
|
460
|
+
{ name: 'Gemini ' + chalk_1.default.dim('(~/.gemini)'), value: 'gemini' },
|
|
461
|
+
{ name: 'Codex ' + chalk_1.default.dim('(~/.codex)'), value: 'codex' },
|
|
462
|
+
],
|
|
463
|
+
validate: (choices) => choices.length > 0 || 'Please select at least one runtime',
|
|
464
|
+
});
|
|
465
|
+
return selected;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Prompt for install location
|
|
469
|
+
*/
|
|
470
|
+
async function promptLocation(runtimes) {
|
|
471
|
+
if (!process.stdin.isTTY) {
|
|
472
|
+
console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to global install') + '\n');
|
|
473
|
+
return true; // isGlobal
|
|
474
|
+
}
|
|
475
|
+
const pathExamples = runtimes
|
|
476
|
+
.map((r) => (0, shared_js_1.getGlobalDir)(r, explicitConfigDir).replace(os.homedir(), '~'))
|
|
477
|
+
.join(', ');
|
|
478
|
+
const localExamples = runtimes.map((r) => `./${(0, shared_js_1.getDirName)(r)}`).join(', ');
|
|
479
|
+
const choice = await (0, prompts_1.select)({
|
|
480
|
+
message: 'Where would you like to install?',
|
|
481
|
+
choices: [
|
|
482
|
+
{
|
|
483
|
+
name: 'Global ' + chalk_1.default.dim(`(${pathExamples})`) + ' — available in all projects',
|
|
484
|
+
value: 'global',
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
name: 'Local ' + chalk_1.default.dim(`(${localExamples})`) + ' — this project only',
|
|
488
|
+
value: 'local',
|
|
489
|
+
},
|
|
490
|
+
],
|
|
491
|
+
});
|
|
492
|
+
return choice === 'global';
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Prompt whether to enable Agent Teams (Claude only, experimental feature)
|
|
496
|
+
*/
|
|
497
|
+
async function promptAgentTeams() {
|
|
498
|
+
console.log();
|
|
499
|
+
console.log(chalk_1.default.cyan(' Agent Teams') + chalk_1.default.dim(' (experimental)'));
|
|
500
|
+
console.log(chalk_1.default.dim(' Coordinate multiple Claude Code instances working in parallel.'));
|
|
501
|
+
console.log(chalk_1.default.dim(' Enables CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in settings.json.'));
|
|
502
|
+
console.log();
|
|
503
|
+
return (0, prompts_1.confirm)({
|
|
504
|
+
message: 'Enable Agent Teams?',
|
|
505
|
+
default: false,
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Install MAXSIM for all selected runtimes
|
|
510
|
+
*/
|
|
511
|
+
async function installAllRuntimes(runtimes, isGlobal, isInteractive) {
|
|
512
|
+
const results = [];
|
|
513
|
+
for (const runtime of runtimes) {
|
|
514
|
+
const result = await install(isGlobal, runtime);
|
|
515
|
+
results.push(result);
|
|
516
|
+
}
|
|
517
|
+
const statuslineRuntimes = ['claude', 'gemini'];
|
|
518
|
+
const primaryStatuslineResult = results.find((r) => statuslineRuntimes.includes(r.runtime));
|
|
519
|
+
let shouldInstallStatusline = false;
|
|
520
|
+
if (primaryStatuslineResult && primaryStatuslineResult.settings) {
|
|
521
|
+
shouldInstallStatusline = await (0, hooks_js_1.handleStatusline)(primaryStatuslineResult.settings, isInteractive, forceStatusline);
|
|
522
|
+
}
|
|
523
|
+
// Prompt for Agent Teams if Claude is in the selected runtimes
|
|
524
|
+
let enableAgentTeams = false;
|
|
525
|
+
if (isInteractive && runtimes.includes('claude')) {
|
|
526
|
+
enableAgentTeams = await promptAgentTeams();
|
|
527
|
+
}
|
|
528
|
+
for (const result of results) {
|
|
529
|
+
const useStatusline = statuslineRuntimes.includes(result.runtime) && shouldInstallStatusline;
|
|
530
|
+
// Apply Agent Teams setting for Claude
|
|
531
|
+
if (result.runtime === 'claude' && enableAgentTeams && result.settings) {
|
|
532
|
+
const env = result.settings.env ?? {};
|
|
533
|
+
env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';
|
|
534
|
+
result.settings.env = env;
|
|
535
|
+
}
|
|
536
|
+
(0, hooks_js_1.finishInstall)(result.settingsPath, result.settings, result.statuslineCommand, useStatusline, result.runtime, isGlobal);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// Main logic
|
|
540
|
+
// Subcommand routing — intercept before install flow
|
|
541
|
+
const subcommand = argv._[0];
|
|
542
|
+
(async () => {
|
|
543
|
+
// Dashboard subcommand
|
|
544
|
+
if (subcommand === 'dashboard') {
|
|
545
|
+
await (0, dashboard_js_1.runDashboardSubcommand)(argv);
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
if (hasGlobal && hasLocal) {
|
|
549
|
+
console.error(chalk_1.default.yellow('Cannot specify both --global and --local'));
|
|
550
|
+
process.exit(1);
|
|
551
|
+
}
|
|
552
|
+
else if (explicitConfigDir && hasLocal) {
|
|
553
|
+
console.error(chalk_1.default.yellow('Cannot use --config-dir with --local'));
|
|
554
|
+
process.exit(1);
|
|
555
|
+
}
|
|
556
|
+
else if (hasUninstall) {
|
|
557
|
+
if (!hasGlobal && !hasLocal) {
|
|
558
|
+
console.error(chalk_1.default.yellow('--uninstall requires --global or --local'));
|
|
559
|
+
process.exit(1);
|
|
560
|
+
}
|
|
561
|
+
const runtimes = selectedRuntimes.length > 0 ? selectedRuntimes : ['claude'];
|
|
562
|
+
for (const runtime of runtimes) {
|
|
563
|
+
(0, uninstall_js_1.uninstall)(hasGlobal, runtime, explicitConfigDir);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
else if (selectedRuntimes.length > 0) {
|
|
567
|
+
if (!hasGlobal && !hasLocal) {
|
|
568
|
+
const isGlobal = await promptLocation(selectedRuntimes);
|
|
569
|
+
await installAllRuntimes(selectedRuntimes, isGlobal, true);
|
|
570
|
+
}
|
|
571
|
+
else {
|
|
572
|
+
await installAllRuntimes(selectedRuntimes, hasGlobal, false);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
else if (hasGlobal || hasLocal) {
|
|
576
|
+
await installAllRuntimes(['claude'], hasGlobal, false);
|
|
577
|
+
}
|
|
578
|
+
else {
|
|
579
|
+
if (!process.stdin.isTTY) {
|
|
580
|
+
console.log(chalk_1.default.yellow('Non-interactive terminal detected, defaulting to Claude Code global install') + '\n');
|
|
581
|
+
await installAllRuntimes(['claude'], true, false);
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
const runtimes = await promptRuntime();
|
|
585
|
+
const isGlobal = await promptLocation(runtimes);
|
|
586
|
+
await installAllRuntimes(runtimes, isGlobal, true);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
})().catch((err) => {
|
|
590
|
+
if (err instanceof Error && err.message.includes('User force closed')) {
|
|
591
|
+
// User pressed Ctrl+C during an @inquirer/prompts prompt — exit cleanly
|
|
592
|
+
console.log('\n' + chalk_1.default.yellow('Installation cancelled') + '\n');
|
|
593
|
+
process.exit(0);
|
|
594
|
+
}
|
|
595
|
+
console.error(chalk_1.default.red('Unexpected error:'), err);
|
|
596
|
+
process.exit(1);
|
|
597
|
+
});
|
|
598
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"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"}
|