@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
@@ -44,36 +44,184 @@ const cors_1 = __importDefault(require("cors"));
44
44
  const path = __importStar(require("path"));
45
45
  const fs = __importStar(require("fs"));
46
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");
47
+ const store_1 = require("../accounts/store");
48
+ const registry_1 = require("../mcp/registry");
49
+ const mcp_config_1 = require("../mcp/mcp-config");
50
+ const external_registry_1 = require("../mcp/external-registry");
51
+ const installer_1 = require("../mcp/installer");
52
+ const instance_manager_1 = require("../accounts/instance-manager");
53
+ const provider_preset_catalog_1 = require("../shared/provider-preset-catalog");
52
54
  const PORT = 3000;
53
- const DIST_DIR = path.join(__dirname, '..', 'dist', 'ui');
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();
55
+ // dist/dashboard/server.js ../../dist/ui (two levels up to reach dist/)
56
+ const DIST_DIR = path.join(__dirname, '..', '..', 'dist', 'ui');
57
+ const PKG_VERSION = (() => {
58
+ try {
59
+ return require(path.join(__dirname, '..', '..', 'package.json')).version;
60
+ }
61
+ catch {
62
+ return '0.0.0';
63
+ }
64
+ })();
65
+ /**
66
+ * Verify the key works and (best-effort) return the available model list.
67
+ *
68
+ * OpenAI protocol → GET {base}/models (Authorization: Bearer). DashScope,
69
+ * bigmodel, etc. implement this, so it doubles as both
70
+ * the auth check and the model list.
71
+ * Anthropic protocol → POST {base}/v1/messages with a 1-token ping. Most
72
+ * third-party Anthropic-compatible gateways (xiaomi,
73
+ * deepseek, kimi…) DO NOT implement GET /v1/models — it
74
+ * 404s even with a perfectly valid key. The only
75
+ * endpoint they reliably expose is the one we actually
76
+ * use, /v1/messages, so we validate against that and
77
+ * treat /v1/models purely as an optional model-list
78
+ * source (its failure is non-fatal).
79
+ */
80
+ async function testProviderKey(baseUrl, apiKey, protocol, model) {
81
+ const trimmedBase = baseUrl.trim().replace(/\/+$/, '');
82
+ if (protocol === 'anthropic') {
83
+ return testAnthropicKey(trimmedBase, apiKey, model);
84
+ }
85
+ const start = Date.now();
86
+ try {
87
+ const resp = await fetch(`${trimmedBase}/models`, {
88
+ method: 'GET',
89
+ headers: { Authorization: `Bearer ${apiKey}` },
90
+ });
91
+ const latencyMs = Date.now() - start;
92
+ if (!resp.ok) {
93
+ const errText = await resp.text().catch(() => '');
94
+ return {
95
+ ok: false,
96
+ latencyMs,
97
+ models: [],
98
+ error: `HTTP ${resp.status} ${resp.statusText}${errText ? ` — ${errText.slice(0, 200)}` : ''}`,
99
+ };
100
+ }
101
+ const body = (await resp.json());
102
+ return { ok: true, latencyMs, models: extractModelIds(body) };
103
+ }
104
+ catch (e) {
105
+ return { ok: false, latencyMs: Date.now() - start, models: [], error: e.message };
106
+ }
61
107
  }
