From a97e7ca6debef269737e28edffe8342ec53cd307 Mon Sep 17 00:00:00 2001 From: Horus Date: Fri, 27 Feb 2026 17:44:16 +0100 Subject: [PATCH] Fix Agent Command Center - dark theme, fixed navigation --- app/mission-control/agent/[id]/page.tsx | 357 +++++++++--------------- 1 file changed, 127 insertions(+), 230 deletions(-) diff --git a/app/mission-control/agent/[id]/page.tsx b/app/mission-control/agent/[id]/page.tsx index 6e00dc5..fbaaeaa 100644 --- a/app/mission-control/agent/[id]/page.tsx +++ b/app/mission-control/agent/[id]/page.tsx @@ -8,8 +8,8 @@ const AGENT_CONFIG: Record { setLoading(true); - // Tasks try { const tRes = await fetch("/api/tasks"); if (tRes.ok) { @@ -55,7 +54,6 @@ export default function AgentCenterPage({ params }: { params: { id: string } }) } } catch {} - // Templates try { const rRes = await fetch("/api/recurring"); if (rRes.ok) { @@ -70,7 +68,6 @@ export default function AgentCenterPage({ params }: { params: { id: string } }) } } catch {} - // Logs try { const lRes = await fetch(`/api/execution-logs?agent=${agentId}&limit=20`); if (lRes.ok) { @@ -84,15 +81,11 @@ export default function AgentCenterPage({ params }: { params: { id: string } }) } } catch {} - // Changelog try { const cRes = await fetch(`/api/changelog?agent=${agentId}&limit=20`); - if (cRes.ok) { - setChangelog(await cRes.json()); - } + if (cRes.ok) setChangelog(await cRes.json()); } catch {} - // Brainown try { const bRes = await fetch(`/api/agent-outputs?agent=${agentId}`); if (bRes.ok) { @@ -109,9 +102,7 @@ export default function AgentCenterPage({ params }: { params: { id: string } }) } } catch {} - // Simulate tokens setTokens((Math.random() * 2).toFixed(1)); - setLoading(false); }; @@ -164,279 +155,185 @@ export default function AgentCenterPage({ params }: { params: { id: string } }) } return ( -
- {/* Back Button */} - - - {/* Header Card */} -
-
-
- {agent.avatar} -
-
-

- {agent.name} -

-

{agent.role}

-
-
- {getStatusBadge(agentStatus)} -

Tokens: {tokens}k

- {lastRun && ( -

Last: {new Date(lastRun).toLocaleTimeString()}

- )} -
+
+ {/* Header */} +
+ +
+ {agent.avatar} +
+
+

+ {agent.name} +

+

{agent.role}

+
+
+ {getStatusBadge(agentStatus)} +

Tokens: {tokens}k

+ {lastRun &&

Last: {new Date(lastRun).toLocaleTimeString()}

}
- {/* 📋 TASKS - 3 Column Kanban */} -
- - {expanded.tasks && ( -
-
- {/* To Do */} -
-

To Do

-
- {todoTasks.length === 0 ? ( -

No tasks

- ) : ( - todoTasks.map((task: any) => ( -
- [{task.priority}] -

{task.title}

-
- )) - )} -
+
+
+

To Do

+
+ {todoTasks.length === 0 ?

: + todoTasks.map((t: any) => ( +
+ [{t.priority}] + {t.title} +
+ )) + }
- - {/* In Progress */} -
-

In Progress

-
- {inProgressTasks.length === 0 ? ( -

No tasks

- ) : ( - inProgressTasks.map((task: any) => ( -
- [{task.priority}] -

{task.title}

-
- )) - )} -
+
+
+

In Progress

+
+ {inProgressTasks.length === 0 ?

: + inProgressTasks.map((t: any) => ( +
{t.title}
+ )) + }
- - {/* Done */} -
-

Done

-
- {doneTasks.length === 0 ? ( -

No tasks

- ) : ( - doneTasks.slice(0, 5).map((task: any) => ( -
-

{task.title}

-
- )) - )} -
+
+
+

Done

+
+ {doneTasks.length === 0 ?

: + doneTasks.slice(0, 3).map((t: any) => ( +
{t.title}
+ )) + }
)}
- {/* 🔄 RECURRING SCHEDULES */} -
- - {expanded.recurring && ( -
- {templates.length === 0 ? ( -

No recurring tasks

- ) : ( - templates.map((template: any) => ( -
+
+ {templates.length === 0 ?

No recurring tasks

: + templates.map((t: any) => ( +
-

{template.taskTemplate.title}

-

- {template.schedule.type === "hourly" ? "Hourly" : - template.schedule.time ? `${template.schedule.time} CET` : template.schedule.type} +

{t.taskTemplate.title}

+

+ {t.schedule.type === "hourly" ? "Hourly" : t.schedule.time ? `${t.schedule.time} CET` : t.schedule.type}

- - +
)) - )} + }
)}
- {/* 📊 EXECUTION LOGS */} -
- - {expanded.logs && ( -
- {logs.length === 0 ? ( -

No execution logs

- ) : ( - logs.map((log: any) => ( -
-
- -
-

{log.taskTitle}

-

- {new Date(log.startedAt).toLocaleString()} - {log.completedAt && ` • ${Math.round((new Date(log.completedAt).getTime() - new Date(log.startedAt).getTime()) / 1000)}s`} -

-
+
+ {logs.length === 0 ?

No logs

: + logs.slice(0, 5).map((l: any) => ( +
+
+ + {l.taskTitle}
- - {log.status === "completed" ? "✓ Success" : log.status === "failed" ? "✕ Error" : log.status} + + {l.status}
)) - )} + }
)}
{/* 📝 CHANGE LOG */} -
- - {expanded.changelog && ( -
- {changelog.length === 0 ? ( -

No changes recorded

- ) : ( - changelog.map((entry: any) => ( -
-
- - v{entry.version || "1.0"} - - - {new Date(entry.date).toLocaleDateString()} - +
+ {changelog.length === 0 ?

No changes

: + changelog.slice(0, 5).map((c: any) => ( +
+
+ v{c.version || "1.0"} + {new Date(c.date).toLocaleDateString()}
-

{entry.description}

+

{c.description}

)) - )} + }
)}
- {/* 🧠 BRAINOWN OUTPUTS */} -
- - {expanded.brainown && ( -
- {brainownNotes.length === 0 ? ( -

No outputs yet

- ) : ( - brainownNotes.map((note: any) => ( -
-
- 📄 {note.date} -
-
-                    {note.content.substring(0, 300)}...
-                  
+
+ {brainownNotes.length === 0 ?

No outputs

: + brainownNotes.map((n: any) => ( +
+ 📄 {n.date} +
{n.content.substring(0, 100)}...
)) - )} + }
)}
- {/* Back Button Bottom */} -
- -
+ {/* Back */} +
); }