Add autopilot-aware pre-commit warnings + post-commit driver reminder
CI / build (push) Has been cancelled
CI / build (push) Has been cancelled
- Pre-commit hook: warns when autopilot is enabled and non-terminal tasks exist - Post-commit hook: after commit, prints non-terminal task summary if autopilot on - Post-commit exits 0 always (informational only, never blocks) - Both hooks read .agent.md to detect Autopilot: Enabled
This commit is contained in:
Executable
+48
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
# post-commit hook — reminds agent to drive tasks when autopilot is enabled.
|
||||
#
|
||||
# Install: cp this file to .git/hooks/post-commit && chmod +x .git/hooks/post-commit
|
||||
# Or: ln -s ~/.automaton/scripts/git-hooks/post-commit .git/hooks/post-commit
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
STATUS_SCRIPT="$HOME/.automaton/scripts/status.py"
|
||||
AUTOMATON_DIR="$HOME/.automaton"
|
||||
|
||||
if [ ! -f "$STATUS_SCRIPT" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
||||
|
||||
# Check if autopilot is enabled
|
||||
AGENT_FILE=""
|
||||
if [ -f "$PROJECT_ROOT/.automaton/.agent.md" ]; then
|
||||
AGENT_FILE="$PROJECT_ROOT/.automaton/.agent.md"
|
||||
elif [ -f "$AUTOMATON_DIR/.agent.md" ]; then
|
||||
AGENT_FILE="$AUTOMATON_DIR/.agent.md"
|
||||
fi
|
||||
|
||||
if [ -z "$AGENT_FILE" ] || ! grep -qi "Autopilot:\s*Enabled" "$AGENT_FILE" 2>/dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Autopilot is enabled — check for non-terminal tasks
|
||||
NON_TERMINAL=$(python3 "$STATUS_SCRIPT" --list --project "$PROJECT_ROOT" 2>/dev/null \
|
||||
| grep -v "complete" | grep -v "UNTRACKED" | grep -v "Phase" | grep -v "^--" \
|
||||
| grep -v "^$" | grep -v "^Task" || true)
|
||||
|
||||
if [ -z "$NON_TERMINAL" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
COUNT=$(echo "$NON_TERMINAL" | wc -l)
|
||||
|
||||
echo ""
|
||||
echo "=== AUTOPILOT: Tasks Awaiting Completion ==="
|
||||
echo "$COUNT non-terminal task(s) found:"
|
||||
echo ""
|
||||
echo "$NON_TERMINAL"
|
||||
echo ""
|
||||
echo "Drive them to completion by saying 'orchestrate' or 'continue'."
|
||||
echo "=============================================="
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# pre-commit hook — blocks commits when no task is in an edit-allowed phase.
|
||||
# Also warns about stale/hollow tasks when autopilot is enabled.
|
||||
#
|
||||
# Install: cp this file to .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit
|
||||
# Or: ln -s ~/.automaton/scripts/git-hooks/pre-commit .git/hooks/pre-commit
|
||||
@@ -10,6 +11,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
STATUS_SCRIPT="$HOME/.automaton/scripts/status.py"
|
||||
AUTOMATON_DIR="$HOME/.automaton"
|
||||
|
||||
if [ ! -f "$STATUS_SCRIPT" ]; then
|
||||
exit 0
|
||||
@@ -33,4 +35,37 @@ if [ $EXIT_CODE -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# --- Autopilot awareness: warn about hanging/hollow tasks ---
|
||||
|
||||
AGENT_FILE=""
|
||||
if [ -f "$PROJECT_ROOT/.automaton/.agent.md" ]; then
|
||||
AGENT_FILE="$PROJECT_ROOT/.automaton/.agent.md"
|
||||
elif [ -f "$AUTOMATON_DIR/.agent.md" ]; then
|
||||
AGENT_FILE="$AUTOMATON_DIR/.agent.md"
|
||||
fi
|
||||
|
||||
if [ -n "$AGENT_FILE" ] && grep -qi "Autopilot:\s*Enabled" "$AGENT_FILE" 2>/dev/null; then
|
||||
AUTOPILOT_ENABLED=true
|
||||
else
|
||||
AUTOPILOT_ENABLED=false
|
||||
fi
|
||||
|
||||
if $AUTOPILOT_ENABLED; then
|
||||
NON_TERMINAL=$(python3 "$STATUS_SCRIPT" --list --project "$PROJECT_ROOT" 2>/dev/null \
|
||||
| grep -v "complete" | grep -v "UNTRACKED" | grep -v "Phase" | grep -v "^--" \
|
||||
| grep -v "^$" | grep -v "^$" || true)
|
||||
|
||||
if [ -n "$NON_TERMINAL" ]; then
|
||||
echo ""
|
||||
echo "=== AUTOPILOT WARNING ==="
|
||||
echo "Autopilot is enabled but non-terminal tasks exist:"
|
||||
echo ""
|
||||
echo "$NON_TERMINAL"
|
||||
echo ""
|
||||
echo "These tasks should be driven to completion. Run the orchestrator:"
|
||||
echo " (agent should say 'orchestrate' or 'continue')"
|
||||
echo "========================="
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user