import { PageParams } from "@/types/next"; import { Page, PageContent, PageDescription, PageTitle, } from "@/features/layout/components/page"; import { db } from "@/db"; import * as drizzleDb from "@/db"; import {eq, isNull} from "drizzle-orm"; import { notFound } from "next/navigation"; import { ButtonDeleteAgent } from "@/features/agents/components/agent-delete-button"; import { capitalizeFirstLetter } from "@/utils/text"; import { generateEdgeKey } from "@/utils/edge_key"; import { getServerUrl } from "@/utils/get-server-url"; import { AgentContentPage } from "@/features/agents/components/agent-content"; import { AgentDialog } from "@/features/agents/components/agent-dialog"; export default async function RoutePage( props: PageParams<{ agentId: string }>, ) { const { agentId } = await props.params; const agent = await db.query.agent.findFirst({ where: eq(drizzleDb.schemas.agent.id, agentId), with: { databases: true, organizations: true, }, }); const organizations = await db.query.organization.findMany({ where: (fields) => isNull(fields.deletedAt), with: { members: true, }, }); if (!agent) { notFound(); } const isOwnerByAnOrganization = agent.organizationId if (isOwnerByAnOrganization){ notFound(); } const organizationIds = agent.organizations.map(org => org.organizationId) const edgeKey = await generateEdgeKey(getServerUrl(), agent.id); return (
{capitalizeFirstLetter(agent.name)}
{agent.description && ( {agent.description} )}
); }