2:start/pause/resume/cancel, SSE live progress stream, per-recipient monitor, CSV export."""
445:# Monitor: progress, SSE stream, recipient table
481:@router.get("/{cid}/stream")
482:async def campaign_stream(cid: int, request: Request,
485:    """SSE live progress stream. Manual implementation (no sse-starlette): a Redis
540:    return StreamingResponse(event_gen(), media_type="text/event-stream",
