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.
- bernstein-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +43 -0
- bernstein-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- bernstein-0.1.0/.github/ISSUE_TEMPLATE/evolve-candidate.md +37 -0
- bernstein-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
- bernstein-0.1.0/.github/copilot-instructions.md +28 -0
- bernstein-0.1.0/.github/dependabot.yml +19 -0
- bernstein-0.1.0/.github/pull_request_template.md +19 -0
- bernstein-0.1.0/.github/workflows/bernstein-ci-fix.yml +46 -0
- bernstein-0.1.0/.github/workflows/ci.yml +90 -0
- bernstein-0.1.0/.github/workflows/publish.yml +34 -0
- bernstein-0.1.0/.gitignore +56 -0
- bernstein-0.1.0/.sdd/agents/catalog.json +102 -0
- bernstein-0.1.0/.sdd/archive/tasks.jsonl +5449 -0
- bernstein-0.1.0/.sdd/backlog/claimed/414-modern-git-integration.md +207 -0
- bernstein-0.1.0/.sdd/backlog/claimed/415-creative-evolution-visionary-analyst-pipeline.md +113 -0
- bernstein-0.1.0/.sdd/backlog/claimed/416-zero-to-running-demo.md +30 -0
- bernstein-0.1.0/.sdd/backlog/claimed/417-evolution-showcase.md +27 -0
- bernstein-0.1.0/.sdd/backlog/claimed/418-agent-conflict-resolution.md +29 -0
- bernstein-0.1.0/.sdd/backlog/claimed/501-critical-ux-blockers.md +37 -0
- bernstein-0.1.0/.sdd/backlog/claimed/502-ci-devops-pipeline.md +51 -0
- bernstein-0.1.0/.sdd/backlog/claimed/503-apple-ux-overhaul.md +104 -0
- bernstein-0.1.0/.sdd/backlog/claimed/504-dashboard-svg-alignment.md +35 -0
- bernstein-0.1.0/.sdd/backlog/claimed/505-one-command-install.md +48 -0
- bernstein-0.1.0/.sdd/backlog/claimed/506-ticket-reevaluation-system.md +50 -0
- bernstein-0.1.0/.sdd/backlog/claimed/507-init-creates-bernstein-yaml.md +25 -0
- bernstein-0.1.0/.sdd/backlog/claimed/508-agent-task-graph.md +49 -0
- bernstein-0.1.0/.sdd/backlog/claimed/509-lightweight-rag-for-agents.md +52 -0
- bernstein-0.1.0/.sdd/backlog/claimed/510-mcp-autodiscovery.md +60 -0
- bernstein-0.1.0/.sdd/backlog/claimed/511-a2a-protocol-support.md +57 -0
- bernstein-0.1.0/.sdd/backlog/claimed/512-swe-bench-evaluation.md +43 -0
- bernstein-0.1.0/.sdd/backlog/claimed/513-agency-showcase-autodiscovery.md +62 -0
- bernstein-0.1.0/.sdd/backlog/claimed/514-global-bernstein-home.md +46 -0
- bernstein-0.1.0/.sdd/backlog/claimed/515-eval-harness.md +138 -0
- bernstein-0.1.0/.sdd/backlog/claimed/516-eval-gated-evolution.md +78 -0
- bernstein-0.1.0/.sdd/backlog/claimed/517-failure-cartography.md +68 -0
- bernstein-0.1.0/.sdd/backlog/claimed/518-scenario-benchmarks.md +94 -0
- bernstein-0.1.0/.sdd/backlog/claimed/519-distributed-cluster-mode.md +51 -0
- bernstein-0.1.0/.sdd/backlog/claimed/520-github-issues-evolve-coordination.md +52 -0
- bernstein-0.1.0/.sdd/backlog/claimed/521-shared-state-backend.md +53 -0
- bernstein-0.1.0/.sdd/backlog/claimed/522-evolve-external-signals.md +54 -0
- bernstein-0.1.0/.sdd/backlog/claimed/523-docker-k8s-deployment.md +58 -0
- bernstein-0.1.0/.sdd/backlog/claimed/524-prometheus-observability.md +57 -0
- bernstein-0.1.0/.sdd/backlog/claimed/525-community-driven-evolution.md +50 -0
- bernstein-0.1.0/.sdd/backlog/claimed/526-web-dashboard.md +46 -0
- bernstein-0.1.0/.sdd/backlog/claimed/527-multi-repo-orchestration.md +56 -0
- bernstein-0.1.0/.sdd/backlog/claimed/528-cost-optimization-engine.md +51 -0
- bernstein-0.1.0/.sdd/backlog/claimed/529-plugin-system.md +57 -0
- bernstein-0.1.0/.sdd/backlog/claimed/530-evolve-memory-learning.md +55 -0
- bernstein-0.1.0/.sdd/backlog/claimed/531-competitive-feature-matrix.md +47 -0
- bernstein-0.1.0/.sdd/backlog/claimed/532-bernstein-as-github-app.md +48 -0
- bernstein-0.1.0/.sdd/backlog/claimed/533-wasm-fast-path-agent-booster.md +57 -0
- bernstein-0.1.0/.sdd/backlog/claimed/534-deep-observability-agent-traces.md +66 -0
- bernstein-0.1.0/.sdd/backlog/claimed/535-zero-lock-in-model-agnostic-showcase.md +50 -0
- bernstein-0.1.0/.sdd/backlog/claimed/536-ci-self-healing-agent.md +47 -0
- bernstein-0.1.0/.sdd/backlog/claimed/537-github-issues-sync-evolve.md +47 -0
- bernstein-0.1.0/.sdd/backlog/claimed/538-dashboard-tui-match-svg-mockup.md +275 -0
- bernstein-0.1.0/.sdd/backlog/closed/100-decompose-evolution-module.md +51 -0
- bernstein-0.1.0/.sdd/backlog/closed/104-approval-gate-router.md +44 -0
- bernstein-0.1.0/.sdd/backlog/closed/105-sandbox-validator.md +45 -0
- bernstein-0.1.0/.sdd/backlog/closed/106-metrics-aggregator-ewma-cusum.md +45 -0
- bernstein-0.1.0/.sdd/backlog/closed/107-golden-benchmark-suite.md +47 -0
- bernstein-0.1.0/.sdd/backlog/closed/108-autoresearch-loop.md +63 -0
- bernstein-0.1.0/.sdd/backlog/closed/112-judge-node-pattern.md +53 -0
- bernstein-0.1.0/.sdd/backlog/closed/113-graph-evolution-on-failure.md +43 -0
- bernstein-0.1.0/.sdd/backlog/closed/114-sync-backlog-files-with-server.md +45 -0
- bernstein-0.1.0/.sdd/backlog/closed/115-wire-tier-aware-router.md +46 -0
- bernstein-0.1.0/.sdd/backlog/closed/200-continuous-self-improvement-loop.md +42 -0
- bernstein-0.1.0/.sdd/backlog/closed/201-agency-agent-hiring.md +63 -0
- bernstein-0.1.0/.sdd/backlog/closed/202-fix-tests-regressions.md +30 -0
- bernstein-0.1.0/.sdd/backlog/closed/203-improve-dashboard-ux.md +34 -0
- bernstein-0.1.0/.sdd/backlog/closed/204-web-research-for-evolve.md +69 -0
- bernstein-0.1.0/.sdd/backlog/closed/206-unstoppable-evolve-mode.md +56 -0
- bernstein-0.1.0/.sdd/backlog/closed/310-wire-evolution-end-to-end.md +55 -0
- bernstein-0.1.0/.sdd/backlog/closed/400-unified-agent-model.md +41 -0
- bernstein-0.1.0/.sdd/backlog/closed/401-agency-provider.md +34 -0
- bernstein-0.1.0/.sdd/backlog/closed/402-generic-registry-provider.md +33 -0
- bernstein-0.1.0/.sdd/backlog/closed/403-catalog-cache-autodiscovery.md +39 -0
- bernstein-0.1.0/.sdd/backlog/closed/404-catalog-role-matching.md +41 -0
- bernstein-0.1.0/.sdd/backlog/closed/405-catalog-yaml-config.md +51 -0
- bernstein-0.1.0/.sdd/backlog/closed/406-catalog-cli-commands.md +34 -0
- bernstein-0.1.0/.sdd/backlog/closed/410-auto-backlog-replenishment.md +41 -0
- bernstein-0.1.0/.sdd/backlog/closed/411-self-discovered-feature-tickets.md +39 -0
- bernstein-0.1.0/.sdd/backlog/closed/412-rich-task-context-injection.md +94 -0
- bernstein-0.1.0/.sdd/backlog/closed/413-gh-pages-docs-site.md +77 -0
- bernstein-0.1.0/.sdd/backlog/closed/420-async-orchestrator-tick.md +40 -0
- bernstein-0.1.0/.sdd/backlog/closed/421-batch-claim-api.md +36 -0
- bernstein-0.1.0/.sdd/backlog/closed/422-metrics-batching-and-pooling.md +37 -0
- bernstein-0.1.0/.sdd/backlog/closed/500-idle-agent-detection.md +61 -0
- bernstein-0.1.0/.sdd/backlog/closed/519-distributed-cluster-mode.md +57 -0
- bernstein-0.1.0/.sdd/backlog/closed/520-github-issues-evolve-coordination.md +58 -0
- bernstein-0.1.0/.sdd/backlog/closed/522-evolve-external-signals.md +60 -0
- bernstein-0.1.0/.sdd/backlog/closed/523-docker-k8s-deployment.md +64 -0
- bernstein-0.1.0/.sdd/backlog/closed/525-community-driven-evolution.md +56 -0
- bernstein-0.1.0/.sdd/backlog/closed/528-cost-optimization-engine.md +57 -0
- bernstein-0.1.0/.sdd/backlog/closed/530-evolve-memory-learning.md +61 -0
- bernstein-0.1.0/.sdd/backlog/closed/533-wasm-fast-path-agent-booster.md +63 -0
- bernstein-0.1.0/.sdd/backlog/closed/537-github-issues-sync-evolve.md +53 -0
- bernstein-0.1.0/.sdd/backlog/closed/538-dashboard-tui-match-svg-mockup.md +248 -0
- bernstein-0.1.0/.sdd/backlog/closed/600-license-evaluation.md +25 -0
- bernstein-0.1.0/.sdd/backlog/closed/601-per-run-cost-budget.md +30 -0
- bernstein-0.1.0/.sdd/backlog/closed/602-ci-auto-fix-pipeline.md +28 -0
- bernstein-0.1.0/.sdd/backlog/closed/605-quickstart-demo.md +27 -0
- bernstein-0.1.0/.sdd/backlog/closed/606-mcp-tool-access.md +29 -0
- bernstein-0.1.0/.sdd/backlog/closed/608-the-bernstein-way.md +25 -0
- bernstein-0.1.0/.sdd/backlog/closed/610-tui-session-manager.md +28 -0
- bernstein-0.1.0/.sdd/backlog/closed/613-github-action.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/603-coordinated-launch-plan.md +25 -0
- bernstein-0.1.0/.sdd/backlog/open/604-polish-cli-ux.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/607-orchestration-benchmark.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/609-founder-content-calendar.md +25 -0
- bernstein-0.1.0/.sdd/backlog/open/611-execution-recording-replay.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/612-cross-provider-handoff.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/614-competitor-comparison-pages.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/615-opentelemetry-traces.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/616-structured-audit-logs.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/617-autogen-migration-guide.md +25 -0
- bernstein-0.1.0/.sdd/backlog/open/618-intelligent-context-partitioning.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/619-conference-cfp-submissions.md +26 -0
- bernstein-0.1.0/.sdd/backlog/open/620-a2a-agent-cards.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/621-cost-attribution-dashboard.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/622-hybrid-model-routing.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/623-bernstein-mcp-server.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/624-bernstein-bench-suite.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/625-shared-project-context.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/626-merge-conflict-resolution.md +30 -0
- bernstein-0.1.0/.sdd/backlog/open/627-workspace-isolation-policies.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/628-offline-ollama-verification.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/629-cline-roo-code-adapters.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/630-weekly-newsletter.md +26 -0
- bernstein-0.1.0/.sdd/backlog/open/631-monetization-design.md +25 -0
- bernstein-0.1.0/.sdd/backlog/open/632-microvm-sandboxing.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/633-multi-agent-vs-single-benchmark.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/634-auto-model-downgrade.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/635-slack-discord-notifications.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/636-agent-profile-marketplace.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/637-loop-detection-circuit-breaker.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/638-scheduled-orchestration.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/639-monitoring-web-dashboard.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/640-kubernetes-of-agents-blog.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/641-ab-testing-models.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/642-jira-linear-integration.md +29 -0
- bernstein-0.1.0/.sdd/backlog/open/643-gitlab-ci-integration.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/644-vscode-extension.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/645-agent-config-versioning.md +27 -0
- bernstein-0.1.0/.sdd/backlog/open/646-multimodal-agent-context.md +28 -0
- bernstein-0.1.0/.sdd/backlog/open/647-wasm-isolation-spike.md +25 -0
- bernstein-0.1.0/.sdd/backlog/open/648-custom-orchestration-strategies.md +30 -0
- bernstein-0.1.0/.sdd/backlog/open/649-browser-use-agents.md +28 -0
- bernstein-0.1.0/.sdd/decisions/600-license-apache2.md +34 -0
- bernstein-0.1.0/.sdd/index/codebase.db +0 -0
- bernstein-0.1.0/.sdd/knowledge/architecture.md +284 -0
- bernstein-0.1.0/.sdd/knowledge/file_index.json +2960 -0
- bernstein-0.1.0/.sdd/knowledge/recent_decisions.md +48 -0
- bernstein-0.1.0/.sdd/marketing/blog-tracker.md +44 -0
- bernstein-0.1.0/.sdd/marketing/discord-prompt.md +45 -0
- bernstein-0.1.0/.sdd/marketing/growth-playbook.md +161 -0
- bernstein-0.1.0/.sdd/marketing/strategy.md +159 -0
- bernstein-0.1.0/.sdd/marketing/tracker.md +116 -0
- bernstein-0.1.0/.sdd/marketing/wave2_plan.md +66 -0
- bernstein-0.1.0/.sdd/project.md +21 -0
- bernstein-0.1.0/.sdd/research/auto/competitive-landscape-2026-03.md +89 -0
- bernstein-0.1.0/.sdd/research/auto/context-sharing-best-practices-2026.md +92 -0
- bernstein-0.1.0/.sdd/research/auto/scenario-forecast-2026-03.md +45 -0
- bernstein-0.1.0/.sdd/research/competitor_landscape.md +577 -0
- bernstein-0.1.0/.sdd/research/enterprise_needs.md +254 -0
- bernstein-0.1.0/.sdd/research/future_research.md +174 -0
- bernstein-0.1.0/AGENTS.md +68 -0
- bernstein-0.1.0/CLAUDE.md +41 -0
- bernstein-0.1.0/CODE_OF_CONDUCT.md +28 -0
- bernstein-0.1.0/CONTRIBUTING.md +275 -0
- bernstein-0.1.0/Dockerfile +44 -0
- bernstein-0.1.0/LICENSE +191 -0
- bernstein-0.1.0/PKG-INFO +24 -0
- bernstein-0.1.0/README.md +241 -0
- bernstein-0.1.0/SECURITY.md +23 -0
- bernstein-0.1.0/action/entrypoint.sh +122 -0
- bernstein-0.1.0/action.yml +79 -0
- bernstein-0.1.0/bernstein.yaml +50 -0
- bernstein-0.1.0/deploy/github-app/README.md +97 -0
- bernstein-0.1.0/deploy/github-app/app.yml +34 -0
- bernstein-0.1.0/deploy/grafana/dashboard.json +143 -0
- bernstein-0.1.0/deploy/helm/bernstein/Chart.yaml +26 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/_helpers.tpl +100 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/configmap.yaml +12 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/deployment-orchestrator.yaml +80 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/deployment-server.yaml +106 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/hpa.yaml +23 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/ingress.yaml +35 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/pvc-server.yaml +17 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/secret-auth.yaml +11 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/service.yaml +17 -0
- bernstein-0.1.0/deploy/helm/bernstein/templates/statefulset-worker.yaml +91 -0
- bernstein-0.1.0/deploy/helm/bernstein/values.yaml +133 -0
- bernstein-0.1.0/deploy/prometheus/prometheus.yml +5 -0
- bernstein-0.1.0/docker-compose.yaml +143 -0
- bernstein-0.1.0/docs/CHANGELOG.md +26 -0
- bernstein-0.1.0/docs/DEPLOYMENT.md +317 -0
- bernstein-0.1.0/docs/DESIGN.md +1386 -0
- bernstein-0.1.0/docs/GETTING_STARTED.md +704 -0
- bernstein-0.1.0/docs/VERSION +1 -0
- bernstein-0.1.0/docs/adapters.html +344 -0
- bernstein-0.1.0/docs/api.html +460 -0
- bernstein-0.1.0/docs/assets/architecture.svg +124 -0
- bernstein-0.1.0/docs/assets/dashboard.svg +378 -0
- bernstein-0.1.0/docs/assets/logo-dark.svg +17 -0
- bernstein-0.1.0/docs/assets/logo-light.svg +17 -0
- bernstein-0.1.0/docs/competitive-matrix.md +42 -0
- bernstein-0.1.0/docs/concepts.html +313 -0
- bernstein-0.1.0/docs/decisions/001-agent-lifecycle.md +263 -0
- bernstein-0.1.0/docs/decisions/002-ux-and-distribution.md +219 -0
- bernstein-0.1.0/docs/decisions/003-self-evolution.md +493 -0
- bernstein-0.1.0/docs/getting-started.html +320 -0
- bernstein-0.1.0/docs/github-action.md +105 -0
- bernstein-0.1.0/docs/github-app-setup.md +95 -0
- bernstein-0.1.0/docs/index.html +412 -0
- bernstein-0.1.0/docs/rag-challenge-swarm-architecture.md +127 -0
- bernstein-0.1.0/docs/script.js +91 -0
- bernstein-0.1.0/docs/style.css +464 -0
- bernstein-0.1.0/docs/superpowers/plans/2026-03-28-distributed-cluster-mode.md +1252 -0
- bernstein-0.1.0/docs/superpowers/plans/2026-03-28-git-migration.md +608 -0
- bernstein-0.1.0/docs/the-bernstein-way.md +115 -0
- bernstein-0.1.0/docs/zero-lock-in.md +191 -0
- bernstein-0.1.0/examples/full.yaml +60 -0
- bernstein-0.1.0/examples/multi-model/bernstein.yaml +54 -0
- bernstein-0.1.0/examples/multi-model/run.sh +69 -0
- bernstein-0.1.0/examples/plugins/logging_plugin.py +50 -0
- bernstein-0.1.0/examples/quickstart/README.md +15 -0
- bernstein-0.1.0/examples/quickstart/app.py +52 -0
- bernstein-0.1.0/examples/quickstart/bernstein.yaml +10 -0
- bernstein-0.1.0/examples/rag-system.yaml +14 -0
- bernstein-0.1.0/examples/simple.yaml +4 -0
- bernstein-0.1.0/pyproject.toml +67 -0
- bernstein-0.1.0/scripts/run_tests.py +158 -0
- bernstein-0.1.0/src/bernstein/__init__.py +32 -0
- bernstein-0.1.0/src/bernstein/__main__.py +5 -0
- bernstein-0.1.0/src/bernstein/adapters/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/adapters/base.py +112 -0
- bernstein-0.1.0/src/bernstein/adapters/ci/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/adapters/ci/github_actions.py +276 -0
- bernstein-0.1.0/src/bernstein/adapters/claude.py +301 -0
- bernstein-0.1.0/src/bernstein/adapters/codex.py +118 -0
- bernstein-0.1.0/src/bernstein/adapters/gemini.py +115 -0
- bernstein-0.1.0/src/bernstein/adapters/generic.py +90 -0
- bernstein-0.1.0/src/bernstein/adapters/manager.py +86 -0
- bernstein-0.1.0/src/bernstein/adapters/qwen.py +174 -0
- bernstein-0.1.0/src/bernstein/adapters/registry.py +55 -0
- bernstein-0.1.0/src/bernstein/agents/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/agents/agency_provider.py +183 -0
- bernstein-0.1.0/src/bernstein/agents/catalog.py +576 -0
- bernstein-0.1.0/src/bernstein/agents/discovery.py +434 -0
- bernstein-0.1.0/src/bernstein/agents/registry.py +431 -0
- bernstein-0.1.0/src/bernstein/benchmark/__init__.py +0 -0
- bernstein-0.1.0/src/bernstein/benchmark/swe_bench.py +525 -0
- bernstein-0.1.0/src/bernstein/cli/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/cli/cost.py +277 -0
- bernstein-0.1.0/src/bernstein/cli/dashboard.py +718 -0
- bernstein-0.1.0/src/bernstein/cli/errors.py +75 -0
- bernstein-0.1.0/src/bernstein/cli/main.py +4462 -0
- bernstein-0.1.0/src/bernstein/core/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/core/a2a.py +305 -0
- bernstein-0.1.0/src/bernstein/core/agency_loader.py +163 -0
- bernstein-0.1.0/src/bernstein/core/bootstrap.py +959 -0
- bernstein-0.1.0/src/bernstein/core/bulletin.py +183 -0
- bernstein-0.1.0/src/bernstein/core/ci_fix.py +650 -0
- bernstein-0.1.0/src/bernstein/core/ci_log_parser.py +82 -0
- bernstein-0.1.0/src/bernstein/core/cluster.py +392 -0
- bernstein-0.1.0/src/bernstein/core/context.py +1156 -0
- bernstein-0.1.0/src/bernstein/core/cost.py +394 -0
- bernstein-0.1.0/src/bernstein/core/cost_tracker.py +375 -0
- bernstein-0.1.0/src/bernstein/core/evolution.py +77 -0
- bernstein-0.1.0/src/bernstein/core/fast_path.py +683 -0
- bernstein-0.1.0/src/bernstein/core/git_context.py +388 -0
- bernstein-0.1.0/src/bernstein/core/git_ops.py +712 -0
- bernstein-0.1.0/src/bernstein/core/github.py +701 -0
- bernstein-0.1.0/src/bernstein/core/graph.py +325 -0
- bernstein-0.1.0/src/bernstein/core/hijacker.py +579 -0
- bernstein-0.1.0/src/bernstein/core/home.py +182 -0
- bernstein-0.1.0/src/bernstein/core/janitor.py +633 -0
- bernstein-0.1.0/src/bernstein/core/llm.py +188 -0
- bernstein-0.1.0/src/bernstein/core/manager.py +1009 -0
- bernstein-0.1.0/src/bernstein/core/mcp_manager.py +365 -0
- bernstein-0.1.0/src/bernstein/core/mcp_registry.py +288 -0
- bernstein-0.1.0/src/bernstein/core/metrics.py +912 -0
- bernstein-0.1.0/src/bernstein/core/models.py +422 -0
- bernstein-0.1.0/src/bernstein/core/multi_cell.py +447 -0
- bernstein-0.1.0/src/bernstein/core/orchestrator.py +2893 -0
- bernstein-0.1.0/src/bernstein/core/policy.py +599 -0
- bernstein-0.1.0/src/bernstein/core/prometheus.py +129 -0
- bernstein-0.1.0/src/bernstein/core/rag.py +502 -0
- bernstein-0.1.0/src/bernstein/core/researcher.py +277 -0
- bernstein-0.1.0/src/bernstein/core/retrospective.py +419 -0
- bernstein-0.1.0/src/bernstein/core/router.py +733 -0
- bernstein-0.1.0/src/bernstein/core/seed.py +426 -0
- bernstein-0.1.0/src/bernstein/core/server.py +2043 -0
- bernstein-0.1.0/src/bernstein/core/signals.py +231 -0
- bernstein-0.1.0/src/bernstein/core/spawner.py +677 -0
- bernstein-0.1.0/src/bernstein/core/store.py +279 -0
- bernstein-0.1.0/src/bernstein/core/store_factory.py +157 -0
- bernstein-0.1.0/src/bernstein/core/store_postgres.py +780 -0
- bernstein-0.1.0/src/bernstein/core/store_redis.py +124 -0
- bernstein-0.1.0/src/bernstein/core/sync.py +465 -0
- bernstein-0.1.0/src/bernstein/core/traces.py +493 -0
- bernstein-0.1.0/src/bernstein/core/upgrade_executor.py +576 -0
- bernstein-0.1.0/src/bernstein/core/worker.py +120 -0
- bernstein-0.1.0/src/bernstein/core/workspace.py +256 -0
- bernstein-0.1.0/src/bernstein/core/worktree.py +157 -0
- bernstein-0.1.0/src/bernstein/dashboard/__init__.py +8 -0
- bernstein-0.1.0/src/bernstein/dashboard/templates/index.html +281 -0
- bernstein-0.1.0/src/bernstein/evolution/__init__.py +443 -0
- bernstein-0.1.0/src/bernstein/evolution/aggregator.py +1134 -0
- bernstein-0.1.0/src/bernstein/evolution/applicator.py +225 -0
- bernstein-0.1.0/src/bernstein/evolution/benchmark.py +340 -0
- bernstein-0.1.0/src/bernstein/evolution/circuit.py +200 -0
- bernstein-0.1.0/src/bernstein/evolution/creative.py +651 -0
- bernstein-0.1.0/src/bernstein/evolution/detector.py +644 -0
- bernstein-0.1.0/src/bernstein/evolution/gate.py +437 -0
- bernstein-0.1.0/src/bernstein/evolution/invariants.py +134 -0
- bernstein-0.1.0/src/bernstein/evolution/loop.py +1043 -0
- bernstein-0.1.0/src/bernstein/evolution/proposals.py +174 -0
- bernstein-0.1.0/src/bernstein/evolution/report.py +532 -0
- bernstein-0.1.0/src/bernstein/evolution/sandbox.py +361 -0
- bernstein-0.1.0/src/bernstein/evolution/types.py +121 -0
- bernstein-0.1.0/src/bernstein/github_app/__init__.py +29 -0
- bernstein-0.1.0/src/bernstein/github_app/app.py +244 -0
- bernstein-0.1.0/src/bernstein/github_app/mapper.py +307 -0
- bernstein-0.1.0/src/bernstein/github_app/webhooks.py +116 -0
- bernstein-0.1.0/src/bernstein/plugins/__init__.py +10 -0
- bernstein-0.1.0/src/bernstein/plugins/hookspecs.py +74 -0
- bernstein-0.1.0/src/bernstein/plugins/manager.py +257 -0
- bernstein-0.1.0/src/bernstein/templates/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/templates/renderer.py +138 -0
- bernstein-0.1.0/src/bernstein/tui/__init__.py +1 -0
- bernstein-0.1.0/src/bernstein/tui/app.py +186 -0
- bernstein-0.1.0/src/bernstein/tui/styles.tcss +75 -0
- bernstein-0.1.0/src/bernstein/tui/widgets.py +162 -0
- bernstein-0.1.0/templates/bernstein.yaml +80 -0
- bernstein-0.1.0/templates/demo/Makefile +7 -0
- bernstein-0.1.0/templates/demo/README.md +22 -0
- bernstein-0.1.0/templates/demo/app.py +14 -0
- bernstein-0.1.0/templates/demo/requirements.txt +2 -0
- bernstein-0.1.0/templates/demo/tests/__init__.py +0 -0
- bernstein-0.1.0/templates/demo/tests/test_app.py +27 -0
- bernstein-0.1.0/templates/prompts/judge.md +39 -0
- bernstein-0.1.0/templates/prompts/plan.md +63 -0
- bernstein-0.1.0/templates/prompts/review.md +45 -0
- bernstein-0.1.0/tests/__init__.py +0 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-001-router-selects-model.yaml +10 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-002-seed-parsing.yaml +10 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-003-task-state-transitions.yaml +8 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-004-metrics-recording.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-005-janitor-cleanup.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-006-circuit-breaker.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-007-policy-enforcement.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-008-backlog-sync.yaml +8 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-009-invariants-check.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/capability/cap-010-proposals-generation.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/smoke/smoke-001-package-imports.yaml +11 -0
- bernstein-0.1.0/tests/benchmarks/smoke/smoke-002-cli-loads.yaml +10 -0
- bernstein-0.1.0/tests/benchmarks/smoke/smoke-003-task-model.yaml +14 -0
- bernstein-0.1.0/tests/benchmarks/smoke/smoke-004-evolution-module.yaml +11 -0
- bernstein-0.1.0/tests/benchmarks/smoke/smoke-005-sdd-structure.yaml +11 -0
- bernstein-0.1.0/tests/benchmarks/stretch/stretch-001-evolution-loop.yaml +10 -0
- bernstein-0.1.0/tests/benchmarks/stretch/stretch-002-multi-agent.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/stretch/stretch-003-self-improvement.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/stretch/stretch-004-agency-integration.yaml +7 -0
- bernstein-0.1.0/tests/benchmarks/stretch/stretch-005-cost-tracking.yaml +7 -0
- bernstein-0.1.0/tests/conftest.py +128 -0
- bernstein-0.1.0/tests/integration/__init__.py +0 -0
- bernstein-0.1.0/tests/integration/test_cluster_coordination.py +231 -0
- bernstein-0.1.0/tests/integration/test_end_to_end.py +227 -0
- bernstein-0.1.0/tests/integration/test_evolution_e2e.py +311 -0
- bernstein-0.1.0/tests/integration/test_evolution_feedback_loop.py +462 -0
- bernstein-0.1.0/tests/integration/test_lifecycle.py +341 -0
- bernstein-0.1.0/tests/test_evolution_e2e.py +912 -0
- bernstein-0.1.0/tests/test_server.py +257 -0
- bernstein-0.1.0/tests/test_worktree.py +230 -0
- bernstein-0.1.0/tests/unit/__init__.py +0 -0
- bernstein-0.1.0/tests/unit/test_a2a.py +221 -0
- bernstein-0.1.0/tests/unit/test_adapter_claude.py +536 -0
- bernstein-0.1.0/tests/unit/test_adapter_manager.py +197 -0
- bernstein-0.1.0/tests/unit/test_adapter_non_claude.py +737 -0
- bernstein-0.1.0/tests/unit/test_adapter_registry.py +68 -0
- bernstein-0.1.0/tests/unit/test_adapters_tier_detection.py +405 -0
- bernstein-0.1.0/tests/unit/test_agency_loader.py +321 -0
- bernstein-0.1.0/tests/unit/test_agency_provider.py +232 -0
- bernstein-0.1.0/tests/unit/test_aggregator.py +965 -0
- bernstein-0.1.0/tests/unit/test_approval_gate.py +286 -0
- bernstein-0.1.0/tests/unit/test_benchmark.py +445 -0
- bernstein-0.1.0/tests/unit/test_bootstrap.py +535 -0
- bernstein-0.1.0/tests/unit/test_bulletin.py +237 -0
- bernstein-0.1.0/tests/unit/test_catalog_cache.py +338 -0
- bernstein-0.1.0/tests/unit/test_catalog_discover.py +451 -0
- bernstein-0.1.0/tests/unit/test_catalog_matching.py +210 -0
- bernstein-0.1.0/tests/unit/test_ci_fix.py +442 -0
- bernstein-0.1.0/tests/unit/test_circuit_breaker.py +46 -0
- bernstein-0.1.0/tests/unit/test_cli_agents.py +244 -0
- bernstein-0.1.0/tests/unit/test_cli_demo.py +156 -0
- bernstein-0.1.0/tests/unit/test_cluster.py +286 -0
- bernstein-0.1.0/tests/unit/test_conflict_resolution.py +274 -0
- bernstein-0.1.0/tests/unit/test_context.py +422 -0
- bernstein-0.1.0/tests/unit/test_context_builder.py +386 -0
- bernstein-0.1.0/tests/unit/test_cost_cmd.py +206 -0
- bernstein-0.1.0/tests/unit/test_cost_engine.py +420 -0
- bernstein-0.1.0/tests/unit/test_cost_tracker.py +371 -0
- bernstein-0.1.0/tests/unit/test_creative_pipeline.py +358 -0
- bernstein-0.1.0/tests/unit/test_dashboard.py +186 -0
- bernstein-0.1.0/tests/unit/test_doctor.py +106 -0
- bernstein-0.1.0/tests/unit/test_evolution.py +1025 -0
- bernstein-0.1.0/tests/unit/test_evolution_integration.py +332 -0
- bernstein-0.1.0/tests/unit/test_evolution_loop.py +1027 -0
- bernstein-0.1.0/tests/unit/test_evolve_mode.py +481 -0
- bernstein-0.1.0/tests/unit/test_evolve_report.py +390 -0
- bernstein-0.1.0/tests/unit/test_failure_evolution.py +406 -0
- bernstein-0.1.0/tests/unit/test_fast_path.py +450 -0
- bernstein-0.1.0/tests/unit/test_feature_discovery.py +288 -0
- bernstein-0.1.0/tests/unit/test_git_context.py +293 -0
- bernstein-0.1.0/tests/unit/test_git_ops.py +588 -0
- bernstein-0.1.0/tests/unit/test_github.py +477 -0
- bernstein-0.1.0/tests/unit/test_github_app.py +732 -0
- bernstein-0.1.0/tests/unit/test_graph.py +304 -0
- bernstein-0.1.0/tests/unit/test_hijacker.py +656 -0
- bernstein-0.1.0/tests/unit/test_home.py +158 -0
- bernstein-0.1.0/tests/unit/test_idle_agent_detection.py +294 -0
- bernstein-0.1.0/tests/unit/test_invariants.py +57 -0
- bernstein-0.1.0/tests/unit/test_janitor.py +833 -0
- bernstein-0.1.0/tests/unit/test_live_display.py +179 -0
- bernstein-0.1.0/tests/unit/test_llm.py +442 -0
- bernstein-0.1.0/tests/unit/test_logs_cmd.py +127 -0
- bernstein-0.1.0/tests/unit/test_manager.py +1036 -0
- bernstein-0.1.0/tests/unit/test_mcp_config.py +278 -0
- bernstein-0.1.0/tests/unit/test_mcp_manager.py +656 -0
- bernstein-0.1.0/tests/unit/test_mcp_registry.py +398 -0
- bernstein-0.1.0/tests/unit/test_metrics.py +581 -0
- bernstein-0.1.0/tests/unit/test_metrics_batching.py +158 -0
- bernstein-0.1.0/tests/unit/test_models.py +346 -0
- bernstein-0.1.0/tests/unit/test_multi_cell.py +588 -0
- bernstein-0.1.0/tests/unit/test_orchestrator.py +4839 -0
- bernstein-0.1.0/tests/unit/test_plan_cmd.py +116 -0
- bernstein-0.1.0/tests/unit/test_plugins.py +360 -0
- bernstein-0.1.0/tests/unit/test_policy.py +1011 -0
- bernstein-0.1.0/tests/unit/test_prometheus.py +224 -0
- bernstein-0.1.0/tests/unit/test_rag.py +330 -0
- bernstein-0.1.0/tests/unit/test_registry.py +499 -0
- bernstein-0.1.0/tests/unit/test_renderer.py +177 -0
- bernstein-0.1.0/tests/unit/test_researcher.py +172 -0
- bernstein-0.1.0/tests/unit/test_retro_cmd.py +221 -0
- bernstein-0.1.0/tests/unit/test_retrospective.py +293 -0
- bernstein-0.1.0/tests/unit/test_router.py +596 -0
- bernstein-0.1.0/tests/unit/test_sandbox.py +370 -0
- bernstein-0.1.0/tests/unit/test_seed.py +373 -0
- bernstein-0.1.0/tests/unit/test_server.py +1918 -0
- bernstein-0.1.0/tests/unit/test_signals.py +178 -0
- bernstein-0.1.0/tests/unit/test_spawner.py +655 -0
- bernstein-0.1.0/tests/unit/test_store_factory.py +362 -0
- bernstein-0.1.0/tests/unit/test_swe_bench_harness.py +458 -0
- bernstein-0.1.0/tests/unit/test_sync.py +454 -0
- bernstein-0.1.0/tests/unit/test_traces.py +370 -0
- bernstein-0.1.0/tests/unit/test_tui.py +134 -0
- bernstein-0.1.0/tests/unit/test_upgrade_executor.py +816 -0
- bernstein-0.1.0/tests/unit/test_worker.py +193 -0
- bernstein-0.1.0/tests/unit/test_workspace.py +498 -0
- 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,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
|
+
]
|