openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
82 lines (81 loc) • 3.72 kB
JavaScript
import { c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js";
import { w as hasSessionAutoModelFallbackProvenance } from "./agent-scope-MrLta7Pq.js";
import { r as resolveSessionParentSessionKey } from "./session-conversation-Bg8yraqi.js";
import { a as normalizeModelRef, i as modelKey } from "./model-selection-normalize-roKDxQ9_.js";
import { u as resolvePersistedOverrideModelRef } from "./model-selection-CA_65iXi.js";
//#region src/auto-reply/reply/stored-model-override.ts
function resolveParentSessionKeyCandidate(params) {
const explicit = normalizeOptionalString(params.parentSessionKey);
if (explicit && explicit !== params.sessionKey) return explicit;
const derived = resolveSessionParentSessionKey(params.sessionKey);
if (derived && derived !== params.sessionKey) return derived;
return null;
}
/** Resolves the persisted model override visible to the current session. */
function resolveStoredModelOverride(params) {
const direct = resolvePersistedOverrideModelRef({
defaultProvider: params.defaultProvider,
overrideProvider: params.sessionEntry?.providerOverride,
overrideModel: params.sessionEntry?.modelOverride
});
if (direct) return {
...direct,
source: "session"
};
const parentKey = resolveParentSessionKeyCandidate({
sessionKey: params.sessionKey,
parentSessionKey: params.parentSessionKey
});
if (!parentKey || !params.sessionStore) return null;
const parentEntry = params.sessionStore[parentKey];
const parentOverride = resolvePersistedOverrideModelRef({
defaultProvider: params.defaultProvider,
overrideProvider: parentEntry?.providerOverride,
overrideModel: parentEntry?.modelOverride
});
if (!parentOverride) return null;
return {
...parentOverride,
source: "parent"
};
}
function resolveModelRefKey(params) {
const ref = resolvePersistedOverrideModelRef(params);
if (!ref) return null;
const normalized = normalizeModelRef(ref.provider, ref.model);
return modelKey(normalized.provider, normalized.model);
}
/** Detects heartbeat auto-fallback overrides that no longer match the primary model. */
function isStaleHeartbeatAutoFallbackOverride(params) {
if (params.isHeartbeat !== true || params.hasResolvedHeartbeatModelOverride === true) return false;
if (params.storedOverride?.source !== "session") return false;
const entry = params.sessionEntry;
const recoveredAutoFallbackOverride = entry !== void 0 && entry.modelOverrideSource === void 0 && hasSessionAutoModelFallbackProvenance(entry);
if (entry?.modelOverrideSource !== "auto" && !recoveredAutoFallbackOverride) return false;
if (!entry) return false;
const primaryKey = resolveModelRefKey({
defaultProvider: params.defaultProvider,
overrideProvider: params.primaryProvider ?? params.defaultProvider,
overrideModel: params.primaryModel ?? params.defaultModel
});
if (!primaryKey) return false;
const originKey = resolveModelRefKey({
defaultProvider: params.defaultProvider,
overrideProvider: entry.modelOverrideFallbackOriginProvider,
overrideModel: entry.modelOverrideFallbackOriginModel
});
if (originKey) return originKey !== primaryKey;
const noticeSelectedKey = resolveModelRefKey({
defaultProvider: params.defaultProvider,
overrideModel: normalizeOptionalString(entry.fallbackNoticeSelectedModel)
});
if (noticeSelectedKey) return noticeSelectedKey !== primaryKey;
const storedOverrideKey = resolveModelRefKey({
defaultProvider: params.defaultProvider,
overrideProvider: params.storedOverride.provider,
overrideModel: params.storedOverride.model
});
return storedOverrideKey !== null && storedOverrideKey !== primaryKey;
}
//#endregion
export { resolveStoredModelOverride as n, isStaleHeartbeatAutoFallbackOverride as t };