@solidxai/solidctl 0.1.46-beta.2 → 0.1.46-beta.4

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 (34) hide show
  1. package/dist/commands/agent-helper.js +15 -12
  2. package/dist/commands/agent-helper.js.map +1 -1
  3. package/dist/commands/generate.command.js +11 -0
  4. package/dist/commands/generate.command.js.map +1 -1
  5. package/dist/commands/mcp/installers/claude-code.d.ts +22 -0
  6. package/dist/commands/mcp/installers/claude-code.js +126 -0
  7. package/dist/commands/mcp/installers/claude-code.js.map +1 -0
  8. package/dist/commands/mcp/installers/claude-desktop.d.ts +21 -0
  9. package/dist/commands/mcp/installers/claude-desktop.js +100 -0
  10. package/dist/commands/mcp/installers/claude-desktop.js.map +1 -0
  11. package/dist/commands/mcp/installers/codex.d.ts +10 -0
  12. package/dist/commands/mcp/installers/codex.js +153 -0
  13. package/dist/commands/mcp/installers/codex.js.map +1 -0
  14. package/dist/commands/mcp/installers/config-paths.d.ts +11 -0
  15. package/dist/commands/mcp/installers/config-paths.js +57 -0
  16. package/dist/commands/mcp/installers/config-paths.js.map +1 -0
  17. package/dist/commands/mcp/installers/cursor.d.ts +20 -0
  18. package/dist/commands/mcp/installers/cursor.js +122 -0
  19. package/dist/commands/mcp/installers/cursor.js.map +1 -0
  20. package/dist/commands/mcp/installers/types.d.ts +32 -0
  21. package/dist/commands/mcp/installers/types.js +33 -0
  22. package/dist/commands/mcp/installers/types.js.map +1 -0
  23. package/dist/commands/mcp/mcp-install.command.d.ts +14 -0
  24. package/dist/commands/mcp/mcp-install.command.js +162 -0
  25. package/dist/commands/mcp/mcp-install.command.js.map +1 -0
  26. package/dist/commands/mcp.command.js +2 -0
  27. package/dist/commands/mcp.command.js.map +1 -1
  28. package/dist/tsconfig.build.tsbuildinfo +1 -1
  29. package/dist/utils/interactive.d.ts +1 -0
  30. package/dist/utils/interactive.js +7 -0
  31. package/dist/utils/interactive.js.map +1 -0
  32. package/dist/version-check.js +11 -8
  33. package/dist/version-check.js.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ export declare function claudeCodeConfigPath(homeDir?: string): string;
