agent-bober 0.6.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +220 -30
  2. package/dist/cli/commands/eval.d.ts +2 -0
  3. package/dist/cli/commands/eval.d.ts.map +1 -1
  4. package/dist/cli/commands/eval.js +10 -0
  5. package/dist/cli/commands/eval.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +357 -62
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/cli/commands/plan.d.ts +2 -0
  10. package/dist/cli/commands/plan.d.ts.map +1 -1
  11. package/dist/cli/commands/plan.js +10 -0
  12. package/dist/cli/commands/plan.js.map +1 -1
  13. package/dist/cli/commands/run.d.ts +2 -0
  14. package/dist/cli/commands/run.d.ts.map +1 -1
  15. package/dist/cli/commands/run.js +10 -0
  16. package/dist/cli/commands/run.js.map +1 -1
  17. package/dist/cli/commands/sprint.d.ts +2 -0
  18. package/dist/cli/commands/sprint.d.ts.map +1 -1
  19. package/dist/cli/commands/sprint.js +10 -0
  20. package/dist/cli/commands/sprint.js.map +1 -1
  21. package/dist/cli/index.js +22 -2
  22. package/dist/cli/index.js.map +1 -1
  23. package/dist/config/schema.d.ts +160 -43
  24. package/dist/config/schema.d.ts.map +1 -1
  25. package/dist/config/schema.js +11 -7
  26. package/dist/config/schema.js.map +1 -1
  27. package/dist/contracts/sprint-contract.d.ts +8 -8
  28. package/dist/discovery/config-generator.d.ts +28 -0
  29. package/dist/discovery/config-generator.d.ts.map +1 -0
  30. package/dist/discovery/config-generator.js +225 -0
  31. package/dist/discovery/config-generator.js.map +1 -0
  32. package/dist/discovery/index.d.ts +20 -0
  33. package/dist/discovery/index.d.ts.map +1 -0
  34. package/dist/discovery/index.js +19 -0
  35. package/dist/discovery/index.js.map +1 -0
  36. package/dist/discovery/scanner.d.ts +17 -0
  37. package/dist/discovery/scanner.d.ts.map +1 -0
  38. package/dist/discovery/scanner.js +120 -0
  39. package/dist/discovery/scanner.js.map +1 -0
  40. package/dist/discovery/scanners/ci-checks.d.ts +10 -0
  41. package/dist/discovery/scanners/ci-checks.d.ts.map +1 -0
  42. package/dist/discovery/scanners/ci-checks.js +169 -0
  43. package/dist/discovery/scanners/ci-checks.js.map +1 -0
  44. package/dist/discovery/scanners/code-conventions.d.ts +12 -0
  45. package/dist/discovery/scanners/code-conventions.d.ts.map +1 -0
  46. package/dist/discovery/scanners/code-conventions.js +216 -0
  47. package/dist/discovery/scanners/code-conventions.js.map +1 -0
  48. package/dist/discovery/scanners/documentation.d.ts +17 -0
  49. package/dist/discovery/scanners/documentation.d.ts.map +1 -0
  50. package/dist/discovery/scanners/documentation.js +92 -0
  51. package/dist/discovery/scanners/documentation.js.map +1 -0
  52. package/dist/discovery/scanners/git-conventions.d.ts +11 -0
  53. package/dist/discovery/scanners/git-conventions.d.ts.map +1 -0
  54. package/dist/discovery/scanners/git-conventions.js +128 -0
  55. package/dist/discovery/scanners/git-conventions.js.map +1 -0
  56. package/dist/discovery/scanners/package-scripts.d.ts +9 -0
  57. package/dist/discovery/scanners/package-scripts.d.ts.map +1 -0
  58. package/dist/discovery/scanners/package-scripts.js +112 -0
  59. package/dist/discovery/scanners/package-scripts.js.map +1 -0
  60. package/dist/discovery/scanners/test-conventions.d.ts +9 -0
  61. package/dist/discovery/scanners/test-conventions.d.ts.map +1 -0
  62. package/dist/discovery/scanners/test-conventions.js +231 -0
  63. package/dist/discovery/scanners/test-conventions.js.map +1 -0
  64. package/dist/discovery/synthesizer.d.ts +30 -0
  65. package/dist/discovery/synthesizer.d.ts.map +1 -0
  66. package/dist/discovery/synthesizer.js +348 -0
  67. package/dist/discovery/synthesizer.js.map +1 -0
  68. package/dist/discovery/types.d.ts +160 -0
  69. package/dist/discovery/types.d.ts.map +1 -0
  70. package/dist/discovery/types.js +9 -0
  71. package/dist/discovery/types.js.map +1 -0
  72. package/dist/index.d.ts +12 -0
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +12 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/mcp/index.d.ts +4 -0
  77. package/dist/mcp/index.d.ts.map +1 -0
  78. package/dist/mcp/index.js +4 -0
  79. package/dist/mcp/index.js.map +1 -0
  80. package/dist/mcp/run-manager.d.ts +47 -0
  81. package/dist/mcp/run-manager.d.ts.map +1 -0
  82. package/dist/mcp/run-manager.js +79 -0
  83. package/dist/mcp/run-manager.js.map +1 -0
  84. package/dist/mcp/server.d.ts +15 -0
  85. package/dist/mcp/server.d.ts.map +1 -0
  86. package/dist/mcp/server.js +107 -0
  87. package/dist/mcp/server.js.map +1 -0
  88. package/dist/mcp/tools/config.d.ts +2 -0
  89. package/dist/mcp/tools/config.d.ts.map +1 -0
  90. package/dist/mcp/tools/config.js +153 -0
  91. package/dist/mcp/tools/config.js.map +1 -0
  92. package/dist/mcp/tools/contracts.d.ts +2 -0
  93. package/dist/mcp/tools/contracts.d.ts.map +1 -0
  94. package/dist/mcp/tools/contracts.js +61 -0
  95. package/dist/mcp/tools/contracts.js.map +1 -0
  96. package/dist/mcp/tools/eval.d.ts +2 -0
  97. package/dist/mcp/tools/eval.d.ts.map +1 -0
  98. package/dist/mcp/tools/eval.js +157 -0
  99. package/dist/mcp/tools/eval.js.map +1 -0
  100. package/dist/mcp/tools/index.d.ts +20 -0
  101. package/dist/mcp/tools/index.d.ts.map +1 -0
  102. package/dist/mcp/tools/index.js +47 -0
  103. package/dist/mcp/tools/index.js.map +1 -0
  104. package/dist/mcp/tools/init.d.ts +2 -0
  105. package/dist/mcp/tools/init.d.ts.map +1 -0
  106. package/dist/mcp/tools/init.js +222 -0
  107. package/dist/mcp/tools/init.js.map +1 -0
  108. package/dist/mcp/tools/plan.d.ts +2 -0
  109. package/dist/mcp/tools/plan.d.ts.map +1 -0
  110. package/dist/mcp/tools/plan.js +97 -0
  111. package/dist/mcp/tools/plan.js.map +1 -0
  112. package/dist/mcp/tools/principles.d.ts +2 -0
  113. package/dist/mcp/tools/principles.d.ts.map +1 -0
  114. package/dist/mcp/tools/principles.js +66 -0
  115. package/dist/mcp/tools/principles.js.map +1 -0
  116. package/dist/mcp/tools/registry.d.ts +45 -0
  117. package/dist/mcp/tools/registry.d.ts.map +1 -0
  118. package/dist/mcp/tools/registry.js +23 -0
  119. package/dist/mcp/tools/registry.js.map +1 -0
  120. package/dist/mcp/tools/run.d.ts +2 -0
  121. package/dist/mcp/tools/run.d.ts.map +1 -0
  122. package/dist/mcp/tools/run.js +66 -0
  123. package/dist/mcp/tools/run.js.map +1 -0
  124. package/dist/mcp/tools/spec.d.ts +2 -0
  125. package/dist/mcp/tools/spec.d.ts.map +1 -0
  126. package/dist/mcp/tools/spec.js +32 -0
  127. package/dist/mcp/tools/spec.js.map +1 -0
  128. package/dist/mcp/tools/sprint.d.ts +2 -0
  129. package/dist/mcp/tools/sprint.d.ts.map +1 -0
  130. package/dist/mcp/tools/sprint.js +243 -0
  131. package/dist/mcp/tools/sprint.js.map +1 -0
  132. package/dist/mcp/tools/status.d.ts +2 -0
  133. package/dist/mcp/tools/status.d.ts.map +1 -0
  134. package/dist/mcp/tools/status.js +76 -0
  135. package/dist/mcp/tools/status.js.map +1 -0
  136. package/dist/orchestrator/agentic-loop.d.ts +7 -6
  137. package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
  138. package/dist/orchestrator/agentic-loop.js +33 -40
  139. package/dist/orchestrator/agentic-loop.js.map +1 -1
  140. package/dist/orchestrator/context-handoff.d.ts +20 -20
  141. package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
  142. package/dist/orchestrator/evaluator-agent.js +2 -2
  143. package/dist/orchestrator/evaluator-agent.js.map +1 -1
  144. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  145. package/dist/orchestrator/generator-agent.js +2 -2
  146. package/dist/orchestrator/generator-agent.js.map +1 -1
  147. package/dist/orchestrator/model-resolver.d.ts +35 -4
  148. package/dist/orchestrator/model-resolver.d.ts.map +1 -1
  149. package/dist/orchestrator/model-resolver.js +68 -15
  150. package/dist/orchestrator/model-resolver.js.map +1 -1
  151. package/dist/orchestrator/planner-agent.d.ts.map +1 -1
  152. package/dist/orchestrator/planner-agent.js +2 -2
  153. package/dist/orchestrator/planner-agent.js.map +1 -1
  154. package/dist/orchestrator/tools/index.d.ts +3 -4
  155. package/dist/orchestrator/tools/index.d.ts.map +1 -1
  156. package/dist/orchestrator/tools/index.js.map +1 -1
  157. package/dist/orchestrator/tools/schemas.d.ts +11 -12
  158. package/dist/orchestrator/tools/schemas.d.ts.map +1 -1
  159. package/dist/orchestrator/tools/schemas.js +3 -2
  160. package/dist/orchestrator/tools/schemas.js.map +1 -1
  161. package/dist/providers/anthropic.d.ts +15 -0
  162. package/dist/providers/anthropic.d.ts.map +1 -0
  163. package/dist/providers/anthropic.js +133 -0
  164. package/dist/providers/anthropic.js.map +1 -0
  165. package/dist/providers/factory.d.ts +37 -0
  166. package/dist/providers/factory.d.ts.map +1 -0
  167. package/dist/providers/factory.js +119 -0
  168. package/dist/providers/factory.js.map +1 -0
  169. package/dist/providers/google.d.ts +39 -0
  170. package/dist/providers/google.d.ts.map +1 -0
  171. package/dist/providers/google.js +195 -0
  172. package/dist/providers/google.js.map +1 -0
  173. package/dist/providers/index.d.ts +7 -0
  174. package/dist/providers/index.d.ts.map +1 -0
  175. package/dist/providers/index.js +6 -0
  176. package/dist/providers/index.js.map +1 -0
  177. package/dist/providers/openai-compat.d.ts +39 -0
  178. package/dist/providers/openai-compat.d.ts.map +1 -0
  179. package/dist/providers/openai-compat.js +42 -0
  180. package/dist/providers/openai-compat.js.map +1 -0
  181. package/dist/providers/openai.d.ts +41 -0
  182. package/dist/providers/openai.d.ts.map +1 -0
  183. package/dist/providers/openai.js +205 -0
  184. package/dist/providers/openai.js.map +1 -0
  185. package/dist/providers/types.d.ts +144 -0
  186. package/dist/providers/types.d.ts.map +1 -0
  187. package/dist/providers/types.js +8 -0
  188. package/dist/providers/types.js.map +1 -0
  189. package/package.json +22 -4
  190. package/skills/bober.principles/SKILL.md +36 -3
