karnel-termux 4.13.7 → 4.13.9

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 (76) hide show
  1. package/README.md +26 -9
  2. package/install.sh +31 -4
  3. package/karnel/cli/commands/install.sh +18 -6
  4. package/karnel/cli/commands/list.sh +2 -0
  5. package/karnel/cli/commands/reinstall.sh +20 -4
  6. package/karnel/cli/commands/update.sh +11 -6
  7. package/karnel/modules/shell.sh +7 -2
  8. package/karnel/tools/ai/all.sh +1 -0
  9. package/karnel/tools/ai/cline/README.md +9 -0
  10. package/karnel/tools/ai/keelcode/README.md +16 -0
  11. package/karnel/tools/ai/keelcode/install.sh +71 -0
  12. package/karnel/tools/db/redis/README.md +2 -2
  13. package/karnel/tools/deploy/netlify/README.md +9 -0
  14. package/karnel/tools/deploy/railway/README.md +9 -0
  15. package/karnel/tools/deploy/supabase/README.md +9 -0
  16. package/karnel/tools/deploy/vercel/README.md +9 -0
  17. package/karnel/tools/dev/openssh/README.md +1 -1
  18. package/karnel/tools/dev/snyk/README.md +9 -0
  19. package/karnel/tools/dev/tmux/README.md +1 -1
  20. package/karnel/tools/editor/neovim/README.md +2 -3
  21. package/karnel/tools/editor/nvchad/README.md +3 -4
  22. package/karnel/tools/editor/nvchad/install.sh +9 -3
  23. package/karnel/tools/games/arcade/README.md +9 -0
  24. package/karnel/tools/games/buzz/README.md +9 -0
  25. package/karnel/tools/games/ctfgod/README.md +9 -0
  26. package/karnel/tools/games/detective/README.md +9 -0
  27. package/karnel/tools/games/pet-friends/README.md +9 -0
  28. package/karnel/tools/games/tamagotchi/README.md +9 -0
  29. package/karnel/tools/lang/bun/README.md +9 -0
  30. package/karnel/tools/plugins/install.sh +10 -5
  31. package/karnel/tools/security/aircrack-ng/README.md +9 -0
  32. package/karnel/tools/security/amass/README.md +9 -0
  33. package/karnel/tools/security/binwalk/README.md +9 -0
  34. package/karnel/tools/security/burpsuite/README.md +9 -0
  35. package/karnel/tools/security/dirb/README.md +9 -0
  36. package/karnel/tools/security/dnsrecon/README.md +9 -0
  37. package/karnel/tools/security/enum4linux/README.md +9 -0
  38. package/karnel/tools/security/exiftool/README.md +9 -0
  39. package/karnel/tools/security/ffuf/README.md +9 -0
  40. package/karnel/tools/security/foremost/README.md +9 -0
  41. package/karnel/tools/security/gobuster/README.md +9 -0
  42. package/karnel/tools/security/hashcat/README.md +9 -0
  43. package/karnel/tools/security/hydra/README.md +9 -0
  44. package/karnel/tools/security/john/README.md +9 -0
  45. package/karnel/tools/security/masscan/README.md +9 -0
  46. package/karnel/tools/security/metasploit/README.md +9 -0
  47. package/karnel/tools/security/netcat/README.md +9 -0
  48. package/karnel/tools/security/nikto/README.md +9 -0
  49. package/karnel/tools/security/nmap/README.md +9 -0
  50. package/karnel/tools/security/smbclient/README.md +9 -0
  51. package/karnel/tools/security/sqlmap/README.md +9 -0
  52. package/karnel/tools/security/steghide/README.md +9 -0
  53. package/karnel/tools/security/subfinder/README.md +9 -0
  54. package/karnel/tools/security/tcpdump/README.md +9 -0
  55. package/karnel/tools/security/theharvester/README.md +9 -0
  56. package/karnel/tools/security/wafw00f/README.md +9 -0
  57. package/karnel/tools/security/whatweb/README.md +9 -0
  58. package/karnel/tools/security/whois/README.md +9 -0
  59. package/karnel/tools/security/wpscan/README.md +9 -0
  60. package/karnel/tools/security/zap/README.md +9 -0
  61. package/karnel/tools/shell/all.sh +6 -1
  62. package/karnel/tools/shell/better-npm/install.sh +8 -2
  63. package/karnel/tools/shell/fzf-tab/install.sh +8 -2
  64. package/karnel/tools/shell/history-substring/install.sh +8 -2
  65. package/karnel/tools/shell/powerlevel10k/install.sh +8 -2
  66. package/karnel/tools/shell/you-should-use/install.sh +8 -2
  67. package/karnel/tools/shell/zsh-autopair/install.sh +8 -2
  68. package/karnel/tools/shell/zsh-autosuggestions/install.sh +8 -2
  69. package/karnel/tools/shell/zsh-completions/install.sh +8 -2
  70. package/karnel/tools/shell/zsh-defer/install.sh +8 -2
  71. package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +8 -2
  72. package/karnel/tools/utils/all.sh +2 -0
  73. package/karnel/tools/utils/superfile/README.md +19 -0
  74. package/karnel/tools/utils/superfile/install.sh +89 -0
  75. package/karnel/utils/uninstall.sh +18 -0
  76. package/package.json +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://github.com/israelmarques1024-dotcom/karnel-termux">
