tree d6463e625085f73143798b50c9fb2eb30b9c04ab
parent 160fb06bb7c8df956daecd4d3bdb3f94d8a93406
author Josh Bleecher Snyder <josharian@gmail.com> 1748021167 +0000
committer Josh Bleecher Snyder <josharian@gmail.com> 1748025971 -0700

loop: fix data race in Agent.CurrentStateName()

The CurrentStateName() method was directly accessing the stateMachine's
currentState field without proper synchronization, causing data races
with TransitionWithEvent() which writes to the same field while holding
a write lock.

The StateMachine struct already provides a thread-safe CurrentState()
method that properly acquires a read lock before accessing currentState.

This fix changes CurrentStateName() from:
  return a.stateMachine.currentState.String()
to:
  return a.stateMachine.CurrentState().String()

This eliminates the race condition between HTTP handler goroutines
reading state for SSE streams and the agent loop goroutine writing
state during transitions.

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: sadf9961b9f084fa7
