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,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Recognition
|
|
3
|
+
* Identifies user intent: chat, code, command, or query
|
|
4
|
+
*/
|
|
5
|
+
export interface Intent {
|
|
6
|
+
type: 'chat' | 'code' | 'command' | 'query' | 'complex';
|
|
7
|
+
confidence: number;
|
|
8
|
+
reason?: string;
|
|
9
|
+
subTasks?: SubTask[];
|
|
10
|
+
}
|
|
11
|
+
export interface SubTask {
|
|
12
|
+
description: string;
|
|
13
|
+
action: string;
|
|
14
|
+
target?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class IntentRecognizer {
|
|
17
|
+
private ai;
|
|
18
|
+
constructor(aiEngine: any);
|
|
19
|
+
/**
|
|
20
|
+
* Recognize intent from user message
|
|
21
|
+
*/
|
|
22
|
+
recognize(message: string): Promise<Intent>;
|
|
23
|
+
/**
|
|
24
|
+
* Fast keyword-based recognition
|
|
25
|
+
*/
|
|
26
|
+
private fastRecognize;
|
|
27
|
+
/**
|
|
28
|
+
* AI-powered recognition for ambiguous cases
|
|
29
|
+
*/
|
|
30
|
+
private aiRecognize;
|
|
31
|
+
/**
|
|
32
|
+
* Break complex task into subtasks
|
|
33
|
+
*/
|
|
34
|
+
breakIntoSubtasks(message: string): Promise<SubTask[]>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/agent/intent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAM;gBAEJ,QAAQ,EAAE,GAAG;IAIzB;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAwErB;;OAEG;YACW,WAAW;IAMzB;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAgC7D"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Recognition
|
|
3
|
+
* Identifies user intent: chat, code, command, or query
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Intent Recognition Prompt
|
|
7
|
+
*/
|
|
8
|
+
const INTENT_PROMPT = `Analyze the user message and identify their intent.
|
|
9
|
+
|
|
10
|
+
Intent types:
|
|
11
|
+
- "chat": General conversation, questions, small talk
|
|
12
|
+
- "code": Write, edit, refactor code
|
|
13
|
+
- "command": Execute shell commands, git operations
|
|
14
|
+
- "query": Search files, find information, read code
|
|
15
|
+
- "complex": Multiple actions needed - break into subtasks
|
|
16
|
+
|
|
17
|
+
Respond with JSON:
|
|
18
|
+
{
|
|
19
|
+
"type": "chat|code|command|query|complex",
|
|
20
|
+
"confidence": 0.0-1.0,
|
|
21
|
+
"reason": "brief explanation",
|
|
22
|
+
"subTasks": [{"description": "...", "action": "...", "target": "..."}] // only for complex
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
User message:`;
|
|
26
|
+
export class IntentRecognizer {
|
|
27
|
+
ai;
|
|
28
|
+
constructor(aiEngine) {
|
|
29
|
+
this.ai = aiEngine;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Recognize intent from user message
|
|
33
|
+
*/
|
|
34
|
+
async recognize(message) {
|
|
35
|
+
// Fast path: simple keyword matching for common patterns
|
|
36
|
+
const fastIntent = this.fastRecognize(message);
|
|
37
|
+
if (fastIntent.confidence > 0.8) {
|
|
38
|
+
return fastIntent;
|
|
39
|
+
}
|
|
40
|
+
// Use AI for complex cases
|
|
41
|
+
return await this.aiRecognize(message);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fast keyword-based recognition
|
|
45
|
+
*/
|
|
46
|
+
fastRecognize(message) {
|
|
47
|
+
const lower = message.toLowerCase().trim();
|
|
48
|
+
const words = lower.split(/\s+/);
|
|
49
|
+
// Command patterns
|
|
50
|
+
const commandPatterns = [
|
|
51
|
+
/^run\s+/, /^execute\s+/, /^exec\s+/,
|
|
52
|
+
/^npm\s+/, /^node\s+/, /^git\s+/,
|
|
53
|
+
/^pip\s+/, /^python\s+/, /^cargo\s+/,
|
|
54
|
+
/^make\s+/, /^docker\s+/, /^curl\s+/,
|
|
55
|
+
];
|
|
56
|
+
for (const pattern of commandPatterns) {
|
|
57
|
+
if (pattern.test(lower)) {
|
|
58
|
+
return { type: 'command', confidence: 0.9, reason: 'Command pattern detected' };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Code patterns
|
|
62
|
+
const codePatterns = [
|
|
63
|
+
/^write\s+/, /^create\s+.*file/i,
|
|
64
|
+
/^edit\s+/, /^modify\s+/, /^change\s+/,
|
|
65
|
+
/^refactor/i, /^implement/i,
|
|
66
|
+
/^add\s+.*function/i, /^add\s+.*class/i,
|
|
67
|
+
/\{[\s\S]*\}/, // Contains code block
|
|
68
|
+
/function\s+\w+\s*\(/,
|
|
69
|
+
/const\s+\w+\s*=/,
|
|
70
|
+
/let\s+\w+\s*=/,
|
|
71
|
+
/class\s+\w+/,
|
|
72
|
+
];
|
|
73
|
+
for (const pattern of codePatterns) {
|
|
74
|
+
if (pattern.test(message)) {
|
|
75
|
+
return { type: 'code', confidence: 0.85, reason: 'Code pattern detected' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Query patterns
|
|
79
|
+
const queryPatterns = [
|
|
80
|
+
/^find\s+/, /^search\s+/, /^grep\s+/,
|
|
81
|
+
/^show\s+.*files/i, /^list\s+.*files/i,
|
|
82
|
+
/^what\s+is\s+/, /^how\s+does\s+/,
|
|
83
|
+
/^explain\s+/, /^what's\s+in\s+/,
|
|
84
|
+
/^read\s+/, /^look\s+at\s+/,
|
|
85
|
+
];
|
|
86
|
+
for (const pattern of queryPatterns) {
|
|
87
|
+
if (pattern.test(lower)) {
|
|
88
|
+
return { type: 'query', confidence: 0.85, reason: 'Query pattern detected' };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Complex task patterns (multiple actions)
|
|
92
|
+
const complexPatterns = [
|
|
93
|
+
/refactor.*and.*test/i,
|
|
94
|
+
/create.*and.*setup/i,
|
|
95
|
+
/build.*and.*deploy/i,
|
|
96
|
+
/fix.*and.*verify/i,
|
|
97
|
+
/migrate.*to/i,
|
|
98
|
+
/rewrite.*from/i,
|
|
99
|
+
];
|
|
100
|
+
for (const pattern of complexPatterns) {
|
|
101
|
+
if (pattern.test(lower)) {
|
|
102
|
+
return { type: 'complex', confidence: 0.8, reason: 'Multiple actions detected' };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Default to chat
|
|
106
|
+
return { type: 'chat', confidence: 0.6, reason: 'Default intent' };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* AI-powered recognition for ambiguous cases
|
|
110
|
+
*/
|
|
111
|
+
async aiRecognize(message) {
|
|
112
|
+
// For now, use fast recognition as fallback
|
|
113
|
+
// TODO: Implement AI-based recognition for complex cases
|
|
114
|
+
return this.fastRecognize(message);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Break complex task into subtasks
|
|
118
|
+
*/
|
|
119
|
+
async breakIntoSubtasks(message) {
|
|
120
|
+
const lower = message.toLowerCase();
|
|
121
|
+
// Simple rule-based decomposition
|
|
122
|
+
const tasks = [];
|
|
123
|
+
// "refactor X and add tests"
|
|
124
|
+
if (lower.includes('refactor') && lower.includes('test')) {
|
|
125
|
+
tasks.push({ description: 'Refactor code', action: 'code', target: 'refactor' });
|
|
126
|
+
tasks.push({ description: 'Add tests', action: 'code', target: 'test' });
|
|
127
|
+
}
|
|
128
|
+
// "create X and setup Y"
|
|
129
|
+
if (lower.includes('create') && lower.includes('setup')) {
|
|
130
|
+
tasks.push({ description: 'Create component', action: 'code', target: 'create' });
|
|
131
|
+
tasks.push({ description: 'Setup configuration', action: 'command', target: 'setup' });
|
|
132
|
+
}
|
|
133
|
+
// "fix X and verify"
|
|
134
|
+
if (lower.includes('fix') && (lower.includes('verify') || lower.includes('test'))) {
|
|
135
|
+
tasks.push({ description: 'Fix issue', action: 'code', target: 'fix' });
|
|
136
|
+
tasks.push({ description: 'Verify fix', action: 'command', target: 'test' });
|
|
137
|
+
}
|
|
138
|
+
// If no decomposition rules matched, treat as single task
|
|
139
|
+
if (tasks.length === 0) {
|
|
140
|
+
const intent = this.fastRecognize(message);
|
|
141
|
+
tasks.push({ description: message, action: intent.type, target: message });
|
|
142
|
+
}
|
|
143
|
+
return tasks;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/agent/intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Output
|
|
3
|
+
* Handles real-time streaming output with typewriter effect
|
|
4
|
+
*/
|
|
5
|
+
export type StreamCallback = (chunk: string) => void;
|
|
6
|
+
export type DoneCallback = (full: string) => void;
|
|
7
|
+
export declare class StreamingOutput {
|
|
8
|
+
private fullContent;
|
|
9
|
+
private isStreaming;
|
|
10
|
+
private onChunk?;
|
|
11
|
+
private onDone?;
|
|
12
|
+
private buffer;
|
|
13
|
+
private minChunkDelay;
|
|
14
|
+
/**
|
|
15
|
+
* Start streaming mode
|
|
16
|
+
*/
|
|
17
|
+
start(callbacks?: {
|
|
18
|
+
onChunk?: StreamCallback;
|
|
19
|
+
onDone?: DoneCallback;
|
|
20
|
+
}): void;
|
|
21
|
+
/**
|
|
22
|
+
* Process a chunk of content
|
|
23
|
+
*/
|
|
24
|
+
processChunk(chunk: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* End streaming mode
|
|
27
|
+
*/
|
|
28
|
+
end(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Stop streaming (for interrupt)
|
|
31
|
+
*/
|
|
32
|
+
stop(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get full content so far
|
|
35
|
+
*/
|
|
36
|
+
getContent(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Check if streaming
|
|
39
|
+
*/
|
|
40
|
+
isActive(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Print with typewriter effect (for interactive mode)
|
|
43
|
+
*/
|
|
44
|
+
static typewriter(text: string, delay?: number, onChunk?: (chunk: string) => void): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Print code block with syntax highlighting hint
|
|
47
|
+
*/
|
|
48
|
+
static printCodeBlock(code: string, language?: string): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/agent/streaming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAElD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAc;IAEnC;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,cAAc,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAO5E;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBjC;;OAEG;IACH,GAAG,IAAI,MAAM;IAoBb;;OAEG;IACH,IAAI,IAAI,MAAM;IAKd;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;WACU,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAW,EAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,IAAI;CAkBjE"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streaming Output
|
|
3
|
+
* Handles real-time streaming output with typewriter effect
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
export class StreamingOutput {
|
|
7
|
+
fullContent = '';
|
|
8
|
+
isStreaming = false;
|
|
9
|
+
onChunk;
|
|
10
|
+
onDone;
|
|
11
|
+
buffer = '';
|
|
12
|
+
minChunkDelay = 10; // ms between chunks
|
|
13
|
+
/**
|
|
14
|
+
* Start streaming mode
|
|
15
|
+
*/
|
|
16
|
+
start(callbacks) {
|
|
17
|
+
this.fullContent = '';
|
|
18
|
+
this.isStreaming = true;
|
|
19
|
+
this.onChunk = callbacks?.onChunk;
|
|
20
|
+
this.onDone = callbacks?.onDone;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Process a chunk of content
|
|
24
|
+
*/
|
|
25
|
+
processChunk(chunk) {
|
|
26
|
+
if (!this.isStreaming)
|
|
27
|
+
return;
|
|
28
|
+
this.fullContent += chunk;
|
|
29
|
+
this.buffer += chunk;
|
|
30
|
+
// Flush buffer periodically
|
|
31
|
+
if (this.buffer.length > 0) {
|
|
32
|
+
const toPrint = this.buffer;
|
|
33
|
+
this.buffer = '';
|
|
34
|
+
if (this.onChunk) {
|
|
35
|
+
this.onChunk(toPrint);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
process.stdout.write(toPrint);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* End streaming mode
|
|
44
|
+
*/
|
|
45
|
+
end() {
|
|
46
|
+
this.isStreaming = false;
|
|
47
|
+
// Flush remaining buffer
|
|
48
|
+
if (this.buffer.length > 0) {
|
|
49
|
+
if (this.onChunk) {
|
|
50
|
+
this.onChunk(this.buffer);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
process.stdout.write(this.buffer);
|
|
54
|
+
}
|
|
55
|
+
this.buffer = '';
|
|
56
|
+
}
|
|
57
|
+
if (this.onDone) {
|
|
58
|
+
this.onDone(this.fullContent);
|
|
59
|
+
}
|
|
60
|
+
return this.fullContent;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Stop streaming (for interrupt)
|
|
64
|
+
*/
|
|
65
|
+
stop() {
|
|
66
|
+
this.isStreaming = false;
|
|
67
|
+
return this.fullContent;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get full content so far
|
|
71
|
+
*/
|
|
72
|
+
getContent() {
|
|
73
|
+
return this.fullContent;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if streaming
|
|
77
|
+
*/
|
|
78
|
+
isActive() {
|
|
79
|
+
return this.isStreaming;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Print with typewriter effect (for interactive mode)
|
|
83
|
+
*/
|
|
84
|
+
static async typewriter(text, delay = 20, onChunk) {
|
|
85
|
+
for (let i = 0; i < text.length; i++) {
|
|
86
|
+
process.stdout.write(text[i]);
|
|
87
|
+
if (onChunk)
|
|
88
|
+
onChunk(text[i]);
|
|
89
|
+
await new Promise(r => setTimeout(r, delay));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Print code block with syntax highlighting hint
|
|
94
|
+
*/
|
|
95
|
+
static printCodeBlock(code, language = '') {
|
|
96
|
+
const lines = code.split('\n');
|
|
97
|
+
const maxLen = Math.max(...lines.map(l => l.length), 60);
|
|
98
|
+
console.log(chalk.bgBlack.gray('┌' + '─'.repeat(Math.min(maxLen, 80)) + '┐'));
|
|
99
|
+
if (language) {
|
|
100
|
+
console.log(chalk.bgBlack.gray('│ ') + chalk.cyan(language) + chalk.bgBlack.gray(' '.repeat(Math.max(0, maxLen - language.length - 1))) + chalk.bgBlack.gray('│'));
|
|
101
|
+
console.log(chalk.bgBlack.gray('├' + '─'.repeat(Math.min(maxLen, 80)) + '┤'));
|
|
102
|
+
}
|
|
103
|
+
for (const line of lines) {
|
|
104
|
+
const displayLine = line.length > maxLen ? line.substring(0, maxLen - 3) + '...' : line;
|
|
105
|
+
console.log(chalk.bgBlack('│ ') + displayLine + ' '.repeat(Math.max(0, maxLen - displayLine.length)) + chalk.bgBlack(' │'));
|
|
106
|
+
}
|
|
107
|
+
console.log(chalk.bgBlack.gray('└' + '─'.repeat(Math.min(maxLen, 80)) + '┘'));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/agent/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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 { ChatMessage, AIResponse, AIConfig, Tool } from './types.js';
|
|
9
|
+
export { AIResponse, ChatMessage };
|
|
10
|
+
export declare class AIEngine {
|
|
11
|
+
private config;
|
|
12
|
+
private tools;
|
|
13
|
+
constructor(config: AIConfig);
|
|
14
|
+
/**
|
|
15
|
+
* Register tools for function calling
|
|
16
|
+
*/
|
|
17
|
+
registerTool(tool: Tool): void;
|
|
18
|
+
/**
|
|
19
|
+
* Unregister a tool
|
|
20
|
+
*/
|
|
21
|
+
unregisterTool(name: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get registered tools for API (S02: uses ToolRegistry if available)
|
|
24
|
+
*/
|
|
25
|
+
private getToolsForAPI;
|
|
26
|
+
setRegistry(registry: any): void;
|
|
27
|
+
private registry?;
|
|
28
|
+
setHooks(hooks: import('./hooks.js').HookManager): void;
|
|
29
|
+
private hooks?;
|
|
30
|
+
chatStream(messages: ChatMessage[], maxIterations?: number): AsyncGenerator<string, AIResponse, unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* S01 Core: Stream request — yields chunks as they arrive
|
|
33
|
+
* Uses async generator for backpressure control and lazy evaluation
|
|
34
|
+
*/
|
|
35
|
+
private streamRequest;
|
|
36
|
+
/**
|
|
37
|
+
* Extract text from streaming chunk based on provider format
|
|
38
|
+
*/
|
|
39
|
+
private extractChunkText;
|
|
40
|
+
/**
|
|
41
|
+
* Parse full response text into structured AIResponse
|
|
42
|
+
*/
|
|
43
|
+
private parseResponse;
|
|
44
|
+
/**
|
|
45
|
+
* Extract tool calls from response content
|
|
46
|
+
*/
|
|
47
|
+
private extractToolCalls;
|
|
48
|
+
/**
|
|
49
|
+
* Original non-streaming chat — now implemented via chatStream
|
|
50
|
+
*/
|
|
51
|
+
chat(messages: ChatMessage[], maxIterations?: number): Promise<AIResponse>;
|
|
52
|
+
private executeToolCall;
|
|
53
|
+
private buildOpenAIRequest;
|
|
54
|
+
private buildAnthropicRequest;
|
|
55
|
+
private buildGeminiRequest;
|
|
56
|
+
private getApiKey;
|
|
57
|
+
private getMockResponse;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ai-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-engine.d.ts","sourceRoot":"","sources":["../../src/core/ai-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAY,MAAM,YAAY,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAEnC,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAgC;gBAEjC,MAAM,EAAE,QAAQ;IAI5B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI;IAIvB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB,WAAW,CAAC,QAAQ,EAAE,GAAG;IAGzB,OAAO,CAAC,QAAQ,CAAC,CAAM;IAGvB,QAAQ,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,WAAW;IAGhD,OAAO,CAAC,KAAK,CAAC,CAAiD;IAIxD,UAAU,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,aAAa,GAAE,MAAW,GACzB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;IAwF9C;;;OAGG;YACY,aAAa;IA0E5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,aAAa,GAAE,MAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAerE,eAAe;IA4B7B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,eAAe;CAcxB"}
|