"use client"; import { PlusIcon, Trash2Icon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; export type ParameterType = "string" | "number" | "boolean"; export interface ToolParameter { name: string; type: ParameterType; description: string; required: boolean; } interface ParameterEditorProps { parameters: ToolParameter[]; onChange: (parameters: ToolParameter[]) => void; disabled?: boolean; } export function ParameterEditor({ parameters, onChange, disabled = false, }: ParameterEditorProps) { const addParameter = () => { onChange([ ...parameters, { name: "", type: "string", description: "", required: true }, ]); }; const updateParameter = ( index: number, field: keyof ToolParameter, value: string | boolean ) => { const newParams = [...parameters]; newParams[index] = { ...newParams[index], [field]: value }; onChange(newParams); }; const removeParameter = (index: number) => { onChange(parameters.filter((_, i) => i !== index)); }; return (
{parameters.length === 0 && (
No parameters defined. Add a parameter to specify what data this tool needs.
)} {parameters.map((param, index) => (
Parameter {index + 1}
updateParameter(index, "name", e.target.value) } disabled={disabled} />
updateParameter(index, "description", e.target.value) } disabled={disabled} />
updateParameter(index, "required", checked) } disabled={disabled} />
))}
); }