Imagem de capa do projeto: Nexus Aikido Integration EM ANDAMENTO

Resumo técnico

Plugin do NEXUS (categoria Security) que integra a API REST do Aikido: enquanto as functions vivem no app Inngest, o NEXUS aqui consome a API do Aikido (OAuth2 client_credentials) para listar open issue groups (/open-issue-groups), mapear quais já possuem tarefa no NEXUS (SELECT ... FROM tasks WHERE title = ?) e importar como tarefas com prioridade derivada da severidade. Alinha com o princípio de que o workflow/CI é a fonte da verdade — o Aikido é o source, o NEXUS é o sink que materializa as issues no backlog.

Escopo executado

  • Backend backend.php (376 linhas): aikido_get_config()/aikido_save_config() em DB::getConfig('plugin.aikido.config') com client_id, client_secret, region (eu/us/me, default eu), default_project (valida via project_find_by_name); sem tabelas dedicadas (config + history em admin_configs).
  • OAuth2 (aikido_get_auth_token): Authorization: Basic base64(client_id:client_secret), grant_type=client_credentials — 3 endpoints de token por região.
  • REST (aikido_call_api): Bearer <token>, base /api/public/v1 (3 regiões), timeout 15s, CURLOPT_SSL_VERIFYPEER=true.
  • aikido_test_connection: GET /workspace → nome do workspace + plano.
  • aikido_fetch_issues: GET /open-issue-groups?per_page=100 → lista de grupos com flag nx_task (tarefa já existente).
  • aikido_import_issue: GET /issues/groups/{id} (fallback /issues/{id}), título [Aikido] Vulnerabilidade: … (match de duplicata), severity → priority: critical=4 / high=3 / medium=2 / outros=1; descrição rica (rule, tipo, score, arquivo, package, CVE, locations, linhas, commit, "💡 Como Corrigir"); task_create no projeto default; link de volta POST /task_tracking/linkTaskToIssueGroup (best-effort).
  • aikido_cron_check: soft-cron com throttle 1h (plugin.aikido.last_cron.ts), importa até 3 critical/high sem tarefa; salva meta {ts, at, imported, fetch_ok}.
  • API: 5 actions via PluginManager::registerApiAction — aikido_get_config, aikido_save_config, aikido_test_connection, aikido_fetch_issues, aikido_import_issue (Bearer/CSRF).
  • UI Alpine.js (tab.php, 397 linhas + modals.php, 314 linhas): header "Aikido Security" com workspace badge, 5 cards stats filtráveis (Total/Crítico/Alto/Médio/Importadas), busca + filtro tipo (sast/open_source/cloud/surface_monitoring/leaked_secret/iac), tabela de 7 colunas (vuln, tipo, severidade+score, repo/dom, status NEXUS, ação), toast notifications, modais de config/help.
  • cors.php: origens app.aikido.dev/api.aikido.dev no endpoint api — consumido pelo NEXUS CORS.
  • cronjob.json + cli.php: job aikido_import (tick) e CLI para rodar off-line.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config/history em admin_configs; tasks em tasks do core)
  • Alpine.js + Tailwind CSS (premium light)
  • Sistema de plugins do NEXUS (PluginManager)
  • cURL → API pública do Aikido (OAuth2 + Bearer)

Tags operacionais

  • Aikido
  • Segurança
  • Vulnerabilities
  • SAST
  • SCA

Resultado operacional

  • Pipeline de issues→tarefas fechado: open issue groups do Aikido viram tarefas no backlog NEXUS com prioridade correta (critical=4, high=3, medium=2) — priorizando o que importa.
  • Deduplicação por título ([Aikido] Vulnerabilidade: …) evita tarefas repetidas; o link bidirecional (NEXUS→Aikido) segue o status no app Aikido.
  • Sync automático via cronjob (≤3 critical/high por hora, throttle 1h) + CLI para on-demand — sem ação manual.
  • Segurança do secret: OAuth2 client_credentials, HTTPS forçado (CURLOPT_SSL_VERIFYPEER), e o link task↔issue é best-effort (não expõe mais do que o Aikido permite).
  • Integração com o NEXUS CORS: o plugin declara cors.php para app.aikido.dev/api.aikido.dev, com um clique para aplicar via CORS.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin do NEXUS que integra a API REST do Aikido para consulta de vulnerabilidades e importação de issues como tarefas no NEXUS — com OAuth2 client_credentials, open issue groups, severity→priority e sync periódico (cron/CLI).

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.