@victor00128/nexus-cli 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.
- package/README.md +42 -0
- package/bin/nexus.js +50 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# NEXUS
|
|
2
|
+
|
|
3
|
+
Un CLI de coding con IA, **gratis** y **sin cuenta**. Traé tu propia API key de
|
|
4
|
+
OpenRouter (modelos gratis o de pago) y usá cualquier modelo para programar desde
|
|
5
|
+
la terminal — como Claude Code, pero gratis y con tu key.
|
|
6
|
+
|
|
7
|
+
## Instalar
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g nexus-ai-cli
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
> Trae un binario autocontenido (no necesitás instalar Node ni Bun aparte).
|
|
14
|
+
> Esta versión incluye el binario de **Windows x64**.
|
|
15
|
+
|
|
16
|
+
## Usar
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
nexus
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
1. La primera vez, escribí `/key` y pegá tu API key de OpenRouter
|
|
23
|
+
(conseguí una gratis en https://openrouter.ai/keys).
|
|
24
|
+
2. Elegí el modelo con `/model` (DeepSeek por defecto: razonamiento fuerte y barato).
|
|
25
|
+
3. ¡A codear!
|
|
26
|
+
|
|
27
|
+
## Comandos útiles
|
|
28
|
+
|
|
29
|
+
| Comando | Qué hace |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `/key` | Pegá / mirá / borrá tu API key de OpenRouter |
|
|
32
|
+
| `/model` | Elegí el modelo de IA |
|
|
33
|
+
| `/undo` | Revertí las ediciones del último turno del agente |
|
|
34
|
+
| `/bg` | Ver / matar procesos en background |
|
|
35
|
+
| `/help` | Ayuda y atajos |
|
|
36
|
+
|
|
37
|
+
## Características
|
|
38
|
+
|
|
39
|
+
- 🆓 Gratis y sin cuenta — tu key queda solo en tu PC.
|
|
40
|
+
- 🧠 Cualquier modelo de OpenRouter (gratis o de pago).
|
|
41
|
+
- 🔁 Multi-agente: explora, edita y revisa el código.
|
|
42
|
+
- 🪝 Hooks deterministas, 🌐 búsqueda web sin key, ⏪ undo, 🛡️ permisos de seguridad.
|
package/bin/nexus.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// npm bin shim for NEXUS. `npm i -g @victor00128/nexus-cli` wires this up as
|
|
3
|
+
// the `nexus` command; this shim execs the self-contained NEXUS binary (which
|
|
4
|
+
// embeds the Bun runtime + all code) from the platform-specific optional
|
|
5
|
+
// dependency, forwarding args and the real TTY so the terminal UI works. Same
|
|
6
|
+
// pattern esbuild/biome use to ship native binaries over npm.
|
|
7
|
+
const { spawnSync } = require('child_process')
|
|
8
|
+
const path = require('path')
|
|
9
|
+
const fs = require('fs')
|
|
10
|
+
|
|
11
|
+
const key = `${process.platform}-${process.arch}`
|
|
12
|
+
const exeName = process.platform === 'win32' ? 'nexus.exe' : 'nexus'
|
|
13
|
+
|
|
14
|
+
function resolveBinary() {
|
|
15
|
+
// 1. Platform package installed as optionalDependency (the normal path).
|
|
16
|
+
try {
|
|
17
|
+
return require.resolve(`@victor00128/nexus-cli-${key}/bin/${exeName}`)
|
|
18
|
+
} catch {}
|
|
19
|
+
// 2. Legacy/local layout: binary sitting right next to this shim.
|
|
20
|
+
const local = path.join(__dirname, exeName)
|
|
21
|
+
if (fs.existsSync(local)) {
|
|
22
|
+
return local
|
|
23
|
+
}
|
|
24
|
+
return null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const exePath = resolveBinary()
|
|
28
|
+
if (!exePath) {
|
|
29
|
+
console.error(
|
|
30
|
+
`NEXUS: no encontré el binario para tu plataforma (${key}).\n` +
|
|
31
|
+
`Puede que npm haya salteado la dependencia opcional. Probá:\n` +
|
|
32
|
+
` npm i -g @victor00128/nexus-cli-${key}\n` +
|
|
33
|
+
`Si tu plataforma no está publicada, abrí un issue.`,
|
|
34
|
+
)
|
|
35
|
+
process.exit(1)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Tarballs published from Windows don't carry the executable bit — restore it.
|
|
39
|
+
if (process.platform !== 'win32') {
|
|
40
|
+
try {
|
|
41
|
+
fs.chmodSync(exePath, 0o755)
|
|
42
|
+
} catch {}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const result = spawnSync(exePath, process.argv.slice(2), { stdio: 'inherit' })
|
|
46
|
+
if (result.error) {
|
|
47
|
+
console.error(`NEXUS: no se pudo ejecutar el binario: ${result.error.message}`)
|
|
48
|
+
process.exit(1)
|
|
49
|
+
}
|
|
50
|
+
process.exit(result.status ?? 0)
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@victor00128/nexus-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "NEXUS — un CLI de coding con IA, gratis. Traé tu propia API key de OpenRouter (gratis o de pago) y usá cualquier modelo.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"cli",
|
|
8
|
+
"coding-agent",
|
|
9
|
+
"openrouter",
|
|
10
|
+
"llm",
|
|
11
|
+
"terminal"
|
|
12
|
+
],
|
|
13
|
+
"license": "Apache-2.0",
|
|
14
|
+
"bin": {
|
|
15
|
+
"nexus": "bin/nexus.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"bin/nexus.js"
|
|
19
|
+
],
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=16"
|
|
22
|
+
},
|
|
23
|
+
"optionalDependencies": {
|
|
24
|
+
"@victor00128/nexus-cli-win32-x64": "1.0.0",
|
|
25
|
+
"@victor00128/nexus-cli-linux-x64": "1.0.0",
|
|
26
|
+
"@victor00128/nexus-cli-linux-arm64": "1.0.0",
|
|
27
|
+
"@victor00128/nexus-cli-darwin-x64": "1.0.0",
|
|
28
|
+
"@victor00128/nexus-cli-darwin-arm64": "1.0.0"
|
|
29
|
+
}
|
|
30
|
+
}
|