From 3e04c9493f7ea25c4a6a504c53ccb5147575a911 Mon Sep 17 00:00:00 2001 From: icarus Date: Sat, 13 Sep 2025 22:52:10 +0800 Subject: [PATCH] refactor(agents): rename agents to presets and add new agents array The old 'agents' array was actually storing presets, so it's renamed for clarity. Added new 'agentsNew' array for actual agent entities in preparation for autonomous agent feature. --- src/renderer/src/hooks/useAgents.ts | 18 ++++++++---- src/renderer/src/hooks/useKnowledge.ts | 4 +-- .../agents/components/ManageAgentsPopup.tsx | 4 +-- src/renderer/src/store/agents.ts | 29 +++++++++++++------ 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/renderer/src/hooks/useAgents.ts b/src/renderer/src/hooks/useAgents.ts index dc1e02994e..b739146bd2 100644 --- a/src/renderer/src/hooks/useAgents.ts +++ b/src/renderer/src/hooks/useAgents.ts @@ -1,5 +1,11 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' -import { addAgent, removeAgent, updateAgent, updateAgents, updateAgentSettings } from '@renderer/store/agents' +import { + addAssistantPreset, + removeAssistantPreset, + setAssistantPresets, + updateAssistantPreset, + updateAssistantPresetSettings +} from '@renderer/store/agents' import { AssistantPreset, AssistantSettings } from '@renderer/types' export function useAgents() { @@ -8,9 +14,9 @@ export function useAgents() { return { agents, - updateAgents: (agents: AssistantPreset[]) => dispatch(updateAgents(agents)), - addAgent: (agent: AssistantPreset) => dispatch(addAgent(agent)), - removeAgent: (id: string) => dispatch(removeAgent({ id })) + setAgents: (agents: AssistantPreset[]) => dispatch(setAssistantPresets(agents)), + addAgent: (agent: AssistantPreset) => dispatch(addAssistantPreset(agent)), + removeAgent: (id: string) => dispatch(removeAssistantPreset({ id })) } } @@ -20,9 +26,9 @@ export function useAgent(id: string) { return { agent, - updateAgent: (agent: AssistantPreset) => dispatch(updateAgent(agent)), + updateAgent: (agent: AssistantPreset) => dispatch(updateAssistantPreset(agent)), updateAgentSettings: (settings: Partial) => { - dispatch(updateAgentSettings({ assistantId: agent.id, settings })) + dispatch(updateAssistantPresetSettings({ assistantId: agent.id, settings })) } } } diff --git a/src/renderer/src/hooks/useKnowledge.ts b/src/renderer/src/hooks/useKnowledge.ts index 733726eb6c..05e77dd8a9 100644 --- a/src/renderer/src/hooks/useKnowledge.ts +++ b/src/renderer/src/hooks/useKnowledge.ts @@ -352,7 +352,7 @@ export const useKnowledgeBases = () => { const dispatch = useDispatch() const bases = useSelector((state: RootState) => state.knowledge.bases) const { assistants, updateAssistants } = useAssistants() - const { agents, updateAgents } = useAgents() + const { agents, setAgents } = useAgents() const addKnowledgeBase = (base: KnowledgeBase) => { dispatch(addBase(base)) @@ -390,7 +390,7 @@ export const useKnowledgeBases = () => { }) updateAssistants(_assistants) - updateAgents(_agents) + setAgents(_agents) } const updateKnowledgeBases = (bases: KnowledgeBase[]) => { diff --git a/src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx b/src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx index ab03f71f02..a56432fb23 100644 --- a/src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx +++ b/src/renderer/src/pages/agents/components/ManageAgentsPopup.tsx @@ -11,7 +11,7 @@ import styled from 'styled-components' const PopupContainer: React.FC = () => { const [open, setOpen] = useState(true) const { t } = useTranslation() - const { agents, updateAgents } = useAgents() + const { agents, setAgents } = useAgents() const onOk = () => { setOpen(false) @@ -43,7 +43,7 @@ const PopupContainer: React.FC = () => { centered> {agents.length > 0 && ( - + {(item) => ( diff --git a/src/renderer/src/store/agents.ts b/src/renderer/src/store/agents.ts index e3307004c5..1b0c087175 100644 --- a/src/renderer/src/store/agents.ts +++ b/src/renderer/src/store/agents.ts @@ -1,33 +1,38 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' -import { AssistantPreset, AssistantSettings } from '@renderer/types' +import { AgentEntity, AssistantPreset, AssistantSettings } from '@renderer/types' export interface AgentsState { - /** @deprecated They are actually assistant presets. */ + /** They are actually assistant presets. + * They should not be in this slice. However, since redux will be removed + * in the future, I just don't care where should they are. */ agents: AssistantPreset[] + /** For new autonomous agent feature. They are actual agent entities. */ + agentsNew: AgentEntity[] } const initialState: AgentsState = { - agents: [] + agents: [], + agentsNew: [] } const assistantsSlice = createSlice({ name: 'agents', initialState, reducers: { - updateAgents: (state, action: PayloadAction) => { + setAssistantPresets: (state, action: PayloadAction) => { state.agents = action.payload }, - addAgent: (state, action: PayloadAction) => { + addAssistantPreset: (state, action: PayloadAction) => { state.agents.push(action.payload) }, - removeAgent: (state, action: PayloadAction<{ id: string }>) => { + removeAssistantPreset: (state, action: PayloadAction<{ id: string }>) => { state.agents = state.agents.filter((c) => c.id !== action.payload.id) }, - updateAgent: (state, action: PayloadAction) => { + updateAssistantPreset: (state, action: PayloadAction) => { state.agents = state.agents.map((c) => (c.id === action.payload.id ? action.payload : c)) }, - updateAgentSettings: ( + updateAssistantPresetSettings: ( state, action: PayloadAction<{ assistantId: string; settings: Partial }> ) => { @@ -52,6 +57,12 @@ const assistantsSlice = createSlice({ } }) -export const { updateAgents, addAgent, removeAgent, updateAgent, updateAgentSettings } = assistantsSlice.actions +export const { + setAssistantPresets, + addAssistantPreset, + removeAssistantPreset, + updateAssistantPreset, + updateAssistantPresetSettings +} = assistantsSlice.actions export default assistantsSlice.reducer