convoai 1.3.3 → 1.4.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.
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerGo(program: Command): void;
@@ -0,0 +1,709 @@
1
+ import { createServer as createHttpServer } from 'node:http';
2
+ import { WebSocketServer } from 'ws';
3
+ import { readFileSync } from 'node:fs';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { dirname, join } from 'node:path';
6
+ import { execSync } from 'node:child_process';
7
+ import chalk from 'chalk';
8
+ import { resolveConfig, loadConfig, saveConfig } from '../config/manager.js';
9
+ import { getAgentAPI } from './agent/_helpers.js';
10
+ import { runPanel } from './agent/panel.js';
11
+ import { generateRtcToken } from '../utils/token.js';
12
+ import { findChrome } from '../utils/find-chrome.js';
13
+ import { withSpinner } from '../ui/spinner.js';
14
+ import { printSuccess, printError, printHint } from '../ui/output.js';
15
+ import { printKeyValue } from '../ui/table.js';
16
+ import { handleError } from '../utils/errors.js';
17
+ import { track } from '../utils/telemetry.js';
18
+ import { getStrings } from '../ui/i18n.js';
19
+ import { LLM_PROVIDERS, TTS_PROVIDERS, ASR_PROVIDERS, ASR_LANGUAGES, } from '../providers/catalog.js';
20
+ // ─── __dirname for ESM ──────────────────────────────────────────────────────
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = dirname(__filename);
23
+ // ─── Greeting by Language ───────────────────────────────────────────────────
24
+ const GREETINGS = {
25
+ 'zh-CN': '\u4F60\u597D\uFF0C\u6211\u662F\u58F0\u7F51 ConvoAI \u8BED\u97F3\u52A9\u624B\uFF0C\u6709\u4EC0\u4E48\u53EF\u4EE5\u5E2E\u4F60\u7684\u5417\uFF1F',
26
+ 'zh-HK': '\u4F60\u597D\uFF0C\u6211\u662F\u8072\u7DB2 ConvoAI \u8A9E\u97F3\u52A9\u624B\uFF0C\u6709\u4EC0\u9EBC\u53EF\u4EE5\u5E6B\u4F60\u7684\u55CE\uFF1F',
27
+ 'zh-TW': '\u4F60\u597D\uFF0C\u6211\u662F\u8072\u7DB2 ConvoAI \u8A9E\u97F3\u52A9\u624B\uFF0C\u6709\u4EC0\u9EBC\u53EF\u4EE5\u5E6B\u4F60\u7684\u55CE\uFF1F',
28
+ 'en-US': 'Hi, I\'m your Agora ConvoAI voice assistant. How can I help you?',
29
+ 'ja-JP': '\u3053\u3093\u306B\u3061\u306F\u3001Agora ConvoAI \u97F3\u58F0\u30A2\u30B7\u30B9\u30BF\u30F3\u30C8\u3067\u3059\u3002\u4F55\u304B\u304A\u624B\u4F1D\u3044\u3067\u304D\u307E\u3059\u304B\uFF1F',
30
+ 'ko-KR': '\uC548\uB155\uD558\uC138\uC694, Agora ConvoAI \uC74C\uC131 \uC5B4\uC2DC\uC2A4\uD134\uD2B8\uC785\uB2C8\uB2E4. \uBB34\uC5C7\uC744 \uB3C4\uC640\uB4DC\uB9B4\uAE4C\uC694?',
31
+ };
32
+ function getGreeting(language) {
33
+ return GREETINGS[language] ?? GREETINGS['en-US'];
34
+ }
35
+ // ─── Locate HTML Clients ────────────────────────────────────────────────────
36
+ function findClientHtml() {
37
+ let dir = __dirname;
38
+ for (let i = 0; i < 6; i++) {
39
+ const candidate = join(dir, 'src', 'web', 'client.html');
40
+ try {
41
+ readFileSync(candidate);
42
+ return candidate;
43
+ }
44
+ catch { /* keep looking */ }
45
+ dir = dirname(dir);
46
+ }
47
+ throw new Error('Could not find web client HTML. Reinstall the package.');
48
+ }
49
+ function findChatClientHtml() {
50
+ let dir = __dirname;
51
+ for (let i = 0; i < 6; i++) {
52
+ const candidate = join(dir, 'src', 'web', 'chat-client.html');
53
+ try {
54
+ readFileSync(candidate);
55
+ return candidate;
56
+ }
57
+ catch { /* keep looking */ }
58
+ dir = dirname(dir);
59
+ }
60
+ throw new Error('Could not find chat-client.html. Reinstall the package.');
61
+ }
62
+ // ─── LLM Provider Ordering ─────────────────────────────────────────────────
63
+ const LLM_ORDER_CN = [
64
+ 'dashscope', 'deepseek', 'openai', 'groq', 'anthropic',
65
+ 'gemini', 'azure', 'bedrock', 'dify', 'custom',
66
+ ];
67
+ const LLM_ORDER_EN = [
68
+ 'openai', 'groq', 'anthropic', 'gemini', 'dashscope',
69
+ 'deepseek', 'azure', 'bedrock', 'dify', 'custom',
70
+ ];
71
+ const LLM_CN_NAMES = {
72
+ dashscope: '\u963F\u91CC\u901A\u4E49\u5343\u95EE',
73
+ deepseek: 'DeepSeek',
74
+ openai: 'OpenAI',
75
+ groq: 'Groq',
76
+ anthropic: 'Anthropic',
77
+ gemini: 'Gemini',
78
+ azure: 'Azure',
79
+ bedrock: 'Bedrock',
80
+ dify: 'Dify',
81
+ custom: 'Custom',
82
+ };
83
+ function getOrderedLlmChoices(lang) {
84
+ const order = lang === 'cn' ? LLM_ORDER_CN : LLM_ORDER_EN;
85
+ return order
86
+ .map((value) => {
87
+ const provider = LLM_PROVIDERS.find((p) => p.value === value);
88
+ if (!provider)
89
+ return null;
90
+ const name = lang === 'cn' ? (LLM_CN_NAMES[value] ?? provider.name) : provider.name;
91
+ return { name, value: provider.value };
92
+ })
93
+ .filter((c) => c !== null);
94
+ }
95
+ // ─── Command Registration ───────────────────────────────────────────────────
96
+ export function registerGo(program) {
97
+ program
98
+ .command('go')
99
+ .description('Start a voice conversation (uses last config)')
100
+ .option('-c, --channel <name>', 'Override channel name')
101
+ .option('--setup', 'Re-configure ASR/LLM/TTS before starting')
102
+ .option('--model <model>', 'One-time model override')
103
+ .option('--tts <vendor>', 'One-time TTS override')
104
+ .option('--asr <vendor>', 'One-time ASR override')
105
+ .option('--browser', 'Force browser mode')
106
+ .option('--profile <name>', 'Config profile')
107
+ .action(async (opts) => {
108
+ try {
109
+ await goAction(opts);
110
+ }
111
+ catch (error) {
112
+ handleError(error);
113
+ }
114
+ });
115
+ }
116
+ // ─── Action ─────────────────────────────────────────────────────────────────
117
+ async function goAction(opts) {
118
+ // ═════════════════════════════════════════════════════════════════════════
119
+ // Step 1: Validate config
120
+ // ═════════════════════════════════════════════════════════════════════════
121
+ const config = resolveConfig(opts.profile);
122
+ const configObj = loadConfig();
123
+ const profileName = opts.profile ?? configObj.default_profile ?? 'default';
124
+ const profile = configObj.profiles?.[profileName] ?? {};
125
+ const lang = config.region === 'cn' ? 'cn' : 'global';
126
+ const str = getStrings(lang);
127
+ // Check Agora credentials
128
+ if (!config.app_id || !config.customer_id || !config.customer_secret) {
129
+ printError(lang === 'cn'
130
+ ? '\u672A\u914D\u7F6E Agora \u51ED\u8BC1\u3002'
131
+ : 'No Agora credentials configured.');
132
+ printHint(lang === 'cn'
133
+ ? '\u8FD0\u884C: convoai quickstart'
134
+ : 'Run: convoai quickstart');
135
+ process.exit(1);
136
+ }
137
+ // Check App Certificate
138
+ if (!configObj.app_certificate && !process.env.AGORA_APP_CERTIFICATE) {
139
+ printError(lang === 'cn'
140
+ ? '\u672A\u914D\u7F6E App Certificate\u3002'
141
+ : 'No App Certificate configured.');
142
+ printHint(lang === 'cn'
143
+ ? '\u8FD0\u884C: convoai config set app_certificate <cert>'
144
+ : 'Run: convoai config set app_certificate <cert>');
145
+ process.exit(1);
146
+ }
147
+ // Check LLM
148
+ if (!profile.llm?.url && !profile.llm?.api_key && !config.llm?.url && !config.llm?.api_key) {
149
+ printError(lang === 'cn'
150
+ ? '\u672A\u914D\u7F6E LLM\u3002'
151
+ : 'No LLM configured.');
152
+ printHint(lang === 'cn'
153
+ ? '\u8FD0\u884C: convoai go --setup'
154
+ : 'Run: convoai go --setup');
155
+ process.exit(1);
156
+ }
157
+ // Check TTS
158
+ if (!profile.tts?.vendor && !config.tts?.vendor) {
159
+ printError(lang === 'cn'
160
+ ? '\u672A\u914D\u7F6E TTS\u3002'
161
+ : 'No TTS configured.');
162
+ printHint(lang === 'cn'
163
+ ? '\u8FD0\u884C: convoai go --setup'
164
+ : 'Run: convoai go --setup');
165
+ process.exit(1);
166
+ }
167
+ // ═════════════════════════════════════════════════════════════════════════
168
+ // Step 2: --setup mode (optional inline config)
169
+ // ═════════════════════════════════════════════════════════════════════════
170
+ if (opts.setup) {
171
+ await runSetupFlow(configObj, profileName, lang, str);
172
+ // Reload config after setup
173
+ const updatedConfig = loadConfig();
174
+ const updatedProfile = updatedConfig.profiles?.[profileName] ?? {};
175
+ Object.assign(profile, updatedProfile);
176
+ Object.assign(config, resolveConfig(opts.profile));
177
+ }
178
+ // ═════════════════════════════════════════════════════════════════════════
179
+ // Step 3: Apply one-time overrides (not saved to config)
180
+ // ═════════════════════════════════════════════════════════════════════════
181
+ // Work with a mutable copy for overrides
182
+ const effectiveLlm = { ...config.llm };
183
+ const effectiveTts = { ...config.tts };
184
+ const effectiveAsr = { ...config.asr };
185
+ if (opts.model) {
186
+ if (!effectiveLlm.params)
187
+ effectiveLlm.params = {};
188
+ effectiveLlm.params.model = opts.model;
189
+ }
190
+ if (opts.tts) {
191
+ effectiveTts.vendor = opts.tts;
192
+ }
193
+ if (opts.asr) {
194
+ effectiveAsr.vendor = opts.asr;
195
+ }
196
+ // ═════════════════════════════════════════════════════════════════════════
197
+ // Step 4: Cleanup leftover agents + ports
198
+ // ═════════════════════════════════════════════════════════════════════════
199
+ // Kill leftover processes on ports 3210 and 3211
200
+ try {
201
+ execSync('lsof -ti:3210,3211 | xargs kill -9 2>/dev/null', { stdio: 'ignore' });
202
+ await new Promise(r => setTimeout(r, 300));
203
+ }
204
+ catch { /* no leftover processes */ }
205
+ // Stop any running agents
206
+ const api = getAgentAPI(opts.profile);
207
+ try {
208
+ const existing = await api.list({ state: 2, limit: 10 });
209
+ if (existing.data.list.length > 0) {
210
+ await withSpinner(lang === 'cn'
211
+ ? `\u6B63\u5728\u6E05\u7406 ${existing.data.list.length} \u4E2A\u6B8B\u7559 Agent...`
212
+ : `Cleaning up ${existing.data.list.length} leftover agent(s)...`, async () => {
213
+ for (const a of existing.data.list) {
214
+ try {
215
+ await api.stop(a.agent_id);
216
+ }
217
+ catch { /* */ }
218
+ }
219
+ });
220
+ }
221
+ }
222
+ catch { /* */ }
223
+ // ═════════════════════════════════════════════════════════════════════════
224
+ // Step 5: Generate channel + tokens
225
+ // ═════════════════════════════════════════════════════════════════════════
226
+ const channelName = opts.channel ?? `go-${Date.now().toString(36)}`;
227
+ const agentUid = 0;
228
+ const clientUid = 12345;
229
+ const agentToken = await generateRtcToken(channelName, agentUid);
230
+ const clientToken = await generateRtcToken(channelName, clientUid);
231
+ if (!agentToken) {
232
+ printError(lang === 'cn'
233
+ ? 'RTC Token \u751F\u6210\u5931\u8D25\u3002\u8BF7\u68C0\u67E5 app_certificate\u3002'
234
+ : 'RTC token generation failed. Check app_certificate.');
235
+ printHint(lang === 'cn'
236
+ ? '\u8FD0\u884C: convoai config set app_certificate <cert>'
237
+ : 'Run: convoai config set app_certificate <cert>');
238
+ process.exit(1);
239
+ }
240
+ // ═════════════════════════════════════════════════════════════════════════
241
+ // Step 6: Build agent request
242
+ // ═════════════════════════════════════════════════════════════════════════
243
+ // Auto-greeting based on ASR language
244
+ const asrLang = effectiveAsr?.language ?? effectiveAsr?.params?.language ?? 'en-US';
245
+ const greeting = getGreeting(asrLang);
246
+ const llmForRequest = { ...effectiveLlm };
247
+ llmForRequest.greeting_message = greeting;
248
+ // ASR fallback: if no vendor configured, use ares/zh-CN
249
+ const asrForRequest = effectiveAsr?.vendor
250
+ ? effectiveAsr
251
+ : { vendor: 'ares', language: 'zh-CN' };
252
+ const request = {
253
+ name: `go-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
254
+ properties: {
255
+ channel: channelName,
256
+ token: agentToken,
257
+ agent_rtc_uid: String(agentUid),
258
+ remote_rtc_uids: ['*'],
259
+ idle_timeout: 600,
260
+ llm: llmForRequest,
261
+ tts: effectiveTts,
262
+ asr: asrForRequest,
263
+ turn_detection: {
264
+ silence_duration_ms: 1000,
265
+ },
266
+ parameters: {
267
+ enable_metrics: true,
268
+ },
269
+ },
270
+ };
271
+ // ═════════════════════════════════════════════════════════════════════════
272
+ // Step 7: Start agent
273
+ // ═════════════════════════════════════════════════════════════════════════
274
+ const result = await withSpinner(lang === 'cn' ? '\u6B63\u5728\u542F\u52A8 Agent...' : 'Starting agent...', () => api.start(request));
275
+ printSuccess(lang === 'cn' ? 'Agent \u5DF2\u542F\u52A8\u3002' : 'Agent started.');
276
+ track('go');
277
+ printKeyValue([
278
+ ['Agent ID', result.agent_id],
279
+ ['Channel', channelName],
280
+ ['Status', result.status],
281
+ ]);
282
+ // ═════════════════════════════════════════════════════════════════════════
283
+ // Step 8: Detect Chrome -> terminal or browser mode
284
+ // ═════════════════════════════════════════════════════════════════════════
285
+ const chromePath = findChrome();
286
+ const useBrowser = opts.browser || !chromePath;
287
+ let server;
288
+ let browser = null;
289
+ if (!useBrowser && chromePath) {
290
+ // ── Terminal mode: headless Chrome with audio ──────────────────────
291
+ const htmlPath = findChatClientHtml();
292
+ const html = readFileSync(htmlPath, 'utf-8');
293
+ const httpPort = 3210;
294
+ const wsPort = 3211;
295
+ server = createHttpServer((_, res) => {
296
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
297
+ res.end(html);
298
+ });
299
+ await new Promise((resolve, reject) => {
300
+ server.listen(httpPort, () => resolve());
301
+ server.on('error', reject);
302
+ });
303
+ const wss = new WebSocketServer({ port: wsPort });
304
+ // Launch puppeteer-core headless=false for audio support
305
+ const puppeteer = await import('puppeteer-core');
306
+ const launched = await puppeteer.default.launch({
307
+ executablePath: chromePath,
308
+ headless: false,
309
+ args: [
310
+ '--use-fake-ui-for-media-stream',
311
+ '--autoplay-policy=no-user-gesture-required',
312
+ '--no-sandbox',
313
+ '--window-size=1,1',
314
+ '--window-position=-2000,-2000',
315
+ '--enable-features=WebRtcAecAudioProcessing',
316
+ ],
317
+ });
318
+ browser = launched;
319
+ const page = await launched.newPage();
320
+ const context = launched.defaultBrowserContext();
321
+ await context.overridePermissions(`http://localhost:${httpPort}`, ['microphone']);
322
+ const params = new URLSearchParams({
323
+ appId: config.app_id,
324
+ channel: channelName,
325
+ token: clientToken ?? '',
326
+ uid: String(clientUid),
327
+ wsPort: String(wsPort),
328
+ });
329
+ await page.goto(`http://localhost:${httpPort}?${params}`);
330
+ // macOS: hide Chrome window and restore terminal focus
331
+ if (process.platform === 'darwin') {
332
+ try {
333
+ execSync(`osascript -e 'tell application "System Events"
334
+ set visible of process "Google Chrome" to false
335
+ end tell' 2>/dev/null`, { stdio: 'ignore' });
336
+ execSync(`osascript -e 'tell application "System Events"
337
+ set frontProcess to first process whose frontmost is false and visible is true and name is not "Google Chrome"
338
+ set frontmost of frontProcess to true
339
+ end tell' 2>/dev/null`, { stdio: 'ignore' });
340
+ }
341
+ catch { /* osascript may fail, not critical */ }
342
+ }
343
+ console.log('');
344
+ printSuccess(lang === 'cn'
345
+ ? '\u8BED\u97F3\u5BF9\u8BDD\u5DF2\u5F00\u542F\uFF01\u76F4\u63A5\u5F00\u53E3\u8BF4\u8BDD\u5373\u53EF\u3002'
346
+ : 'Voice chat is live! Start speaking.');
347
+ console.log('');
348
+ // ── Enter panel ─────────────────────────────────────────────────────
349
+ await runPanel({
350
+ api,
351
+ agentId: result.agent_id,
352
+ channel: channelName,
353
+ lang,
354
+ config: profile,
355
+ onExit: async () => {
356
+ wss.close();
357
+ server.close();
358
+ if (browser)
359
+ try {
360
+ await browser.close();
361
+ }
362
+ catch { /* */ }
363
+ try {
364
+ await api.stop(result.agent_id);
365
+ }
366
+ catch { /* */ }
367
+ },
368
+ });
369
+ }
370
+ else {
371
+ // ── Browser mode: open client.html in default browser ──────────────
372
+ const htmlPath = findClientHtml();
373
+ const html = readFileSync(htmlPath, 'utf-8');
374
+ const port = 3210;
375
+ server = createHttpServer((_, res) => {
376
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
377
+ res.end(html);
378
+ });
379
+ await new Promise((resolve, reject) => {
380
+ server.listen(port, () => resolve());
381
+ server.on('error', reject);
382
+ });
383
+ const params = new URLSearchParams({
384
+ appId: config.app_id,
385
+ channel: channelName,
386
+ token: clientToken ?? '',
387
+ uid: String(clientUid),
388
+ });
389
+ const url = `http://localhost:${port}?${params}`;
390
+ console.log('');
391
+ console.log(chalk.cyan(' Voice chat: ') + chalk.bold(url));
392
+ console.log('');
393
+ try {
394
+ const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
395
+ execSync(`${cmd} "${url}"`);
396
+ printSuccess(lang === 'cn'
397
+ ? '\u6D4F\u89C8\u5668\u5DF2\u6253\u5F00\u3002\u5141\u8BB8\u9EA6\u514B\u98CE\u540E\u5F00\u59CB\u5BF9\u8BDD\uFF01'
398
+ : 'Browser opened. Allow microphone and start talking!');
399
+ }
400
+ catch {
401
+ console.log(chalk.dim(lang === 'cn'
402
+ ? ' \u8BF7\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E0A\u65B9\u94FE\u63A5\u3002'
403
+ : ' Open the URL above in your browser.'));
404
+ }
405
+ // ── Enter panel ─────────────────────────────────────────────────────
406
+ await runPanel({
407
+ api,
408
+ agentId: result.agent_id,
409
+ channel: channelName,
410
+ lang,
411
+ config: profile,
412
+ onExit: async () => {
413
+ server.close();
414
+ try {
415
+ await api.stop(result.agent_id);
416
+ }
417
+ catch { /* */ }
418
+ },
419
+ });
420
+ }
421
+ }
422
+ // ═══════════════════════════════════════════════════════════════════════════
423
+ // --setup flow: inline ASR/LLM/TTS configuration
424
+ // ═══════════════════════════════════════════════════════════════════════════
425
+ async function runSetupFlow(configObj, profileName, lang, str) {
426
+ const { default: inquirer } = await import('inquirer');
427
+ if (!configObj.profiles)
428
+ configObj.profiles = {};
429
+ const profile = configObj.profiles[profileName] ?? {};
430
+ // ── ASR ──────────────────────────────────────────────────────────────
431
+ console.log('');
432
+ console.log(chalk.bold(` ${str.step2.emoji} ${str.step2.title}`));
433
+ console.log(chalk.dim(` ${str.step2.subtitle}`));
434
+ console.log('');
435
+ const asrChoices = ASR_PROVIDERS.map((p) => {
436
+ let label = p.name;
437
+ if (p.vendor === 'ares')
438
+ label += chalk.dim(` \u2014 ${str.asrRecommend}`);
439
+ else if (p.note)
440
+ label += chalk.dim(` \u2014 ${p.note}`);
441
+ if (p.beta)
442
+ label += chalk.dim(' (Beta)');
443
+ return { name: label, value: p.vendor };
444
+ });
445
+ const { vendor: asrVendor } = await inquirer.prompt([
446
+ {
447
+ type: 'list',
448
+ name: 'vendor',
449
+ message: str.asrProvider + ':',
450
+ choices: asrChoices,
451
+ default: profile.asr?.vendor ?? 'ares',
452
+ },
453
+ ]);
454
+ const selectedAsr = ASR_PROVIDERS.find((p) => p.vendor === asrVendor);
455
+ // API Key (not needed for ARES)
456
+ let asrKey;
457
+ if (asrVendor !== 'ares') {
458
+ const { key } = await inquirer.prompt([
459
+ {
460
+ type: 'password',
461
+ name: 'key',
462
+ message: str.apiKey + ':',
463
+ mask: '*',
464
+ validate: (v) => v.trim().length > 0 || 'Required',
465
+ },
466
+ ]);
467
+ asrKey = key;
468
+ }
469
+ // Microsoft ASR region
470
+ let asrRegion;
471
+ if (selectedAsr.requiresRegion) {
472
+ const { region } = await inquirer.prompt([
473
+ {
474
+ type: 'input',
475
+ name: 'region',
476
+ message: 'Azure ASR Region:',
477
+ default: 'eastus',
478
+ validate: (v) => v.trim().length > 0 || 'Required',
479
+ },
480
+ ]);
481
+ asrRegion = region;
482
+ }
483
+ // Language selection
484
+ const defaultLang = lang === 'cn' ? 'zh-CN' : 'en-US';
485
+ const langChoices = ASR_LANGUAGES.map((l) => ({ name: l.name, value: l.value }));
486
+ const { language: asrLanguage } = await inquirer.prompt([
487
+ {
488
+ type: 'list',
489
+ name: 'language',
490
+ message: str.language + ':',
491
+ choices: langChoices,
492
+ default: profile.asr?.language ?? defaultLang,
493
+ },
494
+ ]);
495
+ // Build ASR config
496
+ if (asrVendor === 'ares') {
497
+ profile.asr = { vendor: 'ares', language: asrLanguage };
498
+ }
499
+ else {
500
+ const asrParams = { key: asrKey };
501
+ if (asrRegion)
502
+ asrParams.region = asrRegion;
503
+ if (asrLanguage)
504
+ asrParams.language = asrLanguage;
505
+ if (selectedAsr.defaultParams) {
506
+ for (const [k, v] of Object.entries(selectedAsr.defaultParams)) {
507
+ if (!(k in asrParams))
508
+ asrParams[k] = v;
509
+ }
510
+ }
511
+ profile.asr = { vendor: asrVendor, language: asrLanguage, params: asrParams };
512
+ }
513
+ configObj.profiles[profileName] = profile;
514
+ saveConfig(configObj);
515
+ printSuccess(`${str.asrConfigured}: ${asrVendor} (${asrLanguage})`);
516
+ // ── LLM ─────────────────────────────────────────────────────────────
517
+ console.log('');
518
+ console.log(chalk.bold(` ${str.step3.emoji} ${str.step3.title}`));
519
+ console.log(chalk.dim(` ${str.step3.subtitle}`));
520
+ console.log('');
521
+ const llmChoices = getOrderedLlmChoices(lang);
522
+ const { provider: llmProvider } = await inquirer.prompt([
523
+ {
524
+ type: 'list',
525
+ name: 'provider',
526
+ message: str.llmProvider + ':',
527
+ choices: llmChoices,
528
+ },
529
+ ]);
530
+ const selectedLlm = LLM_PROVIDERS.find((p) => p.value === llmProvider);
531
+ // API Key
532
+ const { apiKey: llmApiKey } = await inquirer.prompt([
533
+ {
534
+ type: 'password',
535
+ name: 'apiKey',
536
+ message: str.apiKey + ':',
537
+ mask: '*',
538
+ validate: (v) => v.trim().length > 0 || 'Required',
539
+ },
540
+ ]);
541
+ // Model
542
+ let llmModel;
543
+ if (selectedLlm.models.length > 0) {
544
+ const { model } = await inquirer.prompt([
545
+ {
546
+ type: 'list',
547
+ name: 'model',
548
+ message: str.model + ':',
549
+ choices: selectedLlm.models,
550
+ default: selectedLlm.defaultModel,
551
+ },
552
+ ]);
553
+ llmModel = model;
554
+ }
555
+ else {
556
+ const { model } = await inquirer.prompt([
557
+ {
558
+ type: 'input',
559
+ name: 'model',
560
+ message: str.model + ':',
561
+ default: selectedLlm.defaultModel || undefined,
562
+ validate: (v) => v.trim().length > 0 || 'Required',
563
+ },
564
+ ]);
565
+ llmModel = model;
566
+ }
567
+ // URL
568
+ let llmUrl;
569
+ if (selectedLlm.url) {
570
+ const { url } = await inquirer.prompt([
571
+ {
572
+ type: 'input',
573
+ name: 'url',
574
+ message: 'API URL:',
575
+ default: selectedLlm.url,
576
+ validate: (v) => v.trim().length > 0 || 'Required',
577
+ },
578
+ ]);
579
+ llmUrl = url;
580
+ }
581
+ else {
582
+ const { url } = await inquirer.prompt([
583
+ {
584
+ type: 'input',
585
+ name: 'url',
586
+ message: 'API URL:',
587
+ validate: (v) => v.trim().length > 0 || 'Required',
588
+ },
589
+ ]);
590
+ llmUrl = url;
591
+ }
592
+ // Build LLM config based on provider style
593
+ const llmConfig = {};
594
+ if (selectedLlm.style === 'gemini') {
595
+ const resolvedUrl = llmUrl
596
+ .replace('{model}', llmModel)
597
+ .replace('{api_key}', llmApiKey);
598
+ llmConfig.url = resolvedUrl;
599
+ llmConfig.style = 'gemini';
600
+ llmConfig.system_messages = [
601
+ { parts: [{ text: 'You are a friendly AI voice assistant. Please respond concisely.' }], role: 'user' },
602
+ ];
603
+ llmConfig.params = { model: llmModel, max_tokens: 512, temperature: 0.7 };
604
+ }
605
+ else if (selectedLlm.style === 'anthropic') {
606
+ llmConfig.url = llmUrl;
607
+ llmConfig.api_key = llmApiKey;
608
+ llmConfig.style = 'anthropic';
609
+ llmConfig.headers = '{"anthropic-version":"2023-06-01"}';
610
+ llmConfig.system_messages = [
611
+ { role: 'system', content: 'You are a friendly AI voice assistant. Please respond concisely.' },
612
+ ];
613
+ llmConfig.params = { model: llmModel, max_tokens: 512, temperature: 0.7 };
614
+ }
615
+ else {
616
+ llmConfig.url = llmUrl;
617
+ llmConfig.api_key = llmApiKey;
618
+ llmConfig.system_messages = [
619
+ { role: 'system', content: 'You are a friendly AI voice assistant. Please respond concisely.' },
620
+ ];
621
+ llmConfig.params = { model: llmModel, max_tokens: 512, temperature: 0.7 };
622
+ }
623
+ profile.llm = llmConfig;
624
+ configObj.profiles[profileName] = profile;
625
+ saveConfig(configObj);
626
+ printSuccess(`${str.llmConfigured}: ${llmModel} via ${selectedLlm.name}`);
627
+ // ── TTS ─────────────────────────────────────────────────────────────
628
+ console.log('');
629
+ console.log(chalk.bold(` ${str.step4.emoji} ${str.step4.title}`));
630
+ console.log(chalk.dim(` ${str.step4.subtitle}`));
631
+ console.log('');
632
+ const ttsChoices = TTS_PROVIDERS.map((p) => {
633
+ let label = p.name;
634
+ if (p.beta)
635
+ label += chalk.dim(' (Beta)');
636
+ return { name: label, value: p.vendor };
637
+ });
638
+ const { vendor: ttsVendor } = await inquirer.prompt([
639
+ {
640
+ type: 'list',
641
+ name: 'vendor',
642
+ message: str.ttsProvider + ':',
643
+ choices: ttsChoices,
644
+ default: profile.tts?.vendor,
645
+ },
646
+ ]);
647
+ const selectedTts = TTS_PROVIDERS.find((p) => p.vendor === ttsVendor);
648
+ // API Key
649
+ const { key: ttsKey } = await inquirer.prompt([
650
+ {
651
+ type: 'password',
652
+ name: 'key',
653
+ message: str.ttsApiKey + ':',
654
+ mask: '*',
655
+ validate: (v) => v.trim().length > 0 || 'Required',
656
+ },
657
+ ]);
658
+ const ttsParams = { key: ttsKey };
659
+ // Microsoft-specific: region + voice name
660
+ if (ttsVendor === 'microsoft') {
661
+ const msAnswers = await inquirer.prompt([
662
+ {
663
+ type: 'input',
664
+ name: 'region',
665
+ message: 'Azure TTS Region:',
666
+ default: 'eastus',
667
+ validate: (v) => v.trim().length > 0 || 'Required',
668
+ },
669
+ {
670
+ type: 'input',
671
+ name: 'voiceName',
672
+ message: 'Voice Name:',
673
+ default: 'en-US-AndrewMultilingualNeural',
674
+ validate: (v) => v.trim().length > 0 || 'Required',
675
+ },
676
+ ]);
677
+ ttsParams.region = msAnswers.region;
678
+ ttsParams.voice_name = msAnswers.voiceName;
679
+ }
680
+ // MiniMax-specific: group_id
681
+ if (selectedTts.requiresGroupId) {
682
+ const { groupId } = await inquirer.prompt([
683
+ {
684
+ type: 'input',
685
+ name: 'groupId',
686
+ message: str.groupId + ':',
687
+ validate: (v) => v.trim().length > 0 || 'Required',
688
+ },
689
+ ]);
690
+ ttsParams.group_id = groupId;
691
+ }
692
+ // OpenAI TTS and Cartesia use api_key instead of key
693
+ if (ttsVendor === 'openai' || ttsVendor === 'cartesia') {
694
+ ttsParams.api_key = ttsParams.key;
695
+ delete ttsParams.key;
696
+ }
697
+ // Auto-fill vendor defaults
698
+ if (selectedTts.defaultParams) {
699
+ for (const [k, v] of Object.entries(selectedTts.defaultParams)) {
700
+ if (!(k in ttsParams))
701
+ ttsParams[k] = v;
702
+ }
703
+ }
704
+ profile.tts = { vendor: ttsVendor, params: ttsParams };
705
+ configObj.profiles[profileName] = profile;
706
+ saveConfig(configObj);
707
+ printSuccess(`${str.ttsConfigured}: ${selectedTts.name}`);
708
+ }
709
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../src/commands/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,+EAA+E;AAE/E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+EAA+E;AAE/E,MAAM,SAAS,GAA2B;IACxC,OAAO,EAAE,+IAA+I;IACxJ,OAAO,EAAE,+IAA+I;IACxJ,OAAO,EAAE,+IAA+I;IACxJ,OAAO,EAAE,kEAAkE;IAC3E,OAAO,EAAE,8LAA8L;IACvM,OAAO,EAAE,uKAAuK;CACjL,CAAC;AAEF,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,+EAA+E;AAE/E,SAAS,cAAc;IACrB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC9B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC9B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC7E,CAAC;AAED,8EAA8E;AAE9E,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW;IACtD,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;CAC/C,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW;IACpD,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;CACjD,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,SAAS,EAAE,sCAAsC;IACjD,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAS,oBAAoB,CAAC,IAAqB;IACjD,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1D,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAwC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,+EAA+E;AAE/E,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;SACpD,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;SACjD,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;SACjD,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,QAAQ,CAAC,IAQvB;IAEC,4EAA4E;IAC5E,0BAA0B;IAC1B,4EAA4E;IAE5E,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC;IAC3E,MAAM,OAAO,GAAkB,SAAS,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAEvE,MAAM,IAAI,GAAoB,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACrE,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,kCAAkC,CAAC,CAAC;QACxC,SAAS,CAAC,IAAI,KAAK,IAAI;YACrB,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACrE,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,0CAA0C;YAC5C,CAAC,CAAC,gCAAgC,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,KAAK,IAAI;YACrB,CAAC,CAAC,yDAAyD;YAC3D,CAAC,CAAC,gDAAgD,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY;IACZ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAC3F,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC1B,SAAS,CAAC,IAAI,KAAK,IAAI;YACrB,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY;IACZ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAChD,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC1B,SAAS,CAAC,IAAI,KAAK,IAAI;YACrB,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4EAA4E;IAC5E,gDAAgD;IAChD,4EAA4E;IAE5E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,4BAA4B;QAC5B,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,yDAAyD;IACzD,4EAA4E;IAE5E,yCAAyC;IACzC,MAAM,YAAY,GAAuB,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAyB,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAC7D,MAAM,YAAY,GAAyB,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAE7D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACnD,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,YAAa,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,YAAa,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,4EAA4E;IAC5E,0CAA0C;IAC1C,4EAA4E;IAE5E,iDAAiD;IACjD,IAAI,CAAC;QACH,QAAQ,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,0BAA0B;IAC1B,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,CACf,IAAI,KAAK,IAAI;gBACX,CAAC,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,8BAA8B;gBACrF,CAAC,CAAC,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,uBAAuB,EACnE,KAAK,IAAI,EAAE;gBACT,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAEjB,4EAA4E;IAC5E,oCAAoC;IACpC,4EAA4E;IAE5E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,KAAK,IAAI;YACtB,CAAC,CAAC,kFAAkF;YACpF,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAC3D,SAAS,CAAC,IAAI,KAAK,IAAI;YACrB,CAAC,CAAC,yDAAyD;YAC3D,CAAC,CAAC,gDAAgD,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4EAA4E;IAC5E,8BAA8B;IAC9B,4EAA4E;IAE5E,sCAAsC;IACtC,MAAM,OAAO,GAAG,YAAY,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC;IACpF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAiB,CAAC,CAAC;IAEhD,MAAM,aAAa,GAA4B,EAAE,GAAG,YAAY,EAAE,CAAC;IACnE,aAAa,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IAE1C,wDAAwD;IACxD,MAAM,aAAa,GAAG,YAAY,EAAE,MAAM;QACxC,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAClE,UAAU,EAAE;YACV,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,UAAU;YACjB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC/B,eAAe,EAAE,CAAC,GAAG,CAAC;YACtB,YAAY,EAAE,GAAG;YACjB,GAAG,EAAE,aAA0B;YAC/B,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE,aAAa;YAClB,cAAc,EAAE;gBACd,mBAAmB,EAAE,IAAI;aAC1B;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,IAAI;aACrB;SACF;KACF,CAAC;IAEF,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,mBAAmB,EACzE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CACzB,CAAC;IAEF,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,CAAC;IAEZ,aAAa,CAAC;QACZ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC,SAAS,EAAE,WAAW,CAAC;QACxB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;KAC1B,CAAC,CAAC;IAEH,4EAA4E;IAC5E,oDAAoD;IACpD,4EAA4E;IAE5E,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC;IAE/C,IAAI,MAA2C,CAAC;IAChD,IAAI,OAAO,GAAsC,IAAI,CAAC;IAEtD,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QAC9B,sEAAsE;QACtE,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC;QAEpB,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAElD,yDAAyD;QACzD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9C,cAAc,EAAE,UAAU;YAC1B,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE;gBACJ,gCAAgC;gBAChC,4CAA4C;gBAC5C,cAAc;gBACd,mBAAmB;gBACnB,+BAA+B;gBAC/B,4CAA4C;aAC7C;SACF,CAAC,CAAC;QACH,OAAO,GAAG,QAAiD,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACjD,MAAM,OAAO,CAAC,mBAAmB,CAAC,oBAAoB,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,MAAO;YACrB,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,WAAW,IAAI,EAAE;YACxB,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QAE1D,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,QAAQ,CAAC;;8BAEa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC;;;8BAGa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,YAAY,CAAC,IAAI,KAAK,IAAI;YACxB,CAAC,CAAC,wGAAwG;YAC1G,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,uEAAuE;QACvE,MAAM,QAAQ,CAAC;YACb,GAAG;YACH,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,WAAW;YACpB,IAAI;YACJ,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,GAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO;oBAAE,IAAI,CAAC;wBAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,CAAC;oBAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,MAAO;YACrB,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,WAAW,IAAI,EAAE;YACxB,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,oBAAoB,IAAI,IAAI,MAAM,EAAE,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;YACzG,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;YAC5B,YAAY,CAAC,IAAI,KAAK,IAAI;gBACxB,CAAC,CAAC,8GAA8G;gBAChH,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;gBACjC,CAAC,CAAC,kFAAkF;gBACpF,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,uEAAuE;QACvE,MAAM,QAAQ,CAAC;YACb,GAAG;YACH,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,WAAW;YACpB,IAAI;YACJ,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC;oBAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,iDAAiD;AACjD,8EAA8E;AAE9E,KAAK,UAAU,YAAY,CACzB,SAAwC,EACxC,WAAmB,EACnB,IAAqB,EACrB,GAAkC;IAElC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC,SAAS,CAAC,QAAQ;QAAE,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAEtD,wEAAwE;IACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;aACtE,IAAI,CAAC,CAAC,IAAI;YAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,IAAI;YAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAClD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG;YAC9B,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,MAAM;SACvC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC;IAEvE,gCAAgC;IAChC,IAAI,MAA0B,CAAC;IAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG;gBACzB,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,SAA6B,CAAC;IAClC,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEjF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,CAAC,QAAQ,GAAG,GAAG;YAC3B,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,IAAI,WAAW;SAC9C;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAA4B,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAC3D,IAAI,SAAS;YAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QAC5C,IAAI,WAAW;YAAE,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC;QAClD,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/D,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;oBAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAChF,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,SAAS,CAAC,CAAC;IACtB,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,KAAK,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC;IAEpE,uEAAuE;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG;YAC9B,OAAO,EAAE,UAAU;SACpB;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAgB,CAAC;IAEtF,UAAU;IACV,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAClD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG;YACzB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;SAC3D;KACF,CAAC,CAAC;IAEH,QAAQ;IACR,IAAI,QAAgB,CAAC;IACrB,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG;gBACxB,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,OAAO,EAAE,WAAW,CAAC,YAAY;aAClC;SACF,CAAC,CAAC;QACH,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG;gBACxB,OAAO,EAAE,WAAW,CAAC,YAAY,IAAI,SAAS;gBAC9C,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM;IACN,IAAI,MAAc,CAAC;IACnB,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,WAAW,CAAC,GAAG;gBACxB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,2CAA2C;IAC3C,MAAM,SAAS,GAAc,EAAE,CAAC;IAEhC,IAAI,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,MAAM;aACvB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;aAC5B,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;QAC5B,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC3B,SAAS,CAAC,eAAe,GAAG;YAC1B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;SACxG,CAAC;QACF,SAAS,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IAC5E,CAAC;SAAM,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC7C,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC;QAC9B,SAAS,CAAC,OAAO,GAAG,oCAAoC,CAAC;QACzD,SAAS,CAAC,eAAe,GAAG;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kEAAkE,EAAE;SAChG,CAAC;QACF,SAAS,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,eAAe,GAAG;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kEAAkE,EAAE;SAChG,CAAC;QACF,SAAS,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IACxB,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,SAAS,CAAC,CAAC;IACtB,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,KAAK,QAAQ,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1E,uEAAuE;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,CAAC,IAAI;YAAE,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAClD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG;YAC9B,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM;SAC7B;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC;IAEvE,UAAU;IACV,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC5C;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG;YAC5B,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;SAC3D;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAA4B,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAE3D,0CAA0C;IAC1C,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,gCAAgC;gBACzC,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC;IAC7C,CAAC;IAED,6BAA6B;IAC7B,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG;gBAC1B,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;aAC3D;SACF,CAAC,CAAC;QACH,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QACvD,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;QAClC,OAAO,SAAS,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,4BAA4B;IAC5B,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,SAAS,CAAC,CAAC;IACtB,YAAY,CAAC,GAAG,GAAG,CAAC,aAAa,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC"}
package/dist/src/index.js CHANGED
@@ -14,9 +14,7 @@ import { registerAgentSpeak } from './commands/agent/speak.js';
14
14
  import { registerAgentInterrupt } from './commands/agent/interrupt.js';
