Skip to content

isckosta/sentinel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ Sentinel

O guardiΓ£o entre vocΓͺ e o caos

Sentinel Γ© um firewall cognitivo para DevOps β€” um CLI inteligente que intercepta comandos perigosos antes que eles causem desastres, respondendo com humor, consciΓͺncia contextual e educaΓ§Γ£o tΓ©cnica.

License: MIT Node.js Version TypeScript

🎯 Filosofia

Sentinel nΓ£o Γ© apenas um validador de comandos β€” Γ© um mentor tΓ©cnico com personalidade. Ele:

  • 🧠 Educa antes de impedir: Provoca reflexΓ£o tΓ©cnica ao invΓ©s de simplesmente bloquear
  • 🎭 Tem personalidade: Usa humor inteligente e sarcasmo leve para tornar a seguranΓ§a memorΓ‘vel
  • πŸ” Γ‰ contextual: Analisa branch Git, ambiente, horΓ‘rio e padrΓ΅es de risco
  • πŸ“Š Aprende com vocΓͺ: MantΓ©m estatΓ­sticas e histΓ³rico de decisΓ΅es
  • πŸ”Œ Γ‰ extensΓ­vel: Sistema de plugins permite customizaΓ§Γ£o total

πŸš€ InstalaΓ§Γ£o

npm install -g @isckosta/sentinel

⚑ Integração AutomÑtica com o Shell

Para a melhor experiΓͺncia, o Sentinel pode se integrar diretamente ao seu terminal para analisar todos os comandos que vocΓͺ executa, sem a necessidade de digitar sentinel exec.

Execute o comando abaixo para o seu shell (Bash ou Zsh):

# Para Zsh (recomendado)
sentinel init zsh

# Para Bash
sentinel init bash

O comando irΓ‘ gerar um script. Para ativΓ‘-lo, adicione a seguinte linha ao final do seu arquivo de configuraΓ§Γ£o do shell (~/.zshrc para Zsh, ~/.bashrc para Bash):

# Adicione esta linha ao seu ~/.zshrc ou ~/.bashrc
eval "$(sentinel init zsh)" # ou bash

ApΓ³s reiniciar seu terminal, o Sentinel estarΓ‘ ativo e vigiando todos os seus comandos.

πŸ“– Uso Manual (Alternativo)

Se preferir nΓ£o usar a integraΓ§Γ£o automΓ‘tica, vocΓͺ pode invocar o Sentinel manualmente para cada comando.

AnΓ‘lise de Comandos

Execute qualquer comando atravΓ©s do sentinel exec:

sentinel exec prisma migrate reset --force

Ou, como atalho, simplesmente passe o comando diretamente:

sentinel prisma migrate reset --force

πŸ“Š Comandos DisponΓ­veis

  • sentinel stats: Exibe um relatΓ³rio colorido com estatΓ­sticas de uso.
  • sentinel exec <comando...>: Executa um comando sob a supervisΓ£o do Sentinel.
  • sentinel analyze <comando...>: Analisa um comando e retorna um cΓ³digo de status (0 para seguro, 1 para bloqueado) sem executΓ‘-lo. Usado principalmente pela integraΓ§Γ£o com o shell.
  • sentinel init <bash|zsh>: Gera o script de integraΓ§Γ£o para o shell especificado.

Flags Globais

  • -y, --yes: Auto-aprova comandos de baixo risco (safe).
  • -c, --config <path>: Usa um arquivo de configuraΓ§Γ£o sentinel.yml customizado.

🎨 Exemplos

Comando CrΓ­tico Bloqueado

$ rm -rf /

🚨 ALERTA CRÍTICO - COMANDO PERIGOSO DETECTADO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Comando: rm -rf /
Score de Risco: 100/100

Motivos para bloqueio:
  β€’ Isso vai destruir o sistema. PARE IMEDIATAMENTE.
  β€’ RemoΓ§Γ£o recursiva forΓ§ada. Verifique o caminho duas vezes.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

