This commit is contained in:
Timothy Jaeryang Baek
2026-08-22 08:05:52 -04:00
parent 883c7434fb
commit ccbb3303f2
+28 -15
View File
@@ -88,8 +88,8 @@
let defaultModelIdSet = new Set<string>();
let defaultPinnedModelIdSet = new Set<string>();
let workspaceModels: ModelListItem[] = [];
let baseModels: ModelListItem[] = [];
let allModels: ModelListItem[] = [];
let filteredModels = [];
let selectedModelId = null;
@@ -119,6 +119,9 @@
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) => {
if (isPublicModel(model)) {
return $i18n.t('Public');
@@ -264,19 +267,19 @@
selectedTag = '';
}
workspaceModels = await getBaseModels(localStorage.token, selectedTag);
baseModels = await getModels(localStorage.token, null, true);
const workspaceModelIds = new Set<string>(workspaceModels.map((wm: ModelListItem) => wm.id));
baseModels = await getBaseModels(localStorage.token, selectedTag);
allModels = await getModels(localStorage.token);
const baseModelIds = new Set<string>(baseModels.map((model: ModelListItem) => model.id));
models = baseModels
.filter((m: ModelListItem) => !selectedTag || workspaceModelIds.has(m.id))
models = allModels
.filter((m: ModelListItem) => !selectedTag || baseModelIds.has(m.id))
.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 {
...m,
...workspaceModel
...baseModel
};
} else {
return {
@@ -455,9 +458,9 @@
}
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) => {
return null;
});
@@ -486,7 +489,7 @@
};
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, {
id: model.id,
name: model.name,
@@ -589,10 +592,20 @@
};
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)
: 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) => {
model = await getFullModel(model);
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"
type="button"
on:click={() => {
selectedModelId = model.id;
openModelHandler(model);
}}
>
<div class="self-center">
@@ -1105,7 +1118,7 @@
type="button"
aria-label={$i18n.t('Edit')}
on:click={() => {
selectedModelId = model.id;
openModelHandler(model);
}}
>
<svg