import Link from "next/link"; import { eq } from "drizzle-orm"; import { auth } from "@/auth"; import { db } from "@/lib/db/client"; import { users } from "@/lib/db/schema"; import { Container, PageHeader } from "@/app/_components/ui/container"; import { Card, CardBody, CardHeader } from "@/app/_components/ui/card"; import { Button } from "@/app/_components/ui/button"; export const dynamic = "force-dynamic"; export default async function SettingsPage() { const session = await auth(); const userId = session!.user.id; const userRow = await db .select() .from(users) .where(eq(users.id, userId)) .limit(1); const user = userRow[0]; return (
Profile CLI tokens Bearer tokens for headless/automated MCP clients. Visit{" "} /settings/tokens to generate and revoke them. Groups OIDC group memberships from your IdP, refreshed at sign-in. Used to scope project sharing — memories and snippets in a shared project are readable by member groups and editable by read-write groups.
); } function Field({ label, value, mono, }: { label: string; value: string | null | undefined; mono?: boolean; }) { return (
{label} {value ?? }
); }