package/README.md CHANGED
@@ -3,9 +3,13 @@
3
3
  [![npm version](https://img.shields.io/npm/v/agent-bober.svg)](https://www.npmjs.com/package/agent-bober)
4
4
  [![license](https://img.shields.io/npm/l/agent-bober.svg)](https://github.com/BOBER3r/agent-bober/blob/main/LICENSE)
5
5
 
6
- **Generator-Evaluator multi-agent harness for building applications autonomously with Claude.**
6
+ **Generator-Evaluator multi-agent harness for building applications autonomously with any LLM.**
7
7
 
8
- Inspired by Anthropic's engineering publication [**"Harness design for long-running application development"**](https://www.anthropic.com/engineering/harness-design-long-running-apps), agent-bober implements the Generator-Evaluator multi-agent pattern as a reusable, installable workflow. It orchestrates multiple Claude agents in a structured loop: a **Planner** decomposes your idea into sprint contracts, a **Generator** writes the code, and an **Evaluator** independently verifies each sprint against its contract before moving on. The result is autonomous, high-quality software development with built-in guardrails, context resets, and brutally honest evaluation.
8
+ [agentbober.com](https://agentbober.com) | [npm](https://www.npmjs.com/package/agent-bober) | [GitHub](https://github.com/BOBER3r/agent-bober)
9
+
10
+ Inspired by Anthropic's engineering publication [**"Harness design for long-running application development"**](https://www.anthropic.com/engineering/harness-design-long-running-apps), agent-bober implements the Generator-Evaluator multi-agent pattern as a reusable, installable workflow. It orchestrates AI agents in a structured loop: a **Planner** decomposes your idea into sprint contracts, a **Generator** writes the code, and an **Evaluator** independently verifies each sprint against its contract before moving on. The result is autonomous, high-quality software development with built-in guardrails, context resets, and brutally honest evaluation.
11
+
12
+ Works with **Claude, GPT, Gemini, Ollama**, and any OpenAI-compatible endpoint. Mix and match providers per agent role.
9
13
 
10
14
  ```
11
15
  You describe a feature
@@ -39,7 +43,12 @@ npm install -g agent-bober
39
43
  npx agent-bober init
40
44
  ```
41
45
 
42
- agent-bober also works as a **Claude Code plugin**. If you install it as a dependency or globally, Claude Code will detect the plugin manifest and make `/bober:*` slash commands available in your sessions.
46
+ agent-bober works in multiple environments:
47
+
48
+ - **Claude Code** -- Plugin with 10 slash commands (`/bober-plan`, `/bober-run`, etc.)
49
+ - **Cursor / Windsurf** -- MCP server with 10 tools in the chat interface
50
+ - **Any MCP-compatible IDE** -- MCP server via stdio transport
51
+ - **Any terminal** -- CLI commands (`npx agent-bober run "feature"`)
43
52
 
44
53
  ## Quick Start
45
54
 
@@ -48,7 +57,7 @@ agent-bober also works as a **Claude Code plugin**. If you install it as a depen
48
57
  npx agent-bober init
49
58
  ```
50
59
 
51
- Interactive setup -- describe what you want to build, pick a preset or let the planner decide.
60
+ Interactive setup -- pick your AI provider, choose a preset, describe what you want to build.
52
61
 
53
62
  ### With a Preset
54
63
  ```bash
@@ -66,6 +75,8 @@ cd your-existing-project
66
75
  npx agent-bober init brownfield
67
76
  ```
68
77
 
78
+ Brownfield init **auto-discovers your codebase**: scans package.json scripts, CI configs, git history, file naming patterns, import conventions, test setup, and documentation. It auto-generates project principles and configures evaluator strategies with the correct commands -- no manual setup needed.
79
+
69
80
  Then in Claude Code:
70
81
  ```
71
82
  /bober-principles # Define project standards (optional but recommended)
@@ -86,14 +97,160 @@ Specialized workflows:
86
97
 
87
98
  ---
88
99
 
100
+ ## Multi-Provider Support
101
+
102
+ agent-bober is **provider-agnostic**. Use any LLM provider for any agent role. Mix and match -- Opus for planning, GPT-4.1 for generation, local Ollama for evaluation.
103
+
104
+ ### Supported Providers
105
+
106
+ | Provider | Models | API Key |
107
+ |----------|--------|---------|
108
+ | **Anthropic** (default) | `opus`, `sonnet`, `haiku` | `ANTHROPIC_API_KEY` |
109
+ | **OpenAI** | `gpt-4.1`, `gpt-4.1-mini`, `o3`, `o4-mini` | `OPENAI_API_KEY` |
110
+ | **Google Gemini** | `gemini-pro`, `gemini-flash` | `GOOGLE_API_KEY` or `GEMINI_API_KEY` |
111
+ | **OpenAI-Compatible** | Any model (Ollama, LM Studio, Groq, DeepSeek, etc.) | Optional |
112
+
113
+ ### Configuration
114
+
115
+ Set providers per agent role in `bober.config.json`:
116
+
117
+ ```jsonc
118
+ {
119
+ "planner": {
120
+ "provider": "anthropic",
121
+ "model": "opus"
122
+ },
123
+ "generator": {
124
+ "provider": "openai",
125
+ "model": "gpt-4.1"
126
+ },
127
+ "evaluator": {
128
+ "provider": "openai-compat",
129
+ "model": "llama3.1:70b",
130
+ "endpoint": "http://localhost:11434/v1"
131
+ }
132
+ }
133
+ ```
134
+
135
+ Model shorthands auto-resolve to the correct provider:
136
+ - `"opus"` / `"sonnet"` / `"haiku"` -- Anthropic
137
+ - `"gpt-4.1"` / `"o3"` / `"o4-mini"` -- OpenAI
138
+ - `"gemini-pro"` / `"gemini-flash"` -- Google
139
+ - `"ollama/llama3"` -- OpenAI-compatible at localhost:11434
140
+
141
+ Override provider for all roles from the CLI:
142
+ ```bash
143
+ npx agent-bober run "feature" --provider openai
144
+ ```
145
+
146
+ Provider SDKs (`openai`, `@google/generative-ai`) are **optional peer dependencies** -- install only what you use. Only `@anthropic-ai/sdk` is required by default.
147
+
148
+ ---
149
+
150
+ ## MCP Server (Cursor, Windsurf, etc.)
151
+
152
+ agent-bober includes an MCP (Model Context Protocol) server that exposes all functionality as tools in any MCP-compatible IDE.
153
+
154
+ ### Setup for Cursor
155
+
156
+ Add to `.cursor/mcp.json`:
157
+ ```json
158
+ {
159
+ "mcpServers": {
160
+ "bober": {
161
+ "command": "npx",
162
+ "args": ["agent-bober", "mcp"]
163
+ }
164
+ }
165
+ }
166
+ ```
167
+
168
+ ### Setup for Windsurf
169
+
170
+ Add to your Windsurf MCP configuration:
171
+ ```json
172
+ {
173
+ "mcpServers": {
174
+ "bober": {
175
+ "command": "npx",
176
+ "args": ["agent-bober", "mcp"]
177
+ }
178
+ }
179
+ }
180
+ ```
181
+
182
+ ### Available MCP Tools
183
+
184
+ | Tool | Type | Description |
185
+ |------|------|-------------|
186
+ | `bober_init` | sync | Initialize project config and `.bober/` directory |
187
+ | `bober_plan` | sync | Plan a feature, create sprint contracts |
188
+ | `bober_sprint` | sync | Execute the next sprint (generator + evaluator loop) |
189
+ | `bober_eval` | sync | Evaluate a sprint independently |
190
+ | `bober_run` | async | Full autonomous pipeline (returns immediately, poll with status) |
191
+ | `bober_status` | poll | Check pipeline progress or read current status |
192
+ | `bober_contracts` | read | List all sprint contracts or read a specific one |
193
+ | `bober_spec` | read | Read the current PlanSpec |
194
+ | `bober_principles` | read/write | Read or set project principles |
195
+ | `bober_config` | read/write | Read or update `bober.config.json` |
196
+
197
+ ---
198
+
199
+ ## Brownfield Auto-Discovery
200
+
201
+ When you run `bober init brownfield` (or use the `bober_init` MCP tool with mode=brownfield), agent-bober deeply analyzes your existing codebase and automatically:
202
+
203
+ ### What It Scans
204
+
205
+ | Area | What It Reads | What It Detects |
206
+ |------|---------------|-----------------|
207
+ | **Package scripts** | `package.json` scripts, lockfiles | Build/test/lint/typecheck commands, package manager (npm/yarn/pnpm/bun) |
208
+ | **CI/CD** | `.github/workflows/*.yml`, `.gitlab-ci.yml` | CI check commands, deployment steps |
209
+ | **Git history** | Last 50 commits, branch names | Commit message format (conventional commits, prefixes), branch naming strategy |
210
+ | **Code conventions** | Samples up to 20 source files | File naming (camelCase/kebab-case/PascalCase), import style, export patterns, TypeScript strictness |
211
+ | **Test setup** | Test files, framework configs | Test framework, file naming pattern (*.test.ts vs *.spec.ts), mocking library, coverage config |
212
+ | **Documentation** | README.md, CONTRIBUTING.md, CLAUDE.md, .cursorrules, docs/ | Existing standards and guidelines |
213
+
214
+ ### What It Produces
215
+
216
+ 1. **`.bober/principles.md`** -- Comprehensive project principles synthesized by a single LLM call from the scan data. Each rule includes file path examples from your actual codebase and notes any inconsistencies (e.g., "Most files use camelCase but `src/utils/parse-config.ts` uses kebab-case").
217
+
218
+ 2. **`bober.config.json`** -- Evaluator strategies with real, PM-qualified command strings (e.g., `{ type: "lint", command: "pnpm run lint", required: true }`), plus CI-derived custom strategies labeled `(from CI)`.
219
+
220
+ ### How It Works
221
+
222
+ ```bash
223
+ $ npx agent-bober init brownfield
224
+
225
+ Analyzing codebase...
226
+
227
+ Detected: TypeScript, React, Vite, ESLint, Vitest, Playwright
228
+ Package manager: pnpm
229
+ Git: conventional commits (feat:/fix:), feature/* branches
230
+ Tests: vitest, *.test.ts, co-located
231
+
232
+ Auto-configured strategies:
233
+ typecheck pnpm run typecheck (required)
234
+ lint pnpm run lint (required)
235
+ build pnpm run build (required)
236
+ unit-test pnpm run test (required)
237
+ playwright npx playwright test (optional)
238
+
239
+ Look good? [Y/n]
240
+ ```
241
+
242
+ The `/bober-principles` command also triggers auto-discovery when called with no arguments in a brownfield project -- it analyzes the codebase instead of asking interview questions.
243
+
244
+ ---
245
+
89
246
  ## Commands
90
247
 
91
248
  ### Slash Commands (Claude Code)
92
249
 
93
250
  | Command | Description |
94
251
  |---|---|
95
- | `/bober-principles` | Define project principles AI expands your rough notes into standards |
96
- | `/bober-plan` | Plan any feature stack-agnostic, sprint-decomposed |
252
+ | `/bober-principles` | Define project principles -- AI expands your rough notes into standards |
253
+ | `/bober-plan` | Plan any feature -- stack-agnostic, sprint-decomposed |
97
254
  | `/bober-sprint` | Execute the next sprint contract |
98
255
  | `/bober-eval` | Evaluate current sprint output |
99
256
  | `/bober-run` | Full autonomous pipeline (plan + sprint + eval loop) |
@@ -106,11 +263,12 @@ Specialized workflows:
106
263
  ### CLI
107
264
 
108
265
  ```bash
109
- npx agent-bober init [preset] # Initialize project
266
+ npx agent-bober init [preset] # Initialize project (with provider selection)
110
267
  npx agent-bober plan "feature" # Run the planner
111
268
  npx agent-bober sprint # Execute next sprint
112
269
  npx agent-bober eval # Evaluate current sprint
113
270
  npx agent-bober run "feature" # Full autonomous loop
271
+ npx agent-bober mcp # Start MCP server (Cursor/Windsurf)
114
272
  ```
115
273
 
116
274
  ### Fully Autonomous Mode (no human in the loop)
@@ -138,7 +296,16 @@ agent-bober init nextjs
138
296
  agent-bober run "Build a complete dashboard with auth, CRUD, and charts"
139
297
  ```
140
298
 
141
- The CLI uses the Anthropic SDK directly no approval prompts at all.
299
+ The CLI uses the Anthropic SDK directly -- no approval prompts at all.
300
+
301
+ **Option C: With a different provider**
302
+
303
+ ```bash
304
+ export OPENAI_API_KEY=sk-...
305
+ cd your-project
306
+ agent-bober init nextjs
307
+ agent-bober run "Build a complete dashboard with auth, CRUD, and charts" --provider openai
308
+ ```
142
309
 
143
310
  ---
144
311
 
@@ -150,7 +317,7 @@ All configuration lives in `bober.config.json` at your project root. The `init`
150
317
 
151
318
  ```jsonc
152
319
  {
153
- // ── Project ─────────────────────────────────────
320
+ // -- Project -----------------------------------------
154
321
  "project": {
155
322
  "name": "my-app", // Project name
156
323
  "mode": "greenfield", // "greenfield" | "brownfield"
@@ -158,26 +325,35 @@ All configuration lives in `bober.config.json` at your project root. The `init`
158
325
  "description": "A task management app with real-time collaboration"
159
326
  },
160
327
 
161
- // ── Planner ─────────────────────────────────────
328
+ // -- Planner -----------------------------------------
162
329
  "planner": {
330
+ "provider": "anthropic", // "anthropic" | "openai" | "google" | "openai-compat"
331
+ "model": "opus", // Any model string or shorthand
332
+ "endpoint": null, // Custom base URL (for openai-compat)
333
+ "providerConfig": {}, // Provider-specific settings
163
334
  "maxClarifications": 5, // Max clarifying questions (0 to skip)
164
- "model": "opus", // Model for planning: "opus" | "sonnet" | "haiku"
165
335
  "contextFiles": [ // Extra files the planner should read
166
336
  "docs/architecture.md"
167
337
  ]
168
338
  },
169
339
 
170
- // ── Generator ───────────────────────────────────
340
+ // -- Generator ---------------------------------------
171
341
  "generator": {
172
- "model": "sonnet", // Model for code generation
342
+ "provider": "anthropic", // "anthropic" | "openai" | "google" | "openai-compat"
343
+ "model": "sonnet", // Any model string or shorthand
344
+ "endpoint": null, // Custom base URL (for openai-compat)
345
+ "providerConfig": {}, // Provider-specific settings
173
346
  "maxTurnsPerSprint": 50, // Max tool-use turns per sprint
174
347
  "autoCommit": true, // Auto-commit after each sprint
175
348
  "branchPattern": "bober/{feature-name}" // Git branch naming
176
349
  },
177
350
 
178
- // ── Evaluator ───────────────────────────────────
351
+ // -- Evaluator ---------------------------------------
179
352
  "evaluator": {
180
- "model": "sonnet", // Model for evaluation reasoning
353
+ "provider": "anthropic", // "anthropic" | "openai" | "google" | "openai-compat"
354
+ "model": "sonnet", // Any model string or shorthand
355
+ "endpoint": null, // Custom base URL (for openai-compat)
356
+ "providerConfig": {}, // Provider-specific settings
181
357
  "strategies": [ // Evaluation strategies to run
182
358
  { "type": "typecheck", "required": true },
183
359
  { "type": "lint", "required": true },
@@ -189,21 +365,21 @@ All configuration lives in `bober.config.json` at your project root. The `init`
189
365
  "plugins": [] // Custom evaluator plugin paths
190
366
  },
191
367
 
192
- // ── Sprint ──────────────────────────────────────
368
+ // -- Sprint ------------------------------------------
193
369
  "sprint": {
194
370
  "maxSprints": 10, // Max sprints per plan
195
371
  "requireContracts": true, // Require contract agreement before coding
196
372
  "sprintSize": "medium" // "small" | "medium" | "large"
197
373
  },
198
374
 
199
- // ── Pipeline ────────────────────────────────────
375
+ // -- Pipeline ----------------------------------------
200
376
  "pipeline": {
201
377
  "maxIterations": 20, // Max total iterations across all sprints
202
378
  "requireApproval": false, // Pause for user approval between sprints
203
379
  "contextReset": "always" // "always" | "on-threshold" | "never"
204
380
  },
205
381
 
206
- // ── Commands ────────────────────────────────────
382
+ // -- Commands ----------------------------------------
207
383
  "commands": {
208
384
  "install": "npm install",
209
385
  "build": "npm run build",
@@ -248,7 +424,7 @@ All configuration lives in `bober.config.json` at your project root. The `init`
248
424
 
249
425
  ### Inline Command Evaluators
250
426
 
251
- The strategy type is **open** you can use any name and provide a shell command directly. No plugin file needed:
427
+ The strategy type is **open** -- you can use any name and provide a shell command directly. No plugin file needed:
252
428
 
253
429
  ```json
254
430
  {
@@ -378,11 +554,13 @@ Python API (FastAPI/Django). Includes:
378
554
 
379
555
  ### `brownfield`
380
556
 
381
- Existing codebase (conservative defaults). No scaffold files -- just configuration:
557
+ Existing codebase with **intelligent auto-discovery**:
382
558
 
559
+ - Deep codebase scan: package scripts, CI configs, git history, code conventions, test setup
560
+ - Auto-generated project principles from discovered patterns
561
+ - Evaluator strategies auto-configured with real commands from your scripts and CI
383
562
  - Conservative sprint sizes (`small`)
384
563
  - Higher evaluator iteration limit (5 rework cycles)
385
- - Requires user approval between sprints
386
564
  - Emphasizes reading existing patterns before making changes
387
565
 
388
566
  ### `base`
@@ -452,18 +630,18 @@ To debug failing E2E tests:
452
630
 
453
631
  ### The Generator-Evaluator Pattern
454
632
 
455
- This architecture implements the patterns described in Anthropic's [**"Harness design for long-running application development"**](https://www.anthropic.com/engineering/harness-design-long-running-apps) by Prithvi Rajasekaran. The key insight from that research: separating code generation from code evaluation creates a feedback loop that catches errors early and dramatically improves output quality. In their tests, a solo agent produced broken output in 20 minutes, while the full harness produced a polished, working application demonstrating that multi-agent orchestration with honest evaluation is worth the investment.
633
+ This architecture implements the patterns described in Anthropic's [**"Harness design for long-running application development"**](https://www.anthropic.com/engineering/harness-design-long-running-apps) by Prithvi Rajasekaran. The key insight from that research: separating code generation from code evaluation creates a feedback loop that catches errors early and dramatically improves output quality. In their tests, a solo agent produced broken output in 20 minutes, while the full harness produced a polished, working application -- demonstrating that multi-agent orchestration with honest evaluation is worth the investment.
456
634
 
457
- ### Agentic Tool-Use Architecture
635
+ ### Provider-Agnostic Architecture
458
636
 
459
- Each agent runs as a **multi-turn agentic loop** with tool access via the Anthropic SDK. System prompts are loaded from the detailed agent definitions in `agents/bober-*.md` (300-600 lines of role-specific instructions, anti-leniency protocols, and evaluation criteria).
637
+ Each agent runs as a **multi-turn agentic loop** with tool access via the unified `LLMClient` interface. The provider layer abstracts away the differences between Anthropic, OpenAI, Google, and OpenAI-compatible APIs. System prompts are loaded from the detailed agent definitions in `agents/bober-*.md` (300-600 lines of role-specific instructions, anti-leniency protocols, and evaluation criteria).
460
638
 
461
- - **Planner** (Claude Opus): Explores the codebase via read-only tools (`read_file`, `glob`, `grep`), then produces sprint-decomposed plans. Thinks about scope, dependencies, and risk.
462
- - **Generator** (Claude Sonnet): Full tool access (`bash`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`). Reads existing code, writes implementation, runs tests, and commits all autonomously within the sprint contract boundaries.
463
- - **Evaluator** (Claude Sonnet): Read-only + bash tools (`bash`, `read_file`, `glob`, `grep` deliberately NO write/edit). Independently verifies by running the dev server, taking Playwright screenshots, executing tests, and inspecting code. Cannot fix bugs only report them with precise feedback.
639
+ - **Planner** (default: Claude Opus): Explores the codebase via read-only tools (`read_file`, `glob`, `grep`), then produces sprint-decomposed plans. Thinks about scope, dependencies, and risk.
640
+ - **Generator** (default: Claude Sonnet): Full tool access (`bash`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`). Reads existing code, writes implementation, runs tests, and commits -- all autonomously within the sprint contract boundaries.
641
+ - **Evaluator** (default: Claude Sonnet): Read-only + bash tools (`bash`, `read_file`, `glob`, `grep` -- deliberately NO write/edit). Independently verifies by running the dev server, taking Playwright screenshots, executing tests, and inspecting code. Cannot fix bugs -- only report them with precise feedback.
464
642
 
465
643
  The separation ensures that:
466
- 1. The Generator cannot "mark its own homework" an independent evaluation step with its own tool access catches issues through actual runtime verification, not just reading the generator's self-report.
644
+ 1. The Generator cannot "mark its own homework" -- an independent evaluation step with its own tool access catches issues through actual runtime verification, not just reading the generator's self-report.
467
645
  2. Sprint contracts provide clear scope boundaries, preventing feature creep.
468
646
  3. Automated checks (programmatic evaluators) + agent-based qualitative evaluation run after every sprint.
469
647
  4. Context resets between sprints keep the Generator focused and prevent context degradation.
@@ -477,8 +655,8 @@ All bober state lives in the `.bober/` directory:
477
655
  .bober/
478
656
  specs/ PlanSpec JSON files
479
657
  contracts/ SprintContract JSON files
480
- evaluations/ Evaluation result logs
481
- snapshots/ Context snapshots (gitignored)
658
+ eval-results/ Evaluation result logs
659
+ handoffs/ Context handoff documents
482
660
  progress.md Human-readable progress tracker
483
661
  history.jsonl Machine-readable event log
484
662
  ```
@@ -529,9 +707,14 @@ agent-bober/
529
707
  cli/ CLI entry point (commander)
530
708
  config/ Config schema, loader, defaults
531
709
  contracts/ Sprint contract and eval result types
710
+ discovery/ Brownfield auto-discovery (scanner, synthesizer, config generator)
711
+ scanners/ Sub-scanners (package-scripts, ci-checks, git, code, tests, docs)
532
712
  evaluators/ Built-in evaluator plugins
713
+ mcp/ MCP server and tool definitions
714
+ tools/ 10 MCP tools (init, plan, sprint, eval, run, status, etc.)
533
715
  orchestrator/ Agent runners, agentic loop, tool infrastructure
534
716
  tools/ Tool schemas, sandboxed handlers, role-based sets
717
+ providers/ LLM provider adapters (Anthropic, OpenAI, Google, OpenAI-compat)
535
718
  state/ State management for .bober/ directory
536
719
  utils/ Shared utilities
537
720
  agents/ Agent system prompts (.md files, loaded at runtime)
@@ -557,6 +740,13 @@ This project is inspired by and implements the patterns from Anthropic's [**"Har
557
740
 
558
741
  ---
559
742
 
743
+ ## Links
744
+
745
+ - [agentbober.com](https://agentbober.com) -- Official website
746
+ - [npm](https://www.npmjs.com/package/agent-bober) -- Package registry
747
+ - [GitHub](https://github.com/BOBER3r/agent-bober) -- Source code
748
+ - [Anthropic Research](https://www.anthropic.com/engineering/harness-design-long-running-apps) -- The paper that inspired this project
749
+
560
750
  ## License
561
751
 
562
752
  [MIT](LICENSE) -- Copyright (c) 2026 BOBER3r
@@ -1,6 +1,8 @@
1
1
  export interface EvalCommandOptions {
2
2
  verbose?: boolean;
3
3
  sprint?: string;
4
+ /** Override AI provider for all roles. Overrides config.planner/generator/evaluator.provider. */
5
+ provider?: string;
4
6
  }
5
7
  export declare function runEvalCommand(projectRoot: string, options: EvalCommandOptions): Promise<void>;
6
8
  //# sourceMappingURL=eval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Jf"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsKf"}
@@ -20,6 +20,16 @@ export async function runEvalCommand(projectRoot, options) {
20
20
  logger.info('Run "npx agent-bober init" to create a configuration.');
21
21
  return;
22
22
  }
23
+ // Apply --provider override for all roles
24
+ if (options.provider) {
25
+ config = {
26
+ ...config,
27
+ planner: { ...config.planner, provider: options.provider },
28
+ generator: { ...config.generator, provider: options.provider },
29
+ evaluator: { ...config.evaluator, provider: options.provider },
30
+ };
31
+ logger.info(`Provider override: ${options.provider}`);
32
+ }
23
33
  await ensureBoberDir(projectRoot);
24
34
  // Load spec and contracts
25
35
  const spec = await loadLatestSpec(projectRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAyPA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyEf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAgaA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyEf"}