openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
83 lines (82 loc) • 3.79 kB
JavaScript
import { S as isAcpSessionKey } from "./session-key-BnWWjqNc.js";
import { r as isDefaultAgentRuntimeId } from "./agent-runtime-id-BpfvnoN1.js";
import { t as resolveDefaultModelForAgent } from "./model-selection-config-BrdmmqKD.js";
import { n as resolveAvailableAgentHarnessPolicy } from "./availability-DrQ2OOVX.js";
import { i as resolveSessionRuntimeOverrideForProvider, r as resolvePersistedSessionRuntimeId } from "./session-runtime-compat-DNAICzi6.js";
import "./model-selection-di2kjKCB.js";
//#region src/agents/acp-runtime-overlay.ts
/** Applies ACP session-key metadata overrides to agent runtime classification. */
/**
* When a session key and persisted session metadata identify an ACP
* control-plane session, override the resolved runtime metadata to report the
* ACP runtime id with a "session-key" source — regardless of what the
* agent-config policy resolved to.
*
* Callers that already have model/provider context (resolveModelAgentRuntimeMetadata)
* still benefit here because the model-runtime policy chain does not inspect session
* keys for the ACP indicator.
*
* Key shape alone is not sufficient: ACP bridge sessions may use ACP-shaped
* keys without persisted SessionAcpMeta and still run the configured model.
*
* When `acpBackend` is provided and non-empty, it is used as the runtime id so that
* sessions backed by a configured non-default ACP backend (e.g. a custom registered
* backend) are reported faithfully instead of always being labelled "acpx".
* Falls back to "acpx" when no backend is known.
*/
function applyAcpRuntimeOverlay(meta, sessionKey, acpRuntime, acpBackend) {
if (acpRuntime === true && isAcpSessionKey(sessionKey)) return {
id: acpBackend && acpBackend.length > 0 ? acpBackend : "acpx",
source: "session-key"
};
return meta;
}
//#endregion
//#region src/agents/agent-runtime-metadata.ts
/** Resolves the runtime id/source that should be reported for a model-backed agent session. */
function resolveModelAgentRuntimeMetadata(params) {
const persistedRuntimeId = resolvePersistedSessionRuntimeId(params.sessionEntry);
if (persistedRuntimeId && !isDefaultAgentRuntimeId(persistedRuntimeId)) return applyAcpRuntimeOverlay({
id: persistedRuntimeId,
source: "session"
}, params.sessionKey, params.acpRuntime, params.acpBackend);
const resolved = params.provider && params.model ? {
provider: params.provider,
model: params.model
} : resolveDefaultModelForAgent({
cfg: params.cfg,
agentId: params.agentId
});
const policy = resolveAvailableAgentHarnessPolicy({
mode: "projection",
provider: resolved.provider,
modelId: resolved.model,
config: params.cfg,
agentId: params.agentId,
sessionKey: params.sessionKey,
agentHarnessRuntimeOverride: params.agentHarnessRuntimeOverride
});
return applyAcpRuntimeOverlay({
id: policy.runtime,
source: policy.runtimeSource ?? "implicit"
}, params.sessionKey, params.acpRuntime, params.acpBackend);
}
/** Resolves the runtime selected for the next turn, excluding historical producer metadata. */
function resolveCurrentSessionAgentRuntimeMetadata(params) {
const { sessionEntry, ...configuredParams } = params;
const sessionRuntime = resolveSessionRuntimeOverrideForProvider({
provider: params.provider,
entry: sessionEntry,
cfg: params.cfg
});
if (params.acpRuntime || !sessionRuntime) return resolveModelAgentRuntimeMetadata(configuredParams);
return {
id: resolveModelAgentRuntimeMetadata({
...configuredParams,
...sessionEntry?.modelSelectionLocked === true ? { sessionEntry } : { agentHarnessRuntimeOverride: sessionRuntime }
}).id,
source: sessionEntry?.modelSelectionLocked === true ? "session" : "session-key"
};
}
//#endregion
export { resolveModelAgentRuntimeMetadata as n, resolveCurrentSessionAgentRuntimeMetadata as t };