@ai-sdk/cohere 4.0.0-beta.9 → 4.0.0-canary.34

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/dist/index.js CHANGED
@@ -1,42 +1,32 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- VERSION: () => VERSION,
24
- cohere: () => cohere,
25
- createCohere: () => createCohere
26
- });
27
- module.exports = __toCommonJS(index_exports);
28
-
29
1
  // src/cohere-provider.ts
30
- var import_provider4 = require("@ai-sdk/provider");
31
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
2
+ import {
3
+ NoSuchModelError
4
+ } from "@ai-sdk/provider";
5
+ import {
6
+ generateId,
7
+ loadApiKey,
8
+ withoutTrailingSlash,
9
+ withUserAgentSuffix
10
+ } from "@ai-sdk/provider-utils";
32
11
 
33
12
  // src/cohere-chat-language-model.ts
34
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
35
- var import_v43 = require("zod/v4");
13
+ import {
14
+ combineHeaders,
15
+ createEventSourceResponseHandler,
16
+ createJsonResponseHandler,
17
+ isCustomReasoning,
18
+ mapReasoningToProviderBudget,
19
+ parseProviderOptions as parseProviderOptions2,
20
+ postJsonToApi,
21
+ serializeModelOptions,
22
+ WORKFLOW_SERIALIZE,
23
+ WORKFLOW_DESERIALIZE
24
+ } from "@ai-sdk/provider-utils";
25
+ import { z as z3 } from "zod/v4";
36
26
 
