@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 +7 -24
- package/dist/index.d.mts +48 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.js +113 -116
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +272 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +8 -9
- package/src/reranking/voyage-reranking-model.ts +19 -24
- package/src/voyage-embedding-model.ts +13 -35
- package/src/voyage-provider.ts +39 -29
package/CHANGELOG.md
CHANGED
|
@@ -1,33 +1,16 @@
|
|
|
1
1
|
# @ai-sdk/voyage
|
|
2
2
|
|
|
3
|
-
## 1.0.
|
|
3
|
+
## 1.0.1
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- Updated dependencies [
|
|
9
|
-
- @ai-sdk/provider@
|
|
10
|
-
- @ai-sdk/provider-utils@
|
|
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
|
|
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
|
-
-
|
|
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
|
package/dist/index.d.mts
ADDED
|
@@ -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 {
|
|
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
|
|
30
|
-
embedding(modelId: VoyageEmbeddingModelId):
|
|
31
|
-
embeddingModel(modelId: VoyageEmbeddingModelId):
|
|
32
|
-
textEmbedding(modelId: VoyageEmbeddingModelId):
|
|
33
|
-
textEmbeddingModel(modelId: VoyageEmbeddingModelId):
|
|
34
|
-
reranking(modelId: VoyageRerankingModelId):
|
|
35
|
-
rerankingModel(modelId: VoyageRerankingModelId):
|
|
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
|
-
|
|
3
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
var voyageErrorDataSchema =
|
|
39
|
-
detail:
|
|
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
|
|
59
|
+
var VoyageEmbeddingModel = class {
|
|
48
60
|
constructor(modelId, config) {
|
|
49
|
-
this.specificationVersion = "
|
|
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
|
-
|
|
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:
|
|
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.
|
|
112
|
-
usage: { tokens:
|
|
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 =
|
|
118
|
-
data:
|
|
119
|
-
|
|
120
|
-
embedding:
|
|
121
|
-
index:
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
var voyageRerankingModelOptionsSchema = lazySchema(
|
|
145
|
-
() => zodSchema(
|
|
146
|
-
|
|
147
|
-
returnDocuments:
|
|
148
|
-
truncation:
|
|
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 = "
|
|
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
|
|
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
|
|
182
|
+
} = await (0, import_provider_utils4.postJsonToApi)({
|
|
190
183
|
url: `${this.config.baseURL}/rerank`,
|
|
191
|
-
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:
|
|
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 =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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.
|
|
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
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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.
|
|
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.
|
|
24
|
-
"
|
|
23
|
+
"import": "./dist/index.mjs",
|
|
24
|
+
"require": "./dist/index.js"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@ai-sdk/provider": "
|
|
29
|
-
"@ai-sdk/provider-utils": "
|
|
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": "
|
|
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 {
|
|
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
|
|
26
|
-
readonly specificationVersion = '
|
|
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<
|
|
48
|
-
Awaited<ReturnType<
|
|
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:
|
|
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 =
|
|
109
|
-
|
|
104
|
+
const voyageRerankingResponseSchema = z.object({
|
|
105
|
+
data: z.array(
|
|
110
106
|
z.object({
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
|
22
|
+
headers: () => Record<string, string | undefined>;
|
|
26
23
|
fetch?: FetchFunction;
|
|
27
24
|
};
|
|
28
25
|
|
|
29
|
-
export class VoyageEmbeddingModel implements
|
|
30
|
-
readonly specificationVersion = '
|
|
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<
|
|
67
|
-
Awaited<ReturnType<
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
total_tokens: z.number(),
|
|
129
|
-
})
|
|
130
|
-
.nullish(),
|
|
106
|
+
usage: z.object({
|
|
107
|
+
total_tokens: z.number(),
|
|
108
|
+
}),
|
|
131
109
|
});
|
package/src/voyage-provider.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
EmbeddingModelV3,
|
|
3
3
|
NoSuchModelError,
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
21
|
-
embedding(modelId: VoyageEmbeddingModelId):
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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();
|