Complete implementation across all 13 phases: - vault-core: types, YAML frontmatter parsing, entity classification, filesystem ops, config, prompt composition, validation, search - vault-watch: filesystem watcher with daemon write filtering, event classification - vault-scheduler: cron engine, process executor, task runner with retry logic and concurrency limiting - vault-api: Axum REST API (15 route modules), WebSocket with broadcast, AI assistant proxy, validation, templates - Dashboard: React + TypeScript + Tailwind v4 with kanban, CodeMirror editor, dynamic view system, AI chat sidebar - Nix flake with dev shell and NixOS module - Graceful shutdown, inotify overflow recovery, tracing instrumentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { Layout } from './components/Layout';
|
|
import { TasksPage } from './pages/TasksPage';
|
|
import { AgentsPage } from './pages/AgentsPage';
|
|
import { CronsPage } from './pages/CronsPage';
|
|
import { AgentQueuePage } from './pages/AgentQueuePage';
|
|
import { KnowledgePage } from './pages/KnowledgePage';
|
|
import { EditorPage } from './pages/EditorPage';
|
|
import { ViewPage } from './pages/ViewPage';
|
|
import { CommandPalette } from './components/CommandPalette';
|
|
import { useWebSocket } from './hooks/useWebSocket';
|
|
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: { staleTime: 5000, retry: 1 },
|
|
},
|
|
});
|
|
|
|
function AppInner() {
|
|
useWebSocket();
|
|
|
|
return (
|
|
<BrowserRouter>
|
|
<CommandPalette />
|
|
<Routes>
|
|
<Route element={<Layout />}>
|
|
<Route path="/" element={<TasksPage />} />
|
|
<Route path="/agents" element={<AgentsPage />} />
|
|
<Route path="/crons" element={<CronsPage />} />
|
|
<Route path="/queue" element={<AgentQueuePage />} />
|
|
<Route path="/knowledge" element={<KnowledgePage />} />
|
|
<Route path="/editor" element={<EditorPage />} />
|
|
<Route path="/view/*" element={<ViewPage />} />
|
|
</Route>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
);
|
|
}
|
|
|
|
export default function App() {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<AppInner />
|
|
</QueryClientProvider>
|
|
);
|
|
}
|