Skip to main content

agent_shell_parser/
hook.rs

1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
4pub struct WorktreeCreateInput {
5    pub name: String,
6    pub cwd: String,
7    #[serde(default)]
8    pub session_id: Option<String>,
9}
10
11#[derive(Debug, Deserialize)]
12pub struct WorktreeRemoveInput {
13    pub worktree_path: String,
14    #[serde(default)]
15    pub session_id: Option<String>,
16}
17
18#[derive(Debug, Deserialize)]
19pub struct PreToolUseInput {
20    pub tool_name: String,
21    #[serde(default)]
22    pub tool_input: serde_json::Value,
23    #[serde(default)]
24    pub cwd: Option<String>,
25}
26
27pub fn parse_input<T: serde::de::DeserializeOwned>() -> Result<T, crate::Error> {
28    let input = std::io::read_to_string(std::io::stdin())?;
29    Ok(serde_json::from_str(&input)?)
30}