machineconfig 6.82__py3-none-any.whl → 7.98__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 (294) hide show
  1. machineconfig/cluster/remote/cloud_manager.py +1 -1
  2. machineconfig/cluster/sessions_managers/utils/maker.py +25 -13
  3. machineconfig/cluster/sessions_managers/wt_local.py +16 -221
  4. machineconfig/cluster/sessions_managers/wt_local_manager.py +55 -193
  5. machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
  6. machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
  7. machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
  8. machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
  9. machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
  10. machineconfig/cluster/sessions_managers/zellij_local_manager.py +3 -1
  11. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
  12. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
  13. machineconfig/jobs/installer/custom/boxes.py +2 -2
  14. machineconfig/jobs/installer/custom/hx.py +75 -18
  15. machineconfig/jobs/installer/custom/yazi.py +119 -0
  16. machineconfig/jobs/installer/custom_dev/brave.py +5 -3
  17. machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
  18. machineconfig/jobs/installer/custom_dev/code.py +4 -1
  19. machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +1 -1
  20. machineconfig/jobs/installer/custom_dev/nerdfont.py +1 -1
  21. machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +27 -22
  22. machineconfig/jobs/installer/custom_dev/sysabc.py +139 -0
  23. machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
  24. machineconfig/jobs/installer/custom_dev/winget.py +10 -14
  25. machineconfig/jobs/installer/installer_data.json +1287 -216
  26. machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
  27. machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
  28. machineconfig/jobs/installer/package_groups.py +58 -89
  29. machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
  30. machineconfig/logger.py +0 -1
  31. machineconfig/profile/create_helper.py +43 -16
  32. machineconfig/profile/create_links.py +2 -1
  33. machineconfig/profile/create_links_export.py +64 -18
  34. machineconfig/profile/create_shell_profile.py +78 -127
  35. machineconfig/profile/mapper.toml +15 -8
  36. machineconfig/scripts/__init__.py +0 -4
  37. machineconfig/scripts/linux/wrap_mcfg +46 -0
  38. machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
  39. machineconfig/scripts/python/agents.py +52 -37
  40. machineconfig/scripts/python/ai/initai.py +1 -1
  41. machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
  42. machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
  43. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
  44. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
  45. machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
  46. machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +5 -5
  47. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -0
  48. machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
  49. machineconfig/scripts/python/ai/solutions/generic.py +1 -1
  50. machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
  51. machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +7 -2
  52. machineconfig/scripts/python/croshell.py +77 -78
  53. machineconfig/scripts/python/devops.py +39 -21
  54. machineconfig/scripts/python/devops_navigator.py +0 -4
  55. machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
  56. machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
  57. machineconfig/scripts/python/fire_jobs.py +84 -115
  58. machineconfig/scripts/python/ftpx.py +42 -16
  59. machineconfig/scripts/python/helpers/ast_search.py +74 -0
  60. machineconfig/scripts/python/helpers/qr_code.py +166 -0
  61. machineconfig/scripts/python/helpers/repo_rag.py +325 -0
  62. machineconfig/scripts/python/helpers/run_py_script.py +79 -0
  63. machineconfig/scripts/python/helpers/symantic_search.py +25 -0
  64. machineconfig/scripts/python/helpers/tmp_py_scripts/a.py +26 -0
  65. machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
  66. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
  67. machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
  68. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
  69. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
  70. machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_launch.py +32 -13
  71. machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_helper_types.py +11 -14
  72. machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
  73. machineconfig/scripts/python/helpers_agents/templates/template.sh +32 -0
  74. machineconfig/scripts/python/helpers_cloud/cloud_copy.py +28 -21
  75. machineconfig/scripts/python/helpers_cloud/cloud_helpers.py +1 -1
  76. machineconfig/scripts/python/helpers_cloud/cloud_mount.py +19 -17
  77. machineconfig/scripts/python/helpers_cloud/cloud_sync.py +8 -7
  78. machineconfig/scripts/python/helpers_croshell/crosh.py +3 -3
  79. machineconfig/scripts/python/helpers_croshell/start_slidev.py +6 -7
  80. machineconfig/scripts/python/helpers_devops/cli_config.py +46 -61
  81. machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +67 -55
  82. machineconfig/scripts/python/helpers_devops/cli_nw.py +157 -16
  83. machineconfig/scripts/python/helpers_devops/cli_repos.py +55 -21
  84. machineconfig/scripts/python/helpers_devops/cli_self.py +98 -48
  85. machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
  86. machineconfig/scripts/python/helpers_devops/cli_share_server.py +80 -42
  87. machineconfig/scripts/python/helpers_devops/{cli_terminal.py → cli_share_terminal.py} +15 -17
  88. machineconfig/scripts/python/helpers_devops/cli_utils.py +3 -128
  89. machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +4 -4
  90. machineconfig/scripts/python/helpers_devops/devops_status.py +7 -19
  91. machineconfig/scripts/python/helpers_devops/themes/choose_wezterm_theme.py +1 -1
  92. machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers_fire_command/file_wrangler.py} +56 -20
  93. machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +26 -16
  94. machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
  95. machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +3 -3
  96. machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
  97. machineconfig/scripts/python/helpers_navigator/command_tree.py +50 -18
  98. machineconfig/scripts/python/helpers_network/address.py +132 -0
  99. machineconfig/scripts/python/{nw → helpers_network}/devops_add_ssh_key.py +24 -5
  100. machineconfig/scripts/python/{nw → helpers_network}/mount_nfs +0 -1
  101. machineconfig/scripts/python/{nw → helpers_network}/mount_nfs.py +2 -2
  102. machineconfig/scripts/python/{nw → helpers_network}/mount_ssh.py +1 -1
  103. machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_linux.py +7 -7
  104. machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_windows.py +4 -4
  105. machineconfig/scripts/python/{nw → helpers_network}/wifi_conn.py +1 -53
  106. machineconfig/scripts/python/{nw → helpers_network}/wsl_windows_transfer.py +3 -2
  107. machineconfig/scripts/python/helpers_repos/clone.py +0 -1
  108. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +46 -19
  109. machineconfig/scripts/python/helpers_repos/entrypoint.py +2 -1
  110. machineconfig/scripts/python/helpers_repos/grource.py +1 -1
  111. machineconfig/scripts/python/helpers_repos/record.py +2 -1
  112. machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
  113. machineconfig/scripts/python/helpers_repos/{count_lines.py → repo_analyzer_2.py} +113 -192
  114. machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +20 -13
  115. machineconfig/scripts/python/helpers_utils/download.py +150 -0
  116. machineconfig/scripts/python/helpers_utils/path.py +185 -0
  117. machineconfig/scripts/python/interactive.py +19 -26
  118. machineconfig/scripts/python/{mcfg.py → mcfg_entry.py} +10 -0
  119. machineconfig/scripts/python/msearch.py +71 -0
  120. machineconfig/scripts/python/sessions.py +94 -25
  121. machineconfig/scripts/python/terminal.py +133 -0
  122. machineconfig/scripts/python/utils.py +28 -30
  123. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
  124. machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
  125. machineconfig/settings/broot/conf.toml +1 -1
  126. machineconfig/settings/helix/config.toml +16 -0
  127. machineconfig/settings/helix/languages.toml +13 -4
  128. machineconfig/settings/helix/yazi-picker.sh +12 -0
  129. machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
  130. machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
  131. machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
  132. machineconfig/settings/lf/windows/lfrc +14 -16
  133. machineconfig/settings/marimo/marimo.toml +1 -1
  134. machineconfig/settings/marimo/snippets/globalize.py +34 -0
  135. machineconfig/settings/shells/bash/init.sh +43 -11
  136. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
  137. machineconfig/settings/shells/nushell/config.nu +2 -32
  138. machineconfig/settings/shells/nushell/env.nu +45 -6
  139. machineconfig/settings/shells/nushell/init.nu +314 -0
  140. machineconfig/settings/shells/pwsh/init.ps1 +40 -14
  141. machineconfig/settings/shells/starship/starship.toml +16 -0
  142. machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
  143. machineconfig/settings/shells/wt/settings.json +14 -5
  144. machineconfig/settings/shells/zsh/init.sh +17 -19
  145. machineconfig/settings/television/cable_unix/alias.toml +8 -0
  146. machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
  147. machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
  148. machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
  149. machineconfig/settings/television/cable_unix/channels.toml +19 -0
  150. machineconfig/settings/television/cable_unix/dirs.toml +13 -0
  151. machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
  152. machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
  153. machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
  154. machineconfig/settings/television/cable_unix/env.toml +17 -0
  155. machineconfig/settings/television/cable_unix/files.toml +11 -0
  156. machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
  157. machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
  158. machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
  159. machineconfig/settings/television/cable_unix/git-log.toml +12 -0
  160. machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
  161. machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
  162. machineconfig/settings/television/cable_unix/guix.toml +20 -0
  163. machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
  164. machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
  165. machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
  166. machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
  167. machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
  168. machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
  169. machineconfig/settings/television/cable_unix/procs.toml +20 -0
  170. machineconfig/settings/television/cable_unix/text.toml +17 -0
  171. machineconfig/settings/television/cable_unix/tldr.toml +18 -0
  172. machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
  173. machineconfig/settings/television/cable_windows/alias.toml +7 -0
  174. machineconfig/settings/television/cable_windows/dirs.toml +13 -0
  175. machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
  176. machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
  177. machineconfig/settings/television/cable_windows/env.toml +17 -0
  178. machineconfig/settings/television/cable_windows/files.toml +14 -0
  179. machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
  180. machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
  181. machineconfig/settings/television/cable_windows/git-log.toml +11 -0
  182. machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
  183. machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
  184. machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
  185. machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
  186. machineconfig/settings/television/cable_windows/text.toml +17 -0
  187. machineconfig/settings/yazi/init.lua +61 -0
  188. machineconfig/settings/yazi/keymap_linux.toml +94 -0
  189. machineconfig/settings/yazi/keymap_windows.toml +78 -0
  190. machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
  191. machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
  192. machineconfig/settings/yazi/theme.toml +4 -0
  193. machineconfig/settings/yazi/yazi_linux.toml +84 -0
  194. machineconfig/settings/yazi/yazi_windows.toml +58 -0
  195. machineconfig/setup_linux/__init__.py +2 -1
  196. machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
  197. machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
  198. machineconfig/setup_mac/__init__.py +2 -3
  199. machineconfig/setup_mac/apps_gui.sh +248 -0
  200. machineconfig/setup_windows/__init__.py +3 -3
  201. machineconfig/setup_windows/uv.ps1 +8 -1
  202. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +26 -11
  203. machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
  204. machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
  205. machineconfig/utils/accessories.py +7 -4
  206. machineconfig/utils/code.py +99 -32
  207. machineconfig/utils/files/ascii_art.py +1 -1
  208. machineconfig/utils/files/headers.py +3 -2
  209. machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
  210. machineconfig/utils/installer_utils/install_from_url.py +183 -0
  211. machineconfig/utils/installer_utils/installer_class.py +42 -99
  212. machineconfig/utils/installer_utils/installer_cli.py +175 -0
  213. machineconfig/utils/installer_utils/installer_helper.py +129 -0
  214. machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +36 -85
  215. machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +16 -61
  216. machineconfig/utils/io.py +69 -1
  217. machineconfig/utils/links.py +56 -38
  218. machineconfig/utils/meta.py +33 -18
  219. machineconfig/utils/options.py +46 -18
  220. machineconfig/utils/options_tv.py +119 -0
  221. machineconfig/utils/path_extended.py +44 -95
  222. machineconfig/utils/path_helper.py +76 -23
  223. machineconfig/utils/procs.py +1 -1
  224. machineconfig/utils/scheduler.py +20 -53
  225. machineconfig/utils/scheduling.py +0 -2
  226. machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  227. machineconfig/utils/schemas/layouts/layout_types.py +1 -1
  228. machineconfig/utils/ssh.py +159 -412
  229. machineconfig/utils/ssh_utils/abc.py +5 -0
  230. machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
  231. machineconfig/utils/ssh_utils/copy_to_here.py +302 -0
  232. machineconfig/utils/ssh_utils/utils.py +142 -0
  233. machineconfig/utils/ssh_utils/wsl.py +210 -0
  234. machineconfig/utils/terminal.py +1 -0
  235. machineconfig/utils/upgrade_packages.py +104 -28
  236. machineconfig/utils/ve.py +12 -4
  237. machineconfig-7.98.dist-info/METADATA +132 -0
  238. {machineconfig-6.82.dist-info → machineconfig-7.98.dist-info}/RECORD +259 -196
  239. {machineconfig-6.82.dist-info → machineconfig-7.98.dist-info}/entry_points.txt +4 -1
  240. machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
  241. machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
  242. machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
  243. machineconfig/scripts/linux/fzf2g +0 -21
  244. machineconfig/scripts/linux/fzfag +0 -17
  245. machineconfig/scripts/linux/fzffg +0 -25
  246. machineconfig/scripts/linux/fzfrga +0 -21
  247. machineconfig/scripts/linux/mcfgs +0 -38
  248. machineconfig/scripts/linux/other/share_smb +0 -1
  249. machineconfig/scripts/linux/skrg +0 -4
  250. machineconfig/scripts/linux/warp-cli.sh +0 -122
  251. machineconfig/scripts/linux/z_ls +0 -104
  252. machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
  253. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
  254. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
  255. machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
  256. machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
  257. machineconfig/scripts/python/helpers_fire/template.sh +0 -15
  258. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
  259. machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
  260. machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
  261. machineconfig/scripts/windows/fzfb.ps1 +0 -3
  262. machineconfig/scripts/windows/fzfg.ps1 +0 -2
  263. machineconfig/scripts/windows/fzfrga.bat +0 -20
  264. machineconfig/scripts/windows/mcfgs.ps1 +0 -17
  265. machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
  266. machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
  267. machineconfig/settings/lf/windows/tst.ps1 +0 -1
  268. machineconfig/settings/yazi/yazi.toml +0 -4
  269. machineconfig/setup_linux/apps.sh +0 -66
  270. machineconfig/setup_linux/others/cli_installation.sh +0 -137
  271. machineconfig/setup_mac/apps.sh +0 -73
  272. machineconfig/setup_windows/apps.ps1 +0 -62
  273. machineconfig/utils/installer_utils/installer.py +0 -225
  274. machineconfig-6.82.dist-info/METADATA +0 -82
  275. /machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
  276. /machineconfig/scripts/python/{helpers_fire → ai/utils}/__init__.py +0 -0
  277. /machineconfig/scripts/python/{helpers_fire/agentic_frameworks → helpers_agents}/__init__.py +0 -0
  278. /machineconfig/scripts/python/{nw → helpers_agents/agentic_frameworks}/__init__.py +0 -0
  279. /machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_search.py +0 -0
  280. /machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_load_balancer.py +0 -0
  281. /machineconfig/scripts/python/{helpers_fire → helpers_agents/templates}/template.ps1 +0 -0
  282. /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers_fire_command/f.py} +0 -0
  283. /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_network/__init__.py} +0 -0
  284. /machineconfig/scripts/python/{nw → helpers_network}/devops_add_identity.py +0 -0
  285. /machineconfig/scripts/python/{nw → helpers_network}/mount_drive +0 -0
  286. /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive +0 -0
  287. /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive.py +0 -0
  288. /machineconfig/scripts/python/{nw → helpers_network}/mount_smb +0 -0
  289. /machineconfig/scripts/python/{nw → helpers_network}/onetimeshare.py +0 -0
  290. /machineconfig/scripts/{Restore-ThunderbirdProfile.ps1 → windows/mounts/Restore-ThunderbirdProfile.ps1} +0 -0
  291. /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
  292. /machineconfig/{jobs/installer/powershell_scripts → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
  293. {machineconfig-6.82.dist-info → machineconfig-7.98.dist-info}/WHEEL +0 -0
  294. {machineconfig-6.82.dist-info → machineconfig-7.98.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,26 @@
1
+
2
+ """
3
+ #!/usr/bin/env -S uv run
4
+ # /// script
5
+ # requires-python = ">=3.13"
6
+ # dependencies = [
7
+ # "rich",
8
+ # "polars",
9
+ # "typer>=0.12",
10
+ # "loguru",
11
+ # "numpy",
12
+ # ]
13
+ # ///
14
+
15
+ """
16
+
17
+
18
+ def main():
19
+ """a,b,c"""
20
+ print("This is a helper function in a.py")
21
+ import numpy as np
22
+ print("Numpy version:", np.__version__)
23
+
24
+
25
+ if __name__ == "__main__":
26
+ main()
@@ -7,7 +7,7 @@
7
7
  }
8
8
  },
