oroute-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/agent.d.ts +11 -0
  2. package/dist/agent.js +569 -0
  3. package/dist/agent.js.map +1 -0
  4. package/dist/commands.d.ts +24 -0
  5. package/dist/commands.js +173 -0
  6. package/dist/commands.js.map +1 -0
  7. package/dist/context.d.ts +13 -0
  8. package/dist/context.js +110 -0
  9. package/dist/context.js.map +1 -0
  10. package/dist/cost.d.ts +18 -0
  11. package/dist/cost.js +80 -0
  12. package/dist/cost.js.map +1 -0
  13. package/dist/history.d.ts +20 -0
  14. package/dist/history.js +49 -0
  15. package/dist/history.js.map +1 -0
  16. package/dist/hooks.d.ts +13 -0
  17. package/dist/hooks.js +101 -0
  18. package/dist/hooks.js.map +1 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +475 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/markdown.d.ts +4 -0
  23. package/dist/markdown.js +126 -0
  24. package/dist/markdown.js.map +1 -0
  25. package/dist/memory.d.ts +27 -0
  26. package/dist/memory.js +208 -0
  27. package/dist/memory.js.map +1 -0
  28. package/dist/session.d.ts +43 -0
  29. package/dist/session.js +166 -0
  30. package/dist/session.js.map +1 -0
  31. package/dist/streaming.d.ts +27 -0
  32. package/dist/streaming.js +201 -0
  33. package/dist/streaming.js.map +1 -0
  34. package/dist/tools/editFile.d.ts +34 -0
  35. package/dist/tools/editFile.js +40 -0
  36. package/dist/tools/editFile.js.map +1 -0
  37. package/dist/tools/executeCommand.d.ts +32 -0
  38. package/dist/tools/executeCommand.js +75 -0
  39. package/dist/tools/executeCommand.js.map +1 -0
  40. package/dist/tools/glob.d.ts +24 -0
  41. package/dist/tools/glob.js +128 -0
  42. package/dist/tools/glob.js.map +1 -0
  43. package/dist/tools/index.d.ts +40 -0
  44. package/dist/tools/index.js +28 -0
  45. package/dist/tools/index.js.map +1 -0
  46. package/dist/tools/listDirectory.d.ts +23 -0
  47. package/dist/tools/listDirectory.js +57 -0
  48. package/dist/tools/listDirectory.js.map +1 -0
  49. package/dist/tools/notebook.d.ts +7 -0
  50. package/dist/tools/notebook.js +76 -0
  51. package/dist/tools/notebook.js.map +1 -0
  52. package/dist/tools/readFile.d.ts +28 -0
  53. package/dist/tools/readFile.js +40 -0
  54. package/dist/tools/readFile.js.map +1 -0
  55. package/dist/tools/readImage.d.ts +25 -0
  56. package/dist/tools/readImage.js +52 -0
  57. package/dist/tools/readImage.js.map +1 -0
  58. package/dist/tools/searchFiles.d.ts +33 -0
  59. package/dist/tools/searchFiles.js +95 -0
  60. package/dist/tools/searchFiles.js.map +1 -0
  61. package/dist/tools/writeFile.d.ts +30 -0
  62. package/dist/tools/writeFile.js +54 -0
  63. package/dist/tools/writeFile.js.map +1 -0
  64. package/dist/ui.d.ts +30 -0
  65. package/dist/ui.js +79 -0
  66. package/dist/ui.js.map +1 -0
  67. package/dist/update.d.ts +10 -0
  68. package/dist/update.js +93 -0
  69. package/dist/update.js.map +1 -0
  70. package/package.json +33 -0
