#!/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 ' ')"