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