11
- <img src="https://img.shields.io/badge/version-4.13.7-0078D4?style=for-the-badge" alt="Version">
11
+ <img src="https://img.shields.io/badge/version-4.13.9-0078D4?style=for-the-badge" alt="Version">
12
12
  </a>
13
13
  <a href="https://www.npmjs.com/package/karnel-termux">
14
14
  <img src="https://img.shields.io/npm/v/karnel-termux?style=for-the-badge&logo=npm&color=cb3837" alt="npm">
@@ -33,11 +33,11 @@
33
33
 
34
34
  Created by **Israel Marques**.
35
35
 
36
- - **39 AI agents** for coding — Claude, Gemini, OpenCode, Qoder, Ollama, Goose, Factory Droid, Cline, Puter, OmniRoute and more
36
+ - **41 AI agents** for coding — Claude, Gemini, OpenCode, KeelCode, Qoder, Ollama, Goose, Factory Droid, Cline, Puter, OmniRoute and more
37
37
  - **8 languages** — Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun
38
38
  - **5 databases** — PostgreSQL, MariaDB, SQLite, MongoDB, Redis
39
39
  - **22 dev tools** — gh, curl, fzf, bat, lsd, jq, tmux, openssh, snyk and more
40
- - **11 utility scripts** — fconv, notes, treex, qrcode, zork and more
40
+ - **12 utility tools** — fconv, notes, treex, qrcode, SuperFile, zork and more
41
41
  - **2 network tools** — dark, dedsec-network
42
42
  - **4 deploy CLIs** — Vercel, Railway, Netlify, Supabase
43
43
  - **Responsible OSINT** — Robin v2.8 through Tor with a loopback-only web UI
@@ -105,6 +105,7 @@ karnel
105
105
  | `karnel pg` | PostgreSQL manager |
106
106
  | `karnel init <template>` | Initialize projects with templates |
107
107
  | `karnel deploy` | Deploy projects (Vercel, Railway, Netlify, Supabase) |
108
+ | `karnel supabase` | Manage the Supabase CLI and remote-project helpers |
108
109
  | `karnel robin` | Manage the Robin OSINT service |
109
110
  | `karnel --version` | Show installed version |
110
111
 
@@ -114,7 +115,7 @@ karnel
114
115
  |--------|-------------|--------------|
115
116
  | `lang` | Node.js, Python, Go, Rust, C/C++, PHP, Perl, Bun | `karnel install lang` |
116
117
  | `db` | PostgreSQL, MariaDB, SQLite, MongoDB, Redis | `karnel install db` |
117
- | `ai` | 39 AI agents for coding | `karnel install ai` |
118
+ | `ai` | 41 AI agents for coding, including KeelCode | `karnel install ai` |
118
119
  | `editor` | code-server (VS Code in browser), Neovim, NvChad | `karnel install editor` |
119
120
  | `dev` | gh, curl, fzf, bat, lsd, jq and more | `karnel install dev` |
120
121
  | `npm` | TypeScript, NestJS CLI, Prettier and more | `karnel install npm` |
@@ -124,7 +125,7 @@ karnel
124
125
  | `deploy` | Vercel, Railway, Netlify, Supabase | `karnel install deploy` |
125
126
  | `games` | Buzz, CTF God, Detective, Tamagotchi and more | `karnel install games` |
126
127
  | `network` | Dark Web OSINT, DedSec Network Toolkit | `karnel install network` |
127
- | `utils` | fconv, notes, treex, passman, applaunch, qrcode, zork and more | `karnel install utils` |
128
+ | `utils` | fconv, notes, treex, SuperFile, passman, applaunch, qrcode, zork and more | `karnel install utils` |
128
129
  | `osint` | Robin v2.8, Tor, Streamlit, and LLM providers | `karnel install osint` |
129
130
  | `voice` | Speech-to-agent through Termux:API | `karnel install voice` |
130
131
  | `plugin` | Built-in plugin manager — reviewed registry and local plugins | `karnel plugin search` |
