@hileeon/mcc 0.1.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 (138) hide show
  1. package/.claude/CLAUDE.md +204 -0
  2. package/.claude/agents/.gitkeep +0 -0
  3. package/.claude/settings.json +9 -0
  4. package/.claude/skills/.gitkeep +0 -0
  5. package/README.md +127 -0
  6. package/dist/accounts/instance-manager.d.ts +11 -0
  7. package/dist/accounts/instance-manager.d.ts.map +1 -0
  8. package/dist/accounts/instance-manager.js +89 -0
  9. package/dist/accounts/instance-manager.js.map +1 -0
  10. package/dist/accounts/shared-manager.d.ts +25 -0
  11. package/dist/accounts/shared-manager.d.ts.map +1 -0
  12. package/dist/accounts/shared-manager.js +186 -0
  13. package/dist/accounts/shared-manager.js.map +1 -0
  14. package/dist/accounts/store.d.ts +30 -0
  15. package/dist/accounts/store.d.ts.map +1 -0
  16. package/dist/accounts/store.js +128 -0
  17. package/dist/accounts/store.js.map +1 -0
  18. package/dist/core/model-router.d.ts +30 -0
  19. package/dist/core/model-router.d.ts.map +1 -0
  20. package/dist/core/model-router.js +64 -0
  21. package/dist/core/model-router.js.map +1 -0
  22. package/dist/dashboard-server.d.ts +5 -0
  23. package/dist/dashboard-server.d.ts.map +1 -0
  24. package/dist/dashboard-server.js +387 -0
  25. package/dist/dashboard-server.js.map +1 -0
  26. package/dist/mcc.d.ts +8 -0
  27. package/dist/mcc.d.ts.map +1 -0
  28. package/dist/mcc.js +474 -0
  29. package/dist/mcc.js.map +1 -0
  30. package/dist/mcp/external-registry.d.ts +24 -0
  31. package/dist/mcp/external-registry.d.ts.map +1 -0
  32. package/dist/mcp/external-registry.js +99 -0
  33. package/dist/mcp/external-registry.js.map +1 -0
  34. package/dist/mcp/installer.d.ts +31 -0
  35. package/dist/mcp/installer.d.ts.map +1 -0
  36. package/dist/mcp/installer.js +273 -0
  37. package/dist/mcp/installer.js.map +1 -0
  38. package/dist/mcp/mcp-config.d.ts +86 -0
  39. package/dist/mcp/mcp-config.d.ts.map +1 -0
  40. package/dist/mcp/mcp-config.js +178 -0
  41. package/dist/mcp/mcp-config.js.map +1 -0
  42. package/dist/mcp/registry.d.ts +23 -0
  43. package/dist/mcp/registry.d.ts.map +1 -0
  44. package/dist/mcp/registry.js +100 -0
  45. package/dist/mcp/registry.js.map +1 -0
  46. package/dist/proxy/proxy-daemon.d.ts +27 -0
  47. package/dist/proxy/proxy-daemon.d.ts.map +1 -0
  48. package/dist/proxy/proxy-daemon.js +192 -0
  49. package/dist/proxy/proxy-daemon.js.map +1 -0
  50. package/dist/proxy/proxy-entry.d.ts +11 -0
  51. package/dist/proxy/proxy-entry.d.ts.map +1 -0
  52. package/dist/proxy/proxy-entry.js +74 -0
  53. package/dist/proxy/proxy-entry.js.map +1 -0
  54. package/dist/proxy/proxy-paths.d.ts +27 -0
  55. package/dist/proxy/proxy-paths.d.ts.map +1 -0
  56. package/dist/proxy/proxy-paths.js +125 -0
  57. package/dist/proxy/proxy-paths.js.map +1 -0
  58. package/dist/proxy/proxy-server.d.ts +20 -0
  59. package/dist/proxy/proxy-server.d.ts.map +1 -0
  60. package/dist/proxy/proxy-server.js +280 -0
  61. package/dist/proxy/proxy-server.js.map +1 -0
  62. package/dist/proxy/upstream-url.d.ts +7 -0
  63. package/dist/proxy/upstream-url.d.ts.map +1 -0
  64. package/dist/proxy/upstream-url.js +38 -0
  65. package/dist/proxy/upstream-url.js.map +1 -0
  66. package/dist/shared/logger.d.ts +23 -0
  67. package/dist/shared/logger.d.ts.map +1 -0
  68. package/dist/shared/logger.js +184 -0
  69. package/dist/shared/logger.js.map +1 -0
  70. package/dist/shared/provider-preset-catalog.d.ts +41 -0
  71. package/dist/shared/provider-preset-catalog.d.ts.map +1 -0
  72. package/dist/shared/provider-preset-catalog.js +299 -0
  73. package/dist/shared/provider-preset-catalog.js.map +1 -0
  74. package/docs/decisions.md +33 -0
  75. package/docs/lessons.md +8 -0
  76. package/docs/product.md +37 -0
  77. package/lib/mcp/mcc-image-analysis-server.cjs +454 -0
  78. package/lib/mcp/mcc-websearch-server.cjs +339 -0
  79. package/lib/mcp-hooks/image-analysis-runtime.cjs +510 -0
  80. package/lib/mcp-hooks/image-analyzer-transformer.cjs +526 -0
  81. package/lib/mcp-hooks/websearch-transformer.cjs +1421 -0
  82. package/lib/proxy/config/config-loader-facade.js +24 -0
  83. package/lib/proxy/glmt/delta-accumulator.js +363 -0
  84. package/lib/proxy/glmt/glmt-transformer.js +204 -0
  85. package/lib/proxy/glmt/index.js +41 -0
  86. package/lib/proxy/glmt/locale-enforcer.js +69 -0
  87. package/lib/proxy/glmt/pipeline/content-transformer.js +162 -0
  88. package/lib/proxy/glmt/pipeline/index.js +20 -0
  89. package/lib/proxy/glmt/pipeline/request-transformer.js +116 -0
  90. package/lib/proxy/glmt/pipeline/response-builder.js +205 -0
  91. package/lib/proxy/glmt/pipeline/stream-parser.js +234 -0
  92. package/lib/proxy/glmt/pipeline/tool-call-handler.js +78 -0
  93. package/lib/proxy/glmt/pipeline/types.js +6 -0
  94. package/lib/proxy/glmt/reasoning-enforcer.js +151 -0
  95. package/lib/proxy/glmt/sse-parser.js +102 -0
  96. package/lib/proxy/services/logging.js +13 -0
  97. package/lib/proxy/transformers/request-transformer.js +452 -0
  98. package/lib/proxy/transformers/sse-stream-transformer.js +199 -0
  99. package/lib/shared/logger.cjs +138 -0
  100. package/package.json +35 -0
  101. package/src/accounts/instance-manager.ts +58 -0
  102. package/src/accounts/shared-manager.ts +154 -0
  103. package/src/accounts/store.ts +111 -0
  104. package/src/core/model-router.ts +82 -0
  105. package/src/dashboard-server.ts +407 -0
  106. package/src/mcc.ts +474 -0
  107. package/src/mcp/external-registry.ts +73 -0
  108. package/src/mcp/installer.ts +258 -0
  109. package/src/mcp/mcp-config.ts +168 -0
  110. package/src/mcp/registry.ts +89 -0
  111. package/src/proxy/proxy-daemon.ts +184 -0
  112. package/src/proxy/proxy-entry.ts +63 -0
  113. package/src/proxy/proxy-paths.ts +97 -0
  114. package/src/proxy/proxy-server.ts +278 -0
  115. package/src/proxy/upstream-url.ts +38 -0
  116. package/src/shared/logger.ts +140 -0
  117. package/src/shared/provider-preset-catalog.ts +340 -0
  118. package/tsconfig.json +33 -0
  119. package/ui/.prettierrc +9 -0
  120. package/ui/index.html +12 -0
  121. package/ui/package.json +33 -0
  122. package/ui/postcss.config.js +6 -0
  123. package/ui/src/App.tsx +753 -0
  124. package/ui/src/components/ui/button.tsx +48 -0
  125. package/ui/src/components/ui/card.tsx +50 -0
  126. package/ui/src/components/ui/input.tsx +21 -0
  127. package/ui/src/components/ui/label.tsx +20 -0
  128. package/ui/src/components/ui/select.tsx +80 -0
  129. package/ui/src/components/ui/switch.tsx +26 -0
  130. package/ui/src/components/ui/tabs.tsx +52 -0
  131. package/ui/src/index.css +33 -0
  132. package/ui/src/lib/api.ts +185 -0
  133. package/ui/src/lib/utils.ts +6 -0
  134. package/ui/src/main.tsx +10 -0
  135. package/ui/src/vite-env.d.ts +1 -0
  136. package/ui/tailwind.config.js +49 -0
  137. package/ui/tsconfig.json +25 -0
  138. package/ui/vite.config.ts +20 -0
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ /**
3
+ * Dashboard Server - Express API + static file server
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ const express_1 = __importDefault(require("express"));
43
+ const cors_1 = __importDefault(require("cors"));
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs"));
46
+ const child_process_1 = require("child_process");
47
+ const registry_1 = require("./mcp/registry");
48
+ const mcp_config_1 = require("./mcp/mcp-config");
49
+ const external_registry_1 = require("./mcp/external-registry");
50
+ const installer_1 = require("./mcp/installer");
51
+ const instance_manager_1 = require("./accounts/instance-manager");
52
+ const PORT = 3000;
53
+ const DIST_DIR = path.join(__dirname, '..', 'ui', 'dist');
54
+ async function importModule(modulePath, fn) {
55
+ const mod = await Promise.resolve(`${modulePath}`).then(s => __importStar(require(s)));
56
+ return mod[fn];
57
+ }
58
+ async function listProfiles() {
59
+ const fn = await importModule('./accounts/store', 'listProfiles');
60
+ return fn();
61
+ }
62
+ async function saveProfile(profile, apiKey) {
63
+ const fn = await importModule('./accounts/store', 'saveProfile');
64
+ return fn(profile, apiKey);
65
+ }
66
+ async function deleteProfile(name) {
67
+ const fn = await importModule('./accounts/store', 'deleteProfile');
68
+ return fn(name);
69
+ }
70
+ async function setDefaultProfile(name) {
71
+ const fn = await importModule('./accounts/store', 'setDefaultProfile');
72
+ return fn(name);
73
+ }
74
+ async function getDefaultProfile() {
75
+ const fn = await importModule('./accounts/store', 'getDefaultProfile');
76
+ return fn();
77
+ }
78
+ function openBrowser(url) {
79
+ const isWindows = process.platform === 'win32';
80
+ if (isWindows) {
81
+ (0, child_process_1.spawn)('cmd', ['/c', 'start', '""', url], { detached: true, stdio: 'ignore' }).unref();
82
+ }
83
+ else {
84
+ (0, child_process_1.spawn)('open', [url], { detached: true, stdio: 'ignore' }).unref();
85
+ }
86
+ }
87
+ async function main() {
88
+ const app = (0, express_1.default)();
89
+ app.use((0, cors_1.default)());
90
+ app.use(express_1.default.json());
91
+ if (fs.existsSync(DIST_DIR)) {
92
+ app.use(express_1.default.static(DIST_DIR));
93
+ }
94
+ // GET /api/profiles
95
+ app.get('/api/profiles', async (_req, res) => {
96
+ try {
97
+ res.json(await listProfiles());
98
+ }
99
+ catch (e) {
100
+ res.status(500).json({ error: e.message });
101
+ }
102
+ });
103
+ // POST /api/profiles
104
+ app.post('/api/profiles', async (req, res) => {
105
+ try {
106
+ const { name, baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol } = req.body;
107
+ if (!name || !baseUrl || !apiKey || !model) {
108
+ res.status(400).json({ error: 'Missing required fields' });
109
+ return;
110
+ }
111
+ const profile = { name, baseUrl, model, opusModel, sonnetModel, haikuModel, protocol: protocol || 'anthropic', createdAt: new Date().toISOString() };
112
+ await saveProfile(profile, apiKey);
113
+ console.log(`[i] Profile created: ${name} (model: ${model}, protocol: ${protocol || 'anthropic'})`);
114
+ res.json({ ok: true });
115
+ }
116
+ catch (e) {
117
+ res.status(500).json({ error: e.message });
118
+ }
119
+ });
120
+ // PUT /api/profiles/:name — update profile
121
+ app.put('/api/profiles/:name', async (req, res) => {
122
+ try {
123
+ const { baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol } = req.body;
124
+ const profileName = req.params.name;
125
+ const getProfileApiKey = await importModule('./accounts/store', 'getProfileApiKey');
126
+ const existingKey = getProfileApiKey(profileName);
127
+ const profiles = await listProfiles();
128
+ const existing = profiles.find((p) => p.name === profileName);
129
+ if (!existing) {
130
+ res.status(404).json({ error: 'Profile not found' });
131
+ return;
132
+ }
133
+ const updated = {
134
+ ...existing,
135
+ baseUrl: baseUrl ?? existing.baseUrl,
136
+ model: model ?? existing.model,
137
+ opusModel: opusModel !== undefined ? (opusModel || undefined) : existing.opusModel,
138
+ sonnetModel: sonnetModel !== undefined ? (sonnetModel || undefined) : existing.sonnetModel,
139
+ haikuModel: haikuModel !== undefined ? (haikuModel || undefined) : existing.haikuModel,
140
+ protocol: protocol ?? existing.protocol,
141
+ };
142
+ // Only update API key if a new one is provided
143
+ await saveProfile(updated, apiKey ?? existingKey ?? '');
144
+ console.log(`[i] Profile updated: ${profileName} (model: ${updated.model}, protocol: ${updated.protocol || 'anthropic'})`);
145
+ res.json({ ok: true });
146
+ }
147
+ catch (e) {
148
+ res.status(500).json({ error: e.message });
149
+ }
150
+ });
151
+ // DELETE /api/profiles/:name
152
+ app.delete('/api/profiles/:name', async (req, res) => {
153
+ try {
154
+ const name = req.params.name;
155
+ await deleteProfile(name);
156
+ console.log(`[i] Profile deleted: ${name}`);
157
+ res.json({ ok: true });
158
+ }
159
+ catch (e) {
160
+ res.status(500).json({ error: e.message });
161
+ }
162
+ });
163
+ // PUT /api/profiles/:name/default
164
+ app.put('/api/profiles/:name/default', async (req, res) => {
165
+ try {
166
+ await setDefaultProfile(req.params.name);
167
+ res.json({ ok: true });
168
+ }
169
+ catch (e) {
170
+ res.status(500).json({ error: e.message });
171
+ }
172
+ });
173
+ // GET /api/ping - connection health check
174
+ app.get('/api/ping', (_req, res) => {
175
+ res.json({ ok: true });
176
+ });
177
+ // GET /api/status
178
+ app.get('/api/status', async (_req, res) => {
179
+ try {
180
+ const defaultProfile = await getDefaultProfile();
181
+ let currentProfile = defaultProfile;
182
+ res.json({ currentProfile });
183
+ }
184
+ catch (e) {
185
+ res.status(500).json({ error: e.message });
186
+ }
187
+ });
188
+ // GET /api/mcp
189
+ app.get('/api/mcp', (_req, res) => {
190
+ const servers = registry_1.BUILTIN_MCP_SERVERS.map((s) => ({
191
+ name: s.name,
192
+ displayName: s.displayName,
193
+ description: s.description,
194
+ enabled: s.enabledByDefault,
195
+ }));
196
+ res.json(servers);
197
+ });
198
+ // PUT /api/mcp/:name/:action
199
+ app.put('/api/mcp/:name/:action', (req, res) => {
200
+ const { name, action } = req.params;
201
+ if (action !== 'enable' && action !== 'disable') {
202
+ res.status(400).json({ error: `Invalid action: ${action}` });
203
+ return;
204
+ }
205
+ // Built-in servers: no per-instance tracking yet
206
+ const builtin = registry_1.BUILTIN_MCP_SERVERS.find((s) => s.name === name);
207
+ if (builtin) {
208
+ res.json({ ok: true });
209
+ return;
210
+ }
211
+ // External servers: require instance param
212
+ const instanceName = req.query.instance;
213
+ if (!instanceName) {
214
+ res.status(400).json({ error: 'instance query param required for external MCPs' });
215
+ return;
216
+ }
217
+ const instanceMgr = new instance_manager_1.MCCInstanceManager();
218
+ const instancePath = instanceMgr.getInstancePath(instanceName);
219
+ if (action === 'enable') {
220
+ (0, installer_1.enableInstanceExternalMcp)(instancePath, name);
221
+ }
222
+ else {
223
+ (0, installer_1.disableInstanceExternalMcp)(instancePath, name);
224
+ }
225
+ res.json({ ok: true });
226
+ });
227
+ // GET /api/mcp/all - all servers (built-in + external) with enabled state
228
+ app.get('/api/mcp/all', (req, res) => {
229
+ try {
230
+ const instanceName = req.query.instance;
231
+ const instanceMgr = new instance_manager_1.MCCInstanceManager();
232
+ let instanceExternalEnabled = [];
233
+ if (instanceName) {
234
+ const instancePath = instanceMgr.getInstancePath(instanceName);
235
+ instanceExternalEnabled = (0, installer_1.readInstanceExternalEnabled)(instancePath);
236
+ }
237
+ const servers = (0, registry_1.getAllServers)();
238
+ const result = servers.map((s) => {
239
+ const isBuiltin = 'config' in s;
240
+ const isEnabled = isBuiltin
241
+ ? s.enabledByDefault
242
+ : instanceExternalEnabled.includes(s.name);
243
+ return {
244
+ name: s.name,
245
+ displayName: s.displayName,
246
+ description: s.description,
247
+ builtin: isBuiltin,
248
+ enabledByDefault: isBuiltin ? s.enabledByDefault : s.enabledByDefault,
249
+ enabled: isEnabled,
250
+ };
251
+ });
252
+ res.json(result);
253
+ }
254
+ catch (e) {
255
+ res.status(500).json({ error: e.message });
256
+ }
257
+ });
258
+ // GET /api/mcp/external - list external MCP servers
259
+ app.get('/api/mcp/external', (_req, res) => {
260
+ try {
261
+ res.json((0, external_registry_1.readExternalMcpRegistry)());
262
+ }
263
+ catch (e) {
264
+ res.status(500).json({ error: e.message });
265
+ }
266
+ });
267
+ // POST /api/mcp/external - add external MCP server
268
+ app.post('/api/mcp/external', (req, res) => {
269
+ try {
270
+ const server = req.body;
271
+ if (!server.name || !server.command || !server.args) {
272
+ res.status(400).json({ error: 'name, command, and args are required' });
273
+ return;
274
+ }
275
+ (0, external_registry_1.addExternalMcpServer)(server);
276
+ res.json({ ok: true });
277
+ }
278
+ catch (e) {
279
+ res.status(500).json({ error: e.message });
280
+ }
281
+ });
282
+ // DELETE /api/mcp/external/:name - remove external MCP server
283
+ app.delete('/api/mcp/external/:name', (req, res) => {
284
+ try {
285
+ (0, external_registry_1.removeExternalMcpServer)(req.params.name);
286
+ res.json({ ok: true });
287
+ }
288
+ catch (e) {
289
+ res.status(500).json({ error: e.message });
290
+ }
291
+ });
292
+ // GET /api/mcp-config
293
+ app.get('/api/mcp-config', (_req, res) => {
294
+ try {
295
+ res.json((0, mcp_config_1.readMcpConfig)());
296
+ }
297
+ catch (e) {
298
+ res.status(500).json({ error: e.message });
299
+ }
300
+ });
301
+ // PUT /api/mcp-config
302
+ app.put('/api/mcp-config', (req, res) => {
303
+ try {
304
+ const newConfig = req.body;
305
+ if (!newConfig || !newConfig.websearch || !newConfig.imageAnalysis) {
306
+ res.status(400).json({ error: 'Invalid MCP config' });
307
+ return;
308
+ }
309
+ const oldConfig = (0, mcp_config_1.readMcpConfig)();
310
+ const changes = [];
311
+ // Section-level toggles
312
+ if (oldConfig.websearch.enabled !== newConfig.websearch.enabled) {
313
+ changes.push(`websearch ${newConfig.websearch.enabled ? 'enabled' : 'disabled'}`);
314
+ }
315
+ if (oldConfig.imageAnalysis.enabled !== newConfig.imageAnalysis.enabled) {
316
+ changes.push(`imageAnalysis ${newConfig.imageAnalysis.enabled ? 'enabled' : 'disabled'}`);
317
+ }
318
+ // WebSearch provider changes
319
+ for (const [id, np] of Object.entries(newConfig.websearch.providers)) {
320
+ const op = oldConfig.websearch.providers[id];
321
+ if (!op)
322
+ continue;
323
+ if (op.enabled !== np.enabled) {
324
+ changes.push(`websearch.${id} ${np.enabled ? 'on' : 'off'}`);
325
+ }
326
+ if (op.apiKey !== np.apiKey) {
327
+ changes.push(np.apiKey ? `websearch.${id} apiKey updated` : `websearch.${id} apiKey cleared`);
328
+ }
329
+ }
330
+ // ImageAnalysis provider changes
331
+ for (const [id, np] of Object.entries(newConfig.imageAnalysis.providers)) {
332
+ const op = oldConfig.imageAnalysis.providers[id];
333
+ if (!op)
334
+ continue;
335
+ if (op.enabled !== np.enabled) {
336
+ changes.push(`imageAnalysis.${id} ${np.enabled ? 'on' : 'off'}`);
337
+ }
338
+ if (op.apiKey !== np.apiKey) {
339
+ changes.push(np.apiKey ? `imageAnalysis.${id} apiKey updated` : `imageAnalysis.${id} apiKey cleared`);
340
+ }
341
+ if (op.model !== np.model) {
342
+ changes.push(`imageAnalysis.${id} model=${np.model}`);
343
+ }
344
+ if (op.baseUrl !== np.baseUrl) {
345
+ changes.push(`imageAnalysis.${id} endpoint updated`);
346
+ }
347
+ }
348
+ (0, mcp_config_1.writeMcpConfig)(newConfig);
349
+ if (changes.length > 0) {
350
+ console.log(`[i] MCP config updated: ${changes.join('; ')}`);
351
+ }
352
+ else {
353
+ console.log('[i] MCP config saved (no changes detected)');
354
+ }
355
+ res.json({ ok: true });
356
+ }
357
+ catch (e) {
358
+ res.status(500).json({ error: e.message });
359
+ }
360
+ });
361
+ // GET /api/mcp-config/presets
362
+ app.get('/api/mcp-config/presets', (_req, res) => {
363
+ res.json((0, mcp_config_1.getProviderPresets)());
364
+ });
365
+ app.get('*', (_req, res) => {
366
+ const indexPath = path.join(DIST_DIR, 'index.html');
367
+ if (fs.existsSync(indexPath)) {
368
+ res.sendFile(indexPath);
369
+ }
370
+ else {
371
+ res.status(404).send('Dashboard not built. Run: npm run build:ui');
372
+ }
373
+ });
374
+ app.listen(PORT, () => {
375
+ console.log(`[OK] MCC Dashboard: http://localhost:${PORT}`);
376
+ openBrowser(`http://localhost:${PORT}`);
377
+ });
378
+ }
379
+ process.on('SIGINT', () => {
380
+ console.log('\n[i] Dashboard shutting down...');
381
+ process.exit(0);
382
+ });
383
+ main().catch((err) => {
384
+ console.error(`[!] Dashboard server error: ${err.message}`);
385
+ process.exit(1);
386
+ });
387
+ //# sourceMappingURL=dashboard-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-server.js","sourceRoot":"","sources":["../src/dashboard-server.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sDAA8B;AAC9B,gDAAwB;AACxB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAsC;AAEtC,6CAA2F;AAC3F,iDAK0B;AAC1B,+DAKiC;AACjC,+CAIyB;AACzB,kEAAiE;AAEjE,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAE1D,KAAK,UAAU,YAAY,CAAI,UAAkB,EAAE,EAAU;IAC3D,MAAM,GAAG,GAAG,yBAAa,UAAU,uCAAC,CAAC;IACrC,OAAQ,GAAyB,CAAC,EAAE,CAAM,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,EAAE,GAAG,MAAM,YAAY,CAAkB,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACnF,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAgB,EAAE,MAAc;IACzD,MAAM,EAAE,GAAG,MAAM,YAAY,CAC3B,kBAAkB,EAClB,aAAa,CACd,CAAC;IACF,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,MAAM,EAAE,GAAG,MAAM,YAAY,CAAyB,kBAAkB,EAAE,eAAe,CAAC,CAAC;IAC3F,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,MAAM,EAAE,GAAG,MAAM,YAAY,CAAyB,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,EAAE,GAAG,MAAM,YAAY,CAA2B,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;IACjG,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,oBAAoB;IACpB,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAS1F,CAAC;YACF,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI,WAAW,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9J,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,YAAY,KAAK,eAAe,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;YACpG,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAQpF,CAAC;YACF,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACpC,MAAM,gBAAgB,GAAG,MAAM,YAAY,CACzC,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;YACF,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAY;gBACvB,GAAG,QAAQ;gBACX,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO;gBACpC,KAAK,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK;gBAC9B,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;gBAClF,WAAW,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;gBAC1F,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU;gBACtF,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ;aACxC,CAAC;YACF,+CAA+C;YAC/C,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,wBAAwB,WAAW,YAAY,OAAO,CAAC,KAAK,eAAe,OAAO,CAAC,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;YAC3H,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;YACjD,IAAI,cAAc,GAAG,cAAc,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,8BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,OAAO,EAAE,CAAC,CAAC,gBAAgB;SAC5B,CAAC,CAAC,CAAC;QACJ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,GAAG,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,iDAAiD;QACjD,MAAM,OAAO,GAAG,8BAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACjE,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,2CAA2C;QAC3C,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,QAA8B,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,qCAAkB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAA,qCAAyB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAA,sCAA0B,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,QAA8B,CAAC;YAC9D,MAAM,WAAW,GAAG,IAAI,qCAAkB,EAAE,CAAC;YAC7C,IAAI,uBAAuB,GAAa,EAAE,CAAC;YAC3C,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC/D,uBAAuB,GAAG,IAAA,uCAA2B,EAAC,YAAY,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,OAAO,GAAG,IAAA,wBAAa,GAAE,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAuC,EAAE,EAAE;gBACrE,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,CAAC;gBAChC,MAAM,SAAS,GAAG,SAAS;oBACzB,CAAC,CAAC,CAAC,CAAC,gBAAgB;oBACpB,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,OAAO,EAAE,SAAS;oBAClB,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAuB,CAAC,gBAAgB;oBAC5F,OAAO,EAAE,SAAS;iBACnB,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAA,2CAAuB,GAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,IAAyB,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,IAAA,wCAAoB,EAAC,MAAM,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,GAAG,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,IAAA,2CAAuB,EAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAA,0BAAa,GAAE,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,IAAiB,CAAC;YACxC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;gBACnE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAA,0BAAa,GAAE,CAAC;YAClC,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,wBAAwB;YACxB,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5F,CAAC;YAED,6BAA6B;YAC7B,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,EAAE;oBAAE,SAAS;gBAClB,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,EAAE;oBAAE,SAAS;gBAClB,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACxG,CAAC;gBACD,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,IAAA,2BAAc,EAAC,SAAS,CAAC,CAAC;YAE1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC5D,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC,IAAA,+BAAkB,GAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;QAC5D,WAAW,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/mcc.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCC - My Cloud Code
3
+ *
4
+ * Simplified CLI for multi-provider profile switching.
5
+ * No OAuth, no local proxy - uses provider's direct API.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=mcc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcc.d.ts","sourceRoot":"","sources":["../src/mcc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}