Switch to prefixed IDs and tell agents which Mac a message came from

This commit is contained in:
Ian Gulliver
2026-10-20 23:15:19 -07:00
parent f1296ba13d
commit 59bf17189d
42 changed files with 770 additions and 145 deletions
+8 -7
View File
@@ -15,6 +15,7 @@ import (
"g.fc.run/ai/byre/internal/api"
"g.fc.run/ai/byre/internal/git"
"g.fc.run/ai/byre/internal/ids"
"g.fc.run/ai/byre/internal/mcp"
"g.fc.run/ai/byre/internal/store"
"g.fc.run/ai/byre/internal/workflow"
@@ -210,7 +211,7 @@ func (m *Manager) startReviews(ctx context.Context, task api.Task, snap api.Snap
now := time.Now().UTC()
if len(changes.Files) == 0 {
slog.Info("review skipped, snapshot has no diff", "task", task.Id, "snapshot", snap.N)
return m.store.CreateReview(ctx, api.Review{Id: store.NewID(), TaskId: task.Id, SnapshotN: snap.N, State: api.ReviewStateSkipped, CreatedAt: now, FinishedAt: &now}, "")
return m.store.CreateReview(ctx, api.Review{Id: ids.New(ids.Review), TaskId: task.Id, SnapshotN: snap.N, State: api.ReviewStateSkipped, CreatedAt: now, FinishedAt: &now}, "")
}
frozen, err := m.store.FreezeWorkflow(ctx, project.ReviewWorkflow)
@@ -219,7 +220,7 @@ func (m *Manager) startReviews(ctx context.Context, task api.Task, snap api.Snap
}
if err != nil {
return m.store.CreateReview(ctx, api.Review{
Id: store.NewID(),
Id: ids.New(ids.Review),
TaskId: task.Id,
SnapshotN: snap.N,
Stage: project.ReviewWorkflow,
@@ -293,7 +294,7 @@ func (m *Manager) advanceReviews(ctx context.Context, r api.Review) bool {
func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.Project, snap api.Snapshot, defID string, def api.WorkflowDefinition, stage string, inputs []api.Review) (err error) {
model := workflow.Get(def, stage).Model
vendor := vendorOf(model)
reviewID := store.NewID()
reviewID := ids.New(ids.Review)
recorded := false
defer func() {
if err == nil || recorded {
@@ -335,13 +336,13 @@ func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.
return err
}
id := newUUID()
id := ids.New(ids.Session)
sess := api.AgentSession{
Id: id,
TaskId: task.Id,
Vendor: vendor,
Model: model,
VendorSessionId: initialVendorSessionID(vendor, id),
VendorSessionId: initialVendorSessionID(vendor),
State: api.AgentSessionStateIdle,
Role: api.Reviewer,
CreatedBy: task.CreatedBy,
@@ -369,7 +370,7 @@ func (m *Manager) startReviewer(ctx context.Context, task api.Task, project api.
}
recorded = true
_, err = m.turn(ctx, sess, task, "byre", prompt, "", nil)
_, err = m.turn(ctx, sess, task, "byre", prompt, "", "", nil)
if err != nil {
m.endReviewer(ctx, sess.Id, project, reviewID)
m.failReview(ctx, reviewID, "the reviewer didn't start: "+err.Error())
@@ -509,7 +510,7 @@ func (m *Manager) deliverFindings(ctx context.Context, r api.Review, reviews []a
slog.Info("review findings not delivered, task has no live agent", "task", r.TaskId, "snapshot", r.SnapshotN)
return
}
_, _, err = m.Message(ctx, s.Id, "byre", text, "", "")
_, _, err = m.Message(ctx, s.Id, "byre", text, "", "", "")
if err != nil {
slog.Error("deliver review findings", "task", r.TaskId, "snapshot", r.SnapshotN, "session", s.Id, "err", err)
return