@aituber-onair/chat 0.1.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.ja.md +318 -0
- package/README.md +318 -0
- package/dist/cjs/constants/chat.d.ts +26 -0
- package/dist/cjs/constants/chat.d.ts.map +1 -0
- package/dist/cjs/constants/chat.js +34 -0
- package/dist/cjs/constants/chat.js.map +1 -0
- package/dist/cjs/constants/claude.d.ts +9 -0
- package/dist/cjs/constants/claude.d.ts.map +1 -0
- package/dist/cjs/constants/claude.js +20 -0
- package/dist/cjs/constants/claude.js.map +1 -0
- package/dist/cjs/constants/gemini.d.ts +11 -0
- package/dist/cjs/constants/gemini.d.ts.map +1 -0
- package/dist/cjs/constants/gemini.js +26 -0
- package/dist/cjs/constants/gemini.js.map +1 -0
- package/dist/cjs/constants/index.d.ts +9 -0
- package/dist/cjs/constants/index.d.ts.map +1 -0
- package/dist/cjs/constants/index.js +25 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/constants/openai.d.ts +13 -0
- package/dist/cjs/constants/openai.d.ts.map +1 -0
- package/dist/cjs/constants/openai.js +28 -0
- package/dist/cjs/constants/openai.js.map +1 -0
- package/dist/cjs/constants/prompts.d.ts +3 -0
- package/dist/cjs/constants/prompts.d.ts.map +1 -0
- package/dist/cjs/constants/prompts.js +16 -0
- package/dist/cjs/constants/prompts.js.map +1 -0
- package/dist/cjs/index.d.ts +17 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/services/ChatService.d.ts +51 -0
- package/dist/cjs/services/ChatService.d.ts.map +1 -0
- package/dist/cjs/services/ChatService.js +3 -0
- package/dist/cjs/services/ChatService.js.map +1 -0
- package/dist/cjs/services/ChatServiceFactory.d.ts +39 -0
- package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -0
- package/dist/cjs/services/ChatServiceFactory.js +65 -0
- package/dist/cjs/services/ChatServiceFactory.js.map +1 -0
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +52 -0
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/ChatServiceProvider.js +3 -0
- package/dist/cjs/services/providers/ChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts +142 -0
- package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/claude/ClaudeChatService.js +501 -0
- package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -0
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +40 -0
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +68 -0
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts +104 -0
- package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/gemini/GeminiChatService.js +653 -0
- package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -0
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +40 -0
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +70 -0
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts +110 -0
- package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/openai/OpenAIChatService.js +544 -0
- package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -0
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +40 -0
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +80 -0
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -0
- package/dist/cjs/types/chat.d.ts +46 -0
- package/dist/cjs/types/chat.d.ts.map +1 -0
- package/dist/cjs/types/chat.js +6 -0
- package/dist/cjs/types/chat.js.map +1 -0
- package/dist/cjs/types/index.d.ts +8 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +25 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/mcp.d.ts +37 -0
- package/dist/cjs/types/mcp.d.ts.map +1 -0
- package/dist/cjs/types/mcp.js +6 -0
- package/dist/cjs/types/mcp.js.map +1 -0
- package/dist/cjs/types/toolChat.d.ts +42 -0
- package/dist/cjs/types/toolChat.d.ts.map +1 -0
- package/dist/cjs/types/toolChat.js +3 -0
- package/dist/cjs/types/toolChat.js.map +1 -0
- package/dist/cjs/utils/chatServiceHttpClient.d.ts +47 -0
- package/dist/cjs/utils/chatServiceHttpClient.d.ts.map +1 -0
- package/dist/cjs/utils/chatServiceHttpClient.js +131 -0
- package/dist/cjs/utils/chatServiceHttpClient.js.map +1 -0
- package/dist/cjs/utils/emotionParser.d.ts +46 -0
- package/dist/cjs/utils/emotionParser.d.ts.map +1 -0
- package/dist/cjs/utils/emotionParser.js +59 -0
- package/dist/cjs/utils/emotionParser.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +8 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +24 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/mcpSchemaFetcher.d.ts +19 -0
- package/dist/cjs/utils/mcpSchemaFetcher.d.ts.map +1 -0
- package/dist/cjs/utils/mcpSchemaFetcher.js +98 -0
- package/dist/cjs/utils/mcpSchemaFetcher.js.map +1 -0
- package/dist/cjs/utils/screenplay.d.ts +20 -0
- package/dist/cjs/utils/screenplay.d.ts.map +1 -0
- package/dist/cjs/utils/screenplay.js +41 -0
- package/dist/cjs/utils/screenplay.js.map +1 -0
- package/dist/cjs/utils/streamTextAccumulator.d.ts +25 -0
- package/dist/cjs/utils/streamTextAccumulator.d.ts.map +1 -0
- package/dist/cjs/utils/streamTextAccumulator.js +47 -0
- package/dist/cjs/utils/streamTextAccumulator.js.map +1 -0
- package/dist/esm/constants/chat.d.ts +26 -0
- package/dist/esm/constants/chat.d.ts.map +1 -0
- package/dist/esm/constants/chat.js +30 -0
- package/dist/esm/constants/chat.js.map +1 -0
- package/dist/esm/constants/claude.d.ts +9 -0
- package/dist/esm/constants/claude.d.ts.map +1 -0
- package/dist/esm/constants/claude.js +17 -0
- package/dist/esm/constants/claude.js.map +1 -0
- package/dist/esm/constants/gemini.d.ts +11 -0
- package/dist/esm/constants/gemini.d.ts.map +1 -0
- package/dist/esm/constants/gemini.js +23 -0
- package/dist/esm/constants/gemini.js.map +1 -0
- package/dist/esm/constants/index.d.ts +9 -0
- package/dist/esm/constants/index.d.ts.map +1 -0
- package/dist/esm/constants/index.js +9 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/constants/openai.d.ts +13 -0
- package/dist/esm/constants/openai.d.ts.map +1 -0
- package/dist/esm/constants/openai.js +25 -0
- package/dist/esm/constants/openai.js.map +1 -0
- package/dist/esm/constants/prompts.d.ts +3 -0
- package/dist/esm/constants/prompts.d.ts.map +1 -0
- package/dist/esm/constants/prompts.js +13 -0
- package/dist/esm/constants/prompts.js.map +1 -0
- package/dist/esm/index.d.ts +17 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/services/ChatService.d.ts +51 -0
- package/dist/esm/services/ChatService.d.ts.map +1 -0
- package/dist/esm/services/ChatService.js +2 -0
- package/dist/esm/services/ChatService.js.map +1 -0
- package/dist/esm/services/ChatServiceFactory.d.ts +39 -0
- package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -0
- package/dist/esm/services/ChatServiceFactory.js +61 -0
- package/dist/esm/services/ChatServiceFactory.js.map +1 -0
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +52 -0
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/ChatServiceProvider.js +2 -0
- package/dist/esm/services/providers/ChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/claude/ClaudeChatService.d.ts +142 -0
- package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/claude/ClaudeChatService.js +497 -0
- package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -0
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +40 -0
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +64 -0
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/gemini/GeminiChatService.d.ts +104 -0
- package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/gemini/GeminiChatService.js +649 -0
- package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -0
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +40 -0
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +66 -0
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/openai/OpenAIChatService.d.ts +110 -0
- package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/openai/OpenAIChatService.js +540 -0
- package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -0
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +40 -0
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +76 -0
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -0
- package/dist/esm/types/chat.d.ts +46 -0
- package/dist/esm/types/chat.d.ts.map +1 -0
- package/dist/esm/types/chat.js +5 -0
- package/dist/esm/types/chat.js.map +1 -0
- package/dist/esm/types/index.d.ts +8 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +9 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/mcp.d.ts +37 -0
- package/dist/esm/types/mcp.d.ts.map +1 -0
- package/dist/esm/types/mcp.js +5 -0
- package/dist/esm/types/mcp.js.map +1 -0
- package/dist/esm/types/toolChat.d.ts +42 -0
- package/dist/esm/types/toolChat.d.ts.map +1 -0
- package/dist/esm/types/toolChat.js +2 -0
- package/dist/esm/types/toolChat.js.map +1 -0
- package/dist/esm/utils/chatServiceHttpClient.d.ts +47 -0
- package/dist/esm/utils/chatServiceHttpClient.d.ts.map +1 -0
- package/dist/esm/utils/chatServiceHttpClient.js +126 -0
- package/dist/esm/utils/chatServiceHttpClient.js.map +1 -0
- package/dist/esm/utils/emotionParser.d.ts +46 -0
- package/dist/esm/utils/emotionParser.d.ts.map +1 -0
- package/dist/esm/utils/emotionParser.js +55 -0
- package/dist/esm/utils/emotionParser.js.map +1 -0
- package/dist/esm/utils/index.d.ts +8 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +8 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/mcpSchemaFetcher.d.ts +19 -0
- package/dist/esm/utils/mcpSchemaFetcher.d.ts.map +1 -0
- package/dist/esm/utils/mcpSchemaFetcher.js +94 -0
- package/dist/esm/utils/mcpSchemaFetcher.js.map +1 -0
- package/dist/esm/utils/screenplay.d.ts +20 -0
- package/dist/esm/utils/screenplay.d.ts.map +1 -0
- package/dist/esm/utils/screenplay.js +36 -0
- package/dist/esm/utils/screenplay.js.map +1 -0
- package/dist/esm/utils/streamTextAccumulator.d.ts +25 -0
- package/dist/esm/utils/streamTextAccumulator.d.ts.map +1 -0
- package/dist/esm/utils/streamTextAccumulator.js +43 -0
- package/dist/esm/utils/streamTextAccumulator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Message, MessageWithVision } from '../types';
|
|
2
|
+
import { ToolChatCompletion } from '../types/toolChat';
|
|
3
|
+
/**
|
|
4
|
+
* Chat service interface
|
|
5
|
+
* Abstracts interaction with AI models
|
|
6
|
+
*/
|
|
7
|
+
export interface ChatService {
|
|
8
|
+
/**
|
|
9
|
+
* Get the model name
|
|
10
|
+
* @returns Model name
|
|
11
|
+
*/
|
|
12
|
+
getModel(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get the vision model name
|
|
15
|
+
* @returns Vision model name
|
|
16
|
+
*/
|
|
17
|
+
getVisionModel(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Process chat messages
|
|
20
|
+
* @param messages Array of messages to send
|
|
21
|
+
* @param onPartialResponse Callback to receive each part of streaming response
|
|
22
|
+
* @param onCompleteResponse Callback to execute when response is complete
|
|
23
|
+
*/
|
|
24
|
+
processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Process chat messages with images
|
|
27
|
+
* @param messages Array of messages to send (including images)
|
|
28
|
+
* @param onPartialResponse Callback to receive each part of streaming response
|
|
29
|
+
* @param onCompleteResponse Callback to execute when response is complete
|
|
30
|
+
*/
|
|
31
|
+
processVisionChat(messages: MessageWithVision[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Process chat messages with tools
|
|
34
|
+
* @param messages Array of messages to send
|
|
35
|
+
* @param stream Whether to use streaming
|
|
36
|
+
* @param onPartialResponse Callback for partial responses
|
|
37
|
+
* @param maxTokens Maximum tokens for response (optional)
|
|
38
|
+
* @returns Tool chat completion
|
|
39
|
+
*/
|
|
40
|
+
chatOnce(messages: Message[], stream: boolean, onPartialResponse: (text: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
41
|
+
/**
|
|
42
|
+
* Process chat messages with tools and images
|
|
43
|
+
* @param messages Array of messages to send (including images)
|
|
44
|
+
* @param stream Whether to use streaming
|
|
45
|
+
* @param onPartialResponse Callback for partial responses
|
|
46
|
+
* @param maxTokens Maximum tokens for response (optional)
|
|
47
|
+
* @returns Tool chat completion
|
|
48
|
+
*/
|
|
49
|
+
visionChatOnce(messages: MessageWithVision[], stream: boolean, onPartialResponse: (text: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ChatService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatService.d.ts","sourceRoot":"","sources":["../../../src/services/ChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;;OAGG;IACH,cAAc,IAAI,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,WAAW,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,iBAAiB,CACf,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,OAAO,EACf,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE/B;;;;;;;OAOG;IACH,cAAc,CACZ,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,EAAE,OAAO,EACf,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatService.js","sourceRoot":"","sources":["../../../src/services/ChatService.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChatService } from './ChatService';
|
|
2
|
+
import { ChatServiceOptions, ChatServiceProvider } from './providers/ChatServiceProvider';
|
|
3
|
+
/**
|
|
4
|
+
* Chat service factory
|
|
5
|
+
* Manages and creates various AI providers
|
|
6
|
+
*/
|
|
7
|
+
export declare class ChatServiceFactory {
|
|
8
|
+
/** Map of registered providers */
|
|
9
|
+
private static providers;
|
|
10
|
+
/**
|
|
11
|
+
* Register a new provider
|
|
12
|
+
* @param provider Provider instance
|
|
13
|
+
*/
|
|
14
|
+
static registerProvider(provider: ChatServiceProvider): void;
|
|
15
|
+
/**
|
|
16
|
+
* Create a chat service with the specified provider name and options
|
|
17
|
+
* @param providerName Provider name
|
|
18
|
+
* @param options Service options
|
|
19
|
+
* @returns Created ChatService instance
|
|
20
|
+
*/
|
|
21
|
+
static createChatService(providerName: string, options: ChatServiceOptions): ChatService;
|
|
22
|
+
/**
|
|
23
|
+
* Get registered providers
|
|
24
|
+
* @returns Provider map
|
|
25
|
+
*/
|
|
26
|
+
static getProviders(): Map<string, ChatServiceProvider>;
|
|
27
|
+
/**
|
|
28
|
+
* Get array of available provider names
|
|
29
|
+
* @returns Array of provider names
|
|
30
|
+
*/
|
|
31
|
+
static getAvailableProviders(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Get models supported by the specified provider
|
|
34
|
+
* @param providerName Provider name
|
|
35
|
+
* @returns Array of supported models, empty array if provider doesn't exist
|
|
36
|
+
*/
|
|
37
|
+
static getSupportedModels(providerName: string): string[];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ChatServiceFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatServiceFactory.d.ts","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA+C;IAEvE;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAI5D;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,WAAW;IAQd;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAIxC;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;CAI1D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { OpenAIChatServiceProvider } from './providers/openai/OpenAIChatServiceProvider';
|
|
2
|
+
import { GeminiChatServiceProvider } from './providers/gemini/GeminiChatServiceProvider';
|
|
3
|
+
import { ClaudeChatServiceProvider } from './providers/claude/ClaudeChatServiceProvider';
|
|
4
|
+
/**
|
|
5
|
+
* Chat service factory
|
|
6
|
+
* Manages and creates various AI providers
|
|
7
|
+
*/
|
|
8
|
+
export class ChatServiceFactory {
|
|
9
|
+
/**
|
|
10
|
+
* Register a new provider
|
|
11
|
+
* @param provider Provider instance
|
|
12
|
+
*/
|
|
13
|
+
static registerProvider(provider) {
|
|
14
|
+
this.providers.set(provider.getProviderName(), provider);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a chat service with the specified provider name and options
|
|
18
|
+
* @param providerName Provider name
|
|
19
|
+
* @param options Service options
|
|
20
|
+
* @returns Created ChatService instance
|
|
21
|
+
*/
|
|
22
|
+
static createChatService(providerName, options) {
|
|
23
|
+
const provider = this.providers.get(providerName);
|
|
24
|
+
if (!provider) {
|
|
25
|
+
throw new Error(`Unknown chat provider: ${providerName}`);
|
|
26
|
+
}
|
|
27
|
+
return provider.createChatService(options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get registered providers
|
|
31
|
+
* @returns Provider map
|
|
32
|
+
*/
|
|
33
|
+
static getProviders() {
|
|
34
|
+
return this.providers;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get array of available provider names
|
|
38
|
+
* @returns Array of provider names
|
|
39
|
+
*/
|
|
40
|
+
static getAvailableProviders() {
|
|
41
|
+
return Array.from(this.providers.keys());
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get models supported by the specified provider
|
|
45
|
+
* @param providerName Provider name
|
|
46
|
+
* @returns Array of supported models, empty array if provider doesn't exist
|
|
47
|
+
*/
|
|
48
|
+
static getSupportedModels(providerName) {
|
|
49
|
+
const provider = this.providers.get(providerName);
|
|
50
|
+
return provider ? provider.getSupportedModels() : [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Map of registered providers */
|
|
54
|
+
ChatServiceFactory.providers = new Map();
|
|
55
|
+
// Register OpenAI as a provider
|
|
56
|
+
ChatServiceFactory.registerProvider(new OpenAIChatServiceProvider());
|
|
57
|
+
// Register Gemini as a provider
|
|
58
|
+
ChatServiceFactory.registerProvider(new GeminiChatServiceProvider());
|
|
59
|
+
// Register Claude as a provider
|
|
60
|
+
ChatServiceFactory.registerProvider(new ClaudeChatServiceProvider());
|
|
61
|
+
//# sourceMappingURL=ChatServiceFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatServiceFactory.js","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAEzF;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAI7B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA6B;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CACtB,YAAoB,EACpB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAoB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;;AApDD,kCAAkC;AACnB,4BAAS,GAAqC,IAAI,GAAG,EAAE,CAAC;AAsDzE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACrE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACrE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ChatService } from '../ChatService';
|
|
2
|
+
import { ChatResponseLength } from '../../constants/chat';
|
|
3
|
+
/**
|
|
4
|
+
* Options for chat service providers
|
|
5
|
+
*/
|
|
6
|
+
export interface ChatServiceOptions {
|
|
7
|
+
/** API Key */
|
|
8
|
+
apiKey: string;
|
|
9
|
+
/** Model name */
|
|
10
|
+
model?: string;
|
|
11
|
+
/** Vision model name (for image processing) */
|
|
12
|
+
visionModel?: string;
|
|
13
|
+
/** API endpoint type (chat/completions or responses (OpenAI only)) */
|
|
14
|
+
endpoint?: string;
|
|
15
|
+
/** Response length setting */
|
|
16
|
+
responseLength?: ChatResponseLength;
|
|
17
|
+
/** Additional provider-specific options */
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Chat service provider interface
|
|
22
|
+
* Abstraction for various AI API providers (OpenAI, Gemini, Claude, etc.)
|
|
23
|
+
*/
|
|
24
|
+
export interface ChatServiceProvider {
|
|
25
|
+
/**
|
|
26
|
+
* Create a chat service instance
|
|
27
|
+
* @param options Service options
|
|
28
|
+
* @returns ChatService implementation
|
|
29
|
+
*/
|
|
30
|
+
createChatService(options: ChatServiceOptions): ChatService;
|
|
31
|
+
/**
|
|
32
|
+
* Get the provider name
|
|
33
|
+
* @returns Provider name
|
|
34
|
+
*/
|
|
35
|
+
getProviderName(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the list of supported models
|
|
38
|
+
* @returns Array of supported models
|
|
39
|
+
*/
|
|
40
|
+
getSupportedModels(): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Get the default model
|
|
43
|
+
* @returns Default model name
|
|
44
|
+
*/
|
|
45
|
+
getDefaultModel(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Check if the provider supports vision (image processing)
|
|
48
|
+
* @returns Support status
|
|
49
|
+
*/
|
|
50
|
+
supportsVision(): boolean;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ChatServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,2CAA2C;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAAC;IAE5D;;;OAGG;IACH,eAAe,IAAI,MAAM,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,eAAe,IAAI,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatServiceProvider.js","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { Message, MessageWithVision, ToolChatCompletion, ToolDefinition, MCPServerConfig } from '../../../types';
|
|
3
|
+
import { ChatResponseLength } from '../../../constants/chat';
|
|
4
|
+
export interface ClaudeToolResultBlock {
|
|
5
|
+
type: 'tool_result';
|
|
6
|
+
tool_use_id: string;
|
|
7
|
+
content: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Claude implementation of ChatService
|
|
11
|
+
*/
|
|
12
|
+
export declare class ClaudeChatService implements ChatService {
|
|
13
|
+
/** Provider name */
|
|
14
|
+
readonly provider: string;
|
|
15
|
+
private apiKey;
|
|
16
|
+
private model;
|
|
17
|
+
private visionModel;
|
|
18
|
+
private tools;
|
|
19
|
+
private mcpServers;
|
|
20
|
+
private responseLength?;
|
|
21
|
+
/**
|
|
22
|
+
* Constructor
|
|
23
|
+
* @param apiKey Anthropic API key
|
|
24
|
+
* @param model Name of the model to use
|
|
25
|
+
* @param visionModel Name of the vision model
|
|
26
|
+
* @param tools Array of tool definitions
|
|
27
|
+
* @param mcpServers Array of MCP server configurations (optional)
|
|
28
|
+
* @throws Error if the vision model doesn't support vision capabilities
|
|
29
|
+
*/
|
|
30
|
+
constructor(apiKey: string, model?: string, visionModel?: string, tools?: ToolDefinition[], mcpServers?: MCPServerConfig[], responseLength?: ChatResponseLength);
|
|
31
|
+
/**
|
|
32
|
+
* Get the current model name
|
|
33
|
+
* @returns Model name
|
|
34
|
+
*/
|
|
35
|
+
getModel(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current vision model name
|
|
38
|
+
* @returns Vision model name
|
|
39
|
+
*/
|
|
40
|
+
getVisionModel(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Get configured MCP servers
|
|
43
|
+
* @returns Array of MCP server configurations
|
|
44
|
+
*/
|
|
45
|
+
getMCPServers(): MCPServerConfig[];
|
|
46
|
+
/**
|
|
47
|
+
* Add MCP server configuration
|
|
48
|
+
* @param serverConfig MCP server configuration
|
|
49
|
+
*/
|
|
50
|
+
addMCPServer(serverConfig: MCPServerConfig): void;
|
|
51
|
+
/**
|
|
52
|
+
* Remove MCP server by name
|
|
53
|
+
* @param serverName Name of the server to remove
|
|
54
|
+
*/
|
|
55
|
+
removeMCPServer(serverName: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Check if MCP servers are configured
|
|
58
|
+
* @returns True if MCP servers are configured
|
|
59
|
+
*/
|
|
60
|
+
hasMCPServers(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Process chat messages
|
|
63
|
+
* @param messages Array of messages to send
|
|
64
|
+
* @param onPartialResponse Callback to receive each part of streaming response
|
|
65
|
+
* @param onCompleteResponse Callback to execute when response is complete
|
|
66
|
+
*/
|
|
67
|
+
processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Process chat messages with images
|
|
70
|
+
* @param messages Array of messages to send (including images)
|
|
71
|
+
* @param onPartialResponse Callback to receive each part of streaming response
|
|
72
|
+
* @param onCompleteResponse Callback to execute when response is complete
|
|
73
|
+
*/
|
|
74
|
+
processVisionChat(messages: MessageWithVision[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Convert AITuber OnAir messages to Claude format
|
|
77
|
+
* @param messages Array of messages
|
|
78
|
+
* @returns Claude formatted messages
|
|
79
|
+
*/
|
|
80
|
+
private convertMessagesToClaudeFormat;
|
|
81
|
+
/**
|
|
82
|
+
* Convert AITuber OnAir vision messages to Claude format
|
|
83
|
+
* @param messages Array of vision messages
|
|
84
|
+
* @returns Claude formatted vision messages
|
|
85
|
+
*/
|
|
86
|
+
private convertVisionMessagesToClaudeFormat;
|
|
87
|
+
/**
|
|
88
|
+
* Map AITuber OnAir roles to Claude roles
|
|
89
|
+
* @param role AITuber OnAir role
|
|
90
|
+
* @returns Claude role
|
|
91
|
+
*/
|
|
92
|
+
private mapRoleToClaude;
|
|
93
|
+
/**
|
|
94
|
+
* Get MIME type from URL
|
|
95
|
+
* @param url Image URL
|
|
96
|
+
* @returns MIME type
|
|
97
|
+
*/
|
|
98
|
+
private getMimeTypeFromUrl;
|
|
99
|
+
/**
|
|
100
|
+
* Call Claude API
|
|
101
|
+
* @param messages Array of messages to send
|
|
102
|
+
* @param model Model name
|
|
103
|
+
* @param stream Whether to stream the response
|
|
104
|
+
* @param maxTokens Maximum tokens for response (optional)
|
|
105
|
+
* @returns Response
|
|
106
|
+
*/
|
|
107
|
+
private callClaude;
|
|
108
|
+
/**
|
|
109
|
+
* Parse stream response
|
|
110
|
+
* @param res Response
|
|
111
|
+
* @param onPartial Callback to receive each part of streaming response
|
|
112
|
+
* @returns ClaudeInternalCompletion
|
|
113
|
+
*/
|
|
114
|
+
private parseStream;
|
|
115
|
+
private parsePureStream;
|
|
116
|
+
private parseOneShot;
|
|
117
|
+
/**
|
|
118
|
+
* Process chat messages
|
|
119
|
+
* @param messages Array of messages to send
|
|
120
|
+
* @param stream Whether to stream the response
|
|
121
|
+
* @param onPartial Callback to receive each part of streaming response
|
|
122
|
+
* @param maxTokens Maximum tokens for response (optional)
|
|
123
|
+
* @returns ToolChatCompletion
|
|
124
|
+
*/
|
|
125
|
+
chatOnce(messages: Message[], stream?: boolean, onPartial?: (t: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
126
|
+
/**
|
|
127
|
+
* Process vision chat messages
|
|
128
|
+
* @param messages Array of messages to send
|
|
129
|
+
* @param stream Whether to stream the response
|
|
130
|
+
* @param onPartial Callback to receive each part of streaming response
|
|
131
|
+
* @param maxTokens Maximum tokens for response (optional)
|
|
132
|
+
* @returns ToolChatCompletion
|
|
133
|
+
*/
|
|
134
|
+
visionChatOnce(messages: MessageWithVision[], stream?: boolean, onPartial?: (t: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
135
|
+
/**
|
|
136
|
+
* Convert internal completion to standard ToolChatCompletion
|
|
137
|
+
* @param completion Internal completion result
|
|
138
|
+
* @returns Standard ToolChatCompletion
|
|
139
|
+
*/
|
|
140
|
+
private convertToStandardCompletion;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=ClaudeChatService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EAGhB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAY;IAErC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAqB;IAE5C;;;;;;;;OAQG;gBAED,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAA6B,EACpC,WAAW,GAAE,MAA6B,EAC1C,KAAK,GAAE,cAAc,EAAO,EAC5B,UAAU,GAAE,eAAe,EAAO,EAClC,cAAc,CAAC,EAAE,kBAAkB;IAiBrC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;;OAGG;IACH,YAAY,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI;IAIjD;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMzC;;;OAGG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;OAKG;IACG,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;;;OAKG;IACG,iBAAiB,CACrB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAyBhB;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IASrC;;;;OAIG;IACH,OAAO,CAAC,mCAAmC;IA+D3C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;;;;OAOG;YACW,UAAU;IAmExB;;;;;OAKG;YACW,WAAW;YA4HX,eAAe;IAW7B,OAAO,CAAC,YAAY;IA+CpB;;;;;;;OAOG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,GAAE,OAAc,EACtB,SAAS,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAe,EACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAU9B;;;;;;;OAOG;IACG,cAAc,CAClB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,GAAE,OAAe,EACvB,SAAS,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAe,EACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAe9B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;CAmBpC"}
|