vault-os/dashboard/src/App.tsx
Harald Hoyer f820a72b04 Initial implementation of vault-os
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>
2026-03-03 01:21:17 +01:00

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>
);
}