@@ -132,6 +133,20 @@ karnel
132
133
 
133
134
  ---
134
135
 
136
+ ### KeelCode and SuperFile
137
+
138
+ ```bash
139
+ # Install the KeelCode coding agent
140
+ karnel install ai --keelcode
141
+
142
+ # Install the SuperFile terminal file manager
143
+ karnel install utils --superfile
144
+ ```
145
+
146
+ Both tools support `update`, `reinstall`, and `uninstall` with the same module and flag.
147
+
148
+ ---
149
+
135
150
  ## Plugin System
136
151
 
137
152
  Discover and install reviewed plugins from the official registry:
@@ -240,7 +255,7 @@ See the bundled reference with `karnel show osint --robin`.
240
255
 
241
256
  ---
242
257
 
243
- ## AI Agents (39)
258
+ ## AI Agents (41)
244
259
 
245
260
  ```bash
246
261
  karnel install ai # Install all
@@ -292,6 +307,7 @@ karnel install ai --opencode --ollama # Install specific agents
292
307
  | **Factory Droid** | `--droid` | Enterprise AI agent (via proot-distro Ubuntu) |
293
308
  | **Supercode CLI** | `--supercode-cli` | Supercode CLI — official npm package |
294
309
  | **Puter CLI** | `--puter` | Puter CLI for sites and workers |
310
+ | **KeelCode** | `--keelcode` | Hosted coding-agent CLI |
295
311
 
296
312
  </details>
297
313
 
@@ -451,7 +467,8 @@ Deploy your projects directly from terminal:
451
467
  karnel deploy vercel # Deploy to Vercel
452
468
  karnel deploy railway # Deploy to Railway
453
469
  karnel deploy netlify # Deploy to Netlify
454
- karnel deploy supabase # Deploy to Supabase
470
+ karnel supabase doctor # Check Supabase CLI and project setup
471
+ karnel supabase link --project-ref <ref> # Link the current project
455
472
  ```
456
473
 
457
474
  Install a platform CLI first with `karnel install deploy --<tool>`.
@@ -524,7 +541,7 @@ karnel/
524
541
  │ │ └── karnel.sh # Main CLI (with TUI)
525
542
  │ ├── modules/ # Module orchestrators
526
543
  │ ├── tools/ # Tool installers
527
- │ │ ├── ai/ # 39 AI agents
544
+ │ │ ├── ai/ # 41 AI agents
528
545
  │ │ ├── lang/ # 8 languages
529
546
  │ │ ├── db/ # 5 databases
530
547
  │ │ ├── dev/ # 22 dev tools
@@ -534,7 +551,7 @@ karnel/
534
551
  │ │ ├── ui/ # 4 UI components
535
552
  │ │ ├── auto/ # 1 automation tool
536
553
  │ │ ├── network/ # 2 network tools
537
- │ │ ├── utils/ # 11 utility tools
554
+ │ │ ├── utils/ # 12 utility tools
538
555
  │ │ ├── games/ # 6 games
539
556
  │ │ ├── security/ # 30 security tools
540
557
  │ │ └── deploy/ # 4 deploy CLIs
package/install.sh CHANGED
@@ -13,6 +13,7 @@ readonly P_NC='\e[0m'
13
13
 
14
14
  REPO="https://github.com/israelmarques1024-dotcom/karnel-termux"
15
15
  BRANCH="main"
16
+ RELEASE_REF=""
16
17
  KARNEL_DATA="${XDG_DATA_HOME:-$HOME/.local/share}/karnel-data"
17
18
  KARNEL_REPO="${XDG_DATA_HOME:-$HOME/.local/share}/karnel"
18
19
  KARNEL_CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/karnel"
