machineconfig 5.15__py3-none-any.whl → 7.66__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.

Potentially problematic release.


This version of machineconfig might be problematic. Click here for more details.

Files changed (389) hide show
  1. machineconfig/__init__.py +0 -28
  2. machineconfig/cluster/remote/distribute.py +0 -1
  3. machineconfig/cluster/remote/file_manager.py +0 -2
  4. machineconfig/cluster/remote/script_execution.py +0 -1
  5. machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
  6. machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
  7. machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
  8. machineconfig/cluster/sessions_managers/wt_local.py +114 -289
  9. machineconfig/cluster/sessions_managers/wt_local_manager.py +50 -193
  10. machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
  11. machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
  12. machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
  13. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  14. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  15. machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
  16. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  17. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  18. machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
  19. machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -169
  20. machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
  21. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
  22. machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
  23. machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
  24. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
  25. machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
  26. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
  27. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
  28. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
  29. machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
  30. machineconfig/jobs/{python → installer}/check_installations.py +2 -3
  31. machineconfig/jobs/installer/custom/boxes.py +61 -0
  32. machineconfig/jobs/installer/custom/hx.py +76 -19
  33. machineconfig/jobs/installer/custom_dev/alacritty.py +4 -4
  34. machineconfig/jobs/installer/custom_dev/brave.py +1 -7
  35. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  36. machineconfig/jobs/installer/custom_dev/code.py +4 -1
  37. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
  38. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +9 -18
  39. machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
  40. machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
  41. machineconfig/jobs/installer/installer_data.json +1101 -115
  42. machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
  43. machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
  44. machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
  45. machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
  46. machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
  47. machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
  48. machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
  49. machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
  50. machineconfig/jobs/installer/linux_scripts/q.sh +1 -0
  51. machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
  52. machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
  53. machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
  54. machineconfig/jobs/installer/package_groups.py +108 -180
  55. machineconfig/logger.py +0 -1
  56. machineconfig/profile/backup.toml +49 -0
  57. machineconfig/profile/bash_shell_profiles.md +11 -0
  58. machineconfig/profile/create_helper.py +74 -0
  59. machineconfig/profile/create_links.py +288 -0
  60. machineconfig/profile/create_links_export.py +100 -0
  61. machineconfig/profile/create_shell_profile.py +136 -0
  62. machineconfig/profile/mapper.toml +258 -0
  63. machineconfig/scripts/Restore-ThunderbirdProfile.ps1 +92 -0
  64. machineconfig/scripts/__init__.py +0 -4
  65. machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
  66. machineconfig/scripts/linux/wrap_mcfg +47 -0
  67. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  68. machineconfig/scripts/python/agents.py +92 -103
  69. machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
  70. machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
  71. machineconfig/scripts/python/ai/generate_files.py +307 -42
  72. machineconfig/scripts/python/ai/initai.py +3 -28
  73. machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
  74. machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
  75. machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
  76. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
  77. machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
  78. machineconfig/scripts/python/ai/solutions/generic.py +27 -4
  79. machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
  80. machineconfig/scripts/python/cloud.py +29 -0
  81. machineconfig/scripts/python/croshell.py +111 -114
  82. machineconfig/scripts/python/define.py +31 -0
  83. machineconfig/scripts/python/devops.py +44 -103
  84. machineconfig/scripts/python/devops_navigator.py +10 -0
  85. machineconfig/scripts/python/env_manager/__init__.py +1 -0
  86. machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
  87. machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
  88. machineconfig/scripts/python/explore.py +49 -0
  89. machineconfig/scripts/python/fire_jobs.py +115 -152
  90. machineconfig/scripts/python/ftpx.py +29 -24
  91. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
  92. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
  93. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
  94. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
  95. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  96. machineconfig/scripts/python/{fire_agents_help_launch.py → helpers_agents/fire_agents_help_launch.py} +34 -44
  97. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
  98. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
  99. machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
  100. machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
  101. machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
  102. machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +10 -18
  103. machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
  104. machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +1 -1
  105. machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
  106. machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +2 -2
  107. machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
  108. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
  109. machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
  110. machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
  111. machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
  112. machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
  113. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  114. machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
  115. machineconfig/scripts/python/{share_terminal.py → helpers_devops/cli_terminal.py} +35 -23
  116. machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
  117. machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
  118. machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
  119. machineconfig/scripts/python/{devops_update_repos.py → helpers_devops/devops_update_repos.py} +68 -49
  120. machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
  121. machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
  122. machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
  123. machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
  124. machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +56 -20
  125. machineconfig/scripts/python/{fire_jobs_args_helper.py → helpers_fire_command/fire_jobs_args_helper.py} +5 -1
  126. machineconfig/scripts/python/{fire_jobs_route_helper.py → helpers_fire_command/fire_jobs_route_helper.py} +47 -2
  127. machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  128. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  129. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
  130. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
  131. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
  132. machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
  133. machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
  134. machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
  135. machineconfig/scripts/python/helpers_navigator/command_tree.py +588 -0
  136. machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
  137. machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
  138. machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
  139. machineconfig/scripts/python/helpers_repos/action.py +209 -0
  140. machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
  141. machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +2 -3
  142. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
  143. machineconfig/scripts/python/{count_lines.py → helpers_repos/count_lines.py} +10 -10
  144. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
  145. machineconfig/scripts/python/{repos_helper.py → helpers_repos/entrypoint.py} +9 -17
  146. machineconfig/scripts/python/helpers_repos/grource.py +340 -0
  147. machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +4 -3
  148. machineconfig/scripts/python/helpers_repos/sync.py +66 -0
  149. machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
  150. machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
  151. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
  152. machineconfig/scripts/python/helpers_utils/download.py +152 -0
  153. machineconfig/scripts/python/helpers_utils/path.py +108 -0
  154. machineconfig/scripts/python/interactive.py +64 -84
  155. machineconfig/scripts/python/machineconfig.py +63 -0
  156. machineconfig/scripts/python/msearch.py +21 -0
  157. machineconfig/scripts/python/nw/__init__.py +0 -0
  158. machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +0 -2
  159. machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +73 -43
  160. machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
  161. machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +3 -3
  162. machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
  163. machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +3 -3
  164. machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
  165. machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
  166. machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
  167. machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -53
  168. machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +5 -4
  169. machineconfig/scripts/python/sessions.py +64 -44
  170. machineconfig/scripts/python/terminal.py +127 -0
  171. machineconfig/scripts/python/utils.py +66 -0
  172. machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
  173. machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
  174. machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
  175. machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
  176. machineconfig/settings/broot/br.sh +0 -4
  177. machineconfig/settings/broot/conf.toml +1 -1
  178. machineconfig/settings/helix/config.toml +16 -0
  179. machineconfig/settings/helix/languages.toml +13 -4
  180. machineconfig/settings/helix/yazi-picker.sh +12 -0
  181. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  182. machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
  183. machineconfig/settings/lf/linux/lfrc +10 -12
  184. machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
  185. machineconfig/settings/lf/windows/lfrc +18 -38
  186. machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
  187. machineconfig/settings/linters/.ruff.toml +1 -1
  188. machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
  189. machineconfig/settings/marimo/marimo.toml +80 -0
  190. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  191. machineconfig/settings/pistol/pistol.conf +1 -1
  192. machineconfig/settings/shells/bash/init.sh +55 -31
  193. machineconfig/settings/shells/nushell/config.nu +1 -34
  194. machineconfig/settings/shells/nushell/init.nu +127 -0
  195. machineconfig/settings/shells/pwsh/init.ps1 +60 -43
  196. machineconfig/settings/shells/starship/starship.toml +16 -0
  197. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  198. machineconfig/settings/shells/wt/settings.json +32 -17
  199. machineconfig/settings/shells/zsh/init.sh +89 -0
  200. machineconfig/settings/svim/linux/init.toml +0 -4
  201. machineconfig/settings/svim/windows/init.toml +0 -3
  202. machineconfig/settings/yazi/init.lua +57 -0
  203. machineconfig/settings/yazi/keymap_linux.toml +79 -0
  204. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  205. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  206. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  207. machineconfig/settings/yazi/yazi.toml +13 -0
  208. machineconfig/setup_linux/__init__.py +10 -0
  209. machineconfig/setup_linux/apps_desktop.sh +89 -0
  210. machineconfig/setup_linux/apps_gui.sh +64 -0
  211. machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
  212. machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
  213. machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
  214. machineconfig/setup_linux/uv.sh +15 -0
  215. machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
  216. machineconfig/setup_mac/__init__.py +16 -0
  217. machineconfig/setup_mac/apps_gui.sh +248 -0
  218. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  219. machineconfig/setup_mac/uv.sh +36 -0
  220. machineconfig/setup_windows/__init__.py +8 -0
  221. machineconfig/setup_windows/others/power_options.ps1 +7 -0
  222. machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
  223. machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
  224. machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
  225. machineconfig/setup_windows/uv.ps1 +10 -0
  226. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -10
  227. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
  228. machineconfig/utils/accessories.py +7 -5
  229. machineconfig/utils/cloud/onedrive/README.md +139 -0
  230. machineconfig/utils/code.py +133 -106
  231. machineconfig/utils/files/art/fat_croco.txt +10 -0
  232. machineconfig/utils/files/art/halfwit_croco.txt +9 -0
  233. machineconfig/utils/files/art/happy_croco.txt +22 -0
  234. machineconfig/utils/files/art/water_croco.txt +11 -0
  235. machineconfig/utils/files/ascii_art.py +1 -1
  236. machineconfig/utils/files/dbms.py +257 -0
  237. machineconfig/utils/files/headers.py +11 -14
  238. machineconfig/utils/files/ouch/__init__.py +0 -0
  239. machineconfig/utils/files/ouch/decompress.py +45 -0
  240. machineconfig/utils/files/read.py +10 -18
  241. machineconfig/utils/installer_utils/installer_class.py +68 -126
  242. machineconfig/utils/installer_utils/{installer.py → installer_cli.py} +109 -117
  243. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +31 -81
  244. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +44 -74
  245. machineconfig/utils/io.py +77 -23
  246. machineconfig/utils/links.py +254 -162
  247. machineconfig/utils/meta.py +255 -0
  248. machineconfig/utils/notifications.py +1 -1
  249. machineconfig/utils/options.py +13 -3
  250. machineconfig/utils/path_extended.py +46 -100
  251. machineconfig/utils/path_helper.py +75 -22
  252. machineconfig/utils/procs.py +50 -70
  253. machineconfig/utils/scheduler.py +94 -97
  254. machineconfig/utils/scheduling.py +0 -3
  255. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  256. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  257. machineconfig/utils/source_of_truth.py +3 -6
  258. machineconfig/utils/ssh.py +742 -264
  259. machineconfig/utils/ssh_utils/utils.py +0 -0
  260. machineconfig/utils/terminal.py +2 -113
  261. machineconfig/utils/tst.py +20 -0
  262. machineconfig/utils/upgrade_packages.py +109 -28
  263. machineconfig/utils/ve.py +11 -4
  264. machineconfig-7.66.dist-info/METADATA +124 -0
  265. machineconfig-7.66.dist-info/RECORD +451 -0
  266. machineconfig-7.66.dist-info/entry_points.txt +15 -0
  267. machineconfig/cluster/sessions_managers/ffile.py +0 -4
  268. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
  269. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
  270. machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
  271. machineconfig/jobs/python/python_ve_symlink.py +0 -37
  272. machineconfig/jobs/python/vscode/api.py +0 -57
  273. machineconfig/jobs/python/vscode/sync_code.py +0 -73
  274. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
  275. machineconfig/jobs/windows/start_terminal.ps1 +0 -6
  276. machineconfig/jobs/windows/startup_file.cmd +0 -2
  277. machineconfig/profile/create.py +0 -303
  278. machineconfig/profile/shell.py +0 -176
  279. machineconfig/scripts/cloud/init.sh +0 -119
  280. machineconfig/scripts/linux/agents +0 -2
  281. machineconfig/scripts/linux/choose_wezterm_theme +0 -3
  282. machineconfig/scripts/linux/cloud_copy +0 -2
  283. machineconfig/scripts/linux/cloud_mount +0 -2
  284. machineconfig/scripts/linux/cloud_repo_sync +0 -2
  285. machineconfig/scripts/linux/cloud_sync +0 -2
  286. machineconfig/scripts/linux/croshell +0 -3
  287. machineconfig/scripts/linux/devops +0 -2
  288. machineconfig/scripts/linux/fire +0 -2
  289. machineconfig/scripts/linux/ftpx +0 -2
  290. machineconfig/scripts/linux/fzf2g +0 -21
  291. machineconfig/scripts/linux/fzffg +0 -25
  292. machineconfig/scripts/linux/gh_models +0 -2
  293. machineconfig/scripts/linux/initai +0 -2
  294. machineconfig/scripts/linux/kill_process +0 -2
  295. machineconfig/scripts/linux/scheduler +0 -2
  296. machineconfig/scripts/linux/sessions +0 -2
  297. machineconfig/scripts/linux/share_smb +0 -1
  298. machineconfig/scripts/linux/start_slidev +0 -2
  299. machineconfig/scripts/linux/start_terminals +0 -3
  300. machineconfig/scripts/linux/warp-cli.sh +0 -122
  301. machineconfig/scripts/linux/wifi_conn +0 -2
  302. machineconfig/scripts/linux/z_ls +0 -104
  303. machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
  304. machineconfig/scripts/python/cloud_repo_sync.py +0 -190
  305. machineconfig/scripts/python/count_lines_frontend.py +0 -16
  306. machineconfig/scripts/python/dotfile.py +0 -78
  307. machineconfig/scripts/python/fire_agents_helper_types.py +0 -12
  308. machineconfig/scripts/python/get_zellij_cmd.py +0 -15
  309. machineconfig/scripts/python/gh_models.py +0 -104
  310. machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -116
  311. machineconfig/scripts/python/repos.py +0 -132
  312. machineconfig/scripts/python/repos_helper_action.py +0 -378
  313. machineconfig/scripts/python/snapshot.py +0 -25
  314. machineconfig/scripts/python/start_terminals.py +0 -121
  315. machineconfig/scripts/python/t4.py +0 -17
  316. machineconfig/scripts/windows/agents.ps1 +0 -1
  317. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
  318. machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
  319. machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
  320. machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
  321. machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
  322. machineconfig/scripts/windows/croshell.ps1 +0 -1
  323. machineconfig/scripts/windows/devops.ps1 +0 -1
  324. machineconfig/scripts/windows/dotfile.ps1 +0 -1
  325. machineconfig/scripts/windows/fire.ps1 +0 -1
  326. machineconfig/scripts/windows/ftpx.ps1 +0 -1
  327. machineconfig/scripts/windows/gpt.ps1 +0 -1
  328. machineconfig/scripts/windows/grep.ps1 +0 -2
  329. machineconfig/scripts/windows/initai.ps1 +0 -1
  330. machineconfig/scripts/windows/kill_process.ps1 +0 -1
  331. machineconfig/scripts/windows/nano.ps1 +0 -3
  332. machineconfig/scripts/windows/pomodoro.ps1 +0 -1
  333. machineconfig/scripts/windows/reload_path.ps1 +0 -3
  334. machineconfig/scripts/windows/scheduler.ps1 +0 -1
  335. machineconfig/scripts/windows/sessions.ps1 +0 -1
  336. machineconfig/scripts/windows/snapshot.ps1 +0 -1
  337. machineconfig/scripts/windows/start_slidev.ps1 +0 -1
  338. machineconfig/scripts/windows/start_terminals.ps1 +0 -1
  339. machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
  340. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
  341. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
  342. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  343. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  344. machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  345. machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  346. machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  347. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  348. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  349. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  350. machineconfig/utils/ai/generate_file_checklist.py +0 -68
  351. machineconfig-5.15.dist-info/METADATA +0 -188
  352. machineconfig-5.15.dist-info/RECORD +0 -415
  353. machineconfig-5.15.dist-info/entry_points.txt +0 -18
  354. machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
  355. machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
  356. machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
  357. machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
  358. machineconfig/{jobs/python → scripts/python/helpers_agents}/__init__.py +0 -0
  359. machineconfig/scripts/python/{helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
  360. machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
  361. machineconfig/scripts/python/{fire_agents_load_balancer.py → helpers_agents/fire_agents_load_balancer.py} +0 -0
  362. machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_cloud/__init__.py} +0 -0
  363. machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
  364. /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
  365. /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_croshell/__init__.py} +0 -0
  366. /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
  367. /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
  368. /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
  369. /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
  370. /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_devops/__init__.py} +0 -0
  371. /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/themes/__init__.py} +0 -0
  372. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
  373. /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
  374. /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
  375. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
  376. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
  377. /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
  378. /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
  379. /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
  380. /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
  381. /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
  382. /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
  383. /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
  384. /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
  385. /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
  386. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  387. /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  388. {machineconfig-5.15.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
  389. {machineconfig-5.15.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,30 @@
1
+
2
+ from pathlib import Path
3
+ import shlex
4
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
5
+
6
+
7
+ def fire_qwen(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path, config_dir: str | None) -> str:
8
+ _ = ai_spec["provider"]
9
+ safe_path = shlex.quote(str(prompt_path))
10
+ match ai_spec["machine"]:
11
+ case "local":
12
+ cmd = f"""
13
+ qwen --yolo --prompt {safe_path}
14
+ """
15
+ case "docker":
16
+ assert config_dir is not None, "When using docker, config_dir must be provided."
17
+ assert Path(config_dir).exists(), f"Provided config_dir {config_dir} does not exist."
18
+ oauth_creds = Path(config_dir).joinpath("oauth_creds.json")
19
+ settings = Path(config_dir).joinpath("settings.json")
20
+
21
+ cmd = f"""
22
+ docker run -it --rm \
23
+ -v "{repo_root}:/workspace/{repo_root.name}" \
24
+ -v {shlex.quote(str(oauth_creds))}:/root/.qwen/oauth_creds.json \
25
+ -v {shlex.quote(str(settings))}:/root/.qwen/settings.json \
26
+ -w "/workspace/{repo_root.name}" \
27
+ statistician/machineconfig-ai:latest \
28
+ qwen --prompt "$PATH_PROMPT"
29
+ """
30
+ return cmd
@@ -2,13 +2,12 @@
2
2
  import random
3
3
  import shlex
4
4
  from pathlib import Path
5
- from machineconfig.scripts.python.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER
5
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER, HOST, PROVIDER, AI_SPEC
6
6
 
7
7
 
8
- def get_gemini_api_keys() -> list[str]:
8
+ def get_api_keys(provider: PROVIDER) -> list[str]:
9
9
  from machineconfig.utils.io import read_ini
10
-
11
- config = read_ini(Path.home().joinpath("dotfiles/creds/llm/gemini/api_keys.ini"))
10
+ config = read_ini(Path.home().joinpath(f"dotfiles/creds/llm/{provider}/api_keys.ini"))
12
11
  res: list[str] = []
13
12
  for a_section_name in list(config.sections()):
14
13
  a_section = config[a_section_name]
@@ -16,11 +15,12 @@ def get_gemini_api_keys() -> list[str]:
16
15
  api_key = a_section["api_key"].strip()
17
16
  if api_key:
18
17
  res.append(api_key)
19
- print(f"Found {len(res)} Gemini API keys configured.")
18
+ print(f"Found {len(res)} {provider} API keys configured.")
20
19
  return res
21
20
 
22
21
 
23
- def prep_agent_launch(agents_dir: Path, prompts_material: list[str], prompt_prefix: str, keep_material_in_separate_file: bool, agent: AGENTS, *, job_name: str) -> None:
22
+ def prep_agent_launch(repo_root: Path, agents_dir: Path, prompts_material: list[str], prompt_prefix: str, keep_material_in_separate_file: bool,
23
+ machine: HOST, model: str, provider: PROVIDER, agent: AGENTS, *, job_name: str) -> None:
24
24
  agents_dir.mkdir(parents=True, exist_ok=True)
25
25
  prompt_folder = agents_dir / "prompts"
26
26
  prompt_folder.mkdir(parents=True, exist_ok=True)
@@ -32,18 +32,22 @@ def prep_agent_launch(agents_dir: Path, prompts_material: list[str], prompt_pref
32
32
  if keep_material_in_separate_file:
33
33
  prompt_material_path = prompt_root / f"agent_{idx}_material.txt"
34
34
  prompt_material_path.write_text(a_prompt_material, encoding="utf-8")
35
- prompt_path.write_text(prompt_prefix + f"""\nPlease only look @ {prompt_material_path}. You don't need to do any other work beside the content of this material file.""", encoding="utf-8")
35
+ prompt_path.write_text(prompt_prefix + f"""\nPlease only look @ {prompt_material_path.relative_to(repo_root)}. You don't need to do any other work beside the content of this material file.""", encoding="utf-8")
36
36
  else:
37
37
  prompt_material_path = prompt_path
38
38
  prompt_path.write_text(prompt_prefix + """\nPlease only look @ the following:\n""" + a_prompt_material, encoding="utf-8")
39
39
 
40
40
  agent_cmd_launch_path = prompt_root / AGENT_NAME_FORMATTER.format(idx=idx) # e.g., agent_0_cmd.sh
41
41
  random_sleep_time = random.uniform(0, 5)
42
- cmd_prefix = f"""
43
- #!/usr/bin/env bash
42
+ cmd_prefix = f"""#!/usr/bin/env bash
44
43
 
45
- # AGENT-{idx}-LAUNCH-SCRIPT
46
- # Auto-generated by fire_agents.py
44
+ echo "Using machine: {machine}, model: {model}, provider: {provider}, and agent: {agent}"
45
+ echo "{job_name}-{idx} CMD {agent_cmd_launch_path}"
46
+ echo "{job_name}-{idx} PROMPT {prompt_path}"
47
+ echo "{job_name}-{idx} CONTEXT {prompt_material_path}"
48
+ echo "Starting agent {agent} in 5 seconds... Press Ctrl+C to cancel."
49
+ # sleep 5
50
+ # timeout 3 copilot --banner
47
51
 
48
52
  export FIRE_AGENTS_AGENT_NAME="{agent}"
49
53
  export FIRE_AGENTS_JOB_NAME="{job_name}"
@@ -53,54 +57,40 @@ export FIRE_AGENTS_AGENT_LAUNCHER="{agent_cmd_launch_path}"
53
57
 
54
58
  echo "Sleeping for {random_sleep_time:.2f} seconds to stagger agent startups..."
55
59
  sleep {random_sleep_time:.2f}
56
- echo "Launching agent {agent} with prompt from {prompt_path}"
57
- echo "Launching agent {agent} with command from {agent_cmd_launch_path}"
58
60
  echo "--------START OF AGENT OUTPUT--------"
59
61
  sleep 0.1
60
62
 
61
63
  """
62
64
  match agent:
63
65
  case "gemini":
64
- model = "gemini-2.5-pro"
65
- # model = "gemini-2.5-flash-lite"
66
- # model = None # auto-select
67
- # if model is None:
68
- # model_arg = ""
69
- # else:
70
- model_arg = f"--model {shlex.quote(model)}"
71
- # Need a real shell for the pipeline; otherwise '| gemini ...' is passed as args to 'cat'
72
- safe_path = shlex.quote(str(prompt_path))
73
- api_keys = get_gemini_api_keys()
74
- api_key = api_keys[idx % len(api_keys)] if api_keys else ""
75
- # Export the environment variable so it's available to subshells
76
- cmd = f"""
77
- export GEMINI_API_KEY={shlex.quote(api_key)}
78
- echo "Using Gemini API key $GEMINI_API_KEY"
79
- gemini {model_arg} --yolo --prompt {safe_path}
80
- """
66
+ assert provider == "google", "Gemini agent only works with google provider."
67
+ api_keys = get_api_keys(provider="google")
68
+ api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
69
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model="gemini-2.5-pro", agent=agent, machine=machine, api_key=api_key, api_name="gemini")
70
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_gemini import fire_gemini
71
+ cmd = fire_gemini(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
81
72
  case "cursor-agent":
82
- # As originally implemented
83
- cmd = f"""
84
-
85
- cursor-agent --print --output-format text < {prompt_path}
86
-
87
- """
73
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_key=None, api_name="cursor")
74
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_cursor_agents import fire_cursor
75
+ cmd = fire_cursor(ai_spec=ai_spec, prompt_path=prompt_path)
76
+ raise NotImplementedError("Cursor agent is not implemented yet, api key missing")
88
77
  case "crush":
89
- cmd = f"""
90
- crush run {prompt_path}
91
- """
92
- case "q":
93
- cmd = f"""
94
- q chat --no-interactive --trust-all-tools {prompt_path}
95
- """
78
+ api_keys = get_api_keys(provider=provider)
79
+ api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
80
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_key=api_key, api_name="crush")
81
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_crush import fire_crush
82
+ cmd = fire_crush(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
83
+ # case "q":
84
+ # from machineconfig.scripts.python.helpers_fire.fire_q import fire_q
85
+ # cmd = fire_q(api_key="", prompt_path=prompt_path, machine=machine)
96
86
  case _:
97
87
  raise ValueError(f"Unsupported agent type: {agent}")
88
+
98
89
  cmd_postfix = """
99
90
  sleep 0.1
100
91
  echo "---------END OF AGENT OUTPUT---------"
101
92
  """
102
93
  agent_cmd_launch_path.write_text(cmd_prefix + cmd + cmd_postfix, encoding="utf-8")
103
-
104
94
  return None
105
95
 
106
96
 
@@ -0,0 +1,34 @@
1
+
2
+ from typing import Literal, TypeAlias, TypedDict
3
+
4
+
5
+ # Vscode extensions for AI-assisted coding.
6
+ # Github copilot
7
+ # Roo
8
+ # Cline
9
+ # Kilocode
10
+ # Continue
11
+ # CodeGPT
12
+ # qodo (and cli)
13
+
14
+ # Editors based on AI
15
+ # Kiro
16
+ # Cursor
17
+ # Warp
18
+
19
+ AGENTS: TypeAlias = Literal["cursor-agent", "gemini", "qwen-code", "copilot", "crush", "q", "opencode", "kilocode", "cline", "auggie", "warp", "droid"]
20
+ HOST: TypeAlias = Literal["local", "docker"]
21
+ PROVIDER: TypeAlias = Literal["azure", "google", "aws", "openai", "anthropic", "openrouter", "xai"]
22
+
23
+ class AI_SPEC(TypedDict):
24
+ provider: PROVIDER
25
+ model: str
26
+ agent: AGENTS
27
+ machine: HOST
28
+ api_key: str | None
29
+ api_name: str
30
+
31
+
32
+ AGENT_NAME_FORMATTER = "agent_{idx}_cmd.sh" # e.g., agent_0_cmd.sh
33
+ SEARCH_STRATEGIES: TypeAlias = Literal["file_path", "keyword_search", "filename_pattern"]
34
+
@@ -0,0 +1,6 @@
1
+
2
+ please look if it is possible to easily relpace PathExtended with normal Path from pathlib
3
+ if its one or two lines of code, then go ahead and make it standard and stop using the extended library
4
+ you focus ont he methods used,
5
+
6
+ only look at the files below
@@ -0,0 +1,14 @@
1
+ # Set error action preference to stop on error, like set -e
2
+ $ErrorActionPreference = "Stop"
3
+
4
+ $JOB_NAME = "outpatient_mapping"
5
+ $REPO_ROOT = "$HOME/code/work/winter_planning/"
6
+ $CONTEXT_PATH = "$REPO_ROOT/data/outpatient_mapping/op_services.csv"
7
+ $PROMPT_PATH = "$REPO_ROOT/data/outpatient_mapping/prompt"
8
+ $AGENTS_DIR = "$REPO_ROOT/.ai/agents/$JOB_NAME"
9
+
10
+ agents create --agents crush --host docker --model x-ai/grok-4-fast:free --provider openrouter --context-path $CONTEXT_PATH --prompt-path $PROMPT_PATH --job-name $JOB_NAME --agents-dir $AGENTS_DIR
11
+ sessions balance-load "$AGENTS_DIR/layout.json" --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path "$AGENTS_DIR/layout_balanced.json"
12
+ sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
13
+
14
+ # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
@@ -0,0 +1,24 @@
1
+
2
+ #!/bin/bash
3
+ # set -e # Exit immediately if a command exits with a non-zero status.
4
+
5
+ JOB_NAME="outpatient_mapping"
6
+ REPO_ROOT="$HOME/code/machineconfig"
7
+ CONTEXT_PATH="$REPO_ROOT/.ai/todo/files.md"
8
+ # agents make-todo --strategy keywords from machineconfig.utils.path_extended import PathExtended
9
+ PROMPT_PATH="$REPO_ROOT/src/machineconfig/scripts/python/helpers_agents/templates/prompt.txt"
10
+ AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
11
+
12
+ agents create --agents crush \
13
+ --host docker \
14
+ --model x-ai/grok-4-fast:free \
15
+ --provider openrouter \
16
+ --context-path $CONTEXT_PATH \
17
+ --prompt-path $PROMPT_PATH \
18
+ --job-name $JOB_NAME \
19
+ --agents-dir $AGENTS_DIR
20
+ sessions balance-load "$AGENTS_DIR/layout.json" --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path "$AGENTS_DIR/layout_balanced.json"
21
+ sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
22
+
23
+
24
+ # agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
@@ -2,26 +2,24 @@
2
2
  CC
3
3
  """
4
4
 
5
- from machineconfig.utils.path_extended import PathExtended
6
- from tenacity import retry, stop_after_attempt, wait_chain, wait_fixed
7
- import getpass
8
- import os
9
5
  from typing import Optional, Annotated
10
-
11
6
  import typer
12
7
 
13
- from machineconfig.scripts.python.helpers.helpers2 import parse_cloud_source_target
14
- from machineconfig.scripts.python.helpers.cloud_helpers import ArgsDefaults, Args
15
- from rich.console import Console
16
- from rich.panel import Panel
17
- from rich.progress import Progress
18
- from machineconfig.utils.accessories import pprint
8
+ from tenacity import retry, stop_after_attempt, wait_chain, wait_fixed
19
9
 
20
- console = Console()
21
10
 
22
11
 
23
12
  @retry(stop=stop_after_attempt(3), wait=wait_chain(wait_fixed(1), wait_fixed(4), wait_fixed(9)))
24
13
  def get_securely_shared_file(url: Optional[str] = None, folder: Optional[str] = None) -> None:
14
+ from rich.console import Console
15
+ from rich.panel import Panel
16
+ from rich.progress import Progress
17
+ import getpass
18
+ import os
19
+ from machineconfig.utils.path_extended import PathExtended
20
+
21
+ console = Console()
22
+
25
23
  console.print(Panel("🚀 Secure File Downloader", title="[bold blue]Downloader[/bold blue]", border_style="blue"))
26
24
 
27
25
  folder_obj = PathExtended.cwd() if folder is None else PathExtended(folder)
@@ -62,22 +60,31 @@ def get_securely_shared_file(url: Optional[str] = None, folder: Optional[str] =
62
60
  tmp_folder.delete()
63
61
 
64
62
 
63
+
65
64
  def main(
66
65
  source: Annotated[str, typer.Argument(help="📂 file/folder path to be taken from here.")],
67
66
  target: Annotated[str, typer.Argument(help="🎯 file/folder path to be be sent to here.")],
68
- overwrite: Annotated[bool, typer.Option(help="✍️ Overwrite existing file.")] = ArgsDefaults.overwrite,
69
- share: Annotated[bool, typer.Option(help="🔗 Share file / directory")] = ArgsDefaults.share,
70
- rel2home: Annotated[bool, typer.Option(help="🏠 Relative to `myhome` folder")] = ArgsDefaults.rel2home,
71
- root: Annotated[Optional[str], typer.Option(help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = ArgsDefaults.root,
72
- key: Annotated[Optional[str], typer.Option(help="🔑 Key for encryption")] = ArgsDefaults.key,
73
- pwd: Annotated[Optional[str], typer.Option(help="🔒 Password for encryption")] = ArgsDefaults.pwd,
74
- encrypt: Annotated[bool, typer.Option(help="🔐 Encrypt before sending.")] = ArgsDefaults.encrypt,
75
- zip_: Annotated[bool, typer.Option("--zip", "-z", help="📦 unzip after receiving.")] = ArgsDefaults.zip_,
76
- os_specific: Annotated[bool, typer.Option(help="💻 choose path specific for this OS.")] = ArgsDefaults.os_specific,
77
- config: Annotated[Optional[str], typer.Option(help="⚙️ path to cloud.json file.")] = None,
67
+ overwrite: Annotated[bool, typer.Option("--overwrite", "-o", help="✍️ Overwrite existing file.")] = False,
68
+ share: Annotated[bool, typer.Option("--share", "-s", help="🔗 Share file / directory")] = False,
69
+ rel2home: Annotated[bool, typer.Option("--relative2home", "-r", help="🏠 Relative to `myhome` folder")] = False,
70
+ root: Annotated[Optional[str], typer.Option("--root", "-R", help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = None,
71
+ key: Annotated[Optional[str], typer.Option("--key", "-k", help="🔑 Key for encryption")] = None,
72
+ pwd: Annotated[Optional[str], typer.Option("--password", "-p", help="🔒 Password for encryption")] = None,
73
+ encrypt: Annotated[bool, typer.Option("--encrypt", "-e", help="🔐 Encrypt before sending.")] = False,
74
+ zip_: Annotated[bool, typer.Option("--zip", "-z", help="📦 unzip after receiving.")] = False,
75
+ os_specific: Annotated[bool, typer.Option("--os-specific", "-O", help="💻 choose path specific for this OS.")] = False,
76
+ config: Annotated[Optional[str], typer.Option("--config", "-c", help="⚙️ path to cloud.json file.")] = None,
78
77
  ) -> None:
78
+ """📤 Upload or 📥 Download files/folders to/from cloud storage services like Google Drive, Dropbox, OneDrive, etc."""
79
+ from rich.console import Console
80
+ from rich.panel import Panel
81
+ from machineconfig.utils.path_extended import PathExtended
82
+ from machineconfig.scripts.python.helpers_cloud.helpers2 import parse_cloud_source_target
83
+ from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
84
+ from machineconfig.utils.accessories import pprint
85
+
86
+ console = Console()
79
87
  console.print(Panel("☁️ Cloud Copy Utility", title="[bold blue]Cloud Copy[/bold blue]", border_style="blue", width=152))
80
-
81
88
  args_obj = Args(
82
89
  overwrite=overwrite,
83
90
  share=share,
@@ -52,7 +52,12 @@ mprocs "echo 'see {DEFAULT_MOUNT}/{cloud} for the mounted cloud'; rclone about {
52
52
  return txt
53
53
 
54
54
 
55
- def mount(cloud: Optional[str], network: Optional[str], destination: Optional[str]) -> None:
55
+ def mount(
56
+ cloud: Annotated[Optional[str], typer.Option(help="cloud to mount")] = None,
57
+ destination: Annotated[Optional[str], typer.Option(help="destination to mount")] = None,
58
+ network: Annotated[Optional[str], typer.Option(help="mount network drive")] = None,
59
+ ) -> None:
60
+
56
61
  # draw header box dynamically
57
62
  title = "☁️ Cloud Mount Utility"
58
63
  console.print(Panel(title, title_align="left", border_style="blue"))
@@ -153,21 +158,8 @@ zellij action move-focus up
153
158
  console.print(Panel(f"{title1}\n{title2}", title="Success", border_style="green"))
154
159
 
155
160
 
156
- def main(
157
- cloud: Annotated[Optional[str], typer.Option(help="cloud to mount")] = None,
158
- destination: Annotated[Optional[str], typer.Option(help="destination to mount")] = None,
159
- network: Annotated[Optional[str], typer.Option(help="mount network drive")] = None,
160
- ) -> None:
161
- # draw main title box dynamically
162
- main_title = "☁️ RCLONE CLOUD MOUNT"
163
- console.print(Panel(main_title, title_align="left", border_style="blue"))
164
-
165
- mount(cloud=cloud, network=network, destination=destination)
166
-
167
-
168
- def arg_parser() -> None:
169
- typer.run(main)
170
-
171
161
 
172
- if __name__ == "__main__":
173
- arg_parser()
162
+ def get_app():
163
+ app = typer.Typer(name="cloud-mount", help="Cloud mount utility")
164
+ app.command(name="mount", no_args_is_help=True)(mount)
165
+ return app
@@ -2,16 +2,9 @@
2
2
  TODO: use typer or typed-argument-parser to parse args
3
3
  """
4
4
 
5
- from machineconfig.scripts.python.helpers.helpers2 import parse_cloud_source_target
6
- from machineconfig.scripts.python.helpers.cloud_helpers import Args
7
- from machineconfig.scripts.python.cloud_mount import get_mprocs_mount_txt
8
5
 
9
6
  from typing import Annotated, Optional
10
7
  import typer
11
- from rich.console import Console
12
- from rich.panel import Panel
13
-
14
- console = Console()
15
8
 
16
9
 
17
10
  def main(
@@ -27,6 +20,14 @@ def main(
27
20
  delete: Annotated[bool, typer.Option("--delete", "-D", help="Delete files in remote that are not in local.")] = False,
28
21
  verbose: Annotated[bool, typer.Option("--verbose", "-v", help="Verbosity of mprocs to show details of syncing.")] = False,
29
22
  ) -> None:
23
+
24
+ from machineconfig.scripts.python.helpers_cloud.helpers2 import parse_cloud_source_target
25
+ from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
26
+ from machineconfig.scripts.python.helpers_cloud.cloud_mount import get_mprocs_mount_txt
27
+ from rich.console import Console
28
+ from rich.panel import Panel
29
+ console = Console()
30
+
30
31
  title = "☁️ Cloud Sync Utility"
31
32
  console.print(Panel(title, title_align="left", border_style="blue"))
32
33
 
@@ -73,15 +74,8 @@ def main(
73
74
  cmd_line = f"{rclone_cmd[:65]}..."
74
75
  console.print(Panel(f"{title}\n{cmd_line}", title="[bold blue]Command[/bold blue]", expand=False))
75
76
 
76
- # PROGRAM_PATH.write_text(txt, encoding="utf-8")
77
- import subprocess
78
-
79
- subprocess.run(txt, shell=True, check=True)
80
-
81
-
82
- def arg_parser() -> None:
83
- typer.run(main)
84
-
77
+ # import subprocess
78
+ # subprocess.run(txt, shell=True, check=True)
79
+ from machineconfig.utils.code import run_shell_script
80
+ run_shell_script(txt)
85
81
 
86
- if __name__ == "__main__":
87
- arg_parser()
@@ -1,4 +1,4 @@
1
- from machineconfig.scripts.python.helpers.cloud_helpers import Args, ArgsDefaults, absolute, find_cloud_config, get_secure_share_cloud_config
1
+ from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args, ArgsDefaults, absolute, find_cloud_config, get_secure_share_cloud_config
2
2
  from machineconfig.utils.io import read_ini
3
3
  from machineconfig.utils.source_of_truth import DEFAULTS_PATH
4
4
  from machineconfig.utils.accessories import pprint
@@ -0,0 +1,39 @@
1
+
2
+
3
+ def get_read_python_file_pycode(path: str, title: str):
4
+ from pathlib import Path
5
+ print("Reading code from path:", path)
6
+ pycode = Path(path).read_text(encoding="utf-8")
7
+ pycode = pycode.split("except Exception: print(pycode)")[2]
8
+ try:
9
+ # from rich.text import Text
10
+ from rich.panel import Panel
11
+ from rich.console import Console
12
+ from rich.syntax import Syntax
13
+ console = Console()
14
+ if pycode.strip() != "":
15
+ console.print(Panel(Syntax(pycode, lexer="python"), title=title), style="bold red")
16
+ except Exception: print(pycode)
17
+
18
+
19
+ def get_read_data_pycode(path: str):
20
+ from rich.panel import Panel
21
+ from rich.text import Text
22
+ from rich.console import Console
23
+ from pathlib import Path
24
+ console = Console()
25
+ p = Path(path).absolute()
26
+ try:
27
+ from machineconfig.utils.files.read import Read
28
+ from machineconfig.utils.accessories import pprint
29
+ dat = Read.read(p)
30
+ if isinstance(dat, dict):
31
+ panel_title = f"📄 File Data: {p.name}"
32
+ console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
33
+ pprint(dat, p.name)
34
+ else:
35
+ panel_title = f"📄 Successfully read the file: {p.name}"
36
+ console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
37
+ except Exception as e:
38
+ error_message = f'''❌ ERROR READING FILE\nFile: {p.name}\nError: {e}'''
39
+ console.print(Panel(Text(error_message, justify="left"), title="Error", expand=False, border_style="red"))
@@ -2,7 +2,7 @@
2
2
  slidev
3
3
  """
4
4
 
5
- from machineconfig.utils.source_of_truth import CONFIG_PATH
5
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
6
6
  from machineconfig.utils.code import print_code
7
7
  from machineconfig.utils.path_extended import PathExtended
8
8
  from machineconfig.utils.terminal import Response
@@ -13,7 +13,7 @@ import platform
13
13
 
14
14
  PORT_DEFAULT = 3030
15
15
 
16
- SLIDEV_REPO = PathExtended(CONFIG_PATH).joinpath(".cache/slidev")
16
+ SLIDEV_REPO = PathExtended(CONFIG_ROOT).joinpath(".cache/slidev")
17
17
  if not SLIDEV_REPO.joinpath("components").exists():
18
18
  print("📦 Initializing Slidev repository...")
19
19
  subprocess.run(f"cd {SLIDEV_REPO.parent};npm init slidev@latest", check=False, shell=True, text=True)
@@ -0,0 +1,95 @@
1
+
2
+
3
+ from typing import Literal, Annotated
4
+ from pathlib import Path
5
+ import typer
6
+ import machineconfig.scripts.python.helpers_devops.cli_config_dotfile as dotfile_module
7
+ import machineconfig.profile.create_links_export as create_links_export
8
+
9
+
10
+ def configure_shell_profile(which: Annotated[Literal["default", "d", "nushell", "n"], typer.Option(..., "--which", "-w", help="Which shell profile to create/configure")]="default"):
11
+ """🔗 Configure your shell profile."""
12
+ from machineconfig.profile.create_shell_profile import create_default_shell_profile, create_nu_shell_profile
13
+ match which:
14
+ case "nushell" | "n":
15
+ create_nu_shell_profile()
16
+ return
17
+ case "default" | "d":
18
+ create_default_shell_profile()
19
+ return
20
+ typer.echo(f"[red]Error:[/] Unknown shell profile type: {which}")
21
+
22
+
23
+
24
+ def pwsh_theme():
25
+ """🔗 Select powershell prompt theme."""
26
+ import machineconfig.scripts.python.helpers_devops.themes as themes
27
+ file = Path(themes.__file__).parent / "choose_pwsh_theme.ps1"
28
+ import subprocess
29
+ subprocess.run(["pwsh", "-File", str(file)])
30
+
31
+
32
+ def starship_theme():
33
+ """🔗 Select starship prompt theme."""
34
+ import subprocess
35
+ from machineconfig.utils.code import run_shell_script
36
+
37
+ presets: list[str] = ["catppuccin-powerline", "pastel-powerline", "tokyo-night", "gruvbox-rainbow", "jetpack"]
38
+ config_path: Path = Path.home() / ".config" / "starship.toml"
39
+
40
+ typer.echo("\n🚀 Starship Theme Selector\n")
41
+ for idx, preset in enumerate(presets, start=1):
42
+ typer.echo(f"{idx}. {preset}")
43
+
44
+ choice: str = typer.prompt("Select a preset")
45
+
46
+ try:
47
+ choice_idx: int = int(choice)
48
+ if 1 <= choice_idx <= len(presets):
49
+ selected_preset: str = presets[choice_idx - 1]
50
+ typer.echo(f"\n✨ Applying {selected_preset}...")
51
+ run_shell_script(f"""starship preset {selected_preset} -o {config_path}""")
52
+ typer.echo("\n📋 Preview:")
53
+ subprocess.run(["starship", "module", "all"], check=False)
54
+ typer.echo(f"\n✅ {selected_preset} applied!")
55
+ else:
56
+ typer.echo("❌ Invalid selection")
57
+ except ValueError:
58
+ typer.echo("❌ Please enter a valid number")
59
+
60
+
61
+ def copy_assets(which: Annotated[Literal["scripts", "s", "settings", "t", "both", "b"], typer.Argument(..., help="Which assets to copy")]):
62
+ """🔗 Copy asset files from library to machine."""
63
+ import machineconfig.profile.create_helper as create_helper
64
+ match which:
65
+ case "both" | "b":
66
+ create_helper.copy_assets_to_machine(which="scripts")
67
+ create_helper.copy_assets_to_machine(which="settings")
68
+ return
69
+ case "scripts" | "s":
70
+ create_helper.copy_assets_to_machine(which="scripts")
71
+ return
72
+ case "settings" | "t":
73
+ create_helper.copy_assets_to_machine(which="settings")
74
+ return
75
+ typer.echo(f"[red]Error:[/] Unknown asset type: {which}")
76
+
77
+
78
+ def get_app():
79
+ config_apps = typer.Typer(help="⚙️ [c] configuration subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
80
+ config_apps.command("private", no_args_is_help=True, help="🔗 [v] Manage private configuration files.")(create_links_export.main_private_from_parser)
81
+ config_apps.command("v", no_args_is_help=True, hidden=True)(create_links_export.main_private_from_parser)
82
+ config_apps.command("public", no_args_is_help=True, help="🔗 [b] Manage public configuration files.")(create_links_export.main_public_from_parser)
83
+ config_apps.command("b", no_args_is_help=True, help="Manage public configuration files.", hidden=True)(create_links_export.main_public_from_parser)
84
+ config_apps.command("dotfile", no_args_is_help=True, help="🔗 [d] Manage dotfiles.")(dotfile_module.main)
85
+ config_apps.command("d", no_args_is_help=True, hidden=True)(dotfile_module.main)
86
+ config_apps.command("shell", no_args_is_help=False, help="🔗 [s] Configure your shell profile.")(configure_shell_profile)
87
+ config_apps.command("s", no_args_is_help=False, help="Configure your shell profile.", hidden=True)(configure_shell_profile)
88
+ config_apps.command("starship-theme", no_args_is_help=False, help="🔗 [t] Select starship prompt theme.")(starship_theme)
89
+ config_apps.command("t", no_args_is_help=False, help="Select starship prompt theme.", hidden=True)(starship_theme)
90
+ config_apps.command("pwsh-theme", no_args_is_help=False, help="🔗 [T] Select powershell prompt theme.")(pwsh_theme)
91
+ config_apps.command("T", no_args_is_help=False, help="Select powershell prompt theme.", hidden=True)(pwsh_theme)
92
+
93
+ config_apps.command("copy-assets", no_args_is_help=True, help="🔗 [c] Copy asset files from library to machine.", hidden=False)(copy_assets)
94
+ config_apps.command("c", no_args_is_help=True, help="Copy asset files from library to machine.", hidden=True)(copy_assets)
95
+ return config_apps