import { isRecord } from './utils'; import type { ManagedKimiModelAlias, ManagedKimiModelAliasOverrides } from './managed-kimi-code'; export const MANAGED_KIMI_MODEL_FIELDS: ReadonlySet = new Set([ 'provider', 'model', 'maxContextSize', 'capabilities', 'displayName', 'protocol', 'betaApi', 'adaptiveThinking', 'supportEfforts', 'defaultEffort', ]); export const CUSTOM_REGISTRY_MODEL_FIELDS: ReadonlySet = new Set([ 'provider', 'model', 'maxContextSize', 'capabilities', 'displayName', 'supportEfforts', 'defaultEffort', ]); function cloneOverrides( overrides: ManagedKimiModelAliasOverrides | undefined, ): ManagedKimiModelAliasOverrides | undefined { if (overrides === undefined) return undefined; return structuredClone(overrides); } function userExtras( existing: Record, remoteOwnedFields: ReadonlySet, ): Record { const out: Record = {}; for (const [key, value] of Object.entries(existing)) { if (key === 'overrides') continue; if (!remoteOwnedFields.has(key)) out[key] = value; } return out; } export function mergeRefreshedModelAlias( existing: unknown, remote: ManagedKimiModelAlias, remoteOwnedFields: ReadonlySet, ): ManagedKimiModelAlias { const current = isRecord(existing) ? existing : {}; const overrides = cloneOverrides( isRecord(current['overrides']) ? (current['overrides'] as ManagedKimiModelAliasOverrides) : undefined, ); return { ...userExtras(current, remoteOwnedFields), ...remote, ...(overrides !== undefined ? { overrides } : {}), }; }