@ai-sdk/xai 3.0.109 → 3.0.111

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,20 @@
1
1
  # @ai-sdk/xai
2
2
 
3
+ ## 3.0.111
4
+
5
+ ### Patch Changes
6
+
7
+ - 05ce9c0: fix(provider/xai): preserve images in Responses API tool results
8
+
9
+ ## 3.0.110
10
+
11
+ ### Patch Changes
12
+
13
+ - 09ecf7b: fix(xai): handle empty HTTP 202 responses while polling videos
14
+ - Updated dependencies [19093fd]
15
+ - @ai-sdk/provider-utils@4.0.40
16
+ - @ai-sdk/openai-compatible@2.0.62
17
+
3
18
  ## 3.0.109
4
19
 
5
20
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1276,12 +1276,42 @@ async function convertToXaiResponsesInput({
1276
1276
  outputValue = JSON.stringify(output.value);
1277
1277
  break;
1278
1278
  case "content":
1279
- outputValue = output.value.map((item) => {
1280
- if (item.type === "text") {
1281
- return item.text;
1279
+ outputValue = [];
1280
+ for (const item of output.value) {
1281
+ switch (item.type) {
1282
+ case "text": {
1283
+ outputValue.push({
1284
+ type: "input_text",
1285
+ text: item.text
1286
+ });
1287
+ break;
1288
+ }
1289
+ case "image-data": {
1290
+ outputValue.push({
1291
+ type: "input_image",
1292
+ image_url: `data:${item.mediaType};base64,${item.data}`
1293
+ });
1294
+ break;
1295
+ }
1296
+ case "image-url": {
1297
+ outputValue.push({
1298
+ type: "input_image",
1299
+ image_url: item.url
1300
+ });
1301
+ break;
1302
+ }
1303
+ case "file-data":
1304
+ case "file-url":
1305
+ case "file-id":
1306
+ case "image-file-id":
1307
+ case "custom": {
1308
+ break;
1309
+ }
1310
+ default: {
1311
+ const _exhaustiveCheck = item;
1312
+ }
1282
1313
  }
1283
- return "";
1284
- }).join("");
1314
+ }
1285
1315
  break;
1286
1316
  default: {
1287
1317
  const _exhaustiveCheck = output;
@@ -2891,7 +2921,7 @@ var xaiTools = {
2891
2921
  };
2892
2922
 
2893
2923
  // src/version.ts
2894
- var VERSION = true ? "3.0.109" : "0.0.0-test";
2924
+ var VERSION = true ? "3.0.111" : "0.0.0-test";
2895
2925
 
2896
2926
  // src/xai-video-model.ts
2897
2927
  var import_provider6 = require("@ai-sdk/provider");
@@ -3233,9 +3263,7 @@ var XaiVideoModel = class {
3233
3263
  const { value: statusResponse, responseHeaders: pollHeaders } = await (0, import_provider_utils16.getFromApi)({
3234
3264
  url: `${baseURL}/videos/${requestId}`,
3235
3265
  headers: (0, import_provider_utils16.combineHeaders)(this.config.headers(), options.headers),
3236
- successfulResponseHandler: (0, import_provider_utils16.createJsonResponseHandler)(
3237
- xaiVideoStatusResponseSchema
3238
- ),
3266
+ successfulResponseHandler: xaiVideoStatusResponseHandler,
3239
3267
  failedResponseHandler: xaiFailedResponseHandler,
3240
3268
  abortSignal: options.abortSignal,
3241
3269
  fetch: this.config.fetch
@@ -3314,6 +3342,20 @@ var xaiVideoStatusResponseSchema = import_v417.z.object({
3314
3342
  message: import_v417.z.string().nullish()
3315
3343
  }).nullish()
3316
3344
  });
3345
+ var xaiVideoStatusJsonResponseHandler = (0, import_provider_utils16.createJsonResponseHandler)(
3346
+ xaiVideoStatusResponseSchema
3347
+ );
3348
+ var xaiVideoStatusResponseHandler = async (options) => {
3349
+ if (options.response.status === 202) {
3350
+ const responseHeaders = (0, import_provider_utils16.extractResponseHeaders)(options.response);
3351
+ await (0, import_provider_utils16.cancelResponseBody)(options.response);
3352
+ return {
3353
+ responseHeaders,
3354
+ value: { status: "pending" }
3355
+ };
3356
+ }
3357
+ return xaiVideoStatusJsonResponseHandler(options);
3358
+ };
3317
3359
 
3318
3360
  // src/xai-provider.ts
3319
3361
  function createXai(options = {}) {