agent-bober 0.5.3 → 0.6.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 (52) hide show
  1. package/README.md +13 -7
  2. package/dist/contracts/eval-result.d.ts +339 -0
  3. package/dist/contracts/eval-result.d.ts.map +1 -1
  4. package/dist/contracts/eval-result.js +36 -0
  5. package/dist/contracts/eval-result.js.map +1 -1
  6. package/dist/evaluators/builtin/playwright.d.ts.map +1 -1
  7. package/dist/evaluators/builtin/playwright.js +50 -15
  8. package/dist/evaluators/builtin/playwright.js.map +1 -1
  9. package/dist/index.d.ts +5 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/orchestrator/agent-loader.d.ts +26 -0
  14. package/dist/orchestrator/agent-loader.d.ts.map +1 -0
  15. package/dist/orchestrator/agent-loader.js +125 -0
  16. package/dist/orchestrator/agent-loader.js.map +1 -0
  17. package/dist/orchestrator/agentic-loop.d.ts +53 -0
  18. package/dist/orchestrator/agentic-loop.d.ts.map +1 -0
  19. package/dist/orchestrator/agentic-loop.js +145 -0
  20. package/dist/orchestrator/agentic-loop.js.map +1 -0
  21. package/dist/orchestrator/evaluator-agent.d.ts +4 -1
  22. package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
  23. package/dist/orchestrator/evaluator-agent.js +107 -84
  24. package/dist/orchestrator/evaluator-agent.js.map +1 -1
  25. package/dist/orchestrator/generator-agent.d.ts +14 -2
  26. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  27. package/dist/orchestrator/generator-agent.js +96 -73
  28. package/dist/orchestrator/generator-agent.js.map +1 -1
  29. package/dist/orchestrator/model-resolver.d.ts +9 -0
  30. package/dist/orchestrator/model-resolver.d.ts.map +1 -0
  31. package/dist/orchestrator/model-resolver.js +21 -0
  32. package/dist/orchestrator/model-resolver.js.map +1 -0
  33. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  34. package/dist/orchestrator/pipeline.js +21 -4
  35. package/dist/orchestrator/pipeline.js.map +1 -1
  36. package/dist/orchestrator/planner-agent.d.ts +3 -2
  37. package/dist/orchestrator/planner-agent.d.ts.map +1 -1
  38. package/dist/orchestrator/planner-agent.js +39 -75
  39. package/dist/orchestrator/planner-agent.js.map +1 -1
  40. package/dist/orchestrator/tools/handlers.d.ts +9 -0
  41. package/dist/orchestrator/tools/handlers.d.ts.map +1 -0
  42. package/dist/orchestrator/tools/handlers.js +279 -0
  43. package/dist/orchestrator/tools/handlers.js.map +1 -0
  44. package/dist/orchestrator/tools/index.d.ts +21 -0
  45. package/dist/orchestrator/tools/index.d.ts.map +1 -0
  46. package/dist/orchestrator/tools/index.js +33 -0
  47. package/dist/orchestrator/tools/index.js.map +1 -0
  48. package/dist/orchestrator/tools/schemas.d.ts +16 -0
  49. package/dist/orchestrator/tools/schemas.d.ts.map +1 -0
  50. package/dist/orchestrator/tools/schemas.js +138 -0
  51. package/dist/orchestrator/tools/schemas.js.map +1 -0
  52. package/package.json +1 -1
@@ -3,58 +3,19 @@ import { serializeHandoff } from "./context-handoff.js";
3
3
  import { createDefaultRegistry, runEvaluation, } from "../evaluators/registry.js";
4
4
  import { getChangedFiles } from "../utils/git.js";
5
5
  import { logger } from "../utils/logger.js";
