@openclaw/mistral-provider 2026.10.10 → 2026.11.5-beta.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/dist/.setup/{provider-catalog-FxQGDjmD.mjs → provider-catalog-CfC25-Ae.mjs} +1 -0
- package/dist/.source-module-urls/59880ee0d0c03f09f1598ceefc39c2ada1f9297be8422e5fd67d8d68747a879b.json +1 -0
- package/dist/api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/memory-embedding-adapter.js +18 -3
- package/dist/model-definitions.js +1 -1
- package/dist/provider-catalog.js +1 -1
- package/dist/realtime-transcription-provider-factory.js +6 -22
- package/openclaw.plugin.json +1 -0
- package/package.json +4 -4
- package/dist/.source-module-urls/20c5b2966bae2c7bd5c487808206229836a6f1cb506af9ed1979deefcc25cd0d.json +0 -1
- package/dist/embedding-provider.js +0 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"entries":[{"output":"api.js","source":"extensions/mistral/api.ts"},{"output":"capability-catalog.js","source":"extensions/mistral/capability-catalog.ts"},{"output":"index.js","source":"extensions/mistral/index.ts"},{"output":"media-understanding-provider.js","source":"extensions/mistral/media-understanding-provider.ts"},{"output":"memory-embedding-adapter.js","source":"extensions/mistral/memory-embedding-adapter.ts"},{"output":"model-definitions.js","source":"extensions/mistral/model-definitions.ts"},{"output":"onboard.js","source":"extensions/mistral/onboard.ts"},{"output":"provider-catalog.js","source":"extensions/mistral/provider-catalog.ts"},{"output":"provider-policy-api.js","source":"extensions/mistral/provider-policy-api.ts"},{"output":"realtime-transcription-provider-factory.js","source":"extensions/mistral/realtime-transcription-provider-factory.ts"}],"chunks":[{"output":".setup/provider-catalog-CfC25-Ae.mjs","sha256":"6038013aee0866716f5b247cf07a561f1d1d1e9dfbe7ad74cd6610f11d7d6b7a","facadeSource":null,"sources":["extensions/mistral/openclaw.plugin.json","extensions/mistral/provider-catalog.ts"]},{"output":"api.js","sha256":"51afdc5f0a71a4aaa74fe0c984973a479498a55e5c4d3c82fcfe852434bd0d1a","facadeSource":"extensions/mistral/api.ts","sources":["extensions/mistral/api.ts"]},{"output":"capability-catalog.js","sha256":"249f1c5c1fb1475d8b2382b7523532cb39bb0f4e9204d70905be0997962af345","facadeSource":"extensions/mistral/capability-catalog.ts","sources":["extensions/mistral/capability-catalog.ts"]},{"output":"index.js","sha256":"77ca43cf46d0ff2ceaef82ab688ef09429ede575727f636582ac649d11a55c86","facadeSource":"extensions/mistral/index.ts","sources":["extensions/mistral/index.ts"]},{"output":"media-understanding-provider.js","sha256":"2c8ecc082d2fed68b6ab340b402c5b768345e5444f82cc1efc97cfff5e5bda05","facadeSource":"extensions/mistral/media-understanding-provider.ts","sources":["extensions/mistral/media-understanding-provider.ts"]},{"output":"memory-embedding-adapter.js","sha256":"a090d59d86a204cee94668f5394a7c6f94f0a3b3f6045835670c26098d01858c","facadeSource":"extensions/mistral/memory-embedding-adapter.ts","sources":["extensions/mistral/memory-embedding-adapter.ts"]},{"output":"model-definitions.js","sha256":"f2fe5d26256c4cfb0fcbf8f2656554d6cb5727b125755f7c3bd675553e4e80c8","facadeSource":"extensions/mistral/model-definitions.ts","sources":["extensions/mistral/model-definitions.ts"]},{"output":"onboard.js","sha256":"075f7b44d632f19ffd457754082e6a30584d42734ed3062a90617fc7bb5ef746","facadeSource":"extensions/mistral/onboard.ts","sources":["extensions/mistral/onboard.ts"]},{"output":"provider-catalog.js","sha256":"f92a1c3697eef3280be4e56673a1dadc850a0173078d5b9eae5d0502977bbd31","facadeSource":"extensions/mistral/provider-catalog.ts","sources":[]},{"output":"provider-policy-api.js","sha256":"4f476bb684d00f2e67a75307dedaebea1b30bd9e799ef5942fe4d5f347e93f25","facadeSource":"extensions/mistral/provider-policy-api.ts","sources":["extensions/mistral/provider-policy-api.ts"]},{"output":"realtime-transcription-provider-factory.js","sha256":"039e13b15e21b5df5392d53081ded70714c5da68d19019bf928cdb9fc63764c3","facadeSource":"extensions/mistral/realtime-transcription-provider-factory.ts","sources":["extensions/mistral/realtime-transcription-provider-factory.ts"]}],"unrenderedSources":[]}
|
package/dist/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MISTRAL_MEDIUM_3_5_ID, MISTRAL_SMALL_4_ID, MISTRAL_SMALL_LATEST_ID, resolveMistralReasoningEffortMap } from "./provider-policy-api.js";
|
|
2
|
-
import { t as buildMistralProvider } from "./.setup/provider-catalog-
|
|
2
|
+
import { t as buildMistralProvider } from "./.setup/provider-catalog-CfC25-Ae.mjs";
|
|
3
3
|
import { MISTRAL_BASE_URL, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, buildMistralModelDefinition } from "./model-definitions.js";
|
|
4
4
|
import { applyMistralConfig, applyMistralProviderConfig } from "./onboard.js";
|
|
5
5
|
import { asOptionalObjectRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveThinkingProfile } from "./provider-policy-api.js";
|
|
2
|
-
import { n as openclaw_plugin_default } from "./.setup/provider-catalog-
|
|
2
|
+
import { n as openclaw_plugin_default } from "./.setup/provider-catalog-CfC25-Ae.mjs";
|
|
3
3
|
import { applyMistralConnectionConfig } from "./onboard.js";
|
|
4
4
|
import { applyMistralModelCompat } from "./api.js";
|
|
5
5
|
import { mistralMediaUnderstandingProvider } from "./media-understanding-provider.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MISTRAL_BASE_URL } from "./model-definitions.js";
|
|
2
|
-
import {
|
|
3
|
-
import { embeddingProviderOwnsDestination, isMissingEmbeddingApiKeyError, sanitizeEmbeddingCacheHeaders } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
|
|
2
|
+
import { createRemoteEmbeddingProvider, embeddingProviderOwnsDestination, isMissingEmbeddingApiKeyError, normalizeEmbeddingModelWithPrefixes, resolveRemoteEmbeddingClient, sanitizeEmbeddingCacheHeaders } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
|
|
4
3
|
// extensions/mistral/memory-embedding-adapter.ts
|
|
4
|
+
const DEFAULT_MISTRAL_EMBEDDING_MODEL = "mistral-embed";
|
|
5
5
|
const EXCLUDED_EMBEDDING_HEADERS = [
|
|
6
6
|
"authorization",
|
|
7
7
|
"content-type",
|
|
@@ -17,10 +17,25 @@ const mistralMemoryEmbeddingProviderAdapter = {
|
|
|
17
17
|
allowExplicitWhenConfiguredAuto: true,
|
|
18
18
|
shouldContinueAutoSelection: isMissingEmbeddingApiKeyError,
|
|
19
19
|
create: async (options) => {
|
|
20
|
-
const
|
|
20
|
+
const preparedOptions = {
|
|
21
21
|
...options,
|
|
22
22
|
provider: "mistral",
|
|
23
23
|
fallback: "none"
|
|
24
|
+
};
|
|
25
|
+
const client = await resolveRemoteEmbeddingClient({
|
|
26
|
+
provider: "mistral",
|
|
27
|
+
options: preparedOptions,
|
|
28
|
+
defaultBaseUrl: MISTRAL_BASE_URL,
|
|
29
|
+
normalizeModel: (model) => normalizeEmbeddingModelWithPrefixes({
|
|
30
|
+
model,
|
|
31
|
+
defaultModel: DEFAULT_MISTRAL_EMBEDDING_MODEL,
|
|
32
|
+
prefixes: ["mistral/"]
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
const provider = createRemoteEmbeddingProvider({
|
|
36
|
+
id: "mistral",
|
|
37
|
+
client,
|
|
38
|
+
errorPrefix: "mistral embeddings failed"
|
|
24
39
|
});
|
|
25
40
|
const headers = sanitizeEmbeddingCacheHeaders(client.headers, EXCLUDED_EMBEDDING_HEADERS);
|
|
26
41
|
const usesDefaultIdentity = headers.length === 0 && embeddingProviderOwnsDestination({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as openclaw_plugin_default, t as buildMistralProvider } from "./.setup/provider-catalog-
|
|
1
|
+
import { n as openclaw_plugin_default, t as buildMistralProvider } from "./.setup/provider-catalog-CfC25-Ae.mjs";
|
|
2
2
|
import { readManifestProviderDefaultModelRef } from "openclaw/plugin-sdk/provider-catalog-shared";
|
|
3
3
|
const MISTRAL_BASE_URL = openclaw_plugin_default.modelCatalog.providers.mistral.baseUrl;
|
|
4
4
|
const MISTRAL_DEFAULT_MODEL_REF = readManifestProviderDefaultModelRef(openclaw_plugin_default, "mistral");
|
package/dist/provider-catalog.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as buildMistralProvider } from "./.setup/provider-catalog-
|
|
1
|
+
export { t as buildMistralProvider } from "./.setup/provider-catalog-CfC25-Ae.mjs";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { asOptionalRecord, normalizeOptionalString, parseFiniteNumber } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
|
+
import { measureTranscriptDeltaBytes } from "openclaw/plugin-sdk/realtime-transcription-provider";
|
|
2
3
|
import { normalizeResolvedSecretInputString, normalizeSecretInput } from "openclaw/plugin-sdk/secret-input";
|
|
3
4
|
// extensions/mistral/realtime-transcription-provider-factory.ts
|
|
4
5
|
const MISTRAL_REALTIME_DEFAULT_BASE_URL = "wss://api.mistral.ai";
|
|
@@ -6,11 +7,6 @@ const MISTRAL_REALTIME_DEFAULT_MODEL = "voxtral-mini-transcribe-realtime-2602";
|
|
|
6
7
|
const MISTRAL_REALTIME_DEFAULT_SAMPLE_RATE = 8e3;
|
|
7
8
|
const MISTRAL_REALTIME_DEFAULT_ENCODING = "pcm_mulaw";
|
|
8
9
|
const MISTRAL_REALTIME_DEFAULT_DELAY_MS = 800;
|
|
9
|
-
const MISTRAL_REALTIME_CONNECT_TIMEOUT_MS = 1e4;
|
|
10
|
-
const MISTRAL_REALTIME_CLOSE_TIMEOUT_MS = 5e3;
|
|
11
|
-
const MISTRAL_REALTIME_MAX_RECONNECT_ATTEMPTS = 5;
|
|
12
|
-
const MISTRAL_REALTIME_RECONNECT_DELAY_MS = 1e3;
|
|
13
|
-
const MISTRAL_REALTIME_MAX_QUEUED_BYTES = 2097152;
|
|
14
10
|
const MISTRAL_REALTIME_SPEECH_CONTENT = /[\p{L}\p{N}]/u;
|
|
15
11
|
const MISTRAL_REALTIME_MAX_PARTIAL_TRANSCRIPT_BYTES = 262144;
|
|
16
12
|
const MISTRAL_REALTIME_PARTIAL_TRANSCRIPT_OVERFLOW_MESSAGE = "Mistral realtime transcription exceeded the 256 KiB in-progress transcript limit";
|
|
@@ -74,12 +70,6 @@ function readErrorDetail(event) {
|
|
|
74
70
|
if (typeof event.error?.code === "number") return `Mistral realtime transcription error (${event.error.code})`;
|
|
75
71
|
return "Mistral realtime transcription error";
|
|
76
72
|
}
|
|
77
|
-
function measureTranscriptDeltaBytes(partialText, delta) {
|
|
78
|
-
const previousCodeUnit = partialText.charCodeAt(partialText.length - 1);
|
|
79
|
-
const nextCodeUnit = delta.charCodeAt(0);
|
|
80
|
-
const completesSplitSurrogatePair = previousCodeUnit >= 55296 && previousCodeUnit <= 56319 && nextCodeUnit >= 56320 && nextCodeUnit <= 57343;
|
|
81
|
-
return Buffer.byteLength(delta, "utf8") - (completesSplitSurrogatePair ? 2 : 0);
|
|
82
|
-
}
|
|
83
73
|
function buildMistralRealtimeTranscriptionProvider({ createRealtimeTranscriptionWebSocketSession }) {
|
|
84
74
|
const isConfigured = ({ providerConfig }) => Boolean(normalizeProviderConfig(providerConfig).apiKey || normalizeMistralApiKey(process.env.MISTRAL_API_KEY));
|
|
85
75
|
return {
|
|
@@ -96,7 +86,6 @@ function buildMistralRealtimeTranscriptionProvider({ createRealtimeTranscription
|
|
|
96
86
|
const apiKey = config.apiKey || normalizeMistralApiKey(process.env.MISTRAL_API_KEY);
|
|
97
87
|
if (!apiKey) throw new Error("Mistral API key missing");
|
|
98
88
|
const baseUrl = normalizeMistralRealtimeBaseUrl(config.baseUrl);
|
|
99
|
-
const callbacks = { ...req };
|
|
100
89
|
let partialText = "";
|
|
101
90
|
let partialBytes = 0;
|
|
102
91
|
let hasFinalSegment = false;
|
|
@@ -108,31 +97,26 @@ function buildMistralRealtimeTranscriptionProvider({ createRealtimeTranscription
|
|
|
108
97
|
const emitFinalTranscript = (text, source) => {
|
|
109
98
|
if (!text.trim() || source === "pending" && !MISTRAL_REALTIME_SPEECH_CONTENT.test(text)) return;
|
|
110
99
|
hasFinalSegment ||= source === "segment";
|
|
111
|
-
|
|
100
|
+
req.onTranscript?.(text);
|
|
112
101
|
};
|
|
113
102
|
const failTerminal = (error, transport) => {
|
|
114
103
|
if (terminal) return;
|
|
115
104
|
terminal = true;
|
|
116
105
|
clearPartial();
|
|
117
106
|
transport.closeNow();
|
|
118
|
-
|
|
107
|
+
req.onError?.(error);
|
|
119
108
|
};
|
|
120
109
|
return createRealtimeTranscriptionWebSocketSession({
|
|
121
110
|
providerId: "mistral",
|
|
122
|
-
callbacks,
|
|
111
|
+
callbacks: req,
|
|
123
112
|
url: () => {
|
|
124
|
-
const base = new URL(`${
|
|
113
|
+
const base = new URL(`${baseUrl}/`);
|
|
125
114
|
const url = new URL("v1/audio/transcriptions/realtime", base);
|
|
126
115
|
url.searchParams.set("model", config.model ?? MISTRAL_REALTIME_DEFAULT_MODEL);
|
|
127
116
|
url.searchParams.set("target_streaming_delay_ms", String(config.targetStreamingDelayMs ?? MISTRAL_REALTIME_DEFAULT_DELAY_MS));
|
|
128
117
|
return url.toString();
|
|
129
118
|
},
|
|
130
119
|
headers: { Authorization: `Bearer ${apiKey}` },
|
|
131
|
-
connectTimeoutMs: MISTRAL_REALTIME_CONNECT_TIMEOUT_MS,
|
|
132
|
-
closeTimeoutMs: MISTRAL_REALTIME_CLOSE_TIMEOUT_MS,
|
|
133
|
-
maxReconnectAttempts: MISTRAL_REALTIME_MAX_RECONNECT_ATTEMPTS,
|
|
134
|
-
reconnectDelayMs: MISTRAL_REALTIME_RECONNECT_DELAY_MS,
|
|
135
|
-
maxQueuedBytes: MISTRAL_REALTIME_MAX_QUEUED_BYTES,
|
|
136
120
|
connectTimeoutMessage: "Mistral realtime transcription connection timeout",
|
|
137
121
|
reconnectLimitMessage: "Mistral realtime transcription reconnect limit reached",
|
|
138
122
|
sendAudio: (audio, transport) => {
|
|
@@ -174,7 +158,7 @@ function buildMistralRealtimeTranscriptionProvider({ createRealtimeTranscription
|
|
|
174
158
|
}
|
|
175
159
|
partialText += event.text;
|
|
176
160
|
partialBytes += deltaBytes;
|
|
177
|
-
|
|
161
|
+
req.onPartial?.(partialText);
|
|
178
162
|
}
|
|
179
163
|
return;
|
|
180
164
|
case "transcription.segment":
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/mistral-provider",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.11.5-beta.1",
|
|
4
4
|
"description": "OpenClaw Mistral provider plugin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"minHostVersion": ">=2026.7.2"
|
|
19
19
|
},
|
|
20
20
|
"compat": {
|
|
21
|
-
"pluginApi": ">=2026.
|
|
21
|
+
"pluginApi": ">=2026.11.5-beta.1"
|
|
22
22
|
},
|
|
23
23
|
"build": {
|
|
24
|
-
"openclawVersion": "2026.
|
|
24
|
+
"openclawVersion": "2026.11.5-beta.1",
|
|
25
25
|
"bundledDist": false
|
|
26
26
|
},
|
|
27
27
|
"release": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"assets/activity.svg"
|
|
41
41
|
],
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"openclaw": ">=2026.
|
|
43
|
+
"openclaw": ">=2026.11.5-beta.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependenciesMeta": {
|
|
46
46
|
"openclaw": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"entries":[{"output":"api.js","source":"extensions/mistral/api.ts"},{"output":"capability-catalog.js","source":"extensions/mistral/capability-catalog.ts"},{"output":"embedding-provider.js","source":"extensions/mistral/embedding-provider.ts"},{"output":"index.js","source":"extensions/mistral/index.ts"},{"output":"media-understanding-provider.js","source":"extensions/mistral/media-understanding-provider.ts"},{"output":"memory-embedding-adapter.js","source":"extensions/mistral/memory-embedding-adapter.ts"},{"output":"model-definitions.js","source":"extensions/mistral/model-definitions.ts"},{"output":"onboard.js","source":"extensions/mistral/onboard.ts"},{"output":"provider-catalog.js","source":"extensions/mistral/provider-catalog.ts"},{"output":"provider-policy-api.js","source":"extensions/mistral/provider-policy-api.ts"},{"output":"realtime-transcription-provider-factory.js","source":"extensions/mistral/realtime-transcription-provider-factory.ts"}],"chunks":[{"output":".setup/provider-catalog-FxQGDjmD.mjs","sha256":"17c7a3cb313650d7ae040bfa3e7aaa6291a69f412a2dc9308d6d234a9fb9af32","facadeSource":null,"sources":["extensions/mistral/openclaw.plugin.json","extensions/mistral/provider-catalog.ts"]},{"output":"api.js","sha256":"97201ea26d714fffd1823c51c6f2e7e9d07958325eb033132be8e32f4f4d3427","facadeSource":"extensions/mistral/api.ts","sources":["extensions/mistral/api.ts"]},{"output":"capability-catalog.js","sha256":"249f1c5c1fb1475d8b2382b7523532cb39bb0f4e9204d70905be0997962af345","facadeSource":"extensions/mistral/capability-catalog.ts","sources":["extensions/mistral/capability-catalog.ts"]},{"output":"embedding-provider.js","sha256":"ec9471f6b7cc061ad5f90140d147a19bc031788c342ed5081acee8c6433a2e5e","facadeSource":"extensions/mistral/embedding-provider.ts","sources":["extensions/mistral/embedding-provider.ts"]},{"output":"index.js","sha256":"b50db1397716e03baa67059d516a93966e4e2a7e78c9f9287dc122f9f02a2f16","facadeSource":"extensions/mistral/index.ts","sources":["extensions/mistral/index.ts"]},{"output":"media-understanding-provider.js","sha256":"2c8ecc082d2fed68b6ab340b402c5b768345e5444f82cc1efc97cfff5e5bda05","facadeSource":"extensions/mistral/media-understanding-provider.ts","sources":["extensions/mistral/media-understanding-provider.ts"]},{"output":"memory-embedding-adapter.js","sha256":"03a461d77a4fd073bc649223240fcb36b7b9508c35e71ed3735eb61b968ea34a","facadeSource":"extensions/mistral/memory-embedding-adapter.ts","sources":["extensions/mistral/memory-embedding-adapter.ts"]},{"output":"model-definitions.js","sha256":"95d599909e25bff706becaf4e20b00f1c0f6ae7b6922e3cfef5a057b44e742f0","facadeSource":"extensions/mistral/model-definitions.ts","sources":["extensions/mistral/model-definitions.ts"]},{"output":"onboard.js","sha256":"075f7b44d632f19ffd457754082e6a30584d42734ed3062a90617fc7bb5ef746","facadeSource":"extensions/mistral/onboard.ts","sources":["extensions/mistral/onboard.ts"]},{"output":"provider-catalog.js","sha256":"f6c82b9aff90e9d9d266ce98b285510ce638d8840885481803a7dc8e6d664c16","facadeSource":"extensions/mistral/provider-catalog.ts","sources":[]},{"output":"provider-policy-api.js","sha256":"4f476bb684d00f2e67a75307dedaebea1b30bd9e799ef5942fe4d5f347e93f25","facadeSource":"extensions/mistral/provider-policy-api.ts","sources":["extensions/mistral/provider-policy-api.ts"]},{"output":"realtime-transcription-provider-factory.js","sha256":"9f085a61b3db85817711432d774b2299b76d6469e85e9c5ebd69d5d8f794dbaf","facadeSource":"extensions/mistral/realtime-transcription-provider-factory.ts","sources":["extensions/mistral/realtime-transcription-provider-factory.ts"]}],"unrenderedSources":[]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { MISTRAL_BASE_URL } from "./model-definitions.js";
|
|
2
|
-
import { createRemoteEmbeddingProvider, normalizeEmbeddingModelWithPrefixes, resolveRemoteEmbeddingClient } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
|
|
3
|
-
// extensions/mistral/embedding-provider.ts
|
|
4
|
-
const DEFAULT_MISTRAL_EMBEDDING_MODEL = "mistral-embed";
|
|
5
|
-
function normalizeMistralModel(model) {
|
|
6
|
-
return normalizeEmbeddingModelWithPrefixes({
|
|
7
|
-
model,
|
|
8
|
-
defaultModel: DEFAULT_MISTRAL_EMBEDDING_MODEL,
|
|
9
|
-
prefixes: ["mistral/"]
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
async function createMistralEmbeddingProvider(options) {
|
|
13
|
-
const client = await resolveRemoteEmbeddingClient({
|
|
14
|
-
provider: "mistral",
|
|
15
|
-
options,
|
|
16
|
-
defaultBaseUrl: MISTRAL_BASE_URL,
|
|
17
|
-
normalizeModel: normalizeMistralModel
|
|
18
|
-
});
|
|
19
|
-
return {
|
|
20
|
-
provider: createRemoteEmbeddingProvider({
|
|
21
|
-
id: "mistral",
|
|
22
|
-
client,
|
|
23
|
-
errorPrefix: "mistral embeddings failed"
|
|
24
|
-
}),
|
|
25
|
-
client
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export { DEFAULT_MISTRAL_EMBEDDING_MODEL, createMistralEmbeddingProvider };
|