@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.
- package/LICENSE +21 -0
- package/dist/gemini.provider.d.ts +0 -1
- package/dist/gemini.provider.d.ts.map +1 -1
- package/dist/gemini.provider.js +0 -3
- package/dist/gemini.provider.js.map +1 -1
- package/dist/gemini.translator.d.ts +2 -1
- package/dist/gemini.translator.d.ts.map +1 -1
- package/dist/gemini.translator.js +5 -2
- package/dist/gemini.translator.js.map +1 -1
- package/dist/plugin.d.ts +3 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +16 -0
- package/dist/plugin.js.map +1 -1
- package/dist/translators/gemini.content.translator.d.ts.map +1 -1
- package/dist/translators/gemini.content.translator.js +10 -6
- package/dist/translators/gemini.content.translator.js.map +1 -1
- package/dist/translators/gemini.message.translator.d.ts.map +1 -1
- package/dist/translators/gemini.message.translator.js +41 -14
- package/dist/translators/gemini.message.translator.js.map +1 -1
- package/dist/translators/gemini.request.translator.d.ts.map +1 -1
- package/dist/translators/gemini.request.translator.js +88 -9
- package/dist/translators/gemini.request.translator.js.map +1 -1
- package/dist/translators/gemini.response.message.translator.d.ts.map +1 -1
- package/dist/translators/gemini.response.message.translator.js +19 -9
- package/dist/translators/gemini.response.message.translator.js.map +1 -1
- package/dist/translators/gemini.response.translator.d.ts.map +1 -1
- package/dist/translators/gemini.response.translator.js +40 -15
- package/dist/translators/gemini.response.translator.js.map +1 -1
- package/dist/translators/gemini.tool.id.d.ts +16 -0
- package/dist/translators/gemini.tool.id.d.ts.map +1 -0
- package/dist/translators/gemini.tool.id.js +26 -0
- package/dist/translators/gemini.tool.id.js.map +1 -0
- package/dist/translators/gemini.tool.translator.d.ts.map +1 -1
- package/dist/translators/gemini.tool.translator.js +8 -3
- package/dist/translators/gemini.tool.translator.js.map +1 -1
- package/dist/translators/streaming/gemini.content.delta.translator.d.ts +2 -0
- package/dist/translators/streaming/gemini.content.delta.translator.d.ts.map +1 -1
- package/dist/translators/streaming/gemini.content.delta.translator.js +155 -10
- package/dist/translators/streaming/gemini.content.delta.translator.js.map +1 -1
- package/dist/translators/streaming/gemini.message.start.translator.d.ts.map +1 -1
- package/dist/translators/streaming/gemini.message.start.translator.js +13 -15
- package/dist/translators/streaming/gemini.message.start.translator.js.map +1 -1
- package/dist/translators/streaming/gemini.message.stop.translator.js +2 -2
- package/dist/translators/streaming/gemini.message.stop.translator.js.map +1 -1
- package/dist/translators/streaming/gemini.stream.translator.d.ts +17 -4
- package/dist/translators/streaming/gemini.stream.translator.d.ts.map +1 -1
- package/dist/translators/streaming/gemini.stream.translator.js +99 -16
- package/dist/translators/streaming/gemini.stream.translator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- 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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
72
|
+
id: part.functionCall.id ?? makeToolCallId(name, idx),
|
|
63
73
|
type: 'function',
|
|
64
74
|
function: {
|
|
65
|
-
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":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;
|
|
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;
|
|
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
|
|
30
|
-
? await this.responseMessageTranslator.fromHolo(
|
|
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
|
-
|
|
47
|
-
if (!candidate)
|
|
55
|
+
if (!source.candidates?.length)
|
|
48
56
|
return {};
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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:
|
|
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":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,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,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,+BAA+B,EAAC,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AAGhF,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,cAAqD;IAK1E;IACA;IALX,YAAY,GAA0B,EAAE,CAAC;IACzC,gBAAgB,GAAqC,EAAE,CAAC;IAElE,YACqB,yBAA0D,EAC1D,eAAsC;QAEvD,KAAK,EAAE,CAAC;QAHS,8BAAyB,GAAzB,yBAAyB,CAAiC;QAC1D,oBAAe,GAAf,eAAe,CAAuB;IAG3D,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,MAAoB;QAC7C,MAAM,
|
|
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;
|
|
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:
|
|
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
|
-
|
|
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;
|
|
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;
|
|
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
|
-
|
|
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: '
|
|
60
|
-
index:
|
|
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
|
-
|
|
68
|
-
|
|
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;
|
|
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;
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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,
|
|
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
|
};
|