From bb29eedb7209a0d5e91052458ce76bc7e4259d18 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 27 Jul 2026 00:12:25 +0300 Subject: fix: delay agent prompt submission refs #1878 --- src/pane.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/pane.rs') diff --git a/src/pane.rs b/src/pane.rs index 45f4f720..c6d8c003 100644 --- a/src/pane.rs +++ b/src/pane.rs @@ -1107,6 +1107,28 @@ impl PaneRuntimeIo { PaneRuntimeIo::TestChannel { sender, .. } => sender.try_send(bytes), } } + + fn send_bytes_after(&self, bytes: Bytes, delay: std::time::Duration) { + match self { + PaneRuntimeIo::Actor(actor) => { + let actor = actor.clone(); + tokio::spawn(async move { + tokio::time::sleep(delay).await; + if let Err(err) = actor.write_user_input(bytes).await { + warn!(error = %err, "failed to send delayed PTY input"); + } + }); + } + #[cfg(test)] + PaneRuntimeIo::TestChannel { sender, .. } => { + let sender = sender.clone(); + tokio::spawn(async move { + tokio::time::sleep(delay).await; + let _ = sender.send(bytes).await; + }); + } + } + } } #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -2628,6 +2650,10 @@ impl PaneRuntime { self.io.try_send_bytes(bytes) } + pub fn send_bytes_after(&self, bytes: Bytes, delay: std::time::Duration) { + self.io.send_bytes_after(bytes, delay); + } + pub async fn send_paste(&self, text: String) -> Result<(), mpsc::error::SendError> { self.send_bytes(self.paste_payload(text)).await } -- cgit v1.2.3