@@ -198,14 +199,26 @@ clone_repo() {
198
199
  fi
199
200
 
200
201
  if [[ $is_dev_install -eq 1 ]]; then
202
+ if [[ -n "$RELEASE_REF" ]]; then
203
+ log_fail "A release ref cannot be installed from a development checkout"
204
+ return 1
205
+ fi
201
206
  KARNEL_REPO="$script_dir"
202
207
  log_info "Developer installation detected"
203
208
  log_ok "Using local repository"
204
209
  elif [[ -d "$KARNEL_REPO/.git" ]]; then
205
210
  progress_bar 3 10
206
- if ! git -C "$KARNEL_REPO" pull origin "$BRANCH" &>/dev/null; then
207
- log_fail "Failed to update existing repository"
208
- return 1
211
+ if [[ -n "$RELEASE_REF" ]]; then
212
+ if ! git -C "$KARNEL_REPO" fetch --depth=1 origin "refs/tags/$BRANCH" &>/dev/null ||
213
+ ! git -C "$KARNEL_REPO" checkout --detach FETCH_HEAD &>/dev/null; then
214
+ log_fail "Failed to update existing repository"
215
+ return 1
216
+ fi
217
+ else
218
+ if ! git -C "$KARNEL_REPO" pull origin "$BRANCH" &>/dev/null; then
219
+ log_fail "Failed to update existing repository"
220
+ return 1
221
+ fi
209
222
  fi
210
223
  progress_bar 10 10
211
224
  echo
@@ -303,6 +316,18 @@ show_final_message() {
303
316
  }
304
317
 
305
318
  main() {
319
+ if [[ $# -eq 2 && "$1" == "--ref" ]]; then
320
+ if [[ ! "$2" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
321
+ echo -e "\n ${P_FAIL}✖${P_NC} Invalid release ref: $2" >&2
322
+ return 1
323
+ fi
324
+ BRANCH="$2"
325
+ RELEASE_REF="$2"
326
+ elif [[ $# -ne 0 ]]; then
327
+ echo -e "\n ${P_FAIL}✖${P_NC} Usage: install.sh [--ref vX.Y.Z]" >&2
328
+ return 1
329
+ fi
330
+
306
331
  if [[ -z "${PREFIX:-}" ]]; then
307
332
  echo -e "\n ${P_FAIL}✖${P_NC} PREFIX is not set. Are you running in Termux?"
308
333
  echo -e " ${P_DIM}This installer requires Termux environment.${P_NC}"
@@ -319,4 +344,6 @@ main() {
319
344
  show_final_message
320
345
  }
321
346
 
322
- main
347
+ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
348
+ main "$@"
349
+ fi
@@ -179,6 +179,7 @@ _install_specific_tools() {
179
179
  local module="$1"
180
180
  shift
181
181
  local -a tools=("$@")
182
+ local failed_count=0
182
183
 
183
184
  case "$module" in
184
185
  ai)
@@ -232,7 +233,7 @@ _install_specific_tools() {
232
233
  ((failed_count++))
233
234
  fi
234
235
  ;;
235
- 1)
236
+ *)
236
237
  ((failed_count++))
237
238
  ;;
238
239
  2)
@@ -288,6 +289,7 @@ _install_specific_tools() {
288
289
  ;;
289
290
  *)
290
291
  log_warn "Unknown database: --$tool"
292
+ ((failed_count++))
291
293
  ;;
292
294
  esac
293
295
  done
@@ -402,6 +404,7 @@ _install_specific_tools() {
402
404
  ;;
403
405
  *)
404
406
  log_warn "Unknown tool: --$tool"
407
+ ((failed_count++))
405
408
  ;;
406
409
  esac
407
410
  done
@@ -452,6 +455,7 @@ _install_specific_tools() {
452
455
  ;;
453
456
  *)
454
457
  log_warn "Unknown game: --$tool"
458
+ ((failed_count++))
455
459
  ;;
456
460
  esac
457
461
  done
@@ -522,6 +526,7 @@ _install_specific_tools() {
522
526
  ;;
523
527
  *)
524
528
  log_warn "Unknown node module: --$tool"
529
+ ((failed_count++))
525
530
  ;;
526
531
  esac
527
532
  done
@@ -580,6 +585,7 @@ _install_specific_tools() {
580
585
  ;;
581
586
  *)
582
587
  log_warn "Unknown language: --$tool"
588
+ ((failed_count++))
583
589
  ;;
584
590
  esac
585
591
  done
@@ -646,6 +652,7 @@ _install_specific_tools() {
646
652
  ;;
647
653
  *)
648
654
  log_warn "Unknown plugin: --$tool"
655
+ ((failed_count++))
649
656
  ;;
650
657
  esac
651
658
  done
@@ -684,6 +691,7 @@ _install_specific_tools() {
684
691
  ;;
685
692
  *)
686
693
  log_warn "Unknown editor component: --$tool"
694
+ ((failed_count++))
687
695
  ;;
688
696
  esac
689
697
  done
@@ -726,6 +734,7 @@ _install_specific_tools() {
726
734
  ;;
727
735
  *)
728
736
  log_warn "Unknown UI component: --$tool"
737
+ ((failed_count++))
729
738
  ;;
730
739
  esac
731
740
  done
@@ -756,6 +765,7 @@ _install_specific_tools() {
756
765
  ;;
757
766
  *)
758
767
  log_warn "Unknown automation tool: --$tool"
768
+ ((failed_count++))
759
769
  ;;
760
770
  esac
761
771
  done
@@ -798,6 +808,7 @@ _install_specific_tools() {
798
808
  ;;
799
809
  *)
800
810
  log_warn "Unknown deploy tool: --$tool"
811
+ ((failed_count++))
801
812
  ;;
802
813
  esac
803
814
  done
@@ -817,21 +828,21 @@ _install_specific_tools() {
817
828
  osint)
818
829
  import "@/tools/osint/robin/common"
819
830
  _robin_print_disclaimer
820
- _batch_tool_action "osint" "install" "${tools[@]}"
831
+ _batch_tool_action "osint" "install" "${tools[@]}" || return 1
821
832
  ;;
822
833
  network)
823
- _batch_tool_action "network" "install" "${tools[@]}"
834
+ _batch_tool_action "network" "install" "${tools[@]}" || return 1
824
835
  ;;
825
836
  utils)
826
- _batch_tool_action "utils" "install" "${tools[@]}"
837
+ _batch_tool_action "utils" "install" "${tools[@]}" || return 1
827
838
  ;;
828
839
  security)
829
- _batch_tool_action "security" "install" "${tools[@]}"
840
+ _batch_tool_action "security" "install" "${tools[@]}" || return 1
830
841
  ;;
831
842
  supabase)
832
843
  import "@/tools/deploy/supabase/install"
833
844
  install_supabase
834
- case $? in 0) log_success "Supabase CLI installed";; 2) log_info "Supabase CLI already installed";; 1) log_error "Failed to install Supabase CLI";; esac
845
+ case $? in 0) log_success "Supabase CLI installed";; 2) log_info "Supabase CLI already installed";; *) log_error "Failed to install Supabase CLI"; return 1;; esac
835
846
  ;;
