Files
headquarter/apps/web/src/router.tsx
T
alex 51d93d9dc6 feat(FN-009): implement config and secrets management with runtime injection
- Add RuntimeInjectionService for scope-based config/secret resolution
- Mount configs as JSON files at /app/config/ with 0400 permissions
- Inject secrets as environment variables with uppercase keys
- Implement scope hierarchy: instance > project > user > global
- Create ConfigListPage and SecretListPage frontend components
- Mask secret values in API responses (never expose decrypted)
- Validate secrets exist before spawning containers
- Add comprehensive tests for runtime injection service
- Update documentation with config/secrets workflow
2026-05-15 16:44:26 +02:00

50 lines
2.0 KiB
TypeScript

import { createBrowserRouter } from 'react-router-dom'
import App from './App'
import RouteGuard from './components/RouteGuard'
import DashboardLayout from './components/DashboardLayout'
import LoginPage from './pages/LoginPage'
import CallbackPage from './pages/CallbackPage'
import DashboardPage from './pages/DashboardPage'
import ProjectListPage from './pages/ProjectListPage'
import ProjectDetailPage from './pages/ProjectDetailPage'
import ProjectFormPage from './pages/ProjectFormPage'
import ToolsPage from './pages/ToolsPage'
import ToolSpawnPage from './pages/ToolSpawnPage'
import ToolInstanceDetailPage from './pages/ToolInstanceDetailPage'
import SettingsPage from './pages/SettingsPage'
import RepositoriesPage from './pages/RepositoriesPage'
import ConfigListPage from './pages/ConfigListPage'
import SecretListPage from './pages/SecretListPage'
export const router = createBrowserRouter([
{
path: '/',
element: <App />,
children: [
{
element: (
<RouteGuard>
<DashboardLayout />
</RouteGuard>
),
children: [
{ path: '/', element: <DashboardPage /> },
{ path: '/projects', element: <ProjectListPage /> },
{ path: '/projects/new', element: <ProjectFormPage /> },
{ path: '/projects/:id', element: <ProjectDetailPage /> },
{ path: '/projects/:id/edit', element: <ProjectFormPage /> },
{ path: '/tools', element: <ToolsPage /> },
{ path: '/tools/spawn', element: <ToolSpawnPage /> },
{ path: '/projects/:projectId/instances/:instanceId', element: <ToolInstanceDetailPage /> },
{ path: '/settings', element: <SettingsPage /> },
{ path: '/repositories', element: <RepositoriesPage /> },
{ path: '/projects/:id/configs', element: <ConfigListPage /> },
{ path: '/projects/:id/secrets', element: <SecretListPage /> },
],
},
{ path: '/login', element: <LoginPage /> },
{ path: '/callback', element: <CallbackPage /> },
],
},
])