Make task state store-owned and signal its changes to the lead

This commit is contained in:
Ian Gulliver
2026-10-16 11:15:32 -07:00
parent 34db128afe
commit d26c81ceb1
15 changed files with 451 additions and 199 deletions
+13 -1
View File
@@ -114,7 +114,7 @@ func (s *Store) StartDiscardTurn(ctx context.Context, taskID, sessionID, actor s
})
}
func (s *Store) EndTurn(ctx context.Context, sessionID, actor string, payload map[string]any) (DiscardState, error) {
func (s *Store) EndTurn(ctx context.Context, sessionID, actor string, payload map[string]any, turn *api.Event, reviewRequest bool) (DiscardState, error) {
next := DiscardNone
err := s.write(ctx, func(tx *sql.Tx, emit emitFunc) error {
taskID := ""
@@ -133,6 +133,18 @@ func (s *Store) EndTurn(ctx context.Context, sessionID, actor string, payload ma
return err
}
if turn != nil {
err = emit(*turn)
if err != nil {
return err
}
}
if reviewRequest {
_, err = tx.ExecContext(ctx, `UPDATE tasks SET review_requests = review_requests + 1 WHERE id = ?`, taskID)
if err != nil {
return err
}
}
_, err = tx.ExecContext(ctx, `UPDATE agent_sessions SET state = ? WHERE id = ?`, string(api.AgentSessionStateIdle), sessionID)
if err != nil {
return err