import React, { useState, useEffect } from 'react' import { useParams, useNavigate } from 'react-router-dom' import StatusBadge from '../components/StatusBadge' import ChatView from '../components/ChatView' import GitStatus from '../components/GitStatus' import ProgressBar from '../components/ProgressBar' function Detail() { const { id } = useParams() const navigate = useNavigate() const [instance, setInstance] = useState(null) const [logs, setLogs] = useState({ messages: [], tool_calls: [] }) const [loading, setLoading] = useState(true) const fetchInstance = async () => { try { const response = await fetch(`/api/instances/${id}`) if (response.ok) { const data = await response.json() setInstance(data) } } catch (error) { console.error('Failed to fetch instance:', error) } } const fetchLogs = async () => { try { const response = await fetch(`/api/instances/${id}/logs`) if (response.ok) { const data = await response.json() setLogs(data) } } catch (error) { console.error('Failed to fetch logs:', error) } finally { setLoading(false) } } useEffect(() => { fetchInstance() fetchLogs() const interval = setInterval(() => { fetchInstance() fetchLogs() }, 5000) return () => clearInterval(interval) }, [id]) if (loading || !instance) { return (
Loading instance details...
) } return (
{/* Summary Section */}

Instance {instance.instance.id}

{instance.instance.instance_type === 'ensemble' ? 'Coach + Player' : 'Single Agent'}
Tokens
{instance.stats.total_tokens.toLocaleString()}
Tool Calls
{instance.stats.tool_calls}
Errors
{instance.stats.errors}
Workspace: {instance.instance.workspace}
Provider: {instance.instance.provider || 'N/A'}
Model: {instance.instance.model || 'N/A'}
Started: {new Date(instance.instance.start_time).toLocaleString()}
{/* Project Context Section */}

Project Context

{/* Project Files */}
{instance.project_files.requirements && (

requirements.md

                {instance.project_files.requirements}
              
)} {instance.project_files.readme && (

README.md

                {instance.project_files.readme}
              
)} {instance.project_files.agents && (

AGENTS.md

                {instance.project_files.agents}
              
)}
{/* Git Status */} {instance.git_status && (
)}
{/* Chat View Section */}

Chat History

) } export default Detail