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,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Engine - Core AI interaction module
|
|
3
|
+
* Supports multiple providers: MiniMax, SiliconFlow, OpenAI, Anthropic
|
|
4
|
+
*
|
|
5
|
+
* Implements S01: Agent Loop pattern with async generator for streaming
|
|
6
|
+
* Core pattern: while(true) { response → execute tools → append results → repeat }
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
export class AIEngine {
|
|
10
|
+
config;
|
|
11
|
+
tools = new Map();
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Register tools for function calling
|
|
17
|
+
*/
|
|
18
|
+
registerTool(tool) {
|
|
19
|
+
this.tools.set(tool.name, tool);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Unregister a tool
|
|
23
|
+
*/
|
|
24
|
+
unregisterTool(name) {
|
|
25
|
+
this.tools.delete(name);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get registered tools for API (S02: uses ToolRegistry if available)
|
|
29
|
+
*/
|
|
30
|
+
getToolsForAPI() {
|
|
31
|
+
// If registry is injected, use its getToolsForAPI
|
|
32
|
+
if (this.registry) {
|
|
33
|
+
return this.registry.getToolsForAPI();
|
|
34
|
+
}
|
|
35
|
+
// Fallback: build from tools map
|
|
36
|
+
return Array.from(this.tools.values()).map(tool => ({
|
|
37
|
+
type: 'function',
|
|
38
|
+
function: {
|
|
39
|
+
name: tool.name,
|
|
40
|
+
description: tool.description,
|
|
41
|
+
parameters: {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: tool.parameters.reduce((acc, p) => {
|
|
44
|
+
acc[p.name] = { type: p.type, description: p.description };
|
|
45
|
+
return acc;
|
|
46
|
+
}, {}),
|
|
47
|
+
required: tool.parameters.filter(p => p.required).map(p => p.name)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
// S02: Inject registry for enhanced tool management
|
|
53
|
+
setRegistry(registry) {
|
|
54
|
+
this.registry = registry;
|
|
55
|
+
}
|
|
56
|
+
registry;
|
|
57
|
+
// S08: Hook manager
|
|
58
|
+
setHooks(hooks) {
|
|
59
|
+
this.hooks = hooks;
|
|
60
|
+
}
|
|
61
|
+
hooks = null;
|
|
62
|
+
// ==================== S01: Async Generator Agent Loop ====================
|
|
63
|
+
async *chatStream(messages, maxIterations = 10) {
|
|
64
|
+
let currentMessages = [...messages];
|
|
65
|
+
let iterations = 0;
|
|
66
|
+
while (iterations < maxIterations) {
|
|
67
|
+
iterations++;
|
|
68
|
+
// S08 Hook: beforeAgentLoop
|
|
69
|
+
if (this.hooks) {
|
|
70
|
+
await this.hooks.emit('beforeAgentLoop', { messages: currentMessages, iteration: iterations });
|
|
71
|
+
}
|
|
72
|
+
let fullResponse = '';
|
|
73
|
+
for await (const chunk of this.streamRequest(currentMessages)) {
|
|
74
|
+
fullResponse += chunk;
|
|
75
|
+
yield chunk;
|
|
76
|
+
}
|
|
77
|
+
const response = this.parseResponse(fullResponse);
|
|
78
|
+
if (response.tool_calls && response.tool_calls.length > 0) {
|
|
79
|
+
currentMessages.push({
|
|
80
|
+
role: 'assistant',
|
|
81
|
+
content: response.content,
|
|
82
|
+
tool_calls: response.tool_calls
|
|
83
|
+
});
|
|
84
|
+
// Execute each tool
|
|
85
|
+
for (const toolCall of response.tool_calls) {
|
|
86
|
+
// S08 Hook: beforeToolCall
|
|
87
|
+
if (this.hooks) {
|
|
88
|
+
await this.hooks.emit('beforeToolCall', {
|
|
89
|
+
toolName: toolCall.function.name,
|
|
90
|
+
toolParams: JSON.parse(toolCall.function.arguments || '{}'),
|
|
91
|
+
toolCallId: toolCall.id
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const result = await this.executeToolCall(toolCall);
|
|
95
|
+
// S08 Hook: afterToolCall
|
|
96
|
+
if (this.hooks) {
|
|
97
|
+
await this.hooks.emit('afterToolCall', {
|
|
98
|
+
toolName: toolCall.function.name,
|
|
99
|
+
toolParams: JSON.parse(toolCall.function.arguments || '{}'),
|
|
100
|
+
toolResult: result,
|
|
101
|
+
toolCallId: toolCall.id
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const toolResultMsg = {
|
|
105
|
+
role: 'tool',
|
|
106
|
+
content: result.output || result.error || '',
|
|
107
|
+
tool_call_id: toolCall.id,
|
|
108
|
+
name: toolCall.function.name
|
|
109
|
+
};
|
|
110
|
+
currentMessages.push(toolResultMsg);
|
|
111
|
+
yield `\n${chalk.gray(`[tool: ${toolCall.function.name}]`)}`;
|
|
112
|
+
}
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// No tool calls — exit loop
|
|
116
|
+
if (response.content) {
|
|
117
|
+
currentMessages.push({
|
|
118
|
+
role: 'assistant',
|
|
119
|
+
content: response.content
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// S08 Hook: afterAgentLoop
|
|
123
|
+
if (this.hooks) {
|
|
124
|
+
await this.hooks.emit('afterAgentLoop', { messages: currentMessages, iteration: iterations });
|
|
125
|
+
}
|
|
126
|
+
return response;
|
|
127
|
+
}
|
|
128
|
+
// Max iterations reached
|
|
129
|
+
return {
|
|
130
|
+
content: '[Agent loop exceeded maximum iterations]',
|
|
131
|
+
role: 'assistant'
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* S01 Core: Stream request — yields chunks as they arrive
|
|
136
|
+
* Uses async generator for backpressure control and lazy evaluation
|
|
137
|
+
*/
|
|
138
|
+
async *streamRequest(messages) {
|
|
139
|
+
const apiKey = this.config.apiKey || this.getApiKey();
|
|
140
|
+
if (!apiKey) {
|
|
141
|
+
// Mock streaming for demo
|
|
142
|
+
const mock = this.getMockResponse(messages);
|
|
143
|
+
for (const char of mock) {
|
|
144
|
+
await new Promise(r => setTimeout(r, 10));
|
|
145
|
+
yield char;
|
|
146
|
+
}
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const isAnthropicFormat = this.config.provider === 'anthropic' || this.config.provider === 'minimax';
|
|
150
|
+
const isGeminiFormat = this.config.provider === 'gemini';
|
|
151
|
+
let url;
|
|
152
|
+
let headers = {};
|
|
153
|
+
let body;
|
|
154
|
+
if (isGeminiFormat) {
|
|
155
|
+
url = `${this.config.baseUrl}/models/${this.config.model}:generateContent`;
|
|
156
|
+
headers = { 'Content-Type': 'application/json' };
|
|
157
|
+
body = this.buildGeminiRequest(messages);
|
|
158
|
+
}
|
|
159
|
+
else if (isAnthropicFormat) {
|
|
160
|
+
url = `${this.config.baseUrl}/messages-stream`;
|
|
161
|
+
headers = {
|
|
162
|
+
'Content-Type': 'application/json',
|
|
163
|
+
'x-api-key': apiKey,
|
|
164
|
+
'anthropic-version': '2023-06-01',
|
|
165
|
+
'anthropic-dangerous-direct-browser-access': 'true'
|
|
166
|
+
};
|
|
167
|
+
body = this.buildAnthropicRequest(messages, true);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
url = `${this.config.baseUrl}/chat/completions`;
|
|
171
|
+
headers = {
|
|
172
|
+
'Content-Type': 'application/json',
|
|
173
|
+
'Authorization': `Bearer ${apiKey}`
|
|
174
|
+
};
|
|
175
|
+
body = this.buildOpenAIRequest(messages, true);
|
|
176
|
+
}
|
|
177
|
+
const response = await fetch(url, {
|
|
178
|
+
method: 'POST',
|
|
179
|
+
headers,
|
|
180
|
+
body: JSON.stringify(body)
|
|
181
|
+
});
|
|
182
|
+
if (!response.ok || !response.body) {
|
|
183
|
+
yield `\n${chalk.red(`[API Error: ${response.status}]`)}`;
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const decoder = new TextDecoder();
|
|
187
|
+
const reader = response.body.getReader();
|
|
188
|
+
try {
|
|
189
|
+
while (true) {
|
|
190
|
+
const { done, value } = await reader.read();
|
|
191
|
+
if (done)
|
|
192
|
+
break;
|
|
193
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
194
|
+
const text = this.extractChunkText(chunk, isAnthropicFormat, isGeminiFormat);
|
|
195
|
+
if (text) {
|
|
196
|
+
yield text;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
reader.releaseLock();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Extract text from streaming chunk based on provider format
|
|
206
|
+
*/
|
|
207
|
+
extractChunkText(chunk, isAnthropic, isGemini) {
|
|
208
|
+
if (isAnthropic) {
|
|
209
|
+
// Anthropic streaming format: data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"..."}}
|
|
210
|
+
const match = chunk.match(/"type"\s*:\s*"text_delta"\s*,\s*"text"\s*:\s*"([^"]*)"/);
|
|
211
|
+
return match ? match[1] : '';
|
|
212
|
+
}
|
|
213
|
+
else if (isGemini) {
|
|
214
|
+
// Gemini format
|
|
215
|
+
const match = chunk.match(/"text"\s*:\s*"([^"]*)"/);
|
|
216
|
+
return match ? match[1] : '';
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// OpenAI SSE format: data: {"choices":[{"delta":{"content":"..."}}]}
|
|
220
|
+
const lines = chunk.split('\n');
|
|
221
|
+
for (const line of lines) {
|
|
222
|
+
if (line.startsWith('data: ') && line !== 'data: [DONE]') {
|
|
223
|
+
try {
|
|
224
|
+
const data = JSON.parse(line.slice(6));
|
|
225
|
+
const content = data.choices?.[0]?.delta?.content;
|
|
226
|
+
if (content)
|
|
227
|
+
return content;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// Skip invalid JSON
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Parse full response text into structured AIResponse
|
|
239
|
+
*/
|
|
240
|
+
parseResponse(fullText) {
|
|
241
|
+
// For now return content as-is; tool call parsing happens via content patterns
|
|
242
|
+
return {
|
|
243
|
+
content: fullText,
|
|
244
|
+
role: 'assistant',
|
|
245
|
+
tool_calls: this.extractToolCalls(fullText)
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Extract tool calls from response content
|
|
250
|
+
*/
|
|
251
|
+
extractToolCalls(content) {
|
|
252
|
+
// Simple pattern: look for tool_call blocks in response
|
|
253
|
+
// In real implementation this would be parsed from structured response
|
|
254
|
+
// For streaming, we check if content indicates a tool call
|
|
255
|
+
if (!content.includes('tool_use'))
|
|
256
|
+
return undefined;
|
|
257
|
+
return undefined; // Placeholder — actual implementation depends on provider
|
|
258
|
+
}
|
|
259
|
+
// ==================== Legacy chat() — delegates to chatStream ====================
|
|
260
|
+
/**
|
|
261
|
+
* Original non-streaming chat — now implemented via chatStream
|
|
262
|
+
*/
|
|
263
|
+
async chat(messages, maxIterations = 5) {
|
|
264
|
+
let fullContent = '';
|
|
265
|
+
for await (const chunk of this.chatStream(messages, maxIterations)) {
|
|
266
|
+
fullContent += chunk;
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
content: fullContent,
|
|
270
|
+
role: 'assistant'
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
// ==================== Tool Execution ====================
|
|
274
|
+
async executeToolCall(toolCall) {
|
|
275
|
+
const { name, arguments: args } = toolCall.function;
|
|
276
|
+
const tool = this.tools.get(name);
|
|
277
|
+
if (!tool) {
|
|
278
|
+
return { error: `Tool "${name}" not found` };
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
const params = JSON.parse(args);
|
|
282
|
+
const result = await tool.execute(params, {
|
|
283
|
+
confirmAction: async (msg) => {
|
|
284
|
+
console.log(chalk.yellow(`\n⚠️ Tool wants to execute: ${msg}`));
|
|
285
|
+
return false; // Default deny in CLI mode
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
return {
|
|
289
|
+
output: result.success ? (result.output || JSON.stringify(result.data)) : undefined,
|
|
290
|
+
error: result.error
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
return { error: `Tool execution failed: ${error.message}` };
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// ==================== Request Builders ====================
|
|
298
|
+
buildOpenAIRequest(messages, stream) {
|
|
299
|
+
const tools = this.getToolsForAPI();
|
|
300
|
+
return {
|
|
301
|
+
model: this.config.model || 'Qwen/Qwen2.5-7B-Instruct',
|
|
302
|
+
messages: messages.map(m => ({
|
|
303
|
+
role: m.role,
|
|
304
|
+
content: m.content,
|
|
305
|
+
name: m.name,
|
|
306
|
+
tool_call_id: m.tool_call_id,
|
|
307
|
+
tool_calls: m.tool_calls
|
|
308
|
+
})),
|
|
309
|
+
temperature: this.config.temperature || 0.7,
|
|
310
|
+
max_tokens: this.config.maxTokens || 4096,
|
|
311
|
+
stream,
|
|
312
|
+
...(tools.length > 0 && { tools })
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
buildAnthropicRequest(messages, stream) {
|
|
316
|
+
const anthropicMessages = messages
|
|
317
|
+
.filter(m => m.role !== 'system')
|
|
318
|
+
.map(m => ({
|
|
319
|
+
role: m.role === 'assistant' ? 'assistant' : 'user',
|
|
320
|
+
content: m.content
|
|
321
|
+
}));
|
|
322
|
+
return {
|
|
323
|
+
model: this.config.model || 'claude-3-haiku-20240307',
|
|
324
|
+
messages: anthropicMessages,
|
|
325
|
+
max_tokens: this.config.maxTokens || 4096,
|
|
326
|
+
temperature: this.config.temperature || 0.7,
|
|
327
|
+
stream
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
buildGeminiRequest(messages) {
|
|
331
|
+
const contents = messages
|
|
332
|
+
.filter(m => m.role !== 'system')
|
|
333
|
+
.map(m => ({
|
|
334
|
+
role: m.role === 'assistant' ? 'model' : 'user',
|
|
335
|
+
parts: [{ text: m.content }]
|
|
336
|
+
}));
|
|
337
|
+
return {
|
|
338
|
+
contents,
|
|
339
|
+
generationConfig: {
|
|
340
|
+
temperature: this.config.temperature || 0.7,
|
|
341
|
+
maxOutputTokens: this.config.maxTokens || 4096
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
getApiKey() {
|
|
346
|
+
const provider = this.config.provider || 'siliconflow';
|
|
347
|
+
const envKeys = {
|
|
348
|
+
siliconflow: ['SILICONFLOW_API_KEY', 'OPENAI_API_KEY'],
|
|
349
|
+
minimax: ['MINIMAX_API_KEY', 'OPENAI_API_KEY'],
|
|
350
|
+
openai: ['OPENAI_API_KEY'],
|
|
351
|
+
anthropic: ['ANTHROPIC_API_KEY'],
|
|
352
|
+
ollama: [],
|
|
353
|
+
gemini: ['GEMINI_API_KEY'],
|
|
354
|
+
kimi: ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],
|
|
355
|
+
deepseek: ['DEEPSEEK_API_KEY']
|
|
356
|
+
};
|
|
357
|
+
for (const key of envKeys[provider] || []) {
|
|
358
|
+
if (process.env[key])
|
|
359
|
+
return process.env[key];
|
|
360
|
+
}
|
|
361
|
+
return '';
|
|
362
|
+
}
|
|
363
|
+
getMockResponse(messages) {
|
|
364
|
+
const lastMessage = messages[messages.length - 1]?.content || '';
|
|
365
|
+
let response = 'Hello! I am Thatgfsj Code.\n\n';
|
|
366
|
+
if (lastMessage.toLowerCase().includes('hello') || lastMessage.toLowerCase().includes('hi')) {
|
|
367
|
+
response = 'Hi there! How can I help you today?';
|
|
368
|
+
}
|
|
369
|
+
else if (lastMessage.toLowerCase().includes('who are you')) {
|
|
370
|
+
response = 'I am Thatgfsj Code, an AI assistant built with Node.js.';
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
response = `I understand you said: "${lastMessage.slice(0, 50)}..."\n\nThis is a streaming demo. Enable an API key for full AI capabilities.`;
|
|
374
|
+
}
|
|
375
|
+
return response;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=ai-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-engine.js","sourceRoot":"","sources":["../../src/core/ai-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S12: CLI & Architecture
|
|
3
|
+
*
|
|
4
|
+
* Main entry point, CLI argument parsing, and module architecture overview.
|
|
5
|
+
*/
|
|
6
|
+
export interface CLIOptions {
|
|
7
|
+
model?: string;
|
|
8
|
+
provider?: string;
|
|
9
|
+
prompt?: string;
|
|
10
|
+
noStream?: boolean;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
hooks?: boolean;
|
|
13
|
+
permissionMode?: 'accept' | 'deny' | 'ask';
|
|
14
|
+
}
|
|
15
|
+
export declare function parseArgs(args: string[]): CLIOptions;
|
|
16
|
+
/**
|
|
17
|
+
* S12: Print architecture overview
|
|
18
|
+
*/
|
|
19
|
+
export declare function printArchitecture(): void;
|
|
20
|
+
export declare function main(argv: string[]): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;CAC5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwCpD;AA4BD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAyBxC;AAID,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCxD"}
|
package/dist/core/cli.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S12: CLI & Architecture
|
|
3
|
+
*
|
|
4
|
+
* Main entry point, CLI argument parsing, and module architecture overview.
|
|
5
|
+
*/
|
|
6
|
+
import { AIEngine } from './ai-engine.js';
|
|
7
|
+
import { ConfigManager } from './config.js';
|
|
8
|
+
import { REPLLoop } from '../repl/loop.js';
|
|
9
|
+
import { ShellTool, FileTool, GitTool } from '../tools/index.js';
|
|
10
|
+
import { auditLogHook, getHookManager } from './hooks.js';
|
|
11
|
+
import { SystemPromptBuilder } from './system-prompt.js';
|
|
12
|
+
export function parseArgs(args) {
|
|
13
|
+
const options = {};
|
|
14
|
+
for (let i = 0; i < args.length; i++) {
|
|
15
|
+
const arg = args[i];
|
|
16
|
+
switch (arg) {
|
|
17
|
+
case '--model':
|
|
18
|
+
case '-m':
|
|
19
|
+
options.model = args[++i];
|
|
20
|
+
break;
|
|
21
|
+
case '--provider':
|
|
22
|
+
case '-p':
|
|
23
|
+
options.provider = args[++i];
|
|
24
|
+
break;
|
|
25
|
+
case '--prompt':
|
|
26
|
+
case '-c':
|
|
27
|
+
options.prompt = args[++i];
|
|
28
|
+
break;
|
|
29
|
+
case '--no-stream':
|
|
30
|
+
options.noStream = true;
|
|
31
|
+
break;
|
|
32
|
+
case '--verbose':
|
|
33
|
+
case '-v':
|
|
34
|
+
options.verbose = true;
|
|
35
|
+
break;
|
|
36
|
+
case '--hooks':
|
|
37
|
+
options.hooks = true;
|
|
38
|
+
break;
|
|
39
|
+
case '--permission':
|
|
40
|
+
options.permissionMode = args[++i] || 'ask';
|
|
41
|
+
break;
|
|
42
|
+
case '--help':
|
|
43
|
+
case '-h':
|
|
44
|
+
printHelp();
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return options;
|
|
49
|
+
}
|
|
50
|
+
function printHelp() {
|
|
51
|
+
console.log(`
|
|
52
|
+
Thatgfsj Code - AI Coding Assistant
|
|
53
|
+
|
|
54
|
+
Usage: thatgfsj [options]
|
|
55
|
+
|
|
56
|
+
Options:
|
|
57
|
+
-m, --model <model> Set AI model
|
|
58
|
+
-p, --provider <provider> Set provider (siliconflow, minimax, openai, etc.)
|
|
59
|
+
-c, --prompt <text> Run single prompt and exit
|
|
60
|
+
--no-stream Disable streaming output
|
|
61
|
+
--hooks Enable built-in hooks (audit log, etc.)
|
|
62
|
+
--permission <mode> Set permission mode (accept, deny, ask)
|
|
63
|
+
-v, --verbose Verbose output
|
|
64
|
+
-h, --help Show this help
|
|
65
|
+
|
|
66
|
+
Examples:
|
|
67
|
+
thatgfsj Start REPL
|
|
68
|
+
thatgfsj -c "Hello" Run single prompt
|
|
69
|
+
thatgfsj --provider minimax --model MiniMax-M2.5 Use specific provider
|
|
70
|
+
thatgfsj --permission accept Accept all tool calls
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
// ==================== Architecture ====================
|
|
74
|
+
/**
|
|
75
|
+
* S12: Print architecture overview
|
|
76
|
+
*/
|
|
77
|
+
export function printArchitecture() {
|
|
78
|
+
console.log(`
|
|
79
|
+
Thatgfsj Code Architecture
|
|
80
|
+
============================
|
|
81
|
+
|
|
82
|
+
Core:
|
|
83
|
+
AIEngine - Async generator agent loop (S01), multi-provider
|
|
84
|
+
ToolRegistry - Tool registration and execution (S02)
|
|
85
|
+
PermissionChecker - 6-stage permission pipeline (S03)
|
|
86
|
+
SystemPromptBuilder - Dynamic prompt construction (S04)
|
|
87
|
+
ContextCompactor - 3-tier context compression (S05)
|
|
88
|
+
SubagentManager - Parallel subagent execution (S06)
|
|
89
|
+
HookManager - Event-driven hooks (S08)
|
|
90
|
+
SkillsLoader - Skills discovery and catalog (S10)
|
|
91
|
+
StateManager - Ephemeral/Persistent/Session state (S11)
|
|
92
|
+
|
|
93
|
+
Tools:
|
|
94
|
+
ShellTool - Shell command execution
|
|
95
|
+
FileTool - File read/write/list/delete
|
|
96
|
+
GitTool - Git operations
|
|
97
|
+
|
|
98
|
+
Entry:
|
|
99
|
+
REPLLoop - Interactive REPL
|
|
100
|
+
CLI - Command-line mode
|
|
101
|
+
`);
|
|
102
|
+
}
|
|
103
|
+
// ==================== Main ====================
|
|
104
|
+
export async function main(argv) {
|
|
105
|
+
const options = parseArgs(argv.slice(2));
|
|
106
|
+
// Single prompt mode
|
|
107
|
+
if (options.prompt) {
|
|
108
|
+
const config = await ConfigManager.load();
|
|
109
|
+
if (options.provider)
|
|
110
|
+
config.provider = options.provider;
|
|
111
|
+
if (options.model)
|
|
112
|
+
config.model = options.model;
|
|
113
|
+
const ai = new AIEngine(config);
|
|
114
|
+
const tools = [new ShellTool(), new FileTool(), new GitTool()];
|
|
115
|
+
for (const tool of tools)
|
|
116
|
+
ai.registerTool(tool);
|
|
117
|
+
if (options.hooks) {
|
|
118
|
+
const hooks = getHookManager();
|
|
119
|
+
hooks.register('afterToolCall', auditLogHook);
|
|
120
|
+
ai.setHooks(hooks);
|
|
121
|
+
}
|
|
122
|
+
const promptBuilder = new SystemPromptBuilder({ tools, permissionMode: options.permissionMode });
|
|
123
|
+
const messages = [
|
|
124
|
+
{ role: 'system', content: promptBuilder.build() },
|
|
125
|
+
{ role: 'user', content: options.prompt }
|
|
126
|
+
];
|
|
127
|
+
if (options.noStream) {
|
|
128
|
+
const response = await ai.chat(messages);
|
|
129
|
+
console.log(response.content);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
for await (const chunk of ai.chatStream(messages)) {
|
|
133
|
+
process.stdout.write(chunk);
|
|
134
|
+
}
|
|
135
|
+
console.log();
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// REPL mode
|
|
140
|
+
const repl = new REPLLoop();
|
|
141
|
+
await repl.start();
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Manager - Handles configuration loading and saving
|
|
3
|
+
* Supports multiple AI providers: MiniMax, SiliconFlow, OpenAI, Anthropic
|
|
4
|
+
*/
|
|
5
|
+
import { Config, AIConfig } from './types.js';
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
private configPath;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Load configuration with environment variable support
|
|
11
|
+
*/
|
|
12
|
+
static load(): Promise<Config>;
|
|
13
|
+
/**
|
|
14
|
+
* Load config from file and merge with environment variables
|
|
15
|
+
*/
|
|
16
|
+
private loadConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve provider and API key from config or environment
|
|
19
|
+
*/
|
|
20
|
+
private resolveProvider;
|
|
21
|
+
/**
|
|
22
|
+
* Get AIConfig for AIEngine
|
|
23
|
+
*/
|
|
24
|
+
static getAIConfig(): Promise<AIConfig>;
|
|
25
|
+
/**
|
|
26
|
+
* Save configuration
|
|
27
|
+
*/
|
|
28
|
+
save(config: Partial<Config>): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Get config path
|
|
31
|
+
*/
|
|
32
|
+
getPath(): string;
|
|
33
|
+
/**
|
|
34
|
+
* List available providers
|
|
35
|
+
*/
|
|
36
|
+
static listProviders(): string;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,MAAM,EAAa,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWzD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;;IAQ3B;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAY7C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;CAK/B"}
|