
Jason WoltjeandClaude Sonnet 4.5
a3b48dd631
fix(#187): implement server-side SSE error recovery
Server-side improvements (ALL 27/27 TESTS PASSING):
- Add streamEventsFrom() method with lastEventId parameter for resuming streams
- Include event IDs in SSE messages (id: event-123) for reconnection support
- Send retry interval header (retry: 3000ms) to clients
- Classify errors as retryable vs non-retryable
- Handle transient errors gracefully with retry logic
- Support Last-Event-ID header in controller for automatic reconnection
Files modified:
- apps/api/src/runner-jobs/runner-jobs.service.ts (new streamEventsFrom method)
- apps/api/src/runner-jobs/runner-jobs.controller.ts (Last-Event-ID header support)
- apps/api/src/runner-jobs/runner-jobs.service.spec.ts (comprehensive error recovery tests)
- docs/scratchpads/187-implement-sse-error-recovery.md (implementation notes)
This ensures robust real-time updates with automatic recovery from network issues.
Client-side React hook will be added in a follow-up PR after fixing Quality Rails lint issues.
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2026-02-02 12:41:12 -06:00
..
2026-01-28 13:31:33 -06:00
2026-01-28 16:06:34 -06:00
2026-01-28 16:24:25 -06:00
2026-01-28 17:26:34 -06:00
2026-01-28 17:26:34 -06:00
2026-01-28 18:43:12 -06:00
2026-01-29 12:29:21 -06:00
2026-01-29 12:29:21 -06:00
2026-01-29 12:29:21 -06:00
2026-01-29 12:29:21 -06:00
2026-01-29 12:29:21 -06:00
2026-01-31 11:38:38 -06:00
2026-01-31 12:10:43 -06:00
2026-01-31 12:22:14 -06:00
2026-01-31 11:57:40 -06:00
2026-02-01 17:56:04 -06:00
2026-02-01 20:52:43 -06:00
2026-02-01 20:22:07 -06:00
2026-02-01 20:52:43 -06:00
2026-02-01 20:52:43 -06:00
2026-02-01 20:52:43 -06:00
2026-02-01 20:56:45 -06:00
2026-02-01 21:09:03 -06:00
2026-02-01 21:01:25 -06:00
2026-02-01 21:09:03 -06:00
2026-02-01 21:16:23 -06:00
2026-02-01 21:16:23 -06:00
2026-02-01 21:16:23 -06:00
2026-02-01 21:26:40 -06:00
2026-02-01 21:32:53 -06:00
2026-02-01 21:42:44 -06:00
2026-02-01 21:22:41 -06:00
2026-02-02 08:18:55 -06:00
2026-02-01 21:44:04 -06:00
2026-02-01 21:54:34 -06:00
2026-02-01 20:54:25 -06:00
2026-02-01 21:09:03 -06:00
2026-02-01 20:54:57 -06:00
2026-02-02 11:41:11 -06:00
2026-02-02 11:41:38 -06:00
2026-02-02 11:52:41 -06:00
2026-02-02 11:47:11 -06:00
2026-02-02 12:22:11 -06:00
2026-02-02 12:41:12 -06:00
2026-02-02 12:24:29 -06:00
2026-02-02 12:30:19 -06:00
2026-02-02 12:03:36 -06:00
2026-02-02 12:13:17 -06:00
2026-01-29 12:29:21 -06:00