6
- // ── Model mapping ──────────────────────────────────────────────────
7
- function resolveModel(choice) {
8
- switch (choice) {
9
- case "opus":
10
- return "claude-sonnet-4-20250514";
11
- case "sonnet":
12
- return "claude-sonnet-4-20250514";
13
- case "haiku":
14
- return "claude-haiku-4-20250414";
15
- default:
16
- return "claude-sonnet-4-20250514";
17
- }
18
- }
19
- // ── Agent Evaluation System Prompt ─────────────────────────────────
20
- const EVALUATOR_SYSTEM_PROMPT = `You are the Bober Evaluator agent. Your job is to qualitatively assess whether a sprint's implementation meets its contract criteria.
21
-
22
- You will receive:
23
- - The sprint contract with success criteria
24
- - The context handoff with implementation notes
25
- - Results from automated checks (typecheck, lint, tests, etc.)
26
-
27
- For each success criterion that cannot be automatically verified, assess whether it has been met based on the implementation description and changed files.
28
-
29
- Output format — respond with a JSON object:
30
- {
31
- "evaluator": "Agent Evaluation",
32
- "passed": true/false,
33
- "score": 0-100,
34
- "details": [
35
- {
36
- "criterion": "criterion id or description",
37
- "passed": true/false,
38
- "message": "explanation",
39
- "severity": "error" | "warning" | "info"
40
- }
41
- ],
42
- "summary": "Overall assessment",
43
- "feedback": "Actionable feedback for the generator if anything needs fixing",
44
- "timestamp": "<ISO datetime>"
45
- }
46
-
47
- Guidelines:
48
- - Be thorough but fair. If the implementation reasonably meets a criterion, mark it as passed.
49
- - If automated checks already cover a criterion, you can defer to their results.
50
- - Focus on criteria that require human-like judgment: code quality, architectural decisions, completeness.
51
- - Provide specific, actionable feedback when something fails.
52
-
53
- Output ONLY the JSON object. No markdown fences, no explanation.`;
6
+ import { resolveModel } from "./model-resolver.js";
7
+ import { loadAgentDefinition } from "./agent-loader.js";
8
+ import { buildToolSet } from "./tools/index.js";
9
+ import { runAgenticLoop } from "./agentic-loop.js";
10
+ // ── Constants ──────────────────────────────────────────────────────
11
+ const EVALUATOR_MAX_TURNS = 25;
54
12
  // ── Main ───────────────────────────────────────────────────────────
55
13
  /**
56
14
  * Run the evaluator agent, combining programmatic evaluation (plugins)
57
- * with agent-based qualitative evaluation.
15
+ * with agent-based qualitative evaluation using tools.
16
+ *
17
+ * The evaluator agent can read files, run bash commands (tests, dev server,
18
+ * screenshots), and search the codebase — but CANNOT write or edit files.
58
19
  *
59
20
  * @param handoff Context handoff for the current sprint.
60
21
  * @param projectRoot Absolute path to the project.
@@ -73,9 +34,10 @@ export async function runEvaluatorAgent(handoff, projectRoot, config) {
73
34
  const registry = await createDefaultRegistry(config);
74
35
  let changedFiles;
75
36
  try {
76
- changedFiles = handoff.changedFiles.length > 0
77
- ? handoff.changedFiles
78
- : await getChangedFiles(projectRoot);
37
+ changedFiles =
38
+ handoff.changedFiles.length > 0
39
+ ? handoff.changedFiles
40
+ : await getChangedFiles(projectRoot);
79
41
  }
80
42
  catch {
81
43
  changedFiles = handoff.changedFiles;
@@ -85,10 +47,10 @@ export async function runEvaluatorAgent(handoff, projectRoot, config) {
85
47
  const icon = result.passed ? "PASS" : "FAIL";
86
48
  logger.debug(` [${icon}] ${result.evaluator}: ${result.summary}`);
87
49
  }
88
- // 2. Agent evaluation — qualitative assessment via Claude
50
+ // 2. Agent evaluation — qualitative assessment via agentic loop with tools
89
51
  logger.info("Running agent evaluation...");
90
- const agentResult = await runAgentEvaluation(handoff, programmaticEval.results, config);
91
- // 3. Combine results: merge the agent result into the programmatic evaluation
52
+ const agentResult = await runAgentEvaluation(handoff, programmaticEval.results, projectRoot, config);
53
+ // 3. Combine results
92
54
  const allResults = [...programmaticEval.results, agentResult];
93
55
  const scoredResults = allResults.filter((r) => r.score !== undefined);
94
56
  const avgScore = scoredResults.length > 0
@@ -111,45 +73,105 @@ export async function runEvaluatorAgent(handoff, projectRoot, config) {
111
73
  logger.sprint(sprintId, `Evaluation ${statusLabel}`);
112
74
  return evaluation;
113
75
  }
76
+ // ── Agent evaluation with tools ────────────────────────────────────
114
77
  /**
115
- * Run the agent-based qualitative evaluation.
78
+ * Run the agent-based qualitative evaluation using a multi-turn agentic
79
+ * loop with bash, read_file, glob, and grep tools.
80
+ *
81
+ * The evaluator can run commands, take screenshots, inspect code, start
82
+ * dev servers, and curl endpoints — but CANNOT write or edit files.
116
83
  */
