diff --git a/frontend/packages/inspector/index.html b/frontend/packages/inspector/index.html index b4ada94..543649d 100644 --- a/frontend/packages/inspector/index.html +++ b/frontend/packages/inspector/index.html @@ -482,6 +482,10 @@ font-size: 12px; cursor: pointer; transition: all var(--transition); + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; } .sidebar-add-option:hover { @@ -489,6 +493,42 @@ color: #fff; } + .sidebar-add-option:hover .agent-badge { + background: rgba(255, 255, 255, 0.2); + color: #fff; + } + + .agent-option-name { + flex: 1; + min-width: 0; + } + + .agent-option-badges { + display: flex; + align-items: center; + gap: 4px; + flex-shrink: 0; + } + + .agent-badge { + padding: 2px 6px; + border-radius: 4px; + font-size: 10px; + font-weight: 500; + white-space: nowrap; + transition: all var(--transition); + } + + .agent-badge.installed { + background: rgba(48, 209, 88, 0.15); + color: var(--success); + } + + .agent-badge.version { + background: var(--border-2); + color: var(--muted); + } + .sidebar-add-status { padding: 6px 8px; font-size: 11px; diff --git a/frontend/packages/inspector/src/App.tsx b/frontend/packages/inspector/src/App.tsx index 316b229..8f3bfe6 100644 --- a/frontend/packages/inspector/src/App.tsx +++ b/frontend/packages/inspector/src/App.tsx @@ -744,7 +744,6 @@ export default function App() { } }, [modesByAgent, agentId]); - const availableAgents = agents.length ? agents.map((agent) => agent.id) : defaultAgents; const currentAgent = agents.find((agent) => agent.id === agentId); const activeModes = modesByAgent[agentId] ?? []; const modesLoading = modesLoadingByAgent[agentId] ?? false; @@ -822,7 +821,7 @@ export default function App() { onSelectSession={selectSession} onRefresh={fetchSessions} onCreateSession={createNewSession} - availableAgents={availableAgents} + agents={agents.length ? agents : defaultAgents.map((id) => ({ id, installed: false, capabilities: {} }) as AgentInfo)} agentsLoading={agentsLoading} agentsError={agentsError} sessionsLoading={sessionsLoading} @@ -840,7 +839,7 @@ export default function App() { onSendMessage={sendMessage} onKeyDown={handleKeyDown} onCreateSession={createNewSession} - availableAgents={availableAgents} + agents={agents.length ? agents : defaultAgents.map((id) => ({ id, installed: false, capabilities: {} }) as AgentInfo)} agentsLoading={agentsLoading} agentsError={agentsError} messagesEndRef={messagesEndRef} diff --git a/frontend/packages/inspector/src/components/SessionSidebar.tsx b/frontend/packages/inspector/src/components/SessionSidebar.tsx index a063c75..525305f 100644 --- a/frontend/packages/inspector/src/components/SessionSidebar.tsx +++ b/frontend/packages/inspector/src/components/SessionSidebar.tsx @@ -1,6 +1,6 @@ import { Plus, RefreshCw } from "lucide-react"; import { useEffect, useRef, useState } from "react"; -import type { SessionInfo } from "sandbox-agent"; +import type { AgentInfo, SessionInfo } from "sandbox-agent"; const SessionSidebar = ({ sessions, @@ -8,7 +8,7 @@ const SessionSidebar = ({ onSelectSession, onRefresh, onCreateSession, - availableAgents, + agents, agentsLoading, agentsError, sessionsLoading, @@ -19,7 +19,7 @@ const SessionSidebar = ({ onSelectSession: (session: SessionInfo) => void; onRefresh: () => void; onCreateSession: (agentId: string) => void; - availableAgents: string[]; + agents: AgentInfo[]; agentsLoading: boolean; agentsError: string | null; sessionsLoading: boolean; @@ -68,20 +68,26 @@ const SessionSidebar = ({