@aituber-onair/chat 0.10.0 → 0.11.1

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 (167) hide show
  1. package/README.ja.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/cjs/constants/claude.d.ts +1 -0
  4. package/dist/cjs/constants/claude.d.ts.map +1 -1
  5. package/dist/cjs/constants/claude.js +3 -1
  6. package/dist/cjs/constants/claude.js.map +1 -1
  7. package/dist/cjs/index.d.ts +1 -1
  8. package/dist/cjs/index.d.ts.map +1 -1
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/services/ChatServiceFactory.d.ts +2 -2
  11. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  12. package/dist/cjs/services/ChatServiceFactory.js +2 -24
  13. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  14. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +35 -5
  15. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  16. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  17. package/dist/cjs/services/providers/claude/ClaudeChatService.js +21 -36
  18. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -1
  19. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  20. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  21. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +10 -4
  22. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  23. package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  24. package/dist/cjs/services/providers/gemini/GeminiChatService.js +28 -45
  25. package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -1
  26. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  27. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  28. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  29. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  30. package/dist/cjs/services/providers/index.d.ts +8 -0
  31. package/dist/cjs/services/providers/index.d.ts.map +1 -0
  32. package/dist/cjs/services/providers/index.js +18 -0
  33. package/dist/cjs/services/providers/index.js.map +1 -0
  34. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts.map +1 -1
  35. package/dist/cjs/services/providers/kimi/KimiChatService.js +31 -162
  36. package/dist/cjs/services/providers/kimi/KimiChatService.js.map +1 -1
  37. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -3
  38. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  39. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +9 -8
  40. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  41. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  42. package/dist/cjs/services/providers/openai/OpenAIChatService.js +50 -199
  43. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  44. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  45. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  46. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  47. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  48. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  49. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +31 -165
  50. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  51. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -3
  52. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  53. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -6
  54. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  55. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  56. package/dist/cjs/services/providers/zai/ZAIChatService.js +31 -162
  57. package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
  58. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  59. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  60. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  61. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  62. package/dist/cjs/types/mcp.d.ts +1 -0
  63. package/dist/cjs/types/mcp.d.ts.map +1 -1
  64. package/dist/cjs/utils/index.d.ts +4 -0
  65. package/dist/cjs/utils/index.d.ts.map +1 -1
  66. package/dist/cjs/utils/index.js +4 -0
  67. package/dist/cjs/utils/index.js.map +1 -1
  68. package/dist/cjs/utils/openaiCompatibleSse.d.ts +10 -0
  69. package/dist/cjs/utils/openaiCompatibleSse.d.ts.map +1 -0
  70. package/dist/cjs/utils/openaiCompatibleSse.js +124 -0
  71. package/dist/cjs/utils/openaiCompatibleSse.js.map +1 -0
  72. package/dist/cjs/utils/openaiCompatibleTools.d.ts +4 -0
  73. package/dist/cjs/utils/openaiCompatibleTools.d.ts.map +1 -0
  74. package/dist/cjs/utils/openaiCompatibleTools.js +25 -0
  75. package/dist/cjs/utils/openaiCompatibleTools.js.map +1 -0
  76. package/dist/cjs/utils/processChatFlow.d.ts +12 -0
  77. package/dist/cjs/utils/processChatFlow.d.ts.map +1 -0
  78. package/dist/cjs/utils/processChatFlow.js +22 -0
  79. package/dist/cjs/utils/processChatFlow.js.map +1 -0
  80. package/dist/cjs/utils/visionModelResolver.d.ts +12 -0
  81. package/dist/cjs/utils/visionModelResolver.d.ts.map +1 -0
  82. package/dist/cjs/utils/visionModelResolver.js +22 -0
  83. package/dist/cjs/utils/visionModelResolver.js.map +1 -0
  84. package/dist/esm/constants/claude.d.ts +1 -0
  85. package/dist/esm/constants/claude.d.ts.map +1 -1
  86. package/dist/esm/constants/claude.js +2 -0
  87. package/dist/esm/constants/claude.js.map +1 -1
  88. package/dist/esm/index.d.ts +1 -1
  89. package/dist/esm/index.d.ts.map +1 -1
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/services/ChatServiceFactory.d.ts +2 -2
  92. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  93. package/dist/esm/services/ChatServiceFactory.js +2 -24
  94. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  95. package/dist/esm/services/providers/ChatServiceProvider.d.ts +35 -5
  96. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  97. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  98. package/dist/esm/services/providers/claude/ClaudeChatService.js +21 -36
  99. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -1
  100. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  101. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  102. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +11 -5
  103. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  104. package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  105. package/dist/esm/services/providers/gemini/GeminiChatService.js +28 -45
  106. package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -1
  107. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  108. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  109. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  110. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  111. package/dist/esm/services/providers/index.d.ts +8 -0
  112. package/dist/esm/services/providers/index.d.ts.map +1 -0
  113. package/dist/esm/services/providers/index.js +15 -0
  114. package/dist/esm/services/providers/index.js.map +1 -0
  115. package/dist/esm/services/providers/kimi/KimiChatService.d.ts.map +1 -1
  116. package/dist/esm/services/providers/kimi/KimiChatService.js +31 -162
  117. package/dist/esm/services/providers/kimi/KimiChatService.js.map +1 -1
  118. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -3
  119. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  120. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +9 -8
  121. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  122. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  123. package/dist/esm/services/providers/openai/OpenAIChatService.js +50 -199
  124. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  125. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  126. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  127. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  128. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  129. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  130. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +31 -165
  131. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  132. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -3
  133. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  134. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -6
  135. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  136. package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  137. package/dist/esm/services/providers/zai/ZAIChatService.js +31 -162
  138. package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
  139. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  140. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  141. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  142. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  143. package/dist/esm/types/mcp.d.ts +1 -0
  144. package/dist/esm/types/mcp.d.ts.map +1 -1
  145. package/dist/esm/utils/index.d.ts +4 -0
  146. package/dist/esm/utils/index.d.ts.map +1 -1
  147. package/dist/esm/utils/index.js +4 -0
  148. package/dist/esm/utils/index.js.map +1 -1
  149. package/dist/esm/utils/openaiCompatibleSse.d.ts +10 -0
  150. package/dist/esm/utils/openaiCompatibleSse.d.ts.map +1 -0
  151. package/dist/esm/utils/openaiCompatibleSse.js +119 -0
  152. package/dist/esm/utils/openaiCompatibleSse.js.map +1 -0
  153. package/dist/esm/utils/openaiCompatibleTools.d.ts +4 -0
  154. package/dist/esm/utils/openaiCompatibleTools.d.ts.map +1 -0
  155. package/dist/esm/utils/openaiCompatibleTools.js +21 -0
  156. package/dist/esm/utils/openaiCompatibleTools.js.map +1 -0
  157. package/dist/esm/utils/processChatFlow.d.ts +12 -0
  158. package/dist/esm/utils/processChatFlow.d.ts.map +1 -0
  159. package/dist/esm/utils/processChatFlow.js +19 -0
  160. package/dist/esm/utils/processChatFlow.js.map +1 -0
  161. package/dist/esm/utils/visionModelResolver.d.ts +12 -0
  162. package/dist/esm/utils/visionModelResolver.d.ts.map +1 -0
  163. package/dist/esm/utils/visionModelResolver.js +18 -0
  164. package/dist/esm/utils/visionModelResolver.js.map +1 -0
  165. package/dist/umd/aituber-onair-chat.js +1592 -1875
  166. package/dist/umd/aituber-onair-chat.min.js +6 -15
  167. package/package.json +1 -1
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenRouterChatService = void 0;
4
4
  const openrouter_1 = require("../../../constants/openrouter");
