configure reviewer

This commit is contained in:
Ian Gulliver
2026-10-18 22:56:33 -07:00
parent 380e533ef4
commit 374ccf8b5e
10 changed files with 394 additions and 291 deletions
+17 -28
View File
@@ -8,7 +8,6 @@ import (
"log/slog"
"net/http"
"os"
"os/exec"
"path/filepath"
"strings"
"time"
@@ -17,12 +16,11 @@ import (
"g.fc.run/ai/byre/internal/git"
"g.fc.run/ai/byre/internal/mcp"
"g.fc.run/ai/byre/internal/store"
"g.fc.run/ai/byre/internal/workflow"
)
const maxReviewFiles = 200
var reviewModels = map[api.AgentSessionVendor]string{api.Claude: "claude-opus-5-5", api.Codex: "gpt-6.1-sol"}
var severities = []string{"critical", "high", "medium", "low", "info"}
const reviewGuidance = `You are a reviewer running inside byre. Another agent is doing a task; you review all of its work so far, and a human may read your review in byre's app.
@@ -116,32 +114,19 @@ func playwrightMCP(outputDir string) mcp.Stdio {
}
}
var vendorCommands = map[api.AgentSessionVendor]string{api.Claude: "claude", api.Codex: "codex", api.Antigravity: "agy"}
func (m *Manager) implementerModel(ctx context.Context, taskID string) (api.AgentSessionVendor, string) {
sessions, err := m.store.ListSessions(ctx, taskID)
if err != nil || len(sessions) == 0 {
return api.Claude, reviewModels[api.Claude]
}
last := sessions[len(sessions)-1]
return last.Vendor, last.Model
}
func reviewVendor(implementer api.AgentSessionVendor) api.AgentSessionVendor {
if implementer == api.Codex {
return api.Claude
}
return api.Codex
}
func (m *Manager) reviewerModel(ctx context.Context, taskID string) (api.AgentSessionVendor, string) {
implVendor, implModel := m.implementerModel(ctx, taskID)
vendor := reviewVendor(implVendor)
_, err := exec.LookPath(vendorCommands[vendor])
func (m *Manager) reviewerModel(ctx context.Context, task api.Task) (string, error) {
creator, err := m.store.GetUser(ctx, task.CreatedBy)
if err != nil {
return implVendor, implModel
return "", err
}
return vendor, reviewModels[vendor]
sessions, err := m.store.ListSessions(ctx, task.Id)
if err != nil {
return "", err
}
if len(sessions) > 0 && sessions[len(sessions)-1].Model == creator.ReviewModel {
return creator.SecondReviewModel, nil
}
return creator.ReviewModel, nil
}
func (m *Manager) startReviewer(ctx context.Context, task api.Task, snap api.Snapshot) error {
@@ -149,7 +134,11 @@ func (m *Manager) startReviewer(ctx context.Context, task api.Task, snap api.Sna
if err != nil {
return err
}
vendor, model := m.reviewerModel(ctx, task.Id)
model, err := m.reviewerModel(ctx, task)
if err != nil {
return err
}
vendor := workflow.VendorOf(model)
prompt, err := m.reviewPrompt(ctx, task, project, snap)
if err != nil {
return err