Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 2 additions & 43 deletions examples/with-assistant-ui/app/assistant.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,6 @@
"use client";

import { Thread } from "@/components/assistant-ui/thread";
import { ThreadListSidebar } from "@/components/assistant-ui/threadlist-sidebar";
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import { Separator } from "@/components/ui/separator";
import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
import { AssistantUiTemplate } from "@/components/assistant-ui/assistant-ui-template";
import { AssistantRuntimeProvider } from "@assistant-ui/react";
import { AssistantChatTransport, useChatRuntime } from "@assistant-ui/react-ai-sdk";

Expand All @@ -24,37 +13,7 @@ export const Assistant = () => {

return (
<AssistantRuntimeProvider runtime={runtime}>
<SidebarProvider>
<div className="flex h-dvh w-full pr-0.5">
<ThreadListSidebar />
<SidebarInset>
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
<SidebarTrigger />
<Separator orientation="vertical" className="mr-2 h-4" />
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem className="hidden md:block">
<BreadcrumbLink
href="https://www.assistant-ui.com/docs/getting-started"
target="_blank"
rel="noopener noreferrer"
>
Build Your Own ChatGPT UX
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator className="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Starter Template</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</header>
<div className="flex-1 overflow-hidden">
<Thread />
</div>
</SidebarInset>
</div>
</SidebarProvider>
<AssistantUiTemplate />
</AssistantRuntimeProvider>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"use client";

import { Thread } from "@/components/assistant-ui/thread";
import { ThreadListSidebar } from "@/components/assistant-ui/threadlist-sidebar";
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import { Separator } from "@/components/ui/separator";
import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";

export const AssistantUiTemplate = () => {
return (
<SidebarProvider>
<div className="flex h-dvh w-full pr-0.5">
<ThreadListSidebar />
<SidebarInset>
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
<SidebarTrigger />
<Separator orientation="vertical" className="mr-2 h-4" />
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem className="hidden md:block">
<BreadcrumbLink
href="https://www.assistant-ui.com/docs/getting-started"
target="_blank"
rel="noopener noreferrer"
>
Build Your Own ChatGPT UX
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator className="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Starter Template</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</header>
<div className="flex-1 overflow-hidden">
<Thread />
</div>
</SidebarInset>
</div>
</SidebarProvider>
);
};
27 changes: 27 additions & 0 deletions lab/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# LAB

This folder contains:

- `platform/`: Exact static copy of the original platform frontend (no source modifications).
- `backend/`: Complete backend API interfaces based on `website/docs/api/api-reference.md`.

## Run Platform Copy

```bash
cd lab/platform
npx --yes serve -l 5180
```

## Run Backend Interfaces

```bash
cd lab/backend
npm install
npm start
```

Backend runs on `http://localhost:3141` and exposes:

- HTTP interfaces for Docs, Agents, Tools, Workflows, Memory, Observability, System
- WebSocket interfaces for `/ws`, `/ws/logs`, `/ws/observability`
- OpenAPI contract: `http://localhost:3141/openapi.json`
64 changes: 64 additions & 0 deletions lab/backend/openapi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"openapi": "3.1.0",
"info": {
"title": "VoltAgent Lab Backend Interfaces",
"version": "1.0.0",
"description": "Complete interface contracts mapped from website/docs/api/api-reference.md"
},
"servers": [
{ "url": "http://localhost:3141" }
],
"paths": {
"/": { "get": { "summary": "Landing page with links" } },
"/doc": { "get": { "summary": "OpenAPI 3.1 specification" } },
"/ui": { "get": { "summary": "Swagger UI interactive docs" } },
"/agents": { "get": { "summary": "List all registered agents" } },
"/agents/{id}": { "get": { "summary": "Get agent details" } },
"/agents/{id}/text": { "post": { "summary": "Generate text response" } },
"/agents/{id}/stream": { "post": { "summary": "Stream text response (SSE)" } },
"/agents/{id}/object": { "post": { "summary": "Generate structured object" } },
"/agents/{id}/stream-object": { "post": { "summary": "Stream object generation (SSE)" } },
"/agents/{id}/history": { "get": { "summary": "Get agent execution history" } },
"/tools": { "get": { "summary": "List all registered tools" } },
"/tools/{name}/execute": { "post": { "summary": "Execute a tool directly over HTTP" } },
"/workflows": { "get": { "summary": "List all workflows" } },
"/workflows/{id}": { "get": { "summary": "Get workflow details" } },
"/workflows/executions": { "get": { "summary": "List workflow executions" } },
"/workflows/{id}/execute": { "post": { "summary": "Execute workflow" } },
"/workflows/{id}/stream": { "post": { "summary": "Stream workflow execution (SSE)" } },
"/workflows/{id}/executions/{executionId}/suspend": { "post": { "summary": "Suspend execution" } },
"/workflows/{id}/executions/{executionId}/resume": { "post": { "summary": "Resume execution" } },
"/workflows/{id}/executions/{executionId}/state": { "get": { "summary": "Get execution state" } },
"/api/memory/conversations": {
"get": { "summary": "List conversations" },
"post": { "summary": "Create conversation" }
},
"/api/memory/conversations/{conversationId}": {
"get": { "summary": "Get conversation" },
"patch": { "summary": "Update conversation" },
"delete": { "summary": "Delete conversation" }
},
"/api/memory/conversations/{conversationId}/messages": { "get": { "summary": "List messages" } },
"/api/memory/conversations/{conversationId}/working-memory": {
"get": { "summary": "Get working memory" },
"post": { "summary": "Update working memory" }
},
"/api/memory/save-messages": { "post": { "summary": "Save messages" } },
"/api/memory/conversations/{conversationId}/clone": { "post": { "summary": "Clone conversation" } },
"/api/memory/messages/delete": { "post": { "summary": "Delete messages" } },
"/api/memory/search": { "get": { "summary": "Search memory" } },
"/api/logs": { "get": { "summary": "Query system logs (filters)" } },
"/observability/status": { "get": { "summary": "Observability status" } },
"/observability/traces": { "get": { "summary": "List traces" } },
"/observability/traces/{traceId}": { "get": { "summary": "Get trace by ID" } },
"/observability/spans/{spanId}": { "get": { "summary": "Get span by ID" } },
"/observability/traces/{traceId}/logs": { "get": { "summary": "Logs for a trace" } },
"/observability/spans/{spanId}/logs": { "get": { "summary": "Logs for a span" } },
"/observability/logs": { "get": { "summary": "Query logs (filters)" } },
"/setup-observability": { "post": { "summary": "Configure VoltAgent keys" } },
"/updates": {
"get": { "summary": "Check available updates" },
"post": { "summary": "Install updates" }
}
}
}
Loading
Loading