(messages: readonly AgentMessage[])
| 560 | * all intermediate tool-call / toolResult entries in between. |
| 561 | */ |
| 562 | export function stripFailedTurn(messages: readonly AgentMessage[]): AgentMessage[] { |
| 563 | let errorIndex = -1; |
| 564 | for (let i = messages.length - 1; i >= 0; i--) { |
| 565 | const msg = messages[i]; |
| 566 | if (!msg) continue; |
| 567 | if (errorIndex === -1) { |
| 568 | const stopReason = (msg as PiAssistantMessage).stopReason; |
| 569 | if (msg.role === 'assistant' && (stopReason === 'error' || stopReason === 'aborted')) { |
| 570 | errorIndex = i; |
| 571 | } |
| 572 | continue; |
| 573 | } |
| 574 | if (msg.role === 'user') { |
| 575 | return [...messages.slice(0, i), ...messages.slice(errorIndex + 1)]; |
| 576 | } |
| 577 | } |
| 578 | return errorIndex === -1 ? [...messages] : messages.slice(0, errorIndex); |
| 579 | } |
| 580 | |
| 581 | function trackFsMutations( |
| 582 | fs: TextEditorFsCallbacks, |
no outgoing calls
no test coverage detected