73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import type { SessionEntry } from "../config/sessions.js";
|
|
|
|
export type ModelOverrideSelection = {
|
|
provider: string;
|
|
model: string;
|
|
isDefault?: boolean;
|
|
};
|
|
|
|
export function applyModelOverrideToSessionEntry(params: {
|
|
entry: SessionEntry;
|
|
selection: ModelOverrideSelection;
|
|
profileOverride?: string;
|
|
profileOverrideSource?: "auto" | "user";
|
|
}): { updated: boolean } {
|
|
const { entry, selection, profileOverride } = params;
|
|
const profileOverrideSource = params.profileOverrideSource ?? "user";
|
|
let updated = false;
|
|
|
|
if (selection.isDefault) {
|
|
if (entry.providerOverride) {
|
|
delete entry.providerOverride;
|
|
updated = true;
|
|
}
|
|
if (entry.modelOverride) {
|
|
delete entry.modelOverride;
|
|
updated = true;
|
|
}
|
|
} else {
|
|
if (entry.providerOverride !== selection.provider) {
|
|
entry.providerOverride = selection.provider;
|
|
updated = true;
|
|
}
|
|
if (entry.modelOverride !== selection.model) {
|
|
entry.modelOverride = selection.model;
|
|
updated = true;
|
|
}
|
|
}
|
|
|
|
if (profileOverride) {
|
|
if (entry.authProfileOverride !== profileOverride) {
|
|
entry.authProfileOverride = profileOverride;
|
|
updated = true;
|
|
}
|
|
if (entry.authProfileOverrideSource !== profileOverrideSource) {
|
|
entry.authProfileOverrideSource = profileOverrideSource;
|
|
updated = true;
|
|
}
|
|
if (entry.authProfileOverrideCompactionCount !== undefined) {
|
|
delete entry.authProfileOverrideCompactionCount;
|
|
updated = true;
|
|
}
|
|
} else {
|
|
if (entry.authProfileOverride) {
|
|
delete entry.authProfileOverride;
|
|
updated = true;
|
|
}
|
|
if (entry.authProfileOverrideSource) {
|
|
delete entry.authProfileOverrideSource;
|
|
updated = true;
|
|
}
|
|
if (entry.authProfileOverrideCompactionCount !== undefined) {
|
|
delete entry.authProfileOverrideCompactionCount;
|
|
updated = true;
|
|
}
|
|
}
|
|
|
|
if (updated) {
|
|
entry.updatedAt = Date.now();
|
|
}
|
|
|
|
return { updated };
|
|
}
|