{ "hooks": { "SessionStart": [ { "matcher": "", "hooks": [ { "type": "command", "command": "ov prime --agent orchestrator" } ] } ], "UserPromptSubmit": [ { "matcher": "", "hooks": [ { "type": "command", "command": "ov mail check --inject --agent orchestrator" } ] } ], "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "read -r INPUT; CMD=$(echo \"$INPUT\" | sed 's/.*\"command\": *\"\\([^\"]*\\)\".*/\\1/'); if echo \"$CMD\" | grep -qE '\\bgit\\s+push\\b'; then echo '{\"decision\":\"block\",\"reason\":\"git push is blocked by overstory — merge locally, push manually when ready\"}'; exit 0; fi;" } ] }, { "matcher": "", "hooks": [ { "type": "command", "command": "read -r INPUT; TOOL_NAME=$(echo \"$INPUT\" | sed 's/.*\"tool_name\": *\"\\([^\"]*\\)\".*/\\1/'); ov log tool-start --agent orchestrator --tool-name \"$TOOL_NAME\"" } ] } ], "PostToolUse": [ { "matcher": "", "hooks": [ { "type": "command", "command": "read -r INPUT; TOOL_NAME=$(echo \"$INPUT\" | sed 's/.*\"tool_name\": *\"\\([^\"]*\\)\".*/\\1/'); ov log tool-end --agent orchestrator --tool-name \"$TOOL_NAME\"" } ] }, { "matcher": "Bash", "hooks": [ { "type": "command", "command": "read -r INPUT; if echo \"$INPUT\" | grep -q 'git commit'; then mulch diff HEAD~1 2>/dev/null || true; fi" } ] } ], "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "ov log session-end --agent orchestrator" }, { "type": "command", "command": "mulch learn" } ] } ], "PreCompact": [ { "matcher": "", "hooks": [ { "type": "command", "command": "ov prime --agent orchestrator --compact" } ] } ] } }