import { createBrowserRouter, Navigate, useParams } from 'react-router-dom' import { routerBasename } from './utils/basePath' import App from './App' import Home from './pages/Home' import Chat from './pages/Chat' import Models from './pages/Models' import Manage from './pages/Manage' import ImageGen from './pages/ImageGen' import VideoGen from './pages/VideoGen' import TTS from './pages/TTS' import Sound from './pages/Sound' import AudioTransform from './pages/AudioTransform' import Talk from './pages/Talk' import Backends from './pages/Backends' import Settings from './pages/Settings' import Traces from './pages/Traces' import P2P from './pages/P2P' import Agents from './pages/Agents' import AgentCreate from './pages/AgentCreate' import AgentChat from './pages/AgentChat' import AgentStatus from './pages/AgentStatus' import Collections from './pages/Collections' import CollectionDetails from './pages/CollectionDetails' import Skills from './pages/Skills' import SkillEdit from './pages/SkillEdit' import AgentJobs from './pages/AgentJobs' import AgentTaskDetails from './pages/AgentTaskDetails' import AgentJobDetails from './pages/AgentJobDetails' import ModelEditor from './pages/ModelEditor' // PipelineEditor removed — the Model Editor with templates handles all model types import ImportModel from './pages/ImportModel' import BackendLogs from './pages/BackendLogs' import Explorer from './pages/Explorer' import Login from './pages/Login' import FineTune from './pages/FineTune' import Quantize from './pages/Quantize' import Studio from './pages/Studio' import FaceRecognition from './pages/FaceRecognition' import VoiceRecognition from './pages/VoiceRecognition' import Nodes from './pages/Nodes' import NodeBackendLogs from './pages/NodeBackendLogs' import NotFound from './pages/NotFound' import Usage from './pages/Usage' import Users from './pages/Users' import Account from './pages/Account' import RequireAdmin from './components/RequireAdmin' import RequireAuth from './components/RequireAuth' import RequireFeature from './components/RequireFeature' function BrowseRedirect() { const { '*': splat } = useParams() return } function Admin({ children }) { return {children} } function Feature({ feature, children }) { return {children} } const appChildren = [ { index: true, element: }, { path: 'models', element: }, { path: 'chat', element: }, { path: 'chat/:model', element: }, { path: 'image', element: }, { path: 'image/:model', element: }, { path: 'video', element: }, { path: 'video/:model', element: }, { path: 'tts', element: }, { path: 'tts/:model', element: }, { path: 'sound', element: }, { path: 'sound/:model', element: }, { path: 'transform', element: }, { path: 'transform/:model', element: }, { path: 'studio', element: }, { path: 'talk', element: }, { path: 'face', element: }, { path: 'face/:model', element: }, { path: 'voice', element: }, { path: 'voice/:model', element: }, { path: 'usage', element: }, { path: 'account', element: }, { path: 'users', element: }, { path: 'manage', element: }, { path: 'backends', element: }, { path: 'settings', element: }, { path: 'traces', element: }, { path: 'backend-logs/:modelId', element: }, { path: 'p2p', element: }, { path: 'nodes', element: }, { path: 'node-backend-logs/:nodeId/:modelId', element: }, { path: 'agents', element: }, { path: 'agents/new', element: }, { path: 'agents/:name/edit', element: }, { path: 'agents/:name/chat', element: }, { path: 'agents/:name/status', element: }, { path: 'collections', element: }, { path: 'collections/:name', element: }, { path: 'skills', element: }, { path: 'skills/new', element: }, { path: 'skills/edit/:name', element: }, { path: 'agent-jobs', element: }, { path: 'agent-jobs/tasks/new', element: }, { path: 'agent-jobs/tasks/:id', element: }, { path: 'agent-jobs/tasks/:id/edit', element: }, { path: 'agent-jobs/jobs/:id', element: }, { path: 'fine-tune', element: }, { path: 'quantize', element: }, { path: 'model-editor', element: }, { path: 'model-editor/:name', element: }, { path: 'import-model', element: }, { path: '*', element: }, ] export const router = createBrowserRouter([ { path: '/login', element: , }, { path: '/invite/:code', element: , }, { path: '/explorer', element: , }, { path: '/app', element: , children: appChildren, }, // Backward compatibility: redirect /browse/* to /app/* { path: '/browse/*', element: , }, { path: '/', element: , }, ], { basename: routerBasename })