diff --git a/src/api.js b/src/api.js index 6bedae5..c6e3018 100644 --- a/src/api.js +++ b/src/api.js @@ -588,3 +588,14 @@ export function deleteBrandLink(id) { return apiDelete(`/api/blog-marketing/links/${id}`); } +// ── Agent Office ────────────────────────────────── +export const getAgents = () => apiGet('/api/agent-office/agents'); +export const getAgentDetail = (id) => apiGet(`/api/agent-office/agents/${id}`); +export const updateAgentConfig = (id, body) => apiPut(`/api/agent-office/agents/${id}`, body); +export const getAgentTasks = (id, limit=20) => apiGet(`/api/agent-office/agents/${id}/tasks?limit=${limit}`); +export const getAgentLogs = (id, limit=50) => apiGet(`/api/agent-office/agents/${id}/logs?limit=${limit}`); +export const getPendingTasks = () => apiGet('/api/agent-office/tasks/pending'); +export const sendAgentCommand = (agent, action, params={}) => apiPost('/api/agent-office/command', { agent, action, params }); +export const approveAgentTask = (agent, task_id, approved, feedback='') => apiPost('/api/agent-office/approve', { agent, task_id, approved, feedback }); +export const getAgentStates = () => apiGet('/api/agent-office/states'); + diff --git a/src/pages/effect-lab/EffectLab.jsx b/src/pages/effect-lab/EffectLab.jsx index 2ee715c..acca1de 100644 --- a/src/pages/effect-lab/EffectLab.jsx +++ b/src/pages/effect-lab/EffectLab.jsx @@ -25,6 +25,17 @@ const LAB_ITEMS = [ icon: '📅', status: 'live', }, + { + id: 'agent-office', + path: '/agent-office', + title: 'Agent Office', + category: 'AI · 자동화', + desc: 'AI 에이전트들이 사무실에서 자동으로 작업하는 가상 오피스', + tags: ['Canvas 2D', 'WebSocket', 'AI Agent', 'Telegram'], + accent: '#8b5cf6', + icon: '🏢', + status: 'wip', + }, ]; const STATUS_LABEL = { diff --git a/src/routes.jsx b/src/routes.jsx index 8a530e5..189c34d 100644 --- a/src/routes.jsx +++ b/src/routes.jsx @@ -117,6 +117,15 @@ export const navLinks = [ icon: , accent: '#f472b6', }, + { + id: 'agent-office', + label: 'Agent Office', + path: '/agent-office', + subtitle: 'AI LAB', + description: 'AI 에이전트 사무실', + icon: 🏢, + accent: '#8b5cf6', + }, ]; export const appRoutes = [ @@ -172,4 +181,8 @@ export const appRoutes = [ path: 'todo', element: , }, + { + path: 'agent-office', + lazy: () => import('./pages/agent-office/AgentOffice'), + }, ];