aboutsummaryrefslogtreecommitdiff
path: root/src/app/agents.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/agents.rs')
-rw-r--r--src/app/agents.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/app/agents.rs b/src/app/agents.rs
index ea828eae..262bb0e4 100644
--- a/src/app/agents.rs
+++ b/src/app/agents.rs
@@ -97,6 +97,7 @@ impl App {
pub(super) fn start_agent(
&mut self,
params: AgentStartParams,
+ extra_env: Vec<(String, String)>,
) -> Result<(crate::api::schema::AgentInfo, Vec<String>), AgentStartError> {
let name = params.name.trim().to_string();
if name.is_empty() {
@@ -145,6 +146,7 @@ impl App {
params.split.unwrap_or(SplitDirection::Right),
cwd,
&argv,
+ extra_env,
focus,
)?
} else if let Some(workspace_id) = params.workspace_id {
@@ -161,10 +163,11 @@ impl App {
params.split.unwrap_or(SplitDirection::Right),
cwd,
&argv,
+ extra_env,
focus,
)?
} else if self.state.workspaces.is_empty() {
- self.spawn_agent_workspace(cwd, rows, cols, &argv, focus)?
+ self.spawn_agent_workspace(cwd, rows, cols, &argv, extra_env, focus)?
} else {
let ws_idx = self.state.active.unwrap_or(0);
let tab_idx = self.state.workspaces[ws_idx].active_tab;
@@ -175,6 +178,7 @@ impl App {
params.split.unwrap_or(SplitDirection::Right),
cwd,
&argv,
+ extra_env,
focus,
)?
};
@@ -314,9 +318,10 @@ impl App {
rows: u16,
cols: u16,
argv: &[String],
+ extra_env: Vec<(String, String)>,
focus: bool,
) -> Result<(usize, usize, crate::layout::PaneId), AgentStartError> {
- let (ws, terminal, runtime) = crate::workspace::Workspace::new_argv_command(
+ let (ws, terminal, runtime) = crate::workspace::Workspace::new_argv_command_with_extra_env(
cwd,
rows,
cols,
@@ -326,6 +331,7 @@ impl App {
self.event_tx.clone(),
self.render_notify.clone(),
self.render_dirty.clone(),
+ extra_env,
)
.map_err(|err| AgentStartError::SpawnFailed(err.to_string()))?;
self.terminal_runtimes.insert(terminal.id.clone(), runtime);
@@ -350,6 +356,7 @@ impl App {
split: SplitDirection,
cwd: PathBuf,
argv: &[String],
+ extra_env: Vec<(String, String)>,
focus: bool,
) -> Result<(usize, usize, crate::layout::PaneId), AgentStartError> {
let (rows, cols) = self.state.estimate_pane_size();
@@ -370,6 +377,7 @@ impl App {
cols,
Some(cwd),
argv,
+ extra_env,
self.state.pane_scrollback_limit_bytes,
self.state.host_terminal_theme,
focus,