"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Input } from "@/components/ui/input"; import { Card } from "@/components/ui/card"; import type LlamaStackClient from "llama-stack-client"; interface VectorDbManagerProps { client: LlamaStackClient; onVectorDbCreated: () => void; } export function VectorDbManager({ client, onVectorDbCreated, }: VectorDbManagerProps) { const [showCreateForm, setShowCreateForm] = useState(false); const [isCreating, setIsCreating] = useState(false); const [createError, setCreateError] = useState(null); const [formData, setFormData] = useState({ vectorDbId: "", embeddingModel: "all-MiniLM-L6-v2", embeddingDimension: "384", }); const handleCreateVectorDb = async () => { if (!formData.vectorDbId.trim()) { setCreateError("Vector DB ID is required"); return; } setIsCreating(true); setCreateError(null); try { // Get available providers to find a vector_io provider const providers = await client.providers.list(); const vectorIoProvider = providers.find(p => p.api === "vector_io"); if (!vectorIoProvider) { throw new Error("No vector_io provider found"); } await client.vectorDBs.register({ vector_db_id: formData.vectorDbId.trim(), embedding_model: formData.embeddingModel, embedding_dimension: parseInt(formData.embeddingDimension), provider_id: vectorIoProvider.provider_id, }); // Reset form and close setFormData({ vectorDbId: "", embeddingModel: "all-MiniLM-L6-v2", embeddingDimension: "384", }); setShowCreateForm(false); // Refresh the vector DB list onVectorDbCreated(); } catch (err) { console.error("Error creating vector DB:", err); setCreateError( err instanceof Error ? err.message : "Failed to create vector database" ); } finally { setIsCreating(false); } }; const handleCancel = () => { setShowCreateForm(false); setCreateError(null); setFormData({ vectorDbId: "", embeddingModel: "all-MiniLM-L6-v2", embeddingDimension: "384", }); }; return (
{!showCreateForm ? ( ) : (

Create Vector Database

{createError && (

{createError}

)}
setFormData({ ...formData, vectorDbId: e.target.value }) } placeholder="Enter unique vector DB identifier" disabled={isCreating} />
)}
); }