@zds-ai/cli 0.1.6 → 0.1.8

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 (47) hide show
  1. package/dist/agent/llm-agent.d.ts +1 -0
  2. package/dist/agent/llm-agent.js +13 -2
  3. package/dist/agent/llm-agent.js.map +1 -1
  4. package/dist/agent/prompt-variables.d.ts +10 -0
  5. package/dist/agent/prompt-variables.js +56 -2
  6. package/dist/agent/prompt-variables.js.map +1 -1
  7. package/dist/agent/streaming-agent.d.ts +33 -0
  8. package/dist/agent/streaming-agent.js +629 -0
  9. package/dist/agent/streaming-agent.js.map +1 -0
  10. package/dist/bin/encode-speech.sh +64 -0
  11. package/dist/bin/extract-text.sh +66 -0
  12. package/dist/bin/generate_image_sd.sh +4 -0
  13. package/dist/bin/talking-agents.sh +291 -0
  14. package/dist/grok/client.d.ts +2 -0
  15. package/dist/grok/client.js +47 -2
  16. package/dist/grok/client.js.map +1 -1
  17. package/dist/grok/tools.js +57 -4
  18. package/dist/grok/tools.js.map +1 -1
  19. package/dist/hooks/use-enhanced-input.js +3 -1
  20. package/dist/hooks/use-enhanced-input.js.map +1 -1
  21. package/dist/hooks/use-input-handler.js +6 -0
  22. package/dist/hooks/use-input-handler.js.map +1 -1
  23. package/dist/tools/audio-tool.d.ts +13 -0
  24. package/dist/tools/audio-tool.js +55 -0
  25. package/dist/tools/audio-tool.js.map +1 -0
  26. package/dist/tools/image-tool.d.ts +10 -0
  27. package/dist/tools/image-tool.js +92 -12
  28. package/dist/tools/image-tool.js.map +1 -1
  29. package/dist/tools/index.d.ts +11 -10
  30. package/dist/tools/index.js +11 -10
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/introspect-tool.js +224 -2
  33. package/dist/tools/introspect-tool.js.map +1 -1
  34. package/dist/ui/components/chat-input.js +1 -1
  35. package/dist/ui/components/chat-input.js.map +1 -1
  36. package/dist/ui/components/chat-interface.js +1 -1
  37. package/dist/ui/components/chat-interface.js.map +1 -1
  38. package/dist/ui/utils/markdown-renderer.js +2 -2
  39. package/dist/utils/hook-executor.js +3 -3
  40. package/dist/utils/hook-executor.js.map +1 -1
  41. package/dist/utils/path-utils.d.ts +2 -1
  42. package/dist/utils/path-utils.js +25 -4
  43. package/dist/utils/path-utils.js.map +1 -1
  44. package/dist/utils/startup-hook.d.ts +1 -1
  45. package/dist/utils/startup-hook.js +1 -1
  46. package/dist/utils/startup-hook.js.map +1 -1
  47. package/package.json +23 -20
