mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-11 20:13:30 +08:00
feat: add ecc2 gemini runner support
This commit is contained in:
@@ -1901,6 +1901,7 @@ fn agent_program(agent_type: &str) -> Result<PathBuf> {
|
|||||||
HarnessKind::Claude => Ok(PathBuf::from("claude")),
|
HarnessKind::Claude => Ok(PathBuf::from("claude")),
|
||||||
HarnessKind::Codex => Ok(PathBuf::from("codex")),
|
HarnessKind::Codex => Ok(PathBuf::from("codex")),
|
||||||
HarnessKind::OpenCode => Ok(PathBuf::from("opencode")),
|
HarnessKind::OpenCode => Ok(PathBuf::from("opencode")),
|
||||||
|
HarnessKind::Gemini => Ok(PathBuf::from("gemini")),
|
||||||
other => anyhow::bail!("Unsupported agent type: {other}"),
|
other => anyhow::bail!("Unsupported agent type: {other}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2603,6 +2604,23 @@ fn build_agent_command(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
HarnessKind::Gemini => {
|
||||||
|
command.arg("-p");
|
||||||
|
if let Some(profile) = profile {
|
||||||
|
if let Some(model) = profile.model.as_ref() {
|
||||||
|
command.arg("-m").arg(model);
|
||||||
|
}
|
||||||
|
if !profile.add_dirs.is_empty() {
|
||||||
|
let include_dirs = profile
|
||||||
|
.add_dirs
|
||||||
|
.iter()
|
||||||
|
.map(|dir| dir.to_string_lossy().to_string())
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join(",");
|
||||||
|
command.arg("--include-directories").arg(include_dirs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
command
|
command
|
||||||
@@ -2624,7 +2642,7 @@ fn normalize_task_for_harness(
|
|||||||
|
|
||||||
match harness {
|
match harness {
|
||||||
HarnessKind::Claude => task.to_string(),
|
HarnessKind::Claude => task.to_string(),
|
||||||
HarnessKind::Codex | HarnessKind::OpenCode => {
|
HarnessKind::Codex | HarnessKind::OpenCode | HarnessKind::Gemini => {
|
||||||
format!("System instructions:\n{system_prompt}\n\nTask:\n{task}")
|
format!("System instructions:\n{system_prompt}\n\nTask:\n{task}")
|
||||||
}
|
}
|
||||||
_ => task.to_string(),
|
_ => task.to_string(),
|
||||||
@@ -3515,6 +3533,48 @@ mod tests {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn build_agent_command_normalizes_runner_flags_for_gemini() {
|
||||||
|
let profile = SessionAgentProfile {
|
||||||
|
profile_name: "investigator".to_string(),
|
||||||
|
agent: None,
|
||||||
|
model: Some("gemini-2.5-pro".to_string()),
|
||||||
|
allowed_tools: vec!["Read".to_string()],
|
||||||
|
disallowed_tools: vec!["Bash".to_string()],
|
||||||
|
permission_mode: Some("plan".to_string()),
|
||||||
|
add_dirs: vec![PathBuf::from("docs"), PathBuf::from("../shared")],
|
||||||
|
max_budget_usd: Some(1.0),
|
||||||
|
token_budget: Some(500),
|
||||||
|
append_system_prompt: Some("Use repo context carefully.".to_string()),
|
||||||
|
};
|
||||||
|
|
||||||
|
let command = build_agent_command(
|
||||||
|
"gemini",
|
||||||
|
Path::new("gemini"),
|
||||||
|
"investigate auth regression",
|
||||||
|
"sess-gem1",
|
||||||
|
Path::new("/tmp/repo"),
|
||||||
|
Some(&profile),
|
||||||
|
);
|
||||||
|
let args = command
|
||||||
|
.as_std()
|
||||||
|
.get_args()
|
||||||
|
.map(|value| value.to_string_lossy().to_string())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
args,
|
||||||
|
vec![
|
||||||
|
"-p",
|
||||||
|
"-m",
|
||||||
|
"gemini-2.5-pro",
|
||||||
|
"--include-directories",
|
||||||
|
"docs,../shared",
|
||||||
|
"System instructions:\nUse repo context carefully.\n\nTask:\ninvestigate auth regression",
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn enforce_session_heartbeats_marks_overdue_running_sessions_stale() -> Result<()> {
|
fn enforce_session_heartbeats_marks_overdue_running_sessions_stale() -> Result<()> {
|
||||||
let tempdir = TestDir::new("manager-heartbeat-stale")?;
|
let tempdir = TestDir::new("manager-heartbeat-stale")?;
|
||||||
|
|||||||
Reference in New Issue
Block a user