@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,94 @@
1
+ import { ChatServiceHttpClient } from './chatServiceHttpClient';
2
+ /**
3
+ * MCP server schema fetcher for SDK-less implementation
4
+ */
5
+ export 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 async fetchToolSchemas(serverConfig) {
12
+ try {
13
+ // Try to fetch tools list from MCP server
14
+ // This follows the MCP protocol for tool discovery
15
+ const headers = {
16
+ 'Content-Type': 'application/json',
17
+ };
18
+ if (serverConfig.authorization_token) {
19
+ headers['Authorization'] = `Bearer ${serverConfig.authorization_token}`;
20
+ }
21
+ // MCP protocol: POST to /tools to list available tools
22
+ const response = await ChatServiceHttpClient.post(`${serverConfig.url}/tools`, {}, headers);
23
+ const toolsData = await response.json();
24
+ // Convert MCP tool schemas to AITuber ToolDefinition format
25
+ if (Array.isArray(toolsData.tools)) {
26
+ return toolsData.tools.map((tool) => ({
27
+ name: `mcp_${serverConfig.name}_${tool.name}`,
28
+ description: tool.description || `Tool from ${serverConfig.name} MCP server`,
29
+ parameters: tool.inputSchema || {
30
+ type: 'object',
31
+ properties: {},
32
+ required: [],
33
+ },
34
+ }));
35
+ }
36
+ // Fallback: create generic search tool if server doesn't provide schema
37
+ return [
38
+ {
39
+ name: `mcp_${serverConfig.name}_search`,
40
+ description: `Search using ${serverConfig.name} MCP server`,
41
+ parameters: {
42
+ type: 'object',
43
+ properties: {
44
+ query: {
45
+ type: 'string',
46
+ description: 'Search query',
47
+ },
48
+ },
49
+ required: ['query'],
50
+ },
51
+ },
52
+ ];
53
+ }
54
+ catch (error) {
55
+ console.warn(`Failed to fetch MCP schemas from ${serverConfig.name}:`, error);
56
+ // Fallback: create generic search tool
57
+ return [
58
+ {
59
+ name: `mcp_${serverConfig.name}_search`,
60
+ description: `Search using ${serverConfig.name} MCP server (schema fetch failed)`,
61
+ parameters: {
62
+ type: 'object',
63
+ properties: {
64
+ query: {
65
+ type: 'string',
66
+ description: 'Search query',
67
+ },
68
+ },
69
+ required: ['query'],
70
+ },
71
+ },
72
+ ];
73
+ }
74
+ }
75
+ /**
76
+ * Fetch all tool schemas from multiple MCP servers
77
+ * @param mcpServers Array of MCP server configurations
78
+ * @returns Array of all tool definitions
79
+ */
80
+ static async fetchAllToolSchemas(mcpServers) {
81
+ const allSchemas = [];
82
+ for (const server of mcpServers) {
83
+ try {
84
+ const schemas = await this.fetchToolSchemas(server);
85
+ allSchemas.push(...schemas);
86
+ }
87
+ catch (error) {
88
+ console.error(`Failed to fetch schemas from ${server.name}:`, error);
89
+ }
90
+ }
91
+ return allSchemas;
92
+ }
93
+ }
94
+ //# sourceMappingURL=mcpSchemaFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSchemaFetcher.js","sourceRoot":"","sources":["../../../src/utils/mcpSchemaFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Screenplay } from '../types';
2
+ /**
3
+ * Convert text to screenplay (text with emotion)
4
+ * @param text Original text (may contain emotion expressions like [happy])
5
+ * @returns Screenplay object with emotion and text separated
6
+ */
7
+ export declare function textToScreenplay(text: string): Screenplay;
8
+ /**
9
+ * Convert multiple texts to screenplay array
10
+ * @param texts Text array
11
+ * @returns Array of screenplay objects
12
+ */
13
+ export declare function textsToScreenplay(texts: string[]): Screenplay[];
14
+ /**
15
+ * Convert screenplay to text with emotion
16
+ * @param screenplay Screenplay object
17
+ * @returns Text with emotion (e.g. [happy] Hello)
18
+ */
19
+ export declare function screenplayToText(screenplay: Screenplay): string;
20
+ //# sourceMappingURL=screenplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenplay.d.ts","sourceRoot":"","sources":["../../../src/utils/screenplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAWzD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAK/D"}
@@ -0,0 +1,36 @@
1
+ import { EmotionParser } from './emotionParser';
2
+ /**
3
+ * Convert text to screenplay (text with emotion)
4
+ * @param text Original text (may contain emotion expressions like [happy])
5
+ * @returns Screenplay object with emotion and text separated
6
+ */
7
+ export function textToScreenplay(text) {
8
+ const { emotion, cleanText } = EmotionParser.extractEmotion(text);
9
+ if (emotion) {
10
+ return {
11
+ emotion,
12
+ text: cleanText,
13
+ };
14
+ }
15
+ return { text: cleanText };
16
+ }
17
+ /**
18
+ * Convert multiple texts to screenplay array
19
+ * @param texts Text array
20
+ * @returns Array of screenplay objects
21
+ */
22
+ export function textsToScreenplay(texts) {
23
+ return texts.map((text) => textToScreenplay(text));
24
+ }
25
+ /**
26
+ * Convert screenplay to text with emotion
27
+ * @param screenplay Screenplay object
28
+ * @returns Text with emotion (e.g. [happy] Hello)
29
+ */
30
+ export function screenplayToText(screenplay) {
31
+ if (screenplay.emotion) {
32
+ return EmotionParser.addEmotionTag(screenplay.emotion, screenplay.text);
33
+ }
34
+ return screenplay.text;
35
+ }
36
+ //# sourceMappingURL=screenplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenplay.js","sourceRoot":"","sources":["../../../src/utils/screenplay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAElE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,OAAO;YACP,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC;AACzB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ToolChatBlock } from '../types';
2
+ /**
3
+ * Utility class for accumulating text in streaming chat responses
4
+ */
5
+ export declare class StreamTextAccumulator {
6
+ /**
7
+ * Append text to the blocks array, merging with the last block if it's a text block
8
+ * @param blocks Array of chat blocks
9
+ * @param text Text to append
10
+ */
11
+ static append(blocks: ToolChatBlock[], text: string): void;
12
+ /**
13
+ * Get the full concatenated text from all text blocks
14
+ * @param blocks Array of chat blocks
15
+ * @returns Concatenated text from all text blocks
16
+ */
17
+ static getFullText(blocks: ToolChatBlock[]): string;
18
+ /**
19
+ * Add a text block without merging
20
+ * @param blocks Array of chat blocks
21
+ * @param text Text to add as a new block
22
+ */
23
+ static addTextBlock(blocks: ToolChatBlock[], text: string): void;
24
+ }
25
+ //# sourceMappingURL=streamTextAccumulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamTextAccumulator.d.ts","sourceRoot":"","sources":["../../../src/utils/streamTextAccumulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAW1D;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM;IAUnD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAIjE"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Utility class for accumulating text in streaming chat responses
3
+ */
4
+ export class StreamTextAccumulator {
5
+ /**
6
+ * Append text to the blocks array, merging with the last block if it's a text block
7
+ * @param blocks Array of chat blocks
8
+ * @param text Text to append
9
+ */
10
+ static append(blocks, text) {
11
+ if (!text)
12
+ return;
13
+ const lastBlock = blocks[blocks.length - 1];
14
+ if (lastBlock && lastBlock.type === 'text') {
15
+ lastBlock.text += text;
16
+ }
17
+ else {
18
+ blocks.push({ type: 'text', text });
19
+ }
20
+ }
21
+ /**
22
+ * Get the full concatenated text from all text blocks
23
+ * @param blocks Array of chat blocks
24
+ * @returns Concatenated text from all text blocks
25
+ */
26
+ static getFullText(blocks) {
27
+ return blocks
28
+ .filter((block) => block.type === 'text')
29
+ .map((block) => block.text)
30
+ .join('');
31
+ }
32
+ /**
33
+ * Add a text block without merging
34
+ * @param blocks Array of chat blocks
35
+ * @param text Text to add as a new block
36
+ */
37
+ static addTextBlock(blocks, text) {
38
+ if (!text)
39
+ return;
40
+ blocks.push({ type: 'text', text });
41
+ }
42
+ }
43
+ //# sourceMappingURL=streamTextAccumulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamTextAccumulator.js","sourceRoot":"","sources":["../../../src/utils/streamTextAccumulator.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChC;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,MAAuB,EAAE,IAAY;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3C,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,MAAuB;QACxC,OAAO,MAAM;aACV,MAAM,CACL,CAAC,KAAK,EAA2C,EAAE,CACjD,KAAK,CAAC,IAAI,KAAK,MAAM,CACxB;aACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,MAAuB,EAAE,IAAY;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@aituber-onair/chat",
3
+ "version": "0.1.0",
4
+ "description": "Chat and LLM API integration library for AITuber OnAir",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/cjs/index.d.ts",
8
+ "files": ["dist"],
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js",
13
+ "types": "./dist/cjs/index.d.ts"
14
+ },
15
+ "./dist/cjs/*": "./dist/cjs/*",
16
+ "./dist/esm/*": "./dist/esm/*"
17
+ },
18
+ "scripts": {
19
+ "build": "npm run clean && npm run build:cjs && npm run build:esm",
20
+ "build:cjs": "tsc --project tsconfig.cjs.json",
21
+ "build:esm": "tsc --project tsconfig.esm.json",
22
+ "clean": "rm -rf dist",
23
+ "typecheck": "tsc --noEmit",
24
+ "test": "npm run typecheck && vitest run",
25
+ "test:watch": "vitest",
26
+ "test:coverage": "vitest run --coverage",
27
+ "fmt": "biome format . --write",
28
+ "fmt:check": "biome format .",
29
+ "lint": "biome lint .",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "keywords": [
33
+ "aituber",
34
+ "vtuber",
35
+ "ai",
36
+ "chat",
37
+ "llm",
38
+ "openai",
39
+ "claude",
40
+ "gemini"
41
+ ],
42
+ "author": "shinshin86 (https://github.com/shinshin86)",
43
+ "license": "MIT",
44
+ "devDependencies": {
45
+ "@biomejs/biome": "1.9.4",
46
+ "@types/node": "^18.15.0",
47
+ "@vitest/coverage-v8": "^1.3.1",
48
+ "typescript": "^5.0.0",
49
+ "vitest": "^1.3.1"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ }
54
+ }