@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,76 @@
1
+ import { ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, ENDPOINT_OPENAI_RESPONSES_API, MODEL_GPT_4_1, MODEL_GPT_4_1_MINI, MODEL_GPT_4_1_NANO, MODEL_GPT_4O_MINI, MODEL_GPT_4O, MODEL_O3_MINI, MODEL_O1_MINI, MODEL_O1, MODEL_GPT_4_5_PREVIEW, VISION_SUPPORTED_MODELS, } from '../../../constants';
2
+ import { OpenAIChatService } from './OpenAIChatService';
3
+ /**
4
+ * OpenAI API provider implementation
5
+ */
6
+ export class OpenAIChatServiceProvider {
7
+ /**
8
+ * Create a chat service instance
9
+ * @param options Service options
10
+ * @returns OpenAIChatService instance
11
+ */
12
+ createChatService(options) {
13
+ // Use the visionModel if provided, otherwise use the model that supports vision
14
+ const visionModel = options.visionModel ||
15
+ (this.supportsVisionForModel(options.model || this.getDefaultModel())
16
+ ? options.model
17
+ : this.getDefaultModel());
18
+ // tools definition
19
+ const tools = options.tools;
20
+ // if MCP servers are set, automatically use Responses API
21
+ const mcpServers = options.mcpServers ?? [];
22
+ const shouldUseResponsesAPI = mcpServers.length > 0;
23
+ const endpoint = options.endpoint ||
24
+ (shouldUseResponsesAPI
25
+ ? ENDPOINT_OPENAI_RESPONSES_API
26
+ : ENDPOINT_OPENAI_CHAT_COMPLETIONS_API);
27
+ return new OpenAIChatService(options.apiKey, options.model || this.getDefaultModel(), visionModel, tools, endpoint, mcpServers, options.responseLength);
28
+ }
29
+ /**
30
+ * Get the provider name
31
+ * @returns Provider name ('openai')
32
+ */
33
+ getProviderName() {
34
+ return 'openai';
35
+ }
36
+ /**
37
+ * Get the list of supported models
38
+ * @returns Array of supported model names
39
+ */
40
+ getSupportedModels() {
41
+ return [
42
+ MODEL_GPT_4_1,
43
+ MODEL_GPT_4_1_MINI,
44
+ MODEL_GPT_4_1_NANO,
45
+ MODEL_GPT_4O_MINI,
46
+ MODEL_GPT_4O,
47
+ MODEL_O3_MINI,
48
+ MODEL_O1_MINI,
49
+ MODEL_O1,
50
+ MODEL_GPT_4_5_PREVIEW,
51
+ ];
52
+ }
53
+ /**
54
+ * Get the default model
55
+ * @returns Default model name
56
+ */
57
+ getDefaultModel() {
58
+ return MODEL_GPT_4O_MINI;
59
+ }
60
+ /**
61
+ * Check if this provider supports vision (image processing)
62
+ * @returns Vision support status (true)
63
+ */
64
+ supportsVision() {
65
+ return true;
66
+ }
67
+ /**
68
+ * Check if a specific model supports vision capabilities
69
+ * @param model The model name to check
70
+ * @returns True if the model supports vision, false otherwise
71
+ */
72
+ supportsVisionForModel(model) {
73
+ return VISION_SUPPORTED_MODELS.includes(model);
74
+ }
75
+ }
76
+ //# sourceMappingURL=OpenAIChatServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openai/OpenAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,gFAAgF;QAChF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnE,CAAC,CAAC,OAAO,CAAC,KAAK;gBACf,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE9B,mBAAmB;QACnB,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAE1D,0DAA0D;QAC1D,MAAM,UAAU,GAAI,OAAe,CAAC,UAAU,IAAI,EAAE,CAAC;QACrD,MAAM,qBAAqB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,CAAC,qBAAqB;gBACpB,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAE5C,OAAO,IAAI,iBAAiB,CAC1B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,KAAK,EACL,QAAQ,EACR,UAAU,EACV,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,OAAO;YACL,aAAa;YACb,kBAAkB;YAClB,kBAAkB;YAClB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,aAAa;YACb,QAAQ;YACR,qBAAqB;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * AITuber OnAir Core type definitions
3
+ */
4
+ /**
5
+ * Chat message basic type
6
+ */
7
+ export interface Message {
8
+ role: 'system' | 'user' | 'assistant' | 'tool';
9
+ content: string;
10
+ timestamp?: number;
11
+ }
12
+ /**
13
+ * Vision block type for image content
14
+ */
15
+ export type VisionBlock = {
16
+ type: 'text';
17
+ text: string;
18
+ } | {
19
+ type: 'image_url';
20
+ image_url: {
21
+ url: string;
22
+ detail?: 'low' | 'high' | 'auto';
23
+ };
24
+ };
25
+ /**
26
+ * Message type corresponding to vision (image)
27
+ */
28
+ export interface MessageWithVision {
29
+ role: 'system' | 'user' | 'assistant' | 'tool';
30
+ content: string | VisionBlock[];
31
+ }
32
+ /**
33
+ * Chat type
34
+ * - chatForm: Chat from text input
35
+ * - youtube: Chat from YouTube comments
36
+ * - vision: Chat from vision (image)
37
+ */
38
+ export type ChatType = 'chatForm' | 'youtube' | 'vision';
39
+ /**
40
+ * screenplay (text with emotion)
41
+ */
42
+ export interface Screenplay {
43
+ text: string;
44
+ emotion?: string;
45
+ }
46
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/types/chat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;KAClC,CAAC;CACH,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * AITuber OnAir Core type definitions
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/types/chat.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * AITuber OnAir Chat type definitions
3
+ * Index file: Export all type definitions from here
4
+ */
5
+ export { Message, MessageWithVision, VisionBlock, ChatType, Screenplay, } from './chat';
6
+ export * from './toolChat';
7
+ export * from './mcp';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,UAAU,GACX,MAAM,QAAQ,CAAC;AAGhB,cAAc,YAAY,CAAC;AAG3B,cAAc,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * AITuber OnAir Chat type definitions
3
+ * Index file: Export all type definitions from here
4
+ */
5
+ // Tool related type definitions
6
+ export * from './toolChat';
7
+ // MCP related type definitions
8
+ export * from './mcp';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,gCAAgC;AAChC,cAAc,YAAY,CAAC;AAE3B,+BAA+B;AAC/B,cAAc,OAAO,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Model Context Protocol (MCP) related types
3
+ */
4
+ /**
5
+ * MCP server configuration for MCP connector
6
+ * This is a standard configuration format that may be used by multiple providers
7
+ */
8
+ export interface MCPServerConfig {
9
+ type: 'url';
10
+ url: string;
11
+ name: string;
12
+ tool_configuration?: {
13
+ enabled?: boolean;
14
+ allowed_tools?: string[];
15
+ };
16
+ authorization_token?: string;
17
+ }
18
+ /**
19
+ * Claude-specific MCP tool use block (internal type for Claude)
20
+ */
21
+ export interface ClaudeMCPToolUseBlock {
22
+ type: 'mcp_tool_use';
23
+ id: string;
24
+ name: string;
25
+ server_name: string;
26
+ input: any;
27
+ }
28
+ /**
29
+ * Claude-specific MCP tool result block (internal type for Claude)
30
+ */
31
+ export interface ClaudeMCPToolResultBlock {
32
+ type: 'mcp_tool_result';
33
+ tool_use_id: string;
34
+ is_error: boolean;
35
+ content: any[];
36
+ }
37
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Model Context Protocol (MCP) related types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,42 @@
1
+ export interface TextBlock {
2
+ type: 'text';
3
+ text: string;
4
+ }
5
+ export interface ToolUseBlock<P = any> {
6
+ type: 'tool_use';
7
+ id: string;
8
+ name: string;
9
+ input: P;
10
+ }
11
+ export interface ToolResultBlock {
12
+ type: 'tool_result';
13
+ tool_use_id: string;
14
+ content: string;
15
+ }
16
+ export type CoreToolChatBlock = TextBlock | ToolUseBlock | ToolResultBlock;
17
+ export interface ToolChatCompletion<B = CoreToolChatBlock> {
18
+ blocks: B[];
19
+ stop_reason: 'tool_use' | 'end';
20
+ }
21
+ export type ToolChatBlock = CoreToolChatBlock;
22
+ export type ToolDefinition = {
23
+ name: string;
24
+ description?: string;
25
+ parameters: {
26
+ type: 'object';
27
+ properties?: Record<string, {
28
+ type?: string;
29
+ description?: string;
30
+ enum?: any[];
31
+ items?: any;
32
+ required?: string[];
33
+ [key: string]: any;
34
+ }>;
35
+ required?: string[];
36
+ [key: string]: any;
37
+ };
38
+ config?: {
39
+ timeoutMs?: number;
40
+ };
41
+ };
42
+ //# sourceMappingURL=toolChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolChat.d.ts","sourceRoot":"","sources":["../../../src/types/toolChat.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC;AAE3E,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,iBAAiB;IACvD,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,WAAW,EAAE,UAAU,GAAG,KAAK,CAAC;CACjC;AACD,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CACjB,MAAM,EACN;YACE,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,EAAE,GAAG,CAAC;YACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACpB,CACF,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toolChat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolChat.js","sourceRoot":"","sources":["../../../src/types/toolChat.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * HTTP client options
3
+ */
4
+ export interface HttpClientOptions {
5
+ headers?: Record<string, string>;
6
+ timeout?: number;
7
+ retries?: number;
8
+ retryDelay?: number;
9
+ }
10
+ /**
11
+ * HTTP error response
12
+ */
13
+ export declare class HttpError extends Error {
14
+ status: number;
15
+ statusText: string;
16
+ body: string;
17
+ constructor(status: number, statusText: string, body: string);
18
+ }
19
+ /**
20
+ * Unified HTTP client for chat services
21
+ */
22
+ export declare class ChatServiceHttpClient {
23
+ /**
24
+ * Make a POST request with common error handling
25
+ * @param url Request URL
26
+ * @param body Request body
27
+ * @param headers Request headers
28
+ * @param options Additional options
29
+ * @returns Response object
30
+ */
31
+ static post(url: string, body: any, headers?: Record<string, string>, options?: HttpClientOptions): Promise<Response>;
32
+ /**
33
+ * Handle error response and throw appropriate error
34
+ * @param res Response object
35
+ * @returns Never (always throws)
36
+ */
37
+ static handleErrorResponse(res: Response): Promise<never>;
38
+ /**
39
+ * Make a GET request (for fetching images, etc.)
40
+ * @param url Request URL
41
+ * @param headers Request headers
42
+ * @param options Additional options
43
+ * @returns Response object
44
+ */
45
+ static get(url: string, headers?: Record<string, string>, options?: HttpClientOptions): Promise<Response>;
46
+ }
47
+ //# sourceMappingURL=chatServiceHttpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatServiceHttpClient.d.ts","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAEzB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,MAAM;IAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAKtB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;OAOG;WACU,IAAI,CACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IA6DpB;;;;OAIG;WACU,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/D;;;;;;OAMG;WACU,GAAG,CACd,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;CAoDrB"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * HTTP error response
3
+ */
4
+ export class HttpError extends Error {
5
+ constructor(status, statusText, body) {
6
+ super(`HTTP ${status}: ${statusText}`);
7
+ this.status = status;
8
+ this.statusText = statusText;
9
+ this.body = body;
10
+ this.name = 'HttpError';
11
+ }
12
+ }
13
+ /**
14
+ * Unified HTTP client for chat services
15
+ */
16
+ export class ChatServiceHttpClient {
17
+ /**
18
+ * Make a POST request with common error handling
19
+ * @param url Request URL
20
+ * @param body Request body
21
+ * @param headers Request headers
22
+ * @param options Additional options
23
+ * @returns Response object
24
+ */
25
+ static async post(url, body, headers = {}, options = {}) {
26
+ const { timeout = 30000, retries = 0, retryDelay = 1000 } = options;
27
+ // Default headers
28
+ const defaultHeaders = {
29
+ 'Content-Type': 'application/json',
30
+ };
31
+ const finalHeaders = { ...defaultHeaders, ...headers };
32
+ let lastError = null;
33
+ for (let attempt = 0; attempt <= retries; attempt++) {
34
+ try {
35
+ const controller = new AbortController();
36
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
37
+ const response = await fetch(url, {
38
+ method: 'POST',
39
+ headers: finalHeaders,
40
+ body: typeof body === 'string' ? body : JSON.stringify(body),
41
+ signal: controller.signal,
42
+ });
43
+ clearTimeout(timeoutId);
44
+ if (!response.ok) {
45
+ const errorBody = await response.text();
46
+ throw new HttpError(response.status, response.statusText, errorBody);
47
+ }
48
+ return response;
49
+ }
50
+ catch (error) {
51
+ lastError = error;
52
+ // Don't retry on client errors (4xx)
53
+ if (error instanceof HttpError &&
54
+ error.status >= 400 &&
55
+ error.status < 500) {
56
+ throw error;
57
+ }
58
+ // Don't retry if aborted
59
+ if (error instanceof Error && error.name === 'AbortError') {
60
+ throw new Error(`Request timeout after ${timeout}ms`);
61
+ }
62
+ // Wait before retrying
63
+ if (attempt < retries) {
64
+ await new Promise((resolve) => setTimeout(resolve, retryDelay * (attempt + 1)));
65
+ }
66
+ }
67
+ }
68
+ throw lastError || new Error('Request failed');
69
+ }
70
+ /**
71
+ * Handle error response and throw appropriate error
72
+ * @param res Response object
73
+ * @returns Never (always throws)
74
+ */
75
+ static async handleErrorResponse(res) {
76
+ const errorBody = await res.text();
77
+ throw new HttpError(res.status, res.statusText, errorBody);
78
+ }
79
+ /**
80
+ * Make a GET request (for fetching images, etc.)
81
+ * @param url Request URL
82
+ * @param headers Request headers
83
+ * @param options Additional options
84
+ * @returns Response object
85
+ */
86
+ static async get(url, headers = {}, options = {}) {
87
+ const { timeout = 30000, retries = 0, retryDelay = 1000 } = options;
88
+ let lastError = null;
89
+ for (let attempt = 0; attempt <= retries; attempt++) {
90
+ try {
91
+ const controller = new AbortController();
92
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
93
+ const response = await fetch(url, {
94
+ method: 'GET',
95
+ headers,
96
+ signal: controller.signal,
97
+ });
98
+ clearTimeout(timeoutId);
99
+ if (!response.ok) {
100
+ const errorBody = await response.text();
101
+ throw new HttpError(response.status, response.statusText, errorBody);
102
+ }
103
+ return response;
104
+ }
105
+ catch (error) {
106
+ lastError = error;
107
+ // Don't retry on client errors (4xx)
108
+ if (error instanceof HttpError &&
109
+ error.status >= 400 &&
110
+ error.status < 500) {
111
+ throw error;
112
+ }
113
+ // Don't retry if aborted
114
+ if (error instanceof Error && error.name === 'AbortError') {
115
+ throw new Error(`Request timeout after ${timeout}ms`);
116
+ }
117
+ // Wait before retrying
118
+ if (attempt < retries) {
119
+ await new Promise((resolve) => setTimeout(resolve, retryDelay * (attempt + 1)));
120
+ }
121
+ }
122
+ }
123
+ throw lastError || new Error('Request failed');
124
+ }
125
+ }
126
+ //# sourceMappingURL=chatServiceHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatServiceHttpClient.js","sourceRoot":"","sources":["../../../src/utils/chatServiceHttpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ declare const emotions: readonly ["happy", "sad", "angry", "surprised", "neutral"];
2
+ type EmotionType = (typeof emotions)[number];
3
+ /**
4
+ * Regular expressions for emotion tag parsing
5
+ */
6
+ export declare const EMOTION_TAG_REGEX: RegExp;
7
+ export declare const EMOTION_TAG_CLEANUP_REGEX: RegExp;
8
+ /**
9
+ * Result of emotion extraction
10
+ */
11
+ export interface EmotionExtractionResult {
12
+ emotion?: string;
13
+ cleanText: string;
14
+ }
15
+ /**
16
+ * Utility class for parsing and handling emotion tags in text
17
+ */
18
+ export declare class EmotionParser {
19
+ /**
20
+ * Extract emotion from text and return clean text
21
+ * @param text Text that may contain emotion tags like [happy]
22
+ * @returns Object containing extracted emotion and clean text
23
+ */
24
+ static extractEmotion(text: string): EmotionExtractionResult;
25
+ /**
26
+ * Check if an emotion is valid
27
+ * @param emotion Emotion string to validate
28
+ * @returns True if the emotion is valid
29
+ */
30
+ static isValidEmotion(emotion: string): emotion is EmotionType;
31
+ /**
32
+ * Remove all emotion tags from text
33
+ * @param text Text containing emotion tags
34
+ * @returns Clean text without emotion tags
35
+ */
36
+ static cleanEmotionTags(text: string): string;
37
+ /**
38
+ * Add emotion tag to text
39
+ * @param emotion Emotion to add
40
+ * @param text Text content
41
+ * @returns Text with emotion tag prepended
42
+ */
43
+ static addEmotionTag(emotion: string, text: string): string;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=emotionParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotionParser.d.ts","sourceRoot":"","sources":["../../../src/utils/emotionParser.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,QAAQ,4DAA6D,CAAC;AAC5E,KAAK,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AACjD,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAe5D;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW;IAI9D;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;CAG5D"}
@@ -0,0 +1,55 @@
1
+ // Define emotion types and list locally to avoid dependency on voice package
2
+ const emotions = ['happy', 'sad', 'angry', 'surprised', 'neutral'];
3
+ /**
4
+ * Regular expressions for emotion tag parsing
5
+ */
6
+ export const EMOTION_TAG_REGEX = /\[([a-z]+)\]/i;
7
+ export const EMOTION_TAG_CLEANUP_REGEX = /\[[a-z]+\]\s*/gi;
8
+ /**
9
+ * Utility class for parsing and handling emotion tags in text
10
+ */
11
+ export class EmotionParser {
12
+ /**
13
+ * Extract emotion from text and return clean text
14
+ * @param text Text that may contain emotion tags like [happy]
15
+ * @returns Object containing extracted emotion and clean text
16
+ */
17
+ static extractEmotion(text) {
18
+ const match = text.match(EMOTION_TAG_REGEX);
19
+ if (match) {
20
+ const emotion = match[1].toLowerCase();
21
+ const cleanText = text.replace(EMOTION_TAG_CLEANUP_REGEX, '').trim();
22
+ return {
23
+ emotion,
24
+ cleanText,
25
+ };
26
+ }
27
+ return { cleanText: text };
28
+ }
29
+ /**
30
+ * Check if an emotion is valid
31
+ * @param emotion Emotion string to validate
32
+ * @returns True if the emotion is valid
33
+ */
34
+ static isValidEmotion(emotion) {
35
+ return emotions.includes(emotion);
36
+ }
37
+ /**
38
+ * Remove all emotion tags from text
39
+ * @param text Text containing emotion tags
40
+ * @returns Clean text without emotion tags
41
+ */
42
+ static cleanEmotionTags(text) {
43
+ return text.replace(EMOTION_TAG_CLEANUP_REGEX, '').trim();
44
+ }
45
+ /**
46
+ * Add emotion tag to text
47
+ * @param emotion Emotion to add
48
+ * @param text Text content
49
+ * @returns Text with emotion tag prepended
50
+ */
51
+ static addEmotionTag(emotion, text) {
52
+ return `[${emotion}] ${text}`;
53
+ }
54
+ }
55
+ //# sourceMappingURL=emotionParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotionParser.js","sourceRoot":"","sources":["../../../src/utils/emotionParser.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAU,CAAC;AAG5E;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAU3D;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE5C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,OAAO;gBACL,OAAO;gBACP,SAAS;aACV,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAc,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,IAAY;QAChD,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utilities for AITuber OnAir Chat
3
+ */
4
+ export * from './chatServiceHttpClient';
5
+ export * from './streamTextAccumulator';
6
+ export * from './screenplay';
7
+ export * from './emotionParser';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utilities for AITuber OnAir Chat
3
+ */
4
+ export * from './chatServiceHttpClient';
5
+ export * from './streamTextAccumulator';
6
+ export * from './screenplay';
7
+ export * from './emotionParser';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ToolDefinition, MCPServerConfig } from '../types';
2
+ /**
3
+ * MCP server schema fetcher for SDK-less implementation
4
+ */
5
+ export declare class MCPSchemaFetcher {
6
+ /**
7
+ * Fetch tool schemas from MCP server
8
+ * @param serverConfig MCP server configuration
9
+ * @returns Array of tool definitions
10
+ */
11
+ static fetchToolSchemas(serverConfig: MCPServerConfig): Promise<ToolDefinition[]>;
12
+ /**
13
+ * Fetch all tool schemas from multiple MCP servers
14
+ * @param mcpServers Array of MCP server configurations
15
+ * @returns Array of all tool definitions
16
+ */
17
+ static fetchAllToolSchemas(mcpServers: MCPServerConfig[]): Promise<ToolDefinition[]>;
18
+ }
19
+ //# sourceMappingURL=mcpSchemaFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSchemaFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/mcpSchemaFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;OAIG;WACU,gBAAgB,CAC3B,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC;IA8E5B;;;;OAIG;WACU,mBAAmB,CAC9B,UAAU,EAAE,eAAe,EAAE,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC;CAc7B"}