thatgfsj-code 0.2.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 (179) hide show
  1. package/.patches/0001-fix-repl-replace-readline-with-inquirer-input-for-ke.patch +279 -0
  2. package/.patches/0002-fix-repl-stream-AI-output-directly-to-stdout-so-term.patch +564 -0
  3. package/.patches/0003-fix-session-break-the-hallucination-loop-in-assistan.patch +194 -0
  4. package/.patches/0004-chore-release-bump-version-to-0.2.1.patch +24 -0
  5. package/LICENSE +21 -0
  6. package/README.md +100 -0
  7. package/ROADMAP.md +107 -0
  8. package/dist/agent/core.d.ts +56 -0
  9. package/dist/agent/core.d.ts.map +1 -0
  10. package/dist/agent/core.js +142 -0
  11. package/dist/agent/core.js.map +1 -0
  12. package/dist/agent/index.d.ts +8 -0
  13. package/dist/agent/index.d.ts.map +1 -0
  14. package/dist/agent/index.js +8 -0
  15. package/dist/agent/index.js.map +1 -0
  16. package/dist/agent/intent.d.ts +36 -0
  17. package/dist/agent/intent.d.ts.map +1 -0
  18. package/dist/agent/intent.js +146 -0
  19. package/dist/agent/intent.js.map +1 -0
  20. package/dist/agent/streaming.d.ts +50 -0
  21. package/dist/agent/streaming.d.ts.map +1 -0
  22. package/dist/agent/streaming.js +110 -0
  23. package/dist/agent/streaming.js.map +1 -0
  24. package/dist/core/ai-engine.d.ts +59 -0
  25. package/dist/core/ai-engine.d.ts.map +1 -0
  26. package/dist/core/ai-engine.js +378 -0
  27. package/dist/core/ai-engine.js.map +1 -0
  28. package/dist/core/cli.d.ts +21 -0
  29. package/dist/core/cli.d.ts.map +1 -0
  30. package/dist/core/cli.js +143 -0
  31. package/dist/core/cli.js.map +1 -0
  32. package/dist/core/config.d.ts +38 -0
  33. package/dist/core/config.d.ts.map +1 -0
  34. package/dist/core/config.js +129 -0
  35. package/dist/core/config.js.map +1 -0
  36. package/dist/core/context-compactor.d.ts +54 -0
  37. package/dist/core/context-compactor.d.ts.map +1 -0
  38. package/dist/core/context-compactor.js +197 -0
  39. package/dist/core/context-compactor.js.map +1 -0
  40. package/dist/core/hooks.d.ts +75 -0
  41. package/dist/core/hooks.d.ts.map +1 -0
  42. package/dist/core/hooks.js +146 -0
  43. package/dist/core/hooks.js.map +1 -0
  44. package/dist/core/permissions.d.ts +52 -0
  45. package/dist/core/permissions.d.ts.map +1 -0
  46. package/dist/core/permissions.js +237 -0
  47. package/dist/core/permissions.js.map +1 -0
  48. package/dist/core/session.d.ts +54 -0
  49. package/dist/core/session.d.ts.map +1 -0
  50. package/dist/core/session.js +147 -0
  51. package/dist/core/session.js.map +1 -0
  52. package/dist/core/skills.d.ts +60 -0
  53. package/dist/core/skills.d.ts.map +1 -0
  54. package/dist/core/skills.js +175 -0
  55. package/dist/core/skills.js.map +1 -0
  56. package/dist/core/state.d.ts +60 -0
  57. package/dist/core/state.d.ts.map +1 -0
  58. package/dist/core/state.js +106 -0
  59. package/dist/core/state.js.map +1 -0
  60. package/dist/core/subagent.d.ts +68 -0
  61. package/dist/core/subagent.d.ts.map +1 -0
  62. package/dist/core/subagent.js +142 -0
  63. package/dist/core/subagent.js.map +1 -0
  64. package/dist/core/system-prompt.d.ts +40 -0
  65. package/dist/core/system-prompt.d.ts.map +1 -0
  66. package/dist/core/system-prompt.js +138 -0
  67. package/dist/core/system-prompt.js.map +1 -0
  68. package/dist/core/tool-registry.d.ts +53 -0
  69. package/dist/core/tool-registry.d.ts.map +1 -0
  70. package/dist/core/tool-registry.js +138 -0
  71. package/dist/core/tool-registry.js.map +1 -0
  72. package/dist/core/types.d.ts +206 -0
  73. package/dist/core/types.d.ts.map +1 -0
  74. package/dist/core/types.js +127 -0
  75. package/dist/core/types.js.map +1 -0
  76. package/dist/index.d.ts +7 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +481 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/mcp/client.d.ts +83 -0
  81. package/dist/mcp/client.d.ts.map +1 -0
  82. package/dist/mcp/client.js +267 -0
  83. package/dist/mcp/client.js.map +1 -0
  84. package/dist/repl/index.d.ts +8 -0
  85. package/dist/repl/index.d.ts.map +1 -0
  86. package/dist/repl/index.js +8 -0
  87. package/dist/repl/index.js.map +1 -0
  88. package/dist/repl/input.d.ts +61 -0
  89. package/dist/repl/input.d.ts.map +1 -0
  90. package/dist/repl/input.js +127 -0
  91. package/dist/repl/input.js.map +1 -0
  92. package/dist/repl/loop.d.ts +53 -0
  93. package/dist/repl/loop.d.ts.map +1 -0
  94. package/dist/repl/loop.js +241 -0
  95. package/dist/repl/loop.js.map +1 -0
  96. package/dist/repl/output.d.ts +105 -0
  97. package/dist/repl/output.d.ts.map +1 -0
  98. package/dist/repl/output.js +197 -0
  99. package/dist/repl/output.js.map +1 -0
  100. package/dist/repl/welcome.d.ts +68 -0
  101. package/dist/repl/welcome.d.ts.map +1 -0
  102. package/dist/repl/welcome.js +249 -0
  103. package/dist/repl/welcome.js.map +1 -0
  104. package/dist/tools/file.d.ts +46 -0
  105. package/dist/tools/file.d.ts.map +1 -0
  106. package/dist/tools/file.js +100 -0
  107. package/dist/tools/file.js.map +1 -0
  108. package/dist/tools/git.d.ts +52 -0
  109. package/dist/tools/git.d.ts.map +1 -0
  110. package/dist/tools/git.js +112 -0
  111. package/dist/tools/git.js.map +1 -0
  112. package/dist/tools/index.d.ts +22 -0
  113. package/dist/tools/index.d.ts.map +1 -0
  114. package/dist/tools/index.js +43 -0
  115. package/dist/tools/index.js.map +1 -0
  116. package/dist/tools/search.d.ts +36 -0
  117. package/dist/tools/search.d.ts.map +1 -0
  118. package/dist/tools/search.js +223 -0
  119. package/dist/tools/search.js.map +1 -0
  120. package/dist/tools/shell.d.ts +57 -0
  121. package/dist/tools/shell.d.ts.map +1 -0
  122. package/dist/tools/shell.js +153 -0
  123. package/dist/tools/shell.js.map +1 -0
  124. package/dist/utils/diff-preview.d.ts +42 -0
  125. package/dist/utils/diff-preview.d.ts.map +1 -0
  126. package/dist/utils/diff-preview.js +174 -0
  127. package/dist/utils/diff-preview.js.map +1 -0
  128. package/dist/utils/index.d.ts +8 -0
  129. package/dist/utils/index.d.ts.map +1 -0
  130. package/dist/utils/index.js +8 -0
  131. package/dist/utils/index.js.map +1 -0
  132. package/dist/utils/memory.d.ts +81 -0
  133. package/dist/utils/memory.d.ts.map +1 -0
  134. package/dist/utils/memory.js +186 -0
  135. package/dist/utils/memory.js.map +1 -0
  136. package/dist/utils/project-context.d.ts +62 -0
  137. package/dist/utils/project-context.d.ts.map +1 -0
  138. package/dist/utils/project-context.js +197 -0
  139. package/dist/utils/project-context.js.map +1 -0
  140. package/docs/API_KEY_GUIDE.md +236 -0
  141. package/docs/FAQ.md +182 -0
  142. package/install.bat +63 -0
  143. package/install.ps1 +238 -0
  144. package/install.sh +113 -0
  145. package/package.json +36 -0
  146. package/src/agent/core.ts +179 -0
  147. package/src/agent/index.ts +8 -0
  148. package/src/agent/intent.ts +181 -0
  149. package/src/agent/streaming.ts +132 -0
  150. package/src/core/ai-engine.ts +437 -0
  151. package/src/core/cli.ts +171 -0
  152. package/src/core/config.ts +147 -0
  153. package/src/core/context-compactor.ts +245 -0
  154. package/src/core/hooks.ts +196 -0
  155. package/src/core/permissions.ts +308 -0
  156. package/src/core/session.ts +165 -0
  157. package/src/core/skills.ts +208 -0
  158. package/src/core/state.ts +120 -0
  159. package/src/core/subagent.ts +195 -0
  160. package/src/core/system-prompt.ts +163 -0
  161. package/src/core/tool-registry.ts +157 -0
  162. package/src/core/types.ts +280 -0
  163. package/src/index.ts +544 -0
  164. package/src/mcp/client.ts +330 -0
  165. package/src/repl/index.ts +8 -0
  166. package/src/repl/input.ts +139 -0
  167. package/src/repl/loop.ts +280 -0
  168. package/src/repl/output.ts +222 -0
  169. package/src/repl/welcome.ts +296 -0
  170. package/src/tools/file.ts +117 -0
  171. package/src/tools/git.ts +132 -0
  172. package/src/tools/index.ts +48 -0
  173. package/src/tools/search.ts +263 -0
  174. package/src/tools/shell.ts +181 -0
  175. package/src/utils/diff-preview.ts +202 -0
  176. package/src/utils/index.ts +8 -0
  177. package/src/utils/memory.ts +223 -0
  178. package/src/utils/project-context.ts +207 -0
  179. package/tsconfig.json +19 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * REPL Loop
