mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 07:04:48 +00:00
fix(mock): pass SANDBOX_AGENT_BIN to mock agent launcher
This commit is contained in:
parent
78e84281e8
commit
b45989a082
2 changed files with 41 additions and 3 deletions
|
|
@ -1093,9 +1093,9 @@ fn write_mock_agent_process_launcher(path: &Path) -> Result<(), AgentError> {
|
||||||
fs::create_dir_all(parent)?;
|
fs::create_dir_all(parent)?;
|
||||||
}
|
}
|
||||||
let script = if cfg!(windows) {
|
let script = if cfg!(windows) {
|
||||||
"@echo off\r\nsandbox-agent mock-agent-process %*\r\n"
|
"@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"
|
||||||
} else {
|
} else {
|
||||||
"#!/usr/bin/env sh\nexec sandbox-agent mock-agent-process \"$@\"\n"
|
"#!/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"
|
||||||
};
|
};
|
||||||
write_text_file(path, script)
|
write_text_file(path, script)
|
||||||
}
|
}
|
||||||
|
|
@ -1969,6 +1969,34 @@ exit 0
|
||||||
assert_eq!(result.artifacts[0].source, InstallSource::Builtin);
|
assert_eq!(result.artifacts[0].source, InstallSource::Builtin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn mock_launcher_prefers_sandbox_agent_bin() {
|
||||||
|
let temp_dir = tempfile::tempdir().expect("create tempdir");
|
||||||
|
let manager = AgentManager::with_platform(temp_dir.path(), Platform::LinuxX64);
|
||||||
|
|
||||||
|
manager
|
||||||
|
.install(
|
||||||
|
AgentId::Mock,
|
||||||
|
InstallOptions {
|
||||||
|
reinstall: true,
|
||||||
|
version: None,
|
||||||
|
agent_process_version: None,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.expect("mock install");
|
||||||
|
|
||||||
|
let launcher = manager.agent_process_path(AgentId::Mock);
|
||||||
|
let mut file = fs::File::open(&launcher).expect("open mock launcher");
|
||||||
|
let mut contents = String::new();
|
||||||
|
file.read_to_string(&mut contents)
|
||||||
|
.expect("read mock launcher");
|
||||||
|
|
||||||
|
assert!(
|
||||||
|
contents.contains("SANDBOX_AGENT_BIN"),
|
||||||
|
"mock launcher should reference SANDBOX_AGENT_BIN"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn install_pi_skips_native_and_installs_fallback_npm_launcher() {
|
fn install_pi_skips_native_and_installs_fallback_npm_launcher() {
|
||||||
let _env_lock = env_lock().lock().expect("env lock");
|
let _env_lock = env_lock().lock().expect("env lock");
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@ impl AcpProxyRuntime {
|
||||||
|
|
||||||
let resolve_started = std::time::Instant::now();
|
let resolve_started = std::time::Instant::now();
|
||||||
let manager = self.inner.agent_manager.clone();
|
let manager = self.inner.agent_manager.clone();
|
||||||
let launch = tokio::task::spawn_blocking(move || manager.resolve_agent_process(agent))
|
let mut launch = tokio::task::spawn_blocking(move || manager.resolve_agent_process(agent))
|
||||||
.await
|
.await
|
||||||
.map_err(|err| SandboxError::StreamError {
|
.map_err(|err| SandboxError::StreamError {
|
||||||
message: format!("failed to resolve agent process launch spec: {err}"),
|
message: format!("failed to resolve agent process launch spec: {err}"),
|
||||||
|
|
@ -307,6 +307,16 @@ impl AcpProxyRuntime {
|
||||||
message: err.to_string(),
|
message: err.to_string(),
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
if agent == AgentId::Mock {
|
||||||
|
if let Ok(exe) = std::env::current_exe() {
|
||||||
|
let path = exe.to_string_lossy().to_string();
|
||||||
|
launch
|
||||||
|
.env
|
||||||
|
.entry("SANDBOX_AGENT_BIN".to_string())
|
||||||
|
.or_insert(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tracing::info!(
|
tracing::info!(
|
||||||
server_id = server_id,
|
server_id = server_id,
|
||||||
agent = agent.as_str(),
|
agent = agent.as_str(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue