@hileeon/mcc 0.1.7 → 0.1.9

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 (86) hide show
  1. package/README.md +226 -127
  2. package/dist/accounts/store.d.ts +1 -0
  3. package/dist/accounts/store.d.ts.map +1 -1
  4. package/dist/accounts/store.js.map +1 -1
  5. package/dist/commands/launch.d.ts +9 -0
  6. package/dist/commands/launch.d.ts.map +1 -0
  7. package/dist/commands/launch.js +158 -0
  8. package/dist/commands/launch.js.map +1 -0
  9. package/dist/commands/mcp.d.ts +9 -0
  10. package/dist/commands/mcp.d.ts.map +1 -0
  11. package/dist/commands/mcp.js +112 -0
  12. package/dist/commands/mcp.js.map +1 -0
  13. package/dist/commands/profile.d.ts +8 -0
  14. package/dist/commands/profile.d.ts.map +1 -0
  15. package/dist/commands/profile.js +125 -0
  16. package/dist/commands/profile.js.map +1 -0
  17. package/dist/core/model-router.d.ts.map +1 -1
  18. package/dist/core/model-router.js +5 -2
  19. package/dist/core/model-router.js.map +1 -1
  20. package/dist/{dashboard-server.d.ts → dashboard/server.d.ts} +1 -1
  21. package/dist/dashboard/server.d.ts.map +1 -0
  22. package/dist/{dashboard-server.js → dashboard/server.js} +169 -51
  23. package/dist/dashboard/server.js.map +1 -0
  24. package/dist/mcc.d.ts +4 -2
  25. package/dist/mcc.d.ts.map +1 -1
  26. package/dist/mcc.js +121 -408
  27. package/dist/mcc.js.map +1 -1
  28. package/dist/mcp/mcp-config.d.ts +17 -1
  29. package/dist/mcp/mcp-config.d.ts.map +1 -1
  30. package/dist/mcp/mcp-config.js +50 -17
  31. package/dist/mcp/mcp-config.js.map +1 -1
  32. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  33. package/dist/proxy/proxy-daemon.js +17 -2
  34. package/dist/proxy/proxy-daemon.js.map +1 -1
  35. package/dist/proxy/proxy-entry.js +5 -3
  36. package/dist/proxy/proxy-entry.js.map +1 -1
  37. package/dist/proxy/proxy-server.d.ts.map +1 -1
  38. package/dist/proxy/proxy-server.js +32 -6
  39. package/dist/proxy/proxy-server.js.map +1 -1
  40. package/dist/shared/config.d.ts +15 -0
  41. package/dist/shared/config.d.ts.map +1 -0
  42. package/dist/shared/config.js +79 -0
  43. package/dist/shared/config.js.map +1 -0
  44. package/dist/shared/logger.d.ts +23 -18
  45. package/dist/shared/logger.d.ts.map +1 -1
  46. package/dist/shared/logger.js +17 -178
  47. package/dist/shared/logger.js.map +1 -1
  48. package/dist/shared/provider-preset-catalog.d.ts +6 -2
  49. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  50. package/dist/shared/provider-preset-catalog.js +47 -26
  51. package/dist/shared/provider-preset-catalog.js.map +1 -1
  52. package/dist/ui/assets/index-ClqmrjNk.js +40 -0
  53. package/dist/ui/assets/index-CwMwQ-Z4.css +1 -0
  54. package/dist/ui/index.html +21 -13
  55. package/dist/update.d.ts +31 -0
  56. package/dist/update.d.ts.map +1 -0
  57. package/dist/update.js +196 -0
  58. package/dist/update.js.map +1 -0
  59. package/lib/mcp/mcc-image-analysis-server.cjs +454 -454
  60. package/lib/mcp/mcc-websearch-server.cjs +339 -339
  61. package/lib/mcp-hooks/image-analysis-runtime.cjs +510 -510
  62. package/lib/mcp-hooks/image-analyzer-transformer.cjs +526 -526
  63. package/lib/mcp-hooks/websearch-transformer.cjs +1597 -1421
  64. package/lib/proxy/config/config-loader-facade.js +24 -24
  65. package/lib/proxy/glmt/delta-accumulator.js +362 -362
  66. package/lib/proxy/glmt/glmt-transformer.js +203 -203
  67. package/lib/proxy/glmt/index.js +40 -40
  68. package/lib/proxy/glmt/locale-enforcer.js +68 -68
  69. package/lib/proxy/glmt/pipeline/content-transformer.js +161 -161
  70. package/lib/proxy/glmt/pipeline/index.js +19 -19
  71. package/lib/proxy/glmt/pipeline/request-transformer.js +115 -115
  72. package/lib/proxy/glmt/pipeline/response-builder.js +204 -204
  73. package/lib/proxy/glmt/pipeline/stream-parser.js +233 -233
  74. package/lib/proxy/glmt/pipeline/tool-call-handler.js +77 -77
  75. package/lib/proxy/glmt/pipeline/types.js +5 -5
  76. package/lib/proxy/glmt/reasoning-enforcer.js +150 -150
  77. package/lib/proxy/glmt/sse-parser.js +101 -101
  78. package/lib/proxy/services/logging.js +13 -13
  79. package/lib/proxy/transformers/request-transformer.js +471 -451
  80. package/lib/proxy/transformers/sse-stream-transformer.js +198 -198
  81. package/lib/shared/logger.cjs +156 -138
  82. package/package.json +58 -41
  83. package/dist/dashboard-server.d.ts.map +0 -1
  84. package/dist/dashboard-server.js.map +0 -1
  85. package/dist/ui/assets/index-B16lhKZ6.js +0 -40
  86. package/dist/ui/assets/index-jEfiB6-h.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
