pub struct GrokTarget;Trait Implementations§
Source§impl Target for GrokTarget
impl Target for GrokTarget
Source§fn install(&self, home: &Path) -> Result<InstallOutcome, String>
fn install(&self, home: &Path) -> Result<InstallOutcome, String>
Grok discovers hooks from every ~/.grok/hooks/*.json (globally trusted, no folder-trust
needed), so we own a DEDICATED safe-chains.json rather than editing a shared file — no risk
of clobbering the user’s other hook files, and idempotency is trivial.
fn name(&self) -> &'static str
fn display_name(&self) -> &'static str
Source§fn shell_tool_name(&self) -> &'static str
fn shell_tool_name(&self) -> &'static str
The harness’s SHELL tool — the only tool this hook should decide about. Droid’s is
Execute, Gemini’s run_shell_command; most are Bash. Defaults to Bash, the common
case.fn detect_paths(&self, home: &Path) -> Vec<PathBuf>
fn hook_format(&self) -> Option<&dyn HookFormat>
Source§fn hook_format_for(&self, _stdin: &str) -> Option<&dyn HookFormat>
fn hook_format_for(&self, _stdin: &str) -> Option<&dyn HookFormat>
The format that answers THIS envelope. Most harnesses send one hook event, so it is
hook_format. Codex sends PreToolUse and PermissionRequest to the same command and
expects a different answer to each, so it picks by the event the envelope names.Source§fn hook_formats(&self) -> Vec<&dyn HookFormat>
fn hook_formats(&self) -> Vec<&dyn HookFormat>
Every format
hook_format_for can return, so the contract guards that need no envelope walk
all of them and a second event’s format cannot ship unchecked. The foreign-tool guard is
driven by sample_envelope and reaches only the format that envelope routes to; Codex’s
PermissionRequest tool filter has its own test in codex.rs.Auto Trait Implementations§
impl Freeze for GrokTarget
impl RefUnwindSafe for GrokTarget
impl Send for GrokTarget
impl Sync for GrokTarget
impl Unpin for GrokTarget
impl UnsafeUnpin for GrokTarget
impl UnwindSafe for GrokTarget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more