@llmrtc/llmrtc-provider-google 1.0.0 → 1.2.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 ADDED
@@ -0,0 +1,59 @@
1
+ # @llmrtc/llmrtc-provider-google
2
+
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fd91344: Anthropic modernization and richer stop reasons.
8
+ - The StopReason union gains `refusal`, `content_filter`, `pause_turn`, and
9
+ `context_overflow`. Note for TypeScript consumers with exhaustive switches:
10
+ this widens the union. OpenAI-compatible providers now report
11
+ `content_filter` for filtered responses (previously mis-reported as
12
+ `stop_sequence`); Gemini safety blocks and Bedrock guardrail interventions
13
+ also map to `content_filter`.
14
+ - The Anthropic provider defaults to `claude-sonnet-5` and automatically
15
+ omits temperature/top_p for model families that reject them (Sonnet 5,
16
+ Opus 4.7+, Fable tier), with a `samplingParamsSupported` override. The
17
+ Bedrock provider applies the same guard for Claude models.
18
+ - Orchestrators log a warning when a turn ends with an unusual stop reason.
19
+ - CLI and example fallbacks move off retired model ids.
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies [fd91344]
24
+ - Updated dependencies [319bb47]
25
+ - Updated dependencies [a7d1ecc]
26
+ - @llmrtc/llmrtc-core@1.2.0
27
+
28
+ ## 1.1.0
29
+
30
+ ### Minor Changes
31
+
32
+ - 8ff3ea3: Correctness release: make the advertised behavior actually work end to end.
33
+ - Core: system prompt is always sent and pinned outside the history window;
34
+ runTurnStream accepts an AbortSignal (barge-in); onLLMEnd has real
35
+ guardrail semantics; concurrent turns serialize correctly; clearHistory
36
+ transitions clear conversation history; PlaybookHooks are wired; tool
37
+ executor abort/ordering fixes; deep tool-argument validation.
38
+ - Providers: multi-turn tool calling now works across OpenAI, Anthropic,
39
+ Gemini, Bedrock, OpenRouter, LMStudio, and Ollama (history replay,
40
+ parallel tool results, streaming accumulation); malformed tool arguments
41
+ are flagged instead of silently becoming {}; Bedrock defaults to an
42
+ invocable inference profile; Ollama NDJSON streaming is buffered
43
+ correctly; ElevenLabs format mapping fixed; Whisper uploads are named by
44
+ their actual container.
45
+ - Backend: turns serialize per connection and barge-in aborts the in-flight
46
+ turn in any phase; session reconnection binds the recovered history;
47
+ Metered TURN credentials refresh on a TTL; start()/stop() lifecycle
48
+ fixes; real-time audio pacing.
49
+ - Web client: vision frames are delivered in time to reach the turn;
50
+ session resume follows the protocol and actually restores history;
51
+ close()/failure releases the microphone and camera; frame capture works
52
+ outside Chromium; non-WebRTC fallback (sendAudio/ttsChunk) is usable.
53
+ - Packaging: packages resolve under require(), clean checkouts build first
54
+ try, and npm tarballs ship the NOTICE file.
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies [8ff3ea3]
59
+ - @llmrtc/llmrtc-core@1.1.0
package/NOTICE ADDED
@@ -0,0 +1,7 @@
1
+ LLMRTC
2
+ Copyright 2025 Next Path Software Consulting Inc., dba Metered
3
+
4
+ This product includes software developed by Next Path Software Consulting Inc., dba Metered.
5
+
6
+ Project home: https://www.llmrtc.org/
7
+ Company: https://www.metered.ca/
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, callIndex, part.functionCall);
102
- callIndex++;
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
- let systemInstruction;
129
+ const systemParts = [];
127
130
  const contents = [];
