@vybestack/llxprt-code-core 0.1.23-nightly.250903.97906524 → 0.1.23-nightly.250905.67589d14

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 (82) hide show
  1. package/dist/src/adapters/IStreamAdapter.d.ts +3 -3
  2. package/dist/src/auth/types.d.ts +4 -4
  3. package/dist/src/config/index.d.ts +7 -0
  4. package/dist/src/config/index.js +8 -0
  5. package/dist/src/config/index.js.map +1 -0
  6. package/dist/src/core/client.d.ts +9 -21
  7. package/dist/src/core/client.js +46 -144
  8. package/dist/src/core/client.js.map +1 -1
  9. package/dist/src/core/compression-config.d.ts +1 -1
  10. package/dist/src/core/compression-config.js +4 -5
  11. package/dist/src/core/compression-config.js.map +1 -1
  12. package/dist/src/core/coreToolScheduler.js +50 -15
  13. package/dist/src/core/coreToolScheduler.js.map +1 -1
  14. package/dist/src/core/geminiChat.d.ts +51 -2
  15. package/dist/src/core/geminiChat.js +592 -93
  16. package/dist/src/core/geminiChat.js.map +1 -1
  17. package/dist/src/core/nonInteractiveToolExecutor.js +70 -19
  18. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -2
  20. package/dist/src/index.js +2 -2
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/providers/BaseProvider.d.ts +8 -3
  23. package/dist/src/providers/BaseProvider.js.map +1 -1
  24. package/dist/src/providers/IProvider.d.ts +9 -3
  25. package/dist/src/providers/LoggingProviderWrapper.d.ts +10 -3
  26. package/dist/src/providers/LoggingProviderWrapper.js +33 -27
  27. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  28. package/dist/src/providers/ProviderContentGenerator.d.ts +2 -2
  29. package/dist/src/providers/ProviderContentGenerator.js +9 -6
  30. package/dist/src/providers/ProviderContentGenerator.js.map +1 -1
  31. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +12 -17
  32. package/dist/src/providers/anthropic/AnthropicProvider.js +238 -447
  33. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  34. package/dist/src/providers/gemini/GeminiProvider.d.ts +12 -6
  35. package/dist/src/providers/gemini/GeminiProvider.js +184 -458
  36. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  37. package/dist/src/providers/openai/ConversationCache.d.ts +3 -3
  38. package/dist/src/providers/openai/IChatGenerateParams.d.ts +9 -4
  39. package/dist/src/providers/openai/OpenAIProvider.d.ts +14 -61
  40. package/dist/src/providers/openai/OpenAIProvider.js +270 -575
  41. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  42. package/dist/src/providers/openai/buildResponsesRequest.d.ts +3 -3
  43. package/dist/src/providers/openai/buildResponsesRequest.js +67 -37
  44. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
  45. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +2 -2
  46. package/dist/src/providers/openai/estimateRemoteTokens.js +21 -8
  47. package/dist/src/providers/openai/estimateRemoteTokens.js.map +1 -1
  48. package/dist/src/providers/openai/parseResponsesStream.d.ts +6 -2
  49. package/dist/src/providers/openai/parseResponsesStream.js +99 -391
  50. package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
  51. package/dist/src/providers/openai/syntheticToolResponses.d.ts +5 -5
  52. package/dist/src/providers/openai/syntheticToolResponses.js +102 -91
  53. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -1
  54. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +16 -17
  55. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +222 -224
  56. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
  57. package/dist/src/providers/types.d.ts +1 -1
  58. package/dist/src/services/history/ContentConverters.d.ts +6 -1
  59. package/dist/src/services/history/ContentConverters.js +155 -18
  60. package/dist/src/services/history/ContentConverters.js.map +1 -1
  61. package/dist/src/services/history/HistoryService.d.ts +52 -0
  62. package/dist/src/services/history/HistoryService.js +245 -93
  63. package/dist/src/services/history/HistoryService.js.map +1 -1
  64. package/dist/src/services/history/IContent.d.ts +4 -0
  65. package/dist/src/services/history/IContent.js.map +1 -1
  66. package/dist/src/telemetry/types.d.ts +16 -4
  67. package/dist/src/telemetry/types.js.map +1 -1
  68. package/dist/src/tools/IToolFormatter.d.ts +2 -2
  69. package/dist/src/tools/ToolFormatter.d.ts +3 -3
  70. package/dist/src/tools/ToolFormatter.js +80 -37
  71. package/dist/src/tools/ToolFormatter.js.map +1 -1
  72. package/dist/src/tools/todo-schemas.d.ts +4 -4
  73. package/package.json +8 -7
  74. package/dist/src/core/ContentGeneratorAdapter.d.ts +0 -37
  75. package/dist/src/core/ContentGeneratorAdapter.js +0 -58
  76. package/dist/src/core/ContentGeneratorAdapter.js.map +0 -1
  77. package/dist/src/providers/IMessage.d.ts +0 -38
  78. package/dist/src/providers/IMessage.js +0 -17
  79. package/dist/src/providers/IMessage.js.map +0 -1
  80. package/dist/src/providers/adapters/GeminiCompatibleWrapper.d.ts +0 -69
  81. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +0 -577
  82. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +0 -1