37
- // src/cohere-chat-options.ts
38
- var import_v4 = require("zod/v4");
39
- var cohereLanguageModelOptions = import_v4.z.object({
27
+ // src/cohere-chat-language-model-options.ts
28
+ import { z } from "zod/v4";
29
+ var cohereLanguageModelChatOptions = z.object({
40
30
  /**
41
31
  * Configuration for reasoning features (optional)
42
32
  *
@@ -45,25 +35,35 @@ var cohereLanguageModelOptions = import_v4.z.object({
45
35
  *
46
36
  * @see https://docs.cohere.com/reference/chat#request.body.thinking
47
37
  */
48
- thinking: import_v4.z.object({
49
- type: import_v4.z.enum(["enabled", "disabled"]).optional(),
50
- tokenBudget: import_v4.z.number().optional()
38
+ thinking: z.object({
39
+ type: z.enum(["enabled", "disabled"]).optional(),
40
+ tokenBudget: z.number().optional()
51
41
  }).optional()
52
42
  });
43
+ var cohereImagePartProviderOptions = z.object({
44
+ /**
45
+ * Image fidelity level passed through as `image_url.detail` on the Cohere chat API.
46
+ *
47
+ * @see https://docs.cohere.com/docs/image-inputs
48
+ */
49
+ detail: z.enum(["auto", "low", "high"]).optional()
50
+ });
53
51
 
54
52
  // src/cohere-error.ts
55
- var import_provider_utils = require("@ai-sdk/provider-utils");
56
- var import_v42 = require("zod/v4");
57
- var cohereErrorDataSchema = import_v42.z.object({
58
- message: import_v42.z.string()
53
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
54
+ import { z as z2 } from "zod/v4";
55
+ var cohereErrorDataSchema = z2.object({
56
+ message: z2.string()
59
57
  });
60
- var cohereFailedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)({
58
+ var cohereFailedResponseHandler = createJsonErrorResponseHandler({
61
59
  errorSchema: cohereErrorDataSchema,
62
60
  errorToMessage: (data) => data.message
63
61
  });
64
62
 
65
63
  // src/cohere-prepare-tools.ts
66
- var import_provider = require("@ai-sdk/provider");
64
+ import {
65
+ UnsupportedFunctionalityError
66
+ } from "@ai-sdk/provider";
67
67
  function prepareTools({
68
68
  tools,
69
69
  toolChoice
@@ -112,7 +112,7 @@ function prepareTools({
112
112
  };
113
113
  default: {
114
114
  const _exhaustiveCheck = type;
115
- throw new import_provider.UnsupportedFunctionalityError({
115
+ throw new UnsupportedFunctionalityError({
116
116
  functionality: `tool choice type: ${_exhaustiveCheck}`
117
117
  });
118
118
  }
@@ -156,8 +156,17 @@ function convertCohereUsage(tokens) {
156
156
  }
157
157
 
158
158
  // src/convert-to-cohere-chat-prompt.ts
159
- var import_provider2 = require("@ai-sdk/provider");
160
- function convertToCohereChatPrompt(prompt) {
159
+ import {
160
+ UnsupportedFunctionalityError as UnsupportedFunctionalityError2
161
+ } from "@ai-sdk/provider";
162
+ import {
163
+ convertToBase64,
164
+ getTopLevelMediaType,
165
+ parseProviderOptions,
166
+ resolveFullMediaType
167
+ } from "@ai-sdk/provider-utils";
168
+ async function convertToCohereChatPrompt(prompt) {
169
+ var _a;
161
170
  const messages = [];
162
171
  const documents = [];
163
172
  const warnings = [];
@@ -168,43 +177,74 @@ function convertToCohereChatPrompt(prompt) {
168
177
  break;
169
178
  }
170
179
  case "user": {
171
- messages.push({
172
- role: "user",
173
- content: content.map((part) => {
174
- var _a;
175
- switch (part.type) {
176
- case "text": {
177
- return part.text;
180
+ const userContentParts = [];
181
+ let hasImage = false;
182
+ for (const part of content) {
183
+ switch (part.type) {
184
+ case "text": {
185
+ if (part.text.length > 0) {
186
+ userContentParts.push({ type: "text", text: part.text });
178
187
  }
179
- case "file": {
180
- let textContent;
181
- if (typeof part.data === "string") {
182
- textContent = part.data;
183
- } else if (part.data instanceof Uint8Array) {
184
- if (!(((_a = part.mediaType) == null ? void 0 : _a.startsWith("text/")) || part.mediaType === "application/json")) {
185
- throw new import_provider2.UnsupportedFunctionalityError({
186
- functionality: `document media type: ${part.mediaType}`,
187
- message: `Media type '${part.mediaType}' is not supported. Supported media types are: text/* and application/json.`
188
- });
188
+ break;
189
+ }
190
+ case "file": {
191
+ if (getTopLevelMediaType(part.mediaType) === "image") {
192
+ hasImage = true;
193
+ const url = buildImageUrl({ part });
194
+ const cohereOptions = (_a = await parseProviderOptions({
195
+ provider: "cohere",
196
+ providerOptions: part.providerOptions,
197
+ schema: cohereImagePartProviderOptions
198
+ })) != null ? _a : {};
199
+ userContentParts.push({
200
+ type: "image_url",
201
+ image_url: {
202
+ url,
203
+ ...cohereOptions.detail ? { detail: cohereOptions.detail } : {}
189
204
  }
190
- textContent = new TextDecoder().decode(part.data);
191
- } else {
192
- throw new import_provider2.UnsupportedFunctionalityError({
205
+ });
206
+ break;
207
+ }
208
+ let textContent;
209
+ switch (part.data.type) {
210
+ case "reference": {
211
+ throw new UnsupportedFunctionalityError2({
212
+ functionality: "file parts with provider references"
213
+ });
214
+ }
215
+ case "url": {
216
+ throw new UnsupportedFunctionalityError2({
193
217
  functionality: "File URL data",
194
218
  message: "URLs should be downloaded by the AI SDK and not reach this point. This indicates a configuration issue."
195
219
  });
196
220
  }
197
- documents.push({
198
- data: {
199
- text: textContent,
200
- title: part.filename
201
- }
202
- });
203
- return "";
221
+ case "text": {
222
+ textContent = part.data.text;
223
+ break;
224
+ }
225
+ case "data": {
226
+ textContent = typeof part.data.data === "string" ? part.data.data : new TextDecoder().decode(part.data.data);
227
+ break;
228
+ }
204
229
  }
230
+ documents.push({
231
+ data: {
232
+ text: textContent,
233
+ title: part.filename
234
+ }
235
+ });
236
+ break;
205
237
  }
206
- }).join("")
207
- });
238
+ }
239
+ }
240
+ if (hasImage) {
241
+ messages.push({ role: "user", content: userContentParts });
242
+ } else {
243
+ messages.push({
244
+ role: "user",
245
+ content: userContentParts.map((p) => p.type === "text" ? p.text : "").join("")
246
+ });
247
+ }
208
248
  break;
209
249
  }
210
250
  case "assistant": {
@@ -240,7 +280,7 @@ function convertToCohereChatPrompt(prompt) {
240
280
  case "tool": {
241
281
  messages.push(
242
282
  ...content.filter((toolResult) => toolResult.type !== "tool-approval-response").map((toolResult) => {
243
- var _a;
283
+ var _a2;
244
284
  const output = toolResult.output;
245
285
  let contentValue;
246
286
  switch (output.type) {
@@ -249,7 +289,7 @@ function convertToCohereChatPrompt(prompt) {
249
289
  contentValue = output.value;
250
290
  break;
251
291
  case "execution-denied":
252
- contentValue = (_a = output.reason) != null ? _a : "Tool execution denied.";
292
+ contentValue = (_a2 = output.reason) != null ? _a2 : "Tool call execution denied.";
253
293
  break;
254
294
  case "content":
255
295
  case "json":
@@ -274,6 +314,26 @@ function convertToCohereChatPrompt(prompt) {
274
314
  }
275
315
  return { messages, documents, warnings };
276
316
  }
317
+ function buildImageUrl({ part }) {
318
+ switch (part.data.type) {
319
+ case "url": {
320
+ return part.data.url.toString();
321
+ }
322
+ case "data": {
323
+ return `data:${resolveFullMediaType({ part })};base64,${convertToBase64(part.data.data)}`;
324
+ }
325
+ case "reference": {
326
+ throw new UnsupportedFunctionalityError2({
327
+ functionality: "image file parts with provider references"
328
+ });
329
+ }
330
+ case "text": {
331
+ throw new UnsupportedFunctionalityError2({
332
+ functionality: "image file parts with text data"
333
+ });
334
+ }
335
+ }
336
+ }
277
337
 
278
338
  // src/map-cohere-finish-reason.ts
279
339
  function mapCohereFinishReason(finishReason) {
@@ -293,15 +353,24 @@ function mapCohereFinishReason(finishReason) {
293
353
  }
294
354
 
295
355
  // src/cohere-chat-language-model.ts
296
- var CohereChatLanguageModel = class {
356
+ var CohereChatLanguageModel = class _CohereChatLanguageModel {
297
357
  constructor(modelId, config) {
298
358
  this.specificationVersion = "v4";
299
359
  this.supportedUrls = {
300
- // No URLs are supported.
360
+ "image/*": [/^https?:\/\/.*$/]
301
361
  };
302
362
  this.modelId = modelId;
303
363
  this.config = config;
304
364
  }
365
+ static [WORKFLOW_SERIALIZE](model) {
366
+ return serializeModelOptions({
367
+ modelId: model.modelId,
368
+ config: model.config
369
+ });
370
+ }
371
+ static [WORKFLOW_DESERIALIZE](options) {
372
+ return new _CohereChatLanguageModel(options.modelId, options.config);
373
+ }
305
374
  get provider() {
306
375
  return this.config.provider;
307
376
  }
@@ -323,16 +392,16 @@ var CohereChatLanguageModel = class {
323
392
  }) {
324
393
  var _a;
325
394
  const warnings = [];
326
- const cohereOptions = (_a = await (0, import_provider_utils2.parseProviderOptions)({
395
+ const cohereOptions = (_a = await parseProviderOptions2({
327
396
  provider: "cohere",
328
397
  providerOptions,
329
- schema: cohereLanguageModelOptions
398
+ schema: cohereLanguageModelChatOptions
330
399
  })) != null ? _a : {};
331
400
  const {
332
401
  messages: chatPrompt,
333
402
  documents: cohereDocuments,
334
403
  warnings: promptWarnings
335
- } = convertToCohereChatPrompt(prompt);
404
+ } = await convertToCohereChatPrompt(prompt);
336
405
  const {
337
406
  tools: cohereTools,
338
407
  toolChoice: cohereToolChoice,
@@ -372,25 +441,25 @@ var CohereChatLanguageModel = class {
372
441
  };
373
442
  }
374
443
  async doGenerate(options) {
375
- var _a, _b, _c, _d, _e, _f, _g;
444
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
376
445
  const { args, warnings } = await this.getArgs(options);
377
446
  const {
378
447
  responseHeaders,
379
448
  value: response,
380
449
  rawValue: rawResponse
381
- } = await (0, import_provider_utils2.postJsonToApi)({
450
+ } = await postJsonToApi({
382
451
  url: `${this.config.baseURL}/chat`,
383
- headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), options.headers),
452
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
384
453
  body: args,
385
454
  failedResponseHandler: cohereFailedResponseHandler,
386
- successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(
455
+ successfulResponseHandler: createJsonResponseHandler(
387
456
  cohereChatResponseSchema
388
457
  ),
389
458
  abortSignal: options.abortSignal,
390
459
  fetch: this.config.fetch
391
460
  });
392
461
  const content = [];
393
- for (const item of (_a = response.message.content) != null ? _a : []) {
462
+ for (const item of (_c = response.message.content) != null ? _c : []) {
394
463
  if (item.type === "text" && item.text.length > 0) {
395
464
  content.push({ type: "text", text: item.text });
396
465
  continue;
@@ -400,13 +469,13 @@ var CohereChatLanguageModel = class {
400
469
  continue;
401
470
  }
402
471
  }
403
- for (const citation of (_b = response.message.citations) != null ? _b : []) {
472
+ for (const citation of (_d = response.message.citations) != null ? _d : []) {
404
473
  content.push({
405
474
  type: "source",
406
475
  sourceType: "document",
407
476
  id: this.config.generateId(),
408
477
  mediaType: "text/plain",
409
- title: ((_d = (_c = citation.sources[0]) == null ? void 0 : _c.document) == null ? void 0 : _d.title) || "Document",
478
+ title: ((_f = (_e = citation.sources[0]) == null ? void 0 : _e.document) == null ? void 0 : _f.title) || "Document",
410
479
  providerMetadata: {
411
480
  cohere: {
412
481
  start: citation.start,
@@ -418,7 +487,7 @@ var CohereChatLanguageModel = class {
418
487
  }
419
488
  });
420
489
  }
421
- for (const toolCall of (_e = response.message.tool_calls) != null ? _e : []) {
490
+ for (const toolCall of (_g = response.message.tool_calls) != null ? _g : []) {
422
491
  content.push({
423
492
  type: "tool-call",
424
493
  toolCallId: toolCall.id,
@@ -432,13 +501,13 @@ var CohereChatLanguageModel = class {
432
501
  content,
433
502
  finishReason: {
434
503
  unified: mapCohereFinishReason(response.finish_reason),
435
- raw: (_f = response.finish_reason) != null ? _f : void 0
504
+ raw: (_h = response.finish_reason) != null ? _h : void 0
436
505
  },
437
506
  usage: convertCohereUsage(response.usage.tokens),
438
507
  request: { body: args },
439
508
  response: {
440
509
  // TODO timestamp, model id
441
- id: (_g = response.generation_id) != null ? _g : void 0,
510
+ id: (_i = response.generation_id) != null ? _i : void 0,
442
511
  headers: responseHeaders,
443
512
  body: rawResponse
444
513
  },
@@ -446,13 +515,14 @@ var CohereChatLanguageModel = class {
446
515
  };
447
516
  }
448
517
  async doStream(options) {
518
+ var _a, _b;
449
519
  const { args, warnings } = await this.getArgs(options);
450
- const { responseHeaders, value: response } = await (0, import_provider_utils2.postJsonToApi)({
520
+ const { responseHeaders, value: response } = await postJsonToApi({
451
521
  url: `${this.config.baseURL}/chat`,
452
- headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), options.headers),
522
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
453
523
  body: { ...args, stream: true },
454
524
  failedResponseHandler: cohereFailedResponseHandler,
455
- successfulResponseHandler: (0, import_provider_utils2.createEventSourceResponseHandler)(
525
+ successfulResponseHandler: createEventSourceResponseHandler(
456
526
  cohereChatChunkSchema
457
527
  ),
458
528
  abortSignal: options.abortSignal,
@@ -472,7 +542,7 @@ var CohereChatLanguageModel = class {
472
542
  controller.enqueue({ type: "stream-start", warnings });
473
543
  },
474
544
  transform(chunk, controller) {
475
- var _a, _b;
545
+ var _a2, _b2;
476
546
  if (options.includeRawChunks) {
477
547
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
478
548
  }
@@ -577,7 +647,7 @@ var CohereChatLanguageModel = class {
577
647
  toolCallId: pendingToolCall.id,
578
648
  toolName: pendingToolCall.name,
579
649
  input: JSON.stringify(
580
- JSON.parse(((_a = pendingToolCall.arguments) == null ? void 0 : _a.trim()) || "{}")
650
+ JSON.parse(((_a2 = pendingToolCall.arguments) == null ? void 0 : _a2.trim()) || "{}")
581
651
  )
582
652
  });
583
653
  pendingToolCall.hasFinished = true;
@@ -588,7 +658,7 @@ var CohereChatLanguageModel = class {
588
658
  case "message-start": {
589
659
  controller.enqueue({
590
660
  type: "response-metadata",
591
- id: (_b = value.id) != null ? _b : void 0
661
+ id: (_b2 = value.id) != null ? _b2 : void 0
592
662
  });
593
663
  return;
594
664
  }
@@ -633,13 +703,13 @@ function resolveCohereThinking({
633
703
  }
634
704
  };
635
705
  }
636
- if (!(0, import_provider_utils2.isCustomReasoning)(reasoning)) {
706
+ if (!isCustomReasoning(reasoning)) {
637
707
  return {};
638
708
  }
639
709
  if (reasoning === "none") {
640
710
  return { thinking: { type: "disabled" } };
641
711
  }
642
- const tokenBudget = (0, import_provider_utils2.mapReasoningToProviderBudget)({
712
+ const tokenBudget = mapReasoningToProviderBudget({
643
713
  reasoning,
644
714
  maxOutputTokens: 32768,
645
715
  maxReasoningBudget: 32768,
@@ -650,145 +720,145 @@ function resolveCohereThinking({
650
720
  }
651
721
  return { thinking: { type: "enabled", token_budget: tokenBudget } };
652
722
  }
653
- var cohereChatResponseSchema = import_v43.z.object({
654
- generation_id: import_v43.z.string().nullish(),
655
- message: import_v43.z.object({
656
- role: import_v43.z.string(),
657
- content: import_v43.z.array(
658
- import_v43.z.union([
659
- import_v43.z.object({
660
- type: import_v43.z.literal("text"),
661
- text: import_v43.z.string()
723
+ var cohereChatResponseSchema = z3.object({
724
+ generation_id: z3.string().nullish(),
725
+ message: z3.object({
726
+ role: z3.string(),
727
+ content: z3.array(
728
+ z3.union([
729
+ z3.object({
730
+ type: z3.literal("text"),
731
+ text: z3.string()
662
732
  }),
663
- import_v43.z.object({
664
- type: import_v43.z.literal("thinking"),
665
- thinking: import_v43.z.string()
733
+ z3.object({
734
+ type: z3.literal("thinking"),
735
+ thinking: z3.string()
666
736
  })
667
737
  ])
668
738
  ).nullish(),
669
- tool_plan: import_v43.z.string().nullish(),
670
- tool_calls: import_v43.z.array(
671
- import_v43.z.object({
672
- id: import_v43.z.string(),
673
- type: import_v43.z.literal("function"),
674
- function: import_v43.z.object({
675
- name: import_v43.z.string(),
676
- arguments: import_v43.z.string()
739
+ tool_plan: z3.string().nullish(),
740
+ tool_calls: z3.array(
741
+ z3.object({
742
+ id: z3.string(),
743
+ type: z3.literal("function"),
744
+ function: z3.object({
745
+ name: z3.string(),
746
+ arguments: z3.string()
677
747
  })
678
748
  })
679
749
  ).nullish(),
680
- citations: import_v43.z.array(
681
- import_v43.z.object({
682
- start: import_v43.z.number(),
683
- end: import_v43.z.number(),
684
- text: import_v43.z.string(),
685
- sources: import_v43.z.array(
686
- import_v43.z.object({
687
- type: import_v43.z.string().optional(),
688
- id: import_v43.z.string().optional(),
689
- document: import_v43.z.object({
690
- id: import_v43.z.string().optional(),
691
- text: import_v43.z.string(),
692
- title: import_v43.z.string()
750
+ citations: z3.array(
751
+ z3.object({
752
+ start: z3.number(),
753
+ end: z3.number(),
754
+ text: z3.string(),
755
+ sources: z3.array(
756
+ z3.object({
757
+ type: z3.string().optional(),
758
+ id: z3.string().optional(),
759
+ document: z3.object({
760
+ id: z3.string().optional(),
761
+ text: z3.string(),
762
+ title: z3.string()
693
763
  })
694
764
  })
695
765
  ),
696
- type: import_v43.z.string().optional()
766
+ type: z3.string().optional()
697
767
  })
698
768
  ).nullish()
699
769
  }),
700
- finish_reason: import_v43.z.string(),
701
- usage: import_v43.z.object({
702
- billed_units: import_v43.z.object({
703
- input_tokens: import_v43.z.number(),
704
- output_tokens: import_v43.z.number()
770
+ finish_reason: z3.string(),
771
+ usage: z3.object({
772
+ billed_units: z3.object({
773
+ input_tokens: z3.number(),
774
+ output_tokens: z3.number()
705
775
  }),
706
- tokens: import_v43.z.object({
707
- input_tokens: import_v43.z.number(),
708
- output_tokens: import_v43.z.number()
776
+ tokens: z3.object({
777
+ input_tokens: z3.number(),
778
+ output_tokens: z3.number()
709
779
  })
710
780
  })
711
781
  });
712
- var cohereChatChunkSchema = import_v43.z.discriminatedUnion("type", [
713
- import_v43.z.object({
714
- type: import_v43.z.literal("citation-start")
782
+ var cohereChatChunkSchema = z3.discriminatedUnion("type", [
783
+ z3.object({
784
+ type: z3.literal("citation-start")
715
785
  }),
716
- import_v43.z.object({
717
- type: import_v43.z.literal("citation-end")
786
+ z3.object({
787
+ type: z3.literal("citation-end")
718
788
  }),
719
- import_v43.z.object({
720
- type: import_v43.z.literal("content-start"),
721
- index: import_v43.z.number(),
722
- delta: import_v43.z.object({
723
- message: import_v43.z.object({
724
- content: import_v43.z.union([
725
- import_v43.z.object({
726
- type: import_v43.z.literal("text"),
727
- text: import_v43.z.string()
789
+ z3.object({
790
+ type: z3.literal("content-start"),
791
+ index: z3.number(),
792
+ delta: z3.object({
793
+ message: z3.object({
794
+ content: z3.union([
795
+ z3.object({
796
+ type: z3.literal("text"),
797
+ text: z3.string()
728
798
  }),
729
- import_v43.z.object({
730
- type: import_v43.z.literal("thinking"),
731
- thinking: import_v43.z.string()
799
+ z3.object({
800
+ type: z3.literal("thinking"),
801
+ thinking: z3.string()
732
802
  })
733
803
  ])
734
804
  })
735
805
  })
736
806
  }),
737
- import_v43.z.object({
738
- type: import_v43.z.literal("content-delta"),
739
- index: import_v43.z.number(),
740
- delta: import_v43.z.object({
741
- message: import_v43.z.object({
742
- content: import_v43.z.union([
743
- import_v43.z.object({
744
- text: import_v43.z.string()
807
+ z3.object({
808
+ type: z3.literal("content-delta"),
809
+ index: z3.number(),
810
+ delta: z3.object({
811
+ message: z3.object({
812
+ content: z3.union([
813
+ z3.object({
814
+ text: z3.string()
745
815
  }),
746
- import_v43.z.object({
747
- thinking: import_v43.z.string()
816
+ z3.object({
817
+ thinking: z3.string()
748
818
  })
749
819
  ])
750
820
  })
751
821
  })
752
822
  }),
753
- import_v43.z.object({
754
- type: import_v43.z.literal("content-end"),
755
- index: import_v43.z.number()
823
+ z3.object({
824
+ type: z3.literal("content-end"),
825
+ index: z3.number()
756
826
  }),
757
- import_v43.z.object({
758
- type: import_v43.z.literal("message-start"),
759
- id: import_v43.z.string().nullish()
827
+ z3.object({
828
+ type: z3.literal("message-start"),
829
+ id: z3.string().nullish()
760
830
  }),
761
- import_v43.z.object({
762
- type: import_v43.z.literal("message-end"),
763
- delta: import_v43.z.object({
764
- finish_reason: import_v43.z.string(),
765
- usage: import_v43.z.object({
766
- tokens: import_v43.z.object({
767
- input_tokens: import_v43.z.number(),
768
- output_tokens: import_v43.z.number()
831
+ z3.object({
832
+ type: z3.literal("message-end"),
833
+ delta: z3.object({
834
+ finish_reason: z3.string(),
835
+ usage: z3.object({
836
+ tokens: z3.object({
837
+ input_tokens: z3.number(),
838
+ output_tokens: z3.number()
769
839
  })
770
840
  })
771
841
  })
772
842
  }),
773
843
  // https://docs.cohere.com/v2/docs/streaming#tool-use-stream-events-for-tool-calling
774
- import_v43.z.object({
775
- type: import_v43.z.literal("tool-plan-delta"),
776
- delta: import_v43.z.object({
777
- message: import_v43.z.object({
778
- tool_plan: import_v43.z.string()
844
+ z3.object({
845
+ type: z3.literal("tool-plan-delta"),
846
+ delta: z3.object({
847
+ message: z3.object({
848
+ tool_plan: z3.string()
779
849
  })
780
850
  })
781
851
  }),
782
- import_v43.z.object({
783
- type: import_v43.z.literal("tool-call-start"),
784
- delta: import_v43.z.object({
785
- message: import_v43.z.object({
786
- tool_calls: import_v43.z.object({
787
- id: import_v43.z.string(),
788
- type: import_v43.z.literal("function"),
789
- function: import_v43.z.object({
790
- name: import_v43.z.string(),
791
- arguments: import_v43.z.string()
852
+ z3.object({
853
+ type: z3.literal("tool-call-start"),
854
+ delta: z3.object({
855
+ message: z3.object({
856
+ tool_calls: z3.object({
857
+ id: z3.string(),
858
+ type: z3.literal("function"),
859
+ function: z3.object({
860
+ name: z3.string(),
861
+ arguments: z3.string()
792
862
  })
793
863
  })
794
864
  })
@@ -797,31 +867,41 @@ var cohereChatChunkSchema = import_v43.z.discriminatedUnion("type", [
797
867
  // A single tool call's `arguments` stream in chunks and must be accumulated
798
868
  // in a string and so the full tool object info can only be parsed once we see
799
869
  // `tool-call-end`.
800
- import_v43.z.object({
801
- type: import_v43.z.literal("tool-call-delta"),
802
- delta: import_v43.z.object({
803
- message: import_v43.z.object({
804
- tool_calls: import_v43.z.object({
805
- function: import_v43.z.object({
806
- arguments: import_v43.z.string()
870
+ z3.object({
871
+ type: z3.literal("tool-call-delta"),
872
+ delta: z3.object({
873
+ message: z3.object({
874
+ tool_calls: z3.object({
875
+ function: z3.object({
876
+ arguments: z3.string()
807
877
  })
808
878
  })
809
879
  })
810
880
  })
811
881
  }),
812
- import_v43.z.object({
813
- type: import_v43.z.literal("tool-call-end")
882
+ z3.object({
883
+ type: z3.literal("tool-call-end")
814
884
  })
815
885
  ]);
816
886
 
817
887
  // src/cohere-embedding-model.ts
818
- var import_provider3 = require("@ai-sdk/provider");
819
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
820
- var import_v45 = require("zod/v4");
888
+ import {
889
+ TooManyEmbeddingValuesForCallError
890
+ } from "@ai-sdk/provider";
891
+ import {
892
+ combineHeaders as combineHeaders2,
893
+ createJsonResponseHandler as createJsonResponseHandler2,
894
+ parseProviderOptions as parseProviderOptions3,
895
+ postJsonToApi as postJsonToApi2,
896
+ serializeModelOptions as serializeModelOptions2,
897
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,
898
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2
899
+ } from "@ai-sdk/provider-utils";
900
+ import { z as z5 } from "zod/v4";
821
901
 
822
- // src/cohere-embedding-options.ts
823
- var import_v44 = require("zod/v4");
824
- var cohereEmbeddingModelOptions = import_v44.z.object({
902
+ // src/cohere-embedding-model-options.ts
903
+ import { z as z4 } from "zod/v4";
904
+ var cohereEmbeddingModelOptions = z4.object({
825
905
  /**
826
906
  * Specifies the type of input passed to the model. Default is `search_query`.
827
907
  *
@@ -830,7 +910,7 @@ var cohereEmbeddingModelOptions = import_v44.z.object({
830
910
  * - "classification": Used for embeddings passed through a text classifier.
831
911
  * - "clustering": Used for embeddings run through a clustering algorithm.
832
912
  */
833
- inputType: import_v44.z.enum(["search_document", "search_query", "classification", "clustering"]).optional(),
913
+ inputType: z4.enum(["search_document", "search_query", "classification", "clustering"]).optional(),
834
914
  /**
835
915
  * Specifies how the API will handle inputs longer than the maximum token length.
836
916
  * Default is `END`.
@@ -839,7 +919,7 @@ var cohereEmbeddingModelOptions = import_v44.z.object({
839
919
  * - "START": Will discard the start of the input until the remaining input is exactly the maximum input token length for the model.
840
920
  * - "END": Will discard the end of the input until the remaining input is exactly the maximum input token length for the model.
841
921
  */
842
- truncate: import_v44.z.enum(["NONE", "START", "END"]).optional(),
922
+ truncate: z4.enum(["NONE", "START", "END"]).optional(),
843
923
  /**
844
924
  * The number of dimensions of the output embedding.
845
925
  * Only available for `embed-v4.0` and newer models.
@@ -847,11 +927,11 @@ var cohereEmbeddingModelOptions = import_v44.z.object({
847
927
  * Possible values are `256`, `512`, `1024`, and `1536`.
848
928
  * The default is `1536`.
849
929
  */
850
- outputDimension: import_v44.z.union([import_v44.z.literal(256), import_v44.z.literal(512), import_v44.z.literal(1024), import_v44.z.literal(1536)]).optional()
930
+ outputDimension: z4.union([z4.literal(256), z4.literal(512), z4.literal(1024), z4.literal(1536)]).optional()
851
931
  });
852
932
 
853
933
  // src/cohere-embedding-model.ts
854
- var CohereEmbeddingModel = class {
934
+ var CohereEmbeddingModel = class _CohereEmbeddingModel {
855
935
  constructor(modelId, config) {
856
936
  this.specificationVersion = "v4";
857
937
  this.maxEmbeddingsPerCall = 96;
@@ -859,6 +939,15 @@ var CohereEmbeddingModel = class {
859
939
  this.modelId = modelId;
860
940
  this.config = config;
861
941
  }
942
+ static [WORKFLOW_SERIALIZE2](model) {
943
+ return serializeModelOptions2({
944
+ modelId: model.modelId,
945
+ config: model.config
946
+ });
947
+ }
948
+ static [WORKFLOW_DESERIALIZE2](options) {
949
+ return new _CohereEmbeddingModel(options.modelId, options.config);
950
+ }
862
951
  get provider() {
863
952
  return this.config.provider;
864
953
  }
@@ -868,14 +957,14 @@ var CohereEmbeddingModel = class {
868
957
  abortSignal,
869
958
  providerOptions
870
959
  }) {
871
- var _a;
872
- const embeddingOptions = await (0, import_provider_utils3.parseProviderOptions)({
960
+ var _a, _b, _c;
961
+ const embeddingOptions = await parseProviderOptions3({
873
962
  provider: "cohere",
874
963
  providerOptions,
875
964
  schema: cohereEmbeddingModelOptions
876
965
  });
877
966
  if (values.length > this.maxEmbeddingsPerCall) {
878
- throw new import_provider3.TooManyEmbeddingValuesForCallError({
967
+ throw new TooManyEmbeddingValuesForCallError({
879
968
  provider: this.provider,
880
969
  modelId: this.modelId,
881
970
  maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
@@ -886,9 +975,9 @@ var CohereEmbeddingModel = class {
886
975
  responseHeaders,
887
976
  value: response,
888
977
  rawValue
889
- } = await (0, import_provider_utils3.postJsonToApi)({
978
+ } = await postJsonToApi2({
890
979
  url: `${this.config.baseURL}/embed`,
891
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), headers),
980
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), headers),
892
981
  body: {
893
982
  model: this.modelId,
894
983
  // The AI SDK only supports 'float' embeddings. Note that the Cohere API
@@ -896,12 +985,12 @@ var CohereEmbeddingModel = class {
896
985
  // https://docs.cohere.com/v2/reference/embed#request.body.embedding_types
897
986
  embedding_types: ["float"],
898
987
  texts: values,
899
- input_type: (_a = embeddingOptions == null ? void 0 : embeddingOptions.inputType) != null ? _a : "search_query",
988
+ input_type: (_c = embeddingOptions == null ? void 0 : embeddingOptions.inputType) != null ? _c : "search_query",
900
989
  truncate: embeddingOptions == null ? void 0 : embeddingOptions.truncate,
901
990
  output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension
902
991
  },
903
992
  failedResponseHandler: cohereFailedResponseHandler,
904
- successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
993
+ successfulResponseHandler: createJsonResponseHandler2(
905
994
  cohereTextEmbeddingResponseSchema
906
995
  ),
907
996
  abortSignal,
@@ -915,46 +1004,54 @@ var CohereEmbeddingModel = class {
915
1004
  };
916
1005
  }
917
1006
  };
918
- var cohereTextEmbeddingResponseSchema = import_v45.z.object({
919
- embeddings: import_v45.z.object({
920
- float: import_v45.z.array(import_v45.z.array(import_v45.z.number()))
1007
+ var cohereTextEmbeddingResponseSchema = z5.object({
1008
+ embeddings: z5.object({
1009
+ float: z5.array(z5.array(z5.number()))
921
1010
  }),
922
- meta: import_v45.z.object({
923
- billed_units: import_v45.z.object({
924
- input_tokens: import_v45.z.number()
1011
+ meta: z5.object({
1012
+ billed_units: z5.object({
1013
+ input_tokens: z5.number()
925
1014
  })
926
1015
  })
927
1016
  });
928
1017
 
929
1018
  // src/reranking/cohere-reranking-model.ts
930
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1019
+ import {
1020
+ combineHeaders as combineHeaders3,
1021
+ createJsonResponseHandler as createJsonResponseHandler3,
1022
+ parseProviderOptions as parseProviderOptions4,
1023
+ postJsonToApi as postJsonToApi3
1024
+ } from "@ai-sdk/provider-utils";
931
1025
 
932
1026
  // src/reranking/cohere-reranking-api.ts
933
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
934
- var import_v46 = require("zod/v4");
935
- var cohereRerankingResponseSchema = (0, import_provider_utils4.lazySchema)(
936
- () => (0, import_provider_utils4.zodSchema)(
937
- import_v46.z.object({
938
- id: import_v46.z.string().nullish(),
939
- results: import_v46.z.array(
940
- import_v46.z.object({
941
- index: import_v46.z.number(),
942
- relevance_score: import_v46.z.number()
1027
+ import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
1028
+ import { z as z6 } from "zod/v4";
1029
+ var cohereRerankingResponseSchema = lazySchema(
1030
+ () => zodSchema(
1031
+ z6.object({
1032
+ id: z6.string().nullish(),
1033
+ results: z6.array(
1034
+ z6.object({
1035
+ index: z6.number(),
1036
+ relevance_score: z6.number()
943
1037
  })
944
1038
  ),
945
- meta: import_v46.z.any()
1039
+ meta: z6.any()
946
1040
  })
947
1041
  )
948
1042
  );
949
1043
 
950
- // src/reranking/cohere-reranking-options.ts
951
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
952
- var import_v47 = require("zod/v4");
953
- var cohereRerankingModelOptionsSchema = (0, import_provider_utils5.lazySchema)(
954
- () => (0, import_provider_utils5.zodSchema)(
955
- import_v47.z.object({
956
- maxTokensPerDoc: import_v47.z.number().optional(),
957
- priority: import_v47.z.number().optional()
1044
+ // src/reranking/cohere-reranking-model-options.ts
1045
+ import {
1046
+ lazySchema as lazySchema2,
1047
+ zodSchema as zodSchema2
1048
+ } from "@ai-sdk/provider-utils";
1049
+ import { z as z7 } from "zod/v4";
1050
+ var cohereRerankingModelOptionsSchema = lazySchema2(
1051
+ () => zodSchema2(
1052
+ z7.object({
1053
+ maxTokensPerDoc: z7.number().optional(),
1054
+ priority: z7.number().optional()
958
1055
  })
959
1056
  )
960
1057
  );
@@ -979,7 +1076,7 @@ var CohereRerankingModel = class {
979
1076
  providerOptions
980
1077
  }) {
981
1078
  var _a;
982
- const rerankingOptions = await (0, import_provider_utils6.parseProviderOptions)({
1079
+ const rerankingOptions = await parseProviderOptions4({
983
1080
  provider: "cohere",
984
1081
  providerOptions,
985
1082
  schema: cohereRerankingModelOptionsSchema
@@ -996,9 +1093,9 @@ var CohereRerankingModel = class {
996
1093
  responseHeaders,
997
1094
  value: response,
998
1095
  rawValue
999
- } = await (0, import_provider_utils6.postJsonToApi)({
1096
+ } = await postJsonToApi3({
1000
1097
  url: `${this.config.baseURL}/rerank`,
1001
- headers: (0, import_provider_utils6.combineHeaders)(this.config.headers(), headers),
1098
+ headers: combineHeaders3(this.config.headers(), headers),
1002
1099
  body: {
1003
1100
  model: this.modelId,
1004
1101
  query,
@@ -1008,7 +1105,7 @@ var CohereRerankingModel = class {
1008
1105
  priority: rerankingOptions == null ? void 0 : rerankingOptions.priority
1009
1106
  },
1010
1107
  failedResponseHandler: cohereFailedResponseHandler,
1011
- successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
1108
+ successfulResponseHandler: createJsonResponseHandler3(
1012
1109
  cohereRerankingResponseSchema
1013
1110
  ),
1014
1111
  abortSignal,
@@ -1030,15 +1127,15 @@ var CohereRerankingModel = class {
1030
1127
  };
1031
1128
 
1032
1129
  // src/version.ts
1033
- var VERSION = true ? "4.0.0-beta.9" : "0.0.0-test";
1130
+ var VERSION = true ? "4.0.0-canary.34" : "0.0.0-test";
1034
1131
 
1035
1132
  // src/cohere-provider.ts
1036
1133
  function createCohere(options = {}) {
1037
1134
  var _a;
1038
- const baseURL = (_a = (0, import_provider_utils7.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.cohere.com/v2";
1039
- const getHeaders = () => (0, import_provider_utils7.withUserAgentSuffix)(
1135
+ const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.cohere.com/v2";
1136
+ const getHeaders = () => withUserAgentSuffix(
1040
1137
  {
1041
- Authorization: `Bearer ${(0, import_provider_utils7.loadApiKey)({
1138
+ Authorization: `Bearer ${loadApiKey({
1042
1139
  apiKey: options.apiKey,
1043
1140
  environmentVariableName: "COHERE_API_KEY",
1044
1141
  description: "Cohere"
@@ -1054,7 +1151,7 @@ function createCohere(options = {}) {
1054
1151
  baseURL,
1055
1152
  headers: getHeaders,
1056
1153
  fetch: options.fetch,
1057
- generateId: (_a2 = options.generateId) != null ? _a2 : import_provider_utils7.generateId
1154
+ generateId: (_a2 = options.generateId) != null ? _a2 : generateId
1058
1155
  });
1059
1156
  };
1060
1157
  const createEmbeddingModel = (modelId) => new CohereEmbeddingModel(modelId, {
@@ -1086,15 +1183,14 @@ function createCohere(options = {}) {
1086
1183
  provider.reranking = createRerankingModel;
1087
1184
  provider.rerankingModel = createRerankingModel;
1088
1185
  provider.imageModel = (modelId) => {
1089
- throw new import_provider4.NoSuchModelError({ modelId, modelType: "imageModel" });
1186
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
1090
1187
  };
1091
1188
  return provider;
1092
1189
  }
1093
1190
  var cohere = createCohere();
1094
- // Annotate the CommonJS export names for ESM import in node:
1095
- 0 && (module.exports = {
1191
+ export {
1096
1192
  VERSION,
1097
1193
  cohere,
1098
1194
  createCohere
1099
- });
1195
+ };
1100
1196
  //# sourceMappingURL=index.js.map