genoma-evolution 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.brv/.obsidian/app.json +1 -0
- package/.brv/.obsidian/appearance.json +1 -0
- package/.brv/.obsidian/core-plugins.json +33 -0
- package/.brv/.obsidian/graph.json +22 -0
- package/.brv/.obsidian/workspace.json +195 -0
- package/.brv/Sin ti/314/201tulo 1.canvas" +1 -0
- package/.brv/Sin ti/314/201tulo 2.canvas" +1 -0
- package/.brv/Sin ti/314/201tulo.canvas" +1 -0
- package/.brv/_queue_status.json +1 -0
- package/.brv/config.json +5 -0
- package/.brv/context-tree/_index.md +60 -0
- package/.brv/context-tree/_manifest.json +165 -0
- package/.brv/context-tree/backend/_index.md +24 -0
- package/.brv/context-tree/backend/backend/_index.md +40 -0
- package/.brv/context-tree/backend/backend/init.abstract.md +0 -0
- package/.brv/context-tree/backend/backend/init.md +27 -0
- package/.brv/context-tree/backend/backend/init.overview.md +29 -0
- package/.brv/context-tree/backend/backend/job_tracker.abstract.md +1 -0
- package/.brv/context-tree/backend/backend/job_tracker.md +273 -0
- package/.brv/context-tree/backend/backend/job_tracker.overview.md +31 -0
- package/.brv/context-tree/backend/backend/main.abstract.md +0 -0
- package/.brv/context-tree/backend/backend/main.md +1292 -0
- package/.brv/context-tree/backend/backend/main.overview.md +30 -0
- package/.brv/context-tree/backend/backend/requirements.abstract.md +1 -0
- package/.brv/context-tree/backend/backend/requirements.md +37 -0
- package/.brv/context-tree/backend/backend/requirements.overview.md +28 -0
- package/.brv/context-tree/docs/_index.md +37 -0
- package/.brv/context-tree/docs/api/_index.md +54 -0
- package/.brv/context-tree/docs/api/context.md +11 -0
- package/.brv/context-tree/docs/api/hermes_api_openapi_specification.abstract.md +0 -0
- package/.brv/context-tree/docs/api/hermes_api_openapi_specification.md +468 -0
- package/.brv/context-tree/docs/api/hermes_api_openapi_specification.overview.md +44 -0
- package/.brv/context-tree/frontend/_index.md +48 -0
- package/.brv/context-tree/frontend/hermes_dashboard/_index.md +31 -0
- package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.abstract.md +0 -0
- package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.md +41 -0
- package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.overview.md +34 -0
- package/.brv/context-tree/frontend/src/_index.md +53 -0
- package/.brv/context-tree/frontend/src/components/_index.md +52 -0
- package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.abstract.md +0 -0
- package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.md +161 -0
- package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.overview.md +32 -0
- package/.brv/context-tree/frontend/src/context.md +10 -0
- package/.brv/context-tree/frontend/src/functioncallingpage.abstract.md +0 -0
- package/.brv/context-tree/frontend/src/functioncallingpage.md +34 -0
- package/.brv/context-tree/frontend/src/functioncallingpage.overview.md +26 -0
- package/.brv/context-tree/frontend/src/lib/_index.md +48 -0
- package/.brv/context-tree/frontend/src/lib/api_client_library.abstract.md +1 -0
- package/.brv/context-tree/frontend/src/lib/api_client_library.md +403 -0
- package/.brv/context-tree/frontend/src/lib/api_client_library.overview.md +69 -0
- package/.brv/context-tree/frontend/src/page.abstract.md +0 -0
- package/.brv/context-tree/frontend/src/page.md +103 -0
- package/.brv/context-tree/frontend/src/page.overview.md +7 -0
- package/.brv/context-tree/frontend/src/settingspage.abstract.md +0 -0
- package/.brv/context-tree/frontend/src/settingspage.md +124 -0
- package/.brv/context-tree/frontend/src/settingspage.overview.md +34 -0
- package/.brv/context-tree/frontend/src/sidebar.abstract.md +0 -0
- package/.brv/context-tree/frontend/src/sidebar.md +170 -0
- package/.brv/context-tree/frontend/src/sidebar.overview.md +25 -0
- package/.brv/context-tree/meta/_index.md +24 -0
- package/.brv/context-tree/meta/curation_context/_index.md +24 -0
- package/.brv/context-tree/meta/curation_context/empty_context.abstract.md +4 -0
- package/.brv/context-tree/meta/curation_context/empty_context.md +35 -0
- package/.brv/context-tree/meta/curation_context/empty_context.overview.md +20 -0
- package/.brv/dream-log/drm-1777341062653.json +33 -0
- package/.brv/dream-state.json +8 -0
- package/.brv/dream.lock +0 -0
- package/.brv/review-backups/docs/api/hermes_api_openapi_specification.md +468 -0
- package/.claude/settings.local.json +7 -0
- package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/app.json +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/appearance.json +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/core-plugins.json +33 -0
- package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/graph.json +22 -0
- package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/workspace.json +195 -0
- package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo 1.canvas" +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo 2.canvas" +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo.canvas" +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/_queue_status.json +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/config.json +5 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/_index.md +60 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/_manifest.json +165 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/_index.md +24 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/_index.md +40 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.md +27 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.overview.md +29 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.abstract.md +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.md +273 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.overview.md +31 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.md +1292 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.overview.md +30 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.abstract.md +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.md +37 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.overview.md +28 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/_index.md +37 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/_index.md +54 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/context.md +11 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.md +468 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.overview.md +44 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/_index.md +48 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/_index.md +31 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.md +41 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.overview.md +34 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/_index.md +53 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/_index.md +52 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.md +161 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.overview.md +32 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/context.md +10 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.md +34 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.overview.md +26 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/_index.md +48 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.abstract.md +1 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.md +403 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.overview.md +69 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.md +103 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.overview.md +7 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.md +124 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.overview.md +34 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.abstract.md +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.md +170 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.overview.md +25 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/_index.md +24 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/_index.md +24 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.abstract.md +4 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.md +35 -0
- package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.overview.md +20 -0
- package/.claude/worktrees/phase-2-mcp/.brv/dream-log/drm-1777341062653.json +33 -0
- package/.claude/worktrees/phase-2-mcp/.brv/dream-state.json +8 -0
- package/.claude/worktrees/phase-2-mcp/.brv/dream.lock +0 -0
- package/.claude/worktrees/phase-2-mcp/.brv/review-backups/docs/api/hermes_api_openapi_specification.md +468 -0
- package/.claude/worktrees/phase-2-mcp/.claude/settings.local.json +13 -0
- package/.claude/worktrees/phase-2-mcp/.kilocode/package-lock.json +378 -0
- package/.claude/worktrees/phase-2-mcp/.kilocode/package.json +5 -0
- package/.claude/worktrees/phase-2-mcp/AGENTS.md +5 -0
- package/.claude/worktrees/phase-2-mcp/CLAUDE.md +29 -0
- package/.claude/worktrees/phase-2-mcp/QA_AUDIT_PLAN.md +156 -0
- package/.claude/worktrees/phase-2-mcp/README.md +316 -0
- package/.claude/worktrees/phase-2-mcp/agent-agnostic-evolution-dashboard.md +405 -0
- package/.claude/worktrees/phase-2-mcp/backend/__init__.py +0 -0
- package/.claude/worktrees/phase-2-mcp/backend/collectors/__init__.py +0 -0
- package/.claude/worktrees/phase-2-mcp/backend/collectors/claude_code_collector.py +277 -0
- package/.claude/worktrees/phase-2-mcp/backend/collectors/hermes_collector.py +68 -0
- package/.claude/worktrees/phase-2-mcp/backend/curator.py +512 -0
- package/.claude/worktrees/phase-2-mcp/backend/eval/__init__.py +19 -0
- package/.claude/worktrees/phase-2-mcp/backend/eval/engine.py +116 -0
- package/.claude/worktrees/phase-2-mcp/backend/eval/scorers.py +201 -0
- package/.claude/worktrees/phase-2-mcp/backend/generate_dataset.py +86 -0
- package/.claude/worktrees/phase-2-mcp/backend/job_tracker.py +232 -0
- package/.claude/worktrees/phase-2-mcp/backend/main.py +1746 -0
- package/.claude/worktrees/phase-2-mcp/backend/mcp_server.py +250 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/__init__.py +24 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/cycle_orchestrator.py +270 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/delta_validator.py +191 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/dspy_compiler.py +315 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/gepa_strategist.py +213 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/models.py +260 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/skill_deployer.py +195 -0
- package/.claude/worktrees/phase-2-mcp/backend/promethean/trace_ingestion.py +142 -0
- package/.claude/worktrees/phase-2-mcp/backend/requirements.txt +6 -0
- package/.claude/worktrees/phase-2-mcp/backend/sdd_evolve.py +459 -0
- package/.claude/worktrees/phase-2-mcp/backend/skill_detector.py +227 -0
- package/.claude/worktrees/phase-2-mcp/backend/skill_registry.py +289 -0
- package/.claude/worktrees/phase-2-mcp/backend/storage/__init__.py +5 -0
- package/.claude/worktrees/phase-2-mcp/backend/storage/run_store.py +393 -0
- package/.claude/worktrees/phase-2-mcp/backend/storage/schema.sql +99 -0
- package/.claude/worktrees/phase-2-mcp/backend/validate_evolution.py +267 -0
- package/.claude/worktrees/phase-2-mcp/components.json +28 -0
- package/.claude/worktrees/phase-2-mcp/docs/api/hermes-api.openapi.yaml +438 -0
- package/.claude/worktrees/phase-2-mcp/docs/hero.svg +148 -0
- package/.claude/worktrees/phase-2-mcp/eslint.config.mjs +18 -0
- package/.claude/worktrees/phase-2-mcp/install.sh +245 -0
- package/.claude/worktrees/phase-2-mcp/next-env.d.ts +6 -0
- package/.claude/worktrees/phase-2-mcp/next.config.ts +32 -0
- package/.claude/worktrees/phase-2-mcp/package-lock.json +11936 -0
- package/.claude/worktrees/phase-2-mcp/package.json +41 -0
- package/.claude/worktrees/phase-2-mcp/pnpm-workspace.yaml +4 -0
- package/.claude/worktrees/phase-2-mcp/postcss.config.mjs +7 -0
- package/.claude/worktrees/phase-2-mcp/public/file.svg +1 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Bold.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Heavy.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Medium.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Regular.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Semibold.otf +0 -0
- package/.claude/worktrees/phase-2-mcp/public/globe.svg +1 -0
- package/.claude/worktrees/phase-2-mcp/public/next.svg +1 -0
- package/.claude/worktrees/phase-2-mcp/public/theme-preview.html +257 -0
- package/.claude/worktrees/phase-2-mcp/public/vercel.svg +1 -0
- package/.claude/worktrees/phase-2-mcp/public/window.svg +1 -0
- package/.claude/worktrees/phase-2-mcp/run.sh +26 -0
- package/.claude/worktrees/phase-2-mcp/skills-lock.json +10 -0
- package/.claude/worktrees/phase-2-mcp/specs/event-schema.md +223 -0
- package/.claude/worktrees/phase-2-mcp/specs/examples/run.jsonl +3 -0
- package/.claude/worktrees/phase-2-mcp/src/app/api/[...path]/route.ts +55 -0
- package/.claude/worktrees/phase-2-mcp/src/app/api/auth/token/route.ts +22 -0
- package/.claude/worktrees/phase-2-mcp/src/app/evolution/page.tsx +589 -0
- package/.claude/worktrees/phase-2-mcp/src/app/favicon.ico +0 -0
- package/.claude/worktrees/phase-2-mcp/src/app/globals.css +321 -0
- package/.claude/worktrees/phase-2-mcp/src/app/layout.tsx +63 -0
- package/.claude/worktrees/phase-2-mcp/src/app/page.tsx +70 -0
- package/.claude/worktrees/phase-2-mcp/src/app/skills/page.tsx +369 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ApiConfigCard.tsx +199 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.css +1 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.d.ts +1 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.jsx +1 -0
- package/.claude/worktrees/phase-2-mcp/src/components/CoreLoopToggle.tsx +111 -0
- package/.claude/worktrees/phase-2-mcp/src/components/EnvironmentStatus.tsx +176 -0
- package/.claude/worktrees/phase-2-mcp/src/components/EvolutionBackground.tsx +1 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ReactQueryProvider.tsx +24 -0
- package/.claude/worktrees/phase-2-mcp/src/components/Sidebar.tsx +247 -0
- package/.claude/worktrees/phase-2-mcp/src/components/SkillDiffViewer.tsx +154 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ThemeAwareBackground.tsx +67 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ThemeToggle.tsx +54 -0
- package/.claude/worktrees/phase-2-mcp/src/components/WelcomeHero.tsx +77 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/ClickSpark.tsx +116 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/CountUp.tsx +98 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/DarkSelect.tsx +95 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/DecryptedText.tsx +161 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/ElectricBorder.tsx +184 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/GlitchText.tsx +34 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/ShinyText.tsx +55 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/SpotlightCard.tsx +42 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/TextType.tsx +95 -0
- package/.claude/worktrees/phase-2-mcp/src/components/bits/index.ts +9 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/CuratorPage.tsx +632 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/DatasetPage.tsx +271 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/EvolutionPage.tsx +676 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/FunctionCallingPage.tsx +1 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/LogsPage.tsx +272 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/MetricsPage.tsx +246 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/OverviewPage.tsx +420 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/SettingsPage.tsx +88 -0
- package/.claude/worktrees/phase-2-mcp/src/components/pages/SkillStudioPage.tsx +376 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/animated-theme-toggler.tsx +97 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/button.tsx +67 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/card.tsx +103 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/input.tsx +19 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/separator.tsx +28 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/sheet.tsx +147 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/sidebar.tsx +702 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/skeleton.tsx +13 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/theme-toggle.tsx +272 -0
- package/.claude/worktrees/phase-2-mcp/src/components/ui/tooltip.tsx +57 -0
- package/.claude/worktrees/phase-2-mcp/src/hooks/use-mobile.ts +19 -0
- package/.claude/worktrees/phase-2-mcp/src/lib/api.ts +455 -0
- package/.claude/worktrees/phase-2-mcp/src/lib/queryClient.ts +12 -0
- package/.claude/worktrees/phase-2-mcp/src/lib/utils.ts +6 -0
- package/.claude/worktrees/phase-2-mcp/stitch/agent_dashboard/DESIGN_SPEC.md +521 -0
- package/.claude/worktrees/phase-2-mcp/stitch/agent_dashboard/prototype.html +676 -0
- package/.claude/worktrees/phase-2-mcp/stitch/curator_workspace/code.html +448 -0
- package/.claude/worktrees/phase-2-mcp/stitch/curator_workspace/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/datasets/code.html +479 -0
- package/.claude/worktrees/phase-2-mcp/stitch/datasets/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/evolution_history/code.html +461 -0
- package/.claude/worktrees/phase-2-mcp/stitch/evolution_history/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/hermes_dashboard/DESIGN.md +192 -0
- package/.claude/worktrees/phase-2-mcp/stitch/hermes_dashboard/DESIGN_SPEC.md +455 -0
- package/.claude/worktrees/phase-2-mcp/stitch/hermes_overview/code.html +399 -0
- package/.claude/worktrees/phase-2-mcp/stitch/hermes_overview/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/live_logs/code.html +324 -0
- package/.claude/worktrees/phase-2-mcp/stitch/live_logs/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/skill_hub/code.html +596 -0
- package/.claude/worktrees/phase-2-mcp/stitch/skill_hub/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/system_metrics/code.html +527 -0
- package/.claude/worktrees/phase-2-mcp/stitch/system_metrics/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/stitch/system_settings/code.html +257 -0
- package/.claude/worktrees/phase-2-mcp/stitch/system_settings/screen.png +0 -0
- package/.claude/worktrees/phase-2-mcp/test_dashboard.py +201 -0
- package/.claude/worktrees/phase-2-mcp/tests/collectors/__init__.py +0 -0
- package/.claude/worktrees/phase-2-mcp/tests/collectors/fixtures/sample_session.jsonl +7 -0
- package/.claude/worktrees/phase-2-mcp/tests/collectors/test_claude_code_collector.py +171 -0
- package/.claude/worktrees/phase-2-mcp/tests/collectors/test_hermes_collector.py +167 -0
- package/.claude/worktrees/phase-2-mcp/tests/eval/test_engine.py +234 -0
- package/.claude/worktrees/phase-2-mcp/tests/eval/test_scorers.py +249 -0
- package/.claude/worktrees/phase-2-mcp/tests/storage/__init__.py +0 -0
- package/.claude/worktrees/phase-2-mcp/tests/storage/test_run_store.py +359 -0
- package/.claude/worktrees/phase-2-mcp/tests/test_curator.py +559 -0
- package/.claude/worktrees/phase-2-mcp/tests/test_mcp_server.py +114 -0
- package/.claude/worktrees/phase-2-mcp/tsconfig.json +34 -0
- package/.env.example +72 -0
- package/.kilocode/package-lock.json +378 -0
- package/.kilocode/package.json +5 -0
- package/AGENTS.md +5 -0
- package/CLAUDE.md +29 -0
- package/QA_AUDIT_PLAN.md +156 -0
- package/README.md +355 -0
- package/agent-agnostic-evolution-dashboard.md +405 -0
- package/backend/__init__.py +0 -0
- package/backend/collectors/__init__.py +0 -0
- package/backend/collectors/claude_code_collector.py +277 -0
- package/backend/collectors/hermes_collector.py +68 -0
- package/backend/curator.py +512 -0
- package/backend/eval/__init__.py +19 -0
- package/backend/eval/engine.py +116 -0
- package/backend/eval/scorers.py +201 -0
- package/backend/generate_dataset.py +86 -0
- package/backend/job_tracker.py +232 -0
- package/backend/main.py +1746 -0
- package/backend/mcp_server.py +250 -0
- package/backend/promethean/__init__.py +24 -0
- package/backend/promethean/cycle_orchestrator.py +270 -0
- package/backend/promethean/delta_validator.py +191 -0
- package/backend/promethean/dspy_compiler.py +315 -0
- package/backend/promethean/gepa_strategist.py +213 -0
- package/backend/promethean/models.py +260 -0
- package/backend/promethean/skill_deployer.py +195 -0
- package/backend/promethean/trace_ingestion.py +142 -0
- package/backend/requirements.txt +6 -0
- package/backend/sdd_evolve.py +459 -0
- package/backend/skill_detector.py +227 -0
- package/backend/skill_registry.py +289 -0
- package/backend/storage/__init__.py +5 -0
- package/backend/storage/run_store.py +393 -0
- package/backend/storage/schema.sql +99 -0
- package/backend/validate_evolution.py +267 -0
- package/bin/genoma.js +250 -0
- package/components.json +28 -0
- package/docs/api/hermes-api.openapi.yaml +438 -0
- package/docs/hero.svg +148 -0
- package/eslint.config.mjs +18 -0
- package/install.sh +245 -0
- package/next-env.d.ts +6 -0
- package/next.config.ts +32 -0
- package/package.json +46 -0
- package/pnpm-workspace.yaml +4 -0
- package/postcss.config.mjs +7 -0
- package/public/file.svg +1 -0
- package/public/fonts/SF-Pro-Display-Bold.otf +0 -0
- package/public/fonts/SF-Pro-Display-Heavy.otf +0 -0
- package/public/fonts/SF-Pro-Display-Medium.otf +0 -0
- package/public/fonts/SF-Pro-Display-Regular.otf +0 -0
- package/public/fonts/SF-Pro-Display-Semibold.otf +0 -0
- package/public/fonts/SF-Pro-Text-Bold.otf +0 -0
- package/public/fonts/SF-Pro-Text-Heavy.otf +0 -0
- package/public/fonts/SF-Pro-Text-Medium.otf +0 -0
- package/public/fonts/SF-Pro-Text-Regular.otf +0 -0
- package/public/fonts/SF-Pro-Text-Semibold.otf +0 -0
- package/public/globe.svg +1 -0
- package/public/next.svg +1 -0
- package/public/theme-preview.html +257 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/run.sh +26 -0
- package/scripts/postinstall.js +50 -0
- package/skills-lock.json +10 -0
- package/specs/event-schema.md +223 -0
- package/specs/examples/run.jsonl +3 -0
- package/src/app/api/[...path]/route.ts +55 -0
- package/src/app/api/auth/token/route.ts +22 -0
- package/src/app/evolution/page.tsx +589 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +321 -0
- package/src/app/layout.tsx +63 -0
- package/src/app/page.tsx +70 -0
- package/src/app/skills/page.tsx +369 -0
- package/src/components/ApiConfigCard.tsx +199 -0
- package/src/components/ColorBends.css +1 -0
- package/src/components/ColorBends.d.ts +1 -0
- package/src/components/ColorBends.jsx +1 -0
- package/src/components/CoreLoopToggle.tsx +111 -0
- package/src/components/EnvironmentStatus.tsx +176 -0
- package/src/components/EvolutionBackground.tsx +1 -0
- package/src/components/ReactQueryProvider.tsx +24 -0
- package/src/components/Sidebar.tsx +247 -0
- package/src/components/SkillDiffViewer.tsx +154 -0
- package/src/components/ThemeAwareBackground.tsx +67 -0
- package/src/components/ThemeToggle.tsx +54 -0
- package/src/components/WelcomeHero.tsx +77 -0
- package/src/components/bits/ClickSpark.tsx +116 -0
- package/src/components/bits/CountUp.tsx +98 -0
- package/src/components/bits/DarkSelect.tsx +95 -0
- package/src/components/bits/DecryptedText.tsx +161 -0
- package/src/components/bits/ElectricBorder.tsx +184 -0
- package/src/components/bits/GlitchText.tsx +34 -0
- package/src/components/bits/ShinyText.tsx +55 -0
- package/src/components/bits/SpotlightCard.tsx +42 -0
- package/src/components/bits/TextType.tsx +95 -0
- package/src/components/bits/index.ts +9 -0
- package/src/components/pages/CuratorPage.tsx +632 -0
- package/src/components/pages/DatasetPage.tsx +271 -0
- package/src/components/pages/EvolutionPage.tsx +676 -0
- package/src/components/pages/FunctionCallingPage.tsx +1 -0
- package/src/components/pages/LogsPage.tsx +272 -0
- package/src/components/pages/MetricsPage.tsx +246 -0
- package/src/components/pages/OverviewPage.tsx +420 -0
- package/src/components/pages/SettingsPage.tsx +88 -0
- package/src/components/pages/SkillStudioPage.tsx +376 -0
- package/src/components/ui/animated-theme-toggler.tsx +97 -0
- package/src/components/ui/button.tsx +67 -0
- package/src/components/ui/card.tsx +103 -0
- package/src/components/ui/input.tsx +19 -0
- package/src/components/ui/separator.tsx +28 -0
- package/src/components/ui/sheet.tsx +147 -0
- package/src/components/ui/sidebar.tsx +702 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/theme-toggle.tsx +272 -0
- package/src/components/ui/tooltip.tsx +57 -0
- package/src/hooks/use-mobile.ts +19 -0
- package/src/lib/api.ts +455 -0
- package/src/lib/queryClient.ts +12 -0
- package/src/lib/utils.ts +6 -0
- package/stitch/agent_dashboard/DESIGN_SPEC.md +521 -0
- package/stitch/agent_dashboard/prototype.html +676 -0
- package/stitch/curator_workspace/code.html +448 -0
- package/stitch/curator_workspace/screen.png +0 -0
- package/stitch/datasets/code.html +479 -0
- package/stitch/datasets/screen.png +0 -0
- package/stitch/evolution_history/code.html +461 -0
- package/stitch/evolution_history/screen.png +0 -0
- package/stitch/hermes_dashboard/DESIGN.md +192 -0
- package/stitch/hermes_dashboard/DESIGN_SPEC.md +455 -0
- package/stitch/hermes_overview/code.html +399 -0
- package/stitch/hermes_overview/screen.png +0 -0
- package/stitch/live_logs/code.html +324 -0
- package/stitch/live_logs/screen.png +0 -0
- package/stitch/skill_hub/code.html +596 -0
- package/stitch/skill_hub/screen.png +0 -0
- package/stitch/system_metrics/code.html +527 -0
- package/stitch/system_metrics/screen.png +0 -0
- package/stitch/system_settings/code.html +257 -0
- package/stitch/system_settings/screen.png +0 -0
- package/test_dashboard.py +201 -0
- package/tests/collectors/__init__.py +0 -0
- package/tests/collectors/fixtures/sample_session.jsonl +7 -0
- package/tests/collectors/test_claude_code_collector.py +171 -0
- package/tests/collectors/test_hermes_collector.py +167 -0
- package/tests/eval/test_engine.py +234 -0
- package/tests/eval/test_scorers.py +249 -0
- package/tests/storage/__init__.py +0 -0
- package/tests/storage/test_run_store.py +359 -0
- package/tests/test_curator.py +559 -0
- package/tests/test_e2e_npm.py +621 -0
- package/tests/test_mcp_server.py +114 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html class="light" lang="en"><head>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
|
6
|
+
<title>Evolution Tracking - Hermes Control</title>
|
|
7
|
+
<!-- Google Fonts -->
|
|
8
|
+
<link href="https://fonts.googleapis.com" rel="preconnect"/>
|
|
9
|
+
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
|
|
10
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"/>
|
|
11
|
+
<!-- Material Symbols -->
|
|
12
|
+
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
|
13
|
+
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
|
14
|
+
<!-- Tailwind CSS -->
|
|
15
|
+
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
|
|
16
|
+
<!-- Tailwind Configuration -->
|
|
17
|
+
<script id="tailwind-config">
|
|
18
|
+
tailwind.config = {
|
|
19
|
+
darkMode: "class",
|
|
20
|
+
theme: {
|
|
21
|
+
extend: {
|
|
22
|
+
"colors": {
|
|
23
|
+
"error-container": "#ffdad6",
|
|
24
|
+
"on-primary": "#ffffff",
|
|
25
|
+
"secondary-fixed-dim": "#ffb59b",
|
|
26
|
+
"secondary-container": "#fe753f",
|
|
27
|
+
"on-background": "#1a1c1e",
|
|
28
|
+
"tertiary-fixed-dim": "#c8c6c5",
|
|
29
|
+
"secondary-fixed": "#ffdbcf",
|
|
30
|
+
"primary-container": "#002444",
|
|
31
|
+
"surface-container-lowest": "#ffffff",
|
|
32
|
+
"inverse-on-surface": "#f1f0f3",
|
|
33
|
+
"background": "#faf9fc",
|
|
34
|
+
"inverse-surface": "#2f3033",
|
|
35
|
+
"surface-container-highest": "#e3e2e5",
|
|
36
|
+
"error": "#ba1a1a",
|
|
37
|
+
"surface-container-high": "#e9e8eb",
|
|
38
|
+
"on-tertiary-fixed": "#1b1c1b",
|
|
39
|
+
"on-error-container": "#93000a",
|
|
40
|
+
"on-tertiary": "#ffffff",
|
|
41
|
+
"surface-dim": "#dad9dd",
|
|
42
|
+
"secondary": "#a93800",
|
|
43
|
+
"primary-fixed": "#d2e4ff",
|
|
44
|
+
"surface": "#faf9fc",
|
|
45
|
+
"on-secondary-container": "#631d00",
|
|
46
|
+
"on-primary-fixed-variant": "#2c486a",
|
|
47
|
+
"surface-container-low": "#f4f3f6",
|
|
48
|
+
"on-secondary-fixed": "#380d00",
|
|
49
|
+
"tertiary": "#0d0d0d",
|
|
50
|
+
"primary-fixed-dim": "#acc9f1",
|
|
51
|
+
"on-secondary-fixed-variant": "#812900",
|
|
52
|
+
"inverse-primary": "#acc9f1",
|
|
53
|
+
"surface-container": "#eeedf1",
|
|
54
|
+
"tertiary-container": "#232323",
|
|
55
|
+
"surface-tint": "#446083",
|
|
56
|
+
"on-secondary": "#ffffff",
|
|
57
|
+
"surface-bright": "#faf9fc",
|
|
58
|
+
"on-tertiary-container": "#8b8a89",
|
|
59
|
+
"tertiary-fixed": "#e4e2e1",
|
|
60
|
+
"outline": "#73777f",
|
|
61
|
+
"on-error": "#ffffff",
|
|
62
|
+
"on-surface-variant": "#43474e",
|
|
63
|
+
"outline-variant": "#c3c6cf",
|
|
64
|
+
"primary": "#000e20",
|
|
65
|
+
"on-surface": "#1a1c1e",
|
|
66
|
+
"on-primary-container": "#708cb2",
|
|
67
|
+
"on-tertiary-fixed-variant": "#474746",
|
|
68
|
+
"surface-variant": "#e3e2e5",
|
|
69
|
+
"on-primary-fixed": "#001c37"
|
|
70
|
+
},
|
|
71
|
+
"borderRadius": {
|
|
72
|
+
"DEFAULT": "0.125rem",
|
|
73
|
+
"lg": "0.25rem",
|
|
74
|
+
"xl": "0.5rem",
|
|
75
|
+
"full": "0.75rem"
|
|
76
|
+
},
|
|
77
|
+
"spacing": {
|
|
78
|
+
"component-gap": "8px",
|
|
79
|
+
"gutter": "16px",
|
|
80
|
+
"unit": "8px",
|
|
81
|
+
"container-padding": "24px",
|
|
82
|
+
"max-width": "1440px",
|
|
83
|
+
"stack-tight": "4px"
|
|
84
|
+
},
|
|
85
|
+
"fontFamily": {
|
|
86
|
+
"headline-md": ["Inter"],
|
|
87
|
+
"body-lg": ["Inter"],
|
|
88
|
+
"mono-label": ["JetBrains Mono"],
|
|
89
|
+
"label-caps": ["Inter"],
|
|
90
|
+
"headline-lg": ["Inter"],
|
|
91
|
+
"body-sm": ["Inter"],
|
|
92
|
+
"body-md": ["Inter"],
|
|
93
|
+
"mono-data": ["JetBrains Mono"],
|
|
94
|
+
"headline-sm": ["Inter"]
|
|
95
|
+
},
|
|
96
|
+
"fontSize": {
|
|
97
|
+
"headline-md": ["24px", {"lineHeight": "32px", "letterSpacing": "-0.01em", "fontWeight": "600"}],
|
|
98
|
+
"body-lg": ["16px", {"lineHeight": "24px", "fontWeight": "400"}],
|
|
99
|
+
"mono-label": ["13px", {"lineHeight": "16px", "letterSpacing": "0.02em", "fontWeight": "500"}],
|
|
100
|
+
"label-caps": ["11px", {"lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700"}],
|
|
101
|
+
"headline-lg": ["32px", {"lineHeight": "40px", "letterSpacing": "-0.02em", "fontWeight": "600"}],
|
|
102
|
+
"body-sm": ["12px", {"lineHeight": "16px", "fontWeight": "400"}],
|
|
103
|
+
"body-md": ["14px", {"lineHeight": "20px", "fontWeight": "400"}],
|
|
104
|
+
"mono-data": ["12px", {"lineHeight": "18px", "fontWeight": "400"}],
|
|
105
|
+
"headline-sm": ["20px", {"lineHeight": "28px", "fontWeight": "600"}]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
</script>
|
|
111
|
+
<style>
|
|
112
|
+
/* Minimal custom CSS for scrollbars to maintain technical feel */
|
|
113
|
+
::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
114
|
+
::-webkit-scrollbar-track { background: transparent; }
|
|
115
|
+
::-webkit-scrollbar-thumb { background: #c3c6cf; border-radius: 3px; }
|
|
116
|
+
::-webkit-scrollbar-thumb:hover { background: #73777f; }
|
|
117
|
+
|
|
118
|
+
/* Shimmer effect for loaders if needed */
|
|
119
|
+
@keyframes shimmer {
|
|
120
|
+
0% { background-position: -1000px 0; }
|
|
121
|
+
100% { background-position: 1000px 0; }
|
|
122
|
+
}
|
|
123
|
+
.animate-shimmer {
|
|
124
|
+
animation: shimmer 2s infinite linear;
|
|
125
|
+
background: linear-gradient(to right, #f4f3f6 4%, #e9e8eb 25%, #f4f3f6 36%);
|
|
126
|
+
background-size: 1000px 100%;
|
|
127
|
+
}
|
|
128
|
+
</style>
|
|
129
|
+
</head>
|
|
130
|
+
<body class="bg-background text-on-background h-screen w-screen overflow-hidden flex font-body-md text-body-md">
|
|
131
|
+
<!-- SideNavBar (Shared Component) -->
|
|
132
|
+
<aside class="hidden md:flex flex-col h-full py-container-padding gap-component-gap w-64 bg-surface-container-low border-r border-outline-variant/30 flex-shrink-0 z-40">
|
|
133
|
+
<!-- Header -->
|
|
134
|
+
<div class="px-container-padding mb-8">
|
|
135
|
+
<div class="flex items-center gap-3">
|
|
136
|
+
<div class="w-8 h-8 rounded bg-primary-container text-on-primary flex items-center justify-center">
|
|
137
|
+
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">terminal</span>
|
|
138
|
+
</div>
|
|
139
|
+
<div>
|
|
140
|
+
<h1 class="font-headline-sm text-headline-sm font-black text-primary">Hermes Control</h1>
|
|
141
|
+
<p class="font-mono-label text-mono-label text-on-surface-variant">v4.2.0-Alpha</p>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
<!-- Navigation -->
|
|
146
|
+
<nav class="flex-1 flex flex-col gap-1 px-2">
|
|
147
|
+
<!-- Overview -->
|
|
148
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
149
|
+
<span class="material-symbols-outlined text-[20px]">dashboard</span>
|
|
150
|
+
<span class="font-label-caps text-label-caps tracking-widest">Overview</span>
|
|
151
|
+
</a>
|
|
152
|
+
<!-- Skill Hub -->
|
|
153
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
154
|
+
<span class="material-symbols-outlined text-[20px]">extension</span>
|
|
155
|
+
<span class="font-label-caps text-label-caps tracking-widest">Skill Hub</span>
|
|
156
|
+
</a>
|
|
157
|
+
<!-- Evolution (ACTIVE) -->
|
|
158
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-primary border-r-4 border-secondary bg-surface-container-highest transition-all scale-98 duration-150" href="#">
|
|
159
|
+
<span class="material-symbols-outlined text-[20px]" style="font-variation-settings: 'FILL' 1;">auto_awesome</span>
|
|
160
|
+
<span class="font-label-caps text-label-caps tracking-widest">Evolution</span>
|
|
161
|
+
</a>
|
|
162
|
+
<!-- Datasets -->
|
|
163
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
164
|
+
<span class="material-symbols-outlined text-[20px]">database</span>
|
|
165
|
+
<span class="font-label-caps text-label-caps tracking-widest">Datasets</span>
|
|
166
|
+
</a>
|
|
167
|
+
<!-- Metrics -->
|
|
168
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
169
|
+
<span class="material-symbols-outlined text-[20px]">monitoring</span>
|
|
170
|
+
<span class="font-label-caps text-label-caps tracking-widest">Metrics</span>
|
|
171
|
+
</a>
|
|
172
|
+
<!-- Live Logs -->
|
|
173
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
174
|
+
<span class="material-symbols-outlined text-[20px]">terminal</span>
|
|
175
|
+
<span class="font-label-caps text-label-caps tracking-widest">Live Logs</span>
|
|
176
|
+
</a>
|
|
177
|
+
<!-- Curator -->
|
|
178
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
179
|
+
<span class="material-symbols-outlined text-[20px]">inventory_2</span>
|
|
180
|
+
<span class="font-label-caps text-label-caps tracking-widest">Curator</span>
|
|
181
|
+
</a>
|
|
182
|
+
<!-- Settings -->
|
|
183
|
+
<a class="flex items-center gap-3 px-4 py-2 rounded-lg text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all mt-auto" href="#">
|
|
184
|
+
<span class="material-symbols-outlined text-[20px]">settings</span>
|
|
185
|
+
<span class="font-label-caps text-label-caps tracking-widest">Settings</span>
|
|
186
|
+
</a>
|
|
187
|
+
</nav>
|
|
188
|
+
<!-- CTA -->
|
|
189
|
+
<div class="px-container-padding mt-4">
|
|
190
|
+
<button class="w-full flex items-center justify-center gap-2 py-2 px-4 border border-primary text-primary rounded font-label-caps text-label-caps hover:bg-surface-container transition-colors">
|
|
191
|
+
<span class="material-symbols-outlined text-[16px]">add</span>
|
|
192
|
+
New Experiment
|
|
193
|
+
</button>
|
|
194
|
+
</div>
|
|
195
|
+
</aside>
|
|
196
|
+
<!-- Main Content Wrapper -->
|
|
197
|
+
<div class="flex flex-col flex-1 min-w-0 h-full overflow-hidden">
|
|
198
|
+
<!-- TopAppBar (Shared Component) -->
|
|
199
|
+
<header class="flex justify-between items-center w-full px-gutter h-16 z-50 bg-surface border-b border-outline-variant/30 flex-shrink-0">
|
|
200
|
+
<!-- Left: Search/Brand -->
|
|
201
|
+
<div class="flex items-center gap-4">
|
|
202
|
+
<span class="font-headline-sm text-headline-sm font-bold tracking-tighter text-primary md:hidden">Hermes</span>
|
|
203
|
+
<div class="hidden md:flex items-center bg-surface-container-low border border-outline-variant/30 rounded px-3 py-1.5 w-64 focus-within:border-primary transition-colors">
|
|
204
|
+
<span class="material-symbols-outlined text-on-surface-variant text-[18px] mr-2">search</span>
|
|
205
|
+
<input class="bg-transparent border-none p-0 focus:ring-0 font-body-sm text-body-sm w-full outline-none text-on-surface placeholder-on-surface-variant/50" placeholder="Search experiments..." type="text"/>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
<!-- Right: Actions -->
|
|
209
|
+
<div class="flex items-center gap-4">
|
|
210
|
+
<div class="flex items-center gap-2 text-on-surface-variant text-body-sm font-body-sm px-3 py-1 rounded-full bg-surface-container-lowest border border-outline-variant/30">
|
|
211
|
+
<span class="material-symbols-outlined text-[16px] animate-spin">sync</span>
|
|
212
|
+
Syncing
|
|
213
|
+
</div>
|
|
214
|
+
<button class="p-2 text-on-surface-variant hover:bg-surface-container-high rounded-full transition-colors relative">
|
|
215
|
+
<span class="material-symbols-outlined">notifications</span>
|
|
216
|
+
<span class="absolute top-1.5 right-1.5 w-2 h-2 bg-secondary rounded-full"></span>
|
|
217
|
+
</button>
|
|
218
|
+
<div class="w-8 h-8 rounded-full bg-primary-container overflow-hidden border border-outline-variant/30">
|
|
219
|
+
<!-- Placeholder avatar using background color, no image needed -->
|
|
220
|
+
<div class="w-full h-full flex items-center justify-center text-on-primary font-label-caps text-label-caps">US</div>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</header>
|
|
224
|
+
<!-- Canvas (Page Content) -->
|
|
225
|
+
<main class="flex-1 overflow-y-auto bg-background p-container-padding">
|
|
226
|
+
<div class="max-w-[1440px] mx-auto h-full flex flex-col gap-container-padding">
|
|
227
|
+
<!-- Page Header & High-Level Stats -->
|
|
228
|
+
<div class="flex flex-col md:flex-row justify-between items-start md:items-end gap-4 shrink-0">
|
|
229
|
+
<div>
|
|
230
|
+
<h2 class="font-headline-md text-headline-md text-primary mb-1">Evolution Tracking</h2>
|
|
231
|
+
<p class="font-body-sm text-body-sm text-on-surface-variant">Historical performance delta and run analysis.</p>
|
|
232
|
+
</div>
|
|
233
|
+
<div class="flex gap-4">
|
|
234
|
+
<div class="bg-surface border border-outline-variant/30 rounded p-3 min-w-[120px]">
|
|
235
|
+
<p class="font-body-sm text-body-sm text-on-surface-variant mb-1">Total Runs</p>
|
|
236
|
+
<p class="font-mono-data text-mono-data text-primary text-lg">1,402</p>
|
|
237
|
+
</div>
|
|
238
|
+
<div class="bg-surface border border-outline-variant/30 rounded p-3 min-w-[120px]">
|
|
239
|
+
<p class="font-body-sm text-body-sm text-on-surface-variant mb-1">Success Rate</p>
|
|
240
|
+
<div class="flex items-center gap-2">
|
|
241
|
+
<p class="font-mono-data text-mono-data text-primary text-lg">94.2%</p>
|
|
242
|
+
<span class="material-symbols-outlined text-[16px] text-primary">trending_up</span>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
<div class="bg-surface border border-outline-variant/30 rounded p-3 min-w-[120px]">
|
|
246
|
+
<p class="font-body-sm text-body-sm text-on-surface-variant mb-1">Active Model</p>
|
|
247
|
+
<p class="font-mono-data text-mono-data text-primary text-lg">v4.2-rc</p>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
<!-- Bento Grid Layout for Main Content -->
|
|
252
|
+
<div class="grid grid-cols-1 lg:grid-cols-12 gap-gutter flex-1 min-h-[600px]">
|
|
253
|
+
<!-- Left Panel: Timeline & Status Rows -->
|
|
254
|
+
<div class="lg:col-span-4 flex flex-col gap-gutter h-full">
|
|
255
|
+
<div class="bg-surface border border-outline-variant/30 rounded-xl flex flex-col h-full overflow-hidden">
|
|
256
|
+
<div class="p-4 border-b border-outline-variant/30 bg-surface-container-lowest flex justify-between items-center shrink-0">
|
|
257
|
+
<h3 class="font-label-caps text-label-caps tracking-widest text-on-surface-variant">Evolution Timeline</h3>
|
|
258
|
+
<button class="text-primary hover:text-primary-container"><span class="material-symbols-outlined text-[18px]">filter_list</span></button>
|
|
259
|
+
</div>
|
|
260
|
+
<div class="p-0 overflow-y-auto flex-1">
|
|
261
|
+
<!-- Timeline Item: Selected / Success -->
|
|
262
|
+
<div class="relative flex border-b border-outline-variant/30 bg-surface-container-low cursor-pointer hover:bg-surface-container transition-colors">
|
|
263
|
+
<div class="w-12 flex flex-col items-center py-4 relative">
|
|
264
|
+
<div class="w-px h-full bg-outline-variant/50 absolute top-0"></div>
|
|
265
|
+
<div class="w-3 h-3 rounded-full bg-primary z-10 border-2 border-surface ring-2 ring-primary/20"></div>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="flex-1 py-4 pr-4">
|
|
268
|
+
<div class="flex justify-between items-start mb-1">
|
|
269
|
+
<span class="font-mono-label text-mono-label text-primary font-bold">EVO-902</span>
|
|
270
|
+
<span class="font-mono-data text-mono-data text-on-surface-variant text-[10px]">10m ago</span>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="flex items-center gap-2 mb-2">
|
|
273
|
+
<span class="material-symbols-outlined text-[14px] text-primary">check_circle</span>
|
|
274
|
+
<span class="font-body-sm text-body-sm text-primary">Optimization Complete</span>
|
|
275
|
+
</div>
|
|
276
|
+
<div class="flex gap-2">
|
|
277
|
+
<span class="px-1.5 py-0.5 rounded bg-surface-container border border-outline-variant/30 font-mono-data text-mono-data text-[10px] text-on-surface-variant">Latency: -15%</span>
|
|
278
|
+
<span class="px-1.5 py-0.5 rounded bg-surface-container border border-outline-variant/30 font-mono-data text-mono-data text-[10px] text-on-surface-variant">Acc: +2.1%</span>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
<!-- Timeline Item: Failed -->
|
|
283
|
+
<div class="relative flex border-b border-outline-variant/30 cursor-pointer hover:bg-surface-container transition-colors">
|
|
284
|
+
<div class="w-12 flex flex-col items-center py-4 relative">
|
|
285
|
+
<div class="w-px h-full bg-outline-variant/50 absolute top-0"></div>
|
|
286
|
+
<div class="w-2.5 h-2.5 rounded-full bg-error z-10 border-2 border-surface"></div>
|
|
287
|
+
</div>
|
|
288
|
+
<div class="flex-1 py-4 pr-4 opacity-80">
|
|
289
|
+
<div class="flex justify-between items-start mb-1">
|
|
290
|
+
<span class="font-mono-label text-mono-label text-on-surface">EVO-901</span>
|
|
291
|
+
<span class="font-mono-data text-mono-data text-on-surface-variant text-[10px]">2h ago</span>
|
|
292
|
+
</div>
|
|
293
|
+
<div class="flex items-center gap-2 mb-2">
|
|
294
|
+
<span class="material-symbols-outlined text-[14px] text-error">cancel</span>
|
|
295
|
+
<span class="font-body-sm text-body-sm text-error">OOM Error (GPU_0)</span>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
<!-- Timeline Item: Success -->
|
|
300
|
+
<div class="relative flex border-b border-outline-variant/30 cursor-pointer hover:bg-surface-container transition-colors">
|
|
301
|
+
<div class="w-12 flex flex-col items-center py-4 relative">
|
|
302
|
+
<div class="w-px h-full bg-outline-variant/50 absolute top-0"></div>
|
|
303
|
+
<div class="w-2.5 h-2.5 rounded-full bg-outline z-10 border-2 border-surface"></div>
|
|
304
|
+
</div>
|
|
305
|
+
<div class="flex-1 py-4 pr-4">
|
|
306
|
+
<div class="flex justify-between items-start mb-1">
|
|
307
|
+
<span class="font-mono-label text-mono-label text-on-surface">EVO-900</span>
|
|
308
|
+
<span class="font-mono-data text-mono-data text-on-surface-variant text-[10px]">Yesterday</span>
|
|
309
|
+
</div>
|
|
310
|
+
<div class="flex items-center gap-2 mb-2">
|
|
311
|
+
<span class="material-symbols-outlined text-[14px] text-primary">check_circle</span>
|
|
312
|
+
<span class="font-body-sm text-body-sm text-on-surface-variant">Baseline Weights Updated</span>
|
|
313
|
+
</div>
|
|
314
|
+
<div class="flex gap-2">
|
|
315
|
+
<span class="px-1.5 py-0.5 rounded bg-surface-container border border-outline-variant/30 font-mono-data text-mono-data text-[10px] text-on-surface-variant">Token/s: +5%</span>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
<!-- Timeline Item: Aborted -->
|
|
320
|
+
<div class="relative flex cursor-pointer hover:bg-surface-container transition-colors">
|
|
321
|
+
<div class="w-12 flex flex-col items-center py-4 relative">
|
|
322
|
+
<div class="w-px h-1/2 bg-outline-variant/50 absolute top-0"></div>
|
|
323
|
+
<div class="w-2.5 h-2.5 rounded-full bg-secondary z-10 border-2 border-surface"></div>
|
|
324
|
+
</div>
|
|
325
|
+
<div class="flex-1 py-4 pr-4 opacity-70">
|
|
326
|
+
<div class="flex justify-between items-start mb-1">
|
|
327
|
+
<span class="font-mono-label text-mono-label text-on-surface">EVO-899</span>
|
|
328
|
+
<span class="font-mono-data text-mono-data text-on-surface-variant text-[10px]">Yesterday</span>
|
|
329
|
+
</div>
|
|
330
|
+
<div class="flex items-center gap-2 mb-2">
|
|
331
|
+
<span class="material-symbols-outlined text-[14px] text-secondary">warning</span>
|
|
332
|
+
<span class="font-body-sm text-body-sm text-secondary">Manually Aborted</span>
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
<!-- Right Panel: Detail View (Comparison & Technical Data) -->
|
|
340
|
+
<div class="lg:col-span-8 flex flex-col gap-gutter h-full">
|
|
341
|
+
<div class="bg-surface border border-outline-variant/30 rounded-xl flex flex-col h-full overflow-hidden shadow-sm">
|
|
342
|
+
<!-- Detail Header -->
|
|
343
|
+
<div class="p-6 border-b border-outline-variant/30 bg-surface-container-lowest flex justify-between items-start shrink-0">
|
|
344
|
+
<div>
|
|
345
|
+
<div class="flex items-center gap-3 mb-2">
|
|
346
|
+
<h3 class="font-headline-sm text-headline-sm text-primary">Run Details: EVO-902</h3>
|
|
347
|
+
<span class="px-2 py-0.5 rounded-full bg-primary-container text-on-primary-container font-label-caps text-label-caps flex items-center gap-1">
|
|
348
|
+
<span class="material-symbols-outlined text-[14px]">check</span> SUCCESS
|
|
349
|
+
</span>
|
|
350
|
+
</div>
|
|
351
|
+
<p class="font-mono-data text-mono-data text-on-surface-variant">Initiated: 2023-10-27T14:32:00Z | Duration: 04h 12m 45s</p>
|
|
352
|
+
</div>
|
|
353
|
+
<div class="flex gap-2">
|
|
354
|
+
<button class="p-2 border border-outline-variant/30 rounded text-on-surface hover:bg-surface-container transition-colors" title="Export Data">
|
|
355
|
+
<span class="material-symbols-outlined text-[18px]">download</span>
|
|
356
|
+
</button>
|
|
357
|
+
<button class="p-2 border border-outline-variant/30 rounded text-on-surface hover:bg-surface-container transition-colors" title="View Graph">
|
|
358
|
+
<span class="material-symbols-outlined text-[18px]">area_chart</span>
|
|
359
|
+
</button>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
<div class="flex-1 overflow-y-auto p-6 flex flex-col gap-8">
|
|
363
|
+
<!-- Comparison View -->
|
|
364
|
+
<section>
|
|
365
|
+
<h4 class="font-label-caps text-label-caps tracking-widest text-on-surface-variant mb-4 border-b border-outline-variant/30 pb-2">Performance Delta (Before vs After)</h4>
|
|
366
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
367
|
+
<!-- Metric 1 -->
|
|
368
|
+
<div class="bg-surface-container-low border border-outline-variant/30 rounded p-4 flex flex-col gap-2">
|
|
369
|
+
<span class="font-body-sm text-body-sm text-on-surface-variant">Inference Latency (p99)</span>
|
|
370
|
+
<div class="flex items-center justify-between">
|
|
371
|
+
<span class="font-mono-data text-mono-data text-on-surface line-through opacity-60">450ms</span>
|
|
372
|
+
<span class="material-symbols-outlined text-outline-variant">arrow_right_alt</span>
|
|
373
|
+
<span class="font-mono-data text-mono-data text-primary text-lg">380ms</span>
|
|
374
|
+
<span class="font-mono-data text-mono-data text-primary bg-primary-fixed/20 px-1.5 rounded">-15.5%</span>
|
|
375
|
+
</div>
|
|
376
|
+
</div>
|
|
377
|
+
<!-- Metric 2 -->
|
|
378
|
+
<div class="bg-surface-container-low border border-outline-variant/30 rounded p-4 flex flex-col gap-2">
|
|
379
|
+
<span class="font-body-sm text-body-sm text-on-surface-variant">Throughput (Tokens/s)</span>
|
|
380
|
+
<div class="flex items-center justify-between">
|
|
381
|
+
<span class="font-mono-data text-mono-data text-on-surface opacity-60">1,240</span>
|
|
382
|
+
<span class="material-symbols-outlined text-outline-variant">arrow_right_alt</span>
|
|
383
|
+
<span class="font-mono-data text-mono-data text-primary text-lg">1,315</span>
|
|
384
|
+
<span class="font-mono-data text-mono-data text-primary bg-primary-fixed/20 px-1.5 rounded">+6.0%</span>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
<!-- Metric 3 -->
|
|
388
|
+
<div class="bg-surface-container-low border border-outline-variant/30 rounded p-4 flex flex-col gap-2">
|
|
389
|
+
<span class="font-body-sm text-body-sm text-on-surface-variant">Memory Footprint (VRAM)</span>
|
|
390
|
+
<div class="flex items-center justify-between">
|
|
391
|
+
<span class="font-mono-data text-mono-data text-on-surface line-through opacity-60">24.5GB</span>
|
|
392
|
+
<span class="material-symbols-outlined text-outline-variant">arrow_right_alt</span>
|
|
393
|
+
<span class="font-mono-data text-mono-data text-primary text-lg">21.8GB</span>
|
|
394
|
+
<span class="font-mono-data text-mono-data text-primary bg-primary-fixed/20 px-1.5 rounded">-11.0%</span>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
<!-- Metric 4 -->
|
|
398
|
+
<div class="bg-surface-container-low border border-outline-variant/30 rounded p-4 flex flex-col gap-2">
|
|
399
|
+
<span class="font-body-sm text-body-sm text-on-surface-variant">Task Accuracy (Eval-Set)</span>
|
|
400
|
+
<div class="flex items-center justify-between">
|
|
401
|
+
<span class="font-mono-data text-mono-data text-on-surface opacity-60">89.4%</span>
|
|
402
|
+
<span class="material-symbols-outlined text-outline-variant">arrow_right_alt</span>
|
|
403
|
+
<span class="font-mono-data text-mono-data text-primary text-lg">91.5%</span>
|
|
404
|
+
<span class="font-mono-data text-mono-data text-primary bg-primary-fixed/20 px-1.5 rounded">+2.1%</span>
|
|
405
|
+
</div>
|
|
406
|
+
</div>
|
|
407
|
+
</div>
|
|
408
|
+
</section>
|
|
409
|
+
<!-- Parameters Block -->
|
|
410
|
+
<section>
|
|
411
|
+
<h4 class="font-label-caps text-label-caps tracking-widest text-on-surface-variant mb-4 border-b border-outline-variant/30 pb-2">Evolution Parameters</h4>
|
|
412
|
+
<div class="bg-surface-container-lowest border border-outline-variant/30 rounded overflow-hidden">
|
|
413
|
+
<table class="w-full text-left border-collapse">
|
|
414
|
+
<tbody>
|
|
415
|
+
<tr class="border-b border-outline-variant/30 last:border-0">
|
|
416
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface-variant w-1/3">optimizer_type</td>
|
|
417
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface">AdamW_8bit</td>
|
|
418
|
+
</tr>
|
|
419
|
+
<tr class="border-b border-outline-variant/30 last:border-0 bg-surface-container-low/50">
|
|
420
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface-variant">learning_rate_base</td>
|
|
421
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface">2e-5 <span class="text-secondary">(Modified from 5e-5)</span></td>
|
|
422
|
+
</tr>
|
|
423
|
+
<tr class="border-b border-outline-variant/30 last:border-0">
|
|
424
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface-variant">pruning_threshold</td>
|
|
425
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface">0.15</td>
|
|
426
|
+
</tr>
|
|
427
|
+
<tr class="border-b border-outline-variant/30 last:border-0 bg-surface-container-low/50">
|
|
428
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface-variant">quantization_target</td>
|
|
429
|
+
<td class="py-2 px-4 font-mono-data text-mono-data text-on-surface">INT4_G128</td>
|
|
430
|
+
</tr>
|
|
431
|
+
</tbody>
|
|
432
|
+
</table>
|
|
433
|
+
</div>
|
|
434
|
+
</section>
|
|
435
|
+
<!-- Terminal / Change Log -->
|
|
436
|
+
<section class="flex-1 flex flex-col">
|
|
437
|
+
<h4 class="font-label-caps text-label-caps tracking-widest text-on-surface-variant mb-4 border-b border-outline-variant/30 pb-2">Execution Log (Tail)</h4>
|
|
438
|
+
<div class="bg-[#0a0a0a] rounded p-4 flex-1 overflow-y-auto font-mono-data text-mono-data text-[#a3a3a3] border border-outline/20 min-h-[150px]">
|
|
439
|
+
<div class="mb-1"><span class="text-[#4ade80]">[INFO]</span> 14:32:00: Initializing distributed environment...</div>
|
|
440
|
+
<div class="mb-1"><span class="text-[#4ade80]">[INFO]</span> 14:32:05: Loading baseline model weights from /mnt/models/v4.1-stable</div>
|
|
441
|
+
<div class="mb-1"><span class="text-[#60a5fa]">[PROCESS]</span> 14:35:12: Applying layer-wise pruning (threshold: 0.15)...</div>
|
|
442
|
+
<div class="mb-1"><span class="text-[#60a5fa]">[PROCESS]</span> 15:10:44: Commencing INT4 quantization pass...</div>
|
|
443
|
+
<div class="mb-1"><span class="text-[#facc15]">[WARN]</span> 16:22:10: High VRAM utilization detected on Node 3 (98%). Throttling batch size.</div>
|
|
444
|
+
<div class="mb-1"><span class="text-[#60a5fa]">[PROCESS]</span> 17:45:00: Running post-evolution evaluation suite...</div>
|
|
445
|
+
<div class="mb-1"><span class="text-[#4ade80]">[SUCCESS]</span> 18:44:45: Evolution target achieved. Saving artifacts to /mnt/artifacts/EVO-902</div>
|
|
446
|
+
<div class="mt-2 text-[#fff]">root@hermes-control:~# _</div>
|
|
447
|
+
</div>
|
|
448
|
+
</section>
|
|
449
|
+
</div>
|
|
450
|
+
<!-- Detail Footer / Actions -->
|
|
451
|
+
<div class="p-4 border-t border-outline-variant/30 bg-surface-container-lowest flex justify-end gap-3 shrink-0">
|
|
452
|
+
<button class="px-4 py-2 border border-outline-variant/30 rounded font-label-caps text-label-caps text-on-surface hover:bg-surface-container transition-colors">Revert Run</button>
|
|
453
|
+
<button class="px-4 py-2 bg-primary text-on-primary rounded font-label-caps text-label-caps hover:bg-primary/90 transition-colors shadow-sm">Deploy to Staging</button>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
</div>
|
|
457
|
+
</div>
|
|
458
|
+
</div>
|
|
459
|
+
</main>
|
|
460
|
+
</div>
|
|
461
|
+
</body></html>
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Hermes Dashboard
|
|
3
|
+
colors:
|
|
4
|
+
surface: '#faf9fc'
|
|
5
|
+
surface-dim: '#dad9dd'
|
|
6
|
+
surface-bright: '#faf9fc'
|
|
7
|
+
surface-container-lowest: '#ffffff'
|
|
8
|
+
surface-container-low: '#f4f3f6'
|
|
9
|
+
surface-container: '#eeedf1'
|
|
10
|
+
surface-container-high: '#e9e8eb'
|
|
11
|
+
surface-container-highest: '#e3e2e5'
|
|
12
|
+
on-surface: '#1a1c1e'
|
|
13
|
+
on-surface-variant: '#43474e'
|
|
14
|
+
inverse-surface: '#2f3033'
|
|
15
|
+
inverse-on-surface: '#f1f0f3'
|
|
16
|
+
outline: '#73777f'
|
|
17
|
+
outline-variant: '#c3c6cf'
|
|
18
|
+
surface-tint: '#446083'
|
|
19
|
+
primary: '#000e20'
|
|
20
|
+
on-primary: '#ffffff'
|
|
21
|
+
primary-container: '#002444'
|
|
22
|
+
on-primary-container: '#708cb2'
|
|
23
|
+
inverse-primary: '#acc9f1'
|
|
24
|
+
secondary: '#a93800'
|
|
25
|
+
on-secondary: '#ffffff'
|
|
26
|
+
secondary-container: '#fe753f'
|
|
27
|
+
on-secondary-container: '#631d00'
|
|
28
|
+
tertiary: '#0d0d0d'
|
|
29
|
+
on-tertiary: '#ffffff'
|
|
30
|
+
tertiary-container: '#232323'
|
|
31
|
+
on-tertiary-container: '#8b8a89'
|
|
32
|
+
error: '#ba1a1a'
|
|
33
|
+
on-error: '#ffffff'
|
|
34
|
+
error-container: '#ffdad6'
|
|
35
|
+
on-error-container: '#93000a'
|
|
36
|
+
primary-fixed: '#d2e4ff'
|
|
37
|
+
primary-fixed-dim: '#acc9f1'
|
|
38
|
+
on-primary-fixed: '#001c37'
|
|
39
|
+
on-primary-fixed-variant: '#2c486a'
|
|
40
|
+
secondary-fixed: '#ffdbcf'
|
|
41
|
+
secondary-fixed-dim: '#ffb59b'
|
|
42
|
+
on-secondary-fixed: '#380d00'
|
|
43
|
+
on-secondary-fixed-variant: '#812900'
|
|
44
|
+
tertiary-fixed: '#e4e2e1'
|
|
45
|
+
tertiary-fixed-dim: '#c8c6c5'
|
|
46
|
+
on-tertiary-fixed: '#1b1c1b'
|
|
47
|
+
on-tertiary-fixed-variant: '#474746'
|
|
48
|
+
background: '#faf9fc'
|
|
49
|
+
on-background: '#1a1c1e'
|
|
50
|
+
surface-variant: '#e3e2e5'
|
|
51
|
+
typography:
|
|
52
|
+
headline-lg:
|
|
53
|
+
fontFamily: Inter
|
|
54
|
+
fontSize: 32px
|
|
55
|
+
fontWeight: '600'
|
|
56
|
+
lineHeight: 40px
|
|
57
|
+
letterSpacing: -0.02em
|
|
58
|
+
headline-md:
|
|
59
|
+
fontFamily: Inter
|
|
60
|
+
fontSize: 24px
|
|
61
|
+
fontWeight: '600'
|
|
62
|
+
lineHeight: 32px
|
|
63
|
+
letterSpacing: -0.01em
|
|
64
|
+
headline-sm:
|
|
65
|
+
fontFamily: Inter
|
|
66
|
+
fontSize: 20px
|
|
67
|
+
fontWeight: '600'
|
|
68
|
+
lineHeight: 28px
|
|
69
|
+
body-lg:
|
|
70
|
+
fontFamily: Inter
|
|
71
|
+
fontSize: 16px
|
|
72
|
+
fontWeight: '400'
|
|
73
|
+
lineHeight: 24px
|
|
74
|
+
body-md:
|
|
75
|
+
fontFamily: Inter
|
|
76
|
+
fontSize: 14px
|
|
77
|
+
fontWeight: '400'
|
|
78
|
+
lineHeight: 20px
|
|
79
|
+
body-sm:
|
|
80
|
+
fontFamily: Inter
|
|
81
|
+
fontSize: 12px
|
|
82
|
+
fontWeight: '400'
|
|
83
|
+
lineHeight: 16px
|
|
84
|
+
mono-label:
|
|
85
|
+
fontFamily: JetBrains Mono
|
|
86
|
+
fontSize: 13px
|
|
87
|
+
fontWeight: '500'
|
|
88
|
+
lineHeight: 16px
|
|
89
|
+
letterSpacing: 0.02em
|
|
90
|
+
mono-data:
|
|
91
|
+
fontFamily: JetBrains Mono
|
|
92
|
+
fontSize: 12px
|
|
93
|
+
fontWeight: '400'
|
|
94
|
+
lineHeight: 18px
|
|
95
|
+
label-caps:
|
|
96
|
+
fontFamily: Inter
|
|
97
|
+
fontSize: 11px
|
|
98
|
+
fontWeight: '700'
|
|
99
|
+
lineHeight: 16px
|
|
100
|
+
letterSpacing: 0.05em
|
|
101
|
+
rounded:
|
|
102
|
+
sm: 0.125rem
|
|
103
|
+
DEFAULT: 0.25rem
|
|
104
|
+
md: 0.375rem
|
|
105
|
+
lg: 0.5rem
|
|
106
|
+
xl: 0.75rem
|
|
107
|
+
full: 9999px
|
|
108
|
+
spacing:
|
|
109
|
+
unit: 8px
|
|
110
|
+
container-padding: 24px
|
|
111
|
+
gutter: 16px
|
|
112
|
+
component-gap: 8px
|
|
113
|
+
stack-tight: 4px
|
|
114
|
+
max-width: 1440px
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Brand & Style
|
|
118
|
+
|
|
119
|
+
The design system is engineered for high-stakes technical environments where precision and reliability are paramount. It adopts a **Corporate / Modern** aesthetic with a heavy lean toward **Engineering Minimalism**. The visual language evokes a "Control Room" atmosphere—functional, dense, and authoritative.
|
|
120
|
+
|
|
121
|
+
The strategy prioritizes clarity over decoration. It eschews modern trends like glassmorphism or vibrant gradients in favor of a structured, monochromatic foundation punctuated by high-intent technical accents. The emotional goal is to provide a sense of absolute control and calm efficiency, ensuring that engineers can parse complex datasets without cognitive fatigue.
|
|
122
|
+
|
|
123
|
+
## Colors
|
|
124
|
+
|
|
125
|
+
The palette is anchored by **Primary Navy (#002444)**, representing stability and depth. **Accent Orange (#a93800)** is reserved strictly for high-priority actions, critical status updates, and interactive focal points.
|
|
126
|
+
|
|
127
|
+
**Light Mode:** Uses **Warm White (#fcf9f8)** as the primary surface to reduce eye strain compared to pure white. Borders and dividers utilize low-opacity navy to maintain structure without creating visual noise.
|
|
128
|
+
|
|
129
|
+
**Dark Mode:** Built on a **Deep Charcoal/Navy** foundation (Neutral Base). It avoids pure black (#000000) to prevent high-contrast "blooming" of text. Surface elevations are indicated by subtle shifts in navy saturation rather than gray scales, maintaining the brand's cool-toned professional identity.
|
|
130
|
+
|
|
131
|
+
## Typography
|
|
132
|
+
|
|
133
|
+
This design system utilizes a dual-font approach to separate narrative content from technical data.
|
|
134
|
+
|
|
135
|
+
**Inter** serves as the primary typeface for all interface elements, navigation, and headings. It provides excellent legibility at small sizes and a neutral, professional tone.
|
|
136
|
+
|
|
137
|
+
**JetBrains Mono** is employed for technical stat cards, logs, code blocks, and any data point where character alignment is critical for scanning. This distinction helps users instantly differentiate between "system talk" and "data talk."
|
|
138
|
+
|
|
139
|
+
On mobile devices, `headline-lg` should scale down to 24px (headline-md) to ensure readability within constrained horizontal widths.
|
|
140
|
+
|
|
141
|
+
## Layout & Spacing
|
|
142
|
+
|
|
143
|
+
The system follows a strict **8px Grid** to ensure mathematical consistency across all layouts.
|
|
144
|
+
|
|
145
|
+
**Grid System:**
|
|
146
|
+
- **Desktop:** A 12-column fluid grid with 16px gutters. For data-heavy views, use a "sidebar-main" layout where the sidebar is fixed at 256px and the main content area expands.
|
|
147
|
+
- **Tablet:** 8-column grid with 16px margins.
|
|
148
|
+
- **Mobile:** 4-column grid with 16px margins.
|
|
149
|
+
|
|
150
|
+
**Density:**
|
|
151
|
+
The design system favors high data density. Vertical spacing between table rows and list items is minimized to 8px or 12px to maximize the information visible above the fold. Consistent padding (e.g., 16px or 24px) is used within cards to provide "visual breathing room" around high-density data clusters.
|
|
152
|
+
|
|
153
|
+
## Elevation & Depth
|
|
154
|
+
|
|
155
|
+
This design system uses **Tonal Layers** and **Low-Contrast Outlines** rather than heavy shadows to define hierarchy.
|
|
156
|
+
|
|
157
|
+
- **Level 0 (Background):** Primary surface color (Warm White or Deep Navy).
|
|
158
|
+
- **Level 1 (Cards/Panels):** Defined by a 1px solid border (#002444 at 10% opacity in light mode). No shadow.
|
|
159
|
+
- **Level 2 (Popovers/Dropdowns):** Subtle ambient shadow (4px blur, 0.05 opacity) to provide a soft lift from the base layer.
|
|
160
|
+
- **Level 3 (Modals):** High-contrast 1px border and a medium-diffused shadow (12px blur) to focus user attention.
|
|
161
|
+
|
|
162
|
+
In Dark Mode, depth is achieved by lightening the surface fill color slightly as the element moves "closer" to the user, mimicking physical light sources.
|
|
163
|
+
|
|
164
|
+
## Shapes
|
|
165
|
+
|
|
166
|
+
The shape language is "Soft" and disciplined.
|
|
167
|
+
- **Small Components:** (Buttons, inputs, chips) use a **4px (0.25rem)** corner radius.
|
|
168
|
+
- **Large Components:** (Cards, modals) use an **8px (0.5rem)** corner radius.
|
|
169
|
+
|
|
170
|
+
This subtle rounding prevents the UI from feeling aggressive while maintaining a precise, technical edge. Elements that are purely functional—like status indicators or progress bar fills—should remain sharp (0px) to emphasize their "system-generated" nature.
|
|
171
|
+
|
|
172
|
+
## Components
|
|
173
|
+
|
|
174
|
+
### Buttons
|
|
175
|
+
- **Primary:** Solid Navy (#002444) with white text. 4px radius.
|
|
176
|
+
- **Secondary:** 1px Navy border, transparent background.
|
|
177
|
+
- **Technical/Action:** Solid Orange (#a93800) for destructive or high-alert actions only.
|
|
178
|
+
|
|
179
|
+
### Status Indicators
|
|
180
|
+
Do not rely on color alone. Use a combination of color and icon (e.g., a green dot for 'Active', a yellow triangle for 'Warning', and a red square for 'Critical').
|
|
181
|
+
|
|
182
|
+
### Data Tables
|
|
183
|
+
Dense rows (32px-40px height). Header cells use `label-caps` typography with a subtle background tint. Use a 1px divider between rows; do not use alternating row colors (zebra striping) to avoid visual clutter.
|
|
184
|
+
|
|
185
|
+
### Stat Cards
|
|
186
|
+
A top-aligned `body-sm` label, followed by a large `mono-data` value. Include a small sparkline (linear trend) at the bottom if applicable.
|
|
187
|
+
|
|
188
|
+
### Skeleton Loaders
|
|
189
|
+
Use a "shimmer" effect that transitions between two shades of the primary surface color. Avoid high-contrast greys; keep the motion slow and rhythmic (1.5s duration) to maintain the "premium" feel.
|
|
190
|
+
|
|
191
|
+
### Input Fields
|
|
192
|
+
1px border with a subtle inset shadow on focus. Labels use `body-sm` and are positioned above the field. Validation errors must use the Accent Orange for visibility.
|