f42e29fdf1
* wip: server_tools * feat: Integrate with `/tools` endpoint * feat: Builtin + MCP + JSON Schema Tools WIP * refactor * displayName -> display_name * snake_case everywhere * rm redundant field * feat: Improvements * chore: update webui build output * refactor: Updates after server updates * chore: update webui build output * change arg to --tools all * feat: UI improvements * chore: update webui build output * add readme mention * llama-gen-docs * chore: update webui build output * chore: update webui build output * chore: update webui build output * feat: Reorganize settings sections * feat: Separate dialogs for MCP Servers Settings and Import/Export * feat: WIP * feat: WIP * feat: WIP * feat: WIP * feat: WIP * feat: WIP * WIP on allozaur/20677-webui-server-tools * feat: UI improvements * chore: Update package lock * chore: Run `npm audit fix` * feat: UI WIP * feat: UI * refactor: Desktop Icon Strip DRY * feat: Cleaner rendering and transition for ChatScreen * feat: UI improvements * feat: UI improvement * feat: Remove MCP Server "enable" switch from Tools submenu * chore: Run `npm audit fix` * feat: WIP * feat: Logic improvements * refactor: Cleanup * refactor: DRY * test: Fix Chat Sidebar UI Tests * chore: Update package lock * refactor: Cleanup * feat: Chat Message Action Card with Continue and Permission flow implementations * feat: Add agentic steering messages, draft messages and improve chat UX * fix: Search results UI * test: Fix unit test * feat: UI/UX improvements * refactor: Simplify `useToolsPanel` access in components * feat: Implement Processing Info Context API * feat: Implement 'Go back to chat' functionality for settings * feat: Enhance MCP Server management in Chat Form Attachments * style: Minor UI and branding adjustments * chore: Update webui static build output * chore: Formatting, linting & type checks * feat: Draft messages logic * feat: UI improvements * feat: Steering Messages improvements * refactor: Cleanup * refactor: Cleanup * feat: Improve UI * refactor: Settings navigation hook * refactor: DRY code * refactor: DRY ChatMessageUser UI components * refactor: Desktop Icon Strip DRY * refactor: Tools & permissions * fix: Navigation condition * refactor: Cleanup * refactor: Cleanup * refactor: Cleanup * fix: preserve reasoning_content in agentic flow --------- Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
317 lines
7.3 KiB
TypeScript
317 lines
7.3 KiB
TypeScript
/**
|
|
* Settings section titles constants for ChatSettings component.
|
|
*
|
|
* These titles define the navigation sections in the settings dialog.
|
|
* Used for both sidebar navigation and mobile horizontal scroll menu.
|
|
*/
|
|
export const SETTINGS_SECTION_TITLES = {
|
|
GENERAL: 'General',
|
|
DISPLAY: 'Display',
|
|
SAMPLING: 'Sampling',
|
|
PENALTIES: 'Penalties',
|
|
IMPORT_EXPORT: 'Import/Export',
|
|
AGENTIC: 'Agentic',
|
|
TOOLS: 'Tools',
|
|
MCP: 'MCP',
|
|
DEVELOPER: 'Developer'
|
|
} as const;
|
|
|
|
/** Type for settings section titles */
|
|
export type SettingsSectionTitle =
|
|
(typeof SETTINGS_SECTION_TITLES)[keyof typeof SETTINGS_SECTION_TITLES];
|
|
|
|
import {
|
|
Funnel,
|
|
AlertTriangle,
|
|
Code,
|
|
Monitor,
|
|
ListRestart,
|
|
Sliders,
|
|
PencilRuler
|
|
} from '@lucide/svelte';
|
|
import { SettingsFieldType } from '$lib/enums/settings';
|
|
import { SETTINGS_COLOR_MODES_CONFIG } from '$lib/constants/settings-config';
|
|
import { SETTINGS_KEYS } from '$lib/constants/settings-keys';
|
|
import type { Component } from 'svelte';
|
|
|
|
export interface SettingsSection {
|
|
fields?: SettingsFieldConfig[];
|
|
icon: Component;
|
|
slug: string;
|
|
title: SettingsSectionTitle;
|
|
}
|
|
|
|
export const SETTINGS_CHAT_SECTIONS: SettingsSection[] = [
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.GENERAL,
|
|
slug: 'general',
|
|
icon: Sliders,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.THEME,
|
|
label: 'Theme',
|
|
type: SettingsFieldType.SELECT,
|
|
options: SETTINGS_COLOR_MODES_CONFIG
|
|
},
|
|
{ key: SETTINGS_KEYS.API_KEY, label: 'API Key', type: SettingsFieldType.INPUT },
|
|
{
|
|
key: SETTINGS_KEYS.SYSTEM_MESSAGE,
|
|
label: 'System Message',
|
|
type: SettingsFieldType.TEXTAREA
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.PASTE_LONG_TEXT_TO_FILE_LEN,
|
|
label: 'Paste long text to file length',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.COPY_TEXT_ATTACHMENTS_AS_PLAIN_TEXT,
|
|
label: 'Copy text attachments as plain text',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.ENABLE_CONTINUE_GENERATION,
|
|
label: 'Enable "Continue" button',
|
|
type: SettingsFieldType.CHECKBOX,
|
|
isExperimental: true
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.PDF_AS_IMAGE,
|
|
label: 'Parse PDF as image',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.ASK_FOR_TITLE_CONFIRMATION,
|
|
label: 'Ask for confirmation before changing conversation title',
|
|
type: SettingsFieldType.CHECKBOX
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.DISPLAY,
|
|
slug: 'display',
|
|
icon: Monitor,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.SHOW_MESSAGE_STATS,
|
|
label: 'Show message generation statistics',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.SHOW_THOUGHT_IN_PROGRESS,
|
|
label: 'Show thought in progress',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.SHOW_TOOL_CALL_IN_PROGRESS,
|
|
label: 'Show tool call in progress',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.KEEP_STATS_VISIBLE,
|
|
label: 'Keep stats visible after generation',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.AUTO_MIC_ON_EMPTY,
|
|
label: 'Show microphone on empty input',
|
|
type: SettingsFieldType.CHECKBOX,
|
|
isExperimental: true
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.RENDER_USER_CONTENT_AS_MARKDOWN,
|
|
label: 'Render user content as Markdown',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.FULL_HEIGHT_CODE_BLOCKS,
|
|
label: 'Use full height code blocks',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DISABLE_AUTO_SCROLL,
|
|
label: 'Disable automatic scroll',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.ALWAYS_SHOW_SIDEBAR_ON_DESKTOP,
|
|
label: 'Always show sidebar on desktop',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.SHOW_RAW_MODEL_NAMES,
|
|
label: 'Show raw model names',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.ALWAYS_SHOW_AGENTIC_TURNS,
|
|
label: 'Always show agentic turns in conversation',
|
|
type: SettingsFieldType.CHECKBOX
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.SAMPLING,
|
|
slug: 'sampling',
|
|
icon: Funnel,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.TEMPERATURE,
|
|
label: 'Temperature',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DYNATEMP_RANGE,
|
|
label: 'Dynamic temperature range',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DYNATEMP_EXPONENT,
|
|
label: 'Dynamic temperature exponent',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.TOP_K,
|
|
label: 'Top K',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.TOP_P,
|
|
label: 'Top P',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.MIN_P,
|
|
label: 'Min P',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.XTC_PROBABILITY,
|
|
label: 'XTC probability',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.XTC_THRESHOLD,
|
|
label: 'XTC threshold',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.TYP_P,
|
|
label: 'Typical P',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.MAX_TOKENS,
|
|
label: 'Max tokens',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.SAMPLERS,
|
|
label: 'Samplers',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.BACKEND_SAMPLING,
|
|
label: 'Backend sampling',
|
|
type: SettingsFieldType.CHECKBOX
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.PENALTIES,
|
|
slug: 'penalties',
|
|
icon: AlertTriangle,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.REPEAT_LAST_N,
|
|
label: 'Repeat last N',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.REPEAT_PENALTY,
|
|
label: 'Repeat penalty',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.PRESENCE_PENALTY,
|
|
label: 'Presence penalty',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.FREQUENCY_PENALTY,
|
|
label: 'Frequency penalty',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DRY_MULTIPLIER,
|
|
label: 'DRY multiplier',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DRY_BASE,
|
|
label: 'DRY base',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DRY_ALLOWED_LENGTH,
|
|
label: 'DRY allowed length',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.DRY_PENALTY_LAST_N,
|
|
label: 'DRY penalty last N',
|
|
type: SettingsFieldType.INPUT
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.AGENTIC,
|
|
slug: 'agentic',
|
|
icon: ListRestart,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.AGENTIC_MAX_TURNS,
|
|
label: 'Agentic turns',
|
|
type: SettingsFieldType.INPUT
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.AGENTIC_MAX_TOOL_PREVIEW_LINES,
|
|
label: 'Max lines per tool preview',
|
|
type: SettingsFieldType.INPUT
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.TOOLS,
|
|
slug: 'tools',
|
|
icon: PencilRuler
|
|
},
|
|
{
|
|
title: SETTINGS_SECTION_TITLES.DEVELOPER,
|
|
slug: 'developer',
|
|
icon: Code,
|
|
fields: [
|
|
{
|
|
key: SETTINGS_KEYS.DISABLE_REASONING_PARSING,
|
|
label: 'Disable reasoning content parsing',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.EXCLUDE_REASONING_FROM_CONTEXT,
|
|
label: 'Exclude reasoning from context',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.SHOW_RAW_OUTPUT_SWITCH,
|
|
label: 'Enable raw output toggle',
|
|
type: SettingsFieldType.CHECKBOX
|
|
},
|
|
{
|
|
key: SETTINGS_KEYS.CUSTOM,
|
|
label: 'Custom JSON',
|
|
type: SettingsFieldType.TEXTAREA
|
|
}
|
|
]
|
|
}
|
|
];
|