fix(pi): Fail turns that end on an unresolved abort#20
What Changed
A Pi turn whose last main assistant message ended with an aborted stop reason, and that never recovered, now settles as failed with "Pi aborted the response before completion." instead of completed. A later successful assistant message, a tool call or a length stop clears the abort, so turns that Pi or an extension recovered from still complete normally.
User Stop keeps its interrupted outcome, and a more specific provider failure, such as an exhausted retry, keeps its own message.
Why
When an extension's recovery gave up, for example after a repetition loop, Pi aborted the response but T3 reported the turn as completed, which hid the failure from users and parent agents. The outcome is decided only after Pi confirms the turn is idle, so recovery by compaction or retry is not cut short, and it relies on Pi's structured stop reasons rather than notification text.
Checklist
- This PR is small and focused
- I explained what changed and why
- I included before/after screenshots for any UI changes
- I included a video for animation/interaction changes
Added 1 commit
- fix(pi): Fail turns that end on an unresolved abort97f7755