2
+ export declare function cursorConfigPath(homeDir?: string): string;
3
+ export declare function codexConfigPath(homeDir?: string): string;
4
+ export interface ClaudeDesktopPathOpts {
5
+ homeDir?: string;
6
+ platform?: NodeJS.Platform;
7
+ appData?: string;
8
+ }
9
+ export declare function claudeDesktopConfigPath(opts?: ClaudeDesktopPathOpts): string;
10
+ export declare function backupFile(filePath: string): string | null;
11
+ export declare function commandExists(cmd: string, platform?: NodeJS.Platform): boolean;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.claudeCodeConfigPath = claudeCodeConfigPath;
7
+ exports.cursorConfigPath = cursorConfigPath;
8
+ exports.codexConfigPath = codexConfigPath;
9
+ exports.claudeDesktopConfigPath = claudeDesktopConfigPath;
10
+ exports.backupFile = backupFile;
11
+ exports.commandExists = commandExists;
12
+ const child_process_1 = require("child_process");
13
+ const fs_extra_1 = __importDefault(require("fs-extra"));
14
+ const os_1 = __importDefault(require("os"));
15
+ const path_1 = __importDefault(require("path"));
16
+ function claudeCodeConfigPath(homeDir = os_1.default.homedir()) {
17
+ return path_1.default.join(homeDir, '.claude.json');
18
+ }
19
+ function cursorConfigPath(homeDir = os_1.default.homedir()) {
20
+ return path_1.default.join(homeDir, '.cursor', 'mcp.json');
21
+ }
22
+ function codexConfigPath(homeDir = os_1.default.homedir()) {
23
+ return path_1.default.join(homeDir, '.codex', 'config.toml');
24
+ }
25
+ function claudeDesktopConfigPath(opts = {}) {
26
+ const platform = opts.platform ?? process.platform;
27
+ const homeDir = opts.homeDir ?? os_1.default.homedir();
28
+ const filename = 'claude_desktop_config.json';
29
+ if (platform === 'darwin') {
30
+ return path_1.default.join(homeDir, 'Library', 'Application Support', 'Claude', filename);
31
+ }
32
+ if (platform === 'win32') {
33
+ const appData = opts.appData ?? process.env.APPDATA;
34
+ if (!appData) {
35
+ throw new Error('APPDATA environment variable is not set; cannot locate Claude Desktop config on Windows.');
36
+ }
37
+ return path_1.default.join(appData, 'Claude', filename);
38
+ }
39
+ return path_1.default.join(homeDir, '.config', 'Claude', filename);
40
+ }
41
+ function backupFile(filePath) {
42
+ if (!fs_extra_1.default.existsSync(filePath))
43
+ return null;
44
+ const d = new Date();
45
+ const pad = (n) => String(n).padStart(2, '0');
46
+ const ts = `${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}`;
47
+ const backupPath = `${filePath}.solidx-bak-${ts}`;
48
+ fs_extra_1.default.copyFileSync(filePath, backupPath);
49
+ return backupPath;
50
+ }
51
+ function commandExists(cmd, platform = process.platform) {
52
+ const result = (0, child_process_1.spawnSync)(platform === 'win32' ? 'where' : 'which', [cmd], {
53
+ stdio: 'pipe',
54
+ });
55
+ return result.status === 0;
56
+ }
57
+ //# sourceMappingURL=config-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-paths.js","sourceRoot":"","sources":["../../../../src/commands/mcp/installers/config-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { AgentInstaller, InstallDeps, McpInstallOptions } from './types';
2
+ export interface CursorEntry {
3
+ url: string;
4
+ headers: {
5
+ 'solidx-api-key': string;
6
+ };
7
+ }
8
+ export declare function buildCursorEntry(opts: McpInstallOptions): CursorEntry;
9
+ type CursorConfig = {
10
+ mcpServers?: Record<string, CursorEntry>;
11
+ };
12
+ export declare function mergeCursorConfig(existing: CursorConfig, opts: McpInstallOptions): {
13
+ config: CursorConfig;
14
+ changed: boolean;
15
+ };
16
+ export interface CursorInstallDeps extends InstallDeps {
17
+ cliAvailable?: boolean;
18
+ }
19
+ export declare const cursorInstaller: AgentInstaller;
20
+ export {};
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.cursorInstaller = void 0;
7
+ exports.buildCursorEntry = buildCursorEntry;
8
+ exports.mergeCursorConfig = mergeCursorConfig;
9
+ const child_process_1 = require("child_process");
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const config_paths_1 = require("./config-paths");
13
+ function buildCursorEntry(opts) {
14
+ return { url: opts.url, headers: { 'solidx-api-key': opts.apiKey } };
15
+ }
16
+ function mergeCursorConfig(existing, opts) {
17
+ const entry = buildCursorEntry(opts);
18
+ const servers = {
19
+ ...(existing.mcpServers || {}),
20
+ };
21
+ const current = servers[opts.serverName];
22
+ const changed = !current || JSON.stringify(current) !== JSON.stringify(entry);
23
+ servers[opts.serverName] = entry;
24
+ return { config: { ...existing, mcpServers: servers }, changed };
25
+ }
26
+ function cliSupportsHeaderFlags(mockCli) {
27
+ if (mockCli === false)
28
+ return false;
29
+ if (!(0, config_paths_1.commandExists)('cursor'))
30
+ return false;
31
+ const help = (0, child_process_1.spawnSync)('cursor', ['mcp', 'add', '--help'], {
32
+ stdio: 'pipe',
33
+ });
34
+ const text = (help.stdout?.toString() || '') + (help.stderr?.toString() || '');
35
+ return /--url/.test(text) && /--header/.test(text);
36
+ }
37
+ function runInstall(opts, deps) {
38
+ const homeDir = deps.injectedHomeDir;
39
+ const configPath = (0, config_paths_1.cursorConfigPath)(homeDir);
40
+ if (cliSupportsHeaderFlags(deps.cliAvailable) && !opts.dryRun) {
41
+ return installViaCli(opts);
42
+ }
43
+ return installViaFile(opts, configPath);
44
+ }
45
+ function installViaCli(opts) {
46
+ const get = (0, child_process_1.spawnSync)('cursor', ['mcp', 'get', opts.serverName], {
47
+ stdio: 'pipe',
48
+ });
49
+ const existingText = (get.stdout?.toString() || '') + (get.stderr?.toString() || '');
50
+ const alreadyPresent = get.status === 0 && !/not/i.test(existingText.split('\n')[0] || '');
51
+ if (alreadyPresent && !opts.force) {
52
+ return {
53
+ agent: 'cursor',
54
+ status: 'skipped',
55
+ message: `already installed (${opts.serverName})`,
56
+ };
57
+ }
58
+ if (alreadyPresent && opts.force) {
59
+ (0, child_process_1.spawnSync)('cursor', ['mcp', 'remove', opts.serverName], {
60
+ stdio: 'pipe',
61
+ shell: process.platform === 'win32',
62
+ });
63
+ }
64
+ const add = (0, child_process_1.spawnSync)('cursor', [
65
+ 'mcp',
66
+ 'add',
67
+ opts.serverName,
68
+ '--url',
69
+ opts.url,
70
+ '--header',
71
+ `solidx-api-key:${opts.apiKey}`,
72
+ ], { stdio: 'pipe', shell: process.platform === 'win32' });
73
+ if (add.status !== 0) {
74
+ return {
75
+ agent: 'cursor',
76
+ status: 'error',
77
+ message: `cursor mcp add failed: ${(add.stderr?.toString() || '').trim()}`,
78
+ };
79
+ }
80
+ return {
81
+ agent: 'cursor',
82
+ status: 'installed',
83
+ message: `installed via cursor CLI (${opts.serverName})`,
84
+ };
85
+ }
86
+ function installViaFile(opts, configPath) {
87
+ const existing = fs_extra_1.default.existsSync(configPath)
88
+ ? JSON.parse(fs_extra_1.default.readFileSync(configPath, 'utf8'))
89
+ : {};
90
+ const { config, changed } = mergeCursorConfig(existing, opts);
91
+ if (!changed && !opts.force) {
92
+ return {
93
+ agent: 'cursor',
94
+ status: 'skipped',
95
+ message: `already installed (${opts.serverName})`,
96
+ };
97
+ }
98
+ if (opts.dryRun) {
99
+ return {
100
+ agent: 'cursor',
101
+ status: 'installed',
102
+ message: `would write ${configPath}`,
103
+ };
104
+ }
105
+ fs_extra_1.default.mkdirSync(path_1.default.dirname(configPath), { recursive: true });
106
+ const backupPath = fs_extra_1.default.existsSync(configPath)
107
+ ? ((0, config_paths_1.backupFile)(configPath) ?? undefined)
108
+ : undefined;
109
+ fs_extra_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2));
110
+ return {
111
+ agent: 'cursor',
112
+ status: 'installed',
113
+ message: `wrote ${configPath}`,
114
+ backupPath,
115
+ };
116
+ }
117
+ exports.cursorInstaller = {
118
+ name: 'cursor',
119
+ isDetected: () => (0, config_paths_1.commandExists)('cursor') || fs_extra_1.default.existsSync((0, config_paths_1.cursorConfigPath)()),
120
+ install: (opts, deps) => Promise.resolve(runInstall(opts, deps ?? {})),
121
+ };
122
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../src/commands/mcp/installers/cursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type AgentName = 'claude-code' | 'cursor' | 'codex' | 'claude-desktop';
2
+ export declare const AGENT_NAMES: readonly AgentName[];
3
+ export declare function isAgentName(value: string): value is AgentName;
4
+ export declare const KEBAB_CASE_RE: RegExp;
5
+ export interface McpInstallOptions {
6
+ projectName: string;
7
+ apiKey: string;
8
+ url: string;
9
+ serverName: string;
10
+ agents?: AgentName[];
11
+ dryRun: boolean;
12
+ force: boolean;
13
+ }
14
+ export type InstallStatus = 'installed' | 'skipped' | 'not-detected' | 'error';
15
+ export interface AgentInstallResult {
16
+ agent: AgentName;
17
+ status: InstallStatus;
18
+ message?: string;
19
+ backupPath?: string;
20
+ }
21
+ export interface AgentInstaller {
22
+ readonly name: AgentName;
23
+ isDetected(): boolean;
24
+ install(opts: McpInstallOptions, deps?: InstallDeps): Promise<AgentInstallResult>;
25
+ }
26
+ export interface InstallDeps {
27
+ injectedHomeDir?: string;
28
+ platform?: NodeJS.Platform;
29
+ appData?: string;
30
+ [key: string]: unknown;
31
+ }
32
+ export declare function parseAgentsList(input: string | undefined): AgentName[] | undefined;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KEBAB_CASE_RE = exports.AGENT_NAMES = void 0;
4
+ exports.isAgentName = isAgentName;
5
+ exports.parseAgentsList = parseAgentsList;
6
+ exports.AGENT_NAMES = [
7
+ 'claude-code',
8
+ 'cursor',
9
+ 'codex',
10
+ 'claude-desktop',
11
+ ];
12
+ const AGENT_NAME_SET = new Set(exports.AGENT_NAMES);
13
+ function isAgentName(value) {
14
+ return AGENT_NAME_SET.has(value);
15
+ }
16
+ exports.KEBAB_CASE_RE = /^[a-z0-9]+(-[a-z0-9]+)*$/;
17
+ function parseAgentsList(input) {
18
+ if (input === undefined)
19
+ return undefined;
20
+ const parts = input
21
+ .split(',')
22
+ .map((p) => p.trim())
23
+ .filter(Boolean);
24
+ const parsed = [];
25
+ for (const p of parts) {
26
+ if (!isAgentName(p)) {
27
+ throw new Error(`Unsupported agent "${p}". Valid agents: ${exports.AGENT_NAMES.join(', ')}`);
28
+ }
29
+ parsed.push(p);
30
+ }
31
+ return parsed;
32
+ }
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/mcp/installers/types.ts"],"names":[],"mappings":";;;AAWA,kCAEC;AA+CD,0CAkBC;AA5EY,QAAA,WAAW,GAAyB;IAC/C,aAAa;IACb,QAAQ;IACR,OAAO;IACP,gBAAgB;CACjB,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,mBAAW,CAAC,CAAC;AAEpD,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAEY,QAAA,aAAa,GAAG,0BAA0B,CAAC;AA6CxD,SAAgB,eAAe,CAC7B,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,sBAAsB,CAAC,oBAAoB,mBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ import { McpInstallOptions } from './installers/types';
3
+ export interface RawInstallOptions {
4
+ project?: string;
5
+ apiKey?: string;
6
+ url?: string;
7
+ name?: string;
8
+ agents?: string;
9
+ dryRun?: boolean;
10
+ force?: boolean;
11
+ }
12
+ export declare function resolveInstallOptions(raw: RawInstallOptions): McpInstallOptions;
13
+ export declare function runMcpInstall(raw: RawInstallOptions): Promise<void>;
14
+ export declare function registerMcpInstallCommand(mcp: Command): void;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveInstallOptions = resolveInstallOptions;
7
+ exports.runMcpInstall = runMcpInstall;
8
+ exports.registerMcpInstallCommand = registerMcpInstallCommand;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const lodash_1 = require("lodash");
11
+ const fs_extra_1 = __importDefault(require("fs-extra"));
12
+ const os_1 = __importDefault(require("os"));
13
+ const path_1 = __importDefault(require("path"));
14
+ const types_1 = require("./installers/types");
15
+ const claude_code_1 = require("./installers/claude-code");
16
+ const cursor_1 = require("./installers/cursor");
17
+ const codex_1 = require("./installers/codex");
18
+ const claude_desktop_1 = require("./installers/claude-desktop");
19
+ const DEFAULT_URL = 'http://localhost:9000/mcp';
20
+ const INSTALLERS = {
21
+ 'claude-code': claude_code_1.claudeCodeInstaller,
22
+ cursor: cursor_1.cursorInstaller,
23
+ codex: codex_1.codexInstaller,
24
+ 'claude-desktop': claude_desktop_1.claudeDesktopInstaller,
25
+ };
26
+ function resolveInstallOptions(raw) {
27
+ let projectName;
28
+ if (raw.project) {
29
+ projectName = raw.project;
30
+ if (!types_1.KEBAB_CASE_RE.test(projectName)) {
31
+ throw new Error(`--project must be kebab-case (e.g. new-todo-app). Got "${projectName}".`);
32
+ }
33
+ }
34
+ else {
35
+ const cwd = process.cwd();
36
+ const hasApi = fs_extra_1.default.existsSync(path_1.default.join(cwd, 'solid-api', 'package.json'));
37
+ const hasUi = fs_extra_1.default.existsSync(path_1.default.join(cwd, 'solid-ui', 'package.json'));
38
+ if (!hasApi || !hasUi) {
39
+ throw new Error(`Could not derive project name: cwd is not a SolidX project root (missing solid-api/ or solid-ui/). Run from the project root, or pass --project explicitly.`);
40
+ }
41
+ projectName = (0, lodash_1.kebabCase)(path_1.default.basename(process.cwd()));
42
+ if (!projectName || !types_1.KEBAB_CASE_RE.test(projectName)) {
43
+ throw new Error(`Could not derive a kebab-case project name from cwd "${process.cwd()}". Pass --project explicitly.`);
44
+ }
45
+ }
46
+ let apiKey;
47
+ if (raw.apiKey) {
48
+ apiKey = raw.apiKey;
49
+ if (!apiKey.startsWith('sldx_')) {
50
+ throw new Error('--api-key must start with "sldx_".');
51
+ }
52
+ }
53
+ else {
54
+ const keyFile = path_1.default.join(process.env.HOME ?? os_1.default.homedir(), '.solidx', projectName, 'mcp.json');
55
+ if (!fs_extra_1.default.existsSync(keyFile)) {
56
+ throw new Error(`No API key found at ~/.solidx/${projectName}/mcp.json. Run \`solidctl create-app\` first, or pass --api-key.`);
57
+ }
58
+ const parsed = JSON.parse(fs_extra_1.default.readFileSync(keyFile, 'utf8'));
59
+ const key = parsed.solidxAdminApiKey?.apiKey;
60
+ if (!key) {
61
+ throw new Error(`~/.solidx/${projectName}/mcp.json has no solidxAdminApiKey.apiKey.`);
62
+ }
63
+ apiKey = key;
64
+ }
65
+ const url = raw.url ?? DEFAULT_URL;
66
+ const serverName = raw.name ?? `solidx-${projectName}-mcp`;
67
+ return {
68
+ projectName,
69
+ apiKey,
70
+ url,
71
+ serverName,
72
+ agents: (0, types_1.parseAgentsList)(raw.agents),
73
+ dryRun: Boolean(raw.dryRun),
74
+ force: Boolean(raw.force),
75
+ };
76
+ }
77
+ function statusLabel(status) {
78
+ switch (status) {
79
+ case 'installed':
80
+ return chalk_1.default.green('installed');
81
+ case 'skipped':
82
+ return chalk_1.default.dim('skipped');
83
+ case 'not-detected':
84
+ return chalk_1.default.dim('not detected');
85
+ case 'error':
86
+ return chalk_1.default.red('error');
87
+ }
88
+ }
89
+ async function runMcpInstall(raw) {
90
+ let opts;
91
+ try {
92
+ opts = resolveInstallOptions(raw);
93
+ }
94
+ catch (err) {
95
+ const msg = err instanceof Error ? err.message : String(err);
96
+ console.error(chalk_1.default.red(`❌ ${msg}`));
97
+ process.exit(1);
98
+ }
99
+ const requestedNames = opts.agents ?? types_1.AGENT_NAMES;
100
+ let hadError = false;
101
+ const results = [];
102
+ for (const name of requestedNames) {
103
+ const installer = INSTALLERS[name];
104
+ if (!installer)
105
+ continue;
106
+ if (!installer.isDetected()) {
107
+ results.push({
108
+ agent: name,
109
+ status: 'not-detected',
110
+ message: 'agent not detected on this machine',
111
+ });
112
+ continue;
113
+ }
114
+ try {
115
+ const res = await installer.install(opts);
116
+ results.push(res);
117
+ if (res.status === 'error') {
118
+ hadError = true;
119
+ }
120
+ }
121
+ catch (err) {
122
+ const msg = err instanceof Error ? err.message : String(err);
123
+ results.push({
124
+ agent: name,
125
+ status: 'error',
126
+ message: msg,
127
+ });
128
+ hadError = true;
129
+ }
130
+ }
131
+ console.log('');
132
+ console.log(chalk_1.default.cyan(`SolidX MCP install — server "${opts.serverName}"`));
133
+ for (const r of results) {
134
+ const label = r.agent.padEnd(15);
135
+ const detail = r.message ? chalk_1.default.dim(`(${r.message})`) : '';
136
+ console.log(` ${chalk_1.default.magenta(label)} ${statusLabel(r.status)} ${detail}`);
137
+ if (r.backupPath)
138
+ console.log(chalk_1.default.dim(` backup: ${r.backupPath}`));
139
+ }
140
+ console.log('');
141
+ if (opts.dryRun) {
142
+ console.log(chalk_1.default.yellow('Dry run — no files were modified.'));
143
+ }
144
+ if (hadError)
145
+ process.exit(1);
146
+ }
147
+ function registerMcpInstallCommand(mcp) {
148
+ mcp
149
+ .command('install')
150
+ .description('Install the SolidX MCP server into Claude Code, Cursor, Codex, and Claude Desktop globally')
151
+ .option('--project <name>', 'Consuming project name (kebab-case). Default: derived from cwd basename.')
152
+ .option('--api-key <key>', 'Override the API key read from ~/.solidx/<project>/mcp.json')
153
+ .option('--url <url>', `MCP server URL (default: ${DEFAULT_URL})`)
154
+ .option('--name <server>', 'Override the server entry name (default: solidx-<project>-mcp)')
155
+ .option('--agents <list>', 'Comma-separated subset: claude-code,cursor,codex,claude-desktop')
156
+ .option('--dry-run', 'Print planned changes, touch nothing')
157
+ .option('--force', 'Re-write even when an identical entry already exists')
158
+ .action(async (options) => {
159
+ await runMcpInstall(options);
160
+ });
161
+ }
162
+ //# sourceMappingURL=mcp-install.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-install.command.js","sourceRoot":"","sources":["../../../src/commands/mcp/mcp-install.command.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const child_process_1 = require("child_process");
5
5
  const helper_1 = require("../helper");
6
6
  const agent_helper_1 = require("./agent-helper");
7
7
  const mcp_launch_1 = require("./mcp-launch");
8
+ const mcp_install_command_1 = require("./mcp/mcp-install.command");
8
9
  function registerMcpCommand(program) {
9
10
  const mcp = program
10
11
  .command('mcp')
@@ -63,5 +64,6 @@ function registerMcpCommand(program) {
63
64
  process.exit(result.status ?? 1);
64
65
  }
65
66
  });
67
+ (0, mcp_install_command_1.registerMcpInstallCommand)(mcp);
66
68
  }
67
69
  //# sourceMappingURL=mcp.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.command.js","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.command.js","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"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"}