117
- async function runAgentEvaluation(handoff, programmaticResults, config) {
118
- const model = resolveModel(config.evaluator.model);
119
- const client = new Anthropic();
84
+ async function runAgentEvaluation(handoff, programmaticResults, projectRoot, config) {
120
85
  const timestamp = new Date().toISOString();
121
- const handoffJson = serializeHandoff(handoff);
122
- const programmaticSummary = programmaticResults
123
- .map((r) => `[${r.passed ? "PASS" : "FAIL"}] ${r.evaluator}: ${r.summary}`)
124
- .join("\n");
125
- const userMessage = `# Context Handoff
86
+ try {
87
+ // Load agent definition (system prompt from .md file)
88
+ const agentDef = await loadAgentDefinition("bober-evaluator", projectRoot);
89
+ const model = resolveModel(config.evaluator.model);
90
+ // Build tool set (evaluator: bash, read_file, glob, grep — NO write/edit)
91
+ const toolSet = buildToolSet("evaluator", projectRoot);
92
+ const client = new Anthropic();
93
+ const handoffJson = serializeHandoff(handoff);
94
+ // Format programmatic results for context
95
+ const programmaticSummary = programmaticResults
96
+ .map((r) => {
97
+ const lines = [`[${r.passed ? "PASS" : "FAIL"}] ${r.evaluator}: ${r.summary}`];
98
+ if (!r.passed && r.feedback) {
99
+ lines.push(` Feedback: ${r.feedback}`);
100
+ }
101
+ for (const detail of r.details) {
102
+ if (!detail.passed) {
103
+ const loc = detail.file
104
+ ? ` at ${detail.file}${detail.line !== undefined ? `:${detail.line}` : ""}`
105
+ : "";
106
+ lines.push(` [${detail.severity.toUpperCase()}] ${detail.message}${loc}`);
107
+ }
108
+ }
109
+ return lines.join("\n");
110
+ })
111
+ .join("\n\n");
112
+ const contract = handoff.currentContract;
113
+ const criteriaList = contract?.successCriteria
114
+ ?.map((c, i) => `${i + 1}. [${c.id}] ${c.description} (verification: ${c.verificationMethod})`)
115
+ .join("\n") ?? "No criteria found.";
116
+ const userMessage = `# Context Handoff
126
117
  ${handoffJson}
127
118
 
128
- # Automated Check Results
119
+ # Project Root
120
+ ${projectRoot}
121
+
122
+ # Automated Check Results (already completed)
129
123
  ${programmaticSummary}
130
124
 
131
- Evaluate whether the sprint contract criteria have been met. Focus on criteria that automated checks cannot verify.
125
+ # Success Criteria to Verify
126
+ ${criteriaList}
132
127
 
133
- Output ONLY a JSON object matching the EvalResult schema. No markdown fences.`;
134
- try {
135
- const response = await client.messages.create({
128
+ # Your Task
129
+ Evaluate whether the sprint contract criteria have been met. Use your tools to:
130
+ 1. Read the relevant source files to verify implementation
131
+ 2. Run the dev server and test the application if applicable
132
+ 3. Take Playwright screenshots if applicable: \`npx playwright screenshot http://localhost:3000 /tmp/bober-eval.png --full-page\`
133
+ 4. Run any additional verification commands
134
+ 5. Check for regressions
135
+
136
+ Be skeptical. Verify independently. Do not trust the generator's self-report alone.
137
+
138
+ Your final response must contain ONLY a JSON object matching this schema (no markdown fences):
139
+ {
140
+ "evaluator": "Agent Evaluation",
141
+ "passed": true/false,
142
+ "score": 0-100,
143
+ "details": [
144
+ {
145
+ "criterion": "criterion id or description",
146
+ "passed": true/false,
147
+ "message": "explanation with evidence",
148
+ "severity": "error" | "warning" | "info",
149
+ "file": "file path if applicable",
150
+ "line": 123
151
+ }
152
+ ],
153
+ "summary": "Overall assessment",
154
+ "feedback": "Actionable feedback for the generator if anything needs fixing",
155
+ "timestamp": "${timestamp}"
156
+ }`;
157
+ logger.info(`Calling evaluator model (${config.evaluator.model} → ${model})...`);
158
+ const result = await runAgenticLoop({
159
+ client,
136
160
  model,
137
- max_tokens: 4096,
138
- system: EVALUATOR_SYSTEM_PROMPT,
139
- messages: [
140
- {
141
- role: "user",
142
- content: userMessage,
143
- },
144
- ],
161
+ systemPrompt: agentDef.systemPrompt,
162
+ userMessage,
163
+ tools: toolSet.schemas,
164
+ toolHandlers: toolSet.handlers,
165
+ maxTurns: EVALUATOR_MAX_TURNS,
166
+ maxTokens: 16384,
167
+ onToolUse: (name, input) => {
168
+ const inp = input;
169
+ const inputStr = JSON.stringify(inp).slice(0, 120);
170
+ logger.debug(` [evaluator] ${name}(${inputStr})`);
171
+ },
145
172
  });
146
- let responseText = "";
147
- for (const block of response.content) {
148
- if (block.type === "text") {
149
- responseText += block.text;
150
- }
151
- }
152
- return parseEvalResult(responseText, timestamp);
173
+ logger.debug(`Evaluator completed in ${result.turnsUsed} turns (${result.toolsCalled.length} tool calls)`);
174
+ return parseEvalResult(result.finalText, timestamp);
153
175
  }
154
176
  catch (err) {
155
177
  logger.warn(`Agent evaluation failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -164,6 +186,7 @@ Output ONLY a JSON object matching the EvalResult schema. No markdown fences.`;
164
186
  };
165
187
  }
166
188
  }
189
+ // ── JSON parser ────────────────────────────────────────────────────
167
190
  /**
168
191
  * Parse the evaluator agent's response into an EvalResult.
169
192
  */
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,24 @@ export interface GeneratorResult {
5
5
  notes: string;
6
6
  filesChanged: string[];
7
7
  commitHash?: string;
8
+ /** Number of agentic loop turns used. */
9
+ turnsUsed?: number;
10
+ /** Tools called during generation. */
11
+ toolsCalled?: string[];
12
+ /** Token usage. */
13
+ usage?: {
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ };
8
17
  }
9
18
  /**
10
19
  * Run the generator agent to implement changes for a sprint.
11
20
  *
12
- * Each invocation is a FRESH call (context reset). The handoff
13
- * document carries all necessary context from previous phases.
21
+ * Uses a multi-turn agentic loop with full tool access (bash, read/write/edit
22
+ * files, glob, grep). The agent actually reads the codebase, writes code,
23
+ * runs tests, and commits — all via tools.
24
+ *
25
+ * The system prompt is loaded from `agents/bober-generator.md`.
14
26
  */
15
27
  export declare function runGenerator(handoff: ContextHandoff, projectRoot: string, config: BoberConfig): Promise<GeneratorResult>;
16
28
  //# sourceMappingURL=generator-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmDD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CA8C1B"}
