machineconfig 5.65__tar.gz → 5.67__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 (429) hide show
  1. {machineconfig-5.65/src/machineconfig.egg-info → machineconfig-5.67}/PKG-INFO +1 -1
  2. {machineconfig-5.65 → machineconfig-5.67}/pyproject.toml +1 -1
  3. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/agents.py +41 -63
  4. machineconfig-5.67/src/machineconfig/scripts/python/ai/generate_files.py +348 -0
  5. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_config.py +1 -1
  6. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_self.py +3 -3
  7. machineconfig-5.67/src/machineconfig/scripts/python/devops_navigator.py +10 -0
  8. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/__init__.py +20 -0
  9. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/command_builder.py +111 -0
  10. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/command_detail.py +44 -0
  11. machineconfig-5.65/src/machineconfig/scripts/python/devops_navigator.py → machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/command_tree.py +58 -487
  12. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/data_models.py +28 -0
  13. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/main_app.py +262 -0
  14. machineconfig-5.67/src/machineconfig/scripts/python/helper_navigator/search_bar.py +15 -0
  15. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/template.sh +1 -0
  16. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/interactive.py +2 -2
  17. {machineconfig-5.65 → machineconfig-5.67/src/machineconfig.egg-info}/PKG-INFO +1 -1
  18. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig.egg-info/SOURCES.txt +7 -1
  19. machineconfig-5.65/src/machineconfig/scripts/python/ai/generate_files.py +0 -83
  20. machineconfig-5.65/src/machineconfig/utils/ai/generate_file_checklist.py +0 -68
  21. {machineconfig-5.65 → machineconfig-5.67}/MANIFEST.in +0 -0
  22. {machineconfig-5.65 → machineconfig-5.67}/README.md +0 -0
  23. {machineconfig-5.65 → machineconfig-5.67}/setup.cfg +0 -0
  24. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/__init__.py +0 -0
  25. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/__init__.py +0 -0
  26. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/cloud_manager.py +0 -0
  27. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/data_transfer.py +0 -0
  28. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/distribute.py +0 -0
  29. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/file_manager.py +0 -0
  30. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/job_params.py +0 -0
  31. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/loader_runner.py +0 -0
  32. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/remote_machine.py +0 -0
  33. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/run_cloud.py +0 -0
  34. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/run_cluster.py +0 -0
  35. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/run_remote.py +0 -0
  36. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/script_execution.py +0 -0
  37. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/remote/script_notify_upon_completion.py +0 -0
  38. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/__init__.py +0 -0
  39. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/helpers/zellij_local_helper.py +0 -0
  40. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/helpers/zellij_local_helper_restart.py +0 -0
  41. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/helpers/zellij_local_helper_with_panes.py +0 -0
  42. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/helpers/zellij_local_manager_helper.py +0 -0
  43. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/utils/enhanced_command_runner.py +0 -0
  44. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/utils/load_balancer.py +0 -0
  45. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/utils/load_balancer_helper.py +0 -0
  46. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_local.py +0 -0
  47. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_local_manager.py +0 -0
  48. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_remote.py +0 -0
  49. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_remote_manager.py +0 -0
  50. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +0 -0
  51. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +0 -0
  52. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +0 -0
  53. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +0 -0
  54. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +0 -0
  55. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_local.py +0 -0
  56. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_local_manager.py +0 -0
  57. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_remote.py +0 -0
  58. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_remote_manager.py +0 -0
  59. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +0 -0
  60. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +0 -0
  61. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/monitoring_types.py +0 -0
  62. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +0 -0
  63. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +0 -0
  64. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +0 -0
  65. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +0 -0
  66. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/templates/__init__.py +0 -0
  67. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/cluster/templates/cli_trogon.py +0 -0
  68. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/__init__.py +0 -0
  69. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/__init__.py +0 -0
  70. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/check_installations.py +0 -0
  71. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom/gh.py +0 -0
  72. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom/hx.py +0 -0
  73. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/__init__.py +0 -0
  74. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/alacritty.py +0 -0
  75. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/brave.py +0 -0
  76. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/bypass_paywall.py +0 -0
  77. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/code.py +0 -0
  78. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/cursor.py +0 -0
  79. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +0 -0
  80. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/espanso.py +0 -0
  81. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/goes.py +0 -0
  82. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/lvim.py +0 -0
  83. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/nerdfont.py +0 -0
  84. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +0 -0
  85. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/redis.py +0 -0
  86. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/wezterm.py +0 -0
  87. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/custom_dev/winget.py +0 -0
  88. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/installer_data.json +0 -0
  89. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/brave.sh +0 -0
  90. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/docker.sh +0 -0
  91. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/docker_start.sh +0 -0
  92. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/edge.sh +0 -0
  93. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/nerdfont.sh +0 -0
  94. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/ngrok.sh +0 -0
  95. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -0
  96. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/q.sh +0 -0
  97. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/redis.sh +0 -0
  98. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -0
  99. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/vscode.sh +0 -0
  100. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/warp-cli.sh +0 -0
  101. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/linux_scripts/wezterm.sh +0 -0
  102. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/package_groups.py +0 -0
  103. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +0 -0
  104. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/linux/msc/cli_agents.sh +0 -0
  105. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/linux/msc/lid.sh +0 -0
  106. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/linux/msc/network.sh +0 -0
  107. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/python/__init__.py +0 -0
  108. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/python/python_ve_symlink.py +0 -0
  109. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/python/vscode/api.py +0 -0
  110. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/python/vscode/sync_code.py +0 -0
  111. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -0
  112. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -0
  113. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -0
  114. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/windows/msc/cli_agents.bat +0 -0
  115. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/jobs/windows/msc/cli_agents.ps1 +0 -0
  116. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/logger.py +0 -0
  117. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/__init__.py +0 -0
  118. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/backup.toml +0 -0
  119. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/bash_shell_profiles.md +0 -0
  120. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/create_helper.py +0 -0
  121. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/create_links.py +0 -0
  122. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/create_links_export.py +0 -0
  123. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/create_shell_profile.py +0 -0
  124. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/mapper.toml +0 -0
  125. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/records/generic/shares.toml +0 -0
  126. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/records/linux/apps_summary_report.csv +0 -0
  127. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/records/linux/apps_summary_report.md +0 -0
  128. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/records/windows/apps_summary_report.csv +0 -0
  129. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/profile/records/windows/apps_summary_report.md +0 -0
  130. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/Restore-ThunderbirdProfile.ps1 +0 -0
  131. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/__init__.py +0 -0
  132. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/fzf2g +0 -0
  133. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/fzfag +0 -0
  134. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/fzffg +0 -0
  135. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/fzfg +0 -0
  136. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/fzfrga +0 -0
  137. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/other/share_cloud.sh +0 -0
  138. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/other/share_nfs +0 -0
  139. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/other/share_smb +0 -0
  140. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/other/start_docker +0 -0
  141. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/other/switch_ip +0 -0
  142. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/skrg +0 -0
  143. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/warp-cli.sh +0 -0
  144. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/linux/z_ls +0 -0
  145. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/__init__.py +0 -0
  146. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/__init__.py +0 -0
  147. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/initai.py +0 -0
  148. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +0 -0
  149. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +0 -0
  150. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/__init__.py +0 -0
  151. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/_shared.py +0 -0
  152. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/claude/claude.py +0 -0
  153. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/cline/cline.py +0 -0
  154. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Thinking-Beast-Mode.chatmode.md +0 -0
  155. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +0 -0
  156. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/chatmodes/deepResearch.chatmode.md +0 -0
  157. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  158. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -0
  159. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/privacy.md +0 -0
  160. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
  161. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  162. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/crush/crush.json +0 -0
  163. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/crush/crush.py +0 -0
  164. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/crush/privacy.md +0 -0
  165. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  166. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/gemini/gemini.py +0 -0
  167. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/gemini/settings.json +0 -0
  168. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/generic.py +0 -0
  169. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  170. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.json +0 -0
  171. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  172. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud.py +0 -0
  173. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/__init__.py +0 -0
  174. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/cloud_copy.py +0 -0
  175. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/cloud_helpers.py +0 -0
  176. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/cloud_mount.py +0 -0
  177. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/cloud_sync.py +0 -0
  178. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/helpers2.py +0 -0
  179. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/cloud_helpers/helpers5.py +0 -0
  180. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell.py +0 -0
  181. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/__init__.py +0 -0
  182. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/pomodoro.py +0 -0
  183. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/scheduler.py +0 -0
  184. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/start_slidev.py +0 -0
  185. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/viewer.py +0 -0
  186. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/croshell_helpers/viewer_template.py +0 -0
  187. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops.py +0 -0
  188. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/__init__.py +0 -0
  189. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py +0 -0
  190. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_data.py +0 -0
  191. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_nw.py +0 -0
  192. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_repos.py +0 -0
  193. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_share_server.py +0 -0
  194. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/cli_terminal.py +0 -0
  195. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/devops_add_identity.py +0 -0
  196. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/devops_add_ssh_key.py +0 -0
  197. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/devops_backup_retrieve.py +0 -0
  198. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/devops_status.py +0 -0
  199. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/devops_update_repos.py +0 -0
  200. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/themes/__init__.py +0 -0
  201. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/themes/choose_pwsh_theme.ps1 +0 -0
  202. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/devops_helpers/themes/choose_wezterm_theme.py +0 -0
  203. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/entry.py +0 -0
  204. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/env_manager/__init__.py +0 -0
  205. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/env_manager/path_manager_backend.py +0 -0
  206. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/env_manager/path_manager_tui.py +0 -0
  207. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/fire_jobs.py +0 -0
  208. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/ftpx.py +0 -0
  209. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/__init__.py +0 -0
  210. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/__init__.py +0 -0
  211. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.json +0 -0
  212. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -0
  213. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_cursor_agents.py +0 -0
  214. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -0
  215. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -0
  216. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/fire_agents_help_launch.py +0 -0
  217. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/fire_agents_help_search.py +0 -0
  218. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/fire_agents_helper_types.py +0 -0
  219. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/fire_agents_load_balancer.py +0 -0
  220. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/helpers4.py +0 -0
  221. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/prompt.txt +0 -0
  222. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire/template.ps1 +0 -0
  223. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
  224. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire_command/cloud_manager.py +0 -0
  225. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +0 -0
  226. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +0 -0
  227. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  228. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_repos/__init__.py +0 -0
  229. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +0 -0
  230. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_repos/grource.py +0 -0
  231. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -0
  232. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/__init__.py +0 -0
  233. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_drive +0 -0
  234. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_nfs +0 -0
  235. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_nfs.py +0 -0
  236. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_nw_drive +0 -0
  237. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_nw_drive.py +0 -0
  238. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_smb +0 -0
  239. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/mount_ssh.py +0 -0
  240. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/onetimeshare.py +0 -0
  241. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/wifi_conn.py +0 -0
  242. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -0
  243. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/action.py +0 -0
  244. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/clone.py +0 -0
  245. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/count_lines.py +0 -0
  246. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/count_lines_frontend.py +0 -0
  247. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/entrypoint.py +0 -0
  248. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/record.py +0 -0
  249. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/sync.py +0 -0
  250. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/repos_helpers/update.py +0 -0
  251. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/sessions.py +0 -0
  252. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/sessions_helpers/__init__.py +0 -0
  253. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/python/sessions_helpers/sessions_multiprocess.py +0 -0
  254. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/fzfb.ps1 +0 -0
  255. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/fzfg.ps1 +0 -0
  256. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/fzfrga.bat +0 -0
  257. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/mount_nfs.ps1 +0 -0
  258. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/mount_nw.ps1 +0 -0
  259. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/mount_smb.ps1 +0 -0
  260. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -0
  261. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/share_cloud.cmd +0 -0
  262. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/share_smb.ps1 +0 -0
  263. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1 +0 -0
  264. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/__init__.py +0 -0
  265. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/broot/br.sh +0 -0
  266. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/broot/brootcd.ps1 +0 -0
  267. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/broot/conf.toml +0 -0
  268. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/glow/glow.yml +0 -0
  269. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  270. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/helix/config.toml +0 -0
  271. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/helix/languages.toml +0 -0
  272. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/keras/keras.json +0 -0
  273. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/keyboard/espanso/config/default.yml +0 -0
  274. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/keyboard/espanso/match/base.yml +0 -0
  275. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
  276. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
  277. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
  278. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
  279. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/open.sh +0 -0
  280. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
  281. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
  282. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
  283. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/colors +0 -0
  284. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/cleaner.sh +0 -0
  285. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -0
  286. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  287. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/lfcd.sh +0 -0
  288. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/previewer.sh +0 -0
  289. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/exe/previewer_archive.sh +0 -0
  290. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/icons +0 -0
  291. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/linux/lfrc +0 -0
  292. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
  293. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  294. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  295. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
  296. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
  297. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  298. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
  299. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/cd_tere.ps1 +0 -0
  300. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/cd_zoxide.ps1 +0 -0
  301. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  302. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/colors +0 -0
  303. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -0
  304. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/icons +0 -0
  305. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  306. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/lfcd.ps1 +0 -0
  307. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/lfrc +0 -0
  308. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/mkdir.ps1 +0 -0
  309. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/mkfile.ps1 +0 -0
  310. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/previewer.ps1 +0 -0
  311. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lf/windows/tst.ps1 +0 -0
  312. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/linters/.flake8 +0 -0
  313. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/linters/.mypy.ini +0 -0
  314. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/linters/.pylintrc +0 -0
  315. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/linters/.ruff.toml +0 -0
  316. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lvim/linux/config.lua +0 -0
  317. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -0
  318. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lvim/windows/config.lua +0 -0
  319. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  320. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/mprocs/windows/mprocs.yaml +0 -0
  321. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/mprocs/windows/other +0 -0
  322. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/pistol/pistol.conf +0 -0
  323. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/presenterm/config.yaml +0 -0
  324. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/procs/.procs.toml +0 -0
  325. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/pudb/pudb.cfg +0 -0
  326. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/rofi/config.rasi +0 -0
  327. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/rofi/config_default.rasi +0 -0
  328. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/alacritty/alacritty.toml +0 -0
  329. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
  330. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/bash/init.sh +0 -0
  331. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/hyper/.hyper.js +0 -0
  332. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/ipy/profiles/default/__init__.py +0 -0
  333. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
  334. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  335. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/kitty/kitty.conf +0 -0
  336. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/nushell/config.nu +0 -0
  337. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/nushell/env.nu +0 -0
  338. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/pwsh/init.ps1 +0 -0
  339. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
  340. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/starship/starship.toml +0 -0
  341. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/vtm/settings.xml +0 -0
  342. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/wezterm/wezterm.lua +0 -0
  343. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/shells/wt/settings.json +0 -0
  344. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/streamlit/config.toml +0 -0
  345. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/svim/linux/init.toml +0 -0
  346. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/svim/windows/init.toml +0 -0
  347. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/tere/terecd.ps1 +0 -0
  348. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/tere/terecd.sh +0 -0
  349. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/tmux/.tmate.conf +0 -0
  350. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/tmux/.tmux.conf +0 -0
  351. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/wsl/.wslconfig +0 -0
  352. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/yazi/keymap.toml +0 -0
  353. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/yazi/theme.toml +0 -0
  354. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/yazi/yazi.toml +0 -0
  355. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zed/settings.json +0 -0
  356. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/commands/monitor +0 -0
  357. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/commands/standard_panes +0 -0
  358. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/config.kdl +0 -0
  359. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/config.orig.kdl +0 -0
  360. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/layouts/hist +0 -0
  361. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/layouts/panes.kdl +0 -0
  362. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/layouts/st.kdl +0 -0
  363. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/layouts/st2.kdl +0 -0
  364. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/settings/zellij/layouts/stacked_panes.kdl +0 -0
  365. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/__init__.py +0 -0
  366. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/apps.sh +0 -0
  367. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/apps_desktop.sh +0 -0
  368. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/apps_gui.sh +0 -0
  369. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/nix/cli_installation.sh +0 -0
  370. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -0
  371. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/ssh/openssh_all.sh +0 -0
  372. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -0
  373. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/uv.sh +0 -0
  374. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/web_shortcuts/android.sh +0 -0
  375. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_linux/web_shortcuts/interactive.sh +0 -0
  376. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/__init__.py +0 -0
  377. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/apps.ps1 +0 -0
  378. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/others/docker.ps1 +0 -0
  379. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/others/obs.ps1 +0 -0
  380. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/others/power_options.ps1 +0 -0
  381. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -0
  382. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/ssh/add_identity.ps1 +0 -0
  383. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -0
  384. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/uv.ps1 +0 -0
  385. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/web_shortcuts/interactive.ps1 +0 -0
  386. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/wt_and_pwsh/__init__.py +0 -0
  387. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +0 -0
  388. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/__init__.py +0 -0
  389. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/accessories.py +0 -0
  390. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/ai/__init__.py +0 -0
  391. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/cloud/onedrive/README.md +0 -0
  392. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/cloud/onedrive/setup_oauth.py +0 -0
  393. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/cloud/onedrive/transaction.py +0 -0
  394. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/code.py +0 -0
  395. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/ascii_art.py +0 -0
  396. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/dbms.py +0 -0
  397. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/headers.py +0 -0
  398. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/ouch/__init__.py +0 -0
  399. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/ouch/decompress.py +0 -0
  400. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/files/read.py +0 -0
  401. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer.py +0 -0
  402. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer_utils/__init__.py +0 -0
  403. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer_utils/github_release_bulk.py +0 -0
  404. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer_utils/installer.py +0 -0
  405. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer_utils/installer_abc.py +0 -0
  406. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/installer_utils/installer_class.py +0 -0
  407. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/io.py +0 -0
  408. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/links.py +0 -0
  409. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/meta.py +0 -0
  410. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/notifications.py +0 -0
  411. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/options.py +0 -0
  412. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/path_extended.py +0 -0
  413. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/path_helper.py +0 -0
  414. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/procs.py +0 -0
  415. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/scheduler.py +0 -0
  416. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/scheduling.py +0 -0
  417. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/schemas/fire_agents/fire_agents_input.py +0 -0
  418. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/schemas/installer/installer_types.py +0 -0
  419. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/schemas/layouts/layout_types.py +0 -0
  420. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/schemas/repos/repos_types.py +0 -0
  421. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/source_of_truth.py +0 -0
  422. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/ssh.py +0 -0
  423. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/terminal.py +0 -0
  424. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/upgrade_packages.py +0 -0
  425. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig/utils/ve.py +0 -0
  426. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig.egg-info/dependency_links.txt +0 -0
  427. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig.egg-info/entry_points.txt +0 -0
  428. {machineconfig-5.65 → machineconfig-5.67}/src/machineconfig.egg-info/requires.txt +0 -0
  429. {machineconfig-5.65 → machineconfig-5.67}/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.65
