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.
Files changed (262) hide show
  1. package/CHANGELOG.md +229 -0
  2. package/DEVELOPMENT.md +286 -0
  3. package/README.md +144 -79
  4. package/dist/agent/core.d.ts +56 -0
  5. package/dist/agent/core.d.ts.map +1 -0
  6. package/dist/agent/core.js +142 -0
  7. package/dist/agent/core.js.map +1 -0
  8. package/dist/agent/index.d.ts +8 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +8 -0
  11. package/dist/agent/index.js.map +1 -0
  12. package/dist/agent/intent.d.ts +36 -0
  13. package/dist/agent/intent.d.ts.map +1 -0
  14. package/dist/agent/intent.js +146 -0
  15. package/dist/agent/intent.js.map +1 -0
  16. package/dist/agent/streaming.d.ts +50 -0
  17. package/dist/agent/streaming.d.ts.map +1 -0
  18. package/dist/agent/streaming.js +110 -0
  19. package/dist/agent/streaming.js.map +1 -0
  20. package/dist/core/ai-engine.d.ts +76 -0
  21. package/dist/core/ai-engine.d.ts.map +1 -0
  22. package/dist/core/ai-engine.js +394 -0
  23. package/dist/core/ai-engine.js.map +1 -0
  24. package/dist/core/cli.d.ts +21 -0
  25. package/dist/core/cli.d.ts.map +1 -0
  26. package/dist/core/cli.js +143 -0
  27. package/dist/core/cli.js.map +1 -0
  28. package/dist/core/config.d.ts +55 -0
  29. package/dist/core/config.d.ts.map +1 -0
  30. package/dist/core/config.js +162 -0
  31. package/dist/core/config.js.map +1 -0
  32. package/dist/core/context-compactor.d.ts +54 -0
  33. package/dist/core/context-compactor.d.ts.map +1 -0
  34. package/dist/core/context-compactor.js +197 -0
  35. package/dist/core/context-compactor.js.map +1 -0
  36. package/dist/core/hooks.d.ts +75 -0
  37. package/dist/core/hooks.d.ts.map +1 -0
  38. package/dist/core/hooks.js +146 -0
  39. package/dist/core/hooks.js.map +1 -0
  40. package/dist/core/permissions.d.ts +52 -0
  41. package/dist/core/permissions.d.ts.map +1 -0
  42. package/dist/core/permissions.js +237 -0
  43. package/dist/core/permissions.js.map +1 -0
  44. package/dist/core/session.d.ts +54 -0
  45. package/dist/core/session.d.ts.map +1 -0
  46. package/dist/core/session.js +147 -0
  47. package/dist/core/session.js.map +1 -0
  48. package/dist/core/skills.d.ts +60 -0
  49. package/dist/core/skills.d.ts.map +1 -0
  50. package/dist/core/skills.js +175 -0
  51. package/dist/core/skills.js.map +1 -0
  52. package/dist/core/state.d.ts +60 -0
  53. package/dist/core/state.d.ts.map +1 -0
  54. package/dist/core/state.js +106 -0
  55. package/dist/core/state.js.map +1 -0
  56. package/dist/core/subagent.d.ts +68 -0
  57. package/dist/core/subagent.d.ts.map +1 -0
  58. package/dist/core/subagent.js +142 -0
  59. package/dist/core/subagent.js.map +1 -0
  60. package/dist/core/system-prompt.d.ts +40 -0
  61. package/dist/core/system-prompt.d.ts.map +1 -0
  62. package/dist/core/system-prompt.js +138 -0
  63. package/dist/core/system-prompt.js.map +1 -0
  64. package/dist/core/tool-registry.d.ts +53 -0
  65. package/dist/core/tool-registry.d.ts.map +1 -0
  66. package/dist/core/tool-registry.js +138 -0
  67. package/dist/core/tool-registry.js.map +1 -0
  68. package/dist/core/types.d.ts +206 -0
  69. package/dist/core/types.d.ts.map +1 -0
  70. package/dist/core/types.js +127 -0
  71. package/dist/core/types.js.map +1 -0
  72. package/dist/index.d.ts +7 -0
  73. package/dist/{cmd/index.d.ts.map → index.d.ts.map} +1 -1
  74. package/dist/index.js +472 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/mcp/client.d.ts +1 -1
  77. package/dist/mcp/client.d.ts.map +1 -1
  78. package/dist/repl/index.d.ts +8 -0
  79. package/dist/repl/index.d.ts.map +1 -0
  80. package/dist/repl/index.js +8 -0
  81. package/dist/repl/index.js.map +1 -0
  82. package/dist/repl/input.d.ts +69 -0
  83. package/dist/repl/input.d.ts.map +1 -0
  84. package/dist/repl/input.js +139 -0
  85. package/dist/repl/input.js.map +1 -0
  86. package/dist/repl/loop.d.ts +184 -0
  87. package/dist/repl/loop.d.ts.map +1 -0
  88. package/dist/repl/loop.js +932 -0
  89. package/dist/repl/loop.js.map +1 -0
  90. package/dist/repl/output.d.ts +105 -0
  91. package/dist/repl/output.d.ts.map +1 -0
  92. package/dist/repl/output.js +199 -0
  93. package/dist/repl/output.js.map +1 -0
  94. package/dist/repl/welcome.d.ts +68 -0
  95. package/dist/repl/welcome.d.ts.map +1 -0
  96. package/dist/repl/welcome.js +254 -0
  97. package/dist/repl/welcome.js.map +1 -0
  98. package/dist/tools/file.d.ts +1 -1
  99. package/dist/tools/file.d.ts.map +1 -1
  100. package/dist/tools/git.d.ts +1 -1
  101. package/dist/tools/git.d.ts.map +1 -1
  102. package/dist/tools/index.d.ts +15 -35
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +31 -80
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/search.d.ts +1 -1
  107. package/dist/tools/search.d.ts.map +1 -1
  108. package/dist/tools/shell.d.ts +11 -4
  109. package/dist/tools/shell.d.ts.map +1 -1
  110. package/dist/tools/shell.js +78 -42
  111. package/dist/tools/shell.js.map +1 -1
  112. package/dist/utils/diff-preview.d.ts +42 -0
  113. package/dist/utils/diff-preview.d.ts.map +1 -0
  114. package/dist/utils/diff-preview.js +174 -0
  115. package/dist/utils/diff-preview.js.map +1 -0
  116. package/dist/utils/index.d.ts +8 -0
  117. package/dist/utils/index.d.ts.map +1 -0
  118. package/dist/utils/index.js +8 -0
  119. package/dist/utils/index.js.map +1 -0
  120. package/dist/utils/memory.d.ts +81 -0
  121. package/dist/utils/memory.d.ts.map +1 -0
  122. package/dist/utils/memory.js +186 -0
  123. package/dist/utils/memory.js.map +1 -0
  124. package/dist/utils/project-context.d.ts +62 -0
  125. package/dist/utils/project-context.d.ts.map +1 -0
  126. package/dist/utils/project-context.js +197 -0
  127. package/dist/utils/project-context.js.map +1 -0
  128. package/docs/API_KEY_GUIDE.md +6 -0
  129. package/docs/FAQ.md +25 -3
  130. package/package.json +41 -9
  131. package/ROADMAP.md +0 -61
  132. package/dist/app/agent.d.ts +0 -31
  133. package/dist/app/agent.d.ts.map +0 -1
  134. package/dist/app/agent.js +0 -106
  135. package/dist/app/agent.js.map +0 -1
  136. package/dist/app/index.d.ts +0 -39
  137. package/dist/app/index.d.ts.map +0 -1
  138. package/dist/app/index.js +0 -80
  139. package/dist/app/index.js.map +0 -1
  140. package/dist/cmd/index.d.ts +0 -12
  141. package/dist/cmd/index.js +0 -85
  142. package/dist/cmd/index.js.map +0 -1
  143. package/dist/config/index.d.ts +0 -39
  144. package/dist/config/index.d.ts.map +0 -1
  145. package/dist/config/index.js +0 -110
  146. package/dist/config/index.js.map +0 -1
  147. package/dist/config/providers.d.ts +0 -23
  148. package/dist/config/providers.d.ts.map +0 -1
  149. package/dist/config/providers.js +0 -152
  150. package/dist/config/providers.js.map +0 -1
  151. package/dist/config/types.d.ts +0 -33
  152. package/dist/config/types.d.ts.map +0 -1
  153. package/dist/config/types.js +0 -5
  154. package/dist/config/types.js.map +0 -1
  155. package/dist/hooks/index.d.ts +0 -31
  156. package/dist/hooks/index.d.ts.map +0 -1
  157. package/dist/hooks/index.js +0 -71
  158. package/dist/hooks/index.js.map +0 -1
  159. package/dist/llm/anthropic.d.ts +0 -17
  160. package/dist/llm/anthropic.d.ts.map +0 -1
  161. package/dist/llm/anthropic.js +0 -126
  162. package/dist/llm/anthropic.js.map +0 -1
  163. package/dist/llm/gemini.d.ts +0 -16
  164. package/dist/llm/gemini.d.ts.map +0 -1
  165. package/dist/llm/gemini.js +0 -107
  166. package/dist/llm/gemini.js.map +0 -1
  167. package/dist/llm/index.d.ts +0 -48
  168. package/dist/llm/index.d.ts.map +0 -1
  169. package/dist/llm/index.js +0 -174
  170. package/dist/llm/index.js.map +0 -1
  171. package/dist/llm/openai.d.ts +0 -17
  172. package/dist/llm/openai.d.ts.map +0 -1
  173. package/dist/llm/openai.js +0 -113
  174. package/dist/llm/openai.js.map +0 -1
  175. package/dist/llm/provider.d.ts +0 -33
  176. package/dist/llm/provider.d.ts.map +0 -1
  177. package/dist/llm/provider.js +0 -6
  178. package/dist/llm/provider.js.map +0 -1
  179. package/dist/prompts/index.d.ts +0 -27
  180. package/dist/prompts/index.d.ts.map +0 -1
  181. package/dist/prompts/index.js +0 -102
  182. package/dist/prompts/index.js.map +0 -1
  183. package/dist/session/compactor.d.ts +0 -48
  184. package/dist/session/compactor.d.ts.map +0 -1
  185. package/dist/session/compactor.js +0 -77
  186. package/dist/session/compactor.js.map +0 -1
  187. package/dist/session/index.d.ts +0 -48
  188. package/dist/session/index.d.ts.map +0 -1
  189. package/dist/session/index.js +0 -69
  190. package/dist/session/index.js.map +0 -1
  191. package/dist/session/message.d.ts +0 -26
  192. package/dist/session/message.d.ts.map +0 -1
  193. package/dist/session/message.js +0 -34
  194. package/dist/session/message.js.map +0 -1
  195. package/dist/tools/types.d.ts +0 -68
  196. package/dist/tools/types.d.ts.map +0 -1
  197. package/dist/tools/types.js +0 -57
  198. package/dist/tools/types.js.map +0 -1
  199. package/dist/tui/index.d.ts +0 -8
  200. package/dist/tui/index.d.ts.map +0 -1
  201. package/dist/tui/index.js +0 -8
  202. package/dist/tui/index.js.map +0 -1
  203. package/dist/tui/input.d.ts +0 -14
  204. package/dist/tui/input.d.ts.map +0 -1
  205. package/dist/tui/input.js +0 -50
  206. package/dist/tui/input.js.map +0 -1
  207. package/dist/tui/output.d.ts +0 -20
  208. package/dist/tui/output.d.ts.map +0 -1
  209. package/dist/tui/output.js +0 -70
  210. package/dist/tui/output.js.map +0 -1
  211. package/dist/tui/repl.d.ts +0 -25
  212. package/dist/tui/repl.d.ts.map +0 -1
  213. package/dist/tui/repl.js +0 -114
  214. package/dist/tui/repl.js.map +0 -1
  215. package/dist/tui/welcome.d.ts +0 -15
  216. package/dist/tui/welcome.d.ts.map +0 -1
  217. package/dist/tui/welcome.js +0 -86
  218. package/dist/tui/welcome.js.map +0 -1
  219. package/dist/types.d.ts +0 -38
  220. package/dist/types.d.ts.map +0 -1
  221. package/dist/types.js +0 -6
  222. package/dist/types.js.map +0 -1
  223. package/dist/utils/diff.d.ts +0 -22
  224. package/dist/utils/diff.d.ts.map +0 -1
  225. package/dist/utils/diff.js +0 -60
  226. package/dist/utils/diff.js.map +0 -1
  227. package/dist/utils/project.d.ts +0 -32
  228. package/dist/utils/project.d.ts.map +0 -1
  229. package/dist/utils/project.js +0 -89
  230. package/dist/utils/project.js.map +0 -1
  231. package/src/app/agent.ts +0 -140
  232. package/src/app/index.ts +0 -101
  233. package/src/cmd/index.ts +0 -96
  234. package/src/config/index.ts +0 -130
  235. package/src/config/providers.ts +0 -160
  236. package/src/config/types.ts +0 -46
  237. package/src/hooks/index.ts +0 -111
  238. package/src/llm/anthropic.ts +0 -146
  239. package/src/llm/gemini.ts +0 -127
  240. package/src/llm/index.ts +0 -209
  241. package/src/llm/openai.ts +0 -132
  242. package/src/llm/provider.ts +0 -38
  243. package/src/mcp/client.ts +0 -330
  244. package/src/prompts/index.ts +0 -123
  245. package/src/session/compactor.ts +0 -103
  246. package/src/session/index.ts +0 -81
  247. package/src/session/message.ts +0 -42
  248. package/src/tools/file.ts +0 -117
  249. package/src/tools/git.ts +0 -132
  250. package/src/tools/index.ts +0 -108
  251. package/src/tools/search.ts +0 -263
  252. package/src/tools/shell.ts +0 -136
  253. package/src/tools/types.ts +0 -122
  254. package/src/tui/index.ts +0 -8
  255. package/src/tui/input.ts +0 -56
  256. package/src/tui/output.ts +0 -83
  257. package/src/tui/repl.ts +0 -131
  258. package/src/tui/welcome.ts +0 -101
  259. package/src/types.ts +0 -42
  260. package/src/utils/diff.ts +0 -71
  261. package/src/utils/project.ts +0 -99
  262. package/tsconfig.json +0 -19
