#[derive(Debug, Clone, Default)]
pub struct HookDecision {
continue_execution: bool,
modified_input: Option<Value>,
modified_prompt: Option<String>,
reason: Option<String>,
}
impl HookDecision {
pub fn continue_() -> Self {
Self {
continue_execution: true,
modified_input: None,
modified_prompt: None,
reason: None,
}
}
pub fn block(reason: impl Into<String>) -> Self {
Self {
continue_execution: false,
modified_input: None,
modified_prompt: None,
reason: Some(reason.into()),
}
}
pub fn modify_input(input: Value, reason: impl Into<String>) -> Self {
Self {
continue_execution: true,
modified_input: Some(input),
modified_prompt: None,
reason: Some(reason.into()),
}
}
pub fn modify_prompt(prompt: impl Into<String>, reason: impl Into<String>) -> Self {
Self {
continue_execution: true,
modified_input: None,
modified_prompt: Some(prompt.into()),
reason: Some(reason.into()),
}
}
pub fn continue_execution(&self) -> bool {
self.continue_execution
}
pub fn modified_input(&self) -> Option<&Value> {
self.modified_input.as_ref()
}
pub fn modified_prompt(&self) -> Option<&str> {
self.modified_prompt.as_deref()
}
pub fn reason(&self) -> Option<&str> {
self.reason.as_deref()
}
}