5
5
  const chat_1 = require("../../../constants/chat");
6
- const streamTextAccumulator_1 = require("../../../utils/streamTextAccumulator");
7
6
  const chatServiceHttpClient_1 = require("../../../utils/chatServiceHttpClient");
7
+ const utils_1 = require("../../../utils");
8
8
  /**
9
9
  * OpenRouter implementation of ChatService
10
10
  * OpenRouter provides access to multiple AI models through a unified API
@@ -91,25 +91,17 @@ class OpenRouterChatService {
91
91
  async processChat(messages, onPartialResponse, onCompleteResponse) {
92
92
  // Apply rate limiting for free tier
93
93
  await this.applyRateLimiting();
94
- // Not using tools
95
- if (this.tools.length === 0) {
96
- const res = await this.callOpenRouter(messages, this.model, true);
97
- const full = await this.handleStream(res, onPartialResponse);
98
- await onCompleteResponse(full);
99
- return;
100
- }
101
- // Using tools
102
- const { blocks, stop_reason } = await this.chatOnce(messages);
103
- if (stop_reason === 'end') {
104
- const full = blocks
105
- .filter((b) => b.type === 'text')
106
- .map((b) => b.text)
107
- .join('');
108
- await onCompleteResponse(full);
109
- return;
110
- }
111
- throw new Error('processChat received tool_calls. ' +
112
- 'ChatProcessor must use chatOnce() loop when tools are enabled.');
94
+ await (0, utils_1.processChatWithOptionalTools)({
95
+ hasTools: this.tools.length > 0,
96
+ runWithoutTools: async () => {
97
+ const res = await this.callOpenRouter(messages, this.model, true);
98
+ return this.handleStream(res, onPartialResponse);
99
+ },
100
+ runWithTools: () => this.chatOnce(messages, true, onPartialResponse),
101
+ onCompleteResponse,
102
+ toolErrorMessage: 'processChat received tool_calls. ' +
103
+ 'ChatProcessor must use chatOnce() loop when tools are enabled.',
104
+ });
113
105
  }
114
106
  /**
115
107
  * Process chat messages with images
@@ -125,25 +117,17 @@ class OpenRouterChatService {
125
117
  // Apply rate limiting for free tier
126
118
  await this.applyRateLimiting();
127
119
  try {
128
- // Not using tools
129
- if (this.tools.length === 0) {
130
- const res = await this.callOpenRouter(messages, this.visionModel, true);
131
- const full = await this.handleStream(res, onPartialResponse);
132
- await onCompleteResponse(full);
133
- return;
134
- }
135
- // Using tools
136
- const { blocks, stop_reason } = await this.visionChatOnce(messages, true, onPartialResponse);
137
- if (stop_reason === 'end') {
138
- const full = blocks
139
- .filter((b) => b.type === 'text')
140
- .map((b) => b.text)
141
- .join('');
142
- await onCompleteResponse(full);
143
- return;
144
- }
145
- throw new Error('processVisionChat received tool_calls. ' +
146
- 'ChatProcessor must use visionChatOnce() loop when tools are enabled.');
120
+ await (0, utils_1.processChatWithOptionalTools)({
121
+ hasTools: this.tools.length > 0,
122
+ runWithoutTools: async () => {
123
+ const res = await this.callOpenRouter(messages, this.visionModel, true);
124
+ return this.handleStream(res, onPartialResponse);
125
+ },
126
+ runWithTools: () => this.visionChatOnce(messages, true, onPartialResponse),
127
+ onCompleteResponse,
128
+ toolErrorMessage: 'processVisionChat received tool_calls. ' +
129
+ 'ChatProcessor must use visionChatOnce() loop when tools are enabled.',
130
+ });
147
131
  }
148
132
  catch (error) {
149
133
  console.error('Error in processVisionChat:', error);
@@ -246,14 +230,7 @@ class OpenRouterChatService {
246
230
  }
247
231
  // Add tools if available
248
232
  if (this.tools.length > 0) {
249
- body.tools = this.tools.map((t) => ({
250
- type: 'function',
251
- function: {
252
- name: t.name,
253
- description: t.description,
254
- parameters: t.parameters,
255
- },
256
- }));
233
+ body.tools = (0, utils_1.buildOpenAICompatibleTools)(this.tools, 'chat-completions');
257
234
  body.tool_choice = 'auto';
258
235
  }
259
236
  return body;
@@ -263,134 +240,23 @@ class OpenRouterChatService {
263
240
  * OpenRouter uses SSE format with potential comment lines
264
241
  */
