thatgfsj-code 0.3.0 → 0.3.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/CHANGELOG.md +229 -0
- package/DEVELOPMENT.md +286 -0
- package/README.md +144 -79
- 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 +76 -0
- package/dist/core/ai-engine.d.ts.map +1 -0
- package/dist/core/ai-engine.js +394 -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 +55 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +162 -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/{cmd/index.d.ts.map → index.d.ts.map} +1 -1
- package/dist/index.js +472 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +1 -1
- package/dist/mcp/client.d.ts.map +1 -1
- 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 +69 -0
- package/dist/repl/input.d.ts.map +1 -0
- package/dist/repl/input.js +139 -0
- package/dist/repl/input.js.map +1 -0
- package/dist/repl/loop.d.ts +184 -0
- package/dist/repl/loop.d.ts.map +1 -0
- package/dist/repl/loop.js +932 -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 +199 -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 +254 -0
- package/dist/repl/welcome.js.map +1 -0
- package/dist/tools/file.d.ts +1 -1
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/git.d.ts +1 -1
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/index.d.ts +15 -35
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +31 -80
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/shell.d.ts +11 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +78 -42
- package/dist/tools/shell.js.map +1 -1
- 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 +6 -0
- package/docs/FAQ.md +25 -3
- package/package.json +41 -9
- package/ROADMAP.md +0 -61
- package/dist/app/agent.d.ts +0 -31
- package/dist/app/agent.d.ts.map +0 -1
- package/dist/app/agent.js +0 -106
- package/dist/app/agent.js.map +0 -1
- package/dist/app/index.d.ts +0 -39
- package/dist/app/index.d.ts.map +0 -1
- package/dist/app/index.js +0 -80
- package/dist/app/index.js.map +0 -1
- package/dist/cmd/index.d.ts +0 -12
- package/dist/cmd/index.js +0 -85
- package/dist/cmd/index.js.map +0 -1
- package/dist/config/index.d.ts +0 -39
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -110
- package/dist/config/index.js.map +0 -1
- package/dist/config/providers.d.ts +0 -23
- package/dist/config/providers.d.ts.map +0 -1
- package/dist/config/providers.js +0 -152
- package/dist/config/providers.js.map +0 -1
- package/dist/config/types.d.ts +0 -33
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -5
- package/dist/config/types.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -31
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -71
- package/dist/hooks/index.js.map +0 -1
- package/dist/llm/anthropic.d.ts +0 -17
- package/dist/llm/anthropic.d.ts.map +0 -1
- package/dist/llm/anthropic.js +0 -126
- package/dist/llm/anthropic.js.map +0 -1
- package/dist/llm/gemini.d.ts +0 -16
- package/dist/llm/gemini.d.ts.map +0 -1
- package/dist/llm/gemini.js +0 -107
- package/dist/llm/gemini.js.map +0 -1
- package/dist/llm/index.d.ts +0 -48
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -174
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/openai.d.ts +0 -17
- package/dist/llm/openai.d.ts.map +0 -1
- package/dist/llm/openai.js +0 -113
- package/dist/llm/openai.js.map +0 -1
- package/dist/llm/provider.d.ts +0 -33
- package/dist/llm/provider.d.ts.map +0 -1
- package/dist/llm/provider.js +0 -6
- package/dist/llm/provider.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -27
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -102
- package/dist/prompts/index.js.map +0 -1
- package/dist/session/compactor.d.ts +0 -48
- package/dist/session/compactor.d.ts.map +0 -1
- package/dist/session/compactor.js +0 -77
- package/dist/session/compactor.js.map +0 -1
- package/dist/session/index.d.ts +0 -48
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -69
- package/dist/session/index.js.map +0 -1
- package/dist/session/message.d.ts +0 -26
- package/dist/session/message.d.ts.map +0 -1
- package/dist/session/message.js +0 -34
- package/dist/session/message.js.map +0 -1
- package/dist/tools/types.d.ts +0 -68
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -57
- package/dist/tools/types.js.map +0 -1
- package/dist/tui/index.d.ts +0 -8
- package/dist/tui/index.d.ts.map +0 -1
- package/dist/tui/index.js +0 -8
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/input.d.ts +0 -14
- package/dist/tui/input.d.ts.map +0 -1
- package/dist/tui/input.js +0 -50
- package/dist/tui/input.js.map +0 -1
- package/dist/tui/output.d.ts +0 -20
- package/dist/tui/output.d.ts.map +0 -1
- package/dist/tui/output.js +0 -70
- package/dist/tui/output.js.map +0 -1
- package/dist/tui/repl.d.ts +0 -25
- package/dist/tui/repl.d.ts.map +0 -1
- package/dist/tui/repl.js +0 -114
- package/dist/tui/repl.js.map +0 -1
- package/dist/tui/welcome.d.ts +0 -15
- package/dist/tui/welcome.d.ts.map +0 -1
- package/dist/tui/welcome.js +0 -86
- package/dist/tui/welcome.js.map +0 -1
- package/dist/types.d.ts +0 -38
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/diff.d.ts +0 -22
- package/dist/utils/diff.d.ts.map +0 -1
- package/dist/utils/diff.js +0 -60
- package/dist/utils/diff.js.map +0 -1
- package/dist/utils/project.d.ts +0 -32
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/project.js +0 -89
- package/dist/utils/project.js.map +0 -1
- package/src/app/agent.ts +0 -140
- package/src/app/index.ts +0 -101
- package/src/cmd/index.ts +0 -96
- package/src/config/index.ts +0 -130
- package/src/config/providers.ts +0 -160
- package/src/config/types.ts +0 -46
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -146
- package/src/llm/gemini.ts +0 -127
- package/src/llm/index.ts +0 -209
- package/src/llm/openai.ts +0 -132
- package/src/llm/provider.ts +0 -38
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -123
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -81
- package/src/session/message.ts +0 -42
- package/src/tools/file.ts +0 -117
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -108
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/index.ts +0 -8
- package/src/tui/input.ts +0 -56
- package/src/tui/output.ts +0 -83
- package/src/tui/repl.ts +0 -131
- package/src/tui/welcome.ts +0 -101
- package/src/types.ts +0 -42
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/tsconfig.json +0 -19
package/dist/app/agent.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Loop - Core agent logic with streaming and tool execution
|
|
3
|
-
* Extracted from old src/core/ai-engine.ts
|
|
4
|
-
*
|
|
5
|
-
* The agent loop: while(true) { stream response → check tool calls → execute → repeat }
|
|
6
|
-
*/
|
|
7
|
-
import type { ChatMessage, ChatResponse } from '../types.js';
|
|
8
|
-
import type { HookManager } from '../hooks/index.js';
|
|
9
|
-
import { LLMService } from '../llm/index.js';
|
|
10
|
-
import { ToolRegistry } from '../tools/index.js';
|
|
11
|
-
export interface AgentConfig {
|
|
12
|
-
maxIterations?: number;
|
|
13
|
-
hooks?: HookManager;
|
|
14
|
-
}
|
|
15
|
-
export declare class Agent {
|
|
16
|
-
private llm;
|
|
17
|
-
private registry;
|
|
18
|
-
private hooks?;
|
|
19
|
-
private maxIterations;
|
|
20
|
-
constructor(llm: LLMService, registry: ToolRegistry, config?: AgentConfig);
|
|
21
|
-
/**
|
|
22
|
-
* Run agent loop with streaming output
|
|
23
|
-
* Returns the final response
|
|
24
|
-
*/
|
|
25
|
-
run(messages: ChatMessage[]): AsyncGenerator<string, ChatResponse>;
|
|
26
|
-
/**
|
|
27
|
-
* Non-streaming chat (convenience method)
|
|
28
|
-
*/
|
|
29
|
-
chat(messages: ChatMessage[]): Promise<ChatResponse>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=agent.d.ts.map
|
package/dist/app/agent.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/app/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAE,WAAgB;IAU7E;;;OAGG;IACI,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;IA0FzE;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAO3D"}
|
package/dist/app/agent.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Loop - Core agent logic with streaming and tool execution
|
|
3
|
-
* Extracted from old src/core/ai-engine.ts
|
|
4
|
-
*
|
|
5
|
-
* The agent loop: while(true) { stream response → check tool calls → execute → repeat }
|
|
6
|
-
*/
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
export class Agent {
|
|
9
|
-
llm;
|
|
10
|
-
registry;
|
|
11
|
-
hooks;
|
|
12
|
-
maxIterations;
|
|
13
|
-
constructor(llm, registry, config = {}) {
|
|
14
|
-
this.llm = llm;
|
|
15
|
-
this.registry = registry;
|
|
16
|
-
this.hooks = config.hooks;
|
|
17
|
-
this.maxIterations = config.maxIterations ?? 10;
|
|
18
|
-
// Register tools with LLM service
|
|
19
|
-
this.llm.registerTools(registry.list());
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Run agent loop with streaming output
|
|
23
|
-
* Returns the final response
|
|
24
|
-
*/
|
|
25
|
-
async *run(messages) {
|
|
26
|
-
let currentMessages = [...messages];
|
|
27
|
-
let iterations = 0;
|
|
28
|
-
while (iterations < this.maxIterations) {
|
|
29
|
-
iterations++;
|
|
30
|
-
// Hook: beforeAgentLoop
|
|
31
|
-
if (this.hooks) {
|
|
32
|
-
await this.hooks.emit('beforeAgentLoop', { messages: currentMessages, iteration: iterations });
|
|
33
|
-
}
|
|
34
|
-
// Stream the response
|
|
35
|
-
let fullContent = '';
|
|
36
|
-
for await (const chunk of this.llm.chatStream(currentMessages, { maxIterations: 1 })) {
|
|
37
|
-
fullContent += chunk;
|
|
38
|
-
yield chunk;
|
|
39
|
-
}
|
|
40
|
-
// Get the full response to check for tool calls
|
|
41
|
-
const response = {
|
|
42
|
-
content: fullContent,
|
|
43
|
-
role: 'assistant',
|
|
44
|
-
};
|
|
45
|
-
// Check if the response contains tool calls
|
|
46
|
-
// For now, we rely on the LLM service to handle tool calls internally
|
|
47
|
-
// If the LLM service returned tool_calls, we need to process them
|
|
48
|
-
if (response.tool_calls && response.tool_calls.length > 0) {
|
|
49
|
-
currentMessages.push({
|
|
50
|
-
role: 'assistant',
|
|
51
|
-
content: response.content,
|
|
52
|
-
tool_calls: response.tool_calls,
|
|
53
|
-
});
|
|
54
|
-
for (const toolCall of response.tool_calls) {
|
|
55
|
-
// Hook: beforeToolCall
|
|
56
|
-
if (this.hooks) {
|
|
57
|
-
await this.hooks.emit('beforeToolCall', {
|
|
58
|
-
toolName: toolCall.function.name,
|
|
59
|
-
toolParams: JSON.parse(toolCall.function.arguments || '{}'),
|
|
60
|
-
toolCallId: toolCall.id,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
const result = await this.registry.execute(toolCall.function.name, JSON.parse(toolCall.function.arguments || '{}'));
|
|
64
|
-
// Hook: afterToolCall
|
|
65
|
-
if (this.hooks) {
|
|
66
|
-
await this.hooks.emit('afterToolCall', {
|
|
67
|
-
toolName: toolCall.function.name,
|
|
68
|
-
toolParams: JSON.parse(toolCall.function.arguments || '{}'),
|
|
69
|
-
toolResult: result,
|
|
70
|
-
toolCallId: toolCall.id,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
currentMessages.push({
|
|
74
|
-
role: 'tool',
|
|
75
|
-
content: result.success ? (result.output || JSON.stringify(result.data)) : (result.error || 'Tool failed'),
|
|
76
|
-
tool_call_id: toolCall.id,
|
|
77
|
-
name: toolCall.function.name,
|
|
78
|
-
});
|
|
79
|
-
yield `\n${chalk.gray(`[tool: ${toolCall.function.name}]`)}`;
|
|
80
|
-
}
|
|
81
|
-
continue; // Next iteration
|
|
82
|
-
}
|
|
83
|
-
// No tool calls - done
|
|
84
|
-
if (response.content) {
|
|
85
|
-
currentMessages.push({ role: 'assistant', content: response.content });
|
|
86
|
-
}
|
|
87
|
-
// Hook: afterAgentLoop
|
|
88
|
-
if (this.hooks) {
|
|
89
|
-
await this.hooks.emit('afterAgentLoop', { messages: currentMessages, iteration: iterations });
|
|
90
|
-
}
|
|
91
|
-
return response;
|
|
92
|
-
}
|
|
93
|
-
return { content: '[Agent loop exceeded maximum iterations]', role: 'assistant' };
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Non-streaming chat (convenience method)
|
|
97
|
-
*/
|
|
98
|
-
async chat(messages) {
|
|
99
|
-
let fullContent = '';
|
|
100
|
-
for await (const chunk of this.run(messages)) {
|
|
101
|
-
fullContent += chunk;
|
|
102
|
-
}
|
|
103
|
-
return { content: fullContent, role: 'assistant' };
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=agent.js.map
|
package/dist/app/agent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/app/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/app/index.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* App - Core application singleton
|
|
3
|
-
* Assembles all services: config, LLM, session, tools, hooks, prompts
|
|
4
|
-
* Replaces the scattered initialization in old src/index.ts
|
|
5
|
-
*/
|
|
6
|
-
import { ConfigManager } from '../config/index.js';
|
|
7
|
-
import { LLMService } from '../llm/index.js';
|
|
8
|
-
import { SessionManager } from '../session/index.js';
|
|
9
|
-
import { ToolRegistry } from '../tools/index.js';
|
|
10
|
-
import { HookManager } from '../hooks/index.js';
|
|
11
|
-
import { SystemPromptBuilder } from '../prompts/index.js';
|
|
12
|
-
import { Agent } from './agent.js';
|
|
13
|
-
export declare class App {
|
|
14
|
-
config: ConfigManager;
|
|
15
|
-
llm: LLMService;
|
|
16
|
-
session: SessionManager;
|
|
17
|
-
tools: ToolRegistry;
|
|
18
|
-
hooks: HookManager;
|
|
19
|
-
prompts: SystemPromptBuilder;
|
|
20
|
-
private agent;
|
|
21
|
-
private constructor();
|
|
22
|
-
/**
|
|
23
|
-
* Create and initialize the App
|
|
24
|
-
*/
|
|
25
|
-
static create(): Promise<App>;
|
|
26
|
-
/**
|
|
27
|
-
* Run a single prompt (non-interactive mode)
|
|
28
|
-
*/
|
|
29
|
-
runPrompt(prompt: string): Promise<string>;
|
|
30
|
-
/**
|
|
31
|
-
* Get the agent for streaming control
|
|
32
|
-
*/
|
|
33
|
-
getAgent(): Agent;
|
|
34
|
-
/**
|
|
35
|
-
* Get current config
|
|
36
|
-
*/
|
|
37
|
-
getConfig(): ConfigManager;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/app/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,GAAG;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;IAkBP;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAyBnC;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAchD;;OAEG;IACH,QAAQ,IAAI,KAAK;IAIjB;;OAEG;IACH,SAAS,IAAI,aAAa;CAG3B"}
|
package/dist/app/index.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* App - Core application singleton
|
|
3
|
-
* Assembles all services: config, LLM, session, tools, hooks, prompts
|
|
4
|
-
* Replaces the scattered initialization in old src/index.ts
|
|
5
|
-
*/
|
|
6
|
-
import { ConfigManager } from '../config/index.js';
|
|
7
|
-
import { LLMService } from '../llm/index.js';
|
|
8
|
-
import { SessionManager } from '../session/index.js';
|
|
9
|
-
import { ToolRegistry } from '../tools/index.js';
|
|
10
|
-
import { HookManager } from '../hooks/index.js';
|
|
11
|
-
import { SystemPromptBuilder } from '../prompts/index.js';
|
|
12
|
-
import { Agent } from './agent.js';
|
|
13
|
-
export class App {
|
|
14
|
-
config;
|
|
15
|
-
llm;
|
|
16
|
-
session;
|
|
17
|
-
tools;
|
|
18
|
-
hooks;
|
|
19
|
-
prompts;
|
|
20
|
-
agent;
|
|
21
|
-
constructor(config, llm, session, tools, hooks, prompts, agent) {
|
|
22
|
-
this.config = config;
|
|
23
|
-
this.llm = llm;
|
|
24
|
-
this.session = session;
|
|
25
|
-
this.tools = tools;
|
|
26
|
-
this.hooks = hooks;
|
|
27
|
-
this.prompts = prompts;
|
|
28
|
-
this.agent = agent;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Create and initialize the App
|
|
32
|
-
*/
|
|
33
|
-
static async create() {
|
|
34
|
-
// Load config
|
|
35
|
-
const config = await ConfigManager.load();
|
|
36
|
-
const aiConfig = config.getAIConfig();
|
|
37
|
-
// Create services
|
|
38
|
-
const llm = LLMService.fromConfig(aiConfig);
|
|
39
|
-
const session = new SessionManager();
|
|
40
|
-
const tools = new ToolRegistry();
|
|
41
|
-
const hooks = new HookManager();
|
|
42
|
-
const prompts = new SystemPromptBuilder({
|
|
43
|
-
cwd: process.cwd(),
|
|
44
|
-
tools: tools.list(),
|
|
45
|
-
permissionMode: 'ask',
|
|
46
|
-
});
|
|
47
|
-
// Create agent
|
|
48
|
-
const agent = new Agent(llm, tools, { hooks, maxIterations: 10 });
|
|
49
|
-
// Set up system prompt
|
|
50
|
-
session.addMessage('system', prompts.build());
|
|
51
|
-
return new App(config, llm, session, tools, hooks, prompts, agent);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Run a single prompt (non-interactive mode)
|
|
55
|
-
*/
|
|
56
|
-
async runPrompt(prompt) {
|
|
57
|
-
this.session.addMessage('user', prompt);
|
|
58
|
-
let fullResponse = '';
|
|
59
|
-
for await (const chunk of this.agent.run(this.session.getMessages())) {
|
|
60
|
-
process.stdout.write(chunk);
|
|
61
|
-
fullResponse += chunk;
|
|
62
|
-
}
|
|
63
|
-
console.log(); // newline
|
|
64
|
-
this.session.addMessage('assistant', fullResponse);
|
|
65
|
-
return fullResponse;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the agent for streaming control
|
|
69
|
-
*/
|
|
70
|
-
getAgent() {
|
|
71
|
-
return this.agent;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get current config
|
|
75
|
-
*/
|
|
76
|
-
getConfig() {
|
|
77
|
-
return this.config;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=index.js.map
|
package/dist/app/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Thatgfsj Code - CLI Entry Point
|
|
4
|
-
* Simplified from old src/index.ts (655 lines → ~60 lines)
|
|
5
|
-
*
|
|
6
|
-
* Two modes:
|
|
7
|
-
* gfcode → Interactive REPL
|
|
8
|
-
* gfcode "prompt" → Single prompt mode
|
|
9
|
-
* gfcode init → Setup wizard
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/cmd/index.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Thatgfsj Code - CLI Entry Point
|
|
4
|
-
* Simplified from old src/index.ts (655 lines → ~60 lines)
|
|
5
|
-
*
|
|
6
|
-
* Two modes:
|
|
7
|
-
* gfcode → Interactive REPL
|
|
8
|
-
* gfcode "prompt" → Single prompt mode
|
|
9
|
-
* gfcode init → Setup wizard
|
|
10
|
-
*/
|
|
11
|
-
// Force UTF-8 on Windows
|
|
12
|
-
if (process.platform === 'win32') {
|
|
13
|
-
try {
|
|
14
|
-
require('child_process').execSync('chcp 65001', { stdio: 'ignore', windowsHide: true });
|
|
15
|
-
}
|
|
16
|
-
catch { }
|
|
17
|
-
}
|
|
18
|
-
import { program } from 'commander';
|
|
19
|
-
import chalk from 'chalk';
|
|
20
|
-
import { App } from '../app/index.js';
|
|
21
|
-
import { REPL } from '../tui/repl.js';
|
|
22
|
-
import { WelcomeScreen } from '../tui/welcome.js';
|
|
23
|
-
import { ProjectContext } from '../utils/project.js';
|
|
24
|
-
// ==================== Error Handling ====================
|
|
25
|
-
process.on('uncaughtException', (error) => {
|
|
26
|
-
console.error(chalk.red('\n❌ Error:'), error.message);
|
|
27
|
-
process.exit(1);
|
|
28
|
-
});
|
|
29
|
-
process.on('unhandledRejection', (reason) => {
|
|
30
|
-
console.error(chalk.red('\n❌ Error:'), reason);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
});
|
|
33
|
-
// ==================== CLI Commands ====================
|
|
34
|
-
program
|
|
35
|
-
.name('gfcode')
|
|
36
|
-
.description('🤖 Thatgfsj Code - AI Coding Assistant')
|
|
37
|
-
.version('0.3.0')
|
|
38
|
-
.argument('[prompt]', 'Task to execute (omit to start interactive mode)')
|
|
39
|
-
.option('-m, --model <model>', 'Specify model')
|
|
40
|
-
.option('-i, --interactive', 'Force interactive mode')
|
|
41
|
-
.option('--hooks', 'Enable audit logging hooks')
|
|
42
|
-
.action(async (prompt, options) => {
|
|
43
|
-
try {
|
|
44
|
-
// Initialize app
|
|
45
|
-
const app = await App.create();
|
|
46
|
-
// Show welcome if no API key
|
|
47
|
-
WelcomeScreen.show(app.config.hasApiKey());
|
|
48
|
-
// Override model if specified
|
|
49
|
-
if (options.model) {
|
|
50
|
-
await app.config.save({ model: options.model });
|
|
51
|
-
}
|
|
52
|
-
// Enable hooks if requested
|
|
53
|
-
if (options.hooks) {
|
|
54
|
-
const { auditLogHook } = await import('../hooks/index.js');
|
|
55
|
-
app.hooks.register('afterToolCall', auditLogHook);
|
|
56
|
-
}
|
|
57
|
-
if (!prompt || options.interactive) {
|
|
58
|
-
// Interactive REPL mode
|
|
59
|
-
const repl = new REPL(app);
|
|
60
|
-
await repl.start();
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
// Single prompt mode
|
|
64
|
-
console.log(chalk.cyan('\n🤖 Thatgfsj Code\n'));
|
|
65
|
-
console.log(chalk.gray(ProjectContext.getSummary()));
|
|
66
|
-
console.log(chalk.gray('─'.repeat(40)));
|
|
67
|
-
console.log(chalk.cyan('\n> ') + prompt + '\n');
|
|
68
|
-
await app.runPrompt(prompt);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
console.error(chalk.red(`\n❌ ${error.message}`));
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
// Init command - setup wizard
|
|
77
|
-
program
|
|
78
|
-
.command('init')
|
|
79
|
-
.description('配置 API Key 和模型')
|
|
80
|
-
.action(async () => {
|
|
81
|
-
await WelcomeScreen.interactiveSetup();
|
|
82
|
-
});
|
|
83
|
-
// Parse and run
|
|
84
|
-
program.parse(process.argv);
|
|
85
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cmd/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config Manager - Handles configuration loading and saving
|
|
3
|
-
* Migrated from old src/core/config.ts
|
|
4
|
-
*/
|
|
5
|
-
import type { Config, AIConfig } from './types.js';
|
|
6
|
-
export declare class ConfigManager {
|
|
7
|
-
private configPath;
|
|
8
|
-
private config;
|
|
9
|
-
private constructor();
|
|
10
|
-
/**
|
|
11
|
-
* Load configuration from file + environment variables
|
|
12
|
-
*/
|
|
13
|
-
static load(): Promise<ConfigManager>;
|
|
14
|
-
/**
|
|
15
|
-
* Resolve provider settings: API key from env, base URL, model
|
|
16
|
-
*/
|
|
17
|
-
private static resolveProvider;
|
|
18
|
-
/**
|
|
19
|
-
* Get the current config
|
|
20
|
-
*/
|
|
21
|
-
get(): Config;
|
|
22
|
-
/**
|
|
23
|
-
* Get AIConfig for LLM providers
|
|
24
|
-
*/
|
|
25
|
-
getAIConfig(): AIConfig;
|
|
26
|
-
/**
|
|
27
|
-
* Get provider format (openai | anthropic | gemini)
|
|
28
|
-
*/
|
|
29
|
-
getProviderFormat(): 'openai' | 'anthropic' | 'gemini';
|
|
30
|
-
/**
|
|
31
|
-
* Update config and save to file
|
|
32
|
-
*/
|
|
33
|
-
save(updates: Partial<Config>): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Check if an API key is configured
|
|
36
|
-
*/
|
|
37
|
-
hasApiKey(): boolean;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAWjE,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAKP;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAsB3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAyB9B;;OAEG;IACH,GAAG,IAAI,MAAM;IAIb;;OAEG;IACH,WAAW,IAAI,QAAQ;IAWvB;;OAEG;IACH,iBAAiB,IAAI,QAAQ,GAAG,WAAW,GAAG,QAAQ;IAItD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
|
package/dist/config/index.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config Manager - Handles configuration loading and saving
|
|
3
|
-
* Migrated from old src/core/config.ts
|
|
4
|
-
*/
|
|
5
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
6
|
-
import { join, dirname } from 'path';
|
|
7
|
-
import { homedir } from 'os';
|
|
8
|
-
import { PROVIDERS, getApiKeyFromEnv } from './providers.js';
|
|
9
|
-
const DEFAULT_CONFIG = {
|
|
10
|
-
model: 'Qwen/Qwen2.5-7B-Instruct',
|
|
11
|
-
apiKey: '',
|
|
12
|
-
temperature: 0.7,
|
|
13
|
-
maxTokens: 4096,
|
|
14
|
-
provider: 'siliconflow',
|
|
15
|
-
};
|
|
16
|
-
export class ConfigManager {
|
|
17
|
-
configPath;
|
|
18
|
-
config;
|
|
19
|
-
constructor(configPath, config) {
|
|
20
|
-
this.configPath = configPath;
|
|
21
|
-
this.config = config;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Load configuration from file + environment variables
|
|
25
|
-
*/
|
|
26
|
-
static async load() {
|
|
27
|
-
const configDir = join(homedir(), '.thatgfsj');
|
|
28
|
-
const configPath = join(configDir, 'config.json');
|
|
29
|
-
let config = { ...DEFAULT_CONFIG };
|
|
30
|
-
// Load from file
|
|
31
|
-
try {
|
|
32
|
-
if (existsSync(configPath)) {
|
|
33
|
-
const data = readFileSync(configPath, 'utf-8');
|
|
34
|
-
config = { ...config, ...JSON.parse(data) };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Use defaults if file is corrupted
|
|
39
|
-
}
|
|
40
|
-
// Resolve provider
|
|
41
|
-
config = ConfigManager.resolveProvider(config);
|
|
42
|
-
return new ConfigManager(configPath, config);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Resolve provider settings: API key from env, base URL, model
|
|
46
|
-
*/
|
|
47
|
-
static resolveProvider(config) {
|
|
48
|
-
const provider = config.provider || 'siliconflow';
|
|
49
|
-
const providerConfig = PROVIDERS[provider];
|
|
50
|
-
if (!providerConfig) {
|
|
51
|
-
return { ...config, provider: 'siliconflow', baseUrl: PROVIDERS.siliconflow.baseUrl };
|
|
52
|
-
}
|
|
53
|
-
// Model: env MODEL > config > provider default
|
|
54
|
-
const model = process.env.MODEL || config.model || providerConfig.defaultModel;
|
|
55
|
-
// API key: env > config
|
|
56
|
-
let apiKey = config.apiKey;
|
|
57
|
-
if (provider === 'ollama') {
|
|
58
|
-
apiKey = '';
|
|
59
|
-
}
|
|
60
|
-
else if (!apiKey) {
|
|
61
|
-
apiKey = getApiKeyFromEnv(provider);
|
|
62
|
-
}
|
|
63
|
-
// Base URL: config > provider default
|
|
64
|
-
const baseUrl = config.baseUrl || providerConfig.baseUrl;
|
|
65
|
-
return { ...config, provider, baseUrl, model, apiKey: apiKey || '' };
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the current config
|
|
69
|
-
*/
|
|
70
|
-
get() {
|
|
71
|
-
return { ...this.config };
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get AIConfig for LLM providers
|
|
75
|
-
*/
|
|
76
|
-
getAIConfig() {
|
|
77
|
-
return {
|
|
78
|
-
model: this.config.model,
|
|
79
|
-
apiKey: this.config.apiKey,
|
|
80
|
-
temperature: this.config.temperature,
|
|
81
|
-
maxTokens: this.config.maxTokens,
|
|
82
|
-
baseUrl: this.config.baseUrl,
|
|
83
|
-
provider: this.config.provider,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get provider format (openai | anthropic | gemini)
|
|
88
|
-
*/
|
|
89
|
-
getProviderFormat() {
|
|
90
|
-
return PROVIDERS[this.config.provider]?.format || 'openai';
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Update config and save to file
|
|
94
|
-
*/
|
|
95
|
-
async save(updates) {
|
|
96
|
-
this.config = { ...this.config, ...updates };
|
|
97
|
-
const dir = dirname(this.configPath);
|
|
98
|
-
if (!existsSync(dir)) {
|
|
99
|
-
mkdirSync(dir, { recursive: true });
|
|
100
|
-
}
|
|
101
|
-
writeFileSync(this.configPath, JSON.stringify(this.config, null, 2));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Check if an API key is configured
|
|
105
|
-
*/
|
|
106
|
-
hasApiKey() {
|
|
107
|
-
return !!this.config.apiKey;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider definitions and model catalogs
|
|
3
|
-
* Consolidated from old types.ts PROVIDERS + welcome.ts model lists
|
|
4
|
-
*/
|
|
5
|
-
import type { ProviderConfig, ProviderName, ModelInfo } from './types.js';
|
|
6
|
-
export declare const PROVIDERS: Record<ProviderName, ProviderConfig>;
|
|
7
|
-
export declare const MODEL_CATALOGS: Record<ProviderName, ModelInfo[]>;
|
|
8
|
-
/**
|
|
9
|
-
* Get models for a specific provider
|
|
10
|
-
*/
|
|
11
|
-
export declare function getModelsForProvider(provider: ProviderName): ModelInfo[];
|
|
12
|
-
/**
|
|
13
|
-
* Get API key for a provider from environment variables
|
|
14
|
-
*/
|
|
15
|
-
export declare function getApiKeyFromEnv(provider: ProviderName): string;
|
|
16
|
-
/**
|
|
17
|
-
* List all provider names
|
|
18
|
-
*/
|
|
19
|
-
export declare function listProviders(): Array<{
|
|
20
|
-
key: ProviderName;
|
|
21
|
-
name: string;
|
|
22
|
-
}>;
|
|
23
|
-
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/config/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI1E,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAgE1D,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,CAkD5D,CAAC;AAIF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,CAExE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAQ/D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK1E"}
|