From 825c376c5cf1409f43346265a91ff20522af04f9 Mon Sep 17 00:00:00 2001 From: icarus Date: Thu, 18 Sep 2025 14:08:31 +0800 Subject: [PATCH] feat(agent): add create agent endpoint to agent client --- src/renderer/src/api/agent.ts | 23 ++++++++++++++++++++++- src/renderer/src/types/agent.ts | 6 ++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/api/agent.ts b/src/renderer/src/api/agent.ts index f04af6e1e6..21789d9499 100644 --- a/src/renderer/src/api/agent.ts +++ b/src/renderer/src/api/agent.ts @@ -1,4 +1,11 @@ -import { ListAgentsResponseSchema, type ListAgentsResponse } from '@types' +import { + AgentForm, + CreateAgentRequest, + CreateAgentResponse, + CreateAgentResponseSchema, + type ListAgentsResponse, + ListAgentsResponseSchema +} from '@types' import { Axios, AxiosRequestConfig } from 'axios' type ApiVersion = 'v1' @@ -31,4 +38,18 @@ export class AgentClient { throw new Error('Failed to list agents.', { cause: error }) } } + + public async createAgent(agent: AgentForm): Promise { + const url = `/${this.apiVersion}/agents` + try { + const payload = { + ...agent + } satisfies CreateAgentRequest + const response = await this.axios.post(url, payload) + const data = CreateAgentResponseSchema.parse(response.data) + return data + } catch (error) { + throw new Error('Failed to create agent.', { cause: error }) + } + } } diff --git a/src/renderer/src/types/agent.ts b/src/renderer/src/types/agent.ts index b842e3bdd5..d29e334953 100644 --- a/src/renderer/src/types/agent.ts +++ b/src/renderer/src/types/agent.ts @@ -112,6 +112,12 @@ export interface SessionMessageContent { agentType: string // The type of agent that generated this message (e.g., 'claude-code', 'openai', etc.) } +// Not implemented fields: +// - plan_model: Optional model for planning/thinking tasks +// - small_model: Optional lightweight model for quick responses +// - mcps: Optional array of MCP (Model Control Protocol) tool IDs +// - allowed_tools: Optional array of permitted tool IDs +// - configuration: Optional agent settings (temperature, top_p, etc.) export type AgentForm = { type: AgentType name: string