@aituber-onair/chat 0.9.0 → 0.11.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 (191) hide show
  1. package/README.ja.md +45 -6
  2. package/README.md +45 -6
  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/constants/index.d.ts +1 -0
  8. package/dist/cjs/constants/index.d.ts.map +1 -1
  9. package/dist/cjs/constants/index.js +1 -0
  10. package/dist/cjs/constants/index.js.map +1 -1
  11. package/dist/cjs/constants/kimi.d.ts +8 -0
  12. package/dist/cjs/constants/kimi.d.ts.map +1 -0
  13. package/dist/cjs/constants/kimi.js +16 -0
  14. package/dist/cjs/constants/kimi.js.map +1 -0
  15. package/dist/cjs/constants/openrouter.d.ts +20 -1
  16. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  17. package/dist/cjs/constants/openrouter.js +41 -3
  18. package/dist/cjs/constants/openrouter.js.map +1 -1
  19. package/dist/cjs/index.d.ts +3 -1
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +6 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/services/ChatServiceFactory.d.ts +2 -2
  24. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  25. package/dist/cjs/services/ChatServiceFactory.js +2 -21
  26. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  27. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +38 -6
  28. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  29. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  30. package/dist/cjs/services/providers/claude/ClaudeChatService.js +21 -36
  31. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -1
  32. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  33. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  34. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +10 -4
  35. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  36. package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  37. package/dist/cjs/services/providers/gemini/GeminiChatService.js +28 -45
  38. package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -1
  39. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  40. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  41. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  42. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  43. package/dist/cjs/services/providers/index.d.ts +8 -0
  44. package/dist/cjs/services/providers/index.d.ts.map +1 -0
  45. package/dist/cjs/services/providers/index.js +18 -0
  46. package/dist/cjs/services/providers/index.js.map +1 -0
  47. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts +75 -0
  48. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts.map +1 -0
  49. package/dist/cjs/services/providers/kimi/KimiChatService.js +173 -0
  50. package/dist/cjs/services/providers/kimi/KimiChatService.js.map +1 -0
  51. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +38 -0
  52. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -0
  53. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +86 -0
  54. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -0
  55. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  56. package/dist/cjs/services/providers/openai/OpenAIChatService.js +47 -199
  57. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  58. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  59. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  60. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  61. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  62. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  63. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +31 -165
  64. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  65. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +4 -4
  66. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  67. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +35 -8
  68. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  69. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  70. package/dist/cjs/services/providers/zai/ZAIChatService.js +31 -162
  71. package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
  72. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  73. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  74. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  75. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  76. package/dist/cjs/utils/index.d.ts +4 -0
  77. package/dist/cjs/utils/index.d.ts.map +1 -1
  78. package/dist/cjs/utils/index.js +4 -0
  79. package/dist/cjs/utils/index.js.map +1 -1
  80. package/dist/cjs/utils/openaiCompatibleSse.d.ts +10 -0
  81. package/dist/cjs/utils/openaiCompatibleSse.d.ts.map +1 -0
  82. package/dist/cjs/utils/openaiCompatibleSse.js +124 -0
  83. package/dist/cjs/utils/openaiCompatibleSse.js.map +1 -0
  84. package/dist/cjs/utils/openaiCompatibleTools.d.ts +4 -0
  85. package/dist/cjs/utils/openaiCompatibleTools.d.ts.map +1 -0
  86. package/dist/cjs/utils/openaiCompatibleTools.js +25 -0
  87. package/dist/cjs/utils/openaiCompatibleTools.js.map +1 -0
  88. package/dist/cjs/utils/processChatFlow.d.ts +12 -0
  89. package/dist/cjs/utils/processChatFlow.d.ts.map +1 -0
  90. package/dist/cjs/utils/processChatFlow.js +22 -0
  91. package/dist/cjs/utils/processChatFlow.js.map +1 -0
  92. package/dist/cjs/utils/visionModelResolver.d.ts +12 -0
  93. package/dist/cjs/utils/visionModelResolver.d.ts.map +1 -0
  94. package/dist/cjs/utils/visionModelResolver.js +22 -0
  95. package/dist/cjs/utils/visionModelResolver.js.map +1 -0
  96. package/dist/esm/constants/claude.d.ts +1 -0
  97. package/dist/esm/constants/claude.d.ts.map +1 -1
  98. package/dist/esm/constants/claude.js +2 -0
  99. package/dist/esm/constants/claude.js.map +1 -1
  100. package/dist/esm/constants/index.d.ts +1 -0
  101. package/dist/esm/constants/index.d.ts.map +1 -1
  102. package/dist/esm/constants/index.js +1 -0
  103. package/dist/esm/constants/index.js.map +1 -1
  104. package/dist/esm/constants/kimi.d.ts +8 -0
  105. package/dist/esm/constants/kimi.d.ts.map +1 -0
  106. package/dist/esm/constants/kimi.js +12 -0
  107. package/dist/esm/constants/kimi.js.map +1 -0
  108. package/dist/esm/constants/openrouter.d.ts +20 -1
  109. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  110. package/dist/esm/constants/openrouter.js +40 -2
  111. package/dist/esm/constants/openrouter.js.map +1 -1
  112. package/dist/esm/index.d.ts +3 -1
  113. package/dist/esm/index.d.ts.map +1 -1
  114. package/dist/esm/index.js +3 -0
  115. package/dist/esm/index.js.map +1 -1
  116. package/dist/esm/services/ChatServiceFactory.d.ts +2 -2
  117. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  118. package/dist/esm/services/ChatServiceFactory.js +2 -21
  119. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  120. package/dist/esm/services/providers/ChatServiceProvider.d.ts +38 -6
  121. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  122. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  123. package/dist/esm/services/providers/claude/ClaudeChatService.js +21 -36
  124. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -1
  125. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  126. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  127. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +11 -5
  128. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  129. package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  130. package/dist/esm/services/providers/gemini/GeminiChatService.js +28 -45
  131. package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -1
  132. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  133. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  134. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  135. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  136. package/dist/esm/services/providers/index.d.ts +8 -0
  137. package/dist/esm/services/providers/index.d.ts.map +1 -0
  138. package/dist/esm/services/providers/index.js +15 -0
  139. package/dist/esm/services/providers/index.js.map +1 -0
  140. package/dist/esm/services/providers/kimi/KimiChatService.d.ts +75 -0
  141. package/dist/esm/services/providers/kimi/KimiChatService.d.ts.map +1 -0
  142. package/dist/esm/services/providers/kimi/KimiChatService.js +169 -0
  143. package/dist/esm/services/providers/kimi/KimiChatService.js.map +1 -0
  144. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +38 -0
  145. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -0
  146. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +82 -0
  147. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -0
  148. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  149. package/dist/esm/services/providers/openai/OpenAIChatService.js +47 -199
  150. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  151. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  152. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  153. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  154. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  155. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  156. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +31 -165
  157. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  158. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +4 -4
  159. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  160. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +36 -9
  161. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  162. package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  163. package/dist/esm/services/providers/zai/ZAIChatService.js +31 -162
  164. package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
  165. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  166. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  167. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  168. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  169. package/dist/esm/utils/index.d.ts +4 -0
  170. package/dist/esm/utils/index.d.ts.map +1 -1
  171. package/dist/esm/utils/index.js +4 -0
  172. package/dist/esm/utils/index.js.map +1 -1
  173. package/dist/esm/utils/openaiCompatibleSse.d.ts +10 -0
  174. package/dist/esm/utils/openaiCompatibleSse.d.ts.map +1 -0
  175. package/dist/esm/utils/openaiCompatibleSse.js +119 -0
  176. package/dist/esm/utils/openaiCompatibleSse.js.map +1 -0
  177. package/dist/esm/utils/openaiCompatibleTools.d.ts +4 -0
  178. package/dist/esm/utils/openaiCompatibleTools.d.ts.map +1 -0
  179. package/dist/esm/utils/openaiCompatibleTools.js +21 -0
  180. package/dist/esm/utils/openaiCompatibleTools.js.map +1 -0
  181. package/dist/esm/utils/processChatFlow.d.ts +12 -0
  182. package/dist/esm/utils/processChatFlow.d.ts.map +1 -0
  183. package/dist/esm/utils/processChatFlow.js +19 -0
  184. package/dist/esm/utils/processChatFlow.js.map +1 -0
  185. package/dist/esm/utils/visionModelResolver.d.ts +12 -0
  186. package/dist/esm/utils/visionModelResolver.d.ts.map +1 -0
  187. package/dist/esm/utils/visionModelResolver.js +18 -0
  188. package/dist/esm/utils/visionModelResolver.js.map +1 -0
  189. package/dist/umd/aituber-onair-chat.js +1615 -1438
  190. package/dist/umd/aituber-onair-chat.min.js +6 -13
  191. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { ENDPOINT_ZAI_CHAT_COMPLETIONS_API, MODEL_GLM_4_7, MODEL_GLM_4_6V_FLASH, isZaiToolStreamModel, isZaiVisionModel, } from '../../../constants/zai';
