openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
62 lines (61 loc) • 2.23 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-1VuiLaaR.mjs";
import { a as asOptionalRecord } from "./record-coerce-TIsquoVR.mjs";
import "./string-coerce-runtime-BbIJhy7G.mjs";
import { g as buildOpenAICompatibleLiveModels } from "./provider-catalog-live-runtime-BhDUKOgi.mjs";
//#region extensions/anthropic/live-model-projection.ts
function readSupported(capabilities, path) {
let current = capabilities;
for (const key of path) current = asOptionalRecord(current)?.[key];
if (current === null) return false;
const supported = asOptionalRecord(current)?.supported;
return typeof supported === "boolean" ? supported : void 0;
}
function readClaudeListedCapabilities(capabilities) {
const adaptiveThinking = readSupported(capabilities, [
"thinking",
"types",
"adaptive"
]);
const xhighEffort = readSupported(capabilities, ["effort", "xhigh"]);
const maxEffort = readSupported(capabilities, ["effort", "max"]);
if (adaptiveThinking === void 0 || xhighEffort === void 0 || maxEffort === void 0) return;
const disabledThinking = readSupported(capabilities, [
"thinking",
"types",
"disabled"
]);
return {
adaptiveThinking,
xhighEffort,
maxEffort,
...disabledThinking === void 0 ? {} : { disabledThinking }
};
}
const projectAnthropicLiveModels = (rows, fallback) => {
const listedCapabilities = /* @__PURE__ */ new Map();
for (const row of rows) {
const record = asOptionalRecord(row);
const id = normalizeOptionalString(record?.id);
const capabilities = readClaudeListedCapabilities(record?.capabilities);
if (id && capabilities) listedCapabilities.set(id, capabilities);
}
const models = buildOpenAICompatibleLiveModels(rows, fallback, ({ id }) => listedCapabilities.has(id));
for (const [index, model] of models.entries()) {
const claudeCapabilities = listedCapabilities.get(model.id);
if (claudeCapabilities) models[index] = {
...model,
thinkingLevelMap: {
...model.thinkingLevelMap,
xhigh: claudeCapabilities.xhighEffort ? "xhigh" : null,
max: claudeCapabilities.maxEffort ? "max" : null
},
params: {
...model.params,
claudeCapabilities
}
};
}
return models;
};
//#endregion
export { projectAnthropicLiveModels as t };