machineconfig 6.82__py3-none-any.whl → 8.51__py3-none-any.whl

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 (461) hide show
  1. machineconfig/cluster/remote/cloud_manager.py +1 -1
  2. machineconfig/cluster/remote/run_cluster.py +1 -1
  3. machineconfig/cluster/remote/run_remote.py +1 -1
  4. machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
  5. machineconfig/cluster/sessions_managers/wt_local.py +17 -222
  6. machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
  7. machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
  8. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  9. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  10. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  11. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  12. machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
  13. machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
  14. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
  15. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
  16. machineconfig/jobs/installer/checks/check_installations.py +133 -0
  17. machineconfig/jobs/installer/checks/install_utils.py +132 -0
  18. machineconfig/jobs/installer/checks/report_utils.py +39 -0
  19. machineconfig/jobs/installer/checks/vt_utils.py +89 -0
  20. machineconfig/jobs/installer/installer_data.json +1500 -310
  21. machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
  22. machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
  23. machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
  24. machineconfig/jobs/installer/package_groups.py +62 -91
  25. machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
  26. machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
  27. machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
  28. machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
  29. machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
  30. machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
  31. machineconfig/jobs/installer/python_scripts/hx.py +214 -0
  32. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
  33. machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
  34. machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
  35. machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
  36. machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
  37. machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
  38. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
  39. machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
  40. machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
  41. machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
  42. machineconfig/jobs/scripts_dynamic/a.py +428 -0
  43. machineconfig/logger.py +1 -2
  44. machineconfig/profile/create_helper.py +56 -18
  45. machineconfig/profile/create_links.py +79 -21
  46. machineconfig/profile/create_links_export.py +87 -36
  47. machineconfig/profile/create_shell_profile.py +92 -127
  48. machineconfig/profile/mapper_data.toml +45 -0
  49. machineconfig/profile/mapper_dotfiles.toml +249 -0
  50. machineconfig/scripts/__init__.py +0 -4
  51. machineconfig/scripts/linux/wrap_mcfg +46 -0
  52. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  53. machineconfig/scripts/python/agents.py +85 -165
  54. machineconfig/scripts/python/ai/initai.py +4 -2
  55. machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
  56. machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
  57. machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
  58. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
  59. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
  60. machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
  61. machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
  62. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
  63. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
  64. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
  65. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
  66. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
  67. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
  68. machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
  69. machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
  70. machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
  71. machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
  72. machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
  73. machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
  74. machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
  75. machineconfig/scripts/python/cloud.py +58 -11
  76. machineconfig/scripts/python/croshell.py +10 -162
  77. machineconfig/scripts/python/devops.py +73 -36
  78. machineconfig/scripts/python/devops_navigator.py +16 -6
  79. machineconfig/scripts/python/fire_jobs.py +8 -222
  80. machineconfig/scripts/python/ftpx.py +7 -200
  81. machineconfig/scripts/python/graph/cli_graph.json +8743 -0
  82. machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
  83. machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
  84. machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
  85. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
  86. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
  87. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
  88. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
  89. machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  90. machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
  91. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
  92. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
  93. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
  94. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
  95. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
  96. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
  97. machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
  98. machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
  99. machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
  100. machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
  101. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
  102. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
  103. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
  104. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
  105. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
  106. machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
  107. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
  108. machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
  109. machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
  110. machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
  111. machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
  112. machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
  113. machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
  114. machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
  115. machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
  116. machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
  117. machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
  118. machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
  119. machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
  120. machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
  121. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
  122. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
  123. machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
  124. machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
  125. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
  126. machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
  127. machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
  128. machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
  129. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
  130. machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
  131. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
  132. machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
  133. machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
  134. machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
  135. machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
  136. machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
  137. machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
  138. machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
  139. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
  140. machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
  141. machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
  142. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
  143. machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
  144. machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
  145. machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
  146. machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
  147. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
  148. machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
  149. machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
  150. machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
  151. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
  152. machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
  153. machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
  154. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
  155. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
  156. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
  157. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
  158. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
  159. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
  160. machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
  161. machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
  162. machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
  163. machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
  164. machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
  165. machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
  166. machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
  167. machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
  168. machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
  169. machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
  170. machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
  171. machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
  172. machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
  173. machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
  174. machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
  175. machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
  176. machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
  177. machineconfig/scripts/python/mcfg_entry.py +143 -0
  178. machineconfig/scripts/python/msearch.py +26 -0
  179. machineconfig/scripts/python/sessions.py +69 -135
  180. machineconfig/scripts/python/terminal.py +58 -0
  181. machineconfig/scripts/python/utils.py +115 -38
  182. machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
  183. machineconfig/settings/atuin/config.toml +294 -0
  184. machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
  185. machineconfig/settings/broot/conf.toml +1 -1
  186. machineconfig/settings/helix/config.toml +16 -0
  187. machineconfig/settings/helix/languages.toml +13 -4
  188. machineconfig/settings/helix/yazi-picker.sh +12 -0
  189. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  190. machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
  191. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  192. machineconfig/settings/lf/windows/lfrc +14 -16
  193. machineconfig/settings/linters/.ruff.toml +2 -1
  194. machineconfig/settings/marimo/marimo.toml +1 -1
  195. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  196. machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
  197. machineconfig/settings/shells/bash/init.sh +47 -12
  198. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
  199. machineconfig/settings/shells/nushell/config.nu +25 -33
  200. machineconfig/settings/shells/nushell/env.nu +21 -8
  201. machineconfig/settings/shells/nushell/init.nu +138 -0
  202. machineconfig/settings/shells/pwsh/init.ps1 +111 -17
  203. machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
  204. machineconfig/settings/shells/starship/starship.toml +16 -0
  205. machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
  206. machineconfig/settings/shells/wt/settings.json +27 -18
  207. machineconfig/settings/shells/zsh/init.sh +42 -23
  208. machineconfig/settings/television/cable_unix/alias.toml +8 -0
  209. machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
  210. machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
  211. machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
  212. machineconfig/settings/television/cable_unix/channels.toml +19 -0
  213. machineconfig/settings/television/cable_unix/dirs.toml +13 -0
  214. machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
  215. machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
  216. machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
  217. machineconfig/settings/television/cable_unix/env.toml +17 -0
  218. machineconfig/settings/television/cable_unix/files.toml +11 -0
  219. machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
  220. machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
  221. machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
  222. machineconfig/settings/television/cable_unix/git-log.toml +12 -0
  223. machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
  224. machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
  225. machineconfig/settings/television/cable_unix/guix.toml +20 -0
  226. machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
  227. machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
  228. machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
  229. machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
  230. machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
  231. machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
  232. machineconfig/settings/television/cable_unix/procs.toml +20 -0
  233. machineconfig/settings/television/cable_unix/text.toml +17 -0
  234. machineconfig/settings/television/cable_unix/tldr.toml +18 -0
  235. machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
  236. machineconfig/settings/television/cable_windows/alias.toml +7 -0
  237. machineconfig/settings/television/cable_windows/dirs.toml +13 -0
  238. machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
  239. machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
  240. machineconfig/settings/television/cable_windows/env.toml +17 -0
  241. machineconfig/settings/television/cable_windows/files.toml +14 -0
  242. machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
  243. machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
  244. machineconfig/settings/television/cable_windows/git-log.toml +11 -0
  245. machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
  246. machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
  247. machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
  248. machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
  249. machineconfig/settings/television/cable_windows/text.toml +17 -0
  250. machineconfig/settings/tv/config.toml +234 -0
  251. machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
  252. machineconfig/settings/wsl/.wslconfig +5 -30
  253. machineconfig/settings/wt/__init__.py +0 -0
  254. machineconfig/settings/yazi/init.lua +61 -0
  255. machineconfig/settings/yazi/keymap_linux.toml +94 -0
  256. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  257. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  258. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  259. machineconfig/settings/yazi/theme.toml +4 -0
  260. machineconfig/settings/yazi/yazi_linux.toml +94 -0
  261. machineconfig/settings/yazi/yazi_windows.toml +58 -0
  262. machineconfig/settings/zellij/layouts/st.kdl +40 -9
  263. machineconfig/settings/zellij/layouts/st2.kdl +1 -1
  264. machineconfig/setup_linux/__init__.py +2 -2
  265. machineconfig/setup_linux/apps_desktop.sh +8 -27
  266. machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
  267. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
  268. machineconfig/setup_mac/__init__.py +1 -4
  269. machineconfig/setup_mac/apps_gui.sh +248 -0
  270. machineconfig/setup_windows/__init__.py +2 -5
  271. machineconfig/setup_windows/uv.ps1 +8 -1
  272. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
  273. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
  274. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  275. machineconfig/type_hinting/sql/__init__.py +1 -0
  276. machineconfig/type_hinting/sql/base.py +216 -0
  277. machineconfig/type_hinting/sql/core_schema.py +64 -0
  278. machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
  279. machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
  280. machineconfig/type_hinting/typedict/__init__.py +1 -0
  281. machineconfig/type_hinting/typedict/ast_utils.py +130 -0
  282. machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
  283. machineconfig/type_hinting/typedict/generators.py +231 -0
  284. machineconfig/type_hinting/typedict/polars_schema.py +24 -0
  285. machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
  286. machineconfig/utils/accessories.py +31 -4
  287. machineconfig/utils/code.py +163 -51
  288. machineconfig/utils/files/ascii_art.py +11 -15
  289. machineconfig/utils/files/headers.py +6 -7
  290. machineconfig/utils/files/read.py +8 -1
  291. machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
  292. machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
  293. machineconfig/utils/installer_utils/install_from_url.py +183 -0
  294. machineconfig/utils/installer_utils/installer_class.py +53 -102
  295. machineconfig/utils/installer_utils/installer_cli.py +161 -0
  296. machineconfig/utils/installer_utils/installer_helper.py +129 -0
  297. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
  298. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
  299. machineconfig/utils/io.py +94 -9
  300. machineconfig/utils/links.py +56 -38
  301. machineconfig/utils/meta.py +38 -21
  302. machineconfig/utils/options.py +81 -23
  303. machineconfig/utils/options_utils/__init__.py +0 -0
  304. machineconfig/utils/options_utils/options_tv_linux.py +211 -0
  305. machineconfig/utils/options_utils/options_tv_windows.py +88 -0
  306. machineconfig/utils/options_utils/tv_options.py +37 -0
  307. machineconfig/utils/path_extended.py +52 -102
  308. machineconfig/utils/path_helper.py +76 -23
  309. machineconfig/utils/procs.py +1 -1
  310. machineconfig/utils/scheduler.py +26 -53
  311. machineconfig/utils/scheduling.py +0 -2
  312. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  313. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  314. machineconfig/utils/source_of_truth.py +6 -1
  315. machineconfig/utils/ssh.py +216 -419
  316. machineconfig/utils/ssh_utils/abc.py +5 -0
  317. machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
  318. machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
  319. machineconfig/utils/ssh_utils/utils.py +158 -0
  320. machineconfig/utils/ssh_utils/wsl.py +147 -0
  321. machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
  322. machineconfig/utils/terminal.py +1 -0
  323. machineconfig/utils/upgrade_packages.py +107 -35
  324. machineconfig/utils/ve.py +12 -4
  325. machineconfig-8.51.dist-info/METADATA +140 -0
  326. machineconfig-8.51.dist-info/RECORD +543 -0
  327. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
  328. machineconfig/jobs/installer/check_installations.py +0 -248
  329. machineconfig/jobs/installer/custom/hx.py +0 -140
  330. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
  331. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
  332. machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
  333. machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
  334. machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
  335. machineconfig/profile/backup.toml +0 -49
  336. machineconfig/profile/mapper.toml +0 -256
  337. machineconfig/scripts/linux/fzf2g +0 -21
  338. machineconfig/scripts/linux/fzfag +0 -17
  339. machineconfig/scripts/linux/fzffg +0 -25
  340. machineconfig/scripts/linux/fzfrga +0 -21
  341. machineconfig/scripts/linux/mcfgs +0 -38
  342. machineconfig/scripts/linux/other/share_smb +0 -1
  343. machineconfig/scripts/linux/other/switch_ip +0 -20
  344. machineconfig/scripts/linux/skrg +0 -4
  345. machineconfig/scripts/linux/warp-cli.sh +0 -122
  346. machineconfig/scripts/linux/z_ls +0 -104
  347. machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
  348. machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
  349. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
  350. machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
  351. machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
  352. machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
  353. machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
  354. machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
  355. machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
  356. machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
  357. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
  358. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
  359. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
  360. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
  361. machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
  362. machineconfig/scripts/python/helpers_fire/template.sh +0 -15
  363. machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
  364. machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
  365. machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
  366. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
  367. machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
  368. machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
  369. machineconfig/scripts/python/mcfg.py +0 -48
  370. machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
  371. machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
  372. machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
  373. machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
  374. machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
  375. machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
  376. machineconfig/scripts/windows/fzfb.ps1 +0 -3
  377. machineconfig/scripts/windows/fzfg.ps1 +0 -2
  378. machineconfig/scripts/windows/fzfrga.bat +0 -20
  379. machineconfig/scripts/windows/mcfgs.ps1 +0 -17
  380. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
  381. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  382. machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
  383. machineconfig/settings/lf/windows/tst.ps1 +0 -1
  384. machineconfig/settings/yazi/yazi.toml +0 -4
  385. machineconfig/setup_linux/apps.sh +0 -66
  386. machineconfig/setup_linux/others/cli_installation.sh +0 -137
  387. machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
  388. machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
  389. machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
  390. machineconfig/setup_mac/apps.sh +0 -73
  391. machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
  392. machineconfig/setup_windows/apps.ps1 +0 -62
  393. machineconfig/setup_windows/others/obs.ps1 +0 -4
  394. machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
  395. machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
  396. machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
  397. machineconfig/utils/installer_utils/installer.py +0 -225
  398. machineconfig/utils/tst.py +0 -20
  399. machineconfig-6.82.dist-info/METADATA +0 -82
  400. machineconfig-6.82.dist-info/RECORD +0 -441
  401. machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
  402. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
  403. machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
  404. machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
  405. machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
  406. machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
  407. machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
  408. machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
  409. machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
  410. machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
  411. machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
  412. machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
  413. machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
  414. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
  415. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
  416. machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
  417. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
  418. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
  419. machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
  420. machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
  421. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
  422. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
  423. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
  424. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
  425. machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
  426. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
  427. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
  428. machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
  429. machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
  430. machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
  431. machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
  432. machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
  433. machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
  434. machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
  435. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
  436. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
  437. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
  438. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
  439. machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
  440. machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
  441. machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
  442. /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
  443. /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
  444. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
  445. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
  446. /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
  447. /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
  448. /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
  449. /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
  450. /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
  451. /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
  452. /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
  453. /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
  454. /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
  455. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
  456. /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
  457. /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
  458. /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
  459. /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
  460. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
  461. {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,139 @@
1
+
2
+ from typing import Optional, Any, Callable
3
+ import platform
4
+ from machineconfig.utils.installer_utils.installer_class import Installer
5
+ from machineconfig.utils.schemas.installer.installer_types import InstallerData
6
+
7
+
8
+ installer_standard: InstallerData = {
9
+ "appName": "yazi",
10
+ "repoURL": "https://github.com/sxyazi/yazi",
11
+ "doc": "⚡ Blazing Fast Terminal File Manager.",
12
+ "fileNamePattern": {
13
+ "amd64": {
14
+ "linux": "yazi-x86_64-unknown-linux-musl.zip",
15
+ "macos": "yazi-x86_64-apple-darwin.zip",
16
+ "windows": "yazi-x86_64-pc-windows-msvc.zip"
17
+ },
18
+ "arm64": {
19
+ "linux": "yazi-aarch64-unknown-linux-musl.zip",
20
+ "macos": "yazi-aarch64-apple-darwin.zip",
21
+ "windows": "yazi-aarch64-pc-windows-msvc.zip"
22
+ }
23
+ }
24
+ }
25
+
26
+ def main(installer_data: InstallerData, version: Optional[str]):
27
+ _ = installer_data
28
+ inst = Installer(installer_data=installer_standard)
29
+ inst.install(version=version)
30
+
31
+ print("\n" * 5)
32
+ print("Installing Yazi plugins and flavors...")
33
+ installer_standard["appName"] = "ya"
34
+ inst = Installer(installer_data=installer_standard)
35
+ inst.install(version=version)
36
+
37
+ print("\n" * 5)
38
+ print("Cloning Yazi plugins and flavors repositories...")
39
+
40
+ from pathlib import Path
41
+ system_name = platform.system().lower()
42
+ home_dir = Path.home()
43
+ if system_name == "windows":
44
+ yazi_plugins_dir = home_dir.joinpath("AppData", "Roaming", "yazi", "config")
45
+ else:
46
+ yazi_plugins_dir = home_dir.joinpath(".config", "yazi")
47
+
48
+ yazi_plugins_path = yazi_plugins_dir.joinpath("plugins")
49
+ yazi_flavours_path = yazi_plugins_dir.joinpath("flavors")
50
+ import shutil
51
+ import os
52
+ import stat
53
+ import time
54
+
55
+ def on_rm_error(_func: Callable[..., Any], path: str, exc: BaseException) -> None:
56
+ os.chmod(path, stat.S_IWRITE)
57
+ try:
58
+ os.unlink(path)
59
+ except Exception:
60
+ pass
61
+
62
+ def force_remove(path: Path) -> None:
63
+ if path.exists():
64
+ if path.is_file():
65
+ path.unlink()
66
+ elif path.is_dir():
67
+ shutil.rmtree(path, onexc=on_rm_error)
68
+ if path.exists():
69
+ time.sleep(0.1)
70
+ shutil.rmtree(path, ignore_errors=True)
71
+
72
+ force_remove(yazi_plugins_path)
73
+ yazi_plugins_dir.mkdir(parents=True, exist_ok=True)
74
+ import git
75
+ git.Repo.clone_from("https://github.com/yazi-rs/plugins", yazi_plugins_path)
76
+
77
+ force_remove(yazi_flavours_path)
78
+ yazi_plugins_dir.mkdir(parents=True, exist_ok=True)
79
+ import git
80
+ git.Repo.clone_from("https://github.com/yazi-rs/flavors", yazi_flavours_path)
81
+
82
+ # previewers:
83
+ from machineconfig.utils.installer_utils.installer_cli import install_if_missing
84
+ install_if_missing("glow")
85
+ install_if_missing("duckdb")
86
+
87
+ if platform.system() == "Linux":
88
+ script = r"""
89
+ sudo nala install poppler-utils -y || true # For PDF preview, needed by yazi.
90
+ """
91
+ from machineconfig.utils.code import run_shell_script
92
+ run_shell_script(script, display_script=True, clean_env=False)
93
+ elif platform.system() == "Darwin":
94
+ script = r"""
95
+ brew install --upgrade poppler || true # For PDF preview, needed by yazi.
96
+ """
97
+ from machineconfig.utils.code import run_shell_script
98
+ run_shell_script(script, display_script=True, clean_env=False)
99
+ elif platform.system() == "Windows":
100
+ install_if_missing(which="git")
101
+ install_if_missing(which="7zip")
102
+ install_if_missing(which="file")
103
+ popler_installer: InstallerData = {
104
+ "appName": "poppler",
105
+ "repoURL": "https://github.com/oschwartz10612/poppler-windows",
106
+ "doc": "PDF rendering library - Windows builds.",
107
+ "fileNamePattern": {
108
+ "amd64": {
109
+ "windows": "Release-{version}.zip",
110
+ "linux": None,
111
+ "macos": None,
112
+ },
113
+ "arm64": {
114
+ "windows": None,
115
+ "linux": None,
116
+ "macos": None,
117
+ }
118
+ }
119
+ } # OR: winget install oschwartz10612.Poppler
120
+ inst_poppler = Installer(installer_data=popler_installer)
121
+ inst_poppler.install(version=None)
122
+ # assuming ouch is already installed
123
+ script = """
124
+
125
+ ya pkg add 'ndtoan96/ouch' # make ouch default previewer in yazi for compressed files
126
+ ya pkg add 'AnirudhG07/rich-preview' # rich-cli based previewer for yazi
127
+ ya pkg add 'stelcodes/bunny'
128
+ ya pkg add 'Tyarel8/goto-drives'
129
+ ya pkg add 'uhs-robert/sshfs'
130
+ ya pkg add 'boydaihungst/file-extra-metadata'
131
+ ya pkg add 'wylie102/duckdb'
132
+
133
+ """
134
+ from machineconfig.utils.code import run_shell_script
135
+ run_shell_script(script, display_script=True, clean_env=False)
136
+
137
+
138
+ if __name__ == "__main__":
139
+ pass
@@ -5,7 +5,6 @@
5
5
  # mkdir ~/data/local
6
6
  # sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
7
7
 
8
- uv run --python 3.14 --with "machineconfig>=6.81" python -m machineconfig.scripts.python.mount_nfs
9
8
  # Check if remote server is reachable and share folder exists
10
9
  if ! ping -c 1 "$remote_server" &> /dev/null; then
11
10
  echo "💥 Error: Remote server $remote_server is not reachable."
@@ -0,0 +1,52 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Starts Windows Terminal with 6 panes running rusty-rain in different styles.
4
+ .DESCRIPTION
5
+ Uses `wt.exe` command chaining to create a custom grid layout.
6
+ Requires rusty-rain to be in your system PATH.
7
+ #>
8
+
9
+ # Define the executable command
10
+ $rr = "rusty-rain"
11
+
12
+ # --- Pane Configuration ---
13
+
14
+ # 1. Main Pane: Classic Matrix (Green Binary, White Head)
15
+ $cmd1 = "$rr --group bin --color green --head white"
16
+
17
+ # 2. Right Side: Red Alert (Japanese, Red, Shaded)
18
+ $cmd2 = "$rr --group jap --color red --shade"
19
+
20
+ # 3. Bottom Right: The Ocean (Shapes, Blue RGB, Rising Up)
21
+ $cmd3 = "$rr --group shapes --color 0,191,255 --direction up"
22
+
23
+ # 4. Bottom Strip 1: Developer Mode (Programming Langs, Yellow/Orange)
24
+ $cmd4 = "$rr --group pglangs --color 255,215,0"
25
+
26
+ # 5. Bottom Strip 2: Nature (Plants, Green, Slow)
27
+ $cmd5 = "$rr --group plants --color green --speed 50"
28
+
29
+ # 6. Inner Vertical: Chaos (Emojis, random colors implied, moving Left)
30
+ $cmd6 = "$rr --group emojis --direction left"
31
+
32
+ # --- Layout Construction ---
33
+ # Logic:
34
+ # 1. Create Tab (Pane 1)
35
+ # 2. Split Vertical 40% (Pane 2)
36
+ # 3. Split that Pane Horizontal 50% (Pane 3)
37
+ # 4. Focus Left (Back to Pane 1) -> Split Horizontal 30% (Pane 4)
38
+ # 5. Split that bottom pane Vertical 50% (Pane 5)
39
+ # 6. Focus Up (Back to Main) -> Split Vertical 30% (Pane 6)
40
+
41
+ $wtArgs = "new-tab -p `"Windows PowerShell`" $cmd1 ; " + `
42
+ "split-pane -V -s 0.4 $cmd2 ; " + `
43
+ "split-pane -H -s 0.5 $cmd3 ; " + `
44
+ "move-focus left ; " + `
45
+ "split-pane -H -s 0.3 $cmd4 ; " + `
46
+ "split-pane -V -s 0.5 $cmd5 ; " + `
47
+ "move-focus up ; " + `
48
+ "split-pane -V -s 0.3 $cmd6"
49
+
50
+ # --- Execution ---
51
+ Write-Host "Launching Rusty Rain Grid..." -ForegroundColor Cyan
52
+ Start-Process wt -ArgumentList $wtArgs
@@ -0,0 +1,13 @@
1
+
2
+
3
+ winget install WinFsp.WinFsp --source winget --scope user --accept-package-agreements --accept-source-agreements; winget install SSHFS-Win.SSHFS-Win --source winget --scope user --accept-package-agreements --accept-source-agreements
4
+
5
+ $host = ''
6
+ $user = ''
7
+ $sharePath = ''
8
+ $driveLetter = ''
9
+
10
+ uv run --python 3.14 --with "machineconfig>=8.51" python -m machineconfig.scripts.python.mount_ssh
11
+
12
+ net use T: \\sshfs.kr\$user@$host.local
13
+ # this worked: net use T: \\sshfs\alex@alex-p51s-5.local
@@ -0,0 +1,4 @@
1
+
2
+
3
+ winget install Gyan.FFmpeg --source winget --scope user --accept-package-agreements --accept-source-agreements
4
+
@@ -0,0 +1,428 @@
1
+ """
2
+ #!/usr/bin/env -S uv run
3
+ # /// script
4
+ # requires-python = ">=3.13"
5
+ # dependencies = [
6
+ # "rich",
7
+ # "psutil",
8
+ # ]
9
+ # ///
10
+
11
+ """
12
+
13
+
14
+ import platform
15
+ import time
16
+ from dataclasses import dataclass, field
17
+
18
+ import psutil
19
+ from rich import box
20
+ from rich.align import Align
21
+ from rich.console import Console
22
+ from rich.layout import Layout
23
+ from rich.panel import Panel
24
+ from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn
25
+ from rich.rule import Rule
26
+ from rich.table import Table
27
+ from rich.text import Text
28
+
29
+
30
+ # ══════════════════════════════════════════════════════════════════════════════
31
+ # Constants & Configuration
32
+ # ══════════════════════════════════════════════════════════════════════════════
33
+
34
+ DEFAULT_FREQ_MHZ: float = 2500.0
35
+ OPS_PER_CYCLE_AVX2: int = 16 # AVX2: ~16 double-precision FLOPs/cycle
36
+ BYTES_PER_GB: int = 1024**3
37
+
38
+ # Tier thresholds and styling
39
+ TIER_CONFIG: list[tuple[int, str, str]] = [
40
+ (500, "OBSOLETE", "grey50"),
41
+ (1000, "CONSUMER", "green"),
42
+ (2000, "WORKSTATION", "blue"),
43
+ (4000, "HIGH-PERFORMANCE", "magenta"),
44
+ (999999, "SERVER GRADE", "bold red"),
45
+ ]
46
+
47
+ # Visual theme
48
+ THEME = {
49
+ "primary": "cyan",
50
+ "secondary": "magenta",
51
+ "accent": "yellow",
52
+ "success": "green",
53
+ "header_bg": "blue",
54
+ }
55
+
56
+ console = Console()
57
+
58
+
59
+ # ══════════════════════════════════════════════════════════════════════════════
60
+ # Data Structures
61
+ # ══════════════════════════════════════════════════════════════════════════════
62
+
63
+
64
+ @dataclass
65
+ class HardwareSpecs:
66
+ """Container for hardware specifications."""
67
+
68
+ physical_cores: int = 0
69
+ logical_cores: int = 0
70
+ max_freq_mhz: float = 0.0
71
+ current_freq_mhz: float = 0.0
72
+ total_ram_bytes: int = 0
73
+ available_ram_bytes: int = 0
74
+ ram_percent_used: float = 0.0
75
+ architecture: str = ""
76
+ cpu_model: str = ""
77
+
78
+
79
+ @dataclass
80
+ class ComputeMetrics:
81
+ """Calculated compute performance metrics."""
82
+
83
+ compute_index: int = 0
84
+ theoretical_gflops: float = 0.0
85
+ tier_name: str = ""
86
+ tier_style: str = ""
87
+ core_score: float = 0.0
88
+ freq_multiplier: float = 0.0
89
+ ram_score: float = 0.0
90
+
91
+
92
+ # ══════════════════════════════════════════════════════════════════════════════
93
+ # System Scanner
94
+ # ══════════════════════════════════════════════════════════════════════════════
95
+
96
+
97
+ @dataclass
98
+ class SystemScanner:
99
+ """Scans and analyzes system hardware for compute capability metrics."""
100
+
101
+ specs: HardwareSpecs = field(default_factory=HardwareSpecs)
102
+ metrics: ComputeMetrics = field(default_factory=ComputeMetrics)
103
+
104
+ @staticmethod
105
+ def format_bytes(num_bytes: int | float, suffix: str = "B") -> str:
106
+ """Scale bytes to human-readable format with proper unit prefix."""
107
+ factor = 1024.0
108
+ value = float(num_bytes)
109
+ for unit in ("", "K", "M", "G", "T", "P", "E"):
110
+ if abs(value) < factor:
111
+ return f"{value:.2f} {unit}{suffix}"
112
+ value /= factor
113
+ return f"{value:.2f} Z{suffix}"
114
+
115
+ def scan_hardware(self) -> None:
116
+ """Gather hardware specs using psutil."""
117
+ # CPU cores - prefer physical, fallback to logical
118
+ physical = psutil.cpu_count(logical=False)
119
+ logical = psutil.cpu_count(logical=True)
120
+ p_cores = physical if physical else (logical if logical else 1)
121
+ l_cores = logical if logical else p_cores
122
+
123
+ # CPU frequency with fallback
124
+ max_freq = DEFAULT_FREQ_MHZ
125
+ current_freq = DEFAULT_FREQ_MHZ
126
+ try:
127
+ freq = psutil.cpu_freq()
128
+ if freq: # Can be None on some systems
129
+ max_freq = freq.max if freq.max > 0 else freq.current
130
+ current_freq = freq.current
131
+ except (AttributeError, FileNotFoundError, PermissionError, RuntimeError):
132
+ pass # Use defaults
133
+
134
+ # Memory info
135
+ vmem = psutil.virtual_memory()
136
+
137
+ # CPU model detection
138
+ cpu_model = self._detect_cpu_model()
139
+
140
+ self.specs = HardwareSpecs(
141
+ physical_cores=p_cores,
142
+ logical_cores=l_cores,
143
+ max_freq_mhz=max_freq,
144
+ current_freq_mhz=current_freq,
145
+ total_ram_bytes=vmem.total,
146
+ available_ram_bytes=vmem.available,
147
+ ram_percent_used=vmem.percent,
148
+ architecture=platform.machine() or "Unknown",
149
+ cpu_model=cpu_model,
150
+ )
151
+
152
+ @staticmethod
153
+ def _detect_cpu_model() -> str:
154
+ """Detect CPU model string from platform info."""
155
+ try:
156
+ return platform.processor() or "Unknown Processor"
157
+ except (OSError, AttributeError):
158
+ return "Unknown Processor"
159
+
160
+ def calculate_metrics(self) -> None:
161
+ """Calculate compute power index and theoretical GFLOPS."""
162
+ s = self.specs
163
+
164
+ # Core score: physical cores weighted heavily, threads add bonus
165
+ thread_bonus = max(0, s.logical_cores - s.physical_cores)
166
+ core_score = (s.physical_cores * 100.0) + (thread_bonus * 30.0)
167
+
168
+ # Frequency multiplier (normalized to 2.5 GHz baseline)
169
+ ghz = s.max_freq_mhz / 1000.0
170
+ freq_multiplier = ghz / 2.5
171
+
172
+ cpu_total = core_score * freq_multiplier
173
+
174
+ # Memory bonus (5 points per GB)
175
+ ram_gb = s.total_ram_bytes / BYTES_PER_GB
176
+ ram_score = ram_gb * 5.0
177
+
178
+ compute_index = int(cpu_total + ram_score)
179
+
180
+ # Theoretical GFLOPS (Rpeak) = cores × GHz × FLOPs/cycle
181
+ theoretical_gflops = s.physical_cores * ghz * OPS_PER_CYCLE_AVX2
182
+
183
+ # Determine tier
184
+ tier_name, tier_style = "UNKNOWN", "white"
185
+ for threshold, name, style in TIER_CONFIG:
186
+ if compute_index < threshold:
187
+ tier_name, tier_style = name, style
188
+ break
189
+
190
+ self.metrics = ComputeMetrics(
191
+ compute_index=compute_index,
192
+ theoretical_gflops=theoretical_gflops,
193
+ tier_name=tier_name,
194
+ tier_style=tier_style,
195
+ core_score=core_score,
196
+ freq_multiplier=freq_multiplier,
197
+ ram_score=ram_score,
198
+ )
199
+
200
+ def _build_header(self) -> Panel:
201
+ """Build the header panel."""
202
+ title = Text()
203
+ title.append("╔══════════════════════════════════════╗\n", style="bold cyan")
204
+ title.append("║ ", style="bold cyan")
205
+ title.append("SYSTEM COMPUTE ANALYZER", style="bold white")
206
+ title.append(" ║\n", style="bold cyan")
207
+ title.append("╚══════════════════════════════════════╝", style="bold cyan")
208
+
209
+ return Panel(
210
+ Align.center(title),
211
+ box=box.DOUBLE,
212
+ style=THEME["header_bg"],
213
+ padding=(0, 2),
214
+ )
215
+
216
+ def _build_cpu_panel(self) -> Panel:
217
+ """Build the CPU information panel."""
218
+ s = self.specs
219
+ table = Table(
220
+ show_header=True,
221
+ header_style=f"bold {THEME['primary']}",
222
+ expand=True,
223
+ box=box.ROUNDED,
224
+ border_style="dim cyan",
225
+ row_styles=["", "dim"],
226
+ )
227
+ table.add_column("⚡ Attribute", style="cyan", no_wrap=True)
228
+ table.add_column("Value", style="bold white", justify="right")
229
+
230
+ # Cores with visual indicator
231
+ cores_bar = "█" * min(s.physical_cores, 16) + "░" * max(0, 16 - s.physical_cores)
232
+ table.add_row("Physical Cores", f"{s.physical_cores} [{THEME['primary']}]{cores_bar}[/]")
233
+ table.add_row("Logical Threads", str(s.logical_cores))
234
+ table.add_row("──────────────", "────────────")
235
+ table.add_row("Max Frequency", f"[bold yellow]{s.max_freq_mhz:,.0f}[/] MHz")
236
+ table.add_row("Current Freq", f"{s.current_freq_mhz:,.0f} MHz")
237
+ table.add_row("Architecture", f"[bold]{s.architecture}[/]")
238
+
239
+ return Panel(
240
+ table,
241
+ title=f"[bold {THEME['primary']}]◆ CPU COMPUTE UNIT ◆[/]",
242
+ border_style=THEME["primary"],
243
+ box=box.HEAVY,
244
+ padding=(1, 1),
245
+ )
246
+
247
+ def _build_memory_panel(self) -> Panel:
248
+ """Build the memory information panel."""
249
+ s = self.specs
250
+ table = Table(
251
+ show_header=True,
252
+ header_style=f"bold {THEME['secondary']}",
253
+ expand=True,
254
+ box=box.ROUNDED,
255
+ border_style="dim magenta",
256
+ row_styles=["", "dim"],
257
+ )
258
+ table.add_column("💾 Attribute", style="magenta", no_wrap=True)
259
+ table.add_column("Value", style="bold white", justify="right")
260
+
261
+ # Memory usage bar
262
+ used_blocks = int(s.ram_percent_used / 10)
263
+ free_blocks = 10 - used_blocks
264
+ mem_bar = f"[green]{'█' * free_blocks}[/][red]{'█' * used_blocks}[/]"
265
+
266
+ table.add_row("Total Memory", f"[bold yellow]{self.format_bytes(s.total_ram_bytes)}[/]")
267
+ table.add_row("Available", self.format_bytes(s.available_ram_bytes))
268
+ table.add_row("──────────────", "────────────")
269
+ table.add_row("Usage", f"{s.ram_percent_used:.1f}% {mem_bar}")
270
+
271
+ return Panel(
272
+ table,
273
+ title=f"[bold {THEME['secondary']}]◆ MEMORY MATRIX ◆[/]",
274
+ border_style=THEME["secondary"],
275
+ box=box.HEAVY,
276
+ padding=(1, 1),
277
+ )
278
+
279
+ def _build_metrics_panel(self) -> Panel:
280
+ """Build the performance metrics panel."""
281
+ m = self.metrics
282
+
283
+ # Build score display with visual flair
284
+ content = Table.grid(padding=(0, 2), expand=True)
285
+ content.add_column(justify="center")
286
+
287
+ # Main score with large emphasis
288
+ score_text = Text()
289
+ score_text.append("\n┌─────────────────────────────────────────┐\n", style="dim yellow")
290
+ score_text.append("│ COMPUTE POWER INDEX │ ", style="dim yellow")
291
+ score_text.append(f"{m.compute_index:,}", style="bold yellow on black")
292
+ score_text.append(" │\n", style="dim yellow")
293
+ score_text.append("└─────────────────────────────────────────┘\n", style="dim yellow")
294
+
295
+ content.add_row(Align.center(score_text))
296
+
297
+ # Breakdown table
298
+ breakdown = Table(show_header=False, box=None, padding=(0, 4))
299
+ breakdown.add_column(style="dim")
300
+ breakdown.add_column(style="bold", justify="right")
301
+ breakdown.add_row("Core Score:", f"{m.core_score:.0f}")
302
+ breakdown.add_row("Freq Multiplier:", f"×{m.freq_multiplier:.2f}")
303
+ breakdown.add_row("RAM Bonus:", f"+{m.ram_score:.0f}")
304
+
305
+ content.add_row(Align.center(breakdown))
306
+
307
+ # Theoretical GFLOPS
308
+ gflops_text = Text()
309
+ gflops_text.append("\n⚡ Theoretical Rpeak: ", style="dim white")
310
+ gflops_text.append(f"{m.theoretical_gflops:.2f} GFLOPS", style="bold red underline")
311
+ gflops_text.append(" (AVX2)", style="dim")
312
+ content.add_row(Align.center(gflops_text))
313
+
314
+ # Tier with styled badge
315
+ tier_text = Text()
316
+ tier_text.append("\n\n◉ CLASSIFICATION: ", style="bold white")
317
+ tier_text.append(f" {m.tier_name} ", style=f"bold white on {m.tier_style}")
318
+ tier_text.append("\n", style="")
319
+ content.add_row(Align.center(tier_text))
320
+
321
+ return Panel(
322
+ content,
323
+ title=f"[bold {THEME['accent']}]★ PERFORMANCE METRICS ★[/]",
324
+ border_style=THEME["accent"],
325
+ box=box.DOUBLE,
326
+ padding=(1, 2),
327
+ )
328
+
329
+ def render_dashboard(self) -> Layout:
330
+ """Generate the complete dashboard layout."""
331
+ layout = Layout()
332
+
333
+ layout.split_column(
334
+ Layout(self._build_header(), name="header", size=5),
335
+ Layout(name="body", ratio=2),
336
+ Layout(Rule("─", style="dim"), name="divider", size=1),
337
+ Layout(self._build_metrics_panel(), name="metrics", size=14),
338
+ )
339
+
340
+ layout["body"].split_row(
341
+ Layout(self._build_cpu_panel(), name="cpu"),
342
+ Layout(self._build_memory_panel(), name="memory"),
343
+ )
344
+
345
+ return layout
346
+
347
+
348
+ # ══════════════════════════════════════════════════════════════════════════════
349
+ # Progress Animation
350
+ # ══════════════════════════════════════════════════════════════════════════════
351
+
352
+
353
+ def run_scan_animation(scanner: SystemScanner) -> None:
354
+ """Run the scanning progress animation."""
355
+ scan_complete = False
356
+
357
+ with Progress(
358
+ SpinnerColumn("dots12", style="bold cyan"),
359
+ TextColumn("[bold]{task.description}"),
360
+ BarColumn(bar_width=40, complete_style="green", finished_style="bold green"),
361
+ TextColumn("[bold cyan]{task.percentage:>3.0f}%"),
362
+ console=console,
363
+ expand=True,
364
+ ) as progress:
365
+ task1 = progress.add_task(f"[{THEME['primary']}]⚙ Probing CPU Architecture...", total=100)
366
+ task2 = progress.add_task(
367
+ f"[{THEME['secondary']}]💾 Analyzing Memory Banks...",
368
+ total=100,
369
+ start=False,
370
+ )
371
+ task3 = progress.add_task(
372
+ f"[{THEME['accent']}]📊 Calculating Vector Potential...",
373
+ total=100,
374
+ start=False,
375
+ )
376
+
377
+ while not progress.finished:
378
+ # Task 1: CPU probe
379
+ if progress.tasks[0].completed < 100:
380
+ progress.update(task1, advance=2.5)
381
+ if progress.tasks[0].completed >= 50 and not scan_complete:
382
+ scanner.scan_hardware()
383
+ scan_complete = True
384
+ elif not progress.tasks[1].started:
385
+ progress.start_task(task2)
386
+
387
+ # Task 2: Memory analysis
388
+ if progress.tasks[1].started and progress.tasks[1].completed < 100:
389
+ progress.update(task2, advance=3.5)
390
+ elif progress.tasks[1].completed >= 100 and not progress.tasks[2].started:
391
+ progress.start_task(task3)
392
+
393
+ # Task 3: Calculation
394
+ if progress.tasks[2].started:
395
+ progress.update(task3, advance=4.5)
396
+
397
+ time.sleep(0.025)
398
+
399
+
400
+ # ══════════════════════════════════════════════════════════════════════════════
401
+ # Entry Point
402
+ # ══════════════════════════════════════════════════════════════════════════════
403
+
404
+
405
+ def main() -> None:
406
+ """Main entry point for the system compute analyzer."""
407
+ scanner = SystemScanner()
408
+
409
+ console.clear()
410
+ console.print()
411
+
412
+ # Phase 1: Animated scanning
413
+ run_scan_animation(scanner)
414
+
415
+ # Phase 2: Calculate metrics
416
+ scanner.calculate_metrics()
417
+
418
+ # Phase 3: Display results
419
+ console.print()
420
+ console.print(scanner.render_dashboard())
421
+ console.print()
422
+
423
+
424
+ if __name__ == "__main__":
425
+ try:
426
+ main()
427
+ except KeyboardInterrupt:
428
+ console.print("\n[bold red]✖ Analysis Aborted by User[/bold red]\n")
machineconfig/logger.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import annotations
2
1
 
3
2
  import logging
4
3
  import os
@@ -47,4 +46,4 @@ def get_logger(name: Optional[str] = None) -> logging.Logger:
47
46
 
48
47
 
49
48
  # Convenience alias for simple imports: `from machineconfig.logger import logger`
50
- logger: logging.Logger = get_logger()
49
+ # logger: logging.Logger = get_logger()