@ai-sdk/xai 3.0.74 → 3.0.75

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/xai",
3
- "version": "3.0.74",
3
+ "version": "3.0.75",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -228,6 +228,7 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
228
228
  });
229
229
 
230
230
  const content: Array<LanguageModelV3Content> = [];
231
+ let hasFunctionCall = false;
231
232
 
232
233
  const webSearchSubTools = [
233
234
  'web_search',
@@ -350,6 +351,7 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
350
351
  }
351
352
 
352
353
  case 'function_call': {
354
+ hasFunctionCall = true;
353
355
  content.push({
354
356
  type: 'tool-call',
355
357
  toolCallId: part.call_id,
@@ -398,7 +400,9 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
398
400
  return {
399
401
  content,
400
402
  finishReason: {
401
- unified: mapXaiResponsesFinishReason(response.status),
403
+ unified: hasFunctionCall
404
+ ? 'tool-calls'
405
+ : mapXaiResponsesFinishReason(response.status),
402
406
  raw: response.status ?? undefined,
403
407
  },
404
408
  usage: response.usage
@@ -450,6 +454,7 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
450
454
  unified: 'other',
451
455
  raw: undefined,
452
456
  };
457
+ let hasFunctionCall = false;
453
458
  let usage: LanguageModelV3Usage | undefined = undefined;
454
459
  let isFirstChunk = true;
455
460
  const contentBlocks: Record<string, { type: 'text' }> = {};
@@ -643,7 +648,9 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
643
648
 
644
649
  if (response.status) {
645
650
  finishReason = {
646
- unified: mapXaiResponsesFinishReason(response.status),
651
+ unified: hasFunctionCall
652
+ ? 'tool-calls'
653
+ : mapXaiResponsesFinishReason(response.status),
647
654
  raw: response.status,
648
655
  };
649
656
  }
@@ -911,6 +918,7 @@ export class XaiResponsesLanguageModel implements LanguageModelV3 {
911
918
  toolName: part.name,
912
919
  });
913
920
  } else if (event.type === 'response.output_item.done') {
921
+ hasFunctionCall = true;
914
922
  ongoingToolCalls[event.output_index] = undefined;
915
923
 
916
924
  controller.enqueue({