2
2
  import { getMaxTokensForResponseLength, } from '../../../constants/chat';
3
- import { StreamTextAccumulator } from '../../../utils/streamTextAccumulator';
4
3
  import { ChatServiceHttpClient } from '../../../utils/chatServiceHttpClient';
4
+ import { buildOpenAICompatibleTools, parseOpenAICompatibleOneShot, parseOpenAICompatibleTextStream, parseOpenAICompatibleToolStream, processChatWithOptionalTools, } from '../../../utils';
5
5
  /**
6
6
  * Z.ai implementation of ChatService (OpenAI-compatible Chat Completions)
7
7
  */
@@ -40,25 +40,17 @@ export class ZAIChatService {
40
40
  * Process chat messages
41
41
  */
42
42
  async processChat(messages, onPartialResponse, onCompleteResponse) {
43
- // Not using tools
44
- if (this.tools.length === 0) {
45
- const res = await this.callZAI(messages, this.model, true);
46
- const full = await this.handleStream(res, onPartialResponse);
47
- await onCompleteResponse(full);
48
- return;
49
- }
50
- // Using tools
51
- const { blocks, stop_reason } = await this.chatOnce(messages);
52
- if (stop_reason === 'end') {
53
- const full = blocks
54
- .filter((b) => b.type === 'text')
55
- .map((b) => b.text)
56
- .join('');
57
- await onCompleteResponse(full);
58
- return;
59
- }
60
- throw new Error('processChat received tool_calls. ' +
61
- 'ChatProcessor must use chatOnce() loop when tools are enabled.');
43
+ await processChatWithOptionalTools({
44
+ hasTools: this.tools.length > 0,
45
+ runWithoutTools: async () => {
46
+ const res = await this.callZAI(messages, this.model, true);
47
+ return this.handleStream(res, onPartialResponse);
48
+ },
49
+ runWithTools: () => this.chatOnce(messages, true, onPartialResponse),
50
+ onCompleteResponse,
51
+ toolErrorMessage: 'processChat received tool_calls. ' +
52
+ 'ChatProcessor must use chatOnce() loop when tools are enabled.',
53
+ });
62
54
  }
63
55
  /**
64
56
  * Process chat messages with images
@@ -67,25 +59,17 @@ export class ZAIChatService {
67
59
  if (!isZaiVisionModel(this.visionModel)) {
68
60
  throw new Error(`Model ${this.visionModel} does not support vision capabilities.`);
69
61
  }
70
- // Not using tools
71
- if (this.tools.length === 0) {
72
- const res = await this.callZAI(messages, this.visionModel, true);
73
- const full = await this.handleStream(res, onPartialResponse);
74
- await onCompleteResponse(full);
75
- return;
76
- }
77
- // Using tools
78
- const { blocks, stop_reason } = await this.visionChatOnce(messages, true, onPartialResponse);
79
- if (stop_reason === 'end') {
80
- const full = blocks
81
- .filter((b) => b.type === 'text')
82
- .map((b) => b.text)
83
- .join('');
84
- await onCompleteResponse(full);
85
- return;
86
- }
87
- throw new Error('processVisionChat received tool_calls. ' +
88
- 'ChatProcessor must use visionChatOnce() loop when tools are enabled.');
62
+ await processChatWithOptionalTools({
63
+ hasTools: this.tools.length > 0,
64
+ runWithoutTools: async () => {
65
+ const res = await this.callZAI(messages, this.visionModel, true);
66
+ return this.handleStream(res, onPartialResponse);
67
+ },
68
+ runWithTools: () => this.visionChatOnce(messages, true, onPartialResponse),
69
+ onCompleteResponse,
70
+ toolErrorMessage: 'processVisionChat received tool_calls. ' +
71
+ 'ChatProcessor must use visionChatOnce() loop when tools are enabled.',
72
+ });
89
73
  }
90
74
  /**
91
75
  * Process chat messages with tools (text only)
@@ -148,141 +132,26 @@ export class ZAIChatService {
148
132
  return body;
149
133
  }
150
134
  buildToolsDefinition() {
151
- if (this.tools.length === 0)
152
- return [];
153
- return this.tools.map((t) => ({
154
- type: 'function',
155
- function: {
156
- name: t.name,
157
- description: t.description,
158
- parameters: t.parameters,
159
- },
160
- }));
135
+ return buildOpenAICompatibleTools(this.tools, 'chat-completions');
161
136
  }
162
137
  async handleStream(res, onPartial) {
163
- const reader = res.body.getReader();
164
- const dec = new TextDecoder();
165
- let full = '';
166
- let buf = '';
167
- while (true) {
168
- const { done, value } = await reader.read();
169
- if (done)
170
- break;
171
- buf += dec.decode(value, { stream: true });
172
- const lines = buf.split('\n');
173
- buf = lines.pop() || '';
174
- for (const line of lines) {
175
- const trimmedLine = line.trim();
176
- if (!trimmedLine || trimmedLine.startsWith(':'))
177
- continue;
178
- if (!trimmedLine.startsWith('data:'))
179
- continue;
180
- const payload = trimmedLine.slice(5).trim();
181
- if (payload === '[DONE]') {
182
- break;
183
- }
184
- try {
185
- const json = JSON.parse(payload);
186
- const content = json.choices?.[0]?.delta?.content || '';
187
- if (content) {
188
- onPartial(content);
189
- full += content;
190
- }
191
- }
192
- catch (e) {
193
- console.debug('Failed to parse SSE data:', payload);
194
- }
195
- }
196
- }
197
- return full;
138
+ return parseOpenAICompatibleTextStream(res, onPartial, {
139
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
140
+ });
198
141
  }
199
142
  /**
200
143
  * Parse streaming response with tool support
201
144
  */
202
145
  async parseStream(res, onPartial) {
203
- const reader = res.body.getReader();
204
- const dec = new TextDecoder();
205
- const textBlocks = [];
206
- const toolCallsMap = new Map();
207
- let buf = '';
208
- while (true) {
209
- const { done, value } = await reader.read();
210
- if (done)
211
- break;
212
- buf += dec.decode(value, { stream: true });
213
- const lines = buf.split('\n');
214
- buf = lines.pop() || '';
215
- for (const line of lines) {
216
- const trimmedLine = line.trim();
217
- if (!trimmedLine || trimmedLine.startsWith(':'))
218
- continue;
219
- if (!trimmedLine.startsWith('data:'))
220
- continue;
221
- const payload = trimmedLine.slice(5).trim();
222
- if (payload === '[DONE]') {
223
- break;
224
- }
225
- try {
226
- const json = JSON.parse(payload);
227
- const delta = json.choices?.[0]?.delta;
228
- if (delta?.content) {
229
- onPartial(delta.content);
230
- StreamTextAccumulator.append(textBlocks, delta.content);
231
- }
232
- if (delta?.tool_calls) {
233
- delta.tool_calls.forEach((c) => {
234
- const entry = toolCallsMap.get(c.index) ?? {
235
- id: c.id,
236
- name: c.function?.name,
237
- args: '',
238
- };
239
- entry.args += c.function?.arguments || '';
240
- toolCallsMap.set(c.index, entry);
241
- });
242
- }
243
- }
244
- catch (e) {
245
- console.debug('Failed to parse SSE data:', payload);
246
- }
247
- }
248
- }
249
- const toolBlocks = Array.from(toolCallsMap.entries())
250
- .sort((a, b) => a[0] - b[0])
251
- .map(([_, e]) => ({
252
- type: 'tool_use',
253
- id: e.id,
254
- name: e.name,
255
- input: JSON.parse(e.args || '{}'),
256
- }));
257
- const blocks = [...textBlocks, ...toolBlocks];
258
- return {
259
- blocks,
260
- stop_reason: toolBlocks.length ? 'tool_use' : 'end',
261
- };
146
+ return parseOpenAICompatibleToolStream(res, onPartial, {
147
+ onJsonError: (payload) => console.debug('Failed to parse SSE data:', payload),
148
+ });
262
149
  }
263
150
  /**
264
151
  * Parse non-streaming response
265
152
  */
266
153
  parseOneShot(data) {
267
- const choice = data.choices?.[0];
268
- const blocks = [];
269
- if (choice?.message?.tool_calls?.length) {
270
- choice.message.tool_calls.forEach((c) => blocks.push({
271
- type: 'tool_use',
272
- id: c.id,
273
- name: c.function?.name,
274
- input: JSON.parse(c.function?.arguments || '{}'),
275
- }));
276
- }
277
- else if (choice?.message?.content) {
278
- blocks.push({ type: 'text', text: choice.message.content });
279
- }
280
- return {
281
- blocks,
282
- stop_reason: blocks.some((b) => b.type === 'tool_use')
283
- ? 'tool_use'
284
- : 'end',
285
- };
154
+ return parseOpenAICompatibleOneShot(data);
286
155
  }
287
156
  }
