From 936d5f2676dfbd2ba763b30af33a8557dcda9b05 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 1 Jun 2026 10:26:39 -0700 Subject: [PATCH] refac --- .../workspace/Models/ModelEditor.svelte | 5 ++- .../workspace/Models/SkillsSelector.svelte | 36 ++++++++++++++----- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte index bedc0920be..2bd001dbd8 100644 --- a/src/lib/components/workspace/Models/ModelEditor.svelte +++ b/src/lib/components/workspace/Models/ModelEditor.svelte @@ -6,6 +6,7 @@ import { WEBUI_BASE_URL, DEFAULT_CAPABILITIES } from '$lib/constants'; import { getTools } from '$lib/apis/tools'; + import { getSkills } from '$lib/apis/skills'; import { getFunctions } from '$lib/apis/functions'; import { getModelsDefaults } from '$lib/apis/configs'; @@ -93,6 +94,7 @@ let knowledge = []; let toolIds = []; let skillIds = []; + let skillsList = []; let filterIds = []; let defaultFilterIds = []; @@ -248,6 +250,7 @@ onMount(async () => { await tools.set(await getTools(localStorage.token)); + skillsList = (await getSkills(localStorage.token).catch(() => null)) ?? []; await functions.set(await getFunctions(localStorage.token)); // Fetch admin-configured default model metadata so the editor @@ -771,7 +774,7 @@
- +
{#if ($functions ?? []).filter((func) => func.type === 'filter').length > 0 || ($functions ?? []).filter((func) => func.type === 'action').length > 0} diff --git a/src/lib/components/workspace/Models/SkillsSelector.svelte b/src/lib/components/workspace/Models/SkillsSelector.svelte index 6a7a481064..6effb1dc43 100644 --- a/src/lib/components/workspace/Models/SkillsSelector.svelte +++ b/src/lib/components/workspace/Models/SkillsSelector.svelte @@ -3,18 +3,25 @@ import Tooltip from '$lib/components/common/Tooltip.svelte'; import { getContext, onMount } from 'svelte'; - import { getSkillItems } from '$lib/apis/skills'; + export let skills = []; + + let _skills = {}; + let searchQuery = ''; export let selectedSkillIds: string[] = []; - let _skills: Record = {}; - const i18n = getContext('i18n'); - onMount(async () => { - const res = await getSkillItems(localStorage.token).catch(() => null); - const skills = res?.items ?? []; - _skills = skills.reduce((acc: Record, skill: any) => { + $: filteredSkillKeys = Object.keys(_skills).filter((id) => { + if (!searchQuery.trim()) return true; + const q = searchQuery.toLowerCase(); + return ( + _skills[id].name?.toLowerCase().includes(q) || _skills[id].id?.toLowerCase().includes(q) + ); + }); + + onMount(() => { + _skills = skills.reduce((acc, skill) => { acc[skill.id] = { ...skill, selected: selectedSkillIds.includes(skill.id) @@ -30,10 +37,21 @@
{$i18n.t('Skills')}
+ {#if Object.keys(_skills).length > 10} +
+ +
+ {/if} +
- {#if Object.keys(_skills).length > 0} + {#if skills.length > 0}
- {#each Object.keys(_skills) as skill, skillIdx} + {#each filteredSkillKeys as skill, skillIdx}