836
847
  *)
837
848
  log_warn "Unknown install target: $module"
@@ -839,4 +850,5 @@ _install_specific_tools() {
839
850
  return 1
840
851
  ;;
841
852
  esac
853
+ (( ${failed_count:-0} == 0 ))
842
854
  }
@@ -209,6 +209,7 @@ _list_ai() {
209
209
  table_row "Copilot-Termux" "--copilot-termux" "copilot" "$(_check_cmd "copilot")"
210
210
  table_row "Supercode CLI" "--supercode-cli" "supercode" "$(_check_cmd "supercode")"
211
211
  table_row "Puter CLI" "--puter" "puter" "$(_check_cmd "puter")"
212
+ table_row "KeelCode" "--keelcode" "keelcode" "$(_check_cmd "keelcode")"
212
213
  table_end
213
214
 
214
215
  echo
@@ -452,6 +453,7 @@ _list_utils() {
452
453
  table_row "httptmux (API client)" "--httptmux" "httptmux" "$(_check_cmd "httptmux")"
453
454
  table_row "Zork (text adventure)" "--zork" "zork" "$(_check_cmd "zork")"
454
455
  table_row "QR Code Generator" "--qrcode" "qrcode" "$(_check_cmd "qrcode")"
456
+ table_row "SuperFile" "--superfile" "spf" "$(_check_cmd "spf")"
455
457
  table_end
456
458
 
457
459
  echo
@@ -178,6 +178,7 @@ _reinstall_specific_tools() {
178
178
  local module="$1"
179
179
  shift
180
180
  local -a tools=("$@")
181
+ local failed_count=0
181
182
 
182
183
  case "$module" in
183
184
  ai)
@@ -299,6 +300,10 @@ _reinstall_specific_tools() {
299
300
  reinstall_puter
300
301
  case $? in 0) ((reinstalled_count++));; 1) ((failed_count++));; esac
301
302
  ;;
303
+ keelcode)
304
+ reinstall_keelcode
305
+ case $? in 0) ((reinstalled_count++));; 1) ((failed_count++));; esac
306
+ ;;
302
307
  qoder)
303
308
  reinstall_qoder
304
309
  case $? in 0) ((reinstalled_count++));; 1) ((failed_count++));; esac
@@ -349,6 +354,7 @@ _reinstall_specific_tools() {
349
354
  ;;
350
355
  *)
351
356
  log_warn "Unknown AI tool: --$tool"
357
+ ((failed_count++))
352
358
  ;;
353
359
  esac
354
360
  done
@@ -391,6 +397,7 @@ _reinstall_specific_tools() {
391
397
  ;;
392
398
  *)
393
399
  log_warn "Unknown database: --$tool"
400
+ ((failed_count++))
394
401
  ;;
395
402
  esac
396
403
  done
@@ -501,6 +508,7 @@ _reinstall_specific_tools() {
501
508
  ;;
502
509
  *)
503
510
  log_warn "Unknown tool: --$tool"
511
+ ((failed_count++))
504
512
  ;;
505
513
  esac
506
514
  done