265
242
  async handleStream(res, onPartial) {
266
- const reader = res.body.getReader();
267
- const dec = new TextDecoder();
268
- let buffer = '';
269
- let full = '';
270
- while (true) {
271
- const { done, value } = await reader.read();
272
- if (done)
273
- break;
274
- buffer += dec.decode(value, { stream: true });
275
- // Process line by line
276
- const lines = buffer.split('\n');
277
- buffer = lines.pop() || ''; // Keep incomplete line
278
- for (const line of lines) {
279
- const trimmedLine = line.trim();
280
- // Skip empty lines and comment lines (OpenRouter specific)
281
- if (!trimmedLine || trimmedLine.startsWith(':'))
282
- continue;
283
- if (!trimmedLine.startsWith('data:'))
284
- continue;
285
- const jsonStr = trimmedLine.slice(5).trim();
286
- if (jsonStr === '[DONE]') {
287
- return full;
288
- }
289
- try {
290
- const json = JSON.parse(jsonStr);
291
- const content = json.choices?.[0]?.delta?.content || '';
292
- if (content) {
293
- onPartial(content);
294
- full += content;
295
- }
296
- }
297
- catch (e) {
298
- // Skip invalid JSON (could be partial or malformed)
299
- console.debug('Failed to parse SSE data:', jsonStr);
300
- }
301
- }
302
- }
303
- return full;
243
+ return (0, utils_1.parseOpenAICompatibleTextStream)(res, onPartial, {
244
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
245
+ });
304
246
  }
