151 lines
4.7 KiB
Bash
Executable file
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 ' ')"
|