@@ -547,6 +555,7 @@ _reinstall_specific_tools() {
547
555
  ;;
548
556
  *)
549
557
  log_warn "Unknown game: --$tool"
558
+ ((failed_count++))
550
559
  ;;
551
560
  esac
552
561
  done
@@ -613,6 +622,7 @@ _reinstall_specific_tools() {
613
622
  ;;
614
623
  *)
615
624
  log_warn "Unknown node module: --$tool"
625
+ ((failed_count++))
616
626
  ;;
617
627
  esac
618
628
  done
@@ -667,6 +677,7 @@ _reinstall_specific_tools() {
667
677
  ;;
668
678
  *)
669
679
  log_warn "Unknown language: --$tool"
680
+ ((failed_count++))
670
681
  ;;
671
682
  esac
672
683
  done
@@ -729,6 +740,7 @@ _reinstall_specific_tools() {
729
740
  ;;
730
741
  *)
731
742
  log_warn "Unknown plugin: --$tool"
743
+ ((failed_count++))
732
744
  ;;
733
745
  esac
734
746
  done
@@ -763,6 +775,7 @@ _reinstall_specific_tools() {
763
775
  ;;
764
776
  *)
765
777
  log_warn "Unknown editor component: --$tool"
778
+ ((failed_count++))
766
779
  ;;
767
780
  esac
768
781
  done
@@ -801,6 +814,7 @@ _reinstall_specific_tools() {
801
814
  ;;
802
815
  *)
803
816
  log_warn "Unknown UI component: --$tool"
817
+ ((failed_count++))
804
818
  ;;
805
819
  esac
806
820
  done
@@ -827,6 +841,7 @@ _reinstall_specific_tools() {
827
841
  ;;
828
842
  *)
829
843
  log_warn "Unknown automation tool: --$tool"
844
+ ((failed_count++))
830
845
  ;;
831
846
  esac
832
847
  done
@@ -843,16 +858,16 @@ _reinstall_specific_tools() {
843
858
  osint)
844
859
  import "@/tools/osint/robin/common"
845
860
  _robin_print_disclaimer
846
- _batch_tool_action "osint" "reinstall" "${tools[@]}"
861
+ _batch_tool_action "osint" "reinstall" "${tools[@]}" || return 1
847
862
  ;;
848
863
  network)
849
- _batch_tool_action "network" "reinstall" "${tools[@]}"
864
+ _batch_tool_action "network" "reinstall" "${tools[@]}" || return 1
850
865
  ;;
851
866
  utils)
852
- _batch_tool_action "utils" "reinstall" "${tools[@]}"
867
+ _batch_tool_action "utils" "reinstall" "${tools[@]}" || return 1
853
868
  ;;
854
869
  security|deploy)
855
- _batch_tool_action "$module" "reinstall" "${tools[@]}"
870
+ _batch_tool_action "$module" "reinstall" "${tools[@]}" || return 1
856
871
  ;;
857
872
  *)
858
873
  log_warn "Unknown reinstall target: $module"
@@ -860,4 +875,5 @@ _reinstall_specific_tools() {
860
875
  return 1
861
876
  ;;
862
877
  esac
878
+ (( ${failed_count:-0} == 0 ))
863
879
  }
