| 444 | } |
| 445 | |
| 446 | fn parse_event(&self, hook_type: HookType, input: &[u8]) -> AgentResult<TurnEvent> { |
| 447 | if input.is_empty() { |
| 448 | return Err(AgentError::HookInputEmpty { |
| 449 | agent: self.agent_name.clone(), |
| 450 | hook_type: hook_type.as_str().to_string(), |
| 451 | }); |
| 452 | } |
| 453 | |
| 454 | let raw: serde_json::Value = serde_json::from_slice(input)?; |
| 455 | let session_id = raw["session_id"].as_str().unwrap_or("unknown").to_string(); |
| 456 | |
| 457 | Ok(TurnEvent::new(session_id, hook_type).with_raw_json(raw)) |
| 458 | } |
| 459 | |
| 460 | fn install(&self, _repo_root: &Path) -> AgentResult<usize> { |
| 461 | Ok(3) // pretend we installed 3 hooks |