9
9
  "providers": {
10
- "openrouter": {
10
+ "{provider}": {
11
11
  "api_key": "{api_key}"
12
12
  }
13
13
  }
@@ -0,0 +1,39 @@
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_crush(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path) -> str:
8
+ match ai_spec["machine"]:
9
+ case "local":
10
+ cmd = f"""
11
+ crush run {prompt_path}
12
+ """
13
+ case "docker":
14
+ assert ai_spec["api_spec"]["api_key"] is not None, "API key is required for Crush agent in docker mode."
15
+ json_path = Path(__file__).parent / "fire_crush.json"
16
+ json_template = json_path.read_text(encoding="utf-8")
17
+ api_key = ai_spec["api_spec"]["api_key"]
18
+ json_filled = json_template.replace("{api_key}", api_key)
19
+ json_filled = json_filled.replace("{model}", ai_spec["model"])
20
+ if ai_spec["provider"] == "google":
21
+ provider = "gemini" # weird crush way of naming.
22
+ else:
23
+ provider = ai_spec["provider"]
24
+ json_filled = json_filled.replace("{provider}", provider)
25
+ from machineconfig.utils.accessories import randstr
26
+ temp_config_file_local = Path.home().joinpath("tmp_results/tmp_files/crush_" + randstr(8) + ".json")
27
+ temp_config_file_local.parent.mkdir(parents=True, exist_ok=True)
28
+ Path(temp_config_file_local).write_text(json_filled, encoding="utf-8")
29
+ cmd = f"""
30
+
31
+ docker run -it --rm \
32
+ -v "{repo_root}:/workspace/{repo_root.name}" \
33
+ -v "{temp_config_file_local}:/root/.local/share/crush/crush.json" \
34
+ -w "/workspace/{repo_root.name}" \
35
+ statistician/machineconfig-ai:latest \
36
+ bash -i -c "source ~/.bashrc && cd /workspace/{repo_root.name} && cat /root/.local/share/crush/crush.json && crush run 'Please act on contents of this prompt ./{prompt_path.relative_to(repo_root)}'"
37
+
38
+ """
39
+ return cmd
@@ -2,11 +2,10 @@
2
2
 
3
3
  from pathlib import Path
4
4
  # import shlex
5
- from machineconfig.scripts.python.helpers_fire.fire_agents_helper_types import HOST
6
- from typing import Optional
5
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
7
6
 
8
- def fire_cursor(api_key: Optional[str], prompt_path: Path, machine: HOST) -> str:
9
- match machine:
7
+ def fire_cursor(ai_spec: AI_SPEC, prompt_path: Path) -> str:
8
+ match ai_spec["machine"]:
10
9
  case "local":
11
10
  # Export the environment variable so it's available to subshells
12
11
  cmd = f"""
@@ -0,0 +1,55 @@
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_gemini(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path) -> str:
8
+ _ = ai_spec["provider"]
9
+ # model = "gemini-2.5-flash-lite"
10
+ # model = None # auto-select
11
+ # if model is None:
12
+ # model_arg = ""
13
+ # else:
14
+ model_arg = f"--model {shlex.quote(ai_spec['model'])}"
15
+ # Need a real shell for the pipeline; otherwise '| gemini ...' is passed as args to 'cat'
16
+ safe_path = shlex.quote(str(prompt_path))
17
+ settings_dot_json = {
18
+ "security": {
19
+ "auth": {
20
+ "selectedType": "gemini-api-key"
21
+ }
22
+ }
23
+ }
24
+ # settings_path = Path.home().joinpath(".gemini", "settings.json")
25
+ from machineconfig.utils.accessories import randstr
26
+ settings_tmp_path = Path.home().joinpath("tmp_results", "tmp_files", "agents", f"gemini_settings_{randstr()}.json")
27
+ settings_tmp_path.parent.mkdir(parents=True, exist_ok=True)
28
+ import json
29
+ settings_tmp_path.write_text(json.dumps(settings_dot_json, indent=2), encoding="utf-8")
30
+ match ai_spec["machine"]:
31
+ case "local":
32
+ # Export the environment variable so it's available to subshells
33
+ api_key = ai_spec["api_spec"]["api_key"]
34
+ if api_key is not None:
35
+ define_api_key = f"""export GEMINI_API_KEY="{shlex.quote(api_key)}" """
36
+ else:
37
+ define_api_key = "echo 'Warning: No GEMINI_API_KEY provided, hoping it is set in the environment.'"
38
+ cmd = f"""
39
+ {define_api_key}
40
+ echo "Using Gemini API key $GEMINI_API_KEY"
41
+ gemini {model_arg} --yolo --prompt {safe_path}
42
+ """
43
+
44
+ case "docker":
45
+ api_key = ai_spec["api_spec"]["api_key"]
46
+ assert api_key is not None, "When using docker, api_key must be provided."
47
+ cmd = f"""
48
+ docker run -it --rm \
49
+ -v {settings_tmp_path}:/root/.gemini/settings.json \
50
+ -v "{repo_root}:/workspace/{repo_root.name}" \
51
+ -w "/workspace/{repo_root.name}" \
52
+ statistician/machineconfig-ai:latest \
53
+ bash -c '. ~/.bashrc; export GEMINI_API_KEY="{api_key}"; gemini --model {shlex.quote(ai_spec['model'])} --yolo {prompt_path.relative_to(repo_root)}'
54
+ """
55
+ return cmd
@@ -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,25 +2,30 @@
2
2
  import random
3
3
  import shlex
4
4
  from pathlib import Path
5
- from machineconfig.scripts.python.helpers_fire.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER, HOST, PROVIDER, MODEL
5
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER, HOST, PROVIDER, AI_SPEC, API_SPEC
6
6
 
7
7
 
8
- def get_api_keys(provider: PROVIDER) -> list[str]:
8
+ def get_api_keys(provider: PROVIDER) -> list[API_SPEC]:
9
9
  from machineconfig.utils.io import read_ini
10
10
  config = read_ini(Path.home().joinpath(f"dotfiles/creds/llm/{provider}/api_keys.ini"))
11
- res: list[str] = []
11
+ res: list[API_SPEC] = []
12
12
  for a_section_name in list(config.sections()):
13
13
  a_section = config[a_section_name]
14
14
  if "api_key" in a_section:
15
15
  api_key = a_section["api_key"].strip()
16
16
  if api_key:
17
- res.append(api_key)
17
+ res.append(API_SPEC(
18
+ api_key=api_key,
19
+ api_name=a_section.get("api_name", ""),
20
+ api_label=a_section_name,
21
+ api_account=a_section.get("email", "")
22
+ ))
18
23
  print(f"Found {len(res)} {provider} API keys configured.")
19
24
  return res
20
25
 
21
26
 
22
27
  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: MODEL, provider: PROVIDER, agent: AGENTS, *, job_name: str) -> None:
28
+ machine: HOST, model: str, provider: PROVIDER, agent: AGENTS, *, job_name: str) -> None:
24
29
  agents_dir.mkdir(parents=True, exist_ok=True)
25
30
  prompt_folder = agents_dir / "prompts"
26
31
  prompt_folder.mkdir(parents=True, exist_ok=True)
@@ -55,6 +60,7 @@ export FIRE_AGENTS_PROMPT_FILE="{prompt_path}"
55
60
  export FIRE_AGENTS_MATERIAL_FILE="{prompt_material_path}"
56
61
  export FIRE_AGENTS_AGENT_LAUNCHER="{agent_cmd_launch_path}"
57
62
 
63
+
58
64
  echo "Sleeping for {random_sleep_time:.2f} seconds to stagger agent startups..."
59
65
  sleep {random_sleep_time:.2f}
60
66
  echo "--------START OF AGENT OUTPUT--------"
@@ -65,24 +71,37 @@ sleep 0.1
65
71
  case "gemini":
66
72
  assert provider == "google", "Gemini agent only works with google provider."
67
73
  api_keys = get_api_keys(provider="google")
68
- api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
69
- from machineconfig.scripts.python.helpers_fire.agentic_frameworks.fire_gemini import fire_gemini
70
- cmd = fire_gemini(api_key=api_key, prompt_path=prompt_path, machine=machine, model="gemini-2.5-pro", provider="google", repo_root=repo_root)
74
+ api_spec = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
75
+ if api_spec is None:
76
+ raise ValueError("No API keys found for Google Gemini. Please configure them in dotfiles/creds/llm/google/api_keys.ini")
77
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model="gemini-2.5-pro", agent=agent, machine=machine, api_spec=api_spec)
78
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_gemini import fire_gemini
79
+ cmd = fire_gemini(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
71
80
  case "cursor-agent":
72
- from machineconfig.scripts.python.helpers_fire.agentic_frameworks.fire_cursor_agents import fire_cursor
73
- cmd = fire_cursor(prompt_path=prompt_path, machine=machine, api_key=None)
81
+ api_spec = API_SPEC(api_key=None, api_name="", api_label="", api_account="")
82
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_spec=api_spec)
83
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_cursor_agents import fire_cursor
84
+ cmd = fire_cursor(ai_spec=ai_spec, prompt_path=prompt_path)
74
85
  raise NotImplementedError("Cursor agent is not implemented yet, api key missing")
75
86
  case "crush":
76
- from machineconfig.scripts.python.helpers_fire.agentic_frameworks.fire_crush import fire_crush
77
87
  api_keys = get_api_keys(provider=provider)
78
- api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
79
- cmd = fire_crush(api_key=api_key, prompt_path=prompt_path, machine=machine, repo_root=repo_root, model=model, provider=provider)
88
+ api_spec = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
89
+ if api_spec is None:
90
+ raise ValueError("No API keys found for Crush. Please configure them in dotfiles/creds/llm/crush/api_keys.ini")
91
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_spec=api_spec)
92
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_crush import fire_crush
93
+ cmd = fire_crush(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
80
94
  # case "q":
81
95
  # from machineconfig.scripts.python.helpers_fire.fire_q import fire_q
82
96
  # cmd = fire_q(api_key="", prompt_path=prompt_path, machine=machine)
83
97
  case _:
84
98
  raise ValueError(f"Unsupported agent type: {agent}")
99
+ cmd_prefix += f"""
100
+ echo "Running with api label: {ai_spec['api_spec']['api_label']}"
101
+ echo "Running with api acount: {ai_spec['api_spec']['api_account']}"
102
+ echo "Running with api name: {ai_spec['api_spec']['api_name']}"
85
103
 
104
+ """
86
105
  cmd_postfix = """
87
106
  sleep 0.1
88
107
  echo "---------END OF AGENT OUTPUT---------"
@@ -19,24 +19,21 @@ from typing import Literal, TypeAlias, TypedDict
19
19
  AGENTS: TypeAlias = Literal["cursor-agent", "gemini", "qwen-code", "copilot", "crush", "q", "opencode", "kilocode", "cline", "auggie", "warp", "droid"]
20
20
  HOST: TypeAlias = Literal["local", "docker"]
21
21
  PROVIDER: TypeAlias = Literal["azure", "google", "aws", "openai", "anthropic", "openrouter", "xai"]
22
- MODEL: TypeAlias = Literal["zai/glm-4.6", "anthropic/sonnet-4.5", "google/gemini-2.5-pro", "openai/gpt-5-codex",
23
- "openrouter/supernova", "x-ai/grok-4-fast:free",
24
- ]
25
- PROVIDER2MODEL: dict[PROVIDER, list[MODEL]] = {
26
- "azure": ["zai/glm-4.6"],
27
- "google": ["google/gemini-2.5-pro"],
28
- "aws": [],
29
- "openai": ["openai/gpt-5-codex"],
30
- "anthropic": ["anthropic/sonnet-4.5"],
31
- "openrouter": ["openrouter/supernova"],
32
- "xai": ["x-ai/grok-4-fast:free"]
33
- }
22
+
23
+
24
+ class API_SPEC(TypedDict):
25
+ api_key: str | None
26
+ api_name: str
27
+ api_label: str
28
+ api_account: str
29
+
34
30
 
35
31
  class AI_SPEC(TypedDict):
36
32
  provider: PROVIDER
37
- model: MODEL
33
+ model: str
38
34
  agent: AGENTS
39
- machine: HOST
35
+ machine: HOST
36
+ api_spec: API_SPEC
40
37
 
41
38
 
42
39
  AGENT_NAME_FORMATTER = "agent_{idx}_cmd.sh" # e.g., agent_0_cmd.sh
@@ -0,0 +1,10 @@
1
+
2
+ Please inspect the following python files, and document which methods of PathExtended class have been used (if the class is used at all)
3
+ please create a file next to this file on same dir called result.md and put your results in it.
4
+ Like this:
5
+ * File_NAME
6
+ * method1
7
+ * method2
8
+
9
+ * File_NAME
10
+ * method x
@@ -0,0 +1,32 @@
1
+
2
+ #!/bin/bash
3
+ # set -e # Exit immediately if a command exits with a non-zero status.
4
+
5
+ REPO_ROOT="$HOME/code/machineconfig"
6
+
7
+ JOB_NAME="agentsTrial"
8
+ CONTEXT_PATH="$REPO_ROOT/.ai/agents/files.md"
9
+ PROMPT_PATH="$REPO_ROOT/.ai/agents/prompt.txt"
10
+ AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
11
+
12
+ agents create \
13
+ --agents crush \
14
+ --host docker \
15
+ --model gemini-2.5-pro \
16
+ --provider google \
17
+ --agent-load 5 \
18
+ --context-path $CONTEXT_PATH \
19
+ --prompt-path $PROMPT_PATH \
20
+ --job-name $JOB_NAME \
21
+ --agents-dir $AGENTS_DIR
22
+
23
+ sessions balance-load "$AGENTS_DIR/layout.json" \
24
+ --max-threshold 4 \
25
+ --breaking-method moreLayouts \
26
+ --threshold-type number \
27
+ --output-path "$AGENTS_DIR/layout_balanced.json"
28
+
29
+ sessions run "$AGENTS_DIR/layout_balanced.json" --kill-upon-completion
30
+
31
+
32
+ # 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_cloud.helpers2 import parse_cloud_source_target
14
- from machineconfig.scripts.python.helpers_cloud.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,21 +60,30 @@ 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("--overwrite", "-o", help="✍️ Overwrite existing file.")] = ArgsDefaults.overwrite,
69
- share: Annotated[bool, typer.Option("--share", "-s", help="🔗 Share file / directory")] = ArgsDefaults.share,
70
- rel2home: Annotated[bool, typer.Option("--relative2home", "-r", help="🏠 Relative to `myhome` folder")] = ArgsDefaults.rel2home,
71
- root: Annotated[Optional[str], typer.Option("--root", "-R", help="🌳 Remote root. None is the default, unless rel2home is raied, making the default `myhome`.")] = ArgsDefaults.root,
72
- key: Annotated[Optional[str], typer.Option("--key", "-k", help="🔑 Key for encryption")] = ArgsDefaults.key,
73
- pwd: Annotated[Optional[str], typer.Option("--password", "-p", help="🔒 Password for encryption")] = ArgsDefaults.pwd,
74
- encrypt: Annotated[bool, typer.Option("--encrypt", "-e", 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("--os-specific", "-O", help="💻 choose path specific for this OS.")] = ArgsDefaults.os_specific,
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,
77
76
  config: Annotated[Optional[str], typer.Option("--config", "-c", help="⚙️ path to cloud.json file.")] = None,
78
77
  ) -> None:
