stackops 8.98__tar.gz → 8.100__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.
Files changed (1071) hide show
  1. stackops-8.100/PKG-INFO +118 -0
  2. stackops-8.100/README.md +90 -0
  3. stackops-8.100/pyproject.toml +163 -0
  4. stackops-8.100/src/stackops/cluster/remote/remote_machine.py +274 -0
  5. stackops-8.100/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +158 -0
  6. stackops-8.100/src/stackops/cluster/sessions_managers/session_conflict.py +377 -0
  7. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +247 -0
  8. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +183 -0
  9. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_common.py +18 -0
  10. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_execution.py +260 -0
  11. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_layout.py +295 -0
  12. stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_status.py +76 -0
  13. stackops-8.100/src/stackops/cluster/sessions_managers/utils/load_balancer.py +56 -0
  14. stackops-8.100/src/stackops/cluster/sessions_managers/utils/maker.py +104 -0
  15. stackops-8.100/src/stackops/jobs/installer/checks/install_utils.py +158 -0
  16. stackops-8.100/src/stackops/jobs/installer/checks/security_cli.py +212 -0
  17. stackops-8.100/src/stackops/jobs/installer/installer_data.json +4757 -0
  18. stackops-8.100/src/stackops/jobs/installer/linux_scripts/__init__.py +11 -0
  19. stackops-8.100/src/stackops/jobs/installer/linux_scripts/oz.sh +34 -0
  20. stackops-8.100/src/stackops/jobs/installer/package_groups.py +304 -0
  21. stackops-8.100/src/stackops/jobs/installer/powershell_scripts/__init__.py +3 -0
  22. stackops-8.100/src/stackops/jobs/installer/python_scripts/nerdfont.py +363 -0
  23. stackops-8.100/src/stackops/jobs/installer/python_scripts/redis.py +83 -0
  24. stackops-8.100/src/stackops/jobs/installer/python_scripts/rmpc.py +473 -0
  25. stackops-8.100/src/stackops/jobs/installer/python_scripts/termusic.py +350 -0
  26. stackops-8.100/src/stackops/jobs/installer/python_scripts/wezterm.py +83 -0
  27. stackops-8.100/src/stackops/jobs/installer/python_scripts/youtube_tui.py +356 -0
  28. stackops-8.100/src/stackops/jobs/installer/python_scripts/ytui_music.py +411 -0
  29. stackops-8.100/src/stackops/jobs/scripts/bash_scripts/weather +1 -0
  30. stackops-8.100/src/stackops/jobs/scripts/powershell_scripts/weather.ps1 +1 -0
  31. stackops-8.100/src/stackops/jobs/scripts_dynamic/__init__.py +3 -0
  32. stackops-8.100/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.json +8 -0
  33. stackops-8.100/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.py +113 -0
  34. stackops-8.100/src/stackops/profile/create_links.py +479 -0
  35. stackops-8.100/src/stackops/profile/create_links_export.py +147 -0
  36. stackops-8.100/src/stackops/profile/mapper_dotfiles.yaml +751 -0
  37. stackops-8.100/src/stackops/scripts/python/agents.py +325 -0
  38. stackops-8.100/src/stackops/scripts/python/agents_browser.py +83 -0
  39. stackops-8.100/src/stackops/scripts/python/agents_parallel_commands.py +194 -0
  40. stackops-8.100/src/stackops/scripts/python/agents_parallel_run_command.py +110 -0
  41. stackops-8.100/src/stackops/scripts/python/ai/initai.py +188 -0
  42. stackops-8.100/src/stackops/scripts/python/ai/scripts/models_config.py +329 -0
  43. stackops-8.100/src/stackops/scripts/python/ai/solutions/antigravity/antigravity.py +20 -0
  44. stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/__init__.py +1 -0
  45. stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +91 -0
  46. stackops-8.100/src/stackops/scripts/python/ai/solutions/oz/oz.py +12 -0
  47. stackops-8.100/src/stackops/scripts/python/ai/utils/generate_files.py +371 -0
  48. stackops-8.100/src/stackops/scripts/python/cloud.py +99 -0
  49. stackops-8.100/src/stackops/scripts/python/croshell.py +104 -0
  50. stackops-8.100/src/stackops/scripts/python/devops.py +149 -0
  51. stackops-8.100/src/stackops/scripts/python/enums.py +85 -0
  52. stackops-8.100/src/stackops/scripts/python/fire_jobs.py +84 -0
  53. stackops-8.100/src/stackops/scripts/python/graph/cli_graph.json +20073 -0
  54. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_apps.py +147 -0
  55. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_eval.py +34 -0
  56. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_node_utils.py +57 -0
  57. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_nodes.py +204 -0
  58. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_registration.py +87 -0
  59. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_resolver.py +218 -0
  60. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_shared.py +85 -0
  61. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_signature.py +207 -0
  62. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_targets.py +103 -0
  63. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_tree.py +75 -0
  64. stackops-8.100/src/stackops/scripts/python/graph/cli_graph_values.py +232 -0
  65. stackops-8.100/src/stackops/scripts/python/graph/generate_cli_graph.py +34 -0
  66. stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +211 -0
  67. stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +219 -0
  68. stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_typer_app.py +85 -0
  69. stackops-8.100/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +20 -0
  70. stackops-8.100/src/stackops/scripts/python/helpers/helper_env/env_manager_tui.py +227 -0
  71. stackops-8.100/src/stackops/scripts/python/helpers/helper_env/path_manager_tui.py +250 -0
  72. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +413 -0
  73. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +226 -0
  74. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +32 -0
  75. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +41 -0
  76. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +171 -0
  77. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +127 -0
  78. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +327 -0
  79. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +521 -0
  80. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_add_entry.py +95 -0
  81. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +203 -0
  82. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +175 -0
  83. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +263 -0
  84. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_yaml_defaults.py +56 -0
  85. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +180 -0
  86. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +368 -0
  87. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +252 -0
  88. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_shell.py +95 -0
  89. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +98 -0
  90. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +131 -0
  91. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +280 -0
  92. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_helper_types.py +83 -0
  93. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +637 -0
  94. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +121 -0
  95. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +91 -0
  96. stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +31 -0
  97. stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mont_tmux.py +41 -0
  98. stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +197 -0
  99. stackops-8.100/src/stackops/scripts/python/helpers/helpers_croshell/croshell_impl.py +328 -0
  100. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +239 -0
  101. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +256 -0
  102. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +472 -0
  103. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +123 -0
  104. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +159 -0
  105. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +157 -0
  106. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +232 -0
  107. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +158 -0
  108. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +444 -0
  109. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +361 -0
  110. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/__init__.py +1 -0
  111. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/app.py +35 -0
  112. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_docs.py +184 -0
  113. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_installer.py +175 -0
  114. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_logic.py +253 -0
  115. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_test.py +186 -0
  116. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflow_capture.py +99 -0
  117. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflows_yaml.py +165 -0
  118. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +56 -0
  119. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +167 -0
  120. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +218 -0
  121. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +165 -0
  122. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +107 -0
  123. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +216 -0
  124. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +190 -0
  125. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +245 -0
  126. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +30 -0
  127. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +17 -0
  128. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +204 -0
  129. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +248 -0
  130. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +39 -0
  131. stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +42 -0
  132. stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +146 -0
  133. stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +299 -0
  134. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/address.py +264 -0
  135. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +138 -0
  136. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +181 -0
  137. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/common.py +40 -0
  138. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/darwin.py +103 -0
  139. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/linux.py +263 -0
  140. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/unsupported.py +47 -0
  141. stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/windows.py +148 -0
  142. stackops-8.100/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +458 -0
  143. stackops-8.100/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +91 -0
  144. stackops-8.100/src/stackops/scripts/python/helpers/helpers_search/semantic_search.py +25 -0
  145. stackops-8.100/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +465 -0
  146. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +207 -0
  147. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +143 -0
  148. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend.py +277 -0
  149. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +126 -0
  150. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +218 -0
  151. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +278 -0
  152. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +196 -0
  153. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +85 -0
  154. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +71 -0
  155. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_aoe.py +174 -0
  156. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +261 -0
  157. stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +100 -0
  158. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +187 -0
  159. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +139 -0
  160. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +97 -0
  161. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +420 -0
  162. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/python.py +325 -0
  163. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +37 -0
  164. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui_backend.py +380 -0
  165. stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/specs.py +312 -0
  166. stackops-8.100/src/stackops/scripts/python/seek.py +73 -0
  167. stackops-8.100/src/stackops/scripts/python/stackops_entry.py +153 -0
  168. stackops-8.100/src/stackops/scripts/python/terminal.py +515 -0
  169. stackops-8.100/src/stackops/scripts/setup/linux/interactive.sh +31 -0
  170. stackops-8.100/src/stackops/scripts/setup/windows/interactive.ps1 +33 -0
  171. stackops-8.100/src/stackops/settings/psmux/__init__.py +1 -0
  172. stackops-8.100/src/stackops/settings/psmux/description.md +7 -0
  173. stackops-8.100/src/stackops/settings/psmux/install-ppm.ps1 +27 -0
  174. stackops-8.100/src/stackops/settings/psmux/psmux.bindings.conf +47 -0
  175. stackops-8.100/src/stackops/settings/psmux/psmux.conf +33 -0
  176. stackops-8.100/src/stackops/settings/psmux/psmux.local.conf +12 -0
  177. stackops-8.100/src/stackops/settings/psmux/psmux.plugins.conf +14 -0
  178. stackops-8.100/src/stackops/settings/psmux/psmux.powerline.conf +4 -0
  179. stackops-8.100/src/stackops/settings/psmux/psmux.theme.conf +24 -0
  180. stackops-8.100/src/stackops/settings/shells/bash/init.sh +107 -0
  181. stackops-8.100/src/stackops/settings/shells/kitty/kitty.conf +1475 -0
  182. stackops-8.100/src/stackops/settings/shells/pwsh/init.ps1 +156 -0
  183. stackops-8.100/src/stackops/settings/shells/zsh/init.sh +95 -0
  184. stackops-8.100/src/stackops/settings/television/cable_unix/__init__.py +53 -0
  185. stackops-8.100/src/stackops/settings/television/cable_unix/apt-packages.toml +21 -0
  186. stackops-8.100/src/stackops/settings/television/cable_unix/brew-packages.toml +30 -0
  187. stackops-8.100/src/stackops/settings/television/cable_unix/diskutil.toml +45 -0
  188. stackops-8.100/src/stackops/settings/television/cable_unix/dotfiles.toml +19 -0
  189. stackops-8.100/src/stackops/settings/television/cable_unix/downloads.toml +31 -0
  190. stackops-8.100/src/stackops/settings/television/cable_unix/figlet-fonts.toml +10 -0
  191. stackops-8.100/src/stackops/settings/television/cable_unix/files.toml +31 -0
  192. stackops-8.100/src/stackops/settings/television/cable_unix/fonts.toml +13 -0
  193. stackops-8.100/src/stackops/settings/television/cable_unix/git-diff.toml +34 -0
  194. stackops-8.100/src/stackops/settings/television/cable_unix/git-files.toml +20 -0
  195. stackops-8.100/src/stackops/settings/television/cable_unix/git-repos.toml +31 -0
  196. stackops-8.100/src/stackops/settings/television/cable_unix/git-tags.toml +26 -0
  197. stackops-8.100/src/stackops/settings/television/cable_unix/git-worktrees.toml +24 -0
  198. stackops-8.100/src/stackops/settings/television/cable_unix/images.toml +21 -0
  199. stackops-8.100/src/stackops/settings/television/cable_unix/linux-disks.toml +38 -0
  200. stackops-8.100/src/stackops/settings/television/cable_unix/mounts.toml +21 -0
  201. stackops-8.100/src/stackops/settings/television/cable_unix/npm-packages.toml +20 -0
  202. stackops-8.100/src/stackops/settings/television/cable_unix/path.toml +15 -0
  203. stackops-8.100/src/stackops/settings/television/cable_unix/ports.toml +19 -0
  204. stackops-8.100/src/stackops/settings/television/cable_unix/python-venvs.toml +20 -0
  205. stackops-8.100/src/stackops/settings/television/cable_unix/recent-files.toml +23 -0
  206. stackops-8.100/src/stackops/settings/television/cable_unix/sesh.toml +39 -0
  207. stackops-8.100/src/stackops/settings/television/cable_unix/text.toml +29 -0
  208. stackops-8.100/src/stackops/settings/television/cable_unix/tmux-sessions.toml +22 -0
  209. stackops-8.100/src/stackops/settings/television/cable_unix/tmux-windows.toml +22 -0
  210. stackops-8.100/src/stackops/settings/television/cable_unix/todo-comments.toml +26 -0
  211. stackops-8.100/src/stackops/settings/television/cable_unix/trash.toml +26 -0
  212. stackops-8.100/src/stackops/settings/television/cable_unix/unicode.toml +43 -0
  213. stackops-8.100/src/stackops/settings/television/cable_unix/wifi.toml +17 -0
  214. stackops-8.100/src/stackops/settings/television/cable_unix/zoxide.toml +26 -0
  215. stackops-8.100/src/stackops/settings/television/cable_windows/alias.toml +8 -0
  216. stackops-8.100/src/stackops/settings/television/cable_windows/dotfiles.toml +11 -0
  217. stackops-8.100/src/stackops/settings/television/cable_windows/files.toml +17 -0
  218. stackops-8.100/src/stackops/settings/television/cable_windows/text.toml +17 -0
  219. stackops-8.100/src/stackops/settings/wt/set_wt_settings.py +128 -0
  220. stackops-8.100/src/stackops/settings/yazi/keymap_darwin.toml +189 -0
  221. stackops-8.100/src/stackops/settings/yazi/keymap_linux.toml +183 -0
  222. stackops-8.100/src/stackops/settings/yazi/keymap_windows.toml +182 -0
  223. stackops-8.100/src/stackops/settings/yazi/scripts/copy_file_content.py +82 -0
  224. stackops-8.100/src/stackops/settings/yazi/scripts/fullscreen_preview.py +348 -0
  225. stackops-8.100/src/stackops/settings/yazi/scripts/interactive_view.py +126 -0
  226. stackops-8.100/src/stackops/settings/yazi/scripts/open_default_app.py +290 -0
  227. stackops-8.100/src/stackops/settings/yazi/scripts/serve_browser_file.py +251 -0
  228. stackops-8.100/src/stackops/settings/yazi/yazi_darwin.toml +90 -0
  229. stackops-8.100/src/stackops/settings/yazi/yazi_linux.toml +90 -0
  230. stackops-8.100/src/stackops/settings/yazi/yazi_windows.toml +94 -0
  231. stackops-8.100/src/stackops/utils/cli_utils/hierarchy.py +1397 -0
  232. stackops-8.100/src/stackops/utils/cli_utils/hierarchy_types.py +1659 -0
  233. stackops-8.100/src/stackops/utils/files/headers.py +69 -0
  234. stackops-8.100/src/stackops/utils/files/ouch/__init__.py +0 -0
  235. stackops-8.100/src/stackops/utils/installer_utils/install_from_url.py +259 -0
  236. stackops-8.100/src/stackops/utils/installer_utils/install_request_logic.py +86 -0
  237. stackops-8.100/src/stackops/utils/installer_utils/installer_class.py +389 -0
  238. stackops-8.100/src/stackops/utils/installer_utils/installer_cli.py +245 -0
  239. stackops-8.100/src/stackops/utils/installer_utils/installer_helper.py +175 -0
  240. stackops-8.100/src/stackops/utils/installer_utils/installer_locator_utils.py +377 -0
  241. stackops-8.100/src/stackops/utils/installer_utils/installer_offline.py +71 -0
  242. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_constants.py +72 -0
  243. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_models.py +40 -0
  244. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_publish.py +101 -0
  245. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_render.py +68 -0
  246. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_scripts.py +142 -0
  247. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_steps.py +45 -0
  248. stackops-8.100/src/stackops/utils/installer_utils/installer_offline_uv.py +109 -0
  249. stackops-8.100/src/stackops/utils/options.py +324 -0
  250. stackops-8.100/src/stackops/utils/options_utils/__init__.py +0 -0
  251. stackops-8.100/src/stackops/utils/options_utils/options_tv_windows.py +100 -0
  252. stackops-8.100/src/stackops/utils/options_utils/textual_options_form_types.py +107 -0
  253. stackops-8.100/src/stackops/utils/procs.py +274 -0
  254. stackops-8.100/src/stackops/utils/rclone_wrapper.py +165 -0
  255. stackops-8.100/src/stackops/utils/repo_stackops.py +39 -0
  256. stackops-8.100/src/stackops/utils/schemas/__init__.py +1 -0
  257. stackops-8.100/src/stackops/utils/schemas/installer/installer_type.schema.json +94 -0
  258. stackops-8.100/src/stackops/utils/schemas/layouts/layout.json +23 -0
  259. stackops-8.100/src/stackops/utils/schemas/layouts/layout.schema.json +75 -0
  260. stackops-8.100/src/stackops/utils/schemas/repos/repos_schema.json +87 -0
  261. stackops-8.100/src/stackops/utils/source_of_truth.py +35 -0
  262. stackops-8.100/src/stackops/utils/ssh.py +468 -0
  263. stackops-8.100/src/stackops/utils/ssh_utils/abc.py +5 -0
  264. stackops-8.100/src/stackops/utils/ssh_utils/wsl.py +172 -0
  265. stackops-8.100/src/stackops/utils/upgrade_packages.py +356 -0
  266. stackops-8.100/src/stackops.egg-info/PKG-INFO +118 -0
  267. stackops-8.100/src/stackops.egg-info/SOURCES.txt +883 -0
  268. stackops-8.100/tests/test_install_request_logic.py +18 -0
  269. stackops-8.100/tests/test_layout_maker_stagger.py +76 -0
  270. stackops-8.100/tests/test_oz_agent_support.py +75 -0
  271. stackops-8.100/tests/test_rmpc_installer.py +43 -0
  272. stackops-8.98/PKG-INFO +0 -175
  273. stackops-8.98/README.md +0 -147
  274. stackops-8.98/pyproject.toml +0 -163
  275. stackops-8.98/src/stackops/cluster/remote/remote_machine.py +0 -320
  276. stackops-8.98/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +0 -145
  277. stackops-8.98/src/stackops/cluster/sessions_managers/session_conflict.py +0 -377
  278. stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +0 -234
  279. stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +0 -181
  280. stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_helpers.py +0 -392
  281. stackops-8.98/src/stackops/cluster/sessions_managers/utils/load_balancer.py +0 -54
  282. stackops-8.98/src/stackops/cluster/sessions_managers/utils/maker.py +0 -77
  283. stackops-8.98/src/stackops/jobs/installer/checks/install_utils.py +0 -154
  284. stackops-8.98/src/stackops/jobs/installer/checks/security_cli.py +0 -190
  285. stackops-8.98/src/stackops/jobs/installer/installer_data.json +0 -4523
  286. stackops-8.98/src/stackops/jobs/installer/linux_scripts/__init__.py +0 -12
  287. stackops-8.98/src/stackops/jobs/installer/linux_scripts/nerdfont.sh +0 -47
  288. stackops-8.98/src/stackops/jobs/installer/package_groups.py +0 -302
  289. stackops-8.98/src/stackops/jobs/installer/powershell_scripts/__init__.py +0 -3
  290. stackops-8.98/src/stackops/jobs/installer/python_scripts/nerdfont.py +0 -122
  291. stackops-8.98/src/stackops/jobs/installer/python_scripts/nerfont_windows_helper.py +0 -168
  292. stackops-8.98/src/stackops/jobs/installer/python_scripts/redis.py +0 -99
  293. stackops-8.98/src/stackops/jobs/installer/python_scripts/wezterm.py +0 -103
  294. stackops-8.98/src/stackops/profile/create_links.py +0 -428
  295. stackops-8.98/src/stackops/profile/create_links_export.py +0 -120
  296. stackops-8.98/src/stackops/profile/mapper_dotfiles.yaml +0 -721
  297. stackops-8.98/src/stackops/scripts/python/agents.py +0 -289
  298. stackops-8.98/src/stackops/scripts/python/agents_browser.py +0 -83
  299. stackops-8.98/src/stackops/scripts/python/agents_parallel_commands.py +0 -158
  300. stackops-8.98/src/stackops/scripts/python/agents_parallel_run_command.py +0 -108
  301. stackops-8.98/src/stackops/scripts/python/ai/initai.py +0 -188
  302. stackops-8.98/src/stackops/scripts/python/ai/scripts/models_config.py +0 -319
  303. stackops-8.98/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -91
  304. stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/__init__.py +0 -2
  305. stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/gemini.py +0 -30
  306. stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/instructions.md +0 -42
  307. stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/settings.json +0 -86
  308. stackops-8.98/src/stackops/scripts/python/ai/utils/generate_files.py +0 -348
  309. stackops-8.98/src/stackops/scripts/python/cloud.py +0 -100
  310. stackops-8.98/src/stackops/scripts/python/croshell.py +0 -35
  311. stackops-8.98/src/stackops/scripts/python/devops.py +0 -149
  312. stackops-8.98/src/stackops/scripts/python/enums.py +0 -19
  313. stackops-8.98/src/stackops/scripts/python/fire_jobs.py +0 -88
  314. stackops-8.98/src/stackops/scripts/python/graph/cli_graph.json +0 -18513
  315. stackops-8.98/src/stackops/scripts/python/graph/generate_cli_graph.py +0 -1372
  316. stackops-8.98/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +0 -208
  317. stackops-8.98/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +0 -211
  318. stackops-8.98/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +0 -20
  319. stackops-8.98/src/stackops/scripts/python/helpers/helper_env/env_manager_tui.py +0 -227
  320. stackops-8.98/src/stackops/scripts/python/helpers/helper_env/path_manager_tui.py +0 -250
  321. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +0 -400
  322. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +0 -218
  323. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +0 -24
  324. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +0 -41
  325. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +0 -48
  326. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +0 -189
  327. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +0 -127
  328. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +0 -293
  329. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +0 -328
  330. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +0 -208
  331. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +0 -143
  332. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +0 -229
  333. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +0 -205
  334. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +0 -331
  335. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +0 -174
  336. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +0 -91
  337. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +0 -178
  338. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +0 -251
  339. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_helper_types.py +0 -82
  340. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +0 -534
  341. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +0 -138
  342. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +0 -19
  343. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +0 -79
  344. stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +0 -14
  345. stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mont_tmux.py +0 -39
  346. stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +0 -192
  347. stackops-8.98/src/stackops/scripts/python/helpers/helpers_croshell/croshell_impl.py +0 -252
  348. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +0 -230
  349. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +0 -195
  350. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +0 -391
  351. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +0 -112
  352. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +0 -135
  353. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +0 -126
  354. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +0 -193
  355. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +0 -152
  356. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +0 -360
  357. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +0 -252
  358. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/app.py +0 -28
  359. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_docs.py +0 -143
  360. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_installer.py +0 -146
  361. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_test.py +0 -168
  362. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflow_capture.py +0 -88
  363. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflows_yaml.py +0 -183
  364. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +0 -58
  365. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +0 -137
  366. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +0 -155
  367. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +0 -128
  368. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +0 -64
  369. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +0 -168
  370. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +0 -163
  371. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +0 -245
  372. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +0 -25
  373. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +0 -17
  374. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +0 -187
  375. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +0 -245
  376. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +0 -41
  377. stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +0 -48
  378. stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +0 -148
  379. stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +0 -324
  380. stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/address.py +0 -172
  381. stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +0 -87
  382. stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +0 -372
  383. stackops-8.98/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +0 -420
  384. stackops-8.98/src/stackops/scripts/python/helpers/helpers_search/symantic_search.py +0 -25
  385. stackops-8.98/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +0 -456
  386. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +0 -193
  387. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +0 -136
  388. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend.py +0 -270
  389. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +0 -117
  390. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +0 -218
  391. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +0 -278
  392. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +0 -199
  393. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +0 -83
  394. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +0 -64
  395. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_aoe.py +0 -174
  396. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +0 -263
  397. stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +0 -79
  398. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +0 -88
  399. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +0 -127
  400. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +0 -95
  401. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +0 -273
  402. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/python.py +0 -333
  403. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +0 -224
  404. stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/specs.py +0 -244
  405. stackops-8.98/src/stackops/scripts/python/seek.py +0 -43
  406. stackops-8.98/src/stackops/scripts/python/stackops_entry.py +0 -129
  407. stackops-8.98/src/stackops/scripts/python/terminal.py +0 -403
  408. stackops-8.98/src/stackops/scripts/setup/linux/interactive.sh +0 -31
  409. stackops-8.98/src/stackops/scripts/setup/windows/interactive.ps1 +0 -33
  410. stackops-8.98/src/stackops/settings/shells/bash/init.sh +0 -106
  411. stackops-8.98/src/stackops/settings/shells/kitty/kitty.conf +0 -1476
  412. stackops-8.98/src/stackops/settings/shells/pwsh/init.ps1 +0 -155
  413. stackops-8.98/src/stackops/settings/shells/zsh/init.sh +0 -94
  414. stackops-8.98/src/stackops/settings/television/cable_unix/__init__.py +0 -28
  415. stackops-8.98/src/stackops/settings/television/cable_unix/dotfiles.toml +0 -18
  416. stackops-8.98/src/stackops/settings/television/cable_unix/files.toml +0 -27
  417. stackops-8.98/src/stackops/settings/television/cable_unix/git-diff.toml +0 -33
  418. stackops-8.98/src/stackops/settings/television/cable_unix/git-repos.toml +0 -30
  419. stackops-8.98/src/stackops/settings/television/cable_unix/text.toml +0 -28
  420. stackops-8.98/src/stackops/settings/television/cable_windows/alias.toml +0 -7
  421. stackops-8.98/src/stackops/settings/television/cable_windows/dotfiles.toml +0 -11
  422. stackops-8.98/src/stackops/settings/television/cable_windows/files.toml +0 -14
  423. stackops-8.98/src/stackops/settings/television/cable_windows/text.toml +0 -17
  424. stackops-8.98/src/stackops/settings/wt/set_wt_settings.py +0 -141
  425. stackops-8.98/src/stackops/settings/yazi/keymap_darwin.toml +0 -179
  426. stackops-8.98/src/stackops/settings/yazi/keymap_linux.toml +0 -173
  427. stackops-8.98/src/stackops/settings/yazi/keymap_windows.toml +0 -172
  428. stackops-8.98/src/stackops/settings/yazi/scripts/fullscreen_preview.py +0 -348
  429. stackops-8.98/src/stackops/settings/yazi/scripts/interactive_view.py +0 -104
  430. stackops-8.98/src/stackops/settings/yazi/scripts/serve_browser_file.py +0 -265
  431. stackops-8.98/src/stackops/settings/yazi/yazi_darwin.toml +0 -90
  432. stackops-8.98/src/stackops/settings/yazi/yazi_linux.toml +0 -90
  433. stackops-8.98/src/stackops/settings/yazi/yazi_windows.toml +0 -95
  434. stackops-8.98/src/stackops/settings/zed/__init__.py +0 -1
  435. stackops-8.98/src/stackops/utils/files/headers.py +0 -69
  436. stackops-8.98/src/stackops/utils/installer_utils/install_from_url.py +0 -194
  437. stackops-8.98/src/stackops/utils/installer_utils/install_request_logic.py +0 -86
  438. stackops-8.98/src/stackops/utils/installer_utils/installer_class.py +0 -375
  439. stackops-8.98/src/stackops/utils/installer_utils/installer_cli.py +0 -231
  440. stackops-8.98/src/stackops/utils/installer_utils/installer_helper.py +0 -147
  441. stackops-8.98/src/stackops/utils/installer_utils/installer_locator_utils.py +0 -212
  442. stackops-8.98/src/stackops/utils/installer_utils/installer_offline.py +0 -330
  443. stackops-8.98/src/stackops/utils/options.py +0 -325
  444. stackops-8.98/src/stackops/utils/options_utils/options_tv_windows.py +0 -88
  445. stackops-8.98/src/stackops/utils/options_utils/textual_options_form_types.py +0 -107
  446. stackops-8.98/src/stackops/utils/procs.py +0 -267
  447. stackops-8.98/src/stackops/utils/rclone_wrapper.py +0 -134
  448. stackops-8.98/src/stackops/utils/repo_stackops.py +0 -34
  449. stackops-8.98/src/stackops/utils/source_of_truth.py +0 -35
  450. stackops-8.98/src/stackops/utils/ssh.py +0 -468
  451. stackops-8.98/src/stackops/utils/ssh_utils/abc.py +0 -5
  452. stackops-8.98/src/stackops/utils/ssh_utils/wsl.py +0 -147
  453. stackops-8.98/src/stackops/utils/upgrade_packages.py +0 -249
  454. stackops-8.98/src/stackops.egg-info/PKG-INFO +0 -175
  455. stackops-8.98/src/stackops.egg-info/SOURCES.txt +0 -798
  456. stackops-8.98/tests/test_cli_self_ai_app.py +0 -26
  457. stackops-8.98/tests/test_path_reference_usage.py +0 -448
  458. {stackops-8.98 → stackops-8.100}/MANIFEST.in +0 -0
  459. {stackops-8.98 → stackops-8.100}/setup.cfg +0 -0
  460. {stackops-8.98 → stackops-8.100}/src/stackops/__init__.py +0 -0
  461. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/__init__.py +0 -0
  462. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/__init__.py +0 -0
  463. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/cloud_manager.py +0 -0
  464. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/data_transfer.py +0 -0
  465. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/distribute.py +0 -0
  466. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/execution_script.py +0 -0
  467. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/file_manager.py +0 -0
  468. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/job_params.py +0 -0
  469. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/models.py +0 -0
  470. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/notification.py +0 -0
  471. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/__init__.py +0 -0
  472. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/helpers/enhanced_command_runner.py +0 -0
  473. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/session_exit_mode.py +0 -0
  474. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/tmux/__init__.py +0 -0
  475. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/utils/__init__.py +0 -0
  476. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/__init__.py +0 -0
  477. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_local.py +0 -0
  478. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_local_manager.py +0 -0
  479. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_remote.py +0 -0
  480. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_remote_manager.py +0 -0
  481. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/examples/__init__.py +0 -0
  482. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/examples/wt_local_manager_demo.py +0 -0
  483. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/layout_generator.py +0 -0
  484. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/local_monitoring.py +0 -0
  485. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/manager_persistence.py +0 -0
  486. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/monitoring_helpers.py +0 -0
  487. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/process_monitor.py +0 -0
  488. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/remote_executor.py +0 -0
  489. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/session_manager.py +0 -0
  490. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/status_reporter.py +0 -0
  491. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/status_reporting.py +0 -0
  492. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/wt_helpers.py +0 -0
  493. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/__init__.py +0 -0
  494. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_local.py +0 -0
  495. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_local_manager.py +0 -0
  496. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_remote.py +0 -0
  497. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_remote_manager.py +0 -0
  498. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/example_usage.py +0 -0
  499. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/layout_generator.py +0 -0
  500. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/monitoring_types.py +0 -0
  501. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/process_monitor.py +0 -0
  502. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/remote_executor.py +0 -0
  503. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/session_manager.py +0 -0
  504. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/status_reporter.py +0 -0
  505. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper.py +0 -0
  506. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper_restart.py +0 -0
  507. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper_with_panes.py +0 -0
  508. {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_manager_helper.py +0 -0
  509. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/__init__.py +0 -0
  510. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/__init__.py +0 -0
  511. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/mcp.json +0 -0
  512. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/mcp.schema.json +0 -0
  513. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/__init__.py +0 -0
  514. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/__init__.py +0 -0
  515. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/check_installations.py +0 -0
  516. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/report_utils.py +0 -0
  517. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/security_helper.py +0 -0
  518. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/vt_utils.py +0 -0
  519. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/brave.sh +0 -0
  520. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/cloudflare_warp_cli.sh +0 -0
  521. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/edge.sh +0 -0
  522. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/network.sh +0 -0
  523. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/ngrok.sh +0 -0
  524. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/q.sh +0 -0
  525. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/redis.sh +0 -0
  526. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/sysabc_macos.sh +0 -0
  527. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/sysabc_ubuntu.sh +0 -0
  528. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/vscode.sh +0 -0
  529. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/wezterm.sh +0 -0
  530. {stackops-8.98/src/stackops/jobs/installer/python_scripts → stackops-8.100/src/stackops/jobs/installer/macos_scripts}/__init__.py +0 -0
  531. /stackops-8.98/src/stackops/jobs/installer/powershell_scripts/install_fonts.ps1 → /stackops-8.100/src/stackops/jobs/installer/powershell_scripts/nerdfonts.ps1 +0 -0
  532. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/powershell_scripts/sysabc.ps1 +0 -0
  533. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/powershell_scripts/texlive.ps1 +0 -0
  534. {stackops-8.98/src/stackops/scripts → stackops-8.100/src/stackops/jobs/installer/python_scripts}/__init__.py +0 -0
  535. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/alacritty.py +0 -0
  536. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/boxes.py +0 -0
  537. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/brave.py +0 -0
  538. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/bypass_paywall.py +0 -0
  539. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/cloudflare_warp_cli.py +0 -0
  540. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/code.py +0 -0
  541. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/cursor.py +0 -0
  542. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/docker.py +0 -0
  543. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/dubdb_adbc.py +0 -0
  544. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/espanso.py +0 -0
  545. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/goes.py +0 -0
  546. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/hx.py +0 -0
  547. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/lvim.py +0 -0
  548. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/main_protocol.py +0 -0
  549. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/orca.py +0 -0
  550. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/poppler.py +0 -0
  551. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/sysabc.py +0 -0
  552. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/winget.py +0 -0
  553. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/yazi.py +0 -0
  554. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/todo.md +0 -0
  555. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/__init__.py +0 -0
  556. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/hollywood.sh +0 -0
  557. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/lid.sh +0 -0
  558. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/powershell_scripts/__init__.py +0 -0
  559. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/powershell_scripts/cmatrix.ps1 +0 -0
  560. {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts_dynamic/a.py +0 -0
  561. {stackops-8.98 → stackops-8.100}/src/stackops/logger.py +0 -0
  562. {stackops-8.98 → stackops-8.100}/src/stackops/profile/__init__.py +0 -0
  563. {stackops-8.98 → stackops-8.100}/src/stackops/profile/create_helper.py +0 -0
  564. {stackops-8.98 → stackops-8.100}/src/stackops/profile/create_shell_profile.py +0 -0
  565. {stackops-8.98 → stackops-8.100}/src/stackops/profile/dotfiles_mapper.py +0 -0
  566. {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_data.schema.json +0 -0
  567. {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_data.yaml +0 -0
  568. {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_dotfiles.schema.json +0 -0
  569. {stackops-8.98/src/stackops/scripts/python → stackops-8.100/src/stackops/scripts}/__init__.py +0 -0
  570. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/linux/__init__.py +0 -0
  571. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/linux/wrap_stackops +0 -0
  572. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/nu/__init__.py +0 -0
  573. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/nu/wrap_stackops.nu +0 -0
  574. {stackops-8.98/src/stackops/scripts/python/ai → stackops-8.100/src/stackops/scripts/python}/__init__.py +0 -0
  575. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/agents_parallel.py +0 -0
  576. {stackops-8.98/src/stackops/scripts/python/ai/solutions → stackops-8.100/src/stackops/scripts/python/ai}/__init__.py +0 -0
  577. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/__init__.py +0 -0
  578. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/command_runner.ps1 +0 -0
  579. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/command_runner.sh +0 -0
  580. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/dashboard.py +0 -0
  581. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/lint_and_type_check.py +0 -0
  582. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models.py +0 -0
  583. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_diagnostics.py +0 -0
  584. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_json.py +0 -0
  585. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_reports.py +0 -0
  586. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/paths.py +0 -0
  587. {stackops-8.98/src/stackops/scripts/python/ai/solutions/auggie → stackops-8.100/src/stackops/scripts/python/ai/solutions}/__init__.py +0 -0
  588. {stackops-8.98/src/stackops/scripts/python/ai/solutions/forge → stackops-8.100/src/stackops/scripts/python/ai/solutions/antigravity}/__init__.py +0 -0
  589. {stackops-8.98/src/stackops/scripts/python/ai/solutions/copilot → stackops-8.100/src/stackops/scripts/python/ai/solutions/auggie}/__init__.py +0 -0
  590. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/auggie/auggie.py +0 -0
  591. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/claude/claude.py +0 -0
  592. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/cline/cline.py +0 -0
  593. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/__init__.py +0 -0
  594. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/codex.py +0 -0
  595. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/config.toml +0 -0
  596. {stackops-8.98/src/stackops/scripts/python/ai/solutions/droid → stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot}/__init__.py +0 -0
  597. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/Thinking-Beast-Mode.agent.md +0 -0
  598. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md +0 -0
  599. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/__init__.py +0 -0
  600. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/deepResearch.agent.md +0 -0
  601. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  602. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/watch_exec.prompt.md +0 -0
  603. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/__init__.py +0 -0
  604. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/__init__.py +0 -0
  605. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
  606. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  607. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/__init__.py +0 -0
  608. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/crush.json +0 -0
  609. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/crush.py +0 -0
  610. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/privacy.md +0 -0
  611. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  612. {stackops-8.98/src/stackops/scripts/python/ai/solutions/q → stackops-8.100/src/stackops/scripts/python/ai/solutions/droid}/__init__.py +0 -0
  613. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/droid/droid.py +0 -0
  614. {stackops-8.98/src/stackops/scripts/python/ai/solutions/pi → stackops-8.100/src/stackops/scripts/python/ai/solutions/forge}/__init__.py +0 -0
  615. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/forge/forge.py +0 -0
  616. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/__init__.py +0 -0
  617. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/kilocode.py +0 -0
  618. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  619. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/__init__.py +0 -0
  620. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/opencode.jsonc +0 -0
  621. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  622. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive → stackops-8.100/src/stackops/scripts/python/ai/solutions/oz}/__init__.py +0 -0
  623. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie → stackops-8.100/src/stackops/scripts/python/ai/solutions/pi}/__init__.py +0 -0
  624. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/pi/pi.py +0 -0
  625. {stackops-8.98/src/stackops/scripts/python/ai/solutions/qwen_code → stackops-8.100/src/stackops/scripts/python/ai/solutions/q}/__init__.py +0 -0
  626. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/q/amazon_q.py +0 -0
  627. {stackops-8.98/src/stackops/scripts/python/ai/solutions/warp → stackops-8.100/src/stackops/scripts/python/ai/solutions/qwen_code}/__init__.py +0 -0
  628. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/qwen_code/qwen_code.py +0 -0
  629. {stackops-8.98/src/stackops/scripts/python/ai/utils → stackops-8.100/src/stackops/scripts/python/ai/solutions/warp}/__init__.py +0 -0
  630. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/warp/warp.py +0 -0
  631. {stackops-8.98/src/stackops/scripts/python/graph/visualize → stackops-8.100/src/stackops/scripts/python/ai/utils}/__init__.py +0 -0
  632. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/generic.py +0 -0
  633. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/shared.py +0 -0
  634. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/vscode_tasks.py +0 -0
  635. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ftpx.py +0 -0
  636. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/__init__.py +0 -0
  637. {stackops-8.98/src/stackops/scripts/python/graph/visualize/helpers_navigator → stackops-8.100/src/stackops/scripts/python/graph/visualize}/__init__.py +0 -0
  638. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/dot_export.py +0 -0
  639. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/graph_data.py +0 -0
  640. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/graph_paths.py +0 -0
  641. {stackops-8.98/src/stackops/scripts/python/helpers → stackops-8.100/src/stackops/scripts/python/graph/visualize/helpers_navigator}/__init__.py +0 -0
  642. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/cli_graph_loader.py +0 -0
  643. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_builder.py +0 -0
  644. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_detail.py +0 -0
  645. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_tree.py +0 -0
  646. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/data_models.py +0 -0
  647. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/main_app.py +0 -0
  648. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/search_bar.py +0 -0
  649. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/plotly_browser.py +0 -0
  650. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/plotly_views.py +0 -0
  651. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/rich_tree.py +0 -0
  652. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents → stackops-8.100/src/stackops/scripts/python/helpers}/__init__.py +0 -0
  653. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helper_env/__init__.py +0 -0
  654. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helper_env/path_manager_backend.py +0 -0
  655. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents}/__init__.py +0 -0
  656. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive}/__init__.py +0 -0
  657. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/common.py +0 -0
  658. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/__init__.py +0 -0
  659. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_codex.py +0 -0
  660. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.json +0 -0
  661. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_cursor_agents.py +0 -0
  662. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_pi.py +0 -0
  663. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +0 -0
  664. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_constants.py +0 -0
  665. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_guides.py +0 -0
  666. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_impl.py +0 -0
  667. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_inputs.py +0 -0
  668. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_mcp_impl.py +0 -0
  669. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/__init__.py +0 -0
  670. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/agent-browser.md +0 -0
  671. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp-browser-url.mcp.json +0 -0
  672. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.mcp.json +0 -0
  673. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.md +0 -0
  674. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-cdp.mcp.json +0 -0
  675. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-extension.mcp.json +0 -0
  676. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-storage-state.mcp.json +0 -0
  677. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-user-data-dir.mcp.json +0 -0
  678. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.mcp.json +0 -0
  679. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.md +0 -0
  680. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_search.py +0 -0
  681. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_load_balancer.py +0 -0
  682. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/mcp_catalog.py +0 -0
  683. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/mcp_types.py +0 -0
  684. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/__init__.py +0 -0
  685. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +0 -0
  686. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +0 -0
  687. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie}/__init__.py +0 -0
  688. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/auggie_privacy.py +0 -0
  689. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt}/__init__.py +0 -0
  690. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/chatgpt_privacy.py +0 -0
  691. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline}/__init__.py +0 -0
  692. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/cline_privacy.py +0 -0
  693. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex}/__init__.py +0 -0
  694. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/codex_privacy.py +0 -0
  695. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common}/__init__.py +0 -0
  696. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/__init__.py +0 -0
  697. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +0 -0
  698. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/__init__.py +0 -0
  699. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +0 -0
  700. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor}/__init__.py +0 -0
  701. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/cursor_privacy.py +0 -0
  702. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid}/__init__.py +0 -0
  703. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/droid_privacy.py +0 -0
  704. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode}/__init__.py +0 -0
  705. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/kilocode_privacy.py +0 -0
  706. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods}/__init__.py +0 -0
  707. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/mods_privacy.py +0 -0
  708. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode}/__init__.py +0 -0
  709. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q}/__init__.py +0 -0
  710. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/q_privacy.py +0 -0
  711. {stackops-8.98/src/stackops/utils/schemas → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen}/__init__.py +0 -0
  712. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/qwen_privacy.py +0 -0
  713. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/privacy.py +0 -0
  714. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/__init__.py +0 -0
  715. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/prompt.txt +0 -0
  716. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.sh +0 -0
  717. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_croshell → stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud}/__init__.py +0 -0
  718. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy.py +0 -0
  719. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_helpers.py +0 -0
  720. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount_zellij.py +0 -0
  721. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_sync.py +0 -0
  722. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/helpers2.py +0 -0
  723. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/helpers5.py +0 -0
  724. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops → stackops-8.100/src/stackops/scripts/python/helpers/helpers_croshell}/__init__.py +0 -0
  725. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/crosh.py +0 -0
  726. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/pomodoro.py +0 -0
  727. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/scheduler.py +0 -0
  728. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/start_slidev.py +0 -0
  729. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/viewer.py +0 -0
  730. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/viewer_template.py +0 -0
  731. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers → stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops}/__init__.py +0 -0
  732. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/backup_config.py +0 -0
  733. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw_vscode_share.py +0 -0
  734. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status.py +0 -0
  735. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_checks.py +0 -0
  736. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_display.py +0 -0
  737. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_update_repos.py +0 -0
  738. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command → stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers}/__init__.py +0 -0
  739. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/device_entry.py +0 -0
  740. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/macos.py +0 -0
  741. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/selection.py +0 -0
  742. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/utils.py +0 -0
  743. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/windows.py +0 -0
  744. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/__init__.py +0 -0
  745. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_pwsh_theme.ps1 +0 -0
  746. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_wezterm_theme.py +0 -0
  747. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_windows_terminal_theme.ps1 +0 -0
  748. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_network → stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command}/__init__.py +0 -0
  749. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/cloud_manager.py +0 -0
  750. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/f.py +0 -0
  751. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/file_wrangler.py +0 -0
  752. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_route_helper.py +0 -0
  753. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  754. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions → stackops-8.100/src/stackops/scripts/python/helpers/helpers_network}/__init__.py +0 -0
  755. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ftpx_impl.py +0 -0
  756. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/onetimeshare.py +0 -0
  757. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/__init__.py +0 -0
  758. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_key_windows.py +0 -0
  759. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_ssh_key.py +0 -0
  760. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_cloud_init.py +0 -0
  761. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin.py +0 -0
  762. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin_utils.py +0 -0
  763. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux.py +0 -0
  764. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux_utils.py +0 -0
  765. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows.py +0 -0
  766. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows_utils.py +0 -0
  767. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_deploy_key_remote.py +0 -0
  768. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/action.py +0 -0
  769. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/action_helper.py +0 -0
  770. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/clone.py +0 -0
  771. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/grource.py +0 -0
  772. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/record.py +0 -0
  773. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +0 -0
  774. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_2.py +0 -0
  775. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/sync.py +0 -0
  776. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/update.py +0 -0
  777. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/ast_search.py +0 -0
  778. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/qr_code.py +0 -0
  779. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/repo_rag.py +0 -0
  780. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/script_help.py +0 -0
  781. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/__init__.py +0 -0
  782. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/__init__.py +0 -0
  783. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/fzfg +0 -0
  784. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/search_with_context.sh +0 -0
  785. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/__init__.py +0 -0
  786. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/fzfg +0 -0
  787. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/__init__.py +0 -0
  788. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/fzfg.ps1 +0 -0
  789. {stackops-8.98/src/stackops/settings → stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions}/__init__.py +0 -0
  790. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_preview.py +0 -0
  791. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_processes.py +0 -0
  792. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_focus.py +0 -0
  793. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_layout.py +0 -0
  794. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_metadata.py +0 -0
  795. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_options.py +0 -0
  796. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_preview.py +0 -0
  797. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/kill_impl.py +0 -0
  798. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_zellij.py +0 -0
  799. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_display.py +0 -0
  800. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_tmux.py +0 -0
  801. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_zellij.py +0 -0
  802. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_impl.py +0 -0
  803. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_layout_source.py +0 -0
  804. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_multiprocess.py +0 -0
  805. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_test_layouts.py +0 -0
  806. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace.py +0 -0
  807. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/download.py +0 -0
  808. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/path_reference_validation.py +0 -0
  809. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/test_runtime.py +0 -0
  810. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/type_fix.py +0 -0
  811. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/utils.py +0 -0
  812. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/__init__.py +0 -0
  813. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/apps_desktop.sh +0 -0
  814. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/uv.sh +0 -0
  815. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/macos/__init__.py +0 -0
  816. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/macos/uv.sh +0 -0
  817. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/__init__.py +0 -0
  818. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/quick_init.ps1 +0 -0
  819. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/uv.ps1 +0 -0
  820. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/windows/__init__.py +0 -0
  821. {stackops-8.98 → stackops-8.100}/src/stackops/scripts/windows/wrap_stackops.ps1 +0 -0
  822. {stackops-8.98/src/stackops/settings/shells/ipy/profiles/default → stackops-8.100/src/stackops/settings}/__init__.py +0 -0
  823. {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/__init__.py +0 -0
  824. {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/config.toml +0 -0
  825. {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/themes/__init__.py +0 -0
  826. {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/themes/catppuccin-mocha-mauve.toml +0 -0
  827. {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/__init__.py +0 -0
  828. {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/br.sh +0 -0
  829. {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/brootcd.ps1 +0 -0
  830. {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/conf.toml +0 -0
  831. {stackops-8.98 → stackops-8.100}/src/stackops/settings/glow/__init__.py +0 -0
  832. {stackops-8.98 → stackops-8.100}/src/stackops/settings/glow/glow.yml +0 -0
  833. {stackops-8.98 → stackops-8.100}/src/stackops/settings/gromit-mpx/__init__.py +0 -0
  834. {stackops-8.98 → stackops-8.100}/src/stackops/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  835. {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/__init__.py +0 -0
  836. {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/config.toml +0 -0
  837. {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/languages.toml +0 -0
  838. {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/yazi-picker.sh +0 -0
  839. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keras/__init__.py +0 -0
  840. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keras/keras.json +0 -0
  841. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/config/__init__.py +0 -0
  842. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/config/default.yml +0 -0
  843. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/match/__init__.py +0 -0
  844. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/match/base.yml +0 -0
  845. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/kanata/__init__.py +0 -0
  846. {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/kanata/kanata.kbd +0 -0
  847. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/__init__.py +0 -0
  848. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/__init__.py +0 -0
  849. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/delete.sh +0 -0
  850. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/on-cd.sh +0 -0
  851. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/on-quit.sh +0 -0
  852. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/open.sh +0 -0
  853. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/paste.sh +0 -0
  854. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/pre-cd.sh +0 -0
  855. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/rename.sh +0 -0
  856. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/colors +0 -0
  857. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/__init__.py +0 -0
  858. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/cleaner.sh +0 -0
  859. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  860. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/lfcd.sh +0 -0
  861. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/previewer.sh +0 -0
  862. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/previewer_archive.sh +0 -0
  863. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/icons +0 -0
  864. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/lfrc +0 -0
  865. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/__init__.py +0 -0
  866. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/__init__.py +0 -0
  867. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/delete.ps1 +0 -0
  868. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  869. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  870. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/open.ps1 +0 -0
  871. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/paste.ps1 +0 -0
  872. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  873. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/rename.ps1 +0 -0
  874. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_tere.ps1 +0 -0
  875. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_zoxide.ps1 +0 -0
  876. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  877. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/colors +0 -0
  878. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/icons +0 -0
  879. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  880. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/lfcd.ps1 +0 -0
  881. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/lfrc +0 -0
  882. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/mkdir.ps1 +0 -0
  883. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/mkfile.ps1 +0 -0
  884. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/previewer.ps1 +0 -0
  885. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.flake8 +0 -0
  886. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.mypy.ini +0 -0
  887. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.pylintrc +0 -0
  888. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.ruff.toml +0 -0
  889. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/__init__.py +0 -0
  890. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/pyrefly.toml +0 -0
  891. {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/ty.toml +0 -0
  892. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/linux/__init__.py +0 -0
  893. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/linux/config.lua +0 -0
  894. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/__init__.py +0 -0
  895. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/archive/__init__.py +0 -0
  896. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/archive/config_additional.lua +0 -0
  897. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/config.lua +0 -0
  898. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/lua/user/__init__.py +0 -0
  899. {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  900. {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/__init__.py +0 -0
  901. {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/marimo.toml +0 -0
  902. {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/snippets/globalize.py +0 -0
  903. {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/__init__.py +0 -0
  904. {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/mprocs.yaml +0 -0
  905. {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/other +0 -0
  906. {stackops-8.98 → stackops-8.100}/src/stackops/settings/pistol/__init__.py +0 -0
  907. {stackops-8.98 → stackops-8.100}/src/stackops/settings/pistol/pistol.conf +0 -0
  908. {stackops-8.98 → stackops-8.100}/src/stackops/settings/presenterm/__init__.py +0 -0
  909. {stackops-8.98 → stackops-8.100}/src/stackops/settings/presenterm/config.yaml +0 -0
  910. {stackops-8.98 → stackops-8.100}/src/stackops/settings/procs/.procs.toml +0 -0
  911. {stackops-8.98 → stackops-8.100}/src/stackops/settings/pudb/__init__.py +0 -0
  912. {stackops-8.98 → stackops-8.100}/src/stackops/settings/pudb/pudb.cfg +0 -0
  913. {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/__init__.py +0 -0
  914. {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/config.rasi +0 -0
  915. {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/config_default.rasi +0 -0
  916. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/__init__.py +0 -0
  917. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/alacritty.toml +0 -0
  918. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/alacritty.yml +0 -0
  919. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/bash/__init__.py +0 -0
  920. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ghostty/__init__.py +0 -0
  921. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ghostty/config +0 -0
  922. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/hyper/.hyper.js +0 -0
  923. {stackops-8.98/src/stackops/settings/shells/ipy/profiles/default/startup → stackops-8.100/src/stackops/settings/shells/ipy/profiles/default}/__init__.py +0 -0
  924. {stackops-8.98/src/stackops/settings/wt → stackops-8.100/src/stackops/settings/shells/ipy/profiles/default/startup}/__init__.py +0 -0
  925. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  926. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/kitty/__init__.py +0 -0
  927. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/__init__.py +0 -0
  928. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/config.nu +0 -0
  929. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/env.nu +0 -0
  930. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/init.nu +0 -0
  931. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/pwsh/__init__.py +0 -0
  932. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/pwsh/search_pwsh_history.ps1 +0 -0
  933. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/starship/__init__.py +0 -0
  934. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/starship/starship.toml +0 -0
  935. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/vtm/__init__.py +0 -0
  936. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/vtm/settings.xml +0 -0
  937. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wezterm/__init__.py +0 -0
  938. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wezterm/wezterm.lua +0 -0
  939. {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/gemini → stackops-8.100/src/stackops/settings/shells/wt}/__init__.py +0 -0
  940. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wt/settings.json +0 -0
  941. {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/zsh/__init__.py +0 -0
  942. {stackops-8.98 → stackops-8.100}/src/stackops/settings/streamlit/__init__.py +0 -0
  943. {stackops-8.98 → stackops-8.100}/src/stackops/settings/streamlit/config.toml +0 -0
  944. {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/linux/__init__.py +0 -0
  945. {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/linux/init.toml +0 -0
  946. {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/windows/__init__.py +0 -0
  947. {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/windows/init.toml +0 -0
  948. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/alias.toml +0 -0
  949. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/aws-buckets.toml +0 -0
  950. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/aws-instances.toml +0 -0
  951. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/bash-history.toml +0 -0
  952. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/channels.toml +0 -0
  953. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/dirs.toml +0 -0
  954. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/distrobox-list.toml +0 -0
  955. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/docker-images.toml +0 -0
  956. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/env.toml +0 -0
  957. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/fish-history.toml +0 -0
  958. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-branch.toml +0 -0
  959. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-log.toml +0 -0
  960. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-reflog.toml +0 -0
  961. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/guix.toml +0 -0
  962. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/just-recipes.toml +0 -0
  963. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-deployments.toml +0 -0
  964. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-pods.toml +0 -0
  965. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-services.toml +0 -0
  966. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/man-pages.toml +0 -0
  967. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/nu-history.toml +0 -0
  968. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/procs.toml +0 -0
  969. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/tldr.toml +0 -0
  970. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/zsh-history.toml +0 -0
  971. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/__init__.py +0 -0
  972. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/dirs.toml +0 -0
  973. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/docker-images.toml +0 -0
  974. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/env.toml +0 -0
  975. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-branch.toml +0 -0
  976. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-diff.toml +0 -0
  977. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-log.toml +0 -0
  978. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-reflog.toml +0 -0
  979. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-repos.toml +0 -0
  980. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/nu-history.toml +0 -0
  981. {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/pwsh-history.toml +0 -0
  982. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/__init__.py +0 -0
  983. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/terecd.ps1 +0 -0
  984. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/terecd.sh +0 -0
  985. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tmux/__init__.py +0 -0
  986. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tmux/tmux.conf.local +0 -0
  987. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/__init__.py +0 -0
  988. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/config.toml +0 -0
  989. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/themes/__init__.py +0 -0
  990. {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/themes/catppuccin-mocha-sky.toml +0 -0
  991. {stackops-8.98 → stackops-8.100}/src/stackops/settings/wsl/.wslconfig +0 -0
  992. {stackops-8.98/src/stackops/utils → stackops-8.100/src/stackops/settings/wt}/__init__.py +0 -0
  993. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/__init__.py +0 -0
  994. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/init.lua +0 -0
  995. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/__init__.py +0 -0
  996. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/compress_selected.py +0 -0
  997. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/open_db_readonly.py +0 -0
  998. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/__init__.py +0 -0
  999. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/yazi_cd.ps1 +0 -0
  1000. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/yazi_cd.sh +0 -0
  1001. {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/theme.toml +0 -0
  1002. {stackops-8.98/src/stackops/settings/shells/wt → stackops-8.100/src/stackops/settings/zed}/__init__.py +0 -0
  1003. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zed/settings.json +0 -0
  1004. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/__init__.py +0 -0
  1005. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/__init__.py +0 -0
  1006. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/monitor +0 -0
  1007. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/standard_panes +0 -0
  1008. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/config.kdl +0 -0
  1009. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/__init__.py +0 -0
  1010. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/hist +0 -0
  1011. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/panes.kdl +0 -0
  1012. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/st.kdl +0 -0
  1013. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/st2.kdl +0 -0
  1014. {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/stacked_panes.kdl +0 -0
  1015. {stackops-8.98/src/stackops/utils/ai → stackops-8.100/src/stackops/utils}/__init__.py +0 -0
  1016. {stackops-8.98 → stackops-8.100}/src/stackops/utils/accessories.py +0 -0
  1017. {stackops-8.98/src/stackops/utils/files/ouch → stackops-8.100/src/stackops/utils/ai}/__init__.py +0 -0
  1018. {stackops-8.98/src/stackops/utils/options_utils → stackops-8.100/src/stackops/utils/cli_utils}/__init__.py +0 -0
  1019. {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/README.md +0 -0
  1020. {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/__init__.py +0 -0
  1021. {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/auth.py +0 -0
  1022. {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/file_ops.py +0 -0
  1023. {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/setup_oauth.py +0 -0
  1024. {stackops-8.98 → stackops-8.100}/src/stackops/utils/code.py +0 -0
  1025. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/__init__.py +0 -0
  1026. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/fat_croco.txt +0 -0
  1027. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/halfwit_croco.txt +0 -0
  1028. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/happy_croco.txt +0 -0
  1029. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/water_croco.txt +0 -0
  1030. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/ascii_art.py +0 -0
  1031. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/dbms.py +0 -0
  1032. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/f.py +0 -0
  1033. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/ouch/decompress.py +0 -0
  1034. {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/read.py +0 -0
  1035. {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/__init__.py +0 -0
  1036. {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/github_release_bulk.py +0 -0
  1037. {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/github_release_scraper.py +0 -0
  1038. {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/installer_runner.py +0 -0
  1039. {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/installer_summary.py +0 -0
  1040. {stackops-8.98 → stackops-8.100}/src/stackops/utils/io.py +0 -0
  1041. {stackops-8.98 → stackops-8.100}/src/stackops/utils/links.py +0 -0
  1042. {stackops-8.98 → stackops-8.100}/src/stackops/utils/meta.py +0 -0
  1043. {stackops-8.98 → stackops-8.100}/src/stackops/utils/notifications.py +0 -0
  1044. {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/options_tv_linux.py +0 -0
  1045. {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/textual_options_form.py +0 -0
  1046. {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/tv_options.py +0 -0
  1047. {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_compression.py +0 -0
  1048. {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_core.py +0 -0
  1049. {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_helper.py +0 -0
  1050. {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_reference.py +0 -0
  1051. {stackops-8.98 → stackops-8.100}/src/stackops/utils/rclone.py +0 -0
  1052. {stackops-8.98 → stackops-8.100}/src/stackops/utils/scheduler.py +0 -0
  1053. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/fire_agents/fire_agents_input.py +0 -0
  1054. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/installer/__init__.py +0 -0
  1055. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/installer/installer_types.py +0 -0
  1056. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/layouts/__init__.py +0 -0
  1057. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/layouts/layout_types.py +0 -0
  1058. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/repos/__init__.py +0 -0
  1059. {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/repos/repos_types.py +0 -0
  1060. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/copy_from_here.py +0 -0
  1061. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/copy_to_here.py +0 -0
  1062. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/utils.py +0 -0
  1063. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/wsl_helper.py +0 -0
  1064. {stackops-8.98 → stackops-8.100}/src/stackops/utils/terminal.py +0 -0
  1065. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ve.py +0 -0
  1066. {stackops-8.98 → stackops-8.100}/src/stackops/utils/ve_schema.py +0 -0
  1067. {stackops-8.98 → stackops-8.100}/src/stackops/utils/yaml_schema.py +0 -0
  1068. {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/dependency_links.txt +0 -0
  1069. {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/entry_points.txt +0 -0
  1070. {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/requires.txt +0 -0
  1071. {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/top_level.txt +0 -0
@@ -0,0 +1,118 @@
1
+ Metadata-Version: 2.4
2
+ Name: stackops
3
+ Version: 8.100
4
+ Summary: Developer Stack Manager
5
+ Author-email: Alex Al-Saffar <programmer@usa.com>
6
+ License: Apache 2.0
7
+ Project-URL: Homepage, https://github.com/thisismygitrepo/stackops
8
+ Project-URL: Bug Tracker, https://github.com/thisismygitrepo/stackops/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >=3.13
13
+ Description-Content-Type: text/markdown
14
+ Requires-Dist: fire>=0.7.1
15
+ Requires-Dist: gitpython>=3.1.46
16
+ Requires-Dist: joblib>=1.5.3
17
+ Requires-Dist: paramiko>=4.0.0
18
+ Requires-Dist: psutil>=7.2.2
19
+ Requires-Dist: pyyaml>=6.0.3
20
+ Requires-Dist: questionary>=2.1.1
21
+ Requires-Dist: randomname>=0.2.1
22
+ Requires-Dist: requests>=2.32.5
23
+ Requires-Dist: rich>=14.3.3
24
+ Requires-Dist: tenacity>=9.1.4
25
+ Requires-Dist: typer>=0.24.1
26
+ Provides-Extra: windows
27
+ Provides-Extra: plot
28
+
29
+ <div align="center">
30
+
31
+ <h1>🗜 StackOps</h1>
32
+
33
+ <strong>Digital Life Manager.</strong>
34
+
35
+ <p>
36
+ <a href="https://thisismygitrepo.github.io/stackops/"><img alt="Docs" src="https://img.shields.io/badge/docs-online-2f6f6f"></a>
37
+ <a href="https://pypi.org/project/stackops/"><img alt="PyPI package" src="https://img.shields.io/pypi/v/stackops?color=2f6f6f"></a>
38
+ <img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-3776AB">
39
+ <img alt="Installed with uv" src="https://img.shields.io/badge/install-uv-f05d23">
40
+ </p>
41
+
42
+ </div>
43
+
44
+ StackOps is a cross-platform CLI for managing your development stack. It is package installer, configurator, dotfile/secrets manager, data and code sync solution, command launcher, processes orchestator (is there anything else?) all wrapped into one solution. As such, it should take a few minutes to make a fresh new machine to look like the machine you were customizing for 10 years.
45
+
46
+
47
+ | Before | After |
48
+ | --- | --- |
49
+ | ![Fresh minimal machine state](docs/assets/before.png) | ![Developer-ready machine state](docs/assets/after.png) |
50
+
51
+
52
+ See the [online docs](https://thisismygitrepo.github.io/stackops/) for full usage and reference material.
53
+
54
+ ## Install
55
+
56
+ Choose your platform and expand only the commands you need.
57
+
58
+ <details>
59
+ <summary><strong>Linux</strong></summary>
60
+
61
+ ```bash
62
+ curl -LsSf https://astral.sh/uv/install.sh | sh
63
+ uv tool install --upgrade --python 3.14 stackops
64
+ stackops --help
65
+ # OR: . < (curl -L https://bit.ly/sopsu)
66
+ ```
67
+
68
+ </details>
69
+
70
+ <details>
71
+ <summary><strong>macOS</strong></summary>
72
+
73
+ ```bash
74
+ curl -LsSf https://astral.sh/uv/install.sh | sh
75
+ uv tool install --upgrade --python 3.14 stackops
76
+ stackops --help
77
+ # OR: . < (curl -L https://bit.ly/sopsu)
78
+ ```
79
+
80
+ </details>
81
+
82
+ <details>
83
+ <summary><strong>Windows PowerShell</strong></summary>
84
+
85
+ ```powershell
86
+ powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
87
+ uv tool install --upgrade --python 3.14 stackops
88
+ stackops --help
89
+ # OR: irm bit.ly/sopsw | iex
90
+ ```
91
+
92
+ </details>
93
+
94
+
95
+ ## Quick Init
96
+
97
+ Run these once StackOps is installed.
98
+
99
+ ```bash
100
+ devops install --group sysabc
101
+ devops config copy-assets all
102
+ devops config sync down \
103
+ --sensitivity public \
104
+ --method copy \
105
+ --on-conflict overwrite-default-path \
106
+ --which all
107
+ devops config terminal config-shell --which default
108
+ devops install --group termabc
109
+ ```
110
+
111
+
112
+ ## Author
113
+
114
+ Alex Al-Saffar. [email](mailto:programmer@usa.com)
115
+
116
+ ## Contributor
117
+
118
+ Ruby Chan. [email](mailto:ruby.chan@sa.gov.au)
@@ -0,0 +1,90 @@
1
+ <div align="center">
2
+
3
+ <h1>🗜 StackOps</h1>
4
+
5
+ <strong>Digital Life Manager.</strong>
6
+
7
+ <p>
8
+ <a href="https://thisismygitrepo.github.io/stackops/"><img alt="Docs" src="https://img.shields.io/badge/docs-online-2f6f6f"></a>
9
+ <a href="https://pypi.org/project/stackops/"><img alt="PyPI package" src="https://img.shields.io/pypi/v/stackops?color=2f6f6f"></a>
10
+ <img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-3776AB">
11
+ <img alt="Installed with uv" src="https://img.shields.io/badge/install-uv-f05d23">
12
+ </p>
13
+
14
+ </div>
15
+
16
+ StackOps is a cross-platform CLI for managing your development stack. It is package installer, configurator, dotfile/secrets manager, data and code sync solution, command launcher, processes orchestator (is there anything else?) all wrapped into one solution. As such, it should take a few minutes to make a fresh new machine to look like the machine you were customizing for 10 years.
17
+
18
+
19
+ | Before | After |
20
+ | --- | --- |
21
+ | ![Fresh minimal machine state](docs/assets/before.png) | ![Developer-ready machine state](docs/assets/after.png) |
22
+
23
+
24
+ See the [online docs](https://thisismygitrepo.github.io/stackops/) for full usage and reference material.
25
+
26
+ ## Install
27
+
28
+ Choose your platform and expand only the commands you need.
29
+
30
+ <details>
31
+ <summary><strong>Linux</strong></summary>
32
+
33
+ ```bash
34
+ curl -LsSf https://astral.sh/uv/install.sh | sh
35
+ uv tool install --upgrade --python 3.14 stackops
36
+ stackops --help
37
+ # OR: . < (curl -L https://bit.ly/sopsu)
38
+ ```
39
+
40
+ </details>
41
+
42
+ <details>
43
+ <summary><strong>macOS</strong></summary>
44
+
45
+ ```bash
46
+ curl -LsSf https://astral.sh/uv/install.sh | sh
47
+ uv tool install --upgrade --python 3.14 stackops
48
+ stackops --help
49
+ # OR: . < (curl -L https://bit.ly/sopsu)
50
+ ```
51
+
52
+ </details>
53
+
54
+ <details>
55
+ <summary><strong>Windows PowerShell</strong></summary>
56
+
57
+ ```powershell
58
+ powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
59
+ uv tool install --upgrade --python 3.14 stackops
60
+ stackops --help
61
+ # OR: irm bit.ly/sopsw | iex
62
+ ```
63
+
64
+ </details>
65
+
66
+
67
+ ## Quick Init
68
+
69
+ Run these once StackOps is installed.
70
+
71
+ ```bash
72
+ devops install --group sysabc
73
+ devops config copy-assets all
74
+ devops config sync down \
75
+ --sensitivity public \
76
+ --method copy \
77
+ --on-conflict overwrite-default-path \
78
+ --which all
79
+ devops config terminal config-shell --which default
80
+ devops install --group termabc
81
+ ```
82
+
83
+
84
+ ## Author
85
+
86
+ Alex Al-Saffar. [email](mailto:programmer@usa.com)
87
+
88
+ ## Contributor
89
+
90
+ Ruby Chan. [email](mailto:ruby.chan@sa.gov.au)
@@ -0,0 +1,163 @@
1
+ [build-system]
2
+ requires = ["setuptools>=80", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+ # requires = ["hatchling"]
5
+ # build-backend = "hatchling.build"
6
+
7
+ [project]
8
+ name = "stackops"
9
+ version = "8.100"
10
+ description = "Developer Stack Manager"
11
+ readme = "README.md"
12
+ license = {text = "Apache 2.0"}
13
+ authors = [
14
+ {name = "Alex Al-Saffar", email = "programmer@usa.com"},
15
+ ]
16
+ classifiers = [
17
+ "Programming Language :: Python :: 3",
18
+ "License :: OSI Approved :: Apache Software License",
19
+ "Operating System :: OS Independent",
20
+ ]
21
+ requires-python = ">=3.13"
22
+ dependencies = [
23
+ "fire>=0.7.1",
24
+ "gitpython>=3.1.46",
25
+ "joblib>=1.5.3",
26
+ "paramiko>=4.0.0",
27
+ "psutil>=7.2.2",
28
+ "pyyaml>=6.0.3",
29
+ "questionary>=2.1.1",
30
+ "randomname>=0.2.1",
31
+ "requests>=2.32.5",
32
+ "rich>=14.3.3",
33
+ "tenacity>=9.1.4",
34
+ "typer>=0.24.1",
35
+ ]
36
+
37
+ [project.optional-dependencies]
38
+ windows = []
39
+ plot = [
40
+
41
+ ]
42
+
43
+
44
+ [project.urls]
45
+ "Homepage" = "https://github.com/thisismygitrepo/stackops"
46
+ "Bug Tracker" = "https://github.com/thisismygitrepo/stackops/issues"
47
+
48
+ [project.scripts]
49
+ devops = "stackops.scripts.python.devops:main"
50
+ cloud = "stackops.scripts.python.cloud:main"
51
+ fire = "stackops.scripts.python.fire_jobs:main"
52
+ agents = "stackops.scripts.python.agents:main"
53
+ terminal = "stackops.scripts.python.terminal:main"
54
+ croshell = "stackops.scripts.python.croshell:main"
55
+ utils = "stackops.scripts.python.utils:main"
56
+ stackops = "stackops.scripts.python.stackops_entry:main"
57
+ seek = "stackops.scripts.python.seek:main"
58
+
59
+ [tool.setuptools]
60
+ package-dir = {"" = "src"}
61
+ include-package-data = true
62
+ license-files = []
63
+
64
+ [tool.setuptools.packages.find]
65
+ where = ["src"]
66
+
67
+ [tool.setuptools.package-data]
68
+ stackops = ["**/*.toml", "**/*.md", "**/*.sh", "**/*.ps1", "**/*.txt", "utils/schemas/**/*.json"]
69
+
70
+ [dependency-groups]
71
+ dev = [
72
+ "aider>=0.2.6",
73
+ "build>=1.4.1",
74
+ "cleanpy>=0.5.1",
75
+ "cowsay>=6.1",
76
+ "duckdb>=1.5.1",
77
+ "gdown>=5.2.1",
78
+ "griffe>=2.0.2",
79
+ "ipdb>=0.13.13",
80
+ "ipykernel>=7.2.0",
81
+ "ipython>=9.11.0",
82
+ "kaleido>=1.2.0",
83
+ "marimo>=0.21.1",
84
+ "matplotlib>=3.10.8",
85
+ "mkdocstrings>=1.0.3",
86
+ "mkdocstrings-python>=2.0.3",
87
+ "mypy>=1.19.1",
88
+ "numpy>=2.4.3",
89
+ "pandas>=3.0.1",
90
+ "plotly>=6.6.0",
91
+ "polars>=1.39.3",
92
+ "pre-commit>=4.5.1",
93
+ "pudb>=2025.1.5",
94
+ "py7zr>=1.1.0",
95
+ "pydantic>=2.12.5",
96
+ "pydeps>=3.0.2",
97
+ "pyinstaller>=6.19.0",
98
+ "pylint>=4.0.5",
99
+ "pylsp-mypy>=0.7.1",
100
+ "pymupdf>=1.27.2.2",
101
+ "pypdf>=6.9.2",
102
+ "pyrefly>=0.58.0",
103
+ "pyright>=1.1.408",
104
+ "pytest>=9.0.2",
105
+ "python-lsp-server[mypy]>=1.14.0",
106
+ "qrcode>=8.2",
107
+ "ruff>=0.15.7",
108
+ "ruff-lsp>=0.0.62",
109
+ "sqlalchemy>=2.0.48",
110
+ "textual>=8.1.1",
111
+ "trogon>=0.6.0",
112
+ "ty>=0.0.25",
113
+ "types-mysqlclient>=2.2.0.20250915",
114
+ "types-paramiko>=4.0.0.20260322",
115
+ "types-pytz>=2026.1.1.20260304",
116
+ "types-pyyaml>=6.0.12.20250915",
117
+ "types-requests>=2.32.4.20260324",
118
+ "types-sqlalchemy>=1.4.53.38",
119
+ "types-toml>=0.10.8.20240310",
120
+ "types-urllib3>=1.26.25.14",
121
+ "vt-py>=0.22.0",
122
+ "yapf>=0.43.0",
123
+ "zensical>=0.0.29",
124
+ ]
125
+ other = [
126
+ "duckdb-engine>=0.17.0",
127
+ "pycrucible>=0.4.6",
128
+ "vt-py>=0.22.0",
129
+ ]
130
+ plot = [
131
+ "duckdb>=1.5.1",
132
+ "ipykernel>=7.2.0",
133
+ "ipython>=9.11.0",
134
+ "jupyterlab>=4.5.6",
135
+ "kaleido>=1.2.0",
136
+ "matplotlib>=3.10.8",
137
+ "nbformat>=5.10.4",
138
+ "numpy>=2.4.3",
139
+ "plotly>=6.6.0",
140
+ "polars>=1.39.3",
141
+ "python-magic>=0.4.27",
142
+ "sqlalchemy>=2.0.48",
143
+ ]
144
+
145
+
146
+ [tool.pycrucible]
147
+ entry = "src/stackops/scripts/python/devops.py"
148
+ [tool.pycrucible.options]
149
+ debug = false
150
+ extract_to_temp = false
151
+ delete_after_run = false
152
+ offline_mode = false
153
+
154
+ [tool.pycrucible.patterns]
155
+ include = [
156
+ "**/*.py",
157
+ "**/*.ps1",
158
+ "**/*.sh",
159
+ "**/*.md",
160
+ ]
161
+ exclude = [
162
+ "**/__pycache__/**",
163
+ ]
@@ -0,0 +1,274 @@
1
+
2
+ import inspect
3
+ from types import FunctionType
4
+ from typing import Callable
5
+ from typing import cast
6
+ from pathlib import Path
7
+ from datetime import datetime
8
+
9
+ from rich.console import Console
10
+ from rich.panel import Panel
11
+ from rich.syntax import Syntax
12
+
13
+ from stackops.utils.accessories import randstr
14
+ from stackops.utils.io import save_json
15
+ from stackops.utils.files.read import read_json
16
+ from stackops.utils.ssh import SSH
17
+ from stackops.cluster.remote.models import RemoteStackOpsConfig, EmailParams
18
+ from stackops.cluster.remote.job_params import JobParams
19
+ from stackops.cluster.remote.file_manager import FileManager
20
+ from stackops.cluster.remote.execution_script import render_execution_script
21
+ from stackops.cluster.remote.notification import render_notification_block
22
+ from stackops.cluster.remote.data_transfer import transfer_sftp, transfer_cloud
23
+
24
+ console = Console()
25
+
26
+
27
+ class RemoteMachine:
28
+ def __init__(self, func: str | Path | Callable[..., object], config: RemoteStackOpsConfig, func_kwargs: dict[str, object] | None, data: list[str] | None) -> None:
29
+ self.config = config
30
+ if isinstance(func, str | Path):
31
+ self.job_params = JobParams.from_script(str(func))
32
+ elif inspect.isfunction(func):
33
+ self.job_params = JobParams.from_callable(func)
34
+ elif inspect.ismethod(func):
35
+ self.job_params = JobParams.from_callable(cast(FunctionType, func.__func__))
36
+ else:
37
+ raise TypeError("func must be a script path, function, or bound method.")
38
+ if config.workload_params is not None and func_kwargs is not None:
39
+ if "workload_params" in func_kwargs:
40
+ raise ValueError("workload_params provided in both config and func_kwargs")
41
+ self.kwargs: dict[str, object] = func_kwargs or {}
42
+ self.data: list[str] = data if data is not None else []
43
+ self.ssh: SSH | None = None
44
+ self.file_manager = FileManager(job_id=config.job_id, remote_machine_type="Linux", lock_resources=config.lock_resources, max_simultaneous_jobs=config.max_simultaneous_jobs, base=config.base_dir)
45
+ self.submitted: bool = False
46
+ self.scripts_generated: bool = False
47
+ self.results_downloaded: bool = False
48
+ self.results_path: Path | None = None
49
+
50
+ def __repr__(self) -> str:
51
+ ssh_repr = self.ssh.get_remote_repr(add_machine=True) if self.ssh else (self.config.ssh_host or "local")
52
+ return f"RemoteMachine({ssh_repr})"
53
+
54
+ def to_dict(self) -> dict[str, object]:
55
+ return {"config": self.config.to_dict(), "job_params": self.job_params.to_dict(), "file_manager": self.file_manager.to_dict(), "kwargs": self.kwargs, "data": self.data, "submitted": self.submitted, "scripts_generated": self.scripts_generated, "results_downloaded": self.results_downloaded, "results_path": str(self.results_path) if self.results_path else None}
56
+
57
+ @staticmethod
58
+ def from_dict(d: dict[str, object]) -> "RemoteMachine":
59
+ rm = RemoteMachine.__new__(RemoteMachine)
60
+ config_data = d["config"]
61
+ if not isinstance(config_data, dict):
62
+ raise TypeError("config must be a dict")
63
+ job_params_data = d["job_params"]
64
+ if not isinstance(job_params_data, dict):
65
+ raise TypeError("job_params must be a dict")
66
+ file_manager_data = d["file_manager"]
67
+ if not isinstance(file_manager_data, dict):
68
+ raise TypeError("file_manager must be a dict")
69
+ rm.config = RemoteStackOpsConfig.from_dict(config_data)
70
+ rm.job_params = JobParams.from_dict(job_params_data)
71
+ rm.file_manager = FileManager.from_dict(file_manager_data)
72
+ kwargs_raw = d.get("kwargs")
73
+ rm.kwargs = dict(kwargs_raw) if isinstance(kwargs_raw, dict) else {}
74
+ data_raw = d.get("data")
75
+ rm.data = [str(item) for item in data_raw] if isinstance(data_raw, list) else []
76
+ rm.submitted = bool(d.get("submitted", False))
77
+ rm.scripts_generated = bool(d.get("scripts_generated", False))
78
+ rm.results_downloaded = bool(d.get("results_downloaded", False))
79
+ rm.results_path = Path(str(d["results_path"])) if d.get("results_path") else None
80
+ rm.ssh = None
81
+ return rm
82
+
83
+ @staticmethod
84
+ def from_job_dir(job_dir: Path) -> "RemoteMachine":
85
+ data_dir = job_dir / "data"
86
+ rm_json = data_dir / "remote_machine.json"
87
+ d: dict[str, object] = read_json(rm_json)
88
+ return RemoteMachine.from_dict(d)
89
+
90
+ def _ensure_ssh(self) -> SSH:
91
+ if self.ssh is None:
92
+ if self.config.ssh_host is None:
93
+ raise ValueError("ssh_host must be set in config to connect to a remote machine")
94
+ self.ssh = SSH.from_config_file(host=self.config.ssh_host)
95
+ return self.ssh
96
+
97
+ def generate_scripts(self) -> None:
98
+ console.rule(f"Generating scripts for job `{self.file_manager.job_id}` @ {self!r}")
99
+ self.job_params.ssh_repr = repr(self.ssh) if self.ssh else ""
100
+ self.job_params.ssh_repr_remote = self.ssh.get_remote_repr() if self.ssh else ""
101
+ self.job_params.description = self.config.description
102
+ self.job_params.file_manager_path = str(self.file_manager.file_manager_path)
103
+ self.job_params.session_name = "TS-" + randstr(noun=True)
104
+ self.job_params.tab_name = f"job-{self.file_manager.job_id}"
105
+
106
+ execution_line = self.job_params.get_execution_line(parallelize=self.config.parallelize, workload_params=self.config.workload_params, wrap_in_try_except=self.config.wrap_in_try_except)
107
+
108
+ notification_block = ""
109
+ if self.config.notify_upon_completion:
110
+ assert self.config.email_config_name is not None
111
+ assert self.config.to_email is not None
112
+ email_params = EmailParams(
113
+ addressee=self.ssh.get_local_repr(add_machine=True) if self.ssh else "local",
114
+ speaker=self.ssh.get_remote_repr(add_machine=True) if self.ssh else "local",
115
+ ssh_conn_str=self.ssh.get_remote_repr(add_machine=False) if self.ssh else "",
116
+ executed_obj=f"{self.job_params.repo_path_rh}/{self.job_params.file_path_r}",
117
+ file_manager_path=str(self.file_manager.file_manager_path),
118
+ to_email=self.config.to_email,
119
+ email_config_name=self.config.email_config_name,
120
+ )
121
+ notification_block = render_notification_block(email_params)
122
+
123
+ # Save params JSON first so the template can reference it
124
+ params_json_path = self.file_manager.job_root / "data/job_params.json"
125
+ params_json_path.parent.mkdir(parents=True, exist_ok=True)
126
+ save_json(obj=self.job_params.to_dict(), path=params_json_path, indent=2, verbose=False)
127
+
128
+ py_script = render_execution_script(
129
+ params_json_path=str(params_json_path),
130
+ file_manager_json_path=str(self.file_manager.file_manager_path),
131
+ execution_line=execution_line,
132
+ notification_block=notification_block,
133
+ )
134
+
135
+ shell_script = _build_shell_script(self.job_params, self.config, self.file_manager)
136
+
137
+ # Write shell script
138
+ shell_path = self.file_manager.shell_script_path.expanduser()
139
+ shell_path.parent.mkdir(parents=True, exist_ok=True)
140
+ shell_path.write_text(shell_script, encoding="utf-8")
141
+
142
+ # Write python script
143
+ py_path = self.file_manager.py_script_path.expanduser()
144
+ py_path.parent.mkdir(parents=True, exist_ok=True)
145
+ py_path.write_text(py_script, encoding="utf-8")
146
+
147
+ # Save supporting data as JSON
148
+ save_json(obj=self.kwargs, path=self.file_manager.kwargs_path.expanduser(), indent=2, verbose=False)
149
+ save_json(obj=self.file_manager.to_dict(), path=self.file_manager.file_manager_path.expanduser(), indent=2, verbose=False)
150
+ save_json(obj=self.config.to_dict(), path=self.file_manager.remote_machine_config_path.expanduser(), indent=2, verbose=False)
151
+ save_json(obj=self.to_dict(), path=self.file_manager.remote_machine_path.expanduser(), indent=2, verbose=False)
152
+
153
+ log_dir = self.file_manager.execution_log_dir.expanduser()
154
+ log_dir.mkdir(parents=True, exist_ok=True)
155
+ (log_dir / "status.txt").write_text("queued", encoding="utf-8")
156
+ self.scripts_generated = True
157
+
158
+ def show_scripts(self) -> None:
159
+ shell_text = self.file_manager.shell_script_path.expanduser().read_text(encoding="utf-8")
160
+ py_text = self.file_manager.py_script_path.expanduser().read_text(encoding="utf-8")
161
+ console.print(Panel(Syntax(shell_text, lexer="sh", theme="monokai", line_numbers=True), title="Shell Script"))
162
+ console.print(Panel(Syntax(py_text, lexer="python", theme="monokai", line_numbers=True), title="Python Script"))
163
+
164
+ def submit(self) -> None:
165
+ console.rule("Submitting job")
166
+ if self.config.ssh_host is not None:
167
+ ssh = self._ensure_ssh()
168
+ if self.config.transfer_method == "sftp":
169
+ transfer_sftp(ssh=ssh, config=self.config, job_params=self.job_params, file_manager=self.file_manager, data=self.data)
170
+ elif self.config.transfer_method == "cloud":
171
+ transfer_cloud(ssh=ssh, config=self.config, job_params=self.job_params, file_manager=self.file_manager, data=self.data)
172
+ else:
173
+ raise ValueError(f"Unknown transfer_method: {self.config.transfer_method}")
174
+ self.submitted = True
175
+
176
+ def fire(self, run: bool) -> tuple[int, str]:
177
+ if not self.submitted:
178
+ raise RuntimeError("Job not submitted yet")
179
+ console.rule(f"Firing job `{self.config.job_id}`")
180
+ cmd = self.file_manager.get_fire_command()
181
+ if self.config.ssh_host is not None:
182
+ ssh = self._ensure_ssh()
183
+ response = ssh.run_shell_cmd_on_remote(command=cmd, verbose_output=True, description=f"fire job {self.config.job_id}", strict_stderr=False, strict_return_code=False)
184
+ return 0, response.op
185
+ else:
186
+ import subprocess
187
+ result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
188
+ return result.returncode, result.stdout
189
+
190
+ def run(self, run: bool, show_scripts: bool) -> "RemoteMachine":
191
+ self.generate_scripts()
192
+ if show_scripts:
193
+ self.show_scripts()
194
+ self.submit()
195
+ self.fire(run=run)
196
+ return self
197
+
198
+ def check_job_status(self) -> Path | None:
199
+ if not self.submitted:
200
+ print("Job not submitted yet.")
201
+ return None
202
+ if self.results_downloaded:
203
+ print("Results already downloaded.")
204
+ return None
205
+ log_dir = self.file_manager.execution_log_dir.expanduser()
206
+ log_dir.mkdir(parents=True, exist_ok=True)
207
+ if self.config.ssh_host is not None:
208
+ ssh = self._ensure_ssh()
209
+ try:
210
+ ssh.copy_to_here(source=str(self.file_manager.execution_log_dir), target=None, compress_with_zip=True, recursive=True)
211
+ except Exception:
212
+ pass
213
+ end_time_file = log_dir / "end_time.txt"
214
+ if not end_time_file.exists():
215
+ start_file = log_dir / "start_time.txt"
216
+ if not start_file.exists():
217
+ print(f"Job {self.config.job_id} still queued.")
218
+ else:
219
+ start_time = start_file.read_text(encoding="utf-8").strip()
220
+ try:
221
+ elapsed = datetime.now() - datetime.fromisoformat(start_time)
222
+ msg = f"Job `{self.config.job_id}` running since {start_time} ({elapsed})"
223
+ except ValueError:
224
+ msg = f"Job `{self.config.job_id}` running since {start_time}"
225
+ console.print(Panel(msg, title="Job Status", border_style="bold red"))
226
+ return None
227
+ results_folder_file = log_dir / "results_folder_path.txt"
228
+ results_folder = results_folder_file.read_text(encoding="utf-8").strip()
229
+ console.rule("Job Completed")
230
+ print(f"Results: {results_folder}")
231
+ self.results_path = Path(results_folder)
232
+ return self.results_path
233
+
234
+ def download_results(self, target: str | None) -> "RemoteMachine":
235
+ if self.results_path is None:
236
+ raise RuntimeError("Results path unknown. Check job status first.")
237
+ if self.results_downloaded:
238
+ print(f"Results already downloaded: {self.results_path}")
239
+ return self
240
+ if self.config.ssh_host is not None:
241
+ ssh = self._ensure_ssh()
242
+ ssh.copy_to_here(source=str(self.results_path), target=target, compress_with_zip=True, recursive=True)
243
+ self.results_downloaded = True
244
+ return self
245
+
246
+ def delete_remote_results(self) -> "RemoteMachine":
247
+ if self.results_path is None:
248
+ print("Results path unknown.")
249
+ return self
250
+ if self.config.ssh_host is not None:
251
+ ssh = self._ensure_ssh()
252
+ ssh.run_shell_cmd_on_remote(command=f"rm -rf {self.results_path}", verbose_output=False, description="delete remote results", strict_stderr=False, strict_return_code=False)
253
+ return self
254
+
255
+ def _build_shell_script(job_params: JobParams, config: RemoteStackOpsConfig, file_manager: FileManager) -> str:
256
+ lines: list[str] = ['echo "=== SHELL START ==="']
257
+ lines.append(f"cd {job_params.repo_path_rh}")
258
+ if config.update_repo:
259
+ lines.append("git pull")
260
+ if config.install_repo:
261
+ lines.append("pip install -e .")
262
+ lines.append('echo "=== SHELL END ==="')
263
+ lines.append(f'echo "Starting job {config.job_id}"')
264
+ py_rel = file_manager.py_script_path
265
+ try:
266
+ py_rel_str = str(py_rel.relative_to(Path.home()))
267
+ except ValueError:
268
+ py_rel_str = str(py_rel)
269
+ lines.append("cd ~")
270
+ if config.interactive:
271
+ lines.append(f"python -i ./{py_rel_str}")
272
+ else:
273
+ lines.append(f"python ./{py_rel_str}")
274
+ return "\n".join(lines) + "\n"