karnel-termux 0.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/LICENSE +21 -0
- package/README.md +454 -0
- package/install.sh +272 -0
- package/karnel/bin/karnel +77 -0
- package/karnel/cli/commands/brain.sh +1553 -0
- package/karnel/cli/commands/cleanup.sh +66 -0
- package/karnel/cli/commands/doctor.sh +1528 -0
- package/karnel/cli/commands/env.sh +233 -0
- package/karnel/cli/commands/help.sh +8 -0
- package/karnel/cli/commands/ia.sh +502 -0
- package/karnel/cli/commands/init.sh +1274 -0
- package/karnel/cli/commands/install.sh +718 -0
- package/karnel/cli/commands/list.sh +399 -0
- package/karnel/cli/commands/open.sh +106 -0
- package/karnel/cli/commands/pg.sh +719 -0
- package/karnel/cli/commands/reinstall.sh +663 -0
- package/karnel/cli/commands/show.sh +90 -0
- package/karnel/cli/commands/start.sh +54 -0
- package/karnel/cli/commands/status.sh +96 -0
- package/karnel/cli/commands/uninstall.sh +668 -0
- package/karnel/cli/commands/update.sh +723 -0
- package/karnel/cli/commands/upgrade.sh +40 -0
- package/karnel/cli/commands/version.sh +3 -0
- package/karnel/cli/commands/voice.sh +230 -0
- package/karnel/cli/karnel.sh +706 -0
- package/karnel/modules/ai.sh +135 -0
- package/karnel/modules/auto.sh +114 -0
- package/karnel/modules/db.sh +132 -0
- package/karnel/modules/deploy.sh +74 -0
- package/karnel/modules/dev.sh +148 -0
- package/karnel/modules/editor.sh +115 -0
- package/karnel/modules/lang.sh +124 -0
- package/karnel/modules/npm.sh +146 -0
- package/karnel/modules/shell.sh +338 -0
- package/karnel/modules/ui.sh +139 -0
- package/karnel/modules/voice.sh +118 -0
- package/karnel/tools/ai/all.sh +209 -0
- package/karnel/tools/ai/antigravity-cli/README.md +45 -0
- package/karnel/tools/ai/antigravity-cli/bin/agy +28 -0
- package/karnel/tools/ai/antigravity-cli/helper/agy_helper.c +39 -0
- package/karnel/tools/ai/antigravity-cli/install.sh +469 -0
- package/karnel/tools/ai/claude-code/README.md +45 -0
- package/karnel/tools/ai/claude-code/bin/claude +29 -0
- package/karnel/tools/ai/claude-code/helper/claude_helper.c +42 -0
- package/karnel/tools/ai/claude-code/install.sh +278 -0
- package/karnel/tools/ai/cline/install.sh +160 -0
- package/karnel/tools/ai/codegraph/README.md +43 -0
- package/karnel/tools/ai/codegraph/bin/codegraph +5 -0
- package/karnel/tools/ai/codegraph/install.sh +160 -0
- package/karnel/tools/ai/codex/README.md +44 -0
- package/karnel/tools/ai/codex/install.sh +104 -0
- package/karnel/tools/ai/command-code/README.md +62 -0
- package/karnel/tools/ai/command-code/install.sh +136 -0
- package/karnel/tools/ai/crush/README.md +17 -0
- package/karnel/tools/ai/crush/install.sh +89 -0
- package/karnel/tools/ai/ctx7/README.md +26 -0
- package/karnel/tools/ai/ctx7/install.sh +61 -0
- package/karnel/tools/ai/engram/README.md +44 -0
- package/karnel/tools/ai/engram/install.sh +127 -0
- package/karnel/tools/ai/freebuff/README.md +52 -0
- package/karnel/tools/ai/freebuff/bin/freebuff +28 -0
- package/karnel/tools/ai/freebuff/helper/freebuff_helper.c +47 -0
- package/karnel/tools/ai/freebuff/install.sh +303 -0
- package/karnel/tools/ai/gemini-cli/README.md +46 -0
- package/karnel/tools/ai/gemini-cli/install.sh +111 -0
- package/karnel/tools/ai/gentle-ai/README.md +42 -0
- package/karnel/tools/ai/gentle-ai/install.sh +253 -0
- package/karnel/tools/ai/gentle-ai/termux-patches.go +256 -0
- package/karnel/tools/ai/gga/README.md +49 -0
- package/karnel/tools/ai/gga/install.sh +134 -0
- package/karnel/tools/ai/hermes-agent/README.md +50 -0
- package/karnel/tools/ai/hermes-agent/install.sh +120 -0
- package/karnel/tools/ai/kilocode-cli/README.md +45 -0
- package/karnel/tools/ai/kilocode-cli/bin/kilocode +21 -0
- package/karnel/tools/ai/kilocode-cli/helper/kilocode_helper.c +47 -0
- package/karnel/tools/ai/kilocode-cli/install.sh +179 -0
- package/karnel/tools/ai/kimchi-code/README.md +53 -0
- package/karnel/tools/ai/kimchi-code/install.sh +221 -0
- package/karnel/tools/ai/kimi-code/README.md +45 -0
- package/karnel/tools/ai/kimi-code/install.sh +111 -0
- package/karnel/tools/ai/kiro/README.md +17 -0
- package/karnel/tools/ai/kiro/install.sh +134 -0
- package/karnel/tools/ai/mimocode/README.md +43 -0
- package/karnel/tools/ai/mimocode/bin/mimo +28 -0
- package/karnel/tools/ai/mimocode/helper/mimocode_helper.c +47 -0
- package/karnel/tools/ai/mimocode/install.sh +287 -0
- package/karnel/tools/ai/minimax-cli/README.md +45 -0
- package/karnel/tools/ai/minimax-cli/install.sh +111 -0
- package/karnel/tools/ai/mistral-vibe/README.md +46 -0
- package/karnel/tools/ai/mistral-vibe/install.sh +119 -0
- package/karnel/tools/ai/odysseus/README.md +35 -0
- package/karnel/tools/ai/odysseus/install.sh +198 -0
- package/karnel/tools/ai/ollama/README.md +44 -0
- package/karnel/tools/ai/ollama/install.sh +78 -0
- package/karnel/tools/ai/omni-route/README.md +111 -0
- package/karnel/tools/ai/omni-route/install.sh +165 -0
- package/karnel/tools/ai/openclaude/README.md +46 -0
- package/karnel/tools/ai/openclaude/install.sh +110 -0
- package/karnel/tools/ai/openclaw/README.md +47 -0
- package/karnel/tools/ai/openclaw/install.sh +112 -0
- package/karnel/tools/ai/opencode/README.md +51 -0
- package/karnel/tools/ai/opencode/bin/opencode +28 -0
- package/karnel/tools/ai/opencode/helper/opencode_helper.c +57 -0
- package/karnel/tools/ai/opencode/install.sh +290 -0
- package/karnel/tools/ai/openspec/README.md +34 -0
- package/karnel/tools/ai/openspec/install.sh +61 -0
- package/karnel/tools/ai/pi/README.md +46 -0
- package/karnel/tools/ai/pi/install.sh +104 -0
- package/karnel/tools/ai/qwen-code/README.md +45 -0
- package/karnel/tools/ai/qwen-code/install.sh +111 -0
- package/karnel/tools/auto/all.sh +57 -0
- package/karnel/tools/auto/n8n/README.md +47 -0
- package/karnel/tools/auto/n8n/install.sh +102 -0
- package/karnel/tools/db/all.sh +61 -0
- package/karnel/tools/db/mariadb/README.md +43 -0
- package/karnel/tools/db/mariadb/install.sh +65 -0
- package/karnel/tools/db/mongodb/README.md +42 -0
- package/karnel/tools/db/mongodb/install.sh +73 -0
- package/karnel/tools/db/postgresql/README.md +45 -0
- package/karnel/tools/db/postgresql/install.sh +65 -0
- package/karnel/tools/db/redis/README.md +46 -0
- package/karnel/tools/db/redis/install.sh +64 -0
- package/karnel/tools/db/sqlite/README.md +44 -0
- package/karnel/tools/db/sqlite/install.sh +65 -0
- package/karnel/tools/deploy/all.sh +43 -0
- package/karnel/tools/deploy/netlify/install.sh +41 -0
- package/karnel/tools/deploy/railway/install.sh +109 -0
- package/karnel/tools/deploy/vercel/install.sh +43 -0
- package/karnel/tools/dev/all.sh +77 -0
- package/karnel/tools/dev/bat/README.md +44 -0
- package/karnel/tools/dev/bat/install.sh +82 -0
- package/karnel/tools/dev/bc/README.md +44 -0
- package/karnel/tools/dev/bc/install.sh +82 -0
- package/karnel/tools/dev/cloudflared/README.md +43 -0
- package/karnel/tools/dev/cloudflared/install.sh +82 -0
- package/karnel/tools/dev/curl/README.md +43 -0
- package/karnel/tools/dev/curl/install.sh +82 -0
- package/karnel/tools/dev/fzf/README.md +44 -0
- package/karnel/tools/dev/fzf/install.sh +82 -0
- package/karnel/tools/dev/gh/README.md +43 -0
- package/karnel/tools/dev/gh/install.sh +82 -0
- package/karnel/tools/dev/html2text/README.md +44 -0
- package/karnel/tools/dev/html2text/install.sh +82 -0
- package/karnel/tools/dev/imagemagick/README.md +44 -0
- package/karnel/tools/dev/imagemagick/install.sh +82 -0
- package/karnel/tools/dev/jq/README.md +44 -0
- package/karnel/tools/dev/jq/install.sh +82 -0
- package/karnel/tools/dev/lsd/README.md +44 -0
- package/karnel/tools/dev/lsd/install.sh +82 -0
- package/karnel/tools/dev/make/README.md +44 -0
- package/karnel/tools/dev/make/install.sh +82 -0
- package/karnel/tools/dev/ncurses/README.md +42 -0
- package/karnel/tools/dev/ncurses/install.sh +82 -0
- package/karnel/tools/dev/openssh/README.md +43 -0
- package/karnel/tools/dev/openssh/install.sh +75 -0
- package/karnel/tools/dev/proot/README.md +43 -0
- package/karnel/tools/dev/proot/install.sh +82 -0
- package/karnel/tools/dev/shfmt/README.md +44 -0
- package/karnel/tools/dev/shfmt/install.sh +82 -0
- package/karnel/tools/dev/tmate/README.md +44 -0
- package/karnel/tools/dev/tmate/install.sh +82 -0
- package/karnel/tools/dev/tmux/README.md +43 -0
- package/karnel/tools/dev/tmux/install.sh +75 -0
- package/karnel/tools/dev/translate/README.md +44 -0
- package/karnel/tools/dev/translate/install.sh +82 -0
- package/karnel/tools/dev/tree/README.md +44 -0
- package/karnel/tools/dev/tree/install.sh +82 -0
- package/karnel/tools/dev/udocker/README.md +44 -0
- package/karnel/tools/dev/udocker/install.sh +82 -0
- package/karnel/tools/dev/wget/README.md +44 -0
- package/karnel/tools/dev/wget/install.sh +82 -0
- package/karnel/tools/editor/all.sh +59 -0
- package/karnel/tools/editor/code-server/README.md +42 -0
- package/karnel/tools/editor/code-server/install.sh +74 -0
- package/karnel/tools/editor/neovim/README.md +43 -0
- package/karnel/tools/editor/neovim/install.sh +64 -0
- package/karnel/tools/editor/nvchad/README.md +45 -0
- package/karnel/tools/editor/nvchad/install.sh +105 -0
- package/karnel/tools/lang/all.sh +63 -0
- package/karnel/tools/lang/clang/README.md +43 -0
- package/karnel/tools/lang/clang/install.sh +79 -0
- package/karnel/tools/lang/golang/README.md +43 -0
- package/karnel/tools/lang/golang/install.sh +79 -0
- package/karnel/tools/lang/nodejs/README.md +43 -0
- package/karnel/tools/lang/nodejs/install.sh +79 -0
- package/karnel/tools/lang/perl/README.md +43 -0
- package/karnel/tools/lang/perl/install.sh +79 -0
- package/karnel/tools/lang/php/README.md +43 -0
- package/karnel/tools/lang/php/install.sh +79 -0
- package/karnel/tools/lang/python/README.md +43 -0
- package/karnel/tools/lang/python/install.sh +79 -0
- package/karnel/tools/lang/rust/README.md +43 -0
- package/karnel/tools/lang/rust/install.sh +79 -0
- package/karnel/tools/npm/all.sh +90 -0
- package/karnel/tools/npm/live-server/README.md +43 -0
- package/karnel/tools/npm/live-server/install.sh +96 -0
- package/karnel/tools/npm/localtunnel/README.md +43 -0
- package/karnel/tools/npm/localtunnel/install.sh +112 -0
- package/karnel/tools/npm/markserv/README.md +43 -0
- package/karnel/tools/npm/markserv/install.sh +95 -0
- package/karnel/tools/npm/ncu/README.md +43 -0
- package/karnel/tools/npm/ncu/install.sh +95 -0
- package/karnel/tools/npm/nestjs/README.md +43 -0
- package/karnel/tools/npm/nestjs/install.sh +95 -0
- package/karnel/tools/npm/ngrok/README.md +44 -0
- package/karnel/tools/npm/ngrok/install.sh +95 -0
- package/karnel/tools/npm/prettier/README.md +43 -0
- package/karnel/tools/npm/prettier/install.sh +95 -0
- package/karnel/tools/npm/psqlformat/README.md +43 -0
- package/karnel/tools/npm/psqlformat/install.sh +95 -0
- package/karnel/tools/npm/turbopack/README.md +8 -0
- package/karnel/tools/npm/turbopack/install.sh +42 -0
- package/karnel/tools/npm/typescript/README.md +43 -0
- package/karnel/tools/npm/typescript/install.sh +95 -0
- package/karnel/tools/npm/vercel/README.md +43 -0
- package/karnel/tools/npm/vercel/install.sh +95 -0
- package/karnel/tools/shell/all.sh +67 -0
- package/karnel/tools/shell/better-npm/README.md +43 -0
- package/karnel/tools/shell/better-npm/install.sh +85 -0
- package/karnel/tools/shell/fzf-tab/README.md +44 -0
- package/karnel/tools/shell/fzf-tab/install.sh +85 -0
- package/karnel/tools/shell/history-substring/README.md +43 -0
- package/karnel/tools/shell/history-substring/install.sh +85 -0
- package/karnel/tools/shell/powerlevel10k/README.md +43 -0
- package/karnel/tools/shell/powerlevel10k/install.sh +85 -0
- package/karnel/tools/shell/you-should-use/README.md +43 -0
- package/karnel/tools/shell/you-should-use/install.sh +85 -0
- package/karnel/tools/shell/zsh-autopair/README.md +44 -0
- package/karnel/tools/shell/zsh-autopair/install.sh +85 -0
- package/karnel/tools/shell/zsh-autosuggestions/README.md +43 -0
- package/karnel/tools/shell/zsh-autosuggestions/install.sh +85 -0
- package/karnel/tools/shell/zsh-completions/README.md +43 -0
- package/karnel/tools/shell/zsh-completions/install.sh +85 -0
- package/karnel/tools/shell/zsh-defer/README.md +43 -0
- package/karnel/tools/shell/zsh-defer/install.sh +85 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/README.md +43 -0
- package/karnel/tools/shell/zsh-syntax-highlighting/install.sh +72 -0
- package/karnel/tools/ui/all.sh +61 -0
- package/karnel/tools/ui/banner/README.md +42 -0
- package/karnel/tools/ui/banner/install.sh +160 -0
- package/karnel/tools/ui/cursor/README.md +42 -0
- package/karnel/tools/ui/cursor/install.sh +58 -0
- package/karnel/tools/ui/extra-keys/README.md +43 -0
- package/karnel/tools/ui/extra-keys/install.sh +62 -0
- package/karnel/tools/ui/font/README.md +43 -0
- package/karnel/tools/ui/font/install.sh +63 -0
- package/karnel/tools/voice/all.sh +27 -0
- package/karnel/tools/voice/install.sh +10 -0
- package/karnel/tools/voice/uninstall.sh +8 -0
- package/karnel/utils/banner.sh +492 -0
- package/karnel/utils/bootstrap.sh +25 -0
- package/karnel/utils/colors.sh +33 -0
- package/karnel/utils/dialogrc +30 -0
- package/karnel/utils/env.sh +53 -0
- package/karnel/utils/log.sh +567 -0
- package/karnel/utils/version.sh +205 -0
- package/package.json +42 -0
- package/scripts/npm-install.js +60 -0
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Importar funciones de log y colores para el help
|
|
4
|
+
import "@/utils/log"
|
|
5
|
+
import "@/utils/colors"
|
|
6
|
+
|
|
7
|
+
karnel_main() {
|
|
8
|
+
local cmd="$1"
|
|
9
|
+
shift || true
|
|
10
|
+
|
|
11
|
+
# si no se pasa comando
|
|
12
|
+
if [[ -z "$cmd" ]]; then
|
|
13
|
+
if [[ -t 0 ]]; then
|
|
14
|
+
karnel_tui
|
|
15
|
+
else
|
|
16
|
+
karnel_help
|
|
17
|
+
fi
|
|
18
|
+
return
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# special case: --version
|
|
22
|
+
if [[ "$cmd" == "--version" ]]; then
|
|
23
|
+
import "@/cli/commands/version"
|
|
24
|
+
version_main
|
|
25
|
+
return
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# reject any command name that is not a plain identifier (path-traversal guard)
|
|
29
|
+
if [[ "$cmd" != */* && "$cmd" != *".."* && "$cmd" != .* && "$cmd" =~ ^[a-zA-Z0-9_-]+$ ]]; then
|
|
30
|
+
:
|
|
31
|
+
else
|
|
32
|
+
log_error "Command not found: $cmd"
|
|
33
|
+
echo
|
|
34
|
+
karnel_help
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
local command_file="$KARNEL_PATH/cli/commands/$cmd.sh"
|
|
39
|
+
|
|
40
|
+
# verificar si existe el comando
|
|
41
|
+
if [[ -f "$command_file" ]]; then
|
|
42
|
+
import "@/cli/commands/$cmd"
|
|
43
|
+
"${cmd}_main" "$@"
|
|
44
|
+
else
|
|
45
|
+
log_error "Command not found: $cmd"
|
|
46
|
+
echo
|
|
47
|
+
karnel_help
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
karnel_help() {
|
|
53
|
+
echo
|
|
54
|
+
box "◈ KARNEL v${KARNEL_VERSION} ◈"
|
|
55
|
+
echo
|
|
56
|
+
log_info "Usage: karnel <command> [options]"
|
|
57
|
+
echo
|
|
58
|
+
separator_section "Available Commands"
|
|
59
|
+
echo
|
|
60
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "--version" "Show current version"
|
|
61
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "brain" "Second brain — save and search memories"
|
|
62
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "cleanup" "Clean caches, logs, and temp files"
|
|
63
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "env" "Manage environment variables"
|
|
64
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "install" "Install modules and packages"
|
|
65
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "show" "Show tool documentation"
|
|
66
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "update" "Update modules or framework"
|
|
67
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "uninstall" "Remove installed modules"
|
|
68
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "reinstall" "Uninstall + install modules"
|
|
69
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "open" "Open documentation in browser"
|
|
70
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "list" "List available tools in modules"
|
|
71
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "pg" "PostgreSQL database manager"
|
|
72
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "status" "Quick system overview"
|
|
73
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "doctor" "Diagnose and fix environment"
|
|
74
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "doctor --quick" "Quick diagnostics (skip slow checks)"
|
|
75
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "cleanup" "Clean caches, logs, and temp files"
|
|
76
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "upgrade" "Upgrade Karnel framework"
|
|
77
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "init" "Configure existing projects"
|
|
78
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "start" "Start services (editor, etc.)"
|
|
79
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "voice" "Speech-to-agent via microphone"
|
|
80
|
+
printf " ${D_CYAN}%-12s${NC} %s\n" "ia" "AI agent manager — sessions, install, routes"
|
|
81
|
+
echo
|
|
82
|
+
separator_section "Quick Start"
|
|
83
|
+
echo
|
|
84
|
+
list_item "Run: ${D_CYAN}karnel${NC} to see available commands"
|
|
85
|
+
list_item "Run: ${D_CYAN}karnel open${NC} for official documentation"
|
|
86
|
+
list_item "Run: ${D_CYAN}karnel install <module>${NC} to install modules"
|
|
87
|
+
echo
|
|
88
|
+
separator_section "Module Targets"
|
|
89
|
+
echo
|
|
90
|
+
log_info "Install, update, reinstall, uninstall, list, show or open:"
|
|
91
|
+
echo
|
|
92
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "lang" "Node, Python, Perl, PHP, Rust, C/C++, Go"
|
|
93
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "db" "PostgreSQL, MariaDB, SQLite, MongoDB"
|
|
94
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "ai" "OpenCode, Gentle AI, Claude Code, etc."
|
|
95
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "editor" "code-server (VS Code in browser)"
|
|
96
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "dev" "GitHub CLI, wget, curl, fzf, etc."
|
|
97
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "npm" "Node.js global npm packages"
|
|
98
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "shell" "ZSH + Oh My Zsh + 10 plugins"
|
|
99
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "ui" "Font, Cursor, Extra-keys, Banner"
|
|
100
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "auto" "Automation Tools (n8n)"
|
|
101
|
+
printf " ${D_GREEN}%-10s${NC} %s\n" "deploy" "Vercel, Railway, Netlify CLIs"
|
|
102
|
+
|
|
103
|
+
echo
|
|
104
|
+
separator_section "Help"
|
|
105
|
+
echo
|
|
106
|
+
list_item "Run ${D_CYAN}karnel <command>${NC} for command-specific help"
|
|
107
|
+
list_item "Example: ${D_CYAN}karnel pg${NC}, ${D_CYAN}karnel init${NC}"
|
|
108
|
+
list_item "Docs: ${D_CYAN}karnel open${NC} — israel marques 🇧🇷 (12y)"
|
|
109
|
+
echo
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
# =====================
|
|
113
|
+
# TUI Functions (dialog/whiptail)
|
|
114
|
+
# =====================
|
|
115
|
+
|
|
116
|
+
karnel_tui() {
|
|
117
|
+
local TUI_BIN=""
|
|
118
|
+
if command -v dialog &>/dev/null; then
|
|
119
|
+
TUI_BIN="dialog"
|
|
120
|
+
elif command -v whiptail &>/dev/null; then
|
|
121
|
+
TUI_BIN="whiptail"
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
if [[ -z "$TUI_BIN" ]] || [[ ! -t 0 ]] || [[ ! -w /dev/tty ]]; then
|
|
125
|
+
karnel_fallback_tui
|
|
126
|
+
return
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
_tui_main_menu
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
_dialog_menu() {
|
|
133
|
+
local title="$1"
|
|
134
|
+
local prompt="$2"
|
|
135
|
+
shift 2
|
|
136
|
+
local options=("$@")
|
|
137
|
+
local choice
|
|
138
|
+
local menu_height=20
|
|
139
|
+
local menu_width=65
|
|
140
|
+
local list_height=$(( ${#options[@]} / 2 ))
|
|
141
|
+
if (( list_height > 18 )); then list_height=18; fi
|
|
142
|
+
if (( list_height < 6 )); then list_height=6; fi
|
|
143
|
+
if [[ "$TUI_BIN" == "dialog" ]]; then
|
|
144
|
+
choice=$(dialog --clear --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --menu "$prompt" $menu_height $menu_width $list_height "${options[@]}" 2>&1 >/dev/tty)
|
|
145
|
+
else
|
|
146
|
+
choice=$(whiptail --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --menu "$prompt" $menu_height $menu_width $list_height "${options[@]}" 2>&1 >/dev/tty)
|
|
147
|
+
fi
|
|
148
|
+
local exit_status=$?
|
|
149
|
+
echo "$choice"
|
|
150
|
+
return $exit_status
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
_dialog_checklist() {
|
|
154
|
+
local title="$1"
|
|
155
|
+
local prompt="$2"
|
|
156
|
+
shift 2
|
|
157
|
+
local options=("$@")
|
|
158
|
+
local selections
|
|
159
|
+
local list_height=$(( ${#options[@]} / 3 ))
|
|
160
|
+
if (( list_height > 18 )); then list_height=18; fi
|
|
161
|
+
if (( list_height < 6 )); then list_height=6; fi
|
|
162
|
+
if [[ "$TUI_BIN" == "dialog" ]]; then
|
|
163
|
+
selections=$(dialog --clear --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --checklist "$prompt" 24 70 $list_height "${options[@]}" 2>&1 >/dev/tty)
|
|
164
|
+
else
|
|
165
|
+
selections=$(whiptail --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --checklist "$prompt" 24 70 $list_height "${options[@]}" 2>&1 >/dev/tty)
|
|
166
|
+
fi
|
|
167
|
+
local exit_status=$?
|
|
168
|
+
echo "$selections"
|
|
169
|
+
return $exit_status
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
_dialog_input() {
|
|
173
|
+
local title="$1"
|
|
174
|
+
local prompt="$2"
|
|
175
|
+
local init_val="$3"
|
|
176
|
+
local text
|
|
177
|
+
if [[ "$TUI_BIN" == "dialog" ]]; then
|
|
178
|
+
text=$(dialog --clear --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --inputbox "$prompt" 10 60 "$init_val" 2>&1 >/dev/tty)
|
|
179
|
+
else
|
|
180
|
+
text=$(whiptail --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --inputbox "$prompt" 10 60 "$init_val" 2>&1 >/dev/tty)
|
|
181
|
+
fi
|
|
182
|
+
local exit_status=$?
|
|
183
|
+
echo "$text"
|
|
184
|
+
return $exit_status
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
_dialog_yesno() {
|
|
188
|
+
local title="$1"
|
|
189
|
+
local prompt="$2"
|
|
190
|
+
if [[ "$TUI_BIN" == "dialog" ]]; then
|
|
191
|
+
dialog --clear --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --yesno "$prompt" 10 60 2>&1 >/dev/tty
|
|
192
|
+
else
|
|
193
|
+
whiptail --backtitle "Karnel v$KARNEL_VERSION" --title "$title" --yesno "$prompt" 10 60 2>&1 >/dev/tty
|
|
194
|
+
fi
|
|
195
|
+
return $?
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
_tui_main_menu() {
|
|
199
|
+
while true; do
|
|
200
|
+
local choice
|
|
201
|
+
choice=$(_dialog_menu "Main Menu" "Select an action to perform:" \
|
|
202
|
+
"brain" "Second Brain Manager" \
|
|
203
|
+
"env" "Environment Variables Manager" \
|
|
204
|
+
"install" "Install Packages/Modules" \
|
|
205
|
+
"pg" "PostgreSQL Database Manager" \
|
|
206
|
+
"init" "Project Initializer" \
|
|
207
|
+
"voice" "Speech-to-Agent" \
|
|
208
|
+
"ia" "AI Agent Manager" \
|
|
209
|
+
"doctor" "Run Diagnostics" \
|
|
210
|
+
"cleanup" "Clean caches and temp files" \
|
|
211
|
+
"status" "Quick System Overview" \
|
|
212
|
+
"upgrade" "Upgrade Karnel Framework" \
|
|
213
|
+
"update" "Update Karnel" \
|
|
214
|
+
"help" "Show Help Documentation" \
|
|
215
|
+
"exit" "Exit")
|
|
216
|
+
|
|
217
|
+
local exit_status=$?
|
|
218
|
+
if [[ $exit_status -ne 0 ]] || [[ "$choice" == "exit" ]] || [[ -z "$choice" ]]; then
|
|
219
|
+
clear
|
|
220
|
+
source "$KARNEL_PATH/utils/banner.sh"
|
|
221
|
+
break
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
case "$choice" in
|
|
225
|
+
brain) _tui_brain_menu ;;
|
|
226
|
+
env) _tui_env_menu ;;
|
|
227
|
+
install) _tui_install_menu ;;
|
|
228
|
+
pg) _tui_pg_menu ;;
|
|
229
|
+
init) _tui_init_menu ;;
|
|
230
|
+
voice)
|
|
231
|
+
clear
|
|
232
|
+
karnel_main "voice"
|
|
233
|
+
echo
|
|
234
|
+
read -p "Press Enter to return to menu..." temp
|
|
235
|
+
;;
|
|
236
|
+
ia)
|
|
237
|
+
clear
|
|
238
|
+
karnel_main "ia"
|
|
239
|
+
echo
|
|
240
|
+
read -p "Press Enter to return to menu..." temp
|
|
241
|
+
;;
|
|
242
|
+
doctor)
|
|
243
|
+
clear
|
|
244
|
+
karnel_main "doctor"
|
|
245
|
+
echo
|
|
246
|
+
read -p "Press Enter to return to menu..." temp
|
|
247
|
+
;;
|
|
248
|
+
cleanup)
|
|
249
|
+
clear
|
|
250
|
+
karnel_main "cleanup"
|
|
251
|
+
echo
|
|
252
|
+
read -p "Press Enter to return to menu..." temp
|
|
253
|
+
;;
|
|
254
|
+
status)
|
|
255
|
+
clear
|
|
256
|
+
karnel_main "status"
|
|
257
|
+
echo
|
|
258
|
+
read -p "Press Enter to return to menu..." temp
|
|
259
|
+
;;
|
|
260
|
+
upgrade)
|
|
261
|
+
clear
|
|
262
|
+
karnel_main "upgrade"
|
|
263
|
+
echo
|
|
264
|
+
read -p "Press Enter to return to menu..." temp
|
|
265
|
+
;;
|
|
266
|
+
update)
|
|
267
|
+
clear
|
|
268
|
+
karnel_main "update"
|
|
269
|
+
echo
|
|
270
|
+
read -p "Press Enter to return to menu..." temp
|
|
271
|
+
;;
|
|
272
|
+
help)
|
|
273
|
+
clear
|
|
274
|
+
karnel_help
|
|
275
|
+
echo
|
|
276
|
+
read -p "Press Enter to return to menu..." temp
|
|
277
|
+
;;
|
|
278
|
+
esac
|
|
279
|
+
done
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
_tui_brain_menu() {
|
|
283
|
+
while true; do
|
|
284
|
+
local sub_choice
|
|
285
|
+
sub_choice=$(_dialog_menu "Second Brain Manager" "Select a brain operation:" \
|
|
286
|
+
"ask" "Ask a question (AI integrated)" \
|
|
287
|
+
"save" "Save a new memory" \
|
|
288
|
+
"search" "Search existing memories" \
|
|
289
|
+
"list" "List all memories" \
|
|
290
|
+
"init" "Initialize Brain" \
|
|
291
|
+
"graph" "View memory graph" \
|
|
292
|
+
"sync" "Sync memories" \
|
|
293
|
+
"reset" "Reset / Destroy Brain" \
|
|
294
|
+
"back" "Back to Main Menu")
|
|
295
|
+
|
|
296
|
+
local exit_status=$?
|
|
297
|
+
if [[ $exit_status -ne 0 ]] || [[ "$sub_choice" == "back" ]] || [[ -z "$sub_choice" ]]; then
|
|
298
|
+
break
|
|
299
|
+
fi
|
|
300
|
+
|
|
301
|
+
case "$sub_choice" in
|
|
302
|
+
ask)
|
|
303
|
+
local question
|
|
304
|
+
question=$(_dialog_input "Brain Ask" "Enter your question for the brain:")
|
|
305
|
+
if [[ $? -eq 0 ]] && [[ -n "$question" ]]; then
|
|
306
|
+
clear
|
|
307
|
+
karnel_main "brain" "ask" "$question"
|
|
308
|
+
echo
|
|
309
|
+
read -p "Press Enter to return..." temp
|
|
310
|
+
fi
|
|
311
|
+
;;
|
|
312
|
+
save)
|
|
313
|
+
clear
|
|
314
|
+
karnel_main "brain" "save"
|
|
315
|
+
echo
|
|
316
|
+
read -p "Press Enter to return..." temp
|
|
317
|
+
;;
|
|
318
|
+
search)
|
|
319
|
+
local query
|
|
320
|
+
query=$(_dialog_input "Search Memories" "Enter search query:")
|
|
321
|
+
if [[ $? -eq 0 ]] && [[ -n "$query" ]]; then
|
|
322
|
+
clear
|
|
323
|
+
karnel_main "brain" "search" "$query"
|
|
324
|
+
echo
|
|
325
|
+
read -p "Press Enter to return..." temp
|
|
326
|
+
fi
|
|
327
|
+
;;
|
|
328
|
+
list)
|
|
329
|
+
clear
|
|
330
|
+
karnel_main "brain" "list"
|
|
331
|
+
echo
|
|
332
|
+
read -p "Press Enter to return..." temp
|
|
333
|
+
;;
|
|
334
|
+
init)
|
|
335
|
+
clear
|
|
336
|
+
karnel_main "brain" "init"
|
|
337
|
+
echo
|
|
338
|
+
read -p "Press Enter to return..." temp
|
|
339
|
+
;;
|
|
340
|
+
graph)
|
|
341
|
+
clear
|
|
342
|
+
karnel_main "brain" "graph"
|
|
343
|
+
echo
|
|
344
|
+
read -p "Press Enter to return..." temp
|
|
345
|
+
;;
|
|
346
|
+
sync)
|
|
347
|
+
clear
|
|
348
|
+
karnel_main "brain" "sync"
|
|
349
|
+
echo
|
|
350
|
+
read -p "Press Enter to return..." temp
|
|
351
|
+
;;
|
|
352
|
+
reset)
|
|
353
|
+
if _dialog_yesno "Reset Brain" "WARNING: This will delete ALL stored memories. Are you sure?"; then
|
|
354
|
+
clear
|
|
355
|
+
karnel_main "brain" "reset"
|
|
356
|
+
echo
|
|
357
|
+
read -p "Press Enter to return..." temp
|
|
358
|
+
fi
|
|
359
|
+
;;
|
|
360
|
+
esac
|
|
361
|
+
done
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
_tui_env_menu() {
|
|
365
|
+
while true; do
|
|
366
|
+
local sub_choice
|
|
367
|
+
sub_choice=$(_dialog_menu "Environment Variables Manager" "Select an operation:" \
|
|
368
|
+
"set" "Set/Update a variable" \
|
|
369
|
+
"unset" "Remove a variable" \
|
|
370
|
+
"list" "List all user variables" \
|
|
371
|
+
"back" "Back to Main Menu")
|
|
372
|
+
|
|
373
|
+
local exit_status=$?
|
|
374
|
+
if [[ $exit_status -ne 0 ]] || [[ "$sub_choice" == "back" ]] || [[ -z "$sub_choice" ]]; then
|
|
375
|
+
break
|
|
376
|
+
fi
|
|
377
|
+
|
|
378
|
+
case "$sub_choice" in
|
|
379
|
+
set)
|
|
380
|
+
clear
|
|
381
|
+
karnel_main "env" "set"
|
|
382
|
+
echo
|
|
383
|
+
read -p "Press Enter to return..." temp
|
|
384
|
+
;;
|
|
385
|
+
unset)
|
|
386
|
+
clear
|
|
387
|
+
karnel_main "env" "unset"
|
|
388
|
+
echo
|
|
389
|
+
read -p "Press Enter to return..." temp
|
|
390
|
+
;;
|
|
391
|
+
list)
|
|
392
|
+
clear
|
|
393
|
+
karnel_main "env" "ls"
|
|
394
|
+
echo
|
|
395
|
+
read -p "Press Enter to return..." temp
|
|
396
|
+
;;
|
|
397
|
+
esac
|
|
398
|
+
done
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
_tui_install_menu() {
|
|
402
|
+
while true; do
|
|
403
|
+
local target
|
|
404
|
+
target=$(_dialog_menu "Install Modules" "Select target module to install:" \
|
|
405
|
+
"ai" "AI Tools (OpenCode, Claude, Ollama, etc.)" \
|
|
406
|
+
"db" "Databases (PostgreSQL, MariaDB, SQLite, MongoDB)" \
|
|
407
|
+
"lang" "Programming Languages (Node, Python, Go, Rust, etc.)" \
|
|
408
|
+
"editor" "Code Editor (code-server)" \
|
|
409
|
+
"dev" "Development Tools (GitHub CLI, fzf, bat, etc.)" \
|
|
410
|
+
"npm" "Node.js Global npm Packages" \
|
|
411
|
+
"shell" "ZSH + Oh My Zsh + Plugins" \
|
|
412
|
+
"ui" "Termux UI (font, cursor, extra-keys, banner)" \
|
|
413
|
+
"auto" "Automation Tools (n8n)" \
|
|
414
|
+
"back" "Back to Main Menu")
|
|
415
|
+
|
|
416
|
+
local exit_status=$?
|
|
417
|
+
if [[ $exit_status -ne 0 ]] || [[ "$target" == "back" ]] || [[ -z "$target" ]]; then
|
|
418
|
+
break
|
|
419
|
+
fi
|
|
420
|
+
|
|
421
|
+
case "$target" in
|
|
422
|
+
ai|db|lang|dev|shell|ui)
|
|
423
|
+
_tui_install_checklist "$target"
|
|
424
|
+
;;
|
|
425
|
+
*)
|
|
426
|
+
if _dialog_yesno "Install Module" "Do you want to install module '$target' completely?"; then
|
|
427
|
+
clear
|
|
428
|
+
karnel_main "install" "$target"
|
|
429
|
+
echo
|
|
430
|
+
read -p "Press Enter to return..." temp
|
|
431
|
+
fi
|
|
432
|
+
;;
|
|
433
|
+
esac
|
|
434
|
+
done
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
_tui_install_checklist() {
|
|
438
|
+
local target="$1"
|
|
439
|
+
local -a opts=()
|
|
440
|
+
|
|
441
|
+
case "$target" in
|
|
442
|
+
lang)
|
|
443
|
+
opts=(
|
|
444
|
+
"nodejs" "Node.js LTS" OFF
|
|
445
|
+
"python" "Python" OFF
|
|
446
|
+
"perl" "Perl" OFF
|
|
447
|
+
"php" "PHP" OFF
|
|
448
|
+
"rust" "Rust" OFF
|
|
449
|
+
"clang" "C/C++ (clang)" OFF
|
|
450
|
+
"golang" "Go (golang)" OFF
|
|
451
|
+
)
|
|
452
|
+
;;
|
|
453
|
+
db)
|
|
454
|
+
opts=(
|
|
455
|
+
"postgresql" "PostgreSQL" OFF
|
|
456
|
+
"mariadb" "MariaDB" OFF
|
|
457
|
+
"sqlite" "SQLite" OFF
|
|
458
|
+
"mongodb" "MongoDB" OFF
|
|
459
|
+
)
|
|
460
|
+
;;
|
|
461
|
+
ai)
|
|
462
|
+
opts=(
|
|
463
|
+
"qwen-code" "Qwen Code" OFF
|
|
464
|
+
"gemini-cli" "Gemini CLI" OFF
|
|
465
|
+
"claude-code" "Claude Code" OFF
|
|
466
|
+
"mistral-vibe" "Mistral Vibe" OFF
|
|
467
|
+
"openclaude" "OpenClaude" OFF
|
|
468
|
+
"openclaw" "OpenClaw" OFF
|
|
469
|
+
"ollama" "Ollama" OFF
|
|
470
|
+
"codex" "Codex CLI" OFF
|
|
471
|
+
"opencode" "OpenCode" OFF
|
|
472
|
+
"mimocode" "MiMo Code" OFF
|
|
473
|
+
"engram" "Engram" OFF
|
|
474
|
+
"codegraph" "CodeGraph" OFF
|
|
475
|
+
"pi" "Pi" OFF
|
|
476
|
+
"antigravity-cli" "Antigravity CLI" OFF
|
|
477
|
+
"gentle-ai" "Gentle AI" OFF
|
|
478
|
+
"minimax-cli" "Minimax CLI" OFF
|
|
479
|
+
"gga" "GGA" OFF
|
|
480
|
+
"hermes-agent" "Hermes Agent" OFF
|
|
481
|
+
"kimi-code" "Kimi Code" OFF
|
|
482
|
+
"command-code" "Command Code" OFF
|
|
483
|
+
"freebuff" "Freebuff" OFF
|
|
484
|
+
"crush" "Crush CLI" OFF
|
|
485
|
+
"odysseus" "Odysseus" OFF
|
|
486
|
+
"kilocode-cli" "Kilo Code CLI" OFF
|
|
487
|
+
"kiro" "Kiro CLI" OFF
|
|
488
|
+
"cline" "Cline CLI" OFF
|
|
489
|
+
"kimchi-code" "Kimchi CLI" OFF
|
|
490
|
+
"omni-route" "omniRoute" OFF
|
|
491
|
+
"ctx7" "Context7 Docs" OFF
|
|
492
|
+
"openspec" "OpenSpec SDD" OFF
|
|
493
|
+
)
|
|
494
|
+
;;
|
|
495
|
+
dev)
|
|
496
|
+
opts=(
|
|
497
|
+
"gh" "GitHub CLI" OFF
|
|
498
|
+
"wget" "Wget" OFF
|
|
499
|
+
"curl" "Curl" OFF
|
|
500
|
+
"fzf" "Fzf" OFF
|
|
501
|
+
"jq" "Jq" OFF
|
|
502
|
+
"lsd" "LSD (modern ls)" OFF
|
|
503
|
+
"bat" "Bat (modern cat)" OFF
|
|
504
|
+
"proot" "Proot" OFF
|
|
505
|
+
"ncurses" "Ncurses Utils" OFF
|
|
506
|
+
"tmate" "Tmate" OFF
|
|
507
|
+
"cloudflared" "Cloudflared" OFF
|
|
508
|
+
"translate" "Translate Shell" OFF
|
|
509
|
+
"html2text" "html2text" OFF
|
|
510
|
+
"bc" "Bc (calculator)" OFF
|
|
511
|
+
"tree" "Tree" OFF
|
|
512
|
+
"imagemagick" "ImageMagick" OFF
|
|
513
|
+
"shfmt" "Shfmt" OFF
|
|
514
|
+
"make" "Make" OFF
|
|
515
|
+
"udocker" "Udocker" OFF
|
|
516
|
+
)
|
|
517
|
+
;;
|
|
518
|
+
shell)
|
|
519
|
+
opts=(
|
|
520
|
+
"zsh" "ZSH shell" OFF
|
|
521
|
+
"ohmyzsh" "Oh My Zsh" OFF
|
|
522
|
+
"theme" "Powerlevel10k theme" OFF
|
|
523
|
+
"plugins" "Plugins (autosuggest, etc.)" OFF
|
|
524
|
+
)
|
|
525
|
+
;;
|
|
526
|
+
ui)
|
|
527
|
+
opts=(
|
|
528
|
+
"font" "Meslo Nerd Font" OFF
|
|
529
|
+
"cursor" "Green cursor" OFF
|
|
530
|
+
"extra-keys" "Custom Termux keys" OFF
|
|
531
|
+
"banner" "Startup banner" OFF
|
|
532
|
+
)
|
|
533
|
+
;;
|
|
534
|
+
esac
|
|
535
|
+
|
|
536
|
+
local selections
|
|
537
|
+
selections=$(_dialog_checklist "Install $target Tools" "Select tools to install (Space to select):" "${opts[@]}")
|
|
538
|
+
local exit_status=$?
|
|
539
|
+
|
|
540
|
+
if [[ $exit_status -eq 0 ]] && [[ -n "$selections" ]]; then
|
|
541
|
+
local -a clean_selections=()
|
|
542
|
+
for item in $selections; do
|
|
543
|
+
local cleaned="${item//\"/}"
|
|
544
|
+
cleaned="${cleaned//\'/}"
|
|
545
|
+
if [[ -n "$cleaned" ]]; then
|
|
546
|
+
clean_selections+=("--$cleaned")
|
|
547
|
+
fi
|
|
548
|
+
done
|
|
549
|
+
|
|
550
|
+
if [[ ${#clean_selections[@]} -gt 0 ]]; then
|
|
551
|
+
clear
|
|
552
|
+
log_info "Running: karnel install $target ${clean_selections[*]}"
|
|
553
|
+
karnel_main "install" "$target" "${clean_selections[@]}"
|
|
554
|
+
echo
|
|
555
|
+
read -p "Press Enter to return..." temp
|
|
556
|
+
fi
|
|
557
|
+
fi
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
_tui_pg_menu() {
|
|
561
|
+
while true; do
|
|
562
|
+
local sub_choice
|
|
563
|
+
sub_choice=$(_dialog_menu "PostgreSQL Database Manager" "Select a pg operation:" \
|
|
564
|
+
"status" "Check server status" \
|
|
565
|
+
"start" "Start PostgreSQL server" \
|
|
566
|
+
"stop" "Stop PostgreSQL server" \
|
|
567
|
+
"restart" "Restart PostgreSQL server" \
|
|
568
|
+
"init" "Initialize PostgreSQL database" \
|
|
569
|
+
"list" "List all databases" \
|
|
570
|
+
"create" "Create a new database" \
|
|
571
|
+
"drop" "Drop a database" \
|
|
572
|
+
"backup" "Backup a database" \
|
|
573
|
+
"restore" "Restore a database from backup" \
|
|
574
|
+
"shell" "Open psql shell" \
|
|
575
|
+
"back" "Back to Main Menu")
|
|
576
|
+
|
|
577
|
+
local exit_status=$?
|
|
578
|
+
if [[ $exit_status -ne 0 ]] || [[ "$sub_choice" == "back" ]] || [[ -z "$sub_choice" ]]; then
|
|
579
|
+
break
|
|
580
|
+
fi
|
|
581
|
+
|
|
582
|
+
case "$sub_choice" in
|
|
583
|
+
status|start|stop|restart|init|list)
|
|
584
|
+
clear
|
|
585
|
+
karnel_main "pg" "$sub_choice"
|
|
586
|
+
echo
|
|
587
|
+
read -p "Press Enter to return..." temp
|
|
588
|
+
;;
|
|
589
|
+
create)
|
|
590
|
+
local db_name
|
|
591
|
+
db_name=$(_dialog_input "Create Database" "Enter new database name:")
|
|
592
|
+
if [[ $? -eq 0 ]] && [[ -n "$db_name" ]]; then
|
|
593
|
+
clear
|
|
594
|
+
karnel_main "pg" "create" "$db_name"
|
|
595
|
+
echo
|
|
596
|
+
read -p "Press Enter to return..." temp
|
|
597
|
+
fi
|
|
598
|
+
;;
|
|
599
|
+
drop)
|
|
600
|
+
local db_name
|
|
601
|
+
db_name=$(_dialog_input "Drop Database" "Enter database name to drop:")
|
|
602
|
+
if [[ $? -eq 0 ]] && [[ -n "$db_name" ]]; then
|
|
603
|
+
if _dialog_yesno "Drop Database" "WARNING: This will permanently delete database '$db_name'. Are you sure?"; then
|
|
604
|
+
clear
|
|
605
|
+
karnel_main "pg" "drop" "$db_name"
|
|
606
|
+
echo
|
|
607
|
+
read -p "Press Enter to return..." temp
|
|
608
|
+
fi
|
|
609
|
+
fi
|
|
610
|
+
;;
|
|
611
|
+
backup)
|
|
612
|
+
local db_name
|
|
613
|
+
db_name=$(_dialog_input "Backup Database" "Enter database name to backup (leave empty for interactive):")
|
|
614
|
+
if [[ $? -eq 0 ]]; then
|
|
615
|
+
clear
|
|
616
|
+
karnel_main "pg" "backup" "$db_name"
|
|
617
|
+
echo
|
|
618
|
+
read -p "Press Enter to return..." temp
|
|
619
|
+
fi
|
|
620
|
+
;;
|
|
621
|
+
restore)
|
|
622
|
+
clear
|
|
623
|
+
karnel_main "pg" "restore"
|
|
624
|
+
echo
|
|
625
|
+
read -p "Press Enter to return..." temp
|
|
626
|
+
;;
|
|
627
|
+
shell)
|
|
628
|
+
clear
|
|
629
|
+
karnel_main "pg" "shell"
|
|
630
|
+
echo
|
|
631
|
+
read -p "Press Enter to return..." temp
|
|
632
|
+
;;
|
|
633
|
+
esac
|
|
634
|
+
done
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
_tui_init_menu() {
|
|
638
|
+
while true; do
|
|
639
|
+
local sub_choice
|
|
640
|
+
sub_choice=$(_dialog_menu "Project Initializer" "Select a template to configure current directory:" \
|
|
641
|
+
"next" "Next.js Project (Node.js)" \
|
|
642
|
+
"react" "React + Vite Project (Node.js)" \
|
|
643
|
+
"nest" "NestJS Project (Node.js)" \
|
|
644
|
+
"express" "Express.js API (Node.js)" \
|
|
645
|
+
"python" "Python FastAPI Project" \
|
|
646
|
+
"go" "Go Gin/Fiber Project" \
|
|
647
|
+
"rust" "Rust Axum/Actix Web Project" \
|
|
648
|
+
"back" "Back to Main Menu")
|
|
649
|
+
|
|
650
|
+
local exit_status=$?
|
|
651
|
+
if [[ $exit_status -ne 0 ]] || [[ "$sub_choice" == "back" ]] || [[ -z "$sub_choice" ]]; then
|
|
652
|
+
break
|
|
653
|
+
fi
|
|
654
|
+
|
|
655
|
+
clear
|
|
656
|
+
karnel_main "init" "$sub_choice"
|
|
657
|
+
echo
|
|
658
|
+
read -p "Press Enter to return..." temp
|
|
659
|
+
done
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
karnel_fallback_tui() {
|
|
663
|
+
clear
|
|
664
|
+
source "$KARNEL_PATH/utils/banner.sh"
|
|
665
|
+
while true; do
|
|
666
|
+
echo
|
|
667
|
+
box "◈ KARNEL TUI MENU ◈"
|
|
668
|
+
echo
|
|
669
|
+
log_info "Select an option to run:"
|
|
670
|
+
echo
|
|
671
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 1 "Second Brain Manager (brain)"
|
|
672
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 2 "Environment Variables Manager (env)"
|
|
673
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 3 "Install Packages/Modules (install)"
|
|
674
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 4 "PostgreSQL Database Manager (pg)"
|
|
675
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 5 "Project Initializer (init)"
|
|
676
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 6 "Speech-to-Agent (voice)"
|
|
677
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 7 "AI Agent Manager (ia)"
|
|
678
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 8 "Run Diagnostics (doctor)"
|
|
679
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 9 "Update Karnel (update)"
|
|
680
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 10 "Help & Documentation (help)"
|
|
681
|
+
printf " ${D_GREEN}%2d.${D_NC} %s\n" 11 "Exit"
|
|
682
|
+
echo
|
|
683
|
+
|
|
684
|
+
local choice
|
|
685
|
+
read -p " Enter choice (1-11): " choice
|
|
686
|
+
|
|
687
|
+
case "$choice" in
|
|
688
|
+
1) karnel_main "brain" ;;
|
|
689
|
+
2) karnel_main "env" ;;
|
|
690
|
+
3) karnel_main "install" ;;
|
|
691
|
+
4) karnel_main "pg" ;;
|
|
692
|
+
5) karnel_main "init" ;;
|
|
693
|
+
6) karnel_main "voice" ;;
|
|
694
|
+
7) karnel_main "ia" ;;
|
|
695
|
+
8) karnel_main "doctor" ;;
|
|
696
|
+
9) karnel_main "update" ;;
|
|
697
|
+
10) karnel_help ;;
|
|
698
|
+
11|q|exit) break ;;
|
|
699
|
+
*) log_warn "Invalid option. Please try again." ;;
|
|
700
|
+
esac
|
|
701
|
+
echo
|
|
702
|
+
read -p " Press Enter to return to menu..." temp
|
|
703
|
+
clear
|
|
704
|
+
source "$KARNEL_PATH/utils/banner.sh"
|
|
705
|
+
done
|
|
706
|
+
}
|