preserve legacy PreToolUse blocks with context

This commit is contained in:
Abhinav Vedmala
2026-05-01 15:39:54 -07:00
parent da2567023f
commit 565a651a54
2 changed files with 36 additions and 1 deletions
@@ -99,7 +99,6 @@ pub(crate) fn parse_pre_tool_use(stdout: &str) -> Option<PreToolUseOutput> {
output.permission_decision.is_some()
|| output.permission_decision_reason.is_some()
|| output.updated_input.is_some()
|| output.additional_context.is_some()
});
let invalid_reason = unsupported_pre_tool_use_universal(&universal).or_else(|| {
if use_hook_specific_decision {
+36
View File
@@ -362,6 +362,42 @@ mod tests {
);
}
#[test]
fn deprecated_block_decision_with_additional_context_blocks_processing() {
let parsed = parse_completed(
&handler(),
run_result(
Some(0),
r#"{"decision":"block","reason":"do not run that","hookSpecificOutput":{"hookEventName":"PreToolUse","additionalContext":"remember this"}}"#,
"",
),
Some("turn-1".to_string()),
);
assert_eq!(
parsed.data,
PreToolUseHandlerData {
should_block: true,
block_reason: Some("do not run that".to_string()),
additional_contexts_for_model: vec!["remember this".to_string()],
}
);
assert_eq!(parsed.completed.run.status, HookRunStatus::Blocked);
assert_eq!(
parsed.completed.run.entries,
vec![
HookOutputEntry {
kind: HookOutputEntryKind::Context,
text: "remember this".to_string(),
},
HookOutputEntry {
kind: HookOutputEntryKind::Feedback,
text: "do not run that".to_string(),
},
]
);
}
#[test]
fn unsupported_permission_decision_fails_open() {
let parsed = parse_completed(