@@ -1,577 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
7
- import { GeminiEventType, } from '../../core/turn.js';
8
- /**
9
- * Wrapper that makes any IProvider compatible with Gemini's ContentGenerator interface
10
- */
11
- export class GeminiCompatibleWrapper {
12
- provider;
13
- constructor(provider) {
14
- this.provider = provider;
15
- }
16
- /**
17
- * Converts Gemini schema format to standard JSON Schema format
18
- * Handles uppercase type enums and string numeric values
19
- */
20
- convertGeminiSchemaToStandard(schema) {
21
- if (!schema || typeof schema !== 'object') {
22
- return schema;
23
- }
24
- const newSchema = { ...schema };
25
- // Handle schema composition keywords
26
- if (newSchema.anyOf && Array.isArray(newSchema.anyOf)) {
27
- newSchema.anyOf = newSchema.anyOf.map((v) => this.convertGeminiSchemaToStandard(v));
28
- }
29
- if (newSchema.allOf && Array.isArray(newSchema.allOf)) {
30
- newSchema.allOf = newSchema.allOf.map((v) => this.convertGeminiSchemaToStandard(v));
31
- }
32
- if (newSchema.oneOf && Array.isArray(newSchema.oneOf)) {
33
- newSchema.oneOf = newSchema.oneOf.map((v) => this.convertGeminiSchemaToStandard(v));
34
- }
35
- // Handle items (can be a schema or array of schemas for tuples)
36
- if (newSchema.items) {
37
- if (Array.isArray(newSchema.items)) {
38
- newSchema.items = newSchema.items.map((item) => this.convertGeminiSchemaToStandard(item));
39
- }
40
- else {
41
- newSchema.items = this.convertGeminiSchemaToStandard(newSchema.items);
42
- }
43
- }
44
- // Handle properties
45
- if (newSchema.properties && typeof newSchema.properties === 'object') {
46
- const newProperties = {};
47
- for (const [key, value] of Object.entries(newSchema.properties)) {
48
- newProperties[key] = this.convertGeminiSchemaToStandard(value);
49
- }
50
- newSchema.properties = newProperties;
51
- }
52
- // Handle additionalProperties if it's a schema
53
- if (newSchema.additionalProperties &&
54
- typeof newSchema.additionalProperties === 'object') {
55
- newSchema.additionalProperties = this.convertGeminiSchemaToStandard(newSchema.additionalProperties);
56
- }
57
- // Handle patternProperties
58
- if (newSchema.patternProperties &&
59
- typeof newSchema.patternProperties === 'object') {
60
- const newPatternProperties = {};
61
- for (const [key, value] of Object.entries(newSchema.patternProperties)) {
62
- newPatternProperties[key] = this.convertGeminiSchemaToStandard(value);
63
- }
64
- newSchema.patternProperties = newPatternProperties;
65
- }
66
- // Handle dependencies (can be array of property names or schema)
67
- if (newSchema.dependencies && typeof newSchema.dependencies === 'object') {
68
- const newDependencies = {};
69
- for (const [key, value] of Object.entries(newSchema.dependencies)) {
70
- if (Array.isArray(value)) {
71
- // Property dependencies (array of property names)
72
- newDependencies[key] = value;
73
- }
74
- else {
75
- // Schema dependencies
76
- newDependencies[key] = this.convertGeminiSchemaToStandard(value);
77
- }
78
- }
79
- newSchema.dependencies = newDependencies;
80
- }
81
- // Handle if/then/else
82
- if (newSchema.if) {
83
- newSchema.if = this.convertGeminiSchemaToStandard(newSchema.if);
84
- }
85
- if (newSchema.then) {
86
- newSchema.then = this.convertGeminiSchemaToStandard(newSchema.then);
87
- }
88
- if (newSchema.else) {
89
- newSchema.else = this.convertGeminiSchemaToStandard(newSchema.else);
90
- }
91
- // Handle not
92
- if (newSchema.not) {
93
- newSchema.not = this.convertGeminiSchemaToStandard(newSchema.not);
94
- }
95
- // Convert type from UPPERCASE enum to lowercase string
96
- if (newSchema.type) {
97
- newSchema.type = String(newSchema.type).toLowerCase();
98
- }
99
- // Convert all numeric properties from strings to numbers
100
- const numericProperties = [
101
- 'minItems',
102
- 'maxItems',
103
- 'minLength',
104
- 'maxLength',
105
- 'minimum',
106
- 'maximum',
107
- 'minProperties',
108
- 'maxProperties',
109
- 'multipleOf',
110
- ];
111
- for (const prop of numericProperties) {
112
- if (newSchema[prop] !== undefined) {
113
- newSchema[prop] = Number(newSchema[prop]);
114
- }
115
- }
116
- return newSchema;
117
- }
118
- /**
119
- * Convert Gemini tools format to provider tools format
120
- */
121
- convertGeminiToolsToProviderTools(geminiTools) {
122
- const providerTools = [];
123
- for (const tool of geminiTools) {
124
- if (tool.functionDeclarations) {
125
- // Gemini format has functionDeclarations array
126
- for (const func of tool.functionDeclarations) {
127
- providerTools.push({
128
- type: 'function',
129
- function: {
130
- name: func.name,
131
- description: func.description || '',
132
- parameters: this.convertGeminiSchemaToStandard(func.parameters) ?? {
133
- type: 'object',
134
- properties: {},
135
- required: [],
136
- },
137
- },
138
- });
139
- }
140
- }
141
- }
142
- return providerTools;
143
- }
144
- /**
145
- * Generate content using the wrapped provider (non-streaming)
146
- * @param params Parameters for content generation
147
- * @returns A promise resolving to a Gemini-formatted response
148
- */
149
- async generateContent(params) {
150
- // Convert Gemini contents to provider messages
151
- const messages = this.convertContentsToMessages(params.contents);
152
- // Collect full response from provider stream
153
- const responseMessages = [];
154
- const stream = this.provider.generateChatCompletion(messages);
155
- for await (const chunk of stream) {
156
- responseMessages.push(chunk);
157
- }
158
- // Convert provider response to Gemini format
159
- return this.convertMessagesToResponse(responseMessages);
160
- }
161
- /**
162
- * Generate content using the wrapped provider (streaming)
163
- * @param params Parameters for content generation
164
- * @returns An async generator yielding Gemini-formatted responses
165
- */
166
- async *generateContentStream(params) {
167
- // Convert Gemini contents to provider messages
168
- let messages = this.convertContentsToMessages(params.contents);
169
- // Add system instruction if provided
170
- if (params.config?.systemInstruction) {
171
- let systemContent;
172
- // Handle different systemInstruction formats
173
- if (typeof params.config.systemInstruction === 'string') {
174
- systemContent = params.config.systemInstruction;
175
- }
176
- else {
177
- // It's a ContentUnion - convert to string
178
- const systemMessages = this.convertContentsToMessages(params.config.systemInstruction);
179
- systemContent = systemMessages.map((m) => m.content).join('\n');
180
- }
181
- messages = [
182
- {
183
- role: 'system',
184
- content: systemContent,
185
- },
186
- ...messages,
187
- ];
188
- }
189
- // Extract and convert tools from config if available
190
- let providerTools;
191
- const geminiTools = params.config?.tools;
192
- if (geminiTools && Array.isArray(geminiTools)) {
193
- providerTools = this.convertGeminiToolsToProviderTools(geminiTools);
194
- }
195
- // Stream from provider and convert each chunk
196
- const stream = this.provider.generateChatCompletion(messages, providerTools);
197
- // Collect all chunks to batch telemetry events
198
- const collectedChunks = [];
199
- let hasUsageMetadata = false;
200
- for await (const chunk of stream) {
201
- const response = this.convertMessageToStreamResponse(chunk);
202
- collectedChunks.push(response);
203
- // Check if this chunk has usage metadata
204
- if (chunk.usage) {
205
- hasUsageMetadata = true;
206
- }
207
- // Yield the response chunk immediately for UI updates
208
- yield response;
209
- }
210
- // After streaming is complete, yield a final response with usage metadata if we collected any
211
- // This mimics how geminiChat.ts logs telemetry after collecting all chunks
212
- if (hasUsageMetadata && collectedChunks.length > 0) {
213
- // Find the last chunk with usage metadata
214
- const lastChunkWithUsage = [...collectedChunks].reverse().find((chunk) =>
215
- // Check if any message in the chunk had usage data
216
- chunk.candidates?.some((candidate) => candidate.content?.parts?.some((part) => 'usage' in part)));
217
- // The telemetry will be logged by the consuming code when it sees the usage metadata
218
- if (lastChunkWithUsage) {
219
- // Usage data is included in the stream for telemetry purposes
220
- void lastChunkWithUsage; // Mark as intentionally unused
221
- }
222
- }
223
- }
224
- /**
225
- * Adapts a provider's stream to Gemini event format
226
- * @param providerStream The provider-specific stream
227
- * @returns An async iterator of Gemini events
228
- */
229
- async *adaptStream(providerStream) {
230
- yield* this.adaptProviderStream(providerStream);
231
- }
232
- /**
233
- * Adapts the provider's stream format to Gemini's expected format
234
- * @param providerStream Stream from the provider
235
- * @returns Async iterator of Gemini events
236
- */
237
- async *adaptProviderStream(providerStream) {
238
- for await (const message of providerStream) {
239
- // Emit content event if message has non-empty content
240
- if (message.content && message.content.length > 0) {
241
- const contentValue = typeof message.content === 'string'
242
- ? message.content
243
- : String(message.content);
244
- const contentEvent = {
245
- type: GeminiEventType.Content,
246
- value: contentValue,
247
- };
248
- yield contentEvent;
249
- }
250
- // Emit tool call events if message has tool calls
251
- if (message.tool_calls && message.tool_calls.length > 0) {
252
- for (const toolCall of message.tool_calls) {
253
- let args = {};
254
- try {
255
- args = JSON.parse(toolCall.function.arguments);
256
- }
257
- catch (_e) {
258
- // Use empty object as fallback
259
- }
260
- const toolEvent = {
261
- type: GeminiEventType.ToolCallRequest,
262
- value: {
263
- callId: toolCall.id,
264
- name: toolCall.function.name,
265
- args,
266
- isClientInitiated: false,
267
- },
268
- };
269
- yield toolEvent;
270
- }
271
- }
272
- // Emit usage metadata event if message has usage data
273
- if (message.usage) {
274
- const usageEvent = {
275
- type: GeminiEventType.UsageMetadata,
276
- value: {
277
- promptTokenCount: message.usage.prompt_tokens,
278
- candidatesTokenCount: message.usage.completion_tokens,
279
- totalTokenCount: message.usage.total_tokens,
280
- },
281
- };
282
- yield usageEvent;
283
- }
284
- }
285
- }
286
- /**
287
- * Convert Gemini ContentListUnion to provider ProviderMessage array
288
- */
289
- convertContentsToMessages(contents) {
290
- // Debug logging for OpenRouter issue
291
- if (process.env.DEBUG) {
292
- console.log('[GeminiCompatibleWrapper] convertContentsToMessages input:', {
293
- type: Array.isArray(contents) ? 'array' : typeof contents,
294
- length: Array.isArray(contents) ? contents.length : 'N/A',
295
- contents: JSON.stringify(contents).substring(0, 500),
296
- });
297
- }
298
- // Normalize ContentListUnion to Content[]
299
- let contentArray;
300
- // Check if contents is undefined or null
301
- if (!contents) {
302
- return [];
303
- }
304
- if (Array.isArray(contents)) {
305
- // Filter out any undefined/null elements
306
- const validContents = contents.filter((item) => item !== undefined && item !== null);
307
- // If it's already an array, check if it's Content[] or PartUnion[]
308
- if (validContents.length === 0) {
309
- contentArray = [];
310
- }
311
- else if (validContents[0] &&
312
- typeof validContents[0] === 'object' &&
313
- 'role' in validContents[0]) {
314
- // It's Content[]
315
- contentArray = validContents;
316
- }
317
- else {
318
- // It's PartUnion[] - convert to Part[] and wrap in a single Content with user role
319
- const parts = validContents.map((item) => typeof item === 'string' ? { text: item } : item);
320
- // Special handling: check if all parts are functionResponses
321
- // Note: this check was computed but not used in the current implementation
322
- contentArray = [
323
- {
324
- role: 'user',
325
- parts,
326
- },
327
- ];
328
- }
329
- }
330
- else if (typeof contents === 'string') {
331
- // It's a string - wrap in Part and Content
332
- contentArray = [
333
- {
334
- role: 'user',
335
- parts: [{ text: contents }],
336
- },
337
- ];
338
- }
339
- else if (typeof contents === 'object' &&
340
- contents !== null &&
341
- 'role' in contents) {
342
- // It's a single Content
343
- contentArray = [contents];
344
- }
345
- else {
346
- // It's a single Part - wrap in Content with user role
347
- contentArray = [
348
- {
349
- role: 'user',
350
- parts: [contents],
351
- },
352
- ];
353
- }
354
- const messages = [];
355
- for (const content of contentArray) {
356
- // Validate content object
357
- if (!content || typeof content !== 'object') {
358
- continue;
359
- }
360
- if (!content.role) {
361
- continue;
362
- }
363
- // Check for function responses (tool results)
364
- const functionResponses = (content.parts || []).filter((part) => 'functionResponse' in part);
365
- if (functionResponses.length > 0) {
366
- // Check for other parts that need to be preserved (like PDFs)
367
- const nonFunctionResponseParts = (content.parts || []).filter((part) => !('functionResponse' in part));
368
- // Collect any binary content from function responses
369
- const binaryParts = [];
370
- // Convert each function response to a tool message
371
- for (const part of functionResponses) {
372
- const response = part.functionResponse.response;
373
- let content;
374
- // Check if response contains binary content
375
- if (response &&
376
- typeof response === 'object' &&
377
- 'binaryContent' in response) {
378
- // Extract the binary content
379
- const binaryContent = response.binaryContent;
380
- if (binaryContent) {
381
- binaryParts.push(binaryContent);
382
- }
383
- content = response.output || `Processed binary content`;
384
- }
385
- else if (typeof response === 'string') {
386
- content = response;
387
- }
388
- else if (response?.error) {
389
- content = `Error: ${response.error}`;
390
- }
391
- else if (response?.llmContent) {
392
- content = String(response.llmContent);
393
- }
394
- else if (response?.output) {
395
- content = String(response.output);
396
- }
397
- else {
398
- content = JSON.stringify(response);
399
- }
400
- const toolCallId = part.functionResponse.id;
401
- if (!toolCallId) {
402
- throw new Error(`Tool response for '${part.functionResponse.name}' is missing required tool_call_id. This ID must match the original tool call ID from the model.`);
403
- }
404
- messages.push({
405
- role: 'tool',
406
- content,
407
- tool_call_id: toolCallId,
408
- name: part.functionResponse.name,
409
- });
410
- }
411
- // If there are binary parts from function responses or non-functionResponse parts, add them as user messages
412
- const allBinaryParts = [...binaryParts, ...nonFunctionResponseParts];
413
- if (allBinaryParts.length > 0) {
414
- const binaryMessage = {
415
- role: ContentGeneratorRole.USER,
416
- content: '',
417
- };
418
- // Only include parts field for Gemini provider
419
- if (this.provider.name === 'gemini') {
420
- binaryMessage.parts = allBinaryParts;
421
- }
422
- messages.push(binaryMessage);
423
- }
424
- }
425
- else {
426
- // Check for function calls (tool calls from the model)
427
- const functionCalls = (content.parts || []).filter((part) => 'functionCall' in part);
428
- // Get all parts
429
- const allParts = content.parts || [];
430
- // Extract text content
431
- const textParts = allParts
432
- .filter((part) => 'text' in part)
433
- .map((part) => part.text);
434
- const combinedText = textParts.join('');
435
- // Map Gemini roles to provider roles
436
- let role;
437
- if (content.role === 'model') {
438
- role = ContentGeneratorRole.ASSISTANT;
439
- }
440
- else if (content.role === 'user') {
441
- role = ContentGeneratorRole.USER;
442
- }
443
- else if (content.role === 'system') {
444
- role = 'system';
445
- }
446
- else {
447
- role = content.role;
448
- }
449
- const message = {
450
- role,
451
- content: combinedText,
452
- };
453
- // Only include parts field for Gemini provider
454
- // OpenAI and Anthropic don't support the parts field
455
- if (this.provider.name === 'gemini') {
456
- // Preserve all parts including non-text content (PDFs, images, etc.)
457
- message.parts = allParts;
458
- }
459
- // If this is an assistant message with function calls, add them
460
- if (role === 'assistant' && functionCalls.length > 0) {
461
- message.tool_calls = functionCalls.map((part) => ({
462
- id: part.functionCall.id ||
463
- `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
464
- type: 'function',
465
- function: {
466
- name: part.functionCall.name,
467
- arguments: JSON.stringify(part.functionCall.args || {}),
468
- },
469
- }));
470
- }
471
- messages.push(message);
472
- }
473
- }
474
- return messages;
475
- }
476
- /**
477
- * Convert provider messages to a single Gemini response
478
- */
479
- convertMessagesToResponse(messages) {
480
- // Combine all messages into a single response
481
- const combinedContent = messages.map((m) => m.content || '').join('');
482
- const parts = [];
483
- // Add text content
484
- if (combinedContent) {
485
- parts.push({ text: combinedContent });
486
- }
487
- // Add tool calls as function calls
488
- for (const message of messages) {
489
- if (message.tool_calls) {
490
- for (const toolCall of message.tool_calls) {
491
- let args = {};
492
- try {
493
- args = JSON.parse(toolCall.function.arguments);
494
- }
495
- catch (_e) {
496
- // Use empty object as fallback
497
- }
498
- parts.push({
499
- functionCall: {
500
- name: toolCall.function.name,
501
- args,
502
- },
503
- });
504
- }
505
- }
506
- // CRITICAL FIX: Preserve parts from the message (PDFs, images, etc.)
507
- if (message.parts && message.parts.length > 0) {
508
- parts.push(...message.parts);
509
- }
510
- }
511
- return {
512
- candidates: [
513
- {
514
- content: {
515
- role: 'model',
516
- parts,
517
- },
518
- },
519
- ],
520
- };
521
- }
522
- /**
523
- * Convert a single provider message to a streaming Gemini response
524
- */
525
- convertMessageToStreamResponse(message) {
526
- const parts = [];
527
- // Add text content if present
528
- if (message.content) {
529
- parts.push({ text: message.content });
530
- }
531
- // Add tool calls as function calls
532
- if (message.tool_calls) {
533
- for (const toolCall of message.tool_calls) {
534
- let args = {};
535
- try {
536
- args = JSON.parse(toolCall.function.arguments);
537
- }
538
- catch (_e) {
539
- // Use empty object as fallback
540
- }
541
- parts.push({
542
- functionCall: {
543
- name: toolCall.function.name,
544
- args,
545
- // Store the tool call ID in the functionCall for later retrieval
546
- id: toolCall.id,
547
- },
548
- });
549
- }
550
- }
551
- // CRITICAL FIX: Preserve parts from the message (PDFs, images, etc.)
552
- if (message.parts && message.parts.length > 0) {
553
- parts.push(...message.parts);
554
- }
555
- const response = {
556
- candidates: [
557
- {
558
- content: {
559
- role: 'model',
560
- parts,
561
- },
562
- },
563
- ],
564
- };
565
- // Include usage metadata if present in the message
566
- // This ensures telemetry is only triggered when we have complete usage data
567
- if (message.usage) {
568
- response.usageMetadata = {
569
- promptTokenCount: message.usage.prompt_tokens || 0,
570
- candidatesTokenCount: message.usage.completion_tokens || 0,
571
- totalTokenCount: message.usage.total_tokens || 0,
572
- };
573
- }
574
- return response;
575
- }
576
- }
577
- //# sourceMappingURL=GeminiCompatibleWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiCompatibleWrapper.js","sourceRoot":"","sources":["../../../../src/providers/adapters/GeminiCompatibleWrapper.ts"],"names":[],"mappings":"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"}