vegas-chat 2.0.1

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 (178) hide show
  1. package/LICENSE +21 -0
  2. package/dist/autocomplete.d.ts +11 -0
  3. package/dist/autocomplete.d.ts.map +1 -0
  4. package/dist/autocomplete.js +215 -0
  5. package/dist/autocomplete.js.map +1 -0
  6. package/dist/coding/analyzer.d.ts +14 -0
  7. package/dist/coding/analyzer.d.ts.map +1 -0
  8. package/dist/coding/analyzer.js +245 -0
  9. package/dist/coding/analyzer.js.map +1 -0
  10. package/dist/coding/linter.d.ts +15 -0
  11. package/dist/coding/linter.d.ts.map +1 -0
  12. package/dist/coding/linter.js +118 -0
  13. package/dist/coding/linter.js.map +1 -0
  14. package/dist/coding/refactor.d.ts +14 -0
  15. package/dist/coding/refactor.d.ts.map +1 -0
  16. package/dist/coding/refactor.js +158 -0
  17. package/dist/coding/refactor.js.map +1 -0
  18. package/dist/coding/tester.d.ts +16 -0
  19. package/dist/coding/tester.d.ts.map +1 -0
  20. package/dist/coding/tester.js +118 -0
  21. package/dist/coding/tester.js.map +1 -0
  22. package/dist/commands/apikey.d.ts +4 -0
  23. package/dist/commands/apikey.d.ts.map +1 -0
  24. package/dist/commands/apikey.js +48 -0
  25. package/dist/commands/apikey.js.map +1 -0
  26. package/dist/commands/clear.d.ts +3 -0
  27. package/dist/commands/clear.d.ts.map +1 -0
  28. package/dist/commands/clear.js +11 -0
  29. package/dist/commands/clear.js.map +1 -0
  30. package/dist/commands/coding.d.ts +3 -0
  31. package/dist/commands/coding.d.ts.map +1 -0
  32. package/dist/commands/coding.js +106 -0
  33. package/dist/commands/coding.js.map +1 -0
  34. package/dist/commands/config.d.ts +4 -0
  35. package/dist/commands/config.d.ts.map +1 -0
  36. package/dist/commands/config.js +56 -0
  37. package/dist/commands/config.js.map +1 -0
  38. package/dist/commands/exit.d.ts +3 -0
  39. package/dist/commands/exit.d.ts.map +1 -0
  40. package/dist/commands/exit.js +10 -0
  41. package/dist/commands/exit.js.map +1 -0
  42. package/dist/commands/help.d.ts +3 -0
  43. package/dist/commands/help.d.ts.map +1 -0
  44. package/dist/commands/help.js +46 -0
  45. package/dist/commands/help.js.map +1 -0
  46. package/dist/commands/index.d.ts +4 -0
  47. package/dist/commands/index.d.ts.map +1 -0
  48. package/dist/commands/index.js +52 -0
  49. package/dist/commands/index.js.map +1 -0
  50. package/dist/commands/model.d.ts +4 -0
  51. package/dist/commands/model.d.ts.map +1 -0
  52. package/dist/commands/model.js +36 -0
  53. package/dist/commands/model.js.map +1 -0
  54. package/dist/commands/models.d.ts +4 -0
  55. package/dist/commands/models.d.ts.map +1 -0
  56. package/dist/commands/models.js +123 -0
  57. package/dist/commands/models.js.map +1 -0
  58. package/dist/commands/provider.d.ts +4 -0
  59. package/dist/commands/provider.d.ts.map +1 -0
  60. package/dist/commands/provider.js +118 -0
  61. package/dist/commands/provider.js.map +1 -0
  62. package/dist/commands/session.d.ts +5 -0
  63. package/dist/commands/session.d.ts.map +1 -0
  64. package/dist/commands/session.js +255 -0
  65. package/dist/commands/session.js.map +1 -0
  66. package/dist/commands/skills.d.ts +3 -0
  67. package/dist/commands/skills.d.ts.map +1 -0
  68. package/dist/commands/skills.js +69 -0
  69. package/dist/commands/skills.js.map +1 -0
  70. package/dist/commands/tools.d.ts +4 -0
  71. package/dist/commands/tools.d.ts.map +1 -0
  72. package/dist/commands/tools.js +59 -0
  73. package/dist/commands/tools.js.map +1 -0
  74. package/dist/commands/version.d.ts +4 -0
  75. package/dist/commands/version.d.ts.map +1 -0
  76. package/dist/commands/version.js +17 -0
  77. package/dist/commands/version.js.map +1 -0
  78. package/dist/config.d.ts +21 -0
  79. package/dist/config.d.ts.map +1 -0
  80. package/dist/config.js +110 -0
  81. package/dist/config.js.map +1 -0
  82. package/dist/database.d.ts +59 -0
  83. package/dist/database.d.ts.map +1 -0
  84. package/dist/database.js +212 -0
  85. package/dist/database.js.map +1 -0
  86. package/dist/index.d.ts +3 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +19 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/loop/autoFix.d.ts +12 -0
  91. package/dist/loop/autoFix.d.ts.map +1 -0
  92. package/dist/loop/autoFix.js +42 -0
  93. package/dist/loop/autoFix.js.map +1 -0
  94. package/dist/modelCache.d.ts +3 -0
  95. package/dist/modelCache.d.ts.map +1 -0
  96. package/dist/modelCache.js +10 -0
  97. package/dist/modelCache.js.map +1 -0
  98. package/dist/provider/anthropic.d.ts +10 -0
  99. package/dist/provider/anthropic.d.ts.map +1 -0
  100. package/dist/provider/anthropic.js +106 -0
  101. package/dist/provider/anthropic.js.map +1 -0
  102. package/dist/provider/google.d.ts +11 -0
  103. package/dist/provider/google.d.ts.map +1 -0
  104. package/dist/provider/google.js +113 -0
  105. package/dist/provider/google.js.map +1 -0
  106. package/dist/provider/interface.d.ts +3 -0
  107. package/dist/provider/interface.d.ts.map +1 -0
  108. package/dist/provider/interface.js +2 -0
  109. package/dist/provider/interface.js.map +1 -0
  110. package/dist/provider/openai-compatible.d.ts +10 -0
  111. package/dist/provider/openai-compatible.d.ts.map +1 -0
  112. package/dist/provider/openai-compatible.js +90 -0
  113. package/dist/provider/openai-compatible.js.map +1 -0
  114. package/dist/provider/registry.d.ts +9 -0
  115. package/dist/provider/registry.d.ts.map +1 -0
  116. package/dist/provider/registry.js +118 -0
  117. package/dist/provider/registry.js.map +1 -0
  118. package/dist/provider/zen.d.ts +11 -0
  119. package/dist/provider/zen.d.ts.map +1 -0
  120. package/dist/provider/zen.js +120 -0
  121. package/dist/provider/zen.js.map +1 -0
  122. package/dist/repl.d.ts +23 -0
  123. package/dist/repl.d.ts.map +1 -0
  124. package/dist/repl.js +387 -0
  125. package/dist/repl.js.map +1 -0
  126. package/dist/skills/loader.d.ts +14 -0
  127. package/dist/skills/loader.d.ts.map +1 -0
  128. package/dist/skills/loader.js +109 -0
  129. package/dist/skills/loader.js.map +1 -0
  130. package/dist/skills/matcher.d.ts +11 -0
  131. package/dist/skills/matcher.d.ts.map +1 -0
  132. package/dist/skills/matcher.js +51 -0
  133. package/dist/skills/matcher.js.map +1 -0
  134. package/dist/tools/bash.d.ts +3 -0
  135. package/dist/tools/bash.d.ts.map +1 -0
  136. package/dist/tools/bash.js +59 -0
  137. package/dist/tools/bash.js.map +1 -0
  138. package/dist/tools/edit.d.ts +3 -0
  139. package/dist/tools/edit.d.ts.map +1 -0
  140. package/dist/tools/edit.js +75 -0
  141. package/dist/tools/edit.js.map +1 -0
  142. package/dist/tools/glob.d.ts +3 -0
  143. package/dist/tools/glob.d.ts.map +1 -0
  144. package/dist/tools/glob.js +93 -0
  145. package/dist/tools/glob.js.map +1 -0
  146. package/dist/tools/grep.d.ts +3 -0
  147. package/dist/tools/grep.d.ts.map +1 -0
  148. package/dist/tools/grep.js +119 -0
  149. package/dist/tools/grep.js.map +1 -0
  150. package/dist/tools/read.d.ts +3 -0
  151. package/dist/tools/read.d.ts.map +1 -0
  152. package/dist/tools/read.js +52 -0
  153. package/dist/tools/read.js.map +1 -0
  154. package/dist/tools/registry.d.ts +6 -0
  155. package/dist/tools/registry.d.ts.map +1 -0
  156. package/dist/tools/registry.js +48 -0
  157. package/dist/tools/registry.js.map +1 -0
  158. package/dist/tools/webFetch.d.ts +3 -0
  159. package/dist/tools/webFetch.d.ts.map +1 -0
  160. package/dist/tools/webFetch.js +57 -0
  161. package/dist/tools/webFetch.js.map +1 -0
  162. package/dist/tools/webSearch.d.ts +5 -0
  163. package/dist/tools/webSearch.d.ts.map +1 -0
  164. package/dist/tools/webSearch.js +107 -0
  165. package/dist/tools/webSearch.js.map +1 -0
  166. package/dist/tools/write.d.ts +3 -0
  167. package/dist/tools/write.d.ts.map +1 -0
  168. package/dist/tools/write.js +41 -0
  169. package/dist/tools/write.js.map +1 -0
  170. package/dist/types.d.ts +74 -0
  171. package/dist/types.d.ts.map +1 -0
  172. package/dist/types.js +2 -0
  173. package/dist/types.js.map +1 -0
  174. package/dist/ui.d.ts +179 -0
  175. package/dist/ui.d.ts.map +1 -0
  176. package/dist/ui.js +481 -0
  177. package/dist/ui.js.map +1 -0
  178. package/package.json +52 -0
