openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
107 lines (106 loc) • 5.13 kB
JavaScript
import { c as isRecord } from "./record-coerce-TIsquoVR.mjs";
import "./utils-DUAwk2p5.mjs";
import { i as parseModelCatalogRef } from "./model-catalog-refs-Dd-I0WMI.mjs";
import { D as withAgentRosterFactsBatch } from "./agent-scope-config-BU4qc9bA.mjs";
import { n as listAgentEntries } from "./agent-roster-B45JERT5.mjs";
import { t as splitTrailingAuthProfile } from "./model-ref-profile-BIKs-96s.mjs";
import { N as listModelRefsFromConfigValue } from "./runtime-snapshot-CifcQ780.mjs";
import { a as normalizeOptionalAgentRuntimeId, r as isDefaultAgentRuntimeId } from "./agent-runtime-id-D81oHQZ0.mjs";
import { r as resolveModelRuntimePolicy } from "./model-runtime-policy-BNSDqvv-.mjs";
import { t as resolveAgentHarnessPolicy } from "./policy-tSS-HDQS.mjs";
//#region src/agents/harness-runtimes.ts
/**
* Collects configured native harness runtime ids from model provider config.
*/
function isSelectablePluginRuntime(runtime) {
return Boolean(runtime) && !isDefaultAgentRuntimeId(runtime) && normalizeOptionalAgentRuntimeId(runtime) !== "openclaw";
}
function parseConfiguredModelRef(value) {
if (typeof value !== "string") return;
return parseModelCatalogRef(value) ?? void 0;
}
function resolveConfiguredModelHarnessRuntime(params) {
const parsed = parseConfiguredModelRef(params.modelRef);
if (!parsed) return;
const selection = params.modelRefKind === "selector" ? splitTrailingAuthProfile(params.modelRef) : void 0;
const policyModel = selection?.profile ? parseConfiguredModelRef(selection.model) : parsed;
if (!policyModel) return;
const policyParams = {
config: params.config,
provider: parsed.provider,
modelId: parsed.modelId,
agentId: params.agentId
};
const configured = resolveModelRuntimePolicy({
...policyParams,
modelId: policyModel.modelId
});
const policy = resolveAgentHarnessPolicy(policyParams, configured);
if (!params.includeImplicitRuntimePreferences && policy.runtimeSource === "implicit") return;
const runtime = normalizeOptionalAgentRuntimeId(policy.runtime);
return isSelectablePluginRuntime(runtime) ? runtime : void 0;
}
function pushConfiguredModelRuntimeIds(config, runtimes) {
for (const providerConfig of Object.values(config.models?.providers ?? {})) {
const providerRuntime = normalizeOptionalAgentRuntimeId(providerConfig?.agentRuntime?.id);
if (isSelectablePluginRuntime(providerRuntime)) runtimes.add(providerRuntime);
for (const modelConfig of providerConfig?.models ?? []) {
const modelRuntime = normalizeOptionalAgentRuntimeId(modelConfig?.agentRuntime?.id);
if (isSelectablePluginRuntime(modelRuntime)) runtimes.add(modelRuntime);
}
}
const pushModelMapRuntimeIds = (models) => {
if (!isRecord(models)) return;
for (const entry of Object.values(models)) {
if (!isRecord(entry)) continue;
const runtime = normalizeOptionalAgentRuntimeId(isRecord(entry.agentRuntime) ? entry.agentRuntime.id : void 0);
if (isSelectablePluginRuntime(runtime)) runtimes.add(runtime);
for (const value of Array.isArray(entry.pickerRuntimes) ? entry.pickerRuntimes : []) {
const pickerRuntime = normalizeOptionalAgentRuntimeId(value);
if (isSelectablePluginRuntime(pickerRuntime)) runtimes.add(pickerRuntime);
}
}
};
pushModelMapRuntimeIds(config.agents?.defaults?.models);
const agents = listAgentEntries(config);
for (const agent of agents) pushModelMapRuntimeIds(isRecord(agent) ? agent.models : void 0);
}
function pushConfiguredAgentModelRuntimeIds(config, runtimes, includeImplicitRuntimePreferences) {
const pushModelRefs = (modelRefs, modelRefKind, agentId) => {
for (const modelRef of modelRefs) {
const runtime = resolveConfiguredModelHarnessRuntime({
config,
includeImplicitRuntimePreferences,
modelRef,
modelRefKind,
agentId
});
if (runtime) runtimes.add(runtime);
}
};
const pushModelMapRefs = (models, agentId) => {
if (!isRecord(models)) return;
pushModelRefs(Object.keys(models), "literal", agentId);
};
const defaultsModel = config.agents?.defaults?.model;
pushModelRefs(listModelRefsFromConfigValue(defaultsModel), "selector");
pushModelMapRefs(config.agents?.defaults?.models);
for (const agent of listAgentEntries(config)) {
if (!isRecord(agent)) continue;
const agentId = typeof agent.id === "string" ? agent.id : void 0;
pushModelRefs(listModelRefsFromConfigValue(agent.model ?? defaultsModel), "selector", agentId);
pushModelMapRefs(agent.models, agentId);
}
}
/** Lists configured plugin harness runtime ids referenced by agent/model config. */
function collectConfiguredAgentHarnessRuntimes(config, options = {}) {
return withAgentRosterFactsBatch(config, () => {
const runtimes = /* @__PURE__ */ new Set();
const includeImplicitRuntimePreferences = options.includeImplicitRuntimePreferences ?? true;
pushConfiguredModelRuntimeIds(config, runtimes);
pushConfiguredAgentModelRuntimeIds(config, runtimes, includeImplicitRuntimePreferences);
return [...runtimes].toSorted((left, right) => left.localeCompare(right));
});
}
//#endregion
export { resolveConfiguredModelHarnessRuntime as n, collectConfiguredAgentHarnessRuntimes as t };