machineconfig 5.16__tar.gz → 5.18__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 (448) hide show
  1. {machineconfig-5.16/src/machineconfig.egg-info → machineconfig-5.18}/PKG-INFO +1 -1
  2. {machineconfig-5.16 → machineconfig-5.18}/pyproject.toml +1 -1
  3. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_local.py +6 -1
  4. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_local_manager.py +4 -2
  5. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_remote_manager.py +4 -2
  6. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
  7. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_local_manager.py +1 -1
  8. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
  9. machineconfig-5.18/src/machineconfig/profile/create.py +271 -0
  10. machineconfig-5.18/src/machineconfig/profile/create_frontend.py +58 -0
  11. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/shell.py +45 -9
  12. machineconfig-5.18/src/machineconfig/scripts/python/ai/solutions/_shared.py +13 -0
  13. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
  14. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/generic.py +12 -2
  15. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/count_lines_frontend.py +1 -1
  16. machineconfig-5.18/src/machineconfig/scripts/python/devops.py +135 -0
  17. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/dotfile.py +14 -8
  18. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/interactive.py +5 -23
  19. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/share_terminal.py +1 -1
  20. machineconfig-5.18/src/machineconfig/setup_linux/__init__.py +11 -0
  21. {machineconfig-5.16/src/machineconfig/setup_linux → machineconfig-5.18/src/machineconfig/setup_linux/ssh}/openssh_all.sh +1 -0
  22. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
  23. machineconfig-5.18/src/machineconfig/setup_windows/__init__.py +12 -0
  24. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/apps.ps1 +1 -0
  25. {machineconfig-5.16/src/machineconfig/setup_windows → machineconfig-5.18/src/machineconfig/setup_windows/ssh}/openssh_all.ps1 +5 -5
  26. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
  27. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/code.py +7 -4
  28. machineconfig-5.18/src/machineconfig/utils/files/dbms.py +355 -0
  29. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/files/read.py +2 -2
  30. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/installer.py +25 -5
  31. machineconfig-5.18/src/machineconfig/utils/links.py +302 -0
  32. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/procs.py +4 -4
  33. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/scheduler.py +10 -14
  34. {machineconfig-5.16 → machineconfig-5.18/src/machineconfig.egg-info}/PKG-INFO +1 -1
  35. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig.egg-info/SOURCES.txt +9 -19
  36. machineconfig-5.16/src/machineconfig/__init__.py +0 -29
  37. machineconfig-5.16/src/machineconfig/profile/create.py +0 -303
  38. machineconfig-5.16/src/machineconfig/scripts/python/ai/solutions/_shared.py +0 -5
  39. machineconfig-5.16/src/machineconfig/scripts/python/devops.py +0 -106
  40. machineconfig-5.16/src/machineconfig/scripts/windows/dotfile.ps1 +0 -1
  41. machineconfig-5.16/src/machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
  42. machineconfig-5.16/src/machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
  43. machineconfig-5.16/src/machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
  44. machineconfig-5.16/src/machineconfig/setup_windows/symlinks.ps1 +0 -5
  45. machineconfig-5.16/src/machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
  46. machineconfig-5.16/src/machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
  47. machineconfig-5.16/src/machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
  48. machineconfig-5.16/src/machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
  49. machineconfig-5.16/src/machineconfig/setup_windows/wsl_refresh.ps1 +0 -8
  50. machineconfig-5.16/src/machineconfig/setup_windows/wt_and_pwsh.ps1 +0 -9
  51. machineconfig-5.16/src/machineconfig/utils/ai/__init__.py +0 -0
  52. machineconfig-5.16/src/machineconfig/utils/installer_utils/__init__.py +0 -0
  53. machineconfig-5.16/src/machineconfig/utils/links.py +0 -278
  54. {machineconfig-5.16 → machineconfig-5.18}/MANIFEST.in +0 -0
  55. {machineconfig-5.16 → machineconfig-5.18}/README.md +0 -0
  56. {machineconfig-5.16 → machineconfig-5.18}/setup.cfg +0 -0
  57. /machineconfig-5.16/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py → /machineconfig-5.18/src/machineconfig/__init__.py +0 -0
  58. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/__init__.py +0 -0
  59. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/cloud_manager.py +0 -0
  60. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/data_transfer.py +0 -0
  61. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/distribute.py +0 -0
  62. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/file_manager.py +0 -0
  63. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/job_params.py +0 -0
  64. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/loader_runner.py +0 -0
  65. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/remote_machine.py +0 -0
  66. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/run_cloud.py +0 -0
  67. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/run_cluster.py +0 -0
  68. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/run_remote.py +0 -0
  69. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/script_execution.py +0 -0
  70. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/remote/script_notify_upon_completion.py +0 -0
  71. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/__init__.py +0 -0
  72. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/ffile.py +0 -0
  73. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/utils/enhanced_command_runner.py +0 -0
  74. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/utils/load_balancer.py +0 -0
  75. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/utils/load_balancer_helper.py +0 -0
  76. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_remote.py +0 -0
  77. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +0 -0
  78. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +0 -0
  79. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +0 -0
  80. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +0 -0
  81. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_local.py +0 -0
  82. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_remote.py +0 -0
  83. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_remote_manager.py +0 -0
  84. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +0 -0
  85. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +0 -0
  86. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +0 -0
  87. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +0 -0
  88. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +0 -0
  89. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +0 -0
  90. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/templates/__init__.py +0 -0
  91. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/cluster/templates/cli_trogon.py +0 -0
  92. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/__init__.py +0 -0
  93. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/__init__.py +0 -0
  94. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom/gh.py +0 -0
  95. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom/hx.py +0 -0
  96. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/__init__.py +0 -0
  97. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/alacritty.py +0 -0
  98. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/brave.py +0 -0
  99. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/bypass_paywall.py +0 -0
  100. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/code.py +0 -0
  101. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/cursor.py +0 -0
  102. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/espanso.py +0 -0
  103. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/goes.py +0 -0
  104. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/lvim.py +0 -0
  105. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/nerdfont.py +0 -0
  106. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +0 -0
  107. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/redis.py +0 -0
  108. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/wezterm.py +0 -0
  109. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/custom_dev/winget.py +0 -0
  110. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/installer_data.json +0 -0
  111. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/brave.sh +0 -0
  112. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/docker.sh +0 -0
  113. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/docker_start.sh +0 -0
  114. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/edge.sh +0 -0
  115. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/nerdfont.sh +0 -0
  116. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/ngrok.sh +0 -0
  117. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -0
  118. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/q.sh +0 -0
  119. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/redis.sh +0 -0
  120. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -0
  121. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/vscode.sh +0 -0
  122. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/warp-cli.sh +0 -0
  123. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/linux_scripts/wezterm.sh +0 -0
  124. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/package_groups.py +0 -0
  125. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +0 -0
  126. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/linux/msc/cli_agents.sh +0 -0
  127. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/linux/msc/lid.sh +0 -0
  128. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/linux/msc/network.sh +0 -0
  129. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/python/__init__.py +0 -0
  130. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/python/check_installations.py +0 -0
  131. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/python/python_ve_symlink.py +0 -0
  132. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/python/vscode/api.py +0 -0
  133. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/python/vscode/sync_code.py +0 -0
  134. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -0
  135. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -0
  136. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -0
  137. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
  138. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
  139. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/start_terminal.ps1 +0 -0
  140. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/jobs/windows/startup_file.cmd +0 -0
  141. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/logger.py +0 -0
  142. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/__init__.py +0 -0
  143. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/records/generic/shares.toml +0 -0
  144. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/records/linux/apps_summary_report.csv +0 -0
  145. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/records/linux/apps_summary_report.md +0 -0
  146. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/records/windows/apps_summary_report.csv +0 -0
  147. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/profile/records/windows/apps_summary_report.md +0 -0
  148. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/__init__.py +0 -0
  149. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/cloud/init.sh +0 -0
  150. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/agents +0 -0
  151. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/choose_wezterm_theme +0 -0
  152. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/cloud_copy +0 -0
  153. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/cloud_mount +0 -0
  154. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/cloud_repo_sync +0 -0
  155. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/cloud_sync +0 -0
  156. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/croshell +0 -0
  157. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/devops +0 -0
  158. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fire +0 -0
  159. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/ftpx +0 -0
  160. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fzf2g +0 -0
  161. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fzfag +0 -0
  162. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fzffg +0 -0
  163. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fzfg +0 -0
  164. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/fzfrga +0 -0
  165. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/gh_models +0 -0
  166. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/initai +0 -0
  167. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/kill_process +0 -0
  168. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/mount_drive +0 -0
  169. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/mount_nfs +0 -0
  170. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/mount_nw_drive +0 -0
  171. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/mount_smb +0 -0
  172. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/scheduler +0 -0
  173. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/sessions +0 -0
  174. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/share_cloud.sh +0 -0
  175. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/share_nfs +0 -0
  176. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/share_smb +0 -0
  177. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/skrg +0 -0
  178. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/start_docker +0 -0
  179. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/start_slidev +0 -0
  180. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/start_terminals +0 -0
  181. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/switch_ip +0 -0
  182. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/warp-cli.sh +0 -0
  183. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/wifi_conn +0 -0
  184. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/linux/z_ls +0 -0
  185. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/__init__.py +0 -0
  186. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/agents.py +0 -0
  187. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/__init__.py +0 -0
  188. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/generate_files.py +0 -0
  189. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/initai.py +0 -0
  190. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +0 -0
  191. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +0 -0
  192. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/__init__.py +0 -0
  193. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/claude/claude.py +0 -0
  194. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/cline/cline.py +0 -0
  195. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Thinking-Beast-Mode.chatmode.md +0 -0
  196. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +0 -0
  197. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/deepResearch.chatmode.md +0 -0
  198. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  199. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/privacy.md +0 -0
  200. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -0
  201. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  202. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/crush/crush.json +0 -0
  203. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/crush/crush.py +0 -0
  204. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/crush/privacy.md +0 -0
  205. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  206. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/gemini/gemini.py +0 -0
  207. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/gemini/settings.json +0 -0
  208. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  209. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.json +0 -0
  210. /machineconfig-5.16/src/machineconfig/setup_windows/symlinks2linux.ps1 → /machineconfig-5.18/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  211. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/choose_wezterm_theme.py +0 -0
  212. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/cloud_copy.py +0 -0
  213. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/cloud_manager.py +0 -0
  214. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/cloud_mount.py +0 -0
  215. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/cloud_repo_sync.py +0 -0
  216. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/cloud_sync.py +0 -0
  217. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/count_lines.py +0 -0
  218. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/croshell.py +0 -0
  219. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/devops_add_identity.py +0 -0
  220. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/devops_add_ssh_key.py +0 -0
  221. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/devops_backup_retrieve.py +0 -0
  222. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/devops_update_repos.py +0 -0
  223. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_agents_help_launch.py +0 -0
  224. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_agents_help_search.py +0 -0
  225. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_agents_helper_types.py +0 -0
  226. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_agents_load_balancer.py +0 -0
  227. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_jobs.py +0 -0
  228. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_jobs_args_helper.py +0 -0
  229. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_jobs_route_helper.py +0 -0
  230. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/fire_jobs_streamlit_helper.py +0 -0
  231. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/ftpx.py +0 -0
  232. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/get_zellij_cmd.py +0 -0
  233. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/gh_models.py +0 -0
  234. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/__init__.py +0 -0
  235. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/cloud_helpers.py +0 -0
  236. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/helpers2.py +0 -0
  237. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/helpers4.py +0 -0
  238. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/helpers5.py +0 -0
  239. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -0
  240. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/mount_nfs.py +0 -0
  241. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/mount_nw_drive.py +0 -0
  242. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/mount_ssh.py +0 -0
  243. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/onetimeshare.py +0 -0
  244. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/pomodoro.py +0 -0
  245. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos.py +0 -0
  246. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos_helper.py +0 -0
  247. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos_helper_action.py +0 -0
  248. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos_helper_clone.py +0 -0
  249. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos_helper_record.py +0 -0
  250. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/repos_helper_update.py +0 -0
  251. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/scheduler.py +0 -0
  252. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/sessions.py +0 -0
  253. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/snapshot.py +0 -0
  254. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/start_slidev.py +0 -0
  255. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/start_terminals.py +0 -0
  256. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/t4.py +0 -0
  257. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/viewer.py +0 -0
  258. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/viewer_template.py +0 -0
  259. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/wifi_conn.py +0 -0
  260. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/python/wsl_windows_transfer.py +0 -0
  261. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/agents.ps1 +0 -0
  262. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -0
  263. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/cloud_copy.ps1 +0 -0
  264. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/cloud_mount.ps1 +0 -0
  265. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -0
  266. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/cloud_sync.ps1 +0 -0
  267. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/croshell.ps1 +0 -0
  268. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/devops.ps1 +0 -0
  269. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/fire.ps1 +0 -0
  270. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/ftpx.ps1 +0 -0
  271. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/fzfb.ps1 +0 -0
  272. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/fzfg.ps1 +0 -0
  273. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/fzfrga.bat +0 -0
  274. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/gpt.ps1 +0 -0
  275. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/grep.ps1 +0 -0
  276. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/initai.ps1 +0 -0
  277. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/kill_process.ps1 +0 -0
  278. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/mount_nfs.ps1 +0 -0
  279. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/mount_nw.ps1 +0 -0
  280. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/mount_smb.ps1 +0 -0
  281. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/mount_ssh.ps1 +0 -0
  282. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/nano.ps1 +0 -0
  283. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/pomodoro.ps1 +0 -0
  284. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/reload_path.ps1 +0 -0
  285. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/scheduler.ps1 +0 -0
  286. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/sessions.ps1 +0 -0
  287. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/share_cloud.cmd +0 -0
  288. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/share_nfs.ps1 +0 -0
  289. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/share_smb.ps1 +0 -0
  290. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/snapshot.ps1 +0 -0
  291. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/start_slidev.ps1 +0 -0
  292. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/start_terminals.ps1 +0 -0
  293. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/unlock_bitlocker.ps1 +0 -0
  294. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/wifi_conn.ps1 +0 -0
  295. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -0
  296. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -0
  297. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/__init__.py +0 -0
  298. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/broot/br.sh +0 -0
  299. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/broot/brootcd.ps1 +0 -0
  300. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/broot/conf.toml +0 -0
  301. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/glow/glow.yml +0 -0
  302. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  303. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/helix/config.toml +0 -0
  304. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/helix/languages.toml +0 -0
  305. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/keras/keras.json +0 -0
  306. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/keyboard/espanso/config/default.yml +0 -0
  307. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/keyboard/espanso/match/base.yml +0 -0
  308. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
  309. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
  310. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
  311. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
  312. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/open.sh +0 -0
  313. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
  314. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
  315. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
  316. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/colors +0 -0
  317. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/cleaner.sh +0 -0
  318. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -0
  319. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  320. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/lfcd.sh +0 -0
  321. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/previewer.sh +0 -0
  322. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/exe/previewer_archive.sh +0 -0
  323. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/icons +0 -0
  324. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/linux/lfrc +0 -0
  325. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
  326. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  327. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  328. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
  329. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
  330. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  331. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
  332. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/cd_tere.ps1 +0 -0
  333. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/cd_zoxide.ps1 +0 -0
  334. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  335. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/colors +0 -0
  336. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -0
  337. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/icons +0 -0
  338. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  339. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/lfcd.ps1 +0 -0
  340. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/lfrc +0 -0
  341. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/mkdir.ps1 +0 -0
  342. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/mkfile.ps1 +0 -0
  343. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/previewer.ps1 +0 -0
  344. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lf/windows/tst.ps1 +0 -0
  345. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/linters/.flake8 +0 -0
  346. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/linters/.mypy.ini +0 -0
  347. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/linters/.pylintrc +0 -0
  348. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/linters/.ruff.toml +0 -0
  349. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lvim/linux/config.lua +0 -0
  350. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -0
  351. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lvim/windows/config.lua +0 -0
  352. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  353. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/mprocs/windows/mprocs.yaml +0 -0
  354. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/mprocs/windows/other +0 -0
  355. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/pistol/pistol.conf +0 -0
  356. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/presenterm/config.yaml +0 -0
  357. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/procs/.procs.toml +0 -0
  358. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/pudb/pudb.cfg +0 -0
  359. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/rofi/config.rasi +0 -0
  360. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/rofi/config_default.rasi +0 -0
  361. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/alacritty/alacritty.toml +0 -0
  362. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
  363. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/bash/init.sh +0 -0
  364. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/hyper/.hyper.js +0 -0
  365. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/ipy/profiles/default/__init__.py +0 -0
  366. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
  367. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  368. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/kitty/kitty.conf +0 -0
  369. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/nushell/config.nu +0 -0
  370. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/nushell/env.nu +0 -0
  371. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/pwsh/init.ps1 +0 -0
  372. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
  373. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/starship/starship.toml +0 -0
  374. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/vtm/settings.xml +0 -0
  375. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/wezterm/wezterm.lua +0 -0
  376. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/shells/wt/settings.json +0 -0
  377. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/streamlit/config.toml +0 -0
  378. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/svim/linux/init.toml +0 -0
  379. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/svim/windows/init.toml +0 -0
  380. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/tere/terecd.ps1 +0 -0
  381. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/tere/terecd.sh +0 -0
  382. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/tmux/.tmate.conf +0 -0
  383. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/tmux/.tmux.conf +0 -0
  384. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/wsl/.wslconfig +0 -0
  385. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/yazi/keymap.toml +0 -0
  386. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/yazi/theme.toml +0 -0
  387. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/yazi/yazi.toml +0 -0
  388. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zed/settings.json +0 -0
  389. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/commands/monitor +0 -0
  390. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/commands/standard_panes +0 -0
  391. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/config.kdl +0 -0
  392. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/config.orig.kdl +0 -0
  393. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/layouts/hist +0 -0
  394. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/layouts/panes.kdl +0 -0
  395. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/layouts/st.kdl +0 -0
  396. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/layouts/st2.kdl +0 -0
  397. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/settings/zellij/layouts/stacked_panes.kdl +0 -0
  398. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/apps.sh +0 -0
  399. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/apps_desktop.sh +0 -0
  400. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/apps_gui.sh +0 -0
  401. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/nix/cli_installation.sh +0 -0
  402. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -0
  403. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/repos.sh +0 -0
  404. {machineconfig-5.16/src/machineconfig/setup_linux → machineconfig-5.18/src/machineconfig/setup_linux/ssh}/openssh_wsl.sh +0 -0
  405. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/ve.sh +0 -0
  406. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_linux/web_shortcuts/android.sh +0 -0
  407. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/others/docker.ps1 +0 -0
  408. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/others/obs.ps1 +0 -0
  409. /machineconfig-5.16/src/machineconfig/setup_windows/quirks.ps1 → /machineconfig-5.18/src/machineconfig/setup_windows/others/power_options.ps1 +0 -0
  410. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/repos.ps1 +0 -0
  411. {machineconfig-5.16/src/machineconfig/setup_windows → machineconfig-5.18/src/machineconfig/setup_windows/ssh}/openssh-server.ps1 +0 -0
  412. {machineconfig-5.16/src/machineconfig/setup_windows → machineconfig-5.18/src/machineconfig/setup_windows/ssh}/openssh-server_add-sshkey.ps1 +0 -0
  413. {machineconfig-5.16/src/machineconfig/setup_windows → machineconfig-5.18/src/machineconfig/setup_windows/ssh}/openssh-server_add_identity.ps1 +0 -0
  414. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/ve.ps1 +0 -0
  415. {machineconfig-5.16/src/machineconfig/setup_linux → machineconfig-5.18/src/machineconfig/setup_windows/wt_and_pwsh}/__init__.py +0 -0
  416. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +0 -0
  417. {machineconfig-5.16/src/machineconfig/setup_windows → machineconfig-5.18/src/machineconfig/utils}/__init__.py +0 -0
  418. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/accessories.py +0 -0
  419. {machineconfig-5.16/src/machineconfig/setup_windows/wt_and_pwsh → machineconfig-5.18/src/machineconfig/utils/ai}/__init__.py +0 -0
  420. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/ai/generate_file_checklist.py +0 -0
  421. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/cloud/onedrive/setup_oauth.py +0 -0
  422. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/cloud/onedrive/transaction.py +0 -0
  423. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/files/ascii_art.py +0 -0
  424. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/files/headers.py +0 -0
  425. {machineconfig-5.16/src/machineconfig/utils → machineconfig-5.18/src/machineconfig/utils/installer_utils}/__init__.py +0 -0
  426. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/installer_utils/github_release_bulk.py +0 -0
  427. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/installer_utils/installer.py +0 -0
  428. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/installer_utils/installer_abc.py +0 -0
  429. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/installer_utils/installer_class.py +0 -0
  430. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/io.py +0 -0
  431. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/notifications.py +0 -0
  432. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/options.py +0 -0
  433. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/path_extended.py +0 -0
  434. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/path_helper.py +0 -0
  435. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/scheduling.py +0 -0
  436. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/schemas/fire_agents/fire_agents_input.py +0 -0
  437. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/schemas/installer/installer_types.py +0 -0
  438. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/schemas/layouts/layout_types.py +0 -0
  439. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/schemas/repos/repos_types.py +0 -0
  440. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/source_of_truth.py +0 -0
  441. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/ssh.py +0 -0
  442. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/terminal.py +0 -0
  443. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/upgrade_packages.py +0 -0
  444. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig/utils/ve.py +0 -0
  445. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig.egg-info/dependency_links.txt +0 -0
  446. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig.egg-info/entry_points.txt +0 -0
  447. {machineconfig-5.16 → machineconfig-5.18}/src/machineconfig.egg-info/requires.txt +0 -0
  448. {machineconfig-5.16 → machineconfig-5.18}/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: 5.16
