@ai-sdk/xai 4.0.15 → 4.0.16

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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # @ai-sdk/xai
2
2
 
3
+ ## 4.0.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 1e2ae1f: fix(xai): handle empty HTTP 202 responses while polling videos
8
+ - 54e5498: fix(provider/xai): preserve images in Responses API tool results
9
+ - Updated dependencies [cd06458]
10
+ - @ai-sdk/provider-utils@5.0.11
11
+ - @ai-sdk/openai-compatible@3.0.12
12
+
3
13
  ## 4.0.15
4
14
 
5
15
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1414,12 +1414,33 @@ async function convertToXaiResponsesInput({
1414
1414
  outputValue = JSON.stringify(output.value);
1415
1415
  break;
1416
1416
  case "content":
1417
- outputValue = output.value.map((item) => {
1418
- if (item.type === "text") {
1419
- return item.text;
1417
+ outputValue = [];
1418
+ for (const item of output.value) {
1419
+ switch (item.type) {
1420
+ case "text": {
1421
+ outputValue.push({
1422
+ type: "input_text",
1423
+ text: item.text
1424
+ });
1425
+ break;
1426
+ }
1427
+ case "file": {
1428
+ if (getTopLevelMediaType2(item.mediaType) === "image" && (item.data.type === "data" || item.data.type === "url")) {
1429
+ outputValue.push({
1430
+ type: "input_image",
1431
+ image_url: item.data.type === "url" ? item.data.url.toString() : `data:${resolveFullMediaType2({ part: item })};base64,${convertToBase642(item.data.data)}`
1432
+ });
1433
+ }
1434
+ break;
1435
+ }
1436
+ case "custom": {
1437
+ break;
1438
+ }
1439
+ default: {
1440
+ const _exhaustiveCheck = item;
1441
+ }
1420
1442
  }
1421
- return "";
1422
- }).join("");
1443
+ }
1423
1444
  break;
1424
1445
  default: {
1425
1446
  const _exhaustiveCheck = output;
@@ -3477,7 +3498,7 @@ var xaiTools = {
3477
3498
  };
3478
3499
 
3479
3500
  // src/version.ts
3480
- var VERSION = true ? "4.0.15" : "0.0.0-test";
3501
+ var VERSION = true ? "4.0.16" : "0.0.0-test";
3481
3502
 
3482
3503
  // src/files/xai-files.ts
3483
3504
  import {
@@ -3585,10 +3606,12 @@ import {
3585
3606
  AISDKError
3586
3607
  } from "@ai-sdk/provider";
3587
3608
  import {
3609
+ cancelResponseBody,
3588
3610
  combineHeaders as combineHeaders5,
3589
3611
  convertUint8ArrayToBase64,
3590
3612
  createJsonResponseHandler as createJsonResponseHandler5,
3591
3613
  delay,
3614
+ extractResponseHeaders as extractResponseHeaders2,
3592
3615
  getFromApi as getFromApi2,
3593
3616
  getTopLevelMediaType as getTopLevelMediaType3,
3594
3617
  parseProviderOptions as parseProviderOptions7,
@@ -3928,9 +3951,7 @@ var XaiVideoModel = class {
3928
3951
  url: `${baseURL}/videos/${requestId}`,
3929
3952
  validateUrl: false,
3930
3953
  headers: combineHeaders5(this.config.headers(), options.headers),
3931
- successfulResponseHandler: createJsonResponseHandler5(
3932
- xaiVideoStatusResponseSchema
3933
- ),
3954
+ successfulResponseHandler: xaiVideoStatusResponseHandler,
3934
3955
  failedResponseHandler: xaiFailedResponseHandler,
3935
3956
  abortSignal: options.abortSignal,
3936
3957
  fetch: this.config.fetch
@@ -4009,6 +4030,20 @@ var xaiVideoStatusResponseSchema = z19.object({
4009
4030
  message: z19.string().nullish()
4010
4031
  }).nullish()
4011
4032
  });
4033
+ var xaiVideoStatusJsonResponseHandler = createJsonResponseHandler5(
4034
+ xaiVideoStatusResponseSchema
4035
+ );
4036
+ var xaiVideoStatusResponseHandler = async (options) => {
4037
+ if (options.response.status === 202) {
4038
+ const responseHeaders = extractResponseHeaders2(options.response);
4039
+ await cancelResponseBody(options.response);
4040
+ return {
4041
+ responseHeaders,
4042
+ value: { status: "pending" }
4043
+ };
4044
+ }
4045
+ return xaiVideoStatusJsonResponseHandler(options);
4046
+ };
4012
4047
 
4013
4048
  // src/xai-speech-model.ts
4014
4049
  import {