Skip to content

Commit f8cbf9e

Browse files
committed
fix(mock): pass SANDBOX_AGENT_BIN to mock agent launcher
1 parent 85a35e3 commit f8cbf9e

2 files changed

Lines changed: 41 additions & 3 deletions

File tree

server/packages/agent-management/src/agents.rs

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,9 +1093,9 @@ fn write_mock_agent_process_launcher(path: &Path) -> Result<(), AgentError> {
10931093
fs::create_dir_all(parent)?;
10941094
}
10951095
let script = if cfg!(windows) {
1096-
"@echo off\r\nsandbox-agent mock-agent-process %*\r\n"
1096+
"@echo off\r\nif not \"%SANDBOX_AGENT_BIN%\"==\"\" (\r\n \"%SANDBOX_AGENT_BIN%\" mock-agent-process %*\r\n exit /b %errorlevel%\r\n)\r\nsandbox-agent mock-agent-process %*\r\n"
10971097
} else {
1098-
"#!/usr/bin/env sh\nexec sandbox-agent mock-agent-process \"$@\"\n"
1098+
"#!/usr/bin/env sh\nif [ -n \"${SANDBOX_AGENT_BIN:-}\" ]; then\n exec \"$SANDBOX_AGENT_BIN\" mock-agent-process \"$@\"\nfi\nexec sandbox-agent mock-agent-process \"$@\"\n"
10991099
};
11001100
write_text_file(path, script)
11011101
}
@@ -1969,6 +1969,34 @@ exit 0
19691969
assert_eq!(result.artifacts[0].source, InstallSource::Builtin);
19701970
}
19711971

1972+
#[test]
1973+
fn mock_launcher_prefers_sandbox_agent_bin() {
1974+
let temp_dir = tempfile::tempdir().expect("create tempdir");
1975+
let manager = AgentManager::with_platform(temp_dir.path(), Platform::LinuxX64);
1976+
1977+
manager
1978+
.install(
1979+
AgentId::Mock,
1980+
InstallOptions {
1981+
reinstall: true,
1982+
version: None,
1983+
agent_process_version: None,
1984+
},
1985+
)
1986+
.expect("mock install");
1987+
1988+
let launcher = manager.agent_process_path(AgentId::Mock);
1989+
let mut file = fs::File::open(&launcher).expect("open mock launcher");
1990+
let mut contents = String::new();
1991+
file.read_to_string(&mut contents)
1992+
.expect("read mock launcher");
1993+
1994+
assert!(
1995+
contents.contains("SANDBOX_AGENT_BIN"),
1996+
"mock launcher should reference SANDBOX_AGENT_BIN"
1997+
);
1998+
}
1999+
19722000
#[test]
19732001
fn install_pi_skips_native_and_installs_fallback_npm_launcher() {
19742002
let _env_lock = env_lock().lock().expect("env lock");

server/packages/sandbox-agent/src/acp_proxy_runtime.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ impl AcpProxyRuntime {
298298

299299
let resolve_started = std::time::Instant::now();
300300
let manager = self.inner.agent_manager.clone();
301-
let launch = tokio::task::spawn_blocking(move || manager.resolve_agent_process(agent))
301+
let mut launch = tokio::task::spawn_blocking(move || manager.resolve_agent_process(agent))
302302
.await
303303
.map_err(|err| SandboxError::StreamError {
304304
message: format!("failed to resolve agent process launch spec: {err}"),
@@ -307,6 +307,16 @@ impl AcpProxyRuntime {
307307
message: err.to_string(),
308308
})?;
309309

310+
if agent == AgentId::Mock {
311+
if let Ok(exe) = std::env::current_exe() {
312+
let path = exe.to_string_lossy().to_string();
313+
launch
314+
.env
315+
.entry("SANDBOX_AGENT_BIN".to_string())
316+
.or_insert(path);
317+
}
318+
}
319+
310320
tracing::info!(
311321
server_id = server_id,
312322
agent = agent.as_str(),

0 commit comments

Comments
 (0)