blob: 711b076247016b9aa52ee5a23b6db71af44b721e [file] [log] [blame]
giod0026612025-05-08 13:00:36 +00001import { ReactFlowProvider } from "@xyflow/react";
2import "./App.css";
gio678746b2025-07-06 14:45:27 +00003import { Build } from "./Build";
giod0026612025-05-08 13:00:36 +00004import { 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";
giocc5ce582025-06-25 07:45:21 +040010import { ChatManager } from "./components/ChatManager";
11import { useAgents } from "./lib/state";
12import { Bot } from "lucide-react";
gio5f2f1002025-03-20 18:38:48 +040013
14export default function App() {
giod0026612025-05-08 13:00:36 +000015 return (
16 <ReactFlowProvider>
giobc47f9f2025-05-12 08:31:07 +000017 <div className="h-screen flex flex-col p-1">
gio880de162025-05-11 07:26:00 +000018 <AppImpl />
giocc5ce582025-06-25 07:45:21 +040019 <ChatManager />
gio880de162025-05-11 07:26:00 +000020 <Toaster />
21 </div>
giod0026612025-05-08 13:00:36 +000022 </ReactFlowProvider>
23 );
gio5f2f1002025-03-20 18:38:48 +040024}
25
26function AppImpl() {
giocc5ce582025-06-25 07:45:21 +040027 const agents = useAgents();
giod0026612025-05-08 13:00:36 +000028 return (
gio678746b2025-07-06 14:45:27 +000029 <Tabs defaultValue="build" className="flex-1 flex flex-col min-h-0">
gio8cadbc72025-05-16 07:51:02 +000030 <div className="flex justify-between border-b">
31 <TabsList className="!rounded-none">
gio678746b2025-07-06 14:45:27 +000032 <TabsTrigger value="build">Build</TabsTrigger>
gioa1efbad2025-05-21 07:16:45 +000033 <TabsTrigger value="monitoring">Monitoring</TabsTrigger>
gio880de162025-05-11 07:26:00 +000034 <TabsTrigger value="config">Config</TabsTrigger>
35 <TabsTrigger value="integrations">Integrations</TabsTrigger>
giocc5ce582025-06-25 07:45:21 +040036 {agents.map((a) => {
37 return (
38 <TabsTrigger
39 key={a.agentName}
40 value={`agent-${a.agentName}`}
41 className="flex flex-row items-center gap-1"
42 >
43 <Bot className="w-4 h-4" />
44 {a.agentName}
45 </TabsTrigger>
46 );
47 })}
gio880de162025-05-11 07:26:00 +000048 </TabsList>
gio8cadbc72025-05-16 07:51:02 +000049 <ProjectSelect className="w-fit min-w-[150px]" />
gio880de162025-05-11 07:26:00 +000050 </div>
gio678746b2025-07-06 14:45:27 +000051 <TabsContent value="build" className="!mt-0 flex-1 min-h-0">
52 <Build />
giod0026612025-05-08 13:00:36 +000053 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000054 <TabsContent value="config" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000055 <Config />
56 </TabsContent>
giobc47f9f2025-05-12 08:31:07 +000057 <TabsContent value="integrations" className="!mt-0 flex-1 min-h-0">
giod0026612025-05-08 13:00:36 +000058 <Integrations />
59 </TabsContent>
gioa1efbad2025-05-21 07:16:45 +000060 <TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0">
gio3a921b82025-05-10 07:36:09 +000061 <Logs />
62 </TabsContent>
giocc5ce582025-06-25 07:45:21 +040063 {agents.map((a) => (
64 <TabsContent value={`agent-${a.agentName}`} className="!mt-0 flex-1 min-h-0">
65 <iframe key={a.name} src={a.address} title={a.agentName} className="w-full h-full" />
66 </TabsContent>
67 ))}
giod0026612025-05-08 13:00:36 +000068 </Tabs>
69 );
gio5f2f1002025-03-20 18:38:48 +040070}