@openclaw/mistral-provider 2026.10.10-beta.5 → 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-DV4UQ-rA.mjs → provider-catalog-CfC25-Ae.mjs} +3 -4
- package/dist/.source-module-urls/59880ee0d0c03f09f1598ceefc39c2ada1f9297be8422e5fd67d8d68747a879b.json +1 -0
- package/dist/api.js +2 -3
- package/dist/capability-catalog.js +1 -2
- package/dist/index.js +1 -2
- package/dist/media-understanding-provider.js +1 -2
- package/dist/memory-embedding-adapter.js +19 -5
- package/dist/model-definitions.js +1 -2
- package/dist/onboard.js +1 -2
- package/dist/provider-catalog.js +1 -1
- package/dist/provider-policy-api.js +1 -2
- package/dist/realtime-transcription-provider-factory.js +7 -24
- 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 -29
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
|
|
2
|
-
|
|
2
|
+
// extensions/mistral/openclaw.plugin.json
|
|
3
3
|
var openclaw_plugin_default = {
|
|
4
4
|
id: "mistral",
|
|
5
5
|
categories: ["models"],
|
|
@@ -18,6 +18,7 @@ var openclaw_plugin_default = {
|
|
|
18
18
|
"baseUrl": "https://api.mistral.ai/v1",
|
|
19
19
|
"api": "openai-completions",
|
|
20
20
|
"defaultModel": "mistral-large-latest",
|
|
21
|
+
"family": "mistral",
|
|
21
22
|
"models": [
|
|
22
23
|
{
|
|
23
24
|
"id": "codestral-latest",
|
|
@@ -155,13 +156,11 @@ var openclaw_plugin_default = {
|
|
|
155
156
|
"properties": {}
|
|
156
157
|
}
|
|
157
158
|
};
|
|
158
|
-
|
|
159
|
-
//#region extensions/mistral/provider-catalog.ts
|
|
159
|
+
// extensions/mistral/provider-catalog.ts
|
|
160
160
|
function buildMistralProvider() {
|
|
161
161
|
return buildManifestModelProviderConfig({
|
|
162
162
|
providerId: "mistral",
|
|
163
163
|
catalog: openclaw_plugin_default.modelCatalog.providers.mistral
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
|
-
//#endregion
|
|
167
166
|
export { openclaw_plugin_default as n, buildMistralProvider as t };
|
|
@@ -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,9 +1,9 @@
|
|
|
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";
|
|
6
|
-
|
|
6
|
+
// extensions/mistral/api.ts
|
|
7
7
|
const MISTRAL_MODEL_TRANSPORT_PATCH = {
|
|
8
8
|
supportsStore: false,
|
|
9
9
|
supportsPromptCacheKey: true,
|
|
@@ -30,5 +30,4 @@ function applyMistralModelCompat(model) {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
//#endregion
|
|
34
33
|
export { MISTRAL_BASE_URL, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, MISTRAL_MEDIUM_3_5_ID, MISTRAL_MODEL_TRANSPORT_PATCH, MISTRAL_SMALL_4_ID, MISTRAL_SMALL_LATEST_ID, applyMistralConfig, applyMistralModelCompat, applyMistralProviderConfig, buildMistralModelDefinition, buildMistralProvider, resolveMistralCompatPatch };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { buildMistralRealtimeTranscriptionProvider } from "./realtime-transcription-provider-factory.js";
|
|
2
|
-
|
|
2
|
+
// extensions/mistral/capability-catalog.ts
|
|
3
3
|
var capability_catalog_default = ((context) => ({ realtimeTranscriptionProviders: [buildMistralRealtimeTranscriptionProvider(context)] }));
|
|
4
|
-
//#endregion
|
|
5
4
|
export { capability_catalog_default as default };
|
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";
|
|
@@ -34,5 +34,4 @@ var mistral_default = defineSingleProviderPluginEntry({
|
|
|
34
34
|
api.registerRealtimeTranscriptionProvider(buildMistralRealtimeTranscriptionProvider);
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
|
-
//#endregion
|
|
38
37
|
export { mistral_default as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { transcribeOpenAiCompatibleAudio } from "openclaw/plugin-sdk/media-understanding";
|
|
2
|
-
|
|
2
|
+
// extensions/mistral/media-understanding-provider.ts
|
|
3
3
|
const DEFAULT_MISTRAL_AUDIO_BASE_URL = "https://api.mistral.ai/v1";
|
|
4
4
|
const DEFAULT_MISTRAL_AUDIO_MODEL = "voxtral-mini-latest";
|
|
5
5
|
const mistralMediaUnderstandingProvider = {
|
|
@@ -14,5 +14,4 @@ const mistralMediaUnderstandingProvider = {
|
|
|
14
14
|
defaultModel: DEFAULT_MISTRAL_AUDIO_MODEL
|
|
15
15
|
})
|
|
16
16
|
};
|
|
17
|
-
//#endregion
|
|
18
17
|
export { mistralMediaUnderstandingProvider };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MISTRAL_BASE_URL } from "./model-definitions.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { createRemoteEmbeddingProvider, embeddingProviderOwnsDestination, isMissingEmbeddingApiKeyError, normalizeEmbeddingModelWithPrefixes, resolveRemoteEmbeddingClient, sanitizeEmbeddingCacheHeaders } from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
|
|
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({
|
|
@@ -43,5 +58,4 @@ const mistralMemoryEmbeddingProviderAdapter = {
|
|
|
43
58
|
};
|
|
44
59
|
}
|
|
45
60
|
};
|
|
46
|
-
//#endregion
|
|
47
61
|
export { mistralMemoryEmbeddingProviderAdapter };
|
|
@@ -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");
|
|
@@ -8,5 +8,4 @@ function buildMistralModelDefinition() {
|
|
|
8
8
|
if (!model) throw new Error(`Missing Mistral provider model ${MISTRAL_DEFAULT_MODEL_ID}`);
|
|
9
9
|
return model;
|
|
10
10
|
}
|
|
11
|
-
//#endregion
|
|
12
11
|
export { MISTRAL_BASE_URL, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, buildMistralModelDefinition };
|
package/dist/onboard.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MISTRAL_BASE_URL, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, buildMistralModelDefinition } from "./model-definitions.js";
|
|
2
2
|
import { createDefaultModelsConnectionPresetAppliers, createDefaultModelsPresetAppliers } from "openclaw/plugin-sdk/provider-onboard";
|
|
3
|
-
|
|
3
|
+
// extensions/mistral/onboard.ts
|
|
4
4
|
const mistralPreset = {
|
|
5
5
|
primaryModelRef: MISTRAL_DEFAULT_MODEL_REF,
|
|
6
6
|
resolveParams: () => ({
|
|
@@ -17,5 +17,4 @@ const mistralPreset = {
|
|
|
17
17
|
};
|
|
18
18
|
const { applyConfig: applyMistralConfig, applyProviderConfig: applyMistralProviderConfig } = createDefaultModelsPresetAppliers(mistralPreset);
|
|
19
19
|
const { applyConfig: applyMistralConnectionConfig } = createDefaultModelsConnectionPresetAppliers(mistralPreset);
|
|
20
|
-
//#endregion
|
|
21
20
|
export { applyMistralConfig, applyMistralConnectionConfig, applyMistralProviderConfig };
|
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,4 @@
|
|
|
1
|
-
|
|
1
|
+
// extensions/mistral/provider-policy-api.ts
|
|
2
2
|
const MISTRAL_SMALL_LATEST_ID = "mistral-small-latest";
|
|
3
3
|
const MISTRAL_SMALL_4_ID = "mistral-small-2603";
|
|
4
4
|
const MISTRAL_MEDIUM_3_5_ID = "mistral-medium-3-5";
|
|
@@ -27,5 +27,4 @@ function resolveThinkingProfile({ modelId }) {
|
|
|
27
27
|
defaultLevel: "off"
|
|
28
28
|
} : void 0;
|
|
29
29
|
}
|
|
30
|
-
//#endregion
|
|
31
30
|
export { MISTRAL_MEDIUM_3_5_ID, MISTRAL_SMALL_4_ID, MISTRAL_SMALL_LATEST_ID, resolveMistralReasoningEffortMap, resolveThinkingProfile };
|
|
@@ -1,16 +1,12 @@
|
|
|
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";
|
|
5
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":
|
|
@@ -202,5 +186,4 @@ function buildMistralRealtimeTranscriptionProvider({ createRealtimeTranscription
|
|
|
202
186
|
}
|
|
203
187
|
};
|
|
204
188
|
}
|
|
205
|
-
//#endregion
|
|
206
189
|
export { buildMistralRealtimeTranscriptionProvider };
|
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-DV4UQ-rA.mjs","sha256":"183aa52bd96def5027aad2c7f872b34205bf85e7f60036046a6317322d501e22","facadeSource":null,"sources":["extensions/mistral/openclaw.plugin.json","extensions/mistral/provider-catalog.ts"]},{"output":"api.js","sha256":"9cf53ce8d69b34e843f3d5fde9b282102054a82c3f8a482879dacb4082e63c6a","facadeSource":"extensions/mistral/api.ts","sources":["extensions/mistral/api.ts"]},{"output":"capability-catalog.js","sha256":"5e13383f9b19a1d447098264aa21c11c1bd372655d30eaa137800c10fa2534e1","facadeSource":"extensions/mistral/capability-catalog.ts","sources":["extensions/mistral/capability-catalog.ts"]},{"output":"embedding-provider.js","sha256":"85b92f720fc47b9fd3fb4b103c7bac857b0e534a01293ddaeb0066f08a4ee4ce","facadeSource":"extensions/mistral/embedding-provider.ts","sources":["extensions/mistral/embedding-provider.ts"]},{"output":"index.js","sha256":"79ed21ba7655598729ee9d2c8d709604dad1906a858776493bd7396e542d44d3","facadeSource":"extensions/mistral/index.ts","sources":["extensions/mistral/index.ts"]},{"output":"media-understanding-provider.js","sha256":"7efaad7a912ccbda76f1394bc6940b94ce88434bb35dac824f07a67dd2a3eb05","facadeSource":"extensions/mistral/media-understanding-provider.ts","sources":["extensions/mistral/media-understanding-provider.ts"]},{"output":"memory-embedding-adapter.js","sha256":"a667eaab6434913f1b81121f07bffc02d267e5ef7c310d601e0d8a6216646f26","facadeSource":"extensions/mistral/memory-embedding-adapter.ts","sources":["extensions/mistral/memory-embedding-adapter.ts"]},{"output":"model-definitions.js","sha256":"ad6a71347dc1ea7d56e9b125078008aaafcc967bdcbfe09728a383bc47535538","facadeSource":"extensions/mistral/model-definitions.ts","sources":["extensions/mistral/model-definitions.ts"]},{"output":"onboard.js","sha256":"9353fa248e7aba2de3266c2a4992cd8bcb6c0393a15cf03a5e879da4af9ed3fc","facadeSource":"extensions/mistral/onboard.ts","sources":["extensions/mistral/onboard.ts"]},{"output":"provider-catalog.js","sha256":"aab9b40e92a264f8e9b092e27656853b83b2ce824c0e8bac2359f2f3c25bcf03","facadeSource":"extensions/mistral/provider-catalog.ts","sources":[]},{"output":"provider-policy-api.js","sha256":"3fad752bb15056d368fec6e1ac5d794891ab3de0451c9b7936e091d5a3131957","facadeSource":"extensions/mistral/provider-policy-api.ts","sources":["extensions/mistral/provider-policy-api.ts"]},{"output":"realtime-transcription-provider-factory.js","sha256":"36d333184125b5293ce6f597b83b23118bd3697f77fe8aad8eac957deef7aa6a","facadeSource":"extensions/mistral/realtime-transcription-provider-factory.ts","sources":["extensions/mistral/realtime-transcription-provider-factory.ts"]}],"unrenderedSources":[]}
|
|
@@ -1,29 +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
|
-
//#region 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
|
-
//#endregion
|
|
29
|
-
export { DEFAULT_MISTRAL_EMBEDDING_MODEL, createMistralEmbeddingProvider };
|