@ai-sdk/voyage 1.0.0-beta.2 → 1.0.1

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,33 +1,16 @@
1
1
  # @ai-sdk/voyage
2
2
 
3
- ## 1.0.0-beta.2
3
+ ## 1.0.1
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 9f0e36c: trigger release for all packages after provenance setup
8
- - Updated dependencies [9f0e36c]
9
- - @ai-sdk/provider@4.0.0-beta.13
10
- - @ai-sdk/provider-utils@5.0.0-beta.28
7
+ - a7f3c72: trigger release for all packages after provenance setup
8
+ - Updated dependencies [a7f3c72]
9
+ - @ai-sdk/provider@3.0.9
10
+ - @ai-sdk/provider-utils@4.0.24
11
11
 
12
- ## 1.0.0-beta.1
13
-
14
- ### Patch Changes
15
-
16
- - Updated dependencies [785fe16]
17
- - Updated dependencies [67df0a0]
18
- - Updated dependencies [befb78c]
19
- - Updated dependencies [0458559]
20
- - Updated dependencies [5852c0a]
21
- - Updated dependencies [fc92055]
22
- - @ai-sdk/provider-utils@5.0.0-beta.27
23
-
24
- ## 1.0.0-beta.0
12
+ ## 1.0.0
25
13
 
26
14
  ### Major Changes
27
15
 
28
- - 4963f11: add voyage ai provider with embedding and reranking support
29
-
30
- ### Patch Changes
31
-
32
- - Updated dependencies [2e98477]
33
- - @ai-sdk/provider-utils@5.0.0-beta.26
16
+ - c136e16: add voyage ai provider with embedding and reranking support on v6
@@ -0,0 +1,48 @@
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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV4, EmbeddingModelV4, RerankingModelV4 } from '@ai-sdk/provider';
1
+ import { ProviderV3, EmbeddingModelV3, RerankingModelV3 } 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 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;
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
36
  }
37
37
  interface VoyageProviderSettings {
38
38
  baseURL?: string;
package/dist/index.js CHANGED
@@ -1,66 +1,69 @@
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
+
1
29
  // 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";
30
+ var import_provider2 = require("@ai-sdk/provider");
31
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
10
32
 
11
33
  // 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
- serializeModelOptions,
21
- WORKFLOW_SERIALIZE,
22
- WORKFLOW_DESERIALIZE
23
- } from "@ai-sdk/provider-utils";
24
- import { z as z3 } from "zod/v4";
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");
25
37
 
26
38
  // src/voyage-embedding-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()
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()
33
45
  });
34
46
 
35
47
  // src/voyage-error.ts
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()
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()
40
52
  });
