3.9 KiB
3.9 KiB
Orchestrator Event Envelopes with SSE/WebSocket Streaming
Module
Orchestrator
Status
IMPLEMENTED
Description
Typed event envelope system with SSE and WebSocket streaming for real-time orchestrator job progress, enabling live UI updates and CLI monitoring of pack-run execution.
Implementation Details
- Modules:
src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Events/,src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Hashing/,src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/ - Key Classes:
EventEnvelope(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Events/EventEnvelope.cs) - typed event envelope with event type, payload, timestamp, and correlation IDEventEnvelope(legacy) (src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/EventEnvelope.cs) - legacy event envelope modelTimelineEvent(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Events/TimelineEvent.cs) - timeline event for job lifecycle trackingTimelineEventEmitter(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Events/TimelineEventEmitter.cs) - emits timeline events on domain actionsOrchestratorEventPublisher(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Infrastructure/Events/OrchestratorEventPublisher.cs) - concrete publisher routing events to stream coordinatorsEventEnvelopeHasher(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Hashing/EventEnvelopeHasher.cs) - hashes event envelopes for integrity verificationCanonicalJsonHasher(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Hashing/CanonicalJsonHasher.cs) - canonical JSON hashing for deterministic event hashesSseWriter(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/SseWriter.cs) - Server-Sent Events writerJobStreamCoordinator(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/JobStreamCoordinator.cs) - job event stream coordinatorPackRunStreamCoordinator(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/PackRunStreamCoordinator.cs) - pack-run stream coordinatorRunStreamCoordinator(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/RunStreamCoordinator.cs) - run-level stream coordinatorStreamEndpoints(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Endpoints/StreamEndpoints.cs) - REST endpoints for SSE subscriptionsStreamOptions(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/StreamOptions.cs) - stream configurationStreamPayloads(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Streaming/StreamPayloads.cs) - typed event payloads
- Interfaces:
IEventPublisher(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Events/IEventPublisher.cs) - Source: Feature matrix scan
E2E Test Plan
- Create an
EventEnvelopewith type=job_completed and payload; verify it is hashed viaEventEnvelopeHasherand the hash is deterministic - Publish an event via
OrchestratorEventPublisherand verify it reaches theJobStreamCoordinator - Subscribe to SSE via
StreamEndpointsand verify events arrive as formatted SSE messages (data: + newline) - Verify canonical hashing: create two identical events and verify
CanonicalJsonHasherproduces identical hashes - Subscribe to pack-run stream via
PackRunStreamCoordinatorand execute a pack; verify real-time progress events include step index and status - Verify
StreamOptions: configure heartbeat interval and verify heartbeats arrive at the configured cadence - Publish 100 events rapidly and verify
SseWriterdelivers all of them in order - Verify event envelope correlation: publish events with the same correlation ID and verify they can be filtered by correlation