#!/usr/bin/env bash # PostToolUse hook for Write|Edit (EDEN, Master Prompt §3.4). # Best-effort incremental lint/typecheck for files under apps/, packages/, infra/. # Fails open: if pnpm/node/turbo aren't installed yet (Fase 0 / early Fase 1), # this prints a short notice and exits 0 without blocking anything. set -euo pipefail PROJECT_ROOT="/opt/eden" INPUT_JSON="$(cat)" FILE_PATH="$(python3 -c ' import json, sys try: data = json.load(sys.stdin) ti = data.get("tool_input") or {} print(ti.get("file_path") or ti.get("notebook_path") or "") except Exception: print("") ' <<< "$INPUT_JSON")" # Only act on files under apps/, packages/, or infra/. case "$FILE_PATH" in "$PROJECT_ROOT"/apps/*|"$PROJECT_ROOT"/packages/*|"$PROJECT_ROOT"/infra/*) ;; *) exit 0 ;; esac if ! command -v pnpm >/dev/null 2>&1; then echo '{"systemMessage":"[eden-hook] pnpm ainda não está instalado neste ambiente — lint/typecheck incremental pulado (esperado na Fase 0/início da Fase 1)."}' exit 0 fi if [ ! -f "$PROJECT_ROOT/package.json" ]; then echo '{"systemMessage":"[eden-hook] Monorepo ainda não inicializado (sem package.json na raiz) — lint/typecheck incremental pulado."}' exit 0 fi cd "$PROJECT_ROOT" if pnpm turbo run lint typecheck --filter="...[HEAD^1]" >/tmp/eden-post-write-check.log 2>&1; then exit 0 else TAIL="$(tail -n 20 /tmp/eden-post-write-check.log | tr '\n' ' ' | cut -c1-800)" echo "{\"systemMessage\":\"[eden-hook] lint/typecheck incremental falhou: ${TAIL}\"}" exit 0 fi