305
247
  /**
306
248
  * Parse streaming response with tool support
307
249
  */
308
250
  async parseStream(res, onPartial) {
309
- const reader = res.body.getReader();
310
- const dec = new TextDecoder();
311
- const textBlocks = [];
312
- const toolCallsMap = new Map();
313
- let buf = '';
314
- while (true) {
315
- const { done, value } = await reader.read();
316
- if (done)
317
- break;
318
- buf += dec.decode(value, { stream: true });
319
- // Process line by line
320
- const lines = buf.split('\n');
321
- buf = lines.pop() || ''; // Keep incomplete line
322
- for (const line of lines) {
323
- const trimmedLine = line.trim();
324
- // Skip empty lines and OpenRouter comment lines
325
- if (!trimmedLine || trimmedLine.startsWith(':'))
326
- continue;
327
- if (!trimmedLine.startsWith('data:'))
328
- continue;
329
- const payload = trimmedLine.slice(5).trim();
330
- if (payload === '[DONE]') {
331
- break;
332
- }
333
- try {
334
- const json = JSON.parse(payload);
335
- const delta = json.choices?.[0]?.delta;
336
- if (delta?.content) {
337
- onPartial(delta.content);
338
- streamTextAccumulator_1.StreamTextAccumulator.append(textBlocks, delta.content);
339
- }
340
- // Handle tool calls
341
- if (delta?.tool_calls) {
342
- delta.tool_calls.forEach((c) => {
343
- const entry = toolCallsMap.get(c.index) ?? {
344
- id: c.id,
345
- name: c.function?.name,
346
- args: '',
347
- };
348
- entry.args += c.function?.arguments || '';
349
- toolCallsMap.set(c.index, entry);
350
- });
351
- }
352
- }
353
- catch (e) {
354
- console.debug('Failed to parse SSE data:', payload);
355
- }
356
- }
357
- }
358
- // Convert tool_calls to blocks
359
- const toolBlocks = Array.from(toolCallsMap.entries())
360
- .sort((a, b) => a[0] - b[0])
361
- .map(([_, e]) => ({
362
- type: 'tool_use',
363
- id: e.id,
364
- name: e.name,
365
- input: JSON.parse(e.args || '{}'),
366
- }));
367
- const blocks = [...textBlocks, ...toolBlocks];
368
- return {
369
- blocks,
370
- stop_reason: toolBlocks.length ? 'tool_use' : 'end',
371
- };
251
+ return (0, utils_1.parseOpenAICompatibleToolStream)(res, onPartial, {
252
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
253
+ });
372
254
  }
373
255
  /**
374
256
  * Parse non-streaming response
375
257
  */
376
258
  parseOneShot(data) {
377
- const choice = data.choices?.[0];
378
- const blocks = [];
379
- if (choice?.finish_reason === 'tool_calls' && choice?.message?.tool_calls) {
380
- choice.message.tool_calls.forEach((c) => blocks.push({
381
- type: 'tool_use',
382
- id: c.id,
383
- name: c.function?.name,
384
- input: JSON.parse(c.function?.arguments || '{}'),
385
- }));
386
- }
387
- else if (choice?.message?.content) {
388
- blocks.push({ type: 'text', text: choice.message.content });
389
- }
390
- return {
391
- blocks,
392
- stop_reason: choice?.finish_reason === 'tool_calls' ? 'tool_use' : 'end',
393
- };
259
+ return (0, utils_1.parseOpenAICompatibleOneShot)(data);
394
260
  }
