thatgfsj-code 0.4.0 → 0.4.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 (47) hide show
  1. package/dist/cmd/index.js +56 -8
  2. package/dist/cmd/index.js.map +1 -1
  3. package/dist/llm/anthropic.d.ts +4 -17
  4. package/dist/llm/anthropic.d.ts.map +1 -1
  5. package/dist/llm/anthropic.js +54 -12
  6. package/dist/llm/anthropic.js.map +1 -1
  7. package/dist/llm/gemini.d.ts +3 -16
  8. package/dist/llm/gemini.d.ts.map +1 -1
  9. package/dist/llm/gemini.js +26 -22
  10. package/dist/llm/gemini.js.map +1 -1
  11. package/dist/llm/index.d.ts +5 -19
  12. package/dist/llm/index.d.ts.map +1 -1
  13. package/dist/llm/index.js +87 -87
  14. package/dist/llm/index.js.map +1 -1
  15. package/dist/llm/openai.d.ts +9 -23
  16. package/dist/llm/openai.d.ts.map +1 -1
  17. package/dist/llm/openai.js +48 -14
  18. package/dist/llm/openai.js.map +1 -1
  19. package/dist/llm/provider.d.ts +11 -16
  20. package/dist/llm/provider.d.ts.map +1 -1
  21. package/dist/tui/input.d.ts +0 -1
  22. package/dist/tui/input.d.ts.map +1 -1
  23. package/dist/tui/input.js +2 -5
  24. package/dist/tui/input.js.map +1 -1
  25. package/dist/tui/output.d.ts +27 -12
  26. package/dist/tui/output.d.ts.map +1 -1
  27. package/dist/tui/output.js +176 -40
  28. package/dist/tui/output.js.map +1 -1
  29. package/dist/tui/repl.d.ts +0 -10
  30. package/dist/tui/repl.d.ts.map +1 -1
  31. package/dist/tui/repl.js +76 -42
  32. package/dist/tui/repl.js.map +1 -1
  33. package/dist/tui/welcome.d.ts +1 -11
  34. package/dist/tui/welcome.d.ts.map +1 -1
  35. package/dist/tui/welcome.js +60 -56
  36. package/dist/tui/welcome.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/cmd/index.ts +49 -8
  39. package/src/llm/anthropic.ts +60 -14
  40. package/src/llm/gemini.ts +31 -24
  41. package/src/llm/index.ts +94 -92
  42. package/src/llm/openai.ts +58 -15
  43. package/src/llm/provider.ts +12 -16
  44. package/src/tui/input.ts +2 -5
  45. package/src/tui/output.ts +193 -40
  46. package/src/tui/repl.ts +82 -43
  47. package/src/tui/welcome.ts +62 -59
@@ -1,70 +1,206 @@
1
1
  /**
2
- * REPL Output Handler
3
- * Migrated from old src/repl/output.ts
2
+ * REPL Output - Beautiful terminal UI
4
3
  */
5
4
  import chalk from 'chalk';
6
5
  import ora from 'ora';
