pub fn from_payload(payload: &str) -> Option<(String, Option<String>)>Expand description
The path a provider’s pre-tool payload names, and the provider’s own session id: the
fields Claude Code sends (tool_input.file_path, tool_input.notebook_path,
session_id). None when the payload names no path — a tool that writes no file.
use majordomus_cli::guard::from_payload;
let p = r#"{"session_id":"s1","tool_name":"Edit","tool_input":{"file_path":"/r/lib/a.sh"}}"#;
assert_eq!(from_payload(p), Some(("/r/lib/a.sh".to_string(), Some("s1".to_string()))));
let n = r#"{"session_id":"s1","tool_input":{"notebook_path":"/r/n.ipynb"}}"#;
assert_eq!(from_payload(n).unwrap().0, "/r/n.ipynb");
assert_eq!(from_payload(r#"{"tool_input":{"command":"ls"}}"#), None);
assert_eq!(from_payload("not json"), None);