/** * Agent API client * Handles agent-related API interactions */ import { apiGet, apiPost, apiPatch, apiDelete } from "./client"; export interface AgentStatus { id: string; name: string; displayName: string; role: string; isActive: boolean; containerStatus?: "running" | "stopped" | "unknown"; } export interface UserAgent { id: string; userId: string; templateId: string | null; name: string; displayName: string; role: string; personality: string; primaryModel: string | null; fallbackModels: string[]; toolPermissions: string[]; discordChannel: string | null; isActive: boolean; createdAt: string; updatedAt: string; } export interface CreateUserAgentRequest { templateId?: string; name: string; displayName: string; role: string; personality: string; primaryModel?: string; fallbackModels?: string[]; toolPermissions?: string[]; discordChannel?: string; isActive?: boolean; } export interface UpdateUserAgentRequest { name?: string; displayName?: string; role?: string; personality?: string; primaryModel?: string; fallbackModels?: string[]; toolPermissions?: string[]; discordChannel?: string; isActive?: boolean; } export interface UpdateUserAgentRequest { name?: string; displayName?: string; role?: string; personality?: string; primaryModel?: string; fallbackModels?: string[]; toolPermissions?: string[]; discordChannel?: string; isActive?: boolean; } /** * Get all user's agents */ export async function getAgents(): Promise { return apiGet("/api/agents"); } /** * Get all agent statuses */ export async function getAgentStatuses(): Promise { return apiGet("/api/agents/status"); } /** * Get a single agent by ID */ export async function getAgent(id: string): Promise { return apiGet(`/api/agents/${id}`); } /** * Get a single agent's status */ export async function getAgentStatus(id: string): Promise { return apiGet(`/api/agents/${id}/status`); } /** * Create a new custom agent */ export async function createAgent(data: CreateUserAgentRequest): Promise { return apiPost("/api/agents", data); } /** * Create an agent from a template */ export async function createAgentFromTemplate(templateId: string): Promise { return apiPost(`/api/agents/from-template/${templateId}`, {}); } /** * Update an agent */ export async function updateAgent(id: string, data: UpdateUserAgentRequest): Promise { return apiPatch(`/api/agents/${id}`, data); } /** * Delete an agent */ export async function deleteAgent(id: string): Promise { await apiDelete(`/api/agents/${id}`); }