7
6
  export class REPLOutput {
8
7
  spinner = null;
9
- printError(error) {
10
- console.error(chalk.red(`\n❌ Error: ${error}`));
8
+ inAssistantBlock = false;
9
+ currentLineHasContent = false;
10
+ // ── Banner ──────────────────────────────────────────────
11
+ printBanner() {
12
+ console.log();
13
+ console.log(chalk.cyan.bold(' ⚡ Thatgfsj Code') + chalk.gray(' v0.4.1'));
14
+ console.log(chalk.gray(' AI Coding Assistant'));
15
+ console.log(chalk.gray(' ' + '─'.repeat(52)));
16
+ console.log();
17
+ }
18
+ // ── Prompt ──────────────────────────────────────────────
19
+ getPrompt() {
20
+ return chalk.cyan.bold('❯ ');
21
+ }
22
+ // ── User Input ──────────────────────────────────────────
23
+ printUserInput(input) {
24
+ console.log();
25
+ console.log(chalk.gray(' ┌─ ') + chalk.bold('You'));
26
+ for (const line of input.split('\n')) {
27
+ console.log(chalk.gray(' │ ') + line);
28
+ }
29
+ console.log(chalk.gray(' └─'));
11
30
  }
12
- printWarning(warning) {
13
- console.warn(chalk.yellow(`\n⚠️ ${warning}`));
31
+ // ── Assistant Streaming ─────────────────────────────────
32
+ beginAssistant() {
33
+ if (this.inAssistantBlock)
34
+ return;
35
+ this.inAssistantBlock = true;
36
+ this.currentLineHasContent = false;
37
+ console.log();
38
+ process.stdout.write(chalk.cyan(' ┌─ ') + chalk.bold('AI') + '\n' + chalk.cyan(' │ '));
14
39
  }
15
- printSuccess(message) {
16
- console.log(chalk.green(`\n✅ ${message}`));
40
+ writeChunk(chunk) {
41
+ if (!this.inAssistantBlock)
42
+ this.beginAssistant();
43
+ for (const char of chunk) {
44
+ if (char === '\n') {
45
+ process.stdout.write('\n' + chalk.cyan(' │ '));
46
+ this.currentLineHasContent = false;
47
+ }
48
+ else {
49
+ process.stdout.write(char);
50
+ this.currentLineHasContent = true;
51
+ }
52
+ }
17
53
  }
18
- printInfo(message) {
19
- console.log(chalk.gray(message));
54
+ endAssistant() {
55
+ if (!this.inAssistantBlock)
56
+ return;
57
+ if (this.currentLineHasContent) {
58
+ process.stdout.write('\n');
59
+ }
60
+ process.stdout.write(chalk.cyan(' └─') + '\n\n');
61
+ this.inAssistantBlock = false;
62
+ this.currentLineHasContent = false;
63
+ }
64
+ // ── Tool Calls ──────────────────────────────────────────
65
+ printToolCall(name, args) {
66
+ if (this.inAssistantBlock)
67
+ this.endAssistant();
68
+ console.log();
69
+ console.log(chalk.yellow(' ⚙ ') + chalk.bold(name) + chalk.gray(' ─────────────────────────'));
70
+ if (args) {
71
+ try {
72
+ const obj = JSON.parse(args);
73
+ for (const [key, val] of Object.entries(obj)) {
74
+ let display;
75
+ if (typeof val === 'string') {
76
+ display = val.length > 120 ? val.slice(0, 120) + '...' : val;
77
+ }
78
+ else {
79
+ display = JSON.stringify(val);
80
+ if (display.length > 120)
81
+ display = display.slice(0, 120) + '...';
82
+ }
83
+ console.log(chalk.gray(' ' + key + ': ') + chalk.white(display));
84
+ }
85
+ }
86
+ catch {
87
+ const display = args.length > 150 ? args.slice(0, 150) + '...' : args;
88
+ console.log(chalk.gray(' ') + display);
89
+ }
90
+ }
91
+ }
92
+ printToolResult(output, isError = false) {
93
+ if (!output)
94
+ return;
95
+ const lines = output.split('\n');
96
+ const maxLines = 25;
97
+ const display = lines.slice(0, maxLines);
98
+ for (const line of display) {
99
+ if (isError) {
100
+ console.log(chalk.red(' ✖ ') + line);
101
+ }
102
+ else {
103
+ console.log(chalk.gray(' │ ') + line);
104
+ }
105
+ }
106
+ if (lines.length > maxLines) {
107
+ console.log(chalk.gray(' │ ') + chalk.dim(`... +${lines.length - maxLines} more lines`));
108
+ }
20
109
  }
21
- printDivider(char = '─', length = 40) {
22
- console.log(chalk.gray(char.repeat(length)));
110
+ printToolEnd() {
111
+ console.log(chalk.yellow(' ────────────────────────────────────'));
23
112
  }
24
- printHeader(text) {
25
- this.printDivider();
26
- console.log(chalk.cyan(text));
27
- this.printDivider();
113
+ // ── Thinking ────────────────────────────────────────────
114
+ startThinking() {
115
+ this.spinner = ora({
116
+ text: chalk.gray('Thinking'),
117
+ color: 'cyan',
118
+ spinner: 'dots',
119
+ }).start();
28
120
  }
29
- startSpinner(text) {
30
- this.spinner = ora({ text, color: 'cyan', spinner: 'dots' }).start();
121
+ startExecuting(toolName) {
122
+ this.spinner = ora({
123
+ text: chalk.gray(`Executing ${chalk.yellow(toolName)}`),
124
+ color: 'cyan',
125
+ spinner: 'dots',
126
+ }).start();
31
127
  }
32
- stopSpinner() {
128
+ stopThinking() {
33
129
  if (this.spinner) {
34
130
  this.spinner.stop();
35
131
  this.spinner = null;
36
132
  }
37
133
  }
38
- stopSpinnerFail(text) {
134
+ stopThinkingFail(msg) {
39
135
  if (this.spinner) {
40
- this.spinner.fail(text || this.spinner.text);
136
+ this.spinner.fail(chalk.red(msg));
41
137
  this.spinner = null;
42
138
  }
43
139
  }
140
+ // ── Messages ────────────────────────────────────────────
141
+ info(msg) {
142
+ console.log(chalk.gray(' ') + msg);
143
+ }
144
+ success(msg) {
145
+ console.log(chalk.green(' ✅ ') + msg);
146
+ }
147
+ error(msg) {
148
+ console.log();
149
+ console.log(chalk.red(' ┌─ Error'));
150
+ for (const line of msg.split('\n')) {
151
+ console.log(chalk.red(' │ ') + line);
152
+ }
153
+ console.log(chalk.red(' └─'));
154
+ console.log();
155
+ }
156
+ warning(msg) {
157
+ console.log(chalk.yellow(' ⚠ ') + msg);
158
+ }
159
+ dim(msg) {
160
+ console.log(chalk.dim(' ' + msg));
161
+ }
162
+ // ── Layout ──────────────────────────────────────────────
163
+ divider() {
164
+ console.log(chalk.gray(' ' + '─'.repeat(52)));
165
+ }
166
+ spacer() {
167
+ console.log();
168
+ }
44
169
  clear() {
45
170
  console.clear();
46
171
  }
47
- printBanner() {
48
- console.log(chalk.cyan(`
49
- ╔═══════════════════════════════════════╗
50
- ║ 🤖 Thatgfsj Code v0.4.0 ║
51
- ║ AI Coding Assistant ║
52
- ╚═══════════════════════════════════════╝
53
- `));
172
+ // ── Sections ────────────────────────────────────────────
173
+ section(title, items) {
174
+ console.log();
175
+ console.log(chalk.bold(' ' + title));
176
+ this.divider();
177
+ for (const item of items) {
178
+ console.log(' ' + chalk.gray(item.label.padEnd(14)) + chalk.white(item.value));
179
+ }
180
+ console.log();
54
181
  }
182
+ // ── Help ────────────────────────────────────────────────
55
183
  printHelp() {
56
- console.log(`
57
- ${chalk.cyan('Commands:')}
58
- ${chalk.gray('exit, Ctrl+C')} - Exit
59
- ${chalk.gray('clear')} - Clear screen
60
- ${chalk.gray('help')} - Show this help
61
- ${chalk.gray('tools')} - List available tools
62
- ${chalk.gray('model')} - Show current model
63
-
64
- ${chalk.cyan('Tips:')}
65
- • Use ${chalk.gray('↑/↓')} for command history
66
- Use ${chalk.gray('Tab')} for auto-complete
67
- `);
184
+ console.log();
185
+ console.log(chalk.bold(' Commands'));
186
+ this.divider();
187
+ const cmds = [
188
+ ['help', 'Show this help'],
189
+ ['tools', 'List available tools'],
190
+ ['model', 'Show current model info'],
191
+ ['clear', 'Clear screen'],
192
+ ['exit', 'Exit'],
193
+ ];
194
+ for (const [cmd, desc] of cmds) {
195
+ console.log(' ' + chalk.cyan(cmd.padEnd(14)) + chalk.gray(desc));
196
+ }
197
+ console.log();
198
+ console.log(chalk.bold(' Keyboard'));
199
+ this.divider();
200
+ console.log(' ' + chalk.cyan('↑ / ↓'.padEnd(14)) + chalk.gray('Browse command history'));
201
+ console.log(' ' + chalk.cyan('Tab'.padEnd(14)) + chalk.gray('Auto-complete'));
202
+ console.log(' ' + chalk.cyan('Ctrl+C'.padEnd(14)) + chalk.gray('Exit'));
203
+ console.log();
68
204
  }
69
205
  }
70
206
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/tui/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAY,MAAM,KAAK,CAAC;AAE/B,MAAM,OAAO,UAAU;IACb,OAAO,GAAe,IAAI,CAAC;IAEnC,UAAU,CAAC,KAAa;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,eAAe,CAAC,IAAa;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;;;;;KAKtB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,SAAS;QACP,OAAO,CAAC,GAAG,CAAC;EACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;EAErB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;UACX,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;UACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KACtB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/tui/output.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * REPL - Main interactive loop
3
- * Migrated from old src/repl/loop.ts + src/index.ts interactive mode
4
3
  */
5
4
  import { App } from '../app/index.js';
6
5
  export declare class REPL {
@@ -9,17 +8,8 @@ export declare class REPL {
9
8
  private app;
10
9
  private running;
11
10
  constructor(app: App);
12
- /**
13
- * Start the REPL
14
- */
15
11
  start(): Promise<void>;
16
- /**
17
- * Handle built-in commands
18
- */
19
12
  private handleCommand;
20
- /**
21
- * Process user input with AI
22
- */
23
13
  private processInput;
24
14
  }
25
15
  //# sourceMappingURL=repl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGtC,qBAAa,IAAI;IACf,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,GAAG;IAMpB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC5B;;OAEG;YACW,aAAa;IA0C3B;;OAEG;YACW,YAAY;CAsB3B"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGtC,qBAAa,IAAI;IACf,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,GAAG;IAMd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCd,aAAa;YA6Cb,YAAY;CAsE3B"}
package/dist/tui/repl.js CHANGED
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * REPL - Main interactive loop
3
- * Migrated from old src/repl/loop.ts + src/index.ts interactive mode
4
3
  */
5
4
  import chalk from 'chalk';
6
5
  import { REPLInput } from './input.js';
@@ -16,49 +15,41 @@ export class REPL {
16
15
  this.output = new REPLOutput();
17
16
  this.app = app;
18
17
  }
19
- /**
20
- * Start the REPL
21
- */
22
18
  async start() {
23
19
  this.running = true;
24
- // Show banner
25
20
  this.output.clear();
26
21
  this.output.printBanner();
27
- this.output.printInfo('Type "help" for available commands\n');
28
- this.output.printDivider();
29
- // Show project context
30
- console.log(chalk.gray(ProjectContext.getSummary()));
31
- this.output.printDivider();
32
- console.log();
33
- // Main loop
22
+ const cfg = this.app.config.get();
23
+ this.output.section('Session', [
24
+ { label: 'Provider', value: cfg.provider },
25
+ { label: 'Model', value: cfg.model },
26
+ { label: 'Project', value: ProjectContext.detectType() },
27
+ ]);
28
+ this.output.info('Type ' + chalk.cyan('help') + ' for commands');
29
+ this.output.spacer();
34
30
  while (this.running) {
35
31
  try {
36
- const userInput = await this.input.prompt();
32
+ const userInput = await this.input.prompt(this.output.getPrompt());
37
33
  if (!userInput.trim())
38
34
  continue;
39
- // Handle commands
40
35
  const handled = await this.handleCommand(userInput.trim());
41
36
  if (handled)
42
37
  continue;
43
- // Process with AI
44
38
  await this.processInput(userInput.trim());
45
39
  }
46
40
  catch (error) {
47
41
  if (error.message === 'SIGINT')
48
42
  continue;
49
- this.output.printError(error.message);
43
+ this.output.error(error.message);
50
44
  }
51
45
  }
52
46
  }
53
- /**
54
- * Handle built-in commands
55
- */
56
47
  async handleCommand(input) {
57
48
  const cmd = input.toLowerCase();
58
49
  switch (cmd) {
59
50
  case 'exit':
60
51
  case 'quit':
61
- this.output.printInfo('\n👋 Goodbye!');
52
+ this.output.dim('Goodbye! 👋');
62
53
  this.running = false;
63
54
  this.input.close();
64
55
  return true;
@@ -70,44 +61,87 @@ export class REPL {
70
61
  this.output.printHelp();
71
62
  return true;
72
63
  case 'tools':
73
- this.output.printHeader('🔧 Available Tools');
74
- for (const tool of this.app.tools.list()) {
75
- this.output.printInfo(` ${tool.name} - ${tool.description}`);
76
- }
77
- console.log();
64
+ this.output.section('Available Tools', this.app.tools.list().map(t => ({
65
+ label: t.name,
66
+ value: t.description,
67
+ })));
78
68
  return true;
79
- case 'model':
80
- this.output.printHeader('🤖 Current Model');
81
- const cfg = this.app.config.get();
82
- this.output.printInfo(` Provider: ${cfg.provider}`);
83
- this.output.printInfo(` Model: ${cfg.model}`);
84
- this.output.printInfo(` Base URL: ${cfg.baseUrl || 'default'}`);
85
- console.log();
69
+ case 'model': {
70
+ const c = this.app.config.get();
71
+ this.output.section('Current Model', [
72
+ { label: 'Provider', value: c.provider },
73
+ { label: 'Model', value: c.model },
74
+ { label: 'Base URL', value: c.baseUrl || 'default' },
75
+ { label: 'API Key', value: c.apiKey ? '••••' + c.apiKey.slice(-4) : 'not set' },
76
+ ]);
86
77
  return true;
78
+ }
87
79
  default:
88
80
  return false;
89
81
  }
90
82
  }
91
- /**
92
- * Process user input with AI
93
- */
94
83
  async processInput(input) {
95
84
  this.app.session.addMessage('user', input);
96
- this.output.startSpinner('Thinking...');
85
+ this.output.printUserInput(input);
86
+ this.output.startThinking();
97
87
  let fullResponse = '';
88
+ let hasStartedOutput = false;
98
89
  try {
99
90
  const stream = this.app.getAgent().run(this.app.session.getMessages());
100
91
  for await (const chunk of stream) {
101
- this.output.stopSpinner();
102
- process.stdout.write(chunk);
92
+ this.output.stopThinking();
93
+ const parts = chunk.split('\n');
94
+ for (const part of parts) {
95
+ // Tool message: @@TOOL@@{json}
96
+ if (part.startsWith('@@TOOL@@')) {
97
+ try {
98
+ const data = JSON.parse(part.slice(8));
99
+ if (data.action === 'call') {
100
+ if (hasStartedOutput) {
101
+ this.output.endAssistant();
102
+ hasStartedOutput = false;
103
+ }
104
+ this.output.printToolCall(data.name, data.args || '');
105
+ // Show executing state
106
+ this.output.startExecuting(data.name);
107
+ }
108
+ else if (data.action === 'result') {
109
+ this.output.stopThinking();
110
+ this.output.printToolResult(data.output || data.error || '', !!data.error);
111
+ this.output.printToolEnd();
112
+ }
113
+ }
114
+ catch {
115
+ this.output.writeChunk(part + '\n');
116
+ }
117
+ continue;
118
+ }
119
+ // Regular text
120
+ if (part) {
121
+ if (!hasStartedOutput) {
122
+ this.output.beginAssistant();
123
+ hasStartedOutput = true;
124
+ }
125
+ this.output.writeChunk(part + '\n');
126
+ }
127
+ }
103
128
  fullResponse += chunk;
104
129
  }
105
- console.log(); // newline
106
- this.app.session.addMessage('assistant', fullResponse);
107
- this.app.session.truncate();
130
+ if (hasStartedOutput) {
131
+ this.output.endAssistant();
132
+ }
133
+ // Don't save empty responses
134
+ if (fullResponse.trim()) {
135
+ this.app.session.addMessage('assistant', fullResponse);
136
+ this.app.session.truncate();
137
+ }
108
138
  }
109
139
  catch (error) {
110
- this.output.stopSpinnerFail(chalk.red(`Error: ${error.message}`));
140
+ if (hasStartedOutput) {
141
+ this.output.endAssistant();
142
+ }
143
+ this.output.stopThinkingFail(error.message);
144
+ this.output.error(error.message);
111
145
  }
112
146
  }
113
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,9 @@
1
1
  /**
2
- * Welcome / Setup Wizard
3
- * Supports all providers + custom relay stations (中转站)
2
+ * Welcome / Setup Wizard - Clean UI
4
3
  */
5
4
  export declare class WelcomeScreen {
6
- /**
7
- * Show welcome if no API key is configured
8
- */
9
5
  static show(hasApiKey: boolean): void;
10
- /**
11
- * Interactive setup wizard
12
- */
13
6
  static interactiveSetup(): Promise<void>;
14
- /**
15
- * Save config to file
16
- */
17
7
  private static saveConfig;
18
8
  }
19
9
  //# sourceMappingURL=welcome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAarC;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0F9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CA4B1B"}
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,qBAAa,aAAa;IAExB,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;WAkBxB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgG9C,OAAO,CAAC,MAAM,CAAC,UAAU;CA2B1B"}