agent/codex/code/scripts/post-commit-check.sh
Snider e90a84eaa0 feat: merge go-agent + go-agentic + php-devops into unified agent repo
Combines three repositories into a single workspace:
- go-agent → pkg/orchestrator (Clotho), pkg/jobrunner, pkg/loop, cmd/
- go-agentic → pkg/lifecycle (allowance, sessions, plans, dispatch)
- php-devops → repos.yaml, setup.sh, scripts/, .core/

Module path: forge.lthn.ai/core/agent

All packages build, all tests pass.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 15:23:00 +00:00

47 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
# Post-commit hook: Check for uncommitted work that might get lost
# Policy: EXPOSE warning when uncommitted work exists, HIDE when clean
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/output-policy.sh"
read -r input
COMMAND=$(echo "$input" | jq -r '.tool_input.command // empty')
# Only run after git commit
if ! echo "$COMMAND" | grep -qE '^git commit'; then
pass_through "$input"
exit 0
fi
# Check for remaining uncommitted changes
UNSTAGED=$(git diff --name-only 2>/dev/null | wc -l | tr -d ' ')
STAGED=$(git diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ')
UNTRACKED=$(git ls-files --others --exclude-standard 2>/dev/null | wc -l | tr -d ' ')
TOTAL=$((UNSTAGED + STAGED + UNTRACKED))
if [[ $TOTAL -gt 0 ]]; then
DETAILS=""
if [[ $UNSTAGED -gt 0 ]]; then
FILES=$(git diff --name-only 2>/dev/null | head -5 | sed 's/^/ - /')
DETAILS+="**Modified (unstaged):** $UNSTAGED files\n$FILES\n"
[[ $UNSTAGED -gt 5 ]] && DETAILS+=" ... and $((UNSTAGED - 5)) more\n"
fi
if [[ $STAGED -gt 0 ]]; then
FILES=$(git diff --cached --name-only 2>/dev/null | head -5 | sed 's/^/ - /')
DETAILS+="**Staged (not committed):** $STAGED files\n$FILES\n"
fi
if [[ $UNTRACKED -gt 0 ]]; then
FILES=$(git ls-files --others --exclude-standard 2>/dev/null | head -5 | sed 's/^/ - /')
DETAILS+="**Untracked:** $UNTRACKED files\n$FILES\n"
[[ $UNTRACKED -gt 5 ]] && DETAILS+=" ... and $((UNTRACKED - 5)) more\n"
fi
expose_warning "Uncommitted work remains ($TOTAL files)" "$DETAILS"
else
pass_through "$input"
fi