versão 1
This commit is contained in:
commit
1cb4c14d33
85 changed files with 11836 additions and 0 deletions
121
adaptadores/antigravity/gerar-agent-json.sh
Executable file
121
adaptadores/antigravity/gerar-agent-json.sh
Executable file
|
|
@ -0,0 +1,121 @@
|
|||
#!/bin/sh
|
||||
# =============================================================================
|
||||
# gerar-agent-json.sh — Adaptador Antigravity
|
||||
# Gera o agent.json de cada agente a partir do persona.md
|
||||
#
|
||||
# Uso:
|
||||
# ./gerar-agent-json.sh # gera para todos os agentes
|
||||
# ./gerar-agent-json.sh ag-back # gera para um agente específico
|
||||
#
|
||||
# Dependências: yq (para parsear frontmatter YAML)
|
||||
# Instalar: sudo snap install yq
|
||||
# =============================================================================
|
||||
|
||||
AGENTS_DIR="$(cd "$(dirname "$0")/../.." && pwd)/agents"
|
||||
GLOBAL_RULES_DIR="$(cd "$(dirname "$0")/../.." && pwd)/global/rules"
|
||||
|
||||
gerar_para_agente() {
|
||||
AGENTE="$1"
|
||||
PERSONA="$AGENTS_DIR/$AGENTE/persona.md"
|
||||
|
||||
if [ ! -f "$PERSONA" ]; then
|
||||
echo "⚠ Persona não encontrada: $PERSONA"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Extrair frontmatter (entre os dois ---)
|
||||
FRONTMATTER=$(sed -n '/^---$/,/^---$/p' "$PERSONA" | grep -v "^---$")
|
||||
|
||||
# Ler campos do frontmatter com yq
|
||||
DISPLAY_NAME=$(echo "$FRONTMATTER" | yq '.display_name' 2>/dev/null || echo "$AGENTE")
|
||||
DESCRIPTION=$(echo "$FRONTMATTER" | yq '.description' 2>/dev/null || echo "")
|
||||
TOOLS=$(echo "$FRONTMATTER" | yq '.tools[]' 2>/dev/null | tr '\n' ',' | sed 's/,$//')
|
||||
|
||||
# Ler corpo do persona.md (após o segundo ---)
|
||||
BODY=$(awk '/^---$/{c++; next} c>=2' "$PERSONA")
|
||||
|
||||
# Ler rules globais
|
||||
GLOBAL_RULES=""
|
||||
for rule_file in "$GLOBAL_RULES_DIR"/*.md; do
|
||||
GLOBAL_RULES="$GLOBAL_RULES\n\n### $(basename "$rule_file" .md)\n$(cat "$rule_file")"
|
||||
done
|
||||
|
||||
# Ler rules do agente
|
||||
AGENT_RULES=""
|
||||
AGENT_RULES_DIR="$AGENTS_DIR/$AGENTE/rules"
|
||||
if [ -d "$AGENT_RULES_DIR" ]; then
|
||||
for rule_file in "$AGENT_RULES_DIR"/*.md; do
|
||||
[ -f "$rule_file" ] || continue
|
||||
AGENT_RULES="$AGENT_RULES\n\n### $(basename "$rule_file" .md)\n$(cat "$rule_file")"
|
||||
done
|
||||
fi
|
||||
|
||||
# Construir lista de tools como array JSON
|
||||
TOOLS_JSON=""
|
||||
if command -v yq >/dev/null 2>&1; then
|
||||
TOOLS_JSON=$(echo "$FRONTMATTER" | yq -o=json '.tools // []' 2>/dev/null || echo '[]')
|
||||
else
|
||||
# fallback: lista padrão de tools
|
||||
TOOLS_JSON='["view_file","replace_file_content","multi_replace_file_content","write_to_file","run_command","grep_search","list_dir","send_message"]'
|
||||
fi
|
||||
|
||||
# Gerar agent.json
|
||||
OUTPUT="$AGENTS_DIR/$AGENTE/agent.json"
|
||||
|
||||
# Escapar caracteres especiais para JSON
|
||||
BODY_JSON=$(printf '%s' "$BODY" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || printf '"%s"' "$BODY")
|
||||
GLOBAL_RULES_JSON=$(printf '%b' "$GLOBAL_RULES" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || echo '""')
|
||||
AGENT_RULES_JSON=$(printf '%b' "$AGENT_RULES" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || echo '""')
|
||||
DESC_JSON=$(printf '%s' "$DESCRIPTION" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || echo '""')
|
||||
NAME_JSON=$(printf '%s' "$DISPLAY_NAME" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || echo "\"$AGENTE\"")
|
||||
|
||||
cat > "$OUTPUT" << ENDJSON
|
||||
{
|
||||
"name": "$AGENTE",
|
||||
"display_name": $NAME_JSON,
|
||||
"description": $DESC_JSON,
|
||||
"hidden": false,
|
||||
"config": {
|
||||
"customAgent": {
|
||||
"systemPromptSections": [
|
||||
{
|
||||
"title": "Identidade e Escopo",
|
||||
"content": $BODY_JSON
|
||||
},
|
||||
{
|
||||
"title": "Rules Globais (herdadas)",
|
||||
"content": $GLOBAL_RULES_JSON
|
||||
},
|
||||
{
|
||||
"title": "Rules do Agente",
|
||||
"content": $AGENT_RULES_JSON
|
||||
}
|
||||
],
|
||||
"toolNames": $TOOLS_JSON,
|
||||
"systemPromptConfig": {
|
||||
"includeSections": [
|
||||
"user_information",
|
||||
"user_rules",
|
||||
"skills",
|
||||
"subagent_reminder",
|
||||
"messaging",
|
||||
"artifacts"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ENDJSON
|
||||
|
||||
echo "✅ Gerado: $OUTPUT"
|
||||
}
|
||||
|
||||
# Executar para todos os agentes ou para o especificado
|
||||
if [ -n "$1" ]; then
|
||||
gerar_para_agente "$1"
|
||||
else
|
||||
for agente_dir in "$AGENTS_DIR"/*/; do
|
||||
agente=$(basename "$agente_dir")
|
||||
gerar_para_agente "$agente"
|
||||
done
|
||||
fi
|
||||
37
adaptadores/claude/README.md
Normal file
37
adaptadores/claude/README.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Adaptador Claude (Anthropic)
|
||||
|
||||
> **Status:** 🟡 Preparado — implementação futura
|
||||
|
||||
Este diretório conterá o adaptador para gerar configurações nativas do Claude a partir dos arquivos `persona.md` dos agentes.
|
||||
|
||||
## Como funciona a arquitetura
|
||||
|
||||
A camada universal (arquivos `persona.md`, `global/rules/`, `agents/*/rules/`) é escrita em Markdown puro e é **independente de plataforma**. Cada adaptador lê essa camada universal e gera a configuração específica para cada LLM.
|
||||
|
||||
## Implementação futura
|
||||
|
||||
Quando for necessário migrar para Claude:
|
||||
|
||||
1. Criar `gerar-claude-config.sh` neste diretório
|
||||
2. O script deve ler:
|
||||
- `agents/{nome}/persona.md` → corpo do system prompt
|
||||
- `global/rules/*.md` → rules herdadas por todos
|
||||
- `agents/{nome}/rules/*.md` → rules específicas do agente
|
||||
3. Gerar o formato de configuração nativo do Claude (`.claude/` directory ou API system prompt)
|
||||
4. **Zero alteração** nos arquivos de `global/` ou `agents/`
|
||||
|
||||
## Formato esperado (Claude)
|
||||
|
||||
```json
|
||||
{
|
||||
"system": "...(conteúdo do persona.md + rules concatenadas)...",
|
||||
"tools": [...],
|
||||
"model": "claude-opus-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
## Referências
|
||||
|
||||
- Documentação Claude: https://docs.anthropic.com/
|
||||
- Camada universal: `../../global/` e `../../agents/`
|
||||
- Script Antigravity (referência): `../antigravity/gerar-agent-json.sh`
|
||||
38
adaptadores/openai/README.md
Normal file
38
adaptadores/openai/README.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# Adaptador OpenAI / GPT
|
||||
|
||||
> **Status:** 🟡 Preparado — implementação futura
|
||||
|
||||
Este diretório conterá o adaptador para gerar configurações nativas do OpenAI (GPT-4, GPT-4o, etc.) a partir dos arquivos `persona.md` dos agentes.
|
||||
|
||||
## Como funciona a arquitetura
|
||||
|
||||
A camada universal (arquivos `persona.md`, `global/rules/`, `agents/*/rules/`) é escrita em Markdown puro e é **independente de plataforma**. Cada adaptador lê essa camada universal e gera a configuração específica para cada LLM.
|
||||
|
||||
## Implementação futura
|
||||
|
||||
Quando for necessário migrar para OpenAI:
|
||||
|
||||
1. Criar `gerar-openai-config.sh` neste diretório
|
||||
2. O script deve ler:
|
||||
- `agents/{nome}/persona.md` → corpo do system prompt
|
||||
- `global/rules/*.md` → rules herdadas por todos
|
||||
- `agents/{nome}/rules/*.md` → rules específicas do agente
|
||||
3. Gerar o formato de Assistants API ou Custom GPT do OpenAI
|
||||
4. **Zero alteração** nos arquivos de `global/` ou `agents/`
|
||||
|
||||
## Formato esperado (OpenAI Assistants API)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "ag-back",
|
||||
"instructions": "...(conteúdo do persona.md + rules concatenadas)...",
|
||||
"tools": [{"type": "code_interpreter"}, {"type": "file_search"}],
|
||||
"model": "gpt-4o"
|
||||
}
|
||||
```
|
||||
|
||||
## Referências
|
||||
|
||||
- Documentação OpenAI Assistants: https://platform.openai.com/docs/assistants/
|
||||
- Camada universal: `../../global/` e `../../agents/`
|
||||
- Script Antigravity (referência): `../antigravity/gerar-agent-json.sh`
|
||||
Loading…
Add table
Add a link
Reference in a new issue