/** * AgentCabinet Component * Full agent view with tabs: Metrics, Context, Settings */ import { useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useAgent } from './hooks/useAgent'; import { useAgentContext } from './hooks/useAgentContext'; import { AgentMetricsPanel } from './AgentMetricsPanel'; import { AgentSettingsPanel } from './AgentSettingsPanel'; import { AgentEventsPanel } from './AgentEventsPanel'; type TabType = 'metrics' | 'context' | 'settings' | 'events'; const STATUS_COLORS = { active: 'bg-green-500', idle: 'bg-yellow-500', offline: 'bg-gray-400', error: 'bg-red-500', }; const STATUS_LABELS = { active: 'Активний', idle: 'Очікує', offline: 'Офлайн', error: 'Помилка', }; export function AgentCabinet() { const { agentId } = useParams<{ agentId: string }>(); const navigate = useNavigate(); const [activeTab, setActiveTab] = useState('metrics'); const { agent, loading, error, refetch } = useAgent(agentId!); const { context, loading: contextLoading } = useAgentContext(agentId!); if (loading) { return (
Завантаження агента...
); } if (error || !agent) { return (

Агент не знайдено

{error?.message || 'Агент не існує або недоступний'}

); } return (
{/* Header */}
{/* Back button */} {/* Agent header */}
{/* Avatar */}
{agent.name.charAt(0).toUpperCase()}
{/* Info */}

{agent.name}

{/* Status */}
{STATUS_LABELS[agent.status]}
{/* Description */} {agent.description && (

{agent.description}

)} {/* Meta */}
🤖 {agent.model}
🏢 {agent.microdao_id}
🔧 {agent.tools.length} інструментів
{/* Actions */}
{/* Tabs */}
{/* Content */}
{activeTab === 'metrics' && } {activeTab === 'context' && (

🧠 Контекст агента

{contextLoading ? (
Завантаження контексту...
) : context ? (
{/* Short-term memory */}

Короткострокова пам'ять ({context.short_term.length})

{context.short_term.length > 0 ? (
{context.short_term.map((item) => (
{item.content}
{new Date(item.timestamp).toLocaleString('uk-UA')}
))}
) : (
Немає записів
)}
{/* Mid-term memory */}

Середньострокова пам'ять ({context.mid_term.length})

{context.mid_term.length > 0 ? (
{context.mid_term.map((item) => (
{item.content}
{new Date(item.timestamp).toLocaleString('uk-UA')}
))}
) : (
Немає записів
)}
{/* Knowledge items */}

База знань ({context.knowledge_items.length})

{context.knowledge_items.length > 0 ? (
{context.knowledge_items.map((item) => (
{item.content}
{new Date(item.timestamp).toLocaleString('uk-UA')}
))}
) : (
Немає записів
)}
) : (
Контекст недоступний
)}
)} {activeTab === 'settings' && ( )} {activeTab === 'events' && ( )}
); }