πŸ’‘ Sentinel recomenda:
  β€’ NΓ£o executar este comando. Nunca.
  β€’ Tomar um cafΓ© e repensar suas escolhas.

? VocΓͺ REALMENTE entende as consequΓͺncias deste comando? (y/N)

Comando com Aviso

$ git push --force

⚠️  ALERTA DE RISCO MODERADO
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Comando: git push --force
Score de Risco: 45/100

Motivos:
  β€’ Force push pode reescrever histΓ³ria. Equipe estΓ‘ ciente?
  β€’ Flag --force detectada. Cuidado com o que deseja.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

? Deseja prosseguir mesmo assim? (y/N)

EstatΓ­sticas

$ sentinel stats

╔════════════════════════════════════════════════════════════════╗
β•‘                    πŸ›‘οΈ  SENTINEL STATS                         β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

πŸ“Š VisΓ£o Geral
────────────────────────────────────────────────────────────────
  Total de comandos avaliados:  127
  Comandos executados:          115 (90.6%)
  Comandos bloqueados:          12 (9.4%)

⚠️  Distribuição de Risco
────────────────────────────────────────────────────────────────
  βœ“ Safe:     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘ 98 (77.2%)
  ⚠ Warning:  β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 17 (13.4%)
  βœ– Critical: β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 12 (9.4%)

🚨 Informaçáes de Incidentes
────────────────────────────────────────────────────────────────
  Último incidente:             15 de out, 14:23
  Dias sem autossabotagem:      7 πŸ‘ (Melhorando)

πŸ“œ Eventos Recentes
────────────────────────────────────────────────────────────────
  βœ“ βœ“ out 15, 15:20 safe     npm test
  βœ“ ⚠ out 15, 14:45 warning  git push --force
  βœ— βœ– out 15, 14:23 critical prisma migrate reset --force
  βœ“ βœ“ out 15, 10:30 safe     npm run build
  βœ“ βœ“ out 14, 18:15 safe     git commit -m "fix"

────────────────────────────────────────────────────────────────
  πŸ›‘οΈ  Sentinel estΓ‘ de olho. Continue operando com consciΓͺncia.
────────────────────────────────────────────────────────────────

βš™οΈ ConfiguraΓ§Γ£o

Crie um arquivo sentinel.yml na raiz do seu projeto:

rules:
  - pattern: "*migrate reset*"
    level: critical
    message: "Esse comando parece suicida. Quer pensar de novo?"
    conditions:
      branch: "!main"
      env: "!production"

  - pattern: "*deploy*main*"
    level: critical
    message: "Deploy sem review? TΓ‘ apostando contra o universo?"

  - pattern: "*--force*"
    level: warning
    message: "Flag --force detectada. Cuidado com o que deseja."

plugins:
  - "./plugins/custom-branch-check.js"

NΓ­veis de Risco

  • safe (0-39): Comando seguro, executa automaticamente
  • warning (40-69): Pede confirmaΓ§Γ£o do usuΓ‘rio
  • critical (70-100): Requer confirmaΓ§Γ£o consciente e digitaΓ§Γ£o do comando

CondiΓ§Γ΅es

  • branch: Verifica a branch Git atual (use ! para negar)
  • env: Verifica o ambiente (production, staging, development)
  • time: Verifica horΓ‘rio (implementaΓ§Γ£o futura)

πŸ”Œ Sistema de Plugins

Crie plugins customizados para estender o comportamento do Sentinel:

// plugins/custom-check.js
module.exports = {
  name: 'custom-check',
  
  evaluate: (command, currentScore) => {
    // Ajusta o score baseado em lΓ³gica customizada
    if (command.currentBranch === 'main') {
      return currentScore + 15;
    }
    return currentScore;
  },
  
  onEvent: (event) => {
    // Reage a eventos (opcional)
    if (event.riskLevel === 'critical' && event.executed) {
      console.log('ALERTA: Comando crΓ­tico executado!');
    }
  }
};