@@ -220,7 +220,7 @@ _update_try_curl() {
220
220
 
221
221
  log_info "Trying the official curl installer..."
222
222
 
223
- if ! curl --fail --silent --show-error --location \
223
+ if ! curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
224
224
  "https://api.github.com/repos/israelmarques1024-dotcom/karnel-termux/releases/latest" \
225
225
  -o "$meta"; then
226
226
  rm -f "$meta" "$installer" "$sumfile"
@@ -234,10 +234,10 @@ _update_try_curl() {
234
234
  return 1
235
235
  fi
236
236
 
237
- if ! curl --fail --silent --show-error --location \
237
+ if ! curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
238
238
  "https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/$tag/karnel-termux-install.sh.sha256" \
239
239
  -o "$sumfile" ||
240
- ! curl --fail --silent --show-error --location \
240
+ ! curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
241
241
  "https://github.com/israelmarques1024-dotcom/karnel-termux/releases/download/$tag/karnel-termux-install.sh" \
242
242
  -o "$installer"; then
243
243
  rm -f "$meta" "$installer" "$sumfile"
@@ -252,7 +252,7 @@ _update_try_curl() {
252
252
 
253
253
  rm -f "$meta" "$sumfile"
254
254
 
255
- if bash "$installer"; then
255
+ if bash "$installer" --ref "$tag"; then
256
256
  rm -f "$installer"
257
257
  log_success "Karnel-Termux updated via curl (v$tag)"
258
258
  return 0
@@ -282,8 +282,13 @@ _update_latest_release_tag() {
282
282
  _verify_sha256() {
283
283
  local file="$1" sumfile="$2"
284
284
  local expected actual
285
- expected=$(awk 'NR == 1 { print $1 }' "$sumfile")
286
- [[ -n "$expected" ]] || return 1
285
+ local -a checksum_lines
286
+
287
+ mapfile -t checksum_lines <"$sumfile" || return 1
288
+ if [[ ${#checksum_lines[@]} -ne 1 ]] || [[ ! "${checksum_lines[0]}" =~ ^([0-9a-f]{64})[[:space:]]+\*?karnel-termux-install\.sh$ ]]; then
289
+ return 1
290
+ fi
291
+ expected="${BASH_REMATCH[1]}"
287
292
  if command -v sha256sum &>/dev/null; then
288
293
  actual=$(sha256sum "$file" | awk '{ print $1 }')
289
294
  elif command -v node &>/dev/null; then
@@ -2,6 +2,7 @@
2
2
 
3
3
  import "@/utils/log"
4
4
  import "@/utils/colors"
5
+ import "@/utils/uninstall"
5
6
 
6
7
  ZSH_PLUGINS_DIR="$HOME/.zsh-plugins"
7
8
  OH_MY_ZSH_DIR="$HOME/.oh-my-zsh"
@@ -226,8 +227,12 @@ uninstall_oh_my_zsh() {
226
227
 
227
228
  log_info "Uninstalling Oh My Zsh..."
228
229
 
229
- if rm -rf "$OH_MY_ZSH_DIR" &>>"$LOG_FILE"; then
230
+ local remove_rc=0
231
+ confirm_remove_paths "Oh My Zsh" "$OH_MY_ZSH_DIR" &>>"$LOG_FILE" || remove_rc=$?
232
+ if [[ "$remove_rc" -eq 0 ]]; then
230
233
  log_success "Oh My Zsh uninstalled"
234
+ elif [[ "$remove_rc" -eq 2 ]]; then
235
+ log_info "Oh My Zsh configuration preserved"
231
236
  else
232
237
  log_error "Failed to uninstall Oh My Zsh"
233
238
  return 1
@@ -248,7 +253,7 @@ uninstall_shell() {
248
253
 
249
254
  local rc=0
250
255
  _uninstall_shell_plugins_wrapper || rc=$?
251
- loading "Removing Oh My Zsh" uninstall_oh_my_zsh
256
+ uninstall_oh_my_zsh || rc=1
252
257
 
253
258
  echo
254
259
  separator
@@ -61,6 +61,7 @@ AI_TOOLS_REGISTRY=(
61
61
  "openspec:OpenSpec SDD Framework:openspec"
62
62
  "supercode-cli:Supercode CLI:supercode"
63
63
  "puter:Puter CLI:puter"
64
+ "keelcode:KeelCode:keelcode"
64
65
  "copilot-termux:Copilot-Termux:copilot"
65
66
  "qoder:Qoder:qodercli"
66
67
  "ampcode:AMP Code CLI:amp"
@@ -0,0 +1,9 @@
1
+ # Cline
2
+
3
+ Terminal AI coding assistant installed from the `cline` npm package with an ARM64 glibc wrapper.
4
+
5
+ - Install: `karnel install ai --cline`
6
+ - Update: `karnel update ai --cline`
7
+ - Reinstall: `karnel reinstall ai --cline`
8
+ - Uninstall: `karnel uninstall ai --cline`
9
+ - Executable: `cline`
@@ -0,0 +1,16 @@
1
+ # KeelCode
2
+
3
+ KeelCode is a hosted coding-agent CLI from KeelCode AI.
4
+
5
+ - Official package: `@keelcode-ai/keelcode`
6
+ - Command: `keelcode`
7
+ - Homepage: https://keelcode.ai
8
+
9
+ ## Lifecycle
10
+
11
+ ```bash
12
+ karnel install ai --keelcode
13
+ karnel update ai --keelcode
14
+ karnel reinstall ai --keelcode
15
+ karnel uninstall ai --keelcode
16
+ ```
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env bash
2
+
3
+ import "@/utils/log"
4
+ import "@/utils/version"
5
+
6
+ KEELCODE_PACKAGE="@keelcode-ai/keelcode"
7
+
8
+ install_keelcode() {
9
+ if command -v keelcode &>/dev/null; then
10
+ log_info "KeelCode is already installed"
11
+ return 2
12
+ fi
13
+
14
+ log_info "Installing KeelCode..."
15
+ local output rc
16
+ output="$(npm install -g "$KEELCODE_PACKAGE" 2>&1)"
17
+ rc=$?
18
+ printf '%s\n' "$output" | tail -3
19
+ if ((rc != 0)); then
20
+ log_error "Failed to install KeelCode"
21
+ return 1
22
+ fi
23
+ if ! command -v keelcode &>/dev/null; then
24
+ log_error "KeelCode binary was not found after npm installation"
25
+ return 1
26
+ fi
27
+ command -v termux-fix-shebang &>/dev/null && termux-fix-shebang "$(command -v keelcode)" &>/dev/null || true
28
+ log_success "KeelCode installed"
29
+ }
30
+
31
+ uninstall_keelcode() {
32
+ if ! command -v keelcode &>/dev/null; then
33
+ log_info "KeelCode is not installed"
34
+ return 2
35
+ fi
36
+
37
+ log_info "Uninstalling KeelCode..."
38
+ local output rc
39
+ output="$(npm uninstall -g "$KEELCODE_PACKAGE" 2>&1)"
40
+ rc=$?
41
+ printf '%s\n' "$output" | tail -3
42
+ if ((rc != 0)); then
43
+ log_error "Failed to uninstall KeelCode"
44
+ return 1
45
+ fi
46
+ log_success "KeelCode uninstalled"
47
+ }
48
+
49
+ update_keelcode() {
50
+ _check_update_needed "KeelCode" \
51
+ "$(_get_installed_npm_version "$KEELCODE_PACKAGE")" \
52
+ "$(_get_remote_npm_version "$KEELCODE_PACKAGE")" \
53
+ _do_update_keelcode
54
+ }
55
+
56
+ _do_update_keelcode() {
57
+ local output rc
58
+ output="$(npm update -g "$KEELCODE_PACKAGE" 2>&1)"
59
+ rc=$?
60
+ printf '%s\n' "$output" | tail -3
61
+ if ((rc != 0)); then
62
+ log_error "Failed to update KeelCode"
63
+ return 1
64
+ fi
65
+ command -v keelcode &>/dev/null && command -v termux-fix-shebang &>/dev/null && termux-fix-shebang "$(command -v keelcode)" &>/dev/null || true
66
+ }
67
+
68
+ reinstall_keelcode() {
69
+ uninstall_keelcode || [[ $? -eq 2 ]] || return 1
70
+ install_keelcode
71
+ }
@@ -4,8 +4,8 @@ In-memory data structure store used as database, cache, and message broker
4
4
 
5
5
  **Package:** redis
6
6
  **Author:** israel
7
- **Repository:** https://github.com/israelOfficial/karnel-termux
8
- **Official:** https://redis.io
7
+ **Repository:** https://github.com/israelmarques1024-dotcom/karnel-termux
8
+ **Official:** https://github.com/redis/redis
9
9
  **Type:** Database (pkg)
10
10
  **License:** BSD-3-Clause
11
11
 
@@ -0,0 +1,9 @@
1
+ # Netlify CLI
2
+
3
+ Command-line client installed globally from the `netlify-cli` npm package.
4
+
5
+ - Install: `karnel install deploy --netlify`
6
+ - Update: `karnel update deploy --netlify`
7
+ - Reinstall: `karnel reinstall deploy --netlify`
8
+ - Uninstall: `karnel uninstall deploy --netlify`
9
+ - Executable: `netlify`
@@ -0,0 +1,9 @@
1
+ # Railway CLI
2
+
3
+ Command-line client installed from `@railway/cli`, with an ARM64 binary download fallback.
4
+
5
+ - Install: `karnel install deploy --railway`
6
+ - Update: `karnel update deploy --railway`
7
+ - Reinstall: `karnel reinstall deploy --railway`
8
+ - Uninstall: `karnel uninstall deploy --railway`
9
+ - Executable: `railway`
@@ -0,0 +1,9 @@
1
+ # Supabase CLI
2
+
3
+ Pinned Supabase CLI binary downloaded from the project's GitHub releases with checksum verification when available.
4
+
5
+ - Install: `karnel install deploy --supabase`
6
+ - Update: `karnel update deploy --supabase`
7
+ - Reinstall: `karnel reinstall deploy --supabase`
8
+ - Uninstall: `karnel uninstall deploy --supabase`
9
+ - Executable: `supabase`
@@ -0,0 +1,9 @@
1
+ # Vercel CLI
2
+
3
+ Command-line client installed globally from the `vercel` npm package.
4
+
5
+ - Install: `karnel install deploy --vercel`
6
+ - Update: `karnel update deploy --vercel`
7
+ - Reinstall: `karnel reinstall deploy --vercel`
8
+ - Uninstall: `karnel uninstall deploy --vercel`
9
+ - Executable: `vercel`