@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,540 @@
1
+ import { ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, ENDPOINT_OPENAI_RESPONSES_API, MODEL_GPT_4O_MINI, VISION_SUPPORTED_MODELS, } from '../../../constants';
2
+ import { getMaxTokensForResponseLength, } from '../../../constants/chat';
3
+ import { StreamTextAccumulator } from '../../../utils/streamTextAccumulator';
4
+ import { ChatServiceHttpClient } from '../../../utils/chatServiceHttpClient';
5
+ /**
6
+ * OpenAI implementation of ChatService
7
+ */
8
+ export class OpenAIChatService {
9
+ /**
10
+ * Constructor
11
+ * @param apiKey OpenAI API key
12
+ * @param model Name of the model to use
13
+ * @param visionModel Name of the vision model
14
+ */
15
+ constructor(apiKey, model = MODEL_GPT_4O_MINI, visionModel = MODEL_GPT_4O_MINI, tools, endpoint = ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, mcpServers = [], responseLength) {
16
+ /** Provider name */
17
+ this.provider = 'openai';
18
+ this.apiKey = apiKey;
19
+ this.model = model;
20
+ this.tools = tools || [];
21
+ this.endpoint = endpoint;
22
+ this.mcpServers = mcpServers;
23
+ this.responseLength = responseLength;
24
+ // check if the vision model is supported
25
+ if (!VISION_SUPPORTED_MODELS.includes(visionModel)) {
26
+ throw new Error(`Model ${visionModel} does not support vision capabilities.`);
27
+ }
28
+ this.visionModel = visionModel;
29
+ }
30
+ /**
31
+ * Get the current model name
32
+ * @returns Model name
33
+ */
34
+ getModel() {
35
+ return this.model;
36
+ }
37
+ /**
38
+ * Get the current vision model name
39
+ * @returns Vision model name
40
+ */
41
+ getVisionModel() {
42
+ return this.visionModel;
43
+ }
44
+ /**
45
+ * Process chat messages
46
+ * @param messages Array of messages to send
47
+ * @param onPartialResponse Callback to receive each part of streaming response
48
+ * @param onCompleteResponse Callback to execute when response is complete
49
+ */
50
+ async processChat(messages, onPartialResponse, onCompleteResponse) {
51
+ // not use tools
52
+ if (this.tools.length === 0) {
53
+ const res = await this.callOpenAI(messages, this.model, true);
54
+ const full = await this.handleStream(res, onPartialResponse);
55
+ await onCompleteResponse(full);
56
+ return;
57
+ }
58
+ // use tools
59
+ const { blocks, stop_reason } = await this.chatOnce(messages);
60
+ if (stop_reason === 'end') {
61
+ // no tool calls
62
+ const full = blocks
63
+ .filter((b) => b.type === 'text')
64
+ .map((b) => b.text)
65
+ .join('');
66
+ await onCompleteResponse(full);
67
+ return;
68
+ }
69
+ // case of stop_reason === 'tool_use', so error
70
+ throw new Error('processChat received tool_calls. ' +
71
+ 'ChatProcessor must use chatOnce() loop when tools are enabled.');
72
+ }
73
+ /**
74
+ * Process chat messages with images
75
+ * @param messages Array of messages to send (including images)
76
+ * @param onPartialResponse Callback to receive each part of streaming response
77
+ * @param onCompleteResponse Callback to execute when response is complete
78
+ * @throws Error if the selected model doesn't support vision
79
+ */
80
+ async processVisionChat(messages, onPartialResponse, onCompleteResponse) {
81
+ try {
82
+ // not use tools
83
+ if (this.tools.length === 0) {
84
+ const res = await this.callOpenAI(messages, this.visionModel, true);
85
+ const full = await this.handleStream(res, onPartialResponse);
86
+ await onCompleteResponse(full);
87
+ return;
88
+ }
89
+ // use tools
90
+ const { blocks, stop_reason } = await this.visionChatOnce(messages, true, onPartialResponse);
91
+ if (stop_reason === 'end') {
92
+ // no tool calls
93
+ const full = blocks
94
+ .filter((b) => b.type === 'text')
95
+ .map((b) => b.text)
96
+ .join('');
97
+ await onCompleteResponse(full);
98
+ return;
99
+ }
100
+ // case of stop_reason === 'tool_use', so error
101
+ throw new Error('processVisionChat received tool_calls. ' +
102
+ 'ChatProcessor must use visionChatOnce() loop when tools are enabled.');
103
+ }
104
+ catch (error) {
105
+ console.error('Error in processVisionChat:', error);
106
+ throw error;
107
+ }
108
+ }
109
+ /**
110
+ * Process chat messages with tools (text only)
111
+ * @param messages Array of messages to send
112
+ * @param stream Whether to use streaming
113
+ * @param onPartialResponse Callback for partial responses
114
+ * @param maxTokens Maximum tokens for response (optional)
115
+ * @returns Tool chat completion
116
+ */
117
+ async chatOnce(messages, stream = true, onPartialResponse = () => { }, maxTokens) {
118
+ const res = await this.callOpenAI(messages, this.model, stream, maxTokens);
119
+ return this.parseResponse(res, stream, onPartialResponse);
120
+ }
121
+ /**
122
+ * Process vision chat messages with tools
123
+ * @param messages Array of messages to send (including images)
124
+ * @param stream Whether to use streaming
125
+ * @param onPartialResponse Callback for partial responses
126
+ * @param maxTokens Maximum tokens for response (optional)
127
+ * @returns Tool chat completion
128
+ */
129
+ async visionChatOnce(messages, stream = false, onPartialResponse = () => { }, maxTokens) {
130
+ const res = await this.callOpenAI(messages, this.visionModel, stream, maxTokens);
131
+ return this.parseResponse(res, stream, onPartialResponse);
132
+ }
133
+ /**
134
+ * Parse response based on endpoint type
135
+ */
136
+ async parseResponse(res, stream, onPartialResponse) {
137
+ const isResponsesAPI = this.endpoint === ENDPOINT_OPENAI_RESPONSES_API;
138
+ if (isResponsesAPI) {
139
+ return stream
140
+ ? this.parseResponsesStream(res, onPartialResponse)
141
+ : this.parseResponsesOneShot(await res.json());
142
+ }
143
+ return stream
144
+ ? this.parseStream(res, onPartialResponse)
145
+ : this.parseOneShot(await res.json());
146
+ }
147
+ async callOpenAI(messages, model, stream = false, maxTokens) {
148
+ const body = this.buildRequestBody(messages, model, stream, maxTokens);
149
+ const res = await ChatServiceHttpClient.post(this.endpoint, body, {
150
+ Authorization: `Bearer ${this.apiKey}`,
151
+ });
152
+ return res;
153
+ }
154
+ /**
155
+ * Build request body based on the endpoint type
156
+ */
157
+ buildRequestBody(messages, model, stream, maxTokens) {
158
+ const isResponsesAPI = this.endpoint === ENDPOINT_OPENAI_RESPONSES_API;
159
+ // Validate MCP servers compatibility
160
+ this.validateMCPCompatibility();
161
+ const body = {
162
+ model,
163
+ stream,
164
+ };
165
+ // Add max_tokens/max_completion_tokens based on endpoint
166
+ const tokenLimit = maxTokens !== undefined
167
+ ? maxTokens
168
+ : getMaxTokensForResponseLength(this.responseLength);
169
+ if (isResponsesAPI) {
170
+ body.max_output_tokens = tokenLimit;
171
+ }
172
+ else {
173
+ body.max_tokens = tokenLimit;
174
+ }
175
+ // Handle messages format based on endpoint
176
+ if (isResponsesAPI) {
177
+ body.input = this.cleanMessagesForResponsesAPI(messages);
178
+ }
179
+ else {
180
+ body.messages = messages;
181
+ }
182
+ // Add tools if available
183
+ const tools = this.buildToolsDefinition();
184
+ if (tools.length > 0) {
185
+ body.tools = tools;
186
+ // Only Chat Completions API requires tool_choice
187
+ if (!isResponsesAPI) {
188
+ body.tool_choice = 'auto';
189
+ }
190
+ }
191
+ return body;
192
+ }
193
+ /**
194
+ * Validate MCP servers compatibility with the current endpoint
195
+ */
196
+ validateMCPCompatibility() {
197
+ if (this.mcpServers.length > 0 &&
198
+ this.endpoint === ENDPOINT_OPENAI_CHAT_COMPLETIONS_API) {
199
+ throw new Error(`MCP servers are not supported with Chat Completions API. ` +
200
+ `Current endpoint: ${this.endpoint}. ` +
201
+ `Please use OpenAI Responses API endpoint: ${ENDPOINT_OPENAI_RESPONSES_API}. ` +
202
+ `MCP tools are only available in the Responses API endpoint.`);
203
+ }
204
+ }
205
+ /**
206
+ * Clean messages for Responses API (remove timestamp and other extra properties)
207
+ */
208
+ cleanMessagesForResponsesAPI(messages) {
209
+ return messages.map((msg) => {
210
+ const cleanMsg = {
211
+ role: msg.role,
212
+ };
213
+ // Handle content (text or vision)
214
+ if (typeof msg.content === 'string') {
215
+ cleanMsg.content = msg.content;
216
+ }
217
+ else if (Array.isArray(msg.content)) {
218
+ // Vision message case
219
+ cleanMsg.content = msg.content;
220
+ }
221
+ else {
222
+ cleanMsg.content = msg.content;
223
+ }
224
+ return cleanMsg;
225
+ });
226
+ }
227
+ /**
228
+ * Build tools definition based on the endpoint type
229
+ */
230
+ buildToolsDefinition() {
231
+ const isResponsesAPI = this.endpoint === ENDPOINT_OPENAI_RESPONSES_API;
232
+ const toolDefs = [];
233
+ // Add function tools
234
+ if (this.tools.length > 0) {
235
+ if (isResponsesAPI) {
236
+ // Responses API format (flattened function properties)
237
+ toolDefs.push(...this.tools.map((t) => ({
238
+ type: 'function',
239
+ name: t.name,
240
+ description: t.description,
241
+ parameters: t.parameters,
242
+ })));
243
+ }
244
+ else {
245
+ // Chat Completions API format (nested function properties)
246
+ toolDefs.push(...this.tools.map((t) => ({
247
+ type: 'function',
248
+ function: {
249
+ name: t.name,
250
+ description: t.description,
251
+ parameters: t.parameters,
252
+ },
253
+ })));
254
+ }
255
+ }
256
+ // Add MCP tools (only for Responses API)
257
+ if (this.mcpServers.length > 0 && isResponsesAPI) {
258
+ toolDefs.push(...this.buildMCPToolsDefinition());
259
+ }
260
+ return toolDefs;
261
+ }
262
+ /**
263
+ * Build MCP tools definition for Responses API
264
+ */
265
+ buildMCPToolsDefinition() {
266
+ return this.mcpServers.map((server) => {
267
+ const mcpDef = {
268
+ type: 'mcp',
269
+ server_label: server.name,
270
+ server_url: server.url,
271
+ require_approval: 'never',
272
+ };
273
+ if (server.tool_configuration?.allowed_tools) {
274
+ mcpDef.allowed_tools = server.tool_configuration.allowed_tools;
275
+ }
276
+ if (server.authorization_token) {
277
+ mcpDef.headers = {
278
+ Authorization: `Bearer ${server.authorization_token}`,
279
+ };
280
+ }
281
+ return mcpDef;
282
+ });
283
+ }
284
+ async handleStream(res, onPartial) {
285
+ const reader = res.body.getReader();
286
+ const dec = new TextDecoder();
287
+ let buffer = '';
288
+ let full = '';
289
+ while (true) {
290
+ const { done, value } = await reader.read();
291
+ if (done)
292
+ break;
293
+ buffer += dec.decode(value, { stream: true });
294
+ let idx;
295
+ while ((idx = buffer.indexOf('\n\n')) !== -1) {
296
+ const raw = buffer.slice(0, idx).trim();
297
+ buffer = buffer.slice(idx + 2);
298
+ if (!raw.startsWith('data:'))
299
+ continue;
300
+ const jsonStr = raw.slice(5).trim();
301
+ if (jsonStr === '[DONE]') {
302
+ buffer = '';
303
+ break;
304
+ }
305
+ const json = JSON.parse(jsonStr);
306
+ const content = json.choices[0]?.delta?.content || '';
307
+ if (content) {
308
+ onPartial(content);
309
+ full += content;
310
+ }
311
+ }
312
+ }
313
+ return full;
314
+ }
315
+ async parseStream(res, onPartial) {
316
+ const reader = res.body.getReader();
317
+ const dec = new TextDecoder();
318
+ const textBlocks = [];
319
+ const toolCallsMap = new Map();
320
+ let buf = '';
321
+ while (true) {
322
+ const { done, value } = await reader.read();
323
+ if (done)
324
+ break;
325
+ buf += dec.decode(value, { stream: true });
326
+ // wait for "\n\n"
327
+ let sep;
328
+ while ((sep = buf.indexOf('\n\n')) !== -1) {
329
+ const raw = buf.slice(0, sep).trim(); // 1 line
330
+ buf = buf.slice(sep + 2);
331
+ if (!raw.startsWith('data:'))
332
+ continue;
333
+ const payload = raw.slice(5).trim(); // after "data:"
334
+ if (payload === '[DONE]') {
335
+ buf = '';
336
+ break;
337
+ }
338
+ const json = JSON.parse(payload);
339
+ const delta = json.choices[0].delta;
340
+ if (delta.content) {
341
+ onPartial(delta.content);
342
+ textBlocks.push({ type: 'text', text: delta.content });
343
+ }
344
+ /* -------------- tool_calls -------------- */
345
+ if (delta.tool_calls) {
346
+ delta.tool_calls.forEach((c) => {
347
+ // arguments are incremented for each chunk → concatenate
348
+ const entry = toolCallsMap.get(c.index) ?? {
349
+ id: c.id,
350
+ name: c.function.name,
351
+ args: '',
352
+ };
353
+ entry.args += c.function.arguments || '';
354
+ toolCallsMap.set(c.index, entry);
355
+ });
356
+ }
357
+ }
358
+ }
359
+ // convert tool_callsMap to ToolUseBlock[]
360
+ const toolBlocks = Array.from(toolCallsMap.entries())
361
+ .sort((a, b) => a[0] - b[0])
362
+ .map(([_, e]) => ({
363
+ type: 'tool_use',
364
+ id: e.id,
365
+ name: e.name,
366
+ input: JSON.parse(e.args || '{}'),
367
+ }));
368
+ const blocks = [...textBlocks, ...toolBlocks];
369
+ return {
370
+ blocks,
371
+ stop_reason: toolBlocks.length ? 'tool_use' : 'end',
372
+ };
373
+ }
374
+ parseOneShot(data) {
375
+ const choice = data.choices[0];
376
+ const blocks = [];
377
+ if (choice.finish_reason === 'tool_calls') {
378
+ choice.message.tool_calls.forEach((c) => blocks.push({
379
+ type: 'tool_use',
380
+ id: c.id,
381
+ name: c.function.name,
382
+ input: JSON.parse(c.function.arguments || '{}'),
383
+ }));
384
+ }
385
+ else {
386
+ blocks.push({ type: 'text', text: choice.message.content });
387
+ }
388
+ return {
389
+ blocks,
390
+ stop_reason: choice.finish_reason === 'tool_calls' ? 'tool_use' : 'end',
391
+ };
392
+ }
393
+ /**
394
+ * Parse streaming response from Responses API (SSE format)
395
+ */
396
+ async parseResponsesStream(res, onPartial) {
397
+ const reader = res.body.getReader();
398
+ const dec = new TextDecoder();
399
+ const textBlocks = [];
400
+ const toolCallsMap = new Map();
401
+ let buf = '';
402
+ while (true) {
403
+ const { done, value } = await reader.read();
404
+ if (done)
405
+ break;
406
+ buf += dec.decode(value, { stream: true });
407
+ // Parse SSE format: process event: and data: combinations
408
+ let eventType = '';
409
+ let eventData = '';
410
+ const lines = buf.split('\n');
411
+ buf = lines.pop() || ''; // Keep the last incomplete line
412
+ for (let i = 0; i < lines.length; i++) {
413
+ const line = lines[i].trim();
414
+ if (line.startsWith('event:')) {
415
+ eventType = line.slice(6).trim();
416
+ }
417
+ else if (line.startsWith('data:')) {
418
+ eventData = line.slice(5).trim();
419
+ }
420
+ else if (line === '' && eventType && eventData) {
421
+ // Process event separated by empty line
422
+ try {
423
+ const json = JSON.parse(eventData);
424
+ this.handleResponsesSSEEvent(eventType, json, onPartial, textBlocks, toolCallsMap);
425
+ }
426
+ catch (e) {
427
+ console.warn('Failed to parse SSE data:', eventData);
428
+ }
429
+ eventType = '';
430
+ eventData = '';
431
+ }
432
+ }
433
+ }
434
+ // Convert tool calls to blocks
435
+ const toolBlocks = Array.from(toolCallsMap.values()).map((tool) => ({
436
+ type: 'tool_use',
437
+ id: tool.id,
438
+ name: tool.name,
439
+ input: tool.input || {},
440
+ }));
441
+ const blocks = [...textBlocks, ...toolBlocks];
442
+ return {
443
+ blocks,
444
+ stop_reason: toolBlocks.length ? 'tool_use' : 'end',
445
+ };
446
+ }
447
+ /**
448
+ * Handle specific SSE events from Responses API
449
+ */
450
+ handleResponsesSSEEvent(eventType, data, onPartial, textBlocks, toolCallsMap) {
451
+ switch (eventType) {
452
+ // Item addition events
453
+ case 'response.output_item.added':
454
+ if (data.item?.type === 'message' && Array.isArray(data.item.content)) {
455
+ data.item.content.forEach((c) => {
456
+ if (c.type === 'output_text' && c.text) {
457
+ onPartial(c.text);
458
+ StreamTextAccumulator.append(textBlocks, c.text);
459
+ }
460
+ });
461
+ }
462
+ else if (data.item?.type === 'function_call') {
463
+ toolCallsMap.set(data.item.id, {
464
+ id: data.item.id,
465
+ name: data.item.name,
466
+ input: data.item.arguments ? JSON.parse(data.item.arguments) : {},
467
+ });
468
+ }
469
+ break;
470
+ // Initial content part events
471
+ case 'response.content_part.added':
472
+ if (data.part?.type === 'output_text' &&
473
+ typeof data.part.text === 'string') {
474
+ onPartial(data.part.text);
475
+ StreamTextAccumulator.append(textBlocks, data.part.text);
476
+ }
477
+ break;
478
+ // Text delta events
479
+ case 'response.output_text.delta':
480
+ case 'response.content_part.delta': // Also handle this event type just in case
481
+ {
482
+ const deltaText = typeof data.delta === 'string'
483
+ ? data.delta
484
+ : (data.delta?.text ?? '');
485
+ if (deltaText) {
486
+ onPartial(deltaText);
487
+ StreamTextAccumulator.append(textBlocks, deltaText);
488
+ }
489
+ }
490
+ break;
491
+ // Text completion events
492
+ case 'response.output_text.done':
493
+ case 'response.content_part.done':
494
+ if (typeof data.text === 'string' && data.text) {
495
+ StreamTextAccumulator.append(textBlocks, data.text);
496
+ }
497
+ break;
498
+ // Response completion events
499
+ case 'response.completed':
500
+ break;
501
+ default:
502
+ // Ignore other events
503
+ break;
504
+ }
505
+ }
506
+ /**
507
+ * Parse non-streaming response from Responses API
508
+ */
509
+ parseResponsesOneShot(data) {
510
+ const blocks = [];
511
+ // Process Responses API format: data.output array
512
+ if (data.output && Array.isArray(data.output)) {
513
+ data.output.forEach((outputItem) => {
514
+ if (outputItem.type === 'message' && outputItem.content) {
515
+ outputItem.content.forEach((content) => {
516
+ if (content.type === 'output_text' && content.text) {
517
+ blocks.push({ type: 'text', text: content.text });
518
+ }
519
+ });
520
+ }
521
+ // Handle function call items
522
+ if (outputItem.type === 'function_call') {
523
+ blocks.push({
524
+ type: 'tool_use',
525
+ id: outputItem.id,
526
+ name: outputItem.name,
527
+ input: outputItem.arguments ? JSON.parse(outputItem.arguments) : {},
528
+ });
529
+ }
530
+ });
531
+ }
532
+ return {
533
+ blocks,
534
+ stop_reason: blocks.some((b) => b.type === 'tool_use')
535
+ ? 'tool_use'
536
+ : 'end',
537
+ };
538
+ }
539
+ }
540
+ //# sourceMappingURL=OpenAIChatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/openai/OpenAIChatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { ChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
3
+ /**
4
+ * OpenAI API provider implementation
5
+ */
6
+ export declare class OpenAIChatServiceProvider implements ChatServiceProvider {
7
+ /**
8
+ * Create a chat service instance
9
+ * @param options Service options
10
+ * @returns OpenAIChatService instance
11
+ */
12
+ createChatService(options: ChatServiceOptions): ChatService;
13
+ /**
14
+ * Get the provider name
15
+ * @returns Provider name ('openai')
16
+ */
17
+ getProviderName(): string;
18
+ /**
19
+ * Get the list of supported models
20
+ * @returns Array of supported model names
21
+ */
22
+ getSupportedModels(): string[];
23
+ /**
24
+ * Get the default model
25
+ * @returns Default model name
26
+ */
27
+ getDefaultModel(): string;
28
+ /**
29
+ * Check if this provider supports vision (image processing)
30
+ * @returns Vision support status (true)
31
+ */
32
+ supportsVision(): boolean;
33
+ /**
34
+ * Check if a specific model supports vision capabilities
35
+ * @param model The model name to check
36
+ * @returns True if the model supports vision, false otherwise
37
+ */
38
+ supportsVisionForModel(model: string): boolean;
39
+ }
40
+ //# sourceMappingURL=OpenAIChatServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/openai/OpenAIChatServiceProvider.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IA+B3D;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAc9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}