diff --git a/hive-ag3nt/src/bin/hive-m1nd.rs b/hive-ag3nt/src/bin/hive-m1nd.rs index f0b0cc0..85f7092 100644 --- a/hive-ag3nt/src/bin/hive-m1nd.rs +++ b/hive-ag3nt/src/bin/hive-m1nd.rs @@ -134,8 +134,18 @@ async fn serve( let outcome = turn::drive_turn(&prompt, files, &bus).await; turn::emit_turn_end(&bus, &outcome); bus.set_state(TurnState::Idle); + // Check for messages that arrived during the turn and loop + // immediately if any are waiting — mirrors hive-ag3nt behaviour. + let pending = inbox_unread(socket).await; + if pending > 0 { + tracing::info!(%pending, "pending messages after turn; fetching next"); + continue; + } + } + Ok(ManagerResponse::Empty) => { + // Idle: sleep briefly before next long-poll attempt. + tokio::time::sleep(interval).await; } - Ok(ManagerResponse::Empty) => {} Ok( ManagerResponse::Ok | ManagerResponse::Status { .. } @@ -151,7 +161,6 @@ async fn serve( tracing::warn!(error = ?e, "recv failed; retrying"); } } - tokio::time::sleep(interval).await; } }