.agent/gerar-manifesto.sh
2026-07-29 11:56:11 -03:00

151 lines
4.7 KiB
Bash
Executable file

#!/bin/sh
# =============================================================================
# gerar-manifesto.sh — Gerador automático de manifesto.json
# Faz auto-discovery de todos os artefatos do .agent/ e gera manifesto.json
#
# Uso:
# ./gerar-manifesto.sh
#
# Saída: manifesto.json
# =============================================================================
AGENT_DIR="$(cd "$(dirname "$0")" && pwd)"
OUTPUT="$AGENT_DIR/manifesto.json"
DATA=$(date -u +"%Y-%m-%dT%H:%M:%S-03:00")
BASE_URL="https://paiol.idz.one/desenvolvimento/agent-ia"
echo "🔍 Gerando manifesto.json..."
# Iniciar JSON
cat > "$OUTPUT" << 'HEADER'
{
"versao": "3.0.0",
HEADER
echo " \"base_url\": \"$BASE_URL\"," >> "$OUTPUT"
echo " \"gerado_em\": \"$DATA\"," >> "$OUTPUT"
echo " \"artefatos\": {" >> "$OUTPUT"
# --- GLOBAL ---
echo " \"global\": {" >> "$OUTPUT"
# global/rules (arquivos sem extensão, excluir .sh e .json)
echo " \"rules\": [" >> "$OUTPUT"
FIRST=1
for f in "$AGENT_DIR/global/rules/"*; do
[ -f "$f" ] || continue
case "$f" in *.sh|*.json) continue ;; esac
REL="global/rules/$(basename "$f")"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " ]," >> "$OUTPUT"
# global/workflows
echo " \"workflows\": [" >> "$OUTPUT"
FIRST=1
for f in "$AGENT_DIR/global/workflows/"*; do
[ -f "$f" ] || continue
case "$f" in *.sh|*.json) continue ;; esac
REL="global/workflows/$(basename "$f")"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " ]," >> "$OUTPUT"
# global/skills
echo " \"skills\": [" >> "$OUTPUT"
FIRST=1
for d in "$AGENT_DIR/global/skills/"*/; do
S_FILE=""
if [ -f "$d/SKILL" ]; then S_FILE="SKILL"; elif [ -f "$d/SKILL.md" ]; then S_FILE="SKILL.md"; else continue; fi
NOME=$(basename "$d")
REL="global/skills/$NOME/$S_FILE"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " ]" >> "$OUTPUT"
echo " }," >> "$OUTPUT"
# --- AGENTS ---
echo " \"agents\": {" >> "$OUTPUT"
AGENT_FIRST=1
for agente_dir in "$AGENT_DIR/agents/"*/; do
AGENTE=$(basename "$agente_dir")
[ -d "$agente_dir" ] || continue
[ "$AGENT_FIRST" = "1" ] && AGENT_FIRST=0 || echo "," >> "$OUTPUT"
echo " \"$AGENTE\": {" >> "$OUTPUT"
# persona
if [ -f "$agente_dir/persona" ]; then
echo " \"persona\": \"agents/$AGENTE/persona\"," >> "$OUTPUT"
fi
# agent.json (se existir)
if [ -f "$agente_dir/agent.json" ]; then
echo " \"config\": \"agents/$AGENTE/agent.json\"," >> "$OUTPUT"
fi
# rules
echo " \"rules\": [" >> "$OUTPUT"
FIRST=1
for f in "$agente_dir/rules/"*; do
[ -f "$f" ] || continue
case "$f" in *.sh|*.json) continue ;; esac
REL="agents/$AGENTE/rules/$(basename "$f")"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " ]," >> "$OUTPUT"
# workflows
echo " \"workflows\": [" >> "$OUTPUT"
FIRST=1
for f in "$agente_dir/workflows/"*; do
[ -f "$f" ] || continue
case "$f" in *.sh|*.json) continue ;; esac
REL="agents/$AGENTE/workflows/$(basename "$f")"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " ]," >> "$OUTPUT"
# skills
echo " \"skills\": [" >> "$OUTPUT"
FIRST=1
if [ -d "$agente_dir/skills" ]; then
for d in "$agente_dir/skills/"*/; do
S_FILE=""
if [ -f "$d/SKILL" ]; then S_FILE="SKILL"; elif [ -f "$d/SKILL.md" ]; then S_FILE="SKILL.md"; else continue; fi
NOME=$(basename "$d")
REL="agents/$AGENTE/skills/$NOME/$S_FILE"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
fi
echo "" >> "$OUTPUT"
echo " ]" >> "$OUTPUT"
printf " }" >> "$OUTPUT"
done
echo "" >> "$OUTPUT"
echo " }" >> "$OUTPUT"
echo " }" >> "$OUTPUT"
echo "}" >> "$OUTPUT"
echo "✅ Manifesto gerado: $OUTPUT"
echo ""
echo "📊 Resumo:"
echo " Global rules: $(find "$AGENT_DIR/global/rules/" -maxdepth 1 -type f ! -name '*.sh' ! -name '*.json' 2>/dev/null | wc -l | tr -d ' ')"
echo " Global workflows: $(find "$AGENT_DIR/global/workflows/" -maxdepth 1 -type f ! -name '*.sh' ! -name '*.json' 2>/dev/null | wc -l | tr -d ' ')"
echo " Global skills: $(find "$AGENT_DIR/global/skills/" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l | tr -d ' ')"
echo " Agentes: $(find "$AGENT_DIR/agents/" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l | tr -d ' ')"