@hileeon/mcc 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +229 -127
  2. package/dist/accounts/store.d.ts +12 -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 +162 -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-test.d.ts +17 -0
  14. package/dist/commands/profile-test.d.ts.map +1 -0
  15. package/dist/commands/profile-test.js +188 -0
  16. package/dist/commands/profile-test.js.map +1 -0
  17. package/dist/commands/profile.d.ts +8 -0
  18. package/dist/commands/profile.d.ts.map +1 -0
  19. package/dist/commands/profile.js +125 -0
  20. package/dist/commands/profile.js.map +1 -0
  21. package/dist/core/model-router.d.ts.map +1 -1
  22. package/dist/core/model-router.js +36 -3
  23. package/dist/core/model-router.js.map +1 -1
  24. package/dist/{dashboard-server.d.ts → dashboard/server.d.ts} +1 -1
  25. package/dist/dashboard/server.d.ts.map +1 -0
  26. package/dist/{dashboard-server.js → dashboard/server.js} +254 -48
  27. package/dist/dashboard/server.js.map +1 -0
  28. package/dist/mcc.d.ts +4 -2
  29. package/dist/mcc.d.ts.map +1 -1
  30. package/dist/mcc.js +127 -408
  31. package/dist/mcc.js.map +1 -1
  32. package/dist/mcp/installer.d.ts.map +1 -1
  33. package/dist/mcp/installer.js +5 -2
  34. package/dist/mcp/installer.js.map +1 -1
  35. package/dist/mcp/mcp-config.d.ts +33 -3
  36. package/dist/mcp/mcp-config.d.ts.map +1 -1
  37. package/dist/mcp/mcp-config.js +81 -29
  38. package/dist/mcp/mcp-config.js.map +1 -1
  39. package/dist/proxy/proxy-daemon.d.ts +1 -1
  40. package/dist/proxy/proxy-daemon.d.ts.map +1 -1
  41. package/dist/proxy/proxy-daemon.js +27 -7
  42. package/dist/proxy/proxy-daemon.js.map +1 -1
  43. package/dist/proxy/proxy-entry.js +11 -4
  44. package/dist/proxy/proxy-entry.js.map +1 -1
  45. package/dist/proxy/proxy-paths.d.ts +1 -0
  46. package/dist/proxy/proxy-paths.d.ts.map +1 -1
  47. package/dist/proxy/proxy-paths.js.map +1 -1
  48. package/dist/proxy/proxy-server.d.ts +1 -0
  49. package/dist/proxy/proxy-server.d.ts.map +1 -1
  50. package/dist/proxy/proxy-server.js +114 -6
  51. package/dist/proxy/proxy-server.js.map +1 -1
  52. package/dist/shared/config.d.ts +15 -0
  53. package/dist/shared/config.d.ts.map +1 -0
  54. package/dist/shared/config.js +79 -0
  55. package/dist/shared/config.js.map +1 -0
  56. package/dist/shared/logger.d.ts +23 -18
  57. package/dist/shared/logger.d.ts.map +1 -1
  58. package/dist/shared/logger.js +17 -178
  59. package/dist/shared/logger.js.map +1 -1
  60. package/dist/shared/provider-preset-catalog.d.ts +8 -2
  61. package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
  62. package/dist/shared/provider-preset-catalog.js +61 -31
  63. package/dist/shared/provider-preset-catalog.js.map +1 -1
  64. package/dist/shared/test-image.d.ts +15 -0
  65. package/dist/shared/test-image.d.ts.map +1 -0
  66. package/dist/shared/test-image.js +89 -0
  67. package/dist/shared/test-image.js.map +1 -0
  68. package/dist/ui/assets/index-7kowlJw9.js +40 -0
  69. package/dist/ui/assets/index-DnC-lskL.css +1 -0
  70. package/dist/ui/index.html +21 -13
  71. package/dist/update.d.ts +31 -0
  72. package/dist/update.d.ts.map +1 -0
  73. package/dist/update.js +196 -0
  74. package/dist/update.js.map +1 -0
  75. package/lib/mcp/mcc-image-analysis-server.cjs +454 -454
  76. package/lib/mcp/mcc-websearch-server.cjs +339 -339
  77. package/lib/mcp-hooks/image-analysis-runtime.cjs +563 -510
  78. package/lib/mcp-hooks/image-analyzer-transformer.cjs +526 -526
  79. package/lib/mcp-hooks/websearch-transformer.cjs +1597 -1421
  80. package/lib/proxy/config/config-loader-facade.js +24 -24
  81. package/lib/proxy/glmt/delta-accumulator.js +362 -362
  82. package/lib/proxy/glmt/glmt-transformer.js +203 -203
  83. package/lib/proxy/glmt/index.js +40 -40
  84. package/lib/proxy/glmt/locale-enforcer.js +68 -68
  85. package/lib/proxy/glmt/pipeline/content-transformer.js +161 -161
  86. package/lib/proxy/glmt/pipeline/index.js +19 -19
  87. package/lib/proxy/glmt/pipeline/request-transformer.js +115 -115
  88. package/lib/proxy/glmt/pipeline/response-builder.js +204 -204
  89. package/lib/proxy/glmt/pipeline/stream-parser.js +233 -233
  90. package/lib/proxy/glmt/pipeline/tool-call-handler.js +77 -77
  91. package/lib/proxy/glmt/pipeline/types.js +5 -5
  92. package/lib/proxy/glmt/reasoning-enforcer.js +150 -150
  93. package/lib/proxy/glmt/sse-parser.js +101 -101
  94. package/lib/proxy/services/logging.js +13 -13
  95. package/lib/proxy/transformers/request-transformer.js +471 -471
  96. package/lib/proxy/transformers/sse-stream-transformer.js +198 -198
  97. package/lib/shared/logger.cjs +160 -138
  98. package/package.json +58 -41
  99. package/dist/dashboard-server.d.ts.map +0 -1
  100. package/dist/dashboard-server.js.map +0 -1
  101. package/dist/ui/assets/index-B16lhKZ6.js +0 -40
  102. package/dist/ui/assets/index-jEfiB6-h.css +0 -1
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,161 @@ 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 profile_test_1 = require("./commands/profile-test");
50
+ const mcp_1 = require("./commands/mcp");
51
+ function readPkgVersion() {
52
+ try {
53
+ return require(path.join(__dirname, '..', 'package.json')).version;
54
+ }
55
+ catch {
56
+ return '0.0.0';
57
+ }
58
+ }
59
+ const PKG_VERSION = readPkgVersion();
60
60
  function showVersion() {
61
61
  console.log(`@hileeon/mcc ${PKG_VERSION}`);
62
62
  }
