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.
- package/.patches/0001-fix-repl-replace-readline-with-inquirer-input-for-ke.patch +279 -0
- package/.patches/0002-fix-repl-stream-AI-output-directly-to-stdout-so-term.patch +564 -0
- package/.patches/0003-fix-session-break-the-hallucination-loop-in-assistan.patch +194 -0
- package/.patches/0004-chore-release-bump-version-to-0.2.1.patch +24 -0
- package/LICENSE +21 -0
- package/README.md +100 -0
- package/ROADMAP.md +107 -0
- package/dist/agent/core.d.ts +56 -0
- package/dist/agent/core.d.ts.map +1 -0
- package/dist/agent/core.js +142 -0
- package/dist/agent/core.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/intent.d.ts +36 -0
- package/dist/agent/intent.d.ts.map +1 -0
- package/dist/agent/intent.js +146 -0
- package/dist/agent/intent.js.map +1 -0
- package/dist/agent/streaming.d.ts +50 -0
- package/dist/agent/streaming.d.ts.map +1 -0
- package/dist/agent/streaming.js +110 -0
- package/dist/agent/streaming.js.map +1 -0
- package/dist/core/ai-engine.d.ts +59 -0
- package/dist/core/ai-engine.d.ts.map +1 -0
- package/dist/core/ai-engine.js +378 -0
- package/dist/core/ai-engine.js.map +1 -0
- package/dist/core/cli.d.ts +21 -0
- package/dist/core/cli.d.ts.map +1 -0
- package/dist/core/cli.js +143 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/config.d.ts +38 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +129 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context-compactor.d.ts +54 -0
- package/dist/core/context-compactor.d.ts.map +1 -0
- package/dist/core/context-compactor.js +197 -0
- package/dist/core/context-compactor.js.map +1 -0
- package/dist/core/hooks.d.ts +75 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +146 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/permissions.d.ts +52 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +237 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/session.d.ts +54 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +147 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +175 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/state.d.ts +60 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/state.js +106 -0
- package/dist/core/state.js.map +1 -0
- package/dist/core/subagent.d.ts +68 -0
- package/dist/core/subagent.d.ts.map +1 -0
- package/dist/core/subagent.js +142 -0
- package/dist/core/subagent.js.map +1 -0
- package/dist/core/system-prompt.d.ts +40 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +138 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/tool-registry.d.ts +53 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +138 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/core/types.d.ts +206 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +127 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +481 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +83 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +267 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/repl/index.d.ts +8 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/repl/index.js +8 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/repl/input.d.ts +61 -0
- package/dist/repl/input.d.ts.map +1 -0
- package/dist/repl/input.js +127 -0
- package/dist/repl/input.js.map +1 -0
- package/dist/repl/loop.d.ts +53 -0
- package/dist/repl/loop.d.ts.map +1 -0
- package/dist/repl/loop.js +241 -0
- package/dist/repl/loop.js.map +1 -0
- package/dist/repl/output.d.ts +105 -0
- package/dist/repl/output.d.ts.map +1 -0
- package/dist/repl/output.js +197 -0
- package/dist/repl/output.js.map +1 -0
- package/dist/repl/welcome.d.ts +68 -0
- package/dist/repl/welcome.d.ts.map +1 -0
- package/dist/repl/welcome.js +249 -0
- package/dist/repl/welcome.js.map +1 -0
- package/dist/tools/file.d.ts +46 -0
- package/dist/tools/file.d.ts.map +1 -0
- package/dist/tools/file.js +100 -0
- package/dist/tools/file.js.map +1 -0
- package/dist/tools/git.d.ts +52 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +112 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/index.d.ts +22 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +43 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search.d.ts +36 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +223 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/shell.d.ts +57 -0
- package/dist/tools/shell.d.ts.map +1 -0
- package/dist/tools/shell.js +153 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/utils/diff-preview.d.ts +42 -0
- package/dist/utils/diff-preview.d.ts.map +1 -0
- package/dist/utils/diff-preview.js +174 -0
- package/dist/utils/diff-preview.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/memory.d.ts +81 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +186 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/project-context.d.ts +62 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +197 -0
- package/dist/utils/project-context.js.map +1 -0
- package/docs/API_KEY_GUIDE.md +236 -0
- package/docs/FAQ.md +182 -0
- package/install.bat +63 -0
- package/install.ps1 +238 -0
- package/install.sh +113 -0
- package/package.json +36 -0
- package/src/agent/core.ts +179 -0
- package/src/agent/index.ts +8 -0
- package/src/agent/intent.ts +181 -0
- package/src/agent/streaming.ts +132 -0
- package/src/core/ai-engine.ts +437 -0
- package/src/core/cli.ts +171 -0
- package/src/core/config.ts +147 -0
- package/src/core/context-compactor.ts +245 -0
- package/src/core/hooks.ts +196 -0
- package/src/core/permissions.ts +308 -0
- package/src/core/session.ts +165 -0
- package/src/core/skills.ts +208 -0
- package/src/core/state.ts +120 -0
- package/src/core/subagent.ts +195 -0
- package/src/core/system-prompt.ts +163 -0
- package/src/core/tool-registry.ts +157 -0
- package/src/core/types.ts +280 -0
- package/src/index.ts +544 -0
- package/src/mcp/client.ts +330 -0
- package/src/repl/index.ts +8 -0
- package/src/repl/input.ts +139 -0
- package/src/repl/loop.ts +280 -0
- package/src/repl/output.ts +222 -0
- package/src/repl/welcome.ts +296 -0
- package/src/tools/file.ts +117 -0
- package/src/tools/git.ts +132 -0
- package/src/tools/index.ts +48 -0
- package/src/tools/search.ts +263 -0
- package/src/tools/shell.ts +181 -0
- package/src/utils/diff-preview.ts +202 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/memory.ts +223 -0
- package/src/utils/project-context.ts +207 -0
- 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"}
|