openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
43 lines (42 loc) • 2.21 kB
JavaScript
//#region extensions/lmstudio/src/model-reasoning.ts
const LMSTUDIO_OPENAI_COMPAT_ENABLED_REASONING_EFFORTS = [
"minimal",
"low",
"medium",
"high",
"xhigh"
];
const LMSTUDIO_OPENAI_COMPAT_REASONING_EFFORTS = ["none", ...LMSTUDIO_OPENAI_COMPAT_ENABLED_REASONING_EFFORTS];
function resolveLmstudioEnabledTransportReasoningOption(supportedReasoningEfforts) {
return supportedReasoningEfforts.find((option) => option === "xhigh") ?? supportedReasoningEfforts.find((option) => option === "high") ?? supportedReasoningEfforts.find((option) => option !== "none");
}
function buildLmstudioReasoningEffortMap(supportedReasoningEfforts) {
const disabled = supportedReasoningEfforts.includes("none") ? "none" : void 0;
const max = resolveLmstudioEnabledTransportReasoningOption(supportedReasoningEfforts);
const map = {
...disabled ? {
off: disabled,
none: disabled
} : {},
...max ? {
adaptive: max,
max
} : {}
};
return Object.keys(map).length > 0 ? map : void 0;
}
function normalizeLmstudioTransportReasoningCompat(compat) {
const supportedReasoningEfforts = compat.supportedReasoningEfforts;
const map = compat.reasoningEffortMap;
const hasBinarySupported = Array.isArray(supportedReasoningEfforts) && supportedReasoningEfforts.some((option) => option === "on");
const hasBinaryMapValue = map !== void 0 && Object.values(map).some((value) => value === "on" || value === "off");
if (!hasBinarySupported && !hasBinaryMapValue) return compat;
const normalizedSupportedReasoningEfforts = supportedReasoningEfforts?.includes("off") === true || supportedReasoningEfforts?.includes("none") === true || Object.values(map ?? {}).some((value) => value === "off" || value === "none") ? [...LMSTUDIO_OPENAI_COMPAT_REASONING_EFFORTS] : [...LMSTUDIO_OPENAI_COMPAT_ENABLED_REASONING_EFFORTS];
return {
...compat,
supportedReasoningEfforts: normalizedSupportedReasoningEfforts,
reasoningEffortMap: buildLmstudioReasoningEffortMap(normalizedSupportedReasoningEfforts)
};
}
//#endregion
export { normalizeLmstudioTransportReasoningCompat as i, LMSTUDIO_OPENAI_COMPAT_REASONING_EFFORTS as n, buildLmstudioReasoningEffortMap as r, LMSTUDIO_OPENAI_COMPAT_ENABLED_REASONING_EFFORTS as t };