@ai-sdk/voyage 2.0.50 → 2.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @ai-sdk/voyage
2
2
 
3
+ ## 2.0.52
4
+
5
+ ### Patch Changes
6
+
7
+ - ede5b89: chore: migrate package builds from tsup to tsdown
8
+ - Updated dependencies [ede5b89]
9
+ - @ai-sdk/provider@4.0.20
10
+ - @ai-sdk/provider-utils@5.0.52
11
+
12
+ ## 2.0.51
13
+
14
+ ### Patch Changes
15
+
16
+ - c2511c1: fix: use standards-compliant User-Agent header
17
+ - Updated dependencies [c2511c1]
18
+ - @ai-sdk/provider-utils@5.0.51
19
+
3
20
  ## 2.0.50
4
21
 
5
22
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,48 +1,52 @@
1
- import { ProviderV4, EmbeddingModelV4, RerankingModelV4 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { z } from 'zod/v4';
4
-
1
+ import { EmbeddingModelV4, ProviderV4, RerankingModelV4 } from "@ai-sdk/provider";
2
+ import { FetchFunction } from "@ai-sdk/provider-utils";
3
+ import { z } from "zod/v4";
4
+ //#region src/voyage-embedding-model-options.d.ts
5
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
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
- }>>;
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
20
  }, z.core.$strip>;
21
21
  type VoyageEmbeddingModelOptions = z.infer<typeof voyageEmbeddingModelOptions>;
22
-
22
+ //#endregion
23
+ //#region src/reranking/voyage-reranking-model-options.d.ts
23
24
  type VoyageRerankingModelId = 'rerank-2.5' | 'rerank-2.5-lite' | 'rerank-2' | 'rerank-2-lite' | 'rerank-1' | 'rerank-lite-1' | (string & {});
24
25
  type VoyageRerankingModelOptions = {
25
- returnDocuments?: boolean;
26
- truncation?: boolean;
26
+ returnDocuments?: boolean;
27
+ truncation?: boolean;
27
28
  };
28
-
29
+ //#endregion
30
+ //#region src/voyage-provider.d.ts
29
31
  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;
32
+ embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
33
+ embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
34
+ textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
35
+ textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;
36
+ reranking(modelId: VoyageRerankingModelId): RerankingModelV4;
37
+ rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;
36
38
  }
37
39
  interface VoyageProviderSettings {
38
- baseURL?: string;
39
- apiKey?: string;
40
- headers?: Record<string, string>;
41
- fetch?: FetchFunction;
40
+ baseURL?: string;
41
+ apiKey?: string;
42
+ headers?: Record<string, string>;
43
+ fetch?: FetchFunction;
42
44
  }
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 };
45
+ export declare function createVoyage(options?: VoyageProviderSettings): VoyageProvider;
46
+ export declare const voyage: VoyageProvider;
47
+ //#endregion
48
+ //#region src/version.d.ts
49
+ export declare const VERSION: string;
50
+ //#endregion
51
+ export type { VoyageEmbeddingModelOptions, VoyageProvider, VoyageProviderSettings, VoyageRerankingModelOptions };
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/voyage-embedding-model-options.ts","../src/reranking/voyage-reranking-model-options.ts","../src/voyage-provider.ts","../src/version.ts"],"mappings":";;;;KAEY;cAmBC,6BAA2B,EAAA;;;;;;;;;;;;;;GAOtC,EAAA,KAAA;KAEU,8BAA8B,EAAE,aACnC;;;KCxBG;KASA;EACV;EACA;;;;UCAe,uBAAuB;EACtC,UAAU,SAAS,yBAAyB;EAC5C,eAAe,SAAS,yBAAyB;EACjD,cAAc,SAAS,yBAAyB;EAChD,mBAAmB,SAAS,yBAAyB;EACrD,UAAU,SAAS,yBAAyB;EAC5C,eAAe,SAAS,yBAAyB;;UAGlC;EACf;EACA;EACA,UAAU;EACV,QAAQ;;wBAGM,aACd,UAAS,yBACR;qBAsDU,QAAM;;;qBCzFN"}
package/dist/index.js CHANGED
@@ -1,287 +1,209 @@
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
- serializeModelOptions,
21
- WORKFLOW_SERIALIZE,
22
- WORKFLOW_DESERIALIZE
23
- } from "@ai-sdk/provider-utils";
24
- import { z as z3 } from "zod/v4";
25
-
26
- // src/voyage-embedding-model-options.ts
1
+ import { NoSuchModelError, TooManyEmbeddingValuesForCallError } from "@ai-sdk/provider";
2
+ import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, createJsonErrorResponseHandler, createJsonResponseHandler, lazySchema, loadApiKey, parseProviderOptions, postJsonToApi, serializeModelOptions, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
27
3
  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()