288
157
  //# sourceMappingURL=ZAIChatService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iCAAiC,EACjC,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E;;GAEG;AACH,MAAM,OAAO,cAAc;IAmBzB;;;;;OAKG;IACH,YACE,MAAc,EACd,QAAgB,aAAa,EAC7B,cAAsB,oBAAoB,EAC1C,KAAwB,EACxB,WAAmB,iCAAiC,EACpD,cAAmC,EACnC,cAGC,EACD,QAGC;QAtCH,oBAAoB;QACX,aAAQ,GAAW,KAAK,CAAC;QAuChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAEjD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAmB,EACnB,iBAAyC,EACzC,kBAAmD;QAEnD,kBAAkB;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,cAAc;QACd,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CACb,mCAAmC;YACjC,gEAAgE,CACnE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAA6B,EAC7B,iBAAyC,EACzC,kBAAmD;QAEnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,WAAW,wCAAwC,CAClE,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,cAAc;QACd,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CACvD,QAAQ,EACR,IAAI,EACJ,iBAAiB,CAClB,CAAC;QAEF,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CACb,yCAAyC;YACvC,sEAAsE,CACzE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAmB,EACnB,SAAkB,IAAI,EACtB,oBAA4C,GAAG,EAAE,GAAE,CAAC,EACpD,SAAkB;QAElB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,QAA6B,EAC7B,SAAkB,KAAK,EACvB,oBAA4C,GAAG,EAAE,GAAE,CAAC,EACpD,SAAkB;QAElB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,WAAW,wCAAwC,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,QAAQ,EACR,IAAI,CAAC,WAAW,EAChB,MAAM,EACN,SAAS,CACV,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,GAAa,EACb,MAAe,EACf,iBAAyC;QAEzC,OAAO,MAAM;YACX,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,QAAyC,EACzC,KAAa,EACb,SAAkB,KAAK,EACvB,SAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAChE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACvC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,QAAyC,EACzC,KAAa,EACb,MAAe,EACf,SAAkB;QAElB,MAAM,IAAI,GAAQ;YAChB,KAAK;YACL,MAAM;YACN,QAAQ;SACT,CAAC;QAEF,MAAM,UAAU,GACd,SAAS,KAAK,SAAS;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,SAA8B;QACtE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC1D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAE/C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;oBACxD,IAAI,OAAO,EAAE,CAAC;wBACZ,SAAS,CAAC,OAAO,CAAC,CAAC;wBACnB,IAAI,IAAI,OAAO,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,GAAa,EACb,SAA8B;QAE9B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;QAE9B,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe,CAAC;QAE5C,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAC1D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAE/C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;oBAEvC,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;wBACnB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACzB,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1D,CAAC;oBAED,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;wBACtB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;4BAClC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gCACzC,EAAE,EAAE,CAAC,CAAC,EAAE;gCACR,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI;gCACtB,IAAI,EAAE,EAAE;6BACT,CAAC;4BACF,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;4BAC1C,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBACnC,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAoB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;SAClC,CAAC,CAAC,CAAC;QAEN,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,CAAC;QAE9C,OAAO;YACL,MAAM;YACN,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;SACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAS;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,IAAI,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;aACjD,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,MAAM;YACN,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;gBACpD,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,KAAK;SACV,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ZAIChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { ChatService } from '../../ChatService';
