diff --git a/tools/ui/src/lib/components/app/models/ModelsSelectorDropdown.svelte b/tools/ui/src/lib/components/app/models/ModelsSelectorDropdown.svelte index ccd46b2f3d..1fd7292161 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelectorDropdown.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelectorDropdown.svelte @@ -8,11 +8,17 @@ DropdownMenuSearchable, ModelId, ModelsSelectorList, - ModelsSelectorOption + ModelsSelectorOption, + ModelsSelectorSettingsSubmenu } from '$lib/components/app'; import * as DropdownMenu from '$lib/components/ui/dropdown-menu'; import * as Tooltip from '$lib/components/ui/tooltip'; - import { MODEL_SELECTOR_ICON, SETTINGS_KEYS } from '$lib/constants'; + import { + MODEL_SELECTOR_ICON, + SETTINGS_CHAT_SECTIONS, + SETTINGS_KEYS, + SETTINGS_SECTION_SLUGS + } from '$lib/constants'; import { KeyboardKey, ServerModelStatus } from '$lib/enums'; import { useModelsSelector } from '$lib/hooks/use-models-selector.svelte'; import { useReasoningMenu } from '$lib/hooks/use-reasoning-menu.svelte'; @@ -66,6 +72,17 @@ const reasoning = useReasoningMenu(); + const samplingSection = $derived( + SETTINGS_CHAT_SECTIONS.find((s) => s.slug === SETTINGS_SECTION_SLUGS.SAMPLING) + ); + const penaltiesSection = $derived( + SETTINGS_CHAT_SECTIONS.find((s) => s.slug === SETTINGS_SECTION_SLUGS.PENALTIES) + ); + + // Sampling/penalties need a loaded model to show server defaults, so + // disable the submenus until one is loaded. + const hasModelLoaded = $derived(modelsStore.loadedModelIds.length > 0); + const showOrgNameInTrigger = $derived( settingsStore.config[SETTINGS_KEYS.SHOW_MODEL_ORG_NAME_IN_TRIGGER] ?? false ); @@ -352,6 +369,14 @@ + + {#if samplingSection} + + {/if} + + {#if penaltiesSection} + + {/if} {:else} diff --git a/tools/ui/src/lib/components/app/models/ModelsSelectorSettingsSubmenu.svelte b/tools/ui/src/lib/components/app/models/ModelsSelectorSettingsSubmenu.svelte new file mode 100644 index 0000000000..d1d58efa63 --- /dev/null +++ b/tools/ui/src/lib/components/app/models/ModelsSelectorSettingsSubmenu.svelte @@ -0,0 +1,91 @@ + + + + + + + {section.title} + + + + {#each section.fields ?? [] as field (field.key)} + {#if field.type === SettingsFieldType.INPUT} + + {:else if field.type === SettingsFieldType.CHECKBOX} + + {/if} + {/each} + + diff --git a/tools/ui/src/lib/components/app/models/index.ts b/tools/ui/src/lib/components/app/models/index.ts index 3ac6ecb678..abd05adc26 100644 --- a/tools/ui/src/lib/components/app/models/index.ts +++ b/tools/ui/src/lib/components/app/models/index.ts @@ -65,6 +65,8 @@ export { default as ModelsSelectorList } from './ModelsSelectorList.svelte'; */ export { default as ModelsSelectorOption } from './ModelsSelectorOption.svelte'; +export { default as ModelsSelectorSettingsSubmenu } from './ModelsSelectorSettingsSubmenu.svelte'; + /** * **ModelsSelectorSheet** - Mobile model selection sheet *