mcp-efficiency-engine 0.1.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 (360) hide show
  1. package/.github/CODEOWNERS +40 -0
  2. package/.github/GITHUB_MCP_INTEGRATION.md +366 -0
  3. package/.github/ISSUE_TEMPLATE/bug.md +51 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
  5. package/.github/ISSUE_TEMPLATE/question.md +18 -0
  6. package/.github/agents/backend.agent.md +18 -0
  7. package/.github/agents/community-manager.agent.md +18 -0
  8. package/.github/agents/dba.agent.md +18 -0
  9. package/.github/agents/frontend-agent.agent.md +18 -0
  10. package/.github/agents/github-repository-manager.agent.md +338 -0
  11. package/.github/agents/iot.agent.md +20 -0
  12. package/.github/agents/legacy.agent.md +18 -0
  13. package/.github/agents/rag-azure.agent.md +18 -0
  14. package/.github/agents/rag-local.agent.md +18 -0
  15. package/.github/agents/snapshot.agent.md +18 -0
  16. package/.github/agents/ux-ui.agent.md +18 -0
  17. package/.github/agents/wiki-agent.agent.md +23 -0
  18. package/.github/copilot-instructions.md +44 -0
  19. package/.github/instructions/always-on-optimization.instructions.md +54 -0
  20. package/.github/prompts/auto-route.prompt.md +33 -0
  21. package/.github/prompts/azure-rag.query.prompt.md +19 -0
  22. package/.github/prompts/backend.fix-bug.prompt.md +13 -0
  23. package/.github/prompts/cavecrew.prompt.md +16 -0
  24. package/.github/prompts/caveman-commit.prompt.md +14 -0
  25. package/.github/prompts/caveman-compress.prompt.md +15 -0
  26. package/.github/prompts/caveman-debug.prompt.md +13 -0
  27. package/.github/prompts/caveman-help.prompt.md +11 -0
  28. package/.github/prompts/caveman-review.prompt.md +15 -0
  29. package/.github/prompts/caveman-stats.prompt.md +11 -0
  30. package/.github/prompts/caveman.prompt.md +11 -0
  31. package/.github/prompts/community.post.prompt.md +14 -0
  32. package/.github/prompts/dba.query-review.prompt.md +15 -0
  33. package/.github/prompts/dev.fix-bug.prompt.md +13 -0
  34. package/.github/prompts/frontend.code.prompt.md +13 -0
  35. package/.github/prompts/legacy.impact-analysis.prompt.md +14 -0
  36. package/.github/prompts/project.kickoff-analysis.prompt.md +51 -0
  37. package/.github/prompts/rag.knowledge-answer.prompt.md +13 -0
  38. package/.github/prompts/token-saver-review.prompt.md +14 -0
  39. package/.github/prompts/ux-ui.review.prompt.md +14 -0
  40. package/.github/pull_request_template.md +71 -0
  41. package/.github/skills/ahorro-tokens/SKILL.md +36 -0
  42. package/.github/skills/azure-rag-enterprise/SKILL.md +24 -0
  43. package/.github/skills/backend-coding/SKILL.md +24 -0
  44. package/.github/skills/cavecrew/SKILL.md +17 -0
  45. package/.github/skills/caveman/SKILL.md +25 -0
  46. package/.github/skills/caveman-commit/SKILL.md +15 -0
  47. package/.github/skills/caveman-compress/SKILL.md +14 -0
  48. package/.github/skills/caveman-help/SKILL.md +19 -0
  49. package/.github/skills/caveman-mode/SKILL.md +43 -0
  50. package/.github/skills/caveman-review/SKILL.md +16 -0
  51. package/.github/skills/caveman-stats/SKILL.md +13 -0
  52. package/.github/skills/community-content/SKILL.md +22 -0
  53. package/.github/skills/database-analysis/SKILL.md +23 -0
  54. package/.github/skills/dev-coding/SKILL.md +24 -0
  55. package/.github/skills/frontend-coding/SKILL.md +24 -0
  56. package/.github/skills/human-in-the-loop/SKILL.md +47 -0
  57. package/.github/skills/iot-architecture/SKILL.md +22 -0
  58. package/.github/skills/legacy-migration/SKILL.md +22 -0
  59. package/.github/skills/rag-knowledge/SKILL.md +21 -0
  60. package/.github/skills/token-saver/SKILL.md +36 -0
  61. package/.github/skills/ux-ui-governance/SKILL.md +24 -0
  62. package/.github/skills/wiki-tools.json +24 -0
  63. package/.github/workflows/auto-devlog.yml +56 -0
  64. package/.github/workflows/auto-manage-issues.yml +64 -0
  65. package/.github/workflows/auto-sync.yml +54 -0
  66. package/.github/workflows/autodocs-sync.yml +114 -0
  67. package/.github/workflows/ci.yml +68 -0
  68. package/.github/workflows/pages.yml +59 -0
  69. package/.github/workflows/routing-evals.yml +59 -0
  70. package/.github/workflows/techriders-coverage-effective.yml +91 -0
  71. package/.vscode/mcp.json +44 -0
  72. package/AGENTS.md +160 -0
  73. package/ARCHITECTURE.md +57 -0
  74. package/FINAL_USAGE_GUIDE.md +106 -0
  75. package/LICENSE +21 -0
  76. package/README.md +385 -0
  77. package/README_WIKI.md +130 -0
  78. package/autodocs/README.md +22 -0
  79. package/autodocs/schema/wiki-node.schema.json +56 -0
  80. package/autolearning/feedback-loop.md +90 -0
  81. package/bin/install-host.js +326 -0
  82. package/bin/mcpee.js +116 -0
  83. package/context/repomix/repomix.config.json +20 -0
  84. package/memory/cross-memory-reasoning.md +17 -0
  85. package/memory/mempry-registry.yml +16 -0
  86. package/observability/evals/chat-token-usage-report.json +64 -0
  87. package/observability/evals/chat-token-usage-report.md +33 -0
  88. package/observability/evals/iteration-value-report.json +76 -0
  89. package/observability/evals/iteration-value-report.md +39 -0
  90. package/observability/evals/learning-loop-report.json +268 -0
  91. package/observability/evals/learning-loop-report.md +37 -0
  92. package/observability/evals/repo-intake-eval-cases.md +23 -0
  93. package/observability/evals/routing-eval-cases.json +68 -0
  94. package/observability/evals/routing-eval-cases.md +25 -0
  95. package/observability/evals/routing-eval-report.json +72 -0
  96. package/observability/evaluation.md +34 -0
  97. package/observability/logs/copilot-usage-ingest-report.json +13 -0
  98. package/observability/logs/iteration-metrics.jsonl +75 -0
  99. package/observability/logs/learning-feedback.jsonl +152 -0
  100. package/observability/logs/routing-decisions.jsonl +333 -0
  101. package/observability/logs/session/agent-pipeline-preflight-20260701-004146.log +8 -0
  102. package/observability/logs/session/agent-pipeline-preflight-20260701-005554.log +8 -0
  103. package/observability/logs/session/agent-pipeline-preflight-20260701-010351.log +8 -0
  104. package/observability/logs/session/agent-pipeline-preflight-20260704-145829.log +8 -0
  105. package/observability/logs/session/agent-pipeline-preflight-20260704-150021.log +8 -0
  106. package/observability/logs/session/agent-pipeline-preflight-20260704-154328.log +8 -0
  107. package/observability/logs/session/bye-20260629-221513.json +39 -0
  108. package/observability/logs/session/bye-20260629-221545.json +59 -0
  109. package/observability/logs/session/bye-20260629-222007.json +52 -0
  110. package/observability/logs/session/bye-20260629-222133.json +59 -0
  111. package/observability/logs/session/bye-20260629-222412.json +45 -0
  112. package/observability/logs/session/bye-20260629-223224.json +52 -0
  113. package/observability/logs/session/bye-20260629-224050.json +59 -0
  114. package/observability/logs/session/bye-20260630-105732.json +24 -0
  115. package/observability/logs/session/bye-20260630-211536.json +87 -0
  116. package/observability/logs/session/bye-20260630-223423.json +87 -0
  117. package/observability/logs/session/bye-20260630-232534.json +87 -0
  118. package/observability/logs/session/bye-20260701-003638.json +126 -0
  119. package/observability/logs/session/bye-20260701-003849.json +126 -0
  120. package/observability/logs/session/bye-20260701-004315.json +138 -0
  121. package/observability/logs/session/bye-20260701-004559.json +76 -0
  122. package/observability/logs/session/bye-20260701-005913.json +138 -0
  123. package/observability/logs/session/bye-20260701-010753.json +138 -0
  124. package/observability/logs/session/bye-20260703-194106.json +24 -0
  125. package/observability/logs/session/bye-20260703-233443.json +76 -0
  126. package/observability/logs/session/bye-20260703-233653.json +76 -0
  127. package/observability/logs/session/bye-20260704-150317.json +152 -0
  128. package/observability/logs/session/bye-20260704-150929.json +75 -0
  129. package/observability/logs/session/bye-20260704-151050.json +75 -0
  130. package/observability/logs/session/bye-20260705-115458.json +165 -0
  131. package/observability/logs/session/codegraph-status-20260701-004228.log +39 -0
  132. package/observability/logs/session/codegraph-status-20260701-004310.log +39 -0
  133. package/observability/logs/session/codegraph-status-20260701-005637.log +39 -0
  134. package/observability/logs/session/codegraph-status-20260701-005908.log +39 -0
  135. package/observability/logs/session/codegraph-status-20260701-010444.log +39 -0
  136. package/observability/logs/session/codegraph-status-20260701-010747.log +39 -0
  137. package/observability/logs/session/codegraph-status-20260704-150137.log +26 -0
  138. package/observability/logs/session/codegraph-status-20260704-150313.log +28 -0
  139. package/observability/logs/session/codegraph-status-20260704-154445.log +26 -0
  140. package/observability/logs/session/codegraph-status-20260705-115454.log +27 -0
  141. package/observability/logs/session/codegraph-sync-20260701-004211.log +88 -0
  142. package/observability/logs/session/codegraph-sync-20260701-004241.log +82 -0
  143. package/observability/logs/session/codegraph-sync-20260701-005620.log +89 -0
  144. package/observability/logs/session/codegraph-sync-20260701-005840.log +88 -0
  145. package/observability/logs/session/codegraph-sync-20260701-010419.log +93 -0
  146. package/observability/logs/session/codegraph-sync-20260701-010609.log +90 -0
  147. package/observability/logs/session/codegraph-sync-20260704-145856.log +70 -0
  148. package/observability/logs/session/codegraph-sync-20260704-150047.log +53 -0
  149. package/observability/logs/session/codegraph-sync-20260704-150204.log +44 -0
  150. package/observability/logs/session/codegraph-sync-20260704-154353.log +26 -0
  151. package/observability/logs/session/codegraph-sync-20260705-115337.log +32 -0
  152. package/observability/logs/session/hi-20260629-221459.json +38 -0
  153. package/observability/logs/session/hi-20260629-221945.json +59 -0
  154. package/observability/logs/session/hi-20260629-222108.json +66 -0
  155. package/observability/logs/session/hi-20260629-222352.json +45 -0
  156. package/observability/logs/session/hi-20260629-225719.json +59 -0
  157. package/observability/logs/session/hi-20260629-233722.json +52 -0
  158. package/observability/logs/session/hi-20260629-233913.json +198 -0
  159. package/observability/logs/session/hi-20260630-110156.json +177 -0
  160. package/observability/logs/session/hi-20260630-191243.json +184 -0
  161. package/observability/logs/session/hi-20260630-230050.json +234 -0
  162. package/observability/logs/session/hi-20260630-230523.json +227 -0
  163. package/observability/logs/session/hi-20260630-230855.json +227 -0
  164. package/observability/logs/session/hi-20260630-231638.json +227 -0
  165. package/observability/logs/session/hi-20260630-231756.json +219 -0
  166. package/observability/logs/session/hi-20260701-002842.json +234 -0
  167. package/observability/logs/session/hi-20260701-003458.json +282 -0
  168. package/observability/logs/session/hi-20260701-004233.json +290 -0
  169. package/observability/logs/session/hi-20260701-004554.json +236 -0
  170. package/observability/logs/session/hi-20260701-005641.json +290 -0
  171. package/observability/logs/session/hi-20260701-010450.json +290 -0
  172. package/observability/logs/session/hi-20260703-233854.json +312 -0
  173. package/observability/logs/session/hi-20260703-234448.json +318 -0
  174. package/observability/logs/session/hi-20260704-145907.json +353 -0
  175. package/observability/logs/session/hi-20260704-150141.json +392 -0
  176. package/observability/logs/session/hi-20260704-154448.json +392 -0
  177. package/observability/logs/session/iteration-value-refresh-20260701-004309.log +3 -0
  178. package/observability/logs/session/iteration-value-refresh-20260701-005907.log +3 -0
  179. package/observability/logs/session/iteration-value-refresh-20260701-010747.log +3 -0
  180. package/observability/logs/session/iteration-value-refresh-20260704-150312.log +3 -0
  181. package/observability/logs/session/iteration-value-refresh-20260705-115453.log +3 -0
  182. package/observability/logs/session/learning-loop-refresh-20260701-004309.log +3 -0
  183. package/observability/logs/session/learning-loop-refresh-20260701-005906.log +3 -0
  184. package/observability/logs/session/learning-loop-refresh-20260701-010745.log +3 -0
  185. package/observability/logs/session/learning-loop-refresh-20260704-150309.log +3 -0
  186. package/observability/logs/session/learning-loop-refresh-20260705-115450.log +3 -0
  187. package/observability/logs/session/project-notes-refresh-20260701-004227.log +1 -0
  188. package/observability/logs/session/project-notes-refresh-20260701-004308.log +1 -0
  189. package/observability/logs/session/project-notes-refresh-20260701-005636.log +1 -0
  190. package/observability/logs/session/project-notes-refresh-20260701-005906.log +1 -0
  191. package/observability/logs/session/project-notes-refresh-20260701-010443.log +1 -0
  192. package/observability/logs/session/project-notes-refresh-20260701-010744.log +1 -0
  193. package/observability/logs/session/project-notes-refresh-20260704-150133.log +1 -0
  194. package/observability/logs/session/project-notes-refresh-20260704-150309.log +1 -0
  195. package/observability/logs/session/project-notes-refresh-20260704-154442.log +1 -0
  196. package/observability/logs/session/project-notes-refresh-20260705-115449.log +1 -0
  197. package/observability/logs/session/repo-intake-20260701-004218.log +6 -0
  198. package/observability/logs/session/repo-intake-20260701-005626.log +6 -0
  199. package/observability/logs/session/repo-intake-20260701-010433.log +6 -0
  200. package/observability/logs/session/repo-intake-20260704-150053.log +6 -0
  201. package/observability/logs/session/repo-intake-20260704-154404.log +6 -0
  202. package/observability/logs/session/repo-intake-refresh-20260701-004247.log +6 -0
  203. package/observability/logs/session/repo-intake-refresh-20260701-005847.log +6 -0
  204. package/observability/logs/session/repo-intake-refresh-20260701-010615.log +6 -0
  205. package/observability/logs/session/repo-intake-refresh-20260704-150209.log +6 -0
  206. package/observability/logs/session/repo-intake-refresh-20260705-115342.log +6 -0
  207. package/observability/logs/session/repo-registry-validation-20260701-004234.log +2 -0
  208. package/observability/logs/session/repo-registry-validation-20260701-004556.log +2 -0
  209. package/observability/logs/session/repo-registry-validation-20260701-005833.log +2 -0
  210. package/observability/logs/session/repo-registry-validation-20260701-010601.log +2 -0
  211. package/observability/logs/session/repo-registry-validation-20260704-150155.log +2 -0
  212. package/observability/logs/session/repo-registry-validation-20260705-115323.log +2 -0
  213. package/observability/logs/session/repomix-refresh-20260701-003823.log +4236 -0
  214. package/observability/logs/session/repomix-refresh-20260701-004251.log +4275 -0
  215. package/observability/logs/session/repomix-refresh-20260701-005850.log +4248 -0
  216. package/observability/logs/session/repomix-refresh-20260701-010619.log +6531 -0
  217. package/observability/logs/session/repomix-refresh-20260704-150239.log +652 -0
  218. package/observability/logs/session/repomix-refresh-20260705-115419.log +178 -0
  219. package/observability/logs/session/routing-evals-20260701-004221.log +2 -0
  220. package/observability/logs/session/routing-evals-20260701-004235.log +2 -0
  221. package/observability/logs/session/routing-evals-20260701-005629.log +2 -0
  222. package/observability/logs/session/routing-evals-20260701-005834.log +2 -0
  223. package/observability/logs/session/routing-evals-20260701-010437.log +2 -0
  224. package/observability/logs/session/routing-evals-20260701-010603.log +2 -0
  225. package/observability/logs/session/routing-evals-20260704-150125.log +2 -0
  226. package/observability/logs/session/routing-evals-20260704-150157.log +2 -0
  227. package/observability/logs/session/routing-evals-20260704-154434.log +2 -0
  228. package/observability/logs/session/routing-evals-20260705-115327.log +2 -0
  229. package/observability/logs/session/sibling-discovery-refresh-20260701-004250.log +3 -0
  230. package/observability/logs/session/sibling-discovery-refresh-20260701-005850.log +3 -0
  231. package/observability/logs/session/sibling-discovery-refresh-20260701-010618.log +3 -0
  232. package/observability/logs/session/sibling-discovery-refresh-20260704-150238.log +3 -0
  233. package/observability/logs/session/sibling-discovery-refresh-20260705-115418.log +3 -0
  234. package/observability/logs.schema.json +95 -0
  235. package/observability/logs.schema.md +26 -0
  236. package/observability/metrics.md +35 -0
  237. package/observability/routing-evaluator.md +37 -0
  238. package/observability/scoring-rubric.md +38 -0
  239. package/optimization/ALWAYS_ON_OPTIMIZATION.md +98 -0
  240. package/optimization/caveman-mode.md +62 -0
  241. package/optimization/examples/login-bug.md +25 -0
  242. package/optimization/examples/sla-query.md +25 -0
  243. package/optimization/optimization-routing.md +30 -0
  244. package/optimization/policies/response-style.policy.md +45 -0
  245. package/optimization/policies/token-budget.policy.md +28 -0
  246. package/optimization/profiles/always-on.profile.md +19 -0
  247. package/optimization/profiles/architecture.profile.md +20 -0
  248. package/optimization/profiles/debug.profile.md +20 -0
  249. package/optimization/profiles/enterprise-rag.profile.md +20 -0
  250. package/optimization/profiles/training.profile.md +20 -0
  251. package/optimization/token-saver.md +58 -0
  252. package/orchestrator/corporate-routing.md +51 -0
  253. package/orchestrator/decision-matrix.md +33 -0
  254. package/orchestrator/fallback.md +29 -0
  255. package/orchestrator/repo-routing.md +58 -0
  256. package/orchestrator/router.md +75 -0
  257. package/orchestrator/wiki/__init__.py +5 -0
  258. package/orchestrator/wiki/graph_consolidator.py +506 -0
  259. package/orchestrator/wiki/incremental_engine.py +57 -0
  260. package/orchestrator/wiki/plugin_manager.py +40 -0
  261. package/package.json +70 -0
  262. package/policies/context-policy.md +25 -0
  263. package/policies/cost-policy.md +25 -0
  264. package/policies/repo-intake-policy.md +36 -0
  265. package/policies/security-policy.md +25 -0
  266. package/repo-intake/README.md +81 -0
  267. package/repo-intake/templates/agent.template.md +4 -0
  268. package/repo-intake/templates/context-manifest.template.md +4 -0
  269. package/repo-intake/templates/skill.template.md +3 -0
  270. package/repo-registry/repos.schema.json +102 -0
  271. package/repo-registry/repos.template.json +26 -0
  272. package/requirements.txt +1 -0
  273. package/scripts/README.md +109 -0
  274. package/scripts/__init__.py +0 -0
  275. package/scripts/bootstrap-portable.cmd +4 -0
  276. package/scripts/bootstrap-portable.ps1 +90 -0
  277. package/scripts/context/azure-rag-mcp-adapter.py +1 -0
  278. package/scripts/context/build-graphify.ps1 +1 -0
  279. package/scripts/context/build-repomix.ps1 +1 -0
  280. package/scripts/discovery/discover-boost-repos.cmd +4 -0
  281. package/scripts/discovery/discover-boost-repos.py +186 -0
  282. package/scripts/discovery/refresh-project-notes.py +179 -0
  283. package/scripts/github/INSTALL.md +295 -0
  284. package/scripts/github/README.md +455 -0
  285. package/scripts/github/apply-boost-templates.ps1 +163 -0
  286. package/scripts/github/apply-single-repo.ps1 +85 -0
  287. package/scripts/github/create-devlog.ps1 +380 -0
  288. package/scripts/github/manage-issues.ps1 +332 -0
  289. package/scripts/github/sync-repo.ps1 +267 -0
  290. package/scripts/intake/agent-pipeline-preflight.py +151 -0
  291. package/scripts/intake/init-template-registry.cmd +4 -0
  292. package/scripts/intake/init-template-registry.ps1 +258 -0
  293. package/scripts/intake/repo-intake.py +354 -0
  294. package/scripts/intake/resolve-routing.py +620 -0
  295. package/scripts/intake/run-repo-intake.cmd +4 -0
  296. package/scripts/intake/run-repo-intake.ps1 +46 -0
  297. package/scripts/intake/run-routing-evals.py +147 -0
  298. package/scripts/intake/validate-database-routing.py +91 -0
  299. package/scripts/intake/validate-rag-routing.py +85 -0
  300. package/scripts/intake/validate-repo-registry.ps1 +20 -0
  301. package/scripts/intake/validate-repo-registry.py +286 -0
  302. package/scripts/intake/validate-security.py +170 -0
  303. package/scripts/learning/autolearning-gate.py +71 -0
  304. package/scripts/learning/chat-token-usage-report.py +326 -0
  305. package/scripts/learning/ingest-copilot-session-usage.py +421 -0
  306. package/scripts/learning/iteration-value-report.py +275 -0
  307. package/scripts/learning/learning-loop-report.py +272 -0
  308. package/scripts/learning/record-iteration-metrics.py +116 -0
  309. package/scripts/learning/record-learning-feedback.py +91 -0
  310. package/scripts/ops/bye.ps1 +620 -0
  311. package/scripts/ops/compare-demo-results.ps1 +826 -0
  312. package/scripts/ops/demo1.ps1 +11 -0
  313. package/scripts/ops/demo2.ps1 +11 -0
  314. package/scripts/ops/demo3.ps1 +11 -0
  315. package/scripts/ops/demo4.ps1 +11 -0
  316. package/scripts/ops/hi.ps1 +1045 -0
  317. package/scripts/ops/llm-token-probe.py +164 -0
  318. package/scripts/ops/run-all-demos.ps1 +39 -0
  319. package/scripts/ops/run-demo-block.ps1 +85 -0
  320. package/scripts/ops/run-demo-session.ps1 +532 -0
  321. package/scripts/setup/optimize-engines.ps1 +183 -0
  322. package/scripts/setup/setup-codegraph.ps1 +3 -0
  323. package/scripts/setup/setup-gitnexus.ps1 +3 -0
  324. package/scripts/setup/setup-graphify.ps1 +2 -0
  325. package/scripts/setup/setup-prerequisites.ps1 +205 -0
  326. package/scripts/setup/start-gitnexus.ps1 +71 -0
  327. package/scripts/setup/validate-context.ps1 +361 -0
  328. package/scripts/wiki/__init__.py +0 -0
  329. package/scripts/wiki/compiler_main.py +189 -0
  330. package/scripts/wiki/normalizer.py +206 -0
  331. package/scripts/wiki/providers/base_provider.py +25 -0
  332. package/scripts/wiki/providers/codegraph_provider.py +49 -0
  333. package/scripts/wiki/providers/graphify_provider.py +49 -0
  334. package/scripts/wiki/providers/repo_content_provider.py +408 -0
  335. package/scripts/wiki/query_autodocs.py +60 -0
  336. package/scripts/wiki/validator.py +183 -0
  337. package/scripts/wiki/wiki_compiler.py +5 -0
  338. package/specs/architecture.spec.md +32 -0
  339. package/specs/azure-rag.spec.md +28 -0
  340. package/specs/coding-standards.spec.md +24 -0
  341. package/specs/database.spec.md +29 -0
  342. package/specs/migration.spec.md +26 -0
  343. package/specs/observability.spec.md +24 -0
  344. package/specs/optimization.spec.md +31 -0
  345. package/specs/rag.spec.md +30 -0
  346. package/specs/repo-intake.spec.md +25 -0
  347. package/specs/routing.spec.md +24 -0
  348. package/specs/security.spec.md +30 -0
  349. package/specs/wiki/provider-contract.json +33 -0
  350. package/specs/wiki/unified-knowledge-graph.json +25 -0
  351. package/templates/BOOST_README_TEMPLATE.md +96 -0
  352. package/templates/CODEOWNERS_TEMPLATE.txt +29 -0
  353. package/templates/LICENSE_MIT_TEMPLATE.txt +21 -0
  354. package/templates/PERSONAL_README_TEMPLATE.md +90 -0
  355. package/templates/README_boost_RAG_Azure.md +46 -0
  356. package/templates/README_boost_azure_iot_edge.md +48 -0
  357. package/templates/README_boost_backend.md +47 -0
  358. package/templates/README_boost_dba.md +57 -0
  359. package/templates/ci.yml.template +73 -0
  360. package/tooling/tooling.manifest.json +72 -0
