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.
This commit is contained in:
icarus 2025-09-13 22:52:10 +08:00
parent 6b0a1a42ad
commit 3e04c9493f
4 changed files with 36 additions and 19 deletions

View File

@ -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<AssistantSettings>) => {
dispatch(updateAgentSettings({ assistantId: agent.id, settings }))
dispatch(updateAssistantPresetSettings({ assistantId: agent.id, settings }))
}
}
}

View File

@ -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[]) => {

View File

@ -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>
<Container>
{agents.length > 0 && (
<DraggableList list={agents} onUpdate={updateAgents}>
<DraggableList list={agents} onUpdate={setAgents}>
{(item) => (
<AgentItem>
<Box mr={8}>

View File

@ -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<AssistantPreset[]>) => {
setAssistantPresets: (state, action: PayloadAction<AssistantPreset[]>) => {
state.agents = action.payload
},
addAgent: (state, action: PayloadAction<AssistantPreset>) => {
addAssistantPreset: (state, action: PayloadAction<AssistantPreset>) => {
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<AssistantPreset>) => {
updateAssistantPreset: (state, action: PayloadAction<AssistantPreset>) => {
state.agents = state.agents.map((c) => (c.id === action.payload.id ? action.payload : c))
},
updateAgentSettings: (
updateAssistantPresetSettings: (
state,
action: PayloadAction<{ assistantId: string; settings: Partial<AssistantSettings> }>
) => {
@ -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