From e4de58b37f58d59d146158239ed218a8accd5c3c Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 17 May 2026 01:41:16 +0300 Subject: feat: add agent start for server-owned terminals --- src/pane.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/pane.rs') diff --git a/src/pane.rs b/src/pane.rs index 272229fa..b5886933 100644 --- a/src/pane.rs +++ b/src/pane.rs @@ -328,6 +328,46 @@ impl PaneRuntime { ) } + pub fn spawn_argv_command( + pane_id: PaneId, + rows: u16, + cols: u16, + cwd: std::path::PathBuf, + argv: &[String], + scrollback_limit_bytes: usize, + host_terminal_theme: crate::terminal_theme::TerminalTheme, + events: mpsc::Sender, + render_notify: Arc, + render_dirty: Arc, + ) -> std::io::Result { + let Some((program, args)) = argv.split_first() else { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "argv must not be empty", + )); + }; + let mut cmd = CommandBuilder::new(program); + for arg in args { + cmd.arg(arg); + } + cmd.cwd(cwd); + cmd.env(crate::HERDR_ENV_VAR, crate::HERDR_ENV_VALUE); + apply_pane_terminal_env(&mut cmd); + crate::integration::apply_pane_env(&mut cmd, pane_id); + Self::spawn_command_builder( + pane_id, + rows, + cols, + scrollback_limit_bytes, + host_terminal_theme, + events, + render_notify, + render_dirty, + cmd, + "failed to spawn argv command pane", + ) + } + fn spawn_command_builder( pane_id: PaneId, rows: u16, -- cgit v1.2.3