@@ -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,76 @@
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
+ * Replace the active configuration at runtime.
16
+ * Used by the REPL `/model` / `/provider` commands — the next streamed
17
+ * request will pick up the new model / baseUrl / provider.
18
+ */
19
+ updateConfig(config: AIConfig): void;
20
+ /**
21
+ * Inspect a snapshot of the active configuration (read-only).
22
+ */
23
+ getConfig(): Readonly<AIConfig>;
24
+ /**
25
+ * Register tools for function calling
26
+ */
27
+ registerTool(tool: Tool): void;
28
+ /**
29
+ * Unregister a tool
30
+ */
31
+ unregisterTool(name: string): void;
32
+ /**
33
+ * Get registered tools for API (S02: uses ToolRegistry if available)
34
+ */
35
+ private getToolsForAPI;
36
+ setRegistry(registry: any): void;
37
+ private registry?;
38
+ setHooks(hooks: import('./hooks.js').HookManager): void;
39
+ private hooks?;
40
+ chatStream(messages: ChatMessage[], maxIterations?: number): AsyncGenerator<string, AIResponse, unknown>;
41
+ /**
42
+ * S01 Core: Stream request — yields chunks as they arrive
43
+ * Uses async generator for backpressure control and lazy evaluation
44
+ */
45
+ private streamRequest;
46
+ /**
47
+ * Extract text from streaming chunk based on provider format
48
+ */
49
+ private extractChunkText;
50
+ /**
51
+ * Parse full response text into structured AIResponse
52
+ */
53
+ private parseResponse;
54
+ /**
55
+ * Extract tool calls from response content
56
+ *
57
+ * NOTE: 当前为占位实现,实际不会从流式内容中解析工具调用。这意味着
58
+ * `chatStream` 内的 `if (response.tool_calls ...)` 分支永远不会进入,
59
+ * 已注册的 `Tool` 不会被调用,Agent 等价于一个聊天客户端。这是有意为之的
60
+ * 局限性 — 真实工具调用解析需要每个提供商走 JSON mode / native tool_calls
61
+ * 流(chunks 里的 `delta.tool_calls` 已被 `extractChunkText` 丢弃)。
62
+ * 修复此问题需要更大的重构,不属于 0.2.2 patch 的范围。
63
+ */
64
+ private extractToolCalls;
65
+ /**
66
+ * Original non-streaming chat — now implemented via chatStream
67
+ */
68
+ chat(messages: ChatMessage[], maxIterations?: number): Promise<AIResponse>;
69
+ private executeToolCall;
70
+ private buildOpenAIRequest;
71
+ private buildAnthropicRequest;
72
+ private buildGeminiRequest;
73
+ private getApiKey;
74
+ private getMockResponse;
75
+ }
76
+ //# 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;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAIpC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAI/B;;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;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;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"}