machineconfig 8.19__tar.gz → 8.31__tar.gz

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 (547) hide show
  1. {machineconfig-8.19/src/machineconfig.egg-info → machineconfig-8.31}/PKG-INFO +3 -3
  2. {machineconfig-8.19 → machineconfig-8.31}/README.md +2 -2
  3. {machineconfig-8.19 → machineconfig-8.31}/pyproject.toml +7 -1
  4. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/run_cluster.py +1 -1
  5. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/run_remote.py +1 -1
  6. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_local_manager.py +1 -1
  7. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_local_manager.py +1 -1
  8. machineconfig-8.31/src/machineconfig/jobs/installer/checks/check_installations.py +133 -0
  9. machineconfig-8.31/src/machineconfig/jobs/installer/checks/install_utils.py +132 -0
  10. machineconfig-8.31/src/machineconfig/jobs/installer/checks/report_utils.py +39 -0
  11. machineconfig-8.31/src/machineconfig/jobs/installer/checks/vt_utils.py +89 -0
  12. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/installer_data.json +225 -140
  13. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/package_groups.py +9 -8
  14. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/boxes.py +1 -2
  15. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/code.py +10 -8
  16. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/hx.py +30 -13
  17. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/nerfont_windows_helper.py +6 -5
  18. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/sysabc.py +22 -19
  19. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/yazi.py +3 -2
  20. machineconfig-8.31/src/machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
  21. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +1 -1
  22. machineconfig-8.31/src/machineconfig/jobs/scripts_dynamic/a.py +428 -0
  23. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/create_links.py +5 -5
  24. machineconfig-8.31/src/machineconfig/profile/mapper.toml +269 -0
  25. machineconfig-8.31/src/machineconfig/scripts/python/agents.py +120 -0
  26. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/initai.py +2 -0
  27. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +5 -5
  28. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +29 -0
  29. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/utils/vscode_tasks.py +6 -3
  30. machineconfig-8.31/src/machineconfig/scripts/python/cloud.py +76 -0
  31. machineconfig-8.31/src/machineconfig/scripts/python/croshell.py +30 -0
  32. machineconfig-8.31/src/machineconfig/scripts/python/devops.py +84 -0
  33. machineconfig-8.31/src/machineconfig/scripts/python/fire_jobs.py +84 -0
  34. machineconfig-8.31/src/machineconfig/scripts/python/ftpx.py +28 -0
  35. {machineconfig-8.19/src/machineconfig/scripts/python/env_manager → machineconfig-8.31/src/machineconfig/scripts/python/helper_env}/path_manager_tui.py +2 -2
  36. {machineconfig-8.19/src/machineconfig/scripts/python/env_manager → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helper_env}/env_manager_tui.py +1 -1
  37. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
  38. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/agentic_frameworks/fire_crush.py +1 -1
  39. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/agentic_frameworks/fire_cursor_agents.py +1 -1
  40. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/agentic_frameworks/fire_gemini.py +1 -1
  41. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/agentic_frameworks/fire_qwen.py +1 -1
  42. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
  43. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/fire_agents_help_launch.py +5 -5
  44. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/cloud_copy.py +3 -3
  45. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/cloud_mount.py +2 -1
  46. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/cloud_sync.py +3 -3
  47. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/helpers2.py +1 -1
  48. machineconfig-8.19/src/machineconfig/scripts/python/croshell.py → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +110 -75
  49. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/scheduler.py +4 -4
  50. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/start_slidev.py +5 -5
  51. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_config.py +3 -10
  52. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_config_dotfile.py +1 -1
  53. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_data.py +3 -3
  54. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_nw.py +37 -70
  55. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_repos.py +19 -19
  56. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_self.py +10 -9
  57. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_share_file.py +1 -1
  58. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_share_server.py +3 -3
  59. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/cli_share_terminal.py +1 -1
  60. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +164 -0
  61. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/devops_backup_retrieve.py +1 -1
  62. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/devops_status.py +2 -2
  63. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/devops_update_repos.py +1 -1
  64. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_devops}/interactive.py +14 -3
  65. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/run_script.py +22 -10
  66. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/themes/choose_wezterm_theme.py +3 -3
  67. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
  68. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/fire_jobs_route_helper.py +3 -3
  69. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +149 -0
  70. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_msearch/scripts_linux/fzfg +2 -0
  71. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
  72. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
  73. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/command_builder.py +1 -1
  74. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/command_detail.py +1 -1
  75. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/command_tree.py +1 -1
  76. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/main_app.py +5 -5
  77. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/address_switch.py +1 -1
  78. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +255 -0
  79. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/mount_ssh.py +2 -2
  80. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
  81. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
  82. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
  83. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
  84. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/action.py +3 -3
  85. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/action_helper.py +3 -3
  86. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/cloud_repo_sync.py +3 -3
  87. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/entrypoint.py +2 -2
  88. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/grource.py +1 -1
  89. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/repo_analyzer_2.py +29 -15
  90. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
  91. machineconfig-8.19/src/machineconfig/scripts/python/sessions.py → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +52 -96
  92. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_sessions/sessions_multiprocess.py +1 -1
  93. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +84 -0
  94. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_utils/python.py +37 -19
  95. machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_utils/specs.py +392 -0
  96. machineconfig-8.31/src/machineconfig/scripts/python/mcfg_entry.py +143 -0
  97. machineconfig-8.31/src/machineconfig/scripts/python/msearch.py +25 -0
  98. machineconfig-8.31/src/machineconfig/scripts/python/sessions.py +86 -0
  99. machineconfig-8.31/src/machineconfig/scripts/python/terminal.py +58 -0
  100. machineconfig-8.31/src/machineconfig/scripts/python/utils.py +117 -0
  101. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/bash/init.sh +5 -0
  102. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/pwsh/init.ps1 +8 -1
  103. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/zsh/init.sh +4 -0
  104. machineconfig-8.31/src/machineconfig/settings/wsl/.wslconfig +10 -0
  105. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
  106. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_mac/__init__.py +0 -2
  107. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_windows/__init__.py +0 -1
  108. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +13 -13
  109. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +3 -3
  110. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +2 -2
  111. machineconfig-8.31/src/machineconfig/utils/ai/__init__.py +0 -0
  112. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/code.py +32 -1
  113. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/ascii_art.py +10 -14
  114. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/headers.py +3 -5
  115. machineconfig-8.31/src/machineconfig/utils/files/ouch/__init__.py +0 -0
  116. machineconfig-8.31/src/machineconfig/utils/installer_utils/__init__.py +0 -0
  117. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/install_from_url.py +1 -1
  118. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/installer_class.py +1 -1
  119. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/installer_helper.py +2 -2
  120. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/installer_locator_utils.py +13 -13
  121. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/installer_runner.py +4 -4
  122. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/meta.py +1 -1
  123. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/options.py +4 -1
  124. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/path_extended.py +5 -3
  125. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
  126. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ssh.py +27 -8
  127. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ssh_utils/abc.py +1 -1
  128. machineconfig-8.31/src/machineconfig/utils/ssh_utils/wsl.py +147 -0
  129. machineconfig-8.19/src/machineconfig/utils/ssh_utils/wsl.py → machineconfig-8.31/src/machineconfig/utils/ssh_utils/wsl_helper.py +88 -81
  130. {machineconfig-8.19 → machineconfig-8.31/src/machineconfig.egg-info}/PKG-INFO +3 -3
  131. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig.egg-info/SOURCES.txt +129 -113
  132. machineconfig-8.19/src/machineconfig/jobs/installer/check_installations.py +0 -248
  133. machineconfig-8.19/src/machineconfig/jobs/scripts_dynamic/a.py +0 -25
  134. machineconfig-8.19/src/machineconfig/profile/mapper.toml +0 -263
  135. machineconfig-8.19/src/machineconfig/scripts/python/agents.py +0 -222
  136. machineconfig-8.19/src/machineconfig/scripts/python/cloud.py +0 -29
  137. machineconfig-8.19/src/machineconfig/scripts/python/devops.py +0 -68
  138. machineconfig-8.19/src/machineconfig/scripts/python/devops_navigator.py +0 -6
  139. machineconfig-8.19/src/machineconfig/scripts/python/fire_jobs.py +0 -283
  140. machineconfig-8.19/src/machineconfig/scripts/python/ftpx.py +0 -248
  141. machineconfig-8.19/src/machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
  142. machineconfig-8.19/src/machineconfig/scripts/python/helpers_network/ssh_add_identity.py +0 -116
  143. machineconfig-8.19/src/machineconfig/scripts/python/helpers_network/ssh_add_ssh_key.py +0 -153
  144. machineconfig-8.19/src/machineconfig/scripts/python/helpers_network/ssh_debug_linux.py +0 -391
  145. machineconfig-8.19/src/machineconfig/scripts/python/helpers_network/ssh_debug_windows.py +0 -338
  146. machineconfig-8.19/src/machineconfig/scripts/python/mcfg_entry.py +0 -58
  147. machineconfig-8.19/src/machineconfig/scripts/python/msearch.py +0 -72
  148. machineconfig-8.19/src/machineconfig/scripts/python/terminal.py +0 -136
  149. machineconfig-8.19/src/machineconfig/scripts/python/utils.py +0 -62
  150. machineconfig-8.19/src/machineconfig/settings/wsl/.wslconfig +0 -35
  151. machineconfig-8.19/src/machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
  152. machineconfig-8.19/src/machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
  153. machineconfig-8.19/src/machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
  154. {machineconfig-8.19 → machineconfig-8.31}/MANIFEST.in +0 -0
  155. {machineconfig-8.19 → machineconfig-8.31}/setup.cfg +0 -0
  156. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/__init__.py +0 -0
  157. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/__init__.py +0 -0
  158. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/cloud_manager.py +0 -0
  159. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/data_transfer.py +0 -0
  160. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/distribute.py +0 -0
  161. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/file_manager.py +0 -0
  162. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/job_params.py +0 -0
  163. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/loader_runner.py +0 -0
  164. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/remote_machine.py +0 -0
  165. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/run_cloud.py +0 -0
  166. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/script_execution.py +0 -0
  167. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/remote/script_notify_upon_completion.py +0 -0
  168. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/__init__.py +0 -0
  169. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/helpers/enhanced_command_runner.py +0 -0
  170. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +0 -0
  171. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/utils/load_balancer.py +0 -0
  172. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/utils/maker.py +0 -0
  173. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_local.py +0 -0
  174. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_remote.py +0 -0
  175. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_remote_manager.py +0 -0
  176. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +0 -0
  177. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +0 -0
  178. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +0 -0
  179. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +0 -0
  180. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +0 -0
  181. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +0 -0
  182. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +0 -0
  183. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +0 -0
  184. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +0 -0
  185. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_local.py +0 -0
  186. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_remote.py +0 -0
  187. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_remote_manager.py +0 -0
  188. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +0 -0
  189. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +0 -0
  190. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +0 -0
  191. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +0 -0
  192. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +0 -0
  193. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +0 -0
  194. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +0 -0
  195. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +0 -0
  196. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +0 -0
  197. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +0 -0
  198. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +0 -0
  199. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/templates/__init__.py +0 -0
  200. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/cluster/templates/cli_trogon.py +0 -0
  201. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/__init__.py +0 -0
  202. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/__init__.py +0 -0
  203. {machineconfig-8.19/src/machineconfig/jobs/installer/python_scripts → machineconfig-8.31/src/machineconfig/jobs/installer/checks}/__init__.py +0 -0
  204. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/brave.sh +0 -0
  205. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/cloudflare_warp_cli.sh +0 -0
  206. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/docker.sh +0 -0
  207. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/docker_start.sh +0 -0
  208. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/edge.sh +0 -0
  209. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/nerdfont.sh +0 -0
  210. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/network.sh +0 -0
  211. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/ngrok.sh +0 -0
  212. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/q.sh +0 -0
  213. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/redis.sh +0 -0
  214. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/vscode.sh +0 -0
  215. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/linux_scripts/wezterm.sh +0 -0
  216. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +0 -0
  217. {machineconfig-8.19/src/machineconfig/profile → machineconfig-8.31/src/machineconfig/jobs/installer/python_scripts}/__init__.py +0 -0
  218. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/alacritty.py +0 -0
  219. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/brave.py +0 -0
  220. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/bypass_paywall.py +0 -0
  221. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +0 -0
  222. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/cursor.py +0 -0
  223. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/dubdb_adbc.py +0 -0
  224. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/espanso.py +0 -0
  225. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/gh.py +0 -0
  226. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/goes.py +0 -0
  227. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/lvim.py +0 -0
  228. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/nerdfont.py +0 -0
  229. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/redis.py +0 -0
  230. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/wezterm.py +0 -0
  231. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/installer/python_scripts/winget.py +0 -0
  232. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/android.sh +0 -0
  233. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/lid.sh +0 -0
  234. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/mount_drive +0 -0
  235. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/mount_nfs +0 -0
  236. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/mount_nw_drive +0 -0
  237. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/mount_smb +0 -0
  238. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/share_cloud.sh +0 -0
  239. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/share_nfs +0 -0
  240. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/bash_scripts/start_docker +0 -0
  241. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/Restore-ThunderbirdProfile.ps1 +0 -0
  242. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/docker.ps1 +0 -0
  243. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/mount_nfs.ps1 +0 -0
  244. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/mount_nw.ps1 +0 -0
  245. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/mount_smb.ps1 +0 -0
  246. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +0 -0
  247. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/power_options.ps1 +0 -0
  248. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/share_cloud.cmd +0 -0
  249. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/share_smb.ps1 +0 -0
  250. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/jobs/scripts/powershell_scripts/unlock_bitlocker.ps1 +0 -0
  251. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/logger.py +0 -0
  252. {machineconfig-8.19/src/machineconfig/scripts → machineconfig-8.31/src/machineconfig/profile}/__init__.py +0 -0
  253. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/backup.toml +0 -0
  254. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/bash_shell_profiles.md +0 -0
  255. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/create_helper.py +0 -0
  256. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/create_links_export.py +0 -0
  257. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/create_shell_profile.py +0 -0
  258. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/records/generic/shares.toml +0 -0
  259. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/records/linux/apps_summary_report.csv +0 -0
  260. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/records/linux/apps_summary_report.md +0 -0
  261. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/records/windows/apps_summary_report.csv +0 -0
  262. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/profile/records/windows/apps_summary_report.md +0 -0
  263. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts}/__init__.py +0 -0
  264. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/linux/wrap_mcfg +0 -0
  265. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/nu/wrap_mcfg.nu +0 -0
  266. {machineconfig-8.19/src/machineconfig/scripts/python/ai → machineconfig-8.31/src/machineconfig/scripts/python}/__init__.py +0 -0
  267. {machineconfig-8.19/src/machineconfig/scripts/python/ai/solutions → machineconfig-8.31/src/machineconfig/scripts/python/ai}/__init__.py +0 -0
  268. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/scripts/command_runner.ps1 +0 -0
  269. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/scripts/command_runner.sh +0 -0
  270. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +0 -0
  271. {machineconfig-8.19/src/machineconfig/scripts/python/ai/utils → machineconfig-8.31/src/machineconfig/scripts/python/ai/solutions}/__init__.py +0 -0
  272. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/_shared.py +0 -0
  273. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/claude/claude.py +0 -0
  274. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/cline/cline.py +0 -0
  275. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/agents/Thinking-Beast-Mode.agent.md +0 -0
  276. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md +0 -0
  277. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/agents/deepResearch.agent.md +0 -0
  278. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  279. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +0 -0
  280. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/privacy.md +0 -0
  281. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
  282. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  283. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/crush/crush.json +0 -0
  284. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/crush/crush.py +0 -0
  285. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/crush/privacy.md +0 -0
  286. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  287. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/gemini/gemini.py +0 -0
  288. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/gemini/settings.json +0 -0
  289. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/generic.py +0 -0
  290. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  291. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.json +0 -0
  292. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  293. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_agents → machineconfig-8.31/src/machineconfig/scripts/python/ai/utils}/__init__.py +0 -0
  294. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/python/ai/utils/generate_files.py +0 -0
  295. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_agents/agentic_frameworks → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/__init__.py +0 -0
  296. {machineconfig-8.19/src/machineconfig/scripts/python/env_manager → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helper_env}/__init__.py +0 -0
  297. {machineconfig-8.19/src/machineconfig/scripts/python/env_manager → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helper_env}/path_manager_backend.py +0 -0
  298. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_cloud → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_agents}/__init__.py +0 -0
  299. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_croshell → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks}/__init__.py +0 -0
  300. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/agentic_frameworks/fire_crush.json +0 -0
  301. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/fire_agents_help_search.py +0 -0
  302. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/fire_agents_helper_types.py +0 -0
  303. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/fire_agents_load_balancer.py +0 -0
  304. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/configs/aichat/config.yaml +0 -0
  305. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/configs/aider/.aider.conf.yml +0 -0
  306. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/configs/copilot/config.yml +0 -0
  307. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/configs/crush/crush.json +0 -0
  308. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/configs/gemini/settings.json +0 -0
  309. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/privacy/privacy.py +0 -0
  310. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/templates/prompt.txt +0 -0
  311. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/templates/template.ps1 +0 -0
  312. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_agents/templates/template.sh +0 -0
  313. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_devops → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_cloud}/__init__.py +0 -0
  314. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/cloud_helpers.py +0 -0
  315. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_cloud/helpers5.py +0 -0
  316. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_devops/themes → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_croshell}/__init__.py +0 -0
  317. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/crosh.py +0 -0
  318. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/pomodoro.py +0 -0
  319. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/viewer.py +0 -0
  320. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_croshell/viewer_template.py +0 -0
  321. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_fire_command → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_devops}/__init__.py +0 -0
  322. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_network → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
  323. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/themes/choose_pwsh_theme.ps1 +0 -0
  324. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/themes/choose_starship_theme.bash +0 -0
  325. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_devops/themes/choose_starship_theme.ps1 +0 -0
  326. {machineconfig-8.19/src/machineconfig/scripts/python/helpers_sessions → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_fire_command}/__init__.py +0 -0
  327. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/cloud_manager.py +0 -0
  328. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/f.py +0 -0
  329. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/file_wrangler.py +0 -0
  330. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/fire_jobs_args_helper.py +0 -0
  331. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  332. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_msearch/__init__.py +0 -0
  333. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_msearch/scripts_windows/fzfg.ps1 +0 -0
  334. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/data_models.py +0 -0
  335. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_navigator/search_bar.py +0 -0
  336. {machineconfig-8.19/src/machineconfig/settings → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_network}/__init__.py +0 -0
  337. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/address.py +0 -0
  338. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/mount_nfs.py +0 -0
  339. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/mount_nw_drive.py +0 -0
  340. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/onetimeshare.py +0 -0
  341. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_network/wifi_conn.py +0 -0
  342. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/clone.py +0 -0
  343. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/record.py +0 -0
  344. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/repo_analyzer_1.py +0 -0
  345. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/sync.py +0 -0
  346. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_repos/update.py +0 -0
  347. {machineconfig-8.19/src/machineconfig/scripts/python/helpers → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_search}/ast_search.py +0 -0
  348. {machineconfig-8.19/src/machineconfig/scripts/python/helpers → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_search}/qr_code.py +0 -0
  349. {machineconfig-8.19/src/machineconfig/scripts/python/helpers → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_search}/repo_rag.py +0 -0
  350. {machineconfig-8.19/src/machineconfig/scripts/python/helpers → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_search}/symantic_search.py +0 -0
  351. {machineconfig-8.19/src/machineconfig/settings/shells/ipy/profiles/default → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_sessions}/__init__.py +0 -0
  352. {machineconfig-8.19/src/machineconfig/settings/shells/ipy/profiles/default/startup → machineconfig-8.31/src/machineconfig/scripts/python/helpers/helpers_terminal}/__init__.py +0 -0
  353. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_utils/download.py +0 -0
  354. {machineconfig-8.19/src/machineconfig/scripts/python → machineconfig-8.31/src/machineconfig/scripts/python/helpers}/helpers_utils/pdf.py +0 -0
  355. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/scripts/windows/wrap_mcfg.ps1 +0 -0
  356. {machineconfig-8.19/src/machineconfig/settings/wt → machineconfig-8.31/src/machineconfig/settings}/__init__.py +0 -0
  357. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/broot/br.sh +0 -0
  358. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/broot/brootcd.ps1 +0 -0
  359. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/broot/conf.toml +0 -0
  360. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/glow/glow.yml +0 -0
  361. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  362. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/helix/config.toml +0 -0
  363. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/helix/languages.toml +0 -0
  364. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/helix/yazi-picker.sh +0 -0
  365. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/keras/keras.json +0 -0
  366. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/keyboard/espanso/config/default.yml +0 -0
  367. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/keyboard/espanso/match/base.yml +0 -0
  368. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
  369. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
  370. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
  371. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
  372. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/open.sh +0 -0
  373. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
  374. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
  375. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
  376. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/colors +0 -0
  377. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/exe/cleaner.sh +0 -0
  378. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  379. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/exe/lfcd.sh +0 -0
  380. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/exe/previewer.sh +0 -0
  381. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/exe/previewer_archive.sh +0 -0
  382. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/icons +0 -0
  383. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/linux/lfrc +0 -0
  384. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
  385. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  386. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  387. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
  388. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
  389. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  390. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
  391. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/cd_tere.ps1 +0 -0
  392. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/cd_zoxide.ps1 +0 -0
  393. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  394. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/colors +0 -0
  395. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/icons +0 -0
  396. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  397. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/lfcd.ps1 +0 -0
  398. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/lfrc +0 -0
  399. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/mkdir.ps1 +0 -0
  400. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/mkfile.ps1 +0 -0
  401. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lf/windows/previewer.ps1 +0 -0
  402. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/linters/.flake8 +0 -0
  403. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/linters/.mypy.ini +0 -0
  404. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/linters/.pylintrc +0 -0
  405. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/linters/.ruff.toml +0 -0
  406. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lvim/linux/config.lua +0 -0
  407. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -0
  408. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lvim/windows/config.lua +0 -0
  409. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  410. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/marimo/marimo.toml +0 -0
  411. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/marimo/snippets/globalize.py +0 -0
  412. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/mprocs/windows/mprocs.yaml +0 -0
  413. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/mprocs/windows/other +0 -0
  414. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/pistol/pistol.conf +0 -0
  415. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/presenterm/config.yaml +0 -0
  416. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/procs/.procs.toml +0 -0
  417. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/pudb/pudb.cfg +0 -0
  418. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/rofi/config.rasi +0 -0
  419. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/rofi/config_default.rasi +0 -0
  420. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/alacritty/alacritty.toml +0 -0
  421. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
  422. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/hyper/.hyper.js +0 -0
  423. {machineconfig-8.19/src/machineconfig/utils → machineconfig-8.31/src/machineconfig/settings/shells/ipy/profiles/default}/__init__.py +0 -0
  424. {machineconfig-8.19/src/machineconfig/utils/ai → machineconfig-8.31/src/machineconfig/settings/shells/ipy/profiles/default/startup}/__init__.py +0 -0
  425. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  426. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/kitty/kitty.conf +0 -0
  427. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/nushell/config.nu +0 -0
  428. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/nushell/env.nu +0 -0
  429. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/nushell/init.nu +0 -0
  430. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/starship/starship.toml +0 -0
  431. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/vtm/settings.xml +0 -0
  432. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/wezterm/wezterm.lua +0 -0
  433. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/shells/wt/settings.json +0 -0
  434. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/streamlit/config.toml +0 -0
  435. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/svim/linux/init.toml +0 -0
  436. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/svim/windows/init.toml +0 -0
  437. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/alias.toml +0 -0
  438. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/aws-buckets.toml +0 -0
  439. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/aws-instances.toml +0 -0
  440. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/bash-history.toml +0 -0
  441. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/channels.toml +0 -0
  442. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/dirs.toml +0 -0
  443. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/distrobox-list.toml +0 -0
  444. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/docker-images.toml +0 -0
  445. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/dotfiles.toml +0 -0
  446. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/env.toml +0 -0
  447. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/files.toml +0 -0
  448. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/fish-history.toml +0 -0
  449. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/git-branch.toml +0 -0
  450. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/git-diff.toml +0 -0
  451. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/git-log.toml +0 -0
  452. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/git-reflog.toml +0 -0
  453. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/git-repos.toml +0 -0
  454. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/guix.toml +0 -0
  455. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/just-recipes.toml +0 -0
  456. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/k8s-deployments.toml +0 -0
  457. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/k8s-pods.toml +0 -0
  458. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/k8s-services.toml +0 -0
  459. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/man-pages.toml +0 -0
  460. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/nu-history.toml +0 -0
  461. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/procs.toml +0 -0
  462. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/text.toml +0 -0
  463. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/tldr.toml +0 -0
  464. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_unix/zsh-history.toml +0 -0
  465. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/alias.toml +0 -0
  466. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/dirs.toml +0 -0
  467. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/docker-images.toml +0 -0
  468. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/dotfiles.toml +0 -0
  469. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/env.toml +0 -0
  470. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/files.toml +0 -0
  471. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/git-branch.toml +0 -0
  472. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/git-diff.toml +0 -0
  473. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/git-log.toml +0 -0
  474. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/git-reflog.toml +0 -0
  475. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/git-repos.toml +0 -0
  476. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/nu-history.toml +0 -0
  477. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/pwsh-history.toml +0 -0
  478. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/television/cable_windows/text.toml +0 -0
  479. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/tere/terecd.ps1 +0 -0
  480. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/tere/terecd.sh +0 -0
  481. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/tmux/.tmate.conf +0 -0
  482. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/tmux/.tmux.conf +0 -0
  483. {machineconfig-8.19/src/machineconfig/utils/files/ouch → machineconfig-8.31/src/machineconfig/settings/wt}/__init__.py +0 -0
  484. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/wt/set_wt_settings.py +0 -0
  485. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/init.lua +0 -0
  486. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/keymap_linux.toml +0 -0
  487. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/keymap_windows.toml +0 -0
  488. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/shell/yazi_cd.ps1 +0 -0
  489. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/shell/yazi_cd.sh +0 -0
  490. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/theme.toml +0 -0
  491. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/yazi_linux.toml +0 -0
  492. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/yazi/yazi_windows.toml +0 -0
  493. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zed/settings.json +0 -0
  494. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/commands/monitor +0 -0
  495. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/commands/standard_panes +0 -0
  496. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/config.kdl +0 -0
  497. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/config.orig.kdl +0 -0
  498. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/layouts/hist +0 -0
  499. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/layouts/panes.kdl +0 -0
  500. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/layouts/st.kdl +0 -0
  501. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/layouts/st2.kdl +0 -0
  502. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/settings/zellij/layouts/stacked_panes.kdl +0 -0
  503. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/__init__.py +0 -0
  504. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/apps_desktop.sh +0 -0
  505. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/apps_gui.sh +0 -0
  506. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/uv.sh +0 -0
  507. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_linux/web_shortcuts/live_from_github.sh +0 -0
  508. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_mac/apps_gui.sh +0 -0
  509. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_mac/uv.sh +0 -0
  510. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/setup_windows/uv.ps1 +0 -0
  511. {machineconfig-8.19/src/machineconfig/utils/installer_utils → machineconfig-8.31/src/machineconfig/utils}/__init__.py +0 -0
  512. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/accessories.py +0 -0
  513. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/cloud/onedrive/README.md +0 -0
  514. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/cloud/onedrive/setup_oauth.py +0 -0
  515. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/cloud/onedrive/transaction.py +0 -0
  516. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/art/fat_croco.txt +0 -0
  517. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/art/halfwit_croco.txt +0 -0
  518. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/art/happy_croco.txt +0 -0
  519. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/art/water_croco.txt +0 -0
  520. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/dbms.py +0 -0
  521. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/ouch/decompress.py +0 -0
  522. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/files/read.py +0 -0
  523. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/github_release_bulk.py +0 -0
  524. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/installer_utils/installer_cli.py +0 -0
  525. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/io.py +0 -0
  526. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/links.py +0 -0
  527. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/notifications.py +0 -0
  528. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/options_tv.py +0 -0
  529. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/path_helper.py +0 -0
  530. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/procs.py +0 -0
  531. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/scheduler.py +0 -0
  532. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/scheduling.py +0 -0
  533. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/schemas/installer/installer_types.py +0 -0
  534. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/schemas/layouts/layout_types.py +0 -0
  535. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/schemas/repos/repos_types.py +0 -0
  536. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/source_of_truth.py +0 -0
  537. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ssh_utils/copy_from_here.py +0 -0
  538. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ssh_utils/copy_to_here.py +0 -0
  539. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ssh_utils/utils.py +0 -0
  540. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/terminal.py +0 -0
  541. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/tst.py +0 -0
  542. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/upgrade_packages.py +0 -0
  543. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig/utils/ve.py +0 -0
  544. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig.egg-info/dependency_links.txt +0 -0
  545. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig.egg-info/entry_points.txt +0 -0
  546. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig.egg-info/requires.txt +0 -0
  547. {machineconfig-8.19 → machineconfig-8.31}/src/machineconfig.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 8.19
