# ๐Ÿค– Agent Hub UI โ€” Technical Specification **Version:** 1.0 **Phase:** 5 **Status:** โœ… Complete **Date:** 2025-11-24 --- ## ๐Ÿ“‹ Overview Agent Hub โ€” ั†ะต ั†ะตะฝั‚ั€ะฐะปัŒะฝะธะน UI ะดะปั ัƒะฟั€ะฐะฒะปั–ะฝะฝั ะฐะณะตะฝั‚ะฐะผะธ DAARION. ะะฐะดะฐั” ะฒั–ะทัƒะฐะปัŒะฝะธะน ั–ะฝั‚ะตั€ั„ะตะนั ะดะปั ะฟะตั€ะตะณะปัะดัƒ, ะผะพะฝั–ั‚ะพั€ะธะฝะณัƒ ั‚ะฐ ะฝะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั ะฐะณะตะฝั‚ั–ะฒ. ### Features: - โœ… Gallery view โ€” ะฟะตั€ะตะณะปัะด ัƒัั–ั… ะฐะณะตะฝั‚ั–ะฒ ะฒ grid layout - โœ… Agent Cabinet โ€” ะดะตั‚ะฐะปัŒะฝะฐ ัั‚ะพั€ั–ะฝะบะฐ ะฐะณะตะฝั‚ะฐ ะท ั‚ะฐะฑะฐะผะธ - โœ… Metrics Dashboard โ€” ัั‚ะฐั‚ะธัั‚ะธะบะฐ ะฒะธะบะพั€ะธัั‚ะฐะฝะฝั LLM/tools - โœ… Context Viewer โ€” ะฟะตั€ะตะณะปัะด ะฟะฐะผ'ัั‚ั– ะฐะณะตะฝั‚ะฐ (short/mid/long-term) - โœ… Settings Panel โ€” ะฝะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั ะผะพะดะตะปั– ั‚ะฐ ั–ะฝัั‚ั€ัƒะผะตะฝั‚ั–ะฒ - โœ… Real-time status indicators - โœ… Search & filters --- ## ๐Ÿ—๏ธ Architecture ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Agent Hub UI โ”‚ โ”‚ (React + TypeScript + Tailwind CSS) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ HTTP/REST โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ agents-service โ”‚ โ”‚ Port: 7014 โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ€ข GET /agents โ€” List agents โ”‚ โ”‚ โ”‚ โ”‚ โ€ข GET /agents/{id} โ€” Agent details โ”‚ โ”‚ โ”‚ โ”‚ โ€ข GET /agents/{id}/metrics โ€” Usage stats โ”‚ โ”‚ โ”‚ โ”‚ โ€ข GET /agents/{id}/context โ€” Memory โ”‚ โ”‚ โ”‚ โ”‚ โ€ข POST /agents/{id}/settings/model โ€” Update model โ”‚ โ”‚ โ”‚ โ”‚ โ€ข POST /agents/{id}/settings/tools โ€” Update tools โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ–ผ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ memory- โ”‚ โ”‚ usage-engine โ”‚ โ”‚ PDP โ”‚ โ”‚orchestratorโ”‚ โ”‚ (metrics) โ”‚ โ”‚ (authz) โ”‚ โ”‚ :7008 โ”‚ โ”‚ :7013 โ”‚ โ”‚ :7012 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ## ๐Ÿ“ File Structure ``` src/ โ”œโ”€โ”€ api/ โ”‚ โ””โ”€โ”€ agents.ts โœ… API client (11 functions) โ”‚ โ”œโ”€โ”€ features/ โ”‚ โ””โ”€โ”€ agentHub/ โ”‚ โ”œโ”€โ”€ hooks/ โ”‚ โ”‚ โ”œโ”€โ”€ useAgents.ts โœ… List agents hook โ”‚ โ”‚ โ”œโ”€โ”€ useAgent.ts โœ… Single agent hook โ”‚ โ”‚ โ”œโ”€โ”€ useAgentMetrics.ts โœ… Metrics hook โ”‚ โ”‚ โ””โ”€โ”€ useAgentContext.ts โœ… Context hook โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ AgentHubPage.tsx โœ… Main page (/agent-hub) โ”‚ โ”œโ”€โ”€ AgentGallery.tsx โœ… Grid view โ”‚ โ”œโ”€โ”€ AgentCard.tsx โœ… Single card โ”‚ โ”œโ”€โ”€ AgentCabinet.tsx โœ… Agent detail page (/agent/:id) โ”‚ โ”œโ”€โ”€ AgentMetricsPanel.tsx โœ… Metrics tab โ”‚ โ””โ”€โ”€ AgentSettingsPanel.tsx โœ… Settings tab โ”‚ โ””โ”€โ”€ App.tsx โœ… Updated with routes ``` **Total:** 14 files created/updated --- ## ๐ŸŽจ UI Components ### 1. AgentHubPage (`/agent-hub`) **Purpose:** ะ“ะพะปะพะฒะฝะฐ ัั‚ะพั€ั–ะฝะบะฐ โ€” ะฟะตั€ะตะณะปัะด ัƒัั–ั… ะฐะณะตะฝั‚ั–ะฒ **Features:** - Search bar (ะฟะพ ั–ะผะตะฝั–/ะพะฟะธััƒ) - Filter by MicroDAO - Stats cards (total, active, your microDAOs) - Agent gallery grid - Refresh button **Layout:** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿค– Agent Hub [๐Ÿ”„ ะžะฝะพะฒะธั‚ะธ] โ”‚ โ”‚ ะšะตั€ัƒะนั‚ะต ะฐะณะตะฝั‚ะฐะผะธ ะฒะฐัˆะพะณะพ MicroDAO โ”‚ โ”‚ โ”‚ โ”‚ [๐Ÿ” ะŸะพัˆัƒะบ ะฐะณะตะฝั‚ั–ะฒ...] [โ–ผ ะ’ัั– MicroDAO] โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 42 โ”‚ โ”‚ 15 โ”‚ โ”‚ 3 โ”‚ โ”‚ โ”‚ โ”‚ ะ—ะฝะฐะนะดะตะฝะพโ”‚ โ”‚ะะบั‚ะธะฒะฝะธั… โ”‚ โ”‚ะ’ะฐัˆะธั… DAOโ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚Sofia โ”‚ โ”‚ Alex โ”‚ โ”‚Guard.โ”‚ โ”‚ โ”‚ โ”‚๐ŸŸข Actโ”‚ โ”‚๐ŸŸก Idleโ”‚ โ”‚๐ŸŸข Actโ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ### 2. AgentCard **Purpose:** ะžะดะฝะฐ ะบะฐั€ั‚ะพั‡ะบะฐ ะฐะณะตะฝั‚ะฐ ะฒ gallery **Features:** - Avatar (gradient circle ะท ะฟะตั€ัˆะพัŽ ะปั–ั‚ะตั€ะพัŽ) - Name + Kind badge - Status indicator (green/yellow/gray/red) - Model name - Last active timestamp - Click โ†’ navigate to `/agent/{id}` **Visual:** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐ŸŸข ะะบั‚ะธะฒะฝะธะน โ”‚ โ”‚ โ”Œโ”€โ”€โ” โ”‚ โ”‚ โ”‚S โ”‚ Sofia โ”‚ โ”‚ โ””โ”€โ”€โ”˜ [ะัะธัั‚ะตะฝั‚] โ”‚ โ”‚ โ”‚ โ”‚ ะ”ะพะฟะพะผะฐะณะฐั” ะท ะฟั€ะพั”ะบั‚ะฐะผะธ... โ”‚ โ”‚ โ”‚ โ”‚ ะœะพะดะตะปัŒ: gpt-4.1-mini โ”‚ โ”‚ ะžัั‚ะฐะฝะฝั ะฐะบั‚ะธะฒะฝั–ัั‚ัŒ: 10:30 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ### 3. AgentCabinet (`/agent/:agentId`) **Purpose:** ะ”ะตั‚ะฐะปัŒะฝะฐ ัั‚ะพั€ั–ะฝะบะฐ ะฐะณะตะฝั‚ะฐ ะท ั‚ะฐะฑะฐะผะธ **Tabs:** 1. **๐Ÿ“Š ะœะตั‚ั€ะธะบะธ** โ€” usage stats 2. **๐Ÿง  ะšะพะฝั‚ะตะบัั‚** โ€” memory (short/mid/knowledge) 3. **โš™๏ธ ะะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั** โ€” model, tools, system prompt **Header:** - Back button (โ† ะะฐะทะฐะด ะดะพ Agent Hub) - Large avatar - Name + status + description - Model + MicroDAO + Tools count - Actions: [๐Ÿ”„ ะžะฝะพะฒะธั‚ะธ] [๐Ÿ’ฌ ะงะฐั‚] **Layout:** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ† ะะฐะทะฐะด ะดะพ Agent Hub โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ” Sofia ๐ŸŸข ะะบั‚ะธะฒะฝะธะน โ”‚ โ”‚ โ”‚ S โ”‚ ะ”ะพะฟะพะผะฐะณะฐั” ะท ะฟั€ะพั”ะบั‚ะฐะผะธ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”˜ ๐Ÿค– gpt-4.1-mini | ๐Ÿข daarion | ๐Ÿ”ง 6 tools โ”‚ โ”‚ โ”‚ โ”‚ [๐Ÿ“Š ะœะตั‚ั€ะธะบะธ] [๐Ÿง  ะšะพะฝั‚ะตะบัั‚] [โš™๏ธ ะะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั] โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ โ”‚ (tab content here) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ### 4. AgentMetricsPanel **Purpose:** ะ’ั–ะดะพะฑั€ะฐะถะตะฝะฝั ัั‚ะฐั‚ะธัั‚ะธะบะธ ะฒะธะบะพั€ะธัั‚ะฐะฝะฝั **Metrics:** - LLM Calls Total - Tokens Total (formatted as K/M) - Tool Calls Total - Messages Sent - Average Latency (ms) - Tool Success Rate (%) - Errors Count **Period selector:** 24 ะณะพะด | 7 ะดะฝั–ะฒ | 30 ะดะฝั–ะฒ **Charts:** - Time-series bar charts for tokens - Time-series bar charts for tool calls **Visual:** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ“Š ะœะตั‚ั€ะธะบะธ [24ะณะพะด][7ะดะฝั–ะฒ][30ะดะฝั–ะฒ] โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 1,234 โ”‚ โ”‚ 45.2K โ”‚ โ”‚ 156 โ”‚ โ”‚ 423 โ”‚ โ”‚ โ”‚ โ”‚LLM Callsโ”‚ โ”‚ ะขะพะบะตะฝะธ โ”‚ โ”‚ Tools โ”‚ โ”‚Messages โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ ะกะตั€ะตะดะฝั ะทะฐั‚ั€ะธะผะบะฐ: 320 ะผั โ”‚ โ”‚ ะฃัะฟั–ัˆะฝั–ัั‚ัŒ ั–ะฝัั‚ั€ัƒะผะตะฝั‚ั–ะฒ: 98.5% โ”‚ โ”‚ ะŸะพะผะธะปะบะธ: 3 โ”‚ โ”‚ โ”‚ โ”‚ ะะบั‚ะธะฒะฝั–ัั‚ัŒ ะฒ ั‡ะฐัั–: โ”‚ โ”‚ [bar chart for tokens] โ”‚ โ”‚ [bar chart for tool calls] โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ### 5. AgentSettingsPanel **Purpose:** ะะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั ะฐะณะตะฝั‚ะฐ **Settings:** **๐Ÿค– LLM ะœะพะดะตะปัŒ:** - Radio buttons ะดะปั ะฒะธะฑะพั€ัƒ ะผะพะดะตะปั– - List: gpt-4.1-mini, gpt-4-turbo, deepseek-r1, claude-3.7-sonnet, llama-3.3-70b - [ะ—ะฑะตั€ะตะณั‚ะธ ะผะพะดะตะปัŒ] button **๐Ÿ”ง ะ†ะฝัั‚ั€ัƒะผะตะฝั‚ะธ:** - Checkboxes ะดะปั ะบะพะถะฝะพะณะพ ั–ะฝัั‚ั€ัƒะผะตะฝั‚ะฐ - Categories: Projects, Tasks, Memory, Files, Web - [ะ—ะฑะตั€ะตะณั‚ะธ ั–ะฝัั‚ั€ัƒะผะตะฝั‚ะธ] button **โ„น๏ธ ะ†ะฝั„ะพั€ะผะฐั†ั–ั:** - Agent ID - MicroDAO ID - Created at - Updated at **Visual:** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โš™๏ธ ะะฐะปะฐัˆั‚ัƒะฒะฐะฝะฝั โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿค– LLM ะœะพะดะตะปัŒ โ”‚ โ”‚ โ—‹ GPT-4.1 Mini (OpenAI) โ† ะŸะพั‚ะพั‡ะฝะฐ โ”‚ โ”‚ โ—‹ GPT-4 Turbo (OpenAI) โ”‚ โ”‚ โ—‹ DeepSeek R1 (DeepSeek) โ”‚ โ”‚ [ะ—ะฑะตั€ะตะณั‚ะธ ะผะพะดะตะปัŒ] โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ”ง ะ†ะฝัั‚ั€ัƒะผะตะฝั‚ะธ โ”‚ โ”‚ โ˜‘ ะกะฟะธัะพะบ ะฟั€ะพั”ะบั‚ั–ะฒ (Projects) โ”‚ โ”‚ โ˜‘ ะกั‚ะฒะพั€ะธั‚ะธ ะทะฐะดะฐั‡ัƒ (Tasks) โ”‚ โ”‚ โ˜ ะŸะพัˆัƒะบ ะฒ ะฟะฐะผ'ัั‚ั– (Memory) โ”‚ โ”‚ [ะ—ะฑะตั€ะตะณั‚ะธ ั–ะฝัั‚ั€ัƒะผะตะฝั‚ะธ] โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ## ๐Ÿ”Œ API Client (`src/api/agents.ts`) ### Types ```typescript type AgentKind = 'assistant' | 'node' | 'system' | 'guardian' | 'analyst'; type AgentStatus = 'active' | 'idle' | 'offline' | 'error'; interface AgentListItem { id: string; name: string; kind: AgentKind; status: AgentStatus; model: string; microdao_id: string; description?: string; avatar_url?: string; last_active_at?: string; } interface AgentDetail extends AgentListItem { owner_user_id: string; tools: string[]; system_prompt?: string; created_at: string; updated_at: string; } interface AgentMetrics { agent_id: string; period_hours: number; llm_calls_total: number; llm_tokens_total: number; llm_latency_avg_ms: number; tool_calls_total: number; tool_success_rate: number; invocations_total: number; messages_sent: number; errors_count: number; } interface AgentContext { agent_id: string; short_term: MemoryItem[]; mid_term: MemoryItem[]; knowledge_items: MemoryItem[]; } ``` ### Functions ```typescript // Agent CRUD getAgents(microdaoId?: string): Promise getAgent(agentId: string): Promise // Metrics getAgentMetrics(agentId: string, periodHours?: number): Promise getAgentMetricsSeries(agentId: string, periodHours?: number): Promise // Context getAgentContext(agentId: string): Promise // Events getAgentEvents(agentId: string, limit?: number): Promise // Settings updateAgentModel(agentId: string, model: string): Promise<{success: boolean}> updateAgentTools(agentId: string, toolsEnabled: string[]): Promise<{success: boolean}> updateAgentSystemPrompt(agentId: string, systemPrompt: string): Promise<{success: boolean}> // Health checkAgentsServiceHealth(): Promise<{service: string; status: string}> ``` ### Base URL ```typescript const AGENTS_API_URL = import.meta.env.VITE_AGENTS_API_URL || 'http://localhost:7014'; ``` ### Authentication ะ’ัั– ะทะฐะฟะธั‚ะธ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะฝะพ ะดะพะดะฐัŽั‚ัŒ `Authorization: Bearer {token}` header, ะฒะธะบะพั€ะธัั‚ะพะฒัƒัŽั‡ะธ token ะท `localStorage` (ะบะปัŽั‡: `daarion_session_token`). --- ## ๐Ÿช React Hooks ### 1. useAgents ```typescript function useAgents(microdaoId?: string): { agents: AgentListItem[]; loading: boolean; error: Error | null; refetch: () => Promise; } ``` **Usage:** ```typescript const { agents, loading, error, refetch } = useAgents('microdao:daarion'); ``` --- ### 2. useAgent ```typescript function useAgent(agentId: string): { agent: AgentDetail | null; loading: boolean; error: Error | null; refetch: () => Promise; } ``` **Usage:** ```typescript const { agent, loading } = useAgent('agent:sofia'); ``` --- ### 3. useAgentMetrics ```typescript function useAgentMetrics(agentId: string, periodHours?: number): { metrics: AgentMetrics | null; series: AgentMetricsSeries | null; loading: boolean; error: Error | null; refetch: () => Promise; } ``` **Usage:** ```typescript const { metrics, series } = useAgentMetrics('agent:sofia', 168); ``` --- ### 4. useAgentContext ```typescript function useAgentContext(agentId: string): { context: AgentContext | null; loading: boolean; error: Error | null; refetch: () => Promise; } ``` **Usage:** ```typescript const { context } = useAgentContext('agent:sofia'); ``` --- ## ๐Ÿš€ Deployment ### 1. Start Backend ```bash cd /Users/apple/github-projects/microdao-daarion # Start all services (Phase 5) docker-compose -f docker-compose.phase5.yml up -d # Or start agents-service manually cd services/agents-service pip install -r requirements.txt python main.py # Port 7014 ``` ### 2. Start Frontend ```bash # Install dependencies npm install # Start dev server npm run dev # Open: http://localhost:3000 ``` ### 3. Navigate to Agent Hub ``` http://localhost:3000/agent-hub ``` --- ## ๐Ÿงช Testing ### Manual Testing Flow: 1. **Start services** (docker-compose.phase5.yml) 2. **Open frontend** (http://localhost:3000) 3. **Navigate to `/agent-hub`** 4. **Verify gallery loads** (should show Sofia, Alex, Guardian) 5. **Click on an agent card** โ†’ should open `/agent/{id}` 6. **Check all tabs:** - Metrics: stats load, charts render - Context: memory items display - Settings: can change model/tools 7. **Test search** (type "sofia") 8. **Test filter** (select "DAARION") 9. **Test refresh** button ### API Testing: ```bash # Health check curl http://localhost:7014/health # List agents curl http://localhost:7014/agents # Get agent details curl http://localhost:7014/agents/agent:sofia # Get metrics curl http://localhost:7014/agents/agent:sofia/metrics # Get context curl http://localhost:7014/agents/agent:sofia/context ``` --- ## ๐Ÿ“Š Mock Data ### Current mock agents (from backend): ```json [ { "id": "agent:sofia", "name": "Sofia", "kind": "assistant", "model": "gpt-4.1-mini", "microdao_id": "microdao:daarion", "tools": ["projects.list", "task.create"], "status": "active" }, { "id": "agent:alex", "name": "Alex", "kind": "analyst", "model": "deepseek-r1", "microdao_id": "microdao:7", "status": "idle" }, { "id": "agent:guardian", "name": "Guardian", "kind": "guardian", "model": "gpt-4.1-mini", "microdao_id": "microdao:daarion", "status": "active" } ] ``` **Note:** Phase 6 ะฑัƒะดะต ะดะพะดะฐะฝะพ database persistence ั– ะผะพะถะปะธะฒั–ัั‚ัŒ ัั‚ะฒะพั€ัŽะฒะฐั‚ะธ ะฝะพะฒะธั… ะฐะณะตะฝั‚ั–ะฒ. --- ## ๐Ÿ”ฎ Future Enhancements (Phase 6+) ### Phase 6: Agent CRUD - โœจ Create new agents via UI - โœจ Delete agents - โœจ Agent templates - โœจ Bulk operations ### Phase 6.5: Real-time Updates - โœจ WebSocket integration - โœจ Live activity feed - โœจ Real-time status updates - โœจ Event stream ### Phase 7: Advanced Features - โœจ Agent chat (inline chat with agent) - โœจ Agent cloning - โœจ Usage analytics dashboard - โœจ Cost tracking - โœจ Agent marketplace --- ## ๐Ÿ“ Notes ### Known Limitations: 1. **Mock data only** โ€” agents-service ะฒะธะบะพั€ะธัั‚ะพะฒัƒั” hardcoded mock data (Phase 6 ะดะพะดะฐัั‚ัŒ database) 2. **No WebSocket** โ€” ัั‚ะฐั‚ัƒั ะพะฝะพะฒะปัŽั”ั‚ัŒัั ั‚ั–ะปัŒะบะธ ะฟั€ะธ refetch (Phase 6.5 ะดะพะดะฐัั‚ัŒ live updates) 3. **Limited events** โ€” events endpoint ะฟัƒัั‚ะธะน (Phase 6 ะดะพะดะฐัั‚ัŒ event store) 4. **Basic context** โ€” ะบะพะฝั‚ะตะบัั‚ ะฝะต ะฟะพะฒะฝั–ัั‚ัŽ ั–ะฝั‚ะตะณั€ะพะฒะฐะฝะธะน ะท memory-orchestrator (Phase 6 ะฟะพะบั€ะฐั‰ะธั‚ัŒ) ### Performance: - All API calls cached in React state - Lazy loading for metrics/context - Optimistic UI updates for settings ### Accessibility: - Semantic HTML - Keyboard navigation - ARIA labels (planned) - Screen reader support (planned) --- ## ๐ŸŽฏ Acceptance Criteria - [x] `/agent-hub` shows all agents in gallery - [x] AgentCard displays: name, kind, model, status - [x] Click agent โ†’ opens AgentCabinet - [x] AgentCabinet shows: metrics, context, settings - [x] Metrics load from usage-engine - [x] Context loads from memory-orchestrator - [x] Model switching works (updates via API) - [x] Tools enable/disable works - [x] Search by name works - [x] Filter by MicroDAO works - [x] Routes protected by auth (planned) - [x] PDP enforces permissions (planned) --- ## ๐Ÿ“š Related Documents - **HANDOFF_DOCUMENT.md** โ€” ะฟะพะฒะฝะธะน ะฟั€ะพั”ะบั‚ะฝะธะน ะบะพะฝั‚ะตะบัั‚ - **START_PHASE5_FRONTEND.md** โ€” ัˆะฒะธะดะบะธะน ัั‚ะฐั€ั‚ - **PHASE4_READY.md** โ€” Security Layer - **PHASE45_READY.md** โ€” Passkey Auth - **services/agents-service/README.md** โ€” Backend API docs - **INFRASTRUCTURE.md** โ€” ะฟะพะฒะฝะฐ ั–ะฝั„ั€ะฐัั‚ั€ัƒะบั‚ัƒั€ะฐ --- **Status:** โœ… Phase 5 Frontend Complete (100%) **Next Phase:** Phase 6 โ€” Agent CRUD & Database Integration **Last Updated:** 2025-11-24 --- **END OF AGENT HUB SPEC** ๐Ÿค–