From 73895b5f4bcf57cc66eea4a20c1b0c483c3a7e34 Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 23 Sep 2025 10:30:53 +0800 Subject: [PATCH 1/5] feat(agents): enhance model handling with filters and styling - Add filter support to useApiModel hook for provider-specific models - Improve ApiModelLabel with customizable classNames for styling - Update ChatNavbar to use filtered models for agents --- src/renderer/src/components/ApiModelLabel.tsx | 19 +++++++++++++------ src/renderer/src/hooks/agents/useModel.ts | 9 ++++++--- src/renderer/src/pages/home/ChatNavbar.tsx | 7 +++++-- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/renderer/src/components/ApiModelLabel.tsx b/src/renderer/src/components/ApiModelLabel.tsx index e9c78deb48..4e6d318ebd 100644 --- a/src/renderer/src/components/ApiModelLabel.tsx +++ b/src/renderer/src/components/ApiModelLabel.tsx @@ -5,15 +5,22 @@ import React from 'react' export interface ModelLabelProps extends Omit, 'children'> { model?: ApiModel + classNames?: { + container?: string + avatar?: string + modelName?: string + divider?: string + providerName?: string + } } -export const ApiModelLabel: React.FC = ({ model, className, ...props }) => { +export const ApiModelLabel: React.FC = ({ model, className, classNames, ...props }) => { return ( -
- - - {model?.name} | {model?.provider_name} - +
+ + {model?.name} + | + {model?.provider_name}
) } diff --git a/src/renderer/src/hooks/agents/useModel.ts b/src/renderer/src/hooks/agents/useModel.ts index dd7f9cc1d6..17c1b02147 100644 --- a/src/renderer/src/hooks/agents/useModel.ts +++ b/src/renderer/src/hooks/agents/useModel.ts @@ -1,10 +1,13 @@ +import { ApiModelsFilter } from '@renderer/types' + import { useApiModels } from './useModels' export type UseModelProps = { - id: string + id?: string + filter?: ApiModelsFilter } -export const useApiModel = (id?: string) => { - const { models } = useApiModels() +export const useApiModel = ({ id, filter }: UseModelProps) => { + const { models } = useApiModels(filter) return models.find((model) => model.id === id) } diff --git a/src/renderer/src/pages/home/ChatNavbar.tsx b/src/renderer/src/pages/home/ChatNavbar.tsx index f437f0bb49..01522a6833 100644 --- a/src/renderer/src/pages/home/ChatNavbar.tsx +++ b/src/renderer/src/pages/home/ChatNavbar.tsx @@ -41,7 +41,8 @@ const HeaderNavbar: FC = ({ activeAssistant, setActiveAssistant, activeTo const { chat } = useRuntime() const { activeTopicOrSession, activeAgentId } = chat const { agent } = useAgent(activeAgentId) - const agentModel = useApiModel(agent?.model) + // TODO: filter is temporally for agent since it cannot get all models once + const agentModel = useApiModel({ id: agent?.model, filter: { providerType: 'anthropic' } }) useShortcut('toggle_show_assistants', toggleShowAssistants) @@ -104,7 +105,9 @@ const HeaderNavbar: FC = ({ activeAssistant, setActiveAssistant, activeTo {activeTopicOrSession === 'topic' && } {/* TODO: Show a select model button for agent. */} {/* FIXME: models endpoint doesn't return all models, so cannot found. */} - {activeTopicOrSession === 'session' && } + {activeTopicOrSession === 'session' && ( + + )} From 46a5ea88f3d6e68a901c30a2b1122250c6a8e1fd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 23 Sep 2025 02:35:34 +0000 Subject: [PATCH 2/5] fix(i18n): Auto update translations for PR #10096 --- src/renderer/src/i18n/translate/el-gr.json | 40 +++++++++++----------- src/renderer/src/i18n/translate/es-es.json | 40 +++++++++++----------- src/renderer/src/i18n/translate/fr-fr.json | 40 +++++++++++----------- src/renderer/src/i18n/translate/ja-jp.json | 24 ++++++------- src/renderer/src/i18n/translate/pt-pt.json | 40 +++++++++++----------- src/renderer/src/i18n/translate/ru-ru.json | 40 +++++++++++----------- 6 files changed, 112 insertions(+), 112 deletions(-) diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 982956f49c..f73eb9c3dd 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -47,8 +47,8 @@ "allowed_tools": { "empty": "Δεν υπάρχουν διαθέσιμα εργαλεία για αυτόν τον agent.", "helper": "Επιλέξτε ποια εργαλεία είναι προεγκεκριμένα. Τα μη επιλεγμένα θα χρειαστούν έγκριση πριν από τη χρήση.", - "label": "[to be translated]:Pre-approved tools", - "placeholder": "[to be translated]:Select pre-approved tools" + "label": "Προεγκεκριμένα εργαλεία", + "placeholder": "Επιλέξτε προεγκεκριμένα εργαλεία" }, "create": { "error": { @@ -82,33 +82,33 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "Ορίστε τον αριθμό γύρων αιτήματος/απάντησης που θα εκτελούνται αυτόματα από τον διαμεσολαβητ.", + "helper": "Όσο υψηλότερη είναι η τιμή, τόσο περισσότερο μπορεί να λειτουργεί αυτόνομα· όσο χαμηλότερη είναι, τόσο πιο εύκολα ελέγχεται.", + "label": "Όριο αριθμού γύρων συνεδρίας" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "Ο τρόπος με τον οποίο ο πληρεξούσιος χειρίζεται την κατάσταση όταν απαιτείται εξουσιοδότηση.", + "label": "Λειτουργία δικαιωμάτων", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "Αυτόματη αποδοχή επεξεργασίας", + "bypassPermissions": "παράλειψη ελέγχου δικαιωμάτων", + "default": "Προεπιλογή (να ερωτηθεί πριν από τη συνέχεια)", + "plan": "Λειτουργία σχεδιασμού (απαιτείται έγκριση σχεδίου)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "Επιλέξτε λειτουργία δικαιωμάτων" }, - "title": "[to be translated]:高级设置" + "title": "Ρυθμίσεις για προχωρημένους" }, "essential": "Βασικές Ρυθμίσεις", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "Διακομιστής MCP", "prompt": "Ρυθμίσεις Προτροπής", "tools": { - "approved": "[to be translated]:approved", - "caution": "[to be translated]:Pre-approved tools bypass human review. Enable only trusted tools.", - "description": "[to be translated]:Choose which tools can run without manual approval.", - "requiresPermission": "[to be translated]:Requires permission when not pre-approved.", - "tab": "[to be translated]:Pre-approved tools", - "title": "[to be translated]:Pre-approved tools", + "approved": "εγκεκριμένο", + "caution": "Εργαλεία προεγκεκριμένα παρακάμπτουν την ανθρώπινη αξιολόγηση. Ενεργοποιήστε μόνο έμπιστα εργαλεία.", + "description": "Επιλέξτε ποια εργαλεία μπορούν να εκτελούνται χωρίς χειροκίνητη έγκριση.", + "requiresPermission": "Απαιτείται άδεια όταν δεν έχει προεγκριθεί.", + "tab": "Προεγκεκριμένα εργαλεία", + "title": "Προεγκεκριμένα εργαλεία", "toggle": "{{defaultValue}}" } }, diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index f0f1ec3b5e..ddf2b5b597 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -47,8 +47,8 @@ "allowed_tools": { "empty": "No hay herramientas disponibles para este agente.", "helper": "Elige qué herramientas quedan preaprobadas. Las no seleccionadas requerirán aprobación manual antes de usarse.", - "label": "[to be translated]:Pre-approved tools", - "placeholder": "[to be translated]:Select pre-approved tools" + "label": "Herramientas preaprobadas", + "placeholder": "Seleccionar herramientas preaprobadas" }, "create": { "error": { @@ -82,33 +82,33 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "Establece el número de rondas de solicitud/respuesta que el agente ejecutará automáticamente.", + "helper": "Cuanto mayor es el valor, más tiempo puede funcionar de forma autónoma; cuanto menor es el valor, más fácil es de controlar.", + "label": "Límite máximo de turnos de conversación" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "Cómo el agente de control maneja las situaciones que requieren autorización.", + "label": "modo de permisos", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "Aceptar ediciones automáticamente", + "bypassPermissions": "Omitir verificación de permisos", + "default": "Predeterminado (preguntar antes de continuar)", + "plan": "Modo de planificación (requiere aprobación del plan)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "Seleccionar modo de permisos" }, - "title": "[to be translated]:高级设置" + "title": "Configuración avanzada" }, "essential": "Configuraciones esenciales", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "Servidor MCP", "prompt": "Configuración de indicaciones", "tools": { - "approved": "[to be translated]:approved", - "caution": "[to be translated]:Pre-approved tools bypass human review. Enable only trusted tools.", - "description": "[to be translated]:Choose which tools can run without manual approval.", - "requiresPermission": "[to be translated]:Requires permission when not pre-approved.", - "tab": "[to be translated]:Pre-approved tools", - "title": "[to be translated]:Pre-approved tools", + "approved": "aprobado", + "caution": "Herramientas preaprobadas omiten la revisión humana. Habilita solo herramientas de confianza.", + "description": "Elige qué herramientas pueden ejecutarse sin aprobación manual.", + "requiresPermission": "Requiere permiso cuando no está preaprobado.", + "tab": "Herramientas preaprobadas", + "title": "Herramientas preaprobadas", "toggle": "{{defaultValue}}" } }, diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index 7fa0ed81ca..ead69c1bb9 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -47,8 +47,8 @@ "allowed_tools": { "empty": "Aucun outil disponible pour cet agent.", "helper": "Choisissez les outils préapprouvés. Les outils non sélectionnés nécessiteront une approbation avant utilisation.", - "label": "[to be translated]:Pre-approved tools", - "placeholder": "[to be translated]:Select pre-approved tools" + "label": "Outils pré-approuvés", + "placeholder": "Sélectionner des outils pré-approuvés" }, "create": { "error": { @@ -82,33 +82,33 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "Définir le nombre de cycles de requête/réponse exécutés automatiquement par l'agent.", + "helper": "Une valeur plus élevée permet une autonomie prolongée ; une valeur plus faible facilite le contrôle.", + "label": "Limite maximale de tours de conversation" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "Contrôle la manière dont l'agent gère les demandes d'autorisation.", + "label": "mode d'autorisation", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "Accepter automatiquement les modifications", + "bypassPermissions": "sauter la vérification des autorisations", + "default": "Par défaut (demander avant de continuer)", + "plan": "Mode de planification (plan soumis à approbation)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "Choisir le mode d'autorisation" }, - "title": "[to be translated]:高级设置" + "title": "Paramètres avancés" }, "essential": "Paramètres essentiels", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "Serveur MCP", "prompt": "Paramètres de l'invite", "tools": { - "approved": "[to be translated]:approved", - "caution": "[to be translated]:Pre-approved tools bypass human review. Enable only trusted tools.", - "description": "[to be translated]:Choose which tools can run without manual approval.", - "requiresPermission": "[to be translated]:Requires permission when not pre-approved.", - "tab": "[to be translated]:Pre-approved tools", - "title": "[to be translated]:Pre-approved tools", + "approved": "approuvé", + "caution": "Outils pré-approuvés contournent la révision humaine. Activez uniquement les outils de confiance.", + "description": "Choisissez quels outils peuvent s'exécuter sans approbation manuelle.", + "requiresPermission": "Nécessite une autorisation lorsqu'elle n'est pas préapprouvée.", + "tab": "Outils pré-approuvés", + "title": "Outils pré-approuvés", "toggle": "{{defaultValue}}" } }, diff --git a/src/renderer/src/i18n/translate/ja-jp.json b/src/renderer/src/i18n/translate/ja-jp.json index 375326d047..8401752b77 100644 --- a/src/renderer/src/i18n/translate/ja-jp.json +++ b/src/renderer/src/i18n/translate/ja-jp.json @@ -82,25 +82,25 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "プロキシが自動的に実行するリクエスト/レスポンスのラウンド数を設定します。", + "helper": "数値が高いほど自律動作の時間が長くなり、数値が低いほど制御しやすくなります。", + "label": "会話ラウンド数の上限" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "制御エージェントが認可を必要とする場合の処理方法。", + "label": "権限モード", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "自動的に編集を受け入れる", + "bypassPermissions": "権限チェックをスキップ", + "default": "デフォルト(続行する前に確認)", + "plan": "計画モード(承認が必要な計画)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "権限モードを選択" }, - "title": "[to be translated]:高级设置" + "title": "高級設定" }, "essential": "必須設定", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "MCPサーバー", "prompt": "プロンプト設定", "tools": { "approved": "承認済み", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 57fd837c40..7e5f36b287 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -47,8 +47,8 @@ "allowed_tools": { "empty": "Não há ferramentas disponíveis para este agente.", "helper": "Escolha quais ferramentas ficam pré-autorizadas. As não selecionadas exigirão aprovação antes do uso.", - "label": "[to be translated]:Pre-approved tools", - "placeholder": "[to be translated]:Select pre-approved tools" + "label": "Ferramentas pré-aprovadas", + "placeholder": "Selecionar ferramentas pré-aprovadas" }, "create": { "error": { @@ -82,33 +82,33 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "Define o número de ciclos de solicitação/resposta executados automaticamente pelo agente.", + "helper": "Quanto maior o valor, mais tempo pode funcionar de forma autônoma; quanto menor o valor, mais fácil de controlar.", + "label": "Limite máximo de turnos de conversa" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "Controla como o agente lida com situações que exigem autorização.", + "label": "Modo de permissão", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "Aceitar edições automaticamente", + "bypassPermissions": "忽略检查 de permissão", + "default": "Padrão (perguntar antes de continuar)", + "plan": "Modo de planejamento (plano sujeito a aprovação)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "Selecione o modo de permissão" }, - "title": "[to be translated]:高级设置" + "title": "Configurações avançadas" }, "essential": "Configurações Essenciais", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "Servidor MCP", "prompt": "Configurações de Prompt", "tools": { - "approved": "[to be translated]:approved", - "caution": "[to be translated]:Pre-approved tools bypass human review. Enable only trusted tools.", - "description": "[to be translated]:Choose which tools can run without manual approval.", - "requiresPermission": "[to be translated]:Requires permission when not pre-approved.", - "tab": "[to be translated]:Pre-approved tools", - "title": "[to be translated]:Pre-approved tools", + "approved": "aprovado", + "caution": "Ferramentas pré-aprovadas ignoram a revisão humana. Ative apenas ferramentas confiáveis.", + "description": "Escolha quais ferramentas podem ser executadas sem aprovação manual.", + "requiresPermission": "Requer permissão quando não pré-aprovado.", + "tab": "Ferramentas pré-aprovadas", + "title": "Ferramentas pré-aprovadas", "toggle": "{{defaultValue}}" } }, diff --git a/src/renderer/src/i18n/translate/ru-ru.json b/src/renderer/src/i18n/translate/ru-ru.json index 175c54b585..02b11d9284 100644 --- a/src/renderer/src/i18n/translate/ru-ru.json +++ b/src/renderer/src/i18n/translate/ru-ru.json @@ -47,8 +47,8 @@ "allowed_tools": { "empty": "Для этого агента нет доступных инструментов.", "helper": "Выберите инструменты с предварительным допуском. Неотмеченные инструменты потребуют подтверждения перед использованием.", - "label": "[to be translated]:Pre-approved tools", - "placeholder": "[to be translated]:Select pre-approved tools" + "label": "Предварительно одобренные инструменты", + "placeholder": "Выберите предварительно одобренные инструменты" }, "create": { "error": { @@ -82,33 +82,33 @@ "settings": { "advance": { "maxTurns": { - "description": "[to be translated]:设定代理自动执行的请求/回复轮次数。", - "helper": "[to be translated]:数值越高可自主运行越久;数值越低更易控制。", - "label": "[to be translated]:会话轮次数上限" + "description": "Установить количество циклов запрос/ответ, выполняемых автоматически через прокси.", + "helper": "Чем выше значение, тем дольше может работать автономно; чем ниже значение, тем легче контролировать.", + "label": "Максимальное количество раундов в сеансе" }, "permissionMode": { - "description": "[to be translated]:控制代理在需要授权时的处理方式。", - "label": "[to be translated]:权限模式", + "description": "Как агент управления обрабатывает ситуации, требующие авторизации.", + "label": "Режим разрешений", "options": { - "acceptEdits": "[to be translated]:自动接受编辑", - "bypassPermissions": "[to be translated]:跳过权限检查", - "default": "[to be translated]:默认(继续前询问)", - "plan": "[to be translated]:规划模式(需审批计划)" + "acceptEdits": "Автоматически принимать правки", + "bypassPermissions": "Пропустить проверку разрешений", + "default": "По умолчанию (спросить перед продолжением)", + "plan": "Режим планирования (требуется утверждение плана)" }, - "placeholder": "[to be translated]:选择权限模式" + "placeholder": "Выбрать режим разрешений" }, - "title": "[to be translated]:高级设置" + "title": "Расширенные настройки" }, "essential": "Основные настройки", - "mcps": "[to be translated]:MCP 服务器", + "mcps": "MCP сервер", "prompt": "Настройки подсказки", "tools": { - "approved": "[to be translated]:approved", - "caution": "[to be translated]:Pre-approved tools bypass human review. Enable only trusted tools.", - "description": "[to be translated]:Choose which tools can run without manual approval.", - "requiresPermission": "[to be translated]:Requires permission when not pre-approved.", - "tab": "[to be translated]:Pre-approved tools", - "title": "[to be translated]:Pre-approved tools", + "approved": "одобрено", + "caution": "Предварительно одобренные инструменты обходят проверку человеком. Включайте только доверенные инструменты.", + "description": "Выберите, какие инструменты могут запускаться без ручного подтверждения.", + "requiresPermission": "Требуется разрешение, если не предварительно одобрено.", + "tab": "Предварительно одобренные инструменты", + "title": "Предварительно одобренные инструменты", "toggle": "{{defaultValue}}" } }, From d4d25108345c432063a1cdb708797229723226d7 Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 23 Sep 2025 11:13:11 +0800 Subject: [PATCH 3/5] feat(agent): add AllowedToolsSelect component and integrate into forms extract tool selection logic into reusable component to reduce code duplication and improve maintainability --- .../components/Popups/agent/SessionModal.tsx | 44 ++---------- .../components/agent/AllowedToolsSelect.tsx | 54 ++++++++++++++ src/renderer/src/components/agent/index.tsx | 1 + .../AgentSettings/AgentEssentialSettings.tsx | 70 ++++++------------- 4 files changed, 80 insertions(+), 89 deletions(-) create mode 100644 src/renderer/src/components/agent/AllowedToolsSelect.tsx create mode 100644 src/renderer/src/components/agent/index.tsx diff --git a/src/renderer/src/components/Popups/agent/SessionModal.tsx b/src/renderer/src/components/Popups/agent/SessionModal.tsx index df77792d71..8fc869b172 100644 --- a/src/renderer/src/components/Popups/agent/SessionModal.tsx +++ b/src/renderer/src/components/Popups/agent/SessionModal.tsx @@ -1,6 +1,5 @@ import { Button, - Chip, cn, Form, Input, @@ -18,6 +17,7 @@ import { } from '@heroui/react' import { loggerService } from '@logger' import type { Selection } from '@react-types/shared' +import { AllowedToolsSelect } from '@renderer/components/agent' import { getModelLogo } from '@renderer/config/models' import { useAgent } from '@renderer/hooks/agents/useAgent' import { useApiModels } from '@renderer/hooks/agents/useModels' @@ -197,21 +197,6 @@ export const SessionModal: React.FC = ({ [availableTools] ) - const renderSelectedTools = useCallback((items: SelectedItems) => { - if (!items.length) { - return null - } - return ( -
- {items.map((item) => ( - - {item.data?.name ?? item.textValue ?? item.key} - - ))} -
- ) - }, []) - const modelOptions = useMemo(() => { // mocked data. not final version return (models ?? []).map((model) => ({ @@ -359,32 +344,11 @@ export const SessionModal: React.FC = ({ value={form.description ?? ''} onValueChange={onDescChange} /> - + />