@ai-sdk/mistral 3.0.74 → 3.0.76

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.76
4
+
5
+ ### Patch Changes
6
+
7
+ - fa49238: Add Voxtral 3 speech model IDs and support speech expressiveness and pronunciation hints in the Mistral provider.
8
+
9
+ ## 3.0.75
10
+
11
+ ### Patch Changes
12
+
13
+ - 640a118: Defer validation schema construction until first use to reduce provider import time.
14
+ - Updated dependencies [1183cc4]
15
+ - Updated dependencies [d726591]
16
+ - @ai-sdk/provider-utils@4.0.62
17
+
3
18
  ## 3.0.74
4
19
 
5
20
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,29 +1,28 @@
1
1
  import { ProviderV3, LanguageModelV3, EmbeddingModelV3, SpeechModelV3 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { z } from 'zod/v4';
2
+ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
+ import { InferSchema, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
5
  type MistralChatModelId = 'ministral-3b-latest' | 'ministral-8b-latest' | 'ministral-14b-latest' | 'mistral-large-latest' | 'mistral-medium-latest' | 'mistral-medium-3' | 'mistral-large-2512' | 'mistral-medium-2508' | 'mistral-medium-2505' | 'mistral-small-2506' | 'pixtral-large-latest' | 'mistral-medium-3.5' | 'mistral-small-latest' | 'mistral-small-2603' | 'magistral-medium-latest' | 'magistral-small-latest' | 'magistral-medium-2509' | 'magistral-small-2509' | (string & {});
6
- declare const mistralLanguageModelOptions: z.ZodObject<{
7
- safePrompt: z.ZodOptional<z.ZodBoolean>;
8
- documentImageLimit: z.ZodOptional<z.ZodNumber>;
9
- documentPageLimit: z.ZodOptional<z.ZodNumber>;
10
- structuredOutputs: z.ZodOptional<z.ZodBoolean>;
11
- strictJsonSchema: z.ZodOptional<z.ZodBoolean>;
12
- parallelToolCalls: z.ZodOptional<z.ZodBoolean>;
13
- reasoningEffort: z.ZodOptional<z.ZodEnum<{
14
- none: "none";
15
- high: "high";
16
- }>>;
17
- }, z.core.$strip>;
18
- type MistralLanguageModelOptions = z.infer<typeof mistralLanguageModelOptions>;
6
+ declare const mistralLanguageModelOptions: _ai_sdk_provider_utils.LazySchema<{
7
+ safePrompt?: boolean | undefined;
8
+ documentImageLimit?: number | undefined;
9
+ documentPageLimit?: number | undefined;
10
+ structuredOutputs?: boolean | undefined;
11
+ strictJsonSchema?: boolean | undefined;
12
+ parallelToolCalls?: boolean | undefined;
13
+ reasoningEffort?: "none" | "high" | undefined;
14
+ }>;
15
+ type MistralLanguageModelOptions = InferSchema<typeof mistralLanguageModelOptions>;
19
16
 
20
17
  type MistralEmbeddingModelId = 'mistral-embed' | (string & {});
21
18
 
22
- type MistralSpeechModelId = 'voxtral-mini-tts-2603' | (string & {});
23
- declare const mistralSpeechModelOptions: z.ZodObject<{
24
- refAudio: z.ZodOptional<z.ZodString>;
25
- }, z.core.$strip>;
26
- type MistralSpeechModelOptions = z.infer<typeof mistralSpeechModelOptions>;
19
+ type MistralSpeechModelId = 'voxtral-mini-tts-2603' | 'voxtral-mini-tts-3-0' | 'voxtral-mini-tts-3' | 'voxtral-mini-tts-latest' | (string & {});
20
+ declare const mistralSpeechModelOptions: _ai_sdk_provider_utils.LazySchema<{
21
+ refAudio?: string | undefined;
22
+ expressiveness?: number | undefined;
23
+ phonemeHints?: Record<string, string[]> | undefined;
24
+ }>;
25
+ type MistralSpeechModelOptions = InferSchema<typeof mistralSpeechModelOptions>;
27
26
 
28
27
  interface MistralProvider extends ProviderV3 {
29
28
  (modelId: MistralChatModelId): LanguageModelV3;
package/dist/index.d.ts CHANGED
@@ -1,29 +1,28 @@
1
1
  import { ProviderV3, LanguageModelV3, EmbeddingModelV3, SpeechModelV3 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { z } from 'zod/v4';
2
+ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
+ import { InferSchema, FetchFunction } from '@ai-sdk/provider-utils';
4
4
 
5
5
  type MistralChatModelId = 'ministral-3b-latest' | 'ministral-8b-latest' | 'ministral-14b-latest' | 'mistral-large-latest' | 'mistral-medium-latest' | 'mistral-medium-3' | 'mistral-large-2512' | 'mistral-medium-2508' | 'mistral-medium-2505' | 'mistral-small-2506' | 'pixtral-large-latest' | 'mistral-medium-3.5' | 'mistral-small-latest' | 'mistral-small-2603' | 'magistral-medium-latest' | 'magistral-small-latest' | 'magistral-medium-2509' | 'magistral-small-2509' | (string & {});
6
- declare const mistralLanguageModelOptions: z.ZodObject<{
7
- safePrompt: z.ZodOptional<z.ZodBoolean>;
8
- documentImageLimit: z.ZodOptional<z.ZodNumber>;
9
- documentPageLimit: z.ZodOptional<z.ZodNumber>;
10
- structuredOutputs: z.ZodOptional<z.ZodBoolean>;
11
- strictJsonSchema: z.ZodOptional<z.ZodBoolean>;
12
- parallelToolCalls: z.ZodOptional<z.ZodBoolean>;
13
- reasoningEffort: z.ZodOptional<z.ZodEnum<{
14
- none: "none";
15
- high: "high";
16
- }>>;
17
- }, z.core.$strip>;
18
- type MistralLanguageModelOptions = z.infer<typeof mistralLanguageModelOptions>;
6
+ declare const mistralLanguageModelOptions: _ai_sdk_provider_utils.LazySchema<{
7
+ safePrompt?: boolean | undefined;
8
+ documentImageLimit?: number | undefined;
9
+ documentPageLimit?: number | undefined;
10
+ structuredOutputs?: boolean | undefined;
11
+ strictJsonSchema?: boolean | undefined;
12
+ parallelToolCalls?: boolean | undefined;
13
+ reasoningEffort?: "none" | "high" | undefined;
14
+ }>;
15
+ type MistralLanguageModelOptions = InferSchema<typeof mistralLanguageModelOptions>;
19
16
 
20
17
  type MistralEmbeddingModelId = 'mistral-embed' | (string & {});
21
18
 
22
- type MistralSpeechModelId = 'voxtral-mini-tts-2603' | (string & {});
23
- declare const mistralSpeechModelOptions: z.ZodObject<{
24
- refAudio: z.ZodOptional<z.ZodString>;
25
- }, z.core.$strip>;
26
- type MistralSpeechModelOptions = z.infer<typeof mistralSpeechModelOptions>;
19
+ type MistralSpeechModelId = 'voxtral-mini-tts-2603' | 'voxtral-mini-tts-3-0' | 'voxtral-mini-tts-3' | 'voxtral-mini-tts-latest' | (string & {});
20
+ declare const mistralSpeechModelOptions: _ai_sdk_provider_utils.LazySchema<{
21
+ refAudio?: string | undefined;
22
+ expressiveness?: number | undefined;
23
+ phonemeHints?: Record<string, string[]> | undefined;
24
+ }>;
25
+ type MistralSpeechModelOptions = InferSchema<typeof mistralSpeechModelOptions>;
27
26
 
28
27
  interface MistralProvider extends ProviderV3 {
29
28
  (modelId: MistralChatModelId): LanguageModelV3;
package/dist/index.js CHANGED
@@ -28,11 +28,11 @@ module.exports = __toCommonJS(index_exports);
28
28
 
29
29
  // src/mistral-provider.ts
30
30
  var import_provider5 = require("@ai-sdk/provider");
31
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
31
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
32
32
 
33
33
  // src/mistral-chat-language-model.ts
34
34
  var import_provider3 = require("@ai-sdk/provider");
35
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
35
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
36
36
  var import_v44 = require("zod/v4");
37
37
 
38
38
  // src/convert-mistral-usage.ts
@@ -263,55 +263,64 @@ function mapMistralFinishReason(finishReason) {
263
263
  }
264
264
 
265
265
  // src/mistral-chat-options.ts
266
+ var import_provider_utils2 = require("@ai-sdk/provider-utils");
266
267
  var import_v42 = require("zod/v4");
267
- var mistralLanguageModelOptions = import_v42.z.object({
268
- /**
269
- * Whether to inject a safety prompt before all conversations.
270
- *
271
- * Defaults to `false`.
272
- */
273
- safePrompt: import_v42.z.boolean().optional(),
274
- documentImageLimit: import_v42.z.number().optional(),
275
- documentPageLimit: import_v42.z.number().optional(),
276
- /**
277
- * Whether to use structured outputs.
278
- *
279
- * @default true
280
- */
281
- structuredOutputs: import_v42.z.boolean().optional(),
282
- /**
283
- * Whether to use strict JSON schema validation.
284
- *
285
- * @default false
286
- */
287
- strictJsonSchema: import_v42.z.boolean().optional(),
288
- /**
289
- * Whether to enable parallel function calling during tool use.
290
- * When set to false, the model will use at most one tool per response.
291
- *
292
- * @default true
293
- */
294
- parallelToolCalls: import_v42.z.boolean().optional(),
295
- /**
296
- * Controls the reasoning effort for models that support adjustable reasoning.
297
- *
298
- * - `'high'`: Enable reasoning
299
- * - `'none'`: Disable reasoning
300
- */
301
- reasoningEffort: import_v42.z.enum(["high", "none"]).optional()
302
- });
268
+ var mistralLanguageModelOptions = (0, import_provider_utils2.lazySchema)(
269
+ () => (0, import_provider_utils2.zodSchema)(
270
+ import_v42.z.object({
271
+ /**
272
+ * Whether to inject a safety prompt before all conversations.
273
+ *
274
+ * Defaults to `false`.
275
+ */
276
+ safePrompt: import_v42.z.boolean().optional(),
277
+ documentImageLimit: import_v42.z.number().optional(),
278
+ documentPageLimit: import_v42.z.number().optional(),
279
+ /**
280
+ * Whether to use structured outputs.
281
+ *
282
+ * @default true
283
+ */
284
+ structuredOutputs: import_v42.z.boolean().optional(),
285
+ /**
286
+ * Whether to use strict JSON schema validation.
287
+ *
288
+ * @default false
289
+ */
290
+ strictJsonSchema: import_v42.z.boolean().optional(),
291
+ /**
292
+ * Whether to enable parallel function calling during tool use.
293
+ * When set to false, the model will use at most one tool per response.
294
+ *
295
+ * @default true
296
+ */
297
+ parallelToolCalls: import_v42.z.boolean().optional(),
298
+ /**
299
+ * Controls the reasoning effort for models that support adjustable reasoning.
300
+ *
301
+ * - `'high'`: Enable reasoning
302
+ * - `'none'`: Disable reasoning
303
+ */
304
+ reasoningEffort: import_v42.z.enum(["high", "none"]).optional()
305
+ })
306
+ )
307
+ );
303
308
 
304
309
  // src/mistral-error.ts
305
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
310
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
306
311
  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()
313
- });
314
- var mistralFailedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)({
312
+ var mistralErrorDataSchema = (0, import_provider_utils3.lazySchema)(
313
+ () => (0, import_provider_utils3.zodSchema)(
314
+ import_v43.z.object({
315
+ object: import_v43.z.literal("error"),
316
+ message: import_v43.z.string(),
317
+ type: import_v43.z.string(),
318
+ param: import_v43.z.string().nullable(),
319
+ code: import_v43.z.string().nullable()
320
+ })
321
+ )
322
+ );
323
+ var mistralFailedResponseHandler = (0, import_provider_utils3.createJsonErrorResponseHandler)({
315
324
  errorSchema: mistralErrorDataSchema,
316
325
  errorToMessage: (data) => data.message
317
326
  });
@@ -385,7 +394,7 @@ var MistralChatLanguageModel = class {
385
394
  var _a;
386
395
  this.modelId = modelId;
387
396
  this.config = config;
388
- this.generateId = (_a = config.generateId) != null ? _a : import_provider_utils3.generateId;
397
+ this.generateId = (_a = config.generateId) != null ? _a : import_provider_utils4.generateId;
389
398
  }
390
399
  get provider() {
391
400
  return this.config.provider;
@@ -407,7 +416,7 @@ var MistralChatLanguageModel = class {
407
416
  }) {
408
417
  var _a, _b, _c, _d;
409
418
  const warnings = [];
410
- const options = (_a = await (0, import_provider_utils3.parseProviderOptions)({
419
+ const options = (_a = await (0, import_provider_utils4.parseProviderOptions)({
411
420
  provider: "mistral",
412
421
  providerOptions,
413
422
  schema: mistralLanguageModelOptions
@@ -418,7 +427,7 @@ var MistralChatLanguageModel = class {
418
427
  const structuredOutputs = (_b = options.structuredOutputs) != null ? _b : true;
419
428
  const strictJsonSchema = (_c = options.strictJsonSchema) != null ? _c : false;
420
429
  if ((responseFormat == null ? void 0 : responseFormat.type) === "json" && !(responseFormat == null ? void 0 : responseFormat.schema)) {
421
- prompt = (0, import_provider_utils3.injectJsonInstructionIntoMessages)({
430
+ prompt = (0, import_provider_utils4.injectJsonInstructionIntoMessages)({
422
431
  messages: prompt,
423
432
  schema: responseFormat.schema
424
433
  });
@@ -478,12 +487,12 @@ var MistralChatLanguageModel = class {
478
487
  responseHeaders,
479
488
  value: response,
480
489
  rawValue: rawResponse
481
- } = await (0, import_provider_utils3.postJsonToApi)({
490
+ } = await (0, import_provider_utils4.postJsonToApi)({
482
491
  url: `${this.config.baseURL}/chat/completions`,
483
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
492
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
484
493
  body,
485
494
  failedResponseHandler: mistralFailedResponseHandler,
486
- successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
495
+ successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
487
496
  mistralChatResponseSchema
488
497
  ),
489
498
  abortSignal: options.abortSignal,
@@ -539,12 +548,12 @@ var MistralChatLanguageModel = class {
539
548
  async doStream(options) {
540
549
  const { args, warnings } = await this.getArgs(options);
541
550
  const body = { ...args, stream: true };
542
- const { responseHeaders, value: response } = await (0, import_provider_utils3.postJsonToApi)({
551
+ const { responseHeaders, value: response } = await (0, import_provider_utils4.postJsonToApi)({
543
552
  url: `${this.config.baseURL}/chat/completions`,
544
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
553
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
545
554
  body,
546
555
  failedResponseHandler: mistralFailedResponseHandler,
547
- successfulResponseHandler: (0, import_provider_utils3.createEventSourceResponseHandler)(
556
+ successfulResponseHandler: (0, import_provider_utils4.createEventSourceResponseHandler)(
548
557
  mistralChatChunkSchema
549
558
  ),
550
559
  abortSignal: options.abortSignal,
@@ -758,7 +767,7 @@ function extractTextContent(content) {
758
767
  }
759
768
  return textContent.length ? textContent.join("") : void 0;
760
769
  }
761
- var mistralContentSchema = import_v44.z.union([
770
+ var mistralContentSchema = () => import_v44.z.union([
762
771
  import_v44.z.string(),
763
772
  import_v44.z.array(
764
773
  import_v44.z.discriminatedUnion("type", [
@@ -792,59 +801,70 @@ var mistralContentSchema = import_v44.z.union([
792
801
  ])
793
802
  )
794
803
  ]).nullish();
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(
804
+ var mistralChatResponseSchema = (0, import_provider_utils4.lazySchema)(
805
+ () => (0, import_provider_utils4.zodSchema)(
800
806
  import_v44.z.object({
801
- message: import_v44.z.object({
802
- role: import_v44.z.literal("assistant"),
803
- content: mistralContentSchema,
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() })
808
- })
809
- ).nullish()
810
- }),
811
- index: import_v44.z.number(),
812
- finish_reason: import_v44.z.string().nullish()
807
+ id: import_v44.z.string().nullish(),
808
+ created: import_v44.z.number().nullish(),
809
+ model: import_v44.z.string().nullish(),
810
+ choices: import_v44.z.array(
811
+ import_v44.z.object({
812
+ message: import_v44.z.object({
813
+ role: import_v44.z.literal("assistant"),
814
+ content: mistralContentSchema(),
815
+ tool_calls: import_v44.z.array(
816
+ import_v44.z.object({
817
+ id: import_v44.z.string(),
818
+ function: import_v44.z.object({
819
+ name: import_v44.z.string(),
820
+ arguments: import_v44.z.string()
821
+ })
822
+ })
823
+ ).nullish()
824
+ }),
825
+ index: import_v44.z.number(),
826
+ finish_reason: import_v44.z.string().nullish()
827
+ })
828
+ ),
829
+ object: import_v44.z.literal("chat.completion"),
830
+ usage: mistralUsageSchema
813
831
  })
814
- ),
815
- object: import_v44.z.literal("chat.completion"),
816
- usage: mistralUsageSchema
817
- });
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(
832
+ )
833
+ );
834
+ var mistralChatChunkSchema = (0, import_provider_utils4.lazySchema)(
835
+ () => (0, import_provider_utils4.zodSchema)(
823
836
  import_v44.z.object({
824
- delta: import_v44.z.object({
825
- role: import_v44.z.enum(["assistant"]).optional(),
826
- content: mistralContentSchema,
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()
834
- })
835
- })
836
- ).nullish()
837
- }),
838
- finish_reason: import_v44.z.string().nullish(),
839
- index: import_v44.z.number()
837
+ id: import_v44.z.string().nullish(),
838
+ created: import_v44.z.number().nullish(),
839
+ model: import_v44.z.string().nullish(),
840
+ choices: import_v44.z.array(
841
+ import_v44.z.object({
842
+ delta: import_v44.z.object({
843
+ role: import_v44.z.enum(["assistant"]).optional(),
844
+ content: mistralContentSchema(),
845
+ tool_calls: import_v44.z.array(
846
+ import_v44.z.object({
847
+ index: import_v44.z.number().nullish(),
848
+ id: import_v44.z.string().nullish(),
849
+ function: import_v44.z.object({
850
+ name: import_v44.z.string().nullish(),
851
+ arguments: import_v44.z.string().nullish()
852
+ })
853
+ })
854
+ ).nullish()
855
+ }),
856
+ finish_reason: import_v44.z.string().nullish(),
857
+ index: import_v44.z.number()
858
+ })
859
+ ),
860
+ usage: mistralUsageSchema.nullish()
840
861
  })
841
- ),
842
- usage: mistralUsageSchema.nullish()
843
- });
862
+ )
863
+ );
844
864
 
845
865
  // src/mistral-embedding-model.ts
846
866
  var import_provider4 = require("@ai-sdk/provider");
847
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
867
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
848
868
  var import_v45 = require("zod/v4");
849
869
  var MistralEmbeddingModel = class {
850
870
  constructor(modelId, config) {
@@ -874,16 +894,16 @@ var MistralEmbeddingModel = class {
874
894
  responseHeaders,
875
895
  value: response,
876
896
  rawValue
877
- } = await (0, import_provider_utils4.postJsonToApi)({
897
+ } = await (0, import_provider_utils5.postJsonToApi)({
878
898
  url: `${this.config.baseURL}/embeddings`,
879
- headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
899
+ headers: (0, import_provider_utils5.combineHeaders)(this.config.headers(), headers),
880
900
  body: {
881
901
  model: this.modelId,
882
902
  input: values,
883
903
  encoding_format: "float"
884
904
  },
885
905
  failedResponseHandler: mistralFailedResponseHandler,
886
- successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
906
+ successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
887
907
  MistralTextEmbeddingResponseSchema
888
908
  ),
889
909
  abortSignal,
@@ -897,25 +917,44 @@ var MistralEmbeddingModel = class {
897
917
  };
898
918
  }
899
919
  };
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()
903
- });
920
+ var MistralTextEmbeddingResponseSchema = (0, import_provider_utils5.lazySchema)(
921
+ () => (0, import_provider_utils5.zodSchema)(
922
+ import_v45.z.object({
923
+ data: import_v45.z.array(import_v45.z.object({ embedding: import_v45.z.array(import_v45.z.number()) })),
924
+ usage: import_v45.z.object({ prompt_tokens: import_v45.z.number() }).nullish()
925
+ })
926
+ )
927
+ );
904
928
 
905
929
  // src/mistral-speech-model.ts
906
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
930
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
907
931
  var import_v47 = require("zod/v4");
908
932
 
909
933
  // src/mistral-speech-model-options.ts
934
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
910
935
  var import_v46 = require("zod/v4");
911
- var mistralSpeechModelOptions = import_v46.z.object({
912
- /**
913
- * Base64-encoded reference audio for one-off voice cloning.
914
- *
915
- * When provided, this takes precedence over the standard `voice` option.
916
- */
917
- refAudio: import_v46.z.string().min(1).optional()
918
- });
936
+ var mistralSpeechModelOptions = (0, import_provider_utils6.lazySchema)(
937
+ () => (0, import_provider_utils6.zodSchema)(
938
+ import_v46.z.object({
939
+ /**
940
+ * Base64-encoded reference audio for one-off voice cloning.
941
+ *
942
+ * When provided, this takes precedence over the standard `voice` option.
943
+ */
944
+ refAudio: import_v46.z.string().min(1).optional(),
945
+ /**
946
+ * How expressive the speech is, from 1 to 5. Higher values trade voice
947
+ * similarity and stability for stronger delivery. Supported by Voxtral 3.
948
+ */
949
+ expressiveness: import_v46.z.number().min(1).max(5).optional(),
950
+ /**
951
+ * Pronunciation hints mapping words to lists of IPA phonemes.
952
+ * Supported by Voxtral 3.
953
+ */
954
+ phonemeHints: import_v46.z.record(import_v46.z.string().min(1), import_v46.z.array(import_v46.z.string().min(1)).min(1)).optional()
955
+ })
956
+ )
957
+ );
919
958
 
920
959
  // src/mistral-speech-model.ts
921
960
  var MistralSpeechModel = class {
@@ -937,7 +976,7 @@ var MistralSpeechModel = class {
937
976
  providerOptions
938
977
  }) {
939
978
  const warnings = [];
940
- const mistralOptions = await (0, import_provider_utils5.parseProviderOptions)({
979
+ const mistralOptions = await (0, import_provider_utils7.parseProviderOptions)({
941
980
  provider: "mistral",
942
981
  providerOptions,
943
982
  schema: mistralSpeechModelOptions
@@ -979,6 +1018,8 @@ var MistralSpeechModel = class {
979
1018
  input: text,
980
1019
  voice_id: refAudio == null ? voice : void 0,
981
1020
  ref_audio: refAudio,
1021
+ expressiveness: mistralOptions == null ? void 0 : mistralOptions.expressiveness,
1022
+ phoneme_hints: mistralOptions == null ? void 0 : mistralOptions.phonemeHints,
982
1023
  response_format: responseFormat,
983
1024
  stream: false
984
1025
  };
@@ -996,9 +1037,9 @@ var MistralSpeechModel = class {
996
1037
  value: response,
997
1038
  responseHeaders,
998
1039
  rawValue: rawResponse
999
- } = await (0, import_provider_utils5.postToApi)({
1040
+ } = await (0, import_provider_utils7.postToApi)({
1000
1041
  url: `${this.config.baseURL}/audio/speech`,
1001
- headers: (0, import_provider_utils5.combineHeaders)(
1042
+ headers: (0, import_provider_utils7.combineHeaders)(
1002
1043
  { "Content-Type": "application/json" },
1003
1044
  (_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d),
1004
1045
  options.headers
@@ -1008,7 +1049,7 @@ var MistralSpeechModel = class {
1008
1049
  values: requestBodyValues
1009
1050
  },
1010
1051
  failedResponseHandler: mistralFailedResponseHandler,
1011
- successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1052
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1012
1053
  mistralSpeechResponseSchema
1013
1054
  ),
1014
1055
  abortSignal: options.abortSignal,
@@ -1029,20 +1070,24 @@ var MistralSpeechModel = class {
1029
1070
  };
1030
1071
  }
1031
1072
  };
1032
- var mistralSpeechResponseSchema = import_v47.z.object({
1033
- audio_data: import_v47.z.string()
1034
- });
1073
+ var mistralSpeechResponseSchema = (0, import_provider_utils7.lazySchema)(
1074
+ () => (0, import_provider_utils7.zodSchema)(
1075
+ import_v47.z.object({
1076
+ audio_data: import_v47.z.string()
1077
+ })
1078
+ )
1079
+ );
1035
1080
 
1036
1081
  // src/version.ts
1037
- var VERSION = true ? "3.0.74" : "0.0.0-test";
1082
+ var VERSION = true ? "3.0.76" : "0.0.0-test";
1038
1083
 
1039
1084
  // src/mistral-provider.ts
1040
1085
  function createMistral(options = {}) {
1041
1086
  var _a;
1042
- const baseURL = (_a = (0, import_provider_utils6.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.mistral.ai/v1";
1043
- const getHeaders = () => (0, import_provider_utils6.withUserAgentSuffix)(
1087
+ const baseURL = (_a = (0, import_provider_utils8.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.mistral.ai/v1";
1088
+ const getHeaders = () => (0, import_provider_utils8.withUserAgentSuffix)(
1044
1089
  {
1045
- Authorization: `Bearer ${(0, import_provider_utils6.loadApiKey)({
1090
+ Authorization: `Bearer ${(0, import_provider_utils8.loadApiKey)({
1046
1091
  apiKey: options.apiKey,
1047
1092
  environmentVariableName: "MISTRAL_API_KEY",
1048
1093
  description: "Mistral"