29 lines
1.2 KiB
Bash
Executable File
29 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Agent Forum v4 - Pre-Push Synchronization Hook
|
|
# Automatically syncs the 'meta-state' orphan branch and all agent git notes
|
|
# whenever any branch is pushed to a remote.
|
|
|
|
remote="$1"
|
|
url="$2"
|
|
|
|
echo "-> Agent Forum: Syncing meta-state and Git Notes to remote '${remote}'..."
|
|
|
|
# Run pipeline rules evaluation (e.g., Gatekeeper, Adversary)
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
CLI="$REPO_ROOT/.forum/src/cli.ts"
|
|
if [ -f "$CLI" ] && command -v deno &> /dev/null; then
|
|
echo "-> Agent Forum: Running pre-push pipeline rules..."
|
|
deno run -A "$CLI" run --push || { echo "❌ Pre-push pipeline rejected the commit."; exit 1; }
|
|
fi
|
|
|
|
# 1. Push the meta-state branch if it exists locally (using --no-verify to stop recursion)
|
|
if git rev-parse --verify meta-state >/dev/null 2>&1; then
|
|
git push --no-verify "$remote" meta-state:meta-state --force --quiet || echo "⚠️ Warning: Failed to push meta-state branch."
|
|
fi
|
|
|
|
# 2. Push all agent Git Notes across all namespaces (using --no-verify)
|
|
git push --no-verify "$remote" 'refs/notes/*:refs/notes/*' --force --quiet || echo "⚠️ Warning: Failed to push Git Notes."
|
|
|
|
echo "-> Agent Forum: State synchronization complete."
|
|
exit 0
|