import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { TabsContent } from "@/components/ui/tabs"; import { Textarea } from "@/components/ui/textarea"; import { ListPromptsResult } from "@modelcontextprotocol/sdk/types.js"; import { AlertCircle } from "lucide-react"; import { useState } from "react"; import ListPane from "./ListPane"; export type Prompt = { name: string; description?: string; arguments?: { name: string; description?: string; required?: boolean; }[]; }; const PromptsTab = ({ prompts, listPrompts, getPrompt, selectedPrompt, setSelectedPrompt, promptContent, nextCursor, error, }: { prompts: Prompt[]; listPrompts: () => void; getPrompt: (name: string, args: Record) => void; selectedPrompt: Prompt | null; setSelectedPrompt: (prompt: Prompt) => void; promptContent: string; nextCursor: ListPromptsResult["nextCursor"]; error: string | null; }) => { const [promptArgs, setPromptArgs] = useState>({}); const handleInputChange = (argName: string, value: string) => { setPromptArgs((prev) => ({ ...prev, [argName]: value })); }; const handleGetPrompt = () => { if (selectedPrompt) { getPrompt(selectedPrompt.name, promptArgs); } }; return ( { setSelectedPrompt(prompt); setPromptArgs({}); }} renderItem={(prompt) => ( <> {prompt.name} {prompt.description} )} title="Prompts" buttonText={nextCursor ? "List More Prompts" : "List Prompts"} isButtonDisabled={!nextCursor && prompts.length > 0} />

{selectedPrompt ? selectedPrompt.name : "Select a prompt"}

{error ? ( Error {error} ) : selectedPrompt ? (
{selectedPrompt.description && (

{selectedPrompt.description}

)} {selectedPrompt.arguments?.map((arg) => (
handleInputChange(arg.name, e.target.value) } /> {arg.description && (

{arg.description} {arg.required && ( (Required) )}

)}
))} {promptContent && (