128
131
  for (const msg of messages) {
129
132
  if (msg.role === 'system') {
130
- systemInstruction = msg.content;
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
- contents.push({
144
- role: 'user',
145
- parts: [createFunctionResponsePart(msg.toolName ?? '', response)],
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 { systemInstruction, contents };
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":"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"}
@@ -5,7 +5,7 @@
5
5
  * and parses tool calls from Gemini responses.
6
6
  */
7
7
  import type { Tool as GeminiTool, Part } from '@google/genai';
8
- import type { ToolDefinition, ToolCallRequest, ToolChoice } from '@llmrtc/llmrtc-core';
8
+ import type { ToolDefinition, ToolCallRequest, ToolChoice, StopReason } from '@llmrtc/llmrtc-core';
9
9
  /**
10
10
  * Convert provider-agnostic tool definitions to Gemini format
11
11
  */
@@ -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, tools?: ToolDefinition[]): {
17
+ export declare function mapToolChoiceToGemini(choice?: ToolChoice, _tools?: ToolDefinition[]): {
18
18
  mode?: string;
19
19
  allowedFunctionNames?: string[];
20
20
  } | undefined;
@@ -43,7 +43,11 @@ export declare function finalizeToolCalls(accumulators: Map<number, StreamingFun
43
43
  /**
44
44
  * Map finish reason from Gemini to provider-agnostic format
45
45
  */
46
- export declare function mapStopReasonFromGemini(finishReason: string | undefined): 'end_turn' | 'tool_use' | 'max_tokens' | 'stop_sequence' | undefined;
46
+ export declare function mapStopReasonFromGemini(finishReason: string | undefined): StopReason | 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
  */
@@ -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, tools) {
23
+ export function mapToolChoiceToGemini(choice, _tools) {
24
24
  if (!choice)
25
25
  return undefined;
26
26
  if (typeof choice === 'string') {
@@ -91,12 +91,26 @@ export function mapStopReasonFromGemini(finishReason) {
91
91
  return 'max_tokens';
92
92
  case 'SAFETY':
93
93
  case 'RECITATION':
94
+ case 'PROHIBITED_CONTENT':
95
+ case 'BLOCKLIST':
96
+ return 'content_filter';
94
97
  case 'OTHER':
95
98
  return 'stop_sequence';
96
99
  default:
97
100
  return undefined;
98
101
  }
99
102
  }
103
+ /**
104
+ * Create a function call part for replaying assistant tool calls in history
105
+ */
106
+ export function createFunctionCallPart(name, args) {
107
+ return {
108
+ functionCall: {
109
+ name,
110
+ args,
111
+ },
112
+ };
113
+ }
100
114
  /**
101
115
  * Create a function response part for tool results
102
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../src/tool-adapter.ts"],"names":[],"mappings":"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"}
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,MAAyB;IAEzB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,UAAU;gBACb,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACzB;gBACE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,OAAO;QACL,IAAI,EAAE,KAAK;QACX,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEjD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACzC,uDAAuD;QACvD,MAAM,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,EAAE;QAC5C,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE;QACnC,SAAS,EAAG,IAAI,CAAC,YAAY,EAAE,IAAgC,IAAI,EAAE;KACtE,CAAC,CAAC,CAAC;AACN,CAAC;AAUD;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAA2D,EAC3D,KAAa,EACb,YAA+C;IAE/C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE;QACtB,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE;QAC7B,IAAI,EAAG,YAAY,CAAC,IAAgC,IAAI,EAAE;KAC3D,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA2D;IAE3D,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,EAAE;YAC5C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAgC;IAEhC,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,IAA6B;IAE7B,OAAO;QACL,YAAY,EAAE;YACZ,IAAI;YACJ,IAAI;SACL;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAY,EACZ,QAAiB;IAEjB,OAAO;QACL,gBAAgB,EAAE;YAChB,IAAI;YACJ,QAAQ,EAAE,QAAmC;SAC9C;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llmrtc/llmrtc-provider-google",
3
- "version": "1.0.0",
3
+ "version": "1.2.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.0.0",
35
+ "@llmrtc/llmrtc-core": "^1.2.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
  }