@holokai/holo-provider-gemini 1.4.5 → 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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/dist/gemini.provider.d.ts +0 -1
  3. package/dist/gemini.provider.d.ts.map +1 -1
  4. package/dist/gemini.provider.js +0 -3
  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/plugin.d.ts +3 -1
  11. package/dist/plugin.d.ts.map +1 -1
  12. package/dist/plugin.js +16 -0
  13. package/dist/plugin.js.map +1 -1
  14. package/dist/translators/gemini.content.translator.d.ts.map +1 -1
  15. package/dist/translators/gemini.content.translator.js +10 -6
  16. package/dist/translators/gemini.content.translator.js.map +1 -1
  17. package/dist/translators/gemini.message.translator.d.ts.map +1 -1
  18. package/dist/translators/gemini.message.translator.js +41 -14
  19. package/dist/translators/gemini.message.translator.js.map +1 -1
  20. package/dist/translators/gemini.request.translator.d.ts.map +1 -1
  21. package/dist/translators/gemini.request.translator.js +88 -9
  22. package/dist/translators/gemini.request.translator.js.map +1 -1
  23. package/dist/translators/gemini.response.message.translator.d.ts.map +1 -1
  24. package/dist/translators/gemini.response.message.translator.js +19 -9
  25. package/dist/translators/gemini.response.message.translator.js.map +1 -1
  26. package/dist/translators/gemini.response.translator.d.ts.map +1 -1
  27. package/dist/translators/gemini.response.translator.js +40 -15
  28. package/dist/translators/gemini.response.translator.js.map +1 -1
  29. package/dist/translators/gemini.tool.id.d.ts +16 -0
  30. package/dist/translators/gemini.tool.id.d.ts.map +1 -0
  31. package/dist/translators/gemini.tool.id.js +26 -0
  32. package/dist/translators/gemini.tool.id.js.map +1 -0
  33. package/dist/translators/gemini.tool.translator.d.ts.map +1 -1
  34. package/dist/translators/gemini.tool.translator.js +8 -3
  35. package/dist/translators/gemini.tool.translator.js.map +1 -1
  36. package/dist/translators/streaming/gemini.content.delta.translator.d.ts +2 -0
  37. package/dist/translators/streaming/gemini.content.delta.translator.d.ts.map +1 -1
  38. package/dist/translators/streaming/gemini.content.delta.translator.js +155 -10
  39. package/dist/translators/streaming/gemini.content.delta.translator.js.map +1 -1
  40. package/dist/translators/streaming/gemini.message.start.translator.d.ts.map +1 -1
  41. package/dist/translators/streaming/gemini.message.start.translator.js +13 -15
  42. package/dist/translators/streaming/gemini.message.start.translator.js.map +1 -1
  43. package/dist/translators/streaming/gemini.message.stop.translator.js +2 -2
  44. package/dist/translators/streaming/gemini.message.stop.translator.js.map +1 -1
  45. package/dist/translators/streaming/gemini.stream.translator.d.ts +17 -4
  46. package/dist/translators/streaming/gemini.stream.translator.d.ts.map +1 -1
  47. package/dist/translators/streaming/gemini.stream.translator.js +99 -16
  48. package/dist/translators/streaming/gemini.stream.translator.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +1 -1
@@ -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"}
@@ -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"}
@@ -10,12 +10,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  import 'reflect-metadata';
11
11
  import { injectable } from 'tsyringe';
12
12
  import { StreamTranslator } from "@holokai/holo-sdk/provider";
13
+ import { isSynthesizedToolCallId, makeToolCallId } from '../gemini.tool.id';
13
14
  let GeminiContentDeltaTranslator = class GeminiContentDeltaTranslator extends StreamTranslator {
14
15
  holoDefaults = {};
15
16
  providerDefaults = {};
17
+ toolCallStates = new Map();
16
18
  constructor() {
17
19
  super();
18
20
  }
21
+ resetStreamState() {
22
+ this.toolCallStates.clear();
23
+ }
19
24
  async fromHoloManyImpl(source) {
20
25
  const d = source.delta;
21
26
  if (!d)
@@ -31,6 +36,77 @@ let GeminiContentDeltaTranslator = class GeminiContentDeltaTranslator extends St
31
36
  }]
32
37
  }];
33
38
  }
