@aituber-onair/core 0.6.0 → 0.8.0
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/README.md +639 -7
- package/dist/constants/gemini.d.ts +1 -1
- package/dist/constants/gemini.js +1 -1
- package/dist/constants/gemini.js.map +1 -1
- package/dist/core/AITuberOnAirCore.d.ts +32 -1
- package/dist/core/AITuberOnAirCore.js +37 -1
- package/dist/core/AITuberOnAirCore.js.map +1 -1
- package/dist/core/ChatProcessor.d.ts +9 -1
- package/dist/core/ChatProcessor.js +116 -51
- package/dist/core/ChatProcessor.js.map +1 -1
- package/dist/core/MemoryManager.js +10 -9
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/ToolExecutor.d.ts +9 -0
- package/dist/core/ToolExecutor.js +39 -0
- package/dist/core/ToolExecutor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/services/chat/ChatService.d.ts +13 -0
- package/dist/services/chat/providers/claude/ClaudeChatService.d.ts +45 -4
- package/dist/services/chat/providers/claude/ClaudeChatService.js +227 -180
- package/dist/services/chat/providers/claude/ClaudeChatService.js.map +1 -1
- package/dist/services/chat/providers/claude/ClaudeChatServiceProvider.js +1 -1
- package/dist/services/chat/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/services/chat/providers/gemini/GeminiChatService.d.ts +19 -16
- package/dist/services/chat/providers/gemini/GeminiChatService.js +376 -157
- package/dist/services/chat/providers/gemini/GeminiChatService.js.map +1 -1
- package/dist/services/chat/providers/gemini/GeminiChatServiceProvider.js +1 -1
- package/dist/services/chat/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
- package/dist/services/chat/providers/openai/OpenAIChatService.d.ts +21 -3
- package/dist/services/chat/providers/openai/OpenAIChatService.js +205 -114
- package/dist/services/chat/providers/openai/OpenAIChatService.js.map +1 -1
- package/dist/services/chat/providers/openai/OpenAIChatServiceProvider.js +3 -1
- package/dist/services/chat/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
- package/dist/services/voice/VoiceEngineAdapter.js +1 -3
- package/dist/services/voice/VoiceEngineAdapter.js.map +1 -1
- package/dist/services/voice/VoiceService.d.ts +2 -2
- package/dist/services/voice/engines/VoiceEngineFactory.d.ts +2 -2
- package/dist/services/voice/engines/VoicePeakEngine.js +2 -0
- package/dist/services/voice/engines/VoicePeakEngine.js.map +1 -1
- package/dist/services/voice/messages.js +2 -0
- package/dist/services/voice/messages.js.map +1 -1
- package/dist/types/chat.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/toolChat.d.ts +46 -0
- package/dist/types/toolChat.js +2 -0
- package/dist/types/toolChat.js.map +1 -0
- package/dist/types/voice.d.ts +3 -3
- package/dist/types/voice.js +1 -1
- package/dist/types/voice.js.map +1 -1
- package/dist/types/voiceEngine.d.ts +1 -1
- package/package.json +1 -1
- package/dist/constants/api.d.ts +0 -4
- package/dist/constants/api.js +0 -13
- package/dist/constants/api.js.map +0 -1
- package/dist/constants/openaiApi.d.ts +0 -15
- package/dist/constants/openaiApi.js +0 -15
- package/dist/constants/openaiApi.js.map +0 -1
- package/dist/services/chat/ClaudeChatService.d.ts +0 -64
- package/dist/services/chat/ClaudeChatService.js +0 -237
- package/dist/services/chat/ClaudeChatService.js.map +0 -1
- package/dist/services/chat/GeminiChatService.d.ts +0 -63
- package/dist/services/chat/GeminiChatService.js +0 -314
- package/dist/services/chat/GeminiChatService.js.map +0 -1
- package/dist/services/chat/OpenAIChatService.d.ts +0 -39
- package/dist/services/chat/OpenAIChatService.js +0 -171
- package/dist/services/chat/OpenAIChatService.js.map +0 -1
- package/dist/services/chat/OpenAISummarizer.d.ts +0 -25
- package/dist/services/chat/OpenAISummarizer.js +0 -70
- package/dist/services/chat/OpenAISummarizer.js.map +0 -1
- package/dist/services/chat/providers/ClaudeChatServiceProvider.d.ts +0 -39
- package/dist/services/chat/providers/ClaudeChatServiceProvider.js +0 -57
- package/dist/services/chat/providers/ClaudeChatServiceProvider.js.map +0 -1
- package/dist/services/chat/providers/GeminiChatServiceProvider.d.ts +0 -39
- package/dist/services/chat/providers/GeminiChatServiceProvider.js +0 -57
- package/dist/services/chat/providers/GeminiChatServiceProvider.js.map +0 -1
- package/dist/services/chat/providers/OpenAIChatServiceProvider.d.ts +0 -39
- package/dist/services/chat/providers/OpenAIChatServiceProvider.js +0 -57
- package/dist/services/chat/providers/OpenAIChatServiceProvider.js.map +0 -1
package/dist/constants/gemini.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// API Endpoints
|
|
2
|
-
export const ENDPOINT_GEMINI_API = 'https://generativelanguage.googleapis.com
|
|
2
|
+
export const ENDPOINT_GEMINI_API = 'https://generativelanguage.googleapis.com';
|
|
3
3
|
// gemini model
|
|
4
4
|
export const MODEL_GEMINI_2_0_FLASH = 'gemini-2.0-flash';
|
|
5
5
|
export const MODEL_GEMINI_2_0_FLASH_LITE = 'gemini-2.0-flash-lite';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/constants/gemini.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/constants/gemini.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAC,MAAM,mBAAmB,GAAG,2CAA2C,CAAC;AAE/E,eAAe;AACf,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD,mCAAmC;AACnC,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,sBAAsB;IACtB,2BAA2B;IAC3B,sBAAsB;IACtB,8BAA8B;IAC9B,oBAAoB;CACrB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { ChatProcessorOptions } from './ChatProcessor';
|
|
|
3
3
|
import { MemoryOptions } from './MemoryManager';
|
|
4
4
|
import { VoiceServiceOptions } from '../services/voice/VoiceService';
|
|
5
5
|
import { Message, MemoryStorage } from '../types';
|
|
6
|
+
import { ToolDefinition } from '../types/toolChat';
|
|
6
7
|
/**
|
|
7
8
|
* Setting options for AITuberOnAirCore
|
|
8
9
|
*/
|
|
@@ -25,6 +26,11 @@ export interface AITuberOnAirCoreOptions {
|
|
|
25
26
|
debug?: boolean;
|
|
26
27
|
/** ChatService provider-specific options (optional) */
|
|
27
28
|
providerOptions?: Record<string, any>;
|
|
29
|
+
/** Tools */
|
|
30
|
+
tools?: {
|
|
31
|
+
definition: ToolDefinition;
|
|
32
|
+
handler: (input: any) => Promise<any>;
|
|
33
|
+
}[];
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
36
|
* Event types for AITuberOnAirCore
|
|
@@ -43,7 +49,25 @@ export declare enum AITuberOnAirCoreEvent {
|
|
|
43
49
|
/** Speech ended */
|
|
44
50
|
SPEECH_END = "speechEnd",
|
|
45
51
|
/** Error occurred */
|
|
46
|
-
ERROR = "error"
|
|
52
|
+
ERROR = "error",
|
|
53
|
+
/** Tool use */
|
|
54
|
+
TOOL_USE = "toolUse",
|
|
55
|
+
/** Tool result */
|
|
56
|
+
TOOL_RESULT = "toolResult",
|
|
57
|
+
/** Chat history set */
|
|
58
|
+
CHAT_HISTORY_SET = "chatHistorySet",
|
|
59
|
+
/** Chat history cleared */
|
|
60
|
+
CHAT_HISTORY_CLEARED = "chatHistoryCleared",
|
|
61
|
+
/** Memory created */
|
|
62
|
+
MEMORY_CREATED = "memoryCreated",
|
|
63
|
+
/** Memory removed */
|
|
64
|
+
MEMORY_REMOVED = "memoryRemoved",
|
|
65
|
+
/** Memory loaded */
|
|
66
|
+
MEMORY_LOADED = "memoryLoaded",
|
|
67
|
+
/** Memory saved */
|
|
68
|
+
MEMORY_SAVED = "memorySaved",
|
|
69
|
+
/** Storage cleared */
|
|
70
|
+
STORAGE_CLEARED = "storageCleared"
|
|
47
71
|
}
|
|
48
72
|
/**
|
|
49
73
|
* AITuberOnAirCore is a core class that integrates the main features of AITuber
|
|
@@ -58,6 +82,7 @@ export declare class AITuberOnAirCore extends EventEmitter {
|
|
|
58
82
|
private voiceService?;
|
|
59
83
|
private isProcessing;
|
|
60
84
|
private debug;
|
|
85
|
+
private toolExecutor;
|
|
61
86
|
/**
|
|
62
87
|
* Constructor
|
|
63
88
|
* @param options Configuration options
|
|
@@ -113,6 +138,12 @@ export declare class AITuberOnAirCore extends EventEmitter {
|
|
|
113
138
|
* Setup forwarding of ChatProcessor events
|
|
114
139
|
*/
|
|
115
140
|
private setupEventForwarding;
|
|
141
|
+
/**
|
|
142
|
+
* Handle tool use
|
|
143
|
+
* @param blocks Tool use blocks
|
|
144
|
+
* @returns Tool result blocks
|
|
145
|
+
*/
|
|
146
|
+
private handleToolUse;
|
|
116
147
|
/**
|
|
117
148
|
* Output debug log (only in debug mode)
|
|
118
149
|
*/
|
|
@@ -7,6 +7,7 @@ import { textToScreenplay, screenplayToText } from '../utils/screenplay';
|
|
|
7
7
|
import { ChatServiceFactory } from '../services/chat/ChatServiceFactory';
|
|
8
8
|
import { GeminiSummarizer } from '../services/chat/providers/gemini/GeminiSummarizer';
|
|
9
9
|
import { ClaudeSummarizer } from '../services/chat/providers/claude/ClaudeSummarizer';
|
|
10
|
+
import { ToolExecutor } from './ToolExecutor';
|
|
10
11
|
/**
|
|
11
12
|
* Event types for AITuberOnAirCore
|
|
12
13
|
*/
|
|
@@ -26,6 +27,24 @@ export var AITuberOnAirCoreEvent;
|
|
|
26
27
|
AITuberOnAirCoreEvent["SPEECH_END"] = "speechEnd";
|
|
27
28
|
/** Error occurred */
|
|
28
29
|
AITuberOnAirCoreEvent["ERROR"] = "error";
|
|
30
|
+
/** Tool use */
|
|
31
|
+
AITuberOnAirCoreEvent["TOOL_USE"] = "toolUse";
|
|
32
|
+
/** Tool result */
|
|
33
|
+
AITuberOnAirCoreEvent["TOOL_RESULT"] = "toolResult";
|
|
34
|
+
/** Chat history set */
|
|
35
|
+
AITuberOnAirCoreEvent["CHAT_HISTORY_SET"] = "chatHistorySet";
|
|
36
|
+
/** Chat history cleared */
|
|
37
|
+
AITuberOnAirCoreEvent["CHAT_HISTORY_CLEARED"] = "chatHistoryCleared";
|
|
38
|
+
/** Memory created */
|
|
39
|
+
AITuberOnAirCoreEvent["MEMORY_CREATED"] = "memoryCreated";
|
|
40
|
+
/** Memory removed */
|
|
41
|
+
AITuberOnAirCoreEvent["MEMORY_REMOVED"] = "memoryRemoved";
|
|
42
|
+
/** Memory loaded */
|
|
43
|
+
AITuberOnAirCoreEvent["MEMORY_LOADED"] = "memoryLoaded";
|
|
44
|
+
/** Memory saved */
|
|
45
|
+
AITuberOnAirCoreEvent["MEMORY_SAVED"] = "memorySaved";
|
|
46
|
+
/** Storage cleared */
|
|
47
|
+
AITuberOnAirCoreEvent["STORAGE_CLEARED"] = "storageCleared";
|
|
29
48
|
})(AITuberOnAirCoreEvent || (AITuberOnAirCoreEvent = {}));
|
|
30
49
|
/**
|
|
31
50
|
* AITuberOnAirCore is a core class that integrates the main features of AITuber
|
|
@@ -41,14 +60,18 @@ export class AITuberOnAirCore extends EventEmitter {
|
|
|
41
60
|
constructor(options) {
|
|
42
61
|
super();
|
|
43
62
|
this.isProcessing = false;
|
|
63
|
+
this.toolExecutor = new ToolExecutor();
|
|
44
64
|
this.debug = options.debug || false;
|
|
45
65
|
// Determine provider name (default is 'openai')
|
|
46
66
|
const providerName = options.chatProvider || 'openai';
|
|
67
|
+
// Register tools
|
|
68
|
+
options.tools?.forEach((t) => this.toolExecutor.register(t.definition, t.handler));
|
|
47
69
|
// Build chat service options
|
|
48
70
|
const chatServiceOptions = {
|
|
49
71
|
apiKey: options.apiKey,
|
|
50
72
|
model: options.model,
|
|
51
73
|
...options.providerOptions,
|
|
74
|
+
tools: this.toolExecutor.listDefinitions(),
|
|
52
75
|
};
|
|
53
76
|
// Initialize ChatService
|
|
54
77
|
this.chatService = ChatServiceFactory.createChatService(providerName, chatServiceOptions);
|
|
@@ -70,7 +93,7 @@ export class AITuberOnAirCore extends EventEmitter {
|
|
|
70
93
|
this.chatProcessor = new ChatProcessor(this.chatService, {
|
|
71
94
|
...options.chatOptions,
|
|
72
95
|
useMemory: !!this.memoryManager,
|
|
73
|
-
}, this.memoryManager);
|
|
96
|
+
}, this.memoryManager, this.handleToolUse.bind(this));
|
|
74
97
|
// Forward events
|
|
75
98
|
this.setupEventForwarding();
|
|
76
99
|
// Initialize VoiceService (optional)
|
|
@@ -159,12 +182,14 @@ export class AITuberOnAirCore extends EventEmitter {
|
|
|
159
182
|
*/
|
|
160
183
|
setChatHistory(messages) {
|
|
161
184
|
this.chatProcessor.setChatLog(messages);
|
|
185
|
+
this.emit(AITuberOnAirCoreEvent.CHAT_HISTORY_SET, messages);
|
|
162
186
|
}
|
|
163
187
|
/**
|
|
164
188
|
* Clear chat history
|
|
165
189
|
*/
|
|
166
190
|
clearChatHistory() {
|
|
167
191
|
this.chatProcessor.clearChatLog();
|
|
192
|
+
this.emit(AITuberOnAirCoreEvent.CHAT_HISTORY_CLEARED);
|
|
168
193
|
if (this.memoryManager) {
|
|
169
194
|
this.memoryManager.clearAllMemories();
|
|
170
195
|
}
|
|
@@ -280,6 +305,17 @@ export class AITuberOnAirCore extends EventEmitter {
|
|
|
280
305
|
});
|
|
281
306
|
}
|
|
282
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Handle tool use
|
|
310
|
+
* @param blocks Tool use blocks
|
|
311
|
+
* @returns Tool result blocks
|
|
312
|
+
*/
|
|
313
|
+
async handleToolUse(blocks) {
|
|
314
|
+
this.emit(AITuberOnAirCoreEvent.TOOL_USE, blocks);
|
|
315
|
+
const results = await this.toolExecutor.run(blocks);
|
|
316
|
+
this.emit(AITuberOnAirCoreEvent.TOOL_RESULT, results);
|
|
317
|
+
return results;
|
|
318
|
+
}
|
|
283
319
|
/**
|
|
284
320
|
* Output debug log (only in debug mode)
|
|
285
321
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AITuberOnAirCore.js","sourceRoot":"","sources":["../../src/core/AITuberOnAirCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AAMtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"AITuberOnAirCore.js","sourceRoot":"","sources":["../../src/core/AITuberOnAirCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { ChatService } from '../services/chat/ChatService';
|
|
|
2
2
|
import { MemoryManager } from './MemoryManager';
|
|
3
3
|
import { Message, ChatType } from '../types';
|
|
4
4
|
import { EventEmitter } from './EventEmitter';
|
|
5
|
+
import { ToolUseBlock, ToolResultBlock } from '../types/toolChat';
|
|
6
|
+
type ToolCallback = (blocks: ToolUseBlock[]) => Promise<ToolResultBlock[]>;
|
|
5
7
|
/**
|
|
6
8
|
* ChatProcessor options
|
|
7
9
|
*/
|
|
@@ -16,6 +18,8 @@ export interface ChatProcessorOptions {
|
|
|
16
18
|
useMemory: boolean;
|
|
17
19
|
/** Memory note (instructions for AI) */
|
|
18
20
|
memoryNote?: string;
|
|
21
|
+
/** Maximum number of tool call iterations allowed (default: 6) */
|
|
22
|
+
maxHops?: number;
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Core logic for chat processing
|
|
@@ -29,13 +33,15 @@ export declare class ChatProcessor extends EventEmitter {
|
|
|
29
33
|
private chatLog;
|
|
30
34
|
private chatStartTime;
|
|
31
35
|
private processingChat;
|
|
36
|
+
private toolCallback?;
|
|
37
|
+
private readonly MAX_HOPS;
|
|
32
38
|
/**
|
|
33
39
|
* Constructor
|
|
34
40
|
* @param chatService Chat service
|
|
35
41
|
* @param options Configuration options
|
|
36
42
|
* @param memoryManager Memory manager (optional)
|
|
37
43
|
*/
|
|
38
|
-
constructor(chatService: ChatService, options: ChatProcessorOptions, memoryManager?: MemoryManager);
|
|
44
|
+
constructor(chatService: ChatService, options: ChatProcessorOptions, memoryManager?: MemoryManager, toolCallback?: ToolCallback);
|
|
39
45
|
/**
|
|
40
46
|
* Add message to chat log
|
|
41
47
|
* @param message Message to add
|
|
@@ -88,4 +94,6 @@ export declare class ChatProcessor extends EventEmitter {
|
|
|
88
94
|
* @param messages Message array to set as chat log
|
|
89
95
|
*/
|
|
90
96
|
setChatLog(messages: Message[]): void;
|
|
97
|
+
private runToolLoop;
|
|
91
98
|
}
|
|
99
|
+
export {};
|
|
@@ -13,7 +13,7 @@ export class ChatProcessor extends EventEmitter {
|
|
|
13
13
|
* @param options Configuration options
|
|
14
14
|
* @param memoryManager Memory manager (optional)
|
|
15
15
|
*/
|
|
16
|
-
constructor(chatService, options, memoryManager) {
|
|
16
|
+
constructor(chatService, options, memoryManager, toolCallback) {
|
|
17
17
|
super();
|
|
18
18
|
this.chatLog = [];
|
|
19
19
|
this.chatStartTime = 0;
|
|
@@ -21,6 +21,9 @@ export class ChatProcessor extends EventEmitter {
|
|
|
21
21
|
this.chatService = chatService;
|
|
22
22
|
this.options = options;
|
|
23
23
|
this.memoryManager = memoryManager;
|
|
24
|
+
this.toolCallback = toolCallback;
|
|
25
|
+
// Initialize MAX_HOPS from options with default value of 6
|
|
26
|
+
this.MAX_HOPS = options.maxHops ?? 6;
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
29
|
* Add message to chat log
|
|
@@ -68,6 +71,10 @@ export class ChatProcessor extends EventEmitter {
|
|
|
68
71
|
*/
|
|
69
72
|
updateOptions(newOptions) {
|
|
70
73
|
this.options = { ...this.options, ...newOptions };
|
|
74
|
+
// Update MAX_HOPS if maxHops is included in the new options
|
|
75
|
+
if (newOptions.maxHops !== undefined) {
|
|
76
|
+
this.MAX_HOPS = newOptions.maxHops;
|
|
77
|
+
}
|
|
71
78
|
}
|
|
72
79
|
/**
|
|
73
80
|
* Process text chat
|
|
@@ -98,31 +105,8 @@ export class ChatProcessor extends EventEmitter {
|
|
|
98
105
|
if (this.options.useMemory && this.memoryManager) {
|
|
99
106
|
await this.memoryManager.createMemoryIfNeeded(this.chatLog, this.chatStartTime);
|
|
100
107
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
// Process with ChatService
|
|
104
|
-
await this.chatService.processChat(messages, (sentence) => {
|
|
105
|
-
// Process streaming response
|
|
106
|
-
this.emit('assistantPartialResponse', sentence);
|
|
107
|
-
}, async (fullText) => {
|
|
108
|
-
// Process after response
|
|
109
|
-
const assistantMessage = {
|
|
110
|
-
role: 'assistant',
|
|
111
|
-
content: fullText,
|
|
112
|
-
timestamp: Date.now(),
|
|
113
|
-
};
|
|
114
|
-
this.addToChatLog(assistantMessage);
|
|
115
|
-
// Convert to screenplay
|
|
116
|
-
const screenplay = textsToScreenplay([fullText])[0];
|
|
117
|
-
this.emit('assistantResponse', {
|
|
118
|
-
message: assistantMessage,
|
|
119
|
-
screenplay: screenplay,
|
|
120
|
-
});
|
|
121
|
-
// Clean up memory
|
|
122
|
-
if (this.memoryManager) {
|
|
123
|
-
this.memoryManager.cleanupOldMemories();
|
|
124
|
-
}
|
|
125
|
-
});
|
|
108
|
+
const initialMsgs = await this.prepareMessagesForAI();
|
|
109
|
+
await this.runToolLoop(initialMsgs, (msgs, stream, cb) => this.chatService.chatOnce(msgs, stream, cb));
|
|
126
110
|
}
|
|
127
111
|
catch (error) {
|
|
128
112
|
console.error('Error in text chat processing:', error);
|
|
@@ -179,30 +163,7 @@ export class ChatProcessor extends EventEmitter {
|
|
|
179
163
|
},
|
|
180
164
|
],
|
|
181
165
|
};
|
|
182
|
-
|
|
183
|
-
await this.chatService.processVisionChat([...baseMessages, visionMessage], (sentence) => {
|
|
184
|
-
// Process streaming response
|
|
185
|
-
this.emit('assistantPartialResponse', sentence);
|
|
186
|
-
}, async (fullText) => {
|
|
187
|
-
// Process after response
|
|
188
|
-
const assistantMessage = {
|
|
189
|
-
role: 'assistant',
|
|
190
|
-
content: fullText,
|
|
191
|
-
timestamp: Date.now(),
|
|
192
|
-
};
|
|
193
|
-
this.addToChatLog(assistantMessage);
|
|
194
|
-
// Convert to screenplay
|
|
195
|
-
const screenplay = textsToScreenplay([fullText])[0];
|
|
196
|
-
this.emit('assistantResponse', {
|
|
197
|
-
message: assistantMessage,
|
|
198
|
-
screenplay: screenplay,
|
|
199
|
-
visionSource: imageDataUrl,
|
|
200
|
-
});
|
|
201
|
-
// Clean up memory
|
|
202
|
-
if (this.memoryManager) {
|
|
203
|
-
this.memoryManager.cleanupOldMemories();
|
|
204
|
-
}
|
|
205
|
-
});
|
|
166
|
+
await this.runToolLoop([...baseMessages, visionMessage], (msgs, stream, cb) => this.chatService.visionChatOnce(msgs, stream, cb), imageDataUrl);
|
|
206
167
|
}
|
|
207
168
|
catch (error) {
|
|
208
169
|
console.error('Error in vision chat processing:', error);
|
|
@@ -239,7 +200,8 @@ export class ChatProcessor extends EventEmitter {
|
|
|
239
200
|
}
|
|
240
201
|
}
|
|
241
202
|
// Add chat log
|
|
242
|
-
messages.push(...this.chatLog)
|
|
203
|
+
messages.push(...this.chatLog.filter((m) => !(typeof m.content === 'string' && m.content.trim() === '') &&
|
|
204
|
+
!(Array.isArray(m.content) && m.content.length === 0)));
|
|
243
205
|
return messages;
|
|
244
206
|
}
|
|
245
207
|
/**
|
|
@@ -250,5 +212,108 @@ export class ChatProcessor extends EventEmitter {
|
|
|
250
212
|
this.chatLog = Array.isArray(messages) ? [...messages] : [];
|
|
251
213
|
this.emit('chatLogUpdated', this.chatLog);
|
|
252
214
|
}
|
|
215
|
+
async runToolLoop(send, once, visionSource) {
|
|
216
|
+
let toSend = send;
|
|
217
|
+
let hops = 0;
|
|
218
|
+
let first = true;
|
|
219
|
+
// check if the chat service is claude
|
|
220
|
+
const isClaude = this.chatService.provider === 'claude';
|
|
221
|
+
while (hops++ < this.MAX_HOPS) {
|
|
222
|
+
const { blocks, stop_reason } = await once(toSend, first, (t) => this.emit('assistantPartialResponse', t));
|
|
223
|
+
first = false;
|
|
224
|
+
blocks
|
|
225
|
+
.filter((b) => b.type === 'tool_result')
|
|
226
|
+
.forEach((b) => this.emit('assistantPartialResponse', b.content));
|
|
227
|
+
if (stop_reason === 'end') {
|
|
228
|
+
const full = blocks
|
|
229
|
+
.map((b) => b.type === 'text'
|
|
230
|
+
? b.text
|
|
231
|
+
: b.type === 'tool_result'
|
|
232
|
+
? b.content
|
|
233
|
+
: '')
|
|
234
|
+
.join('');
|
|
235
|
+
const assistantMessage = {
|
|
236
|
+
role: 'assistant',
|
|
237
|
+
content: full,
|
|
238
|
+
timestamp: Date.now(),
|
|
239
|
+
};
|
|
240
|
+
this.addToChatLog(assistantMessage);
|
|
241
|
+
const screenplay = textsToScreenplay([full])[0];
|
|
242
|
+
this.emit('assistantResponse', {
|
|
243
|
+
message: assistantMessage,
|
|
244
|
+
screenplay,
|
|
245
|
+
visionSource,
|
|
246
|
+
});
|
|
247
|
+
if (this.memoryManager)
|
|
248
|
+
this.memoryManager.cleanupOldMemories();
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
/* ---------- tool_use ---------- */
|
|
252
|
+
if (!this.toolCallback)
|
|
253
|
+
throw new Error('Tool callback missing');
|
|
254
|
+
const toolUses = blocks.filter((b) => b.type === 'tool_use');
|
|
255
|
+
const toolResults = await this.toolCallback(toolUses);
|
|
256
|
+
const assistantToolCall = isClaude
|
|
257
|
+
? {
|
|
258
|
+
role: 'assistant',
|
|
259
|
+
content: toolUses.map((u) => ({
|
|
260
|
+
type: 'tool_use',
|
|
261
|
+
id: u.id,
|
|
262
|
+
name: u.name,
|
|
263
|
+
input: u.input ?? {},
|
|
264
|
+
})),
|
|
265
|
+
}
|
|
266
|
+
: {
|
|
267
|
+
role: 'assistant',
|
|
268
|
+
content: [],
|
|
269
|
+
tool_calls: toolUses.map((u) => ({
|
|
270
|
+
id: u.id,
|
|
271
|
+
type: 'function',
|
|
272
|
+
function: {
|
|
273
|
+
name: u.name,
|
|
274
|
+
arguments: JSON.stringify(u.input || {}),
|
|
275
|
+
},
|
|
276
|
+
})),
|
|
277
|
+
};
|
|
278
|
+
const toolMsgs = toolResults.map((r) => {
|
|
279
|
+
if (isClaude) {
|
|
280
|
+
return {
|
|
281
|
+
role: 'user',
|
|
282
|
+
content: [
|
|
283
|
+
{
|
|
284
|
+
type: r.type,
|
|
285
|
+
tool_use_id: r.tool_use_id,
|
|
286
|
+
content: r.content,
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
role: 'tool',
|
|
293
|
+
tool_call_id: r.tool_use_id,
|
|
294
|
+
content: r.content,
|
|
295
|
+
};
|
|
296
|
+
});
|
|
297
|
+
/* build messages for the next turn */
|
|
298
|
+
const cleaned = toSend.filter((m) => {
|
|
299
|
+
if (isClaude &&
|
|
300
|
+
m.role === 'assistant' &&
|
|
301
|
+
Array.isArray(m.content) &&
|
|
302
|
+
m.content.length === 0) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
return true;
|
|
306
|
+
});
|
|
307
|
+
if (!(isClaude &&
|
|
308
|
+
Array.isArray(assistantToolCall.content) &&
|
|
309
|
+
assistantToolCall.content.length === 0)) {
|
|
310
|
+
cleaned.push(assistantToolCall);
|
|
311
|
+
}
|
|
312
|
+
toolMsgs.forEach((m) => cleaned.push(m));
|
|
313
|
+
toSend = cleaned;
|
|
314
|
+
}
|
|
315
|
+
// It is rare to reach this point. Just log it.
|
|
316
|
+
console.warn('Tool loop exceeded MAX_HOPS');
|
|
317
|
+
}
|
|
253
318
|
}
|
|
254
319
|
//# sourceMappingURL=ChatProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatProcessor.js","sourceRoot":"","sources":["../../src/core/ChatProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatProcessor.js","sourceRoot":"","sources":["../../src/core/ChatProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AITuberOnAirCoreEvent } from './AITuberOnAirCore';
|
|
1
2
|
import { EventEmitter } from './EventEmitter';
|
|
2
3
|
/**
|
|
3
4
|
* Manager for managing chat history and summarization
|
|
@@ -37,12 +38,12 @@ export class MemoryManager extends EventEmitter {
|
|
|
37
38
|
const loadedMemories = await this.storage.load();
|
|
38
39
|
if (loadedMemories && loadedMemories.length > 0) {
|
|
39
40
|
this.memories = loadedMemories;
|
|
40
|
-
this.emit(
|
|
41
|
+
this.emit(AITuberOnAirCoreEvent.MEMORY_LOADED, loadedMemories);
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
catch (error) {
|
|
44
45
|
console.error('Error loading memories from storage:', error);
|
|
45
|
-
this.emit(
|
|
46
|
+
this.emit(AITuberOnAirCoreEvent.ERROR, error);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
@@ -53,11 +54,11 @@ export class MemoryManager extends EventEmitter {
|
|
|
53
54
|
return;
|
|
54
55
|
try {
|
|
55
56
|
await this.storage.save(this.memories);
|
|
56
|
-
this.emit(
|
|
57
|
+
this.emit(AITuberOnAirCoreEvent.MEMORY_SAVED, this.memories);
|
|
57
58
|
}
|
|
58
59
|
catch (error) {
|
|
59
60
|
console.error('Error saving memories to storage:', error);
|
|
60
|
-
this.emit(
|
|
61
|
+
this.emit(AITuberOnAirCoreEvent.ERROR, error);
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
/**
|
|
@@ -130,7 +131,7 @@ export class MemoryManager extends EventEmitter {
|
|
|
130
131
|
timestamp,
|
|
131
132
|
};
|
|
132
133
|
this.memories.push(memoryRecord);
|
|
133
|
-
this.emit(
|
|
134
|
+
this.emit(AITuberOnAirCoreEvent.MEMORY_CREATED, memoryRecord);
|
|
134
135
|
// Save to storage if available
|
|
135
136
|
await this.saveToStorage();
|
|
136
137
|
}
|
|
@@ -180,7 +181,7 @@ export class MemoryManager extends EventEmitter {
|
|
|
180
181
|
const oldMemories = this.memories.filter((mem) => now - mem.timestamp > retentionPeriod);
|
|
181
182
|
if (oldMemories.length > 0) {
|
|
182
183
|
this.memories = this.memories.filter((mem) => now - mem.timestamp <= retentionPeriod);
|
|
183
|
-
this.emit(
|
|
184
|
+
this.emit(AITuberOnAirCoreEvent.MEMORY_REMOVED, oldMemories);
|
|
184
185
|
// Save to storage if available
|
|
185
186
|
await this.saveToStorage();
|
|
186
187
|
}
|
|
@@ -191,16 +192,16 @@ export class MemoryManager extends EventEmitter {
|
|
|
191
192
|
async clearAllMemories() {
|
|
192
193
|
const oldMemories = [...this.memories];
|
|
193
194
|
this.memories = [];
|
|
194
|
-
this.emit(
|
|
195
|
+
this.emit(AITuberOnAirCoreEvent.MEMORY_REMOVED, oldMemories);
|
|
195
196
|
// Clear storage if available
|
|
196
197
|
if (this.storage) {
|
|
197
198
|
try {
|
|
198
199
|
await this.storage.clear();
|
|
199
|
-
this.emit(
|
|
200
|
+
this.emit(AITuberOnAirCoreEvent.STORAGE_CLEARED);
|
|
200
201
|
}
|
|
201
202
|
catch (error) {
|
|
202
203
|
console.error('Error clearing storage:', error);
|
|
203
|
-
this.emit(
|
|
204
|
+
this.emit(AITuberOnAirCoreEvent.ERROR, error);
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/core/MemoryManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAyC9C;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAM7C;;;;;OAKG;IACH,YACE,OAAsB,EACtB,UAAuB,EACvB,OAAuB;QAEvB,KAAK,EAAE,CAAC;QAdF,aAAQ,GAAmB,EAAE,CAAC;QAepC,IAAI,CAAC,OAAO,GAAG;YACb,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE,GAAG,IAAI,EAAE,mBAAmB;YAC9E,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB;YAC/E,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB;YACjF,8BAA8B,EAC5B,OAAO,CAAC,8BAA8B,IAAI,EAAE;YAC9C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,GAAG;YACjD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,iBAAiB;YACzF,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;SACrD,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,0CAA0C;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/core/MemoryManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ToolDefinition, ToolUseBlock, ToolResultBlock } from '../types/toolChat';
|
|
2
|
+
type Handler<P = any, R = any> = (input: P) => Promise<R>;
|
|
3
|
+
export declare class ToolExecutor {
|
|
4
|
+
private registry;
|
|
5
|
+
register<P, R>(definition: ToolDefinition<P>, fn: Handler<P, R>): void;
|
|
6
|
+
run(blocks: ToolUseBlock[]): Promise<ToolResultBlock[]>;
|
|
7
|
+
listDefinitions(): ToolDefinition[];
|
|
8
|
+
}
|
|
9
|
+
export {};
|