3
+ Version: 5.67
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.65"
9
+ version = "5.67"
10
10
  description = "Dotfiles management package"
11
11
  readme = "README.md"
12
12
  license = {text = "Apache 2.0"}
@@ -3,28 +3,19 @@
3
3
  """
4
4
 
5
5
  from pathlib import Path
6
- from typing import cast, Iterable, Optional, get_args
6
+ from typing import cast, Optional, get_args
7
7
  import typer
8
8
  from machineconfig.scripts.python.helpers_fire.fire_agents_helper_types import AGENTS, MATCHINE, MODEL, PROVIDER
9
9
 
10
10
 
11
- def _write_list_file(target: Path, files: Iterable[Path]) -> None:
12
- target.parent.mkdir(parents=True, exist_ok=True)
13
- target.write_text("\n".join(str(f) for f in files), encoding="utf-8")
14
-
15
-
16
11
  def create(
17
- context_path: Optional[Path] = typer.Option(None, help="Path to the context file"),
18
- keyword_search: Optional[str] = typer.Option(None, help="Keyword to search in Python files"),
19
- filename_pattern: Optional[str] = typer.Option(None, help="Filename pattern to match"),
12
+ agent: AGENTS = typer.Option(default=..., help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}"),
13
+ machine: MATCHINE = typer.Option(default=..., help=f"Machine to run agents on. One of {', '.join(get_args(MATCHINE))}"),
14
+ model: MODEL = typer.Option(default=..., help=f"Model to use (for crush agent). One of {', '.join(get_args(MODEL)[:3])}"),
15
+ provider: PROVIDER = typer.Option(default=..., help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER)[:3])}"),
16
+ context_path: Optional[Path] = typer.Option(None, help="Path to the context file/folder, defaults to .ai/todo/"),
20
17
  separator: str = typer.Option("\n", help="Separator for context"),
21
18
  tasks_per_prompt: int = typer.Option(13, help="Number of tasks per prompt"),
22
-
23
- agent: AGENTS = typer.Option(..., help=f"Agent type. One of {', '.join(get_args(AGENTS))}"),
24
- machine: MATCHINE = typer.Option(..., help=f"Machine to run agents on. One of {', '.join(get_args(MATCHINE))}"),
25
- model: MODEL = typer.Option(..., help=f"Model to use (for crush agent). One of {', '.join(get_args(MODEL))}"),
26
- provider: PROVIDER = typer.Option(..., help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER))}"),
27
-
28
19
  prompt: Optional[str] = typer.Option(None, help="Prompt prefix as string"),
29
20
  prompt_path: Optional[Path] = typer.Option(None, help="Path to prompt file"),
30
21
  job_name: str = typer.Option("AI_Agents", help="Job name"),
@@ -34,17 +25,11 @@ def create(
34
25
  ):
35
26
 
36
27
  from machineconfig.scripts.python.helpers_fire.fire_agents_help_launch import prep_agent_launch, get_agents_launch_layout
37
- from machineconfig.scripts.python.helpers_fire.fire_agents_help_search import search_files_by_pattern, search_python_files
38
28
  from machineconfig.scripts.python.helpers_fire.fire_agents_load_balancer import chunk_prompts
39
29
  from machineconfig.utils.accessories import get_repo_root, randstr
40
30
  import json
41
31
 
42
32
  # validate mutual exclusive
43
- context_options = [context_path, keyword_search, filename_pattern]
44
- provided_context = [opt for opt in context_options if opt is not None]
45
- if len(provided_context) != 1:
46
- raise typer.BadParameter("Exactly one of --context-path, --keyword-search, --filename-pattern must be provided")
47
-
48
33
  prompt_options = [prompt, prompt_path]
49
34
  provided_prompt = [opt for opt in prompt_options if opt is not None]
50
35
  if len(provided_prompt) != 1:
@@ -56,33 +41,23 @@ def create(
56
41
  raise typer.Exit(1)
57
42
  typer.echo(f"Operating @ {repo_root}")
58
43
 
59
- search_strategy = ""
60
- prompt_material_path = Path("")
44
+ if context_path is None:
45
+ context_path = repo_root / ".ai" / "todo"
46
+
47
+ context_path_resolved = context_path.expanduser().resolve()
48
+ if not context_path_resolved.exists():
49
+ raise typer.BadParameter(f"Path does not exist: {context_path_resolved}")
61
50
 
62
- if context_path is not None:
63
- search_strategy = "file_path"
64
- target_file_path = context_path.expanduser().resolve()
65
- if not target_file_path.exists() or not target_file_path.is_file():
66
- raise typer.BadParameter(f"Invalid file path: {target_file_path}")
67
- prompt_material_path = target_file_path
68
- elif keyword_search is not None:
69
- search_strategy = "keyword_search"
70
- matching_files = search_python_files(repo_root, keyword_search)
71
- if not matching_files:
72
- typer.echo(f"💥 No .py files found containing keyword: {keyword_search}")
73
- raise typer.Exit(1)
74
- target_file_path = repo_root / ".ai" / "target_file.txt"
75
- _write_list_file(target_file_path, matching_files)
76
- prompt_material_path = target_file_path
77
- elif filename_pattern is not None:
78
- search_strategy = "filename_pattern"
79
- matching_files = search_files_by_pattern(repo_root, filename_pattern)
80
- if not matching_files:
81
- typer.echo(f"💥 No files found matching pattern: {filename_pattern}")
82
- raise typer.Exit(1)
83
- target_file_path = repo_root / ".ai" / "target_file.txt"
84
- _write_list_file(target_file_path, matching_files)
85
- prompt_material_path = target_file_path
51
+ if context_path_resolved.is_file():
52
+ prompt_material_re_splitted = chunk_prompts(context_path_resolved, tasks_per_prompt=tasks_per_prompt, joiner=separator)
53
+ elif context_path_resolved.is_dir():
54
+ files = [f for f in context_path_resolved.rglob("*") if f.is_file()]
55
+ if not files:
56
+ raise typer.BadParameter(f"No files found in directory: {context_path_resolved}")
57
+ concatenated = separator.join(f.read_text(encoding="utf-8") for f in files)
58
+ prompt_material_re_splitted = [concatenated]
59
+ else:
60
+ raise typer.BadParameter(f"Path is neither file nor directory: {context_path_resolved}")
86
61
 
87
62
  if prompt_path is not None:
88
63
  prompt_prefix = prompt_path.read_text(encoding="utf-8")
@@ -90,7 +65,6 @@ def create(
90
65
  prompt_prefix = cast(str, prompt)
91
66
  agent_selected = agent
92
67
  keep_material_in_separate_file_input = separate_prompt_from_context
93
- prompt_material_re_splitted = chunk_prompts(prompt_material_path, tasks_per_prompt=tasks_per_prompt, joiner=separator)
94
68
  if agents_dir is None: agents_dir = repo_root / ".ai" / f"tmp_prompts/{job_name}_{randstr()}"
95
69
  else:
96
70
  import shutil
@@ -103,8 +77,7 @@ def create(
103
77
  layoutfile = get_agents_launch_layout(session_root=agents_dir)
104
78
  regenerate_py_code = f"""
