Commit e0ce4f4
authored
fix(conversation): recover dead ACP turns after agent process loss (#514)
## Summary
- Add ACP turn recovery policy support to automatically replay safe
retryable turns once after upstream agent/process failures.
- Evict unhealthy ACP tasks after recoverable terminal errors so later
stop/cancel/send flows bind to a fresh runtime instead of a dead task.
- Keep team child-turn status handling transparent across recovered
replays and cover recovery safety boundaries with focused tests.
## Test Plan
- [x] `just push -u origin feat/agent-turn-recoverable-error` (migration
immutability, cargo fix/fmt, clippy, and `cargo nextest run
--workspace`: 6379 passed, 18 skipped)
- [x] Local AionUi Dev solo smoke for Claude, Codex, and OpenCode: kill
ACP child process immediately after sending; subsequent stop/cancel/send
remains usable
- [x] Local AionUi Dev team smoke: kill ACP child process during a team
turn; child turn auto-recovers and the team run completes
---------
Co-authored-by: zynx <>1 parent 6b46055 commit e0ce4f4
9 files changed
Lines changed: 1343 additions & 112 deletions
File tree
- crates
- aionui-ai-agent/src/protocol
- aionui-conversation/src
- aionui-team/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
217 | 217 | | |
218 | 218 | | |
219 | 219 | | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
220 | 224 | | |
221 | 225 | | |
222 | 226 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
26 | 29 | | |
27 | 30 | | |
28 | 31 | | |
| |||
45 | 48 | | |
46 | 49 | | |
47 | 50 | | |
48 | | - | |
49 | 51 | | |
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
| 55 | + | |
53 | 56 | | |
54 | 57 | | |
55 | 58 | | |
| |||
98 | 101 | | |
99 | 102 | | |
100 | 103 | | |
101 | | - | |
102 | 104 | | |
| 105 | + | |
103 | 106 | | |
104 | 107 | | |
105 | 108 | | |
106 | 109 | | |
107 | 110 | | |
108 | 111 | | |
109 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
110 | 125 | | |
111 | 126 | | |
112 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
0 commit comments