From d4d25108345c432063a1cdb708797229723226d7 Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 23 Sep 2025 11:13:11 +0800 Subject: [PATCH] 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} /> - + />