1
+ {"version":3,"file":"generator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAU3D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB;IACnB,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAID;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CAyE1B"}
@@ -1,61 +1,30 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
2
  import { serializeHandoff } from "./context-handoff.js";
3
3
  import { logger } from "../utils/logger.js";
4
- // ── Model mapping ──────────────────────────────────────────────────
5
- function resolveModel(choice) {
6
- switch (choice) {
7
- case "opus":
8
- return "claude-sonnet-4-20250514";
9
- case "sonnet":
10
- return "claude-sonnet-4-20250514";
11
- case "haiku":
12
- return "claude-haiku-4-20250414";
13
- default:
14
- return "claude-sonnet-4-20250514";
15
- }
16
- }
17
- // ── System prompt ──────────────────────────────────────────────────
18
- const GENERATOR_SYSTEM_PROMPT = `You are the Bober Generator agent. Your job is to implement code changes according to a sprint contract.
19
-
20
- You will receive a context handoff document containing:
21
- - The overall plan specification
22
- - The current sprint contract with success criteria
23
- - History of completed sprints
24
- - Any feedback from prior evaluation rounds
25
-
26
- Your responsibilities:
27
- 1. Implement the changes described in the sprint contract.
28
- 2. Follow the success criteria exactly — each criterion must be met.
29
- 3. Work incrementally: make small, testable changes.
30
- 4. Self-verify before reporting completion.
31
- 5. If you received evaluation feedback, address every issue mentioned.
32
-
33
- Output format — respond with a JSON object:
34
- {
35
- "success": true/false,
36
- "notes": "Description of what was implemented and any issues encountered",
37
- "filesChanged": ["list", "of", "changed", "file", "paths"]
38
- }
39
-
40
- Guidelines:
41
- - Follow existing code style and conventions in the project.
42
- - Do not break existing functionality.
43
- - If a task cannot be completed, set success to false and explain why in notes.
44
- - List ALL files that were created, modified, or deleted.
45
-
46
- Output ONLY the JSON object. No markdown fences, no explanation.`;
4
+ import { resolveModel } from "./model-resolver.js";
5
+ import { loadAgentDefinition } from "./agent-loader.js";
6
+ import { buildToolSet } from "./tools/index.js";
7
+ import { runAgenticLoop } from "./agentic-loop.js";
47
8
  // ── Main ───────────────────────────────────────────────────────────
48
9
  /**
49
10
  * Run the generator agent to implement changes for a sprint.
50
11
  *
51
- * Each invocation is a FRESH call (context reset). The handoff
52
- * document carries all necessary context from previous phases.
12
+ * Uses a multi-turn agentic loop with full tool access (bash, read/write/edit
13
+ * files, glob, grep). The agent actually reads the codebase, writes code,
14
+ * runs tests, and commits — all via tools.
15
+ *
16
+ * The system prompt is loaded from `agents/bober-generator.md`.
53
17
  */
