blob: a9fd3a685885a1fabc250b5d3052f082faabb90f [file] [log] [blame]
import { ReactFlowProvider } from "@xyflow/react";
import "./App.css";
import { CanvasBuilder } from "./Canvas";
import { Tabs, TabsTrigger, TabsContent, TabsList } from "./components/ui/tabs";
import { Config } from "./Config";
import { Integrations } from "./Integrations";
import { Toaster } from "./components/ui/toaster";
import { ProjectSelect } from "./ProjectSelect";
import { Logs } from "./Monitoring";
import { Overview } from "./Overview";
import { ChatManager } from "./components/ChatManager";
import { useAgents } from "./lib/state";
import { Bot } from "lucide-react";
export default function App() {
return (
<ReactFlowProvider>
<div className="h-screen flex flex-col p-1">
<AppImpl />
<ChatManager />
<Toaster />
</div>
</ReactFlowProvider>
);
}
function AppImpl() {
const agents = useAgents();
return (
<Tabs defaultValue="overview" className="flex-1 flex flex-col min-h-0">
<div className="flex justify-between border-b">
<TabsList className="!rounded-none">
<TabsTrigger value="overview">Overview</TabsTrigger>
<TabsTrigger value="canvas">Canvas</TabsTrigger>
<TabsTrigger value="monitoring">Monitoring</TabsTrigger>
<TabsTrigger value="config">Config</TabsTrigger>
<TabsTrigger value="integrations">Integrations</TabsTrigger>
{agents.map((a) => {
return (
<TabsTrigger
key={a.agentName}
value={`agent-${a.agentName}`}
className="flex flex-row items-center gap-1"
>
<Bot className="w-4 h-4" />
{a.agentName}
</TabsTrigger>
);
})}
</TabsList>
<ProjectSelect className="w-fit min-w-[150px]" />
</div>
<TabsContent value="overview" className="!mt-0 flex-1 min-h-0">
<Overview />
</TabsContent>
<TabsContent value="canvas" className="!mt-0 flex-1 min-h-0">
<CanvasBuilder />
</TabsContent>
<TabsContent value="config" className="!mt-0 flex-1 min-h-0">
<Config />
</TabsContent>
<TabsContent value="integrations" className="!mt-0 flex-1 min-h-0">
<Integrations />
</TabsContent>
<TabsContent value="monitoring" className="!mt-0 flex-1 min-h-0">
<Logs />
</TabsContent>
{agents.map((a) => (
<TabsContent value={`agent-${a.agentName}`} className="!mt-0 flex-1 min-h-0">
<iframe key={a.name} src={a.address} title={a.agentName} className="w-full h-full" />
</TabsContent>
))}
</Tabs>
);
}