import type { ReactNode } from "react"; import { Loader2, ShieldCheck, Terminal, TriangleAlert } from "lucide-react"; import { Link } from "@/lib/router"; import { Button } from "@/components/ui/button"; import { BOOTSTRAP_FALLBACK_COMMAND } from "@/bootstrapSetup"; import type { AuthSession } from "@paperclipai/shared"; type BootstrapPendingPageProps = { claimAvailable: boolean; hasActiveInvite?: boolean; session: AuthSession | null | undefined; claimState: "idle" | "claiming" | "success"; claimError?: { status?: number; message?: string } | null; onClaim: () => void; }; function CliFallback({ hasActiveInvite = false }: { hasActiveInvite?: boolean }) { return (
{hasActiveInvite ? "A bootstrap invite is already active. Check your Paperclip startup logs for the first-admin URL, or run this command on the host to rotate it:" : "Run this command on the host that runs Paperclip to print a one-time first-admin invite URL:"}
{BOOTSTRAP_FALLBACK_COMMAND}
This instance runs in invite-only mode. The operator must generate a one-time first-admin invite URL from the host. Once you have the link, open it from this browser to finish setup.
Browser-based claim is intentionally disabled in public mode so anyone on the network can't promote themselves.
Setup is complete. Taking you to onboarding to create your first company...
No admin has claimed this instance yet. Sign in or create your Paperclip account to become the first admin from this browser.
No admin has claimed this instance yet. Claim it now to become the first admin and start onboarding.
Wrong account?{" "} Switch account .
{claimError && ({errorCopy.title}
{errorCopy.body &&{errorCopy.body}
}