clawfast 1.0.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 +227 -0
  2. package/dist/clawfast.cjs +70336 -0
  3. package/package.json +30 -0
package/README.md ADDED
@@ -0,0 +1,227 @@
1
+ # HackerAI - CLI local
2
+
3
+ Versao de terminal do HackerAI. Ela reaproveita o prompt e as ferramentas do
4
+ projeto, roda na sua maquina, sem login e sem limites de uso do app web, usando
5
+ suas proprias chaves de modelo.
6
+
7
+ ## Como rodar
8
+
9
+ Na raiz do projeto:
10
+
11
+ ```bash
12
+ corepack pnpm@10.33.2 cli
13
+ # ou, se o pnpm ja estiver no PATH:
14
+ pnpm cli
15
+ ```
16
+
17
+ No Windows tambem da para usar o atalho:
18
+
19
+ ```bat
20
+ cli\hackerai.bat
21
+ ```
22
+
23
+ Esse atalho inicia em modo local aberto: ele define `CLI_SHELL=cmd.exe`,
24
+ `CLI_SHELL_FLAG=/C` e `HACKERAI_CLI_GUARDRAILS=off` apenas para essa sessao.
25
+
26
+ Digite seu pedido e o agente executa comandos no host local. Saia com `/exit`.
27
+
28
+ ## Shell no Windows
29
+
30
+ O CLI escolhe o shell automaticamente:
31
+
32
+ - Windows com Git Bash instalado: usa `bash.exe -c`.
33
+ - Windows sem Git Bash: usa `cmd.exe /C`.
34
+ - Linux/macOS: usa `/bin/bash -c`.
35
+
36
+ Voce pode sobrescrever:
37
+
38
+ ```powershell
39
+ $env:CLI_SHELL="cmd.exe"
40
+ $env:CLI_SHELL_FLAG="/C"
41
+ pnpm cli
42
+ ```
43
+
44
+ Ou apontar para Git Bash:
45
+
46
+ ```powershell
47
+ $env:HACKERAI_BASH_PATH="C:\Program Files\Git\bin\bash.exe"
48
+ pnpm cli
49
+ ```
50
+
51
+ ## Modo local aberto
52
+
53
+ Por padrao, o CLI ainda respeita os guardrails de comandos perigosos. Para uma
54
+ sessao local explicitamente aberta via PowerShell:
55
+
56
+ ```powershell
57
+ $env:CLI_SHELL="cmd.exe"
58
+ $env:CLI_SHELL_FLAG="/C"
59
+ $env:HACKERAI_CLI_GUARDRAILS="off"
60
+ pnpm cli
61
+ ```
62
+
63
+ Isso desliga os guardrails apenas no CLI local. A aplicacao web continua usando
64
+ as configuracoes normais de seguranca.
65
+
66
+ ## Kali, ZAP, Nikto e Nuclei
67
+
68
+ No Windows, o caminho recomendado para ferramentas Kali e usar WSL/Kali. Primeiro
69
+ verifique se a distro existe:
70
+
71
+ ```bat
72
+ wsl -l -v
73
+ ```
74
+
75
+ Se precisar instalar a distro:
76
+
77
+ ```bat
78
+ wsl --install -d kali-linux
79
+ ```
80
+
81
+ Dentro do Kali/WSL, instale os scanners:
82
+
83
+ ```bat
84
+ wsl -d kali-linux -- bash -lc "sudo apt update && sudo apt install -y zaproxy nikto nuclei"
85
+ ```
86
+
87
+ Verifique as ferramentas:
88
+
89
+ ```bat
90
+ wsl -d kali-linux -- bash -lc "zaproxy -h >/dev/null || owasp-zap -h >/dev/null; nikto -Version; nuclei -version"
91
+ ```
92
+
93
+ Exemplos de execucao a partir do Windows `cmd.exe`:
94
+
95
+ ```bat
96
+ wsl -d kali-linux -- bash -lc "cd /mnt/c/Users/Usuario/OneDrive/Documentos/Corel/hackerai/SPRIT && nikto -host https://example.com -nointeractive -maxtime 10m -Format htm -output nikto.html"
97
+ wsl -d kali-linux -- bash -lc "cd /mnt/c/Users/Usuario/OneDrive/Documentos/Corel/hackerai/SPRIT && nuclei -u https://example.com -s low,medium,high,critical -jle nuclei.jsonl -me nuclei_markdown -timeout 10 -retries 1"
98
+ ```
99
+
100
+ Para OWASP ZAP via Docker no Windows `cmd.exe`:
101
+
102
+ ```bat
103
+ docker pull ghcr.io/zaproxy/zaproxy:stable
104
+ docker run --rm -v "%cd%:/zap/wrk/:rw" -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://example.com -r zap_baseline.html -J zap_baseline.json -I
105
+ docker run --rm -v "%cd%:/zap/wrk/:rw" -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t https://example.com -m 5 -r zap_full.html -J zap_full.json -I
106
+ ```
107
+
108
+ ## Scripts e arquivos
109
+
110
+ Scripts e codigo-fonte devem ser criados pela ferramenta de arquivo dentro do
111
+ workspace do agente, normalmente `./SPRIT`. O terminal fica para executar,
112
+ testar, compilar, instalar dependencias e salvar relatorios/logs.
113
+
114
+ O CLI bloqueia criacao de codigo-fonte por comandos como `echo > file.py`,
115
+ `cat <<EOF > file.py`, `tee file.py`, `Set-Content file.py`, `Out-File file.py`
116
+ e `curl -o file.py`. Redirecionamento continua liberado para relatorios como
117
+ `.txt`, `.json`, `.csv`, `.md`, `.html` e `.log`.
118
+
119
+ ## OpenAI e ChatGPT
120
+
121
+ O CLI pode usar a OpenAI oficial por `OPENAI_API_KEY`. Isso nao e login do
122
+ ChatGPT: a API da OpenAI autentica chamadas com credenciais de API no servidor.
123
+ O modelo `chat-latest` foi adicionado como opcao por ser o caminho de API mais
124
+ proximo da experiencia ChatGPT Instant.
125
+
126
+ ## Hugging Face
127
+
128
+ O CLI tambem pode usar o Hugging Face Inference Providers Router por
129
+ `HUGGINGFACE_API_KEY` ou `HF_TOKEN`. Ele usa o endpoint OpenAI-compatible de chat
130
+ completion:
131
+
132
+ ```env
133
+ HUGGINGFACE_API_KEY=...
134
+ HUGGINGFACE_BASE_URL=https://router.huggingface.co/v1
135
+ ```
136
+
137
+ Modelos adicionados:
138
+
139
+ - `Qwen/Qwen3.6-35B-A3B`
140
+ - `zai-org/GLM-5.1-FP8`
141
+ - `deepseek-ai/DeepSeek-V4-Flash`
142
+
143
+ Modelos pedidos mas nao selecionaveis no chat router:
144
+
145
+ - `XiaomiMiMo/MiMo-V2.5-Pro-FP4-DFlash`: substituido por
146
+ `zai-org/GLM-5.1-FP8`, que responde no chat router.
147
+ - `nvidia/DeepSeek-V4-Flash-NVFP4`: o router retorna que nao e um modelo de
148
+ chat. O CLI usa `deepseek-ai/DeepSeek-V4-Flash` como alternativa roteavel.
149
+
150
+ A disponibilidade e o suporte a tool-calling podem variar por modelo/provedor
151
+ no router. Se um modelo da Hugging Face falhar durante uso de ferramentas, use
152
+ `/model auto` ou escolha um modelo OpenRouter/OpenAI no seletor.
153
+
154
+ ## Configuracao
155
+
156
+ As chaves ficam em `../.env.local`, que nao deve ser versionado:
157
+
158
+ ```env
159
+ OPENROUTER_API_KEY=...
160
+ HUGGINGFACE_API_KEY=...
161
+ HUGGINGFACE_BASE_URL=https://router.huggingface.co/v1
162
+ OPENAI_API_KEY=...
163
+ NVIDIA_API_KEY=...
164
+ NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1
165
+ ```
166
+
167
+ Variaveis opcionais:
168
+
169
+ - `CLI_SHELL`: shell usado para executar comandos.
170
+ - `CLI_SHELL_FLAG`: flag de execucao do shell (`-c`, `/C`, `-Command`).
171
+ - `CLI_WORKDIR`: diretorio de trabalho do agente. Padrao: `./SPRIT`.
172
+ - `HACKERAI_BASH_PATH`: caminho para `bash.exe` no Windows.
173
+ - `HACKERAI_CLI_GUARDRAILS`: use `off` para desligar guardrails no CLI.
174
+ - `HACKERAI_CLI_GUARDRAILS_CONFIG`: configuracao manual no formato `id:true`.
175
+ - `HACKERAI_CLI_DUMP_SYSTEM_PROMPT`: use `1` para salvar o prompt completo em
176
+ `SPRIT/system-prompt.txt` ao iniciar o CLI.
177
+
178
+ O CLI carrega o prompt por `import { systemPrompt } from "@/lib/system-prompt"`
179
+ e valida marcadores obrigatorios antes de chamar qualquer modelo. Se o prompt
180
+ vier incompleto, a sessao falha em vez de usar uma versao reduzida. Use
181
+ `/system` para ver o prompt ativo, a fonte e a checagem.
182
+
183
+ ## Modelos
184
+
185
+ A ordem de fallback do CLI e `CLI_MODEL_CHAIN` em
186
+ [`../lib/ai/providers.ts`](../lib/ai/providers.ts):
187
+
188
+ 1. OpenRouter `z-ai/glm-4.5-air:free`
189
+ 2. OpenRouter `qwen/qwen3-coder:free`
190
+ 3. Hugging Face `Qwen/Qwen3.6-35B-A3B`, se `HUGGINGFACE_API_KEY`/`HF_TOKEN`
191
+ estiver configurada
192
+ 4. Hugging Face `zai-org/GLM-5.1-FP8`, se Hugging Face estiver configurada
193
+ 5. Hugging Face `deepseek-ai/DeepSeek-V4-Flash`, se Hugging Face estiver
194
+ configurada
195
+ 6. OpenAI `chat-latest`, se `OPENAI_API_KEY` estiver configurada
196
+
197
+ Somente provedores com chave configurada entram na cadeia. Se um modelo falhar,
198
+ o CLI tenta o proximo automaticamente.
199
+
200
+ `NVIDIA_API_KEY` continua aceito para testes/diagnostico, mas NVIDIA fica fora
201
+ do fallback do agente porque o endpoint atual retorna `500 "'role'"` depois de
202
+ resultados de ferramenta. Para agente com terminal/arquivos, use OpenRouter ou
203
+ OpenAI.
204
+
205
+ Dentro do terminal voce pode escolher o modelo da sessao:
206
+
207
+ ```text
208
+ /model abre o seletor de modelos
209
+ 2 fixa o segundo modelo da lista no seletor
210
+ /model openai
211
+ /model auto volta para fallback automatico
212
+ ```
213
+
214
+ Quando um modelo fica fixo, o CLI usa so ele nas proximas mensagens. O modo
215
+ `auto` volta a tentar a cadeia de fallback na ordem configurada. Dentro do
216
+ seletor, use `cancelar` para sair sem trocar.
217
+
218
+ ## Arquitetura
219
+
220
+ - `index.ts`: REPL do terminal.
221
+ - `src/agent.ts`: monta o `ToolContext`, carrega o system prompt e registra as tools.
222
+ - `src/local-sandbox.ts`: executa comandos via `child_process`/`fs` no host.
223
+ - `src/local-sandbox-manager.ts`: manager minimo que entrega o sandbox local.
224
+ - `src/console-writer.ts`: imprime a saida de terminal das tools no stdout.
225
+
226
+ Convex, WorkOS, Trigger.dev, E2B, Stripe, rate limits e entitlements do app web
227
+ ficam fora do CLI local.