39
+ if (d.type === 'message_delta' || d.type === 'tool_arg_delta') {
40
+ const tcs = d.delta?.tool_calls ?? [];
41
+ if (tcs.length === 0)
42
+ return [];
43
+ const out = [];
44
+ const blockIndex = d.index ?? 0;
45
+ for (let i = 0; i < tcs.length; i++) {
46
+ const tc = tcs[i];
47
+ if (tc.type === 'custom')
48
+ continue;
49
+ if (tc.type !== undefined && tc.type !== 'function')
50
+ continue;
51
+ const idx = tcs.length === 1 ? blockIndex : i;
52
+ let state = this.toolCallStates.get(idx);
53
+ const shellName = tc.function?.name;
54
+ if (shellName) {
55
+ if (!state) {
56
+ const initial = { name: shellName, rawArgs: '', emitted: false };
57
+ if (tc.id)
58
+ initial.id = tc.id;
59
+ state = initial;
60
+ this.toolCallStates.set(idx, state);
61
+ }
62
+ else if (!state.emitted) {
63
+ state.name = shellName;
64
+ if (tc.id && !state.id)
65
+ state.id = tc.id;
66
+ }
67
+ }
68
+ if (!state)
69
+ continue;
70
+ const rawArgs = tc.function?.raw_arguments;
71
+ if (rawArgs) {
72
+ state.rawArgs += rawArgs;
73
+ }
74
+ if (!state.emitted) {
75
+ let parsed;
76
+ if (state.rawArgs) {
77
+ try {
78
+ const candidate = JSON.parse(state.rawArgs);
79
+ if (candidate !== null && typeof candidate === 'object') {
80
+ parsed = candidate;
81
+ }
82
+ }
83
+ catch {
84
+ // Keep accumulating; partial JSON.
85
+ }
86
+ }
87
+ if (parsed !== undefined) {
88
+ state.emitted = true;
89
+ const functionCall = { name: state.name, args: parsed };
90
+ // Preserve wire-style ids on the way back to gemini wire;
91
+ // strip our internal `<name>#<index>` synthesis form
92
+ // since real gemini wire doesn't carry that.
93
+ if (state.id && !isSynthesizedToolCallId(state.id)) {
94
+ functionCall.id = state.id;
95
+ }
96
+ out.push({
97
+ candidates: [{
98
+ content: {
99
+ role: 'model',
100
+ parts: [{ functionCall }]
101
+ },
102
+ index: 0
103
+ }]
104
+ });
105
+ }
106
+ }
107
+ }
108
+ return out;
109
+ }
34
110
  return [];
35
111
  }
36
112
  async toHoloManyImpl(source) {
@@ -38,6 +114,7 @@ let GeminiContentDeltaTranslator = class GeminiContentDeltaTranslator extends St
38
114
  const candidate = source.candidates?.[0];
39
115
  if (!candidate?.content?.parts)
40
116
  return out;
117
+ // Emit text content_deltas in order (preserves text-then-tool sequencing).
41
118
  for (const part of candidate.content.parts) {
42
119
  if (part.text !== undefined) {
43
120
  out.push({
@@ -52,24 +129,78 @@ let GeminiContentDeltaTranslator = class GeminiContentDeltaTranslator extends St
52
129
  }
53
130
  });
54
131
  }
55
- if (part.functionCall) {
132
+ }
133
+ // Tool calls: pass 1 emits all shells first (matching canonical lifecycle
134
+ // shape where multiple parallel calls open before any args fragments
135
+ // arrive), pass 2+ interleaves arg fragments across calls. This mirrors
136
+ // claude/openai streaming semantics where shell-then-frag is the
137
+ // canonical contract; gemini's wire delivers whole-shot args within a
138
+ // single chunk's parts[], so we re-shape the emission for parity. Args
139
+ // are split at the first colon to give cross-provider sinks a
140
+ // two-fragment shape that round-trips cleanly through their accumulators.
141
+ const fnCallParts = candidate.content.parts.filter(p => !!p.functionCall);
142
+ if (fnCallParts.length === 0)
143
+ return out;
144
+ const calls = fnCallParts.map((part, i) => {
145
+ const name = part.functionCall.name || '';
146
+ const args = (part.functionCall.args ?? {});
147
+ const blockIndex = (candidate.index ?? 0) + i;
148
+ // Prefer the wire id when present (gemini's FunctionCall type
149
+ // exposes optional `id`); synthesize <name>#<index> only when the
150
+ // wire didn't carry one.
151
+ const id = part.functionCall.id ?? makeToolCallId(name, i);
152
+ return {
153
+ id,
154
+ name,
155
+ blockIndex,
156
+ fragments: splitArgsAtColon(JSON.stringify(args)),
157
+ };
158
+ });
159
+ // Pass 1: shells.
160
+ for (const call of calls) {
161
+ out.push({
162
+ delta: {
163
+ provider: 'gemini',
164
+ type: 'message_delta',
165
+ index: call.blockIndex,
166
+ delta: {
167
+ role: 'assistant',
168
+ tool_calls: [{
169
+ id: call.id,
170
+ type: 'function',
171
+ function: {
172
+ name: call.name,
173
+ arguments: {},
174
+ raw_arguments: '',
175
+ },
176
+ }],
177
+ },
178
+ provider_delta: source,
179
+ }
180
+ });
181
+ }
182
+ // Pass 2+: arg fragments, interleaved across calls per fragment index.
183
+ const maxFragments = calls.reduce((m, c) => Math.max(m, c.fragments.length), 0);
184
+ for (let fi = 0; fi < maxFragments; fi++) {
185
+ for (const call of calls) {
186
+ const fragment = call.fragments[fi];
187
+ if (fragment === undefined)
188
+ continue;
56
189
  out.push({
57
190
  delta: {
58
191
  provider: 'gemini',
59
- type: 'message_delta',
60
- index: candidate.index ?? 0,
192
+ type: 'tool_arg_delta',
193
+ index: call.blockIndex,
61
194
  delta: {
62
- role: 'assistant',
63
195
  tool_calls: [{
64
- id: part.functionCall.name || '',
65
196
  type: 'function',
66
197
  function: {
67
- name: part.functionCall.name || '',
68
- arguments: part.functionCall.args || {}
69
- }
70
- }]
198
+ arguments: {},
199
+ raw_arguments: fragment,
200
+ },
201
+ }],
71
202
  },
72
- provider_delta: source
203
+ provider_delta: source,
73
204
  }
74
205
  });