3
+ Version: 8.31
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -117,9 +117,9 @@ uv tool install --upgrade --python 3.14 machineconfig
117
117
  # Quickies ...
118
118
  ```powershell
119
119
  # interactive install of machineconfig and following on to run it and make basic machine configuration (RECOMMENDED):
120
- iex (iwr bit.ly/cfgwindows).Content # Or, if UV is installed: iex (uvx machineconfig define)
120
+ irm bit.ly/cfgwindows | iex # Or, if UV is installed: iex (uvx machineconfig define)
121
121
  # Quick install and configure (optionals are accepted by default):
122
- iex (iwr bit.ly/cfgwq).Content
122
+ irm bit.ly/cfgwq | iex
123
123
  ```
124
124
 
125
125
  ```bash
@@ -75,9 +75,9 @@ uv tool install --upgrade --python 3.14 machineconfig
75
75
  # Quickies ...
76
76
  ```powershell
77
77
  # interactive install of machineconfig and following on to run it and make basic machine configuration (RECOMMENDED):
78
- iex (iwr bit.ly/cfgwindows).Content # Or, if UV is installed: iex (uvx machineconfig define)
78
+ irm bit.ly/cfgwindows | iex # Or, if UV is installed: iex (uvx machineconfig define)
79
79
  # Quick install and configure (optionals are accepted by default):