πŸ§ͺ HeurΓ­sticas de Risco

Sentinel aplica mΓΊltiplas heurΓ­sticas para calcular o score de risco:

  • Branch principal (+20): OperaΓ§Γ΅es em main ou master
  • Ambiente de produΓ§Γ£o (+25): Comandos em produΓ§Γ£o
  • Flag --force (+30): Uso de flags de forΓ§a
  • Comandos destrutivos (+25): delete, drop, reset, destroy, etc.
  • HorΓ‘rio noturno (+15): Comandos apΓ³s 22h ou antes de 6h
  • Deploy no fim de semana (+20): Deploys em sΓ‘bado ou domingo
  • MigraΓ§Γ΅es de banco (+15): Comandos migrate

πŸ“Š Telemetria

Todos os eventos sΓ£o registrados em ~/.sentinel/:

  • telemetry.log: Log detalhado de todos os comandos
  • stats.json: EstatΓ­sticas agregadas
  • events.json: HistΓ³rico dos ΓΊltimos 1000 eventos

πŸ› οΈ Desenvolvimento

Requisitos

  • Node.js 20+
  • TypeScript 5.9+

Setup

# Clone o repositΓ³rio
git clone https://github.com/isckosta/sentinel.git
cd sentinel

# Instale dependΓͺncias
npm install

# Build
npm run build

# Testes
npm test

# Desenvolvimento
npm run dev

Scripts

  • npm run build: Compila TypeScript
  • npm run start: Executa versΓ£o compilada
  • npm run dev: Executa com ts-node
  • npm test: Roda testes com Jest
  • npm run lint: Verifica cΓ³digo com ESLint
  • npm run release: Cria nova versΓ£o e publica

πŸ§ͺ Testes

npm test

Cobertura de testes inclui:

  • Parsing de comandos
  • CΓ‘lculo de risco
  • Sistema de plugins
  • Telemetria e estatΓ­sticas

πŸ“ Roadmap

  • IntegraΓ§Γ£o com Slack/Discord para alertas
  • Machine learning para detecΓ§Γ£o de padrΓ΅es
  • Modo de aprendizado (observa sem bloquear)
  • Dashboard web para visualizaΓ§Γ£o de mΓ©tricas
  • IntegraΓ§Γ£o com CI/CD pipelines
  • Suporte a mΓΊltiplos times/projetos
  • AnΓ‘lise de impacto baseada em histΓ³rico

🀝 Contribuindo

ContribuiΓ§Γ΅es sΓ£o bem-vindas! Por favor:

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/amazing)
  3. Commit suas mudanΓ§as (git commit -m 'Add amazing feature')
  4. Push para a branch (git push origin feature/amazing)
  5. Abra um Pull Request

πŸ“„ LicenΓ§a

MIT Β© MH Solutions

🎭 Frases do Sentinel

Algumas das mensagens que vocΓͺ pode encontrar:

  • "Esse comando parece suicida. Quer pensar de novo?"
  • "Deploy sem review? TΓ‘ apostando contra o universo?"
  • "Nada de bom acontece depois das 22h."
  • "Deploy no fim de semana? Seus planos merecem mais que isso."
  • "Force push pode reescrever histΓ³ria. Equipe estΓ‘ ciente?"
  • "DROP DATABASE? SΓ©rio? Respire fundo antes de continuar."

πŸ’¬ EpΓ­logo

Sentinel Γ© mais que um CLI β€” Γ© um guardiΓ£o da sanidade DevOps. Um software que transforma descuido em aprendizado e impede desastres antes que virem chamados de suporte.

Slogan: Sentinel β€” o guardiΓ£o entre vocΓͺ e o caos.


Feito com πŸ›‘οΈ e β˜• por Israel C.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •