This commit is contained in:
Timothy Jaeryang Baek committed 2026-08-22 08:05:52 -04:00
1 parent 883c7434fb
commit ccbb3303f2
1 file changed
+28 -15
+28 -15
View File
@@ -88,8 +88,8 @@
let defaultModelIdSet = new Set<string>(); let defaultModelIdSet = new Set<string>();
let defaultPinnedModelIdSet = new Set<string>(); let defaultPinnedModelIdSet = new Set<string>();
let workspaceModels: ModelListItem[] = [];
let baseModels: ModelListItem[] = []; let baseModels: ModelListItem[] = [];
let allModels: ModelListItem[] = [];
let filteredModels = []; let filteredModels = [];
let selectedModelId = null; let selectedModelId = null;
@@ -119,6 +119,9 @@
const isSharedModel = (model) => (model?.access_grants ?? []).length > 0 && !isPublicModel(model); const isSharedModel = (model) => (model?.access_grants ?? []).length > 0 && !isPublicModel(model);
const isPresetModel = (model: any) =>
!!(model?.preset || model?.base_model_id || model?.info?.base_model_id);
const modelAccessLabel = (model) => { const modelAccessLabel = (model) => {
if (isPublicModel(model)) { if (isPublicModel(model)) {
return $i18n.t('Public'); return $i18n.t('Public');
@@ -264,19 +267,19 @@
selectedTag = ''; selectedTag = '';
} }
workspaceModels = await getBaseModels(localStorage.token, selectedTag); baseModels = await getBaseModels(localStorage.token, selectedTag);
baseModels = await getModels(localStorage.token, null, true); allModels = await getModels(localStorage.token);
const workspaceModelIds = new Set<string>(workspaceModels.map((wm: ModelListItem) => wm.id)); const baseModelIds = new Set<string>(baseModels.map((model: ModelListItem) => model.id));
models = baseModels models = allModels
.filter((m: ModelListItem) => !selectedTag || workspaceModelIds.has(m.id)) .filter((m: ModelListItem) => !selectedTag || baseModelIds.has(m.id))
.map((m: ModelListItem) => { .map((m: ModelListItem) => {
const workspaceModel = workspaceModels.find((wm: ModelListItem) => wm.id === m.id); const baseModel = baseModels.find((model: ModelListItem) => model.id === m.id);
if (workspaceModel) { if (baseModel) {
return { return {
...m, ...m,
...workspaceModel ...baseModel
}; };
} else { } else {
return { return {
@@ -455,9 +458,9 @@
} }
const upsertModelHandler = async (model, overrides = {}, showToast = true) => { const upsertModelHandler = async (model, overrides = {}, showToast = true) => {
model = { ...model, base_model_id: null, ...overrides }; model = { ...model, ...(isPresetModel(model) ? {} : { base_model_id: null }), ...overrides };
if (workspaceModels.find((m) => m.id === model.id)) { if (baseModels.find((m: ModelListItem) => m.id === model.id) || isPresetModel(model)) {
const res = await updateModelById(localStorage.token, model.id, model).catch((error) => { const res = await updateModelById(localStorage.token, model.id, model).catch((error) => {
return null; return null;
}); });
@@ -486,7 +489,7 @@
}; };
const toggleModelHandler = async (model) => { const toggleModelHandler = async (model) => {
if (!Object.keys(model).includes('base_model_id')) { if (!Object.keys(model).includes('base_model_id') && !isPresetModel(model)) {
await createNewModel(localStorage.token, { await createNewModel(localStorage.token, {
id: model.id, id: model.id,
name: model.name, name: model.name,
@@ -589,10 +592,20 @@
}; };
const getFullModel = async (model: any) => const getFullModel = async (model: any) =>
workspaceModels.some((workspaceModel) => workspaceModel.id === model.id) baseModels.some((baseModel) => baseModel.id === model.id) || isPresetModel(model)
? ((await getModelById(localStorage.token, model.id).catch(() => null)) ?? model) ? ((await getModelById(localStorage.token, model.id).catch(() => null)) ?? model)
: model; : model;
const openModelHandler = async (model: any) => {
if (isPresetModel(model)) {
showSettings.set(false);
await goto(`/workspace/models/edit?id=${encodeURIComponent(model.id)}`);
return;
}
selectedModelId = model.id;
};
const cloneHandler = async (model) => { const cloneHandler = async (model) => {
model = await getFullModel(model); model = await getFullModel(model);
sessionStorage.model = JSON.stringify({ sessionStorage.model = JSON.stringify({
@@ -933,7 +946,7 @@
class="flex group/item gap-2.5 w-full min-w-0 flex-1 text-left cursor-pointer" class="flex group/item gap-2.5 w-full min-w-0 flex-1 text-left cursor-pointer"
type="button" type="button"
on:click={() => { on:click={() => {
selectedModelId = model.id; openModelHandler(model);
}} }}
> >
<div class="self-center"> <div class="self-center">
@@ -1105,7 +1118,7 @@
type="button" type="button"
aria-label={$i18n.t('Edit')} aria-label={$i18n.t('Edit')}
on:click={() => { on:click={() => {
selectedModelId = model.id; openModelHandler(model);
}} }}
> >
<svg <svg