fix(model-sync): skip replace when auto-sync returns empty model list

Prevent auto-sync from wiping manually-imported models when the upstream
/models endpoint fails, times out, or returns an empty list. Added
`allowEmpty` option (default false) to replaceCustomModels — callers that
intentionally clear all models (DELETE ?all=true) pass `allowEmpty: true`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
tombii
2026-04-01 23:01:30 +02:00
committed by diegosouzapw
parent 2c63e0fdd6
commit f4087694b1

View File

@@ -429,6 +429,12 @@ export async function replaceCustomModels(
});
if (merged.length === 0) {
// Guard: skip destructive clear when the caller hasn't explicitly opted in.
// This prevents auto-sync from wiping manually-imported models when the
// upstream /models endpoint fails, times out, or returns an empty list.
if (!allowEmpty) {
return Array.isArray(existing) ? existing : [];
}
db.prepare("DELETE FROM key_value WHERE namespace = 'customModels' AND key = ?").run(
providerId
);