package/dist/mcc.d.ts CHANGED
@@ -1,8 +1,10 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
3
  * MCC - My Cloud Code
3
4
  *
4
- * Simplified CLI for multi-provider profile switching.
5
- * No OAuth, no local proxy - uses provider's direct API.
5
+ * CLI entry point: parses argv, prints help/version, dispatches to command
6
+ * modules under src/commands/ (and the dashboard subprocess). Business logic
7
+ * lives in those modules, not here.
6
8
  */
7
9
  export {};
8
10
  //# sourceMappingURL=mcc.d.ts.map
package/dist/mcc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcc.d.ts","sourceRoot":"","sources":["../src/mcc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"mcc.d.ts","sourceRoot":"","sources":["../src/mcc.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
package/dist/mcc.js CHANGED
@@ -3,8 +3,9 @@
3
3
  /**
4
4
  * MCC - My Cloud Code
5
5
  *
6
- * Simplified CLI for multi-provider profile switching.
7
- * No OAuth, no local proxy - uses provider's direct API.
6
+ * CLI entry point: parses argv, prints help/version, dispatches to command
7
+ * modules under src/commands/ (and the dashboard subprocess). Business logic
8
+ * lives in those modules, not here.
8
9
  */
9
10
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
11
  if (k2 === undefined) k2 = k;
@@ -39,443 +40,155 @@ var __importStar = (this && this.__importStar) || (function () {
39
40
  return result;
40
41
  };
41
42
  })();
42
- var __importDefault = (this && this.__importDefault) || function (mod) {
43
- return (mod && mod.__esModule) ? mod : { "default": mod };
44
- };
45
43
  Object.defineProperty(exports, "__esModule", { value: true });
46
- const child_process_1 = require("child_process");
47
44
  const path = __importStar(require("path"));
48
- const picocolors_1 = __importDefault(require("picocolors"));
49
- const store_1 = require("./accounts/store");
50
- const instance_manager_1 = require("./accounts/instance-manager");
51
- const model_router_1 = require("./core/model-router");
52
45
  const installer_1 = require("./mcp/installer");
53
- const registry_1 = require("./mcp/registry");
54
- const external_registry_1 = require("./mcp/external-registry");
55
- const proxy_daemon_1 = require("./proxy/proxy-daemon");
56
- const logger_1 = require("./shared/logger");
57
- const mcp_config_1 = require("./mcp/mcp-config");
58
- const PKG_VERSION = '0.1.6';
59
- const instanceMgr = new instance_manager_1.MCCInstanceManager();
46
+ const update_1 = require("./update");
47
+ const launch_1 = require("./commands/launch");
48
+ const profile_1 = require("./commands/profile");
49
+ const mcp_1 = require("./commands/mcp");
50
+ function readPkgVersion() {
51
+ try {
52
+ return require(path.join(__dirname, '..', 'package.json')).version;
53
+ }
54
+ catch {
55
+ return '0.0.0';
56
+ }
57
+ }
58
+ const PKG_VERSION = readPkgVersion();
60
59
  function showVersion() {
61
60
  console.log(`@hileeon/mcc ${PKG_VERSION}`);
62
61
  }
