@ai-sdk/mistral 3.0.61 → 3.0.63

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/mistral
2
2
 
3
+ ## 3.0.63
4
+
5
+ ### Patch Changes
6
+
7
+ - ddad58b: Preserve complete Mistral chat usage objects in raw usage metadata.
8
+ - Updated dependencies [cc23556]
9
+ - @ai-sdk/provider-utils@4.0.50
10
+
11
+ ## 3.0.62
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [9a521b9]
16
+ - @ai-sdk/provider-utils@4.0.49
17
+
3
18
  ## 3.0.61
4
19
 
5
20
  ### Patch Changes
package/dist/index.js CHANGED
@@ -33,9 +33,30 @@ var import_provider_utils6 = require("@ai-sdk/provider-utils");
33
33
  // src/mistral-chat-language-model.ts
34
34
  var import_provider3 = require("@ai-sdk/provider");
35
35
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
36
- var import_v43 = require("zod/v4");
36
+ var import_v44 = require("zod/v4");
37
37
 
38
38
  // src/convert-mistral-usage.ts
39
+ var import_v4 = require("zod/v4");
40
+ var mistralPromptTokensDetailsSchema = import_v4.z.object({
41
+ messages: import_v4.z.array(import_v4.z.json()).nullish(),
42
+ cached_tokens: import_v4.z.number().nullish(),
43
+ audio_tokens: import_v4.z.number().nullish()
44
+ }).catchall(import_v4.z.json());
45
+ var mistralCompletionTokensDetailsSchema = import_v4.z.object({
46
+ reasoning_tokens: import_v4.z.number().nullish()
47
+ }).catchall(import_v4.z.json());
48
+ var mistralUsageSchema = import_v4.z.object({
49
+ prompt_tokens: import_v4.z.number(),
50
+ completion_tokens: import_v4.z.number(),
51
+ total_tokens: import_v4.z.number(),
52
+ prompt_audio_seconds: import_v4.z.number().nullish(),
53
+ request_count: import_v4.z.number().nullish(),
54
+ service_tier: import_v4.z.string().nullish(),
55
+ num_cached_tokens: import_v4.z.number().nullish(),
56
+ prompt_tokens_details: mistralPromptTokensDetailsSchema.nullish(),
57
+ prompt_token_details: mistralPromptTokensDetailsSchema.nullish(),
58
+ completion_tokens_details: mistralCompletionTokensDetailsSchema.nullish()
59
+ }).catchall(import_v4.z.json());
39
60
  function convertMistralUsage(usage) {
40
61
  var _a, _b, _c, _d, _e;
41
62
  if (usage == null) {
@@ -242,53 +263,53 @@ function mapMistralFinishReason(finishReason) {
242
263
  }
243
264
 
244
265
  // src/mistral-chat-options.ts
245
- var import_v4 = require("zod/v4");
246
- var mistralLanguageModelOptions = import_v4.z.object({
266
+ var import_v42 = require("zod/v4");
267
+ var mistralLanguageModelOptions = import_v42.z.object({
247
268
  /**
248
269
  * Whether to inject a safety prompt before all conversations.
249
270
  *
250
271
  * Defaults to `false`.
251
272
  */
252
- safePrompt: import_v4.z.boolean().optional(),
253
- documentImageLimit: import_v4.z.number().optional(),
254
- documentPageLimit: import_v4.z.number().optional(),
273
+ safePrompt: import_v42.z.boolean().optional(),
274
+ documentImageLimit: import_v42.z.number().optional(),
275
+ documentPageLimit: import_v42.z.number().optional(),
255
276
  /**
256
277
  * Whether to use structured outputs.
257
278
  *
258
279
  * @default true
259
280
  */
260
- structuredOutputs: import_v4.z.boolean().optional(),
281
+ structuredOutputs: import_v42.z.boolean().optional(),
261
282
  /**
262
283
  * Whether to use strict JSON schema validation.
263
284
  *
264
285
  * @default false
265
286
  */
266
- strictJsonSchema: import_v4.z.boolean().optional(),
287
+ strictJsonSchema: import_v42.z.boolean().optional(),
267
288
  /**
268
289
  * Whether to enable parallel function calling during tool use.
269
290
  * When set to false, the model will use at most one tool per response.
270
291
  *
271
292
  * @default true
272
293
  */
273
- parallelToolCalls: import_v4.z.boolean().optional(),
294
+ parallelToolCalls: import_v42.z.boolean().optional(),
274
295
  /**
275
296
  * Controls the reasoning effort for models that support adjustable reasoning.
276
297
  *
277
298
  * - `'high'`: Enable reasoning
278
299
  * - `'none'`: Disable reasoning
279
300
  */
280
- reasoningEffort: import_v4.z.enum(["high", "none"]).optional()
301
+ reasoningEffort: import_v42.z.enum(["high", "none"]).optional()
281
302
  });
282
303
 
283
304
  // src/mistral-error.ts
284
305
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
285
- var import_v42 = require("zod/v4");
286
- var mistralErrorDataSchema = import_v42.z.object({
287
- object: import_v42.z.literal("error"),
288
- message: import_v42.z.string(),
289
- type: import_v42.z.string(),
290
- param: import_v42.z.string().nullable(),
291
- code: import_v42.z.string().nullable()
306
+ var import_v43 = require("zod/v4");
307
+ var mistralErrorDataSchema = import_v43.z.object({
308
+ object: import_v43.z.literal("error"),
309
+ message: import_v43.z.string(),
310
+ type: import_v43.z.string(),
311
+ param: import_v43.z.string().nullable(),
312
+ code: import_v43.z.string().nullable()
292
313
  });
293
314
  var mistralFailedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)({
294
315
  errorSchema: mistralErrorDataSchema,
@@ -737,93 +758,85 @@ function extractTextContent(content) {
737
758
  }
738
759
  return textContent.length ? textContent.join("") : void 0;
739
760
  }
740
- var mistralContentSchema = import_v43.z.union([
741
- import_v43.z.string(),
742
- import_v43.z.array(
743
- import_v43.z.discriminatedUnion("type", [
744
- import_v43.z.object({
745
- type: import_v43.z.literal("text"),
746
- text: import_v43.z.string()
761
+ var mistralContentSchema = import_v44.z.union([
762
+ import_v44.z.string(),
763
+ import_v44.z.array(
764
+ import_v44.z.discriminatedUnion("type", [
765
+ import_v44.z.object({
766
+ type: import_v44.z.literal("text"),
767
+ text: import_v44.z.string()
747
768
  }),
748
- import_v43.z.object({
749
- type: import_v43.z.literal("image_url"),
750
- image_url: import_v43.z.union([
751
- import_v43.z.string(),
752
- import_v43.z.object({
753
- url: import_v43.z.string(),
754
- detail: import_v43.z.string().nullable()
769
+ import_v44.z.object({
770
+ type: import_v44.z.literal("image_url"),
771
+ image_url: import_v44.z.union([
772
+ import_v44.z.string(),
773
+ import_v44.z.object({
774
+ url: import_v44.z.string(),
775
+ detail: import_v44.z.string().nullable()
755
776
  })
756
777
  ])
757
778
  }),
758
- import_v43.z.object({
759
- type: import_v43.z.literal("reference"),
760
- reference_ids: import_v43.z.array(import_v43.z.union([import_v43.z.string(), import_v43.z.number()]))
779
+ import_v44.z.object({
780
+ type: import_v44.z.literal("reference"),
781
+ reference_ids: import_v44.z.array(import_v44.z.union([import_v44.z.string(), import_v44.z.number()]))
761
782
  }),
762
- import_v43.z.object({
763
- type: import_v43.z.literal("thinking"),
764
- thinking: import_v43.z.array(
765
- import_v43.z.object({
766
- type: import_v43.z.literal("text"),
767
- text: import_v43.z.string()
783
+ import_v44.z.object({
784
+ type: import_v44.z.literal("thinking"),
785
+ thinking: import_v44.z.array(
786
+ import_v44.z.object({
787
+ type: import_v44.z.literal("text"),
788
+ text: import_v44.z.string()
768
789
  })
769
790
  )
770
791
  })
771
792
  ])
772
793
  )
773
794
  ]).nullish();
774
- var mistralUsageSchema = import_v43.z.object({
775
- prompt_tokens: import_v43.z.number(),
776
- completion_tokens: import_v43.z.number(),
777
- total_tokens: import_v43.z.number(),
778
- num_cached_tokens: import_v43.z.number().nullish(),
779
- prompt_tokens_details: import_v43.z.object({ cached_tokens: import_v43.z.number().nullish() }).nullish(),
780
- prompt_token_details: import_v43.z.object({ cached_tokens: import_v43.z.number().nullish() }).nullish()
781
- });
782
- var mistralChatResponseSchema = import_v43.z.object({
783
- id: import_v43.z.string().nullish(),
784
- created: import_v43.z.number().nullish(),
785
- model: import_v43.z.string().nullish(),
786
- choices: import_v43.z.array(
787
- import_v43.z.object({
788
- message: import_v43.z.object({
789
- role: import_v43.z.literal("assistant"),
795
+ var mistralChatResponseSchema = import_v44.z.object({
796
+ id: import_v44.z.string().nullish(),
797
+ created: import_v44.z.number().nullish(),
798
+ model: import_v44.z.string().nullish(),
799
+ choices: import_v44.z.array(
800
+ import_v44.z.object({
801
+ message: import_v44.z.object({
802
+ role: import_v44.z.literal("assistant"),
790
803
  content: mistralContentSchema,
791
- tool_calls: import_v43.z.array(
792
- import_v43.z.object({
793
- id: import_v43.z.string(),
794
- function: import_v43.z.object({ name: import_v43.z.string(), arguments: import_v43.z.string() })
804
+ tool_calls: import_v44.z.array(
805
+ import_v44.z.object({
806
+ id: import_v44.z.string(),
807
+ function: import_v44.z.object({ name: import_v44.z.string(), arguments: import_v44.z.string() })
795
808
  })
796
809
  ).nullish()
797
810
  }),
798
- index: import_v43.z.number(),
799
- finish_reason: import_v43.z.string().nullish()
811
+ index: import_v44.z.number(),
812
+ finish_reason: import_v44.z.string().nullish()
800
813
  })
801
814
  ),
802
- object: import_v43.z.literal("chat.completion"),
815
+ object: import_v44.z.literal("chat.completion"),
803
816
  usage: mistralUsageSchema
804
817
  });
805
- var mistralChatChunkSchema = import_v43.z.object({
806
- id: import_v43.z.string().nullish(),
807
- created: import_v43.z.number().nullish(),
808
- model: import_v43.z.string().nullish(),
809
- choices: import_v43.z.array(
810
- import_v43.z.object({
811
- delta: import_v43.z.object({
812
- role: import_v43.z.enum(["assistant"]).optional(),
818
+ var mistralChatChunkSchema = import_v44.z.object({
819
+ id: import_v44.z.string().nullish(),
820
+ created: import_v44.z.number().nullish(),
821
+ model: import_v44.z.string().nullish(),
822
+ choices: import_v44.z.array(
823
+ import_v44.z.object({
824
+ delta: import_v44.z.object({
825
+ role: import_v44.z.enum(["assistant"]).optional(),
813
826
  content: mistralContentSchema,
814
- tool_calls: import_v43.z.array(
815
- import_v43.z.object({
816
- index: import_v43.z.number().nullish(),
817
- id: import_v43.z.string().nullish(),
818
- function: import_v43.z.object({
819
- name: import_v43.z.string().nullish(),
820
- arguments: import_v43.z.string().nullish()
827
+ tool_calls: import_v44.z.array(
828
+ import_v44.z.object({
829
+ index: import_v44.z.number().nullish(),
830
+ id: import_v44.z.string().nullish(),
831
+ function: import_v44.z.object({
832
+ name: import_v44.z.string().nullish(),
833
+ arguments: import_v44.z.string().nullish()
821
834
  })
822
835
  })
823
836
  ).nullish()
824
837
  }),
825
- finish_reason: import_v43.z.string().nullish(),
826
- index: import_v43.z.number()
838
+ finish_reason: import_v44.z.string().nullish(),
839
+ index: import_v44.z.number()
827
840
  })
828
841
  ),
829
842
  usage: mistralUsageSchema.nullish()
@@ -832,7 +845,7 @@ var mistralChatChunkSchema = import_v43.z.object({
832
845
  // src/mistral-embedding-model.ts
833
846
  var import_provider4 = require("@ai-sdk/provider");
834
847
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
835
- var import_v44 = require("zod/v4");
848
+ var import_v45 = require("zod/v4");
836
849
  var MistralEmbeddingModel = class {
837
850
  constructor(modelId, config) {
838
851
  this.specificationVersion = "v3";
@@ -884,24 +897,24 @@ var MistralEmbeddingModel = class {
884
897
  };
885
898
  }
886
899
  };
887
- var MistralTextEmbeddingResponseSchema = import_v44.z.object({
888
- data: import_v44.z.array(import_v44.z.object({ embedding: import_v44.z.array(import_v44.z.number()) })),
889
- usage: import_v44.z.object({ prompt_tokens: import_v44.z.number() }).nullish()
900
+ var MistralTextEmbeddingResponseSchema = import_v45.z.object({
901
+ data: import_v45.z.array(import_v45.z.object({ embedding: import_v45.z.array(import_v45.z.number()) })),
902
+ usage: import_v45.z.object({ prompt_tokens: import_v45.z.number() }).nullish()
890
903
  });
891
904
 
892
905
  // src/mistral-speech-model.ts
893
906
  var import_provider_utils5 = require("@ai-sdk/provider-utils");
894
- var import_v46 = require("zod/v4");
907
+ var import_v47 = require("zod/v4");
895
908
 
896
909
  // src/mistral-speech-model-options.ts
897
- var import_v45 = require("zod/v4");
898
- var mistralSpeechModelOptions = import_v45.z.object({
910
+ var import_v46 = require("zod/v4");
911
+ var mistralSpeechModelOptions = import_v46.z.object({
899
912
  /**
900
913
  * Base64-encoded reference audio for one-off voice cloning.
901
914
  *
902
915
  * When provided, this takes precedence over the standard `voice` option.
903
916
  */
904
- refAudio: import_v45.z.string().min(1).optional()
917
+ refAudio: import_v46.z.string().min(1).optional()
905
918
  });
906
919
 
907
920
  // src/mistral-speech-model.ts
@@ -1016,12 +1029,12 @@ var MistralSpeechModel = class {
1016
1029
  };
1017
1030
  }
1018
1031
  };
1019
- var mistralSpeechResponseSchema = import_v46.z.object({
1020
- audio_data: import_v46.z.string()
1032
+ var mistralSpeechResponseSchema = import_v47.z.object({
1033
+ audio_data: import_v47.z.string()
1021
1034
  });
1022
1035
 
1023
1036
  // src/version.ts
1024
- var VERSION = true ? "3.0.61" : "0.0.0-test";
1037
+ var VERSION = true ? "3.0.63" : "0.0.0-test";
1025
1038
 
1026
1039
  // src/mistral-provider.ts
1027
1040
  function createMistral(options = {}) {