33
- });
34
-
35
- // 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()
4
+ //#region src/voyage-embedding-model-options.ts
5
+ const voyageEmbeddingModelOptions = z.object({
6
+ inputType: z.enum(["query", "document"]).nullable().optional(),
7
+ truncation: z.boolean().optional(),
8
+ outputDimension: z.number().optional(),
9
+ outputDtype: z.enum([
10
+ "float",
11
+ "int8",
12
+ "uint8",
13
+ "binary",
14
+ "ubinary"
15
+ ]).optional()
40
16
  });
41
- var voyageFailedResponseHandler = createJsonErrorResponseHandler({
42
- errorSchema: voyageErrorDataSchema,
43
- errorToMessage: (data) => data.detail
17
+ //#endregion
18
+ //#region src/voyage-error.ts
19
+ const voyageErrorDataSchema = z.object({ detail: z.string() });
20
+ const voyageFailedResponseHandler = createJsonErrorResponseHandler({
21
+ errorSchema: voyageErrorDataSchema,
22
+ errorToMessage: (data) => data.detail
44
23
  });
45
-
46
- // src/voyage-embedding-model.ts
47
- var VoyageEmbeddingModel = class _VoyageEmbeddingModel {
48
- constructor(modelId, config) {
49
- this.specificationVersion = "v4";
50
- this.maxEmbeddingsPerCall = 128;
51
- this.supportsParallelCalls = true;
52
- this.modelId = modelId;
53
- this.config = config;
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
- }
64
- get provider() {
65
- return this.config.provider;
66
- }
67
- async doEmbed({
68
- values,
69
- headers,
70
- abortSignal,
71
- providerOptions
72
- }) {
73
- const embeddingOptions = await parseProviderOptions({
74
- provider: "voyage",
75
- providerOptions,
76
- schema: voyageEmbeddingModelOptions
77
- });
78
- if (values.length > this.maxEmbeddingsPerCall) {
79
- throw new TooManyEmbeddingValuesForCallError({
80
- provider: this.provider,
81
- modelId: this.modelId,
82
- maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
83
- values
84
- });
85
- }
86
- const {
87
- responseHeaders,
88
- value: response,
89
- rawValue
90
- } = await postJsonToApi({
91
- url: `${this.config.baseURL}/embeddings`,
92
- headers: combineHeaders(this.config.headers?.(), headers),
93
- body: {
94
- input: values,
95
- model: this.modelId,
96
- input_type: embeddingOptions?.inputType,
97
- truncation: embeddingOptions?.truncation,
98
- output_dimension: embeddingOptions?.outputDimension,
99
- output_dtype: embeddingOptions?.outputDtype
100
- },
101
- failedResponseHandler: voyageFailedResponseHandler,
102
- successfulResponseHandler: createJsonResponseHandler(
103
- voyageEmbeddingResponseSchema
104
- ),
105
- abortSignal,
106
- fetch: this.config.fetch
107
- });
108
- return {
109
- warnings: [],
110
- embeddings: response.data.sort((a, b) => a.index - b.index).map((item) => item.embedding),
111
- usage: { tokens: response.usage?.total_tokens ?? 0 },
112
- response: { headers: responseHeaders, body: rawValue }
113
- };
114
- }
24
+ //#endregion
25
+ //#region src/voyage-embedding-model.ts
26
+ var VoyageEmbeddingModel = class VoyageEmbeddingModel {
27
+ static [WORKFLOW_SERIALIZE](model) {
28
+ return serializeModelOptions({
29
+ modelId: model.modelId,
30
+ config: model.config
31
+ });
32
+ }
33
+ static [WORKFLOW_DESERIALIZE](options) {
34
+ return new VoyageEmbeddingModel(options.modelId, options.config);
35
+ }
36
+ constructor(modelId, config) {
37
+ this.specificationVersion = "v4";
38
+ this.maxEmbeddingsPerCall = 128;
39
+ this.supportsParallelCalls = true;
40
+ this.modelId = modelId;
41
+ this.config = config;
42
+ }
43
+ get provider() {
44
+ return this.config.provider;
45
+ }
46
+ async doEmbed({ values, headers, abortSignal, providerOptions }) {
47
+ const embeddingOptions = await parseProviderOptions({
48
+ provider: "voyage",
49
+ providerOptions,
50
+ schema: voyageEmbeddingModelOptions
51
+ });
52
+ if (values.length > this.maxEmbeddingsPerCall) throw new TooManyEmbeddingValuesForCallError({
53
+ provider: this.provider,
54
+ modelId: this.modelId,
55
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
56
+ values
57
+ });
58
+ const { responseHeaders, value: response, rawValue } = await postJsonToApi({
59
+ url: `${this.config.baseURL}/embeddings`,
60
+ headers: combineHeaders(this.config.headers?.(), headers),
61
+ body: {
62
+ input: values,
63
+ model: this.modelId,
64
+ input_type: embeddingOptions?.inputType,
65
+ truncation: embeddingOptions?.truncation,
66
+ output_dimension: embeddingOptions?.outputDimension,
67
+ output_dtype: embeddingOptions?.outputDtype
68
+ },
69
+ failedResponseHandler: voyageFailedResponseHandler,
70
+ successfulResponseHandler: createJsonResponseHandler(voyageEmbeddingResponseSchema),
71
+ abortSignal,
72
+ fetch: this.config.fetch
73
+ });
74
+ return {
75
+ warnings: [],
76
+ embeddings: response.data.sort((a, b) => a.index - b.index).map((item) => item.embedding),
77
+ usage: { tokens: response.usage?.total_tokens ?? 0 },
78
+ response: {
79
+ headers: responseHeaders,
80
+ body: rawValue
81
+ }
82
+ };
83
+ }
115
84
  };
116
- var voyageEmbeddingResponseSchema = z3.object({
117
- data: z3.array(
118
- z3.object({
119
- embedding: z3.array(z3.number()),
120
- index: z3.number()
121
- })
122
- ),
123
- model: z3.string(),
124
- usage: z3.object({
125
- total_tokens: z3.number()
126
- }).nullish()
85
+ const voyageEmbeddingResponseSchema = z.object({
86
+ data: z.array(z.object({
87
+ embedding: z.array(z.number()),
88
+ index: z.number()
89
+ })),
90
+ model: z.string(),
91
+ usage: z.object({ total_tokens: z.number() }).nullish()
127
92
  });
128
-
129
- // src/reranking/voyage-reranking-model.ts
130
- import {
131
- combineHeaders as combineHeaders2,
132
- createJsonResponseHandler as createJsonResponseHandler2,
133
- lazySchema as lazySchema2,
134
- parseProviderOptions as parseProviderOptions2,
135
- postJsonToApi as postJsonToApi2,
136
- zodSchema as zodSchema2
137
- } from "@ai-sdk/provider-utils";
138
- import { z as z5 } from "zod/v4";
139
-
140
- // src/reranking/voyage-reranking-model-options.ts
141
- import {
142
- lazySchema,
143
- zodSchema
144
- } from "@ai-sdk/provider-utils";
145
- import { z as z4 } from "zod/v4";
146
- var voyageRerankingModelOptionsSchema = lazySchema(
147
- () => zodSchema(
148
- z4.object({
149
- returnDocuments: z4.boolean().optional(),
150
- truncation: z4.boolean().optional()
151
- })
152
- )
153
- );
154
-
155
- // src/reranking/voyage-reranking-model.ts
93
+ //#endregion
94
+ //#region src/reranking/voyage-reranking-model-options.ts
95
+ const voyageRerankingModelOptionsSchema = lazySchema(() => zodSchema(z.object({
96
+ returnDocuments: z.boolean().optional(),
97
+ truncation: z.boolean().optional()
98
+ })));
99
+ //#endregion
100
+ //#region src/reranking/voyage-reranking-model.ts
156
101
  var VoyageRerankingModel = class {
157
- constructor(modelId, config) {
158
- this.specificationVersion = "v4";
159
- this.modelId = modelId;
160
- this.config = config;
161
- }
162
- get provider() {
163
- return this.config.provider;
164
- }
165
- async doRerank({
166
- documents,
167
- headers,
168
- query,
169
- topN,
170
- abortSignal,
171
- providerOptions
172
- }) {
173
- const rerankingOptions = await parseProviderOptions2({
174
- provider: "voyage",
175
- providerOptions,
176
- schema: voyageRerankingModelOptionsSchema
177
- });
178
- const warnings = [];
179
- if (documents.type === "object") {
180
- warnings.push({
181
- type: "compatibility",
182
- feature: "object documents",
183
- details: "Object documents are converted to strings."
184
- });
185
- }
186
- const stringValues = documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value));
187
- const {
188
- responseHeaders,
189
- value: response,
190
- rawValue
191
- } = await postJsonToApi2({
192
- url: `${this.config.baseURL}/rerank`,
193
- headers: combineHeaders2(this.config.headers(), headers),
194
- body: {
195
- query,
196
- documents: stringValues,
197
- model: this.modelId,
198
- top_k: topN,
199
- return_documents: rerankingOptions?.returnDocuments,
200
- truncation: rerankingOptions?.truncation
201
- },
202
- failedResponseHandler: voyageFailedResponseHandler,
203
- successfulResponseHandler: createJsonResponseHandler2(
204
- voyageRerankingResponseSchema
205
- ),
206
- abortSignal,
207
- fetch: this.config.fetch
208
- });
209
- return {
210
- ranking: response.data.map((result) => ({
211
- index: result.index,
212
- relevanceScore: result.relevance_score
213
- })),
214
- warnings,
215
- response: {
216
- headers: responseHeaders,
217
- body: rawValue
218
- }
219
- };
220
- }
102
+ constructor(modelId, config) {
103
+ this.specificationVersion = "v4";
104
+ this.modelId = modelId;
105
+ this.config = config;
106
+ }
107
+ get provider() {
108
+ return this.config.provider;
109
+ }
110
+ async doRerank({ documents, headers, query, topN, abortSignal, providerOptions }) {
111
+ const rerankingOptions = await parseProviderOptions({
112
+ provider: "voyage",
113
+ providerOptions,
114
+ schema: voyageRerankingModelOptionsSchema
115
+ });
116
+ const warnings = [];
117
+ if (documents.type === "object") warnings.push({
118
+ type: "compatibility",
119
+ feature: "object documents",
120
+ details: "Object documents are converted to strings."
121
+ });
122
+ const stringValues = documents.type === "text" ? documents.values : documents.values.map((value) => JSON.stringify(value));
123
+ const { responseHeaders, value: response, rawValue } = await postJsonToApi({
124
+ url: `${this.config.baseURL}/rerank`,
125
+ headers: combineHeaders(this.config.headers(), headers),
126
+ body: {
127
+ query,
128
+ documents: stringValues,
129
+ model: this.modelId,
130
+ top_k: topN,
131
+ return_documents: rerankingOptions?.returnDocuments,
132
+ truncation: rerankingOptions?.truncation
133
+ },
134
+ failedResponseHandler: voyageFailedResponseHandler,
135
+ successfulResponseHandler: createJsonResponseHandler(voyageRerankingResponseSchema),
136
+ abortSignal,
137
+ fetch: this.config.fetch
138
+ });
139
+ return {
140
+ ranking: response.data.map((result) => ({
141
+ index: result.index,
142
+ relevanceScore: result.relevance_score
143
+ })),
144
+ warnings,
145
+ response: {
146
+ headers: responseHeaders,
147
+ body: rawValue
148
+ }
149
+ };
150
+ }
221
151
  };
222
- var voyageRerankingResponseSchema = lazySchema2(
223
- () => zodSchema2(
224
- z5.object({
225
- data: z5.array(
226
- z5.object({
227
- index: z5.number(),
228
- relevance_score: z5.number()
229
- })
230
- )
231
- })
232
- )
233
- );
234
-
235
- // src/version.ts
236
- var VERSION = true ? "2.0.50" : "0.0.0-test";
237
-
238
- // src/voyage-provider.ts
152
+ const voyageRerankingResponseSchema = lazySchema(() => zodSchema(z.object({ data: z.array(z.object({
153
+ index: z.number(),
154
+ relevance_score: z.number()
155
+ })) })));
156
+ //#endregion
157
+ //#region src/version.ts
158
+ const VERSION = "2.0.52";
159
+ //#endregion
160
+ //#region src/voyage-provider.ts
239
161
  function createVoyage(options = {}) {
240
- const baseURL = withoutTrailingSlash(options.baseURL) ?? "https://api.voyageai.com/v1";
241
- const getHeaders = () => withUserAgentSuffix(
242
- {
243
- Authorization: `Bearer ${loadApiKey({
244
- apiKey: options.apiKey,
245
- environmentVariableName: "VOYAGE_API_KEY",
246
- description: "Voyage"
247
- })}`,
248
- ...options.headers
249
- },
250
- `ai-sdk/voyage/${VERSION}`
251
- );
252
- const createEmbeddingModel = (modelId) => new VoyageEmbeddingModel(modelId, {
253
- provider: "voyage.embedding",
254
- baseURL,
255
- headers: getHeaders,
256
- fetch: options.fetch
257
- });
258
- const createRerankingModel = (modelId) => new VoyageRerankingModel(modelId, {
259
- provider: "voyage.reranking",
260
- baseURL,
261
- headers: getHeaders,
262
- fetch: options.fetch
263
- });
264
- const provider = {
265
- specificationVersion: "v4",
266
- embedding: createEmbeddingModel,
267
- embeddingModel: createEmbeddingModel,
268
- textEmbedding: createEmbeddingModel,
269
- textEmbeddingModel: createEmbeddingModel,
270
- reranking: createRerankingModel,
271
- rerankingModel: createRerankingModel,
272
- languageModel: (modelId) => {
273
- throw new NoSuchModelError({ modelId, modelType: "languageModel" });
274
- },
275
- imageModel: (modelId) => {
276
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
277
- }
278
- };
279
- return provider;
162
+ const baseURL = withoutTrailingSlash(options.baseURL) ?? "https://api.voyageai.com/v1";
163
+ const getHeaders = () => withUserAgentSuffix({
164
+ Authorization: `Bearer ${loadApiKey({
165
+ apiKey: options.apiKey,
166
+ environmentVariableName: "VOYAGE_API_KEY",
167
+ description: "Voyage"
168
+ })}`,
169
+ ...options.headers
170
+ }, `ai-sdk-voyage/${VERSION}`);
171
+ const createEmbeddingModel = (modelId) => new VoyageEmbeddingModel(modelId, {
172
+ provider: "voyage.embedding",
173
+ baseURL,
174
+ headers: getHeaders,
175
+ fetch: options.fetch
176
+ });
177
+ const createRerankingModel = (modelId) => new VoyageRerankingModel(modelId, {
178
+ provider: "voyage.reranking",
179
+ baseURL,
180
+ headers: getHeaders,
181
+ fetch: options.fetch
182
+ });
183
+ return {
184
+ specificationVersion: "v4",
185
+ embedding: createEmbeddingModel,
186
+ embeddingModel: createEmbeddingModel,
187
+ textEmbedding: createEmbeddingModel,
188
+ textEmbeddingModel: createEmbeddingModel,
189
+ reranking: createRerankingModel,
190
+ rerankingModel: createRerankingModel,
191
+ languageModel: (modelId) => {
192
+ throw new NoSuchModelError({
193
+ modelId,
194
+ modelType: "languageModel"
195
+ });
196
+ },
197
+ imageModel: (modelId) => {
198
+ throw new NoSuchModelError({
199
+ modelId,
200
+ modelType: "imageModel"
201
+ });
202
+ }
203
+ };
280
204
  }
281
- var voyage = createVoyage();
282
- export {
283
- VERSION,
284
- createVoyage,
285
- voyage
286
- };
205
+ const voyage = createVoyage();
206
+ //#endregion
207
+ export { VERSION, createVoyage, voyage };
208
+
287
209
  //# 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-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"]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/voyage-embedding-model-options.ts","../src/voyage-error.ts","../src/voyage-embedding-model.ts","../src/reranking/voyage-reranking-model-options.ts","../src/reranking/voyage-reranking-model.ts","../src/version.ts","../src/voyage-provider.ts"],"sourcesContent":["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 {\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 {\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","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","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/voyage",
3
- "version": "2.0.50",
3
+ "version": "2.0.52",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -25,14 +25,14 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "4.0.19",
29
- "@ai-sdk/provider-utils": "5.0.50"
28
+ "@ai-sdk/provider": "4.0.20",
29
+ "@ai-sdk/provider-utils": "5.0.52"
30
30
  },
31
31
  "devDependencies": {
32
- "@ai-sdk/test-server": "2.0.2",
32
+ "@ai-sdk/test-server": "2.0.3",
33
33
  "@types/node": "22.19.19",
34
34
  "@vercel/ai-tsconfig": "0.0.0",
35
- "tsup": "^8.5.1",
35
+ "tsdown": "^0.23.0",
36
36
  "typescript": "5.8.3",
37
37
  "zod": "3.25.76"
38
38
  },
@@ -59,9 +59,9 @@
59
59
  "ai"
60
60
  ],
61
61
  "scripts": {
62
- "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
63
- "build:watch": "pnpm clean && tsup --watch",
64
- "clean": "del-cli dist *.tsbuildinfo",
62
+ "build": "pnpm clean && tsdown",
63
+ "build:watch": "pnpm clean && tsdown --watch",
64
+ "clean": "del-cli *.tsbuildinfo",
65
65
  "type-check": "tsc --build",
66
66
  "test": "pnpm test:node && pnpm test:edge",
67
67
  "test:update": "pnpm test:node -u",
@@ -48,7 +48,7 @@ export function createVoyage(
48
48
  })}`,
49
49
  ...options.headers,
50
50
  },
51
- `ai-sdk/voyage/${VERSION}`,
51
+ `ai-sdk-voyage/${VERSION}`,
52
52
  );
53
53
 
54
54
  const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>