Intelligence

Artifacts

Browse the repository, read documents, and manage the governance folders. Source, runtime, and infrastructure are read-only.

Repository
README.md
CONSTITUTION_COMPLIANCE_AUDIT_V1.mdREADME.md
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