62
- async function saveProfile(profile, apiKey) {
63
- const fn = await importModule('./accounts/store', 'saveProfile');
64
- return fn(profile, apiKey);
108
+ /**
109
+ * Validate an Anthropic-protocol key by hitting /v1/messages — the endpoint the
110
+ * profile actually uses — instead of /v1/models, which most gateways don't have.
111
+ * Distinguishes bad-key (401/403), billing (402), wrong-base (404) and a wrong
112
+ * default model from a genuinely working profile. The model list is fetched
113
+ * separately and best-effort: if the gateway happens to expose /v1/models we
114
+ * surface it, otherwise we just return an empty list without failing the test.
115
+ */
116
+ async function testAnthropicKey(base, apiKey, model) {
117
+ const headers = {
118
+ 'x-api-key': apiKey,
119
+ 'anthropic-version': '2023-06-01',
120
+ 'content-type': 'application/json',
121
+ };
122
+ // Best-effort model list — never fatal.
123
+ const models = await fetchAnthropicModels(base, headers);
124
+ if (!model) {
125
+ // Without a model we can't ping /v1/messages; fall back to whatever the
126
+ // optional model-list call told us.
127
+ return {
128
+ ok: models.length > 0,
129
+ latencyMs: 0,
130
+ models,
131
+ error: models.length > 0 ? undefined : '需要填默认 model 才能验证连接',
132
+ };
133
+ }
134
+ const start = Date.now();
135
+ try {
136
+ // First ping without thinking. Some models (e.g. kimi-k2.7-code) MANDATE
137
+ // thinking and 400 with "only type=enabled is allowed" — retry those with
138
+ // adaptive thinking enabled (which Claude Code itself sends at runtime).
139
+ let resp = await pingMessages(base, headers, model, false);
140
+ if (!resp.ok && resp.status === 400 && /thinking/i.test(resp.errText)) {
141
+ resp = await pingMessages(base, headers, model, true);
142
+ }
143
+ const latencyMs = Date.now() - start;
144
+ if (resp.ok) {
145
+ return { ok: true, latencyMs, models };
146
+ }
147
+ const snippet = resp.errText ? ` — ${resp.errText.slice(0, 200)}` : '';
148
+ let hint = '';
149
+ if (resp.status === 401 || resp.status === 403)
150
+ hint = '(API Key 无效或无权限)';
151
+ else if (resp.status === 402)
152
+ hint = '(Key 有效,但账户余额不足 / 需充值)';
153
+ else if (resp.status === 404)
154
+ hint = '(接口未找到,检查 Base URL 是否正确)';
155
+ return {
156
+ ok: false,
157
+ latencyMs,
158
+ models,
159
+ error: `HTTP ${resp.status} ${resp.statusText}${hint}${snippet}`,
160
+ };
161
+ }
162
+ catch (e) {
163
+ return { ok: false, latencyMs: Date.now() - start, models, error: e.message };
164
+ }
65
165
  }
66
- async function deleteProfile(name) {
67
- const fn = await importModule('./accounts/store', 'deleteProfile');
68
- return fn(name);
166
+ /** Single /v1/messages ping. `withThinking` sends adaptive thinking for models
167
+ * that reject requests without it. */
168
+ async function pingMessages(base, headers, model, withThinking) {
169
+ const body = {
170
+ model,
171
+ max_tokens: withThinking ? 64 : 1,
172
+ messages: [{ role: 'user', content: 'hi' }],
173
+ };
174
+ if (withThinking)
175
+ body.thinking = { type: 'adaptive' };
176
+ const resp = await fetch(`${base}/v1/messages`, {
177
+ method: 'POST',
178
+ headers,
179
+ body: JSON.stringify(body),
180
+ });
181
+ const errText = resp.ok ? '' : await resp.text().catch(() => '');
182
+ return { ok: resp.ok, status: resp.status, statusText: resp.statusText, errText };
69
183
  }
70
- async function setDefaultProfile(name) {
71
- const fn = await importModule('./accounts/store', 'setDefaultProfile');
72
- return fn(name);
184
+ /** Try GET {base}/v1/models; return [] on any failure (many gateways 404). */
185
+ async function fetchAnthropicModels(base, headers) {
186
+ try {
187
+ const resp = await fetch(`${base}/v1/models`, { method: 'GET', headers });
188
+ if (!resp.ok)
189
+ return [];
190
+ return extractModelIds((await resp.json()));
191
+ }
192
+ catch {
193
+ return [];
194
+ }
73
195
  }
74
- async function getDefaultProfile() {
75
- const fn = await importModule('./accounts/store', 'getDefaultProfile');
76
- return fn();
196
+ /**
197
+ * Extract model IDs from the various shapes providers return. We accept
198
+ * `data: [...]`, `models: [...]`, or a bare array; each entry can be a
199
+ * string or an object with `id` / `model` / `name`.
200
+ */
201
+ function extractModelIds(body) {
202
+ if (!body)
203
+ return [];
204
+ const raw = body;
205
+ const list = Array.isArray(body)
206
+ ? body
207
+ : Array.isArray(raw.data)
208
+ ? raw.data
209
+ : Array.isArray(raw.models)
210
+ ? raw.models
211
+ : [];
212
+ const ids = [];
213
+ for (const item of list) {
214
+ if (typeof item === 'string') {
215
+ ids.push(item);
216
+ }
217
+ else if (item && typeof item === 'object') {
218
+ const o = item;
219
+ const id = o.id ?? o.model ?? o.name;
220
+ if (typeof id === 'string')
221
+ ids.push(id);
222
+ }
223
+ }
224
+ return Array.from(new Set(ids));
77
225
  }
78
226
  function openBrowser(url) {
79
227
  const isWindows = process.platform === 'win32';
@@ -92,24 +240,36 @@ async function main() {
92
240
  app.use(express_1.default.static(DIST_DIR));
93
241
  }
94
242
  // GET /api/profiles
95
- app.get('/api/profiles', async (_req, res) => {
243
+ app.get('/api/profiles', (_req, res) => {
96
244
  try {
97
- res.json(await listProfiles());
245
+ res.json((0, store_1.listProfiles)());
98
246
  }
99
247
  catch (e) {
100
248
  res.status(500).json({ error: e.message });
101
249
  }
102
250
  });
103
251
  // POST /api/profiles
104
- app.post('/api/profiles', async (req, res) => {
252
+ app.post('/api/profiles', (req, res) => {
105
253
  try {
106
- const { name, baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol, proxyChatCompletionsPath } = req.body;
254
+ const { name, displayName, baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol, proxyChatCompletionsPath, reasoningEffort } = req.body;
107
255
  if (!name || !baseUrl || !apiKey || !model) {
108
256
  res.status(400).json({ error: 'Missing required fields' });
109
257
  return;
110
258
  }
111
- const profile = { name, baseUrl, model, opusModel, sonnetModel, haikuModel, protocol: protocol || 'anthropic', proxyChatCompletionsPath: proxyChatCompletionsPath || undefined, createdAt: new Date().toISOString() };
112
- await saveProfile(profile, apiKey);
259
+ const profile = {
260
+ name,
261
+ displayName: displayName?.trim() || undefined,
262
+ baseUrl,
263
+ model,
264
+ opusModel,
265
+ sonnetModel,
266
+ haikuModel,
267
+ protocol: protocol || 'anthropic',
268
+ proxyChatCompletionsPath: proxyChatCompletionsPath || undefined,
269
+ reasoningEffort: reasoningEffort || undefined,
270
+ createdAt: new Date().toISOString(),
271
+ };
272
+ (0, store_1.saveProfile)(profile, apiKey);
113
273
  console.log(`[i] Profile created: ${name} (model: ${model}, protocol: ${protocol || 'anthropic'})`);
114
274
  res.json({ ok: true });
115
275
  }
@@ -118,20 +278,19 @@ async function main() {
118
278
  }
119
279
  });
120
280
  // PUT /api/profiles/:name — update profile
121
- app.put('/api/profiles/:name', async (req, res) => {
281
+ app.put('/api/profiles/:name', (req, res) => {
122
282
  try {
123
- const { baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol, proxyChatCompletionsPath } = req.body;
283
+ const { displayName, baseUrl, apiKey, model, opusModel, sonnetModel, haikuModel, protocol, proxyChatCompletionsPath, reasoningEffort } = req.body;
124
284
  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);
285
+ const existingKey = (0, store_1.getProfileApiKey)(profileName);
286
+ const existing = (0, store_1.listProfiles)().find((p) => p.name === profileName);
129
287
  if (!existing) {
130
288
  res.status(404).json({ error: 'Profile not found' });
131
289
  return;
132
290
  }
133
291
  const updated = {
134
292
  ...existing,
293
+ displayName: displayName !== undefined ? (displayName.trim() || undefined) : existing.displayName,
135
294
  baseUrl: baseUrl ?? existing.baseUrl,
136
295
  model: model ?? existing.model,
137
296
  opusModel: opusModel !== undefined ? (opusModel || undefined) : existing.opusModel,
@@ -139,9 +298,10 @@ async function main() {
139
298
  haikuModel: haikuModel !== undefined ? (haikuModel || undefined) : existing.haikuModel,
140
299
  protocol: protocol ?? existing.protocol,
141
300
  proxyChatCompletionsPath: proxyChatCompletionsPath !== undefined ? (proxyChatCompletionsPath || undefined) : existing.proxyChatCompletionsPath,
301
+ reasoningEffort: reasoningEffort !== undefined ? (reasoningEffort || undefined) : existing.reasoningEffort,
142
302
  };
143
303
  // Only update API key if a new one is provided
144
- await saveProfile(updated, apiKey ?? existingKey ?? '');
304
+ (0, store_1.saveProfile)(updated, apiKey ?? existingKey ?? '');
145
305
  console.log(`[i] Profile updated: ${profileName} (model: ${updated.model}, protocol: ${updated.protocol || 'anthropic'})`);
146
306
  res.json({ ok: true });
147
307
  }
@@ -149,11 +309,51 @@ async function main() {
149
309
  res.status(500).json({ error: e.message });
150
310
  }
151
311
  });
312
+ // GET /api/profiles/:name/key — return stored API key (dashboard is localhost-only)
313
+ app.get('/api/profiles/:name/key', (req, res) => {
314
+ try {
315
+ const name = req.params.name;
316
+ const key = (0, store_1.getProfileApiKey)(name);
317
+ if (key === undefined) {
318
+ res.status(404).json({ error: 'Profile or key not found' });
319
+ return;
320
+ }
321
+ res.json({ apiKey: key });
322
+ }
323
+ catch (e) {
324
+ res.status(500).json({ error: e.message });
325
+ }
326
+ });
327
+ // POST /api/profiles/test — test API key + fetch model list in one shot.
328
+ // Body: { baseUrl, protocol, apiKey?, profileName?, model? } — apiKey falls
329
+ // back to the stored key for `profileName` when omitted (used by the edit
330
+ // form). `model` is used to ping /v1/messages for anthropic-protocol checks.
331
+ app.post('/api/profiles/test', async (req, res) => {
332
+ try {
333
+ const { baseUrl, protocol, apiKey, profileName, model } = req.body;
334
+ if (!baseUrl || !protocol) {
335
+ res.status(400).json({ error: 'baseUrl and protocol required' });
336
+ return;
337
+ }
338
+ const effectiveKey = apiKey?.trim() ||
339
+ (profileName ? (0, store_1.getProfileApiKey)(profileName) : undefined) ||
340
+ '';
341
+ if (!effectiveKey) {
342
+ res.status(400).json({ error: 'No API key available' });
343
+ return;
344
+ }
345
+ const result = await testProviderKey(baseUrl, effectiveKey, protocol, model?.trim() || undefined);
346
+ res.json(result);
347
+ }
348
+ catch (e) {
349
+ res.status(500).json({ error: e.message });
350
+ }
351
+ });
152
352
  // DELETE /api/profiles/:name
153
- app.delete('/api/profiles/:name', async (req, res) => {
353
+ app.delete('/api/profiles/:name', (req, res) => {
154
354
  try {
155
355
  const name = req.params.name;
156
- await deleteProfile(name);
356
+ (0, store_1.deleteProfile)(name);
157
357
  console.log(`[i] Profile deleted: ${name}`);
158
358
  res.json({ ok: true });
159
359
  }
@@ -162,25 +362,27 @@ async function main() {
162
362
  }
163
363
  });
164
364
  // PUT /api/profiles/:name/default
165
- app.put('/api/profiles/:name/default', async (req, res) => {
365
+ app.put('/api/profiles/:name/default', (req, res) => {
166
366
  try {
167
- await setDefaultProfile(req.params.name);
367
+ (0, store_1.setDefaultProfile)(req.params.name);
168
368
  res.json({ ok: true });
169
369
  }
170
370
  catch (e) {
171
371
  res.status(500).json({ error: e.message });
172
372
  }
173
373
  });
174
- // GET /api/ping - connection health check
374
+ // GET /api/ping - connection health check (UI 用,5s 轮询)
175
375
  app.get('/api/ping', (_req, res) => {
176
376
  res.json({ ok: true });
177
377
  });
378
+ // GET /api/health - 进程级探活(用于 systemd / Docker / 外部监控)
379
+ app.get('/api/health', (_req, res) => {
380
+ res.json({ status: 'ok', version: PKG_VERSION, uptime: process.uptime() });
381
+ });
178
382
  // GET /api/status
179
- app.get('/api/status', async (_req, res) => {
383
+ app.get('/api/status', (_req, res) => {
180
384
  try {
181
- const defaultProfile = await getDefaultProfile();
182
- let currentProfile = defaultProfile;
183
- res.json({ currentProfile });
385
+ res.json({ currentProfile: (0, store_1.getDefaultProfile)() });
184
386
  }
185
387
  catch (e) {
186
388
  res.status(500).json({ error: e.message });
@@ -363,6 +565,10 @@ async function main() {
363
565
  app.get('/api/mcp-config/presets', (_req, res) => {
364
566
  res.json((0, mcp_config_1.getProviderPresets)());
365
567
  });
568
+ // GET /api/profile-presets - provider templates for the Templates gallery
569
+ app.get('/api/profile-presets', (_req, res) => {
570
+ res.json(provider_preset_catalog_1.PROVIDER_PRESET_DEFINITIONS);
571
+ });
366
572
  app.get('*', (_req, res) => {
367
573
  const indexPath = path.join(DIST_DIR, 'index.html');
368
574
  if (fs.existsSync(indexPath)) {
@@ -406,4 +612,4 @@ main().catch((err) => {
406
612
  console.error(`[!] Dashboard server error: ${err.message}`);
407
613
  process.exit(1);
408
614
  });
409
- //# sourceMappingURL=dashboard-server.js.map
615
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sDAA8B;AAC9B,gDAAwB;AACxB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAsC;AACtC,6CAQ2B;AAC3B,8CAA4F;AAC5F,kDAK2B;AAC3B,gEAKkC;AAClC,gDAI0B;AAC1B,mEAAkE;AAClE,+EAAgF;AAEhF,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,2EAA2E;AAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE;IAChC,IAAI,CAAC;QACH,OAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAyB,CAAC,OAAO,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AASL;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,eAAe,CAC5B,OAAe,EACf,MAAc,EACd,QAAgC,EAChC,KAAc;IAEd,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,SAAS,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;SAC/C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS;gBACT,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aAC/F,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAY,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IAC/F,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAY,EACZ,MAAc,EACd,KAAc;IAEd,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,MAAM;QACnB,mBAAmB,EAAE,YAAY;QACjC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,wCAAwC;IACxC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,wEAAwE;QACxE,oCAAoC;QACpC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;YACrB,SAAS,EAAE,CAAC;YACZ,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;SAC5D,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,kBAAkB,CAAC;aACrE,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,wBAAwB,CAAC;aACzD,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,0BAA0B,CAAC;QAChE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,SAAS;YACT,MAAM;YACN,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,OAAO,EAAE;SACjE,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;uCACuC;AACvC,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,OAA+B,EAC/B,KAAa,EACb,YAAqB;IAErB,MAAM,IAAI,GAA4B;QACpC,KAAK;QACL,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC5C,CAAC;IACF,IAAI,YAAY;QAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AACpF,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,oBAAoB,CACjC,IAAY,EACZ,OAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAY,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAa;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,IAAgD,CAAC;IAC7D,MAAM,IAAI,GAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBACzB,CAAC,CAAC,GAAG,CAAC,MAAM;gBACZ,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,IAAyD,CAAC;YACpE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC;YACrC,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,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,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;QAC3B,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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wBAAwB,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,IAYlJ,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;gBACvB,IAAI;gBACJ,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,SAAS;gBAC7C,OAAO;gBACP,KAAK;gBACL,SAAS;gBACT,WAAW;gBACX,UAAU;gBACV,QAAQ,EAAE,QAAQ,IAAI,WAAW;gBACjC,wBAAwB,EAAE,wBAAwB,IAAI,SAAS;gBAC/D,eAAe,EAAE,eAAe,IAAI,SAAS;gBAC7C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,IAAA,mBAAW,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wBAAwB,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,IAW5I,CAAC;YACF,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACpC,MAAM,WAAW,GAAG,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAA,oBAAY,GAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACpE,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,WAAW,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;gBACjG,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;gBACvC,wBAAwB,EAAE,wBAAwB,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,wBAAwB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB;gBAC9I,eAAe,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe;aAC3G,CAAC;YACF,+CAA+C;YAC/C,IAAA,mBAAW,EAAC,OAAO,EAAE,MAAM,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC;YAClD,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,oFAAoF;IACpF,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,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,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAM7D,CAAC;YACF,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,MAAM,YAAY,GAChB,MAAM,EAAE,IAAI,EAAE;gBACd,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzD,EAAE,CAAC;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;YAClG,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,6BAA6B;IAC7B,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC;YACpB,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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,IAAA,yBAAiB,EAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,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,uDAAuD;IACvD,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,sDAAsD;IACtD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAA,yBAAiB,GAAE,EAAE,CAAC,CAAC;QACpD,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,0EAA0E;IAC1E,GAAG,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5C,GAAG,CAAC,IAAI,CAAC,qDAA2B,CAAC,CAAC;IACxC,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,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;QAC5C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;gBAC5D,WAAW,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,EAAE,CAAC;gBACT,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,iDAAiD,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,WAAW,EAAE,CAAC;AAChB,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 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"}