395
261
  }
396
262
  exports.OpenRouterChatService = OpenRouterChatService;
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenRouterChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatService.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  import { ChatService } from '../../ChatService';
2
- import { ChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
2
+ import { OpenRouterChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
3
3
  /**
4
4
  * OpenRouter API provider implementation
5
5
  * Provides access to multiple AI models through OpenRouter's unified API
6
6
  */
7
- export declare class OpenRouterChatServiceProvider implements ChatServiceProvider {
7
+ export declare class OpenRouterChatServiceProvider implements ChatServiceProvider<OpenRouterChatServiceOptions> {
8
8
  /**
9
9
  * Create a chat service instance
10
10
  * @param options Service options
11
11
  * @returns OpenRouterChatService instance
12
12
  */
13
- createChatService(options: ChatServiceOptions): ChatService;
13
+ createChatService(options: OpenRouterChatServiceOptions): ChatService;
14
14
  /**
15
15
  * Get the provider name
16
16
  * @returns Provider name ('openrouter')
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC;;;GAGG;AACH,qBAAa,6BAA8B,YAAW,mBAAmB;IACvE;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IAsC3D;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,kBAAkB,IAAI,MAAM,EAAE;IA+B9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAMzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGpC"}
1
+ {"version":3,"file":"OpenRouterChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC;;;GAGG;AACH,qBAAa,6BACX,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW;IAmCrE;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,kBAAkB,IAAI,MAAM,EAAE;IA+B9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAMzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenRouterChatServiceProvider = void 0;
4
4
  const openrouter_1 = require("../../../constants/openrouter");
5
5
  const OpenRouterChatService_1 = require("./OpenRouterChatService");
6
+ const utils_1 = require("../../../utils");
6
7
  /**
7
8
  * OpenRouter API provider implementation
8
9
  * Provides access to multiple AI models through OpenRouter's unified API
@@ -16,12 +17,14 @@ class OpenRouterChatServiceProvider {
16
17
  createChatService(options) {
17
18
  // For OpenRouter, use the main model as vision model placeholder
18
19
  // Only validate if visionModel is explicitly provided
19
- const visionModel = options.visionModel || options.model || this.getDefaultModel();
20
- // If visionModel is explicitly provided and different from main model, validate it
21
- if (options.visionModel &&
22
- !this.supportsVisionForModel(options.visionModel)) {
23
- throw new Error(`Model ${options.visionModel} does not support vision capabilities.`);
24
- }
20
+ const visionModel = (0, utils_1.resolveVisionModel)({
21
+ model: options.model,
22
+ visionModel: options.visionModel,
23
+ defaultModel: this.getDefaultModel(),
24
+ defaultVisionModel: options.model || this.getDefaultModel(),
25
+ supportsVisionForModel: (visionModel) => this.supportsVisionForModel(visionModel),
26
+ validate: 'explicit',
27
+ });
25
28
  // Tools definition
26
29
  const tools = options.tools;
27
30
  // Extract OpenRouter-specific options
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,8DAuBuC;AAEvC,mEAAgE;AAOhE;;;GAGG;AACH,MAAa,6BAA6B;IACxC;;;;OAIG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,iEAAiE;QACjE,sDAAsD;QACtD,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEjE,mFAAmF;QACnF,IACE,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EACjD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,CAAC,WAAW,wCAAwC,CACrE,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAE1D,sCAAsC;QACtC,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;QACzC,MAAM,MAAM,GAAI,OAAe,CAAC,MAAM,CAAC;QAEvC,OAAO,IAAI,6CAAqB,CAC9B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,EACtB,OAAO,EACP,MAAM,EACN,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,gBAAgB,EACvB,OAAe,CAAC,kBAAkB,CACpC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO;YACL,cAAc;YACd,mCAAsB;YACtB,uCAA0B;YAC1B,gBAAgB;YAChB,sCAAyB;YACzB,uCAA0B;YAC1B,oCAAuB;YACvB,oCAAuB;YACvB,gCAAmB;YACnB,sCAAyB;YACzB,sCAAyB;YACzB,mBAAmB;YACnB,0CAA6B;YAC7B,4CAA+B;YAC/B,8CAAiC;YACjC,8CAAiC;YACjC,6CAAgC;YAChC,gBAAgB;YAChB,wCAA2B;YAC3B,0CAA6B;YAC7B,+DAAkD;YAClD,cAAc;YACd,oCAAuB;YACvB,kCAAqB;YACrB,eAAe;YACf,uCAA0B;SAC3B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,mCAAsB,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACnC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,IAAA,oCAAuB,EAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,mCAAsB,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAa;QACvB,OAAO,mCAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF;AAnID,sEAmIC"}
1
+ {"version":3,"file":"OpenRouterChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,8DAuBuC;AAEvC,mEAAgE;AAMhE,0CAAoD;AAEpD;;;GAGG;AACH,MAAa,6BAA6B;IAGxC;;;;OAIG;IACH,iBAAiB,CAAC,OAAqC;QACrD,iEAAiE;QACjE,sDAAsD;QACtD,MAAM,WAAW,GAAG,IAAA,0BAAkB,EAAC;YACrC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,kBAAkB,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YAC3D,sBAAsB,EAAE,CAAC,WAAW,EAAE,EAAE,CACtC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YAC1C,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAE1D,sCAAsC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,OAAO,IAAI,6CAAqB,CAC9B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,EACtB,OAAO,EACP,MAAM,EACN,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,kBAAkB,CAC3B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO;YACL,cAAc;YACd,mCAAsB;YACtB,uCAA0B;YAC1B,gBAAgB;YAChB,sCAAyB;YACzB,uCAA0B;YAC1B,oCAAuB;YACvB,oCAAuB;YACvB,gCAAmB;YACnB,sCAAyB;YACzB,sCAAyB;YACzB,mBAAmB;YACnB,0CAA6B;YAC7B,4CAA+B;YAC/B,8CAAiC;YACjC,8CAAiC;YACjC,6CAAgC;YAChC,gBAAgB;YAChB,wCAA2B;YAC3B,0CAA6B;YAC7B,+DAAkD;YAClD,cAAc;YACd,oCAAuB;YACvB,kCAAqB;YACrB,eAAe;YACf,uCAA0B;SAC3B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,mCAAsB,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACnC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,IAAA,oCAAuB,EAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,mCAAsB,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAa;QACvB,OAAO,mCAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF;AAlID,sEAkIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,cAAc,EAEd,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAS;IAElC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,OAAO,CAAC,QAAQ,CAAC,CAGf;IAEF;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB,EAC7B,WAAW,GAAE,MAA6B,EAC1C,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,QAAQ,GAAE,MAA0C,EACpD,cAAc,CAAC,EAAE,kBAAkB,EACnC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,GAAG,CAAC;KACnB,EACD,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAaH;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAqChB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,GAAE,OAAc,EACtB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAK9B;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,GAAE,OAAe,EACvB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;YAgBhB,aAAa;YAUb,OAAO;IAerB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,oBAAoB;YAYd,YAAY;IAwC1B;;OAEG;YACW,WAAW;IAyEzB;;OAEG;IACH,OAAO,CAAC,YAAY;CAwBrB"}
1
+ {"version":3,"file":"ZAIChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAQpE,OAAO,EACL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAUjC;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAS;IAElC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,OAAO,CAAC,QAAQ,CAAC,CAGf;IAEF;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB,EAC7B,WAAW,GAAE,MAA6B,EAC1C,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,QAAQ,GAAE,MAA0C,EACpD,cAAc,CAAC,EAAE,kBAAkB,EACnC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,GAAG,CAAC;KACnB,EACD,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAaH;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,GAAE,OAAc,EACtB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAK9B;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,GAAE,OAAe,EACvB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;YAgBhB,aAAa;YAUb,OAAO;IAerB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,oBAAoB;YAId,YAAY;IAO1B;;OAEG;YACW,WAAW;IAUzB;;OAEG;IACH,OAAO,CAAC,YAAY;CAGrB"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ZAIChatService = void 0;
4
4
  const zai_1 = require("../../../constants/zai");
5
5
  const chat_1 = require("../../../constants/chat");
6
- const streamTextAccumulator_1 = require("../../../utils/streamTextAccumulator");
7
6
  const chatServiceHttpClient_1 = require("../../../utils/chatServiceHttpClient");
7
+ const utils_1 = require("../../../utils");
8
8
  /**
9
9
  * Z.ai implementation of ChatService (OpenAI-compatible Chat Completions)
10
10
  */
@@ -43,25 +43,17 @@ class ZAIChatService {
43
43
  * Process chat messages
44
44
  */
45
45
  async processChat(messages, onPartialResponse, onCompleteResponse) {
46
- // Not using tools
47
- if (this.tools.length === 0) {
48
- const res = await this.callZAI(messages, this.model, true);
49
- const full = await this.handleStream(res, onPartialResponse);
50
- await onCompleteResponse(full);
51
- return;
52
- }
53
- // Using tools
54
- const { blocks, stop_reason } = await this.chatOnce(messages);
55
- if (stop_reason === 'end') {
56
- const full = blocks
57
- .filter((b) => b.type === 'text')
58
- .map((b) => b.text)
59
- .join('');
60
- await onCompleteResponse(full);
61
- return;
62
- }
63
- throw new Error('processChat received tool_calls. ' +
64
- 'ChatProcessor must use chatOnce() loop when tools are enabled.');
46
+ await (0, utils_1.processChatWithOptionalTools)({
47
+ hasTools: this.tools.length > 0,
48
+ runWithoutTools: async () => {
49
+ const res = await this.callZAI(messages, this.model, true);
50
+ return this.handleStream(res, onPartialResponse);
51
+ },
52
+ runWithTools: () => this.chatOnce(messages, true, onPartialResponse),
53
+ onCompleteResponse,
54
+ toolErrorMessage: 'processChat received tool_calls. ' +
55
+ 'ChatProcessor must use chatOnce() loop when tools are enabled.',
56
+ });
65
57
  }
66
58
  /**
67
59
  * Process chat messages with images
@@ -70,25 +62,17 @@ class ZAIChatService {
70
62
  if (!(0, zai_1.isZaiVisionModel)(this.visionModel)) {
71
63
  throw new Error(`Model ${this.visionModel} does not support vision capabilities.`);
72
64
  }
73
- // Not using tools
74
- if (this.tools.length === 0) {
75
- const res = await this.callZAI(messages, this.visionModel, true);
76
- const full = await this.handleStream(res, onPartialResponse);
77
- await onCompleteResponse(full);
78
- return;
79
- }
80
- // Using tools
81
- const { blocks, stop_reason } = await this.visionChatOnce(messages, true, onPartialResponse);
82
- if (stop_reason === 'end') {
83
- const full = blocks
84
- .filter((b) => b.type === 'text')
85
- .map((b) => b.text)
86
- .join('');
87
- await onCompleteResponse(full);
88
- return;
89
- }
90
- throw new Error('processVisionChat received tool_calls. ' +
91
- 'ChatProcessor must use visionChatOnce() loop when tools are enabled.');
65
+ await (0, utils_1.processChatWithOptionalTools)({
66
+ hasTools: this.tools.length > 0,
67
+ runWithoutTools: async () => {
68
+ const res = await this.callZAI(messages, this.visionModel, true);
69
+ return this.handleStream(res, onPartialResponse);
70
+ },
71
+ runWithTools: () => this.visionChatOnce(messages, true, onPartialResponse),
72
+ onCompleteResponse,
73
+ toolErrorMessage: 'processVisionChat received tool_calls. ' +
74
+ 'ChatProcessor must use visionChatOnce() loop when tools are enabled.',
75
+ });
92
76
  }
93
77
  /**
94
78
  * Process chat messages with tools (text only)
@@ -151,141 +135,26 @@ class ZAIChatService {
151
135
  return body;
152
136
  }
153
137
  buildToolsDefinition() {
154
- if (this.tools.length === 0)
155
- return [];
156
- return this.tools.map((t) => ({
157
- type: 'function',
158
- function: {
159
- name: t.name,
160
- description: t.description,
161
- parameters: t.parameters,
162
- },
163
- }));
138
+ return (0, utils_1.buildOpenAICompatibleTools)(this.tools, 'chat-completions');
164
139
  }
165
140
  async handleStream(res, onPartial) {
166
- const reader = res.body.getReader();
167
- const dec = new TextDecoder();
168
- let full = '';
169
- let buf = '';
170
- while (true) {
171
- const { done, value } = await reader.read();
172
- if (done)
173
- break;
174
- buf += dec.decode(value, { stream: true });
175
- const lines = buf.split('\n');
176
- buf = lines.pop() || '';
177
- for (const line of lines) {
178
- const trimmedLine = line.trim();
179
- if (!trimmedLine || trimmedLine.startsWith(':'))
180
- continue;
181
- if (!trimmedLine.startsWith('data:'))
182
- continue;
183
- const payload = trimmedLine.slice(5).trim();
184
- if (payload === '[DONE]') {
185
- break;
186
- }
187
- try {
188
- const json = JSON.parse(payload);
189
- const content = json.choices?.[0]?.delta?.content || '';
190
- if (content) {
191
- onPartial(content);
192
- full += content;
193
- }
194
- }
195
- catch (e) {
196
- console.debug('Failed to parse SSE data:', payload);
197
- }
198
- }
199
- }
200
- return full;
141
+ return (0, utils_1.parseOpenAICompatibleTextStream)(res, onPartial, {
142
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
143
+ });
201
144
  }
202
145
  /**
203
146
  * Parse streaming response with tool support
204
147
  */
205
148
  async parseStream(res, onPartial) {
206
- const reader = res.body.getReader();
207
- const dec = new TextDecoder();
208
- const textBlocks = [];
209
- const toolCallsMap = new Map();
210
- let buf = '';
211
- while (true) {
212
- const { done, value } = await reader.read();
213
- if (done)
214
- break;
215
- buf += dec.decode(value, { stream: true });
216
- const lines = buf.split('\n');
217
- buf = lines.pop() || '';
218
- for (const line of lines) {
219
- const trimmedLine = line.trim();
220
- if (!trimmedLine || trimmedLine.startsWith(':'))
221
- continue;
222
- if (!trimmedLine.startsWith('data:'))
223
- continue;
224
- const payload = trimmedLine.slice(5).trim();
225
- if (payload === '[DONE]') {
226
- break;
227
- }
228
- try {
229
- const json = JSON.parse(payload);
230
- const delta = json.choices?.[0]?.delta;
231
- if (delta?.content) {
232
- onPartial(delta.content);
233
- streamTextAccumulator_1.StreamTextAccumulator.append(textBlocks, delta.content);
234
- }
235
- if (delta?.tool_calls) {
236
- delta.tool_calls.forEach((c) => {
237
- const entry = toolCallsMap.get(c.index) ?? {
238
- id: c.id,
239
- name: c.function?.name,
240
- args: '',
241
- };
242
- entry.args += c.function?.arguments || '';
243
- toolCallsMap.set(c.index, entry);
244
- });
245
- }
246
- }
247
- catch (e) {
248
- console.debug('Failed to parse SSE data:', payload);
249
- }
250
- }
251
- }
252
- const toolBlocks = Array.from(toolCallsMap.entries())
253
- .sort((a, b) => a[0] - b[0])
254
- .map(([_, e]) => ({
255
- type: 'tool_use',
256
- id: e.id,
257
- name: e.name,
258
- input: JSON.parse(e.args || '{}'),
259
- }));
260
- const blocks = [...textBlocks, ...toolBlocks];
261
- return {
262
- blocks,
263
- stop_reason: toolBlocks.length ? 'tool_use' : 'end',
264
- };
149
+ return (0, utils_1.parseOpenAICompatibleToolStream)(res, onPartial, {
150
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
151
+ });
265
152
  }
266
153
  /**
267
154
  * Parse non-streaming response
268
155
  */
269
156
  parseOneShot(data) {
270
- const choice = data.choices?.[0];
271
- const blocks = [];
272
- if (choice?.message?.tool_calls?.length) {
273
- choice.message.tool_calls.forEach((c) => blocks.push({
274
- type: 'tool_use',
275
- id: c.id,
276
- name: c.function?.name,
277
- input: JSON.parse(c.function?.arguments || '{}'),
278
- }));
279
- }
280
- else if (choice?.message?.content) {
281
- blocks.push({ type: 'text', text: choice.message.content });
282
- }
283
- return {
284
- blocks,
285
- stop_reason: blocks.some((b) => b.type === 'tool_use')
286
- ? 'tool_use'
287
- : 'end',
288
- };
157
+ return (0, utils_1.parseOpenAICompatibleOneShot)(data);
289
158
  }
290
159
  }
291
160
  exports.ZAIChatService = ZAIChatService;