@llmrtc/llmrtc-provider-google 1.0.0 → 1.1.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/CHANGELOG.md +34 -0
- package/NOTICE +7 -0
- package/dist/index.js +35 -11
- package/dist/index.js.map +1 -1
- package/dist/tool-adapter.d.ts +5 -1
- package/dist/tool-adapter.js +12 -1
- package/dist/tool-adapter.js.map +1 -1
- package/package.json +17 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# @llmrtc/llmrtc-provider-google
|
|
2
|
+
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8ff3ea3: Correctness release: make the advertised behavior actually work end to end.
|
|
8
|
+
- Core: system prompt is always sent and pinned outside the history window;
|
|
9
|
+
runTurnStream accepts an AbortSignal (barge-in); onLLMEnd has real
|
|
10
|
+
guardrail semantics; concurrent turns serialize correctly; clearHistory
|
|
11
|
+
transitions clear conversation history; PlaybookHooks are wired; tool
|
|
12
|
+
executor abort/ordering fixes; deep tool-argument validation.
|
|
13
|
+
- Providers: multi-turn tool calling now works across OpenAI, Anthropic,
|
|
14
|
+
Gemini, Bedrock, OpenRouter, LMStudio, and Ollama (history replay,
|
|
15
|
+
parallel tool results, streaming accumulation); malformed tool arguments
|
|
16
|
+
are flagged instead of silently becoming {}; Bedrock defaults to an
|
|
17
|
+
invocable inference profile; Ollama NDJSON streaming is buffered
|
|
18
|
+
correctly; ElevenLabs format mapping fixed; Whisper uploads are named by
|
|
19
|
+
their actual container.
|
|
20
|
+
- Backend: turns serialize per connection and barge-in aborts the in-flight
|
|
21
|
+
turn in any phase; session reconnection binds the recovered history;
|
|
22
|
+
Metered TURN credentials refresh on a TTL; start()/stop() lifecycle
|
|
23
|
+
fixes; real-time audio pacing.
|
|
24
|
+
- Web client: vision frames are delivered in time to reach the turn;
|
|
25
|
+
session resume follows the protocol and actually restores history;
|
|
26
|
+
close()/failure releases the microphone and camera; frame capture works
|
|
27
|
+
outside Chromium; non-WebRTC fallback (sendAudio/ttsChunk) is usable.
|
|
28
|
+
- Packaging: packages resolve under require(), clean checkouts build first
|
|
29
|
+
try, and npm tarballs ship the NOTICE file.
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- Updated dependencies [8ff3ea3]
|
|
34
|
+
- @llmrtc/llmrtc-core@1.1.0
|
package/NOTICE
ADDED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GoogleGenAI } from '@google/genai';
|
|
2
|
-
import { mapToolsToGemini, mapToolChoiceToGemini, parseToolCallsFromGemini, mapStopReasonFromGemini, processStreamingFunctionCall, finalizeToolCalls, createFunctionResponsePart, } from './tool-adapter.js';
|
|
2
|
+
import { mapToolsToGemini, mapToolChoiceToGemini, parseToolCallsFromGemini, mapStopReasonFromGemini, processStreamingFunctionCall, finalizeToolCalls, createFunctionCallPart, createFunctionResponsePart, } from './tool-adapter.js';
|
|
3
3
|
/**
|
|
4
4
|
* Google Gemini LLM Provider.
|
|
5
5
|
*
|
|
@@ -91,15 +91,18 @@ export class GeminiLLMProvider {
|
|
|
91
91
|
// Accumulate function calls across streaming chunks
|
|
92
92
|
const functionCallAccumulators = new Map();
|
|
93
93
|
let finishReason;
|
|
94
|
+
// Monotonic across the whole stream: Gemini function calls arrive whole
|
|
95
|
+
// (not as fragments), so each one gets its own slot. A per-chunk index
|
|
96
|
+
// would overwrite call 0 when calls arrive in separate chunks.
|
|
97
|
+
let functionCallCount = 0;
|
|
94
98
|
for await (const chunk of stream) {
|
|
95
99
|
const candidate = chunk.candidates?.[0];
|
|
96
100
|
const parts = candidate?.content?.parts ?? [];
|
|
97
101
|
// Process function calls
|
|
98
|
-
let callIndex = 0;
|
|
99
102
|
for (const part of parts) {
|
|
100
103
|
if (part.functionCall) {
|
|
101
|
-
processStreamingFunctionCall(functionCallAccumulators,
|
|
102
|
-
|
|
104
|
+
processStreamingFunctionCall(functionCallAccumulators, functionCallCount, part.functionCall);
|
|
105
|
+
functionCallCount++;
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
// Track finish reason
|
|
@@ -123,11 +126,12 @@ export class GeminiLLMProvider {
|
|
|
123
126
|
* Convert our messages to Gemini format with system instruction extracted
|
|
124
127
|
*/
|
|
125
128
|
function convertMessages(messages) {
|
|
126
|
-
|
|
129
|
+
const systemParts = [];
|
|
127
130
|
const contents = [];
|
|
128
131
|
for (const msg of messages) {
|
|
129
132
|
if (msg.role === 'system') {
|
|
130
|
-
|
|
133
|
+
// Preserve every system message rather than keeping only the last
|
|
134
|
+
systemParts.push(msg.content);
|
|
131
135
|
continue;
|
|
132
136
|
}
|
|
133
137
|
// Handle tool result messages
|
|
@@ -140,10 +144,16 @@ function convertMessages(messages) {
|
|
|
140
144
|
catch {
|
|
141
145
|
response = { result: msg.content };
|
|
142
146
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
const responsePart = createFunctionResponsePart(msg.toolName ?? '', response);
|
|
148
|
+
// Group consecutive tool results into a single user content so every
|
|
149
|
+
// functionResponse directly follows the model's functionCall turn
|
|
150
|
+
const last = contents[contents.length - 1];
|
|
151
|
+
if (last && last.role === 'user' && last.parts?.every(p => p.functionResponse)) {
|
|
152
|
+
last.parts.push(responsePart);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
contents.push({ role: 'user', parts: [responsePart] });
|
|
156
|
+
}
|
|
147
157
|
continue;
|
|
148
158
|
}
|
|
149
159
|
const parts = [];
|
|
@@ -151,6 +161,13 @@ function convertMessages(messages) {
|
|
|
151
161
|
if (msg.content) {
|
|
152
162
|
parts.push({ text: msg.content });
|
|
153
163
|
}
|
|
164
|
+
// Replay assistant tool calls as functionCall parts - Gemini rejects
|
|
165
|
+
// functionResponse turns that have no preceding functionCall
|
|
166
|
+
if (msg.role === 'assistant' && msg.toolCalls?.length) {
|
|
167
|
+
for (const tc of msg.toolCalls) {
|
|
168
|
+
parts.push(createFunctionCallPart(tc.name, tc.arguments));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
154
171
|
// Add vision attachments
|
|
155
172
|
if (msg.attachments?.length) {
|
|
156
173
|
for (const att of msg.attachments) {
|
|
@@ -163,12 +180,19 @@ function convertMessages(messages) {
|
|
|
163
180
|
});
|
|
164
181
|
}
|
|
165
182
|
}
|
|
183
|
+
// Gemini rejects content entries with no parts
|
|
184
|
+
if (parts.length === 0) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
166
187
|
contents.push({
|
|
167
188
|
role: msg.role === 'user' ? 'user' : 'model',
|
|
168
189
|
parts
|
|
169
190
|
});
|
|
170
191
|
}
|
|
171
|
-
return {
|
|
192
|
+
return {
|
|
193
|
+
systemInstruction: systemParts.length ? systemParts.join('\n\n') : undefined,
|
|
194
|
+
contents
|
|
195
|
+
};
|
|
172
196
|
}
|
|
173
197
|
/**
|
|
174
198
|
* Parse a data URI into mime type and base64 data
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,mBAAmB,CAAC;AAS3B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAiB;IAK5B,YAA6B,MAAoB;QAArC;;;;mBAAiB,MAAM;WAAc;QAJxC;;;;mBAAO,YAAY;WAAC;QACrB;;;;;WAAoB;QACpB;;;;;WAAc;QAGpB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;YACR,MAAM,EAAE;gBACN,iBAAiB;gBACjB,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW;gBACxC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI;gBAC1B,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS;gBAC1C,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI;oBAC3B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;oBACtC,UAAU,EAAE;wBACV,qBAAqB,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC;qBAChF;iBACF,CAAC;aACsB;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,SAAS,EAAE,MAAM;YAClC,CAAC,CAAC,UAAmB;YACrB,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAErD,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAmB;QAC/B,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC5D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;YACR,MAAM,EAAE;gBACN,iBAAiB;gBACjB,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW;gBACxC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI;gBAC1B,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS;gBAC1C,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI;oBAC3B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;oBACtC,UAAU,EAAE;wBACV,qBAAqB,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC;qBAChF;iBACF,CAAC;aACsB;SAC3B,CAAC,CAAC;QAEH,oDAAoD;QACpD,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAA4C,CAAC;QACrF,IAAI,YAAgC,CAAC;QACrC,wEAAwE;QACxE,uEAAuE;QACvE,+DAA+D;QAC/D,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YAE9C,yBAAyB;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,4BAA4B,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC7F,iBAAiB,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,SAAS,EAAE,YAAY,EAAE,CAAC;gBAC5B,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YACxC,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,0CAA0C;QAC1C,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,GAAG,CAAC;YACjD,CAAC,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,UAAU,GAAG,SAAS,EAAE,MAAM;YAClC,CAAC,CAAC,UAAmB;YACrB,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC3D,CAAC;CACF;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAmB;IAI1C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,kEAAkE;YAClE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,oDAAoD;YACpD,IAAI,QAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACrC,CAAC;YAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9E,qEAAqE;YACrE,kEAAkE;YAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,mBAAmB;QACnB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YACtD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBAClC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC;oBACT,UAAU,EAAE;wBACV,QAAQ;wBACR,IAAI;qBACL;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YAC5C,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5E,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IACD,oEAAoE;IACpE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC/C,CAAC"}
|
package/dist/tool-adapter.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare function mapToolsToGemini(tools: ToolDefinition[]): GeminiTool[];
|
|
|
14
14
|
* Convert provider-agnostic tool choice to Gemini format
|
|
15
15
|
* Gemini uses toolConfig with mode and allowedFunctionNames
|
|
16
16
|
*/
|
|
17
|
-
export declare function mapToolChoiceToGemini(choice?: ToolChoice,
|
|
17
|
+
export declare function mapToolChoiceToGemini(choice?: ToolChoice, _tools?: ToolDefinition[]): {
|
|
18
18
|
mode?: string;
|
|
19
19
|
allowedFunctionNames?: string[];
|
|
20
20
|
} | undefined;
|
|
@@ -44,6 +44,10 @@ export declare function finalizeToolCalls(accumulators: Map<number, StreamingFun
|
|
|
44
44
|
* Map finish reason from Gemini to provider-agnostic format
|
|
45
45
|
*/
|
|
46
46
|
export declare function mapStopReasonFromGemini(finishReason: string | undefined): 'end_turn' | 'tool_use' | 'max_tokens' | 'stop_sequence' | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Create a function call part for replaying assistant tool calls in history
|
|
49
|
+
*/
|
|
50
|
+
export declare function createFunctionCallPart(name: string, args: Record<string, unknown>): Part;
|
|
47
51
|
/**
|
|
48
52
|
* Create a function response part for tool results
|
|
49
53
|
*/
|
package/dist/tool-adapter.js
CHANGED
|
@@ -20,7 +20,7 @@ export function mapToolsToGemini(tools) {
|
|
|
20
20
|
* Convert provider-agnostic tool choice to Gemini format
|
|
21
21
|
* Gemini uses toolConfig with mode and allowedFunctionNames
|
|
22
22
|
*/
|
|
23
|
-
export function mapToolChoiceToGemini(choice,
|
|
23
|
+
export function mapToolChoiceToGemini(choice, _tools) {
|
|
24
24
|
if (!choice)
|
|
25
25
|
return undefined;
|
|
26
26
|
if (typeof choice === 'string') {
|
|
@@ -97,6 +97,17 @@ export function mapStopReasonFromGemini(finishReason) {
|
|
|
97
97
|
return undefined;
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Create a function call part for replaying assistant tool calls in history
|
|
102
|
+
*/
|
|
103
|
+
export function createFunctionCallPart(name, args) {
|
|
104
|
+
return {
|
|
105
|
+
functionCall: {
|
|
106
|
+
name,
|
|
107
|
+
args,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
100
111
|
/**
|
|
101
112
|
* Create a function response part for tool results
|
|
102
113
|
*/
|
package/dist/tool-adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../src/tool-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACtD,OAAO,CAAC;YACN,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAA0D;aAC5E,CAAC,CAAC;SACJ,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../src/tool-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llmrtc/llmrtc-provider-google",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Google Gemini LLM adapter for @llmrtc/LLMRTC",
|
|
5
5
|
"homepage": "https://www.llmrtc.org",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"dist",
|
|
24
24
|
"README.md",
|
|
25
|
-
"LICENSE"
|
|
25
|
+
"LICENSE",
|
|
26
|
+
"NOTICE",
|
|
27
|
+
"CHANGELOG.md"
|
|
26
28
|
],
|
|
27
29
|
"scripts": {
|
|
28
30
|
"build": "tsc -b",
|
|
@@ -30,7 +32,19 @@
|
|
|
30
32
|
"prepublishOnly": "npm run build"
|
|
31
33
|
},
|
|
32
34
|
"dependencies": {
|
|
33
|
-
"@llmrtc/llmrtc-core": "^1.
|
|
35
|
+
"@llmrtc/llmrtc-core": "^1.1.0",
|
|
34
36
|
"@google/genai": "^1.30.0"
|
|
37
|
+
},
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/index.js",
|
|
42
|
+
"default": "./dist/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./package.json": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
"sideEffects": false,
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=20"
|
|
35
49
|
}
|
|
36
50
|
}
|