@holokai/holo-provider-gemini 1.4.4 → 1.5.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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/dist/gemini.provider.d.ts +1 -2
  3. package/dist/gemini.provider.d.ts.map +1 -1
  4. package/dist/gemini.provider.js +4 -7
  5. package/dist/gemini.provider.js.map +1 -1
  6. package/dist/gemini.translator.d.ts +2 -1
  7. package/dist/gemini.translator.d.ts.map +1 -1
  8. package/dist/gemini.translator.js +5 -2
  9. package/dist/gemini.translator.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/plugin.d.ts +5 -2
  15. package/dist/plugin.d.ts.map +1 -1
  16. package/dist/plugin.js +42 -5
  17. package/dist/plugin.js.map +1 -1
  18. package/dist/translators/gemini.content.translator.d.ts.map +1 -1
  19. package/dist/translators/gemini.content.translator.js +10 -6
  20. package/dist/translators/gemini.content.translator.js.map +1 -1
  21. package/dist/translators/gemini.message.translator.d.ts.map +1 -1
  22. package/dist/translators/gemini.message.translator.js +41 -14
  23. package/dist/translators/gemini.message.translator.js.map +1 -1
  24. package/dist/translators/gemini.request.translator.d.ts.map +1 -1
  25. package/dist/translators/gemini.request.translator.js +88 -9
  26. package/dist/translators/gemini.request.translator.js.map +1 -1
  27. package/dist/translators/gemini.response.message.translator.d.ts.map +1 -1
  28. package/dist/translators/gemini.response.message.translator.js +19 -9
  29. package/dist/translators/gemini.response.message.translator.js.map +1 -1
  30. package/dist/translators/gemini.response.translator.d.ts.map +1 -1
  31. package/dist/translators/gemini.response.translator.js +41 -16
  32. package/dist/translators/gemini.response.translator.js.map +1 -1
  33. package/dist/translators/gemini.tool.id.d.ts +16 -0
  34. package/dist/translators/gemini.tool.id.d.ts.map +1 -0
  35. package/dist/translators/gemini.tool.id.js +26 -0
  36. package/dist/translators/gemini.tool.id.js.map +1 -0
  37. package/dist/translators/gemini.tool.translator.d.ts.map +1 -1
  38. package/dist/translators/gemini.tool.translator.js +8 -3
  39. package/dist/translators/gemini.tool.translator.js.map +1 -1
  40. package/dist/translators/streaming/gemini.content.delta.translator.d.ts +2 -0
  41. package/dist/translators/streaming/gemini.content.delta.translator.d.ts.map +1 -1
  42. package/dist/translators/streaming/gemini.content.delta.translator.js +155 -10
  43. package/dist/translators/streaming/gemini.content.delta.translator.js.map +1 -1
  44. package/dist/translators/streaming/gemini.message.delta.translator.js +1 -1
  45. package/dist/translators/streaming/gemini.message.delta.translator.js.map +1 -1
  46. package/dist/translators/streaming/gemini.message.start.translator.d.ts.map +1 -1
  47. package/dist/translators/streaming/gemini.message.start.translator.js +13 -15
  48. package/dist/translators/streaming/gemini.message.start.translator.js.map +1 -1
  49. package/dist/translators/streaming/gemini.message.stop.translator.js +2 -2
  50. package/dist/translators/streaming/gemini.message.stop.translator.js.map +1 -1
  51. package/dist/translators/streaming/gemini.stream.translator.d.ts +17 -4
  52. package/dist/translators/streaming/gemini.stream.translator.d.ts.map +1 -1
  53. package/dist/translators/streaming/gemini.stream.translator.js +100 -17
  54. package/dist/translators/streaming/gemini.stream.translator.js.map +1 -1
  55. package/dist/version.d.ts +1 -1
  56. package/dist/version.js +1 -1
  57. package/package.json +4 -1
@@ -11,14 +11,79 @@ import 'reflect-metadata';
11
11
  import { GeminiMessageTranslator } from "./gemini.message.translator";
