mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-29 07:14:20 +00:00
adding vector store detailed view
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
parent
466e234591
commit
f8311c827d
1 changed files with 128 additions and 0 deletions
128
llama_stack/ui/components/vector-stores/vector-store-detail.tsx
Normal file
128
llama_stack/ui/components/vector-stores/vector-store-detail.tsx
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import type { VectorStore } from "llama-stack-client/resources/vector-stores/vector-stores";
|
||||||
|
import type { VectorStoreFile } from "llama-stack-client/resources/vector-stores/files";
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||||
|
import { Skeleton } from "@/components/ui/skeleton";
|
||||||
|
import {
|
||||||
|
DetailLoadingView,
|
||||||
|
DetailErrorView,
|
||||||
|
DetailNotFoundView,
|
||||||
|
DetailLayout,
|
||||||
|
PropertiesCard,
|
||||||
|
PropertyItem,
|
||||||
|
} from "@/components/layout/detail-layout";
|
||||||
|
import {
|
||||||
|
Table,
|
||||||
|
TableBody,
|
||||||
|
TableCaption,
|
||||||
|
TableCell,
|
||||||
|
TableHead,
|
||||||
|
TableHeader,
|
||||||
|
TableRow,
|
||||||
|
} from "@/components/ui/table";
|
||||||
|
|
||||||
|
interface VectorStoreDetailViewProps {
|
||||||
|
store: VectorStore | null;
|
||||||
|
files: VectorStoreFile[];
|
||||||
|
isLoadingStore: boolean;
|
||||||
|
isLoadingFiles: boolean;
|
||||||
|
errorStore: Error | null;
|
||||||
|
errorFiles: Error | null;
|
||||||
|
id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function VectorStoreDetailView({
|
||||||
|
store,
|
||||||
|
files,
|
||||||
|
isLoadingStore,
|
||||||
|
isLoadingFiles,
|
||||||
|
errorStore,
|
||||||
|
errorFiles,
|
||||||
|
id,
|
||||||
|
}: VectorStoreDetailViewProps) {
|
||||||
|
const title = "Vector Store Details";
|
||||||
|
|
||||||
|
if (errorStore) {
|
||||||
|
return <DetailErrorView title={title} id={id} error={errorStore} />;
|
||||||
|
}
|
||||||
|
if (isLoadingStore) {
|
||||||
|
return <DetailLoadingView title={title} />;
|
||||||
|
}
|
||||||
|
if (!store) {
|
||||||
|
return <DetailNotFoundView title={title} id={id} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
const mainContent = (
|
||||||
|
<>
|
||||||
|
<Card>
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle>Files</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>
|
||||||
|
{isLoadingFiles ? (
|
||||||
|
<Skeleton className="h-4 w-full" />
|
||||||
|
) : errorFiles ? (
|
||||||
|
<div className="text-destructive text-sm">
|
||||||
|
Error loading files: {errorFiles.message}
|
||||||
|
</div>
|
||||||
|
) : files.length > 0 ? (
|
||||||
|
<Table>
|
||||||
|
<TableCaption>Files in this vector store</TableCaption>
|
||||||
|
<TableHeader>
|
||||||
|
<TableRow>
|
||||||
|
<TableHead>ID</TableHead>
|
||||||
|
<TableHead>Status</TableHead>
|
||||||
|
<TableHead>Created</TableHead>
|
||||||
|
<TableHead>Usage Bytes</TableHead>
|
||||||
|
</TableRow>
|
||||||
|
</TableHeader>
|
||||||
|
<TableBody>
|
||||||
|
{files.map((file) => (
|
||||||
|
<TableRow key={file.id}>
|
||||||
|
<TableCell>{file.id}</TableCell>
|
||||||
|
<TableCell>{file.status}</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
{new Date(file.created_at * 1000).toLocaleString()}
|
||||||
|
</TableCell>
|
||||||
|
<TableCell>{file.usage_bytes}</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
))}
|
||||||
|
</TableBody>
|
||||||
|
</Table>
|
||||||
|
) : (
|
||||||
|
<p className="text-gray-500 italic text-sm">
|
||||||
|
No files in this vector store.
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const sidebar = (
|
||||||
|
<PropertiesCard>
|
||||||
|
<PropertyItem label="ID" value={store.id} />
|
||||||
|
<PropertyItem label="Name" value={store.name || ""} />
|
||||||
|
<PropertyItem
|
||||||
|
label="Created"
|
||||||
|
value={new Date(store.created_at * 1000).toLocaleString()}
|
||||||
|
/>
|
||||||
|
<PropertyItem label="Status" value={store.status} />
|
||||||
|
<PropertyItem label="Total Files" value={store.file_counts.total} />
|
||||||
|
<PropertyItem label="Usage Bytes" value={store.usage_bytes} />
|
||||||
|
<PropertyItem
|
||||||
|
label="Provider ID"
|
||||||
|
value={(store.metadata.provider_id as string) || ""}
|
||||||
|
/>
|
||||||
|
<PropertyItem
|
||||||
|
label="Provider DB ID"
|
||||||
|
value={(store.metadata.provider_vector_db_id as string) || ""}
|
||||||
|
/>
|
||||||
|
</PropertiesCard>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<DetailLayout title={title} mainContent={mainContent} sidebar={sidebar} />
|
||||||
|
);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue