#!/usr/bin/env bash
# Adapter output contract: an agent that returns exit 0 but writes NO captured output
# (silent write failure / disk full) must be mapped to contract exit 3 — success requires evidence.
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

# shellcheck source=/dev/null
source "$ROOT_DIR/wrappers/_contract-probe.sh"

setup_mock_bin
trap cleanup_mocks EXIT

failed=0
for wrapper_name in ca.sh na.sh codex.sh pi.sh; do
  wrapper_path="$ROOT_DIR/wrappers/$wrapper_name"
  echo "=== empty-output contract: $wrapper_name ==="
  tmp_skill_dir="$(setup_env_files)"
  cp "$wrapper_path" "$tmp_skill_dir/wrappers/$wrapper_name"
  cp -R "$ROOT_DIR/wrappers/lib" "$tmp_skill_dir/wrappers/"
  chmod +x "$tmp_skill_dir/wrappers/$wrapper_name"
  cp -R "$ROOT_DIR/wrappers/lib" "$tmp_skill_dir/wrappers/"
  export HOME="$tmp_skill_dir"
  if ! assert_empty_output_contract "$tmp_skill_dir/wrappers/$wrapper_name"; then
    failed=1
  fi
  rm -rf "$tmp_skill_dir"
done

if [[ $failed -ne 0 ]]; then
  echo "FAIL: wrapper empty-output contract"
  exit 1
fi
echo "PASS: wrapper empty-output contract"
