Intelligence
Artifacts
Browse the repository, read documents, and manage the governance folders. Source, runtime, and infrastructure are read-only.
Repository
repositories/aaf-holdings/hq01/app/workers/page.tsx
2.5 KB
import Link from "next/link";
import { HardHat, ChevronRight, Cpu } from "lucide-react";
import { PageHeader } from "@/components/layout/page-header";
import { Card } from "@/components/ui/card";
import { listTemplates } from "@/lib/workers/templates";
/**
* Worker Templates (PASS M7) — versioned execution blueprints. They are not
* persistent agents; assignments instantiate temporary workers from them.
*/
export const dynamic = "force-dynamic";
export const metadata = { title: "Worker Templates" };
export default function WorkerTemplatesPage() {
const templates = listTemplates();
return (
<div>
<PageHeader
eyebrow="Engineering"
title="Worker Templates"
description="Execution blueprints. Workers are temporary — an assignment instantiates one, it runs, it terminates. Reports remain."
/>
<Card className="overflow-hidden p-0">
<div className="divide-y divide-border">
{templates.map((t) => (
<Link
key={t.id}
href={`/workers/${t.id}`}
className="group flex items-center gap-4 px-4 py-3.5 transition-colors hover:bg-secondary/60"
>
<div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-secondary">
<HardHat className="h-4 w-4 text-foreground/70" />
</div>
<div className="min-w-0 flex-1">
<div className="flex items-center gap-2 text-[14px] font-medium text-foreground">
{t.name}
<span className="rounded-full bg-secondary px-2 py-0.5 text-[10px] font-medium text-foreground/70">
v{t.version}
</span>
</div>
<div className="mt-0.5 flex flex-wrap items-center gap-x-3 text-[12px] text-muted-foreground">
<span>{t.department}</span>
<span className="font-mono">· {t.executive_owner}</span>
<span className="inline-flex items-center gap-1">
· <Cpu className="h-3 w-3" /> {t.default_model}
</span>
</div>
</div>
<span className="hidden shrink-0 rounded-full bg-emerald-50 px-2 py-0.5 text-[10px] font-medium text-emerald-700 sm:block">
{t.status}
</span>
<ChevronRight className="h-4 w-4 shrink-0 text-muted-foreground/40 transition-colors group-hover:text-foreground" />
</Link>
))}
</div>
</Card>
</div>
);
}
root · /srv/aaf