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,479 @@
|
|
|
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>Hermes - Datasets</title>
|
|
7
|
+
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
|
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"/>
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
|
10
|
+
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/>
|
|
11
|
+
<script id="tailwind-config">
|
|
12
|
+
tailwind.config = {
|
|
13
|
+
darkMode: "class",
|
|
14
|
+
theme: {
|
|
15
|
+
extend: {
|
|
16
|
+
"colors": {
|
|
17
|
+
"error-container": "#ffdad6",
|
|
18
|
+
"on-primary": "#ffffff",
|
|
19
|
+
"secondary-fixed-dim": "#ffb59b",
|
|
20
|
+
"secondary-container": "#fe753f",
|
|
21
|
+
"on-background": "#1a1c1e",
|
|
22
|
+
"tertiary-fixed-dim": "#c8c6c5",
|
|
23
|
+
"secondary-fixed": "#ffdbcf",
|
|
24
|
+
"primary-container": "#002444",
|
|
25
|
+
"surface-container-lowest": "#ffffff",
|
|
26
|
+
"inverse-on-surface": "#f1f0f3",
|
|
27
|
+
"background": "#faf9fc",
|
|
28
|
+
"inverse-surface": "#2f3033",
|
|
29
|
+
"surface-container-highest": "#e3e2e5",
|
|
30
|
+
"error": "#ba1a1a",
|
|
31
|
+
"surface-container-high": "#e9e8eb",
|
|
32
|
+
"on-tertiary-fixed": "#1b1c1b",
|
|
33
|
+
"on-error-container": "#93000a",
|
|
34
|
+
"on-tertiary": "#ffffff",
|
|
35
|
+
"surface-dim": "#dad9dd",
|
|
36
|
+
"secondary": "#a93800",
|
|
37
|
+
"primary-fixed": "#d2e4ff",
|
|
38
|
+
"surface": "#faf9fc",
|
|
39
|
+
"on-secondary-container": "#631d00",
|
|
40
|
+
"on-primary-fixed-variant": "#2c486a",
|
|
41
|
+
"surface-container-low": "#f4f3f6",
|
|
42
|
+
"on-secondary-fixed": "#380d00",
|
|
43
|
+
"tertiary": "#0d0d0d",
|
|
44
|
+
"primary-fixed-dim": "#acc9f1",
|
|
45
|
+
"on-secondary-fixed-variant": "#812900",
|
|
46
|
+
"inverse-primary": "#acc9f1",
|
|
47
|
+
"surface-container": "#eeedf1",
|
|
48
|
+
"tertiary-container": "#232323",
|
|
49
|
+
"surface-tint": "#446083",
|
|
50
|
+
"on-secondary": "#ffffff",
|
|
51
|
+
"surface-bright": "#faf9fc",
|
|
52
|
+
"on-tertiary-container": "#8b8a89",
|
|
53
|
+
"tertiary-fixed": "#e4e2e1",
|
|
54
|
+
"outline": "#73777f",
|
|
55
|
+
"on-error": "#ffffff",
|
|
56
|
+
"on-surface-variant": "#43474e",
|
|
57
|
+
"outline-variant": "#c3c6cf",
|
|
58
|
+
"primary": "#000e20",
|
|
59
|
+
"on-surface": "#1a1c1e",
|
|
60
|
+
"on-primary-container": "#708cb2",
|
|
61
|
+
"on-tertiary-fixed-variant": "#474746",
|
|
62
|
+
"surface-variant": "#e3e2e5",
|
|
63
|
+
"on-primary-fixed": "#001c37"
|
|
64
|
+
},
|
|
65
|
+
"borderRadius": {
|
|
66
|
+
"DEFAULT": "0.125rem",
|
|
67
|
+
"lg": "0.25rem",
|
|
68
|
+
"xl": "0.5rem",
|
|
69
|
+
"full": "0.75rem"
|
|
70
|
+
},
|
|
71
|
+
"spacing": {
|
|
72
|
+
"component-gap": "8px",
|
|
73
|
+
"gutter": "16px",
|
|
74
|
+
"unit": "8px",
|
|
75
|
+
"container-padding": "24px",
|
|
76
|
+
"max-width": "1440px",
|
|
77
|
+
"stack-tight": "4px"
|
|
78
|
+
},
|
|
79
|
+
"fontFamily": {
|
|
80
|
+
"headline-md": ["Inter"],
|
|
81
|
+
"body-lg": ["Inter"],
|
|
82
|
+
"mono-label": ["JetBrains Mono"],
|
|
83
|
+
"label-caps": ["Inter"],
|
|
84
|
+
"headline-lg": ["Inter"],
|
|
85
|
+
"body-sm": ["Inter"],
|
|
86
|
+
"body-md": ["Inter"],
|
|
87
|
+
"mono-data": ["JetBrains Mono"],
|
|
88
|
+
"headline-sm": ["Inter"]
|
|
89
|
+
},
|
|
90
|
+
"fontSize": {
|
|
91
|
+
"headline-md": ["24px", { "lineHeight": "32px", "letterSpacing": "-0.01em", "fontWeight": "600" }],
|
|
92
|
+
"body-lg": ["16px", { "lineHeight": "24px", "fontWeight": "400" }],
|
|
93
|
+
"mono-label": ["13px", { "lineHeight": "16px", "letterSpacing": "0.02em", "fontWeight": "500" }],
|
|
94
|
+
"label-caps": ["11px", { "lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700" }],
|
|
95
|
+
"headline-lg": ["32px", { "lineHeight": "40px", "letterSpacing": "-0.02em", "fontWeight": "600" }],
|
|
96
|
+
"body-sm": ["12px", { "lineHeight": "16px", "fontWeight": "400" }],
|
|
97
|
+
"body-md": ["14px", { "lineHeight": "20px", "fontWeight": "400" }],
|
|
98
|
+
"mono-data": ["12px", { "lineHeight": "18px", "fontWeight": "400" }],
|
|
99
|
+
"headline-sm": ["20px", { "lineHeight": "28px", "fontWeight": "600" }]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
</script>
|
|
105
|
+
<style>
|
|
106
|
+
.shimmer {
|
|
107
|
+
background: linear-gradient(90deg, #eeedf1 25%, #faf9fc 50%, #eeedf1 75%);
|
|
108
|
+
background-size: 200% 100%;
|
|
109
|
+
animation: shimmer 1.5s infinite;
|
|
110
|
+
}
|
|
111
|
+
@keyframes shimmer {
|
|
112
|
+
0% { background-position: -200% 0; }
|
|
113
|
+
100% { background-position: 200% 0; }
|
|
114
|
+
}
|
|
115
|
+
.pulse-dot {
|
|
116
|
+
animation: pulse 2s infinite;
|
|
117
|
+
}
|
|
118
|
+
@keyframes pulse {
|
|
119
|
+
0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.7); }
|
|
120
|
+
70% { transform: scale(1); box-shadow: 0 0 0 4px rgba(76, 175, 80, 0); }
|
|
121
|
+
100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); }
|
|
122
|
+
}
|
|
123
|
+
.pulse-dot-sync {
|
|
124
|
+
animation: pulse-sync 2s infinite;
|
|
125
|
+
}
|
|
126
|
+
@keyframes pulse-sync {
|
|
127
|
+
0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(33, 150, 243, 0.7); }
|
|
128
|
+
70% { transform: scale(1); box-shadow: 0 0 0 4px rgba(33, 150, 243, 0); }
|
|
129
|
+
100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(33, 150, 243, 0); }
|
|
130
|
+
}
|
|
131
|
+
</style>
|
|
132
|
+
</head>
|
|
133
|
+
<body class="bg-background text-on-background antialiased flex flex-col md:flex-row min-h-screen overflow-x-hidden">
|
|
134
|
+
<!-- SideNavBar (Desktop) -->
|
|
135
|
+
<nav class="hidden md:flex flex-col h-screen py-container-padding gap-component-gap bg-surface-container-low border-r border-outline-variant/30 docked left-0 w-64 flex-shrink-0 z-40 fixed">
|
|
136
|
+
<div class="px-container-padding pb-6 flex items-center gap-3">
|
|
137
|
+
<div class="w-8 h-8 rounded-DEFAULT bg-primary flex items-center justify-center text-on-primary font-headline-sm text-headline-sm font-bold">H</div>
|
|
138
|
+
<div>
|
|
139
|
+
<h1 class="font-headline-sm text-headline-sm font-black text-primary tracking-tighter">Hermes Control</h1>
|
|
140
|
+
<p class="font-mono-label text-mono-label text-on-surface-variant">v4.2.0-Alpha</p>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="px-gutter mb-4">
|
|
144
|
+
<button class="w-full bg-primary text-on-primary font-label-caps text-label-caps py-2 rounded-DEFAULT flex items-center justify-center gap-2 hover:opacity-90 transition-opacity">
|
|
145
|
+
<span class="material-symbols-outlined text-[16px]" style="font-variation-settings: 'FILL' 1;">add</span>
|
|
146
|
+
New Experiment
|
|
147
|
+
</button>
|
|
148
|
+
</div>
|
|
149
|
+
<ul class="flex flex-col flex-1 px-2 gap-1 overflow-y-auto">
|
|
150
|
+
<li>
|
|
151
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
152
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="dashboard">dashboard</span>
|
|
153
|
+
<span class="font-label-caps text-label-caps tracking-widest">Overview</span>
|
|
154
|
+
</a>
|
|
155
|
+
</li>
|
|
156
|
+
<li>
|
|
157
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
158
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="extension">extension</span>
|
|
159
|
+
<span class="font-label-caps text-label-caps tracking-widest">Skill Hub</span>
|
|
160
|
+
</a>
|
|
161
|
+
</li>
|
|
162
|
+
<li>
|
|
163
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
164
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="auto_awesome">auto_awesome</span>
|
|
165
|
+
<span class="font-label-caps text-label-caps tracking-widest">Evolution</span>
|
|
166
|
+
</a>
|
|
167
|
+
</li>
|
|
168
|
+
<li>
|
|
169
|
+
<!-- ACTIVE STATE -->
|
|
170
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-primary border-r-4 border-secondary bg-surface-container-highest scale-98 duration-150 transition-all" href="#">
|
|
171
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="database" style="font-variation-settings: 'FILL' 1;">database</span>
|
|
172
|
+
<span class="font-label-caps text-label-caps tracking-widest">Datasets</span>
|
|
173
|
+
</a>
|
|
174
|
+
</li>
|
|
175
|
+
<li>
|
|
176
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
177
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="monitoring">monitoring</span>
|
|
178
|
+
<span class="font-label-caps text-label-caps tracking-widest">Metrics</span>
|
|
179
|
+
</a>
|
|
180
|
+
</li>
|
|
181
|
+
<li>
|
|
182
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
183
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="terminal">terminal</span>
|
|
184
|
+
<span class="font-label-caps text-label-caps tracking-widest">Live Logs</span>
|
|
185
|
+
</a>
|
|
186
|
+
</li>
|
|
187
|
+
<li>
|
|
188
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
189
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="inventory_2">inventory_2</span>
|
|
190
|
+
<span class="font-label-caps text-label-caps tracking-widest">Curator</span>
|
|
191
|
+
</a>
|
|
192
|
+
</li>
|
|
193
|
+
<li class="mt-auto">
|
|
194
|
+
<a class="flex items-center gap-3 px-3 py-2 rounded-DEFAULT text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
|
|
195
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="settings">settings</span>
|
|
196
|
+
<span class="font-label-caps text-label-caps tracking-widest">Settings</span>
|
|
197
|
+
</a>
|
|
198
|
+
</li>
|
|
199
|
+
</ul>
|
|
200
|
+
</nav>
|
|
201
|
+
<!-- Main Content Area -->
|
|
202
|
+
<main class="flex-1 flex flex-col md:ml-64 w-full">
|
|
203
|
+
<!-- TopAppBar -->
|
|
204
|
+
<header class="flex justify-between items-center w-full px-gutter h-16 z-50 bg-surface border-b border-outline-variant/30 sticky top-0">
|
|
205
|
+
<div class="flex items-center gap-4">
|
|
206
|
+
<!-- Mobile Menu Button (hidden on desktop) -->
|
|
207
|
+
<button class="md:hidden text-primary">
|
|
208
|
+
<span class="material-symbols-outlined">menu</span>
|
|
209
|
+
</button>
|
|
210
|
+
<div class="md:hidden font-headline-sm text-headline-sm font-bold tracking-tighter text-primary">Hermes</div>
|
|
211
|
+
</div>
|
|
212
|
+
<!-- Search (center/left leaning) -->
|
|
213
|
+
<div class="hidden md:flex flex-1 max-w-md mx-4">
|
|
214
|
+
<div class="relative w-full">
|
|
215
|
+
<span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-outline text-[20px]">search</span>
|
|
216
|
+
<input class="w-full bg-surface-container-low border border-outline-variant/50 rounded-DEFAULT pl-10 pr-4 py-1.5 font-body-sm text-body-sm focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary transition-all text-on-surface placeholder:text-outline" placeholder="Search datasets..." type="text"/>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
<div class="flex items-center gap-4">
|
|
220
|
+
<div class="flex items-center gap-1">
|
|
221
|
+
<button class="p-2 rounded-full text-on-surface-variant hover:bg-surface-container-high transition-colors">
|
|
222
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="sync">sync</span>
|
|
223
|
+
</button>
|
|
224
|
+
<button class="p-2 rounded-full text-on-surface-variant hover:bg-surface-container-high transition-colors relative">
|
|
225
|
+
<span class="absolute top-2 right-2 w-2 h-2 bg-secondary rounded-full"></span>
|
|
226
|
+
<span class="material-symbols-outlined text-[20px]" data-icon="notifications">notifications</span>
|
|
227
|
+
</button>
|
|
228
|
+
</div>
|
|
229
|
+
<div class="hidden md:flex items-center gap-2">
|
|
230
|
+
<span class="font-label-caps text-label-caps text-outline">Syncing</span>
|
|
231
|
+
<span class="w-2 h-2 rounded-full bg-[#2196F3] pulse-dot-sync"></span>
|
|
232
|
+
</div>
|
|
233
|
+
<img alt="User Profile Avatar" class="w-8 h-8 rounded-full border border-outline-variant/30 cursor-pointer hover:opacity-80 transition-opacity" src="https://lh3.googleusercontent.com/aida-public/AB6AXuDE_3B6tA29uYsrSVKK3USAzJSxuev2-qti40MXF2Sh9FUbYWIUPK02pWchPbYOVqDYyBI1PjusVed__irPTWpsj7Sh6YrhDVWEry9-VUOaPo2Y8OPfabMozSPYZZ8NXkfW_hhm8tYNQa--cWKEcg2ADZ2D_293gYVSisNEMu155FlsV2sEQKM_lLF4WCKzo8FPLaRvKUrch-XPlFXWWstvPxE1SsoYZVCQ40CdzNCL0JH2LNbaxWTIvjsEvxHMBBxWC1kR6GJZFiOO"/>
|
|
234
|
+
</div>
|
|
235
|
+
</header>
|
|
236
|
+
<!-- Dashboard Canvas -->
|
|
237
|
+
<div class="p-container-padding flex-1 flex flex-col gap-6 max-w-[1440px] mx-auto w-full">
|
|
238
|
+
<!-- Page Header & Global Actions -->
|
|
239
|
+
<div class="flex flex-col md:flex-row justify-between items-start md:items-end gap-4">
|
|
240
|
+
<div>
|
|
241
|
+
<h2 class="font-headline-lg text-headline-lg text-on-surface">Datasets</h2>
|
|
242
|
+
<p class="font-body-md text-body-md text-on-surface-variant mt-1">Manage training and validation data streams.</p>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="flex gap-2">
|
|
245
|
+
<button class="px-4 py-2 bg-surface text-primary border border-outline-variant/50 rounded-DEFAULT font-mono-label text-mono-label hover:bg-surface-container-low transition-colors flex items-center gap-2">
|
|
246
|
+
<span class="material-symbols-outlined text-[16px]">filter_list</span> Filter
|
|
247
|
+
</button>
|
|
248
|
+
<button class="px-4 py-2 bg-primary text-on-primary rounded-DEFAULT font-mono-label text-mono-label hover:opacity-90 transition-opacity flex items-center gap-2">
|
|
249
|
+
<span class="material-symbols-outlined text-[16px]">cloud_upload</span> Connect Source
|
|
250
|
+
</button>
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
<!-- Bento Grid Layout for Main Content -->
|
|
254
|
+
<div class="grid grid-cols-1 lg:grid-cols-12 gap-gutter">
|
|
255
|
+
<!-- Main Datasets List (Spans 8 cols on large screens) -->
|
|
256
|
+
<div class="lg:col-span-8 flex flex-col gap-unit">
|
|
257
|
+
<div class="flex justify-between items-center px-2 py-1">
|
|
258
|
+
<span class="font-label-caps text-label-caps text-on-surface-variant">ACTIVE STREAMS (4)</span>
|
|
259
|
+
<a class="font-label-caps text-label-caps text-primary hover:underline" href="#">VIEW ALL</a>
|
|
260
|
+
</div>
|
|
261
|
+
<!-- Card 1: Healthy Dataset -->
|
|
262
|
+
<div class="bg-surface border border-outline-variant/20 rounded-lg p-4 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:shadow-sm transition-shadow">
|
|
263
|
+
<div class="flex items-start gap-4 w-full sm:w-auto">
|
|
264
|
+
<div class="w-10 h-10 rounded-DEFAULT bg-surface-container-highest flex items-center justify-center flex-shrink-0 text-on-surface-variant">
|
|
265
|
+
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">dataset</span>
|
|
266
|
+
</div>
|
|
267
|
+
<div>
|
|
268
|
+
<div class="flex items-center gap-2">
|
|
269
|
+
<h3 class="font-headline-sm text-headline-sm text-on-surface leading-tight">Customer_Telemetry_Prod</h3>
|
|
270
|
+
<span class="px-2 py-0.5 rounded-full bg-green-100 text-green-800 font-label-caps text-[9px] border border-green-200">HEALTHY</span>
|
|
271
|
+
</div>
|
|
272
|
+
<div class="flex items-center gap-4 mt-1 font-mono-data text-mono-data text-outline">
|
|
273
|
+
<span class="flex items-center gap-1"><span class="material-symbols-outlined text-[14px]">cloud</span> S3</span>
|
|
274
|
+
<span>•</span>
|
|
275
|
+
<span>4.2M rows</span>
|
|
276
|
+
<span>•</span>
|
|
277
|
+
<span>Sync: 10m ago</span>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
<div class="flex items-center gap-6 w-full sm:w-auto justify-between sm:justify-end border-t sm:border-t-0 border-outline-variant/20 pt-3 sm:pt-0 mt-2 sm:mt-0">
|
|
282
|
+
<div class="text-right">
|
|
283
|
+
<div class="font-mono-label text-mono-label text-on-surface">98%</div>
|
|
284
|
+
<div class="font-body-sm text-body-sm text-outline">Quality</div>
|
|
285
|
+
</div>
|
|
286
|
+
<div class="flex gap-2">
|
|
287
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="Validate">
|
|
288
|
+
<span class="material-symbols-outlined text-[18px]">verified</span>
|
|
289
|
+
</button>
|
|
290
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="Export">
|
|
291
|
+
<span class="material-symbols-outlined text-[18px]">download</span>
|
|
292
|
+
</button>
|
|
293
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="More">
|
|
294
|
+
<span class="material-symbols-outlined text-[18px]">more_vert</span>
|
|
295
|
+
</button>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
<!-- Card 2: Syncing Dataset -->
|
|
300
|
+
<div class="bg-surface border border-outline-variant/20 rounded-lg p-4 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:shadow-sm transition-shadow relative overflow-hidden">
|
|
301
|
+
<!-- Progress bar hint -->
|
|
302
|
+
<div class="absolute bottom-0 left-0 h-1 bg-surface-container-highest w-full">
|
|
303
|
+
<div class="h-full bg-[#2196F3] w-1/3 transition-all duration-1000"></div>
|
|
304
|
+
</div>
|
|
305
|
+
<div class="flex items-start gap-4 w-full sm:w-auto">
|
|
306
|
+
<div class="w-10 h-10 rounded-DEFAULT bg-primary-fixed-dim/20 flex items-center justify-center flex-shrink-0 text-primary">
|
|
307
|
+
<span class="material-symbols-outlined animate-spin" style="font-variation-settings: 'FILL' 1;">sync</span>
|
|
308
|
+
</div>
|
|
309
|
+
<div>
|
|
310
|
+
<div class="flex items-center gap-2">
|
|
311
|
+
<h3 class="font-headline-sm text-headline-sm text-on-surface leading-tight">Financial_Tx_History</h3>
|
|
312
|
+
<span class="px-2 py-0.5 rounded-full bg-blue-100 text-blue-800 font-label-caps text-[9px] border border-blue-200 flex items-center gap-1">
|
|
313
|
+
<span class="w-1.5 h-1.5 rounded-full bg-blue-600 pulse-dot-sync"></span> SYNCING
|
|
314
|
+
</span>
|
|
315
|
+
</div>
|
|
316
|
+
<div class="flex items-center gap-4 mt-1 font-mono-data text-mono-data text-outline">
|
|
317
|
+
<span class="flex items-center gap-1"><span class="material-symbols-outlined text-[14px]">api</span> REST API</span>
|
|
318
|
+
<span>•</span>
|
|
319
|
+
<span>1.1M rows</span>
|
|
320
|
+
<span>•</span>
|
|
321
|
+
<span>ETA: 2m</span>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
<div class="flex items-center gap-6 w-full sm:w-auto justify-between sm:justify-end border-t sm:border-t-0 border-outline-variant/20 pt-3 sm:pt-0 mt-2 sm:mt-0">
|
|
326
|
+
<div class="text-right opacity-50">
|
|
327
|
+
<div class="font-mono-label text-mono-label text-on-surface">--</div>
|
|
328
|
+
<div class="font-body-sm text-body-sm text-outline">Quality</div>
|
|
329
|
+
</div>
|
|
330
|
+
<div class="flex gap-2">
|
|
331
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors opacity-50 cursor-not-allowed">
|
|
332
|
+
<span class="material-symbols-outlined text-[18px]">verified</span>
|
|
333
|
+
</button>
|
|
334
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors opacity-50 cursor-not-allowed">
|
|
335
|
+
<span class="material-symbols-outlined text-[18px]">download</span>
|
|
336
|
+
</button>
|
|
337
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors">
|
|
338
|
+
<span class="material-symbols-outlined text-[18px]">more_vert</span>
|
|
339
|
+
</button>
|
|
340
|
+
</div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
<!-- Card 3: Warning/Stale Dataset -->
|
|
344
|
+
<div class="bg-surface border-l-4 border-l-orange-400 border border-outline-variant/20 rounded-lg p-4 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:shadow-sm transition-shadow">
|
|
345
|
+
<div class="flex items-start gap-4 w-full sm:w-auto">
|
|
346
|
+
<div class="w-10 h-10 rounded-DEFAULT bg-orange-50 flex items-center justify-center flex-shrink-0 text-orange-600">
|
|
347
|
+
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">warning</span>
|
|
348
|
+
</div>
|
|
349
|
+
<div>
|
|
350
|
+
<div class="flex items-center gap-2">
|
|
351
|
+
<h3 class="font-headline-sm text-headline-sm text-on-surface leading-tight">User_Demographics_Q3</h3>
|
|
352
|
+
<span class="px-2 py-0.5 rounded-full bg-orange-100 text-orange-800 font-label-caps text-[9px] border border-orange-200">STALE</span>
|
|
353
|
+
</div>
|
|
354
|
+
<div class="flex items-center gap-4 mt-1 font-mono-data text-mono-data text-outline">
|
|
355
|
+
<span class="flex items-center gap-1"><span class="material-symbols-outlined text-[14px]">table</span> BigQuery</span>
|
|
356
|
+
<span>•</span>
|
|
357
|
+
<span>845K rows</span>
|
|
358
|
+
<span>•</span>
|
|
359
|
+
<span class="text-orange-600 font-medium">Sync: 14d ago</span>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
</div>
|
|
363
|
+
<div class="flex items-center gap-6 w-full sm:w-auto justify-between sm:justify-end border-t sm:border-t-0 border-outline-variant/20 pt-3 sm:pt-0 mt-2 sm:mt-0">
|
|
364
|
+
<div class="text-right">
|
|
365
|
+
<div class="font-mono-label text-mono-label text-on-surface">92%</div>
|
|
366
|
+
<div class="font-body-sm text-body-sm text-outline">Quality</div>
|
|
367
|
+
</div>
|
|
368
|
+
<div class="flex gap-2">
|
|
369
|
+
<button class="p-1.5 text-primary hover:bg-primary-fixed-dim/20 rounded-DEFAULT transition-colors" title="Force Refresh">
|
|
370
|
+
<span class="material-symbols-outlined text-[18px]">refresh</span>
|
|
371
|
+
</button>
|
|
372
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="Export">
|
|
373
|
+
<span class="material-symbols-outlined text-[18px]">download</span>
|
|
374
|
+
</button>
|
|
375
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="More">
|
|
376
|
+
<span class="material-symbols-outlined text-[18px]">more_vert</span>
|
|
377
|
+
</button>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
<!-- Card 4: Error/Poor Quality Dataset -->
|
|
382
|
+
<div class="bg-surface border-l-4 border-l-secondary border border-outline-variant/20 rounded-lg p-4 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:shadow-sm transition-shadow">
|
|
383
|
+
<div class="flex items-start gap-4 w-full sm:w-auto">
|
|
384
|
+
<div class="w-10 h-10 rounded-DEFAULT bg-error-container/50 flex items-center justify-center flex-shrink-0 text-secondary">
|
|
385
|
+
<span class="material-symbols-outlined" style="font-variation-settings: 'FILL' 1;">error</span>
|
|
386
|
+
</div>
|
|
387
|
+
<div>
|
|
388
|
+
<div class="flex items-center gap-2">
|
|
389
|
+
<h3 class="font-headline-sm text-headline-sm text-on-surface leading-tight">Legacy_CRM_Dump</h3>
|
|
390
|
+
<span class="px-2 py-0.5 rounded-full bg-red-100 text-red-800 font-label-caps text-[9px] border border-red-200">POOR QUALITY</span>
|
|
391
|
+
</div>
|
|
392
|
+
<div class="flex items-center gap-4 mt-1 font-mono-data text-mono-data text-outline">
|
|
393
|
+
<span class="flex items-center gap-1"><span class="material-symbols-outlined text-[14px]">description</span> CSV</span>
|
|
394
|
+
<span>•</span>
|
|
395
|
+
<span>2.4M rows</span>
|
|
396
|
+
<span>•</span>
|
|
397
|
+
<span>Sync: 2h ago</span>
|
|
398
|
+
</div>
|
|
399
|
+
</div>
|
|
400
|
+
</div>
|
|
401
|
+
<div class="flex items-center gap-6 w-full sm:w-auto justify-between sm:justify-end border-t sm:border-t-0 border-outline-variant/20 pt-3 sm:pt-0 mt-2 sm:mt-0">
|
|
402
|
+
<div class="text-right">
|
|
403
|
+
<div class="font-mono-label text-mono-label text-secondary font-bold flex items-center gap-1">
|
|
404
|
+
<span class="material-symbols-outlined text-[14px]">arrow_downward</span> 43%
|
|
405
|
+
</div>
|
|
406
|
+
<div class="font-body-sm text-body-sm text-outline">Quality</div>
|
|
407
|
+
</div>
|
|
408
|
+
<div class="flex gap-2">
|
|
409
|
+
<button class="px-3 py-1 bg-secondary text-on-primary rounded-DEFAULT font-mono-label text-[11px] hover:opacity-90 transition-opacity">
|
|
410
|
+
REVIEW
|
|
411
|
+
</button>
|
|
412
|
+
<button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-container rounded-DEFAULT transition-colors" title="More">
|
|
413
|
+
<span class="material-symbols-outlined text-[18px]">more_vert</span>
|
|
414
|
+
</button>
|
|
415
|
+
</div>
|
|
416
|
+
</div>
|
|
417
|
+
</div>
|
|
418
|
+
</div>
|
|
419
|
+
<!-- Side Panel (Spans 4 cols on large screens) -->
|
|
420
|
+
<div class="lg:col-span-4 flex flex-col gap-6">
|
|
421
|
+
<!-- Global Stats -->
|
|
422
|
+
<div class="bg-surface border border-outline-variant/20 rounded-lg p-5">
|
|
423
|
+
<h4 class="font-label-caps text-label-caps text-on-surface-variant mb-4">SYSTEM HEALTH</h4>
|
|
424
|
+
<div class="grid grid-cols-2 gap-4">
|
|
425
|
+
<div>
|
|
426
|
+
<div class="font-body-sm text-outline mb-1">Total Volume</div>
|
|
427
|
+
<div class="font-mono-data text-[20px] text-on-surface">18.4TB</div>
|
|
428
|
+
</div>
|
|
429
|
+
<div>
|
|
430
|
+
<div class="font-body-sm text-outline mb-1">Avg Quality</div>
|
|
431
|
+
<div class="font-mono-data text-[20px] text-on-surface">89.2%</div>
|
|
432
|
+
</div>
|
|
433
|
+
</div>
|
|
434
|
+
</div>
|
|
435
|
+
<!-- Placeholder: Data Distribution Skeletons -->
|
|
436
|
+
<div class="bg-surface border border-outline-variant/20 rounded-lg p-5 flex flex-col h-full">
|
|
437
|
+
<h4 class="font-label-caps text-label-caps text-on-surface-variant mb-4 flex justify-between items-center">
|
|
438
|
+
DISTRIBUTION ANALYSIS
|
|
439
|
+
<span class="material-symbols-outlined text-[14px] text-outline">info</span>
|
|
440
|
+
</h4>
|
|
441
|
+
<div class="flex-1 flex flex-col gap-4">
|
|
442
|
+
<!-- Skeleton Chart 1 -->
|
|
443
|
+
<div>
|
|
444
|
+
<div class="flex justify-between items-end mb-2">
|
|
445
|
+
<div class="h-3 w-24 bg-surface-container-highest rounded shimmer"></div>
|
|
446
|
+
<div class="h-2 w-12 bg-surface-container-highest rounded shimmer"></div>
|
|
447
|
+
</div>
|
|
448
|
+
<div class="h-32 w-full bg-surface-container-lowest border border-outline-variant/20 rounded flex items-end p-2 gap-2">
|
|
449
|
+
<div class="w-1/6 h-[40%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
450
|
+
<div class="w-1/6 h-[70%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
451
|
+
<div class="w-1/6 h-[90%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
452
|
+
<div class="w-1/6 h-[60%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
453
|
+
<div class="w-1/6 h-[30%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
454
|
+
<div class="w-1/6 h-[50%] bg-surface-container-highest rounded-t shimmer"></div>
|
|
455
|
+
</div>
|
|
456
|
+
</div>
|
|
457
|
+
<!-- Skeleton Chart 2 -->
|
|
458
|
+
<div class="mt-4">
|
|
459
|
+
<div class="flex justify-between items-end mb-2">
|
|
460
|
+
<div class="h-3 w-32 bg-surface-container-highest rounded shimmer"></div>
|
|
461
|
+
</div>
|
|
462
|
+
<div class="space-y-2">
|
|
463
|
+
<div class="h-2 w-full bg-surface-container-highest rounded shimmer"></div>
|
|
464
|
+
<div class="h-2 w-5/6 bg-surface-container-highest rounded shimmer"></div>
|
|
465
|
+
<div class="h-2 w-4/6 bg-surface-container-highest rounded shimmer"></div>
|
|
466
|
+
</div>
|
|
467
|
+
</div>
|
|
468
|
+
</div>
|
|
469
|
+
<div class="mt-4 pt-4 border-t border-outline-variant/20 text-center">
|
|
470
|
+
<span class="font-body-sm text-outline flex items-center justify-center gap-1">
|
|
471
|
+
<span class="material-symbols-outlined text-[14px] animate-spin">hourglass_empty</span> Analyzing recent ingestion...
|
|
472
|
+
</span>
|
|
473
|
+
</div>
|
|
474
|
+
</div>
|
|
475
|
+
</div>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
</main>
|
|
479
|
+
</body></html>
|
|
Binary file
|