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