Review every new snapshot with an agent from the other vendor

This commit is contained in:
Ian Gulliver
2026-10-15 16:33:17 -07:00
parent a539ddab43
commit e9039cceb4
39 changed files with 1737 additions and 218 deletions
+15 -9
View File
@@ -60,10 +60,11 @@ func (m *Manager) runSnapshots(l *live, st *snapState, req *snapRequest) {
closed := st.closed
m.snapMu.Unlock()
if !closed {
err := m.takeSnapshot(context.Background(), l, req.trigger, req.seq)
snap, err := m.takeSnapshot(context.Background(), l, req.trigger, req.seq)
if err != nil {
slog.Error("take snapshot", "task", l.taskID, "trigger", req.trigger, "err", err)
}
go m.afterSnapshot(snap)
}
st.mu.Unlock()
@@ -79,26 +80,26 @@ func (m *Manager) runSnapshots(l *live, st *snapState, req *snapRequest) {
}
}
func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.SnapshotTrigger, seq int64) error {
func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.SnapshotTrigger, seq int64) (*api.Snapshot, error) {
if seq == 0 {
var err error
seq, err = m.store.LastTaskSeq(ctx, l.taskID)
if err != nil {
return err
return nil, err
}
}
tree, err := git.Snapshot(l.dir)
if err != nil {
return err
return nil, err
}
last, err := m.store.LastSnapshot(ctx, l.taskID)
if err != nil && !errors.Is(err, store.ErrNotFound) {
return err
return nil, err
}
if err == nil && last.TreeSha == tree {
return nil
return nil, nil
}
n := last.N + 1
@@ -109,10 +110,10 @@ func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.Snapsho
"GIT_COMMITTER_EMAIL=" + l.gitEmail,
})
if err != nil {
return err
return nil, err
}
return m.store.CreateSnapshot(ctx, api.Snapshot{
snap := api.Snapshot{
Id: store.NewID(),
TaskId: l.taskID,
AgentSessionId: l.id,
@@ -122,7 +123,12 @@ func (m *Manager) takeSnapshot(ctx context.Context, l *live, trigger api.Snapsho
EventSeq: seq,
Trigger: trigger,
CreatedAt: time.Now().UTC(),
}, l.projectID)
}
err = m.store.CreateSnapshot(ctx, snap, l.projectID)
if err != nil {
return nil, err
}
return &snap, nil
}
func (m *Manager) dropSnapshots(repo, taskID string) error {