105
79
  #!/usr/bin/env uv run --python 3.14 --with machineconfig
106
- agents create --context-path "{prompt_material_path}" \\
107
- --{search_strategy} "{context_path or keyword_search or filename_pattern}" \\
80
+ agents create "{context_path_resolved}" \\
108
81
  --prompt-path "{prompt_path or ''}" \\
109
82
  --agent "{agent_selected}" \\
110
83
  --machine "{machine}" \\
@@ -187,27 +160,32 @@ def init_config():
187
160
  from machineconfig.scripts.python.ai.initai import add_ai_configs
188
161
  add_ai_configs(repo_root=Path.cwd())
189
162
 
190
- def generate_files():
191
- from machineconfig.scripts.python.ai.generate_files import main
192
- main()
193
-
194
163
  def get_app():
195
- agents_app = typer.Typer(help="🤖 AI Agents management subcommands")
196
- agents_app.command("create", no_args_is_help=True, help="Create agents layout file, ready to run.")(create)
164
+ agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True)
165
+ sep = "\n"
166
+ agents_full_help = f"""
167
+ Create agents layout file, ready to run.
168
+ {sep}
169
+ PROVIDER options: {', '.join(get_args(PROVIDER))}
170
+ {sep}
171
+ AGENT options: {', '.join(get_args(AGENTS))}
172
+ {sep}
173
+ MODEL options: {sep.join(get_args(MODEL))}
174
+ """
175
+ agents_app.command("create", no_args_is_help=True, help=agents_full_help)(create)
197
176
  agents_app.command("collect", no_args_is_help=True, help="Collect all agent materials into a single file.")(collect)