75
206
  }
@@ -82,4 +213,18 @@ GeminiContentDeltaTranslator = __decorate([
82
213
  __metadata("design:paramtypes", [])
83
214
  ], GeminiContentDeltaTranslator);
84
215
  export { GeminiContentDeltaTranslator };
216
+ // Split JSON.stringify(args) at the first ':' to produce two fragments that
217
+ // round-trip cleanly through every plugin's accumulator. Single-key/single-pair
218
+ // args produce a `{"key":` + `"value"}` split; multi-key args produce a
219
+ // `{"key1":` + `"value1",...,"keyN":"valueN"}` split.
220
+ //
221
+ // When the input has no colon (empty args, scalar args), returns the input as a
222
+ // single fragment.
223
+ function splitArgsAtColon(rawArgs) {
224
+ const colonIdx = rawArgs.indexOf(':');
225
+ if (colonIdx === -1 || colonIdx >= rawArgs.length - 1) {
226
+ return [rawArgs];
227
+ }
228
+ return [rawArgs.slice(0, colonIdx + 1), rawArgs.slice(colonIdx + 1)];
229
+ }
85
230
  //# sourceMappingURL=gemini.content.delta.translator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.content.delta.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.content.delta.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAIrD,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,gBAA0D;IAC9F,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAqC,EAAE,CAAC;IAElE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAElB,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,CAAC;oBACJ,UAAU,EAAE,CAAC;4BACT,OAAO,EAAE;gCACL,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC;6BACnC;4BACD,KAAK,EAAE,CAAC;yBACX,CAAC;iBACL,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,MAAM,GAAG,GAA+B,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;YAAE,OAAO,GAAG,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC;oBACL,KAAK,EAAE;wBACH,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,eAAwB;wBAC9B,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;wBAC3B,KAAK,EAAE;4BACH,OAAO,EAAE,IAAI,CAAC,IAAI;yBACrB;wBACD,cAAc,EAAE,MAAM;qBACzB;iBACJ,CAAC,CAAC;YACP,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC;oBACL,KAAK,EAAE;wBACH,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,eAAwB;wBAC9B,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;wBAC3B,KAAK,EAAE;4BACH,IAAI,EAAE,WAAoB;4BAC1B,UAAU,EAAE,CAAC;oCACT,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;oCAChC,IAAI,EAAE,UAAmB;oCACzB,QAAQ,EAAE;wCACN,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;wCAClC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAA+B,IAAI,EAAE;qCACrE;iCACJ,CAAC;yBACL;wBACD,cAAc,EAAE,MAAM;qBACzB;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAA;AAxEY,4BAA4B;IADxC,UAAU,EAAE;;GACA,4BAA4B,CAwExC"}