package/dist/index.js ADDED
@@ -0,0 +1,475 @@
1
+ #!/usr/bin/env node
2
+ import * as readline from 'node:readline';
3
+ import * as fs from 'node:fs';
4
+ import * as path from 'node:path';
5
+ import * as os from 'node:os';
6
+ import { agentChat } from './agent.js';
7
+ import { checkForUpdates } from './update.js';
8
+ const GREEN = '\x1b[32m';
9
+ const GRAY = '\x1b[90m';
10
+ const BOLD = '\x1b[1m';
11
+ const DIM = '\x1b[2m';
12
+ const RESET = '\x1b[0m';
13
+ const CYAN = '\x1b[36m';
14
+ const YELLOW = '\x1b[33m';
15
+ const WHITE = '\x1b[37m';
16
+ const VERSION = '0.2.0';
17
+ const CONFIG_DIR = path.join(os.homedir(), '.oroute');
18
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
19
+ const DEFAULT_API_URL = 'https://api.oroute.itshin.com';
20
+ const LOCAL_API_URL = 'http://localhost:3001';
21
+ // ── ASCII Art fallback (for terminals without image support) ──
22
+ const ASCII_CHARACTER = `
23
+ ${GRAY} ▄▄███▄▄
24
+ ▄█${WHITE}▓▓▓▓▓▓▓${GRAY}█▄ ${GREEN}O'Route${RESET}
25
+ █${WHITE}▓▓${GRAY}█▄▄▄▄▄█${WHITE}▓▓${GRAY}█ ${GRAY}AI API Mediation${RESET}
26
+ █${WHITE}▓${GRAY}█ █${WHITE}▓${GRAY}█
27
+ █ ${GREEN}◉${GRAY} █ ${GREEN}◉${GRAY} █
28
+ █ ${GREEN}▽${GRAY} █
29
+ █ ${GREEN}╰───╯${GRAY} █
30
+ █▄▄▄▄▄▄▄▄▄▄▄█
31
+ ┌─────────────┐
32
+ ┌──┤ ${GREEN}█████████████${GRAY} ├──┐
33
+ │ │ ${GREEN}█████████████${GRAY} │ │
34
+ └──┴─────────────┴──┘${RESET}`;
35
+ /** Display inline image using iTerm2/WezTerm imgcat protocol */
36
+ function displayInlineImage(imagePath, width = 20) {
37
+ const termProgram = process.env['TERM_PROGRAM'] ?? '';
38
+ const supportsImages = ['iTerm.app', 'WezTerm'].includes(termProgram);
39
+ if (!supportsImages)
40
+ return false;
41
+ try {
42
+ const imageData = fs.readFileSync(imagePath);
43
+ const b64 = imageData.toString('base64');
44
+ // iTerm2 inline image protocol: ESC ] 1337 ; File=[args] : base64data BEL
45
+ const args = `inline=1;width=${width};preserveAspectRatio=1`;
46
+ process.stdout.write(`\x1b]1337;File=${args}:${b64}\x07\n`);
47
+ return true;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ /** Detect if terminal is using dark background */
54
+ function isDarkMode() {
55
+ // Check COLORFGBG env (format: "foreground;background")
56
+ const colorFgBg = process.env['COLORFGBG'];
57
+ if (colorFgBg) {
58
+ const bg = parseInt(colorFgBg.split(';').pop() ?? '0', 10);
59
+ return bg < 8; // 0=black, 15=white
60
+ }
61
+ // Check iTerm2 profile
62
+ const iTermProfile = process.env['ITERM_PROFILE'] ?? '';
63
+ if (iTermProfile.toLowerCase().includes('light'))
64
+ return false;
65
+ // Default: assume dark (most dev terminals are dark)
66
+ return true;
67
+ }
68
+ /** Get the path to the character image — dark or light version */
69
+ function getCharacterImagePath() {
70
+ const variant = isDarkMode() ? 'character-dark.png' : 'character-light.png';
71
+ const fallback = 'character.png';
72
+ const cliDir = path.dirname(new URL(import.meta.url).pathname);
73
+ const candidates = [
74
+ path.join(os.homedir(), '.oroute', variant),
75
+ path.join(cliDir, '..', variant),
76
+ path.join(os.homedir(), '.oroute', fallback),
77
+ path.join(cliDir, '..', fallback),
78
+ ];
79
+ for (const p of candidates) {
80
+ if (fs.existsSync(p))
81
+ return p;
82
+ }
83
+ return '';
84
+ }
85
+ const LOGO = `${GREEN}${BOLD}
86
+ ___ ' ____ _
87
+ / _ \\ | _ \\ ___ _ _| |_ ___
88
+ | | | | | |_) / _ \\| | | | __/ _ \\
89
+ | |_| | | _ < (_) | |_| | || __/
90
+ \\___/ |_| \\_\\___/ \\__,_|\\__\\___|${RESET}
91
+ `;
92
+ function loadConfig() {
93
+ try {
94
+ if (fs.existsSync(CONFIG_FILE)) {
95
+ return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));
96
+ }
97
+ }
98
+ catch { }
99
+ return {};
100
+ }
101
+ function saveConfig(config) {
102
+ if (!fs.existsSync(CONFIG_DIR)) {
103
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
104
+ }
105
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
106
+ }
107
+ function printWelcome() {
108
+ // Try inline image first (iTerm2, WezTerm)
109
+ const imgPath = getCharacterImagePath();
110
+ const imageShown = imgPath ? displayInlineImage(imgPath, 18) : false;
111
+ if (!imageShown) {
112
+ // Fallback: ASCII art for VS Code, Terminal.app, etc.
113
+ console.log(ASCII_CHARACTER);
114
+ }
115
+ console.log(LOGO);
116
+ const termProgram = process.env['TERM_PROGRAM'] ?? 'unknown';
117
+ console.log(`${GRAY} v${VERSION} · oroute.itshin.com · ${termProgram}${RESET}`);
118
+ console.log();
119
+ }
120
+ function printMenu() {
121
+ console.log(`${BOLD} What would you like to do?${RESET}`);
122
+ console.log();
123
+ console.log(` ${GREEN}1.${RESET} Login with Google (browser) ${GRAY}← 추천${RESET}`);
124
+ console.log(` ${GREEN}2.${RESET} Login with API Key`);
125
+ console.log(` ${GREEN}3.${RESET} Agent mode (file access + commands)`);
126
+ console.log(` ${GREEN}4.${RESET} Check status`);
127
+ console.log(` ${GREEN}5.${RESET} Settings`);
128
+ console.log(` ${GREEN}q.${RESET} Quit`);
129
+ console.log();
130
+ }
131
+ /** Parse CLI arguments — B5: --yes and --plan flags */
132
+ function parseArgs(args) {
133
+ let command;
134
+ let targetPath;
135
+ let prompt;
136
+ let debug = false;
137
+ let skipConfirmations = false;
138
+ let planMode = false;
139
+ for (let i = 0; i < args.length; i++) {
140
+ const arg = args[i];
141
+ if (arg === '--debug') {
142
+ debug = true;
143
+ continue;
144
+ }
145
+ if (arg === '--yes' || arg === '-y') {
146
+ skipConfirmations = true;
147
+ continue;
148
+ }
149
+ if (arg === '--plan') {
150
+ planMode = true;
151
+ continue;
152
+ }
153
+ if (arg === '-p' && args[i + 1]) {
154
+ prompt = args[++i];
155
+ continue;
156
+ }
157
+ if (['login', 'chat', 'status', 'agent'].includes(arg)) {
158
+ command = arg;
159
+ continue;
160
+ }
161
+ if (arg.startsWith('-'))
162
+ continue;
163
+ // Treat as path argument
164
+ targetPath = arg;
165
+ }
166
+ return { command, path: targetPath, prompt, debug, skipConfirmations, planMode };
167
+ }
168
+ async function promptInput(prompt) {
169
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
170
+ return new Promise(resolve => {
171
+ rl.question(prompt, answer => {
172
+ rl.close();
173
+ resolve(answer.trim());
174
+ });
175
+ });
176
+ }
177
+ async function loginWithApiKey(config) {
178
+ const key = await promptInput(`${GREEN}›${RESET} Enter your O'Route API Key (or-...): `);
179
+ if (!key.startsWith('or-')) {
180
+ console.log(`${YELLOW} Invalid key format. O'Route keys start with "or-"${RESET}`);
181
+ return;
182
+ }
183
+ const apiUrl = config.apiUrl ?? LOCAL_API_URL;
184
+ console.log(`${GRAY} Verifying key...${RESET}`);
185
+ try {
186
+ const res = await fetch(`${apiUrl}/v1/providers/status`, {
187
+ headers: { 'Authorization': `Bearer ${key}` },
188
+ signal: AbortSignal.timeout(5000),
189
+ });
190
+ config.apiKey = key;
191
+ saveConfig(config);
192
+ if (res.ok) {
193
+ console.log(`${GREEN} ✓ API Key verified and saved!${RESET}`);
194
+ }
195
+ else {
196
+ console.log(`${YELLOW} Key saved (server returned ${res.status}).${RESET}`);
197
+ }
198
+ console.log();
199
+ await chat(config);
200
+ return;
201
+ }
202
+ catch {
203
+ config.apiKey = key;
204
+ saveConfig(config);
205
+ console.log(`${YELLOW} Saved (server offline). Starting chat...${RESET}`);
206
+ console.log();
207
+ await chat(config);
208
+ }
209
+ }
210
+ async function loginWithGoogle(config) {
211
+ const apiUrl = config.apiUrl ?? LOCAL_API_URL;
212
+ console.log(`${GRAY} Requesting device code...${RESET}`);
213
+ try {
214
+ // 1. Request device code
215
+ const res = await fetch(`${apiUrl}/v1/auth/device`, {
216
+ method: 'POST',
217
+ headers: { 'Content-Type': 'application/json' },
218
+ signal: AbortSignal.timeout(5000),
219
+ });
220
+ if (!res.ok)
221
+ throw new Error(`Server error: ${res.status}`);
222
+ const data = await res.json();
223
+ // 2. Open browser
224
+ console.log();
225
+ console.log(`${GREEN} ▶ 브라우저에서 Google 로그인하세요${RESET}`);
226
+ console.log(`${GRAY} ${data.loginUrl}${RESET}`);
227
+ console.log();
228
+ console.log(`${GRAY} 확인 코드: ${WHITE}${BOLD}${data.userCode}${RESET}`);
229
+ console.log(`${GRAY} 브라우저가 열립니다... 로그인 후 자동으로 연결됩니다.${RESET}`);
230
+ console.log();
231
+ const { exec } = await import('node:child_process');
232
+ exec(`open "${data.loginUrl}" || xdg-open "${data.loginUrl}" || start "${data.loginUrl}"`);
233
+ // 3. Poll for approval
234
+ const maxAttempts = 150; // 5 min at 2s intervals
235
+ for (let i = 0; i < maxAttempts; i++) {
236
+ await new Promise(r => setTimeout(r, 2000));
237
+ const pollRes = await fetch(`${apiUrl}/v1/auth/device/${data.deviceCode}`, {
238
+ signal: AbortSignal.timeout(5000),
239
+ });
240
+ const pollData = await pollRes.json();
241
+ if (pollData.status === 'approved' && pollData.apiKey) {
242
+ config.apiKey = pollData.apiKey;
243
+ saveConfig(config);
244
+ console.log(`\n${GREEN} ✓ Logged in!${RESET} ${GRAY}(${pollData.email})${RESET}`);
245
+ console.log(`${GREEN} ✓ API Key saved${RESET}`);
246
+ console.log();
247
+ // Auto-enter chat mode like Claude Code
248
+ await chat(config);
249
+ return;
250
+ }
251
+ if (pollData.status === 'expired') {
252
+ console.log(`${YELLOW} 인증 코드가 만료되었습니다. 다시 시도해주세요.${RESET}`);
253
+ return;
254
+ }
255
+ // Show waiting dots
256
+ process.stdout.write(`\r${GRAY} 대기 중${'·'.repeat((i % 3) + 1).padEnd(3)}${RESET}`);
257
+ }
258
+ console.log(`\n${YELLOW} 시간 초과. 다시 시도해주세요.${RESET}`);
259
+ }
260
+ catch (err) {
261
+ console.log(`${YELLOW} 서버에 연결할 수 없습니다. API Key로 로그인하세요 (옵션 1).${RESET}`);
262
+ }
263
+ }
264
+ async function chat(config) {
265
+ if (!config.apiKey) {
266
+ console.log(`${YELLOW} No API Key configured. Run option 1 first.${RESET}`);
267
+ return;
268
+ }
269
+ const apiUrl = config.apiUrl ?? LOCAL_API_URL;
270
+ const model = config.model ?? 'auto';
271
+ const cwd = process.cwd();
272
+ console.log(`${GREEN}${BOLD} O'Route${RESET} v${VERSION}`);
273
+ console.log(`${GRAY} model: ${model} (auto-routed) · 13 models${RESET}`);
274
+ console.log(`${GRAY} ${cwd}${RESET}`);
275
+ console.log();
276
+ const messages = [];
277
+ while (true) {
278
+ const input = await promptInput(`${GREEN}›${RESET} `);
279
+ if (!input || input === 'exit' || input === 'quit')
280
+ break;
281
+ messages.push({ role: 'user', content: input });
282
+ try {
283
+ const res = await fetch(`${apiUrl}/v1/messages`, {
284
+ method: 'POST',
285
+ headers: {
286
+ 'Authorization': `Bearer ${config.apiKey}`,
287
+ 'Content-Type': 'application/json',
288
+ },
289
+ body: JSON.stringify({
290
+ model,
291
+ max_tokens: 4096,
292
+ messages,
293
+ }),
294
+ signal: AbortSignal.timeout(60000),
295
+ });
296
+ if (!res.ok) {
297
+ const errBody = await res.json().catch(() => ({ error: { message: `HTTP ${res.status}` } }));
298
+ const errMsg = typeof errBody.error === 'string' ? errBody.error : errBody.error?.message ?? `HTTP ${res.status}`;
299
+ console.log(`${YELLOW} Error: ${errMsg}${RESET}`);
300
+ messages.pop();
301
+ continue;
302
+ }
303
+ const data = await res.json();
304
+ const text = data.content[0]?.text ?? '';
305
+ const meta = data.routing_metadata;
306
+ console.log();
307
+ console.log(`${WHITE}${text}${RESET}`);
308
+ console.log();
309
+ console.log(`${DIM} ─ ${meta.provider} · L${meta.taskComplexity} · ${meta.totalLatencyMs.toFixed(0)}ms · ${data.usage.input_tokens}+${data.usage.output_tokens} tokens${RESET}`);
310
+ console.log();
311
+ messages.push({ role: 'assistant', content: text });
312
+ }
313
+ catch (err) {
314
+ console.log(`${YELLOW} Request failed: ${err instanceof Error ? err.message : 'unknown'}${RESET}`);
315
+ messages.pop();
316
+ }
317
+ }
318
+ }
319
+ async function checkStatus(config) {
320
+ const apiUrl = config.apiUrl ?? LOCAL_API_URL;
321
+ console.log(`${GRAY} Checking O'Route status...${RESET}`);
322
+ try {
323
+ const res = await fetch(`${apiUrl}/health`, { signal: AbortSignal.timeout(5000) });
324
+ const data = await res.json();
325
+ console.log(`${GREEN} ✓ Server: ${data.status} (v${data.version})${RESET}`);
326
+ console.log(`${GRAY} URL: ${apiUrl}${RESET}`);
327
+ console.log(`${GRAY} Key: ${config.apiKey ? config.apiKey.slice(0, 11) + '...' : 'not set'}${RESET}`);
328
+ console.log(`${GRAY} Model: ${config.model ?? 'auto'}${RESET}`);
329
+ }
330
+ catch {
331
+ console.log(`${YELLOW} ✗ Server unreachable at ${apiUrl}${RESET}`);
332
+ }
333
+ }
334
+ async function settings(config) {
335
+ console.log(`${BOLD} Settings${RESET}`);
336
+ console.log(`${GRAY} 1. API URL: ${config.apiUrl ?? LOCAL_API_URL}${RESET}`);
337
+ console.log(`${GRAY} 2. Default model: ${config.model ?? 'auto'}${RESET}`);
338
+ console.log(`${GRAY} 3. Reset config${RESET}`);
339
+ console.log(`${GRAY} b. Back${RESET}`);
340
+ const choice = await promptInput(`${GREEN}›${RESET} `);
341
+ switch (choice) {
342
+ case '1': {
343
+ const url = await promptInput(`${GREEN}›${RESET} API URL: `);
344
+ if (url) {
345
+ config.apiUrl = url;
346
+ saveConfig(config);
347
+ }
348
+ break;
349
+ }
350
+ case '2': {
351
+ console.log(`${GRAY} Options: auto, anthropic/claude-sonnet-4-6, openai/gpt-4o, etc.${RESET}`);
352
+ const model = await promptInput(`${GREEN}›${RESET} Model: `);
353
+ if (model) {
354
+ config.model = model;
355
+ saveConfig(config);
356
+ }
357
+ break;
358
+ }
359
+ case '3':
360
+ fs.unlinkSync(CONFIG_FILE);
361
+ console.log(`${GREEN} ✓ Config reset${RESET}`);
362
+ break;
363
+ }
364
+ }
365
+ // ── Main ──
366
+ async function main() {
367
+ const rawArgs = process.argv.slice(2);
368
+ const config = loadConfig();
369
+ const parsed = parseArgs(rawArgs);
370
+ // C6: Auto-update check (non-blocking, background)
371
+ checkForUpdates(VERSION);
372
+ // Handle --debug
373
+ if (parsed.debug) {
374
+ console.log(`${GRAY} Debug mode: config=${JSON.stringify(config)}${RESET}`);
375
+ }
376
+ // Handle path argument — change cwd
377
+ if (parsed.path) {
378
+ const resolved = path.resolve(process.cwd(), parsed.path);
379
+ if (!fs.existsSync(resolved)) {
380
+ console.log(`${YELLOW} 디렉토리를 찾을 수 없습니다: ${resolved}${RESET}`);
381
+ process.exit(1);
382
+ }
383
+ const stat = fs.statSync(resolved);
384
+ if (!stat.isDirectory()) {
385
+ console.log(`${YELLOW} 디렉토리가 아닙니다: ${resolved}${RESET}`);
386
+ process.exit(1);
387
+ }
388
+ process.chdir(resolved);
389
+ }
390
+ // Build agent config with flags
391
+ const agentConfig = {
392
+ ...config,
393
+ skipConfirmations: parsed.skipConfirmations,
394
+ planMode: parsed.planMode,
395
+ };
396
+ // Direct command shortcuts
397
+ if (parsed.command === 'login') {
398
+ printWelcome();
399
+ await loginWithApiKey(config);
400
+ return;
401
+ }
402
+ if (parsed.command === 'chat' || parsed.command === 'agent') {
403
+ await agentChat(agentConfig);
404
+ return;
405
+ }
406
+ if (parsed.command === 'status') {
407
+ await checkStatus(config);
408
+ return;
409
+ }
410
+ // -p "prompt" → one-shot agent execution
411
+ if (parsed.prompt) {
412
+ if (!config.apiKey) {
413
+ console.log(`${YELLOW}No API Key. Run: oroute login${RESET}`);
414
+ process.exit(1);
415
+ }
416
+ const apiUrl = config.apiUrl ?? LOCAL_API_URL;
417
+ try {
418
+ const res = await fetch(`${apiUrl}/v1/messages`, {
419
+ method: 'POST',
420
+ headers: { 'Authorization': `Bearer ${config.apiKey}`, 'Content-Type': 'application/json' },
421
+ body: JSON.stringify({ model: config.model ?? 'auto', max_tokens: 4096, messages: [{ role: 'user', content: parsed.prompt }] }),
422
+ signal: AbortSignal.timeout(60000),
423
+ });
424
+ const data = await res.json();
425
+ console.log(data.content[0]?.text ?? '');
426
+ }
427
+ catch (err) {
428
+ const msg = err instanceof Error ? err.message : String(err);
429
+ console.log(`${YELLOW} Error: ${msg}${RESET}`);
430
+ }
431
+ return;
432
+ }
433
+ // If already logged in → go straight to agent mode (like Claude Code)
434
+ printWelcome();
435
+ if (config.apiKey) {
436
+ await agentChat(agentConfig);
437
+ return;
438
+ }
439
+ // Not logged in → show menu
440
+ while (true) {
441
+ printMenu();
442
+ const choice = await promptInput(`${GREEN}›${RESET} `);
443
+ switch (choice) {
444
+ case '1':
445
+ await loginWithGoogle(config);
446
+ break;
447
+ case '2':
448
+ await loginWithApiKey(config);
449
+ break;
450
+ case '3':
451
+ await agentChat(agentConfig);
452
+ break;
453
+ case '4':
454
+ await checkStatus(config);
455
+ break;
456
+ case '5':
457
+ await settings(config);
458
+ break;
459
+ case 'q':
460
+ case 'quit':
461
+ case 'exit':
462
+ console.log(`${GRAY} Bye!${RESET}`);
463
+ process.exit(0);
464
+ default:
465
+ console.log(`${YELLOW} Unknown option: ${choice}${RESET}`);
466
+ }
467
+ console.log();
468
+ }
469
+ }
470
+ main().catch((err) => {
471
+ const msg = err instanceof Error ? err.message : String(err);
472
+ console.error(`${YELLOW} Error: ${msg}${RESET}`);
473
+ process.exit(1);
474
+ });
475
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Render markdown text with ANSI escape codes for terminal display.
3
+ */
4
+ export declare function renderMarkdown(text: string): string;
@@ -0,0 +1,126 @@
1
+ /**
2
+ * A3: Markdown Terminal Rendering — regex-based ANSI formatting for terminal output.
3
+ */
4
+ import { GREEN, GRAY, BOLD, DIM, RESET, CYAN, YELLOW, MAGENTA, BLUE } from './ui.js';
5
+ const BG_GRAY = '\x1b[48;5;237m';
6
+ const ITALIC = '\x1b[3m';
7
+ const UNDERLINE = '\x1b[4m';
8
+ /** Keyword sets for basic syntax highlighting in code blocks */
9
+ const JS_KEYWORDS = new Set([
10
+ 'const', 'let', 'var', 'function', 'return', 'if', 'else', 'for', 'while',
11
+ 'class', 'import', 'export', 'from', 'default', 'async', 'await', 'try',
12
+ 'catch', 'throw', 'new', 'typeof', 'instanceof', 'switch', 'case', 'break',
13
+ 'continue', 'true', 'false', 'null', 'undefined', 'this', 'extends', 'implements',
14
+ 'interface', 'type', 'enum', 'namespace', 'readonly', 'abstract', 'static',
15
+ 'private', 'protected', 'public', 'yield', 'of', 'in', 'do',
16
+ ]);
17
+ function highlightCode(line) {
18
+ // Highlight strings
19
+ let result = line.replace(/(["'`])(?:(?!\1|\\).|\\.)*?\1/g, `${GREEN}$&${RESET}${GRAY}`);
20
+ // Highlight comments
21
+ result = result.replace(/(\/\/.*)$/gm, `${DIM}$1${RESET}${GRAY}`);
22
+ // Highlight keywords (word boundaries)
23
+ result = result.replace(/\b(\w+)\b/g, (match) => {
24
+ if (JS_KEYWORDS.has(match))
25
+ return `${YELLOW}${match}${RESET}${GRAY}`;
26
+ return match;
27
+ });
28
+ // Highlight numbers
29
+ result = result.replace(/\b(\d+\.?\d*)\b/g, `${MAGENTA}$1${RESET}${GRAY}`);
30
+ return result;
31
+ }
32
+ /**
33
+ * Render markdown text with ANSI escape codes for terminal display.
34
+ */
35
+ export function renderMarkdown(text) {
36
+ const lines = text.split('\n');
37
+ const output = [];
38
+ let inCodeBlock = false;
39
+ let codeBlockLang = '';
40
+ for (const line of lines) {
41
+ // Code block fence
42
+ if (line.trimStart().startsWith('```')) {
43
+ if (!inCodeBlock) {
44
+ inCodeBlock = true;
45
+ codeBlockLang = line.trimStart().slice(3).trim();
46
+ output.push(`${DIM} ${'─'.repeat(40)}${RESET}`);
47
+ continue;
48
+ }
49
+ else {
50
+ inCodeBlock = false;
51
+ codeBlockLang = '';
52
+ output.push(`${DIM} ${'─'.repeat(40)}${RESET}`);
53
+ continue;
54
+ }
55
+ }
56
+ // Inside code block
57
+ if (inCodeBlock) {
58
+ const highlighted = highlightCode(line);
59
+ output.push(`${GRAY} ${highlighted}${RESET}`);
60
+ continue;
61
+ }
62
+ // Headings
63
+ const h3Match = line.match(/^###\s+(.*)/);
64
+ if (h3Match) {
65
+ output.push(`${BOLD}${GREEN} ${h3Match[1]}${RESET}`);
66
+ continue;
67
+ }
68
+ const h2Match = line.match(/^##\s+(.*)/);
69
+ if (h2Match) {
70
+ output.push(`${BOLD}${GREEN} ${h2Match[1]}${RESET}`);
71
+ continue;
72
+ }
73
+ const h1Match = line.match(/^#\s+(.*)/);
74
+ if (h1Match) {
75
+ output.push(`${BOLD}${GREEN}${h1Match[1]}${RESET}`);
76
+ continue;
77
+ }
78
+ // Blockquote
79
+ if (line.trimStart().startsWith('> ')) {
80
+ const content = line.trimStart().slice(2);
81
+ output.push(`${DIM} ${GRAY}│ ${content}${RESET}`);
82
+ continue;
83
+ }
84
+ // Unordered list
85
+ const listMatch = line.match(/^(\s*)[-*]\s+(.*)/);
86
+ if (listMatch) {
87
+ const indent = listMatch[1] ?? '';
88
+ const content = formatInline(listMatch[2] ?? '');
89
+ output.push(`${indent}${GREEN} *${RESET} ${content}`);
90
+ continue;
91
+ }
92
+ // Ordered list
93
+ const olMatch = line.match(/^(\s*)(\d+)\.\s+(.*)/);
94
+ if (olMatch) {
95
+ const indent = olMatch[1] ?? '';
96
+ const num = olMatch[2] ?? '';
97
+ const content = formatInline(olMatch[3] ?? '');
98
+ output.push(`${indent}${GREEN} ${num}.${RESET} ${content}`);
99
+ continue;
100
+ }
101
+ // Horizontal rule
102
+ if (/^[-*_]{3,}\s*$/.test(line.trim())) {
103
+ output.push(`${DIM} ${'─'.repeat(40)}${RESET}`);
104
+ continue;
105
+ }
106
+ // Regular text with inline formatting
107
+ output.push(formatInline(line));
108
+ }
109
+ return output.join('\n');
110
+ }
111
+ /** Apply inline markdown formatting */
112
+ function formatInline(text) {
113
+ let result = text;
114
+ // Bold + italic
115
+ result = result.replace(/\*\*\*(.*?)\*\*\*/g, `${BOLD}${ITALIC}$1${RESET}`);
116
+ // Bold
117
+ result = result.replace(/\*\*(.*?)\*\*/g, `${BOLD}$1${RESET}`);
118
+ // Italic
119
+ result = result.replace(/(?<!\*)\*([^*]+?)\*(?!\*)/g, `${DIM}$1${RESET}`);
120
+ // Inline code
121
+ result = result.replace(/`([^`]+?)`/g, `${BG_GRAY}${CYAN} $1 ${RESET}`);
122
+ // Links: [text](url)
123
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, `${UNDERLINE}${BLUE}$1${RESET}${DIM} ($2)${RESET}`);
124
+ return result;
125
+ }
126
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}