.agent/gerar-manifesto.sh
2026-06-18 11:59:57 -03:00

143 lines
4.1 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: .agent/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": "2.0.0",
HEADER
echo " \"base_url\": \"$BASE_URL\"," >> "$OUTPUT"
echo " \"gerado_em\": \"$DATA\"," >> "$OUTPUT"
echo " \"artefatos\": {" >> "$OUTPUT"
# --- GLOBAL ---
echo " \"global\": {" >> "$OUTPUT"
# global/rules
echo " \"rules\": [" >> "$OUTPUT"
FIRST=1
for f in "$AGENT_DIR/global/rules/"*.md; do
[ -f "$f" ] || continue
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/"*.md; do
[ -f "$f" ] || continue
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
[ -f "$d/SKILL.md" ] || continue
NOME=$(basename "$d")
REL="global/skills/$NOME/SKILL.md"
[ "$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.md" ]; then
echo " \"persona\": \"agents/$AGENTE/persona.md\"," >> "$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/"*.md; do
[ -f "$f" ] || continue
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/"*.md; do
[ -f "$f" ] || continue
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
for d in "$agente_dir/skills/"/*/; do
[ -f "$d/SKILL.md" ] || continue
NOME=$(basename "$d")
REL="agents/$AGENTE/skills/$NOME/SKILL.md"
[ "$FIRST" = "1" ] && FIRST=0 || echo "," >> "$OUTPUT"
printf ' "%s"' "$REL" >> "$OUTPUT"
done
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: $(ls "$AGENT_DIR/global/rules/" 2>/dev/null | wc -l | tr -d ' ')"
echo " Global workflows: $(ls "$AGENT_DIR/global/workflows/" 2>/dev/null | wc -l | tr -d ' ')"
echo " Global skills: $(ls "$AGENT_DIR/global/skills/" 2>/dev/null | wc -l | tr -d ' ')"
echo " Agentes: $(ls -d "$AGENT_DIR/agents/"*/ 2>/dev/null | wc -l | tr -d ' ')"