41
- var voyageFailedResponseHandler = createJsonErrorResponseHandler({
53
+ var voyageFailedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)({
42
54
  errorSchema: voyageErrorDataSchema,
43
55
  errorToMessage: (data) => data.detail
44
56
  });
45
57
 
46
58
  // src/voyage-embedding-model.ts
47
- var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
59
+ var VoyageEmbeddingModel = class {
48
60
  constructor(modelId, config) {
49
- this.specificationVersion = "v4";
61
+ this.specificationVersion = "v3";
50
62
  this.maxEmbeddingsPerCall = 128;
51
63
  this.supportsParallelCalls = true;
52
64
  this.modelId = modelId;
53
65
  this.config = config;
54
66
  }
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
- }
64
67
  get provider() {
65
68
  return this.config.provider;
66
69
  }
@@ -70,14 +73,13 @@ var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
70
73
  abortSignal,
71
74
  providerOptions
72
75
  }) {
73
- var _a, _b, _c, _d;
74
- const embeddingOptions = await parseProviderOptions({
76
+ const embeddingOptions = await (0, import_provider_utils2.parseProviderOptions)({
75
77
  provider: "voyage",
76
78
  providerOptions,
77
79
  schema: voyageEmbeddingModelOptions
78
80
  });
79
81
  if (values.length > this.maxEmbeddingsPerCall) {
80
- throw new TooManyEmbeddingValuesForCallError({
82
+ throw new import_provider.TooManyEmbeddingValuesForCallError({
81
83
  provider: this.provider,
82
84
  modelId: this.modelId,
83
85
  maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
@@ -88,19 +90,19 @@ var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
88
90
  responseHeaders,
89
91
  value: response,
90
92
  rawValue
91
- } = await postJsonToApi({
93
+ } = await (0, import_provider_utils2.postJsonToApi)({
92
94
  url: `${this.config.baseURL}/embeddings`,
93
- headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), headers),
95
+ headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), headers),
94
96
  body: {
95
- input: values,
96
97
  model: this.modelId,
98
+ input: values,
97
99
  input_type: embeddingOptions == null ? void 0 : embeddingOptions.inputType,
98
100
  truncation: embeddingOptions == null ? void 0 : embeddingOptions.truncation,
99
101
  output_dimension: embeddingOptions == null ? void 0 : embeddingOptions.outputDimension,
100
102
  output_dtype: embeddingOptions == null ? void 0 : embeddingOptions.outputDtype
101
103
  },
102
104
  failedResponseHandler: voyageFailedResponseHandler,
103
- successfulResponseHandler: createJsonResponseHandler(
105
+ successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(
104
106
  voyageEmbeddingResponseSchema
105
107
  ),
106
108
  abortSignal,
@@ -108,44 +110,36 @@ var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
108
110
  });
109
111
  return {
110
112
  warnings: [],
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 },
113
+ embeddings: response.data.map((item) => item.embedding),
114
+ usage: { tokens: response.usage.total_tokens },
113
115
  response: { headers: responseHeaders, body: rawValue }
114
116
  };
115
117
  }
116
118
  };
117
- var voyageEmbeddingResponseSchema = z3.object({
118
- data: z3.array(
119
- z3.object({
120
- embedding: z3.array(z3.number()),
121
- index: z3.number()
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()
122
124
  })
123
125
  ),
124
- model: z3.string(),
125
- usage: z3.object({
126
- total_tokens: z3.number()
127
- }).nullish()
126
+ usage: import_v43.z.object({
127
+ total_tokens: import_v43.z.number()
128
+ })
128
129
  });
129
130
 
130
131
  // src/reranking/voyage-reranking-model.ts
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";
132
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
133
+ var import_v45 = require("zod/v4");
140
134
 
141
135
  // src/reranking/voyage-reranking-options.ts
142
- import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
143
- import { z as z4 } from "zod/v4";
144
- var voyageRerankingModelOptionsSchema = lazySchema(
145
- () => zodSchema(
146
- z4.object({
147
- returnDocuments: z4.boolean().optional(),
148
- truncation: z4.boolean().optional()
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()
149
143
  })
150
144
  )
151
145
  );
@@ -153,7 +147,7 @@ var voyageRerankingModelOptionsSchema = lazySchema(
153
147
  // src/reranking/voyage-reranking-model.ts
154
148
  var VoyageRerankingModel = class {
155
149
  constructor(modelId, config) {
156
- this.specificationVersion = "v4";
150
+ this.specificationVersion = "v3";
157
151
  this.modelId = modelId;
158
152
  this.config = config;
159
153
  }
@@ -168,7 +162,7 @@ var VoyageRerankingModel = class {
168
162
  abortSignal,
169
163
  providerOptions
170
164
  }) {
171
- const rerankingOptions = await parseProviderOptions2({
165
+ const rerankingOptions = await (0, import_provider_utils4.parseProviderOptions)({
172
166
  provider: "voyage",
173
167
  providerOptions,
174
168
  schema: voyageRerankingModelOptionsSchema
@@ -181,24 +175,23 @@ var VoyageRerankingModel = class {
181
175
  details: "Object documents are converted to strings."
182
176
  });
183
177
  }
184
- const stringValues = documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value));
185
178
  const {
186
179
  responseHeaders,
187
180
  value: response,
188
181
  rawValue
189
- } = await postJsonToApi2({
182
+ } = await (0, import_provider_utils4.postJsonToApi)({
190
183
  url: `${this.config.baseURL}/rerank`,
191
- headers: combineHeaders2(this.config.headers(), headers),
184
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
192
185
  body: {
193
- query,
194
- documents: stringValues,
195
186
  model: this.modelId,
187
+ query,
188
+ documents: documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value)),
196
189
  top_k: topN,
197
190
  return_documents: rerankingOptions == null ? void 0 : rerankingOptions.returnDocuments,
198
191
  truncation: rerankingOptions == null ? void 0 : rerankingOptions.truncation
199
192
  },
200
193
  failedResponseHandler: voyageFailedResponseHandler,
201
- successfulResponseHandler: createJsonResponseHandler2(
194
+ successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
202
195
  voyageRerankingResponseSchema
203
196
  ),
204
197
  abortSignal,
@@ -217,29 +210,28 @@ var VoyageRerankingModel = class {
217
210
  };
218
211
  }
219
212
  };
220
- var voyageRerankingResponseSchema = lazySchema2(
221
- () => zodSchema2(
222
- z5.object({
223
- data: z5.array(
224
- z5.object({
225
- index: z5.number(),
226
- relevance_score: z5.number()
227
- })
228
- )
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()
229
218
  })
230
- )
231
- );
219
+ ),
220
+ usage: import_v45.z.object({
221
+ total_tokens: import_v45.z.number()
222
+ })
223
+ });
232
224
 