package/dist/ui.js ADDED
@@ -0,0 +1,481 @@
1
+ /**
2
+ * vegas Terminal UI — TUI Design Skill Implementation
3
+ * Based on: TERMINAL_UI_SKILL.md
4
+ *
5
+ * Theme: Catppuccin Mocha (dark)
6
+ * Aesthetic: Clean, semantic, cyberpunk-light
7
+ */
8
+ // ═══════════════════════════════════════════════
9
+ // ANSI Color & Style Constants (TrueColor 24-bit)
10
+ // ═══════════════════════════════════════════════
11
+ const BOLD = "\x1b[1m";
12
+ const DIM = "\x1b[2m";
13
+ const ITALIC = "\x1b[3m";
14
+ const UNDERLINE = "\x1b[4m";
15
+ const RESET = "\x1b[0m";
16
+ // Catppuccin Mocha
17
+ const TEXT = "\x1b[38;2;205;214;244m"; // #cdd6f4
18
+ const OVERLAY0 = "\x1b[38;2;108;112;134m"; // #6c7086
19
+ const OVERLAY1 = "\x1b[38;2;147;153;178m"; // #9399b2
20
+ const SUBTEXT0 = "\x1b[38;2;166;173;200m"; // #a6adc8
21
+ const RED = "\x1b[38;2;243;139;168m"; // #f38ba8
22
+ const GREEN = "\x1b[38;2;166;227;161m"; // #a6e3a1
23
+ const YELLOW = "\x1b[38;2;249;226;175m"; // #f9e2af
24
+ const BLUE = "\x1b[38;2;137;180;250m"; // #89b4fa
25
+ const PINK = "\x1b[38;2;245;194;231m"; // #f5c2e7
26
+ const TEAL = "\x1b[38;2;148;226;213m"; // #94e2d5
27
+ const PEACH = "\x1b[38;2;250;179;135m"; // #fab387
28
+ const MAUVE = "\x1b[38;2;203;166;247m"; // #cba6f7
29
+ const SAPPHIRE = "\x1b[38;2;116;199;236m"; // #74c7ec
30
+ const SKY = "\x1b[38;2;137;220;235m"; // #89dceb
31
+ // ═══════════════════════════════════════════════
32
+ // Markers & Symbols
33
+ // ═══════════════════════════════════════════════
34
+ export const Markers = {
35
+ bullet: "\u2022",
36
+ success: "\u2713",
37
+ error: "\u2717",
38
+ warning: "\u26A0",
39
+ info: "\u2139",
40
+ spinner: "\u27F3",
41
+ arrow: "\u2192",
42
+ arrowRight: "\u279C",
43
+ star: "\u2605",
44
+ diamond: "\u25C6",
45
+ separator: "\u2500",
46
+ pointer: "\u25B8",
47
+ circle: "\u25EF",
48
+ circleFill: "\u25CF",
49
+ ellipsis: "\u2026",
50
+ };
51
+ // Spinner & progress frames
52
+ export const SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
53
+ export const PROGRESS_BAR_FRAMES = ["\u2581", "\u2582", "\u2583", "\u2584", "\u2585", "\u2586", "\u2587", "\u2588"];
54
+ // ─── Spinner Animation Engine ─────────────────
55
+ let spinnerTimer = null;
56
+ let spinnerFrame = 0;
57
+ let spinnerMessage = "";
58
+ /**
59
+ * Start an animated spinner in the terminal.
60
+ * Call stopSpinner() to stop and print final message.
61
+ * The spinner runs on a separate line, updating in-place.
62
+ */
63
+ export function startSpinner(message) {
64
+ if (spinnerTimer)
65
+ stopSpinner();
66
+ spinnerMessage = message;
67
+ spinnerFrame = 0;
68
+ // Write initial line
69
+ process.stdout.write(` ${SKY}${SPINNER_FRAMES[0]}${RESET} ${SKY}${message}${RESET}`);
70
+ // Force flush on Windows so spinner appears immediately
71
+ const stdoutHandle = process.stdout._handle;
72
+ if (stdoutHandle && typeof stdoutHandle.setBlocking === 'function') {
73
+ stdoutHandle.setBlocking(true);
74
+ }
75
+ spinnerTimer = setInterval(() => {
76
+ spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES.length;
77
+ process.stdout.write(`\r ${SKY}${SPINNER_FRAMES[spinnerFrame]}${RESET} ${SKY}${spinnerMessage}${RESET}`);
78
+ }, 120);
79
+ }
80
+ /**
81
+ * Update the spinner message while animating
82
+ */
83
+ export function updateSpinner(message) {
84
+ spinnerMessage = message;
85
+ }
86
+ /**
87
+ * Stop the animated spinner and print a final status line.
88
+ * If no finalMessage is given, the spinner line is cleared.
89
+ */
90
+ export function stopSpinner(finalMessage, finalType) {
91
+ if (spinnerTimer) {
92
+ clearInterval(spinnerTimer);
93
+ spinnerTimer = null;
94
+ }
95
+ // Clear spinner line
96
+ process.stdout.write("\r\x1b[K");
97
+ if (finalMessage) {
98
+ const icon = finalType === "success" ? `${GREEN}${Markers.success}${RESET}`
99
+ : finalType === "error" ? `${RED}${Markers.error}${RESET}`
100
+ : finalType === "warning" ? `${YELLOW}${Markers.warning}${RESET}`
101
+ : `${SAPPHIRE}${Markers.info}${RESET}`;
102
+ console.log(` ${icon} ${finalMessage}`);
103
+ }
104
+ }
105
+ /**
106
+ * Check if spinner is currently running
107
+ */
108
+ export function isSpinnerRunning() {
109
+ return spinnerTimer !== null;
110
+ }
111
+ // ─── Progress Bar ──────────────────────────────
112
+ /**
113
+ * Print a simple progress bar line.
114
+ * @param percent 0-100
115
+ * @param label Optional label (e.g. "Downloading")
116
+ * @param suffix Optional suffix (e.g. "45%")
117
+ */
118
+ export function printProgressBar(percent, label, suffix) {
119
+ const barWidth = 30;
120
+ const filled = Math.round((percent / 100) * barWidth);
121
+ const empty = barWidth - filled;
122
+ const bar = `${GREEN}${"\u2588".repeat(filled)}${OVERLAY0}${"\u2591".repeat(empty)}${RESET}`;
123
+ const pct = suffix || `${Math.round(percent)}%`;
124
+ const lbl = label ? `${label} ` : "";
125
+ process.stdout.write(`\r ${lbl}${bar} ${SKY}${pct}${RESET}`);
126
+ if (percent >= 100) {
127
+ process.stdout.write("\n");
128
+ }
129
+ }
130
+ /**
131
+ * Animate a progress bar from 0 to target percentage.
132
+ * Returns a promise that resolves when done.
133
+ */
134
+ export async function animateProgressBar(targetPercent, label, duration = 2000) {
135
+ const steps = 40;
136
+ const stepTime = duration / steps;
137
+ const increment = targetPercent / steps;
138
+ return new Promise((resolve) => {
139
+ let current = 0;
140
+ const interval = setInterval(() => {
141
+ current += increment;
142
+ if (current >= targetPercent) {
143
+ current = targetPercent;
144
+ printProgressBar(current, label, `${Math.round(current)}%`);
145
+ clearInterval(interval);
146
+ resolve();
147
+ }
148
+ else {
149
+ printProgressBar(current, label, `${Math.round(current)}%`);
150
+ }
151
+ }, stepTime);
152
+ });
153
+ }
154
+ // ═══════════════════════════════════════════════
155
+ // Helpers
156
+ // ═══════════════════════════════════════════════
157
+ function bold(text) {
158
+ return `${BOLD}${text}${RESET}`;
159
+ }
160
+ function dim(text) {
161
+ return `${DIM}${text}${RESET}`;
162
+ }
163
+ function stripAnsi(str) {
164
+ return str.replace(/\x1b\[[0-9;]*m/g, "");
165
+ }
166
+ // ═══════════════════════════════════════════════
167
+ // Public API
168
+ // ═══════════════════════════════════════════════
169
+ /**
170
+ * Cyberpunk-themed welcome banner — clean, no broken ASCII
171
+ *
172
+ * ╔══════════════════════════════════════╗
173
+ * ║ ◆ vegas v1.0 — AI CLI Agent ║
174
+ * ╠══════════════════════════════════════╣
175
+ * ║ ➜ /help for commands ║
176
+ * ║ session: a1b2c3d4... ║
177
+ * ╚══════════════════════════════════════╝
178
+ */
179
+ export function printWelcome(version, sessionId) {
180
+ const W = 46;
181
+ const line = "═".repeat(W - 2);
182
+ console.log("");
183
+ console.log(` ${BLUE}╔${line}╗${RESET}`);
184
+ // Title line
185
+ const title = `${GREEN}${Markers.diamond}${RESET} ${GREEN}${BOLD}vegas v${version}${RESET} ${BLUE}—${RESET} AI CLI Agent`;
186
+ const titleClean = stripAnsi(title);
187
+ const titlePad = Math.max(1, W - 2 - titleClean.length);
188
+ console.log(` ${BLUE}║${RESET} ${title}${" ".repeat(titlePad)} ${BLUE}║${RESET}`);
189
+ // Divider
190
+ console.log(` ${BLUE}╠${line}╣${RESET}`);
191
+ // Hint line
192
+ const hint = `${TEAL}${Markers.arrowRight}${RESET} ${TEAL}/help${RESET} for commands`;
193
+ const hintClean = stripAnsi(hint);
194
+ const hintPad = Math.max(1, W - 2 - hintClean.length);
195
+ console.log(` ${BLUE}║${RESET} ${hint}${" ".repeat(hintPad)} ${BLUE}║${RESET}`);
196
+ // Session
197
+ if (sessionId) {
198
+ const shortId = sessionId.substring(0, 8);
199
+ const sess = `${dim("session")} ${OVERLAY1}${shortId}${RESET}${dim("...")}`;
200
+ const sessClean = stripAnsi(sess);
201
+ const sessPad = Math.max(1, W - 2 - sessClean.length);
202
+ console.log(` ${BLUE}║${RESET} ${sess}${" ".repeat(sessPad)} ${BLUE}║${RESET}`);
203
+ }
204
+ console.log(` ${BLUE}╚${line}╝${RESET}`);
205
+ console.log("");
206
+ }
207
+ /**
208
+ * Divider line
209
+ */
210
+ export function printDivider(char = "\u2500", width = 46) {
211
+ console.log(` ${dim(char.repeat(width))}`);
212
+ }
213
+ /**
214
+ * Section header
215
+ */
216
+ export function printSection(title) {
217
+ const W = 46;
218
+ const t = ` ${BOLD}${title}${RESET} `;
219
+ const dash = "\u2501".repeat(Math.max(2, W - 2 - stripAnsi(t).length));
220
+ console.log(` ${OVERLAY0}\u250F${t}${OVERLAY0}${dash}\u2513${RESET}`);
221
+ }
222
+ export function printSectionEnd() {
223
+ const W = 46;
224
+ console.log(` ${OVERLAY0}\u2517${"\u2501".repeat(W - 2)}\u251B${RESET}`);
225
+ }
226
+ /**
227
+ * Action bullet
228
+ */
229
+ export function printAction(action) {
230
+ console.log(` ${GREEN}${Markers.bullet}${RESET} ${bold(action)}`);
231
+ }
232
+ /**
233
+ * Detail line (indented)
234
+ */
235
+ export function printDetail(text) {
236
+ console.log(` ${text}`);
237
+ }
238
+ /**
239
+ * Command line (blue)
240
+ */
241
+ export function printCommand(text) {
242
+ console.log(` ${BLUE}${text}${RESET}`);
243
+ }
244
+ /**
245
+ * Metadata line
246
+ */
247
+ export function printMeta(text) {
248
+ console.log(` ${dim(text)}`);
249
+ }
250
+ /**
251
+ * Key-value pair
252
+ */
253
+ export function printKV(key, value) {
254
+ console.log(` ${OVERLAY1}${key}:${RESET} ${value}`);
255
+ }
256
+ /**
257
+ * Code block
258
+ */
259
+ export function printCode(code) {
260
+ const lines = code.split("\n");
261
+ for (const line of lines) {
262
+ console.log(` ${OVERLAY0}\u2502${RESET} ${SAPPHIRE}${line}${RESET}`);
263
+ }
264
+ }
265
+ /**
266
+ * Success with checkmark
267
+ */
268
+ export function printSuccess(message, duration) {
269
+ const dur = duration ? ` ${dim(duration)}` : "";
270
+ console.log(` ${GREEN}${Markers.success}${RESET} ${GREEN}${message}${RESET}${dur}`);
271
+ }
272
+ /**
273
+ * Error with cross
274
+ */
275
+ export function printError(message, detail) {
276
+ const det = detail ? ` ${dim(detail)}` : "";
277
+ console.log(` ${RED}${Markers.error}${RESET} ${RED}${message}${RESET}${det}`);
278
+ }
279
+ /**
280
+ * Warning
281
+ */
282
+ export function printWarning(message) {
283
+ console.log(` ${YELLOW}${Markers.warning}${RESET} ${YELLOW}${message}${RESET}`);
284
+ }
285
+ /**
286
+ * Info
287
+ */
288
+ export function printInfo(message) {
289
+ console.log(` ${SAPPHIRE}${Markers.info}${RESET} ${message}`);
290
+ }
291
+ /**
292
+ * Progress
293
+ */
294
+ export function printProgress(message) {
295
+ console.log(` ${SKY}${Markers.spinner}${RESET} ${SKY}${message}${RESET}`);
296
+ }
297
+ /**
298
+ * Result line
299
+ */
300
+ export function printResult(message) {
301
+ console.log(` ${message}`);
302
+ }
303
+ /**
304
+ * Done
305
+ */
306
+ export function printDone(duration) {
307
+ const dur = duration ? ` ${dim(duration)}` : "";
308
+ console.log(` ${GREEN}${Markers.success}${RESET} ${GREEN}Done${RESET}${dur}`);
309
+ }
310
+ /**
311
+ * Compact one-line result
312
+ */
313
+ export function printCompact(action, status, duration) {
314
+ const dur = duration ? ` ${dim("\u00B7 " + duration)}` : "";
315
+ console.log(` ${GREEN}${Markers.bullet}${RESET} ${action} ${GREEN}${Markers.success}${RESET} ${status}${dur}`);
316
+ }
317
+ /**
318
+ * Tool call display
319
+ */
320
+ export function printToolCall(name, args) {
321
+ console.log(` ${GREEN}${Markers.bullet}${RESET} ${BOLD}${SAPPHIRE}${name}${RESET}`);
322
+ const entries = Object.entries(args);
323
+ for (const [key, value] of entries) {
324
+ const str = typeof value === "string" ? value : JSON.stringify(value);
325
+ if (entries.length === 1) {
326
+ for (const line of str.split("\n")) {
327
+ console.log(` ${OVERLAY1}${line}${RESET}`);
328
+ }
329
+ }
330
+ else {
331
+ for (const line of str.split("\n")) {
332
+ console.log(` ${OVERLAY1}${key}:${RESET} ${line}`);
333
+ }
334
+ }
335
+ }
336
+ }
337
+ /**
338
+ * Tool call with result
339
+ */
340
+ export function printToolResult(name, duration, success, preview) {
341
+ if (success) {
342
+ console.log(` ${GREEN}${Markers.success}${RESET} ${GREEN}Done${RESET} ${dim(duration)}`);
343
+ }
344
+ else {
345
+ console.log(` ${RED}${Markers.error}${RESET} ${RED}Failed${RESET} ${dim(duration)}`);
346
+ if (preview) {
347
+ for (const line of preview.split("\n").slice(0, 2)) {
348
+ console.log(` ${DIM}${line}${RESET}`);
349
+ }
350
+ }
351
+ }
352
+ }
353
+ /**
354
+ * Print raw content (AI response)
355
+ */
356
+ export function printContent(text) {
357
+ for (const line of text.split("\n")) {
358
+ console.log(` ${line}`);
359
+ }
360
+ }
361
+ /**
362
+ * Thinking indicator
363
+ */
364
+ export function printThinking() {
365
+ console.log(` ${SKY}${SPINNER_FRAMES[0]}${RESET} ${dim("Thinking...")}`);
366
+ }
367
+ /**
368
+ * Styled help table
369
+ */
370
+ export function printHelpTable(commands) {
371
+ const W = 54;
372
+ const innerW = W - 4;
373
+ const line = "\u2550".repeat(W - 2);
374
+ console.log("");
375
+ console.log(` ${MAUVE}\u2554${line}\u2557${RESET}`);
376
+ // Header
377
+ const hdr = ` ${BOLD}${MAUVE}Commands${RESET} ${OVERLAY0}(${commands.length})${RESET}`;
378
+ const hdrPad = Math.max(1, W - 3 - stripAnsi(hdr).length);
379
+ console.log(` ${MAUVE}\u2551${RESET} ${hdr}${" ".repeat(hdrPad)} ${MAUVE}\u2551${RESET}`);
380
+ console.log(` ${MAUVE}\u2560${line}\u2563${RESET}`);
381
+ // Basic commands (no spaces)
382
+ const basic = commands.filter(c => !c.name.includes(" "));
383
+ const withArgs = commands.filter(c => c.name.includes(" "));
384
+ for (const cmd of basic) {
385
+ const padded = cmd.name.padEnd(22);
386
+ const desc = cmd.description.slice(0, innerW - 22 - 1);
387
+ const gap = Math.max(1, innerW - 22 - stripAnsi(desc).length);
388
+ console.log(` ${MAUVE}\u2551${RESET} ${TEAL}${padded}${RESET} ${OVERLAY1}${desc}${RESET}${" ".repeat(gap)} ${MAUVE}\u2551${RESET}`);
389
+ }
390
+ if (withArgs.length > 0) {
391
+ console.log(` ${MAUVE}\u2560${line}\u2563${RESET}`);
392
+ for (const cmd of withArgs) {
393
+ const padded = cmd.name.padEnd(22);
394
+ const desc = cmd.description.slice(0, innerW - 22 - 1);
395
+ const gap = Math.max(1, innerW - 22 - stripAnsi(desc).length);
396
+ console.log(` ${MAUVE}\u2551${RESET} ${SAPPHIRE}${padded}${RESET} ${OVERLAY1}${desc}${RESET}${" ".repeat(gap)} ${MAUVE}\u2551${RESET}`);
397
+ }
398
+ }
399
+ console.log(` ${MAUVE}\u255A${line}\u255D${RESET}`);
400
+ console.log(` ${dim("\u2191\u2193 navigate | Tab complete | Enter select")}`);
401
+ console.log("");
402
+ }
403
+ /**
404
+ * Box display (error, warning, info, success)
405
+ */
406
+ export function printBox(title, lines, type = "info") {
407
+ const colors = {
408
+ error: { border: RED, icon: Markers.error },
409
+ warning: { border: YELLOW, icon: Markers.warning },
410
+ info: { border: BLUE, icon: Markers.info },
411
+ success: { border: GREEN, icon: Markers.success },
412
+ };
413
+ const c = colors[type];
414
+ const W = 50;
415
+ const innerW = W - 4;
416
+ const titleFmt = ` ${c.icon} ${title} `;
417
+ const tLen = stripAnsi(titleFmt).length;
418
+ // Simple single-line box
419
+ console.log(` ${c.border}\u2554${"\u2550".repeat(Math.max(2, Math.min(W - 2, tLen + 2)))}\u2557${RESET}`);
420
+ console.log(` ${c.border}\u2551${RESET} ${bold(titleFmt)}${" ".repeat(Math.max(1, W - 3 - tLen - 2))} ${c.border}\u2551${RESET}`);
421
+ console.log(` ${c.border}\u2560${"\u2550".repeat(W - 2)}\u2563${RESET}`);
422
+ for (const line of lines) {
423
+ const truncated = line.length > innerW ? line.substring(0, innerW - 2) + Markers.ellipsis : line;
424
+ const gap = Math.max(1, innerW - stripAnsi(truncated).length);
425
+ console.log(` ${c.border}\u2551${RESET} ${truncated}${" ".repeat(gap)} ${c.border}\u2551${RESET}`);
426
+ }
427
+ console.log(` ${c.border}\u255A${"\u2550".repeat(W - 2)}\u255D${RESET}`);
428
+ }
429
+ /**
430
+ * Status bar with key info
431
+ */
432
+ export function printStatusBar(provider, model, messageCount, sessionId, hasKey) {
433
+ const parts = [];
434
+ const keyIcon = hasKey ? `${GREEN}${Markers.circleFill}${RESET}` : `${RED}${Markers.circle}${RESET}`;
435
+ parts.push(`${SAPPHIRE}${Markers.diamond}${RESET} ${BLUE}${provider}${RESET}`);
436
+ parts.push(`${OVERLAY1}\u25C7${RESET} ${model}`);
437
+ parts.push(`${OVERLAY1}\u25C7${RESET} ${messageCount} msg`);
438
+ if (sessionId) {
439
+ parts.push(`${OVERLAY1}\u25C7${RESET} ${dim(sessionId.substring(0, 8))}`);
440
+ }
441
+ parts.push(keyIcon);
442
+ console.log(` ${parts.join(" ")}`);
443
+ }
444
+ /**
445
+ * Print compact status footer — single line, always visible.
446
+ * Designed to sit right above the prompt without being eaten by autocomplete.
447
+ * Uses a subtle inverted (reverse) style to stand out.
448
+ */
449
+ export function printStatusFooter(provider, model, hasKey, messageCount, sessionId) {
450
+ const t = `${TEXT}`;
451
+ const d = `${DIM}`;
452
+ const o0 = `${OVERLAY0}`;
453
+ const o1 = `${OVERLAY1}`;
454
+ const r = `${RESET}`;
455
+ const keyIcon = hasKey
456
+ ? `${GREEN}${Markers.circleFill}${r}`
457
+ : `${RED}${Markers.circle}${r}`;
458
+ const sid = sessionId
459
+ ? ` ${o0}\u00B7${r} ${o1}${sessionId.substring(0, 6)}${r}`
460
+ : "";
461
+ // Left section: provider · model · Nmsgs 🔑 · sess123
462
+ const left = `${o0}\u2502${r} ${SAPPHIRE}${Markers.diamond}${r} ${BLUE}${provider}${r} ${o1}\u00B7${r} ${model} ${o1}\u00B7${r} ${messageCount}msgs ${keyIcon}${sid}`;
463
+ // Right section: /help · exit:Ctrl+C
464
+ const right = `${d}${o0}\u2502${r}${d} ${o0}/help${r}${d} \u00B7 ${o0}exit${r}${d}: Ctrl+C ${o0}\u2502${r}`;
465
+ // Print as a single line with visual separator
466
+ const line = `${o0}\u2500${r}${left} ${right}`;
467
+ console.log(` ${line}`);
468
+ }
469
+ /**
470
+ * Get prompt label
471
+ */
472
+ export function getPromptLabel(_sessionId) {
473
+ return `${GREEN}${Markers.arrowRight}${RESET} `;
474
+ }
475
+ /**
476
+ * Clear screen
477
+ */
478
+ export function clearScreen() {
479
+ console.clear();
480
+ }
481
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "vegas-chat",
3
+ "version": "2.0.1",
4
+ "description": "AI CLI Agent — REPL with tools, multi-LLM support, auto-fix loop, cyberpunk TUI",
5
+ "keywords": [
6
+ "ai",
7
+ "cli",
8
+ "agent",
9
+ "llm",
10
+ "repl",
11
+ "chat",
12
+ "terminal",
13
+ "tui",
14
+ "cyberpunk"
15
+ ],
16
+ "homepage": "https://github.com/web-kamikaze/vegas-chat#readme",
17
+ "bugs": {
18
+ "url": "https://github.com/web-kamikaze/vegas-chat/issues"
19
+ },
20
+ "license": "MIT",
21
+ "author": "web-kamikaze",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/web-kamikaze/vegas-chat.git"
25
+ },
26
+ "bin": {
27
+ "vegas": "./dist/index.js"
28
+ },
29
+ "type": "module",
30
+ "scripts": {
31
+ "build": "tsc",
32
+ "start": "node dist/index.js",
33
+ "dev": "tsx src/index.ts",
34
+ "prepublishOnly": "npm run build",
35
+ "preinstall": "node -e \"process.exit(process.version.slice(1).split('.')[0] < 18 ? 1 : 0)\" || echo \"vegas requires Node.js >= 18\""
36
+ },
37
+ "engines": {
38
+ "node": ">=18.0.0"
39
+ },
40
+ "files": [
41
+ "dist/",
42
+ "README.md",
43
+ "LICENSE"
44
+ ],
45
+ "devDependencies": {
46
+ "@types/node": "^20.0.0",
47
+ "typescript": "^5.4.0"
48
+ },
49
+ "dependencies": {
50
+ "better-sqlite3": "^12.11.1"
51
+ }
52
+ }