54
18
  export async function runGenerator(handoff, projectRoot, config) {
55
19
  const contractId = handoff.currentContract?.id ?? "unknown";
56
20
  const feature = handoff.currentContract?.feature ?? "unknown";
57
21
  logger.sprint(contractId, `Generating: ${feature}`);
22
+ // Load agent definition (system prompt from .md file)
23
+ const agentDef = await loadAgentDefinition("bober-generator", projectRoot);
58
24
  const model = resolveModel(config.generator.model);
25
+ const maxTurns = config.generator.maxTurnsPerSprint;
26
+ // Build tool set (generator gets full access)
27
+ const toolSet = buildToolSet("generator", projectRoot);
59
28
  const client = new Anthropic();
60
29
  const handoffJson = serializeHandoff(handoff);
61
30
  const userMessage = `# Context Handoff
@@ -65,34 +34,55 @@ ${handoffJson}
65
34
  ${projectRoot}
66
35
 
67
36
  Implement the changes described in the sprint contract. Follow every success criterion.
68
- ${handoff.issues.length > 0 ? `\n# Previous Issues to Fix\n${handoff.issues.join("\n")}` : ""}
37
+ Use your tools to read the codebase, write code, run tests, and verify your work.
38
+ ${handoff.issues.length > 0 ? `\n# Previous Issues to Fix\n${handoff.issues.join("\n\n")}` : ""}
69
39
 
70
- Output ONLY a JSON object with { success, notes, filesChanged }. No markdown fences.`;
71
- logger.debug(`Calling generator model (${config.generator.model})...`);
72
- const response = await client.messages.create({
40
+ When you are done, your final response must contain ONLY a JSON object with this structure (no markdown fences):
41
+ {
42
+ "contractId": "${contractId}",
43
+ "status": "complete | partial | blocked",
44
+ "criteriaResults": [
45
+ {"criterionId": "sc-X-Y", "met": true/false, "evidence": "<how you verified>"}
46
+ ],
47
+ "filesChanged": [
48
+ {"path": "<file path>", "action": "created | modified | deleted", "description": "<what changed>"}
49
+ ],
50
+ "testsAdded": ["<test file paths>"],
51
+ "commits": ["<hash> - <message>"],
52
+ "blockers": ["<any unresolved issues>"],
53
+ "notes": "<additional context for the evaluator>"
54
+ }`;
55
+ logger.info(`Calling generator model (${config.generator.model} → ${model})...`);
56
+ // Track which files were written/edited via tools
57
+ const filesWritten = new Set();
58
+ const result = await runAgenticLoop({
59
+ client,
73
60
  model,
74
- max_tokens: 8192,
75
- system: GENERATOR_SYSTEM_PROMPT,
76
- messages: [
77
- {
78
- role: "user",
79
- content: userMessage,
80
- },
81
- ],
61
+ systemPrompt: agentDef.systemPrompt,
62
+ userMessage,
63
+ tools: toolSet.schemas,
64
+ toolHandlers: toolSet.handlers,
65
+ maxTurns,
66
+ maxTokens: 16384,
67
+ onToolUse: (name, input) => {
68
+ const inp = input;
69
+ if (name === "write_file" || name === "edit_file") {
70
+ const path = inp.file_path;
71
+ if (path)
72
+ filesWritten.add(path);
73
+ }
74
+ const inputStr = JSON.stringify(inp).slice(0, 120);
75
+ logger.debug(` [generator] ${name}(${inputStr})`);
76
+ },
82
77
  });
83
- let responseText = "";
84
- for (const block of response.content) {
85
- if (block.type === "text") {
86
- responseText += block.text;
87
- }
88
- }
89
- logger.debug("Generator response received, parsing...");
90
- return parseGeneratorResult(responseText);
78
+ logger.debug(`Generator completed in ${result.turnsUsed} turns (${result.toolsCalled.length} tool calls)`);
79
+ return parseGeneratorResult(result.finalText, filesWritten, result);
91
80
  }
81
+ // ── JSON parser ────────────────────────────────────────────────────
92
82
  /**
93
83
  * Parse the generator response text into a GeneratorResult.
94
84
  */
