openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
49 lines (48 loc) • 2.15 kB
JavaScript
import { c as isRecord } from "./record-coerce-DItp3I4t.js";
import { c as normalizeOptionalLowercaseString, o as normalizeLowercaseStringOrEmpty } from "./string-coerce-CIXf7egm.js";
import { r as normalizeProviderId } from "./provider-id-DMd-TDFp.js";
//#region src/agents/provider-tool-policy.ts
function normalizeToolProviderPolicyKey(value) {
const normalized = normalizeLowercaseStringOrEmpty(value);
const slashIndex = normalized.indexOf("/");
if (slashIndex <= 0) return normalizeProviderId(normalized);
const provider = normalizeProviderId(normalized.slice(0, slashIndex));
const modelId = normalized.slice(slashIndex + 1);
return modelId ? `${provider}/${modelId}` : provider;
}
function isCanonicalToolProviderPolicyKey(value) {
return normalizeLowercaseStringOrEmpty(value) === normalizeToolProviderPolicyKey(value);
}
function resolveProviderToolPolicyEntry(params) {
const provider = params.modelProvider?.trim();
if (!provider || !params.byProvider) return;
const lookup = /* @__PURE__ */ new Map();
for (const [key, value] of Object.entries(params.byProvider)) {
if (!isRecord(value)) continue;
const normalized = normalizeToolProviderPolicyKey(key);
if (!normalized) continue;
const canonical = isCanonicalToolProviderPolicyKey(key);
const existing = lookup.get(normalized);
if (!existing || canonical && !existing.canonical) lookup.set(normalized, {
key,
policy: value,
canonical
});
}
const normalizedProvider = normalizeToolProviderPolicyKey(provider);
const rawModelId = normalizeOptionalLowercaseString(params.modelId);
const fullModelId = rawModelId ? `${normalizedProvider}/${rawModelId}` : void 0;
const candidates = [...fullModelId ? [fullModelId] : [], normalizedProvider];
for (const key of candidates) {
const match = lookup.get(key);
if (match) return {
key: match.key,
policy: match.policy
};
}
}
function resolveProviderToolPolicy(params) {
return resolveProviderToolPolicyEntry(params)?.policy;
}
//#endregion
export { resolveProviderToolPolicyEntry as i, normalizeToolProviderPolicyKey as n, resolveProviderToolPolicy as r, isCanonicalToolProviderPolicyKey as t };