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,41 @@
1
+ {
2
+ "name": "hermes-dashboard",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev",
7
+ "build": "next build",
8
+ "start": "next start",
9
+ "lint": "eslint"
10
+ },
11
+ "dependencies": {
12
+ "@chenglou/pretext": "^0.0.6",
13
+ "@tanstack/react-query": "^5.99.2",
14
+ "class-variance-authority": "^0.7.1",
15
+ "clsx": "^2.1.1",
16
+ "framer-motion": "^12.38.0",
17
+ "lucide-react": "^1.8.0",
18
+ "next": "^16.2.6",
19
+ "next-themes": "^0.4.6",
20
+ "radix-ui": "^1.4.3",
21
+ "react": "19.2.4",
22
+ "react-bits": "^1.0.5",
23
+ "react-dom": "19.2.4",
24
+ "shadcn": "^4.4.0",
25
+ "tailwind-merge": "^3.5.0",
26
+ "tw-animate-css": "^1.4.0",
27
+ "vis-data": "^8.0.3",
28
+ "vis-network": "^10.0.2"
29
+ },
30
+ "devDependencies": {
31
+ "@next/bundle-analyzer": "^16.2.4",
32
+ "@tailwindcss/postcss": "^4",
33
+ "@types/node": "^20",
34
+ "@types/react": "^19",
35
+ "@types/react-dom": "^19",
36
+ "eslint": "^9",
37
+ "eslint-config-next": "16.2.4",
38
+ "tailwindcss": "^4",
39
+ "typescript": "^5"
40
+ }
41
+ }
@@ -0,0 +1,4 @@
1
+ allowBuilds:
2
+ msw: set this to true or false
3
+ sharp: set this to true or false
4
+ unrs-resolver: set this to true or false
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
5
+ };
6
+
7
+ export default config;
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1,257 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Genoma — Light Theme Preview</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script>
9
+ tailwind.config = {
10
+ theme: {
11
+ extend: {
12
+ colors: {
13
+ base: '#F4F7FA',
14
+ surface: '#FFFFFF',
15
+ 'surface-hover': '#F0F4F8',
16
+ primary: {
17
+ 50: '#ECFEFF', 100: '#CFFAFE', 200: '#A5F3FC',
18
+ 300: '#67E8F9', 400: '#22D3EE', 500: '#06B6D4',
19
+ 600: '#0891B2', 700: '#0E7490', 800: '#155E75', 900: '#164E63',
20
+ },
21
+ semantic: {
22
+ success: '#2DD4BF', warning: '#FBBF24',
23
+ error: '#E11D48', info: '#0EA5E9',
24
+ },
25
+ txt: {
26
+ primary: '#0F172A', secondary: '#475569',
27
+ tertiary: '#94A3B8', inverse: '#F8FAFC',
28
+ }
29
+ },
30
+ boxShadow: {
31
+ 'evo-sm': '0 1px 2px 0 rgba(15, 23, 42, 0.05)',
32
+ 'evo-md': '0 4px 6px -1px rgba(15, 23, 42, 0.08), 0 2px 4px -2px rgba(15, 23, 42, 0.04)',
33
+ 'evo-lg': '0 10px 15px -3px rgba(15, 23, 42, 0.08), 0 4px 6px -4px rgba(15, 23, 42, 0.04)',
34
+ 'evo-glow': '0 0 0 3px rgba(6, 182, 212, 0.15)',
35
+ }
36
+ }
37
+ }
38
+ }
39
+ </script>
40
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
41
+ <style>body { font-family: 'Inter', sans-serif; }</style>
42
+ </head>
43
+ <body class="bg-base min-h-screen">
44
+ <!-- Sidebar -->
45
+ <div class="fixed left-0 top-0 h-full w-16 bg-surface border-r border-gray-200 flex flex-col items-center py-6 gap-4 z-50">
46
+ <div class="w-10 h-10 rounded-xl bg-primary-600 flex items-center justify-center text-white font-bold text-lg">G</div>
47
+ <div class="w-8 h-8 rounded-lg bg-primary-50 text-primary-700 flex items-center justify-center text-sm">🏠</div>
48
+ <div class="w-8 h-8 rounded-lg bg-primary-600 text-white flex items-center justify-center text-sm shadow-evo-md">⚡</div>
49
+ <div class="w-8 h-8 rounded-lg hover:bg-surface-hover text-txt-secondary flex items-center justify-center text-sm transition-colors">📊</div>
50
+ <div class="w-8 h-8 rounded-lg hover:bg-surface-hover text-txt-secondary flex items-center justify-center text-sm transition-colors">🧠</div>
51
+ </div>
52
+
53
+ <!-- Main Content -->
54
+ <div class="ml-16 p-8">
55
+ <!-- Header -->
56
+ <div class="flex items-center justify-between mb-8">
57
+ <div class="flex items-center gap-3">
58
+ <div class="w-10 h-10 rounded-xl bg-primary-100 flex items-center justify-center">
59
+ <span class="text-xl">⚡</span>
60
+ </div>
61
+ <div>
62
+ <h1 class="text-2xl font-bold text-txt-primary">Skill Hub</h1>
63
+ <p class="text-sm text-txt-secondary">Tus skills locales, organizadas por proveedor y categoría</p>
64
+ </div>
65
+ </div>
66
+ <div class="flex items-center gap-3">
67
+ <button class="px-4 py-2 bg-primary-600 text-white rounded-lg text-sm font-medium hover:bg-primary-700 transition-colors shadow-evo-md">
68
+ 🎨 Aplicar Tema
69
+ </button>
70
+ <button class="px-4 py-2 bg-surface border border-gray-200 text-txt-secondary rounded-lg text-sm hover:bg-surface-hover transition-colors">
71
+ 🔄 Refresh
72
+ </button>
73
+ </div>
74
+ </div>
75
+
76
+ <!-- Search + Filters -->
77
+ <div class="flex gap-4 mb-6">
78
+ <div class="relative flex-1">
79
+ <span class="absolute left-3 top-1/2 -translate-y-1/2 text-txt-tertiary">🔍</span>
80
+ <input type="text" placeholder="Buscar skills por nombre, descripción o categoría..."
81
+ class="w-full pl-10 pr-4 py-3 bg-surface border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-500/30 focus:border-primary-400 text-txt-primary shadow-evo-sm"
82
+ />
83
+ </div>
84
+ <select class="px-4 py-3 bg-surface border border-gray-200 rounded-xl text-txt-secondary focus:outline-none focus:ring-2 focus:ring-primary-500/30 shadow-evo-sm">
85
+ <option>Todos los providers</option>
86
+ <option>Agency</option>
87
+ <option>Hermes</option>
88
+ </select>
89
+ <select class="px-4 py-3 bg-surface border border-gray-200 rounded-xl text-txt-secondary focus:outline-none focus:ring-2 focus:ring-primary-500/30 shadow-evo-sm">
90
+ <option>Todas las categorías</option>
91
+ <option>software-development</option>
92
+ <option>devops</option>
93
+ </select>
94
+ </div>
95
+
96
+ <!-- Stats Cards -->
97
+ <div class="grid grid-cols-4 gap-4 mb-8">
98
+ <div class="bg-surface rounded-2xl border border-gray-100 p-5 shadow-evo-md hover:shadow-evo-lg transition-shadow">
99
+ <div class="text-2xl mb-2">🏢</div>
100
+ <div class="text-sm font-medium text-txt-secondary capitalize">Agency</div>
101
+ <div class="text-3xl font-bold text-primary-700 mt-1">1173/1185</div>
102
+ <div class="text-xs text-txt-tertiary mt-1">habilitadas</div>
103
+ </div>
104
+ <div class="bg-surface rounded-2xl border border-gray-100 p-5 shadow-evo-md hover:shadow-evo-lg transition-shadow">
105
+ <div class="text-2xl mb-2">🪽</div>
106
+ <div class="text-sm font-medium text-txt-secondary capitalize">Hermes</div>
107
+ <div class="text-3xl font-bold text-primary-700 mt-1">127/127</div>
108
+ <div class="text-xs text-txt-tertiary mt-1">habilitadas</div>
109
+ </div>
110
+ <div class="bg-surface rounded-2xl border border-gray-100 p-5 shadow-evo-md hover:shadow-evo-lg transition-shadow">
111
+ <div class="text-2xl mb-2">🤖</div>
112
+ <div class="text-sm font-medium text-txt-secondary capitalize">Claude-Code</div>
113
+ <div class="text-3xl font-bold text-primary-700 mt-1">99/99</div>
114
+ <div class="text-xs text-txt-tertiary mt-1">habilitadas</div>
115
+ </div>
116
+ <div class="bg-surface rounded-2xl border border-gray-100 p-5 shadow-evo-md hover:shadow-evo-lg transition-shadow">
117
+ <div class="text-2xl mb-2">⚡</div>
118
+ <div class="text-sm font-medium text-txt-secondary capitalize">Kilocode</div>
119
+ <div class="text-3xl font-bold text-primary-700 mt-1">27/27</div>
120
+ <div class="text-xs text-txt-tertiary mt-1">habilitadas</div>
121
+ </div>
122
+ </div>
123
+
124
+ <!-- Provider: Hermes (Expanded) -->
125
+ <div class="bg-surface rounded-2xl border border-gray-100 shadow-evo-md overflow-hidden mb-6">
126
+ <div class="flex items-center justify-between p-5 cursor-pointer hover:bg-surface-hover transition-colors">
127
+ <div class="flex items-center gap-3">
128
+ <span class="text-2xl">🪽</span>
129
+ <div>
130
+ <h2 class="text-lg font-bold text-txt-primary capitalize">Hermes</h2>
131
+ <p class="text-xs text-txt-tertiary">25 categorías</p>
132
+ </div>
133
+ </div>
134
+ <div class="flex items-center gap-4">
135
+ <span class="text-sm text-txt-secondary">127/127 activas</span>
136
+ <span class="text-txt-tertiary">▼</span>
137
+ </div>
138
+ </div>
139
+
140
+ <div class="px-5 pb-5 space-y-3">
141
+ <!-- Category: software-development -->
142
+ <div class="border border-gray-100 rounded-xl overflow-hidden">
143
+ <div class="flex items-center justify-between p-3 hover:bg-base transition-colors cursor-pointer">
144
+ <div class="flex items-center gap-2">
145
+ <span class="text-gray-400">📁</span>
146
+ <span class="text-sm font-semibold text-primary-700 bg-primary-50 px-2 py-0.5 rounded-lg border border-primary-200">
147
+ software-development
148
+ </span>
149
+ <span class="text-xs text-txt-tertiary">32 skills</span>
150
+ </div>
151
+ <span class="text-txt-tertiary text-sm">▼</span>
152
+ </div>
153
+ <div class="p-3 pt-0 grid grid-cols-3 gap-2">
154
+ <div class="p-3 bg-base rounded-lg border border-gray-100 hover:border-primary-300 hover:shadow-evo-sm transition-all">
155
+ <div class="flex items-start justify-between">
156
+ <div>
157
+ <h3 class="font-medium text-txt-primary text-sm">python-cli-to-dashboard</h3>
158
+ <p class="text-xs text-txt-secondary mt-1">Wrap Python CLI in FastAPI</p>
159
+ </div>
160
+ <div class="w-8 h-8 rounded-lg bg-semantic-success/10 text-semantic-success flex items-center justify-center text-xs">✓</div>
161
+ </div>
162
+ </div>
163
+ <div class="p-3 bg-base rounded-lg border border-gray-100 hover:border-primary-300 hover:shadow-evo-sm transition-all">
164
+ <div class="flex items-start justify-between">
165
+ <div>
166
+ <h3 class="font-medium text-txt-primary text-sm">tauri-linux-compat</h3>
167
+ <p class="text-xs text-txt-secondary mt-1">Port Tauri to Linux</p>
168
+ </div>
169
+ <div class="w-8 h-8 rounded-lg bg-semantic-success/10 text-semantic-success flex items-center justify-center text-xs">✓</div>
170
+ </div>
171
+ </div>
172
+ <div class="p-3 bg-base rounded-lg border border-gray-100 hover:border-primary-300 hover:shadow-evo-sm transition-all">
173
+ <div class="flex items-start justify-between">
174
+ <div>
175
+ <h3 class="font-medium text-txt-primary text-sm">test-driven-dev</h3>
176
+ <p class="text-xs text-txt-secondary mt-1">TDD workflow</p>
177
+ </div>
178
+ <div class="w-8 h-8 rounded-lg bg-semantic-success/10 text-semantic-success flex items-center justify-center text-xs">✓</div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ <button class="w-full py-2 text-sm text-primary-600 hover:text-primary-700 hover:bg-primary-50 transition-colors border-t border-dashed border-gray-200">
183
+ Mostrar más (29 restantes)
184
+ </button>
185
+ </div>
186
+
187
+ <!-- Category: devops -->
188
+ <div class="border border-gray-100 rounded-xl overflow-hidden">
189
+ <div class="flex items-center justify-between p-3 hover:bg-base transition-colors cursor-pointer">
190
+ <div class="flex items-center gap-2">
191
+ <span class="text-gray-400">📁</span>
192
+ <span class="text-sm font-semibold text-semantic-info bg-sky-50 px-2 py-0.5 rounded-lg border border-sky-200">
193
+ devops
194
+ </span>
195
+ <span class="text-xs text-txt-tertiary">16 skills</span>
196
+ </div>
197
+ <span class="text-txt-tertiary text-sm">▼</span>
198
+ </div>
199
+ </div>
200
+
201
+ <!-- Category: github -->
202
+ <div class="border border-gray-100 rounded-xl overflow-hidden">
203
+ <div class="flex items-center justify-between p-3 hover:bg-base transition-colors cursor-pointer">
204
+ <div class="flex items-center gap-2">
205
+ <span class="text-gray-400">📁</span>
206
+ <span class="text-sm font-semibold text-orange-600 bg-orange-50 px-2 py-0.5 rounded-lg border border-orange-200">
207
+ github
208
+ </span>
209
+ <span class="text-xs text-txt-tertiary">6 skills</span>
210
+ </div>
211
+ <span class="text-txt-tertiary text-sm">▼</span>
212
+ </div>
213
+ </div>
214
+
215
+ <!-- Category: creative -->
216
+ <div class="border border-gray-100 rounded-xl overflow-hidden">
217
+ <div class="flex items-center justify-between p-3 hover:bg-base transition-colors cursor-pointer">
218
+ <div class="flex items-center gap-2">
219
+ <span class="text-gray-400">📁</span>
220
+ <span class="text-sm font-semibold text-purple-600 bg-purple-50 px-2 py-0.5 rounded-lg border border-purple-200">
221
+ creative
222
+ </span>
223
+ <span class="text-xs text-txt-tertiary">13 skills</span>
224
+ </div>
225
+ <span class="text-txt-tertiary text-sm">▼</span>
226
+ </div>
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+ <!-- Provider: Claude-Code (Collapsed) -->
232
+ <div class="bg-surface rounded-2xl border border-gray-100 shadow-evo-sm overflow-hidden mb-6">
233
+ <div class="flex items-center justify-between p-5 cursor-pointer hover:bg-surface-hover transition-colors">
234
+ <div class="flex items-center gap-3">
235
+ <span class="text-2xl">🤖</span>
236
+ <div>
237
+ <h2 class="text-lg font-bold text-txt-primary capitalize">Claude-Code</h2>
238
+ <p class="text-xs text-txt-tertiary">1 categoría</p>
239
+ </div>
240
+ </div>
241
+ <div class="flex items-center gap-4">
242
+ <span class="text-sm text-txt-secondary">99/99 activas</span>
243
+ <span class="text-txt-tertiary">▶</span>
244
+ </div>
245
+ </div>
246
+ </div>
247
+ </div>
248
+
249
+ <!-- Floating Theme Toggle -->
250
+ <div class="fixed bottom-6 right-6 flex gap-2">
251
+ <div class="bg-surface border border-gray-200 rounded-xl p-1 shadow-evo-lg flex gap-1">
252
+ <button class="px-3 py-1.5 rounded-lg bg-primary-600 text-white text-sm font-medium">☀️ Light</button>
253
+ <button class="px-3 py-1.5 rounded-lg hover:bg-gray-100 text-txt-secondary text-sm transition-colors">🌙 Dark</button>
254
+ </div>
255
+ </div>
256
+ </body>
257
+ </html>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
@@ -0,0 +1,26 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ cd /Users/leandrothomas/Desktop/Projects/genoma
5
+
6
+ # Install deps once (silent)
7
+ echo "Installing dependencies..."
8
+ python3 -m pip install fastapi uvicorn pydantic python-dotenv --break-system-packages -q 2>/dev/null || true
9
+ pnpm install --ignore-scripts -q 2>/dev/null || true
10
+
11
+ echo "Starting backend on :8000..."
12
+ python3 -m uvicorn backend.main:app --reload --port 8000 &
13
+ BACKEND_PID=$!
14
+
15
+ echo "Starting MCP server (stdio)..."
16
+ python3 -m backend.mcp_server &
17
+ MCP_PID=$!
18
+
19
+ echo "Starting frontend on :3000..."
20
+ sleep 2
21
+
22
+ # Kill backend + MCP if script exits
23
+ trap "kill $BACKEND_PID $MCP_PID 2>/dev/null || true" EXIT
24
+
25
+ # Run frontend (foreground — Ctrl+C kills both)
26
+ pnpm dev
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 1,
3
+ "skills": {
4
+ "frontend-design": {
5
+ "source": "anthropics/skills",
6
+ "sourceType": "github",
7
+ "computedHash": "063a0e6448123cd359ad0044cc46b0e490cc7964d45ef4bb9fd842bd2ffbca67"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,223 @@
1
+ # Canonical Run Event Schema v0.1
2
+
3
+ ## Purpose
4
+
5
+ Define a vendor-neutral event format for agent execution telemetry. Any agent (Hermes, Claude Code, Codex, OpenCode) can emit runs in this schema. The schema is the single source of truth for cross-agent comparison, evaluation, and regression detection.
6
+
7
+ ---
8
+
9
+ ## Design Principles
10
+
11
+ 1. **Agent-agnostic:** No special cases for any single agent. Required fields are minimal; optional fields capture agent-specific context.
12
+ 2. **Append-only:** New fields may be added to optional sections. Removing or renaming required fields is breaking.
13
+ 3. **Graceful degradation:** Missing optional fields never break ingestion. Unknown fields go into `context{}` dict.
14
+ 4. **Deterministic evaluation:** The same run, evaluated twice, always produces identical scores.
15
+ 5. **Cross-comparable:** Two runs from different agents can be compared on: outcome, token usage, tool calls, errors, improvement delta.
16
+
17
+ ---
18
+
19
+ ## Root Object: `CanonicalRun`
20
+
21
+ ### Required Fields
22
+
23
+ These fields MUST be present and non-null for a valid run event. Collectors must fail fast if unable to provide them.
24
+
25
+ | Field | Type | Example | Notes |
26
+ |-------|------|---------|-------|
27
+ | `run_id` | string (UUID) | `"a1b2c3d4-e5f6-..."` | Unique run identifier. Collectors assign via trace_id or session_id. |
28
+ | `agent_name` | string | `"hermes"`, `"claude-code"`, `"codex"`, `"opencode"` | Which agent ran this. |
29
+ | `collector` | string | `"hermes-trace-ingestor"`, `"claude-code-session-collector"` | Which collector produced this event. Enables audit trail. |
30
+ | `started_at` | ISO 8601 string | `"2026-05-19T14:32:00Z"` | When the run began. |
31
+ | `task_name` | string | `"Implement user authentication"` | What the agent was asked to do. Max 500 chars; first sentence only. |
32
+ | `task_name` | string | (max 500 chars) | Task description (first sentence). |
33
+ | `outcome` | enum string | `"success"`, `"failure"`, `"partial"`, `"unknown"` | Did the agent succeed? `success`: no errors, completed. `failure`: critical error. `partial`: partial success with non-critical errors. `unknown`: insufficient info. |
34
+
35
+ ### Optional Fields
36
+
37
+ These fields MAY be absent or null. Collectors should populate them when available. Evaluators must handle missing values gracefully.
38
+
39
+ | Field | Type | Default | Notes |
40
+ |-------|------|---------|-------|
41
+ | `agent_version` | string | null | Agent version at run time. E.g., `"2.1.143"`. |
42
+ | `provider` | string | null | AI provider: `"anthropic"`, `"openai"`, `"hermes"`, `"ollama"`, etc. |
43
+ | `model` | string | null | Model ID. E.g., `"claude-opus-4-7"`, `"gpt-4-turbo"`. |
44
+ | `repo` | string | null | Source code repo (git remote URL or local path). Used for run grouping. |
45
+ | `session_id` | string | null | Unique session UUID from the agent. Links multiple runs to one session. |
46
+ | `ended_at` | ISO 8601 string | null | When the run completed. If null, use current time. |
47
+ | `tool_calls` | array of objects | `[]` | All tool invocations in sequence. See schema below. |
48
+ | `files_touched` | array of objects | `[]` | All files read/written/deleted. See schema below. |
49
+ | `artifacts` | array of objects | `[]` | Output artifacts (code, docs, reports). See schema below. |
50
+ | `errors` | array of objects | `[]` | Exceptions and error signatures. See schema below. |
51
+ | `metrics` | object | null | Aggregated execution metrics. See schema below. |
52
+ | `eval_scores` | array of objects | `[]` | Scores from Phase 5 evaluation. Written post-run. See schema below. |
53
+ | `improvement_candidates` | array of objects | `[]` | Proposed improvements (Phase 8+). |
54
+ | `context` | object | `{}` | Catch-all for agent-specific or collector-specific fields. Never fails ingestion. |
55
+ | `resolution` | string | null | How the run was resolved (if outcome == `"failure"`). Diagnostic text. |
56
+ | `collector_version` | string | `"0.1.0"` | Version of the collector that produced this event. For forward compatibility. |
57
+
58
+ ---
59
+
60
+ ## Nested Object Schemas
61
+
62
+ ### `ToolCallRecord` (items in `tool_calls[]`)
63
+
64
+ ```json
65
+ {
66
+ "id": "tool-call-uuid",
67
+ "name": "Read",
68
+ "input_summary": "Read /path/to/file.ts",
69
+ "duration_ms": 245,
70
+ "result_summary": "Returned 1240 chars",
71
+ "error": null
72
+ }
73
+ ```
74
+
75
+ | Field | Type | Notes |
76
+ |-------|------|-------|
77
+ | `id` | string | Unique ID for this tool call. E.g., UUID or sequential counter. |
78
+ | `name` | string | Tool name. E.g., `"Read"`, `"Bash"`, `"Edit"`, `"Write"`, `"Grep"`, `"Agent"`. |
79
+ | `input_summary` | string | First 200 chars of input. Omit secrets. |
80
+ | `duration_ms` | integer | Execution time in milliseconds. Omit if not available. |
81
+ | `result_summary` | string | First 200 chars of result/output. |
82
+ | `error` | string or null | Error message if tool failed. Otherwise null. |
83
+
84
+ ### `FileTouchRecord` (items in `files_touched[]`)
85
+
86
+ ```json
87
+ {
88
+ "path": "src/components/Button.tsx",
89
+ "action": "write",
90
+ "size_bytes": 2048
91
+ }
92
+ ```
93
+
94
+ | Field | Type | Notes |
95
+ |-------|------|-------|
96
+ | `path` | string | File path. May be relative or absolute. |
97
+ | `action` | string | One of: `"read"`, `"write"`, `"delete"`. |
98
+ | `size_bytes` | integer or null | Final file size. Omit for deletes. |
99
+
100
+ ### `RunMetrics` (the `metrics` field)
101
+
102
+ ```json
103
+ {
104
+ "input_tokens": 4200,
105
+ "output_tokens": 1850,
106
+ "cache_tokens": 512,
107
+ "latency_ms": 8500,
108
+ "cost_usd": 0.082,
109
+ "tool_call_count": 12
110
+ }
111
+ ```
112
+
113
+ | Field | Type | Notes |
114
+ |-------|------|-------|
115
+ | `input_tokens` | integer or null | Tokens sent to model. |
116
+ | `output_tokens` | integer or null | Tokens generated by model. |
117
+ | `cache_tokens` | integer or null | Cached input tokens (prompt caching). |
118
+ | `latency_ms` | integer or null | Total run duration in ms. |
119
+ | `cost_usd` | float or null | Estimated cost in USD. |
120
+ | `tool_call_count` | integer | Total tool calls made. Defaults to 0. |
121
+
122
+ ### `ErrorRecord` (items in `errors[]`)
123
+
124
+ ```json
125
+ {
126
+ "signature": "TypeError: Cannot read property 'foo' of undefined",
127
+ "message": "TypeError: Cannot read property 'foo' of undefined at line 42",
128
+ "stack_excerpt": "at Object.<anonymous> (file.js:42:10)",
129
+ "count": 3
130
+ }
131
+ ```
132
+
133
+ | Field | Type | Notes |
134
+ |-------|------|-------|
135
+ | `signature` | string | Error class + first line. Used for deduplication. E.g., `"TypeError: Cannot read property..."`. |
136
+ | `message` | string | Full error message. |
137
+ | `stack_excerpt` | string | First few stack frames (first 300 chars). |
138
+ | `count` | integer | How many times this error occurred. Default 1. |
139
+
140
+ ### `EvalScore` (items in `eval_scores[]`)
141
+
142
+ Written by Phase 5 evaluation engine. Not set by collectors.
143
+
144
+ ```json
145
+ {
146
+ "scorer": "outcome_scorer",
147
+ "score": 1.0,
148
+ "passed": true,
149
+ "details": {
150
+ "outcome": "success",
151
+ "reason": "Run completed without errors"
152
+ }
153
+ }
154
+ ```
155
+
156
+ | Field | Type | Notes |
157
+ |-------|------|-------|
158
+ | `scorer` | string | Name of the scorer that produced this. E.g., `"outcome_scorer"`, `"token_cost_scorer"`. |
159
+ | `score` | float | Score in range [0.0, 1.0]. |
160
+ | `passed` | boolean | Did this scorer report success? |
161
+ | `details` | object | Scorer-specific metadata. Free-form. |
162
+
163
+ ### `Artifact` (items in `artifacts[]`)
164
+
165
+ ```json
166
+ {
167
+ "path": "output/evolved_skill.md",
168
+ "type": "markdown",
169
+ "size_bytes": 4096
170
+ }
171
+ ```
172
+
173
+ | Field | Type | Notes |
174
+ |-------|------|-------|
175
+ | `path` | string | Path to artifact. |
176
+ | `type` | string | MIME-like type. E.g., `"markdown"`, `"json"`, `"python"`, `"typescript"`. |
177
+ | `size_bytes` | integer | Size in bytes. |
178
+
179
+ ---
180
+
181
+ ## Backward Compatibility
182
+
183
+ ### Mapping from `TraceRecord` (Hermes legacy)
184
+
185
+ The existing `TraceRecord` dataclass in `backend/promethean/models.py` maps to `CanonicalRun` as follows:
186
+
187
+ | TraceRecord | CanonicalRun | Mapping rule |
188
+ |-------------|--------------|--------------|
189
+ | `trace_id` | `run_id` | Direct copy. |
190
+ | `agent` | `agent_name` | Direct copy. |
191
+ | `agent_version` | `agent_version` | Direct copy. |
192
+ | `timestamp` | `started_at` | Direct copy (ISO 8601). |
193
+ | — | `ended_at` | Set to `started_at` if missing. |
194
+ | `task` | `task_name` | Direct copy. |
195
+ | `outcome` | `outcome` | Direct copy (`"success"`, `"failure"`, `"partial"`). |
196
+ | `error_signature` | `errors[0].signature` | Wrap in array. If empty, set `errors = []`. |
197
+ | `context` | `context` | Direct copy (dict). |
198
+ | `resolution` | `resolution` | Direct copy. |
199
+ | — | `collector` | Set to `"hermes-trace-ingestor"` (constant). |
200
+ | — | `provider` | Set to `"hermes"` (constant). |
201
+
202
+ All other `CanonicalRun` fields default to null/empty if not present in `TraceRecord`.
203
+
204
+ ### Unknown Fields
205
+
206
+ If a collector encounters a field not in this schema:
207
+ - If it's non-sensitive: include it in `context{}`
208
+ - If it's sensitive (API key, secret): omit it
209
+ - Never reject the run due to unknown fields
210
+
211
+ ---
212
+
213
+ ## Version History
214
+
215
+ ### v0.1 (current)
216
+ - Initial schema
217
+ - Maps `TraceRecord` to `CanonicalRun`
218
+ - Defines required fields: `run_id`, `agent_name`, `collector`, `started_at`, `task_name`, `outcome`
219
+ - Defines optional fields for tools, files, metrics, errors, and scores
220
+
221
+ ### Future versions
222
+ - v0.2: Add `parent_run_id` for nested agent calls
223
+ - v0.3: Add `reproducibility_hash` for deterministic replay
@@ -0,0 +1,3 @@
1
+ {"run_id": "hermes-trace-001", "agent_name": "hermes", "collector": "hermes-trace-ingestor", "collector_version": "0.1.0", "started_at": "2026-05-19T14:32:00Z", "ended_at": "2026-05-19T14:35:42Z", "task_name": "Implement user authentication middleware", "outcome": "success", "agent_version": "2.1.143", "provider": "hermes", "model": null, "repo": "https://github.com/org/genoma.git", "session_id": null, "tool_calls": [{"id": "call-001", "name": "Read", "input_summary": "Read backend/main.py", "duration_ms": 145, "result_summary": "Returned 3240 chars", "error": null}, {"id": "call-002", "name": "Edit", "input_summary": "Add JWT middleware to FastAPI", "duration_ms": 320, "result_summary": "Edited 5 lines", "error": null}, {"id": "call-003", "name": "Bash", "input_summary": "pytest tests/test_auth.py", "duration_ms": 2100, "result_summary": "All 8 tests passed", "error": null}], "files_touched": [{"path": "backend/main.py", "action": "write", "size_bytes": 3240}, {"path": "backend/auth_middleware.py", "action": "write", "size_bytes": 1847}, {"path": "tests/test_auth.py", "action": "read", "size_bytes": 2156}], "artifacts": [{"path": "backend/auth_middleware.py", "type": "python", "size_bytes": 1847}], "errors": [], "metrics": {"input_tokens": 4200, "output_tokens": 1850, "cache_tokens": 512, "latency_ms": 8500, "cost_usd": 0.082, "tool_call_count": 3}, "eval_scores": [], "improvement_candidates": [], "context": {"skill_name": "auth-middleware", "commands": ["read backend/main.py", "edit backend/main.py", "bash pytest"], "files_touched": ["backend/main.py", "backend/auth_middleware.py", "tests/test_auth.py"]}, "resolution": null}
2
+ {"run_id": "cc-session-e8f7a9d3", "agent_name": "claude-code", "collector": "claude-code-session-collector", "collector_version": "0.1.0", "started_at": "2026-05-19T11:22:00Z", "ended_at": "2026-05-19T11:28:15Z", "task_name": "Add dark mode toggle to React dashboard", "outcome": "success", "agent_version": "2.0.5", "provider": "anthropic", "model": "claude-opus-4-7", "repo": "main", "session_id": "e8f7a9d3-2bc1-4f8e-9a2b-5c7e9f1d3a4b", "tool_calls": [{"id": "tool-read-1", "name": "Read", "input_summary": "Read src/components/Sidebar.tsx", "duration_ms": 234, "result_summary": "Returned 1240 chars", "error": null}, {"id": "tool-edit-1", "name": "Edit", "input_summary": "Add theme state to Sidebar", "duration_ms": 412, "result_summary": "Edited 8 lines", "error": null}, {"id": "tool-write-1", "name": "Write", "input_summary": "Create src/hooks/useTheme.ts", "duration_ms": 178, "result_summary": "Created new file 745 bytes", "error": null}], "files_touched": [{"path": "src/components/Sidebar.tsx", "action": "write", "size_bytes": 1512}, {"path": "src/hooks/useTheme.ts", "action": "write", "size_bytes": 745}, {"path": "src/lib/theme.ts", "action": "write", "size_bytes": 892}], "artifacts": [{"path": "src/hooks/useTheme.ts", "type": "typescript", "size_bytes": 745}, {"path": "src/lib/theme.ts", "type": "typescript", "size_bytes": 892}], "errors": [], "metrics": {"input_tokens": 3450, "output_tokens": 1220, "cache_tokens": 340, "latency_ms": 5820, "cost_usd": 0.067, "tool_call_count": 3}, "eval_scores": [], "improvement_candidates": [], "context": {"cwd": "/Users/leandrothomas/Desktop/Projects/genoma", "gitBranch": "feature/dark-mode", "version": "2.0.5", "usage": {"input_tokens": 3450, "output_tokens": 1220, "cache_read_input_tokens": 340}}, "resolution": null}
3
+ {"run_id": "unknown-run-abc123", "agent_name": "unknown-agent", "collector": "generic-json-ingestor", "started_at": "2026-05-19T10:00:00Z", "task_name": "Fix database query", "outcome": "partial"}