import { useEffect, useState } from "react"; import { assistantClientNames, mcpAuthorizationHandoffInstructions, mcpInvitation, mcpSetupSteps, type AssistantClient, type McpConnection } from "@paperclipai/shared"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Check, Copy, ExternalLink, Globe, Paperclip, Plug, Terminal } from "lucide-react"; import { publicMcpApi } from "@/api/publicMcp"; import { ApiError } from "@/api/client"; import { useCompany } from "@/context/CompanyContext"; import { useBreadcrumbs } from "@/context/BreadcrumbContext"; import { Link } from "@/lib/router"; import { copyTextToClipboard } from "@/lib/clipboard"; import { deriveInitials, Identity } from "@/components/Identity"; import { assistantConnectionDisplayName } from "./connection-owner"; import { AgentSetupPrompt } from "@/components/AgentSetupPrompt"; import { OpenCodeLogoIcon } from "@/components/OpenCodeLogoIcon"; import { CompanyPatternIcon } from "@/components/CompanyPatternIcon"; import { Button } from "@/components/ui/button"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; export const ASSISTANT_CONNECTION_PATH = "/apps/assistant-connection"; const connectionsKey = ["mcp-connections"]; type Assistant = AssistantClient; const assistants = assistantClientNames; function AssistantIcon({ assistant }: { assistant: Assistant }) { if (assistant === "codex" || assistant === "claude") return ; if (assistant === "opencode") return ; const Icon = assistant === "browser" ? Globe : assistant === "headless" ? Terminal : Plug; return