bernstein 0.1.0__tar.gz

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 (462) hide show
  1. bernstein-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +43 -0
  2. bernstein-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  3. bernstein-0.1.0/.github/ISSUE_TEMPLATE/evolve-candidate.md +37 -0
  4. bernstein-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
  5. bernstein-0.1.0/.github/copilot-instructions.md +28 -0
  6. bernstein-0.1.0/.github/dependabot.yml +19 -0
  7. bernstein-0.1.0/.github/pull_request_template.md +19 -0
  8. bernstein-0.1.0/.github/workflows/bernstein-ci-fix.yml +46 -0
  9. bernstein-0.1.0/.github/workflows/ci.yml +90 -0
  10. bernstein-0.1.0/.github/workflows/publish.yml +34 -0
  11. bernstein-0.1.0/.gitignore +56 -0
  12. bernstein-0.1.0/.sdd/agents/catalog.json +102 -0
  13. bernstein-0.1.0/.sdd/archive/tasks.jsonl +5449 -0
  14. bernstein-0.1.0/.sdd/backlog/claimed/414-modern-git-integration.md +207 -0
  15. bernstein-0.1.0/.sdd/backlog/claimed/415-creative-evolution-visionary-analyst-pipeline.md +113 -0
  16. bernstein-0.1.0/.sdd/backlog/claimed/416-zero-to-running-demo.md +30 -0
  17. bernstein-0.1.0/.sdd/backlog/claimed/417-evolution-showcase.md +27 -0
  18. bernstein-0.1.0/.sdd/backlog/claimed/418-agent-conflict-resolution.md +29 -0
  19. bernstein-0.1.0/.sdd/backlog/claimed/501-critical-ux-blockers.md +37 -0
  20. bernstein-0.1.0/.sdd/backlog/claimed/502-ci-devops-pipeline.md +51 -0
  21. bernstein-0.1.0/.sdd/backlog/claimed/503-apple-ux-overhaul.md +104 -0
  22. bernstein-0.1.0/.sdd/backlog/claimed/504-dashboard-svg-alignment.md +35 -0
  23. bernstein-0.1.0/.sdd/backlog/claimed/505-one-command-install.md +48 -0
  24. bernstein-0.1.0/.sdd/backlog/claimed/506-ticket-reevaluation-system.md +50 -0
  25. bernstein-0.1.0/.sdd/backlog/claimed/507-init-creates-bernstein-yaml.md +25 -0
  26. bernstein-0.1.0/.sdd/backlog/claimed/508-agent-task-graph.md +49 -0
  27. bernstein-0.1.0/.sdd/backlog/claimed/509-lightweight-rag-for-agents.md +52 -0
  28. bernstein-0.1.0/.sdd/backlog/claimed/510-mcp-autodiscovery.md +60 -0
  29. bernstein-0.1.0/.sdd/backlog/claimed/511-a2a-protocol-support.md +57 -0
  30. bernstein-0.1.0/.sdd/backlog/claimed/512-swe-bench-evaluation.md +43 -0
  31. bernstein-0.1.0/.sdd/backlog/claimed/513-agency-showcase-autodiscovery.md +62 -0
  32. bernstein-0.1.0/.sdd/backlog/claimed/514-global-bernstein-home.md +46 -0
  33. bernstein-0.1.0/.sdd/backlog/claimed/515-eval-harness.md +138 -0
  34. bernstein-0.1.0/.sdd/backlog/claimed/516-eval-gated-evolution.md +78 -0
  35. bernstein-0.1.0/.sdd/backlog/claimed/517-failure-cartography.md +68 -0
  36. bernstein-0.1.0/.sdd/backlog/claimed/518-scenario-benchmarks.md +94 -0
  37. bernstein-0.1.0/.sdd/backlog/claimed/519-distributed-cluster-mode.md +51 -0
  38. bernstein-0.1.0/.sdd/backlog/claimed/520-github-issues-evolve-coordination.md +52 -0
  39. bernstein-0.1.0/.sdd/backlog/claimed/521-shared-state-backend.md +53 -0
  40. bernstein-0.1.0/.sdd/backlog/claimed/522-evolve-external-signals.md +54 -0
  41. bernstein-0.1.0/.sdd/backlog/claimed/523-docker-k8s-deployment.md +58 -0
  42. bernstein-0.1.0/.sdd/backlog/claimed/524-prometheus-observability.md +57 -0
  43. bernstein-0.1.0/.sdd/backlog/claimed/525-community-driven-evolution.md +50 -0
  44. bernstein-0.1.0/.sdd/backlog/claimed/526-web-dashboard.md +46 -0
  45. bernstein-0.1.0/.sdd/backlog/claimed/527-multi-repo-orchestration.md +56 -0
  46. bernstein-0.1.0/.sdd/backlog/claimed/528-cost-optimization-engine.md +51 -0
  47. bernstein-0.1.0/.sdd/backlog/claimed/529-plugin-system.md +57 -0
  48. bernstein-0.1.0/.sdd/backlog/claimed/530-evolve-memory-learning.md +55 -0
  49. bernstein-0.1.0/.sdd/backlog/claimed/531-competitive-feature-matrix.md +47 -0
  50. bernstein-0.1.0/.sdd/backlog/claimed/532-bernstein-as-github-app.md +48 -0
  51. bernstein-0.1.0/.sdd/backlog/claimed/533-wasm-fast-path-agent-booster.md +57 -0
  52. bernstein-0.1.0/.sdd/backlog/claimed/534-deep-observability-agent-traces.md +66 -0
  53. bernstein-0.1.0/.sdd/backlog/claimed/535-zero-lock-in-model-agnostic-showcase.md +50 -0
  54. bernstein-0.1.0/.sdd/backlog/claimed/536-ci-self-healing-agent.md +47 -0
  55. bernstein-0.1.0/.sdd/backlog/claimed/537-github-issues-sync-evolve.md +47 -0
  56. bernstein-0.1.0/.sdd/backlog/claimed/538-dashboard-tui-match-svg-mockup.md +275 -0
  57. bernstein-0.1.0/.sdd/backlog/closed/100-decompose-evolution-module.md +51 -0
  58. bernstein-0.1.0/.sdd/backlog/closed/104-approval-gate-router.md +44 -0
  59. bernstein-0.1.0/.sdd/backlog/closed/105-sandbox-validator.md +45 -0
  60. bernstein-0.1.0/.sdd/backlog/closed/106-metrics-aggregator-ewma-cusum.md +45 -0
  61. bernstein-0.1.0/.sdd/backlog/closed/107-golden-benchmark-suite.md +47 -0
  62. bernstein-0.1.0/.sdd/backlog/closed/108-autoresearch-loop.md +63 -0
  63. bernstein-0.1.0/.sdd/backlog/closed/112-judge-node-pattern.md +53 -0
  64. bernstein-0.1.0/.sdd/backlog/closed/113-graph-evolution-on-failure.md +43 -0
  65. bernstein-0.1.0/.sdd/backlog/closed/114-sync-backlog-files-with-server.md +45 -0
  66. bernstein-0.1.0/.sdd/backlog/closed/115-wire-tier-aware-router.md +46 -0
  67. bernstein-0.1.0/.sdd/backlog/closed/200-continuous-self-improvement-loop.md +42 -0
  68. bernstein-0.1.0/.sdd/backlog/closed/201-agency-agent-hiring.md +63 -0
  69. bernstein-0.1.0/.sdd/backlog/closed/202-fix-tests-regressions.md +30 -0
  70. bernstein-0.1.0/.sdd/backlog/closed/203-improve-dashboard-ux.md +34 -0
  71. bernstein-0.1.0/.sdd/backlog/closed/204-web-research-for-evolve.md +69 -0
  72. bernstein-0.1.0/.sdd/backlog/closed/206-unstoppable-evolve-mode.md +56 -0
  73. bernstein-0.1.0/.sdd/backlog/closed/310-wire-evolution-end-to-end.md +55 -0
  74. bernstein-0.1.0/.sdd/backlog/closed/400-unified-agent-model.md +41 -0
  75. bernstein-0.1.0/.sdd/backlog/closed/401-agency-provider.md +34 -0
  76. bernstein-0.1.0/.sdd/backlog/closed/402-generic-registry-provider.md +33 -0
  77. bernstein-0.1.0/.sdd/backlog/closed/403-catalog-cache-autodiscovery.md +39 -0
  78. bernstein-0.1.0/.sdd/backlog/closed/404-catalog-role-matching.md +41 -0
  79. bernstein-0.1.0/.sdd/backlog/closed/405-catalog-yaml-config.md +51 -0
  80. bernstein-0.1.0/.sdd/backlog/closed/406-catalog-cli-commands.md +34 -0
  81. bernstein-0.1.0/.sdd/backlog/closed/410-auto-backlog-replenishment.md +41 -0
  82. bernstein-0.1.0/.sdd/backlog/closed/411-self-discovered-feature-tickets.md +39 -0
  83. bernstein-0.1.0/.sdd/backlog/closed/412-rich-task-context-injection.md +94 -0
  84. bernstein-0.1.0/.sdd/backlog/closed/413-gh-pages-docs-site.md +77 -0
  85. bernstein-0.1.0/.sdd/backlog/closed/420-async-orchestrator-tick.md +40 -0
  86. bernstein-0.1.0/.sdd/backlog/closed/421-batch-claim-api.md +36 -0
  87. bernstein-0.1.0/.sdd/backlog/closed/422-metrics-batching-and-pooling.md +37 -0
  88. bernstein-0.1.0/.sdd/backlog/closed/500-idle-agent-detection.md +61 -0
  89. bernstein-0.1.0/.sdd/backlog/closed/519-distributed-cluster-mode.md +57 -0
  90. bernstein-0.1.0/.sdd/backlog/closed/520-github-issues-evolve-coordination.md +58 -0
  91. bernstein-0.1.0/.sdd/backlog/closed/522-evolve-external-signals.md +60 -0
  92. bernstein-0.1.0/.sdd/backlog/closed/523-docker-k8s-deployment.md +64 -0
  93. bernstein-0.1.0/.sdd/backlog/closed/525-community-driven-evolution.md +56 -0
  94. bernstein-0.1.0/.sdd/backlog/closed/528-cost-optimization-engine.md +57 -0
  95. bernstein-0.1.0/.sdd/backlog/closed/530-evolve-memory-learning.md +61 -0
  96. bernstein-0.1.0/.sdd/backlog/closed/533-wasm-fast-path-agent-booster.md +63 -0
  97. bernstein-0.1.0/.sdd/backlog/closed/537-github-issues-sync-evolve.md +53 -0
  98. bernstein-0.1.0/.sdd/backlog/closed/538-dashboard-tui-match-svg-mockup.md +248 -0
  99. bernstein-0.1.0/.sdd/backlog/closed/600-license-evaluation.md +25 -0
  100. bernstein-0.1.0/.sdd/backlog/closed/601-per-run-cost-budget.md +30 -0
  101. bernstein-0.1.0/.sdd/backlog/closed/602-ci-auto-fix-pipeline.md +28 -0
  102. bernstein-0.1.0/.sdd/backlog/closed/605-quickstart-demo.md +27 -0
  103. bernstein-0.1.0/.sdd/backlog/closed/606-mcp-tool-access.md +29 -0
  104. bernstein-0.1.0/.sdd/backlog/closed/608-the-bernstein-way.md +25 -0
  105. bernstein-0.1.0/.sdd/backlog/closed/610-tui-session-manager.md +28 -0
  106. bernstein-0.1.0/.sdd/backlog/closed/613-github-action.md +27 -0
  107. bernstein-0.1.0/.sdd/backlog/open/603-coordinated-launch-plan.md +25 -0
  108. bernstein-0.1.0/.sdd/backlog/open/604-polish-cli-ux.md +28 -0
  109. bernstein-0.1.0/.sdd/backlog/open/607-orchestration-benchmark.md +27 -0
  110. bernstein-0.1.0/.sdd/backlog/open/609-founder-content-calendar.md +25 -0
  111. bernstein-0.1.0/.sdd/backlog/open/611-execution-recording-replay.md +29 -0
  112. bernstein-0.1.0/.sdd/backlog/open/612-cross-provider-handoff.md +29 -0
  113. bernstein-0.1.0/.sdd/backlog/open/614-competitor-comparison-pages.md +28 -0
  114. bernstein-0.1.0/.sdd/backlog/open/615-opentelemetry-traces.md +29 -0
  115. bernstein-0.1.0/.sdd/backlog/open/616-structured-audit-logs.md +28 -0
  116. bernstein-0.1.0/.sdd/backlog/open/617-autogen-migration-guide.md +25 -0
  117. bernstein-0.1.0/.sdd/backlog/open/618-intelligent-context-partitioning.md +28 -0
  118. bernstein-0.1.0/.sdd/backlog/open/619-conference-cfp-submissions.md +26 -0
  119. bernstein-0.1.0/.sdd/backlog/open/620-a2a-agent-cards.md +28 -0
  120. bernstein-0.1.0/.sdd/backlog/open/621-cost-attribution-dashboard.md +28 -0
  121. bernstein-0.1.0/.sdd/backlog/open/622-hybrid-model-routing.md +29 -0
  122. bernstein-0.1.0/.sdd/backlog/open/623-bernstein-mcp-server.md +28 -0
  123. bernstein-0.1.0/.sdd/backlog/open/624-bernstein-bench-suite.md +28 -0
  124. bernstein-0.1.0/.sdd/backlog/open/625-shared-project-context.md +28 -0
  125. bernstein-0.1.0/.sdd/backlog/open/626-merge-conflict-resolution.md +30 -0
  126. bernstein-0.1.0/.sdd/backlog/open/627-workspace-isolation-policies.md +28 -0
  127. bernstein-0.1.0/.sdd/backlog/open/628-offline-ollama-verification.md +27 -0
  128. bernstein-0.1.0/.sdd/backlog/open/629-cline-roo-code-adapters.md +29 -0
  129. bernstein-0.1.0/.sdd/backlog/open/630-weekly-newsletter.md +26 -0
  130. bernstein-0.1.0/.sdd/backlog/open/631-monetization-design.md +25 -0
  131. bernstein-0.1.0/.sdd/backlog/open/632-microvm-sandboxing.md +29 -0
  132. bernstein-0.1.0/.sdd/backlog/open/633-multi-agent-vs-single-benchmark.md +27 -0
  133. bernstein-0.1.0/.sdd/backlog/open/634-auto-model-downgrade.md +28 -0
  134. bernstein-0.1.0/.sdd/backlog/open/635-slack-discord-notifications.md +28 -0
  135. bernstein-0.1.0/.sdd/backlog/open/636-agent-profile-marketplace.md +27 -0
  136. bernstein-0.1.0/.sdd/backlog/open/637-loop-detection-circuit-breaker.md +28 -0
  137. bernstein-0.1.0/.sdd/backlog/open/638-scheduled-orchestration.md +27 -0
  138. bernstein-0.1.0/.sdd/backlog/open/639-monitoring-web-dashboard.md +28 -0
  139. bernstein-0.1.0/.sdd/backlog/open/640-kubernetes-of-agents-blog.md +27 -0
  140. bernstein-0.1.0/.sdd/backlog/open/641-ab-testing-models.md +28 -0
  141. bernstein-0.1.0/.sdd/backlog/open/642-jira-linear-integration.md +29 -0
  142. bernstein-0.1.0/.sdd/backlog/open/643-gitlab-ci-integration.md +27 -0
  143. bernstein-0.1.0/.sdd/backlog/open/644-vscode-extension.md +28 -0
  144. bernstein-0.1.0/.sdd/backlog/open/645-agent-config-versioning.md +27 -0
  145. bernstein-0.1.0/.sdd/backlog/open/646-multimodal-agent-context.md +28 -0
  146. bernstein-0.1.0/.sdd/backlog/open/647-wasm-isolation-spike.md +25 -0
  147. bernstein-0.1.0/.sdd/backlog/open/648-custom-orchestration-strategies.md +30 -0
  148. bernstein-0.1.0/.sdd/backlog/open/649-browser-use-agents.md +28 -0
  149. bernstein-0.1.0/.sdd/decisions/600-license-apache2.md +34 -0
  150. bernstein-0.1.0/.sdd/index/codebase.db +0 -0
  151. bernstein-0.1.0/.sdd/knowledge/architecture.md +284 -0
  152. bernstein-0.1.0/.sdd/knowledge/file_index.json +2960 -0
  153. bernstein-0.1.0/.sdd/knowledge/recent_decisions.md +48 -0
  154. bernstein-0.1.0/.sdd/marketing/blog-tracker.md +44 -0
  155. bernstein-0.1.0/.sdd/marketing/discord-prompt.md +45 -0
  156. bernstein-0.1.0/.sdd/marketing/growth-playbook.md +161 -0
  157. bernstein-0.1.0/.sdd/marketing/strategy.md +159 -0
  158. bernstein-0.1.0/.sdd/marketing/tracker.md +116 -0
  159. bernstein-0.1.0/.sdd/marketing/wave2_plan.md +66 -0
  160. bernstein-0.1.0/.sdd/project.md +21 -0
  161. bernstein-0.1.0/.sdd/research/auto/competitive-landscape-2026-03.md +89 -0
  162. bernstein-0.1.0/.sdd/research/auto/context-sharing-best-practices-2026.md +92 -0
  163. bernstein-0.1.0/.sdd/research/auto/scenario-forecast-2026-03.md +45 -0
  164. bernstein-0.1.0/.sdd/research/competitor_landscape.md +577 -0
  165. bernstein-0.1.0/.sdd/research/enterprise_needs.md +254 -0
  166. bernstein-0.1.0/.sdd/research/future_research.md +174 -0
  167. bernstein-0.1.0/AGENTS.md +68 -0
  168. bernstein-0.1.0/CLAUDE.md +41 -0
  169. bernstein-0.1.0/CODE_OF_CONDUCT.md +28 -0
  170. bernstein-0.1.0/CONTRIBUTING.md +275 -0
  171. bernstein-0.1.0/Dockerfile +44 -0
  172. bernstein-0.1.0/LICENSE +191 -0
  173. bernstein-0.1.0/PKG-INFO +24 -0
  174. bernstein-0.1.0/README.md +241 -0
  175. bernstein-0.1.0/SECURITY.md +23 -0
  176. bernstein-0.1.0/action/entrypoint.sh +122 -0
  177. bernstein-0.1.0/action.yml +79 -0
  178. bernstein-0.1.0/bernstein.yaml +50 -0
  179. bernstein-0.1.0/deploy/github-app/README.md +97 -0
  180. bernstein-0.1.0/deploy/github-app/app.yml +34 -0
  181. bernstein-0.1.0/deploy/grafana/dashboard.json +143 -0
  182. bernstein-0.1.0/deploy/helm/bernstein/Chart.yaml +26 -0
  183. bernstein-0.1.0/deploy/helm/bernstein/templates/_helpers.tpl +100 -0
  184. bernstein-0.1.0/deploy/helm/bernstein/templates/configmap.yaml +12 -0
  185. bernstein-0.1.0/deploy/helm/bernstein/templates/deployment-orchestrator.yaml +80 -0
  186. bernstein-0.1.0/deploy/helm/bernstein/templates/deployment-server.yaml +106 -0
  187. bernstein-0.1.0/deploy/helm/bernstein/templates/hpa.yaml +23 -0
  188. bernstein-0.1.0/deploy/helm/bernstein/templates/ingress.yaml +35 -0
  189. bernstein-0.1.0/deploy/helm/bernstein/templates/pvc-server.yaml +17 -0
  190. bernstein-0.1.0/deploy/helm/bernstein/templates/secret-auth.yaml +11 -0
  191. bernstein-0.1.0/deploy/helm/bernstein/templates/service.yaml +17 -0
  192. bernstein-0.1.0/deploy/helm/bernstein/templates/statefulset-worker.yaml +91 -0
  193. bernstein-0.1.0/deploy/helm/bernstein/values.yaml +133 -0
  194. bernstein-0.1.0/deploy/prometheus/prometheus.yml +5 -0
  195. bernstein-0.1.0/docker-compose.yaml +143 -0
  196. bernstein-0.1.0/docs/CHANGELOG.md +26 -0
  197. bernstein-0.1.0/docs/DEPLOYMENT.md +317 -0
  198. bernstein-0.1.0/docs/DESIGN.md +1386 -0
  199. bernstein-0.1.0/docs/GETTING_STARTED.md +704 -0
  200. bernstein-0.1.0/docs/VERSION +1 -0
  201. bernstein-0.1.0/docs/adapters.html +344 -0
  202. bernstein-0.1.0/docs/api.html +460 -0
  203. bernstein-0.1.0/docs/assets/architecture.svg +124 -0
  204. bernstein-0.1.0/docs/assets/dashboard.svg +378 -0
  205. bernstein-0.1.0/docs/assets/logo-dark.svg +17 -0
  206. bernstein-0.1.0/docs/assets/logo-light.svg +17 -0
  207. bernstein-0.1.0/docs/competitive-matrix.md +42 -0
  208. bernstein-0.1.0/docs/concepts.html +313 -0
  209. bernstein-0.1.0/docs/decisions/001-agent-lifecycle.md +263 -0
  210. bernstein-0.1.0/docs/decisions/002-ux-and-distribution.md +219 -0
  211. bernstein-0.1.0/docs/decisions/003-self-evolution.md +493 -0
  212. bernstein-0.1.0/docs/getting-started.html +320 -0
  213. bernstein-0.1.0/docs/github-action.md +105 -0
  214. bernstein-0.1.0/docs/github-app-setup.md +95 -0
  215. bernstein-0.1.0/docs/index.html +412 -0
  216. bernstein-0.1.0/docs/rag-challenge-swarm-architecture.md +127 -0
  217. bernstein-0.1.0/docs/script.js +91 -0
  218. bernstein-0.1.0/docs/style.css +464 -0
  219. bernstein-0.1.0/docs/superpowers/plans/2026-03-28-distributed-cluster-mode.md +1252 -0
  220. bernstein-0.1.0/docs/superpowers/plans/2026-03-28-git-migration.md +608 -0
  221. bernstein-0.1.0/docs/the-bernstein-way.md +115 -0
  222. bernstein-0.1.0/docs/zero-lock-in.md +191 -0
  223. bernstein-0.1.0/examples/full.yaml +60 -0
  224. bernstein-0.1.0/examples/multi-model/bernstein.yaml +54 -0
  225. bernstein-0.1.0/examples/multi-model/run.sh +69 -0
  226. bernstein-0.1.0/examples/plugins/logging_plugin.py +50 -0
  227. bernstein-0.1.0/examples/quickstart/README.md +15 -0
  228. bernstein-0.1.0/examples/quickstart/app.py +52 -0
  229. bernstein-0.1.0/examples/quickstart/bernstein.yaml +10 -0
  230. bernstein-0.1.0/examples/rag-system.yaml +14 -0
  231. bernstein-0.1.0/examples/simple.yaml +4 -0
  232. bernstein-0.1.0/pyproject.toml +67 -0
  233. bernstein-0.1.0/scripts/run_tests.py +158 -0
  234. bernstein-0.1.0/src/bernstein/__init__.py +32 -0
  235. bernstein-0.1.0/src/bernstein/__main__.py +5 -0
  236. bernstein-0.1.0/src/bernstein/adapters/__init__.py +1 -0
  237. bernstein-0.1.0/src/bernstein/adapters/base.py +112 -0
  238. bernstein-0.1.0/src/bernstein/adapters/ci/__init__.py +1 -0
  239. bernstein-0.1.0/src/bernstein/adapters/ci/github_actions.py +276 -0
  240. bernstein-0.1.0/src/bernstein/adapters/claude.py +301 -0
  241. bernstein-0.1.0/src/bernstein/adapters/codex.py +118 -0
  242. bernstein-0.1.0/src/bernstein/adapters/gemini.py +115 -0
  243. bernstein-0.1.0/src/bernstein/adapters/generic.py +90 -0
  244. bernstein-0.1.0/src/bernstein/adapters/manager.py +86 -0
  245. bernstein-0.1.0/src/bernstein/adapters/qwen.py +174 -0
  246. bernstein-0.1.0/src/bernstein/adapters/registry.py +55 -0
  247. bernstein-0.1.0/src/bernstein/agents/__init__.py +1 -0
  248. bernstein-0.1.0/src/bernstein/agents/agency_provider.py +183 -0
  249. bernstein-0.1.0/src/bernstein/agents/catalog.py +576 -0
  250. bernstein-0.1.0/src/bernstein/agents/discovery.py +434 -0
  251. bernstein-0.1.0/src/bernstein/agents/registry.py +431 -0
  252. bernstein-0.1.0/src/bernstein/benchmark/__init__.py +0 -0
  253. bernstein-0.1.0/src/bernstein/benchmark/swe_bench.py +525 -0
  254. bernstein-0.1.0/src/bernstein/cli/__init__.py +1 -0
  255. bernstein-0.1.0/src/bernstein/cli/cost.py +277 -0
  256. bernstein-0.1.0/src/bernstein/cli/dashboard.py +718 -0
  257. bernstein-0.1.0/src/bernstein/cli/errors.py +75 -0
  258. bernstein-0.1.0/src/bernstein/cli/main.py +4462 -0
  259. bernstein-0.1.0/src/bernstein/core/__init__.py +1 -0
  260. bernstein-0.1.0/src/bernstein/core/a2a.py +305 -0
  261. bernstein-0.1.0/src/bernstein/core/agency_loader.py +163 -0
  262. bernstein-0.1.0/src/bernstein/core/bootstrap.py +959 -0
  263. bernstein-0.1.0/src/bernstein/core/bulletin.py +183 -0
  264. bernstein-0.1.0/src/bernstein/core/ci_fix.py +650 -0
  265. bernstein-0.1.0/src/bernstein/core/ci_log_parser.py +82 -0
  266. bernstein-0.1.0/src/bernstein/core/cluster.py +392 -0
  267. bernstein-0.1.0/src/bernstein/core/context.py +1156 -0
  268. bernstein-0.1.0/src/bernstein/core/cost.py +394 -0
  269. bernstein-0.1.0/src/bernstein/core/cost_tracker.py +375 -0
  270. bernstein-0.1.0/src/bernstein/core/evolution.py +77 -0
  271. bernstein-0.1.0/src/bernstein/core/fast_path.py +683 -0
  272. bernstein-0.1.0/src/bernstein/core/git_context.py +388 -0
  273. bernstein-0.1.0/src/bernstein/core/git_ops.py +712 -0
  274. bernstein-0.1.0/src/bernstein/core/github.py +701 -0
  275. bernstein-0.1.0/src/bernstein/core/graph.py +325 -0
  276. bernstein-0.1.0/src/bernstein/core/hijacker.py +579 -0
  277. bernstein-0.1.0/src/bernstein/core/home.py +182 -0
  278. bernstein-0.1.0/src/bernstein/core/janitor.py +633 -0
  279. bernstein-0.1.0/src/bernstein/core/llm.py +188 -0
  280. bernstein-0.1.0/src/bernstein/core/manager.py +1009 -0
  281. bernstein-0.1.0/src/bernstein/core/mcp_manager.py +365 -0
  282. bernstein-0.1.0/src/bernstein/core/mcp_registry.py +288 -0
  283. bernstein-0.1.0/src/bernstein/core/metrics.py +912 -0
  284. bernstein-0.1.0/src/bernstein/core/models.py +422 -0
  285. bernstein-0.1.0/src/bernstein/core/multi_cell.py +447 -0
  286. bernstein-0.1.0/src/bernstein/core/orchestrator.py +2893 -0
  287. bernstein-0.1.0/src/bernstein/core/policy.py +599 -0
  288. bernstein-0.1.0/src/bernstein/core/prometheus.py +129 -0
  289. bernstein-0.1.0/src/bernstein/core/rag.py +502 -0
  290. bernstein-0.1.0/src/bernstein/core/researcher.py +277 -0
  291. bernstein-0.1.0/src/bernstein/core/retrospective.py +419 -0
  292. bernstein-0.1.0/src/bernstein/core/router.py +733 -0
  293. bernstein-0.1.0/src/bernstein/core/seed.py +426 -0
  294. bernstein-0.1.0/src/bernstein/core/server.py +2043 -0
  295. bernstein-0.1.0/src/bernstein/core/signals.py +231 -0
  296. bernstein-0.1.0/src/bernstein/core/spawner.py +677 -0
  297. bernstein-0.1.0/src/bernstein/core/store.py +279 -0
  298. bernstein-0.1.0/src/bernstein/core/store_factory.py +157 -0
  299. bernstein-0.1.0/src/bernstein/core/store_postgres.py +780 -0
  300. bernstein-0.1.0/src/bernstein/core/store_redis.py +124 -0
  301. bernstein-0.1.0/src/bernstein/core/sync.py +465 -0
  302. bernstein-0.1.0/src/bernstein/core/traces.py +493 -0
  303. bernstein-0.1.0/src/bernstein/core/upgrade_executor.py +576 -0
  304. bernstein-0.1.0/src/bernstein/core/worker.py +120 -0
  305. bernstein-0.1.0/src/bernstein/core/workspace.py +256 -0
  306. bernstein-0.1.0/src/bernstein/core/worktree.py +157 -0
  307. bernstein-0.1.0/src/bernstein/dashboard/__init__.py +8 -0
  308. bernstein-0.1.0/src/bernstein/dashboard/templates/index.html +281 -0
  309. bernstein-0.1.0/src/bernstein/evolution/__init__.py +443 -0
  310. bernstein-0.1.0/src/bernstein/evolution/aggregator.py +1134 -0
  311. bernstein-0.1.0/src/bernstein/evolution/applicator.py +225 -0
  312. bernstein-0.1.0/src/bernstein/evolution/benchmark.py +340 -0
  313. bernstein-0.1.0/src/bernstein/evolution/circuit.py +200 -0
  314. bernstein-0.1.0/src/bernstein/evolution/creative.py +651 -0
  315. bernstein-0.1.0/src/bernstein/evolution/detector.py +644 -0
  316. bernstein-0.1.0/src/bernstein/evolution/gate.py +437 -0
  317. bernstein-0.1.0/src/bernstein/evolution/invariants.py +134 -0
  318. bernstein-0.1.0/src/bernstein/evolution/loop.py +1043 -0
  319. bernstein-0.1.0/src/bernstein/evolution/proposals.py +174 -0
  320. bernstein-0.1.0/src/bernstein/evolution/report.py +532 -0
  321. bernstein-0.1.0/src/bernstein/evolution/sandbox.py +361 -0
  322. bernstein-0.1.0/src/bernstein/evolution/types.py +121 -0
  323. bernstein-0.1.0/src/bernstein/github_app/__init__.py +29 -0
  324. bernstein-0.1.0/src/bernstein/github_app/app.py +244 -0
  325. bernstein-0.1.0/src/bernstein/github_app/mapper.py +307 -0
  326. bernstein-0.1.0/src/bernstein/github_app/webhooks.py +116 -0
  327. bernstein-0.1.0/src/bernstein/plugins/__init__.py +10 -0
  328. bernstein-0.1.0/src/bernstein/plugins/hookspecs.py +74 -0
  329. bernstein-0.1.0/src/bernstein/plugins/manager.py +257 -0
  330. bernstein-0.1.0/src/bernstein/templates/__init__.py +1 -0
  331. bernstein-0.1.0/src/bernstein/templates/renderer.py +138 -0
  332. bernstein-0.1.0/src/bernstein/tui/__init__.py +1 -0
  333. bernstein-0.1.0/src/bernstein/tui/app.py +186 -0
  334. bernstein-0.1.0/src/bernstein/tui/styles.tcss +75 -0
  335. bernstein-0.1.0/src/bernstein/tui/widgets.py +162 -0
  336. bernstein-0.1.0/templates/bernstein.yaml +80 -0
  337. bernstein-0.1.0/templates/demo/Makefile +7 -0
  338. bernstein-0.1.0/templates/demo/README.md +22 -0
  339. bernstein-0.1.0/templates/demo/app.py +14 -0
  340. bernstein-0.1.0/templates/demo/requirements.txt +2 -0
  341. bernstein-0.1.0/templates/demo/tests/__init__.py +0 -0
  342. bernstein-0.1.0/templates/demo/tests/test_app.py +27 -0
  343. bernstein-0.1.0/templates/prompts/judge.md +39 -0
  344. bernstein-0.1.0/templates/prompts/plan.md +63 -0
  345. bernstein-0.1.0/templates/prompts/review.md +45 -0
  346. bernstein-0.1.0/tests/__init__.py +0 -0
  347. bernstein-0.1.0/tests/benchmarks/capability/cap-001-router-selects-model.yaml +10 -0
  348. bernstein-0.1.0/tests/benchmarks/capability/cap-002-seed-parsing.yaml +10 -0
  349. bernstein-0.1.0/tests/benchmarks/capability/cap-003-task-state-transitions.yaml +8 -0
  350. bernstein-0.1.0/tests/benchmarks/capability/cap-004-metrics-recording.yaml +7 -0
  351. bernstein-0.1.0/tests/benchmarks/capability/cap-005-janitor-cleanup.yaml +7 -0
  352. bernstein-0.1.0/tests/benchmarks/capability/cap-006-circuit-breaker.yaml +7 -0
  353. bernstein-0.1.0/tests/benchmarks/capability/cap-007-policy-enforcement.yaml +7 -0
  354. bernstein-0.1.0/tests/benchmarks/capability/cap-008-backlog-sync.yaml +8 -0
  355. bernstein-0.1.0/tests/benchmarks/capability/cap-009-invariants-check.yaml +7 -0
  356. bernstein-0.1.0/tests/benchmarks/capability/cap-010-proposals-generation.yaml +7 -0
  357. bernstein-0.1.0/tests/benchmarks/smoke/smoke-001-package-imports.yaml +11 -0
  358. bernstein-0.1.0/tests/benchmarks/smoke/smoke-002-cli-loads.yaml +10 -0
  359. bernstein-0.1.0/tests/benchmarks/smoke/smoke-003-task-model.yaml +14 -0
  360. bernstein-0.1.0/tests/benchmarks/smoke/smoke-004-evolution-module.yaml +11 -0
  361. bernstein-0.1.0/tests/benchmarks/smoke/smoke-005-sdd-structure.yaml +11 -0
  362. bernstein-0.1.0/tests/benchmarks/stretch/stretch-001-evolution-loop.yaml +10 -0
  363. bernstein-0.1.0/tests/benchmarks/stretch/stretch-002-multi-agent.yaml +7 -0
  364. bernstein-0.1.0/tests/benchmarks/stretch/stretch-003-self-improvement.yaml +7 -0
  365. bernstein-0.1.0/tests/benchmarks/stretch/stretch-004-agency-integration.yaml +7 -0
  366. bernstein-0.1.0/tests/benchmarks/stretch/stretch-005-cost-tracking.yaml +7 -0
  367. bernstein-0.1.0/tests/conftest.py +128 -0
  368. bernstein-0.1.0/tests/integration/__init__.py +0 -0
  369. bernstein-0.1.0/tests/integration/test_cluster_coordination.py +231 -0
  370. bernstein-0.1.0/tests/integration/test_end_to_end.py +227 -0
  371. bernstein-0.1.0/tests/integration/test_evolution_e2e.py +311 -0
  372. bernstein-0.1.0/tests/integration/test_evolution_feedback_loop.py +462 -0
  373. bernstein-0.1.0/tests/integration/test_lifecycle.py +341 -0
  374. bernstein-0.1.0/tests/test_evolution_e2e.py +912 -0
  375. bernstein-0.1.0/tests/test_server.py +257 -0
  376. bernstein-0.1.0/tests/test_worktree.py +230 -0
  377. bernstein-0.1.0/tests/unit/__init__.py +0 -0
  378. bernstein-0.1.0/tests/unit/test_a2a.py +221 -0
  379. bernstein-0.1.0/tests/unit/test_adapter_claude.py +536 -0
  380. bernstein-0.1.0/tests/unit/test_adapter_manager.py +197 -0
  381. bernstein-0.1.0/tests/unit/test_adapter_non_claude.py +737 -0
  382. bernstein-0.1.0/tests/unit/test_adapter_registry.py +68 -0
  383. bernstein-0.1.0/tests/unit/test_adapters_tier_detection.py +405 -0
  384. bernstein-0.1.0/tests/unit/test_agency_loader.py +321 -0
  385. bernstein-0.1.0/tests/unit/test_agency_provider.py +232 -0
  386. bernstein-0.1.0/tests/unit/test_aggregator.py +965 -0
  387. bernstein-0.1.0/tests/unit/test_approval_gate.py +286 -0
  388. bernstein-0.1.0/tests/unit/test_benchmark.py +445 -0
  389. bernstein-0.1.0/tests/unit/test_bootstrap.py +535 -0
  390. bernstein-0.1.0/tests/unit/test_bulletin.py +237 -0
  391. bernstein-0.1.0/tests/unit/test_catalog_cache.py +338 -0
  392. bernstein-0.1.0/tests/unit/test_catalog_discover.py +451 -0
  393. bernstein-0.1.0/tests/unit/test_catalog_matching.py +210 -0
  394. bernstein-0.1.0/tests/unit/test_ci_fix.py +442 -0
  395. bernstein-0.1.0/tests/unit/test_circuit_breaker.py +46 -0
  396. bernstein-0.1.0/tests/unit/test_cli_agents.py +244 -0
  397. bernstein-0.1.0/tests/unit/test_cli_demo.py +156 -0
  398. bernstein-0.1.0/tests/unit/test_cluster.py +286 -0
  399. bernstein-0.1.0/tests/unit/test_conflict_resolution.py +274 -0
  400. bernstein-0.1.0/tests/unit/test_context.py +422 -0
  401. bernstein-0.1.0/tests/unit/test_context_builder.py +386 -0
  402. bernstein-0.1.0/tests/unit/test_cost_cmd.py +206 -0
  403. bernstein-0.1.0/tests/unit/test_cost_engine.py +420 -0
  404. bernstein-0.1.0/tests/unit/test_cost_tracker.py +371 -0
  405. bernstein-0.1.0/tests/unit/test_creative_pipeline.py +358 -0
  406. bernstein-0.1.0/tests/unit/test_dashboard.py +186 -0
  407. bernstein-0.1.0/tests/unit/test_doctor.py +106 -0
  408. bernstein-0.1.0/tests/unit/test_evolution.py +1025 -0
  409. bernstein-0.1.0/tests/unit/test_evolution_integration.py +332 -0
  410. bernstein-0.1.0/tests/unit/test_evolution_loop.py +1027 -0
  411. bernstein-0.1.0/tests/unit/test_evolve_mode.py +481 -0
  412. bernstein-0.1.0/tests/unit/test_evolve_report.py +390 -0
  413. bernstein-0.1.0/tests/unit/test_failure_evolution.py +406 -0
  414. bernstein-0.1.0/tests/unit/test_fast_path.py +450 -0
  415. bernstein-0.1.0/tests/unit/test_feature_discovery.py +288 -0
  416. bernstein-0.1.0/tests/unit/test_git_context.py +293 -0
  417. bernstein-0.1.0/tests/unit/test_git_ops.py +588 -0
  418. bernstein-0.1.0/tests/unit/test_github.py +477 -0
  419. bernstein-0.1.0/tests/unit/test_github_app.py +732 -0
  420. bernstein-0.1.0/tests/unit/test_graph.py +304 -0
  421. bernstein-0.1.0/tests/unit/test_hijacker.py +656 -0
  422. bernstein-0.1.0/tests/unit/test_home.py +158 -0
  423. bernstein-0.1.0/tests/unit/test_idle_agent_detection.py +294 -0
  424. bernstein-0.1.0/tests/unit/test_invariants.py +57 -0
  425. bernstein-0.1.0/tests/unit/test_janitor.py +833 -0
  426. bernstein-0.1.0/tests/unit/test_live_display.py +179 -0
  427. bernstein-0.1.0/tests/unit/test_llm.py +442 -0
  428. bernstein-0.1.0/tests/unit/test_logs_cmd.py +127 -0
  429. bernstein-0.1.0/tests/unit/test_manager.py +1036 -0
  430. bernstein-0.1.0/tests/unit/test_mcp_config.py +278 -0
  431. bernstein-0.1.0/tests/unit/test_mcp_manager.py +656 -0
  432. bernstein-0.1.0/tests/unit/test_mcp_registry.py +398 -0
  433. bernstein-0.1.0/tests/unit/test_metrics.py +581 -0
  434. bernstein-0.1.0/tests/unit/test_metrics_batching.py +158 -0
  435. bernstein-0.1.0/tests/unit/test_models.py +346 -0
  436. bernstein-0.1.0/tests/unit/test_multi_cell.py +588 -0
  437. bernstein-0.1.0/tests/unit/test_orchestrator.py +4839 -0
  438. bernstein-0.1.0/tests/unit/test_plan_cmd.py +116 -0
  439. bernstein-0.1.0/tests/unit/test_plugins.py +360 -0
  440. bernstein-0.1.0/tests/unit/test_policy.py +1011 -0
  441. bernstein-0.1.0/tests/unit/test_prometheus.py +224 -0
  442. bernstein-0.1.0/tests/unit/test_rag.py +330 -0
  443. bernstein-0.1.0/tests/unit/test_registry.py +499 -0
  444. bernstein-0.1.0/tests/unit/test_renderer.py +177 -0
  445. bernstein-0.1.0/tests/unit/test_researcher.py +172 -0
  446. bernstein-0.1.0/tests/unit/test_retro_cmd.py +221 -0
  447. bernstein-0.1.0/tests/unit/test_retrospective.py +293 -0
  448. bernstein-0.1.0/tests/unit/test_router.py +596 -0
  449. bernstein-0.1.0/tests/unit/test_sandbox.py +370 -0
  450. bernstein-0.1.0/tests/unit/test_seed.py +373 -0
  451. bernstein-0.1.0/tests/unit/test_server.py +1918 -0
  452. bernstein-0.1.0/tests/unit/test_signals.py +178 -0
  453. bernstein-0.1.0/tests/unit/test_spawner.py +655 -0
  454. bernstein-0.1.0/tests/unit/test_store_factory.py +362 -0
  455. bernstein-0.1.0/tests/unit/test_swe_bench_harness.py +458 -0
  456. bernstein-0.1.0/tests/unit/test_sync.py +454 -0
  457. bernstein-0.1.0/tests/unit/test_traces.py +370 -0
  458. bernstein-0.1.0/tests/unit/test_tui.py +134 -0
  459. bernstein-0.1.0/tests/unit/test_upgrade_executor.py +816 -0
  460. bernstein-0.1.0/tests/unit/test_worker.py +193 -0
  461. bernstein-0.1.0/tests/unit/test_workspace.py +498 -0
  462. bernstein-0.1.0/uv.lock +786 -0
