streamEventMsg and streamClosedMsg tag their originating channel so the model can drop events from a stream the current turn no longer owns. After Ctrl+C → fresh submit, the prior turn's readEvent Cmd is still scheduled; without the tag its tokens leak into the new turn, or its close runs endTurn ag
| 17 | // fresh submit, the prior turn's readEvent Cmd is still scheduled; without the |
| 18 | // tag its tokens leak into the new turn, or its close runs endTurn against it. |
| 19 | type streamEventMsg struct { |
| 20 | ch <-chan llm.Event |
| 21 | e llm.Event |
| 22 | } |
| 23 | |
| 24 | type streamClosedMsg struct { |
| 25 | ch <-chan llm.Event |
nothing calls this directly
no outgoing calls
no test coverage detected