@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.
Files changed (211) hide show
  1. package/README.ja.md +318 -0
  2. package/README.md +318 -0
  3. package/dist/cjs/constants/chat.d.ts +26 -0
  4. package/dist/cjs/constants/chat.d.ts.map +1 -0
  5. package/dist/cjs/constants/chat.js +34 -0
  6. package/dist/cjs/constants/chat.js.map +1 -0
  7. package/dist/cjs/constants/claude.d.ts +9 -0
  8. package/dist/cjs/constants/claude.d.ts.map +1 -0
  9. package/dist/cjs/constants/claude.js +20 -0
  10. package/dist/cjs/constants/claude.js.map +1 -0
  11. package/dist/cjs/constants/gemini.d.ts +11 -0
  12. package/dist/cjs/constants/gemini.d.ts.map +1 -0
  13. package/dist/cjs/constants/gemini.js +26 -0
  14. package/dist/cjs/constants/gemini.js.map +1 -0
  15. package/dist/cjs/constants/index.d.ts +9 -0
  16. package/dist/cjs/constants/index.d.ts.map +1 -0
  17. package/dist/cjs/constants/index.js +25 -0
  18. package/dist/cjs/constants/index.js.map +1 -0
  19. package/dist/cjs/constants/openai.d.ts +13 -0
  20. package/dist/cjs/constants/openai.d.ts.map +1 -0
  21. package/dist/cjs/constants/openai.js +28 -0
  22. package/dist/cjs/constants/openai.js.map +1 -0
  23. package/dist/cjs/constants/prompts.d.ts +3 -0
  24. package/dist/cjs/constants/prompts.d.ts.map +1 -0
  25. package/dist/cjs/constants/prompts.js +16 -0
  26. package/dist/cjs/constants/prompts.js.map +1 -0
  27. package/dist/cjs/index.d.ts +17 -0
  28. package/dist/cjs/index.d.ts.map +1 -0
  29. package/dist/cjs/index.js +45 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/services/ChatService.d.ts +51 -0
  32. package/dist/cjs/services/ChatService.d.ts.map +1 -0
  33. package/dist/cjs/services/ChatService.js +3 -0
  34. package/dist/cjs/services/ChatService.js.map +1 -0
  35. package/dist/cjs/services/ChatServiceFactory.d.ts +39 -0
  36. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -0
  37. package/dist/cjs/services/ChatServiceFactory.js +65 -0
  38. package/dist/cjs/services/ChatServiceFactory.js.map +1 -0
  39. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +52 -0
  40. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -0
  41. package/dist/cjs/services/providers/ChatServiceProvider.js +3 -0
  42. package/dist/cjs/services/providers/ChatServiceProvider.js.map +1 -0
  43. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts +142 -0
  44. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -0
  45. package/dist/cjs/services/providers/claude/ClaudeChatService.js +501 -0
  46. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -0
  47. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +40 -0
  48. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -0
  49. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +68 -0
  50. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -0
  51. package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts +104 -0
  52. package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -0
  53. package/dist/cjs/services/providers/gemini/GeminiChatService.js +653 -0
  54. package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -0
  55. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +40 -0
  56. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -0
  57. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +70 -0
  58. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -0
  59. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts +110 -0
  60. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -0
  61. package/dist/cjs/services/providers/openai/OpenAIChatService.js +544 -0
  62. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -0
  63. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +40 -0
  64. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -0
  65. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +80 -0
  66. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -0
  67. package/dist/cjs/types/chat.d.ts +46 -0
  68. package/dist/cjs/types/chat.d.ts.map +1 -0
  69. package/dist/cjs/types/chat.js +6 -0
  70. package/dist/cjs/types/chat.js.map +1 -0
  71. package/dist/cjs/types/index.d.ts +8 -0
  72. package/dist/cjs/types/index.d.ts.map +1 -0
  73. package/dist/cjs/types/index.js +25 -0
  74. package/dist/cjs/types/index.js.map +1 -0
  75. package/dist/cjs/types/mcp.d.ts +37 -0
  76. package/dist/cjs/types/mcp.d.ts.map +1 -0
  77. package/dist/cjs/types/mcp.js +6 -0
  78. package/dist/cjs/types/mcp.js.map +1 -0
  79. package/dist/cjs/types/toolChat.d.ts +42 -0
  80. package/dist/cjs/types/toolChat.d.ts.map +1 -0
  81. package/dist/cjs/types/toolChat.js +3 -0
  82. package/dist/cjs/types/toolChat.js.map +1 -0
  83. package/dist/cjs/utils/chatServiceHttpClient.d.ts +47 -0
  84. package/dist/cjs/utils/chatServiceHttpClient.d.ts.map +1 -0
  85. package/dist/cjs/utils/chatServiceHttpClient.js +131 -0
  86. package/dist/cjs/utils/chatServiceHttpClient.js.map +1 -0
  87. package/dist/cjs/utils/emotionParser.d.ts +46 -0
  88. package/dist/cjs/utils/emotionParser.d.ts.map +1 -0
  89. package/dist/cjs/utils/emotionParser.js +59 -0
  90. package/dist/cjs/utils/emotionParser.js.map +1 -0
  91. package/dist/cjs/utils/index.d.ts +8 -0
  92. package/dist/cjs/utils/index.d.ts.map +1 -0
  93. package/dist/cjs/utils/index.js +24 -0
  94. package/dist/cjs/utils/index.js.map +1 -0
  95. package/dist/cjs/utils/mcpSchemaFetcher.d.ts +19 -0
  96. package/dist/cjs/utils/mcpSchemaFetcher.d.ts.map +1 -0
  97. package/dist/cjs/utils/mcpSchemaFetcher.js +98 -0
  98. package/dist/cjs/utils/mcpSchemaFetcher.js.map +1 -0
  99. package/dist/cjs/utils/screenplay.d.ts +20 -0
  100. package/dist/cjs/utils/screenplay.d.ts.map +1 -0
  101. package/dist/cjs/utils/screenplay.js +41 -0
  102. package/dist/cjs/utils/screenplay.js.map +1 -0
  103. package/dist/cjs/utils/streamTextAccumulator.d.ts +25 -0
  104. package/dist/cjs/utils/streamTextAccumulator.d.ts.map +1 -0
  105. package/dist/cjs/utils/streamTextAccumulator.js +47 -0
  106. package/dist/cjs/utils/streamTextAccumulator.js.map +1 -0
  107. package/dist/esm/constants/chat.d.ts +26 -0
  108. package/dist/esm/constants/chat.d.ts.map +1 -0
  109. package/dist/esm/constants/chat.js +30 -0
  110. package/dist/esm/constants/chat.js.map +1 -0
  111. package/dist/esm/constants/claude.d.ts +9 -0
  112. package/dist/esm/constants/claude.d.ts.map +1 -0
  113. package/dist/esm/constants/claude.js +17 -0
  114. package/dist/esm/constants/claude.js.map +1 -0
  115. package/dist/esm/constants/gemini.d.ts +11 -0
  116. package/dist/esm/constants/gemini.d.ts.map +1 -0
  117. package/dist/esm/constants/gemini.js +23 -0
  118. package/dist/esm/constants/gemini.js.map +1 -0
  119. package/dist/esm/constants/index.d.ts +9 -0
  120. package/dist/esm/constants/index.d.ts.map +1 -0
  121. package/dist/esm/constants/index.js +9 -0
  122. package/dist/esm/constants/index.js.map +1 -0
  123. package/dist/esm/constants/openai.d.ts +13 -0
  124. package/dist/esm/constants/openai.d.ts.map +1 -0
  125. package/dist/esm/constants/openai.js +25 -0
  126. package/dist/esm/constants/openai.js.map +1 -0
  127. package/dist/esm/constants/prompts.d.ts +3 -0
  128. package/dist/esm/constants/prompts.d.ts.map +1 -0
  129. package/dist/esm/constants/prompts.js +13 -0
  130. package/dist/esm/constants/prompts.js.map +1 -0
  131. package/dist/esm/index.d.ts +17 -0
  132. package/dist/esm/index.d.ts.map +1 -0
  133. package/dist/esm/index.js +21 -0
  134. package/dist/esm/index.js.map +1 -0
  135. package/dist/esm/services/ChatService.d.ts +51 -0
  136. package/dist/esm/services/ChatService.d.ts.map +1 -0
  137. package/dist/esm/services/ChatService.js +2 -0
  138. package/dist/esm/services/ChatService.js.map +1 -0
  139. package/dist/esm/services/ChatServiceFactory.d.ts +39 -0
  140. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -0
  141. package/dist/esm/services/ChatServiceFactory.js +61 -0
  142. package/dist/esm/services/ChatServiceFactory.js.map +1 -0
  143. package/dist/esm/services/providers/ChatServiceProvider.d.ts +52 -0
  144. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -0
  145. package/dist/esm/services/providers/ChatServiceProvider.js +2 -0
  146. package/dist/esm/services/providers/ChatServiceProvider.js.map +1 -0
  147. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts +142 -0
  148. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -0
  149. package/dist/esm/services/providers/claude/ClaudeChatService.js +497 -0
  150. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -0
  151. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +40 -0
  152. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -0
  153. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +64 -0
  154. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -0
  155. package/dist/esm/services/providers/gemini/GeminiChatService.d.ts +104 -0
  156. package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -0
  157. package/dist/esm/services/providers/gemini/GeminiChatService.js +649 -0
  158. package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -0
  159. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +40 -0
  160. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -0
  161. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +66 -0
  162. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -0
  163. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts +110 -0
  164. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -0
  165. package/dist/esm/services/providers/openai/OpenAIChatService.js +540 -0
  166. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -0
  167. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +40 -0
  168. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -0
  169. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +76 -0
  170. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -0
  171. package/dist/esm/types/chat.d.ts +46 -0
  172. package/dist/esm/types/chat.d.ts.map +1 -0
  173. package/dist/esm/types/chat.js +5 -0
  174. package/dist/esm/types/chat.js.map +1 -0
  175. package/dist/esm/types/index.d.ts +8 -0
  176. package/dist/esm/types/index.d.ts.map +1 -0
  177. package/dist/esm/types/index.js +9 -0
  178. package/dist/esm/types/index.js.map +1 -0
  179. package/dist/esm/types/mcp.d.ts +37 -0
  180. package/dist/esm/types/mcp.d.ts.map +1 -0
  181. package/dist/esm/types/mcp.js +5 -0
  182. package/dist/esm/types/mcp.js.map +1 -0
  183. package/dist/esm/types/toolChat.d.ts +42 -0
  184. package/dist/esm/types/toolChat.d.ts.map +1 -0
  185. package/dist/esm/types/toolChat.js +2 -0
  186. package/dist/esm/types/toolChat.js.map +1 -0
  187. package/dist/esm/utils/chatServiceHttpClient.d.ts +47 -0
  188. package/dist/esm/utils/chatServiceHttpClient.d.ts.map +1 -0
  189. package/dist/esm/utils/chatServiceHttpClient.js +126 -0
  190. package/dist/esm/utils/chatServiceHttpClient.js.map +1 -0
  191. package/dist/esm/utils/emotionParser.d.ts +46 -0
  192. package/dist/esm/utils/emotionParser.d.ts.map +1 -0
  193. package/dist/esm/utils/emotionParser.js +55 -0
  194. package/dist/esm/utils/emotionParser.js.map +1 -0
  195. package/dist/esm/utils/index.d.ts +8 -0
  196. package/dist/esm/utils/index.d.ts.map +1 -0
  197. package/dist/esm/utils/index.js +8 -0
  198. package/dist/esm/utils/index.js.map +1 -0
  199. package/dist/esm/utils/mcpSchemaFetcher.d.ts +19 -0
  200. package/dist/esm/utils/mcpSchemaFetcher.d.ts.map +1 -0
  201. package/dist/esm/utils/mcpSchemaFetcher.js +94 -0
  202. package/dist/esm/utils/mcpSchemaFetcher.js.map +1 -0
  203. package/dist/esm/utils/screenplay.d.ts +20 -0
  204. package/dist/esm/utils/screenplay.d.ts.map +1 -0
  205. package/dist/esm/utils/screenplay.js +36 -0
  206. package/dist/esm/utils/screenplay.js.map +1 -0
  207. package/dist/esm/utils/streamTextAccumulator.d.ts +25 -0
  208. package/dist/esm/utils/streamTextAccumulator.d.ts.map +1 -0
  209. package/dist/esm/utils/streamTextAccumulator.js +43 -0
  210. package/dist/esm/utils/streamTextAccumulator.js.map +1 -0
  211. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatService.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ChatServiceProvider.js.map
@@ -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"}