15
15
  import { registerAgentHistory } from './commands/agent/history.js';
16
16
  import { registerAgentTurns } from './commands/agent/turns.js';
17
- import { registerAgentWatch } from './commands/agent/watch.js';
18
17
  import { registerAgentJoin } from './commands/agent/join.js';
19
- import { registerAgentChat } from './commands/agent/chat.js';
20
18
  // ─── Config Commands ────────────────────────────────────────────────────────
21
19
  import { registerConfigInit } from './commands/config/init.js';
22
20
  import { registerConfigSet } from './commands/config/set.js';
@@ -42,9 +40,11 @@ import { registerToken } from './commands/token.js';
42
40
  import { registerQuickstart } from './commands/quickstart.js';
43
41
  // ─── OpenClaw ─────────────────────────────────────────────────────────────
44
42
  import { registerOpenClaw } from './commands/openclaw.js';
45
- // ─── Completion & REPL ─────────────────────────────────────────────────────
43
+ // ─── Go ──────────────────────────────────────────────────────────────────────
44
+ import { registerGo } from './commands/go.js';
45
+ // ─── Completion ───────────────────────────────────────────────────────────────
46
46
  import { registerCompletion } from './commands/completion.js';
47
- import { registerRepl } from './commands/repl.js';
47
+ import { loadConfig } from './config/manager.js';
48
48
  import { readFileSync } from 'node:fs';