95
- function parseGeneratorResult(text) {
85
+ function parseGeneratorResult(text, filesWritten, loopResult) {
96
86
  let parsed;
97
87
  // Try direct parse
98
88
  try {
@@ -126,22 +116,55 @@ function parseGeneratorResult(text) {
126
116
  if (parsed &&
127
117
  typeof parsed === "object" &&
128
118
  parsed !== null &&
129
- "success" in parsed) {
119
+ ("success" in parsed || "status" in parsed)) {
130
120
  const obj = parsed;
121
+ // Support both old format (success: bool) and new format (status: string)
122
+ const success = "success" in obj
123
+ ? Boolean(obj.success)
124
+ : obj.status === "complete";
125
+ // Merge file paths from tool tracking and from the report
126
+ const reportFiles = Array.isArray(obj.filesChanged)
127
+ ? obj.filesChanged
128
+ .map((f) => {
129
+ if (typeof f === "string")
130
+ return f;
131
+ if (typeof f === "object" && f !== null && "path" in f)
132
+ return String(f.path);
133
+ return null;
134
+ })
135
+ .filter((f) => f !== null)
136
+ : [];
137
+ const allFiles = [...new Set([...filesWritten, ...reportFiles])];
131
138
  return {
132
- success: Boolean(obj.success),
133
- notes: typeof obj.notes === "string" ? obj.notes : "No notes provided.",
134
- filesChanged: Array.isArray(obj.filesChanged)
135
- ? obj.filesChanged.filter((f) => typeof f === "string")
136
- : [],
139
+ success,
140
+ notes: typeof obj.notes === "string"
141
+ ? obj.notes
142
+ : "No notes provided.",
143
+ filesChanged: allFiles,
137
144
  commitHash: typeof obj.commitHash === "string" ? obj.commitHash : undefined,
145
+ turnsUsed: loopResult.turnsUsed,
146
+ toolsCalled: loopResult.toolsCalled,
147
+ usage: loopResult.usage,
148
+ };
149
+ }
150
+ // If parsing failed entirely, check if we at least wrote files
151
+ if (filesWritten.size > 0) {
152
+ return {
153
+ success: true,
154
+ notes: `Generator wrote ${filesWritten.size} files but did not produce a structured report. Files: ${[...filesWritten].join(", ")}`,
155
+ filesChanged: [...filesWritten],
156
+ turnsUsed: loopResult.turnsUsed,
157
+ toolsCalled: loopResult.toolsCalled,
158
+ usage: loopResult.usage,
138
159
  };
139
160
  }
140
- // If parsing failed entirely, return a failure result
141
161
  return {
142
162
  success: false,
143
163
  notes: `Failed to parse generator response. Raw output:\n${text.slice(0, 500)}`,
144
164
  filesChanged: [],
165
+ turnsUsed: loopResult.turnsUsed,
166
+ toolsCalled: loopResult.toolsCalled,
167
+ usage: loopResult.usage,
145
168
  };
146
169
  }
147
170
  //# sourceMappingURL=generator-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Centralized model name resolution.
3
+ *
4
+ * Maps user-friendly model names (from bober.config.json) to
5
+ * actual Anthropic model IDs. Also accepts exact model IDs
6
+ * as pass-through.
7
+ */
8
+ export declare function resolveModel(choice: string): string;
9
+ //# sourceMappingURL=model-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/orchestrator/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYnD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Centralized model name resolution.
3
+ *
4
+ * Maps user-friendly model names (from bober.config.json) to
5
+ * actual Anthropic model IDs. Also accepts exact model IDs
6
+ * as pass-through.
7
+ */
8
+ export function resolveModel(choice) {
9
+ switch (choice) {
10
+ case "opus":
11
+ return "claude-opus-4-6";
12
+ case "sonnet":
13
+ return "claude-sonnet-4-6";
14
+ case "haiku":
15
+ return "claude-haiku-4-5-20251001";
16
+ default:
17
+ // Pass through exact model IDs (e.g. "claude-sonnet-4-6")
18
+ return choice;
19
+ }
20
+ }
21
+ //# sourceMappingURL=model-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/orchestrator/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,2BAA2B,CAAC;QACrC;YACE,0DAA0D;YAC1D,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AA0BtE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+PD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,CAuHzB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AA0BtE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsRD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,CAuHzB"}