@ai-sdk/voyage 1.0.2 → 2.0.0-canary.10

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,25 +1,102 @@
1
1
  # @ai-sdk/voyage
2
2
 
3
- ## 1.0.2
3
+ ## 2.0.0-canary.10
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - a727da4: chore: ensure consistent import handling and avoid import duplicates or cycles
8
- - Updated dependencies [a727da4]
9
- - @ai-sdk/provider-utils@4.0.25
10
- - @ai-sdk/provider@3.0.10
7
+ - Updated dependencies [f634bac]
8
+ - @ai-sdk/provider-utils@5.0.0-canary.35
11
9
 
12
- ## 1.0.1
10
+ ## 2.0.0-canary.9
13
11
 
14
12
  ### Patch Changes
15
13
 
16
- - a7f3c72: trigger release for all packages after provenance setup
17
- - Updated dependencies [a7f3c72]
18
- - @ai-sdk/provider@3.0.9
19
- - @ai-sdk/provider-utils@4.0.24
14
+ - Updated dependencies [69254e0]
15
+ - Updated dependencies [3015fc3]
16
+ - @ai-sdk/provider-utils@5.0.0-canary.34
20
17
 
21
- ## 1.0.0
18
+ ## 2.0.0-canary.8
19
+
20
+ ### Patch Changes
21
+
22
+ - c25eb7a: chore(voyage): trigger canary release at 2.0.0
23
+
24
+ ## 1.0.0-canary.7
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [2427d88]
29
+ - @ai-sdk/provider-utils@5.0.0-canary.33
30
+
31
+ ## 1.0.0-canary.6
32
+
33
+ ### Patch Changes
34
+
35
+ - Updated dependencies [5463d0d]
36
+ - @ai-sdk/provider-utils@5.0.0-canary.32
37
+ - @ai-sdk/provider@4.0.0-canary.16
38
+
39
+ ## 1.0.0-canary.5
40
+
41
+ ### Patch Changes
42
+
43
+ - 0c4c275: trigger initial canary release
44
+ - Updated dependencies [0c4c275]
45
+ - @ai-sdk/provider-utils@5.0.0-canary.31
46
+ - @ai-sdk/provider@4.0.0-canary.15
47
+
48
+ ## 1.0.0-beta.4
22
49
 
23
50
  ### Major Changes
24
51
 