79
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()
80
87
  console.print(Panel("☁️ Cloud Copy Utility", title="[bold blue]Cloud Copy[/bold blue]", border_style="blue", width=152))
81
88
  args_obj = Args(
82
89
  overwrite=overwrite,
@@ -12,6 +12,7 @@ from dataclasses import dataclass
12
12
  console = Console()
13
13
 
14
14
 
15
+
15
16
  class ArgsDefaults:
16
17
  # source: str=None
17
18
  # target: str=None
@@ -25,7 +26,6 @@ class ArgsDefaults:
25
26
  key = None
26
27
  pwd = None
27
28
 
28
-
29
29
  @dataclass
30
30
  class Args:
31
31
  cloud: Optional[str] = None
@@ -1,32 +1,27 @@
1
1
  """Cloud mount script"""
2
2
 
3
- from machineconfig.utils.options import choose_from_options
4
- from machineconfig.utils.io import read_ini
5
- from machineconfig.utils.path_extended import PathExtended
6
-
7
- import platform
8
- from typing import Optional, Annotated
9
3
  import typer
10
- from rich.console import Console
11
- from rich.panel import Panel
12
-
13
- console = Console()
14
-
15
-
16
- DEFAULT_MOUNT = "~/data/rclone"
4
+ from typing import Optional, Annotated
17
5
 
18
6
 
19
7
  def get_rclone_config():
8
+ from machineconfig.utils.io import read_ini
9
+ from pathlib import Path
10
+ import platform
20
11
  if platform.system() == "Windows":
21
- config = read_ini(PathExtended.home().joinpath("AppData/Roaming/rclone/rclone.conf"))
12
+ config = read_ini(Path.home().joinpath("AppData/Roaming/rclone/rclone.conf"))
22
13
  elif platform.system() in ["Linux", "Darwin"]:
23
- config = read_ini(PathExtended.home().joinpath(".config/rclone/rclone.conf"))
14
+ config = read_ini(Path.home().joinpath(".config/rclone/rclone.conf"))
24
15
  else:
25
16
  raise ValueError("unsupported platform")
26
17
  return config
27
18
 
28
19
 
29
20
  def get_mprocs_mount_txt(cloud: str, rclone_cmd: str, cloud_brand: str): # cloud_brand = config[cloud]["type"]
21
+ from machineconfig.utils.path_extended import PathExtended
22
+ import platform
23
+ DEFAULT_MOUNT = "~/data/rclone"
24
+
30
25
  header = f"{' ' + cloud + ' | ' + cloud_brand + ' '}".center(50, "=")
31
26
  if platform.system() == "Windows":
32
27
  sub_text_path = PathExtended.tmpfile(suffix=".ps1")
@@ -57,6 +52,13 @@ def mount(
57
52
  destination: Annotated[Optional[str], typer.Option(help="destination to mount")] = None,
58
53
  network: Annotated[Optional[str], typer.Option(help="mount network drive")] = None,
59
54
  ) -> None:
55
+ from machineconfig.utils.options import choose_from_options
56
+ from pathlib import Path
57
+ import platform
58
+ from rich.console import Console
59
+ from rich.panel import Panel
60
+ console = Console()
61
+ DEFAULT_MOUNT = "~/data/rclone"
60
62
 
61
63
  # draw header box dynamically
62
64
  title = "☁️ Cloud Mount Utility"
@@ -73,9 +75,9 @@ def mount(
73
75
 
74
76
  if network is None:
75
77
  if destination is None:
76
- mount_loc = PathExtended(DEFAULT_MOUNT).expanduser().joinpath(cloud)
78
+ mount_loc = Path(DEFAULT_MOUNT).expanduser().joinpath(cloud)
77
79
  else:
78
- mount_loc = PathExtended(destination)
80
+ mount_loc = Path(destination)
79
81
 
80
82
  mount_info = f"📂 Mount location: {mount_loc}"
81
83
  console.print(Panel(mount_info, border_style="blue"))
@@ -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_cloud.helpers2 import parse_cloud_source_target
6
- from machineconfig.scripts.python.helpers_cloud.cloud_helpers import Args
7
- from machineconfig.scripts.python.helpers_cloud.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
 
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- def code(path: str, title: str):
3
+ def get_read_python_file_pycode(path: str, title: str):
4
4
  from pathlib import Path
5
5
  print("Reading code from path:", path)
6
6
  pycode = Path(path).read_text(encoding="utf-8")
@@ -20,9 +20,9 @@ def get_read_data_pycode(path: str):
20
20
  from rich.panel import Panel
21
21
  from rich.text import Text
22
22
  from rich.console import Console
23
- from machineconfig.utils.path_extended import PathExtended
23
+ from pathlib import Path
24
24
  console = Console()
25
- p = PathExtended(path).absolute()
25
+ p = Path(path).absolute()
26
26
  try:
27
27
  from machineconfig.utils.files.read import Read
28
28
  from machineconfig.utils.accessories import pprint
@@ -95,13 +95,12 @@ def main(
95
95
  if md_file.name != "slides.md":
96
96
  SLIDEV_REPO.joinpath(md_file.name).with_name(name="slides.md", inplace=True, overwrite=True)
97
97
 
98
- import socket
99
-
100
- try:
101
- local_ip_v4 = socket.gethostbyname(socket.gethostname() + ".local")
102
- except Exception:
103
- print("⚠️ Warning: Could not get local_ip_v4. This might be due to running in a WSL instance.")
104
- local_ip_v4 = socket.gethostbyname(socket.gethostname())
98
+ import machineconfig.scripts.python.helpers_network.address as helper
99
+ res = helper.select_lan_ipv4(prefer_vpn=False)
100
+ if res is None:
101
+ print("❌ Error: Could not determine local LAN IPv4 address for presentation.")
102
+ raise typer.Exit(code=1)
103
+ local_ip_v4 = res
105
104
 
106
105
  print("🌐 Presentation will be served at:")
107
106
  print(f" - http://{platform.node()}:{port}")