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