331- 332- # Broadcast to connected dashboards via WebSocket 333: socketio.emit('new_log', { 334- 'id': log_id, 335- **log_data, -- 472- """Handle WebSocket connection""" 473- print(f"✓ Dashboard connected: {request.sid}") 474: emit('connected', {'message': 'Connected to NEOG log server'}) 475- 476-@socketio.on('disconnect') -- 501- 502- conn.close() 503: emit('initial_logs', logs) 504- 505-@app.route('/api/create-page', methods=['POST']) -- 683- 684- # Broadcast new run via WebSocket 685: socketio.emit('cc_run_created', { 686- 'run_id': run_id, 687- 'prompt': data.get('prompt', '')[:100], -- 741- 742- # Broadcast update via WebSocket 743: socketio.emit('cc_run_updated', {'run_id': run_id, **data}) 744- 745- return jsonify({'status': 'ok', 'run_id': run_id}) -- 867- 868- # Broadcast completion via WebSocket 869: socketio.emit('cc_run_completed', { 870- 'run_id': run_id, 871- 'status': status, -- 1153- 1154- # Broadcast event via WebSocket 1155: socketio.emit('cc_event', { 1156- 'id': event_id, 1157- 'run_id': run_id, -- 1948- 1949- # Broadcast heartbeat 1950: socketio.emit('cc_heartbeat', {'run_id': run_id, 'timestamp': datetime.now().isoformat()}) 1951- 1952- return jsonify({'status': 'ok', 'run_id': run_id}) -- 2013- 2014- # Broadcast budget update 2015: socketio.emit('cc_budget_updated', data) 2016- 2017- return jsonify({'status': 'ok'})