fix: normalize model override auth handling
This commit is contained in:
72
src/sessions/model-overrides.ts
Normal file
72
src/sessions/model-overrides.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
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 };
|
||||
}
|
||||
Reference in New Issue
Block a user