import { Fragment } from "react"; import { App, Button, Input, Tooltip } from "antd"; import copyToClipboard from "copy-to-clipboard"; import { Copy, KeyRound, Link2, PlugZap } from "lucide-react"; import { canvasThemes } from "@/lib/canvas-theme"; const AGENT_CONNECT_STEPS = [ { title: "方式一:在 Codex 中使用插件", text: "在 Codex app 安装 Infinite Canvas 插件后,通过插件启动画布,插件会自动启动本地 Agent 并带上连接信息。" }, { title: "方式二:直接运行 Agent", text: "不使用 Codex 插件时,在终端运行下面命令,再回到网页里连接或手动填入 Local URL 和 Connect token。", command: "npx -y @basketikun/canvas-agent" }, ]; const AGENT_PLUGIN_REMOVE_COMMAND = "codex plugin remove infinite-canvas"; const AGENT_MCP_REMOVE_COMMAND = "codex mcp remove infinite-canvas"; export function AgentConnectView({ theme, url, token, enabled, connected, activity, connectError, onUrlChange, onTokenChange, onToggleEnabled, }: { theme: (typeof canvasThemes)[keyof typeof canvasThemes]; url: string; token: string; enabled: boolean; connected: boolean; activity: string; connectError: string; onUrlChange: (value: string) => void; onTokenChange: (value: string) => void; onToggleEnabled: () => void; }) { const { message } = App.useApp(); const statusText = connectError ? "连接失败" : connected ? activity : enabled ? "连接中" : "未连接"; const statusColor = connectError ? "#dc2626" : connected ? "#16a34a" : enabled ? "#d97706" : theme.node.muted; const copyCommand = (command: string) => { copyToClipboard(command); message.success("命令已复制"); }; const codexPluginReminder = (
{command}
{command}