page.tsx 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import { AgentsDashboard } from "@/components/agents/agents-dashboard";
  2. import { loadAgentFeed } from "@/lib/agent-monitor";
  3. import { AgentStatus } from "@/types/agent";
  4. type AgentsPageProps = {
  5. searchParams?: Promise<{
  6. status?: string;
  7. }>;
  8. };
  9. function isAgentStatus(value: string | undefined): value is AgentStatus {
  10. return value === "working" || value === "idle" || value === "warning" || value === "offline";
  11. }
  12. export default async function AgentsPage({ searchParams }: AgentsPageProps) {
  13. const resolvedSearchParams = searchParams ? await searchParams : undefined;
  14. const activeStatus = isAgentStatus(resolvedSearchParams?.status) ? resolvedSearchParams.status : "all";
  15. const feed = await loadAgentFeed(activeStatus);
  16. return (
  17. <main className="page-shell">
  18. <section className="page-title">
  19. <h1>Agent 观察室</h1>
  20. <p>这里直接看 OpenClaw 各个 agent 的任务、心跳、队列、主机和最近输出,方便做真实运维观察。</p>
  21. </section>
  22. <AgentsDashboard initialFeed={feed} initialStatus={activeStatus} />
  23. </main>
  24. );
  25. }