1
+ {"version":3,"file":"gemini.content.delta.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.content.delta.translator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.message.start.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.start.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE3D,qBACa,4BAA6B,SAAQ,gBAAgB,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAI5F,OAAO,CAAC,QAAQ,CAAC,eAAe;IAH5C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;gBAErC,eAAe,EAAE,qBAAqB;cAInD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;cAetF,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAoBvG"}
1
+ {"version":3,"file":"gemini.message.start.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.start.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,eAAe,EAAqB,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAE3D,qBACa,4BAA6B,SAAQ,gBAAgB,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAI5F,OAAO,CAAC,QAAQ,CAAC,eAAe;IAH5C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;gBAErC,eAAe,EAAE,qBAAqB;cAInD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;cAetF,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAkBvG"}
@@ -9,7 +9,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import 'reflect-metadata';
11
11
  import { injectable } from 'tsyringe';
12
- import { v4 as uuidv4 } from 'uuid';
13
12
  import { GeminiUsageTranslator } from '../gemini.usage.translator';
14
13
  import { StreamTranslator } from "@holokai/holo-sdk/provider";
15
14
  let GeminiMessageStartTranslator = class GeminiMessageStartTranslator extends StreamTranslator {
@@ -38,20 +37,19 @@ let GeminiMessageStartTranslator = class GeminiMessageStartTranslator extends St
38
37
  const usage = source.usageMetadata
39
38
  ? await this.usageTranslator.toHolo(source.usageMetadata)
40
39
  : null;
41
- return [{
42
- id: uuidv4(),
43
- ...(source.modelVersion ? { model: source.modelVersion } : {}),
44
- delta: {
45
- provider: 'gemini',
46
- type: 'message_start',
47
- choice: 0,
48
- delta: {
49
- role: 'assistant'
50
- },
51
- usage,
52
- provider_delta: source
53
- }
54
- }];
40
+ const delta = {
41
+ provider: 'gemini',
42
+ type: 'message_start',
43
+ index: 0,
44
+ delta: { role: 'assistant' },
45
+ provider_delta: source,
46
+ };
47
+ if (usage)
48
+ delta.usage = usage;
49
+ const chunk = { delta };
50
+ if (source.modelVersion)
51
+ chunk.model = source.modelVersion;
52
+ return [chunk];
55
53
  }
56
54
  };
57
55
  GeminiMessageStartTranslator = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.message.start.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.start.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,MAAM,CAAC;AAClC,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAKrD,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,gBAA0D;IAI3E;IAHnB,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAqC,EAAE,CAAC;IAElE,YAA6B,eAAsC;QAC/D,KAAK,EAAE,CAAC;QADiB,oBAAe,GAAf,eAAe,CAAuB;IAEnE,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAE7B,OAAO,CAAC;gBACJ,UAAU,EAAE,CAAC;wBACT,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;wBACnC,KAAK,EAAE,CAAC;qBACX,CAAC;gBACF,YAAY,EAAE,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO,CAAC;gBACJ,EAAE,EAAE,MAAM,EAAE;gBACZ,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,eAAwB;oBAC9B,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE;wBACH,IAAI,EAAE,WAAoB;qBAC7B;oBACD,KAAK;oBACL,cAAc,EAAE,MAAM;iBACzB;aACJ,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA3CY,4BAA4B;IADxC,UAAU,EAAE;qCAKqC,qBAAqB;GAJ1D,4BAA4B,CA2CxC"}
1
+ {"version":3,"file":"gemini.message.start.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.start.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAKrD,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,gBAA0D;IAI3E;IAHnB,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAqC,EAAE,CAAC;IAElE,YAA6B,eAAsC;QAC/D,KAAK,EAAE,CAAC;QADiB,oBAAe,GAAf,eAAe,CAAuB;IAEnE,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAE7B,OAAO,CAAC;gBACJ,UAAU,EAAE,CAAC;wBACT,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;wBACnC,KAAK,EAAE,CAAC;qBACX,CAAC;gBACF,YAAY,EAAE,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,KAAK,GAAuB;YAC9B,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC;YAC1B,cAAc,EAAE,MAAM;SACzB,CAAC;QACF,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAE/B,MAAM,KAAK,GAA6B,EAAC,KAAK,EAAC,CAAC;QAChD,IAAI,MAAM,CAAC,YAAY;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACJ,CAAA;AAzCY,4BAA4B;IADxC,UAAU,EAAE;qCAKqC,qBAAqB;GAJ1D,4BAA4B,CAyCxC"}
@@ -42,10 +42,10 @@ let GeminiMessageStopTranslator = class GeminiMessageStopTranslator extends Stre
42
42
  delta: {
43
43
  provider: 'gemini',
44
44
  type: 'message_stop',
45
+ index: 0,
45
46
  delta: {},
46
- provider_delta: source
47
+ provider_delta: source,
47
48
  },
48
- done: true
49
49
  }];
50
50
  }
51
51
  };