@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.
- package/LICENSE +21 -0
- package/dist/gemini.provider.d.ts +1 -2
- package/dist/gemini.provider.d.ts.map +1 -1
- package/dist/gemini.provider.js +4 -7
- 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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +5 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +42 -5
- 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 +41 -16
- 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.delta.translator.js +1 -1
- package/dist/translators/streaming/gemini.message.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 +100 -17
- 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 +4 -1
|
@@ -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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"}
|
|
@@ -10,7 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import 'reflect-metadata';
|
|
11
11
|
import { injectable } from 'tsyringe';
|
|
12
12
|
import { pickDefined } from '@holokai/holo-sdk';
|
|
13
|
-
import { toGeminiFinishReason, toHoloFinishReason } from '../../utils/finish.reason.mapper
|
|
13
|
+
import { toGeminiFinishReason, toHoloFinishReason } from '../../utils/finish.reason.mapper';
|
|
14
14
|
import { StreamTranslator } from "@holokai/holo-sdk/provider";
|
|
15
15
|
import { GeminiUsageTranslator } from '../gemini.usage.translator';
|
|
16
16
|
let GeminiMessageDeltaTranslator = class GeminiMessageDeltaTranslator extends StreamTranslator {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.message.delta.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.delta.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAI9C,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"gemini.message.delta.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.delta.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAI9C,OAAO,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAG1D,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,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;QAE7E,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;YACjB,CAAC,CAAC,WAAW,CAAC;gBACV,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY;gBACtC,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;gBAC3C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY;aACxC,CAAC;YACF,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEvC,OAAO,CAAC;gBACJ,UAAU,EAAE,CAAC;wBACT,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;wBACnC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAE,YAA4B,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrE,KAAK,EAAE,CAAC;qBACX,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,KAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,KAAK,GAA6B,WAAW,CAAC;YAChD,KAAK,EAAE;gBACH,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,eAAwB;gBAC9B,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,KAAK,IAAI,SAAS;gBACzB,cAAc,EAAE,MAAM;aACzB;YACD,aAAa,EAAE,kBAAkB,CAAC,SAAS,CAAC,YAAkC,CAAC;SAClF,CAA6B,CAAC;QAE/B,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACJ,CAAA;AAxDY,4BAA4B;IADxC,UAAU,EAAE;qCAKqC,qBAAqB;GAJ1D,4BAA4B,CAwDxC"}
|
|
@@ -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
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.message.stop.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.stop.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAGpC,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,gBAA0D;IAC7F,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,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC;oBACJ,UAAU,EAAE,CAAC;4BACT,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;4BACnC,YAAY,EAAE,YAAY,CAAC,IAAI;4BAC/B,KAAK,EAAE,CAAC;yBACX,CAAC;iBACL,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,OAAO,CAAC;gBACJ,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,cAAuB;oBAC7B,KAAK,EAAE,EAAE;oBACT,cAAc,EAAE,MAAM;iBACzB;
|
|
1
|
+
{"version":3,"file":"gemini.message.stop.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.message.stop.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAGpC,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,gBAA0D;IAC7F,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,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC;oBACJ,UAAU,EAAE,CAAC;4BACT,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;4BACnC,YAAY,EAAE,YAAY,CAAC,IAAI;4BAC/B,KAAK,EAAE,CAAC;yBACX,CAAC;iBACL,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAA+B;QAC1D,OAAO,CAAC;gBACJ,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,cAAuB;oBAC7B,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,EAAE;oBACT,cAAc,EAAE,MAAM;iBACzB;aACJ,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA1CY,2BAA2B;IADvC,UAAU,EAAE;;GACA,2BAA2B,CA0CvC"}
|
|
@@ -5,7 +5,7 @@ import { GeminiMessageStopTranslator } from './gemini.message.stop.translator';
|
|
|
5
5
|
import { GeminiContentDeltaTranslator } from './gemini.content.delta.translator';
|
|
6
6
|
import { StreamTranslator } from "@holokai/holo-sdk/provider";
|
|
7
7
|
import type { HoloStreamChunk } from "@holokai/holo-types/holo";
|
|
8
|
-
import type
|
|
8
|
+
import { type GenerateContentResponse } from "@google/genai";
|
|
9
9
|
export declare class GeminiStreamTranslator extends StreamTranslator<HoloStreamChunk, GenerateContentResponse> {
|
|
10
10
|
private readonly messageStartTranslator;
|
|
11
11
|
private readonly messageDeltaTranslator;
|
|
@@ -13,10 +13,23 @@ export declare class GeminiStreamTranslator extends StreamTranslator<HoloStreamC
|
|
|
13
13
|
private readonly contentDeltaTranslator;
|
|
14
14
|
protected holoDefaults: Partial<HoloStreamChunk>;
|
|
15
15
|
protected providerDefaults: Partial<GenerateContentResponse>;
|
|
16
|
-
private isFirstChunk;
|
|
17
|
-
private hasEmittedStop;
|
|
18
16
|
constructor(messageStartTranslator: GeminiMessageStartTranslator, messageDeltaTranslator: GeminiMessageDeltaTranslator, messageStopTranslator: GeminiMessageStopTranslator, contentDeltaTranslator: GeminiContentDeltaTranslator);
|
|
19
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Streams Holo chunks → gemini chunks with cross-chunk state in the
|
|
19
|
+
* generator's closure. Merges consecutive functionCall-only chunks
|
|
20
|
+
* (gemini wire packs parallel calls into one chunk's parts[]) and
|
|
21
|
+
* synthesises a trailing finishReason if the source stream ended
|
|
22
|
+
* without one.
|
|
23
|
+
*/
|
|
24
|
+
fromHoloStream(source: AsyncIterable<HoloStreamChunk>, validateTarget?: boolean): AsyncIterable<Partial<GenerateContentResponse>>;
|
|
25
|
+
/**
|
|
26
|
+
* Streams gemini chunks → Holo with first-chunk synthesis state in the
|
|
27
|
+
* generator's closure. The first chunk emits an additional `message_start`
|
|
28
|
+
* Holo chunk, and the chunk carrying `finishReason` emits one trailing
|
|
29
|
+
* `message_stop` (and `message_delta` if usage is present).
|
|
30
|
+
*/
|
|
31
|
+
toHoloStream(source: AsyncIterable<GenerateContentResponse>, _validateTarget?: boolean): AsyncIterable<Partial<HoloStreamChunk>>;
|
|
32
|
+
protected toHoloManyImpl(_source: GenerateContentResponse): Promise<Partial<HoloStreamChunk>[]>;
|
|
20
33
|
protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<GenerateContentResponse>[]>;
|
|
21
34
|
}
|
|
22
35
|
//# sourceMappingURL=gemini.stream.translator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.stream.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.stream.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAE/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gemini.stream.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.stream.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAE/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAe,KAAK,uBAAuB,EAAC,MAAM,eAAe,CAAC;AAEzE,qBACa,sBAAuB,SAAQ,gBAAgB,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAK9F,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAP3C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;gBAG7C,sBAAsB,EAAE,4BAA4B,EACpD,sBAAsB,EAAE,4BAA4B,EACpD,qBAAqB,EAAE,2BAA2B,EAClD,sBAAsB,EAAE,4BAA4B;IAKzE;;;;;;OAMG;IACa,cAAc,CAC1B,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,cAAc,UAAQ,GACvB,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAmDlD;;;;;OAKG;IACa,YAAY,CACxB,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC9C,eAAe,UAAQ,GACxB,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;cAoC1B,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;cAOrF,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;CAuCzG"}
|
|
@@ -13,8 +13,9 @@ import { GeminiMessageStartTranslator } from './gemini.message.start.translator'
|
|
|
13
13
|
import { GeminiMessageDeltaTranslator } from './gemini.message.delta.translator';
|
|
14
14
|
import { GeminiMessageStopTranslator } from './gemini.message.stop.translator';
|
|
15
15
|
import { GeminiContentDeltaTranslator } from './gemini.content.delta.translator';
|
|
16
|
-
import { toGeminiFinishReason } from '../../utils/finish.reason.mapper
|
|
16
|
+
import { toGeminiFinishReason } from '../../utils/finish.reason.mapper';
|
|
17
17
|
import { StreamTranslator } from "@holokai/holo-sdk/provider";
|
|
18
|
+
import { FinishReason } from "@google/genai";
|
|
18
19
|
let GeminiStreamTranslator = class GeminiStreamTranslator extends StreamTranslator {
|
|
19
20
|
messageStartTranslator;
|
|
20
21
|
messageDeltaTranslator;
|
|
@@ -22,8 +23,6 @@ let GeminiStreamTranslator = class GeminiStreamTranslator extends StreamTranslat
|
|
|
22
23
|
contentDeltaTranslator;
|
|
23
24
|
holoDefaults = {};
|
|
24
25
|
providerDefaults = {};
|
|
25
|
-
isFirstChunk = true;
|
|
26
|
-
hasEmittedStop = false;
|
|
27
26
|
constructor(messageStartTranslator, messageDeltaTranslator, messageStopTranslator, contentDeltaTranslator) {
|
|
28
27
|
super();
|
|
29
28
|
this.messageStartTranslator = messageStartTranslator;
|
|
@@ -31,24 +30,104 @@ let GeminiStreamTranslator = class GeminiStreamTranslator extends StreamTranslat
|
|
|
31
30
|
this.messageStopTranslator = messageStopTranslator;
|
|
32
31
|
this.contentDeltaTranslator = contentDeltaTranslator;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Streams Holo chunks → gemini chunks with cross-chunk state in the
|
|
35
|
+
* generator's closure. Merges consecutive functionCall-only chunks
|
|
36
|
+
* (gemini wire packs parallel calls into one chunk's parts[]) and
|
|
37
|
+
* synthesises a trailing finishReason if the source stream ended
|
|
38
|
+
* without one.
|
|
39
|
+
*/
|
|
40
|
+
async *fromHoloStream(source, validateTarget = false) {
|
|
41
|
+
this.contentDeltaTranslator.resetStreamState();
|
|
42
|
+
let pending = null;
|
|
43
|
+
let lastEmitted = null;
|
|
44
|
+
for await (const item of source) {
|
|
45
|
+
const raw = await this.fromHoloMany(item, validateTarget);
|
|
46
|
+
for (const chunk of raw) {
|
|
47
|
+
const candidate = chunk.candidates?.[0];
|
|
48
|
+
const parts = candidate?.content?.parts ?? [];
|
|
49
|
+
const isFnCallOnly = parts.length > 0
|
|
50
|
+
&& parts.every(p => !!p.functionCall)
|
|
51
|
+
&& !candidate?.finishReason;
|
|
52
|
+
if (isFnCallOnly) {
|
|
53
|
+
if (pending) {
|
|
54
|
+
pending.candidates[0].content.parts.push(...parts);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
pending = chunk;
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (pending) {
|
|
62
|
+
yield pending;
|
|
63
|
+
lastEmitted = pending;
|
|
64
|
+
pending = null;
|
|
65
|
+
}
|
|
66
|
+
yield chunk;
|
|
67
|
+
lastEmitted = chunk;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (pending) {
|
|
71
|
+
yield pending;
|
|
72
|
+
lastEmitted = pending;
|
|
40
73
|
}
|
|
41
|
-
|
|
42
|
-
|
|
74
|
+
const lastHasFinishReason = !!lastEmitted?.candidates?.[0]?.finishReason;
|
|
75
|
+
if (!lastHasFinishReason) {
|
|
76
|
+
yield {
|
|
77
|
+
candidates: [{
|
|
78
|
+
content: { role: 'model', parts: [] },
|
|
79
|
+
finishReason: FinishReason.STOP,
|
|
80
|
+
index: 0,
|
|
81
|
+
}],
|
|
82
|
+
};
|
|
43
83
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Streams gemini chunks → Holo with first-chunk synthesis state in the
|
|
87
|
+
* generator's closure. The first chunk emits an additional `message_start`
|
|
88
|
+
* Holo chunk, and the chunk carrying `finishReason` emits one trailing
|
|
89
|
+
* `message_stop` (and `message_delta` if usage is present).
|
|
90
|
+
*/
|
|
91
|
+
async *toHoloStream(source, _validateTarget = false) {
|
|
92
|
+
let isFirstChunk = true;
|
|
93
|
+
let hasEmittedStop = false;
|
|
94
|
+
for await (const item of source) {
|
|
95
|
+
const candidate = item.candidates?.[0];
|
|
96
|
+
if (isFirstChunk) {
|
|
97
|
+
isFirstChunk = false;
|
|
98
|
+
for (const c of await this.messageStartTranslator.toHoloMany(item)) {
|
|
99
|
+
if (c && Object.keys(c).length > 0)
|
|
100
|
+
yield c;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (candidate?.content?.parts?.length) {
|
|
104
|
+
for (const c of await this.contentDeltaTranslator.toHoloMany(item)) {
|
|
105
|
+
if (c && Object.keys(c).length > 0)
|
|
106
|
+
yield c;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (candidate?.finishReason) {
|
|
110
|
+
if (item.usageMetadata) {
|
|
111
|
+
for (const c of await this.messageDeltaTranslator.toHoloMany(item)) {
|
|
112
|
+
if (c && Object.keys(c).length > 0)
|
|
113
|
+
yield c;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!hasEmittedStop) {
|
|
117
|
+
hasEmittedStop = true;
|
|
118
|
+
for (const c of await this.messageStopTranslator.toHoloMany(item)) {
|
|
119
|
+
if (c && Object.keys(c).length > 0)
|
|
120
|
+
yield c;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
49
123
|
}
|
|
50
124
|
}
|
|
51
|
-
|
|
125
|
+
}
|
|
126
|
+
async toHoloManyImpl(_source) {
|
|
127
|
+
// Stateless per-chunk implementation is not meaningful for gemini
|
|
128
|
+
// (first-chunk synthesis requires cross-chunk state). Streaming
|
|
129
|
+
// callers should use `toHoloStream`.
|
|
130
|
+
return [];
|
|
52
131
|
}
|
|
53
132
|
async fromHoloManyImpl(source) {
|
|
54
133
|
const d = source.delta;
|
|
@@ -63,6 +142,9 @@ let GeminiStreamTranslator = class GeminiStreamTranslator extends StreamTranslat
|
|
|
63
142
|
return this.messageStartTranslator.fromHoloMany(source);
|
|
64
143
|
case 'message_delta': {
|
|
65
144
|
const results = [];
|
|
145
|
+
if (d.delta?.tool_calls?.length) {
|
|
146
|
+
results.push(...await this.contentDeltaTranslator.fromHoloMany(source));
|
|
147
|
+
}
|
|
66
148
|
results.push(...await this.messageDeltaTranslator.fromHoloMany(source));
|
|
67
149
|
const geminiFinishReason = toGeminiFinishReason(source.finish_reason ?? undefined);
|
|
68
150
|
if (geminiFinishReason) {
|
|
@@ -71,6 +153,7 @@ let GeminiStreamTranslator = class GeminiStreamTranslator extends StreamTranslat
|
|
|
71
153
|
return results;
|
|
72
154
|
}
|
|
73
155
|
case 'content_delta':
|
|
156
|
+
case 'tool_arg_delta':
|
|
74
157
|
return this.contentDeltaTranslator.fromHoloMany(source);
|
|
75
158
|
case 'message_stop':
|
|
76
159
|
return this.messageStopTranslator.fromHoloMany(source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.stream.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.stream.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"gemini.stream.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/gemini.stream.translator.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.5.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holokai/holo-provider-gemini",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Google Gemini provider plugin for Holo LLM Gateway",
|
|
6
6
|
"author": "Holokai",
|
|
@@ -66,5 +66,8 @@
|
|
|
66
66
|
"@holokai/holo-test": "*",
|
|
67
67
|
"@types/node": "^24.0.11",
|
|
68
68
|
"typescript": "^5.8.3"
|
|
69
|
+
},
|
|
70
|
+
"holoPlugin": {
|
|
71
|
+
"type": "PROVIDER"
|
|
69
72
|
}
|
|
70
73
|
}
|