blob: a9fd3a685885a1fabc250b5d3052f082faabb90f [file] [log] [blame]
giod0026612025-05-08 13:00:36 +00001import { ReactFlowProvider } from "@xyflow/react";
2import "./App.css";
3import { CanvasBuilder } from "./Canvas";
4import { Tabs, TabsTrigger, TabsContent, TabsList } from "./components/ui/tabs";
5import { Config } from "./Config";
6import { Integrations } from "./Integrations";
7import { Toaster } from "./components/ui/toaster";
gio880de162025-05-11 07:26:00 +00008import { ProjectSelect } from "./ProjectSelect";
gioa1efbad2025-05-21 07:16:45 +00009import { Logs } from "./Monitoring";
gioda120432025-06-02 09:42:26 +000010import { Overview } from "./Overview";
giocc5ce582025-06-25 07:45:21 +040011import { ChatManager } from "./components/ChatManager";
12import { useAgents } from "./lib/state";
13import { Bot } from "lucide-react";
gio5f2f1002025-03-20 18:38:48 +040014
15export default function App() {
giod0026612025-05-08 13:00:36 +000016 return (
17 <ReactFlowProvider>
giobc47f9f2025-05-12 08:31:07 +000018 <div className="h-screen flex flex-col p-1">
gio880de162025-05-11 07:26:00 +000019 <AppImpl />
giocc5ce582025-06-25 07:45:21 +040020 <ChatManager />
gio880de162025-05-11 07:26:00 +000021 <Toaster />
22 </div>
giod0026612025-05-08 13:00:36 +000023 </ReactFlowProvider>
24 );
gio5f2f1002025-03-20 18:38:48 +040025}
26
27function AppImpl() {
giocc5ce582025-06-25 07:45:21 +040028 const agents = useAgents();
giod0026612025-05-08 13:00:36 +000029 return (
gioda120432025-06-02 09:42:26 +000030 <Tabs defaultValue="overview" className="flex-1 flex flex-col min-h-0">
gio8cadbc72025-05-16 07:51:02 +000031 <div className="flex justify-between border-b">
32 <TabsList className="!rounded-none">
gioda120432025-06-02 09:42:26 +000033 <TabsTrigger value="overview">Overview</TabsTrigger>
gio880de162025-05-11 07:26:00 +000034 <TabsTrigger value="canvas">Canvas</TabsTrigger>
gioa1efbad2025-05-21 07:16:45 +000035 <TabsTrigger value="monitoring">Monitoring</TabsTrigger>
gio880de162025-05-11 07:26:00 +000036 <TabsTrigger value="config">Config</TabsTrigger>
37 <TabsTrigger value="integrations">Integrations</TabsTrigger>
giocc5ce582025-06-25 07:45:21 +040038 {agents.map((a) => {
39 return (
40 <TabsTrigger
41 key={a.agentName}
42 value={`agent-${a.agentName}`}
43 className="flex flex-row items-center gap-1"
44 >
45 <Bot className="w-4 h-4" />
46 {a.agentName}
47 </TabsTrigger>
48 );
49 })}
gio880de162025-05-11 07:26:00 +000050 </TabsList>
gio8cadbc72025-05-16 07:51:02 +000051 <ProjectSelect className="w-fit min-w-[150px]" />
gio880de162025-05-11 07:26:00 +000052 </div>
gioda120432025-06-02 09:42:26 +000053 <TabsContent value="overview" className="!mt-0 flex-1 min-h-0">
54 <Overview />
55 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000056 <TabsContent value="canvas" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000057 <CanvasBuilder />
58 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000059 <TabsContent value="config" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000060 <Config />
61 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000062 <TabsContent value="integrations" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000063 <Integrations />
64 </TabsContent>
gioa1efbad2025-05-21 07:16:45 +000065 <TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0">
gio3a921b82025-05-10 07:36:09 +000066 <Logs />
67 </TabsContent>
giocc5ce582025-06-25 07:45:21 +040068 {agents.map((a) => (
69 <TabsContent value={`agent-${a.agentName}`} className="!mt-0 flex-1 min-h-0">
70 <iframe key={a.name} src={a.address} title={a.agentName} className="w-full h-full" />
71 </TabsContent>
72 ))}
giod0026612025-05-08 13:00:36 +000073 </Tabs>
74 );
gio5f2f1002025-03-20 18:38:48 +040075}