responses table, responses details

# What does this PR do?


## Test Plan
# What does this PR do?


## Test Plan
This commit is contained in:
Eric Huang 2025-05-27 21:23:10 -07:00
parent 0b695538af
commit de53390c1c
34 changed files with 3282 additions and 380 deletions

View file

@ -2,9 +2,9 @@
import { useEffect, useState } from "react";
import { useParams } from "next/navigation";
import LlamaStackClient from "llama-stack-client";
import { ChatCompletion } from "@/lib/types";
import { ChatCompletionDetailView } from "@/components/chat-completions/chat-completion-detail";
import { client } from "@/lib/client";
export default function ChatCompletionDetailPage() {
const params = useParams();
@ -22,10 +22,6 @@ export default function ChatCompletionDetailPage() {
return;
}
const client = new LlamaStackClient({
baseURL: process.env.NEXT_PUBLIC_LLAMA_STACK_BASE_URL,
});
const fetchCompletionDetail = async () => {
setIsLoading(true);
setError(null);

View file

@ -1,45 +1,19 @@
"use client";
import React from "react";
import { usePathname, useParams } from "next/navigation";
import {
PageBreadcrumb,
BreadcrumbSegment,
} from "@/components/layout/page-breadcrumb";
import { truncateText } from "@/lib/truncate-text";
import LogsLayout from "@/components/layout/logs-layout";
export default function ChatCompletionsLayout({
children,
}: {
children: React.ReactNode;
}) {
const pathname = usePathname();
const params = useParams();
let segments: BreadcrumbSegment[] = [];
// Default for /logs/chat-completions
if (pathname === "/logs/chat-completions") {
segments = [{ label: "Chat Completions" }];
}
// For /logs/chat-completions/[id]
const idParam = params?.id;
if (idParam && typeof idParam === "string") {
segments = [
{ label: "Chat Completions", href: "/logs/chat-completions" },
{ label: `Details (${truncateText(idParam, 20)})` },
];
}
return (
<div className="container mx-auto p-4">
<>
{segments.length > 0 && (
<PageBreadcrumb segments={segments} className="mb-4" />
)}
{children}
</>
</div>
<LogsLayout
sectionLabel="Chat Completions"
basePath="/logs/chat-completions"
>
{children}
</LogsLayout>
);
}

View file

@ -1,9 +1,9 @@
"use client";
import { useEffect, useState } from "react";
import LlamaStackClient from "llama-stack-client";
import { ChatCompletion } from "@/lib/types";
import { ChatCompletionsTable } from "@/components/chat-completions/chat-completion-table";
import { ChatCompletionsTable } from "@/components/chat-completions/chat-completions-table";
import { client } from "@/lib/client";
export default function ChatCompletionsPage() {
const [completions, setCompletions] = useState<ChatCompletion[]>([]);
@ -11,9 +11,6 @@ export default function ChatCompletionsPage() {
const [error, setError] = useState<Error | null>(null);
useEffect(() => {
const client = new LlamaStackClient({
baseURL: process.env.NEXT_PUBLIC_LLAMA_STACK_BASE_URL,
});
const fetchCompletions = async () => {
setIsLoading(true);
setError(null);
@ -21,7 +18,7 @@ export default function ChatCompletionsPage() {
const response = await client.chat.completions.list();
const data = Array.isArray(response)
? response
: (response as any).data;
: (response as { data: ChatCompletion[] }).data;
if (Array.isArray(data)) {
setCompletions(data);
@ -46,7 +43,7 @@ export default function ChatCompletionsPage() {
return (
<ChatCompletionsTable
completions={completions}
data={completions}
isLoading={isLoading}
error={error}
/>