From c896383ae0e90eba2d37dc9ccd682b60b5f8e76f Mon Sep 17 00:00:00 2001 From: Cynthia J Date: Tue, 2 Sep 2025 17:16:06 -0700 Subject: [PATCH] fix the json parse for toolCallCancellation --- .../firebase_ai/firebase_ai/lib/src/live_api.dart | 9 +++++++-- packages/firebase_ai/firebase_ai/test/live_test.dart | 11 +++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/firebase_ai/firebase_ai/lib/src/live_api.dart b/packages/firebase_ai/firebase_ai/lib/src/live_api.dart index c77d2037a993..fdbe2c63d0af 100644 --- a/packages/firebase_ai/firebase_ai/lib/src/live_api.dart +++ b/packages/firebase_ai/firebase_ai/lib/src/live_api.dart @@ -322,8 +322,13 @@ LiveServerMessage _parseServerMessage(Object jsonObject) { return LiveServerToolCall(functionCalls: functionCalls); } else if (json.containsKey('toolCallCancellation')) { - final toolCancelJson = - json['toolCallCancellation'] as Map>; + final toolCancelData = json['toolCallCancellation'] as Map; + final Map> toolCancelJson = toolCancelData.map( + (key, value) => MapEntry( + key as String, + (value as List).cast(), + ), + ); return LiveServerToolCallCancellation(functionIds: toolCancelJson['ids']); } else if (json.containsKey('setupComplete')) { return LiveServerSetupComplete(); diff --git a/packages/firebase_ai/firebase_ai/test/live_test.dart b/packages/firebase_ai/firebase_ai/test/live_test.dart index 6f013c1dc486..a89c53e7901a 100644 --- a/packages/firebase_ai/firebase_ai/test/live_test.dart +++ b/packages/firebase_ai/firebase_ai/test/live_test.dart @@ -11,6 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +import 'dart:convert'; import 'dart:typed_data'; import 'package:firebase_ai/src/api.dart'; @@ -206,11 +207,13 @@ void main() { test('parseServerMessage parses toolCallCancellation message correctly', () { - final jsonObject = { - 'toolCallCancellation': { - 'ids': ['1', '2'] + final jsonObject = jsonDecode(''' + { + "toolCallCancellation": { + "ids": ["1", "2"] + } } - }; + ''') as Map; final response = parseServerResponse(jsonObject); expect(response.message, isA()); final cancellationMessage =