@@ -0,0 +1,43 @@
1
+ name: Bug Report
2
+ description: Something isn't working
3
+ labels: ["bug"]
4
+ body:
5
+ - type: textarea
6
+ id: what-happened
7
+ attributes:
8
+ label: What happened?
9
+ description: Describe the bug. What did you expect vs what actually happened?
10
+ placeholder: "I ran `bernstein conduct --goal '...'` and got..."
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: reproduce
15
+ attributes:
16
+ label: Steps to reproduce
17
+ description: Minimal steps to reproduce the issue
18
+ value: |
19
+ 1.
20
+ 2.
21
+ 3.
22
+ validations:
23
+ required: true
24
+ - type: textarea
25
+ id: env
26
+ attributes:
27
+ label: Environment
28
+ description: OS, Python version, bernstein version, which CLI agents you use
29
+ value: |
30
+ - OS:
31
+ - Python:
32
+ - Bernstein:
33
+ - Agent CLI: Claude Code / Codex / Gemini CLI / Other
34
+ validations:
35
+ required: false
36
+ - type: textarea
37
+ id: logs
38
+ attributes:
39
+ label: Logs
40
+ description: Paste relevant logs from `bernstein notes` or `.sdd/runtime/`
41
+ render: shell
42
+ validations:
43
+ required: false
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions & Ideas
4
+ url: https://github.com/chernistry/bernstein/discussions
5
+ about: Ask questions and share ideas in Discussions
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Evolve Candidate
3
+ about: Request that Bernstein implement this feature autonomously
4
+ labels: evolve-candidate
5
+ title: "[Evolve] "
6
+ ---
7
+
8
+ <!--
9
+ Bernstein scans issues labelled `evolve-candidate` and `feature-request`.
10
+ If your issue passes the trust check (collaborator author or `maintainer-approved`
11
+ label), Bernstein will convert it to a backlog task, open a PR, and close
12
+ this issue automatically when the PR is merged.
13
+
14
+ Fill in the sections below so the visionary / analyst pipeline can evaluate
15
+ your request accurately. Free-form text is fine — all fields except Problem
16
+ are optional.
17
+ -->
18
+
19
+ ### Problem
20
+
21
+ <!-- What is frustrating today? What can't you do? Be concrete. -->
22
+
23
+ ### Proposed solution
24
+
25
+ <!-- How should it work? CLI examples, pseudocode, or a sketch are all fine. -->
26
+
27
+ ### Impact
28
+
29
+ <!-- Who benefits, and how much? "Saves N minutes per session", "unblocks X workflow", etc. -->
30
+
31
+ ### Risk
32
+
33
+ <!-- Any concerns? Breaking changes, security considerations, performance tradeoffs? -->
34
+
35
+ ### Effort
36
+
37
+ <!-- S / M / L — rough guess. Leave blank if unsure. -->
@@ -0,0 +1,34 @@
1
+ name: Feature Request
2
+ description: Suggest an idea
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem
9
+ description: What problem does this solve? What's frustrating today?
10
+ placeholder: "When I try to ... I have to ..."
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: solution
15
+ attributes:
16
+ label: Proposed solution
17
+ description: How should it work? CLI examples welcome.
18
+ placeholder: "`bernstein conduct --parallel 4 --goal '...'`"
19
+ validations:
20
+ required: false
21
+ - type: dropdown
22
+ id: area
23
+ attributes:
24
+ label: Area
25
+ options:
26
+ - Orchestration
27
+ - Agent adapters (Claude/Codex/Gemini/Qwen)
28
+ - CLI / UX
29
+ - Self-evolution
30
+ - Verification / Janitor
31
+ - Documentation
32
+ - Other
33
+ validations:
34
+ required: true
@@ -0,0 +1,28 @@
1
+ # Copilot Instructions
2
+
3
+ This is Bernstein — a multi-agent orchestrator for CLI coding agents (Claude Code, Codex, Gemini CLI, Qwen).
4
+
5
+ ## Key constraints
6
+
7
+ - The orchestrator/scheduler must be deterministic Python. Never add LLM calls for coordination or scheduling decisions.
8
+ - Agents are short-lived: spawn per task batch, execute, exit. Do not create long-running agent processes.
9
+ - All runtime state lives in `.sdd/` as files (JSONL, YAML, Markdown). No databases.
10
+ - Use Pydantic models for all data structures.
11
+ - Type hints on all public functions. `pyright` strict mode must pass.
12
+
13
+ ## Before committing
14
+
15
+ ```bash
16
+ uv run ruff check src/
17
+ uv run pyright src/
18
+ uv run pytest
19
+ ```
20
+
21
+ ## Architecture
22
+
23
+ - `src/bernstein/core/server.py` — FastAPI task server (HTTP API on :8052)
24
+ - `src/bernstein/core/orchestrator.py` — deterministic scheduling loop
25
+ - `src/bernstein/core/spawner.py` — launches CLI agents
26
+ - `src/bernstein/core/janitor.py` — verifies task completion via signals
27
+ - `src/bernstein/adapters/` — pluggable CLI adapters (inherit from `CLIAdapter` ABC)
28
+ - `src/bernstein/evolution/` — self-evolution with safety gates
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ groups:
8
+ minor-and-patch:
9
+ update-types:
10
+ - minor
11
+ - patch
12
+ ignore:
13
+ - dependency-name: "*"
14
+ update-types: ["version-update:semver-major"]
15
+
16
+ - package-ecosystem: github-actions
17
+ directory: /
18
+ schedule:
19
+ interval: weekly
@@ -0,0 +1,19 @@
1
+ ## What
2
+
3
+ <!-- One-liner: what does this PR do? -->
4
+
5
+ ## Why
6
+
7
+ <!-- What problem does it solve? Link to issue if applicable. -->
8
+
9
+ ## How
10
+
11
+ <!-- Brief description of the approach. -->
12
+
13
+ ## Checklist
14
+
15
+ - [ ] `uv run ruff check src/` passes
16
+ - [ ] `uv run pyright src/` passes
17
+ - [ ] `uv run pytest` passes
18
+ - [ ] New code has type hints
19
+ - [ ] Docs updated if needed
@@ -0,0 +1,46 @@
1
+ name: "Bernstein CI Fix"
2
+
3
+ # Trigger when another workflow (e.g. "CI") completes with a failure.
4
+ on:
5
+ workflow_run:
6
+ workflows: ["CI"]
7
+ types: [completed]
8
+ branches: [main, master]
9
+
10
+ # Only one fix attempt at a time per branch.
11
+ concurrency:
12
+ group: bernstein-fix-${{ github.event.workflow_run.head_branch }}
13
+ cancel-in-progress: true
14
+
15
+ permissions:
16
+ contents: write
17
+ pull-requests: write
18
+ actions: read
19
+
20
+ jobs:
21
+ fix:
22
+ name: Auto-fix with Bernstein
23
+ runs-on: ubuntu-latest
24
+ if: ${{ github.event.workflow_run.conclusion == 'failure' }}
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ with:
28
+ ref: ${{ github.event.workflow_run.head_branch }}
29
+ # Need full history for bernstein worktree operations
30
+ fetch-depth: 0
31
+
32
+ - name: Run Bernstein CI fix
33
+ uses: ./
34
+ with:
35
+ task: fix-ci
36
+ budget: "5.00"
37
+ cli: claude
38
+ max-retries: "3"
39
+ env:
40
+ # Provide the API key for whichever CLI agent you use.
41
+ # For Claude Code:
42
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
43
+ # For Codex:
44
+ # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
45
+ # For Gemini CLI:
46
+ # GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
@@ -0,0 +1,90 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+
8
+ jobs:
9
+ lint:
10
+ name: Lint
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: astral-sh/setup-uv@v5
15
+ with:
16
+ enable-cache: true
17
+ - run: uv run ruff check src/
18
+ - run: uv run ruff format --check src/
19
+
20
+ typecheck:
21
+ name: Type check
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ - uses: astral-sh/setup-uv@v5
26
+ with:
27
+ enable-cache: true
28
+ - run: uv run pyright
29
+
30
+ test:
31
+ name: Test (Python ${{ matrix.python-version }})
32
+ runs-on: ubuntu-latest
33
+ strategy:
34
+ matrix:
35
+ python-version: ["3.12", "3.13"]
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+ - uses: astral-sh/setup-uv@v5
39
+ with:
40
+ enable-cache: true
41
+ python-version: ${{ matrix.python-version }}
42
+ - run: uv run python scripts/run_tests.py -x
43
+
44
+ # Self-healing: open a GitHub Issue on master when CI fails so the evolve
45
+ # agent can pick it up as a priority-1 ci-fix task.
46
+ self-heal:
47
+ name: Self-heal (create fix issue on failure)
48
+ runs-on: ubuntu-latest
49
+ needs: [lint, test]
50
+ if: >
51
+ failure() &&
52
+ github.ref == 'refs/heads/master' &&
53
+ github.event_name == 'push'
54
+ permissions:
55
+ issues: write
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ - name: Create ci-fix issue
59
+ env:
60
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61
+ RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
62
+ run: |
63
+ TITLE="[ci-fix] CI failing on master — run ${{ github.run_id }}"
64
+ BODY="## CI failure detected
65
+
66
+ **Commit:** \`${{ github.sha }}\`
67
+ **Run:** $RUN_URL
68
+
69
+ ### Failing jobs
70
+ Check the run above for details. Common fixes:
71
+ - Lint: \`uv run ruff check --fix src/ && uv run ruff format src/\`
72
+ - Tests: \`uv run pytest tests/ -x -q --tb=short\`
73
+
74
+ ### Instructions for the fix agent
75
+ 1. Check the CI run linked above.
76
+ 2. Run the failing checks locally and fix the root cause.
77
+ 3. Verify with: \`uv run ruff check src/ && uv run pytest tests/ -x -q\`
78
+ 4. Push the fix.
79
+
80
+ /label ci-fix priority-1"
81
+
82
+ # Only open if no open ci-fix issue already exists
83
+ OPEN=$(gh issue list --label ci-fix --state open --json number --jq length 2>/dev/null || echo 0)
84
+ if [ "$OPEN" = "0" ]; then
85
+ gh issue create \
86
+ --title "$TITLE" \
87
+ --body "$BODY" \
88
+ --label "bug" \
89
+ || true # Don't fail the workflow if label doesn't exist
90
+ fi
@@ -0,0 +1,34 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ name: Build
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: astral-sh/setup-uv@v5
15
+ with:
16
+ enable-cache: true
17
+ - run: uv build
18
+ - uses: actions/upload-artifact@v4
19
+ with:
20
+ name: dist
21
+ path: dist/
22
+
23
+ publish:
24
+ name: Publish to PyPI
25
+ runs-on: ubuntu-latest
26
+ needs: build
27
+ steps:
28
+ - uses: actions/download-artifact@v4
29
+ with:
30
+ name: dist
31
+ path: dist/
32
+ - uses: pypa/gh-action-pypi-publish@release/v1
33
+ with:
34
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,56 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info/
6
+ .venv/
7
+ dist/
8
+ build/
9
+
10
+ # Environment
11
+ .env
12
+ .env.local
13
+ .env.*
14
+
15
+ # IDE / AI tooling
16
+ .DS_Store
17
+ .idea/
18
+ .vscode/
19
+ .claude/
20
+ *.swp
21
+
22
+ # Bernstein runtime state (regenerated on each run)
23
+ .sdd/runtime/
24
+ .sdd/metrics/
25
+ .sdd/upgrades/
26
+ .sdd/invariants.lock
27
+ .sdd/sandboxes/
28
+ .sdd/backlog/done/
29
+ .sdd/backlog/PLAN.md
30
+ .sdd/config.json
31
+ .sdd/config.yaml
32
+ .sdd/config/
33
+ .sdd/agents/definitions/
34
+ .sdd/evolution/
35
+ .sdd/researches/
36
+
37
+ # Proprietary: agent role prompts, design specs, development plans
38
+ templates/roles/
39
+ docs/specs/
40
+ docs/plans/
41
+
42
+ # Cache
43
+ .pytest_cache/
44
+ .ruff_cache/
45
+ .mypy_cache/
46
+
47
+ # Coverage
48
+ .coverage
49
+
50
+ # Failed/ephemeral research artifacts
51
+ .sdd/research/auto/*.json
52
+
53
+ # Other
54
+ node_modules/
55
+ *.pid
56
+ *.log
@@ -0,0 +1,102 @@
1
+ [
2
+ {
3
+ "role": "manager",
4
+ "description": "Plans and decomposes goals into tasks.",
5
+ "model": "opus",
6
+ "effort": "max",
7
+ "source": "builtin",
8
+ "fetched_at": 1774689620.4267368,
9
+ "ttl_seconds": 300,
10
+ "metadata": {}
11
+ },
12
+ {
13
+ "role": "backend",
14
+ "description": "Backend engineer.",
15
+ "model": "sonnet",
16
+ "effort": "high",
17
+ "source": "builtin",
18
+ "fetched_at": 1774689620.4267368,
19
+ "ttl_seconds": 300,
20
+ "metadata": {}
21
+ },
22
+ {
23
+ "role": "frontend",
24
+ "description": "Frontend engineer.",
25
+ "model": "sonnet",
26
+ "effort": "high",
27
+ "source": "builtin",
28
+ "fetched_at": 1774689620.4267368,
29
+ "ttl_seconds": 300,
30
+ "metadata": {}
31
+ },
32
+ {
33
+ "role": "qa",
34
+ "description": "Quality assurance and test engineer.",
35
+ "model": "sonnet",
36
+ "effort": "normal",
37
+ "source": "builtin",
38
+ "fetched_at": 1774689620.4267368,
39
+ "ttl_seconds": 300,
40
+ "metadata": {}
41
+ },
42
+ {
43
+ "role": "security",
44
+ "description": "Security engineer.",
45
+ "model": "sonnet",
46
+ "effort": "high",
47
+ "source": "builtin",
48
+ "fetched_at": 1774689620.4267368,
49
+ "ttl_seconds": 300,
50
+ "metadata": {}
51
+ },
52
+ {
53
+ "role": "devops",
54
+ "description": "DevOps / infrastructure engineer.",
55
+ "model": "sonnet",
56
+ "effort": "normal",
57
+ "source": "builtin",
58
+ "fetched_at": 1774689620.4267368,
59
+ "ttl_seconds": 300,
60
+ "metadata": {}
61
+ },
62
+ {
63
+ "role": "architect",
64
+ "description": "System architect.",
65
+ "model": "opus",
66
+ "effort": "high",
67
+ "source": "builtin",
68
+ "fetched_at": 1774689620.4267368,
69
+ "ttl_seconds": 300,
70
+ "metadata": {}
71
+ },
72
+ {
73
+ "role": "reviewer",
74
+ "description": "Code reviewer.",
75
+ "model": "sonnet",
76
+ "effort": "normal",
77
+ "source": "builtin",
78
+ "fetched_at": 1774689620.4267368,
79
+ "ttl_seconds": 300,
80
+ "metadata": {}
81
+ },
82
+ {
83
+ "role": "docs",
84
+ "description": "Documentation writer.",
85
+ "model": "sonnet",
86
+ "effort": "normal",
87
+ "source": "builtin",
88
+ "fetched_at": 1774689620.4267368,
89
+ "ttl_seconds": 300,
90
+ "metadata": {}
91
+ },
92
+ {
93
+ "role": "ml-engineer",
94
+ "description": "Machine-learning engineer.",
95
+ "model": "sonnet",
96
+ "effort": "high",
97
+ "source": "builtin",
98
+ "fetched_at": 1774689620.4267368,
99
+ "ttl_seconds": 300,
100
+ "metadata": {}
101
+ }
102
+ ]