@markus-global/cli 0.4.12 → 0.4.14

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 (52) hide show
  1. package/dist/commands/auth.d.ts +3 -0
  2. package/dist/commands/auth.d.ts.map +1 -0
  3. package/dist/commands/auth.js +420 -0
  4. package/dist/commands/auth.js.map +1 -0
  5. package/dist/commands/channel.d.ts +3 -0
  6. package/dist/commands/channel.d.ts.map +1 -0
  7. package/dist/commands/channel.js +259 -0
  8. package/dist/commands/channel.js.map +1 -0
  9. package/dist/commands/doctor.d.ts +9 -0
  10. package/dist/commands/doctor.d.ts.map +1 -0
  11. package/dist/commands/doctor.js +335 -0
  12. package/dist/commands/doctor.js.map +1 -0
  13. package/dist/commands/gateway.d.ts +1 -1
  14. package/dist/commands/gateway.d.ts.map +1 -1
  15. package/dist/commands/gateway.js +75 -139
  16. package/dist/commands/gateway.js.map +1 -1
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +6 -2
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/model.d.ts +11 -0
  21. package/dist/commands/model.d.ts.map +1 -0
  22. package/dist/commands/model.js +485 -0
  23. package/dist/commands/model.js.map +1 -0
  24. package/dist/commands/models.d.ts +3 -0
  25. package/dist/commands/models.d.ts.map +1 -0
  26. package/dist/commands/models.js +43 -0
  27. package/dist/commands/models.js.map +1 -0
  28. package/dist/commands/start.d.ts.map +1 -1
  29. package/dist/commands/start.js +232 -30
  30. package/dist/commands/start.js.map +1 -1
  31. package/dist/index.js +18 -10
  32. package/dist/index.js.map +1 -1
  33. package/dist/markus.mjs +5886 -2014
  34. package/dist/utils/browser.d.ts +6 -0
  35. package/dist/utils/browser.d.ts.map +1 -0
  36. package/dist/utils/browser.js +18 -0
  37. package/dist/utils/browser.js.map +1 -0
  38. package/dist/utils/logger.d.ts +41 -0
  39. package/dist/utils/logger.d.ts.map +1 -0
  40. package/dist/utils/logger.js +103 -0
  41. package/dist/utils/logger.js.map +1 -0
  42. package/dist/utils/startupProgress.d.ts +61 -0
  43. package/dist/utils/startupProgress.d.ts.map +1 -0
  44. package/dist/utils/startupProgress.js +320 -0
  45. package/dist/utils/startupProgress.js.map +1 -0
  46. package/dist/web-ui/assets/index-Ch2rpF4A.css +1 -0
  47. package/dist/web-ui/assets/index-D8LAgMk8.js +63 -0
  48. package/dist/web-ui/index.html +3 -3
  49. package/package.json +1 -1
  50. package/templates/skills/chrome-devtools/SKILL.md +23 -4
  51. package/dist/web-ui/assets/index-d4taGsNz.css +0 -1
  52. package/dist/web-ui/assets/index-hMt7vPNW.js +0 -63
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAuthCommand(program: Command): void;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6azC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAwCnD"}
@@ -0,0 +1,420 @@
1
+ import * as readline from 'node:readline';
2
+ import { loadConfig, saveConfig } from '@markus/shared';
3
+ // ─── Color constants ──────────────────────────────────────────────────────────
4
+ const C = {
5
+ GREEN: '\x1b[32m',
6
+ RED: '\x1b[31m',
7
+ YELLOW: '\x1b[33m',
8
+ CYAN: '\x1b[36m',
9
+ DIM: '\x1b[2m',
10
+ RESET: '\x1b[0m',
11
+ BOLD: '\x1b[1m',
12
+ };
13
+ function ok(text, detail = '') {
14
+ console.log(` ${C.GREEN}✓${C.RESET} ${text}${detail ? ` ${C.DIM}${detail}${C.RESET}` : ''}`);
15
+ }
16
+ function fail(text, detail = '') {
17
+ console.log(` ${C.RED}✗${C.RESET} ${text}${detail ? ` ${C.DIM}${detail}${C.RESET}` : ''}`);
18
+ }
19
+ function warn(text, detail = '') {
20
+ console.log(` ${C.YELLOW}⚠${C.RESET} ${text}${detail ? ` ${C.DIM}${detail}${C.RESET}` : ''}`);
21
+ }
22
+ function info(text) {
23
+ console.log(` ${C.CYAN}→${C.RESET} ${text}`);
24
+ }
25
+ function section(label) {
26
+ console.log(`\n${C.BOLD}◆ ${label}${C.RESET}`);
27
+ }
28
+ const PROVIDERS = [
29
+ { id: 'anthropic', label: 'Anthropic', envKey: 'ANTHROPIC_API_KEY', defaultModel: 'claude-opus-4-6' },
30
+ { id: 'openai', label: 'OpenAI', envKey: 'OPENAI_API_KEY', defaultModel: 'gpt-5.4' },
31
+ { id: 'google', label: 'Google Gemini', envKey: 'GOOGLE_API_KEY', defaultModel: 'gemini-3-1-pro' },
32
+ { id: 'minimax', label: 'MiniMax', envKey: 'MINIMAX_API_KEY', baseUrl: 'https://api.minimax.io/v1', defaultModel: 'MiniMax-M2.7' },
33
+ { id: 'siliconflow', label: 'SiliconFlow', envKey: 'SILICONFLOW_API_KEY', baseUrl: 'https://api.siliconflow.cn/v1', defaultModel: 'Qwen/Qwen3.5-35B-A3B' },
34
+ { id: 'openrouter', label: 'OpenRouter', envKey: 'OPENROUTER_API_KEY', baseUrl: 'https://openrouter.ai/api/v1', defaultModel: 'xiaomi/mimo-v2-pro:free' },
35
+ { id: 'zai', label: 'ZAI', envKey: 'ZAI_API_KEY', baseUrl: 'https://api.z.ai/api/paas/v4', defaultModel: 'glm-5.1' },
36
+ { id: 'deepseek', label: 'DeepSeek', envKey: 'DEEPSEEK_API_KEY', defaultModel: 'deepseek-chat' },
37
+ ];
38
+ // ─── Placeholder detection ────────────────────────────────────────────────────
39
+ const PLACEHOLDER_PATTERNS = ['***', 'your-', 'dummy', 'fake', 'test-key', 'replace-me'];
40
+ function isPlaceholder(key) {
41
+ return PLACEHOLDER_PATTERNS.some(p => key.toLowerCase().includes(p)) || key.length < 8;
42
+ }
43
+ // ─── API validation ───────────────────────────────────────────────────────────
44
+ async function validateKey(id, apiKey, model, baseUrl) {
45
+ const pdef = PROVIDERS.find(p => p.id === id);
46
+ if (!pdef)
47
+ return { ok: false, error: 'Unknown provider' };
48
+ const url = baseUrl ?? pdef.baseUrl ?? '';
49
+ if (id === 'anthropic') {
50
+ const msgUrl = `${url}/v1/messages`.replace('/v1/v1/', '/v1/');
51
+ try {
52
+ const res = await fetch(msgUrl, {
53
+ method: 'POST',
54
+ headers: {
55
+ 'Content-Type': 'application/json',
56
+ 'x-api-key': apiKey,
57
+ 'anthropic-version': '2023-06-01',
58
+ 'anthropic-dangerous-direct-browser-access': 'true',
59
+ },
60
+ body: JSON.stringify({ model: model || pdef.defaultModel, max_tokens: 5, messages: [{ role: 'user', content: 'hi' }] }),
61
+ });
62
+ if (res.ok)
63
+ return { ok: true };
64
+ if (res.status === 401 || res.status === 403)
65
+ return { ok: false, error: 'Invalid API key' };
66
+ if (res.status === 429)
67
+ return { ok: false, error: 'Rate limited' };
68
+ return { ok: false, error: `HTTP ${res.status}` };
69
+ }
70
+ catch (e) {
71
+ return { ok: false, error: `Network error: ${e instanceof Error ? e.message : String(e)}` };
72
+ }
73
+ }
74
+ const chatUrl = `${url}/chat/completions`.replace('/v1/v1/', '/v1/');
75
+ try {
76
+ const res = await fetch(chatUrl, {
77
+ method: 'POST',
78
+ headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
79
+ body: JSON.stringify({ model: model || pdef.defaultModel, messages: [{ role: 'user', content: 'hi' }], max_tokens: 5 }),
80
+ });
81
+ if (res.ok)
82
+ return { ok: true };
83
+ if (res.status === 401 || res.status === 403)
84
+ return { ok: false, error: 'Invalid API key' };
85
+ if (res.status === 429)
86
+ return { ok: false, error: 'Rate limited / quota exceeded' };
87
+ return { ok: false, error: `HTTP ${res.status}` };
88
+ }
89
+ catch (e) {
90
+ return { ok: false, error: `Network error: ${e instanceof Error ? e.message : String(e)}` };
91
+ }
92
+ }
93
+ // ─── Readline helper ──────────────────────────────────────────────────────────
94
+ function createAsk() {
95
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
96
+ const ask = (q, def) => new Promise(r => rl.question(`${q}${def ? ` [${def}]` : ''}: `, ans => r(ans.trim() || def || '')));
97
+ return { rl, ask };
98
+ }
99
+ // ─── List command ─────────────────────────────────────────────────────────────
100
+ async function listAuth() {
101
+ const config = loadConfig(undefined);
102
+ const providers = config.llm?.providers ?? {};
103
+ const defaultProv = config.llm?.defaultProvider ?? '';
104
+ console.log(`\n${C.BOLD}╔══════════════════════════════════════════════════════════════╗
105
+ ║ ${C.CYAN}Markus Auth — Credential Pool${C.RESET}${C.BOLD} ║
106
+ ╚══════════════════════════════════════════════════════════════╝${C.RESET}\n`);
107
+ const configured = Object.entries(providers).filter(([, cfg]) => cfg?.apiKey && !isPlaceholder(cfg.apiKey));
108
+ const envBacked = PROVIDERS.filter(p => !configured.some(([id]) => id === p.id) && process.env[p.envKey] && !isPlaceholder(process.env[p.envKey]));
109
+ if (configured.length === 0 && envBacked.length === 0) {
110
+ warn('No credentials configured');
111
+ info('Run: markus auth add <provider>');
112
+ return;
113
+ }
114
+ // Configured providers
115
+ for (const [id, cfg] of configured) {
116
+ const pdef = PROVIDERS.find(p => p.id === id);
117
+ const label = pdef?.label ?? id;
118
+ const isDefault = id === defaultProv;
119
+ const model = cfg.model ?? '';
120
+ const key = cfg.apiKey ?? '';
121
+ const keyLabel = cfg.apiKeyLabel ?? 'primary';
122
+ const exhausted = cfg.exhausted;
123
+ const key2 = cfg.apiKey2;
124
+ const keyLabel2 = cfg.apiKeyLabel2 ?? 'secondary';
125
+ const exhausted2 = cfg.exhausted2;
126
+ const exTag = exhausted ? ` ${C.RED}[EXHAUSTED]${C.RESET}` : '';
127
+ const exTag2 = exhausted2 ? ` ${C.RED}[EXHAUSTED]${C.RESET}` : '';
128
+ const defTag = isDefault ? ` ${C.CYAN}[default]${C.RESET}` : '';
129
+ const masked1 = key.slice(0, 4) + '****' + key.slice(-3);
130
+ console.log(` ${C.BOLD}${label}${defTag}${C.RESET} (${id})`);
131
+ console.log(` ${keyLabel}: ${masked1}${model ? ` → ${model}` : ''}${exTag}`);
132
+ if (key2) {
133
+ const masked2 = key2.slice(0, 4) + '****' + key2.slice(-3);
134
+ console.log(` ${keyLabel2}: ${masked2}${exhausted2 ? ` ${C.RED}[EXHAUSTED]${C.RESET}` : ''}`);
135
+ }
136
+ console.log('');
137
+ }
138
+ // Env-backed providers
139
+ for (const p of envBacked) {
140
+ const key = process.env[p.envKey] ?? '';
141
+ const masked = key.slice(0, 4) + '****' + key.slice(-3);
142
+ console.log(` ${C.BOLD}${p.label}${C.RESET} (${p.id})`);
143
+ console.log(` ${C.DIM}via environment: ${p.envKey}${C.RESET}`);
144
+ console.log(` key: ${masked}`);
145
+ console.log('');
146
+ }
147
+ console.log(` ${C.DIM}Commands: markus auth add <provider> | remove <provider> | reset <provider>${C.RESET}\n`);
148
+ }
149
+ // ─── Add command ───────────────────────────────────────────────────────────────
150
+ async function addAuth(provider, opts) {
151
+ const pdef = PROVIDERS.find(p => p.id === provider);
152
+ if (!pdef) {
153
+ fail(`Unknown provider: ${provider}`);
154
+ console.log(` Available: ${PROVIDERS.map(p => p.id).join(', ')}`);
155
+ return;
156
+ }
157
+ const { rl, ask } = createAsk();
158
+ let apiKey = opts.key ?? '';
159
+ let label = opts.label ?? 'primary';
160
+ if (!apiKey) {
161
+ // Check env
162
+ const envKey = process.env[pdef.envKey];
163
+ if (envKey && !isPlaceholder(envKey)) {
164
+ ok(`${pdef.label} (${pdef.envKey})`, 'found in environment — will not overwrite');
165
+ }
166
+ apiKey = await ask(`API Key for ${pdef.label} (${pdef.envKey})`);
167
+ }
168
+ if (!apiKey || isPlaceholder(apiKey)) {
169
+ fail('No valid API key provided');
170
+ rl.close();
171
+ return;
172
+ }
173
+ if (!label) {
174
+ const { ask: a2 } = createAsk();
175
+ label = await a2('Key label (e.g. primary, backup, production)', 'primary');
176
+ }
177
+ const model = opts.model ?? pdef.defaultModel;
178
+ // Validate if requested
179
+ if (opts.validate !== false) {
180
+ console.log(`\n ${C.DIM}Validating...${C.RESET}`);
181
+ const result = await validateKey(provider, apiKey, model, pdef.baseUrl);
182
+ if (result.ok) {
183
+ ok('API key valid');
184
+ }
185
+ else {
186
+ fail(`Validation failed: ${result.error}`);
187
+ const { ask: retryAsk } = createAsk();
188
+ const retry = await retryAsk('Add anyway? (y/n)', 'n');
189
+ if (retry.toLowerCase() !== 'y') {
190
+ console.log(' Cancelled.');
191
+ rl.close();
192
+ return;
193
+ }
194
+ }
195
+ }
196
+ // Save
197
+ const config = loadConfig(undefined);
198
+ const existing = config.llm?.providers?.[provider] ?? {};
199
+ const isFirstKey = !existing.apiKey || isPlaceholder(existing.apiKey);
200
+ const updated = {
201
+ ...existing,
202
+ apiKey,
203
+ apiKeyLabel: label,
204
+ model: model || existing.model || pdef.defaultModel,
205
+ ...(pdef.baseUrl ? { baseUrl: pdef.baseUrl } : {}),
206
+ enabled: true,
207
+ };
208
+ const newConfig = {
209
+ ...config,
210
+ llm: {
211
+ ...(config.llm ?? {}),
212
+ providers: {
213
+ ...(config.llm?.providers ?? {}),
214
+ [provider]: updated,
215
+ },
216
+ defaultModel: config.llm?.defaultModel ?? model ?? pdef.defaultModel,
217
+ defaultProvider: config.llm?.defaultProvider ?? provider,
218
+ },
219
+ };
220
+ saveConfig(newConfig);
221
+ console.log(`\n ${C.GREEN}✓${C.RESET} ${pdef.label} credential added (${label})`);
222
+ if (isFirstKey)
223
+ console.log(` ${C.DIM}Set as default provider${C.RESET}`);
224
+ rl.close();
225
+ }
226
+ // ─── Remove command ────────────────────────────────────────────────────────────
227
+ async function removeAuth(provider, opts) {
228
+ const pdef = PROVIDERS.find(p => p.id === provider);
229
+ if (!pdef) {
230
+ fail(`Unknown provider: ${provider}`);
231
+ return;
232
+ }
233
+ const config = loadConfig(undefined);
234
+ const existing = config.llm?.providers?.[provider];
235
+ if (!existing) {
236
+ warn(`No credentials found for ${pdef.label}`);
237
+ return;
238
+ }
239
+ if (opts.label === 'primary' || !opts.label) {
240
+ // Remove primary key, shift key2 to key1
241
+ const { apiKey2, apiKeyLabel2, exhausted2, ...rest } = existing;
242
+ const updated = { ...rest };
243
+ if (apiKey2) {
244
+ updated.apiKey = apiKey2;
245
+ updated.apiKeyLabel = apiKeyLabel2 ?? 'primary';
246
+ updated.exhausted = exhausted2 ?? false;
247
+ }
248
+ else {
249
+ delete updated.apiKey;
250
+ delete updated.apiKeyLabel;
251
+ delete updated.exhausted;
252
+ }
253
+ const newConfig = {
254
+ ...config,
255
+ llm: {
256
+ ...config.llm,
257
+ providers: { ...config.llm?.providers, [provider]: updated },
258
+ },
259
+ };
260
+ saveConfig(newConfig);
261
+ console.log(`\n ${C.GREEN}✓${C.RESET} Primary key removed for ${pdef.label}`);
262
+ if (apiKey2)
263
+ console.log(` ${C.DIM}Secondary key promoted to primary${C.RESET}`);
264
+ }
265
+ else if (opts.label === 'secondary') {
266
+ const { apiKey2, apiKeyLabel2, exhausted2, ...rest } = existing;
267
+ const updated = { ...rest };
268
+ const newConfig = {
269
+ ...config,
270
+ llm: {
271
+ ...config.llm,
272
+ providers: { ...config.llm?.providers, [provider]: updated },
273
+ },
274
+ };
275
+ saveConfig(newConfig);
276
+ console.log(`\n ${C.GREEN}✓${C.RESET} Secondary key removed for ${pdef.label}`);
277
+ }
278
+ else {
279
+ fail(`Unknown key label: ${opts.label}`);
280
+ info(`Available labels: primary, secondary`);
281
+ }
282
+ }
283
+ // ─── Reset command ─────────────────────────────────────────────────────────────
284
+ async function resetAuth(provider) {
285
+ const config = loadConfig(undefined);
286
+ const providers = config.llm?.providers ?? {};
287
+ if (provider) {
288
+ const pdef = PROVIDERS.find(p => p.id === provider);
289
+ if (!pdef) {
290
+ fail(`Unknown provider: ${provider}`);
291
+ return;
292
+ }
293
+ const cfg = providers[provider];
294
+ if (!cfg) {
295
+ warn(`No credentials for ${pdef.label}`);
296
+ return;
297
+ }
298
+ const updated = { ...cfg, exhausted: false, exhausted2: false };
299
+ saveConfig({ ...config, llm: { ...config.llm, providers: { ...providers, [provider]: updated } } });
300
+ ok(`Exhaustion flags reset for ${pdef.label}`);
301
+ return;
302
+ }
303
+ // Reset all
304
+ let count = 0;
305
+ const updated = {};
306
+ for (const [id, cfg] of Object.entries(providers)) {
307
+ if (cfg?.exhausted || cfg?.exhausted2) {
308
+ updated[id] = { ...cfg, exhausted: false, exhausted2: false };
309
+ count++;
310
+ }
311
+ }
312
+ if (count > 0) {
313
+ saveConfig({ ...config, llm: { ...config.llm, providers: { ...providers, ...updated } } });
314
+ ok(`Reset exhaustion flags for ${count} provider(s)`);
315
+ }
316
+ else {
317
+ ok('No exhausted credentials found');
318
+ }
319
+ }
320
+ // ─── Validate command ──────────────────────────────────────────────────────────
321
+ async function validateAuth(provider) {
322
+ const config = loadConfig(undefined);
323
+ const providers = config.llm?.providers ?? {};
324
+ const toValidate = [];
325
+ if (provider) {
326
+ const pdef = PROVIDERS.find(p => p.id === provider);
327
+ if (!pdef) {
328
+ fail(`Unknown provider: ${provider}`);
329
+ return;
330
+ }
331
+ const cfg = providers[provider];
332
+ if (cfg?.apiKey && !isPlaceholder(cfg.apiKey)) {
333
+ toValidate.push({ id: provider, key: cfg.apiKey, model: cfg.model ?? pdef.defaultModel, baseUrl: cfg.baseUrl ?? pdef.baseUrl, label: cfg.apiKeyLabel ?? 'primary' });
334
+ }
335
+ if (cfg?.apiKey2 && !isPlaceholder(cfg.apiKey2)) {
336
+ toValidate.push({ id: provider, key: cfg.apiKey2, model: cfg.model ?? pdef.defaultModel, baseUrl: cfg.baseUrl ?? pdef.baseUrl, label: cfg.apiKeyLabel2 ?? 'secondary' });
337
+ }
338
+ if (toValidate.length === 0) {
339
+ warn(`No valid keys for ${pdef.label}`);
340
+ return;
341
+ }
342
+ }
343
+ else {
344
+ for (const [id, cfg] of Object.entries(providers)) {
345
+ const pdef = PROVIDERS.find(p => p.id === id);
346
+ if (!pdef)
347
+ continue;
348
+ const c = cfg;
349
+ if (c?.apiKey && !isPlaceholder(c.apiKey)) {
350
+ toValidate.push({ id, key: c.apiKey, model: c.model ?? pdef.defaultModel, baseUrl: c.baseUrl ?? pdef.baseUrl, label: c.apiKeyLabel ?? 'primary' });
351
+ }
352
+ if (c?.apiKey2 && !isPlaceholder(c.apiKey2)) {
353
+ toValidate.push({ id, key: c.apiKey2, model: c.model ?? pdef.defaultModel, baseUrl: c.baseUrl ?? pdef.baseUrl, label: c.apiKeyLabel2 ?? 'secondary' });
354
+ }
355
+ }
356
+ // Also check env-backed keys
357
+ for (const p of PROVIDERS) {
358
+ if (!providers[p.id] && process.env[p.envKey] && !isPlaceholder(process.env[p.envKey])) {
359
+ toValidate.push({ id: p.id, key: process.env[p.envKey], model: p.defaultModel, baseUrl: p.baseUrl, label: `env:${p.envKey}` });
360
+ }
361
+ }
362
+ }
363
+ if (toValidate.length === 0) {
364
+ warn('No credentials to validate');
365
+ return;
366
+ }
367
+ section('API Validation');
368
+ let allOk = true;
369
+ await Promise.all(toValidate.map(async ({ id, key, model, baseUrl, label }) => {
370
+ const pdef = PROVIDERS.find(p => p.id === id);
371
+ const result = await validateKey(id, key, model, baseUrl);
372
+ if (result.ok) {
373
+ ok(`${pdef?.label ?? id} (${label})`, '✓ API call succeeded');
374
+ }
375
+ else {
376
+ fail(`${pdef?.label ?? id} (${label})`, `✗ ${result.error}`);
377
+ allOk = false;
378
+ }
379
+ }));
380
+ if (allOk)
381
+ console.log(`\n ${C.GREEN}✓ All credentials valid!${C.RESET}\n`);
382
+ }
383
+ // ─── CLI registration ─────────────────────────────────────────────────────────
384
+ export function registerAuthCommand(program) {
385
+ const auth = program.command('auth').description('Manage LLM API credentials and credential pools');
386
+ auth
387
+ .command('list')
388
+ .description('List all configured API credentials')
389
+ .action(async () => { await listAuth(); });
390
+ auth
391
+ .command('add <provider>')
392
+ .description('Add or update an API credential for a provider')
393
+ .option('--key <key>', 'API key value')
394
+ .option('--label <label>', 'Label for this credential (e.g. primary, backup)')
395
+ .option('--model <model>', 'Model to use with this credential')
396
+ .option('--no-validate', 'Skip API validation before saving')
397
+ .action(async (provider, opts) => {
398
+ await addAuth(provider, { key: opts.key, label: opts.label, model: opts.model, validate: opts.validate !== false });
399
+ });
400
+ auth
401
+ .command('remove <provider>')
402
+ .description('Remove an API credential')
403
+ .option('--label <label>', 'Which key to remove: primary or secondary (default: primary)')
404
+ .action(async (provider, opts) => {
405
+ await removeAuth(provider, { label: opts.label });
406
+ });
407
+ auth
408
+ .command('reset [provider]')
409
+ .description('Reset exhaustion flags for a provider (or all if no provider specified)')
410
+ .action(async (provider) => {
411
+ await resetAuth(provider);
412
+ });
413
+ auth
414
+ .command('validate [provider]')
415
+ .description('Validate API credentials (all or specific provider)')
416
+ .action(async (provider) => {
417
+ await validateAuth(provider);
418
+ });
419
+ }
420
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerChannelCommand(program: Command): void;
3
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqRzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAuCtD"}