25
- - c136e16: add voyage ai provider with embedding and reranking support on v6
52
+ - 04e9009: chore: make provider implementations code patterns more consistent, including renaming certain exported symbols
53
+
54
+ For all externally exported symbols that were renamed, the old names continue to work via deprecated aliases.
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies [08d2129]
59
+ - @ai-sdk/provider-utils@5.0.0-beta.30
60
+
61
+ ## 1.0.0-beta.3
62
+
63
+ ### Patch Changes
64
+
65
+ - 258c093: chore: ensure consistent import handling and avoid import duplicates or cycles
66
+ - Updated dependencies [9bd6512]
67
+ - Updated dependencies [258c093]
68
+ - Updated dependencies [b6783da]
69
+ - @ai-sdk/provider-utils@5.0.0-beta.29
70
+ - @ai-sdk/provider@4.0.0-beta.14
71
+
72
+ ## 1.0.0-beta.2
73
+
74
+ ### Patch Changes
75
+
76
+ - 9f0e36c: trigger release for all packages after provenance setup
77
+ - Updated dependencies [9f0e36c]
78
+ - @ai-sdk/provider@4.0.0-beta.13
79
+ - @ai-sdk/provider-utils@5.0.0-beta.28
80
+
81
+ ## 1.0.0-beta.1
82
+
83
+ ### Patch Changes
84
+
85
+ - Updated dependencies [785fe16]
86
+ - Updated dependencies [67df0a0]
87
+ - Updated dependencies [befb78c]
88
+ - Updated dependencies [0458559]
89
+ - Updated dependencies [5852c0a]
90
+ - Updated dependencies [fc92055]
91
+ - @ai-sdk/provider-utils@5.0.0-beta.27
92
+
93
+ ## 1.0.0-beta.0
94
+
95
+ ### Major Changes
96
+
97
+ - 4963f11: add voyage ai provider with embedding and reranking support
98
+
99
+ ### Patch Changes
100
+
101
+ - Updated dependencies [2e98477]
102
+ - @ai-sdk/provider-utils@5.0.0-beta.26
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV3, EmbeddingModelV3, RerankingModelV3 } from '@ai-sdk/provider';
1
+ import { ProviderV4, EmbeddingModelV4, RerankingModelV4 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
  import { z } from 'zod/v4';
4
4
 
@@ -26,13 +26,13 @@ type VoyageRerankingModelOptions = {
26
26
  truncation?: boolean;
27
27
  };
28
28
 
29
- interface VoyageProvider extends ProviderV3 {
30
- embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
31
- embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
32
- textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
33
- textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
34
- reranking(modelId: VoyageRerankingModelId): RerankingModelV3;
35
- rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV3;
29
+ interface VoyageProvider extends ProviderV4 {
30
+ embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
31
+ embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
32
+ textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
33
+ textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
34
+ reranking(modelId: VoyageRerankingModelId): RerankingModelV4;
35
+ rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;
36
36
  }
37
37
  interface VoyageProviderSettings {
38
38
  baseURL?: string;
package/dist/index.js CHANGED
@@ -1,69 +1,66 @@
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
- createVoyage: () => createVoyage,
25
- voyage: () => voyage
26
- });
27
- module.exports = __toCommonJS(index_exports);
28
-
29
1
  // src/voyage-provider.ts
30
- var import_provider2 = require("@ai-sdk/provider");
31
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
2
+ import {
3
+ NoSuchModelError
4
+ } from "@ai-sdk/provider";
5
+ import {
6
+ loadApiKey,
7
+ withoutTrailingSlash,
8
+ withUserAgentSuffix
9
+ } from "@ai-sdk/provider-utils";
32
10
 
33
11
  // src/voyage-embedding-model.ts
34
- var import_provider = require("@ai-sdk/provider");
35
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
36
- var import_v43 = require("zod/v4");
12
+ import {
13
+ TooManyEmbeddingValuesForCallError
14
+ } from "@ai-sdk/provider";
15
+ import {
16
+ combineHeaders,
17
+ createJsonResponseHandler,
18
+ parseProviderOptions,
19
+ postJsonToApi,
20
+ serializeModelOptions,
21
+ WORKFLOW_SERIALIZE,
22
+ WORKFLOW_DESERIALIZE
23
+ } from "@ai-sdk/provider-utils";
24
+ import { z as z3 } from "zod/v4";
37
25
 
38
- // src/voyage-embedding-options.ts
39
- var import_v4 = require("zod/v4");
40
- var voyageEmbeddingModelOptions = import_v4.z.object({
41
- inputType: import_v4.z.enum(["query", "document"]).nullable().optional(),
42
- truncation: import_v4.z.boolean().optional(),
43
- outputDimension: import_v4.z.number().optional(),
44
- outputDtype: import_v4.z.enum(["float", "int8", "uint8", "binary", "ubinary"]).optional()
26
+ // src/voyage-embedding-model-options.ts
27
+ import { z } from "zod/v4";
28
+ var voyageEmbeddingModelOptions = z.object({
29
+ inputType: z.enum(["query", "document"]).nullable().optional(),
30
+ truncation: z.boolean().optional(),
31
+ outputDimension: z.number().optional(),
32
+ outputDtype: z.enum(["float", "int8", "uint8", "binary", "ubinary"]).optional()
45
33
  });
46
34
 
47
35
  // src/voyage-error.ts
48
- var import_provider_utils = require("@ai-sdk/provider-utils");
49
- var import_v42 = require("zod/v4");
50
- var voyageErrorDataSchema = import_v42.z.object({
51
- detail: import_v42.z.string()
36
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
37
+ import { z as z2 } from "zod/v4";
38
+ var voyageErrorDataSchema = z2.object({
39
+ detail: z2.string()
52
40
  });
53
- var voyageFailedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)({
41
+ var voyageFailedResponseHandler = createJsonErrorResponseHandler({
54
42
  errorSchema: voyageErrorDataSchema,
55
43
  errorToMessage: (data) => data.detail
56
44
  });
57
45
 
58
46
  // src/voyage-embedding-model.ts
59
- var VoyageEmbeddingModel = class {
47
+ var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
60
48
  constructor(modelId, config) {
61
- this.specificationVersion = "v3";
49
+ this.specificationVersion = "v4";
62
50
  this.maxEmbeddingsPerCall = 128;
63
51
  this.supportsParallelCalls = true;
64
52
  this.modelId = modelId;
65
53
  this.config = config;
66
54
  }
55
+ static [WORKFLOW_SERIALIZE](model) {
56
+ return serializeModelOptions({
57
+ modelId: model.modelId,
58
+ config: model.config
59
+ });
60
+ }
61
+ static [WORKFLOW_DESERIALIZE](options) {
62
+ return new _VoyageEmbeddingModel(options.modelId, options.config);
63
+ }
67
64
  get provider() {
68
65
  return this.config.provider;
69
66
  }
@@ -73,13 +70,14 @@ var VoyageEmbeddingModel = class {
73
70
  abortSignal,
74
71
  providerOptions
75
72
  }) {
76
- const embeddingOptions = await (0, import_provider_utils2.parseProviderOptions)({
73
+ var _a, _b, _c, _d;
74
+ const embeddingOptions = await parseProviderOptions({
77
75
  provider: "voyage",
78
76
  providerOptions,
79
77
  schema: voyageEmbeddingModelOptions
80
78
  });
81
79
  if (values.length > this.maxEmbeddingsPerCall) {
82
- throw new import_provider.TooManyEmbeddingValuesForCallError({
80
+ throw new TooManyEmbeddingValuesForCallError({
83
81
  provider: this.provider,
84
82
  modelId: this.modelId,
85
83
  maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
@@ -90,19 +88,19 @@ var VoyageEmbeddingModel = class {
90
88
  responseHeaders,
91
89
  value: response,
92
90
  rawValue
93
- } = await (0, import_provider_utils2.postJsonToApi)({
91
+ } = await postJsonToApi({
94
92
  url: `${this.config.baseURL}/embeddings`,
95
- headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), headers),
93
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), headers),
96
94
  body: {
97
- model: this.modelId,
98
95
  input: values,
96
+ model: this.modelId,
99
97
  input_type: embeddingOptions == null ? void 0 : embeddingOptions.inputType,
100
98
  truncation: embeddingOptions == null ? void 0 : embeddingOptions.truncation,
101
99
  output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension,
102
100
  output_dtype: embeddingOptions == null ? void 0 : embeddingOptions.outputDtype
103
101
  },
104
102
  failedResponseHandler: voyageFailedResponseHandler,
105
- successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(
103
+ successfulResponseHandler: createJsonResponseHandler(
106
104
  voyageEmbeddingResponseSchema
107
105
  ),
108
106
  abortSignal,
@@ -110,36 +108,47 @@ var VoyageEmbeddingModel = class {
110
108
  });
111
109
  return {
112
110
  warnings: [],
113
- embeddings: response.data.map((item) => item.embedding),
114
- usage: { tokens: response.usage.total_tokens },
111
+ embeddings: response.data.sort((a, b) => a.index - b.index).map((item) => item.embedding),
112
+ usage: { tokens: (_d = (_c = response.usage) == null ? void 0 : _c.total_tokens) != null ? _d : 0 },
115
113
  response: { headers: responseHeaders, body: rawValue }
116
114
  };
117
115
  }
118
116
  };
119
- var voyageEmbeddingResponseSchema = import_v43.z.object({
120
- data: import_v43.z.array(
121
- import_v43.z.object({
122
- embedding: import_v43.z.array(import_v43.z.number()),
123
- index: import_v43.z.number()
117
+ var voyageEmbeddingResponseSchema = z3.object({
118
+ data: z3.array(
119
+ z3.object({
120
+ embedding: z3.array(z3.number()),
121
+ index: z3.number()
124
122
  })
125
123
  ),
126
- usage: import_v43.z.object({
127
- total_tokens: import_v43.z.number()
128
- })
124
+ model: z3.string(),
125
+ usage: z3.object({
126
+ total_tokens: z3.number()
127
+ }).nullish()
129
128
  });
130
129
 
131
130
  // src/reranking/voyage-reranking-model.ts
132
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
133
- var import_v45 = require("zod/v4");
131
+ import {
132
+ combineHeaders as combineHeaders2,
133
+ createJsonResponseHandler as createJsonResponseHandler2,
134
+ lazySchema as lazySchema2,
135
+ parseProviderOptions as parseProviderOptions2,
136
+ postJsonToApi as postJsonToApi2,
137
+ zodSchema as zodSchema2
138
+ } from "@ai-sdk/provider-utils";
139
+ import { z as z5 } from "zod/v4";
134
140
 
135
- // src/reranking/voyage-reranking-options.ts
136
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
137
- var import_v44 = require("zod/v4");
138
- var voyageRerankingModelOptionsSchema = (0, import_provider_utils3.lazySchema)(
139
- () => (0, import_provider_utils3.zodSchema)(
140
- import_v44.z.object({
141
- returnDocuments: import_v44.z.boolean().optional(),
142
- truncation: import_v44.z.boolean().optional()
141
+ // src/reranking/voyage-reranking-model-options.ts
142
+ import {
143
+ lazySchema,
144
+ zodSchema
145
+ } from "@ai-sdk/provider-utils";
146
+ import { z as z4 } from "zod/v4";
147
+ var voyageRerankingModelOptionsSchema = lazySchema(
148
+ () => zodSchema(
149
+ z4.object({
150
+ returnDocuments: z4.boolean().optional(),
151
+ truncation: z4.boolean().optional()
143
152
  })
144
153
  )
145
154
  );
@@ -147,7 +156,7 @@ var voyageRerankingModelOptionsSchema = (0, import_provider_utils3.lazySchema)(
147
156
  // src/reranking/voyage-reranking-model.ts
148
157
  var VoyageRerankingModel = class {
149
158
  constructor(modelId, config) {
150
- this.specificationVersion = "v3";
159
+ this.specificationVersion = "v4";
151
160
  this.modelId = modelId;
152
161
  this.config = config;
153
162
  }
@@ -162,7 +171,7 @@ var VoyageRerankingModel = class {
162
171
  abortSignal,
163
172
  providerOptions
164
173
  }) {
165
- const rerankingOptions = await (0, import_provider_utils4.parseProviderOptions)({
174
+ const rerankingOptions = await parseProviderOptions2({
166
175
  provider: "voyage",
167
176
  providerOptions,
168
177
  schema: voyageRerankingModelOptionsSchema
@@ -175,23 +184,24 @@ var VoyageRerankingModel = class {
175
184
  details: "Object documents are converted to strings."
176
185
  });
177
186
  }
187
+ const stringValues = documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value));
178
188
  const {
179
189
  responseHeaders,
180
190
  value: response,
181
191
  rawValue
182
- } = await (0, import_provider_utils4.postJsonToApi)({
192
+ } = await postJsonToApi2({
183
193
  url: `${this.config.baseURL}/rerank`,
184
- headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
194
+ headers: combineHeaders2(this.config.headers(), headers),
185
195
  body: {
186
- model: this.modelId,
187
196
  query,
188
- documents: documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value)),
197
+ documents: stringValues,
198
+ model: this.modelId,
189
199
  top_k: topN,
190
200
  return_documents: rerankingOptions == null ? void 0 : rerankingOptions.returnDocuments,
191
201
  truncation: rerankingOptions == null ? void 0 : rerankingOptions.truncation
192
202
  },
193
203
  failedResponseHandler: voyageFailedResponseHandler,
194
- successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
204
+ successfulResponseHandler: createJsonResponseHandler2(
195
205
  voyageRerankingResponseSchema
196
206
  ),
197
207
  abortSignal,
@@ -210,28 +220,29 @@ var VoyageRerankingModel = class {
210
220
  };
211
221
  }
212
222
  };
213
- var voyageRerankingResponseSchema = import_v45.z.object({
214
- data: import_v45.z.array(
215
- import_v45.z.object({
216
- index: import_v45.z.number(),
217
- relevance_score: import_v45.z.number()
223
+ var voyageRerankingResponseSchema = lazySchema2(
224
+ () => zodSchema2(
225
+ z5.object({
226
+ data: z5.array(
227
+ z5.object({
228
+ index: z5.number(),
229
+ relevance_score: z5.number()
230
+ })
231
+ )
218
232
  })
219
- ),
220
- usage: import_v45.z.object({
221
- total_tokens: import_v45.z.number()
222
- })
223
- });
233
+ )
234
+ );
224
235
 
225
236
  // src/version.ts
226
- var VERSION = true ? "1.0.2" : "0.0.0-test";
237
+ var VERSION = true ? "2.0.0-canary.10" : "0.0.0-test";
227
238
 
228
239
  // src/voyage-provider.ts
229
240
  function createVoyage(options = {}) {
230
241
  var _a;
231
- const baseURL = (_a = (0, import_provider_utils5.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.voyageai.com/v1";
232
- const getHeaders = () => (0, import_provider_utils5.withUserAgentSuffix)(
242
+ const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.voyageai.com/v1";
243
+ const getHeaders = () => withUserAgentSuffix(
233
244
  {
234
- Authorization: `Bearer ${(0, import_provider_utils5.loadApiKey)({
245
+ Authorization: `Bearer ${loadApiKey({
235
246
  apiKey: options.apiKey,
236
247
  environmentVariableName: "VOYAGE_API_KEY",
237
248
  description: "Voyage"
@@ -252,32 +263,27 @@ function createVoyage(options = {}) {
252
263
  headers: getHeaders,
253
264
  fetch: options.fetch
254
265
  });
255
- const provider = function() {
256
- throw new import_provider2.NoSuchModelError({
257
- modelId: "",
258
- modelType: "languageModel"
259
- });
260
- };
261
- provider.specificationVersion = "v3";
262
- provider.languageModel = (modelId) => {
263
- throw new import_provider2.NoSuchModelError({ modelId, modelType: "languageModel" });
264
- };
265
- provider.embedding = createEmbeddingModel;
266
- provider.embeddingModel = createEmbeddingModel;
267
- provider.textEmbedding = createEmbeddingModel;
268
- provider.textEmbeddingModel = createEmbeddingModel;
269
- provider.reranking = createRerankingModel;
270
- provider.rerankingModel = createRerankingModel;
271
- provider.imageModel = (modelId) => {
272
- throw new import_provider2.NoSuchModelError({ modelId, modelType: "imageModel" });
266
+ const provider = {
267
+ specificationVersion: "v4",
268
+ embedding: createEmbeddingModel,
269
+ embeddingModel: createEmbeddingModel,
270
+ textEmbedding: createEmbeddingModel,
271
+ textEmbeddingModel: createEmbeddingModel,
272
+ reranking: createRerankingModel,
273
+ rerankingModel: createRerankingModel,
274
+ languageModel: (modelId) => {
275
+ throw new NoSuchModelError({ modelId, modelType: "languageModel" });
276
+ },
277
+ imageModel: (modelId) => {
278
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
279
+ }
273
280
  };
274
281
  return provider;
275
282
  }
276
283
  var voyage = createVoyage();
277
- // Annotate the CommonJS export names for ESM import in node:
278
- 0 && (module.exports = {
284
+ export {
279
285
  VERSION,
280
286
  createVoyage,
281
287
  voyage
282
- });
288
+ };
283
289
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/voyage-provider.ts","../src/voyage-embedding-model.ts","../src/voyage-embedding-options.ts","../src/voyage-error.ts","../src/reranking/voyage-reranking-model.ts","../src/reranking/voyage-reranking-options.ts","../src/version.ts"],"sourcesContent":["export { voyage, createVoyage } from './voyage-provider';\nexport type { VoyageProvider, VoyageProviderSettings } from './voyage-provider';\nexport type { VoyageEmbeddingModelOptions } from './voyage-embedding-options';\nexport type { VoyageRerankingModelOptions } from './reranking/voyage-reranking-options';\nexport { VERSION } from './version';\n","import {\n NoSuchModelError,\n type EmbeddingModelV3,\n type RerankingModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-options';\nimport { VERSION } from './version';\n\nexport interface VoyageProvider extends ProviderV3 {\n embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n reranking(modelId: VoyageRerankingModelId): RerankingModelV3;\n\n rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV3;\n}\n\nexport interface VoyageProviderSettings {\n baseURL?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n fetch?: FetchFunction;\n}\n\nexport function createVoyage(\n options: VoyageProviderSettings = {},\n): VoyageProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.voyageai.com/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n },\n `ai-sdk/voyage/${VERSION}`,\n );\n\n const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>\n new VoyageEmbeddingModel(modelId, {\n provider: 'voyage.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createRerankingModel = (modelId: VoyageRerankingModelId) =>\n new VoyageRerankingModel(modelId, {\n provider: 'voyage.reranking',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function () {\n throw new NoSuchModelError({\n modelId: '',\n modelType: 'languageModel',\n });\n };\n\n provider.specificationVersion = 'v3' as const;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n };\n\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as VoyageProvider;\n}\n\nexport const voyage = createVoyage();\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV3,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n voyageEmbeddingModelOptions,\n type VoyageEmbeddingModelId,\n} from './voyage-embedding-options';\nimport { voyageFailedResponseHandler } from './voyage-error';\n\ntype VoyageEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 128;\n readonly supportsParallelCalls = true;\n\n private readonly config: VoyageEmbeddingConfig;\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingModelOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_dimension: embeddingOptions?.outputDimension,\n output_dtype: embeddingOptions?.outputDtype,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.data.map(item => item.embedding),\n usage: { tokens: response.usage.total_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\nconst voyageEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n usage: z.object({\n total_tokens: z.number(),\n }),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-4-nano'\n | 'voyage-code-3.5'\n | 'voyage-code-3'\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-multilingual-2'\n | 'voyage-code-2'\n | 'voyage-2'\n | (string & {});\n\nexport const voyageEmbeddingModelOptions = z.object({\n inputType: z.enum(['query', 'document']).nullable().optional(),\n truncation: z.boolean().optional(),\n outputDimension: z.number().optional(),\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n});\n\nexport type VoyageEmbeddingModelOptions = z.infer<\n typeof voyageEmbeddingModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n detail: z.string(),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: data => data.detail,\n});\n","import type { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n voyageRerankingModelOptionsSchema,\n type VoyageRerankingModelId,\n} from './voyage-reranking-options';\n\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageRerankingModelId;\n\n private readonly config: VoyageRerankingConfig;\n\n constructor(modelId: VoyageRerankingModelId, config: VoyageRerankingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV3['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingModelOptionsSchema,\n });\n\n const warnings: SharedV3Warning[] = [];\n\n if (documents.type === 'object') {\n warnings.push({\n type: 'compatibility',\n feature: 'object documents',\n details: 'Object documents are converted to strings.',\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n query,\n documents:\n documents.type === 'text'\n ? documents.values\n : documents.values.map(value => JSON.stringify(value)),\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments,\n truncation: rerankingOptions?.truncation,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.data.map(result => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n warnings,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst voyageRerankingResponseSchema = z.object({\n data: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n usage: z.object({\n total_tokens: z.number(),\n }),\n});\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type VoyageRerankingModelId =\n | 'rerank-2.5'\n | 'rerank-2.5-lite'\n | 'rerank-2'\n | 'rerank-2-lite'\n | 'rerank-1'\n | 'rerank-lite-1'\n | (string & {});\n\nexport type VoyageRerankingModelOptions = {\n returnDocuments?: boolean;\n truncation?: boolean;\n};\n\nexport const voyageRerankingModelOptionsSchema: FlexibleSchema<VoyageRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,mBAKO;AACP,IAAAC,yBAKO;;;ACXP,sBAGO;AACP,IAAAC,yBAMO;AACP,IAAAC,aAAkB;;;ACXlB,gBAAkB;AAqBX,IAAM,8BAA8B,YAAE,OAAO;AAAA,EAClD,WAAW,YAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7D,YAAY,YAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,iBAAiB,YAAE,OAAO,EAAE,SAAS;AAAA,EACrC,aAAa,YACV,KAAK,CAAC,SAAS,QAAQ,SAAS,UAAU,SAAS,CAAC,EACpD,SAAS;AACd,CAAC;;;AC5BD,4BAA+C;AAC/C,IAAAC,aAAkB;AAElB,IAAM,wBAAwB,aAAE,OAAO;AAAA,EACrC,QAAQ,aAAE,OAAO;AACnB,CAAC;AAIM,IAAM,kCAA8B,sDAA+B;AAAA,EACxE,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B,CAAC;;;AFaM,IAAM,uBAAN,MAAuD;AAAA,EAS5D,YAAY,SAAiC,QAA+B;AAR5E,SAAS,uBAAuB;AAGhC,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAK/B,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,mDAAmC;AAAA,QAC3C,UAAU,KAAK;AAAA,QACf,SAAS,KAAK;AAAA,QACd,sBAAsB,KAAK;AAAA,QAC3B;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,OAAO;AAAA,QACP,YAAY,qDAAkB;AAAA,QAC9B,YAAY,qDAAkB;AAAA,QAC9B,kBAAkB,qDAAkB;AAAA,QACpC,cAAc,qDAAkB;AAAA,MAClC;AAAA,MACA,uBAAuB;AAAA,MACvB,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,UAAU,CAAC;AAAA,MACX,YAAY,SAAS,KAAK,IAAI,UAAQ,KAAK,SAAS;AAAA,MACpD,OAAO,EAAE,QAAQ,SAAS,MAAM,aAAa;AAAA,MAC7C,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,IACvD;AAAA,EACF;AACF;AAEA,IAAM,gCAAgC,aAAE,OAAO;AAAA,EAC7C,MAAM,aAAE;AAAA,IACN,aAAE,OAAO;AAAA,MACP,WAAW,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC7B,OAAO,aAAE,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EACA,OAAO,aAAE,OAAO;AAAA,IACd,cAAc,aAAE,OAAO;AAAA,EACzB,CAAC;AACH,CAAC;;;AG3GD,IAAAC,yBAMO;AACP,IAAAC,aAAkB;;;ACRlB,IAAAC,yBAIO;AACP,IAAAC,aAAkB;AAgBX,IAAM,wCACX;AAAA,EAAW,UACT;AAAA,IACE,aAAE,OAAO;AAAA,MACP,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA,MACtC,YAAY,aAAE,QAAQ,EAAE,SAAS;AAAA,IACnC,CAAC;AAAA,EACH;AACF;;;ADPK,IAAM,uBAAN,MAAuD;AAAA,EAM5D,YAAY,SAAiC,QAA+B;AAL5E,SAAS,uBAAuB;AAM9B,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,MAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,WAA8B,CAAC;AAErC,QAAI,UAAU,SAAS,UAAU;AAC/B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,WACE,UAAU,SAAS,SACf,UAAU,SACV,UAAU,OAAO,IAAI,WAAS,KAAK,UAAU,KAAK,CAAC;AAAA,QACzD,OAAO;AAAA,QACP,kBAAkB,qDAAkB;AAAA,QACpC,YAAY,qDAAkB;AAAA,MAChC;AAAA,MACA,uBAAuB;AAAA,MACvB,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,SAAS,SAAS,KAAK,IAAI,aAAW;AAAA,QACpC,OAAO,OAAO;AAAA,QACd,gBAAgB,OAAO;AAAA,MACzB,EAAE;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,gCAAgC,aAAE,OAAO;AAAA,EAC7C,MAAM,aAAE;AAAA,IACN,aAAE,OAAO;AAAA,MACP,OAAO,aAAE,OAAO;AAAA,MAChB,iBAAiB,aAAE,OAAO;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO,aAAE,OAAO;AAAA,IACd,cAAc,aAAE,OAAO;AAAA,EACzB,CAAC;AACH,CAAC;;;AEhHM,IAAM,UACX,OACI,UACA;;;ANmCC,SAAS,aACd,UAAkC,CAAC,GACnB;AAzClB;AA0CE,QAAM,WACJ,sDAAqB,QAAQ,OAAO,MAApC,YAAyC;AAE3C,QAAM,aAAa,UACjB;AAAA,IACE;AAAA,MACE,eAAe,cAAU,mCAAW;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,iBAAiB,OAAO;AAAA,EAC1B;AAEF,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,WAAY;AAC3B,UAAM,IAAI,kCAAiB;AAAA,MACzB,SAAS;AAAA,MACT,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAEA,WAAS,uBAAuB;AAEhC,WAAS,gBAAgB,CAAC,YAAoB;AAC5C,UAAM,IAAI,kCAAiB,EAAE,SAAS,WAAW,gBAAgB,CAAC;AAAA,EACpE;AAEA,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAC1B,WAAS,gBAAgB;AACzB,WAAS,qBAAqB;AAC9B,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAE1B,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,kCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,SAAS,aAAa;","names":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
1
+ {"version":3,"sources":["../src/voyage-provider.ts","../src/voyage-embedding-model.ts","../src/voyage-embedding-model-options.ts","../src/voyage-error.ts","../src/reranking/voyage-reranking-model.ts","../src/reranking/voyage-reranking-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type EmbeddingModelV4,\n type RerankingModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-model-options';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-model-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport { VERSION } from './version';\n\nexport interface VoyageProvider extends ProviderV4 {\n embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n reranking(modelId: VoyageRerankingModelId): RerankingModelV4;\n rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;\n}\n\nexport interface VoyageProviderSettings {\n baseURL?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n fetch?: FetchFunction;\n}\n\nexport function createVoyage(\n options: VoyageProviderSettings = {},\n): VoyageProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.voyageai.com/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n },\n `ai-sdk/voyage/${VERSION}`,\n );\n\n const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>\n new VoyageEmbeddingModel(modelId, {\n provider: 'voyage.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createRerankingModel = (modelId: VoyageRerankingModelId) =>\n new VoyageRerankingModel(modelId, {\n provider: 'voyage.reranking',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider: VoyageProvider = {\n specificationVersion: 'v4' as const,\n embedding: createEmbeddingModel,\n embeddingModel: createEmbeddingModel,\n textEmbedding: createEmbeddingModel,\n textEmbeddingModel: createEmbeddingModel,\n reranking: createRerankingModel,\n rerankingModel: createRerankingModel,\n\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n },\n\n imageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n },\n };\n\n return provider;\n}\n\nexport const voyage = createVoyage();\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n voyageEmbeddingModelOptions,\n type VoyageEmbeddingModelId,\n} from './voyage-embedding-model-options';\nimport { voyageFailedResponseHandler } from './voyage-error';\n\ntype VoyageEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers?: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageEmbeddingModel implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: VoyageEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 128;\n readonly supportsParallelCalls = true;\n\n private readonly config: VoyageEmbeddingConfig;\n\n static [WORKFLOW_SERIALIZE](model: VoyageEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: VoyageEmbeddingModelId;\n config: VoyageEmbeddingConfig;\n }) {\n return new VoyageEmbeddingModel(options.modelId, options.config);\n }\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingModelOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body: {\n input: values,\n model: this.modelId,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_dimension: embeddingOptions?.outputDimension,\n output_dtype: embeddingOptions?.outputDtype,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.data\n .sort((a, b) => a.index - b.index)\n .map(item => item.embedding),\n usage: { tokens: response.usage?.total_tokens ?? 0 },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\nconst voyageEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n model: z.string(),\n usage: z\n .object({\n total_tokens: z.number(),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-4-nano'\n | 'voyage-code-3.5'\n | 'voyage-code-3'\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-multilingual-2'\n | 'voyage-code-2'\n | 'voyage-2'\n | (string & {});\n\nexport const voyageEmbeddingModelOptions = z.object({\n inputType: z.enum(['query', 'document']).nullable().optional(),\n truncation: z.boolean().optional(),\n outputDimension: z.number().optional(),\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n});\n\nexport type VoyageEmbeddingModelOptions = z.infer<\n typeof voyageEmbeddingModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n detail: z.string(),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: data => data.detail,\n});\n","import type { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n zodSchema,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n voyageRerankingModelOptionsSchema,\n type VoyageRerankingModelId,\n} from './voyage-reranking-model-options';\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: VoyageRerankingModelId;\n\n private readonly config: VoyageRerankingConfig;\n\n constructor(modelId: VoyageRerankingModelId, config: VoyageRerankingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV4['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingModelOptionsSchema,\n });\n\n const warnings: SharedV4Warning[] = [];\n\n if (documents.type === 'object') {\n warnings.push({\n type: 'compatibility',\n feature: 'object documents',\n details: 'Object documents are converted to strings.',\n });\n }\n\n const stringValues =\n documents.type === 'text'\n ? documents.values\n : documents.values.map(value => JSON.stringify(value));\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n query,\n documents: stringValues,\n model: this.modelId,\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments,\n truncation: rerankingOptions?.truncation,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.data.map(result => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n warnings,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst voyageRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n }),\n ),\n);\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type VoyageRerankingModelId =\n | 'rerank-2.5'\n | 'rerank-2.5-lite'\n | 'rerank-2'\n | 'rerank-2-lite'\n | 'rerank-1'\n | 'rerank-lite-1'\n | (string & {});\n\nexport type VoyageRerankingModelOptions = {\n returnDocuments?: boolean;\n truncation?: boolean;\n};\n\nexport const voyageRerankingModelOptionsSchema: FlexibleSchema<VoyageRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","z","combineHeaders","createJsonResponseHandler","lazySchema","parseProviderOptions","postJsonToApi","zodSchema","z","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","lazySchema","zodSchema","z"]}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ai-sdk/voyage",
3
- "version": "1.0.2",
3
+ "version": "2.0.0-canary.10",
4
+ "type": "module",
4
5
  "license": "Apache-2.0",
5
6
  "sideEffects": false,
6
7
  "main": "./dist/index.js",
7
- "module": "./dist/index.mjs",
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
10
10
  "dist/**/*",
@@ -20,20 +20,20 @@
20
20
  "./package.json": "./package.json",
21
21
  ".": {
22
22
  "types": "./dist/index.d.ts",
23
- "import": "./dist/index.mjs",
24
- "require": "./dist/index.js"
23
+ "import": "./dist/index.js",
24
+ "default": "./dist/index.js"
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "3.0.10",
29
- "@ai-sdk/provider-utils": "4.0.25"
28
+ "@ai-sdk/provider": "4.0.0-canary.16",
29
+ "@ai-sdk/provider-utils": "5.0.0-canary.35"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "20.17.24",
33
33
  "tsup": "^8",
34
34
  "typescript": "5.8.3",
35
35
  "zod": "3.25.76",
36
- "@ai-sdk/test-server": "1.0.5",
36
+ "@ai-sdk/test-server": "2.0.0-canary.4",
37
37
  "@vercel/ai-tsconfig": "0.0.0"
38
38
  },
39
39
  "peerDependencies": {
@@ -43,7 +43,8 @@
43
43
  "node": ">=18"
44
44
  },
45
45
  "publishConfig": {
46
- "access": "public"
46
+ "access": "public",
47
+ "provenance": true
47
48
  },
48
49
  "homepage": "https://ai-sdk.dev/docs",
49
50
  "repository": {
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { voyage, createVoyage } from './voyage-provider';
2
2
  export type { VoyageProvider, VoyageProviderSettings } from './voyage-provider';
3
- export type { VoyageEmbeddingModelOptions } from './voyage-embedding-options';
4
- export type { VoyageRerankingModelOptions } from './reranking/voyage-reranking-options';
3
+ export type { VoyageEmbeddingModelOptions } from './voyage-embedding-model-options';
4
+ export type { VoyageRerankingModelOptions } from './reranking/voyage-reranking-model-options';
5
5
  export { VERSION } from './version';
@@ -1,9 +1,11 @@
1
- import type { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';
1
+ import type { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';
2
2
  import {
3
3
  combineHeaders,
4
4
  createJsonResponseHandler,
5
+ lazySchema,
5
6
  parseProviderOptions,
6
7
  postJsonToApi,
8
+ zodSchema,
7
9
  type FetchFunction,
8
10
  } from '@ai-sdk/provider-utils';
9
11
  import { z } from 'zod/v4';
@@ -11,8 +13,7 @@ import { voyageFailedResponseHandler } from '../voyage-error';
11
13
  import {
12
14
  voyageRerankingModelOptionsSchema,
13
15
  type VoyageRerankingModelId,
14
- } from './voyage-reranking-options';
15
-
16
+ } from './voyage-reranking-model-options';
16
17
  type VoyageRerankingConfig = {
17
18
  provider: string;
18
19
  baseURL: string;
@@ -20,8 +21,8 @@ type VoyageRerankingConfig = {
20
21
  fetch?: FetchFunction;
21
22
  };
22
23
 
23
- export class VoyageRerankingModel implements RerankingModelV3 {
24
- readonly specificationVersion = 'v3';
24
+ export class VoyageRerankingModel implements RerankingModelV4 {
25
+ readonly specificationVersion = 'v4';
25
26
  readonly modelId: VoyageRerankingModelId;
26
27
 
27
28
  private readonly config: VoyageRerankingConfig;
@@ -42,8 +43,8 @@ export class VoyageRerankingModel implements RerankingModelV3 {
42
43
  topN,
43
44
  abortSignal,
44
45
  providerOptions,
45
- }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<
46
- Awaited<ReturnType<RerankingModelV3['doRerank']>>
46
+ }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<
47
+ Awaited<ReturnType<RerankingModelV4['doRerank']>>
47
48
  > {
48
49
  const rerankingOptions = await parseProviderOptions({
49
50
  provider: 'voyage',
@@ -51,7 +52,7 @@ export class VoyageRerankingModel implements RerankingModelV3 {
51
52
  schema: voyageRerankingModelOptionsSchema,
52
53
  });
53
54
 
54
- const warnings: SharedV3Warning[] = [];
55
+ const warnings: SharedV4Warning[] = [];
55
56
 
56
57
  if (documents.type === 'object') {
57
58
  warnings.push({
@@ -61,6 +62,11 @@ export class VoyageRerankingModel implements RerankingModelV3 {
61
62
  });
62
63
  }
63
64
 
65
+ const stringValues =
66
+ documents.type === 'text'
67
+ ? documents.values
68
+ : documents.values.map(value => JSON.stringify(value));
69
+
64
70
  const {
65
71
  responseHeaders,
66
72
  value: response,
@@ -69,12 +75,9 @@ export class VoyageRerankingModel implements RerankingModelV3 {
69
75
  url: `${this.config.baseURL}/rerank`,
70
76
  headers: combineHeaders(this.config.headers(), headers),
71
77
  body: {
72
- model: this.modelId,
73
78
  query,
74
- documents:
75
- documents.type === 'text'
76
- ? documents.values
77
- : documents.values.map(value => JSON.stringify(value)),
79
+ documents: stringValues,
80
+ model: this.modelId,
78
81
  top_k: topN,
79
82
  return_documents: rerankingOptions?.returnDocuments,
80
83
  truncation: rerankingOptions?.truncation,
@@ -101,14 +104,15 @@ export class VoyageRerankingModel implements RerankingModelV3 {
101
104
  }
102
105
  }
103
106
 
104
- const voyageRerankingResponseSchema = z.object({
105
- data: z.array(
107
+ const voyageRerankingResponseSchema = lazySchema(() =>
108
+ zodSchema(
106
109
  z.object({
107
- index: z.number(),
108
- relevance_score: z.number(),
110
+ data: z.array(
111
+ z.object({
112
+ index: z.number(),
113
+ relevance_score: z.number(),
114
+ }),
115
+ ),
109
116
  }),
110
117
  ),
111
- usage: z.object({
112
- total_tokens: z.number(),
113
- }),
114
- });
118
+ );
@@ -1,30 +1,33 @@
1
1
  import {
2
2
  TooManyEmbeddingValuesForCallError,
3
- type EmbeddingModelV3,
3
+ type EmbeddingModelV4,
4
4
  } from '@ai-sdk/provider';
5
5
  import {
6
6
  combineHeaders,
7
7
  createJsonResponseHandler,
8
8
  parseProviderOptions,
9
9
  postJsonToApi,
10
+ serializeModelOptions,
11
+ WORKFLOW_SERIALIZE,
12
+ WORKFLOW_DESERIALIZE,
10
13
  type FetchFunction,
11
14
  } from '@ai-sdk/provider-utils';
12
15
  import { z } from 'zod/v4';
13
16
  import {
14
17
  voyageEmbeddingModelOptions,
15
18
  type VoyageEmbeddingModelId,
16
- } from './voyage-embedding-options';
19
+ } from './voyage-embedding-model-options';
17
20
  import { voyageFailedResponseHandler } from './voyage-error';
18
21
 
19
22
  type VoyageEmbeddingConfig = {
20
23
  provider: string;
21
24
  baseURL: string;
22
- headers: () => Record<string, string | undefined>;
25
+ headers?: () => Record<string, string | undefined>;
23
26
  fetch?: FetchFunction;
24
27
  };
25
28
 
26
- export class VoyageEmbeddingModel implements EmbeddingModelV3 {
27
- readonly specificationVersion = 'v3';
29
+ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
30
+ readonly specificationVersion = 'v4';
28
31
  readonly modelId: VoyageEmbeddingModelId;
29
32
 
30
33
  readonly maxEmbeddingsPerCall = 128;
@@ -32,6 +35,20 @@ export class VoyageEmbeddingModel implements EmbeddingModelV3 {
32
35
 
33
36
  private readonly config: VoyageEmbeddingConfig;
34
37
 
38
+ static [WORKFLOW_SERIALIZE](model: VoyageEmbeddingModel) {
39
+ return serializeModelOptions({
40
+ modelId: model.modelId,
41
+ config: model.config,
42
+ });
43
+ }
44
+
45
+ static [WORKFLOW_DESERIALIZE](options: {
46
+ modelId: VoyageEmbeddingModelId;
47
+ config: VoyageEmbeddingConfig;
48
+ }) {
49
+ return new VoyageEmbeddingModel(options.modelId, options.config);
50
+ }
51
+
35
52
  constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {
36
53
  this.modelId = modelId;
37
54
  this.config = config;
@@ -46,8 +63,8 @@ export class VoyageEmbeddingModel implements EmbeddingModelV3 {
46
63
  headers,
47
64
  abortSignal,
48
65
  providerOptions,
49
- }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<
50
- Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>
66
+ }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<
67
+ Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>
51
68
  > {
52
69
  const embeddingOptions = await parseProviderOptions({
53
70
  provider: 'voyage',
@@ -70,10 +87,10 @@ export class VoyageEmbeddingModel implements EmbeddingModelV3 {
70
87
  rawValue,
71
88
  } = await postJsonToApi({
72
89
  url: `${this.config.baseURL}/embeddings`,
73
- headers: combineHeaders(this.config.headers(), headers),
90
+ headers: combineHeaders(this.config.headers?.(), headers),
74
91
  body: {
75
- model: this.modelId,
76
92
  input: values,
93
+ model: this.modelId,
77
94
  input_type: embeddingOptions?.inputType,
78
95
  truncation: embeddingOptions?.truncation,
79
96
  output_dimension: embeddingOptions?.outputDimension,
@@ -89,8 +106,10 @@ export class VoyageEmbeddingModel implements EmbeddingModelV3 {
89
106
 
90
107
  return {
91
108
  warnings: [],
92
- embeddings: response.data.map(item => item.embedding),
93
- usage: { tokens: response.usage.total_tokens },
109
+ embeddings: response.data
110
+ .sort((a, b) => a.index - b.index)
111
+ .map(item => item.embedding),
112
+ usage: { tokens: response.usage?.total_tokens ?? 0 },
94
113
  response: { headers: responseHeaders, body: rawValue },
95
114
  };
96
115
  }
@@ -103,7 +122,10 @@ const voyageEmbeddingResponseSchema = z.object({
103
122
  index: z.number(),
104
123
  }),
105
124
  ),
106
- usage: z.object({
107
- total_tokens: z.number(),
108
- }),
125
+ model: z.string(),
126
+ usage: z
127
+ .object({
128
+ total_tokens: z.number(),
129
+ })
130
+ .nullish(),
109
131
  });
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  NoSuchModelError,
3
- type EmbeddingModelV3,
4
- type RerankingModelV3,
5
- type ProviderV3,
3
+ type EmbeddingModelV4,
4
+ type RerankingModelV4,
5
+ type ProviderV4,
6
6
  } from '@ai-sdk/provider';
7
7
  import {
8
8
  loadApiKey,
@@ -11,23 +11,18 @@ import {
11
11
  type FetchFunction,
12
12
  } from '@ai-sdk/provider-utils';
13
13
  import { VoyageEmbeddingModel } from './voyage-embedding-model';
14
- import type { VoyageEmbeddingModelId } from './voyage-embedding-options';
14
+ import type { VoyageEmbeddingModelId } from './voyage-embedding-model-options';
15
+ import type { VoyageRerankingModelId } from './reranking/voyage-reranking-model-options';
15
16
  import { VoyageRerankingModel } from './reranking/voyage-reranking-model';
16
- import type { VoyageRerankingModelId } from './reranking/voyage-reranking-options';
17
17
  import { VERSION } from './version';
18
18
 
19
- export interface VoyageProvider extends ProviderV3 {
20
- embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
21
-
22
- embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
23
-
24
- textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
25
-
26
- textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
27
-
28
- reranking(modelId: VoyageRerankingModelId): RerankingModelV3;
29
-
30
- rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV3;
19
+ export interface VoyageProvider extends ProviderV4 {
20
+ embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
21
+ embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
22
+ textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
23
+ textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
24
+ reranking(modelId: VoyageRerankingModelId): RerankingModelV4;
25
+ rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;
31
26
  }
32
27
 
33
28
  export interface VoyageProviderSettings {
@@ -72,31 +67,25 @@ export function createVoyage(
72
67
  fetch: options.fetch,
73
68
  });
74
69
 
75
- const provider = function () {
76
- throw new NoSuchModelError({
77
- modelId: '',
78
- modelType: 'languageModel',
79
- });
80
- };
81
-
82
- provider.specificationVersion = 'v3' as const;
83
-
84
- provider.languageModel = (modelId: string) => {
85
- throw new NoSuchModelError({ modelId, modelType: 'languageModel' });
86
- };
87
-
88
- provider.embedding = createEmbeddingModel;
89
- provider.embeddingModel = createEmbeddingModel;
90
- provider.textEmbedding = createEmbeddingModel;
91
- provider.textEmbeddingModel = createEmbeddingModel;
92
- provider.reranking = createRerankingModel;
93
- provider.rerankingModel = createRerankingModel;
94
-
95
- provider.imageModel = (modelId: string) => {
96
- throw new NoSuchModelError({ modelId, modelType: 'imageModel' });
70
+ const provider: VoyageProvider = {
71
+ specificationVersion: 'v4' as const,
72
+ embedding: createEmbeddingModel,
73
+ embeddingModel: createEmbeddingModel,
74
+ textEmbedding: createEmbeddingModel,
75
+ textEmbeddingModel: createEmbeddingModel,
76
+ reranking: createRerankingModel,
77
+ rerankingModel: createRerankingModel,
78
+
79
+ languageModel: (modelId: string) => {
80
+ throw new NoSuchModelError({ modelId, modelType: 'languageModel' });
81
+ },
82
+
83
+ imageModel: (modelId: string) => {
84
+ throw new NoSuchModelError({ modelId, modelType: 'imageModel' });
85
+ },
97
86
  };
98
87
 
99
- return provider as VoyageProvider;
88
+ return provider;
100
89
  }
101
90
 
102
91
  export const voyage = createVoyage();
package/dist/index.d.mts DELETED
@@ -1,48 +0,0 @@
1
- import { ProviderV3, EmbeddingModelV3, RerankingModelV3 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { z } from 'zod/v4';
4
-
5
- type VoyageEmbeddingModelId = 'voyage-4-large' | 'voyage-4' | 'voyage-4-lite' | 'voyage-4-nano' | 'voyage-code-3.5' | 'voyage-code-3' | 'voyage-3-large' | 'voyage-3.5' | 'voyage-3.5-lite' | 'voyage-3' | 'voyage-3-lite' | 'voyage-finance-2' | 'voyage-law-2' | 'voyage-multilingual-2' | 'voyage-code-2' | 'voyage-2' | (string & {});
6
- declare const voyageEmbeddingModelOptions: z.ZodObject<{
7
- inputType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
8
- query: "query";
9
- document: "document";
10
- }>>>;
11
- truncation: z.ZodOptional<z.ZodBoolean>;
12
- outputDimension: z.ZodOptional<z.ZodNumber>;
13
- outputDtype: z.ZodOptional<z.ZodEnum<{
14
- float: "float";
15
- int8: "int8";
16
- uint8: "uint8";
17
- binary: "binary";
18
- ubinary: "ubinary";
19
- }>>;
20
- }, z.core.$strip>;
21
- type VoyageEmbeddingModelOptions = z.infer<typeof voyageEmbeddingModelOptions>;
22
-
23
- type VoyageRerankingModelId = 'rerank-2.5' | 'rerank-2.5-lite' | 'rerank-2' | 'rerank-2-lite' | 'rerank-1' | 'rerank-lite-1' | (string & {});
24
- type VoyageRerankingModelOptions = {
25
- returnDocuments?: boolean;
26
- truncation?: boolean;
27
- };
28
-
29
- interface VoyageProvider extends ProviderV3 {
30
- embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
31
- embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
32
- textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
33
- textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;
34
- reranking(modelId: VoyageRerankingModelId): RerankingModelV3;
35
- rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV3;
36
- }
37
- interface VoyageProviderSettings {
38
- baseURL?: string;
39
- apiKey?: string;
40
- headers?: Record<string, string>;
41
- fetch?: FetchFunction;
42
- }
43
- declare function createVoyage(options?: VoyageProviderSettings): VoyageProvider;
44
- declare const voyage: VoyageProvider;
45
-
46
- declare const VERSION: string;
47
-
48
- export { VERSION, type VoyageEmbeddingModelOptions, type VoyageProvider, type VoyageProviderSettings, type VoyageRerankingModelOptions, createVoyage, voyage };
package/dist/index.mjs DELETED
@@ -1,275 +0,0 @@
1
- // src/voyage-provider.ts
2
- import {
3
- NoSuchModelError
4
- } from "@ai-sdk/provider";
5
- import {
6
- loadApiKey,
7
- withoutTrailingSlash,
8
- withUserAgentSuffix
9
- } from "@ai-sdk/provider-utils";
10
-
11
- // src/voyage-embedding-model.ts
12
- import {
13
- TooManyEmbeddingValuesForCallError
14
- } from "@ai-sdk/provider";
15
- import {
16
- combineHeaders,
17
- createJsonResponseHandler,
18
- parseProviderOptions,
19
- postJsonToApi
20
- } from "@ai-sdk/provider-utils";
21
- import { z as z3 } from "zod/v4";
22
-
23
- // src/voyage-embedding-options.ts
24
- import { z } from "zod/v4";
25
- var voyageEmbeddingModelOptions = z.object({
26
- inputType: z.enum(["query", "document"]).nullable().optional(),
27
- truncation: z.boolean().optional(),
28
- outputDimension: z.number().optional(),
29
- outputDtype: z.enum(["float", "int8", "uint8", "binary", "ubinary"]).optional()
30
- });
31
-
32
- // src/voyage-error.ts
33
- import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
34
- import { z as z2 } from "zod/v4";
35
- var voyageErrorDataSchema = z2.object({
36
- detail: z2.string()
37
- });
38
- var voyageFailedResponseHandler = createJsonErrorResponseHandler({
39
- errorSchema: voyageErrorDataSchema,
40
- errorToMessage: (data) => data.detail
41
- });
42
-
43
- // src/voyage-embedding-model.ts
44
- var VoyageEmbeddingModel = class {
45
- constructor(modelId, config) {
46
- this.specificationVersion = "v3";
47
- this.maxEmbeddingsPerCall = 128;
48
- this.supportsParallelCalls = true;
49
- this.modelId = modelId;
50
- this.config = config;
51
- }
52
- get provider() {
53
- return this.config.provider;
54
- }
55
- async doEmbed({
56
- values,
57
- headers,
58
- abortSignal,
59
- providerOptions
60
- }) {
61
- const embeddingOptions = await parseProviderOptions({
62
- provider: "voyage",
63
- providerOptions,
64
- schema: voyageEmbeddingModelOptions
65
- });
66
- if (values.length > this.maxEmbeddingsPerCall) {
67
- throw new TooManyEmbeddingValuesForCallError({
68
- provider: this.provider,
69
- modelId: this.modelId,
70
- maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
71
- values
72
- });
73
- }
74
- const {
75
- responseHeaders,
76
- value: response,
77
- rawValue
78
- } = await postJsonToApi({
79
- url: `${this.config.baseURL}/embeddings`,
80
- headers: combineHeaders(this.config.headers(), headers),
81
- body: {
82
- model: this.modelId,
83
- input: values,
84
- input_type: embeddingOptions == null ? void 0 : embeddingOptions.inputType,
85
- truncation: embeddingOptions == null ? void 0 : embeddingOptions.truncation,
86
- output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension,
87
- output_dtype: embeddingOptions == null ? void 0 : embeddingOptions.outputDtype
88
- },
89
- failedResponseHandler: voyageFailedResponseHandler,
90
- successfulResponseHandler: createJsonResponseHandler(
91
- voyageEmbeddingResponseSchema
92
- ),
93
- abortSignal,
94
- fetch: this.config.fetch
95
- });
96
- return {
97
- warnings: [],
98
- embeddings: response.data.map((item) => item.embedding),
99
- usage: { tokens: response.usage.total_tokens },
100
- response: { headers: responseHeaders, body: rawValue }
101
- };
102
- }
103
- };
104
- var voyageEmbeddingResponseSchema = z3.object({
105
- data: z3.array(
106
- z3.object({
107
- embedding: z3.array(z3.number()),
108
- index: z3.number()
109
- })
110
- ),
111
- usage: z3.object({
112
- total_tokens: z3.number()
113
- })
114
- });
115
-
116
- // src/reranking/voyage-reranking-model.ts
117
- import {
118
- combineHeaders as combineHeaders2,
119
- createJsonResponseHandler as createJsonResponseHandler2,
120
- parseProviderOptions as parseProviderOptions2,
121
- postJsonToApi as postJsonToApi2
122
- } from "@ai-sdk/provider-utils";
123
- import { z as z5 } from "zod/v4";
124
-
125
- // src/reranking/voyage-reranking-options.ts
126
- import {
127
- lazySchema,
128
- zodSchema
129
- } from "@ai-sdk/provider-utils";
130
- import { z as z4 } from "zod/v4";
131
- var voyageRerankingModelOptionsSchema = lazySchema(
132
- () => zodSchema(
133
- z4.object({
134
- returnDocuments: z4.boolean().optional(),
135
- truncation: z4.boolean().optional()
136
- })
137
- )
138
- );
139
-
140
- // src/reranking/voyage-reranking-model.ts
141
- var VoyageRerankingModel = class {
142
- constructor(modelId, config) {
143
- this.specificationVersion = "v3";
144
- this.modelId = modelId;
145
- this.config = config;
146
- }
147
- get provider() {
148
- return this.config.provider;
149
- }
150
- async doRerank({
151
- documents,
152
- headers,
153
- query,
154
- topN,
155
- abortSignal,
156
- providerOptions
157
- }) {
158
- const rerankingOptions = await parseProviderOptions2({
159
- provider: "voyage",
160
- providerOptions,
161
- schema: voyageRerankingModelOptionsSchema
162
- });
163
- const warnings = [];
164
- if (documents.type === "object") {
165
- warnings.push({
166
- type: "compatibility",
167
- feature: "object documents",
168
- details: "Object documents are converted to strings."
169
- });
170
- }
171
- const {
172
- responseHeaders,
173
- value: response,
174
- rawValue
175
- } = await postJsonToApi2({
176
- url: `${this.config.baseURL}/rerank`,
177
- headers: combineHeaders2(this.config.headers(), headers),
178
- body: {
179
- model: this.modelId,
180
- query,
181
- documents: documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value)),
182
- top_k: topN,
183
- return_documents: rerankingOptions == null ? void 0 : rerankingOptions.returnDocuments,
184
- truncation: rerankingOptions == null ? void 0 : rerankingOptions.truncation
185
- },
186
- failedResponseHandler: voyageFailedResponseHandler,
187
- successfulResponseHandler: createJsonResponseHandler2(
188
- voyageRerankingResponseSchema
189
- ),
190
- abortSignal,
191
- fetch: this.config.fetch
192
- });
193
- return {
194
- ranking: response.data.map((result) => ({
195
- index: result.index,
196
- relevanceScore: result.relevance_score
197
- })),
198
- warnings,
199
- response: {
200
- headers: responseHeaders,
201
- body: rawValue
202
- }
203
- };
204
- }
205
- };
206
- var voyageRerankingResponseSchema = z5.object({
207
- data: z5.array(
208
- z5.object({
209
- index: z5.number(),
210
- relevance_score: z5.number()
211
- })
212
- ),
213
- usage: z5.object({
214
- total_tokens: z5.number()
215
- })
216
- });
217
-
218
- // src/version.ts
219
- var VERSION = true ? "1.0.2" : "0.0.0-test";
220
-
221
- // src/voyage-provider.ts
222
- function createVoyage(options = {}) {
223
- var _a;
224
- const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.voyageai.com/v1";
225
- const getHeaders = () => withUserAgentSuffix(
226
- {
227
- Authorization: `Bearer ${loadApiKey({
228
- apiKey: options.apiKey,
229
- environmentVariableName: "VOYAGE_API_KEY",
230
- description: "Voyage"
231
- })}`,
232
- ...options.headers
233
- },
234
- `ai-sdk/voyage/${VERSION}`
235
- );
236
- const createEmbeddingModel = (modelId) => new VoyageEmbeddingModel(modelId, {
237
- provider: "voyage.embedding",
238
- baseURL,
239
- headers: getHeaders,
240
- fetch: options.fetch
241
- });
242
- const createRerankingModel = (modelId) => new VoyageRerankingModel(modelId, {
243
- provider: "voyage.reranking",
244
- baseURL,
245
- headers: getHeaders,
246
- fetch: options.fetch
247
- });
248
- const provider = function() {
249
- throw new NoSuchModelError({
250
- modelId: "",
251
- modelType: "languageModel"
252
- });
253
- };
254
- provider.specificationVersion = "v3";
255
- provider.languageModel = (modelId) => {
256
- throw new NoSuchModelError({ modelId, modelType: "languageModel" });
257
- };
258
- provider.embedding = createEmbeddingModel;
259
- provider.embeddingModel = createEmbeddingModel;
260
- provider.textEmbedding = createEmbeddingModel;
261
- provider.textEmbeddingModel = createEmbeddingModel;
262
- provider.reranking = createRerankingModel;
263
- provider.rerankingModel = createRerankingModel;
264
- provider.imageModel = (modelId) => {
265
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
266
- };
267
- return provider;
268
- }
269
- var voyage = createVoyage();
270
- export {
271
- VERSION,
272
- createVoyage,
273
- voyage
274
- };
275
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/voyage-provider.ts","../src/voyage-embedding-model.ts","../src/voyage-embedding-options.ts","../src/voyage-error.ts","../src/reranking/voyage-reranking-model.ts","../src/reranking/voyage-reranking-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type EmbeddingModelV3,\n type RerankingModelV3,\n type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-options';\nimport { VERSION } from './version';\n\nexport interface VoyageProvider extends ProviderV3 {\n embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n reranking(modelId: VoyageRerankingModelId): RerankingModelV3;\n\n rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV3;\n}\n\nexport interface VoyageProviderSettings {\n baseURL?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n fetch?: FetchFunction;\n}\n\nexport function createVoyage(\n options: VoyageProviderSettings = {},\n): VoyageProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.voyageai.com/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n },\n `ai-sdk/voyage/${VERSION}`,\n );\n\n const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>\n new VoyageEmbeddingModel(modelId, {\n provider: 'voyage.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createRerankingModel = (modelId: VoyageRerankingModelId) =>\n new VoyageRerankingModel(modelId, {\n provider: 'voyage.reranking',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function () {\n throw new NoSuchModelError({\n modelId: '',\n modelType: 'languageModel',\n });\n };\n\n provider.specificationVersion = 'v3' as const;\n\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n };\n\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider as VoyageProvider;\n}\n\nexport const voyage = createVoyage();\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV3,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n voyageEmbeddingModelOptions,\n type VoyageEmbeddingModelId,\n} from './voyage-embedding-options';\nimport { voyageFailedResponseHandler } from './voyage-error';\n\ntype VoyageEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 128;\n readonly supportsParallelCalls = true;\n\n private readonly config: VoyageEmbeddingConfig;\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingModelOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_dimension: embeddingOptions?.outputDimension,\n output_dtype: embeddingOptions?.outputDtype,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.data.map(item => item.embedding),\n usage: { tokens: response.usage.total_tokens },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\nconst voyageEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n usage: z.object({\n total_tokens: z.number(),\n }),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-4-nano'\n | 'voyage-code-3.5'\n | 'voyage-code-3'\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-multilingual-2'\n | 'voyage-code-2'\n | 'voyage-2'\n | (string & {});\n\nexport const voyageEmbeddingModelOptions = z.object({\n inputType: z.enum(['query', 'document']).nullable().optional(),\n truncation: z.boolean().optional(),\n outputDimension: z.number().optional(),\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n});\n\nexport type VoyageEmbeddingModelOptions = z.infer<\n typeof voyageEmbeddingModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n detail: z.string(),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: data => data.detail,\n});\n","import type { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n voyageRerankingModelOptionsSchema,\n type VoyageRerankingModelId,\n} from './voyage-reranking-options';\n\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageRerankingModelId;\n\n private readonly config: VoyageRerankingConfig;\n\n constructor(modelId: VoyageRerankingModelId, config: VoyageRerankingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV3['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingModelOptionsSchema,\n });\n\n const warnings: SharedV3Warning[] = [];\n\n if (documents.type === 'object') {\n warnings.push({\n type: 'compatibility',\n feature: 'object documents',\n details: 'Object documents are converted to strings.',\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n query,\n documents:\n documents.type === 'text'\n ? documents.values\n : documents.values.map(value => JSON.stringify(value)),\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments,\n truncation: rerankingOptions?.truncation,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.data.map(result => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n warnings,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst voyageRerankingResponseSchema = z.object({\n data: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n usage: z.object({\n total_tokens: z.number(),\n }),\n});\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type VoyageRerankingModelId =\n | 'rerank-2.5'\n | 'rerank-2.5-lite'\n | 'rerank-2'\n | 'rerank-2-lite'\n | 'rerank-1'\n | 'rerank-lite-1'\n | (string & {});\n\nexport type VoyageRerankingModelOptions = {\n returnDocuments?: boolean;\n truncation?: boolean;\n};\n\nexport const voyageRerankingModelOptionsSchema: FlexibleSchema<VoyageRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","z","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","z"]}