@@ -0,0 +1,47 @@
1
+ # Human In The Loop (HITL)
2
+
3
+ ## Purpose
4
+
5
+ Asegurar confirmacion humana solo cuando una decision o accion tiene riesgo alto, impacto externo o potencial destructivo.
6
+
7
+ ## Scope
8
+
9
+ Aplicar en todas las rutas del sistema como capa transversal.
10
+
11
+ ## Always-On Behavior
12
+
13
+ - Deteccion automatica de riesgo desde intent/domain/source/notes de routing.
14
+ - No pedir confirmacion para rutas de bajo riesgo.
15
+ - Pedir confirmacion cuando exista riesgo alto o fallback de routing.
16
+ - Bloquear ejecucion para acciones destructivas hasta aprobacion explicita.
17
+
18
+ ## Risk Triggers
19
+
20
+ - deploy, production
21
+ - migrate, migration
22
+ - delete, drop, destroy, remove
23
+ - governance, policy
24
+ - security, rbac, role
25
+ - unresolved_dependencies
26
+ - routing_fallback
27
+
28
+ ## Actions
29
+
30
+ - `none`: continuar sin aprobacion.
31
+ - `request_human_confirmation`: solicitar confirmacion antes de ejecutar.
32
+ - `block_until_human_approval`: bloquear hasta aprobacion humana.
33
+
34
+ ## Observability Contract
35
+
36
+ Cada evento de routing debe incluir `hitl`:
37
+
38
+ - `mode`: `always_on_auto`
39
+ - `required`: `true|false`
40
+ - `action`: `none|request_human_confirmation|block_until_human_approval`
41
+ - `reason`: motivo legible y trazable
42
+
43
+ ## Guardrails
44
+
45
+ - Nunca cachear secretos, credenciales, tokens o PII.
46
+ - Si hay duda de sensibilidad, declarar gap y no cachear.
47
+ - Confirmaciones humanas solo para impacto real; evitar friccion en bajo riesgo.
@@ -0,0 +1,22 @@
1
+ # IoT Architecture Skill
2
+
3
+ ## Purpose
4
+
5
+ Handle IoT/edge/telemetry tasks combining code and technical docs.
6
+
7
+ ## When To Use
8
+
9
+ - IoT architecture questions
10
+ - edge data-flow analysis
11
+ - mixed code+docs diagnostics in IoT domain
12
+
13
+ ## Workflow
14
+
15
+ 1. Map device-edge-cloud flow.
16
+ 2. Identify protocol, telemetry and dependency boundaries.
17
+ 3. Recommend minimal-risk architectural or code changes.
18
+
19
+ ## Guardrails
20
+
21
+ - Keep retrieval targeted.
22
+ - State assumptions about runtime topology.
@@ -0,0 +1,22 @@
1
+ # Legacy Migration Skill
2
+
3
+ ## Purpose
4
+
5
+ Assess legacy and multi-repo change impact before execution.
6
+
7
+ ## When To Use
8
+
9
+ - migration plans
10
+ - legacy code modernization
11
+ - high-blast-radius refactors
12
+
13
+ ## Workflow
14
+
15
+ 1. Map dependencies and downstream consumers.
16
+ 2. Identify breakage risks and migration order.
17
+ 3. Propose phased rollout and rollback strategy.
18
+
19
+ ## Guardrails
20
+
21
+ - Prefer compatibility-first changes.
22
+ - Highlight unknowns explicitly.
@@ -0,0 +1,21 @@
1
+ # RAG Knowledge Skill
2
+
3
+ ## Purpose
4
+
5
+ Answer technical/local documentation questions from local knowledge sources.
6
+
7
+ ## When To Use
8
+
9
+ - source_type is `technical-docs`
10
+ - agent route is `rag-local`
11
+
12
+ ## Workflow
13
+
14
+ 1. Retrieve minimal relevant local nodes/chunks.
15
+ 2. Synthesize concise technical answer.
16
+ 3. Mention evidence basis or declare a gap.
17
+
18
+ ## Guardrails
19
+
20
+ - No unsupported claims.
21
+ - Keep context scope minimal.
@@ -0,0 +1,36 @@
1
+ # Token Saver Skill — Always On
2
+
3
+ ## Estado
4
+
5
+ Siempre activo.
6
+
7
+ ## Propósito
8
+
9
+ Reducir coste, contexto y ruido en cualquier herramienta o agente.
10
+
11
+ ## Reglas
12
+
13
+ 1. Iniciar toda tarea identificando el contexto mínimo necesario.
14
+ 2. Evitar discovery completo.
15
+ 3. Preferir consultas estructuradas:
16
+ - símbolo,
17
+ - endpoint,
18
+ - tabla,
19
+ - nodo,
20
+ - chunk,
21
+ - fuente,
22
+ - manifest.
23
+ 4. Limitar Azure RAG a fuentes relevantes.
24
+ 5. Limitar Graphify a nodos/reportes relevantes.
25
+ 6. Limitar Repomix por scope.
26
+ 7. Registrar gap cuando falte evidencia.
27
+
28
+ ## Por agente
29
+
30
+ - backend: CodeGraph con símbolo/call path.
31
+ - legacy: GitNexus con flow/dependency concreto.
32
+ - dba: Graphify con schema/query relevante.
33
+ - rag-local: Graphify con nodos/fuentes.
34
+ - rag-azure: Azure RAG Builder con fuentes y top-k limitado.
35
+ - iot: combinar solo si hace falta.
36
+ - community-manager: contexto suficiente, no todo el corpus.
@@ -0,0 +1,24 @@
1
+ # UX UI Governance Skill
2
+
3
+ ## Purpose
4
+
5
+ Apply UX/UI quality gates and design-intent controls grounded in project guidelines.
6
+
7
+ ## When To Use
8
+
9
+ - ux-ui reviews
10
+ - design system alignment checks
11
+ - accessibility and consistency checks before delivery
12
+
13
+ ## Workflow
14
+
15
+ 1. Recover UX/UI context and constraints from approved sources.
16
+ 2. Evaluate consistency, usability, accessibility, and design intent.
17
+ 3. Produce prioritized findings with actionable fixes.
18
+ 4. Register validated learnings for future routing.
19
+
20
+ ## Guardrails
21
+
22
+ - Do not redesign outside requested scope.
23
+ - Preserve existing product constraints and brand language.
24
+ - Prefer minimal changes with measurable UX impact.
@@ -0,0 +1,24 @@
1
+ {
2
+ "skills": [
3
+ {
4
+ "name": "compile_autodocs",
5
+ "description": "Ejecuta de forma incremental el compilador de AutoDocs para procesar nodos sucios de conocimiento y proyectarlos a Markdown.",
6
+ "command": "py -3 -m scripts.wiki.wiki_compiler",
7
+ "parameters": {}
8
+ },
9
+ {
10
+ "name": "query_autodocs_graph",
11
+ "description": "Consulta directa del Grafo de Conocimiento Unificado estructurado en formato JSON.",
12
+ "command": "py -3 -c \"import json; print(json.load(open('autodocs/generated/unified-graph.json', encoding='utf-8')))\"",
13
+ "parameters": {}
14
+ },
15
+ {
16
+ "name": "query_autodocs_search",
17
+ "description": "Busqueda local simple sobre el manifest de AutoDocs por titulo, resumen, kind o tags.",
18
+ "command": "py -3 -m scripts.wiki.query_autodocs",
19
+ "parameters": {
20
+ "query": "string"
21
+ }
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,56 @@
1
+ name: Auto-Generate DevLog
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+ inputs:
8
+ commits_to_analyze:
9
+ description: 'Commits to analyze'
10
+ required: false
11
+ default: '10'
12
+
13
+ permissions:
14
+ contents: write
15
+ pull-requests: write
16
+
17
+ jobs:
18
+ devlog:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 100
24
+
25
+ - uses: actions/setup-node@v4
26
+ with:
27
+ node-version: '18'
28
+
29
+ - name: Install PowerShell
30
+ run: sudo apt-get update && sudo apt-get install -y powershell
31
+
32
+ - name: Generate devlog
33
+ run: pwsh scripts/github/create-devlog.ps1 -CommitsToAnalyze 10 -DryRun
34
+ env:
35
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36
+ continue-on-error: true
37
+
38
+ - name: Check if devlog was created
39
+ id: check_devlog
40
+ run: |
41
+ if (Test-Path "autodocs/site/devlog/devlog-$(Get-Date -Format 'yyyy-MM-dd').md") {
42
+ echo "created=true" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
43
+ echo "filename=devlog-$(Get-Date -Format 'yyyy-MM-dd').md" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
44
+ } else {
45
+ echo "created=false" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
46
+ }
47
+ shell: pwsh
48
+ continue-on-error: true
49
+
50
+ - name: Report summary
51
+ run: |
52
+ echo "✅ DevLog workflow completed" >> $GITHUB_STEP_SUMMARY
53
+ echo "- Analyzed commits: 10" >> $GITHUB_STEP_SUMMARY
54
+ echo "- Devlog created: ${{ steps.check_devlog.outputs.created }}" >> $GITHUB_STEP_SUMMARY
55
+ echo "" >> $GITHUB_STEP_SUMMARY
56
+ echo "**Next:** DevLog files are in autodocs/site/devlog/" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,64 @@
1
+ name: Auto-Manage Issues
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 9 * * MON' # Every Monday at 9 AM UTC
6
+ workflow_dispatch:
7
+ inputs:
8
+ action:
9
+ description: 'Action: assign, review, or close'
10
+ required: true
11
+ default: 'assign'
12
+ type: choice
13
+ options:
14
+ - assign
15
+ - review
16
+ - close
17
+ - all
18
+
19
+ permissions:
20
+ contents: read
21
+ issues: write
22
+ pull-requests: write
23
+
24
+ jobs:
25
+ manage:
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+
30
+ - uses: actions/setup-node@v4
31
+ with:
32
+ node-version: '18'
33
+
34
+ - name: Install PowerShell
35
+ run: sudo apt-get update && sudo apt-get install -y powershell
36
+
37
+ - name: Install PowerShell
38
+ run: sudo apt-get update && sudo apt-get install -y powershell
39
+
40
+ - name: Run issue management (DryRun)
41
+ run: |
42
+ echo "👥 Checking open issues..."
43
+ gh issue list --limit 5 --json title,state
44
+ echo ""
45
+ echo "Workflow ready for manual execution"
46
+ env:
47
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
+ continue-on-error: true
49
+
50
+ - name: Create activity report
51
+ run: |
52
+ echo "📊 Issue Management Report — $(date)" >> $GITHUB_STEP_SUMMARY
53
+ echo "" >> $GITHUB_STEP_SUMMARY
54
+ echo "**Status:** Ready for manual trigger" >> $GITHUB_STEP_SUMMARY
55
+ echo "" >> $GITHUB_STEP_SUMMARY
56
+ echo "Available actions:" >> $GITHUB_STEP_SUMMARY
57
+ echo "- \`gh workflow run auto-manage-issues.yml\` (default: assign)" >> $GITHUB_STEP_SUMMARY
58
+ echo "" >> $GITHUB_STEP_SUMMARY
59
+ echo "To manage issues manually:" >> $GITHUB_STEP_SUMMARY
60
+ echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
61
+ echo "pwsh scripts/github/manage-issues.ps1 -Action assign" >> $GITHUB_STEP_SUMMARY
62
+ echo "pwsh scripts/github/manage-issues.ps1 -Action review" >> $GITHUB_STEP_SUMMARY
63
+ echo "pwsh scripts/github/manage-issues.ps1 -Action close" >> $GITHUB_STEP_SUMMARY
64
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,54 @@
1
+ name: Auto-Sync to boost_sertxIA
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - 'projects/**'
8
+ - '.github/specs/**'
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: write
13
+ pull-requests: write
14
+
15
+ jobs:
16
+ sync:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - uses: actions/setup-node@v4
24
+ with:
25
+ node-version: '18'
26
+
27
+ - uses: azure/setup-kubectl@v3
28
+
29
+ - name: Install PowerShell
30
+ run: sudo apt-get update && sudo apt-get install -y powershell
31
+
32
+ - name: Configure GitHub CLI
33
+ run: |
34
+ gh auth status || echo "✓ GitHub CLI disponible"
35
+ env:
36
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
+
38
+ - name: Install PowerShell
39
+ run: sudo apt-get update && sudo apt-get install -y powershell
40
+
41
+ - name: Run sync script (DryRun)
42
+ run: pwsh scripts/github/sync-repo.ps1 -DryRun
43
+ env:
44
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45
+ continue-on-error: true
46
+
47
+ - name: Report summary
48
+ run: |
49
+ echo "✅ Auto-Sync workflow completed" >> $GITHUB_STEP_SUMMARY
50
+ echo "- Sync check: Completed" >> $GITHUB_STEP_SUMMARY
51
+ echo "- Source: projects/** changes" >> $GITHUB_STEP_SUMMARY
52
+ echo "- Target: boost_sertxIA" >> $GITHUB_STEP_SUMMARY
53
+ echo "" >> $GITHUB_STEP_SUMMARY
54
+ echo "**Note:** Running in DryRun mode. Manual sync available on demand." >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,114 @@
1
+ name: AutoDocs Sync
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ paths:
7
+ - 'repo-intake/generated/**'
8
+ - 'autodocs/**'
9
+ - 'scripts/wiki/**'
10
+ - 'orchestrator/wiki/**'
11
+ - '.github/skills/wiki-tools.json'
12
+ - '.github/agents/wiki-agent.agent.md'
13
+ pull_request:
14
+ branches: [ main, develop ]
15
+ paths:
16
+ - 'repo-intake/generated/**'
17
+ - 'autodocs/**'
18
+ - 'scripts/wiki/**'
19
+ - 'orchestrator/wiki/**'
20
+ - '.github/skills/wiki-tools.json'
21
+ - '.github/agents/wiki-agent.agent.md'
22
+ workflow_dispatch:
23
+
24
+ permissions:
25
+ contents: read
26
+
27
+ jobs:
28
+ autodocs-pr-check:
29
+ if: github.event_name == 'pull_request'
30
+ runs-on: windows-latest
31
+
32
+ steps:
33
+ - name: Checkout
34
+ uses: actions/checkout@v5
35
+ with:
36
+ fetch-depth: 0
37
+
38
+ - name: Setup Python
39
+ uses: actions/setup-python@v6
40
+ with:
41
+ python-version: '3.11'
42
+
43
+ - name: Compile AutoDocs
44
+ run: py -3 -m scripts.wiki.wiki_compiler
45
+ shell: pwsh
46
+
47
+ - name: Validate generated artifacts are committed
48
+ shell: pwsh
49
+ run: |
50
+ git add autodocs/generated
51
+ git add autodocs/site
52
+ $changes = git status --porcelain -- autodocs/generated autodocs/site
53
+ if ([string]::IsNullOrWhiteSpace($changes)) {
54
+ Write-Host "AutoDocs artifacts are up to date"
55
+ } else {
56
+ Write-Host "Detected generated drift:"
57
+ Write-Host $changes
58
+ Write-Error "AutoDocs artifacts are outdated. Run: py -3 -m scripts.wiki.wiki_compiler and commit generated changes."
59
+ exit 1
60
+ }
61
+
62
+ - name: Summary
63
+ shell: pwsh
64
+ run: |
65
+ echo "## AutoDocs PR Check" >> $env:GITHUB_STEP_SUMMARY
66
+ echo "- Validation mode: strict" >> $env:GITHUB_STEP_SUMMARY
67
+ echo "- Entrypoint: py -3 -m scripts.wiki.wiki_compiler" >> $env:GITHUB_STEP_SUMMARY
68
+ echo "- Required artifacts: autodocs/generated + autodocs/site" >> $env:GITHUB_STEP_SUMMARY
69
+
70
+ autodocs-sync:
71
+ if: github.event_name != 'pull_request' && github.actor != 'github-actions[bot]'
72
+ permissions:
73
+ contents: write
74
+ runs-on: windows-latest
75
+
76
+ steps:
77
+ - name: Checkout
78
+ uses: actions/checkout@v5
79
+ with:
80
+ fetch-depth: 0
81
+
82
+ - name: Setup Python
83
+ uses: actions/setup-python@v6
84
+ with:
85
+ python-version: '3.11'
86
+
87
+ - name: Compile AutoDocs
88
+ run: py -3 -m scripts.wiki.wiki_compiler
89
+ shell: pwsh
90
+
91
+ - name: Commit projected docs and unified graph
92
+ shell: pwsh
93
+ run: |
94
+ git config user.name "github-actions[bot]"
95
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
96
+ git add autodocs/generated
97
+ git add autodocs/site
98
+ $changes = git status --porcelain -- autodocs/generated autodocs/site
99
+ if ([string]::IsNullOrWhiteSpace($changes)) {
100
+ Write-Host "No AutoDocs changes to commit"
101
+ } else {
102
+ Write-Host "Detected generated drift:"
103
+ Write-Host $changes
104
+ git commit -m "chore(autodocs): refresh unified graph and projection"
105
+ git push
106
+ }
107
+
108
+ - name: Summary
109
+ shell: pwsh
110
+ run: |
111
+ echo "## AutoDocs Sync" >> $env:GITHUB_STEP_SUMMARY
112
+ echo "- Entrypoint: py -3 -m scripts.wiki.wiki_compiler" >> $env:GITHUB_STEP_SUMMARY
113
+ echo "- Output graph: autodocs/generated/unified-graph.json" >> $env:GITHUB_STEP_SUMMARY
114
+ echo "- Projection dir: autodocs/site" >> $env:GITHUB_STEP_SUMMARY
@@ -0,0 +1,68 @@
1
+ name: CI General — Spec Validation
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main, develop ]
8
+
9
+ permissions:
10
+ contents: read
11
+ pull-requests: write
12
+
13
+ jobs:
14
+ validate:
15
+ name: Validate Specs & Code (Windows)
16
+ runs-on: windows-latest
17
+
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Python 3.11
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: '3.11'
26
+
27
+ - name: Compile Python scripts
28
+ run: python -m compileall -q .\scripts
29
+ shell: pwsh
30
+ env:
31
+ PYTHONIOENCODING: utf-8
32
+
33
+ - name: Validate routing evals
34
+ run: py -3 .\scripts\intake\run-routing-evals.py
35
+ shell: pwsh
36
+ env:
37
+ PYTHONIOENCODING: utf-8
38
+
39
+ - name: Validate security
40
+ run: py -3 .\scripts\intake\validate-security.py
41
+ shell: pwsh
42
+ env:
43
+ PYTHONIOENCODING: utf-8
44
+
45
+ - name: Validate database routing
46
+ run: py -3 .\scripts\intake\validate-database-routing.py
47
+ shell: pwsh
48
+ env:
49
+ PYTHONIOENCODING: utf-8
50
+
51
+ - name: Validate RAG routing
52
+ run: py -3 .\scripts\intake\validate-rag-routing.py
53
+ shell: pwsh
54
+ env:
55
+ PYTHONIOENCODING: utf-8
56
+
57
+ - name: Validate context
58
+ run: pwsh -NoProfile -ExecutionPolicy Bypass -File .\scripts\setup\validate-context.ps1 -CIMode
59
+ shell: pwsh
60
+
61
+ - name: Upload eval report
62
+ if: always()
63
+ uses: actions/upload-artifact@v4
64
+ with:
65
+ name: routing-eval-report
66
+ path: observability/evals/routing-eval-report.json
67
+ retention-days: 30
68
+
@@ -0,0 +1,59 @@
1
+ name: Deploy GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ paths:
7
+ - "autodocs/**"
8
+ - ".github/workflows/pages.yml"
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+ pages: write
14
+ id-token: write
15
+
16
+ concurrency:
17
+ group: "pages"
18
+ cancel-in-progress: false
19
+
20
+ jobs:
21
+ build:
22
+ name: Build documentation
23
+ runs-on: ubuntu-latest
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Set up Ruby + Bundler
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: '3.1'
32
+ bundler-cache: true
33
+
34
+ - name: Setup Pages
35
+ uses: actions/configure-pages@v4
36
+
37
+ - name: Build with Jekyll
38
+ run: bundle exec jekyll build --source ./autodocs/site --destination ./build
39
+ env:
40
+ JEKYLL_ENV: production
41
+
42
+ - name: Upload artifacts
43
+ uses: actions/upload-pages-artifact@v3
44
+ with:
45
+ path: './build'
46
+
47
+ deploy:
48
+ name: Deploy to GitHub Pages
49
+ environment:
50
+ name: github-pages
51
+ url: ${{ steps.deployment.outputs.page_url }}
52
+ runs-on: ubuntu-latest
53
+ needs: build
54
+
55
+ steps:
56
+ - name: Deploy to GitHub Pages
57
+ id: deployment
58
+ uses: actions/deploy-pages@v4
59
+
@@ -0,0 +1,59 @@
1
+ name: Routing Evals Gate
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ concurrency:
14
+ group: routing-evals-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ routing-evals:
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 10
21
+
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v4
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: '3.12'
30
+
31
+ - name: Run routing evals
32
+ run: python ./scripts/intake/run-routing-evals.py
33
+
34
+ - name: Verify all tests passed
35
+ run: |
36
+ python - <<'PY'
37
+ import json
38
+ from pathlib import Path
39
+
40
+ report = Path('observability/evals/routing-eval-report.json')
41
+ if not report.exists():
42
+ raise SystemExit('routing-eval-report.json not found')
43
+
44
+ data = json.loads(report.read_text(encoding='utf-8'))
45
+ failed = int(data.get('cases_failed', 0))
46
+ total = int(data.get('cases_total', 0))
47
+ passed = int(data.get('cases_passed', 0))
48
+ print(f'Routing evals: {passed}/{total} passed, failed={failed}')
49
+ if failed > 0:
50
+ raise SystemExit(1)
51
+ PY
52
+
53
+ - name: Upload eval report
54
+ if: always()
55
+ uses: actions/upload-artifact@v4
56
+ with:
57
+ name: routing-eval-report
58
+ path: observability/evals/routing-eval-report.json
59
+ retention-days: 30