49
49
  import { fileURLToPath } from 'node:url';
50
50
  import { dirname, join } from 'node:path';
@@ -66,10 +66,81 @@ function getVersion() {
66
66
  return '0.0.0';
67
67
  }
68
68
  const VERSION = getVersion();
69
- const BANNER = `
70
- ${chalk.bold.cyan('convoai')} ${chalk.dim(`v${VERSION}`)}
71
- ${chalk.dim('CLI for Agora ConvoAI Engine')}
72
- `;
69
+ function customHelp() {
70
+ // Try to detect config for smart hint
71
+ let hasConfig = false;
72
+ let isCN = false;
73
+ try {
74
+ const config = loadConfig();
75
+ hasConfig = !!config.app_id;
76
+ isCN = config.region === 'cn';
77
+ }
78
+ catch { }
79
+ const P = chalk.hex('#786af4');
80
+ const B = chalk.hex('#5b8eff');
81
+ const W = chalk.hex('#c8c8ff');
82
+ const lines = [];
83
+ lines.push('');
84
+ lines.push(` ${P('\u2597\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2596')}`);
85
+ lines.push(` ${P('\u2590')}${B(' ')}${W('\u2588\u2588')}${B(' ')}${W('\u2588\u2588')}${B(' ')}${P('\u258C')} ${chalk.bold.hex('#786af4')('ConvoAI CLI')} v${VERSION}`);
86
+ lines.push(` ${P('\u2590')}${B(' ')}${W('\u2580\u2580\u2580\u2580')}${B(' ')}${P('\u258C')} ${chalk.dim('Voice AI Engine \u26A1\uD83D\uDC26')}`);
87
+ lines.push(` ${P('\u259D\u2580\u2580\u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2598')}`);
88
+ lines.push(` ${P(' \u2580\u259A')}`);
89
+ lines.push('');
90
+ // Smart hint
91
+ if (hasConfig) {
92
+ const hint = isCN ? '\uD83D\uDCA1 \u7EE7\u7EED\u5BF9\u8BDD: convoai go' : '\uD83D\uDCA1 Quick: convoai go';
93
+ lines.push(` ${chalk.yellow(hint)}`);
94
+ }
95
+ else {
96
+ const hint = isCN ? '\uD83D\uDCA1 \u5F00\u59CB\u4F7F\u7528: convoai quickstart' : '\uD83D\uDCA1 Get started: convoai quickstart';
97
+ lines.push(` ${chalk.yellow(hint)}`);
98
+ }
99
+ lines.push('');
100
+ // Group: Start
101
+ lines.push(chalk.bold('Start:'));
102
+ lines.push(` ${chalk.cyan('go')} ${chalk.dim('Start a voice conversation (uses last config)')}`);
103
+ lines.push(` ${chalk.cyan('quickstart')} ${chalk.dim('First-time setup wizard')}`);
104
+ lines.push(` ${chalk.cyan('openclaw')} ${chalk.dim('Voice-enable your local OpenClaw \uD83E\uDD9E')}`);
105
+ lines.push('');
106
+ // Group: Agent
107
+ lines.push(chalk.bold('Agent:'));
108
+ lines.push(` ${chalk.cyan('agent join')} ${chalk.dim('Join a channel with full control')}`);
109
+ lines.push(` ${chalk.cyan('agent list')} ${chalk.dim('List running agents')}`);
110
+ lines.push(` ${chalk.cyan('agent stop')} ${chalk.dim('Stop agent(s)')}`);
111
+ lines.push(` ${chalk.cyan('agent status')} ${chalk.dim('Check agent status')}`);
112
+ lines.push(` ${chalk.cyan('agent history')} ${chalk.dim('View conversation history')}`);
113
+ lines.push(` ${chalk.cyan('agent turns')} ${chalk.dim('View latency analytics')}`);
114
+ lines.push('');
115
+ // Group: Config
116
+ lines.push(chalk.bold('Config:'));
117
+ lines.push(` ${chalk.cyan('config show')} ${chalk.dim('Show current config')}`);
118
+ lines.push(` ${chalk.cyan('config set')} ${chalk.dim('Change a setting')}`);
119
+ lines.push(` ${chalk.cyan('config init')} ${chalk.dim('Re-run setup wizard')}`);
120
+ lines.push('');
121
+ // Group: More
122
+ lines.push(chalk.bold('More:'));
123
+ lines.push(` ${chalk.cyan('agent speak')} ${chalk.dim('Make agent say something')}`);
124
+ lines.push(` ${chalk.cyan('agent interrupt')} ${chalk.dim('Interrupt agent speech')}`);
125
+ lines.push(` ${chalk.cyan('agent start')} ${chalk.dim('Start agent (API only)')}`);
126
+ lines.push(` ${chalk.cyan('token')} ${chalk.dim('Generate RTC token')}`);
127
+ lines.push(` ${chalk.cyan('preset list')} ${chalk.dim('List built-in presets')}`);
128
+ lines.push(` ${chalk.cyan('template')} * ${chalk.dim('Manage agent templates')}`);
129
+ lines.push(` ${chalk.cyan('call')} * ${chalk.dim('Telephony (Beta)')}`);
130
+ lines.push(` ${chalk.cyan('completion')} ${chalk.dim('Shell completions')}`);
131
+ lines.push('');
132
+ // Examples
133
+ lines.push(chalk.bold('Examples:'));
134
+ lines.push(chalk.dim(' convoai go Resume last conversation'));
135
+ lines.push(chalk.dim(' convoai go --setup Re-configure then start'));
136
+ lines.push(chalk.dim(' convoai go --model qwen-max One-time model override'));
137
+ lines.push(chalk.dim(' convoai agent join -c room1 Join a specific channel'));
138
+ lines.push(chalk.dim(' convoai openclaw Talk to OpenClaw by voice'));
139
+ lines.push('');
140
+ lines.push(chalk.dim(' Docs: github.com/Coowoolf/convoai-cli'));
141
+ lines.push('');
142
+ return lines.join('\n');
143
+ }
73
144
  export function run() {
74
145
  // Non-blocking update check (fire and forget)
75
146
  import('./utils/update-check.js').then(m => m.checkForUpdate(VERSION)).catch(() => { });
@@ -77,8 +148,11 @@ export function run() {
77
148
  program
78
149
  .name('convoai')
79
150
  .description('CLI for Agora ConvoAI Engine — start, manage, and monitor conversational AI agents')
80
- .version(VERSION, '-v, --version')
81
- .addHelpText('before', BANNER);
151
+ .version(VERSION, '-v, --version');
152
+ // Override ONLY the root program's help (not subcommands)
153
+ program.helpInformation = function () {
154
+ return customHelp();
155
+ };
82
156
  // ── auth ────────────────────────────────────────────────────────────────
83
157
  const auth = program
84
158
  .command('auth')
@@ -100,9 +174,7 @@ export function run() {
100
174
  registerAgentInterrupt(agent);
101
175
  registerAgentHistory(agent);
102
176
  registerAgentTurns(agent);
103
- registerAgentWatch(agent);
104
177
  registerAgentJoin(agent);
105
- registerAgentChat(agent);
106
178
  // ── call ────────────────────────────────────────────────────────────────
107
179
  const call = program
108
180
  .command('call')
@@ -137,18 +209,16 @@ export function run() {
137
209
  registerTemplateShow(template);
138
210
  registerTemplateDelete(template);
139
211
  registerTemplateUse(template);
140
- // ── chat (top-level shortcut) ────────────────────────────────────────────
141
- registerAgentChat(program);
142
212
  // ── quickstart ──────────────────────────────────────────────────────────
143
213
  registerQuickstart(program);
214
+ // ── go ─────────────────────────────────────────────────────────────────
215
+ registerGo(program);
144
216
  // ── openclaw ───────────────────────────────────────────────────────────
145
217
  registerOpenClaw(program);
146
218
  // ── token ───────────────────────────────────────────────────────────────
147
219
  registerToken(program);
148
220
  // ── completion ──────────────────────────────────────────────────────────
149
221
  registerCompletion(program);
150
- // ── repl ───────────────────────────────────────────────────────────────
151
- registerRepl(program);
152
222
  // ── Global error handling ───────────────────────────────────────────────
153
223
  program.exitOverride();
154
224
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convoai",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "description": "CLI for Agora ConvoAI Engine — start, manage, and monitor conversational AI agents",
5
5
  "type": "module",
6
6
  "bin": {