Hook handler that POSTs hook context as JSON to a URL.
Response interpretation:
- 2xx with
{"decision": "deny", "reason": "..."}→{:deny, reason} - 2xx with
{"decision": "allow"}or no decision field →:ok - Non-2xx →
{:deny, "HTTP hook returned status <code>"} - Connection error →
:ok(non-blocking, matches Claude Code)