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.
Files changed (445) hide show
  1. package/.brv/.obsidian/app.json +1 -0
  2. package/.brv/.obsidian/appearance.json +1 -0
  3. package/.brv/.obsidian/core-plugins.json +33 -0
  4. package/.brv/.obsidian/graph.json +22 -0
  5. package/.brv/.obsidian/workspace.json +195 -0
  6. package/.brv/Sin ti/314/201tulo 1.canvas" +1 -0
  7. package/.brv/Sin ti/314/201tulo 2.canvas" +1 -0
  8. package/.brv/Sin ti/314/201tulo.canvas" +1 -0
  9. package/.brv/_queue_status.json +1 -0
  10. package/.brv/config.json +5 -0
  11. package/.brv/context-tree/_index.md +60 -0
  12. package/.brv/context-tree/_manifest.json +165 -0
  13. package/.brv/context-tree/backend/_index.md +24 -0
  14. package/.brv/context-tree/backend/backend/_index.md +40 -0
  15. package/.brv/context-tree/backend/backend/init.abstract.md +0 -0
  16. package/.brv/context-tree/backend/backend/init.md +27 -0
  17. package/.brv/context-tree/backend/backend/init.overview.md +29 -0
  18. package/.brv/context-tree/backend/backend/job_tracker.abstract.md +1 -0
  19. package/.brv/context-tree/backend/backend/job_tracker.md +273 -0
  20. package/.brv/context-tree/backend/backend/job_tracker.overview.md +31 -0
  21. package/.brv/context-tree/backend/backend/main.abstract.md +0 -0
  22. package/.brv/context-tree/backend/backend/main.md +1292 -0
  23. package/.brv/context-tree/backend/backend/main.overview.md +30 -0
  24. package/.brv/context-tree/backend/backend/requirements.abstract.md +1 -0
  25. package/.brv/context-tree/backend/backend/requirements.md +37 -0
  26. package/.brv/context-tree/backend/backend/requirements.overview.md +28 -0
  27. package/.brv/context-tree/docs/_index.md +37 -0
  28. package/.brv/context-tree/docs/api/_index.md +54 -0
  29. package/.brv/context-tree/docs/api/context.md +11 -0
  30. package/.brv/context-tree/docs/api/hermes_api_openapi_specification.abstract.md +0 -0
  31. package/.brv/context-tree/docs/api/hermes_api_openapi_specification.md +468 -0
  32. package/.brv/context-tree/docs/api/hermes_api_openapi_specification.overview.md +44 -0
  33. package/.brv/context-tree/frontend/_index.md +48 -0
  34. package/.brv/context-tree/frontend/hermes_dashboard/_index.md +31 -0
  35. package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.abstract.md +0 -0
  36. package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.md +41 -0
  37. package/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.overview.md +34 -0
  38. package/.brv/context-tree/frontend/src/_index.md +53 -0
  39. package/.brv/context-tree/frontend/src/components/_index.md +52 -0
  40. package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.abstract.md +0 -0
  41. package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.md +161 -0
  42. package/.brv/context-tree/frontend/src/components/sidebar_navigation_component.overview.md +32 -0
  43. package/.brv/context-tree/frontend/src/context.md +10 -0
  44. package/.brv/context-tree/frontend/src/functioncallingpage.abstract.md +0 -0
  45. package/.brv/context-tree/frontend/src/functioncallingpage.md +34 -0
  46. package/.brv/context-tree/frontend/src/functioncallingpage.overview.md +26 -0
  47. package/.brv/context-tree/frontend/src/lib/_index.md +48 -0
  48. package/.brv/context-tree/frontend/src/lib/api_client_library.abstract.md +1 -0
  49. package/.brv/context-tree/frontend/src/lib/api_client_library.md +403 -0
  50. package/.brv/context-tree/frontend/src/lib/api_client_library.overview.md +69 -0
  51. package/.brv/context-tree/frontend/src/page.abstract.md +0 -0
  52. package/.brv/context-tree/frontend/src/page.md +103 -0
  53. package/.brv/context-tree/frontend/src/page.overview.md +7 -0
  54. package/.brv/context-tree/frontend/src/settingspage.abstract.md +0 -0
  55. package/.brv/context-tree/frontend/src/settingspage.md +124 -0
  56. package/.brv/context-tree/frontend/src/settingspage.overview.md +34 -0
  57. package/.brv/context-tree/frontend/src/sidebar.abstract.md +0 -0
  58. package/.brv/context-tree/frontend/src/sidebar.md +170 -0
  59. package/.brv/context-tree/frontend/src/sidebar.overview.md +25 -0
  60. package/.brv/context-tree/meta/_index.md +24 -0
  61. package/.brv/context-tree/meta/curation_context/_index.md +24 -0
  62. package/.brv/context-tree/meta/curation_context/empty_context.abstract.md +4 -0
  63. package/.brv/context-tree/meta/curation_context/empty_context.md +35 -0
  64. package/.brv/context-tree/meta/curation_context/empty_context.overview.md +20 -0
  65. package/.brv/dream-log/drm-1777341062653.json +33 -0
  66. package/.brv/dream-state.json +8 -0
  67. package/.brv/dream.lock +0 -0
  68. package/.brv/review-backups/docs/api/hermes_api_openapi_specification.md +468 -0
  69. package/.claude/settings.local.json +7 -0
  70. package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/app.json +1 -0
  71. package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/appearance.json +1 -0
  72. package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/core-plugins.json +33 -0
  73. package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/graph.json +22 -0
  74. package/.claude/worktrees/phase-2-mcp/.brv/.obsidian/workspace.json +195 -0
  75. package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo 1.canvas" +1 -0
  76. package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo 2.canvas" +1 -0
  77. package/.claude/worktrees/phase-2-mcp/.brv/Sin t/303/255tulo.canvas" +1 -0
  78. package/.claude/worktrees/phase-2-mcp/.brv/_queue_status.json +1 -0
  79. package/.claude/worktrees/phase-2-mcp/.brv/config.json +5 -0
  80. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/_index.md +60 -0
  81. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/_manifest.json +165 -0
  82. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/_index.md +24 -0
  83. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/_index.md +40 -0
  84. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.abstract.md +0 -0
  85. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.md +27 -0
  86. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/init.overview.md +29 -0
  87. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.abstract.md +1 -0
  88. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.md +273 -0
  89. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/job_tracker.overview.md +31 -0
  90. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.abstract.md +0 -0
  91. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.md +1292 -0
  92. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/main.overview.md +30 -0
  93. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.abstract.md +1 -0
  94. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.md +37 -0
  95. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/backend/backend/requirements.overview.md +28 -0
  96. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/_index.md +37 -0
  97. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/_index.md +54 -0
  98. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/context.md +11 -0
  99. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.abstract.md +0 -0
  100. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.md +468 -0
  101. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/docs/api/hermes_api_openapi_specification.overview.md +44 -0
  102. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/_index.md +48 -0
  103. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/_index.md +31 -0
  104. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.abstract.md +0 -0
  105. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.md +41 -0
  106. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/hermes_dashboard/architecture_overview.overview.md +34 -0
  107. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/_index.md +53 -0
  108. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/_index.md +52 -0
  109. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.abstract.md +0 -0
  110. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.md +161 -0
  111. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/components/sidebar_navigation_component.overview.md +32 -0
  112. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/context.md +10 -0
  113. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.abstract.md +0 -0
  114. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.md +34 -0
  115. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/functioncallingpage.overview.md +26 -0
  116. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/_index.md +48 -0
  117. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.abstract.md +1 -0
  118. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.md +403 -0
  119. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/lib/api_client_library.overview.md +69 -0
  120. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.abstract.md +0 -0
  121. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.md +103 -0
  122. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/page.overview.md +7 -0
  123. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.abstract.md +0 -0
  124. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.md +124 -0
  125. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/settingspage.overview.md +34 -0
  126. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.abstract.md +0 -0
  127. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.md +170 -0
  128. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/frontend/src/sidebar.overview.md +25 -0
  129. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/_index.md +24 -0
  130. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/_index.md +24 -0
  131. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.abstract.md +4 -0
  132. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.md +35 -0
  133. package/.claude/worktrees/phase-2-mcp/.brv/context-tree/meta/curation_context/empty_context.overview.md +20 -0
  134. package/.claude/worktrees/phase-2-mcp/.brv/dream-log/drm-1777341062653.json +33 -0
  135. package/.claude/worktrees/phase-2-mcp/.brv/dream-state.json +8 -0
  136. package/.claude/worktrees/phase-2-mcp/.brv/dream.lock +0 -0
  137. package/.claude/worktrees/phase-2-mcp/.brv/review-backups/docs/api/hermes_api_openapi_specification.md +468 -0
  138. package/.claude/worktrees/phase-2-mcp/.claude/settings.local.json +13 -0
  139. package/.claude/worktrees/phase-2-mcp/.kilocode/package-lock.json +378 -0
  140. package/.claude/worktrees/phase-2-mcp/.kilocode/package.json +5 -0
  141. package/.claude/worktrees/phase-2-mcp/AGENTS.md +5 -0
  142. package/.claude/worktrees/phase-2-mcp/CLAUDE.md +29 -0
  143. package/.claude/worktrees/phase-2-mcp/QA_AUDIT_PLAN.md +156 -0
  144. package/.claude/worktrees/phase-2-mcp/README.md +316 -0
  145. package/.claude/worktrees/phase-2-mcp/agent-agnostic-evolution-dashboard.md +405 -0
  146. package/.claude/worktrees/phase-2-mcp/backend/__init__.py +0 -0
  147. package/.claude/worktrees/phase-2-mcp/backend/collectors/__init__.py +0 -0
  148. package/.claude/worktrees/phase-2-mcp/backend/collectors/claude_code_collector.py +277 -0
  149. package/.claude/worktrees/phase-2-mcp/backend/collectors/hermes_collector.py +68 -0
  150. package/.claude/worktrees/phase-2-mcp/backend/curator.py +512 -0
  151. package/.claude/worktrees/phase-2-mcp/backend/eval/__init__.py +19 -0
  152. package/.claude/worktrees/phase-2-mcp/backend/eval/engine.py +116 -0
  153. package/.claude/worktrees/phase-2-mcp/backend/eval/scorers.py +201 -0
  154. package/.claude/worktrees/phase-2-mcp/backend/generate_dataset.py +86 -0
  155. package/.claude/worktrees/phase-2-mcp/backend/job_tracker.py +232 -0
  156. package/.claude/worktrees/phase-2-mcp/backend/main.py +1746 -0
  157. package/.claude/worktrees/phase-2-mcp/backend/mcp_server.py +250 -0
  158. package/.claude/worktrees/phase-2-mcp/backend/promethean/__init__.py +24 -0
  159. package/.claude/worktrees/phase-2-mcp/backend/promethean/cycle_orchestrator.py +270 -0
  160. package/.claude/worktrees/phase-2-mcp/backend/promethean/delta_validator.py +191 -0
  161. package/.claude/worktrees/phase-2-mcp/backend/promethean/dspy_compiler.py +315 -0
  162. package/.claude/worktrees/phase-2-mcp/backend/promethean/gepa_strategist.py +213 -0
  163. package/.claude/worktrees/phase-2-mcp/backend/promethean/models.py +260 -0
  164. package/.claude/worktrees/phase-2-mcp/backend/promethean/skill_deployer.py +195 -0
  165. package/.claude/worktrees/phase-2-mcp/backend/promethean/trace_ingestion.py +142 -0
  166. package/.claude/worktrees/phase-2-mcp/backend/requirements.txt +6 -0
  167. package/.claude/worktrees/phase-2-mcp/backend/sdd_evolve.py +459 -0
  168. package/.claude/worktrees/phase-2-mcp/backend/skill_detector.py +227 -0
  169. package/.claude/worktrees/phase-2-mcp/backend/skill_registry.py +289 -0
  170. package/.claude/worktrees/phase-2-mcp/backend/storage/__init__.py +5 -0
  171. package/.claude/worktrees/phase-2-mcp/backend/storage/run_store.py +393 -0
  172. package/.claude/worktrees/phase-2-mcp/backend/storage/schema.sql +99 -0
  173. package/.claude/worktrees/phase-2-mcp/backend/validate_evolution.py +267 -0
  174. package/.claude/worktrees/phase-2-mcp/components.json +28 -0
  175. package/.claude/worktrees/phase-2-mcp/docs/api/hermes-api.openapi.yaml +438 -0
  176. package/.claude/worktrees/phase-2-mcp/docs/hero.svg +148 -0
  177. package/.claude/worktrees/phase-2-mcp/eslint.config.mjs +18 -0
  178. package/.claude/worktrees/phase-2-mcp/install.sh +245 -0
  179. package/.claude/worktrees/phase-2-mcp/next-env.d.ts +6 -0
  180. package/.claude/worktrees/phase-2-mcp/next.config.ts +32 -0
  181. package/.claude/worktrees/phase-2-mcp/package-lock.json +11936 -0
  182. package/.claude/worktrees/phase-2-mcp/package.json +41 -0
  183. package/.claude/worktrees/phase-2-mcp/pnpm-workspace.yaml +4 -0
  184. package/.claude/worktrees/phase-2-mcp/postcss.config.mjs +7 -0
  185. package/.claude/worktrees/phase-2-mcp/public/file.svg +1 -0
  186. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Bold.otf +0 -0
  187. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Heavy.otf +0 -0
  188. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Medium.otf +0 -0
  189. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Regular.otf +0 -0
  190. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Display-Semibold.otf +0 -0
  191. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Bold.otf +0 -0
  192. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Heavy.otf +0 -0
  193. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Medium.otf +0 -0
  194. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Regular.otf +0 -0
  195. package/.claude/worktrees/phase-2-mcp/public/fonts/SF-Pro-Text-Semibold.otf +0 -0
  196. package/.claude/worktrees/phase-2-mcp/public/globe.svg +1 -0
  197. package/.claude/worktrees/phase-2-mcp/public/next.svg +1 -0
  198. package/.claude/worktrees/phase-2-mcp/public/theme-preview.html +257 -0
  199. package/.claude/worktrees/phase-2-mcp/public/vercel.svg +1 -0
  200. package/.claude/worktrees/phase-2-mcp/public/window.svg +1 -0
  201. package/.claude/worktrees/phase-2-mcp/run.sh +26 -0
  202. package/.claude/worktrees/phase-2-mcp/skills-lock.json +10 -0
  203. package/.claude/worktrees/phase-2-mcp/specs/event-schema.md +223 -0
  204. package/.claude/worktrees/phase-2-mcp/specs/examples/run.jsonl +3 -0
  205. package/.claude/worktrees/phase-2-mcp/src/app/api/[...path]/route.ts +55 -0
  206. package/.claude/worktrees/phase-2-mcp/src/app/api/auth/token/route.ts +22 -0
  207. package/.claude/worktrees/phase-2-mcp/src/app/evolution/page.tsx +589 -0
  208. package/.claude/worktrees/phase-2-mcp/src/app/favicon.ico +0 -0
  209. package/.claude/worktrees/phase-2-mcp/src/app/globals.css +321 -0
  210. package/.claude/worktrees/phase-2-mcp/src/app/layout.tsx +63 -0
  211. package/.claude/worktrees/phase-2-mcp/src/app/page.tsx +70 -0
  212. package/.claude/worktrees/phase-2-mcp/src/app/skills/page.tsx +369 -0
  213. package/.claude/worktrees/phase-2-mcp/src/components/ApiConfigCard.tsx +199 -0
  214. package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.css +1 -0
  215. package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.d.ts +1 -0
  216. package/.claude/worktrees/phase-2-mcp/src/components/ColorBends.jsx +1 -0
  217. package/.claude/worktrees/phase-2-mcp/src/components/CoreLoopToggle.tsx +111 -0
  218. package/.claude/worktrees/phase-2-mcp/src/components/EnvironmentStatus.tsx +176 -0
  219. package/.claude/worktrees/phase-2-mcp/src/components/EvolutionBackground.tsx +1 -0
  220. package/.claude/worktrees/phase-2-mcp/src/components/ReactQueryProvider.tsx +24 -0
  221. package/.claude/worktrees/phase-2-mcp/src/components/Sidebar.tsx +247 -0
  222. package/.claude/worktrees/phase-2-mcp/src/components/SkillDiffViewer.tsx +154 -0
  223. package/.claude/worktrees/phase-2-mcp/src/components/ThemeAwareBackground.tsx +67 -0
  224. package/.claude/worktrees/phase-2-mcp/src/components/ThemeToggle.tsx +54 -0
  225. package/.claude/worktrees/phase-2-mcp/src/components/WelcomeHero.tsx +77 -0
  226. package/.claude/worktrees/phase-2-mcp/src/components/bits/ClickSpark.tsx +116 -0
  227. package/.claude/worktrees/phase-2-mcp/src/components/bits/CountUp.tsx +98 -0
  228. package/.claude/worktrees/phase-2-mcp/src/components/bits/DarkSelect.tsx +95 -0
  229. package/.claude/worktrees/phase-2-mcp/src/components/bits/DecryptedText.tsx +161 -0
  230. package/.claude/worktrees/phase-2-mcp/src/components/bits/ElectricBorder.tsx +184 -0
  231. package/.claude/worktrees/phase-2-mcp/src/components/bits/GlitchText.tsx +34 -0
  232. package/.claude/worktrees/phase-2-mcp/src/components/bits/ShinyText.tsx +55 -0
  233. package/.claude/worktrees/phase-2-mcp/src/components/bits/SpotlightCard.tsx +42 -0
  234. package/.claude/worktrees/phase-2-mcp/src/components/bits/TextType.tsx +95 -0
  235. package/.claude/worktrees/phase-2-mcp/src/components/bits/index.ts +9 -0
  236. package/.claude/worktrees/phase-2-mcp/src/components/pages/CuratorPage.tsx +632 -0
  237. package/.claude/worktrees/phase-2-mcp/src/components/pages/DatasetPage.tsx +271 -0
  238. package/.claude/worktrees/phase-2-mcp/src/components/pages/EvolutionPage.tsx +676 -0
  239. package/.claude/worktrees/phase-2-mcp/src/components/pages/FunctionCallingPage.tsx +1 -0
  240. package/.claude/worktrees/phase-2-mcp/src/components/pages/LogsPage.tsx +272 -0
  241. package/.claude/worktrees/phase-2-mcp/src/components/pages/MetricsPage.tsx +246 -0
  242. package/.claude/worktrees/phase-2-mcp/src/components/pages/OverviewPage.tsx +420 -0
  243. package/.claude/worktrees/phase-2-mcp/src/components/pages/SettingsPage.tsx +88 -0
  244. package/.claude/worktrees/phase-2-mcp/src/components/pages/SkillStudioPage.tsx +376 -0
  245. package/.claude/worktrees/phase-2-mcp/src/components/ui/animated-theme-toggler.tsx +97 -0
  246. package/.claude/worktrees/phase-2-mcp/src/components/ui/button.tsx +67 -0
  247. package/.claude/worktrees/phase-2-mcp/src/components/ui/card.tsx +103 -0
  248. package/.claude/worktrees/phase-2-mcp/src/components/ui/input.tsx +19 -0
  249. package/.claude/worktrees/phase-2-mcp/src/components/ui/separator.tsx +28 -0
  250. package/.claude/worktrees/phase-2-mcp/src/components/ui/sheet.tsx +147 -0
  251. package/.claude/worktrees/phase-2-mcp/src/components/ui/sidebar.tsx +702 -0
  252. package/.claude/worktrees/phase-2-mcp/src/components/ui/skeleton.tsx +13 -0
  253. package/.claude/worktrees/phase-2-mcp/src/components/ui/theme-toggle.tsx +272 -0
  254. package/.claude/worktrees/phase-2-mcp/src/components/ui/tooltip.tsx +57 -0
  255. package/.claude/worktrees/phase-2-mcp/src/hooks/use-mobile.ts +19 -0
  256. package/.claude/worktrees/phase-2-mcp/src/lib/api.ts +455 -0
  257. package/.claude/worktrees/phase-2-mcp/src/lib/queryClient.ts +12 -0
  258. package/.claude/worktrees/phase-2-mcp/src/lib/utils.ts +6 -0
  259. package/.claude/worktrees/phase-2-mcp/stitch/agent_dashboard/DESIGN_SPEC.md +521 -0
  260. package/.claude/worktrees/phase-2-mcp/stitch/agent_dashboard/prototype.html +676 -0
  261. package/.claude/worktrees/phase-2-mcp/stitch/curator_workspace/code.html +448 -0
  262. package/.claude/worktrees/phase-2-mcp/stitch/curator_workspace/screen.png +0 -0
  263. package/.claude/worktrees/phase-2-mcp/stitch/datasets/code.html +479 -0
  264. package/.claude/worktrees/phase-2-mcp/stitch/datasets/screen.png +0 -0
  265. package/.claude/worktrees/phase-2-mcp/stitch/evolution_history/code.html +461 -0
  266. package/.claude/worktrees/phase-2-mcp/stitch/evolution_history/screen.png +0 -0
  267. package/.claude/worktrees/phase-2-mcp/stitch/hermes_dashboard/DESIGN.md +192 -0
  268. package/.claude/worktrees/phase-2-mcp/stitch/hermes_dashboard/DESIGN_SPEC.md +455 -0
  269. package/.claude/worktrees/phase-2-mcp/stitch/hermes_overview/code.html +399 -0
  270. package/.claude/worktrees/phase-2-mcp/stitch/hermes_overview/screen.png +0 -0
  271. package/.claude/worktrees/phase-2-mcp/stitch/live_logs/code.html +324 -0
  272. package/.claude/worktrees/phase-2-mcp/stitch/live_logs/screen.png +0 -0
  273. package/.claude/worktrees/phase-2-mcp/stitch/skill_hub/code.html +596 -0
  274. package/.claude/worktrees/phase-2-mcp/stitch/skill_hub/screen.png +0 -0
  275. package/.claude/worktrees/phase-2-mcp/stitch/system_metrics/code.html +527 -0
  276. package/.claude/worktrees/phase-2-mcp/stitch/system_metrics/screen.png +0 -0
  277. package/.claude/worktrees/phase-2-mcp/stitch/system_settings/code.html +257 -0
  278. package/.claude/worktrees/phase-2-mcp/stitch/system_settings/screen.png +0 -0
  279. package/.claude/worktrees/phase-2-mcp/test_dashboard.py +201 -0
  280. package/.claude/worktrees/phase-2-mcp/tests/collectors/__init__.py +0 -0
  281. package/.claude/worktrees/phase-2-mcp/tests/collectors/fixtures/sample_session.jsonl +7 -0
  282. package/.claude/worktrees/phase-2-mcp/tests/collectors/test_claude_code_collector.py +171 -0
  283. package/.claude/worktrees/phase-2-mcp/tests/collectors/test_hermes_collector.py +167 -0
  284. package/.claude/worktrees/phase-2-mcp/tests/eval/test_engine.py +234 -0
  285. package/.claude/worktrees/phase-2-mcp/tests/eval/test_scorers.py +249 -0
  286. package/.claude/worktrees/phase-2-mcp/tests/storage/__init__.py +0 -0
  287. package/.claude/worktrees/phase-2-mcp/tests/storage/test_run_store.py +359 -0
  288. package/.claude/worktrees/phase-2-mcp/tests/test_curator.py +559 -0
  289. package/.claude/worktrees/phase-2-mcp/tests/test_mcp_server.py +114 -0
  290. package/.claude/worktrees/phase-2-mcp/tsconfig.json +34 -0
  291. package/.env.example +72 -0
  292. package/.kilocode/package-lock.json +378 -0
  293. package/.kilocode/package.json +5 -0
  294. package/AGENTS.md +5 -0
  295. package/CLAUDE.md +29 -0
  296. package/QA_AUDIT_PLAN.md +156 -0
  297. package/README.md +355 -0
  298. package/agent-agnostic-evolution-dashboard.md +405 -0
  299. package/backend/__init__.py +0 -0
  300. package/backend/collectors/__init__.py +0 -0
  301. package/backend/collectors/claude_code_collector.py +277 -0
  302. package/backend/collectors/hermes_collector.py +68 -0
  303. package/backend/curator.py +512 -0
  304. package/backend/eval/__init__.py +19 -0
  305. package/backend/eval/engine.py +116 -0
  306. package/backend/eval/scorers.py +201 -0
  307. package/backend/generate_dataset.py +86 -0
  308. package/backend/job_tracker.py +232 -0
  309. package/backend/main.py +1746 -0
  310. package/backend/mcp_server.py +250 -0
  311. package/backend/promethean/__init__.py +24 -0
  312. package/backend/promethean/cycle_orchestrator.py +270 -0
  313. package/backend/promethean/delta_validator.py +191 -0
  314. package/backend/promethean/dspy_compiler.py +315 -0
  315. package/backend/promethean/gepa_strategist.py +213 -0
  316. package/backend/promethean/models.py +260 -0
  317. package/backend/promethean/skill_deployer.py +195 -0
  318. package/backend/promethean/trace_ingestion.py +142 -0
  319. package/backend/requirements.txt +6 -0
  320. package/backend/sdd_evolve.py +459 -0
  321. package/backend/skill_detector.py +227 -0
  322. package/backend/skill_registry.py +289 -0
  323. package/backend/storage/__init__.py +5 -0
  324. package/backend/storage/run_store.py +393 -0
  325. package/backend/storage/schema.sql +99 -0
  326. package/backend/validate_evolution.py +267 -0
  327. package/bin/genoma.js +250 -0
  328. package/components.json +28 -0
  329. package/docs/api/hermes-api.openapi.yaml +438 -0
  330. package/docs/hero.svg +148 -0
  331. package/eslint.config.mjs +18 -0
  332. package/install.sh +245 -0
  333. package/next-env.d.ts +6 -0
  334. package/next.config.ts +32 -0
  335. package/package.json +46 -0
  336. package/pnpm-workspace.yaml +4 -0
  337. package/postcss.config.mjs +7 -0
  338. package/public/file.svg +1 -0
  339. package/public/fonts/SF-Pro-Display-Bold.otf +0 -0
  340. package/public/fonts/SF-Pro-Display-Heavy.otf +0 -0
  341. package/public/fonts/SF-Pro-Display-Medium.otf +0 -0
  342. package/public/fonts/SF-Pro-Display-Regular.otf +0 -0
  343. package/public/fonts/SF-Pro-Display-Semibold.otf +0 -0
  344. package/public/fonts/SF-Pro-Text-Bold.otf +0 -0
  345. package/public/fonts/SF-Pro-Text-Heavy.otf +0 -0
  346. package/public/fonts/SF-Pro-Text-Medium.otf +0 -0
  347. package/public/fonts/SF-Pro-Text-Regular.otf +0 -0
  348. package/public/fonts/SF-Pro-Text-Semibold.otf +0 -0
  349. package/public/globe.svg +1 -0
  350. package/public/next.svg +1 -0
  351. package/public/theme-preview.html +257 -0
  352. package/public/vercel.svg +1 -0
  353. package/public/window.svg +1 -0
  354. package/run.sh +26 -0
  355. package/scripts/postinstall.js +50 -0
  356. package/skills-lock.json +10 -0
  357. package/specs/event-schema.md +223 -0
  358. package/specs/examples/run.jsonl +3 -0
  359. package/src/app/api/[...path]/route.ts +55 -0
  360. package/src/app/api/auth/token/route.ts +22 -0
  361. package/src/app/evolution/page.tsx +589 -0
  362. package/src/app/favicon.ico +0 -0
  363. package/src/app/globals.css +321 -0
  364. package/src/app/layout.tsx +63 -0
  365. package/src/app/page.tsx +70 -0
  366. package/src/app/skills/page.tsx +369 -0
  367. package/src/components/ApiConfigCard.tsx +199 -0
  368. package/src/components/ColorBends.css +1 -0
  369. package/src/components/ColorBends.d.ts +1 -0
  370. package/src/components/ColorBends.jsx +1 -0
  371. package/src/components/CoreLoopToggle.tsx +111 -0
  372. package/src/components/EnvironmentStatus.tsx +176 -0
  373. package/src/components/EvolutionBackground.tsx +1 -0
  374. package/src/components/ReactQueryProvider.tsx +24 -0
  375. package/src/components/Sidebar.tsx +247 -0
  376. package/src/components/SkillDiffViewer.tsx +154 -0
  377. package/src/components/ThemeAwareBackground.tsx +67 -0
  378. package/src/components/ThemeToggle.tsx +54 -0
  379. package/src/components/WelcomeHero.tsx +77 -0
  380. package/src/components/bits/ClickSpark.tsx +116 -0
  381. package/src/components/bits/CountUp.tsx +98 -0
  382. package/src/components/bits/DarkSelect.tsx +95 -0
  383. package/src/components/bits/DecryptedText.tsx +161 -0
  384. package/src/components/bits/ElectricBorder.tsx +184 -0
  385. package/src/components/bits/GlitchText.tsx +34 -0
  386. package/src/components/bits/ShinyText.tsx +55 -0
  387. package/src/components/bits/SpotlightCard.tsx +42 -0
  388. package/src/components/bits/TextType.tsx +95 -0
  389. package/src/components/bits/index.ts +9 -0
  390. package/src/components/pages/CuratorPage.tsx +632 -0
  391. package/src/components/pages/DatasetPage.tsx +271 -0
  392. package/src/components/pages/EvolutionPage.tsx +676 -0
  393. package/src/components/pages/FunctionCallingPage.tsx +1 -0
  394. package/src/components/pages/LogsPage.tsx +272 -0
  395. package/src/components/pages/MetricsPage.tsx +246 -0
  396. package/src/components/pages/OverviewPage.tsx +420 -0
  397. package/src/components/pages/SettingsPage.tsx +88 -0
  398. package/src/components/pages/SkillStudioPage.tsx +376 -0
  399. package/src/components/ui/animated-theme-toggler.tsx +97 -0
  400. package/src/components/ui/button.tsx +67 -0
  401. package/src/components/ui/card.tsx +103 -0
  402. package/src/components/ui/input.tsx +19 -0
  403. package/src/components/ui/separator.tsx +28 -0
  404. package/src/components/ui/sheet.tsx +147 -0
  405. package/src/components/ui/sidebar.tsx +702 -0
  406. package/src/components/ui/skeleton.tsx +13 -0
  407. package/src/components/ui/theme-toggle.tsx +272 -0
  408. package/src/components/ui/tooltip.tsx +57 -0
  409. package/src/hooks/use-mobile.ts +19 -0
  410. package/src/lib/api.ts +455 -0
  411. package/src/lib/queryClient.ts +12 -0
  412. package/src/lib/utils.ts +6 -0
  413. package/stitch/agent_dashboard/DESIGN_SPEC.md +521 -0
  414. package/stitch/agent_dashboard/prototype.html +676 -0
  415. package/stitch/curator_workspace/code.html +448 -0
  416. package/stitch/curator_workspace/screen.png +0 -0
  417. package/stitch/datasets/code.html +479 -0
  418. package/stitch/datasets/screen.png +0 -0
  419. package/stitch/evolution_history/code.html +461 -0
  420. package/stitch/evolution_history/screen.png +0 -0
  421. package/stitch/hermes_dashboard/DESIGN.md +192 -0
  422. package/stitch/hermes_dashboard/DESIGN_SPEC.md +455 -0
  423. package/stitch/hermes_overview/code.html +399 -0
  424. package/stitch/hermes_overview/screen.png +0 -0
  425. package/stitch/live_logs/code.html +324 -0
  426. package/stitch/live_logs/screen.png +0 -0
  427. package/stitch/skill_hub/code.html +596 -0
  428. package/stitch/skill_hub/screen.png +0 -0
  429. package/stitch/system_metrics/code.html +527 -0
  430. package/stitch/system_metrics/screen.png +0 -0
  431. package/stitch/system_settings/code.html +257 -0
  432. package/stitch/system_settings/screen.png +0 -0
  433. package/test_dashboard.py +201 -0
  434. package/tests/collectors/__init__.py +0 -0
  435. package/tests/collectors/fixtures/sample_session.jsonl +7 -0
  436. package/tests/collectors/test_claude_code_collector.py +171 -0
  437. package/tests/collectors/test_hermes_collector.py +167 -0
  438. package/tests/eval/test_engine.py +234 -0
  439. package/tests/eval/test_scorers.py +249 -0
  440. package/tests/storage/__init__.py +0 -0
  441. package/tests/storage/test_run_store.py +359 -0
  442. package/tests/test_curator.py +559 -0
  443. package/tests/test_e2e_npm.py +621 -0
  444. package/tests/test_mcp_server.py +114 -0
  445. package/tsconfig.json +34 -0
