| | <script lang="ts"> |
| | import { getContext } from 'svelte'; |
| | import Checkbox from '$lib/components/common/Checkbox.svelte'; |
| | import Tooltip from '$lib/components/common/Tooltip.svelte'; |
| | import { marked } from 'marked'; |
| | |
| | const i18n = getContext('i18n'); |
| | |
| | const toolLabels = { |
| | time: { |
| | label: $i18n.t('Time & Calculation'), |
| | description: $i18n.t('Get current time and perform date/time calculations') |
| | }, |
| | memory: { |
| | label: $i18n.t('Memory'), |
| | description: $i18n.t('Search and manage user memories') |
| | }, |
| | chats: { |
| | label: $i18n.t('Chat History'), |
| | description: $i18n.t('Search and view user chat history') |
| | }, |
| | notes: { |
| | label: $i18n.t('Notes'), |
| | description: $i18n.t('Search, view, and manage user notes') |
| | }, |
| | knowledge: { |
| | label: $i18n.t('Knowledge Base'), |
| | description: $i18n.t('Browse and query knowledge bases') |
| | }, |
| | channels: { |
| | label: $i18n.t('Channels'), |
| | description: $i18n.t('Search channels and channel messages') |
| | }, |
| | web_search: { |
| | label: $i18n.t('Web Search'), |
| | description: $i18n.t('Search the web and fetch URLs') |
| | }, |
| | image_generation: { |
| | label: $i18n.t('Image Generation'), |
| | description: $i18n.t('Generate and edit images') |
| | }, |
| | code_interpreter: { |
| | label: $i18n.t('Code Interpreter'), |
| | description: $i18n.t('Execute code') |
| | } |
| | }; |
| | |
| | const allTools = Object.keys(toolLabels); |
| | |
| | export let builtinTools: Record<string, boolean> = {}; |
| | |
| | |
| | $: { |
| | for (const tool of allTools) { |
| | if (!(tool in builtinTools)) { |
| | builtinTools[tool] = true; |
| | } |
| | } |
| | } |
| | </script> |
| |
|
| | <div> |
| | <div class="flex w-full justify-between mb-1"> |
| | <div class="self-center text-xs font-medium text-gray-500">{$i18n.t('Builtin Tools')}</div> |
| | </div> |
| | <div class="flex items-center mt-2 flex-wrap"> |
| | {#each allTools as tool} |
| | <div class="flex items-center gap-2 mr-3"> |
| | <Checkbox |
| | state={builtinTools[tool] !== false ? 'checked' : 'unchecked'} |
| | on:change={(e) => { |
| | builtinTools = { |
| | ...builtinTools, |
| | [tool]: e.detail === 'checked' |
| | }; |
| | }} |
| | /> |
| | |
| | <div class="py-0.5 text-sm"> |
| | <Tooltip content={marked.parse(toolLabels[tool].description)}> |
| | {$i18n.t(toolLabels[tool].label)} |
| | </Tooltip> |
| | </div> |
| | </div> |
| | {/each} |
| | </div> |
| | </div> |
| |
|