2
- import { ChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
2
+ import { ZAIChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
3
3
  /**
4
4
  * Z.ai API provider implementation
5
5
  */
6
- export declare class ZAIChatServiceProvider implements ChatServiceProvider {
6
+ export declare class ZAIChatServiceProvider implements ChatServiceProvider<ZAIChatServiceOptions> {
7
7
  /**
8
8
  * Create a chat service instance
9
9
  */
10
- createChatService(options: ChatServiceOptions): ChatService;
10
+ createChatService(options: ZAIChatServiceOptions): ChatService;
11
11
  /**
12
12
  * Get the provider name
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IAgC3D;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAY9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
1
+ {"version":3,"file":"ZAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC;;GAEG;AACH,qBAAa,sBACX,YAAW,mBAAmB,CAAC,qBAAqB,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW;IA2B9D;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAY9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -1,5 +1,6 @@
1
1
  import { ENDPOINT_ZAI_CHAT_COMPLETIONS_API, MODEL_GLM_4_7, MODEL_GLM_4_7_FLASHX, MODEL_GLM_4_7_FLASH, MODEL_GLM_4_6, MODEL_GLM_4_6V, MODEL_GLM_4_6V_FLASHX, MODEL_GLM_4_6V_FLASH, isZaiVisionModel, } from '../../../constants/zai';
2
2
  import { ZAIChatService } from './ZAIChatService';
3
+ import { resolveVisionModel } from '../../../utils';
3
4
  /**
4
5
  * Z.ai API provider implementation
5
6
  */
@@ -9,14 +10,14 @@ export class ZAIChatServiceProvider {
9
10
  */
10
11
  createChatService(options) {
11
12
  const model = options.model || this.getDefaultModel();
12
- const visionModel = options.visionModel ||
13
- (this.supportsVisionForModel(model)
14
- ? model
15
- : this.getDefaultVisionModel());
16
- if (options.visionModel &&
17
- !this.supportsVisionForModel(options.visionModel)) {
18
- throw new Error(`Model ${options.visionModel} does not support vision capabilities.`);
19
- }
13
+ const visionModel = resolveVisionModel({
14
+ model,
15
+ visionModel: options.visionModel,
16
+ defaultModel: this.getDefaultModel(),
17
+ defaultVisionModel: this.getDefaultVisionModel(),
18
+ supportsVisionForModel: (visionModel) => this.supportsVisionForModel(visionModel),
19
+ validate: 'explicit',
20
+ });
20
21
  const tools = options.tools;
21
22
  const thinking = options.thinking ?? { type: 'disabled' };
22
23
  return new ZAIChatService(options.apiKey, model, visionModel, tools, options.endpoint || ENDPOINT_ZAI_CHAT_COMPLETIONS_API, options.responseLength, options.responseFormat, thinking);
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEpC,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,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;QAEnE,OAAO,IAAI,cAAc,CACvB,OAAO,CAAC,MAAM,EACd,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,iCAAiC,EACrD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"ZAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAGjC;;OAEG;IACH,iBAAiB,CAAC,OAA8B;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC;YACrC,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAChD,sBAAsB,EAAE,CAAC,WAAW,EAAE,EAAE,CACtC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YAC1C,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;QAEnE,OAAO,IAAI,cAAc,CACvB,OAAO,CAAC,MAAM,EACd,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,iCAAiC,EACrD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -6,4 +6,8 @@ export * from './streamTextAccumulator';
6
6
  export * from './screenplay';
7
7
  export * from './emotionParser';
8
8
  export * from './runOnce';
9
+ export * from './openaiCompatibleSse';
10
+ export * from './openaiCompatibleTools';
11
+ export * from './processChatFlow';
12
+ export * from './visionModelResolver';
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -6,4 +6,8 @@ export * from './streamTextAccumulator';
6
6
  export * from './screenplay';
7
7
  export * from './emotionParser';
8
8
  export * from './runOnce';
9
+ export * from './openaiCompatibleSse';
10
+ export * from './openaiCompatibleTools';
11
+ export * from './processChatFlow';
12
+ export * from './visionModelResolver';
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ToolChatBlock, ToolChatCompletion } from '../types';
2
+ type SseParseOptions = {
3
+ onJsonError?: (payload: string, error: unknown) => void;
4
+ appendTextBlock?: (blocks: ToolChatBlock[], text: string) => void;
5
+ };
6
+ export declare function parseOpenAICompatibleTextStream(res: Response, onPartial: (text: string) => void, options?: SseParseOptions): Promise<string>;
7
+ export declare function parseOpenAICompatibleToolStream(res: Response, onPartial: (text: string) => void, options?: SseParseOptions): Promise<ToolChatCompletion>;
8
+ export declare function parseOpenAICompatibleOneShot(data: any): ToolChatCompletion;
9
+ export {};
10
+ //# sourceMappingURL=openaiCompatibleSse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiCompatibleSse.d.ts","sourceRoot":"","sources":["../../../src/utils/openaiCompatibleSse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG7D,KAAK,eAAe,GAAG;IACrB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE,CAAC;AAsDF,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACjC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA6C7B;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,GAAG,kBAAkB,CAyB1E"}
@@ -0,0 +1,119 @@
1
+ import { StreamTextAccumulator } from './streamTextAccumulator';
2
+ const parseJsonPayload = (payload, onJsonError) => {
3
+ try {
4
+ return JSON.parse(payload);
5
+ }
6
+ catch (error) {
7
+ if (onJsonError) {
8
+ onJsonError(payload, error);
9
+ return undefined;
10
+ }
11
+ throw error;
12
+ }
13
+ };
14
+ const forEachSsePayload = async (res, onPayload) => {
15
+ const reader = res.body?.getReader();
16
+ if (!reader) {
17
+ throw new Error('Response body is null.');
18
+ }
19
+ const dec = new TextDecoder();
20
+ let buf = '';
21
+ let shouldStop = false;
22
+ while (!shouldStop) {
23
+ const { done, value } = await reader.read();
24
+ if (done)
25
+ break;
26
+ buf += dec.decode(value, { stream: true });
27
+ const lines = buf.split('\n');
28
+ buf = lines.pop() || '';
29
+ for (const line of lines) {
30
+ const trimmedLine = line.trim();
31
+ if (!trimmedLine || trimmedLine.startsWith(':'))
32
+ continue;
33
+ if (!trimmedLine.startsWith('data:'))
34
+ continue;
35
+ const payload = trimmedLine.slice(5).trim();
36
+ if (payload === '[DONE]') {
37
+ shouldStop = true;
38
+ break;
39
+ }
40
+ onPayload(payload);
41
+ }
42
+ }
43
+ };
44
+ export async function parseOpenAICompatibleTextStream(res, onPartial, options = {}) {
45
+ let full = '';
46
+ await forEachSsePayload(res, (payload) => {
47
+ const json = parseJsonPayload(payload, options.onJsonError);
48
+ if (!json)
49
+ return;
50
+ const content = json.choices?.[0]?.delta?.content || '';
51
+ if (content) {
52
+ onPartial(content);
53
+ full += content;
54
+ }
55
+ });
56
+ return full;
57
+ }
58
+ export async function parseOpenAICompatibleToolStream(res, onPartial, options = {}) {
59
+ const textBlocks = [];
60
+ const toolCallsMap = new Map();
61
+ const appendTextBlock = options.appendTextBlock ?? StreamTextAccumulator.append;
62
+ await forEachSsePayload(res, (payload) => {
63
+ const json = parseJsonPayload(payload, options.onJsonError);
64
+ if (!json)
65
+ return;
66
+ const delta = json.choices?.[0]?.delta;
67
+ if (delta?.content) {
68
+ onPartial(delta.content);
69
+ appendTextBlock(textBlocks, delta.content);
70
+ }
71
+ if (delta?.tool_calls) {
72
+ delta.tool_calls.forEach((c) => {
73
+ const entry = toolCallsMap.get(c.index) ?? {
74
+ id: c.id,
75
+ name: c.function?.name,
76
+ args: '',
77
+ };
78
+ entry.args += c.function?.arguments || '';
79
+ toolCallsMap.set(c.index, entry);
80
+ });
81
+ }
82
+ });
83
+ const toolBlocks = Array.from(toolCallsMap.entries())
84
+ .sort((a, b) => a[0] - b[0])
85
+ .map(([_, e]) => ({
86
+ type: 'tool_use',
87
+ id: e.id,
88
+ name: e.name,
89
+ input: JSON.parse(e.args || '{}'),
90
+ }));
91
+ const blocks = [...textBlocks, ...toolBlocks];
92
+ return {
93
+ blocks,
94
+ stop_reason: toolBlocks.length ? 'tool_use' : 'end',
95
+ };
96
+ }
97
+ export function parseOpenAICompatibleOneShot(data) {
98
+ const choice = data?.choices?.[0];
99
+ const blocks = [];
100
+ if (choice?.message?.tool_calls?.length) {
101
+ choice.message.tool_calls.forEach((c) => blocks.push({
102
+ type: 'tool_use',
103
+ id: c.id,
104
+ name: c.function?.name,
105
+ input: JSON.parse(c.function?.arguments || '{}'),
106
+ }));
107
+ }
108
+ else if (choice?.message?.content) {
109
+ blocks.push({ type: 'text', text: choice.message.content });
110
+ }
111
+ return {
112
+ blocks,
113
+ stop_reason: choice?.finish_reason === 'tool_calls' ||
114
+ blocks.some((b) => b.type === 'tool_use')
115
+ ? 'tool_use'
116
+ : 'end',
117
+ };
118
+ }
119
+ //# sourceMappingURL=openaiCompatibleSse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiCompatibleSse.js","sourceRoot":"","sources":["../../../src/utils/openaiCompatibleSse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ToolDefinition } from '../types';
2
+ export type OpenAICompatibleToolFormat = 'chat-completions' | 'responses';
3
+ export declare const buildOpenAICompatibleTools: (tools: ToolDefinition[], format?: OpenAICompatibleToolFormat) => any[];
4
+ //# sourceMappingURL=openaiCompatibleTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiCompatibleTools.d.ts","sourceRoot":"","sources":["../../../src/utils/openaiCompatibleTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,GAAG,WAAW,CAAC;AAE1E,eAAO,MAAM,0BAA0B,GACrC,OAAO,cAAc,EAAE,EACvB,SAAQ,0BAA+C,KACtD,GAAG,EAoBL,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const buildOpenAICompatibleTools = (tools, format = 'chat-completions') => {
2
+ if (tools.length === 0)
3
+ return [];
4
+ if (format === 'responses') {
5
+ return tools.map((t) => ({
6
+ type: 'function',
7
+ name: t.name,
8
+ description: t.description,
9
+ parameters: t.parameters,
10
+ }));
11
+ }
12
+ return tools.map((t) => ({
13
+ type: 'function',
14
+ function: {
15
+ name: t.name,
16
+ description: t.description,
17
+ parameters: t.parameters,
18
+ },
19
+ }));
20
+ };
21
+ //# sourceMappingURL=openaiCompatibleTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiCompatibleTools.js","sourceRoot":"","sources":["../../../src/utils/openaiCompatibleTools.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAuB,EACvB,SAAqC,kBAAkB,EAChD,EAAE;IACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB;KACF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ToolChatBlock, ToolChatCompletion } from '../types';
2
+ type ProcessChatFlowOptions<B = ToolChatBlock> = {
3
+ hasTools: boolean;
4
+ runWithoutTools: () => Promise<string>;
5
+ runWithTools: () => Promise<ToolChatCompletion<B>>;
6
+ onCompleteResponse: (text: string) => Promise<void>;
7
+ toolErrorMessage: string;
8
+ onToolBlocks?: (blocks: B[]) => void;
9
+ };
10
+ export declare function processChatWithOptionalTools<B = ToolChatBlock>(options: ProcessChatFlowOptions<B>): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=processChatFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processChatFlow.d.ts","sourceRoot":"","sources":["../../../src/utils/processChatFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG7D,KAAK,sBAAsB,CAAC,CAAC,GAAG,aAAa,IAAI;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,wBAAsB,4BAA4B,CAAC,CAAC,GAAG,aAAa,EAClE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -0,0 +1,19 @@
1
+ import { StreamTextAccumulator } from './streamTextAccumulator';
2
+ export async function processChatWithOptionalTools(options) {
3
+ if (!options.hasTools) {
4
+ const full = await options.runWithoutTools();
5
+ await options.onCompleteResponse(full);
6
+ return;
7
+ }
8
+ const result = await options.runWithTools();
9
+ if (options.onToolBlocks) {
10
+ options.onToolBlocks(result.blocks);
11
+ }
12
+ if (result.stop_reason === 'end') {
13
+ const full = StreamTextAccumulator.getFullText(result.blocks);
14
+ await options.onCompleteResponse(full);
15
+ return;
16
+ }
17
+ throw new Error(options.toolErrorMessage);
18
+ }
19
+ //# sourceMappingURL=processChatFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processChatFlow.js","sourceRoot":"","sources":["../../../src/utils/processChatFlow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAWhE,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAkC;IAElC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAC5C,MAAM,CAAC,MAAyB,CACjC,CAAC;QACF,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,12 @@
1
+ type VisionModelValidationMode = 'none' | 'explicit' | 'resolved';
2
+ export type VisionModelResolutionOptions = {
3
+ model?: string;
4
+ visionModel?: string;
5
+ defaultModel: string;
6
+ defaultVisionModel: string;
7
+ supportsVisionForModel: (model: string) => boolean;
8
+ validate?: VisionModelValidationMode;
9
+ };
10
+ export declare const resolveVisionModel: (options: VisionModelResolutionOptions) => string;
11
+ export {};
12
+ //# sourceMappingURL=visionModelResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visionModelResolver.d.ts","sourceRoot":"","sources":["../../../src/utils/visionModelResolver.ts"],"names":[],"mappings":"AAAA,KAAK,yBAAyB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,4BAA4B,KACpC,MA0BF,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const resolveVisionModel = (options) => {
2
+ const baseModel = options.model ?? options.defaultModel;
3
+ const resolved = options.visionModel ??
4
+ (options.supportsVisionForModel(baseModel)
5
+ ? baseModel
6
+ : options.defaultVisionModel);
7
+ if (options.validate === 'explicit' &&
8
+ options.visionModel &&
9
+ !options.supportsVisionForModel(options.visionModel)) {
10
+ throw new Error(`Model ${options.visionModel} does not support vision capabilities.`);
11
+ }
12
+ if (options.validate === 'resolved' &&
13
+ !options.supportsVisionForModel(resolved)) {
14
+ throw new Error(`Model ${resolved} does not support vision capabilities.`);
15
+ }
16
+ return resolved;
17
+ };
18
+ //# sourceMappingURL=visionModelResolver.js.map