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.
Files changed (475) hide show
  1. {bernstein-1.2.2 → bernstein-1.3.2}/PKG-INFO +123 -26
  2. {bernstein-1.2.2 → bernstein-1.3.2}/README.md +122 -25
  3. {bernstein-1.2.2 → bernstein-1.3.2}/pyproject.toml +6 -1
  4. bernstein-1.3.2/src/bernstein/adapters/cursor.py +111 -0
  5. bernstein-1.3.2/src/bernstein/adapters/kilo.py +111 -0
  6. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/registry.py +5 -1
  7. bernstein-1.3.2/src/bernstein/bridges/__init__.py +19 -0
  8. bernstein-1.3.2/src/bernstein/bridges/base.py +218 -0
  9. bernstein-1.3.2/src/bernstein/bridges/openclaw.py +108 -0
  10. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/auth_cmd.py +4 -0
  11. bernstein-1.3.2/src/bernstein/cli/changelog_cmd.py +437 -0
  12. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/dashboard.py +10 -0
  13. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/delegate_cmd.py +3 -0
  14. bernstein-1.3.2/src/bernstein/cli/diff_cmd.py +241 -0
  15. bernstein-1.3.2/src/bernstein/cli/explain_cmd.py +258 -0
  16. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/main.py +13 -0
  17. bernstein-1.3.2/src/bernstein/cli/splash.py +81 -0
  18. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/triggers_cmd.py +4 -0
  19. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/verify_cmd.py +122 -4
  20. bernstein-1.3.2/src/bernstein/cli/voice_cmd.py +505 -0
  21. bernstein-1.3.2/src/bernstein/cli/worker_cmd.py +414 -0
  22. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_discovery.py +92 -2
  23. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bootstrap.py +14 -11
  24. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cluster.py +70 -0
  25. bernstein-1.3.2/src/bernstein/core/formal_verification.py +505 -0
  26. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/models.py +2 -0
  27. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/orchestrator.py +3 -0
  28. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rag.py +1 -3
  29. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/tasks.py +55 -0
  30. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/seed.py +58 -0
  31. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/server.py +21 -0
  32. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/server_launch.py +6 -0
  33. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/sync.py +4 -1
  34. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_completion.py +41 -0
  35. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_lifecycle.py +65 -0
  36. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/widgets.py +22 -8
  37. {bernstein-1.2.2 → bernstein-1.3.2}/templates/bernstein.yaml +30 -0
  38. {bernstein-1.2.2 → bernstein-1.3.2}/uv.lock +1 -1
  39. bernstein-1.2.2/src/bernstein/cli/splash.py +0 -174
  40. {bernstein-1.2.2 → bernstein-1.3.2}/.bernstein/rules.yaml +0 -0
  41. {bernstein-1.2.2 → bernstein-1.3.2}/.bernstein/workflows/ci-pipeline.yaml +0 -0
  42. {bernstein-1.2.2 → bernstein-1.3.2}/.gitignore +0 -0
  43. {bernstein-1.2.2 → bernstein-1.3.2}/AGENTS.md +0 -0
  44. {bernstein-1.2.2 → bernstein-1.3.2}/CLAUDE.md +0 -0
  45. {bernstein-1.2.2 → bernstein-1.3.2}/CODE_OF_CONDUCT.md +0 -0
  46. {bernstein-1.2.2 → bernstein-1.3.2}/CONTRIBUTING.md +0 -0
  47. {bernstein-1.2.2 → bernstein-1.3.2}/Dockerfile +0 -0
  48. {bernstein-1.2.2 → bernstein-1.3.2}/LICENSE +0 -0
  49. {bernstein-1.2.2 → bernstein-1.3.2}/SECURITY.md +0 -0
  50. {bernstein-1.2.2 → bernstein-1.3.2}/action/entrypoint.sh +0 -0
  51. {bernstein-1.2.2 → bernstein-1.3.2}/action.yml +0 -0
  52. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/README.md +0 -0
  53. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/agent-hq-comparison.md +0 -0
  54. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/issues.json +0 -0
  55. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154744.json +0 -0
  56. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154744.md +0 -0
  57. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154810.json +0 -0
  58. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_154810.md +0 -0
  59. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161111.json +0 -0
  60. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161111.md +0 -0
  61. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161842.json +0 -0
  62. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_161842.md +0 -0
  63. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_163535.json +0 -0
  64. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_163535.md +0 -0
  65. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_180718.json +0 -0
  66. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_180718.md +0 -0
  67. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_202922.json +0 -0
  68. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_202922.md +0 -0
  69. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_211640.json +0 -0
  70. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/benchmark_simulate_20260328_211640.md +0 -0
  71. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/issues_benchmark_20260328_211300.json +0 -0
  72. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/results/issues_benchmark_20260328_211300.md +0 -0
  73. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/run_benchmark.py +0 -0
  74. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/__init__.py +0 -0
  75. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/harness.py +0 -0
  76. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/metrics.py +0 -0
  77. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/report.py +0 -0
  78. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/.gitkeep +0 -0
  79. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/analysis.md +0 -0
  80. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-mixed.jsonl +0 -0
  81. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-mixed_summary.json +0 -0
  82. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-sonnet.jsonl +0 -0
  83. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/bernstein-sonnet_summary.json +0 -0
  84. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/report.md +0 -0
  85. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-opus.jsonl +0 -0
  86. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-opus_summary.json +0 -0
  87. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-sonnet.jsonl +0 -0
  88. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/results/solo-sonnet_summary.json +0 -0
  89. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/run.py +0 -0
  90. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/swe_bench/scenarios.py +0 -0
  91. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_001_rest_endpoints.yaml +0 -0
  92. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_002_refactor_clean_arch.yaml +0 -0
  93. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_003_auth_middleware.yaml +0 -0
  94. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_004_lint_fixes.yaml +0 -0
  95. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_005_error_handling.yaml +0 -0
  96. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_006_integration_tests.yaml +0 -0
  97. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_007_rate_limiting.yaml +0 -0
  98. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_008_openapi_spec.yaml +0 -0
  99. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_009_logging_monitoring.yaml +0 -0
  100. {bernstein-1.2.2 → bernstein-1.3.2}/benchmarks/tasks/task_010_security_audit.yaml +0 -0
  101. {bernstein-1.2.2 → bernstein-1.3.2}/bernstein.yaml +0 -0
  102. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/github-app/README.md +0 -0
  103. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/github-app/app.yml +0 -0
  104. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/dashboard.json +0 -0
  105. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/provisioning/dashboards/bernstein.yml +0 -0
  106. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
  107. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/.helmignore +0 -0
  108. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/Chart.yaml +0 -0
  109. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/README.md +0 -0
  110. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/NOTES.txt +0 -0
  111. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/_helpers.tpl +0 -0
  112. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/configmap.yaml +0 -0
  113. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/deployment-orchestrator.yaml +0 -0
  114. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/deployment-server.yaml +0 -0
  115. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/hpa.yaml +0 -0
  116. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/ingress.yaml +0 -0
  117. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/prometheusrule.yaml +0 -0
  118. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/pvc-server.yaml +0 -0
  119. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/secret-auth.yaml +0 -0
  120. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/service.yaml +0 -0
  121. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/servicemonitor.yaml +0 -0
  122. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/templates/statefulset-worker.yaml +0 -0
  123. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/bernstein/values.yaml +0 -0
  124. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/helm/prometheus-adapter-values.yaml +0 -0
  125. {bernstein-1.2.2 → bernstein-1.3.2}/deploy/prometheus/prometheus.yml +0 -0
  126. {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/Caddyfile +0 -0
  127. {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/Dockerfile +0 -0
  128. {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/demo-cycle.sh +0 -0
  129. {bernstein-1.2.2 → bernstein-1.3.2}/docker/demo/docker-compose.yaml +0 -0
  130. {bernstein-1.2.2 → bernstein-1.3.2}/docker-compose.yaml +0 -0
  131. {bernstein-1.2.2 → bernstein-1.3.2}/examples/__init__.py +0 -0
  132. {bernstein-1.2.2 → bernstein-1.3.2}/examples/full.yaml +0 -0
  133. {bernstein-1.2.2 → bernstein-1.3.2}/examples/model_policy/bernstein.yaml +0 -0
  134. {bernstein-1.2.2 → bernstein-1.3.2}/examples/multi-model/bernstein.yaml +0 -0
  135. {bernstein-1.2.2 → bernstein-1.3.2}/examples/multi-model/run.sh +0 -0
  136. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/__init__.py +0 -0
  137. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/custom_router_plugin.py +0 -0
  138. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/discord_notifier.py +0 -0
  139. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/jira_plugin.py +0 -0
  140. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/linear_plugin.py +0 -0
  141. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/logging_plugin.py +0 -0
  142. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/metrics_plugin.py +0 -0
  143. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/quality_gate_plugin.py +0 -0
  144. {bernstein-1.2.2 → bernstein-1.3.2}/examples/plugins/slack_notifier.py +0 -0
  145. {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/README.md +0 -0
  146. {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/app.py +0 -0
  147. {bernstein-1.2.2 → bernstein-1.3.2}/examples/quickstart/bernstein.yaml +0 -0
  148. {bernstein-1.2.2 → bernstein-1.3.2}/examples/rag-system.yaml +0 -0
  149. {bernstein-1.2.2 → bernstein-1.3.2}/examples/simple.yaml +0 -0
  150. {bernstein-1.2.2 → bernstein-1.3.2}/github-action/README.md +0 -0
  151. {bernstein-1.2.2 → bernstein-1.3.2}/hooks/smart_approve.py +0 -0
  152. {bernstein-1.2.2 → bernstein-1.3.2}/integrations/__init__.py +0 -0
  153. {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/__init__.py +0 -0
  154. {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/app.py +0 -0
  155. {bernstein-1.2.2 → bernstein-1.3.2}/integrations/jira_webhook/requirements.txt +0 -0
  156. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/.gitignore +0 -0
  157. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/.vscodeignore +0 -0
  158. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/CHANGELOG.md +0 -0
  159. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/LICENSE +0 -0
  160. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/PUBLISH.md +0 -0
  161. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/README.md +0 -0
  162. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/esbuild.mjs +0 -0
  163. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/jest.config.js +0 -0
  164. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/bernstein-icon.png +0 -0
  165. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/bernstein-icon.svg +0 -0
  166. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/command-palette.png +0 -0
  167. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/dashboard.png +0 -0
  168. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/media/screenshots/sidebar.png +0 -0
  169. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/package-lock.json +0 -0
  170. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/package.json +0 -0
  171. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/AgentTreeProvider.ts +0 -0
  172. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/BernsteinClient.ts +0 -0
  173. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/DashboardProvider.ts +0 -0
  174. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/OutputManager.ts +0 -0
  175. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/StatusBarManager.ts +0 -0
  176. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/TaskTreeProvider.ts +0 -0
  177. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__mocks__/vscode.ts +0 -0
  178. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/AgentTreeProvider.test.ts +0 -0
  179. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/BernsteinClient.test.ts +0 -0
  180. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/TaskTreeProvider.test.ts +0 -0
  181. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/__tests__/commands.test.ts +0 -0
  182. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/commands.ts +0 -0
  183. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/src/extension.ts +0 -0
  184. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/tsconfig.json +0 -0
  185. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/webview-ui/package.json +0 -0
  186. {bernstein-1.2.2 → bernstein-1.3.2}/packages/vscode/webview-ui/vite.config.ts +0 -0
  187. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/README.md +0 -0
  188. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/pyproject.toml +0 -0
  189. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/__init__.py +0 -0
  190. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/__init__.py +0 -0
  191. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/github_actions.py +0 -0
  192. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/jira.py +0 -0
  193. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/linear.py +0 -0
  194. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/slack.py +0 -0
  195. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/adapters/teams.py +0 -0
  196. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/client.py +0 -0
  197. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/models.py +0 -0
  198. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/src/bernstein_sdk/state_map.py +0 -0
  199. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/python/uv.lock +0 -0
  200. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/package-lock.json +0 -0
  201. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/package.json +0 -0
  202. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/github-actions.ts +0 -0
  203. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/jira.ts +0 -0
  204. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/linear.ts +0 -0
  205. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/slack.ts +0 -0
  206. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/adapters/teams.ts +0 -0
  207. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/client.ts +0 -0
  208. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/index.ts +0 -0
  209. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/models.ts +0 -0
  210. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/src/state-map.ts +0 -0
  211. {bernstein-1.2.2 → bernstein-1.3.2}/sdk/typescript/tsconfig.json +0 -0
  212. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/__init__.py +0 -0
  213. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/__main__.py +0 -0
  214. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/__init__.py +0 -0
  215. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/aider.py +0 -0
  216. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/amp.py +0 -0
  217. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/base.py +0 -0
  218. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/caching_adapter.py +0 -0
  219. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/ci/__init__.py +0 -0
  220. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/ci/github_actions.py +0 -0
  221. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/claude.py +0 -0
  222. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/codex.py +0 -0
  223. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/env_isolation.py +0 -0
  224. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/gemini.py +0 -0
  225. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/generic.py +0 -0
  226. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/manager.py +0 -0
  227. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/mock.py +0 -0
  228. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/qwen.py +0 -0
  229. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/adapters/roo_code.py +0 -0
  230. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/__init__.py +0 -0
  231. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/agency_provider.py +0 -0
  232. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/catalog.py +0 -0
  233. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/discovery.py +0 -0
  234. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/agents/registry.py +0 -0
  235. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/__init__.py +0 -0
  236. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/comparative.py +0 -0
  237. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/benchmark/swe_bench.py +0 -0
  238. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/__init__.py +0 -0
  239. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/advanced_cmd.py +0 -0
  240. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/agents_cmd.py +0 -0
  241. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/audit_cmd.py +0 -0
  242. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/chaos_cmd.py +0 -0
  243. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/checkpoint_cmd.py +0 -0
  244. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/ci_cmd.py +0 -0
  245. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/cost.py +0 -0
  246. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/errors.py +0 -0
  247. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/eval_benchmark_cmd.py +0 -0
  248. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/evolve_cmd.py +0 -0
  249. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/gateway_cmd.py +0 -0
  250. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/helpers.py +0 -0
  251. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/live.py +0 -0
  252. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/manifest_cmd.py +0 -0
  253. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/quickstart_cmd.py +0 -0
  254. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/run.py +0 -0
  255. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/run_cmd.py +0 -0
  256. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/self_update_cmd.py +0 -0
  257. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/status.py +0 -0
  258. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/status_cmd.py +0 -0
  259. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/stop_cmd.py +0 -0
  260. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/summary_card.py +0 -0
  261. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/task_cmd.py +0 -0
  262. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/ui.py +0 -0
  263. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/watch_cmd.py +0 -0
  264. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/workflow_cmd.py +0 -0
  265. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/workspace_cmd.py +0 -0
  266. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/cli/wrap_up_cmd.py +0 -0
  267. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/compliance/__init__.py +0 -0
  268. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/compliance/eu_ai_act.py +0 -0
  269. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/__init__.py +0 -0
  270. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/a2a.py +0 -0
  271. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/acp.py +0 -0
  272. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agency_loader.py +0 -0
  273. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_lifecycle.py +0 -0
  274. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/agent_signals.py +0 -0
  275. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/api_usage.py +0 -0
  276. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/approval.py +0 -0
  277. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/audit.py +0 -0
  278. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auth.py +0 -0
  279. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auth_middleware.py +0 -0
  280. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auto_approve.py +0 -0
  281. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/auto_distillation.py +0 -0
  282. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bandit_router.py +0 -0
  283. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/batch_router.py +0 -0
  284. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/bulletin.py +0 -0
  285. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cascade.py +0 -0
  286. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cascade_router.py +0 -0
  287. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_fix.py +0 -0
  288. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_log_parser.py +0 -0
  289. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/ci_monitor.py +0 -0
  290. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/circuit_breaker.py +0 -0
  291. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/complexity_advisor.py +0 -0
  292. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/compliance.py +0 -0
  293. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/compression_models.py +0 -0
  294. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/container.py +0 -0
  295. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context.py +0 -0
  296. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context_compression.py +0 -0
  297. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/context_degradation_detector.py +0 -0
  298. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost.py +0 -0
  299. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost_history.py +0 -0
  300. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cost_tracker.py +0 -0
  301. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/cross_model_verifier.py +0 -0
  302. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/differential_privacy.py +0 -0
  303. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/duration_predictor.py +0 -0
  304. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/evolution.py +0 -0
  305. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/evolve_mode.py +0 -0
  306. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/fast_path.py +0 -0
  307. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/file_discovery.py +0 -0
  308. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/file_locks.py +0 -0
  309. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_basic.py +0 -0
  310. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_context.py +0 -0
  311. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_hygiene.py +0 -0
  312. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_ops.py +0 -0
  313. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/git_pr.py +0 -0
  314. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/github.py +0 -0
  315. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/graduation.py +0 -0
  316. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/graph.py +0 -0
  317. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/guardrails.py +0 -0
  318. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/heartbeat.py +0 -0
  319. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/hijacker.py +0 -0
  320. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/home.py +0 -0
  321. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/incident.py +0 -0
  322. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/janitor.py +0 -0
  323. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/knowledge_base.py +0 -0
  324. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/lessons.py +0 -0
  325. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/license_scanner.py +0 -0
  326. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/lifecycle.py +0 -0
  327. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/llm.py +0 -0
  328. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager.py +0 -0
  329. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_models.py +0 -0
  330. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_parsing.py +0 -0
  331. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manager_prompts.py +0 -0
  332. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/manifest.py +0 -0
  333. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_gateway.py +0 -0
  334. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_manager.py +0 -0
  335. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/mcp_registry.py +0 -0
  336. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/memory_integrity.py +0 -0
  337. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/memory_sanitizer.py +0 -0
  338. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/merge_queue.py +0 -0
  339. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/merkle.py +0 -0
  340. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metric_collector.py +0 -0
  341. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metric_export.py +0 -0
  342. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/metrics.py +0 -0
  343. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/multi_cell.py +0 -0
  344. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/notifications.py +0 -0
  345. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/plan_approval.py +0 -0
  346. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/plan_builder.py +0 -0
  347. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/planner.py +0 -0
  348. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/policy.py +0 -0
  349. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/pr_size_governor.py +0 -0
  350. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/preflight.py +0 -0
  351. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/prometheus.py +0 -0
  352. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/prompt_caching.py +0 -0
  353. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/quality_gates.py +0 -0
  354. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/quarantine.py +0 -0
  355. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rate_limit_tracker.py +0 -0
  356. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/recorder.py +0 -0
  357. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/repo_index.py +0 -0
  358. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/researcher.py +0 -0
  359. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/retrospective.py +0 -0
  360. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/reviewer.py +0 -0
  361. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/router.py +0 -0
  362. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/__init__.py +0 -0
  363. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/acp.py +0 -0
  364. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/agents.py +0 -0
  365. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/auth.py +0 -0
  366. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/costs.py +0 -0
  367. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/dashboard.py +0 -0
  368. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/gateway.py +0 -0
  369. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/graduation.py +0 -0
  370. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/plans.py +0 -0
  371. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/quality.py +0 -0
  372. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/slack.py +0 -0
  373. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/status.py +0 -0
  374. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/routes/webhooks.py +0 -0
  375. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/rule_enforcer.py +0 -0
  376. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/runbooks.py +0 -0
  377. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/semantic_cache.py +0 -0
  378. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/semantic_graph.py +0 -0
  379. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/session.py +0 -0
  380. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/signals.py +0 -0
  381. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/slo.py +0 -0
  382. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/spawn_prompt.py +0 -0
  383. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/spawner.py +0 -0
  384. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store.py +0 -0
  385. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_factory.py +0 -0
  386. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_postgres.py +0 -0
  387. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/store_redis.py +0 -0
  388. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/task_store.py +0 -0
  389. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/tick_pipeline.py +0 -0
  390. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/token_monitor.py +0 -0
  391. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/traces.py +0 -0
  392. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_manager.py +0 -0
  393. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/__init__.py +0 -0
  394. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/file_watch.py +0 -0
  395. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/github.py +0 -0
  396. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/slack.py +0 -0
  397. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/trigger_sources/webhook.py +0 -0
  398. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/upgrade_executor.py +0 -0
  399. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/voting.py +0 -0
  400. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/wal.py +0 -0
  401. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/worker.py +0 -0
  402. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workflow.py +0 -0
  403. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workflow_dsl.py +0 -0
  404. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/workspace.py +0 -0
  405. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/core/worktree.py +0 -0
  406. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/dashboard/__init__.py +0 -0
  407. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/dashboard/templates/index.html +0 -0
  408. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/__init__.py +0 -0
  409. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/baseline.py +0 -0
  410. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/golden.py +0 -0
  411. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/harness.py +0 -0
  412. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/judge.py +0 -0
  413. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/metrics.py +0 -0
  414. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/scenario_runner.py +0 -0
  415. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/taxonomy.py +0 -0
  416. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/eval/telemetry.py +0 -0
  417. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/__init__.py +0 -0
  418. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/aggregator.py +0 -0
  419. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/applicator.py +0 -0
  420. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/benchmark.py +0 -0
  421. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/circuit.py +0 -0
  422. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/creative.py +0 -0
  423. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/cycle_helpers.py +0 -0
  424. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/cycle_runner.py +0 -0
  425. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/data_collector.py +0 -0
  426. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/detector.py +0 -0
  427. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/gate.py +0 -0
  428. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/governance.py +0 -0
  429. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/invariants.py +0 -0
  430. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/loop.py +0 -0
  431. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/proposal_scorer.py +0 -0
  432. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/proposals.py +0 -0
  433. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/report.py +0 -0
  434. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/report_generator.py +0 -0
  435. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/risk.py +0 -0
  436. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/sandbox.py +0 -0
  437. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/evolution/types.py +0 -0
  438. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/__init__.py +0 -0
  439. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/app.py +0 -0
  440. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/check_runs.py +0 -0
  441. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/ci_router.py +0 -0
  442. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/cost_reporter.py +0 -0
  443. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/mapper.py +0 -0
  444. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/slash_commands.py +0 -0
  445. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/github_app/webhooks.py +0 -0
  446. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/mcp/__init__.py +0 -0
  447. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/mcp/server.py +0 -0
  448. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/__init__.py +0 -0
  449. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/hookspecs.py +0 -0
  450. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/plugins/manager.py +0 -0
  451. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/templates/__init__.py +0 -0
  452. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/templates/renderer.py +0 -0
  453. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/__init__.py +0 -0
  454. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/app.py +0 -0
  455. {bernstein-1.2.2 → bernstein-1.3.2}/src/bernstein/tui/styles.tcss +0 -0
  456. {bernstein-1.2.2 → bernstein-1.3.2}/templates/adapters/TEMPLATE.py +0 -0
  457. {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/add-docstrings.yaml +0 -0
  458. {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/add-unit-tests.yaml +0 -0
  459. {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/extract-function.yaml +0 -0
  460. {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/fix-import-error.yaml +0 -0
  461. {bernstein-1.2.2 → bernstein-1.3.2}/templates/benchmarks/fix-off-by-one.yaml +0 -0
  462. {bernstein-1.2.2 → bernstein-1.3.2}/templates/ci-parsers/TEMPLATE.py +0 -0
  463. {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/Makefile +0 -0
  464. {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/README.md +0 -0
  465. {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/app.py +0 -0
  466. {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/bernstein.yaml +0 -0
  467. {bernstein-1.2.2 → bernstein-1.3.2}/templates/demo/requirements.txt +0 -0
  468. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/judge.md +0 -0
  469. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/plan.md +0 -0
  470. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/progress-report.md +0 -0
  471. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/review.md +0 -0
  472. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/signal-check.md +0 -0
  473. {bernstein-1.2.2 → bernstein-1.3.2}/templates/prompts/team-awareness.md +0 -0
  474. {bernstein-1.2.2 → bernstein-1.3.2}/templates/pvc.yaml +0 -0
  475. {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.2.2
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/dashboard.svg">
52
- <source media="(prefers-color-scheme: light)" srcset="docs/assets/dashboard.svg">
53
- <img alt="Bernstein Dashboard" src="docs/assets/dashboard.svg" width="700">
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
  [![Python 3.12+](https://img.shields.io/badge/python-3.12+-3776ab?logo=python&logoColor=white)](https://python.org)
57
60
  [![Tests](https://img.shields.io/badge/tests-4250+-2ea44f)]()
58
61
  [![License](https://img.shields.io/badge/license-Apache_2.0-blue)](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
- bernstein stop # graceful shutdown
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 cancel <task_id> # cancel a task
137
- bernstein cost # show cost summary
138
- bernstein live # open live TUI dashboard
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 # health check: deps, keys, ports
141
- bernstein plugins # list active plugins
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 <trace_id> # re-run a task from its trace
144
- bernstein init # initialize project
145
- bernstein demo # zero-to-running demo (no API key needed)
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> # compare two run configurations
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 ideate # run creative evolution pipeline
167
-
168
- # Agent management
169
- bernstein agents sync # pull latest agent catalog
170
- bernstein agents list # list available agents
171
- bernstein agents validate # check catalog health
172
-
173
- # Workspace
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 plan # show task backlog
176
- bernstein logs # tail agent log output
177
- bernstein retro # generate retrospective report
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/dashboard.svg">
16
- <source media="(prefers-color-scheme: light)" srcset="docs/assets/dashboard.svg">
17
- <img alt="Bernstein Dashboard" src="docs/assets/dashboard.svg" width="700">
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
  [![Python 3.12+](https://img.shields.io/badge/python-3.12+-3776ab?logo=python&logoColor=white)](https://python.org)
21
24
  [![Tests](https://img.shields.io/badge/tests-4250+-2ea44f)]()
22
25
  [![License](https://img.shields.io/badge/license-Apache_2.0-blue)](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
- bernstein stop # graceful shutdown
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 cancel <task_id> # cancel a task
101
- bernstein cost # show cost summary
102
- bernstein live # open live TUI dashboard
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 # health check: deps, keys, ports
105
- bernstein plugins # list active plugins
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 <trace_id> # re-run a task from its trace
108
- bernstein init # initialize project
109
- bernstein demo # zero-to-running demo (no API key needed)
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> # compare two run configurations
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 ideate # run creative evolution pipeline
131
-
132
- # Agent management
133
- bernstein agents sync # pull latest agent catalog
134
- bernstein agents list # list available agents
135
- bernstein agents validate # check catalog health
136
-
137
- # Workspace
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 plan # show task backlog
140
- bernstein logs # tail agent log output
141
- bernstein retro # generate retrospective report
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.2.2"
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
+ )