import { HelpTooltip } from "@/components/HelpTooltip"; import { Label } from "@/components/ui/label"; import { Select, SelectTrigger, SelectContent, SelectValue, SelectItem, } from "@/components/ui/select"; import { getClient } from "@/api/AxiosClient"; import { useQuery } from "@tanstack/react-query"; import { useCredentialGetter } from "@/hooks/useCredentialGetter"; import { ModelsResponse } from "@/api/types"; import { WorkflowModel } from "@/routes/workflows/types/workflowTypes"; type Props = { className?: string; clearable?: boolean; value: WorkflowModel | null; // -- onChange: (value: WorkflowModel | null) => void; }; const constants = { SkyvernOptimized: "Skyvern Optimized", } as const; function ModelSelector({ clearable = true, value, onChange, className, }: Props) { const credentialGetter = useCredentialGetter(); const { data: availableModels } = useQuery({ queryKey: ["models"], queryFn: async () => { const client = await getClient(credentialGetter); return client.get("/models").then((res) => res.data); }, }); const models = availableModels?.models ?? {}; const reverseMap = Object.entries(models).reduce( (acc, [key, value]) => { acc[value] = key; return acc; }, {} as Record, ); const labels = Object.keys(reverseMap); const chosen = value ? models[value.model_name] : constants.SkyvernOptimized; const choices = [constants.SkyvernOptimized, ...labels]; return (
{value && clearable && ( <>
); } ModelSelector.displayName = "ModelSelector"; export { ModelSelector };