import { IconAlertTriangle, IconBrowser, IconCheck, IconDeviceDesktop, IconLoader2, IconPlugConnected, } from "@tabler/icons-react"; import React from "react"; import { cn } from "../utils.js"; import { useToggleBuiltinCapability, type BuiltinCapability, type BuiltinCapabilityStatus, } from "./use-builtin-capabilities.js"; import type { McpServerScope } from "./use-mcp-servers.js"; interface BuiltinCapabilityDetailProps { capability: BuiltinCapability; scope: McpServerScope; canEditOrg: boolean; } export function BuiltinCapabilityDetail({ capability, scope, canEditOrg, }: BuiltinCapabilityDetailProps) { const toggle = useToggleBuiltinCapability(); const enabled = capability.enabled[scope]; const status = capability.status[scope]; const canToggle = capability.available && (scope === "user" || canEditOrg) && !toggle.isPending; const isBrowser = capability.exclusiveGroup === "browser"; const onToggle = () => { if (!canToggle) return; toggle.mutate({ id: capability.id, scope, enabled: !enabled }); }; return (
{capability.description}
{scope === "user" ? "Available only to your agent sessions." : "Available to agents in the active organization."}
{capability.command} {capability.args.join(" ")}
{capability.notes}
{capability.unavailableReason ?? "Not available on this host."}
macOS may ask for Screen Recording and Accessibility permission before the tools can control local apps. The agent should still ask before taking sensitive desktop actions.
)} {capability.id === "browser-chrome-devtools" && (Chrome DevTools attaches to your live Chrome profile when remote debugging is available, so it can verify pages that rely on your existing login.
)} {capability.id === "screen-memory" && (Screen Memory only reads local Clips desktop context on this machine. Turn it on from Clips desktop Settings before expecting recent context results.
)}