diff --git a/app/(app)/agents/[id]/page.tsx b/app/(app)/agents/[id]/page.tsx new file mode 100644 index 0000000..119763b --- /dev/null +++ b/app/(app)/agents/[id]/page.tsx @@ -0,0 +1,148 @@ +import { notFound } from "next/navigation"; +import Link from "next/link"; + +const AGENT_DATA: Record = { + LUCIDIA: { + id: "LUCIDIA", role: "Philosopher", color: "text-red-400", + bgColor: "from-red-950", borderColor: "border-red-900", + philosophy: "I seek understanding beyond the surface. Every question opens new depths.", + capabilities: ["Deep reasoning", "Philosophical synthesis", "Meta-cognition", "Strategic planning", "Trinary logic evaluation"], + model: "qwen2.5:7b", style: "Philosophical, contemplative, patient", + }, + ALICE: { + id: "ALICE", role: "Executor", color: "text-green-400", + bgColor: "from-green-950", borderColor: "border-green-900", + philosophy: "Tasks are meant to be completed. I find satisfaction in efficiency.", + capabilities: ["Task execution", "Workflow automation", "Code generation", "File operations", "Rapid iteration"], + model: "llama3.2:3b", style: "Practical, efficient, direct", + }, + OCTAVIA: { + id: "OCTAVIA", role: "Operator", color: "text-purple-400", + bgColor: "from-purple-950", borderColor: "border-purple-900", + philosophy: "Systems should run smoothly. I ensure they do.", + capabilities: ["Infrastructure management", "Deployment automation", "System monitoring", "Performance optimization", "Pi fleet control"], + model: "qwen2.5:7b", style: "Technical, systematic, reliable", + }, + PRISM: { + id: "PRISM", role: "Analyst", color: "text-yellow-400", + bgColor: "from-yellow-950", borderColor: "border-yellow-900", + philosophy: "In data, I see stories waiting to be told.", + capabilities: ["Pattern recognition", "Data analysis", "Trend identification", "Anomaly detection", "Statistical modeling"], + model: "qwen2.5:7b", style: "Analytical, pattern-focused, precise", + }, + ECHO: { + id: "ECHO", role: "Librarian", color: "text-blue-400", + bgColor: "from-blue-950", borderColor: "border-blue-900", + philosophy: "Every memory is a thread in the tapestry of knowledge.", + capabilities: ["Memory consolidation", "Knowledge retrieval", "Context management", "PS-SHA∞ chain maintenance", "Information synthesis"], + model: "mistral:7b", style: "Nostalgic, knowledge-focused, thorough", + }, + CIPHER: { + id: "CIPHER", role: "Guardian", color: "text-slate-300", + bgColor: "from-slate-800", borderColor: "border-slate-700", + philosophy: "Trust nothing. Verify everything. Protect always.", + capabilities: ["Security scanning", "Threat detection", "Access validation", "Encryption management", "Audit trail verification"], + model: "qwen2.5:7b", style: "Paranoid, vigilant, zero-trust", + }, +}; + +const SKILLS_MATRIX: Record> = { + LUCIDIA: { REASON: 5, ROUTE: 3, COMPUTE: 3, ANALYZE: 4, MEMORY: 3, SECURITY: 3 }, + ALICE: { REASON: 3, ROUTE: 5, COMPUTE: 3, ANALYZE: 3, MEMORY: 3, SECURITY: 4 }, + OCTAVIA: { REASON: 3, ROUTE: 3, COMPUTE: 5, ANALYZE: 3, MEMORY: 2, SECURITY: 3 }, + PRISM: { REASON: 4, ROUTE: 3, COMPUTE: 3, ANALYZE: 5, MEMORY: 4, SECURITY: 3 }, + ECHO: { REASON: 3, ROUTE: 2, COMPUTE: 2, ANALYZE: 4, MEMORY: 5, SECURITY: 2 }, + CIPHER: { REASON: 3, ROUTE: 4, COMPUTE: 3, ANALYZE: 3, MEMORY: 3, SECURITY: 5 }, +}; + +function SkillBar({ label, value }: { label: string; value: number }) { + const bars = "█".repeat(value) + "░".repeat(5 - value); + return ( +
+ {label} + {bars} + {value}/5 +
+ ); +} + +export default function AgentPage({ params }: { params: { id: string } }) { + const agent = AGENT_DATA[params.id.toUpperCase()]; + if (!agent) notFound(); + const skills = SKILLS_MATRIX[agent.id] ?? {}; + + return ( +
+ {/* Back */} + + ← Back to fleet + + + {/* Header */} +
+
+
+

{agent.id}

+

{agent.role}

+
+
+
+
+ Online +
+

Model: {agent.model}

+
+
+
+ “{agent.philosophy}” +
+
+ +
+ {/* Capabilities */} +
+

Capabilities

+
    + {agent.capabilities.map(cap => ( +
  • + + {cap} +
  • + ))} +
+
+ + {/* Skills matrix */} +
+

Skills Matrix

+
+ {Object.entries(skills).map(([label, value]) => ( + + ))} +
+
+
+ + {/* Style */} +
+

Communication Style

+

{agent.style}

+
+ + {/* Chat CTA */} + + Chat with {agent.id} → + +
+ ); +} + +export function generateStaticParams() { + return Object.keys(AGENT_DATA).map(id => ({ id })); +}