import React, { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { AlertTriangle, Download, Loader2 } from "lucide-react"; import { useApi } from "@/contexts/ApiContext"; import { importModel } from "@/lib/jobsApi"; interface Props { open: boolean; onOpenChange: (open: boolean) => void; onImported: () => void; } const ImportModelModal: React.FC = ({ open, onOpenChange, onImported }) => { const { baseUrl, fetchWithHeaders } = useApi(); const [source, setSource] = useState(""); const [name, setName] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const handleSubmit = async () => { const src = source.trim(); if (!src) return; setSubmitting(true); setError(null); try { await importModel(baseUrl, fetchWithHeaders, src, name.trim() || undefined); setSource(""); setName(""); onOpenChange(false); onImported(); } catch (e) { setError(e instanceof Error ? e.message : String(e)); } finally { setSubmitting(false); } }; return ( Import a model Point at a local directory or a Hugging Face repo. It appears as a job you can run inference on.
setSource(e.target.value)} placeholder="/path/to/pretrained_model or user/my-policy" className="bg-gray-800 border-gray-700 text-white" />
setName(e.target.value)} placeholder="My imported policy" className="bg-gray-800 border-gray-700 text-white" />
{error ? ( {error} ) : null}
); }; export default ImportModelModal;