fix(agent-loop): report turn failures at source

This commit is contained in:
_Kerman
2026-07-31 13:54:36 +08:00
parent 7a463dbe44
commit 741fc7dc79
12 changed files with 125 additions and 44 deletions

View File

@@ -794,7 +794,7 @@ export function createTuiChat(
liveErrors.delete(key)
alreadyReported = true
}
const message = reason.error instanceof Error ? reason.error.message : String(reason.error)
const message = errorChain(reason.error)
if (!alreadyReported) appendNotice(message, 'error')
break
}

View File

@@ -3755,7 +3755,7 @@ describe('pi-tui chat lifecycle and transcript', () => {
events.session.append('turn/start', { turn: 6 })
events.session.append('turn/end', {
turn: 6,
reason: { kind: 'error', error: 'structured provider failure' },
reason: { kind: 'error', error: { message: 'structured provider failure', code: 'SERVER' } },
})
events.session.append('turn/start', { turn: 8 })
events.session.append('turn/end', {
@@ -3771,6 +3771,7 @@ describe('pi-tui chat lifecycle and transcript', () => {
expect(events.terminal.output).toContain('durable failure')
expect(events.terminal.output).toContain('Turn cancelled')
expect(events.terminal.output).toContain('structured provider failure')
expect(events.terminal.output).not.toContain('[object Object]')
expect(events.terminal.output).toContain('output-token limit')
expect(events.terminal.output).toContain('previous process ended')
expect(events.terminal.output).toContain('Turn ended: plugin-policy')