80
- iex (iwr bit.ly/cfgwq).Content
80
+ irm bit.ly/cfgwq | iex
81
81
  ```
82
82
 
83
83
  ```bash
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "machineconfig"
9
- version = "8.19"
9
+ version = "8.31"
10
10
  description = "Dotfiles management package"
11
11
  readme = "README.md"
12
12
  license = {text = "Apache 2.0"}
@@ -91,11 +91,16 @@ dev = [
91
91
  "cleanpy>=0.5.1",
92
92
  "cowsay>=6.1",
93
93
  # "duckdb-engine>=0.17.0",
94
+ "gdown>=5.2.0",
94
95
  "ipdb>=0.13.13",
95
96
  "ipykernel>=6.30.1",
96
97
  "ipython>=9.5.0",
97
98
  "marimo>=0.17.2",
98
99
  "matplotlib>=3.10.6",
100
+ "mkdocs>=1.6.1",
101
+ "mkdocs-autorefs>=1.0.0",
102
+ "mkdocs-material>=9.7.0",
103
+ "mkdocstrings[python]>=1.0.0",
99
104
  "mypy>=1.18.2",
100
105
  "numpy>=2.3.3",
101
106
  "pandas>=2.3.3",
@@ -126,6 +131,7 @@ dev = [
126
131
  "types-sqlalchemy>=1.4.53.38",
127
132
  "types-toml>=0.10.8.20240310",
128
133
  "types-urllib3>=1.26.25.14",
134
+ "vt-py>=0.22.0",
129
135
  "yapf>=0.43.0",
130
136
  ]
131
137
 
@@ -58,7 +58,7 @@
58
58
 
59
59
  # # Execute each job sequentially (replace former List.apply behavior)
60
60
  # # If parallel execution is needed, consider a ThreadPool/ProcessPool
61
- # results: List[PathExtended] = [
61
+ # results: List[Path] = [
62
62
  # ExpensiveComputation.func_single_job(workload_params=job_params, **kwargs)
63
63
  # for job_params in per_job_workload_params
64
64
  # ]
@@ -7,7 +7,7 @@
7
7
  # from machineconfig.cluster.remote_machine import RemoteMachine, RemoteMachineConfig, WorkloadParams
8
8
  # from machineconfig.cluster.templates.utils import expensive_function
9
9
  # # from machineconfig.cluster.self_ssh import SelfSSH
10
- # data: list[PathExtended] = []
10
+ # data: list[Path] = []
11
11
  # config = RemoteMachineConfig(
12
12
  # # connection
13
13
  # # ssh_obj=SelfSSH(), # overrides ssh_params
@@ -333,7 +333,7 @@ if __name__ == "__main__":
333
333
  {
334
334
  "layoutName": "DevelopmentEnv",
335
335
  "layoutTabs": [
336
- {"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "npm run dev"},
336
+ {"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "bun run dev"},
337
337
  {"tabName": "⚙️Backend", "startDir": "~/code/myapp/backend", "command": "python manage.py runserver"},
338
338
  {"tabName": "📊Monitor", "startDir": "~", "command": "Get-Process | Sort-Object CPU -Descending | Select-Object -First 10"},
339
339
  ],
@@ -314,7 +314,7 @@ if __name__ == "__main__":
314
314
  {
315
315
  "layoutName": "Development",
316
316
  "layoutTabs": [
317
- {"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "npm run dev"},
317
+ {"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "bun run dev"},
318
318
  {"tabName": "⚙️Backend", "startDir": "~/code/myapp/backend", "command": "python manage.py runserver"},
319
319
  {"tabName": "📊Monitor", "startDir": "~", "command": "htop"},
320
320
  ],
@@ -0,0 +1,133 @@
1
+ """
2
+ Check Installations
3
+ ===================
4
+
5
+ This module scans installed applications using VirusTotal and generates a safety report.
6
+ It also provides functionality to download and install pre-checked applications.
7
+ """
8
+
9
+ import csv
10
+ import platform
11
+ from datetime import datetime
12
+ from typing import Optional
13
+
14
+ from rich.console import Console
15
+ from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn
16
+
17
+ from machineconfig.jobs.installer.checks.install_utils import upload_app
18
+ from machineconfig.jobs.installer.checks.report_utils import AppData, generate_markdown_report
19
+ from machineconfig.jobs.installer.checks.vt_utils import get_vt_client, scan_file
20
+ from machineconfig.utils.installer_utils.installer_runner import get_installed_cli_apps
21
+ from machineconfig.utils.path_extended import PathExtended
22
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT, INSTALL_VERSION_ROOT
23
+
24
+ # Constants
25
+ APP_SUMMARY_PATH = CONFIG_ROOT.joinpath(f"profile/records/{platform.system().lower()}/apps_summary_report.csv")
26
+
27
+ console = Console()
28
+
29
+ def main() -> None:
30
+ """Main execution function."""
31
+ console.rule("[bold blue]MachineConfig Installation Checker[/bold blue]")
32
+
33
+ # 1. Gather Installed Apps
34
+ with console.status("[bold green]Gathering installed applications...[/bold green]"):
35
+ apps_paths = get_installed_cli_apps()
36
+ # Filter and find versions
37
+ # This part mimics the original logic but simplifies it
38
+ # We assume apps_paths contains PathExtended objects
39
+
40
+ # Find version files
41
+ install_version_root_ext = PathExtended(INSTALL_VERSION_ROOT)
42
+ version_files = list(install_version_root_ext.search()) if install_version_root_ext.exists() else []
43
+
44
+ apps_to_scan: list[tuple[PathExtended, Optional[str]]] = []
45
+
46
+ for app_path in apps_paths:
47
+ # Try to find version
48
+ version = None
49
+ # Simple matching logic: check if any version file matches the app name
50
+ # This is a heuristic from the original code
51
+ matching_versions = [v for v in version_files if v.stem == app_path.stem]
52
+ if matching_versions:
53
+ version = matching_versions[0].read_text(encoding="utf-8").strip()
54
+
55
+ apps_to_scan.append((app_path, version))
56
+
57
+ console.print(f"[green]Found {len(apps_to_scan)} applications to check.[/green]")
58
+
59
+ # 2. Scan Apps with VirusTotal
60
+ app_data_list: list[AppData] = []
61
+
62
+ try:
63
+ client = get_vt_client()
64
+
65
+ with Progress(
66
+ SpinnerColumn(),
67
+ TextColumn("[progress.description]{task.description}"),
68
+ BarColumn(),
69
+ TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
70
+ console=console
71
+ ) as progress:
72
+ scan_task = progress.add_task("[cyan]Scanning apps...", total=len(apps_to_scan))
73
+
74
+ for app_path, version in apps_to_scan:
75
+ progress.update(scan_task, description=f"Scanning {app_path.name}...")
76
+
77
+ positive_pct, _ = scan_file(app_path, client, progress, scan_task)
78
+
79
+ # Upload if safe (optional, based on original code logic which uploaded everything?)
80
+ # Original code uploaded everything.
81
+ progress.update(scan_task, description=f"Uploading {app_path.name}...")
82
+ app_url = upload_app(app_path) or ""
83
+
84
+ app_data_list.append({
85
+ "app_name": app_path.stem,
86
+ "version": version,
87
+ "positive_pct": positive_pct,
88
+ "scan_time": datetime.now().strftime("%Y-%m-%d %H:%M"),
89
+ "app_path": app_path.collapseuser(strict=False).as_posix(),
90
+ "app_url": app_url
91
+ })
92
+
93
+ progress.advance(scan_task)
94
+
95
+ except FileNotFoundError as e:
96
+ console.print(f"[bold red]{e}[/bold red]")
97
+ console.print("[yellow]Skipping scanning due to missing credentials.[/yellow]")
98
+ # Fallback: just list apps without scan results
99
+ for app_path, version in apps_to_scan:
100
+ app_data_list.append({
101
+ "app_name": app_path.stem,
102
+ "version": version,
103
+ "positive_pct": None,
104
+ "scan_time": datetime.now().strftime("%Y-%m-%d %H:%M"),
105
+ "app_path": app_path.collapseuser(strict=False).as_posix(),
106
+ "app_url": ""
107
+ })
108
+ except Exception as e:
109
+ console.print(f"[bold red]An unexpected error occurred during scanning: {e}[/bold red]")
110
+
111
+ # 3. Generate Reports
112
+ if app_data_list:
113
+ # CSV Report
114
+ APP_SUMMARY_PATH.parent.mkdir(parents=True, exist_ok=True)
115
+ csv_path = APP_SUMMARY_PATH.with_suffix(".csv")
116
+
117
+ with open(csv_path, 'w', newline='', encoding='utf-8') as csvfile:
118
+ fieldnames = list(app_data_list[0].keys())
119
+ writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
120
+ writer.writeheader()
121
+ writer.writerows(app_data_list)
122
+
123
+ console.print(f"[green]CSV report saved to: {csv_path}[/green]")
124
+
125
+ # Markdown Report
126
+ md_path = APP_SUMMARY_PATH.with_suffix(".md")
127
+ generate_markdown_report(app_data_list, md_path)
128
+ console.print(f"[green]Markdown report saved to: {md_path}[/green]")
129
+
130
+
131
+
132
+ if __name__ == '__main__':
133
+ main()
@@ -0,0 +1,132 @@
1
+ """
2
+ Installation Utilities
3
+ ======================
4
+
5
+ This module provides functionality to download and install pre-checked applications.
6
+ """
7
+
8
+ import csv
9
+ import platform
10
+ from concurrent.futures import ThreadPoolExecutor
11
+ from pathlib import Path
12
+ from typing import Any, Optional
13
+
14
+ import gdown
15
+ from rich.console import Console
16
+
17
+ from machineconfig.utils.path_extended import PathExtended
18
+ from machineconfig.utils.source_of_truth import CONFIG_ROOT
19
+
20
+ # Constants
21
+ APP_SUMMARY_PATH = CONFIG_ROOT.joinpath(f"profile/records/{platform.system().lower()}/apps_summary_report.csv")
22
+ CLOUD_STORAGE_NAME = "gdw" # Default cloud storage name for rclone
23
+
24
+ console = Console()
25
+
26
+ def upload_app(path: PathExtended) -> Optional[str]:
27
+ """Uploads the app to cloud storage and returns the shareable link."""
28
+ try:
29
+ # Using PathExtended.to_cloud
30
+ # Assuming 'gdw' is the configured remote in rclone
31
+ link_path = path.to_cloud(CLOUD_STORAGE_NAME, rel2home=True, share=True, os_specific=True, verbose=False)
32
+ if link_path:
33
+ return str(link_path)
34
+ return None
35
+ except Exception as e:
36
+ console.print(f"[red]Failed to upload {path}: {e}[/red]")
37
+ return None
38
+
39
+ def download_google_drive_file(url: str) -> PathExtended:
40
+ """Downloads a file from Google Drive using gdown."""
41
+ try:
42
+ # Extract ID from URL
43
+ # Assuming URL format like https://drive.google.com/file/d/FILE_ID/view or similar
44
+ # or https://drive.google.com/uc?id=FILE_ID
45
+ if "id=" in url:
46
+ file_id = url.split("id=")[1].split("&")[0]
47
+ elif "/d/" in url:
48
+ file_id = url.split("/d/")[1].split("/")[0]
49
+ else:
50
+ # Fallback to gdown's auto detection or just pass URL
51
+ file_id = url
52
+
53
+ # Create a temporary directory for download
54
+ output_dir = PathExtended.tmpdir(prefix="gdown_")
55
+ # gdown.download returns the output filename
56
+ output_file = gdown.download(id=file_id, output=str(output_dir) + "/", quiet=False, fuzzy=True)
57
+
58
+ if not output_file:
59
+ raise ValueError(f"Download failed for {url}")
60
+
61
+ return PathExtended(output_file)
62
+ except Exception as e:
63
+ raise RuntimeError(f"Failed to download from Google Drive: {e}") from e
64
+
65
+ def install_cli_app(app_url: str) -> bool:
66
+ """Downloads and installs a CLI app."""
67
+ try:
68
+ if not app_url:
69
+ return False
70
+
71
+ exe_path = download_google_drive_file(app_url)
72
+ console.print(f"[green]Downloaded {exe_path.name}[/green]")
73
+
74
+ system = platform.system().lower()
75
+ if system in ["linux", "darwin"]:
76
+ exe_path.chmod(0o755) # Make executable
77
+ # Move to local bin (requires user to have write access or sudo, which we can't easily do here without interaction)
78
+ # Using ~/.local/bin is safer
79
+ install_path = Path.home() / ".local/bin"
80
+ install_path.mkdir(parents=True, exist_ok=True)
81
+ target = install_path / exe_path.name
82
+ exe_path.rename(target)
83
+ console.print(f"[green]Installed to {target}[/green]")
84
+ elif system == "windows":
85
+ install_path = Path.home() / "AppData/Local/Microsoft/WindowsApps"
86
+ install_path.mkdir(parents=True, exist_ok=True)
87
+ target = install_path / exe_path.name
88
+ # Use shutil.move or PathExtended.move
89
+ exe_path.move(path=target, overwrite=True)
90
+ console.print(f"[green]Installed to {target}[/green]")
91
+
92
+ return True
93
+ except Exception as e:
94
+ console.print(f"[red]Failed to install app from {app_url}: {e}[/red]")
95
+ return False
96
+
97
+ def load_summary_report() -> list[dict[str, Any]]:
98
+ """Loads the summary report from CSV."""
99
+ if APP_SUMMARY_PATH.exists():
100
+ with open(APP_SUMMARY_PATH, 'r', encoding='utf-8') as csvfile:
101
+ reader = csv.DictReader(csvfile)
102
+ return list(reader)
103
+ else:
104
+ console.print(f"[yellow]Warning: Summary report not found at {APP_SUMMARY_PATH}[/yellow]")
105
+ return []
106
+
107
+ def download_safe_apps(name: str = "essentials") -> None:
108
+ """Downloads and installs safe apps."""
109
+ data = load_summary_report()
110
+ if not data:
111
+ console.print("[red]No app data available to install.[/red]")
112
+ return
113
+
114
+ apps_to_install = []
115
+ if name == "essentials":
116
+ # Install all available apps in the report? Or filter?
117
+ # Original code installed all if name="essentials" (implied by logic)
118
+ apps_to_install = [item['app_url'] for item in data if item.get('app_url')]
119
+ else:
120
+ apps_to_install = [item['app_url'] for item in data if item.get('app_name') == name and item.get('app_url')]
121
+
122
+ if not apps_to_install:
123
+ console.print(f"[yellow]No apps found to install for '{name}'.[/yellow]")
124
+ return
125
+
126
+ console.print(f"[bold]Installing {len(apps_to_install)} apps...[/bold]")
127
+
128
+ with ThreadPoolExecutor(max_workers=5) as executor:
129
+ results = list(executor.map(install_cli_app, apps_to_install))
130
+
131
+ success_count = sum(results)
132
+ console.print(f"[bold green]Successfully installed {success_count}/{len(apps_to_install)} apps.[/bold green]")
@@ -0,0 +1,39 @@
1
+ """
2
+ Report Utilities
3
+ ================
4
+
5
+ This module provides functionality to generate reports for installed applications.
6
+ """
7
+
8
+ from pathlib import Path
9
+ from typing import Optional, TypedDict
10
+ from rich.console import Console
11
+ from rich.panel import Panel
12
+
13
+ console = Console()
14
+
15
+ class AppData(TypedDict):
16
+ app_name: str
17
+ version: Optional[str]
18
+ positive_pct: Optional[float]
19
+ scan_time: str
20
+ app_path: str
21
+ app_url: str
22
+
23
+ def generate_markdown_report(data: list[AppData], output_path: Path) -> None:
24
+ """Generates a Markdown table from the app data."""
25
+ if not data:
26
+ return
27
+
28
+ keys = list(data[0].keys())
29
+ header = "| " + " | ".join(key.replace("_", " ").title() for key in keys) + " |"
30
+ separator = "| " + " | ".join("---" for _ in keys) + " |"
31
+ rows = []
32
+ for row in data:
33
+ # Fix: row is a dict, keys are strings.
34
+ row_values = [str(row.get(key, '')) for key in keys]
35
+ rows.append("| " + " | ".join(row_values) + " |")
36
+
37
+ content = "\n".join([header, separator] + rows)
38
+ output_path.write_text(content, encoding="utf-8")
39
+ console.print(Panel(content, title="Safety Report Summary", expand=False))
@@ -0,0 +1,89 @@
1
+ """
2
+ VirusTotal Utilities
3
+ ====================
4
+
5
+ This module provides functionality to interact with VirusTotal API.
6
+ """
7
+
8
+ import time
9
+ from pathlib import Path
10
+ from typing import Any, Optional, TypedDict
11
+
12
+ import vt
13
+ from rich.progress import Progress, TaskID
14
+
15
+ # Constants
16
+ VT_TOKEN_PATH = Path.home().joinpath("dotfiles/creds/tokens/virustotal")
17
+
18
+ class ScanResult(TypedDict):
19
+ result: Optional[str]
20
+ category: str
21
+
22
+ def get_vt_client() -> vt.Client:
23
+ """Retrieves the VirusTotal client using the token from the credentials file."""
24
+ if not VT_TOKEN_PATH.exists():
25
+ raise FileNotFoundError(f"VirusTotal token not found at {VT_TOKEN_PATH}")
26
+
27
+ token = VT_TOKEN_PATH.read_text(encoding="utf-8").split("\n")[0].strip()
28
+ return vt.Client(token)
29
+
30
+ def scan_file(path: Path, client: vt.Client, progress: Optional[Progress] = None, task_id: Optional[TaskID] = None) -> tuple[Optional[float], list[Any]]:
31
+ """
32
+ Scans a file using VirusTotal.
33
+
34
+ Args:
35
+ path: Path to the file to scan.
36
+ client: VirusTotal client instance.
37
+ progress: Optional Rich progress bar.
38
+ task_id: Optional Task ID for the progress bar.
39
+
40
+ Returns:
41
+ A tuple containing the positive percentage (0-100) and the list of result details.
42
+ Returns (None, []) if scanning fails or file is skipped.
43
+ """
44
+ if path.is_dir():
45
+ if progress and task_id:
46
+ progress.console.print(f"[yellow]📁 Skipping directory: {path}[/yellow]")
47
+ return None, []
48
+
49
+ try:
50
+ with open(path, "rb") as f:
51
+ analysis = client.scan_file(f)
52
+
53
+ repeat_counter = 0
54
+ while True:
55
+ try:
56
+ anal = client.get_object("/analyses/{}", analysis.id)
57
+ if anal.status == "completed":
58
+ break
59
+ except Exception as e:
60
+ repeat_counter += 1
61
+ if repeat_counter > 3:
62
+ raise ValueError(f"❌ Error scanning {path}: {e}") from e
63
+ if progress and task_id:
64
+ progress.console.print(f"[red]⚠️ Error scanning {path}, retrying... ({repeat_counter}/3)[/red]")
65
+ time.sleep(5)
66
+
67
+ time.sleep(10) # Wait before checking status again
68
+
69
+ # Process results
70
+ results_data = list(anal.results.values())
71
+ malicious = []
72
+ for result_item in results_data:
73
+ result_dict = result_item.__dict__ if hasattr(result_item, '__dict__') else {
74
+ 'result': getattr(result_item, 'result', None),
75
+ 'category': getattr(result_item, 'category', 'unknown')
76
+ }
77
+
78
+ if result_dict.get('result') is None and result_dict.get('category') in ["undetected", "type-unsupported", "failure", "timeout", "confirmed-timeout"]:
79
+ continue
80
+
81
+ malicious.append(result_item)
82
+
83
+ positive_pct = round(len(malicious) / len(results_data) * 100, 1) if results_data else 0.0
84
+ return positive_pct, results_data
85
+
86
+ except Exception as e:
87
+ if progress and task_id:
88
+ progress.console.print(f"[bold red]❌ Failed to scan {path}: {e}[/bold red]")
89
+ return None, []