terminal-jarvis 0.0.80 → 0.0.82
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 +4 -4
- package/config/tools/code.toml +4 -4
- package/config/tools/hermes.toml +60 -0
- package/config/tools/nanocoder.toml +4 -4
- package/config/tools/openclaw.toml +44 -0
- package/config/tools/pi.toml +4 -4
- package/package.json +6 -8
- package/scripts/postinstall.js +30 -9
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Unified command center for AI coding tools**
|
|
6
6
|
|
|
7
|
-
Manage Claude, Gemini, Qwen, and
|
|
7
|
+
Manage Claude, Gemini, Qwen, and 22 more AI assistants from one terminal interface.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/terminal-jarvis)
|
|
10
10
|
[](https://crates.io/crates/terminal-jarvis)
|
|
@@ -54,7 +54,7 @@ brew tap ba-calderonmorales/terminal-jarvis && brew install terminal-jarvis # H
|
|
|
54
54
|
| Feature | Description |
|
|
55
55
|
|:--------|:------------|
|
|
56
56
|
| **Interactive Interface** | Beautiful terminal UI with ASCII art, themed menus, and keyboard navigation for a polished command-line experience. |
|
|
57
|
-
| **
|
|
57
|
+
| **25 AI Tools Supported** | Claude, Gemini, Qwen, OpenCode, Codex, Aider, Goose, Amp, Crush, LLXPRT, and many more - all manageable from a single interface. |
|
|
58
58
|
| **Integrated Installation** | Install, update, or uninstall any supported AI tool directly from the menu without leaving the terminal. |
|
|
59
59
|
| **Session Continuity** | Preserves your terminal session state during browser-based authentication flows. Currently in development with expanding coverage. |
|
|
60
60
|
|
|
@@ -69,7 +69,7 @@ Full guides at **[Terminal Jarvis Docs](https://ba-calderonmorales.github.io/my-
|
|
|
69
69
|
| Guide | Description |
|
|
70
70
|
|:------|:------------|
|
|
71
71
|
| [Installation](https://ba-calderonmorales.github.io/my-life-as-a-dev/latest/projects/active/terminal-jarvis/quick_start/installation/) | Step-by-step platform setup for NPM, Cargo, and Homebrew with troubleshooting tips for common issues. |
|
|
72
|
-
| [AI Tools](https://ba-calderonmorales.github.io/my-life-as-a-dev/latest/projects/active/terminal-jarvis/quick_start/ai-tools/) | Detailed overview of all
|
|
72
|
+
| [AI Tools](https://ba-calderonmorales.github.io/my-life-as-a-dev/latest/projects/active/terminal-jarvis/quick_start/ai-tools/) | Detailed overview of all 25 supported AI coding assistants including authentication requirements and capabilities. |
|
|
73
73
|
| [Configuration](https://ba-calderonmorales.github.io/my-life-as-a-dev/latest/projects/active/terminal-jarvis/quick_start/configuration/) | Customize themes, keybindings, default tools, and environment variables to match your workflow. |
|
|
74
74
|
| [Architecture](https://ba-calderonmorales.github.io/my-life-as-a-dev/latest/projects/active/terminal-jarvis/details/architecture/) | Technical deep-dive into the Rust codebase, module organization, and design decisions. |
|
|
75
75
|
|
|
@@ -83,7 +83,7 @@ terminal-jarvis/
|
|
|
83
83
|
├── src/ # Rust application
|
|
84
84
|
│ ├── main.rs # Entry point
|
|
85
85
|
│ ├── cli.rs # CLI definitions
|
|
86
|
-
│ ├── cli_logic/ # Business logic (
|
|
86
|
+
│ ├── cli_logic/ # Business logic (19 modules)
|
|
87
87
|
│ ├── auth_manager/ # Authentication (8 modules)
|
|
88
88
|
│ ├── config/ # Configuration (6 modules)
|
|
89
89
|
│ ├── services/ # External integrations (6 modules)
|
package/config/tools/code.toml
CHANGED
|
@@ -8,7 +8,7 @@ config_key = "code"
|
|
|
8
8
|
description = "Fork of Codex AI - multi-provider coding agent"
|
|
9
9
|
homepage = "https://github.com/just-every/code"
|
|
10
10
|
documentation = "https://github.com/just-every/code"
|
|
11
|
-
cli_command = "
|
|
11
|
+
cli_command = "coder"
|
|
12
12
|
requires_npm = true
|
|
13
13
|
requires_sudo = false
|
|
14
14
|
status = "experimental"
|
|
@@ -16,13 +16,13 @@ status = "experimental"
|
|
|
16
16
|
[tool.install]
|
|
17
17
|
command = "npm"
|
|
18
18
|
args = ["install", "-g", "@just-every/code"]
|
|
19
|
-
verify_command = "
|
|
20
|
-
post_install_message = "Code installed!
|
|
19
|
+
verify_command = "coder --version"
|
|
20
|
+
post_install_message = "Code installed! Run it with 'coder'."
|
|
21
21
|
|
|
22
22
|
[tool.update]
|
|
23
23
|
command = "npm"
|
|
24
24
|
args = ["update", "-g", "@just-every/code"]
|
|
25
|
-
verify_command = "
|
|
25
|
+
verify_command = "coder --version"
|
|
26
26
|
|
|
27
27
|
[tool.auth]
|
|
28
28
|
env_vars = ["OPENAI_API_KEY"]
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# HERMES AGENT - Nous Research terminal agent
|
|
3
|
+
# =============================================================================
|
|
4
|
+
|
|
5
|
+
[tool]
|
|
6
|
+
display_name = "Hermes Agent"
|
|
7
|
+
config_key = "hermes"
|
|
8
|
+
description = "Nous Research's terminal AI agent with CLI, TUI, tools, skills, and messaging gateway support"
|
|
9
|
+
homepage = "https://hermes-agent.nousresearch.com/"
|
|
10
|
+
documentation = "https://hermes-agent.nousresearch.com/docs/"
|
|
11
|
+
cli_command = "hermes"
|
|
12
|
+
requires_npm = false
|
|
13
|
+
requires_sudo = false
|
|
14
|
+
status = "experimental"
|
|
15
|
+
|
|
16
|
+
[tool.install]
|
|
17
|
+
command = "bash"
|
|
18
|
+
args = [
|
|
19
|
+
"-lc",
|
|
20
|
+
"curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash -s -- --skip-setup",
|
|
21
|
+
]
|
|
22
|
+
verify_command = "hermes --version"
|
|
23
|
+
post_install_message = "Hermes Agent installed successfully! Run 'hermes setup' or 'hermes model' to configure a provider."
|
|
24
|
+
|
|
25
|
+
[tool.update]
|
|
26
|
+
command = "hermes"
|
|
27
|
+
args = ["update"]
|
|
28
|
+
verify_command = "hermes --version"
|
|
29
|
+
|
|
30
|
+
[tool.auth]
|
|
31
|
+
env_vars = [
|
|
32
|
+
"OPENROUTER_API_KEY",
|
|
33
|
+
"AI_GATEWAY_API_KEY",
|
|
34
|
+
"HF_TOKEN",
|
|
35
|
+
"ANTHROPIC_API_KEY",
|
|
36
|
+
"OPENAI_API_KEY",
|
|
37
|
+
"GOOGLE_API_KEY",
|
|
38
|
+
"GEMINI_API_KEY",
|
|
39
|
+
]
|
|
40
|
+
setup_url = "https://hermes-agent.nousresearch.com/docs/integrations/providers/"
|
|
41
|
+
browser_auth = true
|
|
42
|
+
auth_instructions = "Run 'hermes setup', 'hermes model', or set a supported provider key in ~/.hermes/.env. Hermes supports browser/OAuth providers and API-key providers such as OpenRouter, AI Gateway, Hugging Face, Anthropic, OpenAI-compatible endpoints, and Gemini."
|
|
43
|
+
auth_mode = "any"
|
|
44
|
+
default_env_var = "OPENROUTER_API_KEY"
|
|
45
|
+
cli_auth_command = "hermes setup"
|
|
46
|
+
providers = [
|
|
47
|
+
{name = "OpenRouter", env_var = "OPENROUTER_API_KEY", key_hint = "sk-or-*", setup_url = "https://openrouter.ai/keys"},
|
|
48
|
+
{name = "AI Gateway", env_var = "AI_GATEWAY_API_KEY", setup_url = "https://ai-gateway.vercel.sh/"},
|
|
49
|
+
{name = "Hugging Face", env_var = "HF_TOKEN", key_hint = "hf_*", setup_url = "https://huggingface.co/settings/tokens"},
|
|
50
|
+
{name = "Anthropic", env_var = "ANTHROPIC_API_KEY", key_hint = "sk-ant-*", setup_url = "https://console.anthropic.com/"},
|
|
51
|
+
{name = "OpenAI-compatible", env_var = "OPENAI_API_KEY", key_hint = "sk-*", setup_url = "https://platform.openai.com/api-keys"},
|
|
52
|
+
{name = "Google Gemini", env_var = "GOOGLE_API_KEY", key_hint = "AIza*", setup_url = "https://aistudio.google.com/app/apikey"},
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
[tool.features]
|
|
56
|
+
supports_files = true
|
|
57
|
+
supports_streaming = true
|
|
58
|
+
supports_conversation = true
|
|
59
|
+
max_context_tokens = 200000
|
|
60
|
+
supported_languages = ["all"]
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
display_name = "Nanocoder"
|
|
7
7
|
config_key = "nanocoder"
|
|
8
8
|
description = "Local-first coding agent"
|
|
9
|
-
homepage = "https://github.com/
|
|
10
|
-
documentation = "https://github.com/
|
|
9
|
+
homepage = "https://github.com/Nano-Collective/nanocoder"
|
|
10
|
+
documentation = "https://github.com/Nano-Collective/nanocoder"
|
|
11
11
|
cli_command = "nanocoder"
|
|
12
12
|
requires_npm = true
|
|
13
13
|
requires_sudo = false
|
|
@@ -15,13 +15,13 @@ status = "experimental"
|
|
|
15
15
|
|
|
16
16
|
[tool.install]
|
|
17
17
|
command = "npm"
|
|
18
|
-
args = ["install", "-g", "@
|
|
18
|
+
args = ["install", "-g", "@nanocollective/nanocoder"]
|
|
19
19
|
verify_command = "nanocoder --version"
|
|
20
20
|
post_install_message = "Nanocoder installed!"
|
|
21
21
|
|
|
22
22
|
[tool.update]
|
|
23
23
|
command = "npm"
|
|
24
|
-
args = ["update", "-g", "@
|
|
24
|
+
args = ["update", "-g", "@nanocollective/nanocoder"]
|
|
25
25
|
verify_command = "nanocoder --version"
|
|
26
26
|
|
|
27
27
|
[tool.auth]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# OPENCLAW - AI gateway and coding agent
|
|
3
|
+
# =============================================================================
|
|
4
|
+
|
|
5
|
+
[tool]
|
|
6
|
+
display_name = "OpenClaw"
|
|
7
|
+
config_key = "openclaw"
|
|
8
|
+
description = "Open-source AI coding assistant and multi-channel local gateway"
|
|
9
|
+
homepage = "https://openclaw.ai/"
|
|
10
|
+
documentation = "https://docs.openclaw.ai/"
|
|
11
|
+
cli_command = "openclaw"
|
|
12
|
+
requires_npm = true
|
|
13
|
+
requires_sudo = false
|
|
14
|
+
status = "experimental"
|
|
15
|
+
|
|
16
|
+
[tool.install]
|
|
17
|
+
command = "npm"
|
|
18
|
+
args = ["install", "-g", "openclaw"]
|
|
19
|
+
verify_command = "openclaw --version"
|
|
20
|
+
post_install_message = "OpenClaw installed successfully! Run 'openclaw onboard' or 'openclaw setup' to configure providers and gateway settings."
|
|
21
|
+
|
|
22
|
+
[tool.update]
|
|
23
|
+
command = "openclaw"
|
|
24
|
+
args = ["update", "--yes", "--no-restart"]
|
|
25
|
+
verify_command = "openclaw --version"
|
|
26
|
+
|
|
27
|
+
[tool.auth]
|
|
28
|
+
env_vars = ["OPENROUTER_API_KEY"]
|
|
29
|
+
setup_url = "https://docs.openclaw.ai/"
|
|
30
|
+
browser_auth = true
|
|
31
|
+
auth_instructions = "Run 'openclaw onboard' to configure providers. For headless OpenRouter setup, use 'openclaw onboard --auth-choice openrouter-api-key'. OpenClaw can manage local gateway services, ports, webhooks, and token storage, so review gateway and provider settings before enabling persistent services."
|
|
32
|
+
auth_mode = "any"
|
|
33
|
+
default_env_var = "OPENROUTER_API_KEY"
|
|
34
|
+
cli_auth_command = "openclaw onboard"
|
|
35
|
+
providers = [
|
|
36
|
+
{name = "OpenRouter", env_var = "OPENROUTER_API_KEY", key_hint = "sk-or-*", setup_url = "https://openrouter.ai/keys"},
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[tool.features]
|
|
40
|
+
supports_files = true
|
|
41
|
+
supports_streaming = true
|
|
42
|
+
supports_conversation = true
|
|
43
|
+
max_context_tokens = 200000
|
|
44
|
+
supported_languages = ["all"]
|
package/config/tools/pi.toml
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
display_name = "Pi"
|
|
7
7
|
config_key = "pi"
|
|
8
8
|
description = "Terminal-based coding agent"
|
|
9
|
-
homepage = "https://github.com/
|
|
10
|
-
documentation = "https://github.com/
|
|
9
|
+
homepage = "https://github.com/earendil-works/pi-mono"
|
|
10
|
+
documentation = "https://github.com/earendil-works/pi-mono"
|
|
11
11
|
cli_command = "pi"
|
|
12
12
|
requires_npm = true
|
|
13
13
|
requires_sudo = false
|
|
@@ -15,13 +15,13 @@ status = "experimental"
|
|
|
15
15
|
|
|
16
16
|
[tool.install]
|
|
17
17
|
command = "npm"
|
|
18
|
-
args = ["install", "-g", "@
|
|
18
|
+
args = ["install", "-g", "@earendil-works/pi-coding-agent"]
|
|
19
19
|
verify_command = "pi --version"
|
|
20
20
|
post_install_message = "Pi installed!"
|
|
21
21
|
|
|
22
22
|
[tool.update]
|
|
23
23
|
command = "npm"
|
|
24
|
-
args = ["update", "-g", "@
|
|
24
|
+
args = ["update", "-g", "@earendil-works/pi-coding-agent"]
|
|
25
25
|
verify_command = "pi --version"
|
|
26
26
|
|
|
27
27
|
[tool.auth]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "terminal-jarvis",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.82",
|
|
4
4
|
"description": "AI Coding Tools Wrapper - Unified interface for claude-code, gemini-cli, qwen-code, opencode, llxprt, codex, crush, goose, amp, and aider",
|
|
5
5
|
"bin": {
|
|
6
6
|
"terminal-jarvis": "bin/terminal-jarvis"
|
|
@@ -21,18 +21,17 @@
|
|
|
21
21
|
"sync-readme-npm": "npm run generate-tools && cp ../../README.md . && sed -i 's|screenshot_and_demo/|https://raw.githubusercontent.com/BA-CalderonMorales/terminal-jarvis/docs/screenshots_and_demos/screenshots_and_demo/|g' README.md",
|
|
22
22
|
"build-rust": "cd ../.. && cargo build --release",
|
|
23
23
|
"copy-configs": "node ./scripts/copy-configs.js",
|
|
24
|
-
"typecheck": "tsc --noEmit",
|
|
24
|
+
"typecheck": "tsc --noEmit && echo 'TypeScript type check passed'",
|
|
25
25
|
"lint": "biome lint src/",
|
|
26
26
|
"lint:fix": "biome lint --write src/",
|
|
27
27
|
"format": "biome format src/",
|
|
28
28
|
"format:fix": "biome format --write src/",
|
|
29
29
|
"check": "biome check src/",
|
|
30
30
|
"check:fix": "biome check --write src/",
|
|
31
|
-
"test": "vitest run",
|
|
31
|
+
"test": "vitest run --passWithNoTests",
|
|
32
32
|
"test:watch": "vitest",
|
|
33
33
|
"test:ui": "vitest --ui",
|
|
34
34
|
"test:coverage": "vitest run --coverage",
|
|
35
|
-
"typecheck": "tsc --noEmit && echo 'TypeScript type check passed'",
|
|
36
35
|
"test:e2e": "npm run build-rust && vitest run",
|
|
37
36
|
"build": "npm run copy-configs && npm run sync-readme-npm",
|
|
38
37
|
"prepack": "npm run build",
|
|
@@ -61,14 +60,13 @@
|
|
|
61
60
|
"devDependencies": {
|
|
62
61
|
"@biomejs/biome": "2.1.4",
|
|
63
62
|
"@types/node": "22.15.3",
|
|
64
|
-
"@vitest/ui": "
|
|
65
|
-
"cli-testing-library": "3.0.1",
|
|
63
|
+
"@vitest/ui": "4.1.5",
|
|
66
64
|
"string-width": "8.1.0",
|
|
67
65
|
"typescript": "5.9.3",
|
|
68
|
-
"vitest": "
|
|
66
|
+
"vitest": "4.1.5",
|
|
69
67
|
"zod": "3.25.56"
|
|
70
68
|
},
|
|
71
69
|
"engines": {
|
|
72
70
|
"node": ">=16.0.0"
|
|
73
71
|
}
|
|
74
|
-
}
|
|
72
|
+
}
|
package/scripts/postinstall.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- Verify installation
|
|
9
9
|
|
|
10
10
|
Version Hint (used by CI for consistency checks):
|
|
11
|
-
Terminal Jarvis v0.0.
|
|
11
|
+
Terminal Jarvis v0.0.82
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
const fs = require('fs');
|
|
@@ -42,9 +42,7 @@ function error(msg) {
|
|
|
42
42
|
/**
|
|
43
43
|
* Detect platform and return download information
|
|
44
44
|
*/
|
|
45
|
-
function getPlatformInfo() {
|
|
46
|
-
const platform = os.platform();
|
|
47
|
-
const arch = os.arch();
|
|
45
|
+
function getPlatformInfo(platform = os.platform(), arch = os.arch()) {
|
|
48
46
|
|
|
49
47
|
// Map to GitHub release file names
|
|
50
48
|
if (platform === 'darwin' && (arch === 'x64' || arch === 'arm64')) {
|
|
@@ -55,9 +53,9 @@ function getPlatformInfo() {
|
|
|
55
53
|
};
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
if (platform === 'linux' && (arch === 'x64' || arch === 'arm64')) {
|
|
56
|
+
if ((platform === 'linux' || platform === 'android') && (arch === 'x64' || arch === 'arm64')) {
|
|
59
57
|
return {
|
|
60
|
-
name: 'Linux',
|
|
58
|
+
name: platform === 'android' ? 'Android/Termux' : 'Linux',
|
|
61
59
|
file: 'terminal-jarvis-linux.tar.gz',
|
|
62
60
|
isWindows: false
|
|
63
61
|
};
|
|
@@ -193,7 +191,10 @@ function checkPrerequisites() {
|
|
|
193
191
|
const platform = os.platform();
|
|
194
192
|
|
|
195
193
|
if (missing.includes('tar')) {
|
|
196
|
-
if (platform === '
|
|
194
|
+
if (platform === 'android') {
|
|
195
|
+
warn('Install tar using Termux packages:');
|
|
196
|
+
console.log(' pkg update && pkg install -y tar');
|
|
197
|
+
} else if (platform === 'linux') {
|
|
197
198
|
warn('Install tar using your package manager:');
|
|
198
199
|
console.log(' Debian/Ubuntu: sudo apt-get update && sudo apt-get install -y tar');
|
|
199
200
|
console.log(' Fedora/RHEL: sudo dnf install -y tar');
|
|
@@ -215,7 +216,7 @@ function checkPrerequisites() {
|
|
|
215
216
|
/**
|
|
216
217
|
* Main installation workflow - optimized for speed
|
|
217
218
|
*/
|
|
218
|
-
|
|
219
|
+
async function main() {
|
|
219
220
|
const startTime = Date.now();
|
|
220
221
|
|
|
221
222
|
// Skip binary download in CI environments - binary hasn't been released yet
|
|
@@ -326,4 +327,24 @@ function checkPrerequisites() {
|
|
|
326
327
|
// Don't fail npm install completely
|
|
327
328
|
process.exit(0);
|
|
328
329
|
}
|
|
329
|
-
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (require.main === module) {
|
|
333
|
+
void main().catch((err) => {
|
|
334
|
+
error(`Installation failed: ${err && err.message ? err.message : err}`);
|
|
335
|
+
warn('Fallback options:');
|
|
336
|
+
console.log(' 1. Install via cargo: cargo install terminal-jarvis');
|
|
337
|
+
console.log(' 2. Install via Homebrew: brew install ba-calderonmorales/terminal-jarvis/terminal-jarvis');
|
|
338
|
+
console.log(' 3. Download manually from: https://github.com/BA-CalderonMorales/terminal-jarvis/releases');
|
|
339
|
+
|
|
340
|
+
// Don't fail npm install completely
|
|
341
|
+
process.exit(0);
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
module.exports = {
|
|
346
|
+
getPlatformInfo,
|
|
347
|
+
getAssetUrl,
|
|
348
|
+
checkPrerequisites,
|
|
349
|
+
main
|
|
350
|
+
};
|