| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 1 | import { ReactFlowProvider } from "@xyflow/react"; |
| 2 | import "./App.css"; |
| gio | 678746b | 2025-07-06 14:45:27 +0000 | [diff] [blame] | 3 | import { Build } from "./Build"; |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 4 | import { Tabs, TabsTrigger, TabsContent, TabsList } from "./components/ui/tabs"; |
| 5 | import { Config } from "./Config"; |
| 6 | import { Integrations } from "./Integrations"; |
| 7 | import { Toaster } from "./components/ui/toaster"; |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 8 | import { ProjectSelect } from "./ProjectSelect"; |
| gio | a1efbad | 2025-05-21 07:16:45 +0000 | [diff] [blame] | 9 | import { Logs } from "./Monitoring"; |
| gio | cc5ce58 | 2025-06-25 07:45:21 +0400 | [diff] [blame] | 10 | import { ChatManager } from "./components/ChatManager"; |
| 11 | import { useAgents } from "./lib/state"; |
| 12 | import { Bot } from "lucide-react"; |
| gio | a5fde99 | 2025-07-07 08:18:19 +0000 | [diff] [blame^] | 13 | import { Preview } from "./components/preview"; |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 14 | |
| 15 | export default function App() { |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 16 | return ( |
| 17 | <ReactFlowProvider> |
| gio | bc47f9f | 2025-05-12 08:31:07 +0000 | [diff] [blame] | 18 | <div className="h-screen flex flex-col p-1"> |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 19 | <AppImpl /> |
| gio | cc5ce58 | 2025-06-25 07:45:21 +0400 | [diff] [blame] | 20 | <ChatManager /> |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 21 | <Toaster /> |
| 22 | </div> |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 23 | </ReactFlowProvider> |
| 24 | ); |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 25 | } |
| 26 | |
| 27 | function AppImpl() { |
| gio | cc5ce58 | 2025-06-25 07:45:21 +0400 | [diff] [blame] | 28 | const agents = useAgents(); |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 29 | return ( |
| gio | 678746b | 2025-07-06 14:45:27 +0000 | [diff] [blame] | 30 | <Tabs defaultValue="build" className="flex-1 flex flex-col min-h-0"> |
| gio | 8cadbc7 | 2025-05-16 07:51:02 +0000 | [diff] [blame] | 31 | <div className="flex justify-between border-b"> |
| 32 | <TabsList className="!rounded-none"> |
| gio | 678746b | 2025-07-06 14:45:27 +0000 | [diff] [blame] | 33 | <TabsTrigger value="build">Build</TabsTrigger> |
| gio | a5fde99 | 2025-07-07 08:18:19 +0000 | [diff] [blame^] | 34 | <TabsTrigger value="preview">Preview</TabsTrigger> |
| gio | a1efbad | 2025-05-21 07:16:45 +0000 | [diff] [blame] | 35 | <TabsTrigger value="monitoring">Monitoring</TabsTrigger> |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 36 | <TabsTrigger value="config">Config</TabsTrigger> |
| 37 | <TabsTrigger value="integrations">Integrations</TabsTrigger> |
| gio | cc5ce58 | 2025-06-25 07:45:21 +0400 | [diff] [blame] | 38 | {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 | })} |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 50 | </TabsList> |
| gio | 8cadbc7 | 2025-05-16 07:51:02 +0000 | [diff] [blame] | 51 | <ProjectSelect className="w-fit min-w-[150px]" /> |
| gio | 880de16 | 2025-05-11 07:26:00 +0000 | [diff] [blame] | 52 | </div> |
| gio | 678746b | 2025-07-06 14:45:27 +0000 | [diff] [blame] | 53 | <TabsContent value="build" className="!mt-0 flex-1 min-h-0"> |
| 54 | <Build /> |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 55 | </TabsContent> |
| gio | a5fde99 | 2025-07-07 08:18:19 +0000 | [diff] [blame^] | 56 | <TabsContent value="preview" className="!mt-0 flex-1 min-h-0"> |
| 57 | <Preview /> |
| 58 | </TabsContent> |
| gio | bc47f9f | 2025-05-12 08:31:07 +0000 | [diff] [blame] | 59 | <TabsContent value="config" className="!mt-0 flex-1 min-h-0"> |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 60 | <Config /> |
| 61 | </TabsContent> |
| gio | bc47f9f | 2025-05-12 08:31:07 +0000 | [diff] [blame] | 62 | <TabsContent value="integrations" className="!mt-0 flex-1 min-h-0"> |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 63 | <Integrations /> |
| 64 | </TabsContent> |
| gio | a1efbad | 2025-05-21 07:16:45 +0000 | [diff] [blame] | 65 | <TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0"> |
| gio | 3a921b8 | 2025-05-10 07:36:09 +0000 | [diff] [blame] | 66 | <Logs /> |
| 67 | </TabsContent> |
| gio | cc5ce58 | 2025-06-25 07:45:21 +0400 | [diff] [blame] | 68 | {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 | ))} |
| gio | d002661 | 2025-05-08 13:00:36 +0000 | [diff] [blame] | 73 | </Tabs> |
| 74 | ); |
| gio | 5f2f100 | 2025-03-20 18:38:48 +0400 | [diff] [blame] | 75 | } |