3
+ * Main interactive loop with streaming support
4
+ *
5
+ * S07-fix:
6
+ * - ่พ“ๅ…ฅ็ซฏๆข็”จ REPLInput (ๅŸบไบŽ @inquirer/input),ๆ”ฏๆŒๆ–นๅ‘้”ฎ/ๅฐ้”ฎ็›˜
7
+ * - ๆตๅผ่พ“ๅ‡บไฟ็•™ๅฎŒๆ•ดๅ†…ๅฎน(็”จๆˆทๅฏๆปšๅŠจ็ปˆ็ซฏๆŸฅ็œ‹ๅކๅฒ),ไธ่ทณ้กถไธๅˆทๅฑ
8
+ * - Ctrl+C ่กŒไธบ:ๆœ‰ๆœชๆไบคๅ†…ๅฎน=>ๆธ…็ฉบๅฝ“ๅ‰่พ“ๅ…ฅ;็ฉบ่พ“ๅ…ฅไธคๆฌก=>้€€ๅ‡บ
9
+ */
10
+ import chalk from 'chalk';
11
+ import { REPLInput } from './input.js';
12
+ import { REPLOutput } from './output.js';
13
+ import { AIEngine } from '../core/ai-engine.js';
14
+ import { SessionManager } from '../core/session.js';
15
+ import { ConfigManager } from '../core/config.js';
16
+ import { SystemPromptBuilder } from '../core/system-prompt.js';
17
+ import { getBuiltInTools } from '../tools/index.js';
18
+ export class REPLLoop {
19
+ input;
20
+ output;
21
+ ai = null;
22
+ session = null;
23
+ running = false;
24
+ // Used to abort an in-flight AI stream when the user presses Ctrl+C twice
25
+ streamAbort = null;
26
+ constructor() {
27
+ this.input = new REPLInput();
28
+ this.output = new REPLOutput();
29
+ }
30
+ /**
31
+ * Initialize the REPL
32
+ * S04: Use SystemPromptBuilder for dynamic prompt construction
33
+ */
34
+ async init() {
35
+ const config = await ConfigManager.load();
36
+ this.ai = new AIEngine(config);
37
+ const builtInTools = getBuiltInTools();
38
+ for (const tool of builtInTools) {
39
+ this.ai.registerTool(tool);
40
+ }
41
+ this.session = new SessionManager();
42
+ const promptBuilder = new SystemPromptBuilder({
43
+ cwd: process.cwd(),
44
+ tools: builtInTools,
45
+ permissionMode: 'ask'
46
+ });
47
+ const systemPrompt = promptBuilder.build();
48
+ this.session.addMessage('system', systemPrompt);
49
+ this.running = true;
50
+ // ๅ…จๅฑ€ SIGINT ๅค„็†:็ฌฌไธ€ๆฌกๆŒ‰ไธ‹ abort ๅฝ“ๅ‰ AI stream,็ฌฌไบŒๆฌก้€€ๅ‡บ REPL
51
+ process.on('SIGINT', () => {
52
+ if (this.streamAbort) {
53
+ this.streamAbort.abort();
54
+ this.streamAbort = null;
55
+ this.output.stopSpinner();
56
+ this.output.printWarning('\nโน Generation cancelled (Ctrl+C again to exit)');
57
+ return;
58
+ }
59
+ // ๆฒกๆœ‰ๅœจ็”Ÿๆˆ:ไบค็ป™ REPLInput ๅค„็†(ๅฎƒไผšๆฃ€ๆต‹ๆ˜ฏๅฆ่ฆ้€€ๅ‡บ)
60
+ this.output.printWarning('\n(press Ctrl+C again on an empty prompt to exit)');
61
+ });
62
+ }
63
+ /**
64
+ * Start the REPL loop
65
+ */
66
+ async start() {
67
+ await this.init();
68
+ this.output.clear();
69
+ this.output.printBanner();
70
+ this.output.printInfo('\nType "help" for available commands\n');
71
+ this.output.printDivider();
72
+ while (this.running) {
73
+ let result;
74
+ try {
75
+ result = await this.input.prompt();
76
+ }
77
+ catch (err) {
78
+ this.output.printError(err?.message ?? String(err));
79
+ continue;
80
+ }
81
+ if (result.kind === 'cancelled') {
82
+ if (this.input.shouldExitOnCancel()) {
83
+ this.output.printInfo('\n๐Ÿ‘‹ Goodbye!');
84
+ this.running = false;
85
+ break;
86
+ }
87
+ // ็ปง็ปญ่ฎฉ็”จๆˆท่พ“ๅ…ฅ
88
+ continue;
89
+ }
90
+ // input layer ่‡ชๅŠจ้‡็ฝฎ cancel ่ฎกๆ•ฐ,ๆ— ้œ€ๆ‰‹ๅŠจ่ฐƒ
91
+ const userInput = result.value;
92
+ if (!userInput)
93
+ continue;
94
+ const handled = await this.handleCommand(userInput);
95
+ if (handled)
96
+ continue;
97
+ await this.processInput(userInput);
98
+ }
99
+ // ๆธ…็†ๅ…จๅฑ€็›‘ๅฌ
100
+ process.removeAllListeners('SIGINT');
101
+ }
102
+ /**
103
+ * Handle built-in commands
104
+ */
105
+ async handleCommand(input) {
106
+ const cmd = input.toLowerCase().trim();
107
+ switch (cmd) {
108
+ case 'exit':
109
+ case 'quit':
110
+ case '\\x03':
111
+ this.output.printInfo('\n๐Ÿ‘‹ Goodbye!');
112
+ this.running = false;
113
+ return true;
114
+ case 'clear':
115
+ this.output.clear();
116
+ this.output.printBanner();
117
+ return true;
118
+ case 'context':
119
+ this.showContext();
120
+ return true;
121
+ case 'history':
122
+ this.showHistory();
123
+ return true;
124
+ case 'tools':
125
+ this.showTools();
126
+ return true;
127
+ case 'help':
128
+ this.output.printHelp();
129
+ return true;
130
+ case 'models':
131
+ case 'providers':
132
+ this.showProviders();
133
+ return true;
134
+ default:
135
+ return false;
136
+ }
137
+ }
138
+ /**
139
+ * Process user input with AI (S01: streaming, no prompt reset)
140
+ *
141
+ * ๅ…ณ้”ฎไฟฎๅค:
142
+ * - ไธๅ†่ฐƒ็”จ rl.question,ๆ‰€ไปฅไธไผš reset ็ปˆ็ซฏ
143
+ * - chunk ็›ดๆŽฅ process.stdout.write,ๅฎŒๆ•ดไฟ็•™ๆ‰€ๆœ‰่พ“ๅ‡บ,็”จๆˆทๅฏๆปšๅŠจๆŸฅ็œ‹
144
+ * - spinner ๅœจ็ฌฌไธ€ไธช chunk ๅˆฐ่พพๆ—ถๅœๆญข,็„ถๅŽๆญฃๅธธๆตๅผ
145
+ */
146
+ async processInput(input) {
147
+ if (!this.ai || !this.session) {
148
+ this.output.printError('AI not initialized');
149
+ return;
150
+ }
151
+ this.session.addMessage('user', input);
152
+ // ่ง†่ง‰ๆ็คบ็”จๆˆท:AI ๅผ€ๅง‹ๅทฅไฝœ,ไฝ†ไธ้˜ปๅกž,ๅฏๆปšๅŠจ
153
+ this.output.printInfo(chalk.gray('๐Ÿค– Thinking...\n'));
154
+ let fullResponse = '';
155
+ let firstChunk = true;
156
+ this.streamAbort = new AbortController();
157
+ try {
158
+ const stream = this.ai.chatStream(this.session.getMessages());
159
+ for await (const chunk of stream) {
160
+ if (firstChunk) {
161
+ // ็ฌฌไธ€ไธช chunk ๅˆฐๆฅ,ๆŠŠ "Thinking..." ้‚ฃ่กŒ้€š่ฟ‡ ANSI ๆธ…้™ค
162
+ // ไฝ†ไธ่ƒฝๆธ…ๅ…‰โ€”โ€”ๅชๆŠŠๅ…‰ๆ ‡็งปๅˆฐไธ‹ไธ€่กŒ็š„ๅผ€ๅคดๅณๅฏ,ๅ†…ๅฎน่‡ช็„ถๅ‡บ็Žฐๅœจๅ‰้ข
163
+ firstChunk = false;
164
+ }
165
+ // ๅ…ณ้”ฎ:็›ดๆŽฅ stdout.write,ๅ…่ฎธไปปๆ„้•ฟๅบฆใ€ๅฏๆปšๅŠจ
166
+ process.stdout.write(chunk);
167
+ fullResponse += chunk;
168
+ if (this.streamAbort.signal.aborted)
169
+ break;
170
+ }
171
+ console.log(); // ๆต็ป“ๆŸๆข่กŒ
172
+ }
173
+ catch (error) {
174
+ if (error?.name === 'AbortError' || this.streamAbort.signal.aborted) {
175
+ console.log();
176
+ this.output.printWarning('[cancelled]');
177
+ }
178
+ else {
179
+ this.output.printError(error.message);
180
+ }
181
+ }
182
+ finally {
183
+ this.streamAbort = null;
184
+ }
185
+ const accepted = this.session.addMessage('assistant', fullResponse);
186
+ if (!accepted) {
187
+ this.output.printWarning(chalk.yellow(`โš ๏ธ ไธŠ่ฝฎๅ›žๅคๅŒ…ๅซ "[ๅทฒไธญๆ–ญ]" ็ญ‰ๆฑกๆŸ“ๆ ‡่ฎฐ,ๅทฒ่‡ชๅŠจไธขๅผƒไปฅ้ฟๅ…ๅพช็Žฏใ€‚ๆœฌๆฌกๅ›žๅคไธไผšๅŸบไบŽๅฎƒ็ปง็ปญ;่ฏท้‡่ฏดไฝ ็š„้—ฎ้ข˜ใ€‚\n` +
188
+ `(ๆœฌๆฌกไผš่ฏๅทฒ็ดฏ่ฎก่ฟ‡ๆปค ${this.session.getDroppedCount()} ๆกๆฑกๆŸ“ๆถˆๆฏ)`));
189
+ }
190
+ this.session.truncate(20);
191
+ }
192
+ showContext() {
193
+ const cwd = process.cwd();
194
+ this.output.printHeader('๐Ÿ“ Project Context');
195
+ this.output.printInfo(`Working directory: ${cwd}`);
196
+ }
197
+ showHistory() {
198
+ const items = this.input.getHistory();
199
+ this.output.printHeader('๐Ÿ“œ Command History');
200
+ if (items.length === 0) {
201
+ this.output.printInfo('(no history yet)');
202
+ return;
203
+ }
204
+ items.forEach((h, i) => this.output.printInfo(` ${i + 1}. ${h}`));
205
+ }
206
+ showTools() {
207
+ this.output.printHeader('๐Ÿ”ง Available Tools');
208
+ this.output.printInfo(' file - File operations (read, write, list, delete)');
209
+ this.output.printInfo(' shell - Execute shell commands');
210
+ this.output.printInfo(' git - Git operations (coming soon)');
211
+ }
212
+ showProviders() {
213
+ this.output.printHeader('๐ŸŒ Available Providers');
214
+ this.output.printInfo(' siliconflow - ็ก…ๅŸบๆตๅŠจ (default)');
215
+ this.output.printInfo(' minimax - MiniMax M2.5');
216
+ this.output.printInfo(' openai - OpenAI GPT');
217
+ this.output.printInfo(' anthropic - Anthropic Claude');
218
+ }
219
+ /**
220
+ * Stop the REPL
221
+ */
222
+ stop() {
223
+ this.running = false;
224
+ if (this.streamAbort) {
225
+ this.streamAbort.abort();
226
+ this.streamAbort = null;
227
+ }
228
+ this.output.stopStreaming();
229
+ }
230
+ /**
231
+ * Handle interrupt (Ctrl+C) while streaming
232
+ */
233
+ interrupt() {
234
+ if (this.streamAbort) {
235
+ this.streamAbort.abort();
236
+ this.streamAbort = null;
237
+ }
238
+ this.output.stopStreaming();
239
+ }
240
+ }
241
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/repl/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * REPL Output Handler
3
+ * Handles streaming output, colors, and formatting
4
+ */
5
+ export declare class REPLOutput {
6
+ private spinner;
7
+ private isStreaming;
8
+ readonly colors: {
9
+ user: import("chalk").ChalkInstance;
10
+ assistant: import("chalk").ChalkInstance;
11
+ system: import("chalk").ChalkInstance;
12
+ error: import("chalk").ChalkInstance;
13
+ warning: import("chalk").ChalkInstance;
14
+ info: import("chalk").ChalkInstance;
15
+ code: import("chalk").ChalkInstance;
16
+ success: import("chalk").ChalkInstance;
17
+ tool: import("chalk").ChalkInstance;
18
+ diff: {
19
+ add: import("chalk").ChalkInstance;
20
+ remove: import("chalk").ChalkInstance;
21
+ header: import("chalk").ChalkInstance;
22
+ };
23
+ };
24
+ /**
25
+ * Print user input
26
+ */
27
+ printUser(input: string): void;
28
+ /**
29
+ * Print assistant response
30
+ */
31
+ printAssistant(content: string): void;
32
+ /**
33
+ * Print tool execution
34
+ */
35
+ printTool(name: string, result: string): void;
36
+ /**
37
+ * Print error
38
+ */
39
+ printError(error: string): void;
40
+ /**
41
+ * Print warning
42
+ */
43
+ printWarning(warning: string): void;
44
+ /**
45
+ * Print success
46
+ */
47
+ printSuccess(message: string): void;
48
+ /**
49
+ * Print info
50
+ */
51
+ printInfo(message: string): void;
52
+ /**
53
+ * Print code block
54
+ */
55
+ printCode(code: string, language?: string): void;
56
+ /**
57
+ * Start spinner
58
+ */
59
+ startSpinner(text: string): void;
60
+ /**
61
+ * Update spinner text
62
+ */
63
+ updateSpinner(text: string): void;
64
+ /**
65
+ * Stop spinner with success
66
+ */
67
+ stopSpinnerSuccess(text?: string): void;
68
+ /**
69
+ * Stop spinner with error
70
+ */
71
+ stopSpinnerError(text?: string): void;
72
+ /**
73
+ * Stop spinner
74
+ */
75
+ stopSpinner(): void;
76
+ /**
77
+ * Print divider
78
+ */
79
+ printDivider(char?: string, length?: number): void;
80
+ /**
81
+ * Print header
82
+ */
83
+ printHeader(text: string): void;
84
+ /**
85
+ * Print with typewriter effect (streaming)
86
+ */
87
+ printTypewriter(text: string, delay?: number): Promise<void>;
88
+ /**
89
+ * Stop streaming (for Ctrl+C)
90
+ */
91
+ stopStreaming(): void;
92
+ /**
93
+ * Clear screen
94
+ */
95
+ clear(): void;
96
+ /**
97
+ * Print banner
98
+ */
99
+ printBanner(): void;
100
+ /**
101
+ * Print help
102
+ */
103
+ printHelp(): void;
104
+ }
105
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/repl/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,WAAW,CAAkB;IAGrC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;MAeb;IAEF;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK7C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,IAAI;IAMpD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQhC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMjC;;OAEG;IACH,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOvC;;OAEG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOrC;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,YAAY,CAAC,IAAI,GAAE,MAAY,EAAE,MAAM,GAAE,MAAW,GAAG,IAAI;IAI3D;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/B;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtE;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,WAAW,IAAI,IAAI;IASnB;;OAEG;IACH,SAAS,IAAI,IAAI;CAgBlB"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * REPL Output Handler
3
+ * Handles streaming output, colors, and formatting
4
+ */
5
+ import chalk from 'chalk';
6
+ import ora from 'ora';
7
+ export class REPLOutput {
8
+ spinner = null;
9
+ isStreaming = false;
10
+ // Color schemes
11
+ colors = {
12
+ user: chalk.cyan,
13
+ assistant: chalk.green,
14
+ system: chalk.yellow,
15
+ error: chalk.red,
16
+ warning: chalk.yellow,
17
+ info: chalk.gray,
18
+ code: chalk.bgBlack,
19
+ success: chalk.green,
20
+ tool: chalk.magenta,
21
+ diff: {
22
+ add: chalk.green,
23
+ remove: chalk.red,
24
+ header: chalk.blue
25
+ }
26
+ };
27
+ /**
28
+ * Print user input
29
+ */
30
+ printUser(input) {
31
+ console.log(this.colors.user('\n๐Ÿ‘ค ') + input);
32
+ }
33
+ /**
34
+ * Print assistant response
35
+ */
36
+ printAssistant(content) {
37
+ console.log(this.colors.assistant('\n๐Ÿค– ') + content);
38
+ }
39
+ /**
40
+ * Print tool execution
41
+ */
42
+ printTool(name, result) {
43
+ console.log(this.colors.tool(`\n๐Ÿ”ง Tool: ${name}`));
44
+ console.log(this.colors.info(result));
45
+ }
46
+ /**
47
+ * Print error
48
+ */
49
+ printError(error) {
50
+ console.error(this.colors.error(`\nโŒ Error: ${error}`));
51
+ }
52
+ /**
53
+ * Print warning
54
+ */
55
+ printWarning(warning) {
56
+ console.warn(this.colors.warning(`\nโš ๏ธ ${warning}`));
57
+ }
58
+ /**
59
+ * Print success
60
+ */
61
+ printSuccess(message) {
62
+ console.log(this.colors.success(`\nโœ… ${message}`));
63
+ }
64
+ /**
65
+ * Print info
66
+ */
67
+ printInfo(message) {
68
+ console.log(this.colors.info(message));
69
+ }
70
+ /**
71
+ * Print code block
72
+ */
73
+ printCode(code, language = '') {
74
+ console.log(chalk.bgBlack.gray('```' + language));
75
+ console.log(chalk.bgBlack(code));
76
+ console.log(chalk.bgBlack.gray('```'));
77
+ }
78
+ /**
79
+ * Start spinner
80
+ */
81
+ startSpinner(text) {
82
+ this.spinner = ora({
83
+ text,
84
+ color: 'cyan',
85
+ spinner: 'dots'
86
+ }).start();
87
+ }
88
+ /**
89
+ * Update spinner text
90
+ */
91
+ updateSpinner(text) {
92
+ if (this.spinner) {
93
+ this.spinner.text = text;
94
+ }
95
+ }
96
+ /**
97
+ * Stop spinner with success
98
+ */
99
+ stopSpinnerSuccess(text) {
100
+ if (this.spinner) {
101
+ this.spinner.succeed(text || this.spinner.text);
102
+ this.spinner = null;
103
+ }
104
+ }
105
+ /**
106
+ * Stop spinner with error
107
+ */
108
+ stopSpinnerError(text) {
109
+ if (this.spinner) {
110
+ this.spinner.fail(text || this.spinner.text);
111
+ this.spinner = null;
112
+ }
113
+ }
114
+ /**
115
+ * Stop spinner
116
+ */
117
+ stopSpinner() {
118
+ if (this.spinner) {
119
+ this.spinner.stop();
120
+ this.spinner = null;
121
+ }
122
+ }
123
+ /**
124
+ * Print divider
125
+ */
126
+ printDivider(char = 'โ”€', length = 40) {
127
+ console.log(chalk.gray(char.repeat(length)));
128
+ }
129
+ /**
130
+ * Print header
131
+ */
132
+ printHeader(text) {
133
+ this.printDivider();
134
+ console.log(chalk.cyan(text));
135
+ this.printDivider();
136
+ }
137
+ /**
138
+ * Print with typewriter effect (streaming)
139
+ */
140
+ async printTypewriter(text, delay = 20) {
141
+ this.isStreaming = true;
142
+ process.stdout.write(chalk.green('\n๐Ÿค– '));
143
+ for (let i = 0; i < text.length; i++) {
144
+ if (!this.isStreaming) {
145
+ // User interrupted, print rest immediately
146
+ process.stdout.write(text.slice(i));
147
+ break;
148
+ }
149
+ process.stdout.write(text[i]);
150
+ await new Promise(r => setTimeout(r, delay));
151
+ }
152
+ process.stdout.write('\n');
153
+ }
154
+ /**
155
+ * Stop streaming (for Ctrl+C)
156
+ */
157
+ stopStreaming() {
158
+ this.isStreaming = false;
159
+ }
160
+ /**
161
+ * Clear screen
162
+ */
163
+ clear() {
164
+ console.clear();
165
+ }
166
+ /**
167
+ * Print banner
168
+ */
169
+ printBanner() {
170
+ console.log(chalk.cyan(`
171
+ โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
172
+ โ•‘ ๐Ÿค– Thatgfsj Code v0.2.0 โ•‘
173
+ โ•‘ Claude Code Style REPL โ•‘
174
+ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
175
+ `));
176
+ }
177
+ /**
178
+ * Print help
179
+ */
180
+ printHelp() {
181
+ console.log(`
182
+ ${chalk.cyan('Commands:')}
183
+ ${chalk.gray('exit, Ctrl+C')} - Exit the REPL
184
+ ${chalk.gray('clear')} - Clear screen
185
+ ${chalk.gray('context')} - Show project context
186
+ ${chalk.gray('history')} - Show command history
187
+ ${chalk.gray('tools')} - List available tools
188
+ ${chalk.gray('help')} - Show this help
189
+
190
+ ${chalk.cyan('Tips:')}
191
+ โ€ข Use ${chalk.gray('\\')} at end for multiline input
192
+ โ€ข Use ${chalk.gray('โ†‘/โ†“')} for command history
193
+ โ€ข Use ${chalk.gray('Tab')} for auto-complete
194
+ `);
195
+ }
196
+ }
197
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/repl/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Welcome Screen - Claude Code ้ฃŽๆ ผ
3
+ */
4
+ export interface ModelInfo {
5
+ id: string;
6
+ name: string;
7
+ desc: string;
8
+ }
9
+ export declare class WelcomeScreen {
10
+ static readonly SILICONFLOW_MODELS: ModelInfo[];
11
+ static readonly MINIMAX_MODELS: {
12
+ id: string;
13
+ name: string;
14
+ desc: string;
15
+ }[];
16
+ static readonly OPENAI_MODELS: {
17
+ id: string;
18
+ name: string;
19
+ desc: string;
20
+ }[];
21
+ static readonly ANTHROPIC_MODELS: {
22
+ id: string;
23
+ name: string;
24
+ desc: string;
25
+ }[];
26
+ static readonly GEMINI_MODELS: {
27
+ id: string;
28
+ name: string;
29
+ desc: string;
30
+ }[];
31
+ static readonly KIMI_MODELS: {
32
+ id: string;
33
+ name: string;
34
+ desc: string;
35
+ }[];
36
+ static readonly DEEPSEEK_MODELS: {
37
+ id: string;
38
+ name: string;
39
+ desc: string;
40
+ }[];
41
+ static readonly ERNIE_MODELS: {
42
+ id: string;
43
+ name: string;
44
+ desc: string;
45
+ }[];
46
+ /**
47
+ * Get models for a specific provider
48
+ */
49
+ static getModelsForProvider(provider: string): ModelInfo[];
50
+ /**
51
+ * Check if API key exists (updated for all providers)
52
+ */
53
+ static hasApiKey(): boolean;
54
+ /**
55
+ * ๅฆ‚ๆžœๆฒกๆœ‰ API Key ๅˆ™ๆ˜พ็คบๆฌข่ฟŽ้กต
56
+ */
57
+ static show(): boolean;
58
+ /**
59
+ * Claude Code ้ฃŽๆ ผๆฌข่ฟŽ้กต
60
+ */
61
+ static printClaudeStyle(): void;
62
+ /**
63
+ * ไบคไบ’ๅผ้…็ฝฎๅ‘ๅฏผ - ๅธฆๆจกๅž‹้€‰ๆ‹ฉ (ๆ”ฏๆŒๆ‰€ๆœ‰ Provider)
64
+ */
65
+ static interactiveSetup(): Promise<void>;
66
+ private static question;
67
+ }
68
+ //# sourceMappingURL=welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/repl/welcome.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,aAAa;IAGxB,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAW7C;IAGF,MAAM,CAAC,QAAQ,CAAC,cAAc;;;;QAG5B;IAGF,MAAM,CAAC,QAAQ,CAAC,aAAa;;;;QAI3B;IAGF,MAAM,CAAC,QAAQ,CAAC,gBAAgB;;;;QAI9B;IAGF,MAAM,CAAC,QAAQ,CAAC,aAAa;;;;QAI3B;IAGF,MAAM,CAAC,QAAQ,CAAC,WAAW;;;;QAIzB;IAGF,MAAM,CAAC,QAAQ,CAAC,eAAe;;;;QAG7B;IAGF,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;QAG1B;IAEF;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAuB1D;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IA0B3B;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,OAAO;IAStB;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAmC/B;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsG9C,OAAO,CAAC,MAAM,CAAC,QAAQ;CAOxB"}