From 100801821fd52d105ea0fab3e2a91311be06d0cf Mon Sep 17 00:00:00 2001 From: icarus Date: Thu, 18 Sep 2025 22:26:54 +0800 Subject: [PATCH] fix(agents): update agents list response structure to match API Align frontend and backend types for agents list response. The API now returns paginated data with limit/offset and renamed 'agents' field to 'data' for consistency. Update related type definitions and usage across the codebase. --- src/main/apiServer/routes/agents/handlers/agents.ts | 3 ++- src/main/services/agents/services/AgentService.ts | 3 +-- src/renderer/src/hooks/agents/useAgents.ts | 2 +- src/renderer/src/types/agent.ts | 6 ++++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/apiServer/routes/agents/handlers/agents.ts b/src/main/apiServer/routes/agents/handlers/agents.ts index c375eb199b..cd1cbf850b 100644 --- a/src/main/apiServer/routes/agents/handlers/agents.ts +++ b/src/main/apiServer/routes/agents/handlers/agents.ts @@ -1,4 +1,5 @@ import { loggerService } from '@logger' +import { ListAgentsResponse } from '@types' import { Request, Response } from 'express' import { agentService } from '../../../../services/agents' @@ -131,7 +132,7 @@ export const listAgents = async (req: Request, res: Response): Promise total: result.total, limit, offset - }) + } satisfies ListAgentsResponse) } catch (error: any) { logger.error('Error listing agents:', error) return res.status(500).json({ diff --git a/src/main/services/agents/services/AgentService.ts b/src/main/services/agents/services/AgentService.ts index a247243d26..ec72bacd54 100644 --- a/src/main/services/agents/services/AgentService.ts +++ b/src/main/services/agents/services/AgentService.ts @@ -6,7 +6,6 @@ import type { CreateAgentRequest, CreateAgentResponse, GetAgentResponse, - ListAgentsResponse, ListOptions, UpdateAgentRequest, UpdateAgentResponse @@ -87,7 +86,7 @@ export class AgentService extends BaseService { return agent } - async listAgents(options: ListOptions = {}): Promise { + async listAgents(options: ListOptions = {}): Promise<{ agents: AgentEntity[]; total: number }> { this.ensureInitialized() // Build query with pagination const totalResult = await this.database.select({ count: count() }).from(agentsTable) diff --git a/src/renderer/src/hooks/agents/useAgents.ts b/src/renderer/src/hooks/agents/useAgents.ts index 6b0710abad..8942732f93 100644 --- a/src/renderer/src/hooks/agents/useAgents.ts +++ b/src/renderer/src/hooks/agents/useAgents.ts @@ -12,7 +12,7 @@ export const useAgents = () => { const key = client.agentPaths.base const fetcher = useCallback(async () => { const result = await client.listAgents() - return result.agents + return result.data }, [client]) const { data, error, isLoading, mutate } = useSWR(key, fetcher) diff --git a/src/renderer/src/types/agent.ts b/src/renderer/src/types/agent.ts index 1d3b4593a5..c8e9a3112b 100644 --- a/src/renderer/src/types/agent.ts +++ b/src/renderer/src/types/agent.ts @@ -171,8 +171,10 @@ export const GetAgentResponseSchema = AgentEntitySchema.extend({ export type GetAgentResponse = z.infer export const ListAgentsResponseSchema = z.object({ - agents: z.array(GetAgentResponseSchema), - total: z.number() + data: z.array(GetAgentResponseSchema), + total: z.int(), + limit: z.int(), + offset: z.int() }) export type ListAgentsResponse = z.infer