import { useEffect, useState } from 'react';
import { Routes, Route, Navigate, useLocation, useNavigate } from 'react-router-dom';
import { Button, Drawer, Spin } from 'antd';
import { MenuOutlined, SearchOutlined } from '@ant-design/icons';
import Sidebar from './components/Sidebar';
import CommandPalette from './components/CommandPalette';
import AgentList from './pages/AgentList';
import AgentEditor from './pages/AgentEditor';
import ChatPage from './pages/ChatPage';
import LoginPage from './pages/LoginPage';
import MarketplacePage from './pages/MarketplacePage';
import PointsMallPage from './pages/PointsMallPage';
import TeamsPage from './pages/TeamsPage';
import PromptLibraryPage from './pages/PromptLibraryPage';
import StatsPage from './pages/StatsPage';
import SharedSessionPage from './pages/SharedSessionPage';
import WorkflowsPage from './pages/WorkflowsPage';
import { useAuth } from './store/auth';
import { AgentAPI } from './api';
function HomeRedirect() {
return ;
}
export default function App() {
const { user } = useAuth();
const location = useLocation();
const [paletteOpen, setPaletteOpen] = useState(false);
const [mobileNavOpen, setMobileNavOpen] = useState(false);
const [isMobile, setIsMobile] = useState(() => (typeof window === 'undefined' ? false : window.innerWidth < 768));
// 全局快捷键 Ctrl/⌘ + K
useEffect(() => {
if (!user) return;
const handler = (e: KeyboardEvent) => {
if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'k') {
e.preventDefault();
setPaletteOpen((v) => !v);
}
};
window.addEventListener('keydown', handler);
return () => window.removeEventListener('keydown', handler);
}, [user]);
useEffect(() => {
const onResize = () => setIsMobile(window.innerWidth < 768);
window.addEventListener('resize', onResize);
return () => window.removeEventListener('resize', onResize);
}, []);
const mainContent = (
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
);
return (
<>
{/* 公开分享会话页:跳过 AuthGuard */}
{location.pathname.startsWith('/shared/') ? (
} />
) : !user ? (
} />
} />
) : (
{/* 只有编辑器全屏显示,其他页面均保留侧边栏 */}
{!isMobile && (!location.pathname.startsWith('/agents/') || location.pathname.includes('/chat')) ? (
setPaletteOpen(true)} />
) : null}
{isMobile && (
} onClick={() => setMobileNavOpen(true)} />
Agent Studio
} onClick={() => setPaletteOpen(true)} />
)}
{mainContent}
setPaletteOpen(false)} />
{isMobile && (
setMobileNavOpen(false)}
width={280}
styles={{ body: { padding: 0 } }}
>
setPaletteOpen(true)} onNavigate={() => setMobileNavOpen(false)} />
)}
)}
>
);
}