import React, { useState } from "react"; import { getProviderLogoAndName } from "../provider_info_helpers"; interface VectorStoreContent { text: string; type: string; } interface VectorStoreResult { score: number; content: VectorStoreContent[]; } interface VectorStoreSearchResponse { data: VectorStoreResult[]; search_query: string; } interface VectorStoreRequestMetadata { query: string; end_time: number; start_time: number; vector_store_id: string; custom_llm_provider: string; vector_store_search_response: VectorStoreSearchResponse; } interface VectorStoreViewerProps { data: VectorStoreRequestMetadata[]; } export function VectorStoreViewer({ data }: VectorStoreViewerProps) { const [sectionExpanded, setSectionExpanded] = useState(true); const [expandedResults, setExpandedResults] = useState>({}); if (!data || data.length === 0) { return null; } const formatTime = (timestamp: number): string => { const date = new Date(timestamp * 1000); return date.toLocaleString(); }; const calculateDuration = (start: number, end: number): string => { const duration = (end - start) * 1000; // convert to milliseconds return `${duration.toFixed(2)}ms`; }; const toggleResult = (index: number, resultIndex: number) => { const key = `${index}-${resultIndex}`; setExpandedResults(prev => ({ ...prev, [key]: !prev[key] })); }; return (
setSectionExpanded(!sectionExpanded)} >

Vector Store Requests

{sectionExpanded ? 'Click to collapse' : 'Click to expand'}
{sectionExpanded && (
{data.map((request, index) => (
Query: {request.query}
Vector Store ID: {request.vector_store_id}
Provider: {(() => { const { logo, displayName } = getProviderLogoAndName(request.custom_llm_provider); return ( <> {logo && ( {`${displayName} )} {displayName} ); })()}
Start Time: {formatTime(request.start_time)}
End Time: {formatTime(request.end_time)}
Duration: {calculateDuration(request.start_time, request.end_time)}

Search Results

{request.vector_store_search_response.data.map((result, resultIndex) => { const isExpanded = expandedResults[`${index}-${resultIndex}`] || false; return (
toggleResult(index, resultIndex)} >
Result {resultIndex + 1} Score: {result.score.toFixed(4)}
{isExpanded && (
{result.content.map((content, contentIndex) => (
{content.type}
                                {content.text}
                              
))}
)}
); })}
))}
)}
); }