diff --git a/src/main/claude/claude-stream-json-connection-close.test.ts b/src/main/claude/claude-stream-json-connection-close.test.ts index 92c3316fab2..d72cec22a95 100644 --- a/src/main/claude/claude-stream-json-connection-close.test.ts +++ b/src/main/claude/claude-stream-json-connection-close.test.ts @@ -116,10 +116,10 @@ describe('Claude stream-json close ordering', () => { const deferred = createDeferredStructuredAgentSessionEventSink(testEventSinkLogging()) deferred.bind({ journal: rig.journal, fence: 1, publish: () => {} }) const translator = createClaudeJournalTranslator({ sink: deferred.sink }) - const first = Promise.withResolvers>() + const first = Promise.withResolvers>>() const next = vi .fn<() => Promise>>>() - .mockImplementationOnce(async () => ({ value: await first.promise, done: false })) + .mockReturnValueOnce(first.promise) .mockResolvedValue({ value: undefined, done: true }) // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: This injected query exercises only the async iterator used by the connection. const queryImpl = ((params: Parameters[0]) => { @@ -159,12 +159,15 @@ describe('Claude stream-json close ordering', () => { expect(events).toEqual([]) // Resolve and exit in one stack, before the awaiting reader can consume the complete result. first.resolve({ - type: 'user', - uuid: 'resolved-before-exit', - session_id: 'provider-session', - message: { - role: 'user', - content: [{ type: 'tool_result', tool_use_id: 'received', content: 'MIDDLE:TAIL' }] + done: false, + value: { + type: 'user', + uuid: 'resolved-before-exit', + session_id: 'provider-session', + message: { + role: 'user', + content: [{ type: 'tool_result', tool_use_id: 'received', content: 'MIDDLE:TAIL' }] + } } }) child.emit('exit', 1, null)