import { useEffect } from 'react'; import { TopBar } from './components/Layout/TopBar'; import { CollapsibleSidebar } from './components/Layout/CollapsibleSidebar'; import { SettingsLayout } from './components/Settings/SettingsLayout'; import { AgentLayout } from './components/Agent/AgentLayout'; import { PluginLayout } from './components/Plugin/PluginLayout'; import { LeftPanel } from './components/Chat/LeftPanel'; import { ChatPanel } from './components/Chat/ChatPanel'; import { RightPanel } from './components/Chat/RightPanel'; import { WorkflowListView } from './components/Chat/WorkflowListView'; import { NewWorkflowDialog } from './components/Chat/NewWorkflowDialog'; import { AuthPage } from './components/Auth/AuthPage'; import { useAppStore } from './store/useAppStore'; import { useChatStore } from './store/useChatStore'; function App() { const { isAuthenticated, setIsAuthenticated, mode, showSettings, workTab, agentTab, applyTheme, } = useAppStore(); const { loadSessions } = useChatStore(); // Initialize theme on mount useEffect(() => { applyTheme(); const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); const handler = () => applyTheme(); mediaQuery.addEventListener('change', handler); return () => mediaQuery.removeEventListener('change', handler); }, [applyTheme]); // Check auth and load sessions useEffect(() => { const token = localStorage.getItem('token'); if (token) { setIsAuthenticated(true); } }, [setIsAuthenticated]); useEffect(() => { if (isAuthenticated) { loadSessions(); } }, [isAuthenticated, loadSessions]); if (!isAuthenticated) { return setIsAuthenticated(true)} />; } return (
{showSettings ? ( ) : ( <>
{mode === 'work' && workTab === 'chat' && (
)} {mode === 'work' && workTab === 'workflow' && } {mode === 'agent' && agentTab === 'agents' && } {mode === 'agent' && agentTab === 'plugin' && }
)}
); } function WorkflowShell() { const { selectedWorkflow, setSelectedWorkflow } = useChatStore(); if (selectedWorkflow === 'new') { return ( <> setSelectedWorkflow(null)} onSuccess={(traceId: string) => setSelectedWorkflow(traceId)} /> ); } if (selectedWorkflow) { return ( <> ); } return ; } export default App;