bernstein 1.2.2__tar.gz → 1.3.2__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-1.2.2 → bernstein-1.3.2}/PKG-INFO +123 -26
- {bernstein-1.2.2 → bernstein-1.3.2}/README.md +122 -25
- {bernstein-1.2.2 → bernstein-1.3.2}/pyproject.toml +6 -1
- bernstein-1.3.2/src/bernstein/adapters/cursor.py +111 -0
- bernstein-1.3.2/src/bernstein/adapters/kilo.py +111 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/registry.py +5 -1
- bernstein-1.3.2/src/bernstein/bridges/__init__.py +19 -0
- bernstein-1.3.2/src/bernstein/bridges/base.py +218 -0
- bernstein-1.3.2/src/bernstein/bridges/openclaw.py +108 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/auth_cmd.py +4 -0
- bernstein-1.3.2/src/bernstein/cli/changelog_cmd.py +437 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/dashboard.py +10 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/delegate_cmd.py +3 -0
- bernstein-1.3.2/src/bernstein/cli/diff_cmd.py +241 -0
- bernstein-1.3.2/src/bernstein/cli/explain_cmd.py +258 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/main.py +13 -0
- bernstein-1.3.2/src/bernstein/cli/splash.py +81 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/triggers_cmd.py +4 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/verify_cmd.py +122 -4
- bernstein-1.3.2/src/bernstein/cli/voice_cmd.py +505 -0
- bernstein-1.3.2/src/bernstein/cli/worker_cmd.py +414 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_discovery.py +92 -2
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bootstrap.py +14 -11
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cluster.py +70 -0
- bernstein-1.3.2/src/bernstein/core/formal_verification.py +505 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/models.py +2 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/orchestrator.py +3 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rag.py +1 -3
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/tasks.py +55 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/seed.py +58 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/server.py +21 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/server_launch.py +6 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/sync.py +4 -1
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_completion.py +41 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_lifecycle.py +65 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/widgets.py +22 -8
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/bernstein.yaml +30 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/uv.lock +1 -1
- bernstein-1.2.2/src/bernstein/cli/splash.py +0 -174
- {bernstein-1.2.2 → bernstein-1.3.2}/.bernstein/rules.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/.bernstein/workflows/ci-pipeline.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/.gitignore +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/AGENTS.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/CLAUDE.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/CODE_OF_CONDUCT.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/CONTRIBUTING.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/Dockerfile +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/LICENSE +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/SECURITY.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/action/entrypoint.sh +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/action.yml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/agent-hq-comparison.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/issues.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154744.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154744.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154810.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154810.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161111.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161111.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161842.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161842.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_163535.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_163535.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_180718.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_180718.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_202922.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_202922.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_211640.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_211640.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/issues_benchmark_20260328_211300.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/issues_benchmark_20260328_211300.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/run_benchmark.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/harness.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/metrics.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/report.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/.gitkeep +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/analysis.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-mixed.jsonl +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-mixed_summary.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-sonnet.jsonl +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-sonnet_summary.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/report.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-opus.jsonl +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-opus_summary.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-sonnet.jsonl +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-sonnet_summary.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/run.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/scenarios.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_001_rest_endpoints.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_002_refactor_clean_arch.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_003_auth_middleware.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_004_lint_fixes.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_005_error_handling.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_006_integration_tests.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_007_rate_limiting.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_008_openapi_spec.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_009_logging_monitoring.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_010_security_audit.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/bernstein.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/github-app/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/github-app/app.yml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/dashboard.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/provisioning/dashboards/bernstein.yml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/.helmignore +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/Chart.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/NOTES.txt +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/_helpers.tpl +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/configmap.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/deployment-orchestrator.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/deployment-server.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/hpa.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/ingress.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/prometheusrule.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/pvc-server.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/secret-auth.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/service.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/servicemonitor.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/statefulset-worker.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/values.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/prometheus-adapter-values.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/deploy/prometheus/prometheus.yml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/Caddyfile +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/Dockerfile +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/demo-cycle.sh +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/docker-compose.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/docker-compose.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/full.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/model_policy/bernstein.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/multi-model/bernstein.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/multi-model/run.sh +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/custom_router_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/discord_notifier.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/jira_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/linear_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/logging_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/metrics_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/quality_gate_plugin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/slack_notifier.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/app.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/bernstein.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/rag-system.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/examples/simple.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/github-action/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/hooks/smart_approve.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/integrations/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/app.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/requirements.txt +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/.gitignore +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/.vscodeignore +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/CHANGELOG.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/LICENSE +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/PUBLISH.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/esbuild.mjs +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/jest.config.js +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/bernstein-icon.png +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/bernstein-icon.svg +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/command-palette.png +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/dashboard.png +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/sidebar.png +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/package-lock.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/package.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/AgentTreeProvider.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/BernsteinClient.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/DashboardProvider.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/OutputManager.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/StatusBarManager.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/TaskTreeProvider.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__mocks__/vscode.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/AgentTreeProvider.test.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/BernsteinClient.test.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/TaskTreeProvider.test.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/commands.test.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/commands.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/extension.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/tsconfig.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/webview-ui/package.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/webview-ui/vite.config.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/pyproject.toml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/github_actions.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/jira.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/linear.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/slack.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/teams.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/client.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/models.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/state_map.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/uv.lock +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/package-lock.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/package.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/github-actions.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/jira.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/linear.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/slack.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/teams.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/client.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/index.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/models.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/state-map.ts +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/tsconfig.json +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/__main__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/aider.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/amp.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/base.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/caching_adapter.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/ci/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/ci/github_actions.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/claude.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/codex.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/env_isolation.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/gemini.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/generic.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/manager.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/mock.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/qwen.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/roo_code.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/agency_provider.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/catalog.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/discovery.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/registry.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/comparative.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/swe_bench.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/advanced_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/agents_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/audit_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/chaos_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/checkpoint_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/ci_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/cost.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/errors.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/eval_benchmark_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/evolve_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/gateway_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/helpers.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/live.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/manifest_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/quickstart_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/run.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/run_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/self_update_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/status.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/status_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/stop_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/summary_card.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/task_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/ui.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/watch_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/workflow_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/workspace_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/wrap_up_cmd.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/compliance/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/compliance/eu_ai_act.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/a2a.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/acp.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agency_loader.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_lifecycle.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_signals.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/api_usage.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/approval.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/audit.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auth.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auth_middleware.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auto_approve.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auto_distillation.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bandit_router.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/batch_router.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bulletin.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cascade.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cascade_router.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_fix.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_log_parser.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_monitor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/circuit_breaker.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/complexity_advisor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/compliance.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/compression_models.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/container.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context_compression.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context_degradation_detector.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost_history.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost_tracker.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cross_model_verifier.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/differential_privacy.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/duration_predictor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/evolution.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/evolve_mode.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/fast_path.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/file_discovery.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/file_locks.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_basic.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_context.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_hygiene.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_ops.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_pr.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/github.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/graduation.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/graph.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/guardrails.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/heartbeat.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/hijacker.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/home.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/incident.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/janitor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/knowledge_base.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/lessons.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/license_scanner.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/lifecycle.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/llm.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_models.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_parsing.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_prompts.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manifest.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_gateway.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_manager.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_registry.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/memory_integrity.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/memory_sanitizer.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/merge_queue.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/merkle.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metric_collector.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metric_export.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metrics.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/multi_cell.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/notifications.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/plan_approval.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/plan_builder.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/planner.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/policy.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/pr_size_governor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/preflight.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/prometheus.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/prompt_caching.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/quality_gates.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/quarantine.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rate_limit_tracker.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/recorder.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/repo_index.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/researcher.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/retrospective.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/reviewer.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/router.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/acp.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/agents.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/auth.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/costs.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/dashboard.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/gateway.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/graduation.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/plans.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/quality.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/slack.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/status.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/webhooks.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rule_enforcer.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/runbooks.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/semantic_cache.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/semantic_graph.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/session.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/signals.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/slo.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/spawn_prompt.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/spawner.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_factory.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_postgres.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_redis.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_store.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/tick_pipeline.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/token_monitor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/traces.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_manager.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/file_watch.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/github.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/slack.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/webhook.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/upgrade_executor.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/voting.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/wal.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/worker.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workflow.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workflow_dsl.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workspace.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/worktree.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/dashboard/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/dashboard/templates/index.html +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/baseline.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/golden.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/harness.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/judge.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/metrics.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/scenario_runner.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/taxonomy.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/telemetry.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/aggregator.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/applicator.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/benchmark.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/circuit.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/creative.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/cycle_helpers.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/cycle_runner.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/data_collector.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/detector.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/gate.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/governance.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/invariants.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/loop.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/proposal_scorer.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/proposals.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/report.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/report_generator.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/risk.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/sandbox.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/types.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/app.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/check_runs.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/ci_router.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/cost_reporter.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/mapper.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/slash_commands.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/webhooks.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/mcp/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/mcp/server.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/hookspecs.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/manager.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/templates/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/templates/renderer.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/__init__.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/app.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/styles.tcss +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/adapters/TEMPLATE.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/add-docstrings.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/add-unit-tests.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/extract-function.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/fix-import-error.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/fix-off-by-one.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/ci-parsers/TEMPLATE.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/Makefile +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/README.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/app.py +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/bernstein.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/requirements.txt +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/judge.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/plan.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/progress-report.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/review.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/signal-check.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/team-awareness.md +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/pvc.yaml +0 -0
- {bernstein-1.2.2 → bernstein-1.3.2}/templates/service.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bernstein
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: Declarative agent orchestration for engineering teams
|
|
5
5
|
Author-email: Alex Chernysh <alex@alexchernysh.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -48,11 +48,14 @@ Description-Content-Type: text/markdown
|
|
|
48
48
|
### One YAML. Multiple coding agents. Ship while you sleep.
|
|
49
49
|
|
|
50
50
|
<picture>
|
|
51
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/
|
|
52
|
-
<source media="(prefers-color-scheme: light)" srcset="docs/assets/
|
|
53
|
-
<img alt="Bernstein
|
|
51
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/tui.svg">
|
|
52
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/assets/tui.svg">
|
|
53
|
+
<img alt="Bernstein TUI — live task dashboard" src="docs/assets/tui.svg" width="700">
|
|
54
54
|
</picture>
|
|
55
55
|
|
|
56
|
+
<p align="center"><strong>Web dashboard</strong> — real-time task monitoring, cost tracking, agent status</p>
|
|
57
|
+
<p align="center"><img alt="Bernstein Web Dashboard" src="docs/assets/web-dashboard.png" width="700" style="border-radius:8px"></p>
|
|
58
|
+
|
|
56
59
|
[](https://python.org)
|
|
57
60
|
[]()
|
|
58
61
|
[](LICENSE)
|
|
@@ -77,7 +80,7 @@ bernstein -g "Add JWT auth with refresh tokens, tests, and API docs"
|
|
|
77
80
|
|
|
78
81
|
Bernstein takes a goal, breaks it into tasks, assigns them to AI coding agents running in parallel, verifies the output, and commits the results. You come back to working code, passing tests, and a clean git history.
|
|
79
82
|
|
|
80
|
-
**No framework to learn. No vendor lock-in.** If you have [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Qwen](https://github.com/QwenLM/Qwen-Agent) installed, Bernstein uses them. Mix models in the same run — cheap free-tier agents for boilerplate, heavy models for architecture. Switch providers without rewriting anything. Agents spawn, work, exit. No context drift. No babysitting.
|
|
83
|
+
**No framework to learn. No vendor lock-in.** If you have [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex), [Cursor](https://www.cursor.com), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Qwen](https://github.com/QwenLM/Qwen-Agent) installed, Bernstein uses them. Mix models in the same run — cheap free-tier agents for boilerplate, heavy models for architecture. Switch providers without rewriting anything. Agents spawn, work, exit. No context drift. No babysitting.
|
|
81
84
|
|
|
82
85
|
<picture>
|
|
83
86
|
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/architecture.svg">
|
|
@@ -131,50 +134,122 @@ See [`examples/quickstart/`](examples/quickstart/) for a ready-to-run example wi
|
|
|
131
134
|
<summary><strong>All CLI commands</strong></summary>
|
|
132
135
|
|
|
133
136
|
```bash
|
|
134
|
-
|
|
137
|
+
# Core
|
|
138
|
+
bernstein -g "goal" # start orchestration with inline goal
|
|
139
|
+
bernstein # start from bernstein.yaml
|
|
140
|
+
bernstein init # initialize .sdd/ workspace
|
|
141
|
+
bernstein stop [--timeout N] # graceful shutdown (--force for hard kill)
|
|
135
142
|
bernstein ps # show running agent processes
|
|
136
|
-
bernstein
|
|
137
|
-
bernstein cost
|
|
138
|
-
bernstein
|
|
143
|
+
bernstein status # task summary, active agents, cost estimate
|
|
144
|
+
bernstein cost [--json] [--share] # show cost, tokens, duration per model
|
|
145
|
+
bernstein demo [--real] # zero-config demo (--real uses live agents)
|
|
146
|
+
bernstein quickstart # zero-config demo: 3 tasks on Flask TODO API
|
|
147
|
+
|
|
148
|
+
# Monitoring
|
|
149
|
+
bernstein live [--classic] # live TUI dashboard
|
|
139
150
|
bernstein dashboard # open web dashboard in browser
|
|
140
|
-
bernstein doctor
|
|
141
|
-
bernstein
|
|
151
|
+
bernstein doctor [--fix] # health check: deps, keys, ports (--fix auto-repairs)
|
|
152
|
+
bernstein logs [-f] [-a AGENT] # tail agent log output
|
|
142
153
|
bernstein trace <task_id> # step-by-step agent decision trace
|
|
143
|
-
bernstein replay <
|
|
144
|
-
bernstein
|
|
145
|
-
bernstein
|
|
154
|
+
bernstein replay <run_id> # re-run from a recorded trace
|
|
155
|
+
bernstein recap [--as-json] # post-run summary: tasks, pass/fail, cost
|
|
156
|
+
bernstein diff <task_id> # git diff for what an agent changed
|
|
157
|
+
|
|
158
|
+
# Task management
|
|
159
|
+
bernstein plan [--export] # show task backlog (--export to JSON)
|
|
160
|
+
bernstein add-task TITLE # inject a task into the running server
|
|
161
|
+
bernstein cancel <task_id> # cancel a running or queued task
|
|
162
|
+
bernstein list-tasks [--status-filter] # list tasks with optional filters
|
|
163
|
+
bernstein sync # sync .sdd/backlog/open/ with task server
|
|
164
|
+
bernstein review # trigger immediate manager queue review
|
|
165
|
+
bernstein approve <task_id> # approve a pending task review
|
|
166
|
+
bernstein reject <task_id> # reject a pending task review
|
|
167
|
+
bernstein pending # list tasks waiting for approval
|
|
168
|
+
|
|
169
|
+
# Agent management
|
|
170
|
+
bernstein agents sync # pull latest agent catalog
|
|
171
|
+
bernstein agents list # list available agents
|
|
172
|
+
bernstein agents validate # check catalog health
|
|
173
|
+
bernstein agents showcase # show agent capabilities showcase
|
|
174
|
+
bernstein agents match QUERY # find best agent for a task description
|
|
175
|
+
bernstein agents discover # discover installed CLI agents
|
|
146
176
|
|
|
147
177
|
# CI autofix
|
|
148
178
|
bernstein ci fix <run-url> # parse failing CI run, create fix task
|
|
149
179
|
bernstein ci watch <repo> # continuous monitoring, auto-fix on failure
|
|
150
180
|
|
|
151
181
|
# Governance & audit
|
|
182
|
+
bernstein audit show # recent audit log events
|
|
183
|
+
bernstein audit seal # create Merkle seal of audit log
|
|
184
|
+
bernstein audit verify # verify Merkle proof integrity
|
|
152
185
|
bernstein audit verify-hmac # validate HMAC chain integrity
|
|
153
186
|
bernstein audit query # search audit log (--event-type, --actor, --since)
|
|
154
187
|
bernstein verify --wal-integrity # verify WAL hash chain
|
|
155
188
|
bernstein verify --determinism # check execution fingerprint reproducibility
|
|
189
|
+
bernstein verify --memory-audit # detect memory leaks in agent processes
|
|
190
|
+
bernstein verify --formal # formal verification mode
|
|
191
|
+
bernstein manifest list # list all run manifests
|
|
156
192
|
bernstein manifest show <run-id> # display run manifest
|
|
157
|
-
bernstein manifest diff <a> <b>
|
|
193
|
+
bernstein manifest diff <a> <b> # compare two run configurations
|
|
158
194
|
|
|
159
195
|
# Benchmarks & eval
|
|
160
196
|
bernstein benchmark run # run golden benchmark suite
|
|
161
197
|
bernstein benchmark compare # orchestrated vs. single-agent comparison
|
|
198
|
+
bernstein benchmark swe-bench # run SWE-bench harness
|
|
199
|
+
bernstein eval run # run evaluation suite with scoring
|
|
200
|
+
bernstein eval report # generate evaluation report
|
|
201
|
+
bernstein eval failures # show evaluation failures
|
|
162
202
|
|
|
163
203
|
# Evolution
|
|
204
|
+
bernstein evolve run # run autoresearch evolution loop
|
|
164
205
|
bernstein evolve review # list evolution proposals
|
|
165
206
|
bernstein evolve approve <id> # approve a proposal
|
|
166
|
-
bernstein
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
bernstein
|
|
172
|
-
|
|
173
|
-
#
|
|
207
|
+
bernstein evolve status # show evolution pipeline status
|
|
208
|
+
bernstein evolve export # export evolution proposals
|
|
209
|
+
bernstein ideate # creative evolution pipeline
|
|
210
|
+
|
|
211
|
+
# Advanced
|
|
212
|
+
bernstein chaos agent-kill # kill a random agent (fault injection)
|
|
213
|
+
bernstein chaos rate-limit # simulate API rate limiting
|
|
214
|
+
bernstein chaos file-remove # remove files an agent depends on
|
|
215
|
+
bernstein chaos status # show chaos experiment status
|
|
216
|
+
bernstein chaos slo # check SLO compliance under chaos
|
|
217
|
+
bernstein gateway start # start MCP gateway proxy
|
|
218
|
+
bernstein gateway replay <run-id> # replay recorded MCP tool calls
|
|
219
|
+
bernstein workflow validate FILE # validate a workflow YAML
|
|
220
|
+
bernstein workflow list # list workflow DSL files
|
|
221
|
+
bernstein workflow show NAME # show workflow details
|
|
222
|
+
bernstein mcp # run Bernstein as an MCP server
|
|
223
|
+
bernstein watch [DIR] # monitor directory, re-run on changes
|
|
224
|
+
bernstein listen # voice command session (offline STT)
|
|
225
|
+
bernstein checkpoint [--goal] # snapshot session progress
|
|
226
|
+
bernstein wrap-up [--stop] # end session with structured brief
|
|
227
|
+
|
|
228
|
+
# Configuration & workspace
|
|
174
229
|
bernstein workspace # show multi-repo workspace status
|
|
175
|
-
bernstein
|
|
176
|
-
bernstein
|
|
177
|
-
bernstein
|
|
230
|
+
bernstein workspace clone # clone missing repos
|
|
231
|
+
bernstein workspace validate # check workspace health
|
|
232
|
+
bernstein config set KEY VALUE # set a global config value
|
|
233
|
+
bernstein config get KEY # show effective config value
|
|
234
|
+
bernstein config list # list all config keys
|
|
235
|
+
bernstein config validate # validate project configuration
|
|
236
|
+
|
|
237
|
+
# Utilities
|
|
238
|
+
bernstein retro [--since H] # generate retrospective report
|
|
239
|
+
bernstein plugins # list active plugins
|
|
240
|
+
bernstein install-hooks # install git hooks
|
|
241
|
+
bernstein completions # generate shell completion scripts
|
|
242
|
+
bernstein self-update [--check] # upgrade from PyPI (--rollback to revert)
|
|
243
|
+
bernstein worker --server URL # join a cluster as a worker node
|
|
244
|
+
bernstein help-all # comprehensive help for all commands
|
|
245
|
+
|
|
246
|
+
# GitHub integration
|
|
247
|
+
bernstein github setup # configure GitHub App integration
|
|
248
|
+
bernstein github test-webhook # verify webhook configuration
|
|
249
|
+
|
|
250
|
+
# Quarantine
|
|
251
|
+
bernstein quarantine list # list quarantined tasks
|
|
252
|
+
bernstein quarantine clear # clear quarantine
|
|
178
253
|
```
|
|
179
254
|
|
|
180
255
|
</details>
|
|
@@ -214,6 +289,7 @@ Analyzes metrics, proposes changes to prompts and routing rules, sandboxes them,
|
|
|
214
289
|
| [Amp](https://ampcode.com) | Sourcegraph | opus 4.6, gpt-5.4 | `--cli amp` | `brew install amp` |
|
|
215
290
|
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Anthropic | opus 4.6, sonnet 4.6, haiku 4.5 | `--cli claude` | `npm install -g @anthropic-ai/claude-code` |
|
|
216
291
|
| [Codex CLI](https://github.com/openai/codex) | OpenAI | gpt-5.4, o3, o4-mini | `--cli codex` | `npm install -g @openai/codex` |
|
|
292
|
+
| [Cursor](https://www.cursor.com) | Cursor AI | sonnet 4.6, opus 4.6, gpt-5.4 | `--cli cursor` | Cursor app (sign in via app) |
|
|
217
293
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Google | gemini-3-pro, 3-flash | `--cli gemini` | `npm install -g @google/gemini-cli` |
|
|
218
294
|
| [Qwen](https://github.com/QwenLM/Qwen-Agent) | Alibaba / OpenRouter | qwen3-coder, qwen-max | `--cli qwen` | `npm install -g qwen-code` |
|
|
219
295
|
| [Roo Code](https://github.com/RooVetGit/Roo-Code) | Anthropic / OpenAI / any | opus 4.6, sonnet 4.6, gpt-4o | `--cli roo-code` | VS Code extension (headless CLI) |
|
|
@@ -281,6 +357,27 @@ CrewAI, AutoGen, and LangGraph work with any model via API wrappers — but they
|
|
|
281
357
|
|
|
282
358
|
</details>
|
|
283
359
|
|
|
360
|
+
## Noteworthy capabilities
|
|
361
|
+
|
|
362
|
+
Beyond core orchestration, Bernstein ships several features that are useful but easy to miss in `--help` output:
|
|
363
|
+
|
|
364
|
+
| Capability | Command | What it does |
|
|
365
|
+
|------------|---------|--------------|
|
|
366
|
+
| **Chaos engineering** | `bernstein chaos` | Fault injection (kill agents, rate-limit APIs, remove files) to test resilience. SLO compliance checks. |
|
|
367
|
+
| **Cryptographic audit** | `bernstein audit seal/verify` | Tamper-evident execution logs with Merkle proofs. HMAC chain integrity verification. |
|
|
368
|
+
| **Gateway proxy** | `bernstein gateway start` | Transparent MCP gateway that records and replays tool calls between agents and providers. |
|
|
369
|
+
| **Workflow DSL** | `bernstein workflow` | Declarative YAML-based task pipelines with validation, listing, and inspection. |
|
|
370
|
+
| **MCP server mode** | `bernstein mcp` | Runs Bernstein itself as an MCP tool server, exposable to other agents or editors. |
|
|
371
|
+
| **Trace & replay** | `bernstein trace/replay` | Record agent decisions step-by-step, then deterministically replay any run. |
|
|
372
|
+
| **Formal verification** | `bernstein verify --formal` | Experimental formal verification of execution invariants. |
|
|
373
|
+
| **File watching** | `bernstein watch` | Monitors directories and re-triggers task execution on file changes. |
|
|
374
|
+
| **Voice commands** | `bernstein listen` | Offline speech-to-text mapped to CLI commands. Experimental. |
|
|
375
|
+
| **Cluster worker** | `bernstein worker` | Join a remote Bernstein cluster as a worker node for distributed orchestration. |
|
|
376
|
+
| **Task delegation** | (not yet wired) | Agents and scripts can submit tasks programmatically via `delegate` command. |
|
|
377
|
+
| **Event triggers** | (not yet wired) | Define event-driven triggers (file changes, webhooks, schedules) that create tasks automatically. |
|
|
378
|
+
|
|
379
|
+
These features vary in maturity. Chaos engineering, audit, and trace/replay are production-tested. Voice commands and formal verification are experimental. See `docs/FEATURE_MATRIX.md` for full documentation coverage status.
|
|
380
|
+
|
|
284
381
|
## Observability
|
|
285
382
|
|
|
286
383
|
```bash
|
|
@@ -12,11 +12,14 @@
|
|
|
12
12
|
### One YAML. Multiple coding agents. Ship while you sleep.
|
|
13
13
|
|
|
14
14
|
<picture>
|
|
15
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/
|
|
16
|
-
<source media="(prefers-color-scheme: light)" srcset="docs/assets/
|
|
17
|
-
<img alt="Bernstein
|
|
15
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/tui.svg">
|
|
16
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/assets/tui.svg">
|
|
17
|
+
<img alt="Bernstein TUI — live task dashboard" src="docs/assets/tui.svg" width="700">
|
|
18
18
|
</picture>
|
|
19
19
|
|
|
20
|
+
<p align="center"><strong>Web dashboard</strong> — real-time task monitoring, cost tracking, agent status</p>
|
|
21
|
+
<p align="center"><img alt="Bernstein Web Dashboard" src="docs/assets/web-dashboard.png" width="700" style="border-radius:8px"></p>
|
|
22
|
+
|
|
20
23
|
[](https://python.org)
|
|
21
24
|
[]()
|
|
22
25
|
[](LICENSE)
|
|
@@ -41,7 +44,7 @@ bernstein -g "Add JWT auth with refresh tokens, tests, and API docs"
|
|
|
41
44
|
|
|
42
45
|
Bernstein takes a goal, breaks it into tasks, assigns them to AI coding agents running in parallel, verifies the output, and commits the results. You come back to working code, passing tests, and a clean git history.
|
|
43
46
|
|
|
44
|
-
**No framework to learn. No vendor lock-in.** If you have [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Qwen](https://github.com/QwenLM/Qwen-Agent) installed, Bernstein uses them. Mix models in the same run — cheap free-tier agents for boilerplate, heavy models for architecture. Switch providers without rewriting anything. Agents spawn, work, exit. No context drift. No babysitting.
|
|
47
|
+
**No framework to learn. No vendor lock-in.** If you have [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex), [Cursor](https://www.cursor.com), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Qwen](https://github.com/QwenLM/Qwen-Agent) installed, Bernstein uses them. Mix models in the same run — cheap free-tier agents for boilerplate, heavy models for architecture. Switch providers without rewriting anything. Agents spawn, work, exit. No context drift. No babysitting.
|
|
45
48
|
|
|
46
49
|
<picture>
|
|
47
50
|
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/architecture.svg">
|
|
@@ -95,50 +98,122 @@ See [`examples/quickstart/`](examples/quickstart/) for a ready-to-run example wi
|
|
|
95
98
|
<summary><strong>All CLI commands</strong></summary>
|
|
96
99
|
|
|
97
100
|
```bash
|
|
98
|
-
|
|
101
|
+
# Core
|
|
102
|
+
bernstein -g "goal" # start orchestration with inline goal
|
|
103
|
+
bernstein # start from bernstein.yaml
|
|
104
|
+
bernstein init # initialize .sdd/ workspace
|
|
105
|
+
bernstein stop [--timeout N] # graceful shutdown (--force for hard kill)
|
|
99
106
|
bernstein ps # show running agent processes
|
|
100
|
-
bernstein
|
|
101
|
-
bernstein cost
|
|
102
|
-
bernstein
|
|
107
|
+
bernstein status # task summary, active agents, cost estimate
|
|
108
|
+
bernstein cost [--json] [--share] # show cost, tokens, duration per model
|
|
109
|
+
bernstein demo [--real] # zero-config demo (--real uses live agents)
|
|
110
|
+
bernstein quickstart # zero-config demo: 3 tasks on Flask TODO API
|
|
111
|
+
|
|
112
|
+
# Monitoring
|
|
113
|
+
bernstein live [--classic] # live TUI dashboard
|
|
103
114
|
bernstein dashboard # open web dashboard in browser
|
|
104
|
-
bernstein doctor
|
|
105
|
-
bernstein
|
|
115
|
+
bernstein doctor [--fix] # health check: deps, keys, ports (--fix auto-repairs)
|
|
116
|
+
bernstein logs [-f] [-a AGENT] # tail agent log output
|
|
106
117
|
bernstein trace <task_id> # step-by-step agent decision trace
|
|
107
|
-
bernstein replay <
|
|
108
|
-
bernstein
|
|
109
|
-
bernstein
|
|
118
|
+
bernstein replay <run_id> # re-run from a recorded trace
|
|
119
|
+
bernstein recap [--as-json] # post-run summary: tasks, pass/fail, cost
|
|
120
|
+
bernstein diff <task_id> # git diff for what an agent changed
|
|
121
|
+
|
|
122
|
+
# Task management
|
|
123
|
+
bernstein plan [--export] # show task backlog (--export to JSON)
|
|
124
|
+
bernstein add-task TITLE # inject a task into the running server
|
|
125
|
+
bernstein cancel <task_id> # cancel a running or queued task
|
|
126
|
+
bernstein list-tasks [--status-filter] # list tasks with optional filters
|
|
127
|
+
bernstein sync # sync .sdd/backlog/open/ with task server
|
|
128
|
+
bernstein review # trigger immediate manager queue review
|
|
129
|
+
bernstein approve <task_id> # approve a pending task review
|
|
130
|
+
bernstein reject <task_id> # reject a pending task review
|
|
131
|
+
bernstein pending # list tasks waiting for approval
|
|
132
|
+
|
|
133
|
+
# Agent management
|
|
134
|
+
bernstein agents sync # pull latest agent catalog
|
|
135
|
+
bernstein agents list # list available agents
|
|
136
|
+
bernstein agents validate # check catalog health
|
|
137
|
+
bernstein agents showcase # show agent capabilities showcase
|
|
138
|
+
bernstein agents match QUERY # find best agent for a task description
|
|
139
|
+
bernstein agents discover # discover installed CLI agents
|
|
110
140
|
|
|
111
141
|
# CI autofix
|
|
112
142
|
bernstein ci fix <run-url> # parse failing CI run, create fix task
|
|
113
143
|
bernstein ci watch <repo> # continuous monitoring, auto-fix on failure
|
|
114
144
|
|
|
115
145
|
# Governance & audit
|
|
146
|
+
bernstein audit show # recent audit log events
|
|
147
|
+
bernstein audit seal # create Merkle seal of audit log
|
|
148
|
+
bernstein audit verify # verify Merkle proof integrity
|
|
116
149
|
bernstein audit verify-hmac # validate HMAC chain integrity
|
|
117
150
|
bernstein audit query # search audit log (--event-type, --actor, --since)
|
|
118
151
|
bernstein verify --wal-integrity # verify WAL hash chain
|
|
119
152
|
bernstein verify --determinism # check execution fingerprint reproducibility
|
|
153
|
+
bernstein verify --memory-audit # detect memory leaks in agent processes
|
|
154
|
+
bernstein verify --formal # formal verification mode
|
|
155
|
+
bernstein manifest list # list all run manifests
|
|
120
156
|
bernstein manifest show <run-id> # display run manifest
|
|
121
|
-
bernstein manifest diff <a> <b>
|
|
157
|
+
bernstein manifest diff <a> <b> # compare two run configurations
|
|
122
158
|
|
|
123
159
|
# Benchmarks & eval
|
|
124
160
|
bernstein benchmark run # run golden benchmark suite
|
|
125
161
|
bernstein benchmark compare # orchestrated vs. single-agent comparison
|
|
162
|
+
bernstein benchmark swe-bench # run SWE-bench harness
|
|
163
|
+
bernstein eval run # run evaluation suite with scoring
|
|
164
|
+
bernstein eval report # generate evaluation report
|
|
165
|
+
bernstein eval failures # show evaluation failures
|
|
126
166
|
|
|
127
167
|
# Evolution
|
|
168
|
+
bernstein evolve run # run autoresearch evolution loop
|
|
128
169
|
bernstein evolve review # list evolution proposals
|
|
129
170
|
bernstein evolve approve <id> # approve a proposal
|
|
130
|
-
bernstein
|
|
131
|
-
|
|
132
|
-
#
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
bernstein
|
|
136
|
-
|
|
137
|
-
#
|
|
171
|
+
bernstein evolve status # show evolution pipeline status
|
|
172
|
+
bernstein evolve export # export evolution proposals
|
|
173
|
+
bernstein ideate # creative evolution pipeline
|
|
174
|
+
|
|
175
|
+
# Advanced
|
|
176
|
+
bernstein chaos agent-kill # kill a random agent (fault injection)
|
|
177
|
+
bernstein chaos rate-limit # simulate API rate limiting
|
|
178
|
+
bernstein chaos file-remove # remove files an agent depends on
|
|
179
|
+
bernstein chaos status # show chaos experiment status
|
|
180
|
+
bernstein chaos slo # check SLO compliance under chaos
|
|
181
|
+
bernstein gateway start # start MCP gateway proxy
|
|
182
|
+
bernstein gateway replay <run-id> # replay recorded MCP tool calls
|
|
183
|
+
bernstein workflow validate FILE # validate a workflow YAML
|
|
184
|
+
bernstein workflow list # list workflow DSL files
|
|
185
|
+
bernstein workflow show NAME # show workflow details
|
|
186
|
+
bernstein mcp # run Bernstein as an MCP server
|
|
187
|
+
bernstein watch [DIR] # monitor directory, re-run on changes
|
|
188
|
+
bernstein listen # voice command session (offline STT)
|
|
189
|
+
bernstein checkpoint [--goal] # snapshot session progress
|
|
190
|
+
bernstein wrap-up [--stop] # end session with structured brief
|
|
191
|
+
|
|
192
|
+
# Configuration & workspace
|
|
138
193
|
bernstein workspace # show multi-repo workspace status
|
|
139
|
-
bernstein
|
|
140
|
-
bernstein
|
|
141
|
-
bernstein
|
|
194
|
+
bernstein workspace clone # clone missing repos
|
|
195
|
+
bernstein workspace validate # check workspace health
|
|
196
|
+
bernstein config set KEY VALUE # set a global config value
|
|
197
|
+
bernstein config get KEY # show effective config value
|
|
198
|
+
bernstein config list # list all config keys
|
|
199
|
+
bernstein config validate # validate project configuration
|
|
200
|
+
|
|
201
|
+
# Utilities
|
|
202
|
+
bernstein retro [--since H] # generate retrospective report
|
|
203
|
+
bernstein plugins # list active plugins
|
|
204
|
+
bernstein install-hooks # install git hooks
|
|
205
|
+
bernstein completions # generate shell completion scripts
|
|
206
|
+
bernstein self-update [--check] # upgrade from PyPI (--rollback to revert)
|
|
207
|
+
bernstein worker --server URL # join a cluster as a worker node
|
|
208
|
+
bernstein help-all # comprehensive help for all commands
|
|
209
|
+
|
|
210
|
+
# GitHub integration
|
|
211
|
+
bernstein github setup # configure GitHub App integration
|
|
212
|
+
bernstein github test-webhook # verify webhook configuration
|
|
213
|
+
|
|
214
|
+
# Quarantine
|
|
215
|
+
bernstein quarantine list # list quarantined tasks
|
|
216
|
+
bernstein quarantine clear # clear quarantine
|
|
142
217
|
```
|
|
143
218
|
|
|
144
219
|
</details>
|
|
@@ -178,6 +253,7 @@ Analyzes metrics, proposes changes to prompts and routing rules, sandboxes them,
|
|
|
178
253
|
| [Amp](https://ampcode.com) | Sourcegraph | opus 4.6, gpt-5.4 | `--cli amp` | `brew install amp` |
|
|
179
254
|
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Anthropic | opus 4.6, sonnet 4.6, haiku 4.5 | `--cli claude` | `npm install -g @anthropic-ai/claude-code` |
|
|
180
255
|
| [Codex CLI](https://github.com/openai/codex) | OpenAI | gpt-5.4, o3, o4-mini | `--cli codex` | `npm install -g @openai/codex` |
|
|
256
|
+
| [Cursor](https://www.cursor.com) | Cursor AI | sonnet 4.6, opus 4.6, gpt-5.4 | `--cli cursor` | Cursor app (sign in via app) |
|
|
181
257
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | Google | gemini-3-pro, 3-flash | `--cli gemini` | `npm install -g @google/gemini-cli` |
|
|
182
258
|
| [Qwen](https://github.com/QwenLM/Qwen-Agent) | Alibaba / OpenRouter | qwen3-coder, qwen-max | `--cli qwen` | `npm install -g qwen-code` |
|
|
183
259
|
| [Roo Code](https://github.com/RooVetGit/Roo-Code) | Anthropic / OpenAI / any | opus 4.6, sonnet 4.6, gpt-4o | `--cli roo-code` | VS Code extension (headless CLI) |
|
|
@@ -245,6 +321,27 @@ CrewAI, AutoGen, and LangGraph work with any model via API wrappers — but they
|
|
|
245
321
|
|
|
246
322
|
</details>
|
|
247
323
|
|
|
324
|
+
## Noteworthy capabilities
|
|
325
|
+
|
|
326
|
+
Beyond core orchestration, Bernstein ships several features that are useful but easy to miss in `--help` output:
|
|
327
|
+
|
|
328
|
+
| Capability | Command | What it does |
|
|
329
|
+
|------------|---------|--------------|
|
|
330
|
+
| **Chaos engineering** | `bernstein chaos` | Fault injection (kill agents, rate-limit APIs, remove files) to test resilience. SLO compliance checks. |
|
|
331
|
+
| **Cryptographic audit** | `bernstein audit seal/verify` | Tamper-evident execution logs with Merkle proofs. HMAC chain integrity verification. |
|
|
332
|
+
| **Gateway proxy** | `bernstein gateway start` | Transparent MCP gateway that records and replays tool calls between agents and providers. |
|
|
333
|
+
| **Workflow DSL** | `bernstein workflow` | Declarative YAML-based task pipelines with validation, listing, and inspection. |
|
|
334
|
+
| **MCP server mode** | `bernstein mcp` | Runs Bernstein itself as an MCP tool server, exposable to other agents or editors. |
|
|
335
|
+
| **Trace & replay** | `bernstein trace/replay` | Record agent decisions step-by-step, then deterministically replay any run. |
|
|
336
|
+
| **Formal verification** | `bernstein verify --formal` | Experimental formal verification of execution invariants. |
|
|
337
|
+
| **File watching** | `bernstein watch` | Monitors directories and re-triggers task execution on file changes. |
|
|
338
|
+
| **Voice commands** | `bernstein listen` | Offline speech-to-text mapped to CLI commands. Experimental. |
|
|
339
|
+
| **Cluster worker** | `bernstein worker` | Join a remote Bernstein cluster as a worker node for distributed orchestration. |
|
|
340
|
+
| **Task delegation** | (not yet wired) | Agents and scripts can submit tasks programmatically via `delegate` command. |
|
|
341
|
+
| **Event triggers** | (not yet wired) | Define event-driven triggers (file changes, webhooks, schedules) that create tasks automatically. |
|
|
342
|
+
|
|
343
|
+
These features vary in maturity. Chaos engineering, audit, and trace/replay are production-tested. Voice commands and formal verification are experimental. See `docs/FEATURE_MATRIX.md` for full documentation coverage status.
|
|
344
|
+
|
|
248
345
|
## Observability
|
|
249
346
|
|
|
250
347
|
```bash
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bernstein"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.3.2"
|
|
8
8
|
description = "Declarative agent orchestration for engineering teams"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -145,6 +145,11 @@ exclude = [
|
|
|
145
145
|
"src/bernstein/core/workflow_dsl.py",
|
|
146
146
|
"src/bernstein/cli/self_update_cmd.py",
|
|
147
147
|
"src/bernstein/tui/widgets.py",
|
|
148
|
+
"src/bernstein/cli/diff_cmd.py",
|
|
149
|
+
"src/bernstein/cli/voice_cmd.py",
|
|
150
|
+
"src/bernstein/cli/worker_cmd.py",
|
|
151
|
+
"src/bernstein/core/formal_verification.py",
|
|
152
|
+
"src/bernstein/core/seed.py",
|
|
148
153
|
]
|
|
149
154
|
|
|
150
155
|
[tool.pytest.ini_options]
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""Cursor Agent CLI adapter."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import subprocess
|
|
7
|
+
from typing import TYPE_CHECKING, Any
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from bernstein.adapters.base import CLIAdapter, SpawnResult, build_worker_cmd
|
|
13
|
+
from bernstein.adapters.env_isolation import build_filtered_env
|
|
14
|
+
from bernstein.core.models import ApiTier, ApiTierInfo, ModelConfig, ProviderType, RateLimit
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CursorAdapter(CLIAdapter):
|
|
18
|
+
"""Spawn and monitor Cursor Agent CLI sessions."""
|
|
19
|
+
|
|
20
|
+
def spawn(
|
|
21
|
+
self,
|
|
22
|
+
*,
|
|
23
|
+
prompt: str,
|
|
24
|
+
workdir: Path,
|
|
25
|
+
model_config: ModelConfig,
|
|
26
|
+
session_id: str,
|
|
27
|
+
mcp_config: dict[str, Any] | None = None,
|
|
28
|
+
) -> SpawnResult:
|
|
29
|
+
log_path = workdir / ".sdd" / "runtime" / f"{session_id}.log"
|
|
30
|
+
log_path.parent.mkdir(parents=True, exist_ok=True)
|
|
31
|
+
|
|
32
|
+
cmd = ["cursor", "agent"]
|
|
33
|
+
|
|
34
|
+
# Session isolation via separate user data directory
|
|
35
|
+
data_dir = workdir / ".sdd" / "runtime" / "cursor" / session_id
|
|
36
|
+
data_dir.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
cmd += ["--user-data-dir", str(data_dir)]
|
|
38
|
+
|
|
39
|
+
# MCP config injection
|
|
40
|
+
if mcp_config:
|
|
41
|
+
cmd += ["--add-mcp", json.dumps(mcp_config)]
|
|
42
|
+
|
|
43
|
+
# Prompt via positional argument (cursor agent reads it directly)
|
|
44
|
+
cmd.append(prompt)
|
|
45
|
+
|
|
46
|
+
# Wrap with bernstein-worker for process visibility
|
|
47
|
+
pid_dir = workdir / ".sdd" / "runtime" / "pids"
|
|
48
|
+
wrapped_cmd = build_worker_cmd(
|
|
49
|
+
cmd,
|
|
50
|
+
role=session_id.rsplit("-", 1)[0],
|
|
51
|
+
session_id=session_id,
|
|
52
|
+
pid_dir=pid_dir,
|
|
53
|
+
model=model_config.model,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
# Cursor inherits OAuth session from ~/.cursor/ — no extra env keys needed
|
|
57
|
+
env = build_filtered_env([])
|
|
58
|
+
with log_path.open("w") as log_file:
|
|
59
|
+
try:
|
|
60
|
+
proc = subprocess.Popen(
|
|
61
|
+
wrapped_cmd,
|
|
62
|
+
cwd=workdir,
|
|
63
|
+
env=env,
|
|
64
|
+
stdout=log_file,
|
|
65
|
+
stderr=subprocess.STDOUT,
|
|
66
|
+
start_new_session=True,
|
|
67
|
+
)
|
|
68
|
+
except FileNotFoundError as exc:
|
|
69
|
+
raise RuntimeError("cursor not found in PATH. Install from https://cursor.com") from exc
|
|
70
|
+
except PermissionError as exc:
|
|
71
|
+
raise RuntimeError(f"Permission denied executing cursor: {exc}") from exc
|
|
72
|
+
|
|
73
|
+
return SpawnResult(pid=proc.pid, log_path=log_path)
|
|
74
|
+
|
|
75
|
+
def name(self) -> str:
|
|
76
|
+
return "Cursor"
|
|
77
|
+
|
|
78
|
+
def detect_tier(self) -> ApiTierInfo | None:
|
|
79
|
+
"""Detect Cursor subscription tier from ~/.cursor/ config.
|
|
80
|
+
|
|
81
|
+
Cursor subscription tiers:
|
|
82
|
+
- Free: 50 slow requests/month
|
|
83
|
+
- Pro: $20/mo, 500 fast requests + unlimited slow
|
|
84
|
+
- Business: $40/mo, unlimited fast requests
|
|
85
|
+
|
|
86
|
+
Since Cursor does not expose subscription tier via CLI, we check
|
|
87
|
+
for the presence of the auth directory as a proxy for being logged in.
|
|
88
|
+
The tier is reported as PRO when logged in (most common paid tier).
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
ApiTierInfo with detected tier and rate limits, or None if not logged in.
|
|
92
|
+
"""
|
|
93
|
+
from pathlib import Path
|
|
94
|
+
|
|
95
|
+
cursor_dir = Path.home() / ".cursor"
|
|
96
|
+
if not cursor_dir.exists():
|
|
97
|
+
return None
|
|
98
|
+
|
|
99
|
+
# Cursor Pro is the most common paid tier — conservative estimate
|
|
100
|
+
tier = ApiTier.PRO
|
|
101
|
+
rate_limit = RateLimit(
|
|
102
|
+
requests_per_minute=50, # 500 fast req/month ≈ ~50/min burst
|
|
103
|
+
tokens_per_minute=20_000,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
return ApiTierInfo(
|
|
107
|
+
provider=ProviderType.CURSOR,
|
|
108
|
+
tier=tier,
|
|
109
|
+
rate_limit=rate_limit,
|
|
110
|
+
is_active=True,
|
|
111
|
+
)
|