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()emDB::getConfig('plugin.aikido.config')comclient_id,client_secret,region(eu/us/me, default eu),default_project(valida viaproject_find_by_name); sem tabelas dedicadas (config + history emadmin_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 flagnx_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_createno projeto default; link de voltaPOST /task_tracking/linkTaskToIssueGroup(best-effort).aikido_cron_check: soft-cron com throttle 1h (plugin.aikido.last_cron.ts), importa até 3critical/highsem 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: origensapp.aikido.dev/api.aikido.devno endpoint api — consumido pelo NEXUS CORS.cronjob.json+cli.php: jobaikido_import(tick) e CLI para rodar off-line.
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (config/history em
admin_configs; tasks emtasksdo 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.phpparaapp.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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
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.