3
+ Version: 5.18
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "machineconfig"
9
- version = "5.16"
9
+ version = "5.18"
10
10
  description = "Dotfiles management package"
11
11
  readme = "README.md"
12
12
  license = {text = "Apache 2.0"}
@@ -2,6 +2,9 @@
2
2
  """
3
3
  Windows Terminal local layout generator and session manager.
4
4
  Equivalent to zellij_local.py but for Windows Terminal.
5
+
6
+ https://github.com/ruby9455/app_management/tree/main/app_management
7
+
5
8
  """
6
9
 
7
10
  import shlex
@@ -13,11 +16,13 @@ import platform
13
16
  from typing import Dict, List, Optional, Any
14
17
  from pathlib import Path
15
18
  import logging
19
+ from rich.console import Console
16
20
 
17
21
  from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
18
22
 
19
23
  logging.basicConfig(level=logging.INFO)
20
24
  logger = logging.getLogger(__name__)
25
+ console = Console()
21
26
  TMP_LAYOUT_DIR = Path.home().joinpath("tmp_results", "session_manager", "wt", "layout_manager")
22
27
 
23
28
  # Check if we're on Windows
@@ -341,7 +346,7 @@ try {{
341
346
  for proc in cmd_status["processes"][:2]: # Show first 2 processes
342
347
  pid = proc.get("pid", "Unknown")
343
348
  name = proc.get("name", "Unknown")
344
- print(f" └─ PID {pid}: {name}")
349
+ console.print(f" [dim]└─[/dim] PID {pid}: {name}")
345
350
  print()
346
351
 
347
352
  print("=" * 80)
@@ -6,6 +6,7 @@ import logging
6
6
  import subprocess
7
7
  from pathlib import Path
8
8
  from typing import TypedDict, Optional, Dict, List, Any
9
+ from rich.console import Console
9
10
  from machineconfig.utils.scheduler import Scheduler
10
11
  from machineconfig.cluster.sessions_managers.wt_local import WTLayoutGenerator
11
12
  from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
@@ -21,6 +22,7 @@ class WTSessionReport(TypedDict):
21
22
 
22
23
  logging.basicConfig(level=logging.INFO)
23
24
  logger = logging.getLogger(__name__)
25
+ console = Console()
24
26
 
25
27
  TMP_SERIALIZATION_DIR = Path.home().joinpath("tmp_results", "session_manager", "wt", "local_manager")
26
28
 
@@ -220,11 +222,11 @@ class WTLocalManager:
220
222
  cmd_text = cmd_status.get("command", "Unknown")[:50]
221
223
  if len(cmd_status.get("command", "")) > 50:
222
224
  cmd_text += "..."
223
- print(f" {status_icon} {tab_name}: {cmd_text}")
225
+ console.print(f" {status_icon} {tab_name}: {cmd_text}")
224
226
 
225
227
  if cmd_status.get("processes"):
226
228
  for proc in cmd_status["processes"][:2]: # Show first 2 processes
227
- print(f" └─ PID {proc['pid']}: {proc['name']}")
229
+ console.print(f" [dim]└─[/dim] PID {proc['pid']}: {proc['name']}")
228
230
  print()
229
231
 
230
232
  print("=" * 80)
@@ -4,6 +4,7 @@ import uuid
4
4
  import logging
5
5
  from pathlib import Path
6
6
  from typing import Optional, Any
7
+ from rich.console import Console
7
8
  from machineconfig.utils.scheduler import Scheduler
8
9
  from machineconfig.cluster.sessions_managers.wt_local import run_command_in_wt_tab
9
10
  from machineconfig.cluster.sessions_managers.wt_remote import WTRemoteLayoutGenerator
@@ -13,6 +14,7 @@ TMP_SERIALIZATION_DIR = Path.home().joinpath("tmp_results", "session_manager", "
13
14
 
14
15
  # Module-level logger to be used throughout this module
15
16
  logger = logging.getLogger(__name__)
17
+ console = Console()
16
18
 
17
19
 
18
20
  class WTSessionManager:
@@ -315,11 +317,11 @@ class WTSessionManager:
315
317
  cmd_text = cmd_status.get("command", "Unknown")[:50]
316
318
  if len(cmd_status.get("command", "")) > 50:
317
319
  cmd_text += "..."
318
- print(f" {status_icon} {tab_name}: {cmd_text}")
320
+ console.print(f" {status_icon} {tab_name}: {cmd_text}")
319
321
 
320
322
  if cmd_status.get("processes"):
321
323
  for proc in cmd_status["processes"][:2]: # Show first 2 processes
322
- print(f" └─ PID {proc.get('pid', 'Unknown')}: {proc.get('name', 'Unknown')}")
324
+ console.print(f" [dim]└─[/dim] PID {proc.get('pid', 'Unknown')}: {proc.get('name', 'Unknown')}")
323
325
  print()
324
326
 
325
327
  print("=" * 80)
@@ -5,11 +5,13 @@ Status reporting utilities for Windows Terminal layouts and sessions.
5
5
 
6
6
  import logging
7
7
  from typing import Dict, Any, List
8
+ from rich.console import Console
8
9
  from machineconfig.cluster.sessions_managers.wt_utils.process_monitor import WTProcessMonitor
9
10
  from machineconfig.cluster.sessions_managers.wt_utils.session_manager import WTSessionManager
10
11
  from machineconfig.utils.schemas.layouts.layout_types import TabConfig
11
12
 
12
13
  logger = logging.getLogger(__name__)
14
+ console = Console()
13
15
 
14
16
 
15
17
  class WTStatusReporter:
@@ -82,11 +84,11 @@ class WTStatusReporter:
82
84
  for proc in processes:
83
85
  pid = proc.get("pid", "Unknown")
84
86
  name = proc.get("name", "Unknown")
85
- print(f" └─ PID {pid}: {name}")
87
+ console.print(f" [dim]└─[/dim] PID {pid}: {name}")
86
88
 
87
89
  if len(cmd_status["processes"]) > 3:
88
90
  remaining = len(cmd_status["processes"]) - 3
89
- print(f" └─ ... and {remaining} more processes")
91
+ console.print(f" [dim]└─[/dim] ... and {remaining} more processes")
90
92
 
91
93
  if cmd_status.get("error"):
92
94
  print(f" Error: {cmd_status['error']}")
@@ -245,7 +245,7 @@ class ZellijLocalManager:
245
245
 
246
246
  if cmd_status.get("processes"):
247
247
  for proc in cmd_status["processes"][:2]: # Show first 2 processes
248
- print(f" └─ PID {proc['pid']}: {proc['name']} ({proc['status']})")
248
+ console.print(f" [dim]└─[/dim] PID {proc['pid']}: {proc['name']} ({proc['status']})")
249
249
  print()
250
250
 
251
251
  print("=" * 80)
@@ -5,11 +5,13 @@ Status reporting utilities for Zellij remote layouts.
5
5
 
6
6
  import logging
7
7
  from typing import Dict, Any
8
+ from rich.console import Console
8
9
  from machineconfig.cluster.sessions_managers.zellij_utils.process_monitor import ProcessMonitor
9
10
  from machineconfig.cluster.sessions_managers.zellij_utils.session_manager import SessionManager
10
11
  from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
11
12
 
12
13
  logger = logging.getLogger(__name__)
14
+ console = Console()
13
15
 
14
16
 
15
17
  class StatusReporter:
@@ -70,7 +72,7 @@ class StatusReporter:
70
72
  print(f"✅ {tab_name}: Running on {remote_name}")
71
73
  if cmd_status.get("processes"):
72
74
  for proc in cmd_status["processes"][:2]: # Show first 2 processes
73
- print(f" └─ PID {proc['pid']}: {proc['name']} ({proc['status']})")
75
+ console.print(f" [dim]└─[/dim] PID {proc['pid']}: {proc['name']} ({proc['status']})")
74
76
  else:
75
77
  print(f"❌ {tab_name}: Not running on {remote_name}")
76
78
  print(f" Command: {cmd_status.get('command', 'Unknown')}")
@@ -0,0 +1,271 @@
1
+ """
2
+ This script Takes away all config files from the computer, place them in one directory
3
+ `dotfiles`, and create symlinks to those files from thier original locations.
4
+
5
+ """
6
+
7
+ from rich.console import Console
8
+ from rich.panel import Panel
9
+ from rich.pretty import Pretty
10
+ from rich.text import Text
11
+ from rich.table import Table
12
+
13
+ from machineconfig.utils.path_extended import PathExtended
14
+ from machineconfig.utils.links import symlink_map, copy_map
15
+ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
16
+
17
+ import platform
18
+ import subprocess
19
+ import tomllib
20
+ from typing import Optional, Any, TypedDict, Literal
21
+
22
+
23
+ system = platform.system() # Linux or Windows
24
+ ERROR_LIST: list[Any] = [] # append to this after every exception captured.
25
+ SYSTEM = system.lower()
26
+
27
+ console = Console()
28
+
29
+
30
+ def get_other_systems(current_system: str) -> list[str]:
31
+ all_systems = ["linux", "windows", "darwin"]
32
+ return [s for s in all_systems if s != current_system.lower()]
33
+
34
+
35
+ OTHER_SYSTEMS = get_other_systems(SYSTEM)
36
+
37
+
38
+ class Base(TypedDict):
39
+ this: str
40
+ to_this: str
41
+ contents: Optional[bool]
42
+ copy: Optional[bool]
43
+
44
+ class ConfigMapper(TypedDict):
45
+ file_name: str
46
+ config_file_default_path: str
47
+ self_managed_config_file_path: str
48
+ contents: Optional[bool]
49
+ copy: Optional[bool]
50
+ class MapperFileData(TypedDict):
51
+ public: dict[str, list[ConfigMapper]]
52
+ private: dict[str, list[ConfigMapper]]
53
+ def read_mapper() -> MapperFileData:
54
+ mapper_data: dict[str, dict[str, Base]] = tomllib.loads(LIBRARY_ROOT.joinpath("profile/mapper.toml").read_text(encoding="utf-8"))
55
+ public: dict[str, list[ConfigMapper]] = {}
56
+ private: dict[str, list[ConfigMapper]] = {}
57
+ for program_key, program_map in mapper_data.items():
58
+ for file_name, file_base in program_map.items():
59
+ file_map: ConfigMapper = {
60
+ "file_name": file_name,
61
+ "config_file_default_path": file_base["this"],
62
+ "self_managed_config_file_path": file_base["to_this"],
63
+ "contents": file_base.get("contents"),
64
+ "copy": file_base.get("copy"),
65
+ }
66
+ if "LIBRARY_ROOT" in file_map["self_managed_config_file_path"]:
67
+ if program_key not in public:
68
+ public[program_key] = []
69
+ public[program_key].append(file_map)
70
+ else:
71
+ if program_key not in private:
72
+ private[program_key] = []
73
+ private[program_key].append(file_map)
74
+ return {"public": public, "private": private}
75
+
76
+
77
+ class OperationRecord(TypedDict):
78
+ program: str
79
+ file_key: str
80
+ source: str
81
+ target: str
82
+ operation: str
83
+ action: Literal[
84
+ "already_linked",
85
+ "relinking",
86
+ "fixing_broken_link",
87
+ "identical_files",
88
+ "backing_up_source",
89
+ "backing_up_target",
90
+ "relinking_to_new_target",
91
+ "moving_to_target",
92
+ "new_link",
93
+ "new_link_and_target",
94
+ "linking",
95
+ "copying",
96
+ "error"
97
+ ]
98
+ details: str
99
+ status: str
100
+
101
+
102
+ def apply_mapper(mapper_data: dict[str, list[ConfigMapper]],
103
+ on_conflict: Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"],
104
+ method: Literal["symlink", "copy"]
105
+ ):
106
+ operation_records: list[OperationRecord] = []
107
+
108
+ import os
109
+ if os.name == "nt":
110
+ import ctypes
111
+ try:
112
+ is_admin = ctypes.windll.shell32.IsUserAnAdmin()
113
+ except Exception:
114
+ is_admin = False
115
+ total_length = sum(len(item) for item in mapper_data.values())
116
+ if not is_admin and method == "symlink" and total_length > 5:
117
+ warning_body = "\n".join([
118
+ "[bold yellow]Administrator privileges required[/]",
119
+ "Run the terminal as admin and try again to avoid repeated elevation prompts.",
120
+ ])
121
+ console.print(
122
+ Panel.fit(
123
+ warning_body,
124
+ title="⚠️ Permission Needed",
125
+ border_style="yellow",
126
+ padding=(1, 2),
127
+ )
128
+ )
129
+ raise RuntimeError("Run terminal as admin and try again, otherwise, there will be too many popups for admin requests and no chance to terminate the program.")
130
+
131
+ for program_name, program_files in mapper_data.items():
132
+ console.rule(f"🔄 Processing [bold]{program_name}[/] symlinks", style="cyan")
133
+ for a_mapper in program_files:
134
+ config_file_default_path = PathExtended(a_mapper["config_file_default_path"])
135
+ self_managed_config_file_path = PathExtended(a_mapper["self_managed_config_file_path"].replace("LIBRARY_ROOT", LIBRARY_ROOT.as_posix()))
136
+
137
+ # Determine whether to use copy or symlink
138
+ use_copy = method == "copy" or "copy" in a_mapper
139
+
140
+ if "contents" in a_mapper:
141
+ try:
142
+ targets = list(self_managed_config_file_path.expanduser().search("*"))
143
+ for a_target in targets:
144
+ if use_copy:
145
+ result = copy_map(config_file_default_path=config_file_default_path.joinpath(a_target.name), self_managed_config_file_path=a_target, on_conflict=on_conflict)
146
+ operation_type = "contents_copy"
147
+ else:
148
+ result = symlink_map(config_file_default_path=config_file_default_path.joinpath(a_target.name), self_managed_config_file_path=a_target, on_conflict=on_conflict)
149
+ operation_type = "contents_symlink"
150
+ operation_records.append({
151
+ "program": program_name,
152
+ "file_key": a_mapper["file_name"],
153
+ "source": str(config_file_default_path.joinpath(a_target.name)),
154
+ "target": str(a_target),
155
+ "operation": operation_type,
156
+ "action": result["action"],
157
+ "details": result["details"],
158
+ "status": "success"
159
+ })
160
+ except Exception as ex:
161
+ console.print(f"❌ [red]Config error[/red]: {program_name} | {a_mapper['file_name']} | missing keys 'config_file_default_path ==> self_managed_config_file_path'. {ex}")
162
+ operation_records.append({
163
+ "program": program_name,
164
+ "file_key": a_mapper["file_name"],
165
+ "source": str(config_file_default_path),
166
+ "target": str(self_managed_config_file_path),
167
+ "operation": "contents_symlink" if not use_copy else "contents_copy",
168
+ "action": "error",
169
+ "details": f"Failed to process contents: {str(ex)}",
170
+ "status": f"error: {str(ex)}"
171
+ })
172
+ else:
173
+ try:
174
+ if use_copy:
175
+ result = copy_map(config_file_default_path=config_file_default_path, self_managed_config_file_path=self_managed_config_file_path, on_conflict=on_conflict)
176
+ operation_type = "copy"
177
+ else:
178
+ result = symlink_map(config_file_default_path=config_file_default_path, self_managed_config_file_path=self_managed_config_file_path, on_conflict=on_conflict)
179
+ operation_type = "symlink"
180
+ operation_records.append({
181
+ "program": program_name,
182
+ "file_key": a_mapper["file_name"],
183
+ "source": str(config_file_default_path),
184
+ "target": str(self_managed_config_file_path),
185
+ "operation": operation_type,
186
+ "action": result["action"],
187
+ "details": result["details"],
188
+ "status": "success"
189
+ })
190
+ except Exception as ex:
191
+ console.print(f"❌ [red]Config error[/red]: {program_name} | {a_mapper['file_name']} | missing keys 'config_file_default_path ==> self_managed_config_file_path'. {ex}")
192
+ operation_records.append({
193
+ "program": program_name,
194
+ "file_key": a_mapper["file_name"],
195
+ "source": str(config_file_default_path),
196
+ "target": str(self_managed_config_file_path),
197
+ "operation": "symlink" if not use_copy else "copy",
198
+ "action": "error",
199
+ "details": f"Failed to create {'symlink' if not use_copy else 'copy'}: {str(ex)}",
200
+ "status": f"error: {str(ex)}"
201
+ })
202
+
203
+ if program_name == "ssh" and system == "Linux": # permissions of ~/dotfiles/.ssh should be adjusted
204
+ try:
205
+ console.print("\n[bold]🔒 Setting secure permissions for SSH files...[/bold]")
206
+ # run_shell_script("sudo chmod 600 $HOME/.ssh/*")
207
+ # run_shell_script("sudo chmod 700 $HOME/.ssh")
208
+
209
+ subprocess.run("chmod 700 ~/.ssh/", check=True)
210
+ subprocess.run("chmod 700 ~/dotfiles/creds/.ssh/", check=True) # may require sudo
211
+ subprocess.run("chmod 600 ~/dotfiles/creds/.ssh/*", check=True)
212
+ console.print("[green]✅ SSH permissions set successfully[/green]")
213
+ except Exception as e:
214
+ ERROR_LIST.append(e)
215
+ console.print(f"❌ [red]Error setting SSH permissions[/red]: {e}")
216
+
217
+ if system == "Linux":
218
+ console.print("\n[bold]📜 Setting executable permissions for scripts...[/bold]")
219
+ subprocess.run(f"chmod +x {LIBRARY_ROOT.joinpath(f'scripts/{system.lower()}')} -R", shell=True, capture_output=True, text=True)
220
+ console.print("[green]✅ Script permissions updated[/green]")
221
+
222
+ # Display operation summary table
223
+ if operation_records:
224
+ table = Table(title="🔗 Symlink Operations Summary", show_header=True, header_style="bold magenta")
225
+ table.add_column("Program", style="cyan", no_wrap=True)
226
+ table.add_column("File Key", style="blue", no_wrap=True)
227
+ table.add_column("Source", style="green")
228
+ table.add_column("Target", style="yellow")
229
+ table.add_column("Operation", style="magenta", no_wrap=True)
230
+ table.add_column("Action", style="red", no_wrap=True)
231
+ table.add_column("Details", style="white")
232
+ table.add_column("Status", style="red", no_wrap=True)
233
+
234
+ for record in operation_records:
235
+ status_style = "green" if record["status"] == "success" else "red"
236
+ action_style = "green" if record["action"] != "error" else "red"
237
+ table.add_row(
238
+ record["program"],
239
+ record["file_key"],
240
+ record["source"],
241
+ record["target"],
242
+ record["operation"],
243
+ f"[{action_style}]{record['action']}[/{action_style}]",
244
+ record["details"],
245
+ f"[{status_style}]{record['status']}[/{status_style}]"
246
+ )
247
+
248
+ console.print("\n")
249
+ console.print(table)
250
+
251
+ if len(ERROR_LIST) > 0:
252
+ console.print(
253
+ Panel(
254
+ Pretty(ERROR_LIST),
255
+ title="❗ Errors Encountered During Processing",
256
+ border_style="red",
257
+ padding=(1, 2),
258
+ )
259
+ )
260
+ else:
261
+ console.print(
262
+ Panel.fit(
263
+ Text("✅ All symlinks created successfully!", justify="center"),
264
+ title="Symlink Creation Complete",
265
+ border_style="green",
266
+ )
267
+ )
268
+
269
+
270
+ if __name__ == "__main__":
271
+ pass
@@ -0,0 +1,58 @@
1
+
2
+ import typer
3
+ from typing import Optional, Literal
4
+ from pathlib import Path
5
+
6
+
7
+ def main_public_from_parser(method: Literal["symlink", "copy"] = typer.Option(..., help="Method to use for setting up the config file."),
8
+ on_conflict: Literal["throwError", "overwriteDefaultPath", "backupDefaultPath"] = typer.Option(..., help="Action to take on conflict"),
9
+ which: Optional[str] = typer.Option(None, help="Specific items to process"),
10
+ interactive: bool = typer.Option(False, help="Run in interactive mode")):
11
+ """Terminology:
12
+ SOURCE = Self-Managed-Config-File-Path
13
+ TARGET = Config-File-Default-Path
14
+ For public config files, the source always exists, because we know it comes from machineconfig repo."""
15
+ from machineconfig.profile.create import ConfigMapper, read_mapper
16
+ if method == "symlink":
17
+ machineconfig_repo_path = Path.home().joinpath("code/machineconfig")
18
+ if not machineconfig_repo_path.exists() or not machineconfig_repo_path.is_dir():
19
+ raise FileNotFoundError(f"machineconfig repo not found at {machineconfig_repo_path}. Cannot create symlinks to non-existing source files.")
20
+
21
+ mapper_full = read_mapper()["public"]
22
+ if which is None:
23
+ assert interactive is True
24
+ from machineconfig.utils.options import choose_from_options
25
+ items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()), fzf=True, multi=True)
26
+ else:
27
+ assert interactive is False
28
+ if which == "all":
29
+ items_chosen = list(mapper_full.keys())
30
+ else:
31
+ items_chosen = which.split(",")
32
+ items_objections: dict[str, list[ConfigMapper]] = {item: mapper_full[item] for item in items_chosen if item in mapper_full}
33
+
34
+ from machineconfig.profile.create import apply_mapper
35
+ apply_mapper(mapper_data=items_objections, on_conflict=on_conflict, method=method)
36
+
37
+
38
+ def main_private_from_parser(method: Literal["symlink", "copy"] = typer.Option(..., help="Method to use for linking files"),
39
+ on_conflict: Literal["throwError", "overwriteSelfManaged", "backupSelfManaged", "overwriteDefaultPath", "backupDefaultPath"] = typer.Option("throwError", help="Action to take on conflict"),
40
+ which: Optional[str] = typer.Option(None, help="Specific items to process"),
41
+ interactive: bool = typer.Option(False, help="Run in interactive mode")):
42
+ from machineconfig.profile.create import ConfigMapper, read_mapper
43
+
44
+ mapper_full = read_mapper()["private"]
45
+ if which is None:
46
+ assert interactive is True
47
+ from machineconfig.utils.options import choose_from_options
48
+ items_chosen = choose_from_options(msg="Which symlink to create?", options=list(mapper_full.keys()), fzf=True, multi=True)
49
+ else:
50
+ assert interactive is False
51
+ if which == "all":
52
+ items_chosen = list(mapper_full.keys())
53
+ else:
54
+ items_chosen = which.split(",")
55
+ items_objections: dict[str, list[ConfigMapper]] = {item: mapper_full[item] for item in items_chosen if item in mapper_full}
56
+
57
+ from machineconfig.profile.create import apply_mapper
58
+ apply_mapper(mapper_data=items_objections, on_conflict=on_conflict, method=method)
@@ -1,7 +1,8 @@
1
1
  """shell"""
2
2
 
3
+ from typing import Literal
3
4
  from machineconfig.utils.path_extended import PathExtended
4
- from machineconfig.utils.source_of_truth import LIBRARY_ROOT
5
+ from machineconfig.utils.source_of_truth import LIBRARY_ROOT, CONFIG_PATH
5
6
 
6
7
  import platform
7
8
  import os
@@ -35,25 +36,60 @@ def get_shell_profile_path() -> PathExtended:
35
36
  return profile_path
36
37
 
37
38
 
38
- def create_default_shell_profile() -> None:
39
+ def create_default_shell_profile(method: Literal["copy", "reference"]) -> None:
40
+ if method == "reference":
41
+ machineconfig_repo_path = PathExtended.home().joinpath("code/machineconfig")
42
+ if not machineconfig_repo_path.exists() or not machineconfig_repo_path.is_dir():
43
+ raise FileNotFoundError(f"machineconfig repo not found at {machineconfig_repo_path}. Cannot create symlinks to non-existing source files.")
44
+
39
45
  shell_profile_path = get_shell_profile_path()
40
46
  shell_profile = shell_profile_path.read_text(encoding="utf-8")
47
+
41
48
  if system == "Windows":
42
- source = f""". {str(PathExtended(LIBRARY_ROOT).joinpath("settings/shells/pwsh/init.ps1").collapseuser()).replace("~", "$HOME")}"""
49
+ init_script = PathExtended(LIBRARY_ROOT).joinpath("settings/shells/pwsh/init.ps1")
50
+
51
+ init_script_copy_path = PathExtended(CONFIG_PATH).joinpath("profile/init.ps1").collapseuser()
52
+ init_script_copy_path.parent.mkdir(parents=True, exist_ok=True)
53
+ init_script.copy(path=init_script_copy_path, overwrite=True)
54
+
55
+ source_using_copy = f""". {str(init_script_copy_path).replace("~", "$HOME")}"""
56
+ source_using_reference = f""". {str(init_script.collapseuser()).replace("~", "$HOME")}"""
43
57
  else:
44
- source = f"""source {str(PathExtended(LIBRARY_ROOT).joinpath("settings/shells/bash/init.sh").collapseuser()).replace("~", "$HOME")}"""
45
- if source in shell_profile:
46
- console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
58
+ init_script = PathExtended(LIBRARY_ROOT).joinpath("settings/shells/bash/init.sh")
59
+ init_script_copy_path = PathExtended(CONFIG_PATH).joinpath("profile/init.sh").collapseuser()
60
+ init_script_copy_path.parent.mkdir(parents=True, exist_ok=True)
61
+ init_script.copy(path=init_script_copy_path, overwrite=True)
62
+
63
+ source_using_reference = f"""source {str(init_script.collapseuser()).replace("~", "$HOME")}"""
64
+ source_using_copy = f"""source {str(init_script_copy_path).replace("~", "$HOME")}"""
65
+
66
+ match method:
67
+ case "copy":
68
+ line_of_interest = source_using_copy
69
+ line_other = source_using_reference
70
+ case "reference":
71
+ line_of_interest = source_using_reference
72
+ line_other = source_using_copy
73
+
74
+ was_shell_updated = False
75
+ if line_other in shell_profile: # always remove this irrelevant line
76
+ shell_profile = shell_profile.replace(line_other, "")
77
+ was_shell_updated = True
78
+
79
+ if line_of_interest in shell_profile:
80
+ console.print(Panel("🔄 PROFILE | Skipping init script sourcing - already present in profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
47
81
  else:
48
82
  console.print(Panel("📝 PROFILE | Adding init script sourcing to profile", title="[bold blue]Profile[/bold blue]", border_style="blue"))
49
- shell_profile += "\n" + source + "\n"
83
+ shell_profile += "\n" + line_of_interest + "\n"
50
84
  if system == "Linux":
51
85
  result = subprocess.run(["cat", "/proc/version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False)
52
86
  if result.returncode == 0 and result.stdout:
53
87
  version_info = result.stdout.lower()
54
88
  if "microsoft" in version_info or "wsl" in version_info:
55
- shell_profile += "\ncd ~"
56
- console.print("📌 WSL detected - adding 'cd ~' to profile to avoid Windows filesystem")
89
+ shell_profile += "\ncd $HOME"
90
+ console.print("📌 WSL detected - adding 'cd $HOME' to profile to avoid Windows filesystem")
91
+ was_shell_updated = True
92
+ if was_shell_updated:
57
93
  shell_profile_path.parent.mkdir(parents=True, exist_ok=True)
58
94
  shell_profile_path.write_text(shell_profile, encoding="utf-8")
59
95
  console.print(Panel("✅ Profile updated successfully", title="[bold blue]Profile[/bold blue]", border_style="blue"))
@@ -0,0 +1,13 @@
1
+ from pathlib import Path
2
+ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
3
+
4
+ def get_generic_instructions_path() -> Path:
5
+ path = LIBRARY_ROOT.joinpath("scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md")
6
+ text = path.read_text(encoding="utf-8")
7
+ import platform
8
+ if platform.system().lower() == "windows":
9
+ text = text.replace("bash", "powershell").replace(".sh", ".ps1")
10
+ import tempfile
11
+ temp_path = Path(tempfile.gettempdir()).joinpath("generic_instructions.md")
12
+ temp_path.write_text(data=text, encoding="utf-8")
13
+ return temp_path
@@ -34,7 +34,7 @@ applyTo: "**/*.py"
34
34
  * when finished, run a linting static analysis check against files you touched, Any fix any mistakes.
35
35
  * Please run `uv run -m pyright $file_touched` and address all issues. if `pyright is not there, first run `uv add pyright --dev`.
36
36
  * For all type checkers and linters, like mypy, pyright, pyrefly and pylint, there are config files at different levels of the repo all the way up to home directory level. You don't need to worry about them, just be mindful that they exist. The tools themselves will respect the configs therein.
37
- * If you want to run all linters and pycheckers agains the entire project to make sure everything is clean, I prepared a nice shell script, you can run it from the repo root as `./.scripts/lint_and_typecheck.sh`. It will produce markdown files that are you are meant to look at @ ./.linters/*.md
37
+ * If you want to run all linters and pycheckers agains the entire project to make sure everything is clean, I prepared a nice shell script, you can run it from the repo root as `./.scripts/lint_and_type_check.sh`. It will produce markdown files that are you are meant to look at @ ./.linters/*.md
38
38
 
39
39
  # General Programming Ethos:
40
40
  * Make sure all the code is rigorous, no lazy stuff.
@@ -6,9 +6,19 @@ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
6
6
  def create_dot_scripts(repo_root: Path) -> None:
7
7
  scripts_dir = LIBRARY_ROOT.joinpath("scripts/python/ai/scripts")
8
8
  target_dir = repo_root.joinpath(".scripts")
9
+ import shutil
10
+ shutil.rmtree(target_dir, ignore_errors=True)
9
11
  target_dir.mkdir(parents=True, exist_ok=True)
10
- for script_path in scripts_dir.iterdir():
11
- target_dir.joinpath(script_path.name).write_text(data=script_path.read_text(encoding="utf-8"), encoding="utf-8")
12
+ # for script_path in scripts_dir.iterdir():
13
+ # target_dir.joinpath(script_path.name).write_text(data=script_path.read_text(encoding="utf-8"), encoding="utf-8")
14
+ import platform
15
+ if platform.system() == "Windows":
16
+ script_path = scripts_dir.joinpath("lint_and_type_check.ps1")
17
+ elif platform.system() in ["Linux", "Darwin"]:
18
+ script_path = scripts_dir.joinpath("lint_and_type_check.sh")
19
+ else:
20
+ raise NotImplementedError(f"Platform {platform.system()} is not supported.")
21
+ target_dir.joinpath(script_path.name).write_text(data=script_path.read_text(encoding="utf-8"), encoding="utf-8")
12
22
 
13
23
 
14
24
  def adjust_gitignore(repo_root: Path) -> None:
@@ -6,7 +6,7 @@ def analyze_repo_development(repo_path: str = typer.Argument(..., help="Path to
6
6
  from machineconfig.scripts.python import count_lines
7
7
  from pathlib import Path
8
8
  count_lines_path = Path(count_lines.__file__)
9
- # --project $HOME/code/machineconfig
9
+ # --project $HOME/code/machineconfig --group plot
10
10
  cmd = f"""uv run --python 3.13 --with machineconfig[plot] {count_lines_path} analyze-over-time {repo_path}"""
11
11
  from machineconfig.utils.code import run_shell_script
12
12
  run_shell_script(cmd)