@@ -0,0 +1,596 @@
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 - Skill Hub</title>
7
+ <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
8
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
9
+ <link href="https://fonts.googleapis.com" rel="preconnect"/>
10
+ <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
11
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap" rel="stylesheet"/>
12
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
13
+ <script id="tailwind-config">
14
+ tailwind.config = {
15
+ darkMode: "class",
16
+ theme: {
17
+ extend: {
18
+ "colors": {
19
+ "error-container": "#ffdad6",
20
+ "on-primary": "#ffffff",
21
+ "secondary-fixed-dim": "#ffb59b",
22
+ "secondary-container": "#fe753f",
23
+ "on-background": "#1a1c1e",
24
+ "tertiary-fixed-dim": "#c8c6c5",
25
+ "secondary-fixed": "#ffdbcf",
26
+ "primary-container": "#002444",
27
+ "surface-container-lowest": "#ffffff",
28
+ "inverse-on-surface": "#f1f0f3",
29
+ "background": "#faf9fc",
30
+ "inverse-surface": "#2f3033",
31
+ "surface-container-highest": "#e3e2e5",
32
+ "error": "#ba1a1a",
33
+ "surface-container-high": "#e9e8eb",
34
+ "on-tertiary-fixed": "#1b1c1b",
35
+ "on-error-container": "#93000a",
36
+ "on-tertiary": "#ffffff",
37
+ "surface-dim": "#dad9dd",
38
+ "secondary": "#a93800",
39
+ "primary-fixed": "#d2e4ff",
40
+ "surface": "#faf9fc",
41
+ "on-secondary-container": "#631d00",
42
+ "on-primary-fixed-variant": "#2c486a",
43
+ "surface-container-low": "#f4f3f6",
44
+ "on-secondary-fixed": "#380d00",
45
+ "tertiary": "#0d0d0d",
46
+ "primary-fixed-dim": "#acc9f1",
47
+ "on-secondary-fixed-variant": "#812900",
48
+ "inverse-primary": "#acc9f1",
49
+ "surface-container": "#eeedf1",
50
+ "tertiary-container": "#232323",
51
+ "surface-tint": "#446083",
52
+ "on-secondary": "#ffffff",
53
+ "surface-bright": "#faf9fc",
54
+ "on-tertiary-container": "#8b8a89",
55
+ "tertiary-fixed": "#e4e2e1",
56
+ "outline": "#73777f",
57
+ "on-error": "#ffffff",
58
+ "on-surface-variant": "#43474e",
59
+ "outline-variant": "#c3c6cf",
60
+ "primary": "#000e20",
61
+ "on-surface": "#1a1c1e",
62
+ "on-primary-container": "#708cb2",
63
+ "on-tertiary-fixed-variant": "#474746",
64
+ "surface-variant": "#e3e2e5",
65
+ "on-primary-fixed": "#001c37"
66
+ },
67
+ "borderRadius": {
68
+ "DEFAULT": "0.125rem",
69
+ "lg": "0.25rem",
70
+ "xl": "0.5rem",
71
+ "full": "0.75rem"
72
+ },
73
+ "spacing": {
74
+ "component-gap": "8px",
75
+ "gutter": "16px",
76
+ "unit": "8px",
77
+ "container-padding": "24px",
78
+ "max-width": "1440px",
79
+ "stack-tight": "4px"
80
+ },
81
+ "fontFamily": {
82
+ "headline-md": [
83
+ "Inter"
84
+ ],
85
+ "body-lg": [
86
+ "Inter"
87
+ ],
88
+ "mono-label": [
89
+ "JetBrains Mono"
90
+ ],
91
+ "label-caps": [
92
+ "Inter"
93
+ ],
94
+ "headline-lg": [
95
+ "Inter"
96
+ ],
97
+ "body-sm": [
98
+ "Inter"
99
+ ],
100
+ "body-md": [
101
+ "Inter"
102
+ ],
103
+ "mono-data": [
104
+ "JetBrains Mono"
105
+ ],
106
+ "headline-sm": [
107
+ "Inter"
108
+ ]
109
+ },
110
+ "fontSize": {
111
+ "headline-md": [
112
+ "24px",
113
+ {
114
+ "lineHeight": "32px",
115
+ "letterSpacing": "-0.01em",
116
+ "fontWeight": "600"
117
+ }
118
+ ],
119
+ "body-lg": [
120
+ "16px",
121
+ {
122
+ "lineHeight": "24px",
123
+ "fontWeight": "400"
124
+ }
125
+ ],
126
+ "mono-label": [
127
+ "13px",
128
+ {
129
+ "lineHeight": "16px",
130
+ "letterSpacing": "0.02em",
131
+ "fontWeight": "500"
132
+ }
133
+ ],
134
+ "label-caps": [
135
+ "11px",
136
+ {
137
+ "lineHeight": "16px",
138
+ "letterSpacing": "0.05em",
139
+ "fontWeight": "700"
140
+ }
141
+ ],
142
+ "headline-lg": [
143
+ "32px",
144
+ {
145
+ "lineHeight": "40px",
146
+ "letterSpacing": "-0.02em",
147
+ "fontWeight": "600"
148
+ }
149
+ ],
150
+ "body-sm": [
151
+ "12px",
152
+ {
153
+ "lineHeight": "16px",
154
+ "fontWeight": "400"
155
+ }
156
+ ],
157
+ "body-md": [
158
+ "14px",
159
+ {
160
+ "lineHeight": "20px",
161
+ "fontWeight": "400"
162
+ }
163
+ ],
164
+ "mono-data": [
165
+ "12px",
166
+ {
167
+ "lineHeight": "18px",
168
+ "fontWeight": "400"
169
+ }
170
+ ],
171
+ "headline-sm": [
172
+ "20px",
173
+ {
174
+ "lineHeight": "28px",
175
+ "fontWeight": "600"
176
+ }
177
+ ]
178
+ }
179
+ },
180
+ },
181
+ }
182
+ </script>
183
+ <style>
184
+ .material-symbols-outlined {
185
+ font-variation-settings:
186
+ 'FILL' 0,
187
+ 'wght' 400,
188
+ 'GRAD' 0,
189
+ 'opsz' 24
190
+ }
191
+ .material-symbols-outlined.filled {
192
+ font-variation-settings: 'FILL' 1;
193
+ }
194
+ /* Custom scrollbar for dense data tables */
195
+ ::-webkit-scrollbar {
196
+ width: 8px;
197
+ height: 8px;
198
+ }
199
+ ::-webkit-scrollbar-track {
200
+ background: #f4f3f6; /* surface-container-low */
201
+ }
202
+ ::-webkit-scrollbar-thumb {
203
+ background: #c3c6cf; /* outline-variant */
204
+ border-radius: 4px;
205
+ }
206
+ ::-webkit-scrollbar-thumb:hover {
207
+ background: #73777f; /* outline */
208
+ }
209
+ </style>
210
+ </head>
211
+ <body class="bg-background text-on-background min-h-screen flex font-sans antialiased">
212
+ <!-- SideNavBar -->
213
+ <nav class="hidden md:flex flex-col bg-surface-container-low dark:bg-primary-container border-r border-outline-variant/30 dark:border-outline/20 w-64 h-screen fixed left-0 top-0 py-container-padding gap-component-gap z-40">
214
+ <!-- Header -->
215
+ <div class="px-gutter mb-6 flex items-center gap-3">
216
+ <div class="w-10 h-10 rounded-DEFAULT bg-primary-container flex items-center justify-center text-on-primary shrink-0">
217
+ <span class="material-symbols-outlined">api</span>
218
+ </div>
219
+ <div class="overflow-hidden">
220
+ <h1 class="font-headline-sm text-headline-sm font-black text-primary dark:text-primary-fixed-dim truncate" title="Hermes Control">Hermes Control</h1>
221
+ <p class="font-mono-label text-mono-label text-on-surface-variant truncate" title="v4.2.0-Alpha">v4.2.0-Alpha</p>
222
+ </div>
223
+ </div>
224
+ <!-- Navigation Links -->
225
+ <div class="flex-1 overflow-y-auto px-2 space-y-1">
226
+ <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="#">
227
+ <span class="material-symbols-outlined text-xl">dashboard</span>
228
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Overview</span>
229
+ </a>
230
+ <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" href="#">
231
+ <span class="material-symbols-outlined text-xl filled">extension</span>
232
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Skill Hub</span>
233
+ </a>
234
+ <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="#">
235
+ <span class="material-symbols-outlined text-xl">auto_awesome</span>
236
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Evolution</span>
237
+ </a>
238
+ <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="#">
239
+ <span class="material-symbols-outlined text-xl">database</span>
240
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Datasets</span>
241
+ </a>
242
+ <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="#">
243
+ <span class="material-symbols-outlined text-xl">monitoring</span>
244
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Metrics</span>
245
+ </a>
246
+ <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="#">
247
+ <span class="material-symbols-outlined text-xl">terminal</span>
248
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Live Logs</span>
249
+ </a>
250
+ <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="#">
251
+ <span class="material-symbols-outlined text-xl">inventory_2</span>
252
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Curator</span>
253
+ </a>
254
+ <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="#">
255
+ <span class="material-symbols-outlined text-xl">settings</span>
256
+ <span class="font-label-caps text-label-caps tracking-widest uppercase">Settings</span>
257
+ </a>
258
+ </div>
259
+ <!-- CTA -->
260
+ <div class="px-gutter mt-auto pt-4 border-t border-outline-variant/20">
261
+ <button class="w-full bg-primary-container text-on-primary font-body-md text-body-md py-2 px-4 rounded-DEFAULT hover:bg-primary-container/90 transition-colors flex items-center justify-center gap-2">
262
+ <span class="material-symbols-outlined text-sm">add</span>
263
+ New Experiment
264
+ </button>
265
+ </div>
266
+ </nav>
267
+ <!-- Main Content Area -->
268
+ <div class="flex-1 md:ml-64 flex flex-col min-h-screen">
269
+ <!-- Mobile TopAppBar (Visible only on small screens) -->
270
+ <header class="md:hidden bg-surface flex justify-between items-center w-full px-gutter h-16 z-50 border-b border-outline-variant/30 sticky top-0">
271
+ <div class="flex items-center gap-2">
272
+ <span class="font-headline-sm text-headline-sm font-bold tracking-tighter text-primary">Hermes</span>
273
+ </div>
274
+ <div class="flex items-center gap-4 text-primary">
275
+ <span class="material-symbols-outlined cursor-pointer hover:opacity-80 transition-all">sync</span>
276
+ <span class="material-symbols-outlined cursor-pointer hover:opacity-80 transition-all">notifications</span>
277
+ <div class="w-8 h-8 rounded-full bg-surface-variant border border-outline-variant overflow-hidden">
278
+ <img alt="User Profile Avatar" class="w-full h-full object-cover" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCKZDTAOE93asEed5XxoNgJX-IYBZJs4f4Sfy8rkIQ7t5bj0feupJI3o1HIO9PxA09sJpwSkDoag7s9Apwcm07NQ_Hi3iWeyP8QdE2PRF5H6GBgvq5rdeS0ODvthsonkgOnVj3I3Zhb8lk5Agmkyw9bDr0NhIZlXT7hal6wAICnXW1Nsv29RxCwaK_95i8dMjM_pDyClZk9RipX5SGBMfp-a-_2OmFPExAYn_Ro2qIvSAukqt4jZFz7auRQi7T0nD45piu7G-iNgpaT"/>
279
+ </div>
280
+ </div>
281
+ </header>
282
+ <!-- TopAppBar (Desktop - contextual actions) -->
283
+ <header class="hidden md:flex bg-surface flex justify-between items-center w-full px-container-padding h-16 z-30 border-b border-outline-variant/30 sticky top-0">
284
+ <div class="flex items-center gap-2 text-on-surface-variant">
285
+ <span class="font-body-md text-body-md">Skill Hub</span>
286
+ <span class="material-symbols-outlined text-sm">chevron_right</span>
287
+ <span class="font-mono-label text-mono-label text-on-surface">Active Roster</span>
288
+ </div>
289
+ <div class="flex items-center gap-4">
290
+ <div class="flex items-center text-on-surface-variant font-body-sm text-body-sm gap-1 mr-4">
291
+ <span class="material-symbols-outlined text-sm animate-spin" style="animation-duration: 3s;">sync</span>
292
+ Syncing
293
+ </div>
294
+ <button class="p-2 text-on-surface-variant hover:bg-surface-container-high rounded-DEFAULT transition-colors">
295
+ <span class="material-symbols-outlined">notifications</span>
296
+ </button>
297
+ <div class="w-8 h-8 rounded-full bg-surface-variant border border-outline-variant overflow-hidden cursor-pointer">
298
+ <img alt="User Profile Avatar" class="w-full h-full object-cover" src="https://lh3.googleusercontent.com/aida-public/AB6AXuCHU1U4kBlnzGkGyUuDHQbholCVWCE0zV7Wizcpi5uq630DLa58IxZwy6qLwm_rNeKbE2tXgyMGBDnMj8OogpqMJzQkvR3lwIHOO6TLn7T5zA2q6w2h-72-FCqWzsR3h5aJYd-jSgF6PbosA4zBSP28d1TRmcWTl1HrwYK7d7Aafh0cUGdhgrEIk1SW08xGypqv0HFFG_tay5KG7aqk95SLyBdJvNItL2Q_W8AS_Zpgf0hPKmtQTt-dqgYGwc6lQqJYRLsB_Y3MkL6z"/>
299
+ </div>
300
+ </div>
301
+ </header>
302
+ <!-- Page Content -->
303
+ <main class="flex-1 p-gutter md:p-container-padding overflow-x-hidden">
304
+ <!-- Page Header & Filters -->
305
+ <div class="mb-8 flex flex-col md:flex-row md:items-end justify-between gap-4">
306
+ <div>
307
+ <h2 class="font-headline-lg text-headline-lg text-on-background mb-1">Skill Hub</h2>
308
+ <p class="font-body-md text-body-md text-on-surface-variant">Manage and monitor autonomous skill configurations.</p>
309
+ </div>
310
+ <!-- Filter Bar -->
311
+ <div class="flex flex-wrap items-center gap-3 bg-surface-container-low p-1 rounded-DEFAULT border border-outline-variant/30">
312
+ <div class="relative">
313
+ <span class="material-symbols-outlined absolute left-2 top-1/2 -translate-y-1/2 text-on-surface-variant text-sm">search</span>
314
+ <input class="bg-surface border border-outline-variant/50 text-on-surface font-body-sm text-body-sm rounded pl-8 pr-3 py-1.5 focus:ring-1 focus:ring-primary focus:border-primary outline-none w-48" placeholder="Search skills..." type="text"/>
315
+ </div>
316
+ <div class="h-6 w-px bg-outline-variant/30 hidden sm:block"></div>
317
+ <div class="flex items-center gap-2 px-2">
318
+ <button class="flex items-center gap-1 px-2 py-1 rounded bg-primary-fixed-dim/20 text-on-primary-container font-label-caps text-label-caps uppercase border border-primary-fixed-dim/30 hover:bg-primary-fixed-dim/30 transition-colors">
319
+ <span class="w-2 h-2 rounded-full bg-emerald-500"></span>
320
+ Healthy (4)
321
+ </button>
322
+ <button class="flex items-center gap-1 px-2 py-1 rounded text-on-surface-variant font-label-caps text-label-caps uppercase border border-transparent hover:bg-surface-variant transition-colors">
323
+ <span class="w-2 h-2 rounded-full bg-amber-500"></span>
324
+ Stale (1)
325
+ </button>
326
+ <button class="flex items-center gap-1 px-2 py-1 rounded text-on-surface-variant font-label-caps text-label-caps uppercase border border-transparent hover:bg-surface-variant transition-colors">
327
+ <span class="w-2 h-2 rounded-full bg-secondary"></span>
328
+ Failing (1)
329
+ </button>
330
+ </div>
331
+ <div class="h-6 w-px bg-outline-variant/30 hidden sm:block"></div>
332
+ <button class="px-3 py-1.5 flex items-center gap-1 text-on-surface-variant hover:text-primary font-body-sm text-body-sm transition-colors">
333
+ <span class="material-symbols-outlined text-sm">filter_list</span>
334
+ Filters
335
+ </button>
336
+ </div>
337
+ </div>
338
+ <!-- Bento Grid Layout for Data -->
339
+ <div class="grid grid-cols-1 xl:grid-cols-3 gap-4 mb-8">
340
+ <!-- Status Summary Card -->
341
+ <div class="bg-surface border border-outline-variant/20 rounded-lg p-4 flex flex-col justify-between h-32">
342
+ <div class="flex justify-between items-start">
343
+ <span class="font-label-caps text-label-caps text-on-surface-variant uppercase">Global Health</span>
344
+ <span class="material-symbols-outlined text-emerald-600">monitor_heart</span>
345
+ </div>
346
+ <div>
347
+ <div class="flex items-baseline gap-2">
348
+ <span class="font-headline-md text-headline-md text-on-background">94.2%</span>
349
+ <span class="font-mono-data text-mono-data text-emerald-600 flex items-center"><span class="material-symbols-outlined text-xs">arrow_upward</span> 1.2%</span>
350
+ </div>
351
+ <p class="font-body-sm text-body-sm text-on-surface-variant mt-1">Overall confidence score across all active skills.</p>
352
+ </div>
353
+ </div>
354
+ <!-- Run Rate Card -->
355
+ <div class="bg-surface border border-outline-variant/20 rounded-lg p-4 flex flex-col justify-between h-32">
356
+ <div class="flex justify-between items-start">
357
+ <span class="font-label-caps text-label-caps text-on-surface-variant uppercase">Execution Rate</span>
358
+ <span class="material-symbols-outlined text-on-primary-container">speed</span>
359
+ </div>
360
+ <div>
361
+ <div class="flex items-baseline gap-2">
362
+ <span class="font-headline-md text-headline-md text-on-background">1,248</span>
363
+ <span class="font-mono-data text-mono-data text-on-surface-variant">/ hr</span>
364
+ </div>
365
+ <div class="w-full h-1 bg-surface-container-high rounded-full mt-2 overflow-hidden flex">
366
+ <div class="h-full bg-primary-container w-3/4"></div>
367
+ <div class="h-full bg-secondary w-1/12"></div>
368
+ </div>
369
+ </div>
370
+ </div>
371
+ <!-- Alert Card -->
372
+ <div class="bg-error-container/30 border border-secondary/20 rounded-lg p-4 flex flex-col justify-between h-32">
373
+ <div class="flex justify-between items-start">
374
+ <span class="font-label-caps text-label-caps text-on-secondary-container uppercase">Critical Alerts</span>
375
+ <span class="material-symbols-outlined text-secondary">warning</span>
376
+ </div>
377
+ <div>
378
+ <span class="font-headline-md text-headline-md text-secondary">1</span>
379
+ <p class="font-body-sm text-body-sm text-on-secondary-container mt-1">Data_Ingest_v3 requires immediate retraining.</p>
380
+ </div>
381
+ </div>
382
+ </div>
383
+ <!-- Data Table (Dense) -->
384
+ <div class="bg-surface border border-outline-variant/20 rounded-DEFAULT overflow-hidden">
385
+ <div class="overflow-x-auto">
386
+ <table class="w-full text-left border-collapse min-w-[800px]">
387
+ <thead>
388
+ <tr class="bg-surface-container-low border-b border-outline-variant/30 font-label-caps text-label-caps text-on-surface-variant uppercase">
389
+ <th class="p-3 pl-4 font-normal w-12">Status</th>
390
+ <th class="p-3 font-normal">Skill Name</th>
391
+ <th class="p-3 font-normal w-24">Version</th>
392
+ <th class="p-3 font-normal w-32">Confidence</th>
393
+ <th class="p-3 font-normal w-32">Last Run</th>
394
+ <th class="p-3 font-normal w-32">Trend</th>
395
+ <th class="p-3 pr-4 font-normal text-right w-48">Actions</th>
396
+ </tr>
397
+ </thead>
398
+ <tbody class="font-body-sm text-body-sm divide-y divide-outline-variant/20">
399
+ <!-- Healthy Row -->
400
+ <tr class="hover:bg-surface-container-lowest/50 transition-colors group">
401
+ <td class="p-3 pl-4">
402
+ <div class="w-5 h-5 rounded flex items-center justify-center bg-emerald-100 text-emerald-700 border border-emerald-200" title="Healthy">
403
+ <span class="material-symbols-outlined text-xs filled">check_circle</span>
404
+ </div>
405
+ </td>
406
+ <td class="p-3">
407
+ <div class="font-mono-label text-mono-label text-on-background">NLP_Entity_Extraction</div>
408
+ <div class="text-on-surface-variant text-[10px] mt-0.5">Core categorization pipeline</div>
409
+ </td>
410
+ <td class="p-3 font-mono-data text-mono-data text-on-surface-variant">v4.2.0</td>
411
+ <td class="p-3">
412
+ <div class="flex items-center gap-2">
413
+ <span class="font-mono-data text-mono-data">0.98</span>
414
+ <div class="w-12 h-1 bg-surface-variant rounded-full overflow-hidden">
415
+ <div class="h-full bg-emerald-500 w-[98%]"></div>
416
+ </div>
417
+ </div>
418
+ </td>
419
+ <td class="p-3 text-on-surface-variant">2m ago</td>
420
+ <td class="p-3">
421
+ <!-- Sparkline Placeholder (CSS based) -->
422
+ <div class="w-16 h-4 flex items-end gap-px opacity-70">
423
+ <div class="w-1 bg-outline-variant h-[40%] rounded-t-sm"></div>
424
+ <div class="w-1 bg-outline-variant h-[50%] rounded-t-sm"></div>
425
+ <div class="w-1 bg-outline-variant h-[45%] rounded-t-sm"></div>
426
+ <div class="w-1 bg-outline-variant h-[60%] rounded-t-sm"></div>
427
+ <div class="w-1 bg-emerald-500 h-[80%] rounded-t-sm"></div>
428
+ <div class="w-1 bg-emerald-500 h-[95%] rounded-t-sm"></div>
429
+ </div>
430
+ </td>
431
+ <td class="p-3 pr-4 text-right opacity-0 group-hover:opacity-100 transition-opacity">
432
+ <div class="flex items-center justify-end gap-1">
433
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="View Logs">
434
+ <span class="material-symbols-outlined text-[18px]">receipt_long</span>
435
+ </button>
436
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="Retrain">
437
+ <span class="material-symbols-outlined text-[18px]">model_training</span>
438
+ </button>
439
+ <button class="px-2 py-1 text-xs font-mono-label text-primary-container bg-primary-fixed border border-primary-fixed-dim rounded hover:bg-primary-fixed-dim transition-colors ml-1">
440
+ Promote
441
+ </button>
442
+ </div>
443
+ </td>
444
+ </tr>
445
+ <!-- Failing Row -->
446
+ <tr class="hover:bg-surface-container-lowest/50 transition-colors group bg-error-container/10">
447
+ <td class="p-3 pl-4">
448
+ <div class="w-5 h-5 rounded flex items-center justify-center bg-secondary/10 text-secondary border border-secondary/30" title="Failing">
449
+ <span class="material-symbols-outlined text-xs filled">warning</span>
450
+ </div>
451
+ </td>
452
+ <td class="p-3">
453
+ <div class="font-mono-label text-mono-label text-secondary">Data_Ingest_v3_Legacy</div>
454
+ <div class="text-on-surface-variant text-[10px] mt-0.5">External API parser</div>
455
+ </td>
456
+ <td class="p-3 font-mono-data text-mono-data text-on-surface-variant">v3.1.4</td>
457
+ <td class="p-3">
458
+ <div class="flex items-center gap-2">
459
+ <span class="font-mono-data text-mono-data text-secondary">0.42</span>
460
+ <div class="w-12 h-1 bg-surface-variant rounded-full overflow-hidden">
461
+ <div class="h-full bg-secondary w-[42%]"></div>
462
+ </div>
463
+ </div>
464
+ </td>
465
+ <td class="p-3 text-on-surface-variant">14h ago</td>
466
+ <td class="p-3">
467
+ <div class="w-16 h-4 flex items-end gap-px opacity-70">
468
+ <div class="w-1 bg-outline-variant h-[80%] rounded-t-sm"></div>
469
+ <div class="w-1 bg-outline-variant h-[75%] rounded-t-sm"></div>
470
+ <div class="w-1 bg-outline-variant h-[50%] rounded-t-sm"></div>
471
+ <div class="w-1 bg-secondary h-[40%] rounded-t-sm"></div>
472
+ <div class="w-1 bg-secondary h-[20%] rounded-t-sm"></div>
473
+ <div class="w-1 bg-secondary h-[10%] rounded-t-sm"></div>
474
+ </div>
475
+ </td>
476
+ <td class="p-3 pr-4 text-right">
477
+ <div class="flex items-center justify-end gap-1">
478
+ <button class="p-1.5 text-secondary hover:bg-secondary/10 rounded transition-colors" title="View Logs">
479
+ <span class="material-symbols-outlined text-[18px]">receipt_long</span>
480
+ </button>
481
+ <button class="px-2 py-1 text-xs font-mono-label text-on-primary bg-secondary rounded hover:bg-secondary/90 transition-colors ml-1 shadow-sm">
482
+ Retrain
483
+ </button>
484
+ </div>
485
+ </td>
486
+ </tr>
487
+ <!-- Stale Row -->
488
+ <tr class="hover:bg-surface-container-lowest/50 transition-colors group">
489
+ <td class="p-3 pl-4">
490
+ <div class="w-5 h-5 rounded flex items-center justify-center bg-amber-100 text-amber-700 border border-amber-200" title="Stale">
491
+ <span class="material-symbols-outlined text-xs">hourglass_empty</span>
492
+ </div>
493
+ </td>
494
+ <td class="p-3">
495
+ <div class="font-mono-label text-mono-label text-on-background">Image_Res_Enhancer</div>
496
+ <div class="text-on-surface-variant text-[10px] mt-0.5">Batch processing worker</div>
497
+ </td>
498
+ <td class="p-3 font-mono-data text-mono-data text-on-surface-variant">v4.1.2</td>
499
+ <td class="p-3">
500
+ <div class="flex items-center gap-2">
501
+ <span class="font-mono-data text-mono-data">0.85</span>
502
+ <div class="w-12 h-1 bg-surface-variant rounded-full overflow-hidden">
503
+ <div class="h-full bg-amber-500 w-[85%]"></div>
504
+ </div>
505
+ </div>
506
+ </td>
507
+ <td class="p-3 text-on-surface-variant">4d ago</td>
508
+ <td class="p-3">
509
+ <div class="w-16 h-4 flex items-end gap-px opacity-70">
510
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
511
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
512
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
513
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
514
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
515
+ <div class="w-1 bg-outline-variant h-[85%] rounded-t-sm"></div>
516
+ </div>
517
+ </td>
518
+ <td class="p-3 pr-4 text-right opacity-0 group-hover:opacity-100 transition-opacity">
519
+ <div class="flex items-center justify-end gap-1">
520
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="View Logs">
521
+ <span class="material-symbols-outlined text-[18px]">receipt_long</span>
522
+ </button>
523
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="Wake">
524
+ <span class="material-symbols-outlined text-[18px]">play_arrow</span>
525
+ </button>
526
+ </div>
527
+ </td>
528
+ </tr>
529
+ <!-- Healthy Row 2 -->
530
+ <tr class="hover:bg-surface-container-lowest/50 transition-colors group">
531
+ <td class="p-3 pl-4">
532
+ <div class="w-5 h-5 rounded flex items-center justify-center bg-emerald-100 text-emerald-700 border border-emerald-200" title="Healthy">
533
+ <span class="material-symbols-outlined text-xs filled">check_circle</span>
534
+ </div>
535
+ </td>
536
+ <td class="p-3">
537
+ <div class="font-mono-label text-mono-label text-on-background">Sentiment_Analysis_Core</div>
538
+ <div class="text-on-surface-variant text-[10px] mt-0.5">Real-time stream parser</div>
539
+ </td>
540
+ <td class="p-3 font-mono-data text-mono-data text-on-surface-variant">v4.2.1</td>
541
+ <td class="p-3">
542
+ <div class="flex items-center gap-2">
543
+ <span class="font-mono-data text-mono-data">0.96</span>
544
+ <div class="w-12 h-1 bg-surface-variant rounded-full overflow-hidden">
545
+ <div class="h-full bg-emerald-500 w-[96%]"></div>
546
+ </div>
547
+ </div>
548
+ </td>
549
+ <td class="p-3 text-on-surface-variant">Just now</td>
550
+ <td class="p-3">
551
+ <div class="w-16 h-4 flex items-end gap-px opacity-70">
552
+ <div class="w-1 bg-outline-variant h-[70%] rounded-t-sm"></div>
553
+ <div class="w-1 bg-outline-variant h-[75%] rounded-t-sm"></div>
554
+ <div class="w-1 bg-outline-variant h-[80%] rounded-t-sm"></div>
555
+ <div class="w-1 bg-emerald-500 h-[85%] rounded-t-sm"></div>
556
+ <div class="w-1 bg-emerald-500 h-[92%] rounded-t-sm"></div>
557
+ <div class="w-1 bg-emerald-500 h-[98%] rounded-t-sm"></div>
558
+ </div>
559
+ </td>
560
+ <td class="p-3 pr-4 text-right opacity-0 group-hover:opacity-100 transition-opacity">
561
+ <div class="flex items-center justify-end gap-1">
562
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="View Logs">
563
+ <span class="material-symbols-outlined text-[18px]">receipt_long</span>
564
+ </button>
565
+ <button class="p-1.5 text-on-surface-variant hover:text-primary hover:bg-surface-variant rounded transition-colors" title="Retrain">
566
+ <span class="material-symbols-outlined text-[18px]">model_training</span>
567
+ </button>
568
+ <button class="px-2 py-1 text-xs font-mono-label text-primary-container bg-primary-fixed border border-primary-fixed-dim rounded hover:bg-primary-fixed-dim transition-colors ml-1">
569
+ Promote
570
+ </button>
571
+ </div>
572
+ </td>
573
+ </tr>
574
+ </tbody>
575
+ </table>
576
+ </div>
577
+ </div>
578
+ <!-- Empty State / Onboarding (Commented out visually, but structured for demonstration if no skills were present. We will show it below the table to satisfy the prompt requirement while keeping the data table visible) -->
579
+ <div class="mt-12 bg-surface-container-low border border-outline-variant/30 border-dashed rounded-xl p-8 text-center max-w-2xl mx-auto flex flex-col items-center">
580
+ <div class="w-16 h-16 bg-surface-variant rounded-full flex items-center justify-center text-on-surface-variant mb-4">
581
+ <span class="material-symbols-outlined text-3xl">psychology</span>
582
+ </div>
583
+ <h3 class="font-headline-sm text-headline-sm text-on-background mb-2">Deploy a New Autonomous Skill</h3>
584
+ <p class="font-body-md text-body-md text-on-surface-variant mb-6 max-w-md">No additional skills found in this workspace. Upload a configured manifest or select from the pre-trained Curator models to begin.</p>
585
+ <div class="flex gap-4">
586
+ <button class="bg-primary-container text-on-primary font-body-md text-body-md py-2 px-6 rounded-DEFAULT hover:bg-primary-container/90 transition-colors border border-transparent">
587
+ Upload Manifest
588
+ </button>
589
+ <button class="bg-transparent text-primary-container font-body-md text-body-md py-2 px-6 rounded-DEFAULT hover:bg-surface-variant transition-colors border border-primary-container">
590
+ Browse Curator
591
+ </button>
592
+ </div>
593
+ </div>
594
+ </main>
595
+ </div>
596
+ </body></html>