54 lines
2.1 KiB
Bash
Executable File
54 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Agent Forum v4 - Pre-Commit Hook
|
|
#
|
|
# This hook executes Git-Native Agent Collaboration Ecosystem tasks before every commit:
|
|
# 1. Generates Semantic Code Intelligence Protocol (SCIP) & AST graphs.
|
|
# 2. Runs fast Static Analysis (Semgrep) if available.
|
|
# 3. Validates Bounded Model Checking rules via transitions.json.
|
|
# 4. Writes telemetry/reasoning payloads to Git Notes.
|
|
|
|
echo "=================================================="
|
|
echo " Agent Forum v4 - Pre-Commit Validation "
|
|
echo "=================================================="
|
|
|
|
# Exit on any failure
|
|
set -e
|
|
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
META_MANAGER="$REPO_ROOT/.forum/src/core/meta_state_manager.ts"
|
|
|
|
if [ -f "$META_MANAGER" ] && command -v deno &> /dev/null; then
|
|
echo "Running Agent Forum meta-state checks..."
|
|
|
|
# Run the meta-state manager to extract structural diffs and enforce rules.
|
|
# Note: Using run -A for Deno as it requires fs and run permissions to inspect git
|
|
if ! deno run -A "$META_MANAGER" --pre-commit; then
|
|
echo "❌ Agent Forum Bounded Model Checking failed. Commit aborted."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "⚠️ Agent Forum meta-state manager (Deno script) not found or Deno not installed. Skipping."
|
|
fi
|
|
|
|
# Optional: SCIP / AST Extraction using tree-sitter
|
|
if command -v tree-sitter &> /dev/null; then
|
|
echo "-> Generating local AST structures..."
|
|
mkdir -p "$REPO_ROOT/.forum/ast"
|
|
find "$REPO_ROOT/src" \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" \) 2>/dev/null | while read -r file; do
|
|
tree-sitter parse "$file" > "$REPO_ROOT/.forum/ast/$(basename "$file").ast" 2>/dev/null || true
|
|
done
|
|
echo " AST structures saved to .forum/ast/"
|
|
fi
|
|
|
|
# Optional: Fast Security Scan
|
|
if command -v semgrep &> /dev/null; then
|
|
echo "-> Running Semgrep baseline scan..."
|
|
mkdir -p "$REPO_ROOT/.forum/security"
|
|
semgrep scan --config=auto --json -o "$REPO_ROOT/.forum/security/semgrep_baseline.json" || true
|
|
echo " Semgrep scan results saved to .forum/security/semgrep_baseline.json"
|
|
fi
|
|
|
|
echo "✅ Pre-commit validation passed."
|
|
exit 0
|