init+contexte : am init genere un agent-manager.yaml selon la stack detectee + contexte projet (git root, branche, stack) attache aux evenements et sessions (issue #8)

This commit is contained in:
2026-08-16 22:40:00 -04:00
parent 48e85555f7
commit 85d44f9e56
12 changed files with 338 additions and 10 deletions
+6 -5
View File
@@ -107,6 +107,7 @@ pub fn start_agent(
agent: &str,
pid: u32,
cwd: Option<String>,
project: Option<String>,
args: Vec<String>,
env_keys: Vec<String>,
log: Option<String>,
@@ -121,7 +122,7 @@ pub fn start_agent(
agent: Some(agent.to_string()),
pid: Some(pid),
cwd,
project: None,
project,
started_at: crate::installers::now_rfc3339(),
ended_at: None,
exit_code: None,
@@ -283,7 +284,7 @@ mod tests {
#[test]
fn agent_session_lifecycle() {
let app = test_app("sess");
let id = start_agent(&app, "claude-code", 4242, Some("/tmp".into()), vec![], vec![], None).unwrap();
let id = start_agent(&app, "claude-code", 4242, Some("/tmp".into()), None, vec![], vec![], None).unwrap();
let sf = load(&app).unwrap();
let r = sf.sessions.get(&id).unwrap();
assert_eq!(r.status, "running");
@@ -302,7 +303,7 @@ mod tests {
#[test]
fn reconcile_marks_dead_pid_interrupted() {
let app = test_app("recon");
let id = start_agent(&app, "aider", u32::MAX - 1, None, vec![], vec![], None).unwrap();
let id = start_agent(&app, "aider", u32::MAX - 1, None, None, vec![], vec![], None).unwrap();
let changed = reconcile(&app).unwrap();
assert_eq!(changed, 1);
let sf = load(&app).unwrap();
@@ -321,8 +322,8 @@ mod tests {
#[test]
fn finish_matches_by_pid_first() {
let app = test_app("multi");
start_agent(&app, "jcode", 100, None, vec![], vec![], None).unwrap();
start_agent(&app, "jcode", 200, None, vec![], vec![], None).unwrap();
start_agent(&app, "jcode", 100, None, None, vec![], vec![], None).unwrap();
start_agent(&app, "jcode", 200, None, None, vec![], vec![], None).unwrap();
finish_agent(&app, "jcode", Some(200), 1, false).unwrap();
let sf = load(&app).unwrap();
let stopped: Vec<_> = sf