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