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 { 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' import { AssistantPreset, AssistantSettings } from '@renderer/types'
export function useAgents() { export function useAgents() {
@ -8,9 +14,9 @@ export function useAgents() {
return { return {
agents, agents,
updateAgents: (agents: AssistantPreset[]) => dispatch(updateAgents(agents)), setAgents: (agents: AssistantPreset[]) => dispatch(setAssistantPresets(agents)),
addAgent: (agent: AssistantPreset) => dispatch(addAgent(agent)), addAgent: (agent: AssistantPreset) => dispatch(addAssistantPreset(agent)),
removeAgent: (id: string) => dispatch(removeAgent({ id })) removeAgent: (id: string) => dispatch(removeAssistantPreset({ id }))
} }
} }
@ -20,9 +26,9 @@ export function useAgent(id: string) {
return { return {
agent, agent,
updateAgent: (agent: AssistantPreset) => dispatch(updateAgent(agent)), updateAgent: (agent: AssistantPreset) => dispatch(updateAssistantPreset(agent)),
updateAgentSettings: (settings: Partial<AssistantSettings>) => { 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 dispatch = useDispatch()
const bases = useSelector((state: RootState) => state.knowledge.bases) const bases = useSelector((state: RootState) => state.knowledge.bases)
const { assistants, updateAssistants } = useAssistants() const { assistants, updateAssistants } = useAssistants()
const { agents, updateAgents } = useAgents() const { agents, setAgents } = useAgents()
const addKnowledgeBase = (base: KnowledgeBase) => { const addKnowledgeBase = (base: KnowledgeBase) => {
dispatch(addBase(base)) dispatch(addBase(base))
@ -390,7 +390,7 @@ export const useKnowledgeBases = () => {
}) })
updateAssistants(_assistants) updateAssistants(_assistants)
updateAgents(_agents) setAgents(_agents)
} }
const updateKnowledgeBases = (bases: KnowledgeBase[]) => { const updateKnowledgeBases = (bases: KnowledgeBase[]) => {

View File

@ -11,7 +11,7 @@ import styled from 'styled-components'
const PopupContainer: React.FC = () => { const PopupContainer: React.FC = () => {
const [open, setOpen] = useState(true) const [open, setOpen] = useState(true)
const { t } = useTranslation() const { t } = useTranslation()
const { agents, updateAgents } = useAgents() const { agents, setAgents } = useAgents()
const onOk = () => { const onOk = () => {
setOpen(false) setOpen(false)
@ -43,7 +43,7 @@ const PopupContainer: React.FC = () => {
centered> centered>
<Container> <Container>
{agents.length > 0 && ( {agents.length > 0 && (
<DraggableList list={agents} onUpdate={updateAgents}> <DraggableList list={agents} onUpdate={setAgents}>
{(item) => ( {(item) => (
<AgentItem> <AgentItem>
<Box mr={8}> <Box mr={8}>

View File

@ -1,33 +1,38 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' 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 { 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[] agents: AssistantPreset[]
/** For new autonomous agent feature. They are actual agent entities. */
agentsNew: AgentEntity[]
} }
const initialState: AgentsState = { const initialState: AgentsState = {
agents: [] agents: [],
agentsNew: []
} }
const assistantsSlice = createSlice({ const assistantsSlice = createSlice({
name: 'agents', name: 'agents',
initialState, initialState,
reducers: { reducers: {
updateAgents: (state, action: PayloadAction<AssistantPreset[]>) => { setAssistantPresets: (state, action: PayloadAction<AssistantPreset[]>) => {
state.agents = action.payload state.agents = action.payload
}, },
addAgent: (state, action: PayloadAction<AssistantPreset>) => { addAssistantPreset: (state, action: PayloadAction<AssistantPreset>) => {
state.agents.push(action.payload) 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) 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)) state.agents = state.agents.map((c) => (c.id === action.payload.id ? action.payload : c))
}, },
updateAgentSettings: ( updateAssistantPresetSettings: (
state, state,
action: PayloadAction<{ assistantId: string; settings: Partial<AssistantSettings> }> 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 export default assistantsSlice.reducer