fix(llm): preserve serving retry policy

This commit is contained in:
Turtle
2026-07-25 13:30:34 +08:00
parent a623ed5183
commit 015ba14bae
27 changed files with 278 additions and 82 deletions

View File

@@ -184,6 +184,7 @@ export class PlanModeService extends Service {
_error,
_failure,
_priorFailures,
_retryPolicy,
_signal,
next,
) => {

View File

@@ -138,7 +138,9 @@ describe('plan mode through the agent loop', () => {
const agent = ctx.agentLoop.create(SessionId('it-plan-retry-flip'), { provider: 'mock', model: 'mock' })
const recoveryEntered = Promise.withResolvers<true>()
const releaseRecovery = Promise.withResolvers<true>()
ctx.on('agent/request-error', async (subject, _turn, _step, _error, _failure, _history, _signal, next) => {
ctx.on('agent/request-error', async (
subject, _turn, _step, _error, _failure, _history, _retryPolicy, _signal, next,
) => {
if (subject !== agent) return next()
recoveryEntered.resolve(true)
await releaseRecovery.promise

View File

@@ -83,6 +83,7 @@ function recoveryBoundary(
new Error('request failed'),
{ message: 'request failed', code: 'SERVER' },
[],
undefined,
new AbortController().signal,
() => Promise.resolve(decision),
)
@@ -945,7 +946,9 @@ describe('HMR disposal', () => {
const agent = await agentWithSession(ctx, 'disposed-in-flight-recovery')
const recoveryEntered = Promise.withResolvers<true>()
const releaseRecovery = Promise.withResolvers<true>()
ctx.on('agent/request-error', async (_agent, _turn, _step, _error, _failure, _history, _signal, _next) => {
ctx.on('agent/request-error', async (
_agent, _turn, _step, _error, _failure, _history, _retryPolicy, _signal, _next,
) => {
recoveryEntered.resolve(true)
await releaseRecovery.promise
return { action: 'retry' }