@ai-sdk/xai 4.0.53 → 4.0.54

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,11 @@
1
1
  # @ai-sdk/xai
2
2
 
3
+ ## 4.0.54
4
+
5
+ ### Patch Changes
6
+
7
+ - 048ce06: feat(batch): surface the uploaded input file on the batch start result (`providerMetadata.<provider>.inputFileId` / `inputFileExpiresAt`) and accept an `inputFileExpiresAfter` provider option on the OpenAI and xAI batch input file upload
8
+
3
9
  ## 4.0.53
4
10
 
5
11
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1251,6 +1251,7 @@ import {
1251
1251
  getFromApi as getFromApi2,
1252
1252
  lazySchema as lazySchema7,
1253
1253
  normalizeBatchRequestCounts,
1254
+ parseProviderOptions as parseProviderOptions6,
1254
1255
  postFormDataToApi,
1255
1256
  postJsonToApi as postJsonToApi4,
1256
1257
  safeValidateTypes,
@@ -3510,6 +3511,18 @@ function mapWebSearchAction(action) {
3510
3511
  var xaiBatchEndpoint = "/v1/responses";
3511
3512
  var xaiBatchName = "ai-sdk-text-batch";
3512
3513
  var xaiBatchResultsPageSize = 1e3;
3514
+ var xaiBatchProviderOptionsSchema = lazySchema7(
3515
+ () => zodSchema7(
3516
+ z15.object({
3517
+ /**
3518
+ * TTL in seconds for the uploaded batch input file, measured from
3519
+ * upload time. xAI accepts integers between 3600 (1 hour) and
3520
+ * 2592000 (30 days) inclusive. Without it the file has no expiry.
3521
+ */
3522
+ inputFileExpiresAfter: z15.number().int().min(3600).max(2592e3).optional()
3523
+ })
3524
+ )
3525
+ );
3513
3526
  var xaiBatchResponseSchema = lazySchema7(
3514
3527
  () => zodSchema7(
3515
3528
  z15.object({
@@ -3567,6 +3580,11 @@ var XaiResponsesBatch = class {
3567
3580
  }
3568
3581
  }
3569
3582
  ];
3583
+ const batchOptions = await parseProviderOptions6({
3584
+ provider: "xai",
3585
+ providerOptions: options.providerOptions,
3586
+ schema: xaiBatchProviderOptionsSchema
3587
+ });
3570
3588
  for (const request of options.requests) {
3571
3589
  const preparedRequest = await this.options.prepareRequest(request);
3572
3590
  fileParts.push(
@@ -3586,6 +3604,12 @@ var XaiResponsesBatch = class {
3586
3604
  const file = new Blob(fileParts, { type: "application/jsonl" });
3587
3605
  fileParts.length = 0;
3588
3606
  const formData = new FormData();
3607
+ if ((batchOptions == null ? void 0 : batchOptions.inputFileExpiresAfter) != null) {
3608
+ formData.append(
3609
+ "expires_after",
3610
+ String(batchOptions.inputFileExpiresAfter)
3611
+ );
3612
+ }
3589
3613
  formData.append("file", file, filename);
3590
3614
  const headers = combineHeaders4(
3591
3615
  (_b = (_a = this.options.config).headers) == null ? void 0 : _b.call(_a),
@@ -3619,6 +3643,16 @@ var XaiResponsesBatch = class {
3619
3643
  return {
3620
3644
  batchId: batch.batch_id,
3621
3645
  ...convertXaiBatchStatus(batch),
3646
+ providerMetadata: {
3647
+ xai: {
3648
+ inputFileId: uploadedFile.id,
3649
+ ...uploadedFile.expires_at != null ? {
3650
+ inputFileExpiresAt: new Date(
3651
+ uploadedFile.expires_at * 1e3
3652
+ ).toISOString()
3653
+ } : {}
3654
+ }
3655
+ },
3622
3656
  warnings
3623
3657
  };
3624
3658
  }
@@ -4329,7 +4363,7 @@ var xaiTools = {
4329
4363
  };
4330
4364
 
4331
4365
  // src/version.ts
4332
- var VERSION = true ? "4.0.53" : "0.0.0-test";
4366
+ var VERSION = true ? "4.0.54" : "0.0.0-test";
4333
4367
 
4334
4368
  // src/files/xai-files.ts
4335
4369
  import {
@@ -4342,7 +4376,7 @@ import {
4342
4376
  createJsonResponseHandler as createJsonResponseHandler5,
4343
4377
  deleteFromApi,
4344
4378
  getFromApi as getFromApi3,
4345
- parseProviderOptions as parseProviderOptions6,
4379
+ parseProviderOptions as parseProviderOptions7,
4346
4380
  postFormDataToApi as postFormDataToApi2,
4347
4381
  postMultipartStreamToApi
4348
4382
  } from "@ai-sdk/provider-utils";
@@ -4405,7 +4439,7 @@ var XaiFiles = class {
4405
4439
  var _a, _b;
4406
4440
  let xaiOptions;
4407
4441
  try {
4408
- xaiOptions = await parseProviderOptions6({
4442
+ xaiOptions = await parseProviderOptions7({
4409
4443
  provider: "xai",
4410
4444
  providerOptions,
4411
4445
  schema: xaiFilesOptionsSchema
@@ -4594,7 +4628,7 @@ import {
4594
4628
  extractResponseHeaders as extractResponseHeaders2,
4595
4629
  getFromApi as getFromApi4,
4596
4630
  getTopLevelMediaType as getTopLevelMediaType3,
4597
- parseProviderOptions as parseProviderOptions7,
4631
+ parseProviderOptions as parseProviderOptions8,
4598
4632
  postJsonToApi as postJsonToApi5,
4599
4633
  safeParseJSON as safeParseJSON2
4600
4634
  } from "@ai-sdk/provider-utils";
@@ -4706,7 +4740,7 @@ var XaiVideoModel = class {
4706
4740
  }
4707
4741
  async buildRequestBody(options) {
4708
4742
  const warnings = [];
4709
- const xaiOptions = await parseProviderOptions7({
4743
+ const xaiOptions = await parseProviderOptions8({
4710
4744
  provider: "xai",
4711
4745
  providerOptions: options.providerOptions,
4712
4746
  schema: xaiVideoModelOptionsSchema
@@ -5126,7 +5160,7 @@ import {
5126
5160
  convertBase64ToUint8Array,
5127
5161
  createBinaryResponseHandler as createBinaryResponseHandler2,
5128
5162
  createJsonResponseHandler as createJsonResponseHandler7,
5129
- parseProviderOptions as parseProviderOptions8,
5163
+ parseProviderOptions as parseProviderOptions9,
5130
5164
  postJsonToApi as postJsonToApi6,
5131
5165
  resolve,
5132
5166
  serializeModelOptions as serializeModelOptions4,
@@ -5218,7 +5252,7 @@ var XaiSpeechModel = class _XaiSpeechModel {
5218
5252
  providerOptions
5219
5253
  }) {
5220
5254
  const warnings = [];
5221
- const xaiOptions = await parseProviderOptions8({
5255
+ const xaiOptions = await parseProviderOptions9({
5222
5256
  provider: "xai",
5223
5257
  providerOptions,
5224
5258
  schema: xaiSpeechModelOptionsSchema
@@ -5347,7 +5381,7 @@ import {
5347
5381
  createJsonResponseHandler as createJsonResponseHandler8,
5348
5382
  connectToWebSocket,
5349
5383
  mediaTypeToExtension,
5350
- parseProviderOptions as parseProviderOptions9,
5384
+ parseProviderOptions as parseProviderOptions10,
5351
5385
  postFormDataToApi as postFormDataToApi3,
5352
5386
  safeParseJSON as safeParseJSON3,
5353
5387
  serializeModelOptions as serializeModelOptions5,
@@ -5460,7 +5494,7 @@ var XaiTranscriptionModel = class _XaiTranscriptionModel {
5460
5494
  providerOptions
5461
5495
  }) {
5462
5496
  const warnings = [];
5463
- const xaiOptions = await parseProviderOptions9({
5497
+ const xaiOptions = await parseProviderOptions10({
5464
5498
  provider: "xai",
5465
5499
  providerOptions,
5466
5500
  schema: xaiTranscriptionModelOptionsSchema
@@ -5537,7 +5571,7 @@ var XaiTranscriptionModel = class _XaiTranscriptionModel {
5537
5571
  var _a, _b, _c, _d, _e, _f, _g;
5538
5572
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
5539
5573
  const warnings = [];
5540
- const xaiOptions = await parseProviderOptions9({
5574
+ const xaiOptions = await parseProviderOptions10({
5541
5575
  provider: "xai",
5542
5576
  providerOptions: options.providerOptions,
5543
5577
  schema: xaiTranscriptionModelOptionsSchema