233
225
  // src/version.ts
234
- var VERSION = true ? "1.0.0-beta.2" : "0.0.0-test";
226
+ var VERSION = true ? "1.0.1" : "0.0.0-test";
235
227
 
236
228
  // src/voyage-provider.ts
237
229
  function createVoyage(options = {}) {
238
230
  var _a;
239
- const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.voyageai.com/v1";
240
- const getHeaders = () => withUserAgentSuffix(
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)(
241
233
  {
242
- Authorization: `Bearer ${loadApiKey({
234
+ Authorization: `Bearer ${(0, import_provider_utils5.loadApiKey)({
243
235
  apiKey: options.apiKey,
244
236
  environmentVariableName: "VOYAGE_API_KEY",
245
237
  description: "Voyage"
@@ -260,27 +252,32 @@ function createVoyage(options = {}) {
260
252
  headers: getHeaders,
261
253
  fetch: options.fetch
262
254
  });
263
- const provider = {
264
- specificationVersion: "v4",
265
- embedding: createEmbeddingModel,
266
- embeddingModel: createEmbeddingModel,
267
- textEmbedding: createEmbeddingModel,
268
- textEmbeddingModel: createEmbeddingModel,
269
- reranking: createRerankingModel,
270
- rerankingModel: createRerankingModel,
271
- languageModel: (modelId) => {
272
- throw new NoSuchModelError({ modelId, modelType: "languageModel" });
273
- },
274
- imageModel: (modelId) => {
275
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
276
- }
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" });
277
273
  };
278
274
  return provider;
279
275
  }
280
276
  var voyage = createVoyage();
281
- export {
277
+ // Annotate the CommonJS export names for ESM import in node:
278
+ 0 && (module.exports = {
282
279
  VERSION,
283
280
  createVoyage,
284
281
  voyage
285
- };
282
+ });
286
283
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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 EmbeddingModelV4,\n NoSuchModelError,\n RerankingModelV4,\n ProviderV4,\n} from '@ai-sdk/provider';\n\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport { VoyageEmbeddingModelId } from './voyage-embedding-options';\nimport { VoyageRerankingModelId } from './reranking/voyage-reranking-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 EmbeddingModelV4,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n VoyageEmbeddingModelId,\n voyageEmbeddingModelOptions,\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 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 { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n VoyageRerankingModelId,\n voyageRerankingModelOptionsSchema,\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 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 { FlexibleSchema, lazySchema, zodSchema } 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"]}
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 EmbeddingModelV3,\n NoSuchModelError,\n RerankingModelV3,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport { VoyageEmbeddingModelId } from './voyage-embedding-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport { 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 EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n VoyageEmbeddingModelId,\n voyageEmbeddingModelOptions,\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 { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n VoyageRerankingModelId,\n voyageRerankingModelOptionsSchema,\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 { FlexibleSchema, lazySchema, zodSchema } 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":["import_provider","import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,272 @@
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 { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
127
+ import { z as z4 } from "zod/v4";
128
+ var voyageRerankingModelOptionsSchema = lazySchema(
129
+ () => zodSchema(
130
+ z4.object({
131
+ returnDocuments: z4.boolean().optional(),
132
+ truncation: z4.boolean().optional()
133
+ })
134
+ )
135
+ );
136
+
137
+ // src/reranking/voyage-reranking-model.ts
138
+ var VoyageRerankingModel = class {
139
+ constructor(modelId, config) {
140
+ this.specificationVersion = "v3";
141
+ this.modelId = modelId;
142
+ this.config = config;
143
+ }
144
+ get provider() {
145
+ return this.config.provider;
146
+ }
147
+ async doRerank({
148
+ documents,
149
+ headers,
150
+ query,
151
+ topN,
152
+ abortSignal,
153
+ providerOptions
154
+ }) {
155
+ const rerankingOptions = await parseProviderOptions2({
156
+ provider: "voyage",
157
+ providerOptions,
158
+ schema: voyageRerankingModelOptionsSchema
159
+ });
160
+ const warnings = [];
161
+ if (documents.type === "object") {
162
+ warnings.push({
163
+ type: "compatibility",
164
+ feature: "object documents",
165
+ details: "Object documents are converted to strings."
166
+ });
167
+ }
168
+ const {
169
+ responseHeaders,
170
+ value: response,
171
+ rawValue
172
+ } = await postJsonToApi2({
173
+ url: `${this.config.baseURL}/rerank`,
174
+ headers: combineHeaders2(this.config.headers(), headers),
175
+ body: {
176
+ model: this.modelId,
177
+ query,
178
+ documents: documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value)),
179
+ top_k: topN,
180
+ return_documents: rerankingOptions == null ? void 0 : rerankingOptions.returnDocuments,
181
+ truncation: rerankingOptions == null ? void 0 : rerankingOptions.truncation
182
+ },
183
+ failedResponseHandler: voyageFailedResponseHandler,
184
+ successfulResponseHandler: createJsonResponseHandler2(
185
+ voyageRerankingResponseSchema
186
+ ),
187
+ abortSignal,
188
+ fetch: this.config.fetch
189
+ });
190
+ return {
191
+ ranking: response.data.map((result) => ({
192
+ index: result.index,
193
+ relevanceScore: result.relevance_score
194
+ })),
195
+ warnings,
196
+ response: {
197
+ headers: responseHeaders,
198
+ body: rawValue
199
+ }
200
+ };
201
+ }
202
+ };
203
+ var voyageRerankingResponseSchema = z5.object({
204
+ data: z5.array(
205
+ z5.object({
206
+ index: z5.number(),
207
+ relevance_score: z5.number()
208
+ })
209
+ ),
210
+ usage: z5.object({
211
+ total_tokens: z5.number()
212
+ })
213
+ });
214
+
215
+ // src/version.ts
216
+ var VERSION = true ? "1.0.1" : "0.0.0-test";
217
+
218
+ // src/voyage-provider.ts
219
+ function createVoyage(options = {}) {
220
+ var _a;
221
+ const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.voyageai.com/v1";
222
+ const getHeaders = () => withUserAgentSuffix(
223
+ {
224
+ Authorization: `Bearer ${loadApiKey({
225
+ apiKey: options.apiKey,
226
+ environmentVariableName: "VOYAGE_API_KEY",
227
+ description: "Voyage"
228
+ })}`,
229
+ ...options.headers
230
+ },
231
+ `ai-sdk/voyage/${VERSION}`
232
+ );
233
+ const createEmbeddingModel = (modelId) => new VoyageEmbeddingModel(modelId, {
234
+ provider: "voyage.embedding",
235
+ baseURL,
236
+ headers: getHeaders,
237
+ fetch: options.fetch
238
+ });
239
+ const createRerankingModel = (modelId) => new VoyageRerankingModel(modelId, {
240
+ provider: "voyage.reranking",
241
+ baseURL,
242
+ headers: getHeaders,
243
+ fetch: options.fetch
244
+ });
245
+ const provider = function() {
246
+ throw new NoSuchModelError({
247
+ modelId: "",
248
+ modelType: "languageModel"
249
+ });
250
+ };
251
+ provider.specificationVersion = "v3";
252
+ provider.languageModel = (modelId) => {
253
+ throw new NoSuchModelError({ modelId, modelType: "languageModel" });
254
+ };
255
+ provider.embedding = createEmbeddingModel;
256
+ provider.embeddingModel = createEmbeddingModel;
257
+ provider.textEmbedding = createEmbeddingModel;
258
+ provider.textEmbeddingModel = createEmbeddingModel;
259
+ provider.reranking = createRerankingModel;
260
+ provider.rerankingModel = createRerankingModel;
261
+ provider.imageModel = (modelId) => {
262
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
263
+ };
264
+ return provider;
265
+ }
266
+ var voyage = createVoyage();
267
+ export {
268
+ VERSION,
269
+ createVoyage,
270
+ voyage
271
+ };
272
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
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 EmbeddingModelV3,\n NoSuchModelError,\n RerankingModelV3,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport { VoyageEmbeddingModelId } from './voyage-embedding-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport { 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 EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n VoyageEmbeddingModelId,\n voyageEmbeddingModelOptions,\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 { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n VoyageRerankingModelId,\n voyageRerankingModelOptionsSchema,\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 { FlexibleSchema, lazySchema, zodSchema } 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"]}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ai-sdk/voyage",
3
- "version": "1.0.0-beta.2",
4
- "type": "module",
3
+ "version": "1.0.1",
5
4
  "license": "Apache-2.0",
6
5
  "sideEffects": false,
7
6
  "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.js",
24
- "default": "./dist/index.js"
23
+ "import": "./dist/index.mjs",
24
+ "require": "./dist/index.js"
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "4.0.0-beta.13",
29
- "@ai-sdk/provider-utils": "5.0.0-beta.28"
28
+ "@ai-sdk/provider": "3.0.9",
29
+ "@ai-sdk/provider-utils": "4.0.24"
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": "2.0.0-beta.2",
36
+ "@ai-sdk/test-server": "1.0.4",
37
37
  "@vercel/ai-tsconfig": "0.0.0"
38
38
  },
39
39
  "peerDependencies": {
@@ -43,8 +43,7 @@
43
43
  "node": ">=18"
44
44
  },
45
45
  "publishConfig": {
46
- "access": "public",
47
- "provenance": true
46
+ "access": "public"
48
47
  },
49
48
  "homepage": "https://ai-sdk.dev/docs",
50
49
  "repository": {
@@ -1,12 +1,10 @@
1
- import { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';
1
+ import { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';
2
2
  import {
3
3
  combineHeaders,
4
4
  createJsonResponseHandler,
5
5
  FetchFunction,
6
- lazySchema,
7
6
  parseProviderOptions,
8
7
  postJsonToApi,
9
- zodSchema,
10
8
  } from '@ai-sdk/provider-utils';
11
9
  import { z } from 'zod/v4';
12
10
  import { voyageFailedResponseHandler } from '../voyage-error';
@@ -22,8 +20,8 @@ type VoyageRerankingConfig = {
22
20
  fetch?: FetchFunction;
23
21
  };
24
22
 
25
- export class VoyageRerankingModel implements RerankingModelV4 {
26
- readonly specificationVersion = 'v4';
23
+ export class VoyageRerankingModel implements RerankingModelV3 {
24
+ readonly specificationVersion = 'v3';
27
25
  readonly modelId: VoyageRerankingModelId;
28
26
 
29
27
  private readonly config: VoyageRerankingConfig;
@@ -44,8 +42,8 @@ export class VoyageRerankingModel implements RerankingModelV4 {
44
42
  topN,
45
43
  abortSignal,
46
44
  providerOptions,
47
- }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<
48
- Awaited<ReturnType<RerankingModelV4['doRerank']>>
45
+ }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<
46
+ Awaited<ReturnType<RerankingModelV3['doRerank']>>
49
47
  > {
50
48
  const rerankingOptions = await parseProviderOptions({
51
49
  provider: 'voyage',
@@ -53,7 +51,7 @@ export class VoyageRerankingModel implements RerankingModelV4 {
53
51
  schema: voyageRerankingModelOptionsSchema,
54
52
  });
55
53
 
56
- const warnings: SharedV4Warning[] = [];
54
+ const warnings: SharedV3Warning[] = [];
57
55
 
58
56
  if (documents.type === 'object') {
59
57
  warnings.push({
@@ -63,11 +61,6 @@ export class VoyageRerankingModel implements RerankingModelV4 {
63
61
  });
64
62
  }
65
63
 
66
- const stringValues =
67
- documents.type === 'text'
68
- ? documents.values
69
- : documents.values.map(value => JSON.stringify(value));
70
-
71
64
  const {
72
65
  responseHeaders,
73
66
  value: response,
@@ -76,9 +69,12 @@ export class VoyageRerankingModel implements RerankingModelV4 {
76
69
  url: `${this.config.baseURL}/rerank`,
77
70
  headers: combineHeaders(this.config.headers(), headers),
78
71
  body: {
79
- query,
80
- documents: stringValues,
81
72
  model: this.modelId,
73
+ query,
74
+ documents:
75
+ documents.type === 'text'
76
+ ? documents.values
77
+ : documents.values.map(value => JSON.stringify(value)),
82
78
  top_k: topN,
83
79
  return_documents: rerankingOptions?.returnDocuments,
84
80
  truncation: rerankingOptions?.truncation,
@@ -105,15 +101,14 @@ export class VoyageRerankingModel implements RerankingModelV4 {
105
101
  }
106
102
  }
107
103
 
108
- const voyageRerankingResponseSchema = lazySchema(() =>
109
- zodSchema(
104
+ const voyageRerankingResponseSchema = z.object({
105
+ data: z.array(
110
106
  z.object({
111
- data: z.array(
112
- z.object({
113
- index: z.number(),
114
- relevance_score: z.number(),
115
- }),
116
- ),
107
+ index: z.number(),
108
+ relevance_score: z.number(),
117
109
  }),
118
110
  ),
119
- );
111
+ usage: z.object({
112
+ total_tokens: z.number(),
113
+ }),
114
+ });
@@ -1,5 +1,5 @@
1
1
  import {
2
- EmbeddingModelV4,
2
+ EmbeddingModelV3,
3
3
  TooManyEmbeddingValuesForCallError,
4
4
  } from '@ai-sdk/provider';
5
5
  import {
@@ -8,9 +8,6 @@ import {
8
8
  FetchFunction,
9
9
  parseProviderOptions,
10
10
  postJsonToApi,
11
- serializeModelOptions,
12
- WORKFLOW_SERIALIZE,
13
- WORKFLOW_DESERIALIZE,
14
11
  } from '@ai-sdk/provider-utils';
15
12
  import { z } from 'zod/v4';
16
13
  import {
@@ -22,12 +19,12 @@ import { voyageFailedResponseHandler } from './voyage-error';
22
19
  type VoyageEmbeddingConfig = {
23
20
  provider: string;
24
21
  baseURL: string;
25
- headers?: () => Record<string, string | undefined>;
22
+ headers: () => Record<string, string | undefined>;
26
23
  fetch?: FetchFunction;
27
24
  };
28
25
 
29
- export class VoyageEmbeddingModel implements EmbeddingModelV4 {
30
- readonly specificationVersion = 'v4';
26
+ export class VoyageEmbeddingModel implements EmbeddingModelV3 {
27
+ readonly specificationVersion = 'v3';
31
28
  readonly modelId: VoyageEmbeddingModelId;
32
29
 
33
30
  readonly maxEmbeddingsPerCall = 128;
@@ -35,20 +32,6 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
35
32
 
36
33
  private readonly config: VoyageEmbeddingConfig;
37
34
 
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
-
52
35
  constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {
53
36
  this.modelId = modelId;
54
37
  this.config = config;
@@ -63,8 +46,8 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
63
46
  headers,
64
47
  abortSignal,
65
48
  providerOptions,
66
- }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<
67
- Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>
49
+ }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<
50
+ Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>
68
51
  > {
69
52
  const embeddingOptions = await parseProviderOptions({
70
53
  provider: 'voyage',
@@ -87,10 +70,10 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
87
70
  rawValue,
88
71
  } = await postJsonToApi({
89
72
  url: `${this.config.baseURL}/embeddings`,
90
- headers: combineHeaders(this.config.headers?.(), headers),
73
+ headers: combineHeaders(this.config.headers(), headers),
91
74
  body: {
92
- input: values,
93
75
  model: this.modelId,
76
+ input: values,
94
77
  input_type: embeddingOptions?.inputType,
95
78
  truncation: embeddingOptions?.truncation,
96
79
  output_dimension: embeddingOptions?.outputDimension,
@@ -106,10 +89,8 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
106
89
 
107
90
  return {
108
91
  warnings: [],
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 },
92
+ embeddings: response.data.map(item => item.embedding),
93
+ usage: { tokens: response.usage.total_tokens },
113
94
  response: { headers: responseHeaders, body: rawValue },
114
95
  };
115
96
  }
@@ -122,10 +103,7 @@ const voyageEmbeddingResponseSchema = z.object({
122
103
  index: z.number(),
123
104
  }),
124
105
  ),
125
- model: z.string(),
126
- usage: z
127
- .object({
128
- total_tokens: z.number(),
129
- })
130
- .nullish(),
106
+ usage: z.object({
107
+ total_tokens: z.number(),
108
+ }),
131
109
  });
@@ -1,10 +1,9 @@
1
1
  import {
2
- EmbeddingModelV4,
2
+ EmbeddingModelV3,
3
3
  NoSuchModelError,
4
- RerankingModelV4,
5
- ProviderV4,
4
+ RerankingModelV3,
5
+ ProviderV3,
6
6
  } from '@ai-sdk/provider';
7
-
8
7
  import {
9
8
  FetchFunction,
10
9
  loadApiKey,
@@ -13,17 +12,22 @@ import {
13
12
  } from '@ai-sdk/provider-utils';
14
13
  import { VoyageEmbeddingModel } from './voyage-embedding-model';
15
14
  import { VoyageEmbeddingModelId } from './voyage-embedding-options';
16
- import { VoyageRerankingModelId } from './reranking/voyage-reranking-options';
17
15
  import { VoyageRerankingModel } from './reranking/voyage-reranking-model';
16
+ import { VoyageRerankingModelId } from './reranking/voyage-reranking-options';
18
17
  import { VERSION } from './version';
19
18
 
20
- export interface VoyageProvider extends ProviderV4 {
21
- embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
22
- embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
23
- textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
24
- textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
25
- reranking(modelId: VoyageRerankingModelId): RerankingModelV4;
26
- rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;
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;
27
31
  }
28
32
 
29
33
  export interface VoyageProviderSettings {
@@ -68,25 +72,31 @@ export function createVoyage(
68
72
  fetch: options.fetch,
69
73
  });
70
74
 
71
- const provider: VoyageProvider = {
72
- specificationVersion: 'v4' as const,
73
- embedding: createEmbeddingModel,
74
- embeddingModel: createEmbeddingModel,
75
- textEmbedding: createEmbeddingModel,
76
- textEmbeddingModel: createEmbeddingModel,
77
- reranking: createRerankingModel,
78
- rerankingModel: createRerankingModel,
79
-
80
- languageModel: (modelId: string) => {
81
- throw new NoSuchModelError({ modelId, modelType: 'languageModel' });
82
- },
83
-
84
- imageModel: (modelId: string) => {
85
- throw new NoSuchModelError({ modelId, modelType: 'imageModel' });
86
- },
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' });
87
97
  };
88
98
 
89
- return provider;
99
+ return provider as VoyageProvider;
90
100
  }
91
101
 
92
102
  export const voyage = createVoyage();