feat(llm): add per-provider retry policies

This commit is contained in:
Turtle
2026-07-25 10:18:16 +08:00
parent fe84b446b0
commit b58e33268a
60 changed files with 1606 additions and 334 deletions

View File

@@ -103,6 +103,8 @@ describe('streamSessionEventUpdate', () => {
expect(updatesFor(evt('llm/retry', {
turn: 1,
step: 1,
provider: 'mock',
mode: 'normal',
retry: 1,
maxRetries: 2,
delayMs: 500,
@@ -114,6 +116,21 @@ describe('streamSessionEventUpdate', () => {
text: '\n\n[Previous model attempt discarded; retrying 1/2 in 500ms: backend busy]\n\n',
},
}])
expect(updatesFor(evt('llm/retry', {
turn: 1,
step: 2,
provider: 'mock',
mode: 'always',
retry: 7,
delayMs: 1_000,
failure: { message: 'still unavailable', code: 'AUTH' },
}))).toEqual([{
sessionUpdate: 'agent_message_chunk',
content: {
type: 'text',
text: '\n\n[Previous model attempt discarded; retrying 7/∞ in 1000ms: still unavailable]\n\n',
},
}])
expect(updatesFor(evt('turn/end', {
turn: 1,
reason: { kind: 'error', step: 2, failure: { message: 'still busy', code: 'SERVER' } },