import IconTile from "@/src/components/general/icon-tile";
import extensionIcon from "@/src/components/general/extension-icon";
import type { BotExtension } from "@/src/types";
import extensionStateNote from "@/src/utils/extension-state-note";
import SettingsListRow from "./settings-list-row";
import SettingsRowAction from "./settings-row-action";
type Props = {
item: BotExtension;
busy?: boolean;
onRemove?: () => void;
};
/**
* The settings page each kind is managed on.
*/
const ExtensionHrefs = {
mcp: "/admin/settings/mcps",
tool: "/admin/settings/tools",
skill: "/admin/settings/skills",
knowledgebase: "/admin/settings/knowledgebases",
} as const;
/**
* One MCP server, tool, skill or knowledgebase a bot or workspace has,
* and whether it's working (`extensionStateNote`).
*/
export default function ExtensionRow({ item, busy, onRemove }: Props) {
const state = extensionStateNote({ item });
return (
}
title={item.name}
href={ExtensionHrefs[item.kind]}
subtitle={[item.detail, state].filter(Boolean).join(" ยท ")}
>
{onRemove ? (
) : null}
);
}