import React, { useCallback, useEffect, useState } from "react"; import { Monitor, RefreshCw, Link2 } from "lucide-react"; import { http } from "../lib/api"; import { parseAgentStatus } from "../lib/agentStatus"; import { EmoLogo } from "./EmoLogo"; import { Link } from "react-router-dom"; export default function AgentPermissionsPanel({ agentOnline, desktopOnline }) { const [loading, setLoading] = useState(false); const [status, setStatus] = useState({ connected: false, online: false, desktopOnline: false, linked: false, context: null, }); const refresh = useCallback(async () => { setLoading(true); try { const r = await http.get("/agent/status"); const parsed = parseAgentStatus(r.data); setStatus({ connected: parsed.connected, online: parsed.agentToolsOnline, desktopOnline: parsed.desktopOnline, linked: parsed.desktopLinked, context: r.data.context || null, }); } catch { setStatus((s) => ({ ...s, connected: false, desktopOnline: false, online: false })); } finally { setLoading(false); } }, []); useEffect(() => { refresh(); const id = setInterval(refresh, 5000); return () => clearInterval(id); }, [refresh]); const connected = status.desktopOnline || desktopOnline || agentOnline; const hostname = status.context?.hostname || status.context?.os || ""; return (
{hostname}
) : null}