63
62
  function showHelp() {
64
- console.log(`
65
- MCC - My Cloud Code
66
-
67
- Usage: mcc [mcc-options] <profile> [claude-options...]
68
-
69
- <profile> Profile name to launch (required)
70
- [claude-options...] All options after profile are passed directly to Claude Code
71
-
72
- MCC Options:
73
- -h, --help Show this help
74
- -v, --version Show version number
75
- -- Explicit separator (everything after is for Claude Code)
76
-
77
- Note: All flags after <profile> are passed directly to Claude Code.
78
-
79
- Debug logging: MCC_LOG_LEVEL=debug node dist/mcc.js deepseek
80
-
81
- Examples:
82
- mcc deepseek Interactive session
83
- mcc deepseek --print "hello" Non-interactive
84
- mcc deepseek --print "hello" --verbose Claude Code verbose mode
85
-
86
- mcc profile add prod --base-url https://api.deepseek.com/anthropic --api-key sk-xxxx --model deepseek-chat
87
- mcc profile list
88
- mcc dashboard
63
+ console.log(`
64
+ MCC - My Cloud Code
65
+
66
+ Usage: mcc [mcc-options] <profile> [claude-options...]
67
+
68
+ <profile> Profile name to launch (required)
69
+ [claude-options...] All options after profile are passed directly to Claude Code
70
+
71
+ MCC Options:
72
+ -h, --help Show this help
73
+ -v, --version Show version number
74
+ -- Explicit separator (everything after is for Claude Code)
75
+
76
+ Note: All flags after <profile> are passed directly to Claude Code.
77
+
78
+ Debug logging: MCC_LOG_LEVEL=debug node dist/mcc.js deepseek
79
+
80
+ Examples:
81
+ mcc deepseek Interactive session
82
+ mcc deepseek --print "hello" Non-interactive
83
+ mcc deepseek --print "hello" --verbose Claude Code verbose mode
84
+
85
+ mcc profile add prod --base-url https://api.deepseek.com/anthropic --api-key sk-xxxx --model deepseek-chat
86
+ mcc profile list
87
+ mcc config Open the Web config dashboard
88
+
89
+ mcc update Upgrade mcc to the latest version
90
+ mcc update --check Check for a new version without installing
91
+ mcc update-check off Disable the "update available" reminder (default: on)
89
92
  `.trim());
90
93
  }
91
- async function cmdLaunch(args) {
92
- const profileName = args[0];
93
- if (!profileName) {
94
- console.error('[!] Usage: mcc <profile> [args...]');
95
- process.exit(1);
96
- }
97
- const profile = (0, store_1.getProfile)(profileName);
98
- if (!profile) {
99
- console.error(`[!] Profile not found: ${profileName}`);
100
- console.error('[i] Available profiles:');
101
- for (const p of (0, store_1.listProfiles)()) {
102
- console.error(` - ${p.name} (baseUrl: ${p.baseUrl})`);
103
- }
104
- process.exit(1);
105
- }
106
- const proto = profile.protocol || 'anthropic';
107
- console.log(` ${picocolors_1.default.cyan(picocolors_1.default.bold('●'))} ${picocolors_1.default.bold(profileName)} ${picocolors_1.default.dim('·')} ${picocolors_1.default.cyan(profile.model)} ${picocolors_1.default.dim('·')} ${picocolors_1.default.dim(proto)}`);
108
- const apiKey = (0, store_1.getProfileApiKey)(profileName);
109
- if (!apiKey) {
110
- console.error(`[!] No API key found for profile: ${profileName}`);
111
- process.exit(1);
112
- }
113
- // Read MCP config early so we can display provider info
114
- const mcpConfig = (0, mcp_config_1.readMcpConfig)();
115
- const wsProviders = (0, mcp_config_1.getEnabledWebSearchProviders)(mcpConfig);
116
- const iaProvider = (0, mcp_config_1.getActiveImageAnalysisProvider)(mcpConfig);
117
- const instancePath = await instanceMgr.ensureInstance(profileName);
118
- console.log(` ${picocolors_1.default.dim('instance')} ${picocolors_1.default.dim(instancePath)}`);
119
- (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profileName);
120
- // Initialize logging session
121
- const sessionId = (0, logger_1.makeSessionId)();
122
- const mccHome = process.env.MCC_HOME ?? path.join(process.env.HOME ?? process.env.USERPROFILE ?? '~', '.mcc');
123
- const logDir = path.join(mccHome, 'logs', profileName, sessionId);
124
- (0, logger_1.init)(sessionId, logDir);
125
- logger_1.log.info('MCC', `Session starting: ${profileName} | log: ${logDir}`);
126
- console.log(` ${picocolors_1.default.dim('session')} ${picocolors_1.default.dim(sessionId)}`);
127
- // MCP provider summary
128
- if (wsProviders.length > 0) {
129
- console.log(` ${picocolors_1.default.dim('websearch')} ${picocolors_1.default.dim(wsProviders.join(', '))}`);
130
- }
131
- else if (mcpConfig.websearch.enabled) {
132
- console.log(` ${picocolors_1.default.dim('websearch')} ${picocolors_1.default.dim('none enabled')}`);
133
- }
134
- if (mcpConfig.imageAnalysis.enabled) {
135
- if (iaProvider) {
136
- console.log(` ${picocolors_1.default.dim('image')} ${picocolors_1.default.dim(iaProvider.id)} ${picocolors_1.default.dim('·')} ${picocolors_1.default.cyan(iaProvider.model)}`);
137
- }
138
- else {
139
- console.log(` ${picocolors_1.default.dim('image')} ${picocolors_1.default.dim('no active provider')}`);
140
- }
141
- }
142
- const env = (0, model_router_1.buildProfileEnv)(profile, apiKey, instancePath);
143
- env.MCC_CURRENT_PROFILE = profileName;
144
- env.MCC_LOG_SESSION_ID = sessionId;
145
- env.MCC_LOG_DIR = logDir;
146
- // Debug: key env vars (no secrets)
147
- if ((0, logger_1.isDebugEnabled)()) {
148
- const debugEnvs = [
149
- ['ANTHROPIC_BASE_URL', env.ANTHROPIC_BASE_URL],
150
- ['ANTHROPIC_MODEL', env.ANTHROPIC_MODEL],
151
- ['CLAUDE_CONFIG_DIR', env.CLAUDE_CONFIG_DIR],
152
- ['MCC_WEBSEARCH_ENABLED', env.MCC_WEBSEARCH_ENABLED || '0'],
153
- ['MCC_IMAGE_ANALYSIS_ENABLED', env.MCC_IMAGE_ANALYSIS_ENABLED || '0'],
154
- ];
155
- if (env.ANTHROPIC_DEFAULT_OPUS_MODEL !== env.ANTHROPIC_MODEL)
156
- debugEnvs.push(['ANTHROPIC_DEFAULT_OPUS_MODEL', env.ANTHROPIC_DEFAULT_OPUS_MODEL]);
157
- if (env.ANTHROPIC_DEFAULT_SONNET_MODEL !== env.ANTHROPIC_MODEL)
158
- debugEnvs.push(['ANTHROPIC_DEFAULT_SONNET_MODEL', env.ANTHROPIC_DEFAULT_SONNET_MODEL]);
159
- if (env.ANTHROPIC_DEFAULT_HAIKU_MODEL !== env.ANTHROPIC_MODEL)
160
- debugEnvs.push(['ANTHROPIC_DEFAULT_HAIKU_MODEL', env.ANTHROPIC_DEFAULT_HAIKU_MODEL]);
161
- console.log(` ${picocolors_1.default.dim('---')}`);
162
- for (const [k, v] of debugEnvs) {
163
- console.log(` ${picocolors_1.default.dim('env')} ${picocolors_1.default.dim(k)}=${picocolors_1.default.dim(v)}`);
164
- }
165
- }
166
- // Start translation proxy for OpenAI-compatible profiles
167
- if (profile.protocol === 'openai') {
168
- try {
169
- const proxyInfo = await (0, proxy_daemon_1.startProxy)(profileName, profile.baseUrl, apiKey, profile.model, profile.proxyChatCompletionsPath);
170
- env.ANTHROPIC_BASE_URL = `http://127.0.0.1:${proxyInfo.port}`;
171
- env.ANTHROPIC_AUTH_TOKEN = proxyInfo.authToken;
172
- // MCP image analysis also needs to go through the proxy
173
- env.MCC_IMAGE_ANALYSIS_RUNTIME_BASE_URL = `http://127.0.0.1:${proxyInfo.port}`;
174
- env.MCC_IMAGE_ANALYSIS_RUNTIME_API_KEY = proxyInfo.authToken;
175
- console.log(` ${picocolors_1.default.dim('proxy')} ${picocolors_1.default.cyan(`:${proxyInfo.port}`)}`);
176
- }
177
- catch (e) {
178
- console.error(`[!] Failed to start translation proxy: ${e.message}`);
179
- process.exit(1);
180
- }
181
- }
182
- console.log(`\n ${picocolors_1.default.green('✓')} ${picocolors_1.default.bold('launching Claude Code')}`);
183
- const remainingArgs = args.slice(1);
184
- const child = (0, child_process_1.spawn)('claude', remainingArgs, {
185
- env: { ...process.env, ...env },
186
- stdio: 'inherit',
187
- });
188
- child.on('exit', (code) => process.exit(code ?? 0));
189
- }
190
- async function cmdProfileAdd(args) {
191
- const name = args[0];
192
- if (!name) {
193
- console.error('[!] Usage: mcc profile add <name> --base-url <url> --api-key <key> --model <model> [--protocol anthropic|openai] [--opus-model <m>] [--sonnet-model <m>] [--haiku-model <m>]');
194
- process.exit(1);
195
- }
196
- const getArg = (flag) => {
197
- const idx = args.indexOf(flag);
198
- return idx !== -1 ? args[idx + 1] : undefined;
199
- };
200
- const baseUrl = getArg('--base-url');
201
- const apiKey = getArg('--api-key');
202
- const model = getArg('--model') ?? 'claude-sonnet-4-6';
203
- const protocol = getArg('--protocol') ?? 'anthropic';
204
- const proxyChatCompletionsPath = getArg('--proxy-chat-completions-path');
205
- if (!baseUrl || !apiKey) {
206
- console.error('[!] --base-url and --api-key are required');
207
- process.exit(1);
208
- }
209
- if (protocol !== 'anthropic' && protocol !== 'openai') {
210
- console.error('[!] --protocol must be "anthropic" or "openai"');
211
- process.exit(1);
212
- }
213
- const profile = {
214
- name,
215
- baseUrl,
216
- model,
217
- opusModel: getArg('--opus-model'),
218
- sonnetModel: getArg('--sonnet-model'),
219
- haikuModel: getArg('--haiku-model'),
220
- protocol,
221
- proxyChatCompletionsPath: proxyChatCompletionsPath || undefined,
222
- createdAt: new Date().toISOString(),
223
- };
224
- (0, store_1.saveProfile)(profile, apiKey);
225
- await instanceMgr.ensureInstance(name);
226
- const instancePath = instanceMgr.getInstancePath(name);
227
- (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), name);
228
- console.log(`[OK] Profile created: ${name}`);
229
- console.log(` Base URL: ${baseUrl}`);
230
- console.log(` Model: ${model}`);
231
- console.log(` Protocol: ${protocol}`);
232
- if (profile.opusModel)
233
- console.log(` Opus: ${profile.opusModel}`);
234
- if (profile.sonnetModel)
235
- console.log(` Sonnet: ${profile.sonnetModel}`);
236
- if (profile.haikuModel)
237
- console.log(` Haiku: ${profile.haikuModel}`);
238
- if (profile.proxyChatCompletionsPath)
239
- console.log(` Proxy chat path: ${profile.proxyChatCompletionsPath}`);
240
- }
241
- async function cmdProfileList() {
242
- const profiles = (0, store_1.listProfiles)();
243
- const defaultProfile = (0, store_1.getDefaultProfile)();
244
- if (profiles.length === 0) {
245
- console.log('[i] No profiles. Run: mcc profile add <name> --base-url <url> --api-key <key> --model <model>');
246
- return;
247
- }
248
- console.log('Profiles:');
249
- for (const p of profiles) {
250
- const marker = p.name === defaultProfile ? ' (default)' : '';
251
- console.log(` ${p.name}${marker}`);
252
- console.log(` Base URL: ${p.baseUrl}`);
253
- console.log(` Model: ${p.model}`);
254
- console.log(` Protocol: ${p.protocol || 'anthropic'}`);
255
- if (p.opusModel)
256
- console.log(` Opus: ${p.opusModel}`);
257
- if (p.sonnetModel)
258
- console.log(` Sonnet: ${p.sonnetModel}`);
259
- if (p.haikuModel)
260
- console.log(` Haiku: ${p.haikuModel}`);
261
- if (p.proxyChatCompletionsPath)
262
- console.log(` Proxy chat path: ${p.proxyChatCompletionsPath}`);
263
- console.log();
264
- }
265
- }
266
- async function cmdProfileRemove(args) {
267
- const name = args[0];
268
- if (!name) {
269
- console.error('[!] Usage: mcc profile remove <name>');
270
- process.exit(1);
271
- }
272
- if (!(0, store_1.hasProfile)(name)) {
273
- console.error(`[!] Profile not found: ${name}`);
274
- process.exit(1);
275
- }
276
- (0, store_1.deleteProfile)(name);
277
- await instanceMgr.deleteInstance(name);
278
- console.log(`[OK] Profile removed: ${name}`);
94
+ /**
95
+ * Start the config dashboard server in this same process.
96
+ *
97
+ * Implemented as a dynamic import (not a child_process spawn) so it works
98
+ * uniformly whether mcc.ts is being executed by tsx (src/*.ts) or by node
99
+ * (dist/*.js) — child_process would have to pick a file path and one of
100
+ * the two modes would always be missing the file. Same process is fine
101
+ * because the dashboard server is the long-running thing anyway and we
102
+ * have nothing to do after it boots.
103
+ */
104
+ async function spawnConfigDashboard() {
105
+ await Promise.resolve().then(() => __importStar(require('./dashboard/server')));
279
106
  }
280
- async function cmdProfileDefault(args) {
281
- const name = args[0];
282
- if (name) {
283
- if (!(0, store_1.hasProfile)(name)) {
284
- console.error(`[!] Profile not found: ${name}`);
107
+ async function dispatchProfile(args) {
108
+ switch (args[0]) {
109
+ case 'add':
110
+ await (0, profile_1.cmdProfileAdd)(args.slice(1));
111
+ break;
112
+ case 'list':
113
+ await (0, profile_1.cmdProfileList)();
114
+ break;
115
+ case 'remove':
116
+ await (0, profile_1.cmdProfileRemove)(args.slice(1));
117
+ break;
118
+ case 'default':
119
+ await (0, profile_1.cmdProfileDefault)(args.slice(1));
120
+ break;
121
+ default:
122
+ console.error(`[!] Unknown profile command: ${args[0]}`);
123
+ showHelp();
285
124
  process.exit(1);
286
- }
287
- (0, store_1.setDefaultProfile)(name);
288
- console.log(`[OK] Default profile set: ${name}`);
289
- }
290
- else {
291
- const defaultProf = (0, store_1.getDefaultProfile)();
292
- console.log(defaultProf ? `Default profile: ${defaultProf}` : '[i] No default profile set');
293
- }
294
- }
295
- async function cmdMcpList() {
296
- const servers = (0, registry_1.getAllServers)();
297
- console.log('MCP Servers:');
298
- for (const s of servers) {
299
- const isBuiltin = 'config' in s;
300
- const marker = isBuiltin && s.enabledByDefault ? ' (builtin, default)' : isBuiltin ? ' (builtin)' : '';
301
- console.log(` ${s.name}${marker}`);
302
- console.log(` ${s.displayName}: ${s.description}`);
303
- if (!isBuiltin) {
304
- const ext = s;
305
- console.log(` Command: ${ext.command} ${ext.args.join(' ')}`);
306
- }
307
- }
308
- }
309
- async function cmdMcpAdd(args) {
310
- const getArg = (flag) => {
311
- const idx = args.indexOf(flag);
312
- return idx !== -1 ? args[idx + 1] : undefined;
313
- };
314
- const getBoolArg = (flag) => args.includes(flag);
315
- const name = getArg('--name');
316
- const displayName = getArg('--display-name') ?? name ?? '';
317
- const description = getArg('--description') ?? '';
318
- const command = getArg('--command') ?? 'uvx';
319
- const argsStr = getArg('--args') ?? '';
320
- const argsList = argsStr ? argsStr.split(',').map((s) => s.trim()) : [];
321
- const providerRef = getArg('--provider-ref');
322
- const enabledByDefault = getBoolArg('--enabled-by-default');
323
- if (!name || !command) {
324
- console.error('[!] --name and --command are required');
325
- console.error(' Usage: mcc mcp add --name <id> --command <cmd> --args "<arg1>,<arg2>" [--display-name <name>] [--description <desc>] [--provider-ref <provider>] [--enabled-by-default]');
326
- process.exit(1);
327
- }
328
- const envVars = {};
329
- if (providerRef) {
330
- envVars.MINIMAX_API_KEY = `\${MCC_PROVIDER_KEY:${providerRef}}`;
331
- envVars.MINIMAX_API_HOST = 'https://api.minimaxi.com';
332
- }
333
- const server = {
334
- name,
335
- displayName,
336
- description,
337
- command,
338
- args: argsList,
339
- envVars,
340
- enabledByDefault,
341
- };
342
- (0, external_registry_1.addExternalMcpServer)(server);
343
- console.log(`[OK] External MCP added: ${name}`);
344
- }
345
- async function cmdMcpRemove(args) {
346
- const name = args[0];
347
- if (!name) {
348
- console.error('[!] Usage: mcc mcp remove <name>');
349
- process.exit(1);
350
- }
351
- const existing = (0, external_registry_1.readExternalMcpRegistry)().find((s) => s.name === name);
352
- if (!existing) {
353
- console.error(`[!] External MCP not found: ${name}`);
354
- process.exit(1);
355
- }
356
- (0, external_registry_1.removeExternalMcpServer)(name);
357
- console.log(`[OK] External MCP removed: ${name}`);
358
- }
359
- async function cmdMcpEnable(args) {
360
- const name = args[0];
361
- const profileName = args[1];
362
- if (!name || !profileName) {
363
- console.error('[!] Usage: mcc mcp enable <name> <profile>');
364
- process.exit(1);
365
125
  }
366
- if (!(0, store_1.hasProfile)(profileName)) {
367
- console.error(`[!] Profile not found: ${profileName}`);
368
- process.exit(1);
369
- }
370
- const instancePath = instanceMgr.getInstancePath(profileName);
371
- (0, installer_1.enableInstanceExternalMcp)(instancePath, name);
372
- (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profileName);
373
- console.log(`[OK] External MCP '${name}' enabled for profile '${profileName}'`);
374
126
  }
375
- async function cmdMcpDisable(args) {
376
- const name = args[0];
377
- const profileName = args[1];
378
- if (!name || !profileName) {
379
- console.error('[!] Usage: mcc mcp disable <name> <profile>');
380
- process.exit(1);
381
- }
382
- if (!(0, store_1.hasProfile)(profileName)) {
383
- console.error(`[!] Profile not found: ${profileName}`);
384
- process.exit(1);
127
+ async function dispatchMcp(args) {
128
+ switch (args[0]) {
129
+ case 'list':
130
+ await (0, mcp_1.cmdMcpList)();
131
+ break;
132
+ case 'add':
133
+ await (0, mcp_1.cmdMcpAdd)(args.slice(1));
134
+ break;
135
+ case 'remove':
136
+ await (0, mcp_1.cmdMcpRemove)(args.slice(1));
137
+ break;
138
+ case 'enable':
139
+ await (0, mcp_1.cmdMcpEnable)(args.slice(1));
140
+ break;
141
+ case 'disable':
142
+ await (0, mcp_1.cmdMcpDisable)(args.slice(1));
143
+ break;
144
+ default:
145
+ console.error(`[!] Unknown mcp command: ${args[0]}`);
146
+ showHelp();
147
+ process.exit(1);
385
148
  }
386
- const instancePath = instanceMgr.getInstancePath(profileName);
387
- (0, installer_1.disableInstanceExternalMcp)(instancePath, name);
388
- (0, installer_1.syncInstanceMcpServers)(instancePath, registry_1.BUILTIN_MCP_SERVERS.map((s) => s.name), profileName);
389
- console.log(`[OK] External MCP '${name}' disabled for profile '${profileName}'`);
390
149
  }
391
150
  async function main() {
392
151
  const rawArgs = process.argv.slice(2);
393
- // Global flags always intercepted regardless of position
394
- // NOTE: -v/-h are intentionally NOT subcommand-aware for simplicity
395
- if (rawArgs[0] === '-h' || rawArgs[0] === '--help') {
396
- showHelp();
397
- return;
398
- }
399
- if (rawArgs[0] === '-v' || rawArgs[0] === '--version') {
400
- showVersion();
401
- return;
402
- }
403
- // No args: show help
404
- if (rawArgs.length === 0) {
405
- showHelp();
406
- return;
407
- }
152
+ // Kick off the (async, cached) update check as early as possible so any
153
+ // pending notification can print at process exit. No-op when disabled / in CI.
154
+ (0, update_1.checkForUpdates)(PKG_VERSION);
155
+ // Global flags — always intercepted regardless of position.
156
+ if (rawArgs[0] === '-h' || rawArgs[0] === '--help')
157
+ return showHelp();
158
+ if (rawArgs[0] === '-v' || rawArgs[0] === '--version')
159
+ return showVersion();
160
+ if (rawArgs.length === 0)
161
+ return showHelp();
408
162
  // Parse: mcc <profile> [claude-args...]
409
163
  // Explicit separator: mcc <profile> -- <claude-args...>
410
- // Everything after first arg (the profile) is passed to Claude as-is.
164
+ // Everything after the first arg (the profile) is passed to Claude as-is.
411
165
  const dashIdx = rawArgs.indexOf('--');
412
166
  const profileArgs = dashIdx === -1 ? rawArgs : rawArgs.slice(0, dashIdx);
413
167
  const claudeArgs = dashIdx === -1 ? [] : rawArgs.slice(dashIdx); // includes '--'
414
- if (profileArgs.length === 0) {
415
- showHelp();
416
- return;
417
- }
168
+ if (profileArgs.length === 0)
169
+ return showHelp();
418
170
  (0, installer_1.installBuiltinServers)();
419
171
  const command = profileArgs[0];
420
172
  const args = profileArgs.slice(1);
421
173
  switch (command) {
422
- // mcc <profile> - launch with profile
423
174
  case 'profile':
424
- switch (args[0]) {
425
- case 'add':
426
- await cmdProfileAdd(args.slice(1));
427
- break;
428
- case 'list':
429
- await cmdProfileList();
430
- break;
431
- case 'remove':
432
- await cmdProfileRemove(args.slice(1));
433
- break;
434
- case 'default':
435
- await cmdProfileDefault(args.slice(1));
436
- break;
437
- default:
438
- console.error(`[!] Unknown profile command: ${args[0]}`);
439
- showHelp();
440
- process.exit(1);
441
- }
175
+ await dispatchProfile(args);
176
+ break;
177
+ case 'mcp':
178
+ await dispatchMcp(args);
179
+ break;
180
+ case 'config':
181
+ await spawnConfigDashboard();
442
182
  break;
443
- case 'dashboard': {
444
- (0, child_process_1.spawn)('node', [path.join(__dirname, 'dashboard-server.js')], {
445
- env: process.env,
446
- stdio: 'inherit',
447
- });
183
+ case 'update':
184
+ await (0, update_1.runUpdate)({ checkOnly: args.includes('--check') });
448
185
  break;
449
- }
450
- case 'mcp': {
451
- const sub = args[0];
452
- const subArgs = args.slice(1);
453
- switch (sub) {
454
- case 'list':
455
- await cmdMcpList();
456
- break;
457
- case 'add':
458
- await cmdMcpAdd(subArgs);
459
- break;
460
- case 'remove':
461
- await cmdMcpRemove(subArgs);
462
- break;
463
- case 'enable':
464
- await cmdMcpEnable(subArgs);
465
- break;
466
- case 'disable':
467
- await cmdMcpDisable(subArgs);
468
- break;
469
- default:
470
- console.error(`[!] Unknown mcp command: ${sub}`);
471
- showHelp();
472
- process.exit(1);
473
- }
186
+ case 'update-check':
187
+ (0, update_1.setUpdateCheckCmd)(args[0]);
474
188
  break;
475
- }
476
189
  default:
477
- // Treat as profile launch; pass profile name + claude args
478
- await cmdLaunch([command, ...args, ...claudeArgs]);
190
+ // Treat unknown command as profile launch; pass profile name + claude args
191
+ await (0, launch_1.cmdLaunch)([command, ...args, ...claudeArgs]);
479
192
  }
480
193
  }
481
194
  main().catch((err) => {