12
12
  import { GeminiToolChoiceTranslator, GeminiToolTranslator } from "./gemini.tool.translator";
13
13
  import { injectable } from 'tsyringe';
14
- import { HoloRequestDefaults, pickDefined } from "@holokai/holo-sdk";
14
+ import { pickDefined } from "@holokai/holo-sdk";
15
15
  import { BaseTranslator } from "@holokai/holo-sdk/provider";
16
16
  const GeminiRequestDefaults = {};
17
+ function partText(part) {
18
+ if (typeof part === 'string')
19
+ return part;
20
+ return typeof part.text === 'string' ? part.text : undefined;
21
+ }
22
+ function populateToolMessageNames(messages) {
23
+ const nameById = new Map();
24
+ for (const message of messages) {
25
+ if (message.role !== 'assistant' || !message.tool_calls?.length)
26
+ continue;
27
+ for (const tc of message.tool_calls) {
28
+ if (tc.type !== 'function' || !tc.id || !tc.function.name)
29
+ continue;
30
+ nameById.set(tc.id, tc.function.name);
31
+ }
32
+ }
33
+ return messages.map(message => {
34
+ if (message.role !== 'tool' || message.name || !message.tool_call_id)
35
+ return message;
36
+ const name = nameById.get(message.tool_call_id);
37
+ return name ? { ...message, name } : message;
38
+ });
39
+ }
40
+ function extractResponseFormat(config) {
41
+ if (!config)
42
+ return undefined;
43
+ if (config.responseMimeType !== 'application/json')
44
+ return undefined;
45
+ if (config.responseSchema) {
46
+ return { type: 'json_schema', schema: config.responseSchema };
47
+ }
48
+ return { type: 'json_object' };
49
+ }
50
+ function extractSystemInstruction(input) {
51
+ if (input === undefined)
52
+ return undefined;
53
+ if (typeof input === 'string')
54
+ return input;
55
+ let parts;
56
+ if (Array.isArray(input)) {
57
+ parts = input;
58
+ }
59
+ else if ('parts' in input && Array.isArray(input.parts)) {
60
+ parts = input.parts;
61
+ }
62
+ else {
63
+ parts = [input];
64
+ }
65
+ const blocks = parts
66
+ .map(partText)
67
+ .filter((t) => typeof t === 'string')
68
+ .map(text => ({ type: 'text', text }));
69
+ if (!blocks.length)
70
+ return undefined;
71
+ return blocks;
72
+ }
73
+ function buildSystemInstruction(system) {
74
+ if (system === undefined)
75
+ return undefined;
76
+ if (typeof system === 'string')
77
+ return system;
78
+ if (!system.length)
79
+ return undefined;
80
+ return { parts: system.map(block => ({ text: block.text })) };
81
+ }
17
82
  let GeminiRequestTranslator = class GeminiRequestTranslator extends BaseTranslator {
18
83
  messageTranslator;
19
84
  toolTranslator;
20
85
  toolChoiceTranslator;
21
- holoDefaults = HoloRequestDefaults;
86
+ holoDefaults = {};
22
87
  providerDefaults = GeminiRequestDefaults;
23
88
  constructor(messageTranslator, toolTranslator, toolChoiceTranslator) {
24
89
  super();
@@ -27,14 +92,16 @@ let GeminiRequestTranslator = class GeminiRequestTranslator extends BaseTranslat
27
92
  this.toolChoiceTranslator = toolChoiceTranslator;
28
93
  }
29
94
  async fromHoloImpl(source) {
95
+ const messages = source.messages ? populateToolMessageNames(source.messages) : undefined;
30
96
  const [contents, functionDeclarations, functionCallingConfig] = await Promise.all([
31
- source.messages ? this.messageTranslator.fromHoloArray(source.messages) : Promise.resolve(undefined),
97
+ messages ? this.messageTranslator.fromHoloArray(messages) : Promise.resolve(undefined),
32
98
  source.tools ? this.toolTranslator.fromHoloArray(source.tools) : Promise.resolve(undefined),
33
99
  source.tool_choice ? this.toolChoiceTranslator.fromHolo(source.tool_choice) : Promise.resolve(undefined),
34
100
  ]);
35
101
  const config = {};
36
- if (source.system) {
37
- config.systemInstruction = source.system;
102
+ const systemInstruction = buildSystemInstruction(source.system);
103
+ if (systemInstruction !== undefined) {
104
+ config.systemInstruction = systemInstruction;
38
105
  }
39
106
  if (source.max_tokens !== undefined) {
40
107
  config.maxOutputTokens = source.max_tokens;
@@ -48,6 +115,15 @@ let GeminiRequestTranslator = class GeminiRequestTranslator extends BaseTranslat
48
115
  if (source.top_k !== undefined) {
49
116
  config.topK = source.top_k;
50
117
  }
118
+ if (source.frequency_penalty !== undefined) {
119
+ config.frequencyPenalty = source.frequency_penalty;
120
+ }
121
+ if (source.presence_penalty !== undefined) {
122
+ config.presencePenalty = source.presence_penalty;
123
+ }
124
+ if (source.seed !== undefined) {
125
+ config.seed = source.seed;
126
+ }
51
127
  if (source.stop_sequences?.length) {
52
128
  config.stopSequences = source.stop_sequences;
53
129
  }
@@ -76,20 +152,23 @@ let GeminiRequestTranslator = class GeminiRequestTranslator extends BaseTranslat
76
152
  ? this.toolChoiceTranslator.toHolo(source.config.toolConfig.functionCallingConfig)
77
153
  : Promise.resolve(undefined),
78
154
  ]);
79
- const system = typeof source.config?.systemInstruction === 'string'
80
- ? source.config.systemInstruction
81
- : undefined;
155
+ const system = extractSystemInstruction(source.config?.systemInstruction);
156
+ const response_format = extractResponseFormat(source.config);
82
157
  return pickDefined({
83
158
  model: source.model,
84
159
  max_tokens: source.config?.maxOutputTokens,
85
160
  temperature: source.config?.temperature,
86
161
  top_p: source.config?.topP,
87
162
  top_k: source.config?.topK,
163
+ frequency_penalty: source.config?.frequencyPenalty,
164
+ presence_penalty: source.config?.presencePenalty,
165
+ seed: source.config?.seed,
88
166
  stop_sequences: source.config?.stopSequences,
89
167
  system,
90
168
  messages: messages && messages.length ? messages : undefined,
91
169
  tools: tools && tools.length ? tools : undefined,
92
- tool_choice: tool_choice
170
+ tool_choice: tool_choice,
171
+ response_format,
93
172
  });
94
173
  }
95
174
  applyResponseFormat(config, rf) {
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.request.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.request.translator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.request.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.request.translator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.response.message.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.response.message.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAc,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,OAAO,EAAO,MAAM,eAAe,CAAC;AAEjD,qBACa,+BAAgC,SAAQ,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;IAIzE,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAHtD,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAClD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;gBAErB,yBAAyB,EAAE,+BAA+B;cAIvE,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;cAgC5D,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;CAmC7E"}
1
+ {"version":3,"file":"gemini.response.message.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.response.message.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAc,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,OAAO,EAAO,MAAM,eAAe,CAAC;AAGjD,qBACa,+BAAgC,SAAQ,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;IAIzE,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAHtD,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAClD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;gBAErB,yBAAyB,EAAE,+BAA+B;cAIvE,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;cAoC5D,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;CAsC7E"}
@@ -12,6 +12,7 @@ import { GeminiResponseContentTranslator } from "./gemini.response.content.trans
12
12
  import { injectable } from 'tsyringe';
13
13
  import { BaseTranslator } from "@holokai/holo-sdk/provider";
14
14
  import { pickDefined } from "@holokai/holo-sdk";
15
+ import { isSynthesizedToolCallId, makeToolCallId } from "./gemini.tool.id";
15
16
  let GeminiResponseMessageTranslator = class GeminiResponseMessageTranslator extends BaseTranslator {
16
17
  responseContentTranslator;
17
18
  holoDefaults = {};
@@ -25,7 +26,7 @@ let GeminiResponseMessageTranslator = class GeminiResponseMessageTranslator exte
25
26
  return {};
26
27
  }
27
28
  const parts = [];
28
- if (typeof source.content === 'string') {
29
+ if (typeof source.content === 'string' && source.content !== '') {
29
30
  parts.push({ text: source.content });
30
31
  }
31
32
  else if (Array.isArray(source.content)) {
@@ -34,12 +35,18 @@ let GeminiResponseMessageTranslator = class GeminiResponseMessageTranslator exte
34
35
  }
35
36
  if (source.tool_calls?.length) {
36
37
  for (const tc of source.tool_calls) {
37
- parts.push({
38
- functionCall: {
39
- name: tc.function.name,
40
- args: tc.function.arguments || {}
41
- }
42
- });
38
+ if (tc.type !== 'function')
39
+ continue; // Gemini has no custom-tool wire shape
40
+ if (!tc.function.name)
41
+ continue; // skip continuation fragments without a name
42
+ const functionCall = {
43
+ name: tc.function.name,
44
+ args: tc.function.arguments || {},
45
+ };
46
+ if (tc.id && !isSynthesizedToolCallId(tc.id)) {
47
+ functionCall.id = tc.id;
48
+ }
49
+ parts.push({ functionCall });
43
50
  }
44
51
  }
45
52
  if (!parts.length) {
@@ -50,6 +57,7 @@ let GeminiResponseMessageTranslator = class GeminiResponseMessageTranslator exte
50
57
  async toHoloImpl(source) {
51
58
  const contentBlocks = [];
52
59
  const tool_calls = [];
60
+ let functionCallIndex = 0;
53
61
  for (const part of source.parts || []) {
54
62
  if (part.text !== undefined) {
55
63
  const holoContent = await this.responseContentTranslator.toHolo(part);
@@ -58,11 +66,13 @@ let GeminiResponseMessageTranslator = class GeminiResponseMessageTranslator exte
58
66
  }
59
67
  }
60
68
  else if (part.functionCall) {
69
+ const name = part.functionCall.name || '';
70
+ const idx = functionCallIndex++;
61
71
  tool_calls.push({
62
- id: part.functionCall.name || '',
72
+ id: part.functionCall.id ?? makeToolCallId(name, idx),
63
73
  type: 'function',
64
74
  function: {
65
- name: part.functionCall.name || '',
75
+ name,
66
76
  arguments: part.functionCall.args || {}
67
77
  }
68
78
  });
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.response.message.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.response.message.translator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.response.message.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.response.message.translator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.response.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.response.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAc,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AAGrF,qBACa,wBAAyB,SAAQ,cAAc,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAK3F,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe;IALpC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAM;IACnD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;gBAG7C,yBAAyB,EAAE,+BAA+B,EAC1D,eAAe,EAAE,qBAAqB;cAK3C,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;cAoB7E,UAAU,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;CAoB9F"}
1
+ {"version":3,"file":"gemini.response.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.response.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAc,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AAGrF,qBACa,wBAAyB,SAAQ,cAAc,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAK3F,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe;IALpC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAM;IACnD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;gBAG7C,yBAAyB,EAAE,+BAA+B,EAC1D,eAAe,EAAE,qBAAqB;cAK3C,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;cA8B7E,UAAU,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;CAmC9F"}
@@ -14,7 +14,7 @@ import { BaseTranslator } from "@holokai/holo-sdk/provider";
14
14
  import { pickDefined } from "@holokai/holo-sdk";
15
15
  import { FinishReason } from "@google/genai";
16
16
  import { GeminiResponseMessageTranslator } from "./gemini.response.message.translator";
17
- import { toGeminiFinishReason, toHoloFinishReason } from '../utils/finish.reason.mapper.js';
17
+ import { toGeminiFinishReason, toHoloFinishReason } from '../utils/finish.reason.mapper';
18
18
  let GeminiResponseTranslator = class GeminiResponseTranslator extends BaseTranslator {
19
19
  responseMessageTranslator;
20
20
  usageTranslator;
@@ -26,37 +26,62 @@ let GeminiResponseTranslator = class GeminiResponseTranslator extends BaseTransl
26
26
  this.usageTranslator = usageTranslator;
27
27
  }
28
28
  async fromHoloImpl(source) {
29
- const messageResult = source.output?.length
30
- ? await this.responseMessageTranslator.fromHolo(source.output[0])
31
- : { role: 'model', parts: [{ text: '' }] };
29
+ const messages = source.output?.length
30
+ ? await Promise.all(source.output.map(m => this.responseMessageTranslator.fromHolo(m)))
31
+ : [{ role: 'model', parts: [{ text: '' }] }];
32
32
  const usageResult = source.usage
33
33
  ? await this.usageTranslator.fromHolo(source.usage)
34
34
  : undefined;
35
+ const candidates = messages.map((messageResult, index) => {
36
+ const stashed = source.output?.[index]?.provider_metadata?.finish_reason;
37
+ const reason = typeof stashed === 'string'
38
+ ? stashed
39
+ : (index === 0
40
+ ? toGeminiFinishReason(source.finish_reason ?? undefined)
41
+ : FinishReason.STOP);
42
+ return {
43
+ content: messageResult,
44
+ finishReason: (reason || FinishReason.STOP),
45
+ index,
46
+ };
47
+ });
35
48
  return pickDefined({
36
- candidates: [{
37
- content: messageResult,
38
- finishReason: (toGeminiFinishReason(source.finish_reason ?? undefined) || FinishReason.STOP),
39
- index: 0
40
- }],
49
+ candidates,
41
50
  usageMetadata: usageResult,
42
51
  modelVersion: source.model
43
52
  });
44
53
  }
45
54
  async toHoloImpl(source) {
46
- const candidate = source.candidates?.[0];
47
- if (!candidate)
55
+ if (!source.candidates?.length)
48
56
  return {};
49
- const holoMessage = candidate.content
50
- ? await this.responseMessageTranslator.toHolo(candidate.content)
51
- : undefined;
52
- const output = holoMessage && Object.keys(holoMessage).length ? [holoMessage] : [];
57
+ const output = [];
58
+ for (const candidate of source.candidates) {
59
+ if (!candidate.content)
60
+ continue;
61
+ const holoMessage = await this.responseMessageTranslator.toHolo(candidate.content);
62
+ if (!Object.keys(holoMessage).length)
63
+ continue;
64
+ const msg = holoMessage;
65
+ if (source.candidates.length > 1 && candidate.finishReason) {
66
+ msg.provider_metadata = {
67
+ ...(msg.provider_metadata ?? {}),
68
+ finish_reason: candidate.finishReason,
69
+ };
70
+ }
71
+ output.push(msg);
72
+ }
53
73
  const usage = source.usageMetadata
54
74
  ? await this.usageTranslator.toHolo(source.usageMetadata)
55
75
  : undefined;
76
+ const firstReason = source.candidates[0]?.finishReason;
77
+ const baseFinishReason = toHoloFinishReason(firstReason);
78
+ const finishReason = output[0]?.tool_calls?.length && baseFinishReason === 'stop'
79
+ ? 'tool_calls'
80
+ : baseFinishReason;
56
81
  return pickDefined({
57
82
  model: source.modelVersion,
58
83
  output,
59
- finish_reason: toHoloFinishReason(candidate.finishReason),
84
+ finish_reason: finishReason,
60
85
  usage
61
86
  });
62
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.response.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.response.translator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.response.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.response.translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Gemini's wire format identifies tool calls by `functionCall.name` only —
3
+ * there is no per-call id. When the same function is invoked multiple times in
4
+ * one turn, the synthesized Holo `tool_calls[].id` would collide. Append the
5
+ * call's positional index to keep ids unique; strip it again when rebuilding
6
+ * `functionResponse.name` so Gemini's by-name matching still works.
7
+ */
8
+ export declare function makeToolCallId(name: string, index: number): string;
9
+ export declare function stripToolCallIndex(id: string | undefined): string | undefined;
10
+ /**
11
+ * Heuristic: `<name>#<index>` ids are our internal synthesis form. Other
12
+ * shapes (e.g., `call_weather`, `toolu_01ABC`) come from the wire and should
13
+ * be preserved through round-trips.
14
+ */
15
+ export declare function isSynthesizedToolCallId(id: string | undefined): boolean;
16
+ //# sourceMappingURL=gemini.tool.id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.tool.id.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.tool.id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGvE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Gemini's wire format identifies tool calls by `functionCall.name` only —
3
+ * there is no per-call id. When the same function is invoked multiple times in
4
+ * one turn, the synthesized Holo `tool_calls[].id` would collide. Append the
5
+ * call's positional index to keep ids unique; strip it again when rebuilding
6
+ * `functionResponse.name` so Gemini's by-name matching still works.
7
+ */
8
+ export function makeToolCallId(name, index) {
9
+ return `${name || 'unknown'}#${index}`;
10
+ }
11
+ export function stripToolCallIndex(id) {
12
+ if (id === undefined)
13
+ return undefined;
14
+ return id.replace(/#\d+$/, '');
15
+ }
16
+ /**
17
+ * Heuristic: `<name>#<index>` ids are our internal synthesis form. Other
18
+ * shapes (e.g., `call_weather`, `toolu_01ABC`) come from the wire and should
19
+ * be preserved through round-trips.
20
+ */
21
+ export function isSynthesizedToolCallId(id) {
22
+ if (!id)
23
+ return false;
24
+ return /#\d+$/.test(id);
25
+ }
26
+ //# sourceMappingURL=gemini.tool.id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.tool.id.js","sourceRoot":"","sources":["../../src/translators/gemini.tool.id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAsB;IACrD,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAsB;IAC1D,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.tool.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.tool.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAC,QAAQ,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAG9E,qBACa,oBAAqB,SAAQ,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACnF,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAM;IAC/C,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;;cAM9C,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;cAQrE,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CAOtF;AAED,qBACa,0BAA2B,SAAQ,cAAc,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACjG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IACrD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;;cAMhD,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;cAkB7E,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;CAc9F"}
1
+ {"version":3,"file":"gemini.tool.translator.d.ts","sourceRoot":"","sources":["../../src/translators/gemini.tool.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAC,QAAQ,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAC,qBAAqB,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAG9E,qBACa,oBAAqB,SAAQ,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACnF,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAM;IAC/C,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;;cAM9C,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;cASrE,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CAOtF;AAED,qBACa,0BAA2B,SAAQ,cAAc,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACjG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IACrD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;;cAMhD,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;cAoB7E,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;CAe9F"}
@@ -19,6 +19,8 @@ let GeminiToolTranslator = class GeminiToolTranslator extends BaseTranslator {
19
19
  super();
20
20
  }
21
21
  async fromHoloImpl(source) {
22
+ if (source.type === 'custom')
23
+ return {}; // Gemini has no custom-tool wire shape
22
24
  return pickDefined({
23
25
  name: source.name,
24
26
  description: source.description,
@@ -52,11 +54,13 @@ let GeminiToolChoiceTranslator = class GeminiToolChoiceTranslator extends BaseTr
52
54
  return { mode: FunctionCallingConfigMode.NONE };
53
55
  case 'required':
54
56
  return { mode: FunctionCallingConfigMode.ANY };
55
- case 'specific':
57
+ case 'specific': {
58
+ const names = Array.isArray(source.name) ? source.name : source.name ? [source.name] : [];
56
59
  return pickDefined({
57
60
  mode: FunctionCallingConfigMode.ANY,
58
- allowedFunctionNames: source.name ? [source.name] : undefined
61
+ allowedFunctionNames: names.length ? names : undefined
59
62
  });
63
+ }
60
64
  default:
61
65
  return { mode: FunctionCallingConfigMode.AUTO };
62
66
  }
@@ -67,7 +71,8 @@ let GeminiToolChoiceTranslator = class GeminiToolChoiceTranslator extends BaseTr
67
71
  return { type: 'none' };
68
72
  case 'ANY':
69
73
  if (source.allowedFunctionNames?.length) {
70
- return { type: 'specific', name: source.allowedFunctionNames[0] };
74
+ const names = source.allowedFunctionNames;
75
+ return { type: 'specific', name: names.length === 1 ? names[0] : names };
71
76
  }
72
77
  return { type: 'required' };
73
78
  case 'AUTO':
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.tool.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.tool.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAC;AAGjD,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,cAA6C;IACzE,YAAY,GAAsB,EAAE,CAAC;IACrC,gBAAgB,GAAiC,EAAE,CAAC;IAE9D;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,MAAgB;QACzC,OAAO,WAAW,CAAC;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAC;SACpE,CAAiC,CAAC;IACvC,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,MAA2B;QAClD,OAAO,WAAW,CAAC;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;SAChC,CAAsB,CAAC;IAC5B,CAAC;CACJ,CAAA;AAvBY,oBAAoB;IADhC,UAAU,EAAE;;GACA,oBAAoB,CAuBhC;;AAGM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,cAAqD;IACvF,YAAY,GAA4B,EAAE,CAAC;IAC3C,gBAAgB,GAAmC,EAAE,CAAC;IAEhE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,MAAsB;QAC/C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACP,OAAO,EAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,EAAC,CAAC;YAClD,KAAK,MAAM;gBACP,OAAO,EAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,EAAC,CAAC;YAClD,KAAK,UAAU;gBACX,OAAO,EAAC,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAC,CAAC;YACjD,KAAK,UAAU;gBACX,OAAO,WAAW,CAAC;oBACf,IAAI,EAAE,yBAAyB,CAAC,GAAG;oBACnC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBAChE,CAAmC,CAAC;YACzC;gBACI,OAAO,EAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,EAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,MAA6B;QACpD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACP,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;YAC1B,KAAK,KAAK;gBACN,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;oBACtC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,CAAC;YAC9B,KAAK,MAAM,CAAC;YACZ;gBACI,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;QAC9B,CAAC;IACL,CAAC;CACJ,CAAA;AAxCY,0BAA0B;IADtC,UAAU,EAAE;;GACA,0BAA0B,CAwCtC"}
1
+ {"version":3,"file":"gemini.tool.translator.js","sourceRoot":"","sources":["../../src/translators/gemini.tool.translator.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ import type { GenerateContentResponse } from "@google/genai";
5
5
  export declare class GeminiContentDeltaTranslator extends StreamTranslator<HoloStreamChunk, GenerateContentResponse> {
6
6
  protected holoDefaults: Partial<HoloStreamChunk>;
7
7
  protected providerDefaults: Partial<GenerateContentResponse>;
8
+ private toolCallStates;
8
9
  constructor();
10
+ resetStreamState(): void;
9
11
  protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<GenerateContentResponse>[]>;
10
12
  protected toHoloManyImpl(source: GenerateContentResponse): Promise<Partial<HoloStreamChunk>[]>;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.content.delta.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.content.delta.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE3D,qBACa,4BAA6B,SAAQ,gBAAgB,CAAC,eAAe,EAAE,uBAAuB,CAAC;IACxG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;;cAMlD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;cAmBtF,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CA6CvG"}
1
+ {"version":3,"file":"gemini.content.delta.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.content.delta.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAU3D,qBACa,4BAA6B,SAAQ,gBAAgB,CAAC,eAAe,EAAE,uBAAuB,CAAC;IACxG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAElE,OAAO,CAAC,cAAc,CAA0C;;IAMhE,gBAAgB,IAAI,IAAI;cAIR,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;cAyFtF,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CA4GvG"}