/**
* ObservationBroadcaster: SSE broadcasting for observations and summaries
*
* Responsibility:
* - Broadcast new observations to SSE clients
* - Broadcast new summaries to SSE clients
* - Handle worker reference safely (null checks)
*
* BUGFIX: This module fixes the incorrect field names in SDKAgent:
* - SDKAgent used `obs.files` which doesn't exist - should be `obs.files_read`
* - SDKAgent used hardcoded `files_modified: JSON.stringify([])` - should use `obs.files_modified`
*/
import type { WorkerRef, ObservationSSEPayload, SummarySSEPayload } from './types.js';
import { logger } from '../../../utils/logger.js';
/**
* Broadcast a new observation to SSE clients
*
* @param worker - Worker reference with SSE broadcaster (can be undefined)
* @param payload - Observation data to broadcast
*/
export function broadcastObservation(
worker: WorkerRef | undefined,
payload: ObservationSSEPayload
): void {
if (!worker?.sseBroadcaster) {
return;
}
worker.sseBroadcaster.broadcast({
type: 'new_observation',
observation: payload
});
}
/**
* Broadcast a new summary to SSE clients
*
* @param worker - Worker reference with SSE broadcaster (can be undefined)
* @param payload - Summary data to broadcast
*/
export function broadcastSummary(
worker: WorkerRef | undefined,
payload: SummarySSEPayload
): void {
if (!worker?.sseBroadcaster) {
return;
}
worker.sseBroadcaster.broadcast({
type: 'new_summary',
summary: payload
});
}