63
63
  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
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 profile test Health-check every profile (key + balance)
89
+ mcc profile test deepseek --vision Also probe whether its model sees images
90
+ mcc config Open the Web config dashboard
91
+
92
+ mcc update Upgrade mcc to the latest version
93
+ mcc update --check Check for a new version without installing
94
+ mcc update-check off Disable the "update available" reminder (default: on)
89
95
  `.trim());
90
96
  }
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}`);
97
+ /**
98
+ * Start the config dashboard server in this same process.
99
+ *
100
+ * Implemented as a dynamic import (not a child_process spawn) so it works
101
+ * uniformly whether mcc.ts is being executed by tsx (src/*.ts) or by node
102
+ * (dist/*.js) — child_process would have to pick a file path and one of
103
+ * the two modes would always be missing the file. Same process is fine
104
+ * because the dashboard server is the long-running thing anyway and we
105
+ * have nothing to do after it boots.
106
+ */
107
+ async function spawnConfigDashboard() {
108
+ await Promise.resolve().then(() => __importStar(require('./dashboard/server')));
279
109
  }
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}`);
110
+ async function dispatchProfile(args) {
111
+ switch (args[0]) {
112
+ case 'add':
113
+ await (0, profile_1.cmdProfileAdd)(args.slice(1));
114
+ break;
115
+ case 'list':
116
+ await (0, profile_1.cmdProfileList)();
117
+ break;
118
+ case 'test':
119
+ await (0, profile_test_1.cmdProfileTest)(args.slice(1));
120
+ break;
121
+ case 'remove':
122
+ await (0, profile_1.cmdProfileRemove)(args.slice(1));
123
+ break;
124
+ case 'default':
125
+ await (0, profile_1.cmdProfileDefault)(args.slice(1));
126
+ break;
127
+ default:
128
+ console.error(`[!] Unknown profile command: ${args[0]}`);
129
+ showHelp();
285
130
  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
131
  }
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
132
  }
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);
133
+ async function dispatchMcp(args) {
134
+ switch (args[0]) {
135
+ case 'list':
136
+ await (0, mcp_1.cmdMcpList)();
137
+ break;
138
+ case 'add':
139
+ await (0, mcp_1.cmdMcpAdd)(args.slice(1));
140
+ break;
141
+ case 'remove':
142
+ await (0, mcp_1.cmdMcpRemove)(args.slice(1));
143
+ break;
144
+ case 'enable':
145
+ await (0, mcp_1.cmdMcpEnable)(args.slice(1));
146
+ break;
147
+ case 'disable':
148
+ await (0, mcp_1.cmdMcpDisable)(args.slice(1));
149
+ break;
150
+ default:
151
+ console.error(`[!] Unknown mcp command: ${args[0]}`);
152
+ showHelp();
153
+ process.exit(1);
385
154
  }
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
155
  }
391
156
  async function main() {
392
157
  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
- }
158
+ // Kick off the (async, cached) update check as early as possible so any
159
+ // pending notification can print at process exit. No-op when disabled / in CI.
160
+ (0, update_1.checkForUpdates)(PKG_VERSION);
161
+ // Global flags — always intercepted regardless of position.
162
+ if (rawArgs[0] === '-h' || rawArgs[0] === '--help')
163
+ return showHelp();
164
+ if (rawArgs[0] === '-v' || rawArgs[0] === '--version')
165
+ return showVersion();
166
+ if (rawArgs.length === 0)
167
+ return showHelp();
408
168
  // Parse: mcc <profile> [claude-args...]
409
169
  // Explicit separator: mcc <profile> -- <claude-args...>
410
- // Everything after first arg (the profile) is passed to Claude as-is.
170
+ // Everything after the first arg (the profile) is passed to Claude as-is.
411
171
  const dashIdx = rawArgs.indexOf('--');
412
172
  const profileArgs = dashIdx === -1 ? rawArgs : rawArgs.slice(0, dashIdx);
413
173
  const claudeArgs = dashIdx === -1 ? [] : rawArgs.slice(dashIdx); // includes '--'
414
- if (profileArgs.length === 0) {
415
- showHelp();
416
- return;
417
- }
174
+ if (profileArgs.length === 0)
175
+ return showHelp();
418
176
  (0, installer_1.installBuiltinServers)();
419
177
  const command = profileArgs[0];
420
178
  const args = profileArgs.slice(1);
421
179
  switch (command) {
422
- // mcc <profile> - launch with profile
423
180
  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
- }
181
+ await dispatchProfile(args);
182
+ break;
183
+ case 'mcp':
184
+ await dispatchMcp(args);
185
+ break;
186
+ case 'config':
187
+ await spawnConfigDashboard();
442
188
  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
- });
189
+ case 'update':
190
+ await (0, update_1.runUpdate)({ checkOnly: args.includes('--check') });
448
191
  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
- }
192
+ case 'update-check':
193
+ (0, update_1.setUpdateCheckCmd)(args[0]);
474
194
  break;
475
- }
476
195
  default:
477
- // Treat as profile launch; pass profile name + claude args
478
- await cmdLaunch([command, ...args, ...claudeArgs]);
196
+ // Treat unknown command as profile launch; pass profile name + claude args
197
+ await (0, launch_1.cmdLaunch)([command, ...args, ...claudeArgs]);
479
198
  }
480
199
  }
481
200
  main().catch((err) => {
package/dist/mcc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcc.js","sourceRoot":"","sources":["../src/mcc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcc.js","sourceRoot":"","sources":["../src/mcc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/mcp/installer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAepB,wBAAgB,qBAAqB,IAAI,IAAI,CAyD5C;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAU3F;AAoBD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AA8CD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CA0CN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAI5C"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/mcp/installer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAepB,wBAAgB,qBAAqB,IAAI,IAAI,CAyD5C;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAU3F;AAoBD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AA8CD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CA4CN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAI5C"}
@@ -49,6 +49,7 @@ exports.getAllServerNames = getAllServerNames;
49
49
  const fs = __importStar(require("fs"));
50
50
  const path = __importStar(require("path"));
51
51
  const picocolors_1 = __importDefault(require("picocolors"));
52
+ const logger_1 = require("../shared/logger");
52
53
  const registry_1 = require("./registry");
53
54
  const external_registry_1 = require("./external-registry");
54
55
  const mcp_config_1 = require("./mcp-config");
@@ -242,8 +243,10 @@ function syncInstanceMcpServers(instancePath, enabledServerNames, _profileName)
242
243
  encoding: 'utf8',
243
244
  mode: 0o600,
244
245
  });
245
- const count = Object.keys(mcpServers).length;
246
- console.log(` ${picocolors_1.default.dim('mcp')} ${picocolors_1.default.dim(`${count} server(s) synced`)}`);
246
+ if ((0, logger_1.isDebugEnabled)()) {
247
+ const count = Object.keys(mcpServers).length;
248
+ console.log(` ${picocolors_1.default.dim('mcp')} ${picocolors_1.default.dim(`${count} server(s) synced`)}`);
249
+ }
247
250
  }
248
251
  /**
249
252
  * Enable an external MCP for a specific instance.