|
|
@@ -99,11 +99,13 @@ describe('config-driven session id', () => {
|
|
|
await ctx.plugin(SessionPersistenceJsonl, { root })
|
|
|
const failure = new Error('persistence index failed')
|
|
|
const listenerFailure = new Error('failure observer failed')
|
|
|
+ const asyncListenerFailure = new Error('async failure observer failed')
|
|
|
const failures: { sessionId: SessionId; error: unknown }[] = []
|
|
|
+ ctx.on('agent-loop/config-start-failed', () => { throw listenerFailure })
|
|
|
+ ctx.on('agent-loop/config-start-failed', () => Promise.reject(asyncListenerFailure) as never)
|
|
|
ctx.on('agent-loop/config-start-failed', (sessionId, error) => {
|
|
|
failures.push({ sessionId, error })
|
|
|
})
|
|
|
- ctx.on('agent-loop/config-start-failed', () => { throw listenerFailure })
|
|
|
vi.spyOn(ctx.sessionPersistence, 'list').mockRejectedValue(failure)
|
|
|
const warn = vi.spyOn(ctx.logger, 'warn').mockImplementation(() => undefined)
|
|
|
|
|
|
@@ -118,6 +120,9 @@ describe('config-driven session id', () => {
|
|
|
expect(warn).toHaveBeenCalledWith(
|
|
|
'agent "main": config-start-failed listener threw: Error: failure observer failed',
|
|
|
)
|
|
|
+ await expect.poll(() => warn).toHaveBeenCalledWith(
|
|
|
+ 'agent "main": config-start-failed listener rejected: Error: async failure observer failed',
|
|
|
+ )
|
|
|
expect(ctx.agents.get(SessionId('stdio-exact-failure'))).toBeUndefined()
|
|
|
warn.mockRestore()
|
|
|
await ctx.fiber.dispose()
|