agent-bober 0.6.1 → 0.7.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.
- package/README.md +159 -28
- package/dist/cli/commands/eval.d.ts +2 -0
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +10 -0
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +181 -61
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +2 -0
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +10 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/run.d.ts +2 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +10 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts +2 -0
- package/dist/cli/commands/sprint.d.ts.map +1 -1
- package/dist/cli/commands/sprint.js +10 -0
- package/dist/cli/commands/sprint.js.map +1 -1
- package/dist/cli/index.js +22 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/schema.d.ts +160 -43
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +11 -7
- package/dist/config/schema.js.map +1 -1
- package/dist/contracts/sprint-contract.d.ts +8 -8
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/run-manager.d.ts +47 -0
- package/dist/mcp/run-manager.d.ts.map +1 -0
- package/dist/mcp/run-manager.js +79 -0
- package/dist/mcp/run-manager.js.map +1 -0
- package/dist/mcp/server.d.ts +15 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +107 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/config.d.ts +2 -0
- package/dist/mcp/tools/config.d.ts.map +1 -0
- package/dist/mcp/tools/config.js +153 -0
- package/dist/mcp/tools/config.js.map +1 -0
- package/dist/mcp/tools/contracts.d.ts +2 -0
- package/dist/mcp/tools/contracts.d.ts.map +1 -0
- package/dist/mcp/tools/contracts.js +61 -0
- package/dist/mcp/tools/contracts.js.map +1 -0
- package/dist/mcp/tools/eval.d.ts +2 -0
- package/dist/mcp/tools/eval.d.ts.map +1 -0
- package/dist/mcp/tools/eval.js +157 -0
- package/dist/mcp/tools/eval.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +20 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +47 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/init.d.ts +2 -0
- package/dist/mcp/tools/init.d.ts.map +1 -0
- package/dist/mcp/tools/init.js +121 -0
- package/dist/mcp/tools/init.js.map +1 -0
- package/dist/mcp/tools/plan.d.ts +2 -0
- package/dist/mcp/tools/plan.d.ts.map +1 -0
- package/dist/mcp/tools/plan.js +97 -0
- package/dist/mcp/tools/plan.js.map +1 -0
- package/dist/mcp/tools/principles.d.ts +2 -0
- package/dist/mcp/tools/principles.d.ts.map +1 -0
- package/dist/mcp/tools/principles.js +66 -0
- package/dist/mcp/tools/principles.js.map +1 -0
- package/dist/mcp/tools/registry.d.ts +45 -0
- package/dist/mcp/tools/registry.d.ts.map +1 -0
- package/dist/mcp/tools/registry.js +23 -0
- package/dist/mcp/tools/registry.js.map +1 -0
- package/dist/mcp/tools/run.d.ts +2 -0
- package/dist/mcp/tools/run.d.ts.map +1 -0
- package/dist/mcp/tools/run.js +66 -0
- package/dist/mcp/tools/run.js.map +1 -0
- package/dist/mcp/tools/spec.d.ts +2 -0
- package/dist/mcp/tools/spec.d.ts.map +1 -0
- package/dist/mcp/tools/spec.js +32 -0
- package/dist/mcp/tools/spec.js.map +1 -0
- package/dist/mcp/tools/sprint.d.ts +2 -0
- package/dist/mcp/tools/sprint.d.ts.map +1 -0
- package/dist/mcp/tools/sprint.js +243 -0
- package/dist/mcp/tools/sprint.js.map +1 -0
- package/dist/mcp/tools/status.d.ts +2 -0
- package/dist/mcp/tools/status.d.ts.map +1 -0
- package/dist/mcp/tools/status.js +76 -0
- package/dist/mcp/tools/status.js.map +1 -0
- package/dist/orchestrator/agentic-loop.d.ts +7 -6
- package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
- package/dist/orchestrator/agentic-loop.js +33 -40
- package/dist/orchestrator/agentic-loop.js.map +1 -1
- package/dist/orchestrator/context-handoff.d.ts +20 -20
- package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
- package/dist/orchestrator/evaluator-agent.js +2 -2
- package/dist/orchestrator/evaluator-agent.js.map +1 -1
- package/dist/orchestrator/generator-agent.d.ts.map +1 -1
- package/dist/orchestrator/generator-agent.js +2 -2
- package/dist/orchestrator/generator-agent.js.map +1 -1
- package/dist/orchestrator/model-resolver.d.ts +35 -4
- package/dist/orchestrator/model-resolver.d.ts.map +1 -1
- package/dist/orchestrator/model-resolver.js +68 -15
- package/dist/orchestrator/model-resolver.js.map +1 -1
- package/dist/orchestrator/planner-agent.d.ts.map +1 -1
- package/dist/orchestrator/planner-agent.js +2 -2
- package/dist/orchestrator/planner-agent.js.map +1 -1
- package/dist/orchestrator/tools/index.d.ts +3 -4
- package/dist/orchestrator/tools/index.d.ts.map +1 -1
- package/dist/orchestrator/tools/index.js.map +1 -1
- package/dist/orchestrator/tools/schemas.d.ts +11 -12
- package/dist/orchestrator/tools/schemas.d.ts.map +1 -1
- package/dist/orchestrator/tools/schemas.js +3 -2
- package/dist/orchestrator/tools/schemas.js.map +1 -1
- package/dist/providers/anthropic.d.ts +15 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +133 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/factory.d.ts +37 -0
- package/dist/providers/factory.d.ts.map +1 -0
- package/dist/providers/factory.js +119 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/google.d.ts +39 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +195 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai-compat.d.ts +39 -0
- package/dist/providers/openai-compat.d.ts.map +1 -0
- package/dist/providers/openai-compat.js +42 -0
- package/dist/providers/openai-compat.js.map +1 -0
- package/dist/providers/openai.d.ts +41 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +205 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +144 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +8 -0
- package/dist/providers/types.js.map +1 -0
- package/package.json +26 -4
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import { logger } from "../utils/logger.js";
|
|
2
|
-
// ── Helpers ─────────────────────────────────────────────────────────
|
|
3
|
-
function extractText(content) {
|
|
4
|
-
return content
|
|
5
|
-
.filter((b) => b.type === "text")
|
|
6
|
-
.map((b) => b.text)
|
|
7
|
-
.join("");
|
|
8
|
-
}
|
|
9
2
|
// ── Main loop ──────────────────────────────────────────────────────
|
|
10
3
|
/**
|
|
11
4
|
* Run a multi-turn agentic conversation loop.
|
|
@@ -15,6 +8,9 @@ function extractText(content) {
|
|
|
15
8
|
* This continues until the model stops requesting tools or maxTurns
|
|
16
9
|
* is exceeded.
|
|
17
10
|
*
|
|
11
|
+
* Uses provider-agnostic types throughout. The LLMClient implementation
|
|
12
|
+
* handles all conversion to/from provider-specific formats.
|
|
13
|
+
*
|
|
18
14
|
* @returns The final text response and metadata about the conversation.
|
|
19
15
|
*/
|
|
20
16
|
export async function runAgenticLoop(params) {
|
|
@@ -30,12 +26,12 @@ export async function runAgenticLoop(params) {
|
|
|
30
26
|
logger.debug(`Agentic loop turn ${turn}/${maxTurns}...`);
|
|
31
27
|
let response;
|
|
32
28
|
try {
|
|
33
|
-
response = await client.
|
|
29
|
+
response = await client.chat({
|
|
34
30
|
model,
|
|
35
|
-
max_tokens: maxTokens,
|
|
36
31
|
system: systemPrompt,
|
|
37
|
-
tools: tools.length > 0 ? tools : undefined,
|
|
38
32
|
messages,
|
|
33
|
+
tools: tools.length > 0 ? tools : undefined,
|
|
34
|
+
maxTokens,
|
|
39
35
|
});
|
|
40
36
|
}
|
|
41
37
|
catch (err) {
|
|
@@ -54,14 +50,12 @@ export async function runAgenticLoop(params) {
|
|
|
54
50
|
};
|
|
55
51
|
}
|
|
56
52
|
// Accumulate usage
|
|
57
|
-
totalInputTokens += response.usage
|
|
58
|
-
totalOutputTokens += response.usage
|
|
59
|
-
|
|
60
|
-
const turnText = extractText(response.content);
|
|
61
|
-
const turnStopReason = response.stop_reason ?? "unknown";
|
|
53
|
+
totalInputTokens += response.usage.inputTokens;
|
|
54
|
+
totalOutputTokens += response.usage.outputTokens;
|
|
55
|
+
const turnStopReason = response.stopReason;
|
|
62
56
|
// If the model is done (no more tool use), return
|
|
63
|
-
if (response.
|
|
64
|
-
finalText =
|
|
57
|
+
if (response.stopReason !== "tool_use") {
|
|
58
|
+
finalText = response.text;
|
|
65
59
|
return {
|
|
66
60
|
finalText,
|
|
67
61
|
turnsUsed: turn,
|
|
@@ -73,20 +67,20 @@ export async function runAgenticLoop(params) {
|
|
|
73
67
|
stopReason: turnStopReason,
|
|
74
68
|
};
|
|
75
69
|
}
|
|
76
|
-
// Model wants to use tools —
|
|
77
|
-
//
|
|
78
|
-
|
|
70
|
+
// Model wants to use tools — append the assistant's full response
|
|
71
|
+
// (text + tool calls) as an AssistantMessage.
|
|
72
|
+
const assistantMessage = {
|
|
79
73
|
role: "assistant",
|
|
80
|
-
content: response.
|
|
81
|
-
|
|
74
|
+
content: response.text,
|
|
75
|
+
toolCalls: response.toolCalls,
|
|
76
|
+
};
|
|
77
|
+
messages.push(assistantMessage);
|
|
82
78
|
// Execute each tool and collect results
|
|
83
79
|
const toolResults = [];
|
|
84
80
|
const turnTools = [];
|
|
85
|
-
for (const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const toolName = block.name;
|
|
89
|
-
const toolInput = block.input;
|
|
81
|
+
for (const toolCall of response.toolCalls) {
|
|
82
|
+
const toolName = toolCall.name;
|
|
83
|
+
const toolInput = toolCall.input;
|
|
90
84
|
turnTools.push(toolName);
|
|
91
85
|
allToolsCalled.push(toolName);
|
|
92
86
|
onToolUse?.(toolName, toolInput);
|
|
@@ -94,38 +88,37 @@ export async function runAgenticLoop(params) {
|
|
|
94
88
|
if (!handler) {
|
|
95
89
|
logger.warn(`Unknown tool requested: "${toolName}"`);
|
|
96
90
|
toolResults.push({
|
|
97
|
-
|
|
98
|
-
tool_use_id: block.id,
|
|
91
|
+
toolUseId: toolCall.id,
|
|
99
92
|
content: `Error: Unknown tool "${toolName}". Available tools: ${[...toolHandlers.keys()].join(", ")}`,
|
|
100
|
-
|
|
93
|
+
isError: true,
|
|
101
94
|
});
|
|
102
95
|
continue;
|
|
103
96
|
}
|
|
104
97
|
try {
|
|
105
98
|
const result = await handler(toolInput);
|
|
106
99
|
toolResults.push({
|
|
107
|
-
|
|
108
|
-
tool_use_id: block.id,
|
|
100
|
+
toolUseId: toolCall.id,
|
|
109
101
|
content: result.output,
|
|
110
|
-
|
|
102
|
+
isError: result.isError,
|
|
111
103
|
});
|
|
112
104
|
}
|
|
113
105
|
catch (err) {
|
|
114
106
|
const message = err instanceof Error ? err.message : String(err);
|
|
115
107
|
logger.warn(`Tool "${toolName}" threw: ${message}`);
|
|
116
108
|
toolResults.push({
|
|
117
|
-
|
|
118
|
-
tool_use_id: block.id,
|
|
109
|
+
toolUseId: toolCall.id,
|
|
119
110
|
content: `Error: Tool execution failed: ${message}`,
|
|
120
|
-
|
|
111
|
+
isError: true,
|
|
121
112
|
});
|
|
122
113
|
}
|
|
123
114
|
}
|
|
124
|
-
// Append tool results as a user
|
|
125
|
-
|
|
115
|
+
// Append tool results as a ToolResultMessage (user role).
|
|
116
|
+
// The adapter converts this to provider-specific format.
|
|
117
|
+
const toolResultMessage = {
|
|
126
118
|
role: "user",
|
|
127
|
-
|
|
128
|
-
}
|
|
119
|
+
toolResults,
|
|
120
|
+
};
|
|
121
|
+
messages.push(toolResultMessage);
|
|
129
122
|
onTurnComplete?.(turn, turnTools);
|
|
130
123
|
}
|
|
131
124
|
// Max turns exceeded — return what we have
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentic-loop.js","sourceRoot":"","sources":["../../src/orchestrator/agentic-loop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agentic-loop.js","sourceRoot":"","sources":["../../src/orchestrator/agentic-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -160,12 +160,12 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
160
160
|
action: z.ZodEnum<["create", "modify", "delete"]>;
|
|
161
161
|
description: z.ZodString;
|
|
162
162
|
}, "strip", z.ZodTypeAny, {
|
|
163
|
-
description: string;
|
|
164
163
|
path: string;
|
|
164
|
+
description: string;
|
|
165
165
|
action: "create" | "modify" | "delete";
|
|
166
166
|
}, {
|
|
167
|
-
description: string;
|
|
168
167
|
path: string;
|
|
168
|
+
description: string;
|
|
169
169
|
action: "create" | "modify" | "delete";
|
|
170
170
|
}>, "many">;
|
|
171
171
|
dependsOn: z.ZodArray<z.ZodString, "many">;
|
|
@@ -176,8 +176,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
176
176
|
startedAt: z.ZodOptional<z.ZodString>;
|
|
177
177
|
completedAt: z.ZodOptional<z.ZodString>;
|
|
178
178
|
}, "strip", z.ZodTypeAny, {
|
|
179
|
-
description: string;
|
|
180
179
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
180
|
+
description: string;
|
|
181
181
|
id: string;
|
|
182
182
|
feature: string;
|
|
183
183
|
successCriteria: {
|
|
@@ -188,8 +188,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
188
188
|
notes?: string | undefined;
|
|
189
189
|
}[];
|
|
190
190
|
expectedChanges: {
|
|
191
|
-
description: string;
|
|
192
191
|
path: string;
|
|
192
|
+
description: string;
|
|
193
193
|
action: "create" | "modify" | "delete";
|
|
194
194
|
}[];
|
|
195
195
|
dependsOn: string[];
|
|
@@ -199,8 +199,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
199
199
|
startedAt?: string | undefined;
|
|
200
200
|
completedAt?: string | undefined;
|
|
201
201
|
}, {
|
|
202
|
-
description: string;
|
|
203
202
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
203
|
+
description: string;
|
|
204
204
|
id: string;
|
|
205
205
|
feature: string;
|
|
206
206
|
successCriteria: {
|
|
@@ -211,8 +211,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
211
211
|
notes?: string | undefined;
|
|
212
212
|
}[];
|
|
213
213
|
expectedChanges: {
|
|
214
|
-
description: string;
|
|
215
214
|
path: string;
|
|
215
|
+
description: string;
|
|
216
216
|
action: "create" | "modify" | "delete";
|
|
217
217
|
}[];
|
|
218
218
|
dependsOn: string[];
|
|
@@ -250,12 +250,12 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
250
250
|
action: z.ZodEnum<["create", "modify", "delete"]>;
|
|
251
251
|
description: z.ZodString;
|
|
252
252
|
}, "strip", z.ZodTypeAny, {
|
|
253
|
-
description: string;
|
|
254
253
|
path: string;
|
|
254
|
+
description: string;
|
|
255
255
|
action: "create" | "modify" | "delete";
|
|
256
256
|
}, {
|
|
257
|
-
description: string;
|
|
258
257
|
path: string;
|
|
258
|
+
description: string;
|
|
259
259
|
action: "create" | "modify" | "delete";
|
|
260
260
|
}>, "many">;
|
|
261
261
|
dependsOn: z.ZodArray<z.ZodString, "many">;
|
|
@@ -266,8 +266,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
266
266
|
startedAt: z.ZodOptional<z.ZodString>;
|
|
267
267
|
completedAt: z.ZodOptional<z.ZodString>;
|
|
268
268
|
}, "strip", z.ZodTypeAny, {
|
|
269
|
-
description: string;
|
|
270
269
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
270
|
+
description: string;
|
|
271
271
|
id: string;
|
|
272
272
|
feature: string;
|
|
273
273
|
successCriteria: {
|
|
@@ -278,8 +278,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
278
278
|
notes?: string | undefined;
|
|
279
279
|
}[];
|
|
280
280
|
expectedChanges: {
|
|
281
|
-
description: string;
|
|
282
281
|
path: string;
|
|
282
|
+
description: string;
|
|
283
283
|
action: "create" | "modify" | "delete";
|
|
284
284
|
}[];
|
|
285
285
|
dependsOn: string[];
|
|
@@ -289,8 +289,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
289
289
|
startedAt?: string | undefined;
|
|
290
290
|
completedAt?: string | undefined;
|
|
291
291
|
}, {
|
|
292
|
-
description: string;
|
|
293
292
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
293
|
+
description: string;
|
|
294
294
|
id: string;
|
|
295
295
|
feature: string;
|
|
296
296
|
successCriteria: {
|
|
@@ -301,8 +301,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
301
301
|
notes?: string | undefined;
|
|
302
302
|
}[];
|
|
303
303
|
expectedChanges: {
|
|
304
|
-
description: string;
|
|
305
304
|
path: string;
|
|
305
|
+
description: string;
|
|
306
306
|
action: "create" | "modify" | "delete";
|
|
307
307
|
}[];
|
|
308
308
|
dependsOn: string[];
|
|
@@ -363,8 +363,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
363
363
|
updatedAt: string;
|
|
364
364
|
};
|
|
365
365
|
sprintHistory: {
|
|
366
|
-
description: string;
|
|
367
366
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
367
|
+
description: string;
|
|
368
368
|
id: string;
|
|
369
369
|
feature: string;
|
|
370
370
|
successCriteria: {
|
|
@@ -375,8 +375,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
375
375
|
notes?: string | undefined;
|
|
376
376
|
}[];
|
|
377
377
|
expectedChanges: {
|
|
378
|
-
description: string;
|
|
379
378
|
path: string;
|
|
379
|
+
description: string;
|
|
380
380
|
action: "create" | "modify" | "delete";
|
|
381
381
|
}[];
|
|
382
382
|
dependsOn: string[];
|
|
@@ -395,8 +395,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
395
395
|
madeBy: "planner" | "generator" | "evaluator" | "human";
|
|
396
396
|
}[];
|
|
397
397
|
currentContract?: {
|
|
398
|
-
description: string;
|
|
399
398
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
399
|
+
description: string;
|
|
400
400
|
id: string;
|
|
401
401
|
feature: string;
|
|
402
402
|
successCriteria: {
|
|
@@ -407,8 +407,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
407
407
|
notes?: string | undefined;
|
|
408
408
|
}[];
|
|
409
409
|
expectedChanges: {
|
|
410
|
-
description: string;
|
|
411
410
|
path: string;
|
|
411
|
+
description: string;
|
|
412
412
|
action: "create" | "modify" | "delete";
|
|
413
413
|
}[];
|
|
414
414
|
dependsOn: string[];
|
|
@@ -450,8 +450,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
450
450
|
updatedAt: string;
|
|
451
451
|
};
|
|
452
452
|
sprintHistory: {
|
|
453
|
-
description: string;
|
|
454
453
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
454
|
+
description: string;
|
|
455
455
|
id: string;
|
|
456
456
|
feature: string;
|
|
457
457
|
successCriteria: {
|
|
@@ -462,8 +462,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
462
462
|
notes?: string | undefined;
|
|
463
463
|
}[];
|
|
464
464
|
expectedChanges: {
|
|
465
|
-
description: string;
|
|
466
465
|
path: string;
|
|
466
|
+
description: string;
|
|
467
467
|
action: "create" | "modify" | "delete";
|
|
468
468
|
}[];
|
|
469
469
|
dependsOn: string[];
|
|
@@ -482,8 +482,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
482
482
|
madeBy: "planner" | "generator" | "evaluator" | "human";
|
|
483
483
|
}[];
|
|
484
484
|
currentContract?: {
|
|
485
|
-
description: string;
|
|
486
485
|
status: "passed" | "proposed" | "negotiating" | "agreed" | "in-progress" | "evaluating" | "failed" | "needs-rework";
|
|
486
|
+
description: string;
|
|
487
487
|
id: string;
|
|
488
488
|
feature: string;
|
|
489
489
|
successCriteria: {
|
|
@@ -494,8 +494,8 @@ export declare const ContextHandoffSchema: z.ZodObject<{
|
|
|
494
494
|
notes?: string | undefined;
|
|
495
495
|
}[];
|
|
496
496
|
expectedChanges: {
|
|
497
|
-
description: string;
|
|
498
497
|
path: string;
|
|
498
|
+
description: string;
|
|
499
499
|
action: "create" | "modify" | "delete";
|
|
500
500
|
}[];
|
|
501
501
|
dependsOn: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AASrE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAQrE;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA4E9B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
2
1
|
import { serializeHandoff } from "./context-handoff.js";
|
|
3
2
|
import { createDefaultRegistry, runEvaluation, } from "../evaluators/registry.js";
|
|
3
|
+
import { createClient } from "../providers/factory.js";
|
|
4
4
|
import { getChangedFiles } from "../utils/git.js";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
6
|
import { resolveModel } from "./model-resolver.js";
|
|
@@ -89,7 +89,7 @@ async function runAgentEvaluation(handoff, programmaticResults, projectRoot, con
|
|
|
89
89
|
const model = resolveModel(config.evaluator.model);
|
|
90
90
|
// Build tool set (evaluator: bash, read_file, glob, grep — NO write/edit)
|
|
91
91
|
const toolSet = buildToolSet("evaluator", projectRoot);
|
|
92
|
-
const client =
|
|
92
|
+
const client = createClient(config.evaluator.provider ?? null, config.evaluator.endpoint ?? null, config.evaluator.providerConfig, config.evaluator.model);
|
|
93
93
|
const handoffJson = serializeHandoff(handoff);
|
|
94
94
|
// Format programmatic results for context
|
|
95
95
|
const programmaticSummary = programmaticResults
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evaluator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/evaluator-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAW3D,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,CA8E1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
2
1
|
import { serializeHandoff } from "./context-handoff.js";
|
|
2
|
+
import { createClient } from "../providers/factory.js";
|
|
3
3
|
import { logger } from "../utils/logger.js";
|
|
4
4
|
import { resolveModel } from "./model-resolver.js";
|
|
5
5
|
import { loadAgentDefinition } from "./agent-loader.js";
|
|
@@ -25,7 +25,7 @@ export async function runGenerator(handoff, projectRoot, config) {
|
|
|
25
25
|
const maxTurns = config.generator.maxTurnsPerSprint;
|
|
26
26
|
// Build tool set (generator gets full access)
|
|
27
27
|
const toolSet = buildToolSet("generator", projectRoot);
|
|
28
|
-
const client =
|
|
28
|
+
const client = createClient(config.generator.provider ?? null, config.generator.endpoint ?? null, config.generator.providerConfig, config.generator.model);
|
|
29
29
|
const handoffJson = serializeHandoff(handoff);
|
|
30
30
|
const userMessage = `# Context Handoff
|
|
31
31
|
${handoffJson}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator-agent.js","sourceRoot":"","sources":["../../src/orchestrator/generator-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Centralized model name resolution.
|
|
2
|
+
* Centralized model name resolution for multi-provider support.
|
|
3
3
|
*
|
|
4
|
-
* Maps user-friendly model names (from bober.config.json) to
|
|
5
|
-
* actual
|
|
6
|
-
*
|
|
4
|
+
* Maps user-friendly model shorthand names (from bober.config.json) to
|
|
5
|
+
* actual provider + model ID pairs. Also handles explicit provider overrides
|
|
6
|
+
* and the ollama/ prefix convention.
|
|
7
|
+
*/
|
|
8
|
+
export interface ResolvedModel {
|
|
9
|
+
/** Provider name (e.g. "anthropic", "openai", "google", "openai-compat") */
|
|
10
|
+
provider: string;
|
|
11
|
+
/** Provider-native model ID (e.g. "claude-sonnet-4-6", "gpt-4.1") */
|
|
12
|
+
modelId: string;
|
|
13
|
+
/** Optional base URL override (set for ollama/ prefix models) */
|
|
14
|
+
endpoint?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a model string and optional explicit provider into a ResolvedModel.
|
|
18
|
+
*
|
|
19
|
+
* Resolution rules (in order):
|
|
20
|
+
* 1. If `explicitProvider` is set, return it with `model` as-is (no shorthand expansion).
|
|
21
|
+
* 2. If `model` starts with "ollama/", strip the prefix and resolve to openai-compat
|
|
22
|
+
* pointing at localhost:11434/v1.
|
|
23
|
+
* 3. If `model` is a known shorthand, expand to the mapped provider/modelId.
|
|
24
|
+
* 4. Otherwise, default provider to "anthropic" and pass model through as-is.
|
|
25
|
+
*
|
|
26
|
+
* @param model - Model string from config (shorthand or full ID).
|
|
27
|
+
* @param explicitProvider - Optional provider override from config.
|
|
28
|
+
* @returns Resolved provider, modelId, and optional endpoint.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveProviderModel(model: string, explicitProvider?: string): ResolvedModel;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a model shorthand or exact model ID to the Anthropic model string.
|
|
33
|
+
*
|
|
34
|
+
* Kept for backward compatibility. Internally delegates to resolveProviderModel.
|
|
35
|
+
* Returns only the modelId portion (suitable for direct Anthropic SDK calls).
|
|
36
|
+
*
|
|
37
|
+
* @deprecated Prefer resolveProviderModel for multi-provider workflows.
|
|
7
38
|
*/
|
|
8
39
|
export declare function resolveModel(choice: string): string;
|
|
9
40
|
//# sourceMappingURL=model-resolver.d.ts.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/orchestrator/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,MAAM,GACxB,aAAa,CAwBf;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -1,21 +1,74 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Centralized model name resolution.
|
|
2
|
+
* Centralized model name resolution for multi-provider support.
|
|
3
3
|
*
|
|
4
|
-
* Maps user-friendly model names (from bober.config.json) to
|
|
5
|
-
* actual
|
|
6
|
-
*
|
|
4
|
+
* Maps user-friendly model shorthand names (from bober.config.json) to
|
|
5
|
+
* actual provider + model ID pairs. Also handles explicit provider overrides
|
|
6
|
+
* and the ollama/ prefix convention.
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Shorthand -> { provider, modelId } mapping.
|
|
10
|
+
* Keys are the shorthand names users write in bober.config.json.
|
|
11
|
+
*/
|
|
12
|
+
const SHORTHAND_MAP = {
|
|
13
|
+
// Anthropic
|
|
14
|
+
opus: { provider: "anthropic", modelId: "claude-opus-4-6" },
|
|
15
|
+
sonnet: { provider: "anthropic", modelId: "claude-sonnet-4-6" },
|
|
16
|
+
haiku: { provider: "anthropic", modelId: "claude-haiku-4-5-20251001" },
|
|
17
|
+
// OpenAI
|
|
18
|
+
"gpt-4.1": { provider: "openai", modelId: "gpt-4.1" },
|
|
19
|
+
"gpt-4.1-mini": { provider: "openai", modelId: "gpt-4.1-mini" },
|
|
20
|
+
o3: { provider: "openai", modelId: "o3" },
|
|
21
|
+
"o4-mini": { provider: "openai", modelId: "o4-mini" },
|
|
22
|
+
// Google
|
|
23
|
+
"gemini-pro": { provider: "google", modelId: "gemini-2.5-pro" },
|
|
24
|
+
"gemini-flash": { provider: "google", modelId: "gemini-2.5-flash" },
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a model string and optional explicit provider into a ResolvedModel.
|
|
28
|
+
*
|
|
29
|
+
* Resolution rules (in order):
|
|
30
|
+
* 1. If `explicitProvider` is set, return it with `model` as-is (no shorthand expansion).
|
|
31
|
+
* 2. If `model` starts with "ollama/", strip the prefix and resolve to openai-compat
|
|
32
|
+
* pointing at localhost:11434/v1.
|
|
33
|
+
* 3. If `model` is a known shorthand, expand to the mapped provider/modelId.
|
|
34
|
+
* 4. Otherwise, default provider to "anthropic" and pass model through as-is.
|
|
35
|
+
*
|
|
36
|
+
* @param model - Model string from config (shorthand or full ID).
|
|
37
|
+
* @param explicitProvider - Optional provider override from config.
|
|
38
|
+
* @returns Resolved provider, modelId, and optional endpoint.
|
|
39
|
+
*/
|
|
40
|
+
export function resolveProviderModel(model, explicitProvider) {
|
|
41
|
+
// 1. Explicit provider — trust caller, pass model through unchanged
|
|
42
|
+
if (explicitProvider) {
|
|
43
|
+
return { provider: explicitProvider, modelId: model };
|
|
44
|
+
}
|
|
45
|
+
// 2. ollama/ prefix — local OpenAI-compatible server
|
|
46
|
+
if (model.startsWith("ollama/")) {
|
|
47
|
+
const modelId = model.slice("ollama/".length);
|
|
48
|
+
return {
|
|
49
|
+
provider: "openai-compat",
|
|
50
|
+
modelId,
|
|
51
|
+
endpoint: "http://localhost:11434/v1",
|
|
52
|
+
};
|
|
19
53
|
}
|
|
54
|
+
// 3. Known shorthand
|
|
55
|
+
const mapped = SHORTHAND_MAP[model];
|
|
56
|
+
if (mapped) {
|
|
57
|
+
return { provider: mapped.provider, modelId: mapped.modelId };
|
|
58
|
+
}
|
|
59
|
+
// 4. Unknown string — default to anthropic, pass through as-is
|
|
60
|
+
return { provider: "anthropic", modelId: model };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resolve a model shorthand or exact model ID to the Anthropic model string.
|
|
64
|
+
*
|
|
65
|
+
* Kept for backward compatibility. Internally delegates to resolveProviderModel.
|
|
66
|
+
* Returns only the modelId portion (suitable for direct Anthropic SDK calls).
|
|
67
|
+
*
|
|
68
|
+
* @deprecated Prefer resolveProviderModel for multi-provider workflows.
|
|
69
|
+
*/
|
|
70
|
+
export function resolveModel(choice) {
|
|
71
|
+
const { modelId } = resolveProviderModel(choice);
|
|
72
|
+
return modelId;
|
|
20
73
|
}
|
|
21
74
|
//# sourceMappingURL=model-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/orchestrator/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/orchestrator/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;GAGG;AACH,MAAM,aAAa,GAA0D;IAC3E,YAAY;IACZ,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAC3D,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE;IAC/D,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,2BAA2B,EAAE;IACtE,SAAS;IACT,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;IACrD,cAAc,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;IAC/D,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;IACzC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;IACrD,SAAS;IACT,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE;IAC/D,cAAc,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE;CACpE,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,gBAAyB;IAEzB,oEAAoE;IACpE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO;YACL,QAAQ,EAAE,eAAe;YACzB,OAAO;YACP,QAAQ,EAAE,2BAA2B;SACtC,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAChE,CAAC;IAED,+DAA+D;IAC/D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/planner-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planner-agent.d.ts","sourceRoot":"","sources":["../../src/orchestrator/planner-agent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA8DrD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAkEnB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
2
1
|
import { readFile } from "node:fs/promises";
|
|
3
2
|
import { join } from "node:path";
|
|
4
3
|
import { PlanSpecSchema } from "../contracts/spec.js";
|
|
4
|
+
import { createClient } from "../providers/factory.js";
|
|
5
5
|
import { saveSpec } from "../state/index.js";
|
|
6
6
|
import { fileExists } from "../utils/fs.js";
|
|
7
7
|
import { logger } from "../utils/logger.js";
|
|
@@ -62,7 +62,7 @@ export async function runPlanner(userPrompt, projectRoot, config) {
|
|
|
62
62
|
const model = resolveModel(config.planner.model);
|
|
63
63
|
// Build tool set (planner gets read-only tools)
|
|
64
64
|
const toolSet = buildToolSet("planner", projectRoot);
|
|
65
|
-
const client =
|
|
65
|
+
const client = createClient(config.planner.provider ?? null, config.planner.endpoint ?? null, config.planner.providerConfig, config.planner.model);
|
|
66
66
|
const userMessage = `# Task Description
|
|
67
67
|
${userPrompt}
|
|
68
68
|
|