ai_api / src /lib /providers /codexConnectionDefaults.ts
Yogesh
initial deploy
cd8bd0a
Raw
History Blame Contribute Delete
2.74 kB
import { getProviderConnections, updateProviderConnection } from "@/lib/db/providers";
import { getSettings, updateSettings } from "@/lib/db/settings";
import { getCodexRequestDefaults } from "./requestDefaults";
type JsonRecord = Record<string, unknown>;
const MIGRATION_SETTING_KEY = "codexConnectionDefaultsMigrationV1";
function asRecord(value: unknown): JsonRecord {
return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : {};
}
function parseLegacyCodexServiceTier(value: unknown): { enabled: boolean } {
if (typeof value === "string") {
try {
return parseLegacyCodexServiceTier(JSON.parse(value));
} catch {
return { enabled: false };
}
}
const record = asRecord(value);
const tier = typeof record.tier === "string" ? record.tier.trim().toLowerCase() : "";
return { enabled: record.enabled === true && (!tier || tier === "priority" || tier === "fast") };
}
export async function migrateCodexConnectionDefaultsFromLegacySettings(): Promise<{
migrated: boolean;
updatedConnectionIds: string[];
legacyFastEnabled: boolean;
}> {
const settings = await getSettings();
if (settings[MIGRATION_SETTING_KEY]) {
return {
migrated: false,
updatedConnectionIds: [],
legacyFastEnabled: parseLegacyCodexServiceTier(settings.codexServiceTier).enabled,
};
}
const legacyFastEnabled = parseLegacyCodexServiceTier(settings.codexServiceTier).enabled;
const codexConnections = await getProviderConnections({ provider: "codex" });
const updatedConnectionIds: string[] = [];
for (const connection of codexConnections) {
const providerSpecificData = asRecord(connection.providerSpecificData);
const existingDefaults = getCodexRequestDefaults(providerSpecificData);
const nextDefaults: JsonRecord = { ...existingDefaults };
if (!existingDefaults.reasoningEffort) {
nextDefaults.reasoningEffort = "medium";
}
if (legacyFastEnabled && !existingDefaults.serviceTier) {
nextDefaults.serviceTier = "priority";
}
const defaultsChanged =
nextDefaults.reasoningEffort !== existingDefaults.reasoningEffort ||
nextDefaults.serviceTier !== existingDefaults.serviceTier;
if (!defaultsChanged) continue;
await updateProviderConnection(connection.id, {
providerSpecificData: {
...providerSpecificData,
requestDefaults: nextDefaults,
},
});
updatedConnectionIds.push(connection.id);
}
await updateSettings({
[MIGRATION_SETTING_KEY]: {
completedAt: new Date().toISOString(),
updatedConnectionIds,
legacyFastEnabled,
},
});
return {
migrated: true,
updatedConnectionIds,
legacyFastEnabled,
};
}