198
177
  agents_app.command("make-template", no_args_is_help=False, help="Create a template for fire agents")(template)
199
178
  agents_app.command("make-config", no_args_is_help=False, help="Initialize AI configurations in the current repository")(init_config)
200
- agents_app.command("make-todo", no_args_is_help=False, help="Generate a markdown file listing all Python files in the repo")(generate_files)
179
+ from machineconfig.scripts.python.ai.generate_files import main
180
+ agents_app.command("make-todo", no_args_is_help=True, help="Generate a markdown file listing all Python files in the repo")(main)
181
+ from machineconfig.scripts.python.ai.generate_files import create_symlink_command
182
+ agents_app.command(name="make-symlinks", no_args_is_help=True, help="Create symlinks to the current repo in ~/code_copies/")(create_symlink_command)
201
183
  return agents_app
202
184
 
185
+
203
186
  def main():
204
187
  agents_app = get_app()
205
- import sys
206
- if len(sys.argv) == 1:
207
- agents_app(["--help"])
208
- else:
209
- agents_app()
210
-
188
+ agents_app()
211
189
 
212
190
  if __name__ == "__main__": # pragma: no cover
213
191
  pass
@@ -0,0 +1,348 @@
1
+ #!/usr/bin/env python3
2
+ """Script to generate a markdown table with checkboxes for all Python and shell files in the repo."""
3
+
4
+ from pathlib import Path
5
+ from typing import Annotated, Literal, Optional
6
+ from rich.console import Console
7
+ from rich.panel import Panel
8
+ import typer
9
+ import subprocess
10
+ import shutil
11
+
12
+
13
+ def get_python_files(repo_root: Path, exclude_init: bool = False) -> list[str]:
14
+ """Get all Python files relative to repo root."""
15
+ excluded_parts = {".venv", "__pycache__", ".git", "build", "dist"}
16
+ excluded_patterns = {"*.egg-info"}
17
+
18
+ # Get all .py files recursively
19
+ py_files = list(repo_root.glob("**/*.py"))
20
+
21
+ # Filter out files in excluded directories
22
+ filtered_files = []
23
+ for file_path in py_files:
24
+ relative_path = file_path.relative_to(repo_root)
25
+ path_parts = relative_path.parts
26
+
27
+ # Skip files in excluded directories
28
+ if any(part in excluded_parts for part in path_parts):
29
+ continue
30
+
31
+ # Skip files matching excluded patterns
32
+ if any(file_path.match(f"**/{pattern}/**") for pattern in excluded_patterns):
33
+ continue
34
+
35
+ # Skip __init__.py files if requested
36
+ if exclude_init and file_path.name == "__init__.py":
37
+ continue
38
+
39
+ filtered_files.append(str(relative_path))
40
+
41
+ return sorted(filtered_files)
42
+
43
+
44
+ def get_shell_files(repo_root: Path) -> list[str]:
45
+ """Get all shell script files relative to repo root."""
46
+ excluded_parts = {".venv", "__pycache__", ".git", "build", "dist"}
47
+ excluded_patterns = {"*.egg-info"}
48
+
49
+ # Get all .sh files recursively
50
+ sh_files = list(repo_root.glob("**/*.sh"))
51
+
52
+ # Filter out files in excluded directories
53
+ filtered_files = []
54
+ for file_path in sh_files:
55
+ relative_path = file_path.relative_to(repo_root)
56
+ path_parts = relative_path.parts
57
+
58
+ # Skip files in excluded directories
59
+ if any(part in excluded_parts for part in path_parts):
60
+ continue
61
+
62
+ # Skip files matching excluded patterns
63
+ if any(file_path.match(f"**/{pattern}/**") for pattern in excluded_patterns):
64
+ continue
65
+
66
+ filtered_files.append(str(relative_path))
67
+
68
+ return sorted(filtered_files)
69
+
70
+
71
+ def count_lines(file_path: Path) -> int:
72
+ """Count the number of lines in a file."""
73
+ try:
74
+ with open(file_path, 'r', encoding='utf-8') as f:
75
+ return sum(1 for _ in f)
76
+ except (IOError, UnicodeDecodeError):
77
+ return 0
78
+
79
+
80
+ def is_git_repository(path: Path) -> bool:
81
+ """Check if the given path is part of a git repository."""
82
+ try:
83
+ result = subprocess.run(
84
+ ["git", "rev-parse", "--git-dir"],
85
+ cwd=path,
86
+ capture_output=True,
87
+ text=True,
88
+ check=False
89
+ )
90
+ return result.returncode == 0
91
+ except (subprocess.SubprocessError, FileNotFoundError):
92
+ return False
93
+
94
+
95
+ def filter_files_by_name(files: list[str], pattern: str) -> list[str]:
96
+ """Filter files by filename containing the pattern."""
97
+ return [f for f in files if pattern in f]
98
+
99
+
100
+ def filter_files_by_content(repo_root: Path, files: list[str], keyword: str) -> list[str]:
101
+ """Filter files by content containing the keyword."""
102
+ filtered_files = []
103
+ for file_path in files:
104
+ full_path = repo_root / file_path
105
+ try:
106
+ with open(full_path, 'r', encoding='utf-8') as f:
107
+ content = f.read()
108
+ if keyword in content:
109
+ filtered_files.append(file_path)
110
+ except (IOError, UnicodeDecodeError):
111
+ # Skip files that can't be read
112
+ continue
113
+ return filtered_files
114
+
115
+
116
+ def generate_csv_content(python_files: list[str], shell_files: list[str], repo_root: Path, include_line_count: bool = False) -> str:
117
+ """Generate CSV content with file information."""
118
+ import csv
119
+ import io
120
+
121
+ output = io.StringIO()
122
+ writer = csv.writer(output)
123
+
124
+ # Write header
125
+ if include_line_count:
126
+ writer.writerow(["Type", "Index", "File Path", "Line Count", "Status"])
127
+ else:
128
+ writer.writerow(["Type", "Index", "File Path", "Status"])
129
+
130
+ # Write Python files
131
+ for index, file_path in enumerate(python_files, start=1):
132
+ clean_path = file_path.lstrip("./")
133
+ if include_line_count:
134
+ line_count = count_lines(repo_root / file_path)
135
+ writer.writerow(["Python", index, clean_path, line_count, "[ ]"])
136
+ else:
137
+ writer.writerow(["Python", index, clean_path, "[ ]"])
138
+
139
+ # Write shell files
140
+ for index, file_path in enumerate(shell_files, start=1):
141
+ clean_path = file_path.lstrip("./")
142
+ if include_line_count:
143
+ line_count = count_lines(repo_root / file_path)
144
+ writer.writerow(["Shell", index, clean_path, line_count, "[ ]"])
145
+ else:
146
+ writer.writerow(["Shell", index, clean_path, "[ ]"])
147
+
148
+ return output.getvalue()
149
+
150
+
151
+ def generate_txt_content(python_files: list[str], shell_files: list[str]) -> str:
152
+ """Generate plain text content with file paths."""
153
+ all_files = python_files + shell_files
154
+ return "\n".join(file.lstrip("./") for file in all_files)
155
+
156
+
157
+ def generate_markdown_table(python_files: list[str], shell_files: list[str], repo_root: Path, include_line_count: bool = False) -> str:
158
+ """Generate markdown table with checkboxes."""
159
+ header = "# File Checklist\n\n"
160
+
161
+ content = ""
162
+
163
+ if python_files:
164
+ content += "## Python Files\n\n"
165
+ if include_line_count:
166
+ # Calculate line counts and sort by descending line count
167
+ python_with_counts = [(file, count_lines(repo_root / file)) for file in python_files]
168
+ python_with_counts.sort(key=lambda x: x[1], reverse=True)
169
+ python_files = [file for file, _ in python_with_counts]
170
+
171
+ content += "| Index | File Path | Line Count | Status |\n|-------|-----------|------------|--------|\n"
172
+ else:
173
+ content += "| Index | File Path | Status |\n|-------|-----------|--------|\n"
174
+ for index, file_path in enumerate(python_files, start=1):
175
+ clean_path = file_path.lstrip("./")
176
+ if include_line_count:
177
+ line_count = count_lines(repo_root / file_path)
178
+ content += f"| {index} | {clean_path} | {line_count} | - [ ] |\n"
179
+ else:
180
+ content += f"| {index} | {clean_path} | - [ ] |\n"
181
+
182
+ if shell_files:
183
+ content += "\n## Shell Script Files\n\n"
184
+ if include_line_count:
185
+ # Calculate line counts and sort by descending line count
186
+ shell_with_counts = [(file, count_lines(repo_root / file)) for file in shell_files]
187
+ shell_with_counts.sort(key=lambda x: x[1], reverse=True)
188
+ shell_files = [file for file, _ in shell_with_counts]
189
+
190
+ content += "| Index | File Path | Line Count | Status |\n|-------|-----------|------------|--------|\n"
191
+ else:
192
+ content += "| Index | File Path | Status |\n|-------|-----------|--------|\n"
193
+ for index, file_path in enumerate(shell_files, start=1):
194
+ clean_path = file_path.lstrip("./")
195
+ if include_line_count:
196
+ line_count = count_lines(repo_root / file_path)
197
+ content += f"| {index} | {clean_path} | {line_count} | - [ ] |\n"
198
+ else:
199
+ content += f"| {index} | {clean_path} | - [ ] |\n"
200
+
201
+ return header + content
202
+
203
+
204
+ def split_files_into_chunks(all_files: list[str], split_every: Optional[int] = None, split_to: Optional[int] = None) -> list[list[str]]:
205
+ """Split files into chunks based on split_every or split_to."""
206
+ if split_every is not None:
207
+ # Split into chunks of split_every files each
208
+ return [all_files[i:i + split_every] for i in range(0, len(all_files), split_every)]
209
+ elif split_to is not None:
210
+ # Split into exactly split_to chunks
211
+ if split_to <= 0:
212
+ return [all_files]
213
+ chunk_size = max(1, len(all_files) // split_to)
214
+ chunks = []
215
+ for i in range(split_to):
216
+ start = i * chunk_size
217
+ end = start + chunk_size if i < split_to - 1 else len(all_files)
218
+ chunks.append(all_files[start:end])
219
+ return chunks
220
+ else:
221
+ # No splitting
222
+ return [all_files]
223
+
224
+
225
+ def generate_content(python_files: list[str], shell_files: list[str], repo_root: Path,
226
+ format_type: str, include_line_count: bool) -> str:
227
+ """Generate content based on format type."""
228
+ if format_type == "csv":
229
+ return generate_csv_content(python_files, shell_files, repo_root, include_line_count)
230
+ elif format_type == "md":
231
+ return generate_markdown_table(python_files, shell_files, repo_root, include_line_count)
232
+ elif format_type == "txt":
233
+ return generate_txt_content(python_files, shell_files)
234
+ else:
235
+ raise ValueError(f"Unsupported format: {format_type}")
236
+
237
+
238
+ def create_repo_symlinks(repo_root: Path) -> None:
239
+ """Create 5 symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}."""
240
+ repo_name: str = repo_root.name
241
+ symlink_dir: Path = Path.home() / "code_copies"
242
+ symlink_dir.mkdir(exist_ok=True)
243
+ for i in range(1, 6):
244
+ symlink_path: Path = symlink_dir / f"{repo_name}_copy_{i}"
245
+ if symlink_path.exists() or symlink_path.is_symlink():
246
+ symlink_path.unlink()
247
+ symlink_path.symlink_to(repo_root, target_is_directory=True)
248
+
249
+
250
+ def main(
251
+ pattern: Annotated[str, typer.Argument(help="Pattern or keyword to match files by")],
252
+ repo: Annotated[str, typer.Argument(help="Repository path. Can be any directory within a git repository.")] = str(Path.cwd()),
253
+ strategy: Annotated[Literal["name", "keywords"], typer.Option("-s", "--strategy", help="Strategy to filter files: 'name' for filename matching, 'keywords' for content matching")] = "name",
254
+ exclude_init: Annotated[bool, typer.Option("-e", "--exclude-init", help="Exclude __init__.py files from the checklist")] = False,
255
+ include_line_count: Annotated[bool, typer.Option("-l", "--line-count", help="Include line count column in the output")] = False,
256
+ output_path: Annotated[str, typer.Option("-o", "--output-path", help="Base path for output files relative to repo root")] = ".ai/todo/files",
257
+ format_type: Annotated[Literal["csv", "md", "txt"], typer.Option("-f", "--format", help="Output format: csv, md (markdown), or txt")] = "md",
258
+ split_every: Annotated[Optional[int], typer.Option("--split-every", help="Split output into multiple files, each containing at most this many results")] = None,
259
+ split_to: Annotated[Optional[int], typer.Option("--split-to", help="Split output into exactly this many files")] = None,
260
+ ) -> None:
261
+ """Generate checklist with Python and shell script files in the repository filtered by pattern."""
262
+ repo_path = Path(repo).expanduser().absolute()
263
+ if not is_git_repository(repo_path):
264
+ console = Console()
265
+ console.print(Panel(f"❌ ERROR | Not a git repository or not in a git repository: {repo_path}", border_style="bold red", expand=False))
266
+ raise typer.Exit(code=1)
267
+
268
+ # Delete .ai/todo directory at the start
269
+ todo_dir = repo_path / ".ai" / "todo"
270
+ if todo_dir.exists():
271
+ shutil.rmtree(todo_dir)
272
+
273
+ output_base = repo_path / output_path
274
+
275
+ # Ensure output directory exists
276
+ output_base.parent.mkdir(parents=True, exist_ok=True)
277
+
278
+ # Get Python and shell files
279
+ python_files = get_python_files(repo_path, exclude_init=exclude_init)
280
+ shell_files = get_shell_files(repo_path)
281
+
282
+ # Apply filtering based on strategy
283
+ if strategy == "name":
284
+ python_files = filter_files_by_name(python_files, pattern)
285
+ shell_files = filter_files_by_name(shell_files, pattern)
286
+ elif strategy == "keywords":
287
+ python_files = filter_files_by_content(repo_path, python_files, pattern)
288
+ shell_files = filter_files_by_content(repo_path, shell_files, pattern)
289
+
290
+ print(f"Repo path: {repo_path}")
291
+ print(f"Strategy: {strategy}")
292
+ print(f"Pattern: {pattern}")
293
+ print(f"Format: {format_type}")
294
+ print(f"Found {len(python_files)} Python files")
295
+ print(f"Found {len(shell_files)} Shell script files")
296
+
297
+ # Combine all files for splitting
298
+ all_files = python_files + shell_files
299
+
300
+ # Split files into chunks
301
+ file_chunks = split_files_into_chunks(all_files, split_every, split_to)
302
+
303
+ # Determine file extension based on format
304
+ extension = {"csv": ".csv", "md": ".md", "txt": ".txt"}[format_type]
305
+
306
+ output_files = []
307
+ for i, chunk in enumerate(file_chunks):
308
+ # Split chunk back into python and shell files
309
+ chunk_python = [f for f in chunk if f in python_files]
310
+ chunk_shell = [f for f in chunk if f in shell_files]
311
+
312
+ # Generate content for this chunk
313
+ content = generate_content(chunk_python, chunk_shell, repo_path, format_type, include_line_count)
314
+
315
+ # Determine output file path
316
+ if len(file_chunks) == 1:
317
+ output_file = output_base.with_suffix(extension)
318
+ else:
319
+ output_file = output_base.parent / f"{output_base.name}_{i+1}{extension}"
320
+
321
+ # Write to file
322
+ output_file.write_text(content)
323
+ output_files.append(output_file)
324
+
325
+ console = Console()
326
+ success_msg = f"""✅ SUCCESS | Files generated successfully!
327
+ 📄 Output files: {', '.join(str(f.relative_to(repo_path)) for f in output_files)}
328
+ 🐍 Python files: {len(python_files)}
329
+ 🔧 Shell files: {len(shell_files)}
330
+ 📊 Total chunks: {len(file_chunks)}"""
331
+
332
+ console.print(Panel(success_msg, border_style="bold blue", expand=False))
333
+
334
+
335
+ def create_symlink_command(num: Annotated[int, typer.Argument(help="Number of symlinks to create (1-5).")] = 5) -> None:
336
+ """Create 5 symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}."""
337
+ if num < 1 or num > 5:
338
+ console = Console()
339
+ console.print(Panel("❌ ERROR | Number of symlinks must be between 1 and 5.", border_style="bold red", expand=False))
340
+ raise typer.Exit(code=1)
341
+ repo_root = Path.cwd().absolute()
342
+ create_repo_symlinks(repo_root)
343
+ console = Console()
344
+ console.print(Panel(f"✅ SUCCESS | Created {num} symlinks to {repo_root} in ~/code_copies/", border_style="bold green", expand=False))
345
+
346
+ if __name__ == "__main__":
347
+ typer.run(main)
348
+ # typer.run(create_symlink_command)
@@ -48,7 +48,7 @@ def path():
48
48
  from pathlib import Path
49
49
  path = Path(navigator.__file__).resolve().parent.joinpath("path_manager_tui.py")
50
50
  from machineconfig.utils.code import run_shell_script
51
- run_shell_script(f"uv run --no-dev --with machineconfig>=5.65,textual {path}")
51
+ run_shell_script(f"uv run --with machineconfig>=5.65,textual {path}")
52
52
 
53
53
  @config_apps.command(no_args_is_help=False)
54
54
  def pwsh_theme():
@@ -31,9 +31,9 @@ def install():
31
31
  # main_public_from_parser()
32
32
  import platform
33
33
  if platform.system() == "Windows":
34
- run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig""")
34
+ run_shell_script(r"""$HOME\.local\bin\uv.exe tool install machineconfig>=5.65""")
35
35
  else:
36
- run_shell_script("""$HOME/.local/bin/uv tool install machineconfig""")
36
+ run_shell_script("""$HOME/.local/bin/uv tool install machineconfig>=5.65""")
37
37
 
38
38
  @cli_app.command(no_args_is_help=False)
39
39
  def navigate():
@@ -42,7 +42,7 @@ def navigate():
42
42
  from pathlib import Path
43
43
  path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
44
44
  from machineconfig.utils.code import run_shell_script
45
- run_shell_script(f"uv run --no-dev --with machineconfig>=5.65,textual {path}")
45
+ run_shell_script(f"uv run --with machineconfig>=5.65,textual {path}")
46
46
 
47
47
 
48
48
  @cli_app.command(no_args_is_help=True)
@@ -0,0 +1,10 @@
1
+ """
2
+ TUI for navigating through machineconfig command structure using Textual.
3
+ """
4
+
5
+ from machineconfig.scripts.python.helper_navigator import CommandNavigatorApp
6
+
7
+
8
+ if __name__ == "__main__":
9
+ app = CommandNavigatorApp()
10
+ app.run()
@@ -0,0 +1,20 @@
1
+ """
2
+ Helper modules for the devops navigator TUI application.
3
+ """
4
+
5
+ from machineconfig.scripts.python.helper_navigator.data_models import CommandInfo, ArgumentInfo
6
+ from machineconfig.scripts.python.helper_navigator.command_builder import CommandBuilderScreen
7
+ from machineconfig.scripts.python.helper_navigator.command_tree import CommandTree
8
+ from machineconfig.scripts.python.helper_navigator.command_detail import CommandDetail
9
+ from machineconfig.scripts.python.helper_navigator.search_bar import SearchBar
10
+ from machineconfig.scripts.python.helper_navigator.main_app import CommandNavigatorApp
11
+
12
+ __all__ = [
13
+ "CommandInfo",
14
+ "ArgumentInfo",
15
+ "CommandBuilderScreen",
16
+ "CommandTree",
17
+ "CommandDetail",
18
+ "SearchBar",
19
+ "CommandNavigatorApp",
20
+ ]