@office-ai/aioncli-core 0.18.5 → 0.18.7

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.
@@ -100,6 +100,11 @@ export declare class GeminiChat {
100
100
  * chat session.
101
101
  */
102
102
  getHistory(curated?: boolean): Content[];
103
+ /**
104
+ * Deduplicates functionResponse parts with the same id across all messages.
105
+ * This prevents 400 errors from API providers that reject duplicate tool responses.
106
+ */
107
+ private deduplicateFunctionResponses;
103
108
  /**
104
109
  * Clears the chat history.
105
110
  */
@@ -361,7 +361,40 @@ export class GeminiChat {
361
361
  : this.history;
362
362
  // Deep copy the history to avoid mutating the history outside of the
363
363
  // chat session.
364
- return structuredClone(history);
364
+ const clonedHistory = structuredClone(history);
365
+ // Deduplicate functionResponse parts with the same id to prevent 400 errors
366
+ // from providers that don't accept duplicate responses for the same tool call.
367
+ return this.deduplicateFunctionResponses(clonedHistory);
368
+ }
369
+ /**
370
+ * Deduplicates functionResponse parts with the same id across all messages.
371
+ * This prevents 400 errors from API providers that reject duplicate tool responses.
372
+ */
373
+ deduplicateFunctionResponses(history) {
374
+ const seenFunctionResponseIds = new Set();
375
+ const result = [];
376
+ for (const content of history) {
377
+ if (!content.parts || content.parts.length === 0) {
378
+ result.push(content);
379
+ continue;
380
+ }
381
+ const filteredParts = content.parts.filter((part) => {
382
+ if ('functionResponse' in part && part.functionResponse?.id) {
383
+ const id = part.functionResponse.id;
384
+ if (seenFunctionResponseIds.has(id)) {
385
+ // Skip duplicate functionResponse
386
+ return false;
387
+ }
388
+ seenFunctionResponseIds.add(id);
389
+ }
390
+ return true;
391
+ });
392
+ // Only include content if it still has parts after filtering
393
+ if (filteredParts.length > 0) {
394
+ result.push({ ...content, parts: filteredParts });
395
+ }
396
+ }
397
+ return result;
365
398
  }
366
399
  /**
367
400
  * Clears the chat history.
@@ -1 +1 @@
1
- {"version":3,"file":"geminiChat.js","sourceRoot":"","sources":["../../../src/core/geminiChat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geminiChat.js","sourceRoot":"","sources":["../../../src/core/geminiChat.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare class OpenAIContentGenerator implements ContentGenerator {
13
13
  private model;
14
14
  private config;
15
15
  private streamingToolCalls;
16
+ private streamingReasoningDetails;
16
17
  constructor(apiKey: string, model: string, config: Config);
17
18
  /**
18
19
  * Hook for subclasses to customize error handling behavior
@@ -52,11 +53,35 @@ export declare class OpenAIContentGenerator implements ContentGenerator {
52
53
  * Check if the current model is a DeepSeek Reasoner model
53
54
  */
54
55
  private isDeepSeekReasonerModel;
56
+ /**
57
+ * Check if the current model is a Gemini reasoning model (Gemini 3, 2.5 series)
58
+ * These models require reasoning_details/thought_signature for tool calls
59
+ */
60
+ private isGeminiReasoningModel;
61
+ /**
62
+ * Validate thoughtSignature to prevent "Corrupted thought signature" errors.
63
+ * Valid thoughtSignature should have properly encrypted data (long base64 strings).
64
+ * Invalid ones may contain short UUIDs or corrupted data.
65
+ *
66
+ * 验证 thoughtSignature 以防止 "Corrupted thought signature" 错误。
67
+ * 有效的 thoughtSignature 应该包含正确加密的数据(长 base64 字符串)。
68
+ * 无效的可能包含短 UUID 或损坏的数据。
69
+ */
70
+ private isValidThoughtSignature;
55
71
  /**
56
72
  * Add reasoning_content field to assistant messages for DeepSeek Reasoner compatibility.
57
73
  * DeepSeek Reasoner models require reasoning_content field in assistant messages during tool calls.
58
74
  */
59
75
  private addReasoningContentForDeepSeek;
76
+ /**
77
+ * Filter out REASONING_DETAILS_MARKER from text to prevent it from leaking
78
+ * into messages sent to the model. This can happen when AionUI includes
79
+ * conversation history that contains the marker.
80
+ *
81
+ * 过滤文本中的 REASONING_DETAILS_MARKER,防止其泄露到发送给模型的消息中。
82
+ * 这种情况可能发生在 AionUI 包含含有 marker 的对话历史时。
83
+ */
84
+ private filterReasoningDetailsMarker;
60
85
  /**
61
86
  * 清理消息历史中的孤立工具调用,防止 OpenAI API 报错。
62
87
  * 同时对相同 tool_call_id 的工具响应进行去重,防止不接受重复响应的 API 返回 400 错误。
@@ -9,11 +9,15 @@ import { logApiResponse } from '../telemetry/loggers.js';
9
9
  import { toContents } from '../code_assist/converter.js';
10
10
  import { ApiResponseEvent } from '../telemetry/types.js';
11
11
  import { safeJsonParse } from '../utils/safeJsonParse.js';
12
+ // Special marker for reasoning_details in Part text
13
+ const REASONING_DETAILS_MARKER = '__OPENROUTER_REASONING_DETAILS__:';
12
14
  export class OpenAIContentGenerator {
13
15
  client;
14
16
  model;
15
17
  config;
16
18
  streamingToolCalls = new Map();
19
+ // Store reasoning_details for OpenRouter reasoning models (Gemini 3 Pro, etc.)
20
+ streamingReasoningDetails = null;
17
21
  constructor(apiKey, model, config) {
18
22
  this.model = model;
19
23
  this.config = config;
@@ -163,7 +167,17 @@ export class OpenAIContentGenerator {
163
167
  else if (request.config?.tools) {
164
168
  createParams.tools = await this.convertGeminiToolsToOpenAI(request.config.tools);
165
169
  }
166
- // console.log('createParams', createParams);
170
+ // Enable reasoning for Gemini 3 models on OpenRouter
171
+ // This ensures reasoning_details are returned and can be preserved
172
+ const baseURL = this.client?.baseURL || '';
173
+ const isOpenRouter = baseURL.includes('openrouter.ai');
174
+ if (isOpenRouter && this.isGeminiReasoningModel()) {
175
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
+ createParams.reasoning = {
177
+ // Use 'high' effort for reliable reasoning token generation
178
+ effort: 'high',
179
+ };
180
+ }
167
181
  const completion = (await this.client.chat.completions.create(createParams));
168
182
  // Check if this was a JSON schema request
169
183
  const isJsonSchemaRequest = !!(request.config?.responseJsonSchema &&
@@ -276,7 +290,17 @@ export class OpenAIContentGenerator {
276
290
  else if (request.config?.tools) {
277
291
  createParams.tools = await this.convertGeminiToolsToOpenAI(request.config.tools);
278
292
  }
279
- // console.log('createParams', createParams);
293
+ // Enable reasoning for Gemini 3 models on OpenRouter
294
+ // This ensures reasoning_details are returned and can be preserved
295
+ const baseURL = this.client?.baseURL || '';
296
+ const isOpenRouter = baseURL.includes('openrouter.ai');
297
+ if (isOpenRouter && this.isGeminiReasoningModel()) {
298
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
299
+ createParams.reasoning = {
300
+ // Use 'high' effort for reliable reasoning token generation
301
+ effort: 'high',
302
+ };
303
+ }
280
304
  const stream = (await this.client.chat.completions.create(createParams));
281
305
  // Check if this was a JSON schema request
282
306
  const isJsonSchemaRequest = !!(request.config?.responseJsonSchema &&
@@ -412,8 +436,9 @@ export class OpenAIContentGenerator {
412
436
  }
413
437
  }
414
438
  async *streamGenerator(stream, isJsonSchemaRequest = false) {
415
- // Reset the accumulator for each new stream
439
+ // Reset the accumulators for each new stream
416
440
  this.streamingToolCalls.clear();
441
+ this.streamingReasoningDetails = null;
417
442
  for await (const chunk of stream) {
418
443
  yield this.convertStreamChunkToGeminiFormat(chunk, isJsonSchemaRequest);
419
444
  }
@@ -732,15 +757,47 @@ export class OpenAIContentGenerator {
732
757
  const functionCalls = [];
733
758
  const functionResponses = [];
734
759
  const textParts = [];
760
+ let reasoningDetails = null;
735
761
  for (const part of content.parts || []) {
736
762
  if (typeof part === 'string') {
737
- textParts.push(part);
763
+ // Filter out any leaked reasoning_details marker from string parts
764
+ const cleanedString = this.filterReasoningDetailsMarker(part);
765
+ if (cleanedString) {
766
+ textParts.push(cleanedString);
767
+ }
738
768
  }
739
769
  else if ('text' in part && part.text) {
740
- textParts.push(part.text);
770
+ // Check for special reasoning_details marker (OpenRouter reasoning models)
771
+ if (part.thought &&
772
+ part.text.startsWith(REASONING_DETAILS_MARKER)) {
773
+ try {
774
+ reasoningDetails = JSON.parse(part.text.slice(REASONING_DETAILS_MARKER.length));
775
+ }
776
+ catch {
777
+ // Invalid JSON, ignore
778
+ }
779
+ }
780
+ else if (!part.thought) {
781
+ // Only include non-thought text parts, filter out any leaked markers
782
+ const cleanedText = this.filterReasoningDetailsMarker(part.text);
783
+ if (cleanedText) {
784
+ textParts.push(cleanedText);
785
+ }
786
+ }
741
787
  }
742
788
  else if ('functionCall' in part && part.functionCall) {
743
789
  functionCalls.push(part.functionCall);
790
+ // Check for thoughtSignature on the Part (Gemini format)
791
+ // This is required for OpenRouter/Gemini reasoning models
792
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
793
+ const partAny = part;
794
+ if (partAny.thoughtSignature && !reasoningDetails) {
795
+ // Only use the first thoughtSignature (parallel calls only have one)
796
+ // Validate thoughtSignature before using it to prevent "Corrupted thought signature" errors
797
+ if (this.isValidThoughtSignature(partAny.thoughtSignature)) {
798
+ reasoningDetails = partAny.thoughtSignature;
799
+ }
800
+ }
744
801
  }
745
802
  else if ('functionResponse' in part && part.functionResponse) {
746
803
  functionResponses.push(part.functionResponse);
@@ -768,11 +825,16 @@ export class OpenAIContentGenerator {
768
825
  arguments: JSON.stringify(fc.args || {}),
769
826
  },
770
827
  }));
771
- messages.push({
828
+ const assistantMessage = {
772
829
  role: 'assistant',
773
830
  content: textParts.join('\n') || null,
774
831
  tool_calls: toolCalls,
775
- });
832
+ };
833
+ // Add reasoning_details if present (required for OpenRouter reasoning models)
834
+ if (reasoningDetails) {
835
+ assistantMessage.reasoning_details = reasoningDetails;
836
+ }
837
+ messages.push(assistantMessage);
776
838
  }
777
839
  // Handle regular text messages
778
840
  else {
@@ -781,7 +843,12 @@ export class OpenAIContentGenerator {
781
843
  : 'user';
782
844
  const text = textParts.join('\n');
783
845
  if (text) {
784
- messages.push({ role, content: text });
846
+ const message = { role, content: text };
847
+ // Add reasoning_details if present and this is an assistant message
848
+ if (role === 'assistant' && reasoningDetails) {
849
+ message.reasoning_details = reasoningDetails;
850
+ }
851
+ messages.push(message);
785
852
  }
786
853
  }
787
854
  }
@@ -789,7 +856,10 @@ export class OpenAIContentGenerator {
789
856
  }
790
857
  else if (request.contents) {
791
858
  if (typeof request.contents === 'string') {
792
- messages.push({ role: 'user', content: request.contents });
859
+ const cleanedContent = this.filterReasoningDetailsMarker(request.contents);
860
+ if (cleanedContent) {
861
+ messages.push({ role: 'user', content: cleanedContent });
862
+ }
793
863
  }
794
864
  else if ('role' in request.contents && 'parts' in request.contents) {
795
865
  const content = request.contents;
@@ -797,7 +867,10 @@ export class OpenAIContentGenerator {
797
867
  const text = content.parts
798
868
  ?.map((p) => typeof p === 'string' ? p : 'text' in p ? p.text : '')
799
869
  .join('\n') || '';
800
- messages.push({ role, content: text });
870
+ const cleanedText = this.filterReasoningDetailsMarker(text);
871
+ if (cleanedText) {
872
+ messages.push({ role, content: cleanedText });
873
+ }
801
874
  }
802
875
  }
803
876
  // Clean up orphaned tool calls and merge consecutive assistant messages
@@ -817,6 +890,67 @@ export class OpenAIContentGenerator {
817
890
  return (modelName.includes('deepseek-reasoner') ||
818
891
  modelName.includes('deepseek-r1'));
819
892
  }
893
+ /**
894
+ * Check if the current model is a Gemini reasoning model (Gemini 3, 2.5 series)
895
+ * These models require reasoning_details/thought_signature for tool calls
896
+ */
897
+ isGeminiReasoningModel() {
898
+ const modelName = this.model.toLowerCase();
899
+ return (modelName.includes('gemini-3') ||
900
+ modelName.includes('gemini-2.5') ||
901
+ modelName.includes('gemini-exp') ||
902
+ modelName.includes('gemini-2.0-flash-thinking'));
903
+ }
904
+ /**
905
+ * Validate thoughtSignature to prevent "Corrupted thought signature" errors.
906
+ * Valid thoughtSignature should have properly encrypted data (long base64 strings).
907
+ * Invalid ones may contain short UUIDs or corrupted data.
908
+ *
909
+ * 验证 thoughtSignature 以防止 "Corrupted thought signature" 错误。
910
+ * 有效的 thoughtSignature 应该包含正确加密的数据(长 base64 字符串)。
911
+ * 无效的可能包含短 UUID 或损坏的数据。
912
+ */
913
+ isValidThoughtSignature(thoughtSignature) {
914
+ if (!thoughtSignature) {
915
+ return false;
916
+ }
917
+ // thoughtSignature can be an array of signature objects or a single object
918
+ const signatures = Array.isArray(thoughtSignature)
919
+ ? thoughtSignature
920
+ : [thoughtSignature];
921
+ for (const sig of signatures) {
922
+ if (typeof sig !== 'object' || sig === null) {
923
+ continue;
924
+ }
925
+ const sigObj = sig;
926
+ const data = sigObj['data'];
927
+ // Check if data field exists and is a string
928
+ if (typeof data !== 'string') {
929
+ return false;
930
+ }
931
+ // Valid encrypted data should be significantly longer than a UUID (36 chars)
932
+ // A UUID in base64 is about 48 chars. Valid reasoning data is typically 100+ chars.
933
+ // We use 64 as a threshold to filter out UUID-like corrupted data.
934
+ const MIN_VALID_DATA_LENGTH = 64;
935
+ if (data.length < MIN_VALID_DATA_LENGTH) {
936
+ return false;
937
+ }
938
+ // Additional check: valid data should start with certain prefixes (Ci, Ev, etc.)
939
+ // which are common in Google's encrypted reasoning data
940
+ const validPrefixes = ['Ci', 'Ev', 'Ch', 'Co'];
941
+ const hasValidPrefix = validPrefixes.some((prefix) => data.startsWith(prefix));
942
+ if (!hasValidPrefix) {
943
+ // Check if it looks like a base64-encoded UUID (starts with ZT, ND, etc.)
944
+ // These are typically invalid
945
+ const uuidBase64Prefixes = ['ZT', 'ND', 'MW', 'Yz', 'OD'];
946
+ const looksLikeUuid = uuidBase64Prefixes.some((prefix) => data.startsWith(prefix));
947
+ if (looksLikeUuid && data.length < 100) {
948
+ return false;
949
+ }
950
+ }
951
+ }
952
+ return true;
953
+ }
820
954
  /**
821
955
  * Add reasoning_content field to assistant messages for DeepSeek Reasoner compatibility.
822
956
  * DeepSeek Reasoner models require reasoning_content field in assistant messages during tool calls.
@@ -834,6 +968,23 @@ export class OpenAIContentGenerator {
834
968
  return message;
835
969
  });
836
970
  }
971
+ /**
972
+ * Filter out REASONING_DETAILS_MARKER from text to prevent it from leaking
973
+ * into messages sent to the model. This can happen when AionUI includes
974
+ * conversation history that contains the marker.
975
+ *
976
+ * 过滤文本中的 REASONING_DETAILS_MARKER,防止其泄露到发送给模型的消息中。
977
+ * 这种情况可能发生在 AionUI 包含含有 marker 的对话历史时。
978
+ */
979
+ filterReasoningDetailsMarker(text) {
980
+ if (!text.includes(REASONING_DETAILS_MARKER)) {
981
+ return text;
982
+ }
983
+ // Remove lines containing the marker (typically: "Assistant: __OPENROUTER_REASONING_DETAILS__:[...]")
984
+ const lines = text.split('\n');
985
+ const filteredLines = lines.filter((line) => !line.includes(REASONING_DETAILS_MARKER));
986
+ return filteredLines.join('\n').trim();
987
+ }
837
988
  /**
838
989
  * 清理消息历史中的孤立工具调用,防止 OpenAI API 报错。
839
990
  * 同时对相同 tool_call_id 的工具响应进行去重,防止不接受重复响应的 API 返回 400 错误。
@@ -1018,17 +1169,48 @@ export class OpenAIContentGenerator {
1018
1169
  }
1019
1170
  else {
1020
1171
  // Regular tool call handling
1021
- parts.push({
1172
+ // Include thoughtSignature if present (required for Gemini reasoning models)
1173
+ // Note: thoughtSignature is a SIBLING of functionCall in the Part, not inside it
1174
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1175
+ const functionCallPart = {
1022
1176
  functionCall: {
1023
1177
  id: toolCall.id,
1024
1178
  name: toolCall.function.name,
1025
1179
  args,
1026
1180
  },
1027
- });
1181
+ };
1182
+ // Check for thought_signature in the tool call (OpenRouter/Gemini)
1183
+ // Validate before attaching to prevent "Corrupted thought signature" errors
1184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1185
+ const toolCallAny = toolCall;
1186
+ const thoughtSig = toolCallAny.thought_signature ||
1187
+ toolCallAny.thoughtSignature ||
1188
+ toolCallAny.function?.thought_signature;
1189
+ if (thoughtSig && this.isValidThoughtSignature(thoughtSig)) {
1190
+ functionCallPart.thoughtSignature = thoughtSig;
1191
+ }
1192
+ parts.push(functionCallPart);
1028
1193
  }
1029
1194
  }
1030
1195
  }
1031
1196
  }
1197
+ // Handle reasoning_details from OpenRouter reasoning models (Gemini 3 Pro, etc.)
1198
+ // Only preserve reasoning_details when there are functionCall parts (for multi-turn tool calls)
1199
+ // For text-only responses, reasoning_details is not needed
1200
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1201
+ const messageReasoningDetails = choice.message?.reasoning_details;
1202
+ // Validate reasoning_details before attaching to prevent "Corrupted thought signature" errors
1203
+ if (messageReasoningDetails &&
1204
+ this.isValidThoughtSignature(messageReasoningDetails)) {
1205
+ // Attach reasoning_details to the FIRST functionCall Part as thoughtSignature
1206
+ // This is required for Gemini API to process tool calls correctly
1207
+ const firstFunctionCallPart = parts.find((p) => 'functionCall' in p);
1208
+ if (firstFunctionCallPart && !firstFunctionCallPart.thoughtSignature) {
1209
+ firstFunctionCallPart.thoughtSignature = messageReasoningDetails;
1210
+ }
1211
+ // For text-only responses, we don't need to preserve reasoning_details
1212
+ // as they are only required for multi-turn tool calls
1213
+ }
1032
1214
  response.responseId = openaiResponse.id;
1033
1215
  response.createTime = openaiResponse.created
1034
1216
  ? openaiResponse.created.toString()
@@ -1072,6 +1254,8 @@ export class OpenAIContentGenerator {
1072
1254
  return response;
1073
1255
  }
1074
1256
  convertStreamChunkToGeminiFormat(chunk, isJsonSchemaRequest = false) {
1257
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1258
+ const chunkAny = chunk;
1075
1259
  const choice = chunk.choices?.[0];
1076
1260
  const response = new GenerateContentResponse();
1077
1261
  if (choice) {
@@ -1080,6 +1264,18 @@ export class OpenAIContentGenerator {
1080
1264
  if (choice.delta?.content) {
1081
1265
  parts.push({ text: choice.delta.content });
1082
1266
  }
1267
+ // Capture reasoning_details from OpenRouter reasoning models (Gemini 3 Pro, etc.)
1268
+ // Check multiple possible locations where it might be returned
1269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1270
+ const choiceAny = choice;
1271
+ const deltaReasoningDetails = choiceAny.delta?.reasoning_details ||
1272
+ choiceAny.reasoning_details ||
1273
+ chunkAny.reasoning_details;
1274
+ // Validate reasoning_details before storing to prevent corrupted data propagation
1275
+ if (deltaReasoningDetails &&
1276
+ this.isValidThoughtSignature(deltaReasoningDetails)) {
1277
+ this.streamingReasoningDetails = deltaReasoningDetails;
1278
+ }
1083
1279
  // Handle tool calls - only accumulate during streaming, emit when complete
1084
1280
  if (choice.delta?.tool_calls) {
1085
1281
  for (const toolCall of choice.delta.tool_calls) {
@@ -1100,6 +1296,16 @@ export class OpenAIContentGenerator {
1100
1296
  if (toolCall.function?.arguments) {
1101
1297
  accumulatedCall.arguments += toolCall.function.arguments;
1102
1298
  }
1299
+ // Capture thought_signature for OpenRouter/Gemini reasoning models
1300
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1301
+ const toolCallAny = toolCall;
1302
+ if (toolCallAny.thought_signature) {
1303
+ accumulatedCall.thought_signature = toolCallAny.thought_signature;
1304
+ }
1305
+ else if (toolCallAny.function?.thought_signature) {
1306
+ accumulatedCall.thought_signature =
1307
+ toolCallAny.function.thought_signature;
1308
+ }
1103
1309
  }
1104
1310
  }
1105
1311
  // Only emit function calls when streaming is complete (finish_reason is present)
@@ -1120,18 +1326,41 @@ export class OpenAIContentGenerator {
1120
1326
  }
1121
1327
  else {
1122
1328
  // Regular tool call handling
1123
- parts.push({
1329
+ // Include thoughtSignature if present (required for Gemini reasoning models)
1330
+ // Note: thoughtSignature is a SIBLING of functionCall in the Part, not inside it
1331
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1332
+ const functionCallPart = {
1124
1333
  functionCall: {
1125
1334
  id: accumulatedCall.id,
1126
1335
  name: accumulatedCall.name,
1127
1336
  args,
1128
1337
  },
1129
- });
1338
+ };
1339
+ // Add thoughtSignature as sibling of functionCall (Gemini format)
1340
+ // For the FIRST functionCall, attach the reasoning_details as thoughtSignature
1341
+ // Validate before attaching to prevent "Corrupted thought signature" errors
1342
+ if (accumulatedCall.thought_signature &&
1343
+ this.isValidThoughtSignature(accumulatedCall.thought_signature)) {
1344
+ functionCallPart.thoughtSignature =
1345
+ accumulatedCall.thought_signature;
1346
+ }
1347
+ else if (this.streamingReasoningDetails &&
1348
+ parts.filter((p) => 'functionCall' in p).length === 0) {
1349
+ // Only attach to the first functionCall (for parallel calls)
1350
+ // Note: streamingReasoningDetails is already validated when stored
1351
+ functionCallPart.thoughtSignature =
1352
+ this.streamingReasoningDetails;
1353
+ }
1354
+ parts.push(functionCallPart);
1130
1355
  }
1131
1356
  }
1132
1357
  }
1133
1358
  // Clear all accumulated tool calls
1134
1359
  this.streamingToolCalls.clear();
1360
+ // Clear reasoning_details after processing
1361
+ // For text-only responses, we don't need to preserve reasoning_details
1362
+ // as they are only required for multi-turn tool calls
1363
+ this.streamingReasoningDetails = null;
1135
1364
  }
1136
1365
  response.candidates = [
1137
1366
  {