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,44 @@
|
|
|
1
|
+
## Hermes API OpenAPI Specification Overview
|
|
2
|
+
|
|
3
|
+
### Key Points
|
|
4
|
+
|
|
5
|
+
- **OpenAPI 3.1.0** specification for Hermes backend (FastAPI/Python)
|
|
6
|
+
- Base server: `http://127.0.0.1:8000` (overridable via `NEXT_PUBLIC_API_BASE` environment variable)
|
|
7
|
+
- Frontend (Next.js) consumes these endpoints with a defined response contract
|
|
8
|
+
- **Evolution system** enables iterative skill improvement with scoring (baseline vs evolved scores)
|
|
9
|
+
- **Jobs system** provides real-time tracking of evolution runs with status, logs, and progress
|
|
10
|
+
- Standardized **ApiError schema** with typed error kinds for consistent frontend error handling
|
|
11
|
+
- WebSocket endpoint (`/ws`) noted but streaming details not included in this spec excerpt
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
### Section Structure
|
|
16
|
+
|
|
17
|
+
| Section | Path Prefix | Methods |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Skills | `/api/skills` | GET (list, detail, evolution-history) |
|
|
20
|
+
| Evolution | `/api/evolution` | GET (runs), POST (start) |
|
|
21
|
+
| Jobs | `/api/jobs` | GET (list, detail), DELETE (cancel), GET logs |
|
|
22
|
+
| Health | `/api/health` | GET |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
### Notable Schemas
|
|
27
|
+
|
|
28
|
+
| Schema | Purpose |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `SkillInfo` | Basic skill metadata (name, path, providers, category, size) |
|
|
31
|
+
| `SkillDetail` | Full skill content including parsed frontmatter, body, and raw content |
|
|
32
|
+
| `EvolutionRun` | Historical record with baseline_score, evolved_score, improvement |
|
|
33
|
+
| `EvolutionJob` | Active job with status enum and progress tracking |
|
|
34
|
+
| `ApiError` | Typed error contract (network/timeout/server/client) |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Notable Decisions / Patterns
|
|
39
|
+
|
|
40
|
+
- **Job status enum** includes 11 states: `queued → loading_skill → building_dataset → validating → configuring → optimizing → evaluating → saving → completed/failed`
|
|
41
|
+
- **Evolution constraints**: `iterations` (1-20, default 3), `eval_source` (default: "synthetic")
|
|
42
|
+
- **503 handling**: All endpoints share a standardized `ServiceUnavailable` response; frontend shows "Desconectado" state with retry option
|
|
43
|
+
- **Health endpoint** exposes system state including `hermes_repo_exists`, `skills_count`, and `categories` breakdown
|
|
44
|
+
- **Job logs**: Streaming paginated logs via `?since=` query parameter
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
children_hash: 389c2df13933c66ce0fe0315d13164eb36710f49e971334300a4c3927b66c30b
|
|
3
|
+
compression_ratio: 0.5270618556701031
|
|
4
|
+
condensation_order: 2
|
|
5
|
+
covers: [hermes_dashboard/_index.md, src/_index.md]
|
|
6
|
+
covers_token_total: 776
|
|
7
|
+
summary_level: d2
|
|
8
|
+
token_count: 409
|
|
9
|
+
type: summary
|
|
10
|
+
---
|
|
11
|
+
# Hermes Dashboard
|
|
12
|
+
|
|
13
|
+
## Architecture
|
|
14
|
+
|
|
15
|
+
Next.js 16 frontend ↔ FastAPI backend, communicating across ports 3000 and 8000 (env-configured as `NEXT_PUBLIC_API_BASE` → `http://127.0.0.1:9119`).
|
|
16
|
+
|
|
17
|
+
**Stack:** Next.js 16 · React Query · Framer Motion · CSS gradients (Three.js removed for lighter footprint)
|
|
18
|
+
|
|
19
|
+
## Frontend Structure
|
|
20
|
+
|
|
21
|
+
**8 Navigation Sections** (sidebar.md): Overview · Skills · Evolution · Datasets · Memory · Metrics · Logs · Settings
|
|
22
|
+
|
|
23
|
+
All pages lazy-loaded via `next/dynamic` with loading states.
|
|
24
|
+
|
|
25
|
+
**Key Components:**
|
|
26
|
+
- `Sidebar` — Collapsible (64px/240px), Framer Motion animations, cyan accent, dual light/dark mode
|
|
27
|
+
- `SettingsPage` — System paths, env vars (`OPENAI_API_KEY`, `HERMES_AGENT_REPO`), health status
|
|
28
|
+
|
|
29
|
+
**API Client** (`lib/api.ts`, `api_client_library.md`):
|
|
30
|
+
- Auth: `X-Hermes-Session-Token` header, lazy-loaded session
|
|
31
|
+
- Resilience: 15s AbortController timeouts, 401 retry with token refresh, WebSocket 3s auto-reconnect
|
|
32
|
+
- Types: `SkillInfo`, `SkillDetail`, `EvolutionJob`, `EvolutionRun`, `MetricsData`, `DatasetInfo`
|
|
33
|
+
|
|
34
|
+
## Source Files
|
|
35
|
+
|
|
36
|
+
| Layer | Files |
|
|
37
|
+
|-------|-------|
|
|
38
|
+
| Pages | `src/app/page.tsx`, `src/app/layout.tsx` |
|
|
39
|
+
| Components | `src/components/Sidebar.tsx`, `src/components/pages/*.tsx` |
|
|
40
|
+
| API | `src/lib/api.ts` |
|
|
41
|
+
| Backend | `backend/main.py` (FastAPI, ~20 endpoints + WebSocket) |
|
|
42
|
+
|
|
43
|
+
## Drill-Down References
|
|
44
|
+
|
|
45
|
+
- `hermes_dashboard/architecture_overview.md` — Full architecture details
|
|
46
|
+
- `src/components/sidebar_navigation_component.md` — Sidebar implementation
|
|
47
|
+
- `src/lib/api_client_library.md` — API client specification
|
|
48
|
+
- `src/page.md` / `src/sidebar.md` / `src/settingspage.md` — Individual page docs
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
children_hash: 05120e17ddf4ed76482037a8b67a15c5e41ea8a011162c03430a7d52723952f2
|
|
3
|
+
compression_ratio: 0.6966292134831461
|
|
4
|
+
condensation_order: 1
|
|
5
|
+
covers: [architecture_overview.md]
|
|
6
|
+
covers_token_total: 267
|
|
7
|
+
summary_level: d1
|
|
8
|
+
token_count: 186
|
|
9
|
+
type: summary
|
|
10
|
+
---
|
|
11
|
+
# Hermes Dashboard Architecture
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
Next.js 16 frontend paired with FastAPI backend, communicating across ports 3000 and 8000 respectively.
|
|
15
|
+
|
|
16
|
+
## Frontend Stack
|
|
17
|
+
- **Framework:** Next.js 16
|
|
18
|
+
- **UI Optimization:** Three.js removed → CSS gradients for lighter footprint
|
|
19
|
+
- **Config:** `next.config.ts` set to standalone mode
|
|
20
|
+
- **Key Files:** `src/app/page.tsx`, `src/app/layout.tsx`
|
|
21
|
+
|
|
22
|
+
## Dashboard Pages
|
|
23
|
+
Overview · Skill Hub · Evolution · Datasets · Memory · Metrics · Logs · Settings
|
|
24
|
+
|
|
25
|
+
## Backend
|
|
26
|
+
- **Framework:** FastAPI
|
|
27
|
+
- **Lazy-loaded:** Backend components loaded on-demand for faster initial frontend load
|
|
28
|
+
- **Key File:** `backend/main.py`
|
|
29
|
+
|
|
30
|
+
## Performance Decision
|
|
31
|
+
CSS gradients replace Three.js → reduced bundle size, faster rendering.
|
|
File without changes
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Architecture Overview
|
|
3
|
+
summary: Next.js 16 + FastAPI dashboard with Three.js replaced by CSS gradients, lazy-loaded backend, standalone next.config
|
|
4
|
+
tags: []
|
|
5
|
+
related: []
|
|
6
|
+
keywords: []
|
|
7
|
+
createdAt: '2026-04-28T02:21:54.807Z'
|
|
8
|
+
updatedAt: '2026-04-28T02:21:54.807Z'
|
|
9
|
+
---
|
|
10
|
+
## Reason
|
|
11
|
+
Document Hermes Dashboard architecture from inline context
|
|
12
|
+
|
|
13
|
+
## Raw Concept
|
|
14
|
+
**Task:**
|
|
15
|
+
Document Hermes Dashboard architecture
|
|
16
|
+
|
|
17
|
+
**Changes:**
|
|
18
|
+
- Replaced Three.js with CSS gradients
|
|
19
|
+
- Backend lazy-loaded
|
|
20
|
+
- next.config set to standalone
|
|
21
|
+
|
|
22
|
+
**Files:**
|
|
23
|
+
- src/app/page.tsx
|
|
24
|
+
- src/app/layout.tsx
|
|
25
|
+
- backend/main.py
|
|
26
|
+
- next.config.ts
|
|
27
|
+
|
|
28
|
+
**Flow:**
|
|
29
|
+
Next.js frontend (port 3000) -> FastAPI backend (port 8000)
|
|
30
|
+
|
|
31
|
+
**Timestamp:** 2026-04-28
|
|
32
|
+
|
|
33
|
+
## Narrative
|
|
34
|
+
### Structure
|
|
35
|
+
Next.js 16 frontend with FastAPI backend. Dashboard pages: Overview, Skill Hub, Evolution, Datasets, Memory, Metrics, Logs, Settings.
|
|
36
|
+
|
|
37
|
+
### Dependencies
|
|
38
|
+
Backend requires FastAPI, frontend requires Next.js 16
|
|
39
|
+
|
|
40
|
+
### Highlights
|
|
41
|
+
Performance optimization: Three.js removed, CSS gradients used instead. Backend lazy-loaded for faster initial load.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Architecture Overview: Hermes Dashboard
|
|
2
|
+
|
|
3
|
+
## Key Points
|
|
4
|
+
|
|
5
|
+
- **Tech Stack**: Next.js 16 frontend with FastAPI backend
|
|
6
|
+
- **Performance Optimization**: Three.js removed; CSS gradients now used for visual effects
|
|
7
|
+
- **Backend Strategy**: Lazy-loaded backend for faster initial page load
|
|
8
|
+
- **Deployment Config**: `next.config.ts` set to `standalone` mode
|
|
9
|
+
- **Communication Flow**: Frontend (port 3000) ↔ Backend (port 8000)
|
|
10
|
+
|
|
11
|
+
## Structure / Sections Summary
|
|
12
|
+
|
|
13
|
+
### Raw Concept
|
|
14
|
+
- Task: Document Hermes Dashboard architecture
|
|
15
|
+
- Key changes: Three.js removal, CSS gradients, lazy backend, standalone config
|
|
16
|
+
- Target files: `src/app/page.tsx`, `src/app/layout.tsx`, `backend/main.py`, `next.config.ts`
|
|
17
|
+
|
|
18
|
+
### Narrative
|
|
19
|
+
- **Structure**: Next.js 16 frontend + FastAPI backend with 8 dashboard pages (Overview, Skill Hub, Evolution, Datasets, Memory, Metrics, Logs, Settings)
|
|
20
|
+
- **Dependencies**: FastAPI (backend), Next.js 16 (frontend)
|
|
21
|
+
|
|
22
|
+
## Notable Entities & Decisions
|
|
23
|
+
|
|
24
|
+
| Entity | Details |
|
|
25
|
+
|--------|---------|
|
|
26
|
+
| **Frontend** | Next.js 16, port 3000 |
|
|
27
|
+
| **Backend** | FastAPI, port 8000, lazy-loaded |
|
|
28
|
+
| **Build Config** | `standalone` mode enabled |
|
|
29
|
+
| **Visual System** | CSS gradients (replaced Three.js) |
|
|
30
|
+
|
|
31
|
+
### Decisions
|
|
32
|
+
- **Three.js removal**: Reduces bundle size; CSS gradients sufficient for dashboard visuals
|
|
33
|
+
- **Lazy backend loading**: Improves initial load time; backend services load on demand
|
|
34
|
+
- **Standalone next.config**: Self-contained Next.js output for simplified deployment
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
children_hash: 90692b63a08a05d9811e0d3979c4a61bc3467fb2063e5c3b3eb75018971bdcc6
|
|
3
|
+
compression_ratio: 0.09087154068566708
|
|
4
|
+
condensation_order: 1
|
|
5
|
+
covers: [components/_index.md, context.md, functioncallingpage.md, lib/_index.md, page.md, settingspage.md, sidebar.md]
|
|
6
|
+
covers_token_total: 4842
|
|
7
|
+
summary_level: d1
|
|
8
|
+
token_count: 440
|
|
9
|
+
type: summary
|
|
10
|
+
---
|
|
11
|
+
# Frontend Architecture (src)
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
Next.js frontend with lazy-loaded page components, React Query for server state, and Framer Motion animations. Connects to FastAPI backend via typed API client.
|
|
15
|
+
|
|
16
|
+
## Page Structure
|
|
17
|
+
|
|
18
|
+
**8 Navigation Sections** (see `sidebar.md` for full nav):
|
|
19
|
+
| Page | Component | Purpose |
|
|
20
|
+
|------|-----------|---------|
|
|
21
|
+
| Overview | `OverviewPage` | Dashboard home |
|
|
22
|
+
| Skills | `SkillStudioPage` | Skill management |
|
|
23
|
+
| Evolution | `EvolutionPage` | Evolution engine control |
|
|
24
|
+
| Datasets | `DatasetPage` | Dataset analysis |
|
|
25
|
+
| Memory | `MemoryPage` | Memory/intelligence |
|
|
26
|
+
| Metrics | `MetricsPage` | Analytics & metrics |
|
|
27
|
+
| Logs | `LogsPage` | Live log streaming |
|
|
28
|
+
| Settings | `SettingsPage` | System paths & env vars |
|
|
29
|
+
|
|
30
|
+
All pages lazy-loaded via `next/dynamic` with loading states.
|
|
31
|
+
|
|
32
|
+
## Key Components
|
|
33
|
+
|
|
34
|
+
- **`Sidebar`** — Collapsible (64px/240px), animated via Framer Motion, cyan accent theme, dual light/dark mode
|
|
35
|
+
- **`SettingsPage`** — Displays system paths, env vars (OPENAI_API_KEY, HERMES_AGENT_REPO), health status via `fetchHealth()`
|
|
36
|
+
|
|
37
|
+
## API Client (`lib/api.ts`)
|
|
38
|
+
|
|
39
|
+
See `lib/_index.md` and `api_client_library.md` for full details.
|
|
40
|
+
|
|
41
|
+
**Resilience:** 15s AbortController timeouts, retry on 401 with token refresh, WebSocket 3s auto-reconnect
|
|
42
|
+
|
|
43
|
+
**Auth:** `X-Hermes-Session-Token` header, lazy-loaded session
|
|
44
|
+
|
|
45
|
+
**Env:** `NEXT_PUBLIC_API_BASE` → `http://127.0.0.1:9119`
|
|
46
|
+
|
|
47
|
+
**Key Types:** `SkillInfo`, `SkillDetail`, `EvolutionJob`, `EvolutionRun`, `MetricsData`, `DatasetInfo`, `ConstraintResult`, `ProviderSummary`
|
|
48
|
+
|
|
49
|
+
## Source Files
|
|
50
|
+
- `src/app/page.tsx` — Root page with page routing
|
|
51
|
+
- `src/components/Sidebar.tsx` — Navigation sidebar
|
|
52
|
+
- `src/components/pages/*.tsx` — Page components (lazy-loaded)
|
|
53
|
+
- `src/lib/api.ts` — Typed API client
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
children_hash: b619fb96a0b08ac7bd129f1d7c125d830caeb4ba9111d31a8938bbf1868eb497
|
|
3
|
+
compression_ratio: 0.21685082872928177
|
|
4
|
+
condensation_order: 0
|
|
5
|
+
covers: [sidebar_navigation_component.md]
|
|
6
|
+
covers_token_total: 1448
|
|
7
|
+
summary_level: d0
|
|
8
|
+
token_count: 314
|
|
9
|
+
type: summary
|
|
10
|
+
---
|
|
11
|
+
## Sidebar Navigation Component
|
|
12
|
+
|
|
13
|
+
**Source:** `src/components/Sidebar.tsx`
|
|
14
|
+
|
|
15
|
+
### Overview
|
|
16
|
+
Collapsible sidebar providing navigation across 7 main sections with environment status, theme support, and animated transitions.
|
|
17
|
+
|
|
18
|
+
### Navigation Structure
|
|
19
|
+
7 navigation items with icons:
|
|
20
|
+
- Overview (Layers)
|
|
21
|
+
- Skill Hub (Sparkles)
|
|
22
|
+
- Evolution (GitBranch)
|
|
23
|
+
- Datasets (Database)
|
|
24
|
+
- Metrics (BarChart3)
|
|
25
|
+
- Live Logs (Terminal)
|
|
26
|
+
- Settings (Settings)
|
|
27
|
+
|
|
28
|
+
### Props Interface
|
|
29
|
+
```
|
|
30
|
+
activePage: Page
|
|
31
|
+
onNavigate: (page: Page) => void
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Page Type Definition
|
|
35
|
+
```typescript
|
|
36
|
+
export type Page = "overview" | "skills" | "evolution" | "datasets" | "metrics" | "logs" | "settings";
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Visual Design
|
|
40
|
+
- Collapsed width: 64px, Expanded: 240px
|
|
41
|
+
- Animated width transition (0.2s easeOut) via Framer Motion
|
|
42
|
+
- Logo with DNA icon and "Hermes Evolution Dashboard" branding
|
|
43
|
+
- Active state: cyan highlight with text-[#0891B2] accent
|
|
44
|
+
- Hover states with subtle cyan tint on both light/dark themes
|
|
45
|
+
- Collapse toggle button at bottom
|
|
46
|
+
|
|
47
|
+
### Key Features
|
|
48
|
+
- AnimatePresence for label fade in/out on collapse
|
|
49
|
+
- Sticky positioning (h-screen, top-0)
|
|
50
|
+
- Scrollable nav area (flex-1, overflow-y-auto)
|
|
51
|
+
- Dual theme support: light (bg-[#E8F9FA]) / dark (bg-[#061014])
|
|
52
|
+
- Cyan border accents with 20% opacity
|
|
File without changes
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Sidebar Navigation Component
|
|
3
|
+
summary: Navigation sidebar with environment status, skill toggles, and core loop controls
|
|
4
|
+
tags: []
|
|
5
|
+
related: []
|
|
6
|
+
keywords: []
|
|
7
|
+
createdAt: '2026-04-28T03:47:02.100Z'
|
|
8
|
+
updatedAt: '2026-04-28T03:47:02.100Z'
|
|
9
|
+
---
|
|
10
|
+
## Reason
|
|
11
|
+
Preserving complete Sidebar navigation component
|
|
12
|
+
|
|
13
|
+
## Raw Concept
|
|
14
|
+
**Task:**
|
|
15
|
+
Document Sidebar navigation component
|
|
16
|
+
|
|
17
|
+
**Files:**
|
|
18
|
+
- src/components/Sidebar.tsx
|
|
19
|
+
|
|
20
|
+
**Timestamp:** 2026-04-28
|
|
21
|
+
|
|
22
|
+
## Narrative
|
|
23
|
+
### Structure
|
|
24
|
+
Sidebar navigation with sections: Environment, Core Loop, Skills, Theme
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
"use client";
|
|
30
|
+
|
|
31
|
+
import { useState } from "react";
|
|
32
|
+
import { motion, AnimatePresence } from "framer-motion";
|
|
33
|
+
import {
|
|
34
|
+
Layers,
|
|
35
|
+
GitBranch,
|
|
36
|
+
Database,
|
|
37
|
+
BarChart3,
|
|
38
|
+
Terminal as TerminalIcon,
|
|
39
|
+
Settings,
|
|
40
|
+
Dna,
|
|
41
|
+
ChevronLeft,
|
|
42
|
+
ChevronRight,
|
|
43
|
+
Cpu,
|
|
44
|
+
BookOpen,
|
|
45
|
+
Bot,
|
|
46
|
+
Sparkles,
|
|
47
|
+
} from "lucide-react";
|
|
48
|
+
|
|
49
|
+
export type Page =
|
|
50
|
+
| "overview"
|
|
51
|
+
| "skills"
|
|
52
|
+
| "evolution"
|
|
53
|
+
| "datasets"
|
|
54
|
+
| "metrics"
|
|
55
|
+
| "logs"
|
|
56
|
+
| "settings"
|
|
57
|
+
;
|
|
58
|
+
|
|
59
|
+
interface NavItem {
|
|
60
|
+
id: Page;
|
|
61
|
+
label: string;
|
|
62
|
+
icon: React.ReactNode;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const navItems: NavItem[] = [
|
|
66
|
+
{ id: "overview", label: "Overview", icon: <Layers className="w-4 h-4" /> },
|
|
67
|
+
{ id: "skills", label: "Skill Hub", icon: <Sparkles className="w-4 h-4" /> },
|
|
68
|
+
{ id: "evolution", label: "Evolution", icon: <GitBranch className="w-4 h-4" /> },
|
|
69
|
+
{ id: "datasets", label: "Datasets", icon: <Database className="w-4 h-4" /> },
|
|
70
|
+
{ id: "metrics", label: "Metrics", icon: <BarChart3 className="w-4 h-4" /> },
|
|
71
|
+
{ id: "logs", label: "Live Logs", icon: <TerminalIcon className="w-4 h-4" /> },
|
|
72
|
+
{ id: "settings", label: "Settings", icon: <Settings className="w-4 h-4" /> },
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
interface SidebarProps {
|
|
76
|
+
activePage: Page;
|
|
77
|
+
onNavigate: (page: Page) => void;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export default function Sidebar({ activePage, onNavigate }: SidebarProps) {
|
|
81
|
+
const [collapsed, setCollapsed] = useState(false);
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<motion.aside
|
|
85
|
+
animate={{ width: collapsed ? 64 : 240 }}
|
|
86
|
+
transition={{ duration: 0.2, ease: "easeOut" }}
|
|
87
|
+
className="h-screen sticky top-0 flex flex-col border-r border-[#B2FFFF]/20 bg-[#E8F9FA] dark:bg-[#061014] backdrop-blur-xl transition-colors duration-300"
|
|
88
|
+
>
|
|
89
|
+
{/* Logo */}
|
|
90
|
+
<div className="flex items-center gap-3 px-4 h-16 border-b border-[#B2FFFF]/15 dark:border-white/[0.06]">
|
|
91
|
+
<div className="w-8 h-8 rounded-lg bg-[#0891B2] dark:bg-[#06B6D4] flex items-center justify-center flex-shrink-0 shadow-sm shadow-[#0891B2]/20">
|
|
92
|
+
<Dna className="w-4 h-4 text-white" />
|
|
93
|
+
</div>
|
|
94
|
+
<AnimatePresence>
|
|
95
|
+
{!collapsed && (
|
|
96
|
+
<motion.div
|
|
97
|
+
initial={{ opacity: 0, x: -10 }}
|
|
98
|
+
animate={{ opacity: 1, x: 0 }}
|
|
99
|
+
exit={{ opacity: 0, x: -10 }}
|
|
100
|
+
className="overflow-hidden"
|
|
101
|
+
>
|
|
102
|
+
<span className="text-sm font-semibold tracking-tight text-[#0F172A] dark:text-white">Hermes</span>
|
|
103
|
+
<p className="text-[10px] text-[#475569] dark:text-slate-400">Evolution Dashboard</p>
|
|
104
|
+
</motion.div>
|
|
105
|
+
)}
|
|
106
|
+
</AnimatePresence>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
{/* Nav items */}
|
|
110
|
+
<nav className="flex-1 py-4 px-2 space-y-1 overflow-y-auto">
|
|
111
|
+
{navItems.map((item) => (
|
|
112
|
+
<button
|
|
113
|
+
key={item.id}
|
|
114
|
+
onClick={() => onNavigate(item.id)}
|
|
115
|
+
className={`w-full flex items-center gap-3 px-3 py-2.5 rounded-xl text-sm transition-all duration-200 ${
|
|
116
|
+
activePage === item.id
|
|
117
|
+
? "bg-[#B2FFFF]/40 text-[#0E7490] dark:bg-[#B2FFFF]/20 dark:text-[#E0FFFF] shadow-sm shadow-[#B2FFFF]/10"
|
|
118
|
+
: "text-[#475569] hover:text-[#0F172A] hover:bg-[#B2FFFF]/20 dark:text-[#B2FFFF] dark:hover:text-[#E0FFFF] dark:hover:bg-[#B2FFFF]/10"
|
|
119
|
+
}`}
|
|
120
|
+
>
|
|
121
|
+
<span
|
|
122
|
+
className={`flex-shrink-0 ${
|
|
123
|
+
activePage === item.id ? "text-[#0891B2] dark:text-[#67E8F9]" : ""
|
|
124
|
+
}`}
|
|
125
|
+
>
|
|
126
|
+
{item.icon}
|
|
127
|
+
</span>
|
|
128
|
+
<AnimatePresence>
|
|
129
|
+
{!collapsed && (
|
|
130
|
+
<motion.span
|
|
131
|
+
initial={{ opacity: 0 }}
|
|
132
|
+
animate={{ opacity: 1 }}
|
|
133
|
+
exit={{ opacity: 0 }}
|
|
134
|
+
className="truncate font-medium"
|
|
135
|
+
>
|
|
136
|
+
{item.label}
|
|
137
|
+
</motion.span>
|
|
138
|
+
)}
|
|
139
|
+
</AnimatePresence>
|
|
140
|
+
</button>
|
|
141
|
+
))}
|
|
142
|
+
</nav>
|
|
143
|
+
|
|
144
|
+
{/* Collapse toggle */}
|
|
145
|
+
<div className="p-2 border-t border-[#B2FFFF]/15 dark:border-[#B2FFFF]/10">
|
|
146
|
+
<button
|
|
147
|
+
onClick={() => setCollapsed(!collapsed)}
|
|
148
|
+
className="w-full flex items-center justify-center p-2 rounded-xl text-[#475569] hover:text-[#0F172A] hover:bg-[#B2FFFF]/20 dark:text-[#A5F3FC]/70 dark:hover:text-[#E0FFFF] dark:hover:bg-[#B2FFFF]/10 transition-colors"
|
|
149
|
+
>
|
|
150
|
+
{collapsed ? (
|
|
151
|
+
<ChevronRight className="w-4 h-4" />
|
|
152
|
+
) : (
|
|
153
|
+
<ChevronLeft className="w-4 h-4" />
|
|
154
|
+
)}
|
|
155
|
+
</button>
|
|
156
|
+
</div>
|
|
157
|
+
</motion.aside>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Sidebar Navigation Component Overview
|
|
2
|
+
|
|
3
|
+
## Key Points
|
|
4
|
+
|
|
5
|
+
- **React "use client" component** using Next.js with Framer Motion for smooth animations
|
|
6
|
+
- **Collapsible sidebar** toggles between expanded (240px) and collapsed (64px) states with 0.2s ease-out transition
|
|
7
|
+
- **7 navigation items**: Overview, Skills, Evolution, Datasets, Metrics, Live Logs, Settings — each with unique Lucide icon
|
|
8
|
+
- **Dark mode support** with dual color token sets for light (`#E8F9FA`, `#B2FFFF`) and dark (`#061014`, `#06B6D4`) themes
|
|
9
|
+
- **Active page highlighting** with distinct cyan-teal styling (`#0891B2`) and shadow effects
|
|
10
|
+
- **Logo branding**: "Hermes/Evolution Dashboard" with DNA helix icon in rounded container
|
|
11
|
+
- Props interface exposes `activePage` and `onNavigate` callback for parent-controlled routing
|
|
12
|
+
|
|
13
|
+
## Structure / Sections
|
|
14
|
+
|
|
15
|
+
| Section | Purpose |
|
|
16
|
+
|---------|---------|
|
|
17
|
+
| **Logo Header** | DNA icon + "Hermes/Evolution Dashboard" branding with border separator |
|
|
18
|
+
| **Navigation** | 7 nav buttons with icons, labels, hover/active states |
|
|
19
|
+
| **Collapse Toggle** | ChevronLeft/Right button to expand/collapse sidebar |
|
|
20
|
+
|
|
21
|
+
## Notable Entities & Patterns
|
|
22
|
+
|
|
23
|
+
- **Page type**: Union type literal (`"overview" | "skills" | "evolution" | ...`)
|
|
24
|
+
- **NavItem interface**: `{ id: Page, label: string, icon: React.ReactNode }`
|
|
25
|
+
- **Animation pattern**: `AnimatePresence` wrapping conditional labels with `initial`/`animate`/`exit` variants
|
|
26
|
+
- **Color scheme**: Cyan-teal palette — `#B2FFFF` (accent), `#0891B2` (primary), `#67E8F9` (dark active)
|
|
27
|
+
- **Hover states**: Semi-transparent cyan overlays (`/20`, `/10` opacity)
|
|
28
|
+
- **Backdrop blur**: `backdrop-blur-xl` on sidebar background
|
|
29
|
+
|
|
30
|
+
## File
|
|
31
|
+
|
|
32
|
+
`src/components/Sidebar.tsx`
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: FunctionCallingPage
|
|
3
|
+
summary: ''
|
|
4
|
+
tags: []
|
|
5
|
+
related: []
|
|
6
|
+
keywords: []
|
|
7
|
+
createdAt: '2026-04-28T01:33:30.536Z'
|
|
8
|
+
updatedAt: '2026-04-28T01:33:30.536Z'
|
|
9
|
+
---
|
|
10
|
+
## Reason
|
|
11
|
+
Preserving complete src/components/pages/FunctionCallingPage.tsx from hermes-dashboard project
|
|
12
|
+
|
|
13
|
+
## Raw Concept
|
|
14
|
+
**Task:**
|
|
15
|
+
Preserve src/components/pages/FunctionCallingPage.tsx
|
|
16
|
+
|
|
17
|
+
**Files:**
|
|
18
|
+
- src/components/pages/FunctionCallingPage.tsx
|
|
19
|
+
|
|
20
|
+
**Timestamp:** 2026-04-28
|
|
21
|
+
|
|
22
|
+
## Narrative
|
|
23
|
+
### Structure
|
|
24
|
+
TSX file with 0 components/functions
|
|
25
|
+
|
|
26
|
+
### Highlights
|
|
27
|
+
Source: hermes-dashboard/src/components/pages/FunctionCallingPage.tsx
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<!-- This page has been removed. See page.tsx for available pages. -->
|
|
33
|
+
|
|
34
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# FunctionCallingPage - Document Overview
|
|
2
|
+
|
|
3
|
+
## Key Points
|
|
4
|
+
|
|
5
|
+
- **Preservation Record**: This document preserves metadata about a removed React page component from the hermes-dashboard project
|
|
6
|
+
- **File Preserved**: `src/components/pages/FunctionCallingPage.tsx` — now deleted from the codebase
|
|
7
|
+
- **Empty Component**: The TSX file contained **0 components/functions** — likely a placeholder or stub file that was never implemented
|
|
8
|
+
- **Removal Status**: Explicitly marked as removed; references `page.tsx` for current available pages
|
|
9
|
+
- **Project Context**: Belongs to the hermes-dashboard project
|
|
10
|
+
- **Timestamps**: Created and updated on 2026-04-28 (identical — single preservation event)
|
|
11
|
+
|
|
12
|
+
## Structure / Sections Summary
|
|
13
|
+
|
|
14
|
+
| Section | Description |
|
|
15
|
+
|---------|-------------|
|
|
16
|
+
| **Reason** | States the preservation purpose: keeping the source reference for the removed file |
|
|
17
|
+
| **Raw Concept** | Contains the task metadata: file path, timestamp, and preservation goal |
|
|
18
|
+
| **Narrative** | Documents structure (0 components/functions) and highlights source location |
|
|
19
|
+
|
|
20
|
+
## Notable Entities & Patterns
|
|
21
|
+
|
|
22
|
+
- **Entity**: `FunctionCallingPage.tsx` — page component file
|
|
23
|
+
- **Entity**: `hermes-dashboard` — parent project name
|
|
24
|
+
- **Entity**: `page.tsx` — referenced as the source for available pages
|
|
25
|
+
- **Pattern**: Removal notice comment `<!-- This page has been removed. See page.tsx for available pages. -->`
|
|
26
|
+
- **Pattern**: Zero-state component (file existed but held no actual code)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
children_hash: 515c06ea24aed64bdce7f7f3687b2a2d29249f0c442224ad38bee6fc316193d0
|
|
3
|
+
compression_ratio: 0.11090342679127727
|
|
4
|
+
condensation_order: 0
|
|
5
|
+
covers: [api_client_library.md]
|
|
6
|
+
covers_token_total: 3210
|
|
7
|
+
summary_level: d0
|
|
8
|
+
token_count: 356
|
|
9
|
+
type: summary
|
|
10
|
+
---
|
|
11
|
+
# API Client Library
|
|
12
|
+
|
|
13
|
+
TypeScript API client (`src/lib/api.ts`) providing typed endpoints for jobs, skills, evolution, and WebSocket streaming. React Query-compatible design with resilient infrastructure.
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
**Resilience Features:**
|
|
18
|
+
- AbortController timeouts (default 15s)
|
|
19
|
+
- Typed `ApiError` with `ErrorKind`: `network | timeout | server | client`
|
|
20
|
+
- Auto-refresh token on 401, retry once
|
|
21
|
+
- WebSocket auto-reconnect after 3s
|
|
22
|
+
|
|
23
|
+
**Auth:** Session token via `X-Hermes-Session-Token` header, lazy-loaded from `/`
|
|
24
|
+
|
|
25
|
+
**Env:** `NEXT_PUBLIC_API_BASE` → fallback `http://127.0.0.1:9119`
|
|
26
|
+
|
|
27
|
+
## Key Interfaces
|
|
28
|
+
|
|
29
|
+
- `SkillInfo`, `SkillDetail` — skill metadata and content
|
|
30
|
+
- `EvolutionJob`, `EvolutionRun` — job lifecycle and results
|
|
31
|
+
- `MetricsData`, `DatasetInfo`, `ConstraintResult` — analysis data
|
|
32
|
+
- `ProviderSummary` — skill provider groupings
|
|
33
|
+
|
|
34
|
+
## Typed API Functions
|
|
35
|
+
|
|
36
|
+
**Skills:** `fetchSkills`, `fetchSkill`, `fetchSkillHistory`, `fetchSkillProviders`, `toggleSkillEnabled`, `deleteProviderSkill`, `deleteGlobalSkill`, `refreshSkills`
|
|
37
|
+
|
|
38
|
+
**Evolution:** `fetchEvolutionRuns`, `fetchSkillDiff`, `startEvolution`
|
|
39
|
+
|
|
40
|
+
**Jobs:** `fetchJobs`, `fetchJob`, `fetchJobLogs`, `cancelJob`
|
|
41
|
+
|
|
42
|
+
**Analysis:** `fetchMetrics`, `fetchDatasets`, `fetchDataset`, `validateSkill`
|
|
43
|
+
|
|
44
|
+
**Infrastructure:** `fetchHealth`, `checkHealth`
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
See **api_client_library.md** for full source with session token logic, WebSocket helper, and typed fetch wrapper.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
A TypeScript API client library providing typed functions for jobs, skills, evolution, and WebSocket management with Hermes session-based auth, AbortController timeouts, categorized errors, and automatic token refresh on 401 responses.
|