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,324 @@
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 - Live Logs</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/css2?family=Inter:wght@400;500;600;700&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap" rel="stylesheet"/>
10
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&amp;display=swap" rel="stylesheet"/>
11
+ <script id="tailwind-config">
12
+ tailwind.config = {
13
+ darkMode: "class",
14
+ theme: {
15
+ extend: {
16
+ "colors": {
17
+ "on-background": "#1a1c1e",
18
+ "surface-tint": "#446083",
19
+ "on-tertiary-container": "#8b8a89",
20
+ "surface-container": "#eeedf1",
21
+ "inverse-surface": "#2f3033",
22
+ "tertiary-container": "#232323",
23
+ "on-surface": "#1a1c1e",
24
+ "on-primary-fixed-variant": "#2c486a",
25
+ "outline": "#73777f",
26
+ "surface-container-high": "#e9e8eb",
27
+ "surface-bright": "#faf9fc",
28
+ "on-tertiary-fixed-variant": "#474746",
29
+ "on-secondary-fixed": "#380d00",
30
+ "tertiary": "#0d0d0d",
31
+ "surface": "#faf9fc",
32
+ "outline-variant": "#c3c6cf",
33
+ "on-primary-fixed": "#001c37",
34
+ "surface-container-highest": "#e3e2e5",
35
+ "primary-fixed-dim": "#acc9f1",
36
+ "primary-fixed": "#d2e4ff",
37
+ "on-secondary": "#ffffff",
38
+ "on-primary": "#ffffff",
39
+ "surface-container-lowest": "#ffffff",
40
+ "surface-dim": "#dad9dd",
41
+ "primary-container": "#002444",
42
+ "error-container": "#ffdad6",
43
+ "secondary-fixed-dim": "#ffb59b",
44
+ "secondary-fixed": "#ffdbcf",
45
+ "on-surface-variant": "#43474e",
46
+ "inverse-on-surface": "#f1f0f3",
47
+ "secondary-container": "#fe753f",
48
+ "on-tertiary": "#ffffff",
49
+ "primary": "#000e20",
50
+ "on-secondary-container": "#631d00",
51
+ "on-error": "#ffffff",
52
+ "secondary": "#a93800",
53
+ "error": "#ba1a1a",
54
+ "surface-variant": "#e3e2e5",
55
+ "on-primary-container": "#708cb2",
56
+ "tertiary-fixed-dim": "#c8c6c5",
57
+ "tertiary-fixed": "#e4e2e1",
58
+ "on-tertiary-fixed": "#1b1c1b",
59
+ "surface-container-low": "#f4f3f6",
60
+ "on-secondary-fixed-variant": "#812900",
61
+ "on-error-container": "#93000a",
62
+ "background": "#faf9fc",
63
+ "inverse-primary": "#acc9f1"
64
+ },
65
+ "borderRadius": {
66
+ "DEFAULT": "0.125rem",
67
+ "lg": "0.25rem",
68
+ "xl": "0.5rem",
69
+ "full": "0.75rem"
70
+ },
71
+ "spacing": {
72
+ "unit": "8px",
73
+ "stack-tight": "4px",
74
+ "container-padding": "24px",
75
+ "max-width": "1440px",
76
+ "gutter": "16px",
77
+ "component-gap": "8px"
78
+ },
79
+ "fontFamily": {
80
+ "body-sm": ["Inter"],
81
+ "body-md": ["Inter"],
82
+ "body-lg": ["Inter"],
83
+ "mono-data": ["JetBrains Mono"],
84
+ "headline-sm": ["Inter"],
85
+ "label-caps": ["Inter"],
86
+ "headline-lg": ["Inter"],
87
+ "mono-label": ["JetBrains Mono"],
88
+ "headline-md": ["Inter"]
89
+ },
90
+ "fontSize": {
91
+ "body-sm": ["12px", { "lineHeight": "16px", "fontWeight": "400" }],
92
+ "body-md": ["14px", { "lineHeight": "20px", "fontWeight": "400" }],
93
+ "body-lg": ["16px", { "lineHeight": "24px", "fontWeight": "400" }],
94
+ "mono-data": ["12px", { "lineHeight": "18px", "fontWeight": "400" }],
95
+ "headline-sm": ["20px", { "lineHeight": "28px", "fontWeight": "600" }],
96
+ "label-caps": ["11px", { "lineHeight": "16px", "letterSpacing": "0.05em", "fontWeight": "700" }],
97
+ "headline-lg": ["32px", { "lineHeight": "40px", "letterSpacing": "-0.02em", "fontWeight": "600" }],
98
+ "mono-label": ["13px", { "lineHeight": "16px", "letterSpacing": "0.02em", "fontWeight": "500" }],
99
+ "headline-md": ["24px", { "lineHeight": "32px", "letterSpacing": "-0.01em", "fontWeight": "600" }]
100
+ }
101
+ },
102
+ },
103
+ }
104
+ </script>
105
+ <style>
106
+ .log-row {
107
+ display: grid;
108
+ grid-template-columns: 140px 80px 120px 1fr;
109
+ gap: 16px;
110
+ padding: 8px 16px;
111
+ border-bottom: 1px solid theme('colors.outline-variant' / 30%);
112
+ }
113
+ .log-row:hover {
114
+ background-color: theme('colors.surface-container-lowest');
115
+ }
116
+ .log-row.error {
117
+ background-color: theme('colors.error-container' / 20%);
118
+ }
119
+ .log-row.error:hover {
120
+ background-color: theme('colors.error-container' / 40%);
121
+ }
122
+ .log-row.warn {
123
+ background-color: theme('colors.secondary-container' / 10%);
124
+ }
125
+
126
+ /* Custom scrollbar for terminal feel */
127
+ ::-webkit-scrollbar {
128
+ width: 8px;
129
+ height: 8px;
130
+ }
131
+ ::-webkit-scrollbar-track {
132
+ background: theme('colors.surface-container-low');
133
+ }
134
+ ::-webkit-scrollbar-thumb {
135
+ background: theme('colors.outline-variant');
136
+ border-radius: 4px;
137
+ }
138
+ ::-webkit-scrollbar-thumb:hover {
139
+ background: theme('colors.outline');
140
+ }
141
+ </style>
142
+ </head>
143
+ <body class="bg-background text-on-background font-body-md h-screen overflow-hidden flex flex-col md:flex-row">
144
+ <!-- SideNavBar (Desktop) -->
145
+ <nav class="hidden md:flex flex-col h-full py-container-padding gap-component-gap bg-surface-container-low docked left-0 w-64 h-screen border-r border-outline-variant/30 flat no shadows z-40">
146
+ <div class="px-gutter mb-6">
147
+ <div class="flex items-center gap-3">
148
+ <div class="w-8 h-8 rounded bg-primary flex items-center justify-center text-on-primary">
149
+ <span class="material-symbols-outlined text-xl" data-icon="hub">hub</span>
150
+ </div>
151
+ <div>
152
+ <h1 class="font-headline-sm text-headline-sm font-black text-primary">Hermes Control</h1>
153
+ <p class="font-label-caps text-label-caps tracking-widest text-on-surface-variant">v4.2.0-Alpha</p>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ <div class="px-gutter mb-4">
158
+ <button class="w-full bg-primary text-on-primary font-mono-label text-mono-label py-2 px-4 rounded flex items-center justify-center gap-2 hover:opacity-90 transition-opacity">
159
+ <span class="material-symbols-outlined text-sm" data-icon="add">add</span>
160
+ New Experiment
161
+ </button>
162
+ </div>
163
+ <div class="flex-1 overflow-y-auto px-2 space-y-1">
164
+ <!-- Tabs -->
165
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
166
+ <span class="material-symbols-outlined" data-icon="dashboard">dashboard</span>
167
+ <span class="font-mono-label text-mono-label">Overview</span>
168
+ </a>
169
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
170
+ <span class="material-symbols-outlined" data-icon="extension">extension</span>
171
+ <span class="font-mono-label text-mono-label">Skill Hub</span>
172
+ </a>
173
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
174
+ <span class="material-symbols-outlined" data-icon="auto_awesome">auto_awesome</span>
175
+ <span class="font-mono-label text-mono-label">Evolution</span>
176
+ </a>
177
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
178
+ <span class="material-symbols-outlined" data-icon="database">database</span>
179
+ <span class="font-mono-label text-mono-label">Datasets</span>
180
+ </a>
181
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
182
+ <span class="material-symbols-outlined" data-icon="monitoring">monitoring</span>
183
+ <span class="font-mono-label text-mono-label">Metrics</span>
184
+ </a>
185
+ <!-- Active Tab -->
186
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-primary border-r-4 border-secondary bg-surface-container-highest scale-98 duration-150" href="#">
187
+ <span class="material-symbols-outlined" data-icon="terminal">terminal</span>
188
+ <span class="font-mono-label text-mono-label">Live Logs</span>
189
+ </a>
190
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all" href="#">
191
+ <span class="material-symbols-outlined" data-icon="inventory_2">inventory_2</span>
192
+ <span class="font-mono-label text-mono-label">Curator</span>
193
+ </a>
194
+ <a class="flex items-center gap-3 px-4 py-2 rounded text-on-surface-variant hover:text-primary hover:bg-surface-container transition-all mt-8" href="#">
195
+ <span class="material-symbols-outlined" data-icon="settings">settings</span>
196
+ <span class="font-mono-label text-mono-label">Settings</span>
197
+ </a>
198
+ </div>
199
+ </nav>
200
+ <!-- Main Content Area -->
201
+ <div class="flex-1 flex flex-col min-w-0 bg-surface">
202
+ <!-- TopAppBar (Mobile) - Simplified for demo, hidden on desktop -->
203
+ <header class="md:hidden flex justify-between items-center w-full px-gutter h-16 z-50 bg-surface border-b border-outline-variant/30 flat no shadows">
204
+ <h1 class="font-headline-sm text-headline-sm font-bold tracking-tighter text-primary">Hermes</h1>
205
+ <div class="flex items-center gap-4">
206
+ <span class="font-label-caps text-label-caps text-on-surface-variant flex items-center gap-1">
207
+ <span class="material-symbols-outlined text-sm" data-icon="sync">sync</span> Syncing
208
+ </span>
209
+ <button class="text-on-surface-variant hover:bg-surface-container-high transition-colors p-2 rounded">
210
+ <span class="material-symbols-outlined" data-icon="notifications">notifications</span>
211
+ </button>
212
+ </div>
213
+ </header>
214
+ <!-- Log Terminal Header / Controls -->
215
+ <div class="px-container-padding py-4 border-b border-outline-variant/30 bg-surface-container-lowest flex flex-col sm:flex-row sm:items-center justify-between gap-4 shrink-0">
216
+ <div class="flex items-center gap-4">
217
+ <div>
218
+ <h2 class="font-headline-sm text-headline-sm text-on-surface m-0">System Output Stream</h2>
219
+ <div class="flex items-center gap-2 mt-1">
220
+ <div class="w-2 h-2 rounded-full bg-primary animate-pulse"></div>
221
+ <span class="font-mono-label text-mono-label text-primary">Streaming</span>
222
+ <span class="font-body-sm text-body-sm text-on-surface-variant ml-2">Connected to ws://hermes-core:8080</span>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ <div class="flex items-center gap-3">
227
+ <div class="relative">
228
+ <span class="material-symbols-outlined absolute left-3 top-1/2 -translate-y-1/2 text-on-surface-variant text-sm" data-icon="search">search</span>
229
+ <input class="pl-9 pr-4 py-1.5 bg-surface border border-outline-variant rounded font-mono-data text-mono-data text-on-surface w-64 focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary shadow-sm placeholder-on-surface-variant/50" placeholder="Filter logs (regex supported)..." type="text"/>
230
+ </div>
231
+ <div class="flex border border-outline-variant rounded overflow-hidden shadow-sm">
232
+ <button class="px-3 py-1.5 bg-surface hover:bg-surface-container-high font-mono-label text-mono-label text-on-surface-variant border-r border-outline-variant transition-colors">ALL</button>
233
+ <button class="px-3 py-1.5 bg-surface hover:bg-surface-container-high font-mono-label text-mono-label text-on-surface-variant border-r border-outline-variant transition-colors">INFO</button>
234
+ <button class="px-3 py-1.5 bg-secondary-container/20 text-secondary font-mono-label text-mono-label border-r border-outline-variant">WARN</button>
235
+ <button class="px-3 py-1.5 bg-surface hover:bg-surface-container-high font-mono-label text-mono-label text-on-surface-variant transition-colors">ERR</button>
236
+ </div>
237
+ <button class="p-1.5 border border-outline-variant rounded text-on-surface-variant hover:bg-surface-container-high shadow-sm transition-colors" title="Pause Stream">
238
+ <span class="material-symbols-outlined text-sm" data-icon="pause">pause</span>
239
+ </button>
240
+ <button class="p-1.5 border border-outline-variant rounded text-on-surface-variant hover:bg-surface-container-high shadow-sm transition-colors" title="Clear Logs">
241
+ <span class="material-symbols-outlined text-sm" data-icon="delete">delete</span>
242
+ </button>
243
+ </div>
244
+ </div>
245
+ <!-- Log Terminal Body -->
246
+ <div class="flex-1 overflow-auto bg-surface-container-lowest font-mono-data text-mono-data text-on-surface p-2 shadow-inner">
247
+ <div class="log-row font-mono-label text-mono-label text-on-surface-variant bg-surface-container-low border-none sticky top-0 z-10 py-2 uppercase">
248
+ <div>Timestamp</div>
249
+ <div>Level</div>
250
+ <div>Source</div>
251
+ <div>Message / Payload</div>
252
+ </div>
253
+ <div class="log-row">
254
+ <div class="text-on-surface-variant">2023-10-27T14:32:01.102Z</div>
255
+ <div class="text-primary font-bold">INFO</div>
256
+ <div class="text-surface-tint">[hermes-core]</div>
257
+ <div>Initialization sequence completed successfully. Ready for tasks.</div>
258
+ </div>
259
+ <div class="log-row">
260
+ <div class="text-on-surface-variant">2023-10-27T14:32:05.441Z</div>
261
+ <div class="text-primary font-bold">INFO</div>
262
+ <div class="text-surface-tint">[task-manager]</div>
263
+ <div>Received new experiment manifest: <span class="text-primary-container bg-primary-fixed-dim/30 px-1 rounded">exp-092-alpha</span></div>
264
+ </div>
265
+ <div class="log-row">
266
+ <div class="text-on-surface-variant">2023-10-27T14:32:06.010Z</div>
267
+ <div class="text-on-primary-fixed-variant font-bold">PROCESS</div>
268
+ <div class="text-surface-tint">[dataset-loader]</div>
269
+ <div>Starting ingestion of standard-eval-set-v4... (0/15000 items)</div>
270
+ </div>
271
+ <div class="log-row warn">
272
+ <div class="text-on-surface-variant">2023-10-27T14:32:12.882Z</div>
273
+ <div class="text-secondary font-bold">WARN</div>
274
+ <div class="text-surface-tint">[memory-alloc]</div>
275
+ <div>High memory usage detected in worker pool B. Threshold 85% exceeded. Initiating graceful GC.</div>
276
+ </div>
277
+ <div class="log-row">
278
+ <div class="text-on-surface-variant">2023-10-27T14:32:15.105Z</div>
279
+ <div class="text-primary font-bold">INFO</div>
280
+ <div class="text-surface-tint">[dataset-loader]</div>
281
+ <div>Ingestion complete. (15000/15000 items). Duration: 9.095s</div>
282
+ </div>
283
+ <div class="log-row error">
284
+ <div class="text-on-surface-variant">2023-10-27T14:32:18.991Z</div>
285
+ <div class="text-error font-bold">ERR</div>
286
+ <div class="text-surface-tint">[eval-engine]</div>
287
+ <div>
288
+ Failed to connect to external model API endpoint. Timeout after 3000ms.
289
+ <div class="mt-2 p-2 bg-error-container/50 border border-error/20 rounded font-mono-data text-[11px] text-on-error-container overflow-x-auto whitespace-pre">
290
+ {
291
+ "error_code": "ECONNRESET",
292
+ "endpoint": "https://api.external-model.test/v1/eval",
293
+ "retry_count": 3,
294
+ "stack": "Error: read ECONNRESET\n at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)"
295
+ }
296
+ </div>
297
+ </div>
298
+ </div>
299
+ <div class="log-row">
300
+ <div class="text-on-surface-variant">2023-10-27T14:32:20.001Z</div>
301
+ <div class="text-primary font-bold">INFO</div>
302
+ <div class="text-surface-tint">[eval-engine]</div>
303
+ <div>Retrying connection... Attempt 4/5.</div>
304
+ </div>
305
+ <div class="log-row">
306
+ <div class="text-on-surface-variant">2023-10-27T14:32:21.450Z</div>
307
+ <div class="text-primary font-bold">INFO</div>
308
+ <div class="text-surface-tint">[eval-engine]</div>
309
+ <div>Connection established. Resuming evaluation pipeline.</div>
310
+ </div>
311
+ <div class="log-row">
312
+ <div class="text-on-surface-variant">2023-10-27T14:32:25.112Z</div>
313
+ <div class="text-on-primary-fixed-variant font-bold">PROCESS</div>
314
+ <div class="text-surface-tint">[eval-engine]</div>
315
+ <div>Processing batch 1/150... [=================&gt; ] 85%</div>
316
+ </div>
317
+ <!-- Loading indicator for tail -->
318
+ <div class="px-4 py-2 mt-2 flex items-center gap-2 text-on-surface-variant/50 font-mono-data text-sm border-t border-outline-variant/10">
319
+ <span class="material-symbols-outlined animate-spin text-sm" data-icon="sync">sync</span>
320
+ Waiting for new logs...
321
+ </div>
322
+ </div>
323
+ </div>
324
+ </body></html>