Share snapshot classification across review and readiness queries

This commit is contained in:
Ian Gulliver
2026-10-21 11:55:19 -07:00
parent 1b5f42a01a
commit 66affd7622
3 changed files with 9 additions and 15 deletions
+6 -11
View File
@@ -8,6 +8,8 @@ import (
"g.fc.run/ai/byre/internal/api"
)
const cutPointTriggers = `('answer', 'fork', 'ask_human')`
const snapshotColumns = `id, task_id, agent_session_id, n, commit_sha, tree_sha, event_seq, trigger, created_at`
func (s *Store) CreateSnapshot(ctx context.Context, snap api.Snapshot, projectID string) error {
@@ -17,11 +19,9 @@ func (s *Store) CreateSnapshot(ctx context.Context, snap api.Snapshot, projectID
if err != nil {
return err
}
if !CutPoint(snap.Trigger) {
_, err = tx.ExecContext(ctx, `UPDATE tasks SET ready = '' WHERE id = ?`, snap.TaskId)
if err != nil {
return err
}
_, err = tx.ExecContext(ctx, `UPDATE tasks SET ready = '' WHERE id = ? AND ? NOT IN `+cutPointTriggers, snap.TaskId, string(snap.Trigger))
if err != nil {
return err
}
return emit(api.Event{
Kind: "snapshot.created",
@@ -68,13 +68,8 @@ func (s *Store) LastSnapshot(ctx context.Context, taskID string) (api.Snapshot,
return snap, err
}
func CutPoint(trigger api.SnapshotTrigger) bool {
return trigger == api.SnapshotTriggerAnswer || trigger == api.SnapshotTriggerFork || trigger == api.SnapshotTriggerAskHuman
}
func (s *Store) LastReviewable(ctx context.Context, taskID string) (api.Snapshot, error) {
snap, err := scanSnapshot(s.db.QueryRowContext(ctx, `SELECT `+snapshotColumns+` FROM snapshots WHERE task_id = ? AND trigger NOT IN (?, ?, ?) ORDER BY n DESC LIMIT 1`,
taskID, string(api.SnapshotTriggerAnswer), string(api.SnapshotTriggerFork), string(api.SnapshotTriggerAskHuman)))
snap, err := scanSnapshot(s.db.QueryRowContext(ctx, `SELECT `+snapshotColumns+` FROM snapshots WHERE task_id = ? AND trigger NOT IN `+cutPointTriggers+` ORDER BY n DESC LIMIT 1`, taskID))
if errors.Is(err, sql.ErrNoRows) {
return snap, ErrNotFound
}