jarvis-ai-framework 1.0.0 → 1.0.1
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.
- package/README.md +58 -19
- package/bin/commands/install-rtk.js +27 -10
- package/bin/lib/core/sync-engine.js +1 -1
- package/bin/postinstall.js +1 -1
- package/package.json +1 -1
- package/rules/rtk-rules.md +22 -4
- package/skills/init-jarvis/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -12,7 +12,53 @@
|
|
|
12
12
|
|
|
13
13
|
## Get Started
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
### 1. Instale
|
|
16
|
+
|
|
17
|
+
Global (comando `jarvis` no PATH):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g jarvis-ai-framework
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Só neste workspace** (não sobe no PATH):
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cd workspace-squad/
|
|
27
|
+
npm install jarvis-ai-framework --save-dev
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Confira **onde** o binário ficou no PATH (útil se houver mais de uma instalação):
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
which jarvis
|
|
34
|
+
jarvis --version
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> Quer editar o próprio framework (skills, agents, workflows) e ver as mudanças refletidas na hora? Veja [Desenvolvendo o Jarvis localmente](#desenvolvendo-o-jarvis-localmente) mais abaixo.
|
|
38
|
+
|
|
39
|
+
### 2. Bootstrap da IDE
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
jarvis init --ide cursor
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Se instalou só com `--save-dev`, use `npx jarvis init --ide cursor`.
|
|
46
|
+
|
|
47
|
+
IDEs: `windsurf` · `claude` · `cursor` · `codex` · `opencode` · `gemini` · `kiro`
|
|
48
|
+
|
|
49
|
+
### 3. No chat da IDE
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
/init-jarvis
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Siga o guia do seu papel. Sem `/init-jarvis`, o `ENV.md` não existe e o resto dos comandos não tem contexto.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Desenvolvendo o Jarvis localmente
|
|
60
|
+
|
|
61
|
+
Se você quer editar o framework (skills, agents, workflows) e ver as mudanças refletidas na hora, instale a partir de um clone local em vez do npm registry.
|
|
16
62
|
|
|
17
63
|
### 1. Clone
|
|
18
64
|
|
|
@@ -22,7 +68,7 @@ git clone https://github.com/phelipperibeiro/jarvis-framework.git
|
|
|
22
68
|
|
|
23
69
|
Ou baixe o ZIP e extraia. O path da pasta clonada é o que você usa no passo seguinte.
|
|
24
70
|
|
|
25
|
-
### 2. Instale
|
|
71
|
+
### 2. Instale a partir do clone
|
|
26
72
|
|
|
27
73
|
Global (comando `jarvis` no PATH):
|
|
28
74
|
|
|
@@ -48,7 +94,7 @@ Isso já registra o comando `jarvis` no global. Opcional, para o workspace resol
|
|
|
48
94
|
|
|
49
95
|
```bash
|
|
50
96
|
cd workspace-squad/
|
|
51
|
-
npm link jarvis-framework
|
|
97
|
+
npm link jarvis-ai-framework
|
|
52
98
|
```
|
|
53
99
|
|
|
54
100
|
Confira **onde** o binário ficou no PATH (útil se houver mais de uma instalação):
|
|
@@ -58,29 +104,22 @@ which jarvis
|
|
|
58
104
|
jarvis --version
|
|
59
105
|
```
|
|
60
106
|
|
|
61
|
-
### 3. Bootstrap da IDE
|
|
107
|
+
### 3. Bootstrap da IDE e 4. No chat da IDE
|
|
62
108
|
|
|
63
|
-
|
|
64
|
-
jarvis init --ide cursor
|
|
65
|
-
```
|
|
109
|
+
Mesmos passos 2 e 3 do [Get Started](#get-started) acima — `jarvis init --ide {ide}` e `/init-jarvis` no chat.
|
|
66
110
|
|
|
67
|
-
|
|
111
|
+
---
|
|
68
112
|
|
|
69
|
-
|
|
113
|
+
## Atualizar / sincronizar
|
|
70
114
|
|
|
71
|
-
|
|
115
|
+
**Instalou via npm registry** (fluxo padrão do [Get Started](#get-started)):
|
|
72
116
|
|
|
117
|
+
```bash
|
|
118
|
+
npm install -g jarvis-ai-framework@latest
|
|
119
|
+
jarvis init --ide {ide} # re-sincroniza os assets (agents/skills/workflows/rules)
|
|
73
120
|
```
|
|
74
|
-
/init-jarvis
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Siga o guia do seu papel. Sem `/init-jarvis`, o `ENV.md` não existe e o resto dos comandos não tem contexto.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Atualizar / sincronizar
|
|
82
121
|
|
|
83
|
-
|
|
122
|
+
**Instalou via clone local** (fluxo de [Desenvolvendo o Jarvis localmente](#desenvolvendo-o-jarvis-localmente)) — quando o repo no GitHub ganhar commits novos, sincronize assim:
|
|
84
123
|
|
|
85
124
|
### 1. Atualizar o clone
|
|
86
125
|
|
|
@@ -24,7 +24,7 @@ export async function installRtk(flags) {
|
|
|
24
24
|
try {
|
|
25
25
|
const version = execSync("rtk --version", { encoding: "utf-8" }).trim();
|
|
26
26
|
logger.info(`${GREEN}✓ RTK já instalado: ${version}${NC}`);
|
|
27
|
-
logger.info(`${DIM} Para atualizar: cargo install rtk --force${NC}`);
|
|
27
|
+
logger.info(`${DIM} Para atualizar: cargo install brokk-rtk --force${NC}`);
|
|
28
28
|
logger.info("");
|
|
29
29
|
return;
|
|
30
30
|
} catch {}
|
|
@@ -64,7 +64,7 @@ export async function installRtk(flags) {
|
|
|
64
64
|
logger.info(`${YELLOW}⏳ Instalando RTK via cargo (pode levar alguns minutos)...${NC}`);
|
|
65
65
|
logger.info("");
|
|
66
66
|
try {
|
|
67
|
-
execSync("cargo install rtk", { stdio: "inherit" });
|
|
67
|
+
execSync("cargo install brokk-rtk", { stdio: "inherit" });
|
|
68
68
|
} catch (err) {
|
|
69
69
|
logger.error(`${RED}✗ Falha ao instalar RTK: ${err.message}${NC}`);
|
|
70
70
|
logger.info("");
|
|
@@ -73,14 +73,31 @@ export async function installRtk(flags) {
|
|
|
73
73
|
|
|
74
74
|
// 4. Verificar instalação
|
|
75
75
|
if (commandExists("rtk")) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
try {
|
|
77
|
+
// Validar que é o Token Killer (não Rust Type Kit)
|
|
78
|
+
const helpOutput = execSync("rtk gain --help 2>&1", { encoding: "utf-8" });
|
|
79
|
+
|
|
80
|
+
// Se 'gain' não funcionar, é o crate errado
|
|
81
|
+
if (!helpOutput.toLowerCase().includes("gain") && !helpOutput.toLowerCase().includes("token")) {
|
|
82
|
+
throw new Error("RTK encontrado mas não é o Token Killer (comando 'gain' não funciona)");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const version = execSync("rtk --version", { encoding: "utf-8" }).trim();
|
|
86
|
+
logger.info("");
|
|
87
|
+
logger.info(`${GREEN}✓ RTK instalado com sucesso: ${version}${NC}`);
|
|
88
|
+
logger.info("");
|
|
89
|
+
logger.info(`${YELLOW}Próximo passo:${NC}`);
|
|
90
|
+
logger.info(` Execute ${GREEN}jarvis init${NC} (ou atualize o ENV.md) para ativar ${GREEN}RTK_ENABLED=true${NC}`);
|
|
91
|
+
logger.info(` A rule de economia de tokens será ativada automaticamente.`);
|
|
92
|
+
logger.info("");
|
|
93
|
+
} catch (err) {
|
|
94
|
+
logger.error(`${RED}✗ RTK instalado mas não é o Token Killer${NC}`);
|
|
95
|
+
logger.error(`${RED} Erro: ${err.message}${NC}`);
|
|
96
|
+
logger.info(`${DIM} Possível conflito: crate 'rtk' no crates.io é Rust Type Kit, não Token Killer${NC}`);
|
|
97
|
+
logger.info(`${DIM} Use: cargo install brokk-rtk${NC}`);
|
|
98
|
+
logger.info("");
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
84
101
|
} else {
|
|
85
102
|
logger.error(`${RED}✗ RTK não encontrado no PATH após instalação${NC}`);
|
|
86
103
|
logger.info(`${DIM} Reinicie o terminal e verifique: rtk --version${NC}`);
|
|
@@ -189,7 +189,7 @@ function reconcileRtk(ideDir, targetDir, ide) {
|
|
|
189
189
|
const envPath = join(ideDir, "ENV.md");
|
|
190
190
|
const hasRtk = (() => {
|
|
191
191
|
try {
|
|
192
|
-
execSync("
|
|
192
|
+
execSync("rtk gain --help 2>/dev/null", { stdio: "pipe" });
|
|
193
193
|
return true;
|
|
194
194
|
} catch {
|
|
195
195
|
return false;
|
package/bin/postinstall.js
CHANGED
|
@@ -33,7 +33,7 @@ if (existsSync(lockPath)) {
|
|
|
33
33
|
|
|
34
34
|
// ── Sugestão RTK (sempre, se rtk não estiver instalado) ─────────────────────
|
|
35
35
|
try {
|
|
36
|
-
execSync("
|
|
36
|
+
execSync("rtk gain --help 2>/dev/null", { stdio: "pipe" });
|
|
37
37
|
} catch {
|
|
38
38
|
const { logger } = await import("./lib/utils/logger.js");
|
|
39
39
|
logger.info(` 💡 Dica: instale o RTK para economizar 60-90% dos tokens de shell.`);
|
package/package.json
CHANGED
package/rules/rtk-rules.md
CHANGED
|
@@ -17,11 +17,11 @@ Quando `RTK_ENABLED=true` no ENV.md, use o prefixo `rtk` em chamadas Bash para r
|
|
|
17
17
|
**Antes de executar qualquer comando Bash**, verificar se RTK está disponível:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
rtk gain --help 2>/dev/null
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
- Se RTK estiver no PATH
|
|
24
|
-
- Se RTK **não** estiver no PATH
|
|
23
|
+
- Se RTK estiver no PATH com subcomando `gain`: usar `rtk <comando>` em vez do comando direto
|
|
24
|
+
- Se RTK **não** estiver no PATH ou não suportar `gain`: executar o comando original sem alteração
|
|
25
25
|
|
|
26
26
|
**Fallback gracioso**: nunca falhar por causa do RTK. Se `rtk` não estiver
|
|
27
27
|
instalado ou retornar erro, executar o comando original.
|
|
@@ -47,6 +47,24 @@ O RTK comprime o output automaticamente — o comportamento do comando não muda
|
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
50
|
+
## ⚠️ Conflito de Nome de Crate
|
|
51
|
+
|
|
52
|
+
O crate `rtk` no crates.io é o **Rust Type Kit** (FFI generator), **não** o Token Killer.
|
|
53
|
+
|
|
54
|
+
**Instalar o correto:**
|
|
55
|
+
```bash
|
|
56
|
+
cargo install brokk-rtk
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**NUNCA faça:**
|
|
60
|
+
```bash
|
|
61
|
+
cargo install rtk # ❌ Isso instala Rust Type Kit, não Token Killer
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Use o comando `npx jarvis install-rtk` que valida e instala a ferramenta correta automaticamente.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
50
68
|
## Meta-comandos RTK (usar diretamente)
|
|
51
69
|
|
|
52
70
|
Estes comandos são do próprio RTK e devem ser usados sem proxy:
|
|
@@ -65,4 +83,4 @@ rtk proxy <cmd> # Executar comando sem filtro (debug)
|
|
|
65
83
|
- Comandos interativos que precisam de input do usuário
|
|
66
84
|
- Pipes complexos onde a compressão pode afetar o resultado
|
|
67
85
|
- Quando o comando original precisa de output exato (ex: parsing JSON)
|
|
68
|
-
- Se `
|
|
86
|
+
- Se `rtk gain --help` falhar — usar o comando original silenciosamente
|
|
@@ -591,7 +591,7 @@ Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
|
|
|
591
591
|
**Após as variáveis opcionais**, verificar automaticamente se o RTK está instalado:
|
|
592
592
|
|
|
593
593
|
```bash
|
|
594
|
-
|
|
594
|
+
rtk gain --help 2>/dev/null
|
|
595
595
|
```
|
|
596
596
|
|
|
597
597
|
**Se RTK encontrado no PATH:**
|
|
@@ -605,7 +605,7 @@ which rtk 2>/dev/null
|
|
|
605
605
|
**Se RTK NÃO encontrado:**
|
|
606
606
|
```
|
|
607
607
|
ℹ️ RTK não detectado. Integração desativada.
|
|
608
|
-
Para instalar: cargo install rtk (requer Rust)
|
|
608
|
+
Para instalar: cargo install brokk-rtk (requer Rust)
|
|
609
609
|
→ RTK_ENABLED=false
|
|
610
610
|
```
|
|
611
611
|
|