@@ -0,0 +1,629 @@
1
+ import { LLMAgent } from "./llm-agent.js";
2
+ import { getAllLLMTools } from "../grok/tools.js";
3
+ import { parseImagesFromMessage, hasImageReferences } from "../utils/image-encoder.js";
4
+ import { getTextContent } from "../utils/content-utils.js";
5
+ import { Variable } from "./prompt-variables.js";
6
+ import { getSettingsManager } from "../utils/settings-manager.js";
7
+ import { executeOperationHook, applyHookCommands } from "../utils/hook-executor.js";
8
+ // Interval (ms) between token count updates when streaming
9
+ const TOKEN_UPDATE_INTERVAL_MS = 250;
10
+ /**
11
+ * Threshold used to determine whether an AI response is "substantial" (in characters).
12
+ */
13
+ const SUBSTANTIAL_RESPONSE_THRESHOLD = 50;
14
+ /**
15
+ * Extracts the first complete JSON object from a string.
16
+ * Handles duplicate/concatenated JSON objects (LLM bug) like: {"key":"val"}{"key":"val"}
17
+ */
18
+ function extractFirstJsonObject(jsonString) {
19
+ if (!jsonString.includes('}{'))
20
+ return jsonString;
21
+ try {
22
+ let depth = 0;
23
+ let firstObjEnd = -1;
24
+ for (let i = 0; i < jsonString.length; i++) {
25
+ if (jsonString[i] === "{")
26
+ depth++;
27
+ if (jsonString[i] === "}") {
28
+ depth--;
29
+ if (depth === 0) {
30
+ firstObjEnd = i + 1;
31
+ break;
32
+ }
33
+ }
34
+ }
35
+ if (firstObjEnd > 0 && firstObjEnd < jsonString.length) {
36
+ const firstObj = jsonString.substring(0, firstObjEnd);
37
+ JSON.parse(firstObj); // Validate it's valid JSON
38
+ return firstObj;
39
+ }
40
+ }
41
+ catch {
42
+ // If extraction fails, return the original string
43
+ }
44
+ return jsonString;
45
+ }
46
+ /**
47
+ * Cleans up LLM-generated JSON argument strings for tool calls.
48
+ */
49
+ function sanitizeToolArguments(args) {
50
+ let argsString = args?.trim() || "{}";
51
+ const extractedArgsString = extractFirstJsonObject(argsString);
52
+ if (extractedArgsString !== argsString) {
53
+ argsString = extractedArgsString;
54
+ }
55
+ return argsString;
56
+ }
57
+ export class StreamingLLMAgent extends LLMAgent {
58
+ /**
59
+ * Streaming version of processUserMessage that yields chunks as they're processed
60
+ */
61
+ async *processUserMessageStream(message) {
62
+ // Detect rephrase commands
63
+ let isRephraseCommand = false;
64
+ let isSystemRephrase = false;
65
+ let messageToSend = message;
66
+ let messageType = "user";
67
+ let prefillText;
68
+ if (message.startsWith("/system rephrase")) {
69
+ isRephraseCommand = true;
70
+ isSystemRephrase = true;
71
+ messageToSend = message.substring(8).trim();
72
+ messageType = "system";
73
+ const prefillMatch = message.match(/^\/system rephrase\s+(.+)$/);
74
+ if (prefillMatch) {
75
+ prefillText = prefillMatch[1];
76
+ }
77
+ }
78
+ else if (message.startsWith("/rephrase")) {
79
+ isRephraseCommand = true;
80
+ messageToSend = message;
81
+ messageType = "user";
82
+ const prefillMatch = message.match(/^\/rephrase\s+(.+)$/);
83
+ if (prefillMatch) {
84
+ prefillText = prefillMatch[1];
85
+ }
86
+ }
87
+ // Handle rephrase state
88
+ if (isRephraseCommand) {
89
+ let lastAssistantIndex = -1;
90
+ for (let i = this.getChatHistory().length - 1; i >= 0; i--) {
91
+ if (this.getChatHistory()[i].type === "assistant") {
92
+ lastAssistantIndex = i;
93
+ break;
94
+ }
95
+ }
96
+ if (lastAssistantIndex === -1) {
97
+ throw new Error("No previous assistant message to rephrase");
98
+ }
99
+ this.setRephraseState(lastAssistantIndex, this.getChatHistory().length, -1, messageType, prefillText);
100
+ }
101
+ // Handle incomplete tool calls from previous interrupted turn
102
+ const messages = this.getMessages();
103
+ const lastMessage = messages[messages.length - 1];
104
+ if (lastMessage?.role === "assistant" && lastMessage.tool_calls) {
105
+ const toolCallIds = new Set(lastMessage.tool_calls.map((tc) => tc.id));
106
+ const completedToolCallIds = new Set();
107
+ for (let i = messages.length - 1; i >= 0; i--) {
108
+ const msg = messages[i];
109
+ if (msg.role === "tool" && msg.tool_call_id) {
110
+ completedToolCallIds.add(msg.tool_call_id);
111
+ }
112
+ if (messages[i] === lastMessage)
113
+ break;
114
+ }
115
+ for (const toolCallId of toolCallIds) {
116
+ if (!completedToolCallIds.has(toolCallId)) {
117
+ console.error(`Adding cancelled result for incomplete tool call: ${toolCallId}`);
118
+ this.addMessage({
119
+ role: "tool",
120
+ content: "[Cancelled by user]",
121
+ tool_call_id: toolCallId,
122
+ });
123
+ }
124
+ }
125
+ }
126
+ // Clear one-shot variables and execute hooks
127
+ Variable.clearOneShot();
128
+ if (!this.getHasRunInstanceHook()) {
129
+ this.setHasRunInstanceHook(true);
130
+ const settings = getSettingsManager();
131
+ const instanceHookPath = settings.getInstanceHook();
132
+ if (instanceHookPath) {
133
+ const hookResult = await executeOperationHook(instanceHookPath, "instance", {}, 30000, false, this.getCurrentTokenCount(), this.getMaxContextSize());
134
+ if (hookResult.approved && hookResult.commands && hookResult.commands.length > 0) {
135
+ const results = applyHookCommands(hookResult.commands);
136
+ for (const [varName, value] of results.promptVars.entries()) {
137
+ Variable.set(varName, value);
138
+ }
139
+ await this.processHookCommands(results);
140
+ if (results.system) {
141
+ this.addMessage({
142
+ role: 'system',
143
+ content: results.system
144
+ });
145
+ }
146
+ if (results.prefill) {
147
+ this.setHookPrefillText(results.prefill);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ // Parse images and set variables
153
+ const parsed = hasImageReferences(messageToSend)
154
+ ? parseImagesFromMessage(messageToSend)
155
+ : { text: messageToSend, images: [] };
156
+ Variable.set("USER:PROMPT", parsed.text);
157
+ // Execute prePrompt hook
158
+ const hookPath = getSettingsManager().getPrePromptHook();
159
+ if (hookPath) {
160
+ const hookResult = await executeOperationHook(hookPath, "prePrompt", { USER_MESSAGE: parsed.text }, 30000, false, this.getCurrentTokenCount(), this.getMaxContextSize());
161
+ if (hookResult.approved && hookResult.commands) {
162
+ const results = applyHookCommands(hookResult.commands);
163
+ for (const [varName, value] of results.promptVars.entries()) {
164
+ Variable.set(varName, value);
165
+ }
166
+ await this.processHookCommands(results);
167
+ if (results.prefill) {
168
+ this.setHookPrefillText(results.prefill);
169
+ }
170
+ }
171
+ }
172
+ // Assemble final message
173
+ const assembledMessage = Variable.renderFull("USER");
174
+ const supportsVision = this.getLLMClient().getSupportsVision();
175
+ let messageContent = assembledMessage;
176
+ if (messageType === "user" && parsed.images.length > 0 && supportsVision) {
177
+ messageContent = [
178
+ { type: "text", text: assembledMessage },
179
+ ...parsed.images
180
+ ];
181
+ }
182
+ const userEntry = {
183
+ type: messageType,
184
+ content: messageContent,
185
+ originalContent: messageType === "user" ? (parsed.images.length > 0 && supportsVision
186
+ ? [{ type: "text", text: parsed.text }, ...parsed.images]
187
+ : parsed.text) : undefined,
188
+ timestamp: new Date(),
189
+ };
190
+ this.addToChatHistory(userEntry);
191
+ if (messageType === "user") {
192
+ this.addMessage({ role: "user", content: messageContent });
193
+ }
194
+ else {
195
+ this.addMessage({ role: "system", content: typeof messageContent === "string" ? messageContent : assembledMessage });
196
+ }
197
+ await this.emitContextChange();
198
+ yield {
199
+ type: "user_message",
200
+ userEntry: userEntry,
201
+ };
202
+ const maxToolRounds = this.getMaxToolRounds();
203
+ let toolRounds = 0;
204
+ let inputTokens = this.getTokenCounter().countMessageTokens(this.getMessages());
205
+ let totalOutputTokens = 0;
206
+ let lastTokenUpdate = 0;
207
+ try {
208
+ // Handle prefill text
209
+ if (this.getRephraseState()?.prefillText) {
210
+ this.addMessage({
211
+ role: "assistant",
212
+ content: this.getRephraseState().prefillText
213
+ });
214
+ }
215
+ if (this.getHookPrefillText()) {
216
+ this.addMessage({
217
+ role: "assistant",
218
+ content: this.getHookPrefillText()
219
+ });
220
+ }
221
+ const supportsTools = this.getLLMClient().getSupportsTools();
222
+ // Agent loop
223
+ while (toolRounds < maxToolRounds) {
224
+ // Check for cancellation
225
+ if (this.getAbortController()?.signal.aborted) {
226
+ yield {
227
+ type: "content",
228
+ content: "\n\n[Operation cancelled by user]",
229
+ };
230
+ yield { type: "done" };
231
+ return;
232
+ }
233
+ // Update system message with current token count
234
+ this.updateSystemMessageTokenCount(inputTokens);
235
+ // Stream response
236
+ const stream = this.getLLMClient().chatStream(this.getMessages(), supportsTools ? await getAllLLMTools() : [], undefined, this.isGrokModel() && this.shouldUseSearchFor(message)
237
+ ? { search_parameters: { mode: "auto" } }
238
+ : { search_parameters: { mode: "off" } }, this.getTemperature(), this.getAbortController()?.signal, this.getMaxTokens());
239
+ let accumulatedMessage = {};
240
+ let accumulatedContent = "";
241
+ let tool_calls_yielded = false;
242
+ let streamFinished = false;
243
+ let insideThinkTag = false;
244
+ // Handle prefill text
245
+ if (this.getRephraseState()?.prefillText) {
246
+ yield {
247
+ type: "content",
248
+ content: this.getRephraseState().prefillText,
249
+ };
250
+ accumulatedContent = this.getRephraseState().prefillText;
251
+ }
252
+ if (this.getHookPrefillText()) {
253
+ yield {
254
+ type: "content",
255
+ content: this.getHookPrefillText(),
256
+ };
257
+ accumulatedContent = this.getHookPrefillText();
258
+ this.setHookPrefillText(null);
259
+ }
260
+ try {
261
+ for await (const chunk of stream) {
262
+ if (this.getAbortController()?.signal.aborted) {
263
+ yield {
264
+ type: "content",
265
+ content: "\n\n[Operation cancelled by user]",
266
+ };
267
+ yield { type: "done" };
268
+ return;
269
+ }
270
+ if (!chunk.choices?.[0])
271
+ continue;
272
+ if (chunk.choices?.[0]?.finish_reason === "stop" || chunk.choices?.[0]?.finish_reason === "tool_calls") {
273
+ streamFinished = true;
274
+ }
275
+ accumulatedMessage = this.messageReducer(accumulatedMessage, chunk);
276
+ // Yield tool calls when complete
277
+ if (!tool_calls_yielded && accumulatedMessage.tool_calls?.length > 0) {
278
+ const hasCompleteTool = accumulatedMessage.tool_calls.some((tc) => tc.function?.name);
279
+ if (hasCompleteTool) {
280
+ yield {
281
+ type: "tool_calls",
282
+ tool_calls: accumulatedMessage.tool_calls,
283
+ };
284
+ tool_calls_yielded = true;
285
+ }
286
+ }
287
+ // Stream content
288
+ if (chunk.choices[0].delta?.content && !streamFinished) {
289
+ let deltaContent = chunk.choices[0].delta.content;
290
+ // Handle thinking tags
291
+ deltaContent = deltaContent.replace(/<think>[\s\S]*?<\/think>/g, '');
292
+ if (deltaContent.includes('<think>')) {
293
+ insideThinkTag = true;
294
+ deltaContent = deltaContent.substring(0, deltaContent.indexOf('<think>'));
295
+ }
296
+ if (insideThinkTag) {
297
+ if (deltaContent.includes('</think>')) {
298
+ const closeIndex = deltaContent.indexOf('</think>');
299
+ deltaContent = deltaContent.substring(closeIndex + 8);
300
+ insideThinkTag = false;
301
+ }
302
+ else {
303
+ deltaContent = '';
304
+ }
305
+ }
306
+ if (deltaContent === '')
307
+ continue;
308
+ accumulatedContent += deltaContent;
309
+ const currentOutputTokens = this.getTokenCounter().estimateStreamingTokens(accumulatedContent) +
310
+ (accumulatedMessage.tool_calls
311
+ ? this.getTokenCounter().countTokens(JSON.stringify(accumulatedMessage.tool_calls))
312
+ : 0);
313
+ totalOutputTokens = currentOutputTokens;
314
+ yield {
315
+ type: "content",
316
+ content: deltaContent,
317
+ };
318
+ const now = Date.now();
319
+ if (now - lastTokenUpdate > TOKEN_UPDATE_INTERVAL_MS) {
320
+ lastTokenUpdate = now;
321
+ yield {
322
+ type: "token_count",
323
+ tokenCount: inputTokens + totalOutputTokens,
324
+ };
325
+ }
326
+ }
327
+ }
328
+ }
329
+ catch (streamError) {
330
+ if (this.getAbortController()?.signal.aborted || streamError.name === 'AbortError' || streamError.code === 'ABORT_ERR') {
331
+ yield {
332
+ type: "content",
333
+ content: "\n\n[Operation cancelled by user]",
334
+ };
335
+ yield { type: "done" };
336
+ return;
337
+ }
338
+ throw streamError;
339
+ }
340
+ // Parse XML tool calls
341
+ accumulatedMessage = this.parseXMLToolCalls(accumulatedMessage);
342
+ // Clean up tool call arguments
343
+ const cleanedToolCalls = accumulatedMessage.tool_calls?.map(toolCall => {
344
+ let argsString = sanitizeToolArguments(toolCall.function.arguments);
345
+ return {
346
+ ...toolCall,
347
+ function: {
348
+ ...toolCall.function,
349
+ arguments: argsString
350
+ }
351
+ };
352
+ });
353
+ // Add to conversation
354
+ this.addMessage({
355
+ role: "assistant",
356
+ content: accumulatedMessage.content || "(Calling tools to perform this request)",
357
+ tool_calls: cleanedToolCalls,
358
+ });
359
+ const assistantEntry = {
360
+ type: "assistant",
361
+ content: accumulatedMessage.content || "(Calling tools to perform this request)",
362
+ timestamp: new Date(),
363
+ tool_calls: accumulatedMessage.tool_calls,
364
+ };
365
+ this.addToChatHistory(assistantEntry);
366
+ await this.emitContextChange();
367
+ // Update rephrase state if no tool calls
368
+ if (this.getRephraseState() && this.getRephraseState().newResponseIndex === -1 && (!accumulatedMessage.tool_calls || accumulatedMessage.tool_calls.length === 0)) {
369
+ const newResponseIndex = this.getChatHistory().length - 1;
370
+ this.setRephraseState(this.getRephraseState().originalAssistantMessageIndex, this.getRephraseState().rephraseRequestIndex, newResponseIndex, this.getRephraseState().messageType);
371
+ }
372
+ // Handle tool calls
373
+ if (accumulatedMessage.tool_calls?.length > 0) {
374
+ toolRounds++;
375
+ if (!tool_calls_yielded) {
376
+ yield {
377
+ type: "tool_calls",
378
+ tool_calls: accumulatedMessage.tool_calls,
379
+ };
380
+ }
381
+ // Add tool_call entries to chatHistory
382
+ cleanedToolCalls.forEach((toolCall) => {
383
+ const toolCallEntry = {
384
+ type: "tool_call",
385
+ content: "Executing...",
386
+ timestamp: new Date(),
387
+ toolCall: toolCall,
388
+ };
389
+ this.addToChatHistory(toolCallEntry);
390
+ });
391
+ // Execute tools
392
+ let toolIndex = 0;
393
+ const completedToolCallIds = new Set();
394
+ try {
395
+ for (const toolCall of cleanedToolCalls) {
396
+ if (this.getAbortController()?.signal.aborted) {
397
+ console.error(`Tool execution cancelled after ${toolIndex}/${cleanedToolCalls.length} tools`);
398
+ for (let i = toolIndex; i < cleanedToolCalls.length; i++) {
399
+ const remainingToolCall = cleanedToolCalls[i];
400
+ this.addMessage({
401
+ role: "tool",
402
+ content: "[Cancelled by user]",
403
+ tool_call_id: remainingToolCall.id,
404
+ });
405
+ completedToolCallIds.add(remainingToolCall.id);
406
+ }
407
+ yield {
408
+ type: "content",
409
+ content: "\n\n[Operation cancelled by user]",
410
+ };
411
+ yield { type: "done" };
412
+ return;
413
+ }
414
+ const chatHistoryLengthBefore = this.getChatHistory().length;
415
+ const result = await this.executeTool(toolCall);
416
+ // Collect new system messages
417
+ const newSystemMessages = [];
418
+ for (let i = chatHistoryLengthBefore; i < this.getChatHistory().length; i++) {
419
+ if (this.getChatHistory()[i].type === "system") {
420
+ newSystemMessages.push(this.getChatHistory()[i]);
421
+ }
422
+ }
423
+ yield {
424
+ type: "tool_result",
425
+ toolCall,
426
+ toolResult: result,
427
+ systemMessages: newSystemMessages.length > 0 ? newSystemMessages : undefined,
428
+ };
429
+ // Update chatHistory entry
430
+ const entryIndex = this.getChatHistory().findIndex((entry) => entry.type === "tool_call" && entry.toolCall?.id === toolCall.id);
431
+ if (entryIndex !== -1) {
432
+ this.updateChatHistoryEntry(entryIndex, {
433
+ ...this.getChatHistory()[entryIndex],
434
+ type: "tool_result",
435
+ content: result.success
436
+ ? (result.output?.trim() || "Success")
437
+ : (result.error?.trim() || "Error occurred"),
438
+ toolResult: result,
439
+ });
440
+ }
441
+ // Add tool result to messages
442
+ this.addMessage({
443
+ role: "tool",
444
+ content: result.success
445
+ ? result.output || "Success"
446
+ : result.error || "Error",
447
+ tool_call_id: toolCall.id,
448
+ });
449
+ completedToolCallIds.add(toolCall.id);
450
+ toolIndex++;
451
+ }
452
+ }
453
+ finally {
454
+ // Ensure all tool calls have results
455
+ for (const toolCall of cleanedToolCalls) {
456
+ if (!completedToolCallIds.has(toolCall.id)) {
457
+ this.addMessage({
458
+ role: "tool",
459
+ content: "[Error: Tool execution interrupted]",
460
+ tool_call_id: toolCall.id,
461
+ });
462
+ }
463
+ }
464
+ }
465
+ // Add system messages to this.messages
466
+ let assistantIndex = -1;
467
+ for (let i = this.getChatHistory().length - 1; i >= 0; i--) {
468
+ const entry = this.getChatHistory()[i];
469
+ if (entry.type === "assistant" && entry.tool_calls && entry.tool_calls.length > 0) {
470
+ assistantIndex = i;
471
+ break;
472
+ }
473
+ }
474
+ if (assistantIndex !== -1) {
475
+ for (let i = assistantIndex + 1; i < this.getChatHistory().length; i++) {
476
+ const entry = this.getChatHistory()[i];
477
+ const content = getTextContent(entry.content);
478
+ if (entry.type === 'system' && content && content.trim()) {
479
+ this.addMessage({
480
+ role: 'system',
481
+ content: content
482
+ });
483
+ }
484
+ if (entry.type === 'assistant' || entry.type === 'user') {
485
+ break;
486
+ }
487
+ }
488
+ }
489
+ // Update token count
490
+ inputTokens = this.getTokenCounter().countMessageTokens(this.getMessages());
491
+ yield {
492
+ type: "token_count",
493
+ tokenCount: inputTokens + totalOutputTokens,
494
+ };
495
+ }
496
+ else {
497
+ // No tool calls, we're done
498
+ break;
499
+ }
500
+ }
501
+ if (toolRounds >= maxToolRounds) {
502
+ yield {
503
+ type: "content",
504
+ content: "\n\nMaximum tool execution rounds reached. Stopping to prevent infinite loops.",
505
+ };
506
+ }
507
+ this.setFirstMessageProcessed(true);
508
+ const supportsToolsAfter = this.getLLMClient().getSupportsTools();
509
+ if (!supportsToolsAfter && supportsTools) {
510
+ await this.buildSystemMessage();
511
+ }
512
+ yield { type: "done" };
513
+ }
514
+ catch (error) {
515
+ if (this.getAbortController()?.signal.aborted || error.name === 'AbortError' || error.code === 'ABORT_ERR') {
516
+ yield {
517
+ type: "content",
518
+ content: "\n\n[Operation cancelled by user]",
519
+ };
520
+ yield { type: "done" };
521
+ return;
522
+ }
523
+ // Handle context too large error
524
+ if (error.message && error.message.startsWith('CONTEXT_TOO_LARGE:')) {
525
+ const beforeCount = this.getChatHistory().length;
526
+ this.compactContext(20);
527
+ const afterCount = this.getChatHistory().length;
528
+ const removedCount = beforeCount - afterCount;
529
+ yield {
530
+ type: "content",
531
+ content: `Context was too large for backend. Automatically compacted: removed ${removedCount} older messages, keeping last 20 messages. Please retry your request.`,
532
+ };
533
+ this.setFirstMessageProcessed(true);
534
+ yield { type: "done" };
535
+ return;
536
+ }
537
+ yield {
538
+ type: "content",
539
+ content: `Sorry, I encountered an error: ${error.message}`,
540
+ };
541
+ this.setFirstMessageProcessed(true);
542
+ yield { type: "done" };
543
+ }
544
+ }
545
+ /**
546
+ * Non-streaming wrapper that collects all chunks into ChatEntry array
547
+ */
548
+ async processUserMessage(message) {
549
+ const entries = [];
550
+ for await (const chunk of this.processUserMessageStream(message)) {
551
+ if (chunk.type === "user_message" && chunk.userEntry) {
552
+ entries.push(chunk.userEntry);
553
+ }
554
+ }
555
+ // Return the entries that were added to chatHistory during streaming
556
+ // Filter to only return entries that were added during this call
557
+ const currentHistory = this.getChatHistory();
558
+ const startIndex = Math.max(0, currentHistory.length - entries.length - 10); // Buffer for safety
559
+ return currentHistory.slice(startIndex);
560
+ }
561
+ // Protected methods to access parent class private members
562
+ getLLMClient() {
563
+ return this.llmClient;
564
+ }
565
+ getMessages() {
566
+ return this.messages;
567
+ }
568
+ addMessage(message) {
569
+ this.messages.push(message);
570
+ }
571
+ getChatHistory() {
572
+ return this.chatHistory;
573
+ }
574
+ addToChatHistory(entry) {
575
+ this.chatHistory.push(entry);
576
+ }
577
+ updateChatHistoryEntry(index, entry) {
578
+ this.chatHistory[index] = entry;
579
+ }
580
+ getMaxToolRounds() {
581
+ return this.maxToolRounds;
582
+ }
583
+ getTokenCounter() {
584
+ return this.tokenCounter;
585
+ }
586
+ getAbortController() {
587
+ return this.abortController;
588
+ }
589
+ getTemperature() {
590
+ return this.temperature;
591
+ }
592
+ getMaxTokens() {
593
+ return this.maxTokens;
594
+ }
595
+ setFirstMessageProcessed(value) {
596
+ this.firstMessageProcessed = value;
597
+ }
598
+ updateSystemMessageTokenCount(tokenCount) {
599
+ const messages = this.getMessages();
600
+ if (messages.length > 0 && messages[0].role === 'system' && typeof messages[0].content === 'string') {
601
+ messages[0].content = messages[0].content.replace(/Current conversation token usage: .*/, `Current conversation token usage: ${tokenCount}`);
602
+ }
603
+ }
604
+ messageReducer(previous, item) {
605
+ return this.messageReducer(previous, item);
606
+ }
607
+ parseXMLToolCalls(message) {
608
+ return this.parseXMLToolCalls(message);
609
+ }
610
+ isGrokModel() {
611
+ return this.isGrokModel();
612
+ }
613
+ shouldUseSearchFor(message) {
614
+ return this.shouldUseSearchFor(message);
615
+ }
616
+ getHasRunInstanceHook() {
617
+ return this.hasRunInstanceHook;
618
+ }
619
+ setHasRunInstanceHook(value) {
620
+ this.hasRunInstanceHook = value;
621
+ }
622
+ getHookPrefillText() {
623
+ return this.hookPrefillText;
624
+ }
625
+ setHookPrefillText(value) {
626
+ this.hookPrefillText = value;
627
+ }
628
+ }
629
+ //# sourceMappingURL=streaming-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-agent.js","sourceRoot":"","sources":["../../src/agent/streaming-agent.ts"],"names":[],"mappings":"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"}