import { resolveProviderRequestCapabilities } from "openclaw/plugin-sdk/provider-http" ;
import { normalizeLowercaseStringOrEmpty, readStringValue } from "openclaw/plugin-sdk/text-runtime" ;
import { MISTRAL_MODEL_TRANSPORT_PATCH } from "./api.js" ;
const MISTRAL_MODEL_HINTS = [
"mistral" ,
"mistralai" ,
"mixtral" ,
"codestral" ,
"pixtral" ,
"devstral" ,
"ministral" ,
] as const ;
function isMistralModelHint(modelId: string): boolean {
const normalized = normalizeLowercaseStringOrEmpty(modelId);
return MISTRAL_MODEL_HINTS.some(
(hint) =>
normalized === hint ||
normalized.startsWith(`${hint}/`) ||
normalized.startsWith(`${hint}-`) ||
normalized.startsWith(`${hint}:`),
);
}
export function shouldContributeMistralCompat(params: {
modelId: string;
model: { api?: unknown; baseUrl?: unknown; provider?: unknown; compat?: unknown };
}): boolean {
if (params.model.api !== "openai-completions" ) {
return false ;
}
const capabilities = resolveProviderRequestCapabilities({
provider: readStringValue(params.model.provider),
api: "openai-completions" ,
baseUrl: readStringValue(params.model.baseUrl),
capability: "llm" ,
transport: "stream" ,
modelId: params.modelId,
compat:
params.model.compat && typeof params.model.compat === "object"
? (params.model.compat as { supportsStore?: boolean })
: undefined,
});
return (
capabilities.knownProviderFamily === "mistral" ||
capabilities.endpointClass === "mistral-public" ||
isMistralModelHint(params.modelId)
);
}
export function contributeMistralResolvedModelCompat(params: {
modelId: string;
model: { api?: unknown; baseUrl?: unknown; provider?: unknown; compat?: unknown };
}) {
return shouldContributeMistralCompat(params) ? MISTRAL_MODEL_TRANSPORT_PATCH : undefined;
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland