@brabos-ai/fnd-cli
v1.6.1
Published
CLI para download e atualização de templates FND
Readme
FND CLI
CLI para gerenciamento de templates FND com autenticação por device fingerprint.
Instalação
npm install -g @brabos-ai/fnd-cliComandos
fnd login
Autentica no sistema FND usando OTP (One-Time Password).
Funcionamento:
- Coleta fingerprint do dispositivo (hostname, username, MAC address, hardware ID)
- Hash do fingerprint localmente (SHA256)
- Envia OTP para o email cadastrado
- Valida OTP e recebe token JWT
- Armazena token e fingerprint em
~/.fnd/config.json
Exemplo:
$ fnd login
🔐 FND CLI - Autenticação
Coletando informações do dispositivo...
Dispositivo identificado:
Hostname: DESKTOP-ABC123
Usuário: joao
Fingerprint: a1b2c3d4e5f6g7h8...
Email cadastrado: [email protected]
✓ Código enviado para seu email!
Digite o código OTP recebido: 123456
✓ Autenticação realizada com sucesso!
Dispositivo: DESKTOP-ABC123
Válido até: 18/12/2025 10:30:00fnd checkout <type>
Baixa um template FND para o diretório atual.
Argumentos:
<type>: Tipo do template (ex:easyflow)
Opções:
-v, --version <version>: Versão específica (padrão:latest)
Exemplo:
$ fnd checkout easyflow
📥 FND CLI - Baixar Template
Template: easyflow
Versão: latest
Baixando template...
Versão disponível: v1.2.0
Extraindo arquivos...
✓ Template easyflow v1.2.0 baixado com sucesso!
Arquivos extraídos: 42
Próximos passos:
1. Revise os arquivos do template
2. Configure suas variáveis de ambiente
3. Execute: npm install
4. Para atualizar futuramente: fnd updatefnd update
Atualiza o template para a versão mais recente.
Pré-requisitos:
- Estar em um diretório com template FND (arquivo
.fnd-versionpresente) - Ter um repositório Git inicializado
Funcionamento:
- Valida autenticação e fingerprint
- Busca versão atual do arquivo
.fnd-version - Baixa manifest mais recente do backend
- Compara com manifest local (ou gera a partir dos arquivos)
- Cria branch
update/v-X-Y-Z - Aplica mudanças (adiciona/remove/atualiza arquivos)
- Cria commit estruturado
Exemplo:
$ fnd update
📦 FND CLI - Atualizar Template
Template atual: easyflow v1.2.0
Verificando atualizações...
Nova versão disponível: v1.3.0
Mudanças detectadas:
+ 3 arquivo(s) adicionado(s)
- 1 arquivo(s) removido(s)
~ 5 arquivo(s) atualizado(s)
Criando branch: update/v-1-3-0...
Baixando arquivos atualizados...
+ docs/new-feature.md
+ src/utils/helper.ts
+ tests/helper.test.ts
- deprecated/old-file.ts
~ src/index.ts
~ package.json
~ README.md
~ apps/backend/src/main.ts
~ apps/frontend/src/App.tsx
Criando commit...
✓ Template atualizado para v1.3.0!
Branch: update/v-1-3-0
Revisione as mudanças e faça merge quando estiver pronto.Arquivos de Configuração
~/.fnd/config.json
Armazena credenciais de autenticação:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"deviceFingerprint": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6...",
"email": "[email protected]"
}.fnd-version
Armazena informações da versão do template no projeto:
{
"templateType": "easyflow",
"version": "1.2.0",
"downloadedAt": "2025-12-18T10:30:00.000Z"
}.fnd-manifest.json
Armazena manifest dos arquivos do template:
{
"version": "1.2.0",
"files": [
{
"path": "docs/plan.md",
"hash": "abc123...",
"size": 1024
}
]
}Segurança
Device Fingerprint
O CLI coleta as seguintes informações para criar o fingerprint do dispositivo:
- Hostname: Nome do computador
- Username: Nome do usuário do sistema
- MAC Address: Endereço MAC da primeira interface de rede não-interna
- Hardware ID:
- Windows: Serial da placa-mãe (via WMIC)
- macOS: Hardware UUID (via system_profiler)
- Linux: Machine ID (/etc/machine-id)
O fingerprint é hasheado localmente usando SHA256 antes de ser enviado ao servidor.
Autenticação
- Token JWT armazenado localmente em
~/.fnd/config.json - Token inclui claim do device fingerprint
- Validação do fingerprint em cada requisição
- OTP enviado por email com validade de 10 minutos
Rate Limiting
O backend implementa rate limiting para prevenir abuso:
- Logins: 5 tentativas por hora
- Downloads: 10 por dia
- IPs únicos: Máximo 3 dispositivos por dia
Mensagens de erro informam o tempo de espera necessário.
Tratamento de Erros
| Código | Mensagem | Ação |
|--------|----------|------|
| 401 | "Sessão inválida. Execute fnd login novamente." | Fazer login novamente |
| 404 | "Template/Email não encontrado." | Verificar tipo do template ou email |
| 429 | "Limite excedido. Tente novamente em X minutos." | Aguardar tempo indicado |
| Network | "Erro de conexão. Verifique sua internet." | Verificar conexão |
Variáveis de Ambiente
FND_API_URL: URL do backend (padrão:http://localhost:3000)
Desenvolvimento
# Instalar dependências
npm install
# Build
npm run build
# Watch mode
npm run dev
# Type checking
npm run typecheck
# Clean
npm run cleanDependências
commander: Framework CLIaxios: Cliente HTTPchalk: Output coloridoinquirer: Prompts interativosadm-zip: Extração de arquivos ZIPsimple-git: Operações Gitcrypto(built-in): Hashing SHA256os(built-in): Informações do sistema
