fix: show bridge in agents page, replace capabilities with labels
This commit is contained in:
parent
c00a3ea1f1
commit
503bb1379a
@ -12,7 +12,7 @@ export default function AgentsPage() {
|
|||||||
const load = async () => {
|
const load = async () => {
|
||||||
try {
|
try {
|
||||||
const members = await getMembers();
|
const members = await getMembers();
|
||||||
setAgents(members.filter((m) => m.type === "agent"));
|
setAgents(members.filter((m) => m.type === "agent" || m.type === "bridge"));
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
@ -22,6 +22,11 @@ export default function AgentsPage() {
|
|||||||
load();
|
load();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const typeIcon = (type: string) => {
|
||||||
|
if (type === "bridge") return { bg: "bg-purple-500/20", text: "text-purple-400", icon: "🔗" };
|
||||||
|
return { bg: "bg-blue-500/20", text: "text-blue-400", icon: "🤖" };
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-6">
|
<div className="p-6">
|
||||||
<div className="flex items-center justify-between mb-6">
|
<div className="flex items-center justify-between mb-6">
|
||||||
@ -40,45 +45,56 @@ export default function AgentsPage() {
|
|||||||
<div className="text-[var(--muted)] text-sm">Нет агентов</div>
|
<div className="text-[var(--muted)] text-sm">Нет агентов</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
<div className="grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
||||||
{agents.map((agent) => (
|
{agents.map((agent) => {
|
||||||
<div
|
const ti = typeIcon(agent.type);
|
||||||
key={agent.id}
|
return (
|
||||||
onClick={() => setSelected(agent)}
|
<div
|
||||||
className="bg-[var(--card)] border border-[var(--border)] rounded-xl p-4 cursor-pointer hover:border-[var(--accent)]/50 transition-colors"
|
key={agent.id}
|
||||||
>
|
onClick={() => setSelected(agent)}
|
||||||
<div className="flex items-center justify-between mb-2">
|
className="bg-[var(--card)] border border-[var(--border)] rounded-xl p-4 cursor-pointer hover:border-[var(--accent)]/50 transition-colors"
|
||||||
<h3 className="font-semibold">{agent.name}</h3>
|
>
|
||||||
<span
|
<div className="flex items-center justify-between mb-2">
|
||||||
className={`text-xs px-2 py-0.5 rounded-full ${
|
<div className="flex items-center gap-2">
|
||||||
agent.status === "online"
|
<span>{ti.icon}</span>
|
||||||
? "bg-green-500/20 text-green-400"
|
<h3 className="font-semibold">{agent.name}</h3>
|
||||||
: "bg-gray-500/20 text-gray-400"
|
</div>
|
||||||
}`}
|
<span
|
||||||
>
|
className={`text-xs px-2 py-0.5 rounded-full ${
|
||||||
{agent.status === "online" ? "online" : "offline"}
|
agent.status === "online"
|
||||||
</span>
|
? "bg-green-500/20 text-green-400"
|
||||||
</div>
|
: "bg-gray-500/20 text-gray-400"
|
||||||
<div className="text-xs text-[var(--muted)] mb-3">@{agent.slug}</div>
|
}`}
|
||||||
|
>
|
||||||
{agent.agent_config?.capabilities && agent.agent_config.capabilities.length > 0 && (
|
{agent.status === "online" ? "online" : "offline"}
|
||||||
<div className="flex flex-wrap gap-1 mb-3">
|
</span>
|
||||||
{agent.agent_config.capabilities.map((cap) => (
|
</div>
|
||||||
<span
|
<div className="text-xs text-[var(--muted)] mb-3">
|
||||||
key={cap}
|
@{agent.slug} • {agent.type}
|
||||||
className="text-xs px-2 py-0.5 bg-[var(--accent)]/10 text-[var(--accent)] rounded"
|
|
||||||
>
|
|
||||||
{cap}
|
|
||||||
</span>
|
|
||||||
))}
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
|
||||||
|
|
||||||
<div className="text-xs text-[var(--muted)] space-y-1">
|
{agent.agent_config?.labels && agent.agent_config.labels.length > 0 && (
|
||||||
<div>💬 chat: {agent.agent_config?.chat_listen || "—"}</div>
|
<div className="flex flex-wrap gap-1 mb-3">
|
||||||
<div>📋 tasks: {agent.agent_config?.task_listen || "—"}</div>
|
{agent.agent_config.labels.map((label) => (
|
||||||
|
<span
|
||||||
|
key={label}
|
||||||
|
className="text-xs px-2 py-0.5 bg-[var(--accent)]/10 text-[var(--accent)] rounded"
|
||||||
|
>
|
||||||
|
{label}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<div className="text-xs text-[var(--muted)] space-y-1">
|
||||||
|
<div>💬 чат: {agent.agent_config?.chat_listen || "—"}</div>
|
||||||
|
<div>📋 задачи: {agent.agent_config?.task_listen || "—"}</div>
|
||||||
|
{agent.agent_config?.mentionable === false && (
|
||||||
|
<div>🚫 не упоминаемый</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
);
|
||||||
))}
|
})}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user