@oneversec/eversec-rage 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +82 -0
  2. package/dist/cli.js +357 -0
  3. package/package.json +57 -0
package/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # `@oneversec/eversec-rage` — RAGE CLI (ONEVERSEC)
2
+
3
+ Cliente **fino** da plataforma ONEVERSEC, com **TUI estilo Claude Code** (Ink). A caça roda **no cluster**
4
+ (scope-authz + firewall determinístico intactos) — o CLI **nunca** roda engine local. Ele dispara e acompanha
5
+ via a API REST, com um token headless.
6
+
7
+ Stack: **Node + Ink + TypeScript** (o mesmo esquema de Claude Code / Codex / Grok). Referência visual:
8
+ [theswerd/brainless](https://github.com/theswerd/brainless).
9
+
10
+ ## Instalar
11
+
12
+ ```bash
13
+ # global (precisa de Node ≥18 na máquina)
14
+ npm install -g @oneversec/eversec-rage
15
+ eversec-rage
16
+
17
+ # do repo, sem publicar (Node ≥18, o dist já vem buildado)
18
+ npm install -g /home/pablodlz/oneversec/packages/eversec-cli
19
+ ```
20
+
21
+ Sem Node na máquina? Use o **binário standalone** (runtime embutido, nada a instalar):
22
+
23
+ ```bash
24
+ # na NOSSA máquina de build (tem bun):
25
+ cd packages/eversec-cli && bun run compile # gera dist/eversec-rage
26
+ # entregue o binário; o cliente só faz: chmod +x eversec-rage && ./eversec-rage
27
+ ```
28
+
29
+ ## Usar — TUI (default)
30
+
31
+ Rode **`eversec-rage`** sem argumentos. Se não houver token salvo, ele pede ali dentro (colado, mascarado).
32
+ Comandos com `/` (com autocomplete: digite `/` e use Tab):
33
+
34
+ ```
35
+ ╭─────────────────────────────────────────────────────────────╮
36
+ │ eversec-rage · caça pelo terminal │
37
+ │ https://oneversec.com │
38
+ │ a caça roda no cluster · scope-authz + firewall determ. ON │
39
+ ╰─────────────────────────────────────────────────────────────╯
40
+ ──────────────────────────────────────────────────────────────
41
+ ❯ /bounty 5f3a9c21
42
+ ──────────────────────────────────────────────────────────────
43
+ ⏵⏵ / para comandos · tab completa · ctrl+c sai
44
+ ```
45
+
46
+ - `/targets` — alvos autorizados
47
+ - `/bounty <scope_id> [--raso]` — dispara a caça e acompanha ao vivo (spinner de "thinking")
48
+ - `/watch <job_id>` · `/status <job_id>` · `/findings [sev]` · `/login` · `/help` · `/quit`
49
+ - `ctrl+c` durante uma caça = para de acompanhar (não mata a caça no cluster); fora dela = sai.
50
+
51
+ Gerar o token (1×, no navegador): **console → Settings → Perfil → CLI / Tokens de API → Gerar token do CLI**
52
+ (cru aparece **uma vez**). Salvo em `~/.config/rage/config.json` (chmod 600).
53
+
54
+ ## Usar — one-shot (scripts/CI)
55
+
56
+ ```bash
57
+ eversec-rage login --token ovg_xxxx
58
+ eversec-rage targets
59
+ eversec-rage hunt <scope_id> --watch
60
+ eversec-rage watch <job_id>
61
+ eversec-rage status <job_id>
62
+ eversec-rage findings --sev critical
63
+ ```
64
+
65
+ Env em vez de arquivo: `RAGE_TOKEN=ovg_…`, `RAGE_API=https://oneversec.com` (default já é esse).
66
+
67
+ ## Dev
68
+
69
+ ```bash
70
+ bun install
71
+ bun run dev # roda a TUI do fonte
72
+ bun run typecheck # tsc --noEmit
73
+ bun test # contrato REST (stub de fetch)
74
+ bun run build # dist/cli.js (bundle node, o que o npm publica)
75
+ ```
76
+
77
+ ## Notas
78
+
79
+ - **A caça não é local:** `/bounty` cria um job e o inicia no cluster (pod isolado gVisor + NetworkPolicy); o
80
+ CLI acompanha por poll de `GET /jobs/{id}/events`. Sem `/report` — submeter é human-gated no console.
81
+ - **Modo Profundo é o default:** a caça não termina sozinha; `--raso` é o sweep finito.
82
+ - `dist/` é commitado de propósito (o cliente instala com `npm i -g` usando só Node, sem bun).