arsenal-agent 0.2.0 → 0.2.2

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/dist/index.js CHANGED
@@ -17,6 +17,14 @@ program
17
17
  .command("setup")
18
18
  .description("instala e configura tudo: brain, opencode, plugins, MCPs, aliases")
19
19
  .action(async () => { await setup(); process.exit(0); });
20
+ program
21
+ .command("update")
22
+ .description("atualiza claude-brain (agentes, memórias, CLAUDE.md)")
23
+ .action(async () => {
24
+ const { setupBrain } = await import("./setup.js");
25
+ await setupBrain();
26
+ process.exit(0);
27
+ });
20
28
  const profileCmd = program.command("profile").description("gerenciar perfis");
21
29
  profileCmd.command("add [name]").description("adicionar perfil").action(async (name) => { await addProfile(name); process.exit(0); });
22
30
  profileCmd.command("list").alias("ls").description("listar perfis").action(() => { listProfiles(); process.exit(0); });
package/dist/setup.js CHANGED
@@ -15,7 +15,7 @@ function run(cmd, opts = {}) {
15
15
  return spawnSync(cmd, { shell: true, stdio: "inherit", ...opts });
16
16
  }
17
17
  // ── 1. claude-brain ──────────────────────────────────────────────────────────
18
- function setupBrain() {
18
+ export function setupBrain() {
19
19
  step("Clonando claude-brain...");
20
20
  if (existsSync(BRAIN_DIR)) {
21
21
  run(`git -C ${BRAIN_DIR} pull --recurse-submodules`);
@@ -31,6 +31,7 @@ function setupBrain() {
31
31
  step("Copiando agentes, commands e memórias...");
32
32
  run(`cp ${BRAIN_DIR}/agents/*.md ${CLAUDE_DIR}/agents/ 2>/dev/null || true`);
33
33
  run(`cp ${BRAIN_DIR}/agents/*.py ${ARSENAL_DIR}/agents/ 2>/dev/null || true`);
34
+ run(`mkdir -p ${ARSENAL_DIR}/scripts && cp ${BRAIN_DIR}/scripts/claude-picker.sh ${ARSENAL_DIR}/scripts/ 2>/dev/null || true`);
34
35
  step("Copiando CLAUDE.md e settings.json...");
35
36
  run(`cp ${BRAIN_DIR}/CLAUDE.md ${CLAUDE_DIR}/CLAUDE.md`);
36
37
  run(`cp ${BRAIN_DIR}/settings.json ${CLAUDE_DIR}/settings.json`);
@@ -50,7 +51,7 @@ function setupOpencode() {
50
51
  step("Configurando ~/.opencode.json...");
51
52
  const config = {
52
53
  $schema: "https://opencode.ai/config.json",
53
- model: "anthropic/claude-sonnet-4-6",
54
+ model: "openrouter/qwen/qwen3-coder-480b-a35b-instruct:free",
54
55
  providers: {
55
56
  anthropic: { name: "Anthropic", apiKey: { env: "ANTHROPIC_API_KEY" } },
56
57
  openrouter: { name: "OpenRouter", apiKey: { env: "OPENROUTER_API_KEY" } },
@@ -71,10 +72,14 @@ function setupOpencode() {
71
72
  },
72
73
  },
73
74
  models: {
74
- "openrouter/nvidia/nemotron-3-super-120b-a12b:free": { name: "Nemotron 120B (Free)", temperature: 0.3 },
75
- "openrouter/nvidia/nemotron-nano-12b-v2-vl:free": { name: "Nemotron Nano (Free)", temperature: 0.3 },
76
- "anthropic/claude-haiku-4-5": { name: "Haiku 4.5 (Econômico)", temperature: 0.3 },
77
- "anthropic/claude-sonnet-4-6": { name: "Sonnet 4.6 (Principal)", temperature: 0.5 },
75
+ "openrouter/nvidia/nemotron-nano-12b-v2-vl:free": { name: "Nemotron Nano 12B (Free) — tasks simples", temperature: 0.3 },
76
+ "openrouter/meta-llama/llama-4-scout:free": { name: "Llama 4 Scout (Free) — tasks medias, baixa latencia", temperature: 0.3 },
77
+ "openrouter/nvidia/nemotron-3-super-120b-a12b:free": { name: "Nemotron 120B (Free) — refactor, explicacoes", temperature: 0.3 },
78
+ "openrouter/google/gemma-4-27b-it:free": { name: "Gemma 4 27B (Free) — raciocinio, multimodal", temperature: 0.3 },
79
+ "openrouter/qwen/qwq-32b:free": { name: "QwQ 32B (Free) — raciocinio forte, debugging", temperature: 0.3 },
80
+ "openrouter/qwen/qwen3-coder-480b-a35b-instruct:free": { name: "Qwen3 Coder 480B (Free) — codigo, agentes", temperature: 0.2 },
81
+ "openrouter/deepseek/deepseek-r1:free": { name: "DeepSeek R1 (Free) — chain-of-thought, arquitetura", temperature: 0.3 },
82
+ "openrouter/meta-llama/llama-4-maverick:free": { name: "Llama 4 Maverick (Free) — geral, instrucoes complexas", temperature: 0.3 },
78
83
  },
79
84
  };
80
85
  writeFileSync(join(HOME, ".opencode.json"), JSON.stringify(config, null, 2));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arsenal-agent",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Task router: classifies and launches claude or opencode automatically",
5
5
  "license": "MIT",
6
6
  "author": "DBC Tech",
package/src/index.tsx CHANGED
@@ -22,6 +22,15 @@ program
22
22
  .description("instala e configura tudo: brain, opencode, plugins, MCPs, aliases")
23
23
  .action(async () => { await setup(); process.exit(0) })
24
24
 
25
+ program
26
+ .command("update")
27
+ .description("atualiza claude-brain (agentes, memórias, CLAUDE.md)")
28
+ .action(async () => {
29
+ const { setupBrain } = await import("./setup.js")
30
+ await setupBrain()
31
+ process.exit(0)
32
+ })
33
+
25
34
  const profileCmd = program.command("profile").description("gerenciar perfis")
26
35
  profileCmd.command("add [name]").description("adicionar perfil").action(async (name) => { await addProfile(name); process.exit(0) })
27
36
  profileCmd.command("list").alias("ls").description("listar perfis").action(() => { listProfiles(); process.exit(0) })
package/src/setup.ts CHANGED
@@ -18,7 +18,7 @@ function run(cmd: string, opts: object = {}) {
18
18
  }
19
19
 
20
20
  // ── 1. claude-brain ──────────────────────────────────────────────────────────
21
- function setupBrain() {
21
+ export function setupBrain() {
22
22
  step("Clonando claude-brain...")
23
23
  if (existsSync(BRAIN_DIR)) {
24
24
  run(`git -C ${BRAIN_DIR} pull --recurse-submodules`)
@@ -35,6 +35,7 @@ function setupBrain() {
35
35
  step("Copiando agentes, commands e memórias...")
36
36
  run(`cp ${BRAIN_DIR}/agents/*.md ${CLAUDE_DIR}/agents/ 2>/dev/null || true`)
37
37
  run(`cp ${BRAIN_DIR}/agents/*.py ${ARSENAL_DIR}/agents/ 2>/dev/null || true`)
38
+ run(`mkdir -p ${ARSENAL_DIR}/scripts && cp ${BRAIN_DIR}/scripts/claude-picker.sh ${ARSENAL_DIR}/scripts/ 2>/dev/null || true`)
38
39
 
39
40
  step("Copiando CLAUDE.md e settings.json...")
40
41
  run(`cp ${BRAIN_DIR}/CLAUDE.md ${CLAUDE_DIR}/CLAUDE.md`)
@@ -56,7 +57,7 @@ function setupOpencode() {
56
57
  step("Configurando ~/.opencode.json...")
57
58
  const config = {
58
59
  $schema: "https://opencode.ai/config.json",
59
- model: "anthropic/claude-sonnet-4-6",
60
+ model: "openrouter/qwen/qwen3-coder-480b-a35b-instruct:free",
60
61
  providers: {
61
62
  anthropic: { name: "Anthropic", apiKey: { env: "ANTHROPIC_API_KEY" } },
62
63
  openrouter: { name: "OpenRouter", apiKey: { env: "OPENROUTER_API_KEY" } },
@@ -77,10 +78,14 @@ function setupOpencode() {
77
78
  },
78
79
  },
79
80
  models: {
80
- "openrouter/nvidia/nemotron-3-super-120b-a12b:free": { name: "Nemotron 120B (Free)", temperature: 0.3 },
81
- "openrouter/nvidia/nemotron-nano-12b-v2-vl:free": { name: "Nemotron Nano (Free)", temperature: 0.3 },
82
- "anthropic/claude-haiku-4-5": { name: "Haiku 4.5 (Econômico)", temperature: 0.3 },
83
- "anthropic/claude-sonnet-4-6": { name: "Sonnet 4.6 (Principal)", temperature: 0.5 },
81
+ "openrouter/nvidia/nemotron-nano-12b-v2-vl:free": { name: "Nemotron Nano 12B (Free) — tasks simples", temperature: 0.3 },
82
+ "openrouter/meta-llama/llama-4-scout:free": { name: "Llama 4 Scout (Free) — tasks medias, baixa latencia", temperature: 0.3 },
83
+ "openrouter/nvidia/nemotron-3-super-120b-a12b:free": { name: "Nemotron 120B (Free) — refactor, explicacoes", temperature: 0.3 },
84
+ "openrouter/google/gemma-4-27b-it:free": { name: "Gemma 4 27B (Free) — raciocinio, multimodal", temperature: 0.3 },
85
+ "openrouter/qwen/qwq-32b:free": { name: "QwQ 32B (Free) — raciocinio forte, debugging", temperature: 0.3 },
86
+ "openrouter/qwen/qwen3-coder-480b-a35b-instruct:free": { name: "Qwen3 Coder 480B (Free) — codigo, agentes", temperature: 0.2 },
87
+ "openrouter/deepseek/deepseek-r1:free": { name: "DeepSeek R1 (Free) — chain-of-thought, arquitetura", temperature: 0.3 },
88
+ "openrouter/meta-llama/llama-4-maverick:free": { name: "Llama 4 Maverick (Free) — geral, instrucoes complexas", temperature: 0.3 },
84
89
  },
85
90
  }
86
91
  writeFileSync(join(HOME, ".opencode.json"), JSON.stringify(config, null, 2))