stackops 26.8__tar.gz → 26.8.1__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 (1109) hide show
  1. {stackops-26.8/src/stackops.egg-info → stackops-26.8.1}/PKG-INFO +1 -1
  2. {stackops-26.8 → stackops-26.8.1}/pyproject.toml +2 -1
  3. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/cloud_manager.py +2 -2
  4. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/models.py +6 -1
  5. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/notifications.py +4 -0
  6. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/security_cli.py +29 -23
  7. stackops-26.8.1/src/stackops/jobs/installer/python_scripts/rustdesk_server.py +69 -0
  8. stackops-26.8.1/src/stackops/jobs/scripts/python_scripts/chatgpt_random_questions.py +354 -0
  9. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_links.py +26 -1
  10. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_links_export.py +4 -1
  11. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/dotfiles_mapper.py +1 -0
  12. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents.py +79 -22
  13. stackops-26.8.1/src/stackops/scripts/python/agents_browser.py +295 -0
  14. stackops-26.8.1/src/stackops/scripts/python/agents_followup.py +146 -0
  15. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel_commands.py +1 -0
  16. stackops-26.8.1/src/stackops/scripts/python/agents_second_brain.instructions.md +21 -0
  17. stackops-26.8.1/src/stackops/scripts/python/agents_second_brain.py +31 -0
  18. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph.json +1934 -874
  19. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +1 -1
  20. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_batch.py +216 -0
  21. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_constants.py +30 -7
  22. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_processes.py +73 -33
  23. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch.py +94 -0
  24. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_lock.py +2 -2
  25. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_profile_filesystem.py +112 -0
  26. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_profiles.py +172 -0
  27. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +8 -5
  28. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_reuse.py +4 -4
  29. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_rich_output.py +51 -3
  30. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_temporary_profiles.py +70 -0
  31. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux.py +2 -0
  32. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_lifecycle.py +16 -0
  33. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +3 -0
  34. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_shell.py +9 -1
  35. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_config.py +38 -5
  36. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy.py +17 -5
  37. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy_artifacts.py +3 -3
  38. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_path_resolver.py +3 -3
  39. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_sync.py +16 -2
  40. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +12 -3
  41. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup.py +133 -0
  42. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_config.py +101 -0
  43. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_domains.py +151 -0
  44. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_email.py +91 -0
  45. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_email_profile.py +185 -0
  46. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/env_manager_tui.py +1 -1
  47. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/path_manager_tui.py +1 -1
  48. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +192 -0
  49. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_actions.py +95 -0
  50. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_archive.py +65 -0
  51. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +78 -0
  52. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_git.py +76 -0
  53. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_integration.py +52 -0
  54. stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/sync.py +50 -0
  55. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +7 -1
  56. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_layout_source.py +7 -1
  57. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/interactive.sh +8 -8
  58. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/interactive.ps1 +9 -9
  59. stackops-26.8.1/src/stackops/utils/cloud/default_remote.py +29 -0
  60. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/rclone.py +43 -50
  61. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/rclone_wrapper.py +1 -1
  62. stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_constants.py +14 -0
  63. stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_fetch.py +122 -0
  64. stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_output.py +54 -0
  65. stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_report.py +99 -0
  66. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_class.py +14 -3
  67. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_helper.py +47 -0
  68. stackops-26.8.1/src/stackops/utils/installer_utils/update_github_commit_dates.py +167 -0
  69. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/io.py +6 -0
  70. stackops-26.8.1/src/stackops/utils/schemas/config/constants.py +5 -0
  71. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_data.json +415 -3
  72. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/dotfiles.yaml +57 -0
  73. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/abc.py +1 -1
  74. {stackops-26.8 → stackops-26.8.1/src/stackops.egg-info}/PKG-INFO +1 -1
  75. {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/SOURCES.txt +22 -0
  76. stackops-26.8/src/stackops/jobs/scripts/python_scripts/chatgpt_random_questions.py +0 -881
  77. stackops-26.8/src/stackops/scripts/python/agents_browser.py +0 -172
  78. stackops-26.8/src/stackops/scripts/python/agents_second_brain.py +0 -22
  79. stackops-26.8/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch.py +0 -106
  80. stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +0 -462
  81. stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +0 -91
  82. stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/sync.py +0 -96
  83. stackops-26.8/src/stackops/utils/installer_utils/update_github_commit_dates.py +0 -137
  84. {stackops-26.8 → stackops-26.8.1}/MANIFEST.in +0 -0
  85. {stackops-26.8 → stackops-26.8.1}/README.md +0 -0
  86. {stackops-26.8 → stackops-26.8.1}/setup.cfg +0 -0
  87. {stackops-26.8 → stackops-26.8.1}/src/manual/test_dotfile_mapper_assets.py +0 -0
  88. {stackops-26.8 → stackops-26.8.1}/src/manual/test_path_references.py +0 -0
  89. {stackops-26.8 → stackops-26.8.1}/src/manual/test_secrets_schema.py +0 -0
  90. {stackops-26.8 → stackops-26.8.1}/src/manual/test_stackops_skill_refs.py +0 -0
  91. {stackops-26.8 → stackops-26.8.1}/src/manual/test_stackops_versioning.py +0 -0
  92. {stackops-26.8 → stackops-26.8.1}/src/stackops/__init__.py +0 -0
  93. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/__init__.py +0 -0
  94. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/__main__.py +0 -0
  95. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/cli.py +0 -0
  96. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph.py +0 -0
  97. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_css.txt +0 -0
  98. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_css_continued.txt +0 -0
  99. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_js.txt +0 -0
  100. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_js_continued.txt +0 -0
  101. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/models.py +0 -0
  102. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/renderer.py +0 -0
  103. {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/scanner.py +0 -0
  104. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/__init__.py +0 -0
  105. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/__init__.py +0 -0
  106. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/data_transfer.py +0 -0
  107. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/distribute.py +0 -0
  108. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/execution_script.py +0 -0
  109. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/file_manager.py +0 -0
  110. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/job_params.py +0 -0
  111. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/notification.py +0 -0
  112. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/remote_machine.py +0 -0
  113. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/scheduler.py +0 -0
  114. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/__init__.py +0 -0
  115. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/__init__.py +0 -0
  116. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/enhanced_command_runner.py +0 -0
  117. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +0 -0
  118. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/monitoring_types.py +0 -0
  119. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/session_conflict.py +0 -0
  120. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/session_exit_mode.py +0 -0
  121. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/status_reporting.py +0 -0
  122. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/__init__.py +0 -0
  123. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +0 -0
  124. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +0 -0
  125. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/__init__.py +0 -0
  126. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_common.py +0 -0
  127. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_execution.py +0 -0
  128. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_layout.py +0 -0
  129. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_status.py +0 -0
  130. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/__init__.py +0 -0
  131. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/load_balancer.py +0 -0
  132. {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/maker.py +0 -0
  133. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/__init__.py +0 -0
  134. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/__init__.py +0 -0
  135. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/mcp.json +0 -0
  136. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/mcp.schema.json +0 -0
  137. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/__init__.py +0 -0
  138. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/__init__.py +0 -0
  139. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/check_installations.py +0 -0
  140. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/install_utils.py +0 -0
  141. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/report_utils.py +0 -0
  142. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/security_helper.py +0 -0
  143. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/vt_utils.py +0 -0
  144. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/__init__.py +0 -0
  145. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/network.sh +0 -0
  146. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/ngrok.sh +0 -0
  147. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/sysabc_macos.sh +0 -0
  148. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/macos_scripts/__init__.py +0 -0
  149. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/__init__.py +0 -0
  150. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/nerdfonts.ps1 +0 -0
  151. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/sysabc.ps1 +0 -0
  152. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/texlive.ps1 +0 -0
  153. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/__init__.py +0 -0
  154. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/alacritty.py +0 -0
  155. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/boxes.py +0 -0
  156. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/brave.py +0 -0
  157. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/bypass_paywall.py +0 -0
  158. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/cloudflare_warp_cli.py +0 -0
  159. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/code.py +0 -0
  160. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/cursor.py +0 -0
  161. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/deer_flow.py +0 -0
  162. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/docker.py +0 -0
  163. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/dubdb_adbc.py +0 -0
  164. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/espanso.py +0 -0
  165. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/goes.py +0 -0
  166. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/hx.py +0 -0
  167. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/lvim.py +0 -0
  168. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/nerdfont.py +0 -0
  169. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/orca.py +0 -0
  170. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/oz.py +0 -0
  171. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/poppler.py +0 -0
  172. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/redis.py +0 -0
  173. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/rmpc.py +0 -0
  174. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/sysabc.py +0 -0
  175. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/termusic.py +0 -0
  176. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/wezterm.py +0 -0
  177. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/winget.py +0 -0
  178. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/yazi.py +0 -0
  179. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/youtube_tui.py +0 -0
  180. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/ytui_music.py +0 -0
  181. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/todo.md +0 -0
  182. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/__init__.py +0 -0
  183. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/hollywood.sh +0 -0
  184. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/lid.sh +0 -0
  185. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/weather +0 -0
  186. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/__init__.py +0 -0
  187. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/cmatrix.ps1 +0 -0
  188. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/weather.ps1 +0 -0
  189. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/python_scripts/gh.py +0 -0
  190. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/__init__.py +0 -0
  191. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.json +0 -0
  192. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.py +0 -0
  193. {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/system_compute_analyzer.py +0 -0
  194. {stackops-26.8 → stackops-26.8.1}/src/stackops/logger.py +0 -0
  195. {stackops-26.8 → stackops-26.8.1}/src/stackops/paths.py +0 -0
  196. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/__init__.py +0 -0
  197. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_helper.py +0 -0
  198. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_shell_profile.py +0 -0
  199. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/__init__.py +0 -0
  200. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/conflict.py +0 -0
  201. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/operations.py +0 -0
  202. {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/options.py +0 -0
  203. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/__init__.py +0 -0
  204. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/linux/__init__.py +0 -0
  205. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/linux/wrap_stackops +0 -0
  206. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/nu/__init__.py +0 -0
  207. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/nu/wrap_stackops.nu +0 -0
  208. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/__init__.py +0 -0
  209. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_iter.py +0 -0
  210. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel.py +0 -0
  211. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel_run_command.py +0 -0
  212. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_test_runtime.py +0 -0
  213. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_type_fix.py +0 -0
  214. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/__init__.py +0 -0
  215. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai.py +0 -0
  216. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_artifacts.py +0 -0
  217. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_frameworks.py +0 -0
  218. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_models.py +0 -0
  219. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_rich_output.py +0 -0
  220. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/__init__.py +0 -0
  221. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/command_runner.ps1 +0 -0
  222. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/command_runner.sh +0 -0
  223. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/dashboard.py +0 -0
  224. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/lint_and_type_check.py +0 -0
  225. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models.py +0 -0
  226. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_config.py +0 -0
  227. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_core.py +0 -0
  228. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_diagnostics.py +0 -0
  229. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_json.py +0 -0
  230. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_reports.py +0 -0
  231. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/paths.py +0 -0
  232. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/__init__.py +0 -0
  233. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/antigravity/__init__.py +0 -0
  234. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/antigravity/antigravity.py +0 -0
  235. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/auggie/__init__.py +0 -0
  236. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/auggie/auggie.py +0 -0
  237. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/claude/claude.py +0 -0
  238. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/cline/cline.py +0 -0
  239. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/__init__.py +0 -0
  240. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/codex.py +0 -0
  241. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/config.toml +0 -0
  242. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/__init__.py +0 -0
  243. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/Thinking-Beast-Mode.agent.md +0 -0
  244. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md +0 -0
  245. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/__init__.py +0 -0
  246. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/deepResearch.agent.md +0 -0
  247. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
  248. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/__init__.py +0 -0
  249. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/watch_exec.prompt.md +0 -0
  250. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/__init__.py +0 -0
  251. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -0
  252. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/__init__.py +0 -0
  253. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
  254. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
  255. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/__init__.py +0 -0
  256. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/crush.json +0 -0
  257. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/crush.py +0 -0
  258. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/privacy.md +0 -0
  259. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/cursor/cursors.py +0 -0
  260. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/droid/__init__.py +0 -0
  261. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/droid/droid.py +0 -0
  262. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/forge/__init__.py +0 -0
  263. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/forge/forge.py +0 -0
  264. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/__init__.py +0 -0
  265. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/kilocode.py +0 -0
  266. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
  267. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/__init__.py +0 -0
  268. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/opencode.jsonc +0 -0
  269. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/opencode.py +0 -0
  270. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/oz/__init__.py +0 -0
  271. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/oz/oz.py +0 -0
  272. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/pi/__init__.py +0 -0
  273. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/pi/pi.py +0 -0
  274. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/q/__init__.py +0 -0
  275. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/q/amazon_q.py +0 -0
  276. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/qwen_code/__init__.py +0 -0
  277. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/qwen_code/qwen_code.py +0 -0
  278. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/warp/__init__.py +0 -0
  279. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/warp/warp.py +0 -0
  280. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/__init__.py +0 -0
  281. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files.py +0 -0
  282. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files_content.py +0 -0
  283. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files_utils.py +0 -0
  284. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generic.instructions.md +0 -0
  285. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generic.py +0 -0
  286. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/shared.py +0 -0
  287. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/vscode_tasks.py +0 -0
  288. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai_account.py +0 -0
  289. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/cloud.py +0 -0
  290. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/devops.py +0 -0
  291. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/enums.py +0 -0
  292. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/fire_jobs.py +0 -0
  293. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ftpx.py +0 -0
  294. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/__init__.py +0 -0
  295. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_apps.py +0 -0
  296. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_eval.py +0 -0
  297. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_node_utils.py +0 -0
  298. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_nodes.py +0 -0
  299. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_registration.py +0 -0
  300. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_resolver.py +0 -0
  301. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_shared.py +0 -0
  302. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_signature.py +0 -0
  303. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_targets.py +0 -0
  304. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_tree.py +0 -0
  305. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_values.py +0 -0
  306. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/generate_cli_graph.py +0 -0
  307. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/python_api_graph.py +0 -0
  308. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/__init__.py +0 -0
  309. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +0 -0
  310. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +0 -0
  311. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_typer_app.py +0 -0
  312. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/dot_export.py +0 -0
  313. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/graph_data.py +0 -0
  314. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/graph_paths.py +0 -0
  315. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/__init__.py +0 -0
  316. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/cli_graph_loader.py +0 -0
  317. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_builder.py +0 -0
  318. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_detail.py +0 -0
  319. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_tree.py +0 -0
  320. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/data_models.py +0 -0
  321. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/main_app.py +0 -0
  322. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/search_bar.py +0 -0
  323. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/plotly_browser.py +0 -0
  324. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/plotly_views.py +0 -0
  325. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/python_api_graph_app.py +0 -0
  326. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/python_api_graph_search.py +0 -0
  327. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/rich_tree.py +0 -0
  328. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/__init__.py +0 -0
  329. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/__init__.py +0 -0
  330. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/__init__.py +0 -0
  331. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/common.py +0 -0
  332. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +0 -0
  333. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +0 -0
  334. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/__init__.py +0 -0
  335. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_codex.py +0 -0
  336. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +0 -0
  337. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.json +0 -0
  338. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +0 -0
  339. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_cursor_agents.py +0 -0
  340. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_pi.py +0 -0
  341. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +0 -0
  342. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_agentops_cache.py +0 -0
  343. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +0 -0
  344. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_launch.py +0 -0
  345. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_status.py +0 -0
  346. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_guides.py +0 -0
  347. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_impl.py +0 -0
  348. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_details.py +0 -0
  349. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_identity.py +0 -0
  350. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_models.py +0 -0
  351. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_runtime.py +0 -0
  352. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_lifecycle.py +0 -0
  353. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_prompt.py +0 -0
  354. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_status.py +0 -0
  355. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_common.py +0 -0
  356. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_launch.py +0 -0
  357. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_models.py +0 -0
  358. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_status.py +0 -0
  359. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_clean.py +0 -0
  360. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +0 -0
  361. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_inputs.py +0 -0
  362. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_impl.py +0 -0
  363. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_models.py +0 -0
  364. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_prompts.py +0 -0
  365. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +0 -0
  366. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_constants.py +0 -0
  367. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_contract.py +0 -0
  368. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_herdr.py +0 -0
  369. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_herdr_protocol.py +0 -0
  370. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_models.py +0 -0
  371. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_plan.py +0 -0
  372. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_records.py +0 -0
  373. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_render.py +0 -0
  374. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_rich_output.py +0 -0
  375. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_selection.py +0 -0
  376. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_service.py +0 -0
  377. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_workspace_records.py +0 -0
  378. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_mcp_impl.py +0 -0
  379. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_add_entry.py +0 -0
  380. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_aoe_backend.py +0 -0
  381. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_backend.py +0 -0
  382. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_layouts.py +0 -0
  383. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +0 -0
  384. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +0 -0
  385. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +0 -0
  386. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_yaml_defaults.py +0 -0
  387. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +0 -0
  388. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +0 -0
  389. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_types.py +0 -0
  390. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +0 -0
  391. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_stackops_backend.py +0 -0
  392. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_types.py +0 -0
  393. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +0 -0
  394. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_cdp_relay.py +0 -0
  395. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/__init__.py +0 -0
  396. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/agent-browser.md +0 -0
  397. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp-browser-url.mcp.json +0 -0
  398. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.mcp.json +0 -0
  399. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.md +0 -0
  400. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/pinchtab.md +0 -0
  401. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-cli.md +0 -0
  402. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-cdp.mcp.json +0 -0
  403. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-extension.mcp.json +0 -0
  404. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-storage-state.mcp.json +0 -0
  405. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-user-data-dir.mcp.json +0 -0
  406. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.mcp.json +0 -0
  407. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.md +0 -0
  408. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/__init__.py +0 -0
  409. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/brave.py +0 -0
  410. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/chrome.py +0 -0
  411. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/common.py +0 -0
  412. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/edge.py +0 -0
  413. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/firefox.py +0 -0
  414. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/models.py +0 -0
  415. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/registry.py +0 -0
  416. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/safari.py +0 -0
  417. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +0 -0
  418. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_search.py +0 -0
  419. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_load_balancer.py +0 -0
  420. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_catalog.py +0 -0
  421. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +0 -0
  422. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_types.py +0 -0
  423. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/__init__.py +0 -0
  424. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +0 -0
  425. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +0 -0
  426. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/__init__.py +0 -0
  427. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/auggie_privacy.py +0 -0
  428. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/__init__.py +0 -0
  429. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/chatgpt_privacy.py +0 -0
  430. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/__init__.py +0 -0
  431. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/cline_privacy.py +0 -0
  432. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/__init__.py +0 -0
  433. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/codex_privacy.py +0 -0
  434. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/__init__.py +0 -0
  435. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +0 -0
  436. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/__init__.py +0 -0
  437. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +0 -0
  438. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/__init__.py +0 -0
  439. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +0 -0
  440. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/__init__.py +0 -0
  441. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/cursor_privacy.py +0 -0
  442. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/__init__.py +0 -0
  443. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/droid_privacy.py +0 -0
  444. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/__init__.py +0 -0
  445. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/kilocode_privacy.py +0 -0
  446. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/__init__.py +0 -0
  447. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/mods_privacy.py +0 -0
  448. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode/__init__.py +0 -0
  449. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/__init__.py +0 -0
  450. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/q_privacy.py +0 -0
  451. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/__init__.py +0 -0
  452. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/qwen_privacy.py +0 -0
  453. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/privacy.py +0 -0
  454. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +0 -0
  455. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/__init__.py +0 -0
  456. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/prompt.txt +0 -0
  457. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +0 -0
  458. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.sh +0 -0
  459. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/__init__.py +0 -0
  460. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/agy.py +0 -0
  461. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/auggie.py +0 -0
  462. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/claude.py +0 -0
  463. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/cline.py +0 -0
  464. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/codex.py +0 -0
  465. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/constants.py +0 -0
  466. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/copilot.py +0 -0
  467. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/crush.py +0 -0
  468. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/cursor_agent.py +0 -0
  469. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/droid.py +0 -0
  470. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/forge.py +0 -0
  471. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/json_values.py +0 -0
  472. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/kilocode.py +0 -0
  473. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/models.py +0 -0
  474. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/opencode.py +0 -0
  475. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/oz.py +0 -0
  476. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/pi.py +0 -0
  477. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/profiles.py +0 -0
  478. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/q.py +0 -0
  479. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/qwen.py +0 -0
  480. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/registry.py +0 -0
  481. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/__init__.py +0 -0
  482. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_registration.py +0 -0
  483. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_selection.py +0 -0
  484. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_helpers.py +0 -0
  485. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +0 -0
  486. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount_tmux.py +0 -0
  487. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/__init__.py +0 -0
  488. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +0 -0
  489. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_cloudflare.py +0 -0
  490. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_cloudflare_tunnel.py +0 -0
  491. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile_mapper.py +0 -0
  492. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile_transfer.py +0 -0
  493. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +0 -0
  494. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets.py +0 -0
  495. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_actions.py +0 -0
  496. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_candidates.py +0 -0
  497. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_constants.py +0 -0
  498. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_errors.py +0 -0
  499. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_json.py +0 -0
  500. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_prompts.py +0 -0
  501. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_support.py +0 -0
  502. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_validation.py +0 -0
  503. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +0 -0
  504. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_tmux.py +0 -0
  505. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +0 -0
  506. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_display.py +0 -0
  507. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_subset.py +0 -0
  508. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_subset_io.py +0 -0
  509. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +0 -0
  510. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_interactive_picker.py +0 -0
  511. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +0 -0
  512. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw_vscode_share.py +0 -0
  513. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +0 -0
  514. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos_version.py +0 -0
  515. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos_viz.py +0 -0
  516. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +0 -0
  517. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +0 -0
  518. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_clone.py +0 -0
  519. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docker.py +0 -0
  520. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +0 -0
  521. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_export.py +0 -0
  522. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_info.py +0 -0
  523. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_repo.py +0 -0
  524. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +0 -0
  525. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +0 -0
  526. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +0 -0
  527. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +0 -0
  528. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +0 -0
  529. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh_port.py +0 -0
  530. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_subset_support.py +0 -0
  531. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_vault.py +0 -0
  532. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_config.py +0 -0
  533. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_maintenance.py +0 -0
  534. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_runtime.py +0 -0
  535. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status.py +0 -0
  536. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_checks.py +0 -0
  537. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_display.py +0 -0
  538. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_update_repos.py +0 -0
  539. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +0 -0
  540. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/__init__.py +0 -0
  541. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +0 -0
  542. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/device_entry.py +0 -0
  543. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +0 -0
  544. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +0 -0
  545. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/macos.py +0 -0
  546. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/selection.py +0 -0
  547. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/utils.py +0 -0
  548. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/windows.py +0 -0
  549. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/register_interactive.py +0 -0
  550. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +0 -0
  551. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/stackops_skill_refs.py +0 -0
  552. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/__init__.py +0 -0
  553. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_pwsh_theme.ps1 +0 -0
  554. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +0 -0
  555. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +0 -0
  556. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_wezterm_theme.py +0 -0
  557. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_windows_terminal_theme.ps1 +0 -0
  558. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/vault.py +0 -0
  559. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/vscode_tunnel_auth.py +0 -0
  560. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/__init__.py +0 -0
  561. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/path_manager_backend.py +0 -0
  562. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/__init__.py +0 -0
  563. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/cloud_manager.py +0 -0
  564. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/f.py +0 -0
  565. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/file_wrangler.py +0 -0
  566. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +0 -0
  567. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +0 -0
  568. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_route_helper.py +0 -0
  569. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
  570. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/__init__.py +0 -0
  571. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +0 -0
  572. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ftpx_impl.py +0 -0
  573. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/onetimeshare.py +0 -0
  574. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/__init__.py +0 -0
  575. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_key_windows.py +0 -0
  576. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_ssh_key.py +0 -0
  577. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_cloud_init.py +0 -0
  578. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin.py +0 -0
  579. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin_utils.py +0 -0
  580. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux.py +0 -0
  581. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux_utils.py +0 -0
  582. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows.py +0 -0
  583. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows_utils.py +0 -0
  584. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_deploy_key_remote.py +0 -0
  585. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +0 -0
  586. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/common.py +0 -0
  587. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/darwin.py +0 -0
  588. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/linux.py +0 -0
  589. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/unsupported.py +0 -0
  590. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/windows.py +0 -0
  591. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/__init__.py +0 -0
  592. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/pomodoro.py +0 -0
  593. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/preview_impl.py +0 -0
  594. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/preview_read.py +0 -0
  595. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/scheduler.py +0 -0
  596. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/start_slidev.py +0 -0
  597. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/viewer.py +0 -0
  598. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/viewer_template.py +0 -0
  599. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/action.py +0 -0
  600. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/action_helper.py +0 -0
  601. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/clone.py +0 -0
  602. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/discovery.py +0 -0
  603. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/git_action.py +0 -0
  604. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/grource.py +0 -0
  605. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/record.py +0 -0
  606. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +0 -0
  607. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_2.py +0 -0
  608. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/spec_store.py +0 -0
  609. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/update.py +0 -0
  610. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_capture.py +0 -0
  611. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_checkout.py +0 -0
  612. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_constants.py +0 -0
  613. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_models.py +0 -0
  614. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_paths.py +0 -0
  615. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_status.py +0 -0
  616. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_store.py +0 -0
  617. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/ast_search.py +0 -0
  618. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/qr_code.py +0 -0
  619. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/repo_rag.py +0 -0
  620. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/script_help.py +0 -0
  621. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/semantic_search.py +0 -0
  622. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/__init__.py +0 -0
  623. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/__init__.py +0 -0
  624. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/fzfg +0 -0
  625. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/search_with_context.sh +0 -0
  626. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/__init__.py +0 -0
  627. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/fzfg +0 -0
  628. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/__init__.py +0 -0
  629. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/fzfg.ps1 +0 -0
  630. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +0 -0
  631. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
  632. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_aoe_backend.py +0 -0
  633. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_attach_common.py +0 -0
  634. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_herdr_backend.py +0 -0
  635. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_herdr_backend_idle.py +0 -0
  636. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +0 -0
  637. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +0 -0
  638. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_preview.py +0 -0
  639. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_process_commands.py +0 -0
  640. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_processes.py +0 -0
  641. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_process_inspection.py +0 -0
  642. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +0 -0
  643. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export.py +0 -0
  644. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export_selection.py +0 -0
  645. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export_source.py +0 -0
  646. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/kill_impl.py +0 -0
  647. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/kill_models.py +0 -0
  648. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_aoe.py +0 -0
  649. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_herdr.py +0 -0
  650. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_kill.py +0 -0
  651. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_models.py +0 -0
  652. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_runner.py +0 -0
  653. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_selection.py +0 -0
  654. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +0 -0
  655. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +0 -0
  656. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +0 -0
  657. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +0 -0
  658. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +0 -0
  659. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_display.py +0 -0
  660. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_tmux.py +0 -0
  661. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_herdr.py +0 -0
  662. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_impl.py +0 -0
  663. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_multiprocess.py +0 -0
  664. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_test_layouts.py +0 -0
  665. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace.py +0 -0
  666. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace_render.py +0 -0
  667. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/terminal_cli_helpers.py +0 -0
  668. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/terminal_export.py +0 -0
  669. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/tmux_export.py +0 -0
  670. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/tmux_export_constants.py +0 -0
  671. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +0 -0
  672. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +0 -0
  673. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +0 -0
  674. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/path_helper.py +0 -0
  675. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/path_reference_validation.py +0 -0
  676. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +0 -0
  677. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/process_models.py +0 -0
  678. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/processes.py +0 -0
  679. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +0 -0
  680. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_check.py +0 -0
  681. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_deps.py +0 -0
  682. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_maintenance.py +0 -0
  683. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_setup.py +0 -0
  684. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps.py +0 -0
  685. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_graph.py +0 -0
  686. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_models.py +0 -0
  687. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_parse.py +0 -0
  688. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render.py +0 -0
  689. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_css.py +0 -0
  690. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_graph_css.py +0 -0
  691. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js.py +0 -0
  692. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_bootstrap.py +0 -0
  693. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_interaction.py +0 -0
  694. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_layout.py +0 -0
  695. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_shared.py +0 -0
  696. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_svg.py +0 -0
  697. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_runner.py +0 -0
  698. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_helpers.py +0 -0
  699. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python.py +0 -0
  700. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python_env.py +0 -0
  701. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python_init.py +0 -0
  702. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +0 -0
  703. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui_backend.py +0 -0
  704. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/scrape.py +0 -0
  705. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/specs.py +0 -0
  706. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/surya.py +0 -0
  707. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/upgrade_packages.py +0 -0
  708. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/preview.py +0 -0
  709. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/seek.py +0 -0
  710. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/stackops_entry.py +0 -0
  711. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal.py +0 -0
  712. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal_summarize.py +0 -0
  713. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal_summary.py +0 -0
  714. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/utils.py +0 -0
  715. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/__init__.py +0 -0
  716. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/apps_desktop.sh +0 -0
  717. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/live_from_github.sh +0 -0
  718. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/quick_init.sh +0 -0
  719. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/uv.sh +0 -0
  720. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/macos/__init__.py +0 -0
  721. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/macos/uv.sh +0 -0
  722. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/__init__.py +0 -0
  723. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/live_from_github.ps1 +0 -0
  724. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/quick_init.ps1 +0 -0
  725. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/uv.ps1 +0 -0
  726. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/windows/__init__.py +0 -0
  727. {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/windows/wrap_stackops.ps1 +0 -0
  728. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/__init__.py +0 -0
  729. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/assets.py +0 -0
  730. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/constants.py +0 -0
  731. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/loader.py +0 -0
  732. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/models.py +0 -0
  733. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/passwords.py +0 -0
  734. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/paths.py +0 -0
  735. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/readers.py +0 -0
  736. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/search.py +0 -0
  737. {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/writer.py +0 -0
  738. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/__init__.py +0 -0
  739. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/__init__.py +0 -0
  740. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/config.toml +0 -0
  741. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/themes/__init__.py +0 -0
  742. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/themes/catppuccin-mocha-mauve.toml +0 -0
  743. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/__init__.py +0 -0
  744. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/br.sh +0 -0
  745. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/brootcd.ps1 +0 -0
  746. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/conf.toml +0 -0
  747. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/glow/__init__.py +0 -0
  748. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/glow/glow.yml +0 -0
  749. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/gromit-mpx/__init__.py +0 -0
  750. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/gromit-mpx/gromit-mpx.cfg +0 -0
  751. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/__init__.py +0 -0
  752. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/config.toml +0 -0
  753. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/languages.toml +0 -0
  754. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/yazi-picker.sh +0 -0
  755. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/herdr/__init__.py +0 -0
  756. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/herdr/config.toml +0 -0
  757. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keras/__init__.py +0 -0
  758. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keras/keras.json +0 -0
  759. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/config/__init__.py +0 -0
  760. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/config/default.yml +0 -0
  761. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/match/__init__.py +0 -0
  762. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/match/base.yml +0 -0
  763. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/kanata/__init__.py +0 -0
  764. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/kanata/kanata.kbd +0 -0
  765. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/__init__.py +0 -0
  766. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/__init__.py +0 -0
  767. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/delete.sh +0 -0
  768. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/on-cd.sh +0 -0
  769. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/on-quit.sh +0 -0
  770. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/open.sh +0 -0
  771. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/paste.sh +0 -0
  772. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/pre-cd.sh +0 -0
  773. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/rename.sh +0 -0
  774. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/colors +0 -0
  775. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/__init__.py +0 -0
  776. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/cleaner.sh +0 -0
  777. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
  778. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/lfcd.sh +0 -0
  779. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/previewer.sh +0 -0
  780. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/previewer_archive.sh +0 -0
  781. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/icons +0 -0
  782. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/lfrc +0 -0
  783. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/__init__.py +0 -0
  784. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/action.ps1 +0 -0
  785. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/__init__.py +0 -0
  786. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/delete.ps1 +0 -0
  787. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  788. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  789. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/open.ps1 +0 -0
  790. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/paste.ps1 +0 -0
  791. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  792. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/rename.ps1 +0 -0
  793. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_tere.ps1 +0 -0
  794. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_zoxide.ps1 +0 -0
  795. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_zoxide2.ps1 +0 -0
  796. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/colors +0 -0
  797. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/icons +0 -0
  798. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/leftpane_previewer.ps1 +0 -0
  799. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/lfcd.ps1 +0 -0
  800. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/lfrc +0 -0
  801. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/mkdir.ps1 +0 -0
  802. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/mkfile.ps1 +0 -0
  803. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/previewer.cmd +0 -0
  804. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/previewer.ps1 +0 -0
  805. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.flake8 +0 -0
  806. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.mypy.ini +0 -0
  807. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.pylintrc +0 -0
  808. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.ruff.toml +0 -0
  809. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/__init__.py +0 -0
  810. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/pyrefly.toml +0 -0
  811. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/ty.toml +0 -0
  812. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/linux/__init__.py +0 -0
  813. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/linux/config.lua +0 -0
  814. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/__init__.py +0 -0
  815. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/archive/__init__.py +0 -0
  816. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/archive/config_additional.lua +0 -0
  817. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/config.lua +0 -0
  818. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/lua/user/__init__.py +0 -0
  819. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/lua/user/custom_config.lua +0 -0
  820. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/__init__.py +0 -0
  821. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/marimo.toml +0 -0
  822. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/snippets/globalize.py +0 -0
  823. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/__init__.py +0 -0
  824. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/mprocs.yaml +0 -0
  825. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/other +0 -0
  826. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/ollama/__init__.py +0 -0
  827. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/ollama/server.json +0 -0
  828. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pistol/__init__.py +0 -0
  829. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pistol/pistol.conf +0 -0
  830. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/presenterm/__init__.py +0 -0
  831. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/presenterm/config.yaml +0 -0
  832. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/procs/.procs.toml +0 -0
  833. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/__init__.py +0 -0
  834. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/description.md +0 -0
  835. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/install-ppm.ps1 +0 -0
  836. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.bindings.conf +0 -0
  837. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.conf +0 -0
  838. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.local.conf +0 -0
  839. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.plugins.conf +0 -0
  840. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.powerline.conf +0 -0
  841. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.theme.conf +0 -0
  842. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pudb/__init__.py +0 -0
  843. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pudb/pudb.cfg +0 -0
  844. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/__init__.py +0 -0
  845. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/config.rasi +0 -0
  846. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/config_default.rasi +0 -0
  847. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/__init__.py +0 -0
  848. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/alacritty.toml +0 -0
  849. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/alacritty.yml +0 -0
  850. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/bash/__init__.py +0 -0
  851. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/bash/init.sh +0 -0
  852. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/__init__.py +0 -0
  853. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/config.ghostty +0 -0
  854. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/themes/wezterm-default +0 -0
  855. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/hyper/.hyper.js +0 -0
  856. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/__init__.py +0 -0
  857. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
  858. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
  859. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/DynamicProfiles/stackops.json +0 -0
  860. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/bootstrap/com.googlecode.iterm2.plist +0 -0
  861. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/com.googlecode.iterm2.plist +0 -0
  862. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/kitty/__init__.py +0 -0
  863. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/kitty/kitty.conf +0 -0
  864. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/__init__.py +0 -0
  865. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/config.nu +0 -0
  866. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/env.nu +0 -0
  867. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/init.nu +0 -0
  868. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/__init__.py +0 -0
  869. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/init.ps1 +0 -0
  870. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/search_pwsh_history.ps1 +0 -0
  871. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/starship/__init__.py +0 -0
  872. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/starship/starship.toml +0 -0
  873. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/vtm/__init__.py +0 -0
  874. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/vtm/settings.xml +0 -0
  875. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wezterm/__init__.py +0 -0
  876. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wezterm/wezterm.lua +0 -0
  877. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wt/__init__.py +0 -0
  878. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wt/settings.json +0 -0
  879. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/zsh/__init__.py +0 -0
  880. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/zsh/init.sh +0 -0
  881. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/streamlit/__init__.py +0 -0
  882. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/streamlit/config.toml +0 -0
  883. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/linux/__init__.py +0 -0
  884. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/linux/init.toml +0 -0
  885. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/windows/__init__.py +0 -0
  886. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/windows/init.toml +0 -0
  887. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/__init__.py +0 -0
  888. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/alias.toml +0 -0
  889. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/apt-packages.toml +0 -0
  890. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/aws-buckets.toml +0 -0
  891. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/aws-instances.toml +0 -0
  892. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/bash-history.toml +0 -0
  893. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/brew-packages.toml +0 -0
  894. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/channels.toml +0 -0
  895. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dirs.toml +0 -0
  896. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/diskutil.toml +0 -0
  897. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/distrobox-list.toml +0 -0
  898. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dnf-packages.toml +0 -0
  899. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/docker-images.toml +0 -0
  900. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dotfiles.toml +0 -0
  901. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/downloads.toml +0 -0
  902. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/env.toml +0 -0
  903. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/figlet-fonts.toml +0 -0
  904. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/files.toml +0 -0
  905. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/fish-history.toml +0 -0
  906. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/fonts.toml +0 -0
  907. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-branch.toml +0 -0
  908. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-diff.toml +0 -0
  909. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-files.toml +0 -0
  910. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-log.toml +0 -0
  911. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-reflog.toml +0 -0
  912. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-repos.toml +0 -0
  913. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-tags.toml +0 -0
  914. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-worktrees.toml +0 -0
  915. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/guix.toml +0 -0
  916. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/images.toml +0 -0
  917. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/just-recipes.toml +0 -0
  918. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-deployments.toml +0 -0
  919. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-pods.toml +0 -0
  920. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-services.toml +0 -0
  921. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/linux-disks.toml +0 -0
  922. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/man-pages.toml +0 -0
  923. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/mounts.toml +0 -0
  924. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/npm-packages.toml +0 -0
  925. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/nu-history.toml +0 -0
  926. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/path.toml +0 -0
  927. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/ports.toml +0 -0
  928. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/procs.toml +0 -0
  929. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/python-venvs.toml +0 -0
  930. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/recent-files.toml +0 -0
  931. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/sesh.toml +0 -0
  932. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/text.toml +0 -0
  933. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tldr.toml +0 -0
  934. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tmux-sessions.toml +0 -0
  935. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tmux-windows.toml +0 -0
  936. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/todo-comments.toml +0 -0
  937. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/trash.toml +0 -0
  938. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/unicode.toml +0 -0
  939. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/wifi.toml +0 -0
  940. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/zoxide.toml +0 -0
  941. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/zsh-history.toml +0 -0
  942. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/__init__.py +0 -0
  943. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/alias.toml +0 -0
  944. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/dirs.toml +0 -0
  945. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/docker-images.toml +0 -0
  946. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/dotfiles.toml +0 -0
  947. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/env.toml +0 -0
  948. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/files.toml +0 -0
  949. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-branch.toml +0 -0
  950. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-diff.toml +0 -0
  951. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-log.toml +0 -0
  952. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-reflog.toml +0 -0
  953. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-repos.toml +0 -0
  954. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/nu-history.toml +0 -0
  955. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/pwsh-history.toml +0 -0
  956. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/text.toml +0 -0
  957. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/__init__.py +0 -0
  958. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/terecd.ps1 +0 -0
  959. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/terecd.sh +0 -0
  960. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tmux/__init__.py +0 -0
  961. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tmux/tmux.conf.local +0 -0
  962. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/__init__.py +0 -0
  963. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/config.toml +0 -0
  964. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/themes/__init__.py +0 -0
  965. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/themes/catppuccin-mocha-sky.toml +0 -0
  966. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wsl/.wslconfig +0 -0
  967. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wt/__init__.py +0 -0
  968. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wt/set_wt_settings.py +0 -0
  969. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/__init__.py +0 -0
  970. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/init.lua +0 -0
  971. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_darwin.toml +0 -0
  972. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_linux.toml +0 -0
  973. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_windows.toml +0 -0
  974. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/__init__.py +0 -0
  975. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/compress_selected.py +0 -0
  976. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/copy_file_content.py +0 -0
  977. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/fullscreen_preview.py +0 -0
  978. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/interactive_view.py +0 -0
  979. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/open_db_readonly.py +0 -0
  980. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/open_default_app.py +0 -0
  981. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/serve_browser_file.py +0 -0
  982. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/__init__.py +0 -0
  983. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/yazi_cd.ps1 +0 -0
  984. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/yazi_cd.sh +0 -0
  985. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/theme.toml +0 -0
  986. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_darwin.toml +0 -0
  987. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_linux.toml +0 -0
  988. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_windows.toml +0 -0
  989. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/zed/__init__.py +0 -0
  990. {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/zed/settings.json +0 -0
  991. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/__init__.py +0 -0
  992. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/accessories.py +0 -0
  993. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/__init__.py +0 -0
  994. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/alias_markers.py +0 -0
  995. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/command_lookup.py +0 -0
  996. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/hierarchy.py +0 -0
  997. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/hierarchy_types.py +0 -0
  998. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/terminal.py +0 -0
  999. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/__init__.py +0 -0
  1000. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/defaults.py +0 -0
  1001. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/encryption.py +0 -0
  1002. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/README.md +0 -0
  1003. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/__init__.py +0 -0
  1004. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/accounts.py +0 -0
  1005. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/auth.py +0 -0
  1006. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/cli.py +0 -0
  1007. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/constants.py +0 -0
  1008. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/credentials.py +0 -0
  1009. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/errors.py +0 -0
  1010. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/file_ops.py +0 -0
  1011. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/items.py +0 -0
  1012. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/output.py +0 -0
  1013. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/target_conflict.py +0 -0
  1014. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/code.py +0 -0
  1015. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/__init__.py +0 -0
  1016. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/__init__.py +0 -0
  1017. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/fat_croco.txt +0 -0
  1018. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/halfwit_croco.txt +0 -0
  1019. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/happy_croco.txt +0 -0
  1020. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/water_croco.txt +0 -0
  1021. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ascii_art.py +0 -0
  1022. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/compression.py +0 -0
  1023. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/dbms.py +0 -0
  1024. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/download.py +0 -0
  1025. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/f.py +0 -0
  1026. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/headers.py +0 -0
  1027. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/notebook.py +0 -0
  1028. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ouch/__init__.py +0 -0
  1029. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ouch/decompress.py +0 -0
  1030. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/read.py +0 -0
  1031. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/__init__.py +0 -0
  1032. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/github_release_bulk.py +0 -0
  1033. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/github_release_scraper.py +0 -0
  1034. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/install_from_url.py +0 -0
  1035. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/install_request_logic.py +0 -0
  1036. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_cli.py +0 -0
  1037. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_explore.py +0 -0
  1038. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_locator_utils.py +0 -0
  1039. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_main_protocol.py +0 -0
  1040. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline.py +0 -0
  1041. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_constants.py +0 -0
  1042. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_models.py +0 -0
  1043. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_publish.py +0 -0
  1044. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_render.py +0 -0
  1045. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_scripts.py +0 -0
  1046. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_steps.py +0 -0
  1047. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_uv.py +0 -0
  1048. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_runner.py +0 -0
  1049. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_summary.py +0 -0
  1050. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/linux_package_file.py +0 -0
  1051. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/linux_package_manager.py +0 -0
  1052. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/machine/__init__.py +0 -0
  1053. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/machine/specs.py +0 -0
  1054. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/meta.py +0 -0
  1055. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/network/__init__.py +0 -0
  1056. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/network/address.py +0 -0
  1057. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/optional_dependencies.py +0 -0
  1058. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/__init__.py +0 -0
  1059. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options.py +0 -0
  1060. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options_tv_linux.py +0 -0
  1061. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options_tv_windows.py +0 -0
  1062. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/textual_options_form.py +0 -0
  1063. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/textual_options_form_types.py +0 -0
  1064. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/tv_options.py +0 -0
  1065. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/path_core.py +0 -0
  1066. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/path_reference.py +0 -0
  1067. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/python/__init__.py +0 -0
  1068. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/python/imports.py +0 -0
  1069. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/repos/__init__.py +0 -0
  1070. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/repos/stackops_paths.py +0 -0
  1071. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/__init__.py +0 -0
  1072. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/__init__.py +0 -0
  1073. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/parallel.schema.json +0 -0
  1074. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/prompts.schema.json +0 -0
  1075. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/__init__.py +0 -0
  1076. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config.json +0 -0
  1077. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config.schema.json +0 -0
  1078. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config_types.py +0 -0
  1079. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/__init__.py +0 -0
  1080. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/fire_agents_input.py +0 -0
  1081. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/fire_agents_types.py +0 -0
  1082. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/__init__.py +0 -0
  1083. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_type.schema.json +0 -0
  1084. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_types.py +0 -0
  1085. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/package_groups.py +0 -0
  1086. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/__init__.py +0 -0
  1087. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout.json +0 -0
  1088. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout.schema.json +0 -0
  1089. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout_types.py +0 -0
  1090. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/__init__.py +0 -0
  1091. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/data.schema.json +0 -0
  1092. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/data.yaml +0 -0
  1093. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/dotfiles.schema.json +0 -0
  1094. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/__init__.py +0 -0
  1095. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/repos_schema.json +0 -0
  1096. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/repos_types.py +0 -0
  1097. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/yaml_schema.py +0 -0
  1098. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/source_of_truth.py +0 -0
  1099. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/__init__.py +0 -0
  1100. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/connection_target.py +0 -0
  1101. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/open_ssh_config.py +0 -0
  1102. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/ssh.py +0 -0
  1103. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/wsl.py +0 -0
  1104. {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/wsl_helper.py +0 -0
  1105. {stackops-26.8 → stackops-26.8.1}/src/stackops/version.py +0 -0
  1106. {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/dependency_links.txt +0 -0
  1107. {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/entry_points.txt +0 -0
  1108. {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/requires.txt +0 -0
  1109. {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackops
3
- Version: 26.8
3
+ Version: 26.8.1
4
4
  Summary: Developer Stack Manager
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "stackops"
9
- version = "26.8"
9
+ version = "26.8.1"
10
10
  description = "Developer Stack Manager"
11
11
  readme = "README.md"
12
12
  license = {text = "Apache 2.0"}
@@ -99,6 +99,7 @@ dev = [
99
99
  "numpy>=2.5.0",
100
100
  "pandas>=3.0.3",
101
101
  "paramiko>=5.0.0",
102
+ "playwright>=1.62.0",
102
103
  "plotly>=6.8.0",
103
104
  "polars>=1.42.0",
104
105
  "pre-commit>=4.6.0",
@@ -12,9 +12,9 @@ from rich.console import Console
12
12
 
13
13
  from stackops.cluster.remote.models import JOB_STATUS, LogEntry
14
14
  from stackops.utils.cloud import rclone as rclone_utils
15
+ from stackops.utils.cloud.default_remote import read_default_rclone_remote
15
16
  from stackops.utils.files.read import read_json
16
17
  from stackops.utils.io import save_json
17
- from stackops.utils.source_of_truth import read_stackops_config_string
18
18
 
19
19
 
20
20
  LOCK_EXPIRY_SECONDS = 3600
@@ -59,7 +59,7 @@ class CloudManager:
59
59
  self.status_root = status_root
60
60
  self.max_jobs = max_jobs
61
61
  if cloud is None:
62
- self.cloud = read_stackops_config_string("default_rclone_config")
62
+ self.cloud = read_default_rclone_remote()
63
63
  else:
64
64
  self.cloud = cloud
65
65
  self.lock_claimed = False
@@ -162,7 +162,12 @@ def _read_default_config_value(key: StackOpsConfigStringKey) -> str:
162
162
  try:
163
163
  return read_stackops_config_string(key)
164
164
  except (FileNotFoundError, KeyError, ValueError) as err:
165
- raise ValueError(f"Config value '{key}' could not be read from `{DOTFILES_STACKOPS_CONFIG_PATH}`") from err
165
+ setup_domain = "cloud" if key == "default_rclone_config" else "email"
166
+ raise ValueError(
167
+ f"Config value '{key}' could not be read from `{DOTFILES_STACKOPS_CONFIG_PATH}`.\n\n"
168
+ "Create or update it with:\n"
169
+ f" devops config setup {setup_domain}"
170
+ ) from err
166
171
 
167
172
 
168
173
  @dataclass
@@ -3,6 +3,7 @@
3
3
  import json
4
4
  from pathlib import Path
5
5
  import smtplib
6
+ import ssl
6
7
  import imaplib
7
8
  from email.mime.text import MIMEText
8
9
  from email.mime.multipart import MIMEMultipart
@@ -119,6 +120,9 @@ class Email:
119
120
  self.server = smtplib.SMTP_SSL(host=smtp_host, port=smtp_port)
120
121
  elif encryption_name == "tls":
121
122
  self.server = smtplib.SMTP(host=smtp_host, port=smtp_port)
123
+ self.server.starttls(context=ssl.create_default_context())
124
+ else:
125
+ raise ValueError(f"Email encryption for {config_name!r} must be 'tls' or 'ssl', got {encryption!r}.")
122
126
  self.server.login(self.email_add, password=password)
123
127
 
124
128
  def send_message(self, to: str, subject: str, body: str, txt_to_html: bool = True, attachments: list[Any] | None = None):
@@ -4,6 +4,8 @@ from typing import TYPE_CHECKING, Annotated, Literal
4
4
 
5
5
  import typer
6
6
 
7
+ from stackops.jobs.installer.checks.security_helper import parse_apps_argument
8
+
7
9
  if TYPE_CHECKING:
8
10
  from rich.console import Console
9
11
  from rich.table import Table
@@ -20,19 +22,25 @@ def _console() -> Console:
20
22
  return Console()
21
23
 
22
24
 
23
- def _parse_apps_argument(apps: str | None) -> list[str] | None:
24
- if apps is None:
25
- return None
26
- app_names = [name.strip() for name in apps.split(",") if name.strip()]
27
- return app_names or None
28
-
29
-
30
25
  def _resolve_report_view(view: ReportView | None, summarize: bool) -> ReportView:
31
26
  if view is not None:
32
27
  return view
33
28
  return "app-summary" if summarize else "engines"
34
29
 
35
30
 
31
+ def _run_scan(app_names: list[str] | None, path_value: str | None, record: bool) -> None:
32
+ if path_value is not None:
33
+ from pathlib import Path
34
+
35
+ from stackops.jobs.installer.checks.security_helper import scan_single_path
36
+
37
+ scan_single_path(Path(path_value), record)
38
+ else:
39
+ from stackops.jobs.installer.checks.check_installations import scan_installed_apps
40
+
41
+ scan_installed_apps(app_names, write_reports_to_repo=record)
42
+
43
+
36
44
  def scan(
37
45
  apps: Annotated[str | None, typer.Argument(help="Optional comma-separated app names to scan")] = None,
38
46
  path: Annotated[
@@ -50,23 +58,21 @@ def scan(
50
58
  ),
51
59
  ] = None,
52
60
  ) -> None:
53
- def run_scan(apps: str | None, path: Path | None, record: bool | None) -> None:
54
- from stackops.jobs.installer.checks.security_helper import scan_single_path
55
-
56
- if apps is not None and path is not None:
57
- raise typer.BadParameter("Use either APPS or --path, not both.")
58
- resolved_record = record if record is not None else path is None
59
- if path is not None:
60
- scan_single_path(path, resolved_record)
61
- else:
62
- from stackops.jobs.installer.checks.check_installations import scan_installed_apps
63
-
64
- app_names = _parse_apps_argument(apps)
65
- scan_installed_apps(app_names, write_reports_to_repo=resolved_record)
61
+ if apps is not None and path is not None:
62
+ raise typer.BadParameter("Use either APPS or --path, not both.")
63
+ app_names = parse_apps_argument(apps)
64
+ path_value = str(path) if path is not None else None
65
+ resolved_record = record if record is not None else path is None
66
66
 
67
67
  from stackops.utils.code import run_lambda_function
68
68
 
69
- run_lambda_function(lambda: run_scan(apps=apps, path=path, record=record), uv_with=["vt-py"], uv_project_dir=None)
69
+ proc = run_lambda_function(
70
+ lambda: _run_scan(app_names=app_names, path_value=path_value, record=resolved_record),
71
+ uv_with=["vt-py"],
72
+ uv_project_dir=None,
73
+ )
74
+ if proc.returncode != 0:
75
+ raise typer.Exit(code=proc.returncode)
70
76
 
71
77
 
72
78
  def _build_apps_table(apps_to_scan: list[tuple[Path, str | None]]) -> Table:
@@ -85,7 +91,7 @@ def _build_apps_table(apps_to_scan: list[tuple[Path, str | None]]) -> Table:
85
91
  def list_apps(apps: Annotated[str | None, typer.Argument(help="Optional comma-separated app names to list")] = None) -> None:
86
92
  from stackops.jobs.installer.checks.check_installations import collect_apps_to_scan
87
93
 
88
- apps_names = _parse_apps_argument(apps)
94
+ apps_names = parse_apps_argument(apps)
89
95
  apps_to_scan = collect_apps_to_scan(apps_names)
90
96
  if not apps_to_scan:
91
97
  if apps_names is None:
@@ -147,7 +153,7 @@ def report(
147
153
  normalize_app_names,
148
154
  )
149
155
 
150
- apps_names = _parse_apps_argument(apps)
156
+ apps_names = parse_apps_argument(apps)
151
157
  normalized_app_names = normalize_app_names(apps_names)
152
158
  app_rows, engine_rows, app_data_list, hydrated_engine_rows = load_filtered_report_rows(normalized_app_names)
153
159
 
@@ -0,0 +1,69 @@
1
+ import platform
2
+ from pathlib import Path
3
+
4
+ import stackops.utils.path_core as path_core
5
+ from stackops.utils.installer_utils.installer_class import Installer
6
+ from stackops.utils.path_core import delete_path
7
+ from stackops.utils.schemas.installer.installer_types import InstallerData
8
+ from stackops.utils.source_of_truth import LINUX_INSTALL_PATH, WINDOWS_INSTALL_PATH
9
+
10
+
11
+ def _build_release_installer_data(installer_data: InstallerData) -> InstallerData:
12
+ release_installer_data = installer_data.copy()
13
+ release_installer_data["fileNamePattern"] = {
14
+ "amd64": {
15
+ "linux": "rustdesk-server-linux-amd64.zip",
16
+ "windows": "rustdesk-server-windows-x86_64-unsigned.zip",
17
+ "darwin": None,
18
+ },
19
+ "arm64": {
20
+ "linux": "rustdesk-server-linux-arm64v8.zip",
21
+ "windows": None,
22
+ "darwin": None,
23
+ },
24
+ }
25
+ return release_installer_data
26
+
27
+
28
+ def _resolve_release_binaries(extracted_root: Path, binary_names: tuple[str, ...], suffix: str) -> dict[str, Path]:
29
+ resolved_binaries: dict[str, Path] = {}
30
+ for binary_name in binary_names:
31
+ expected_name = f"{binary_name}{suffix}"
32
+ matches = [candidate for candidate in extracted_root.rglob(expected_name) if candidate.is_file()]
33
+ if len(matches) != 1:
34
+ raise FileNotFoundError(f"Expected one {expected_name} in {extracted_root}, found {len(matches)}.")
35
+ resolved_binaries[binary_name] = matches[0]
36
+ return resolved_binaries
37
+
38
+
39
+ def main(installer_data: InstallerData, version: str | None, update: bool) -> None:
40
+ _ = update
41
+ match platform.system():
42
+ case "Linux":
43
+ install_root = Path(LINUX_INSTALL_PATH)
44
+ executable_suffix = ""
45
+ case "Windows":
46
+ install_root = Path(WINDOWS_INSTALL_PATH)
47
+ executable_suffix = ".exe"
48
+ case operating_system:
49
+ raise NotImplementedError(f"RustDesk Server is not published for {operating_system}.")
50
+
51
+ binary_names = ("hbbs", "hbbr", "rustdesk-utils")
52
+ release_installer_data = _build_release_installer_data(installer_data=installer_data)
53
+ extracted_root, _resolved_version = Installer(installer_data=release_installer_data).binary_download(version=version)
54
+ _ = _resolved_version
55
+ try:
56
+ if not extracted_root.is_dir():
57
+ raise NotADirectoryError(f"Expected an extracted RustDesk Server archive, got {extracted_root}.")
58
+ resolved_binaries = _resolve_release_binaries(
59
+ extracted_root=extracted_root,
60
+ binary_names=binary_names,
61
+ suffix=executable_suffix,
62
+ )
63
+ install_root.mkdir(parents=True, exist_ok=True)
64
+ for binary_path in resolved_binaries.values():
65
+ if platform.system() == "Linux":
66
+ binary_path.chmod(0o755)
67
+ path_core.move(binary_path, folder=install_root, overwrite=True)
68
+ finally:
69
+ delete_path(extracted_root, verbose=False)
@@ -0,0 +1,354 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.13"
4
+ # dependencies = [
5
+ # "playwright>=1.49.0",
6
+ # "rich>=13.9.0",
7
+ # "typer>=0.15.0",
8
+ # ]
9
+ # ///
10
+
11
+ import asyncio
12
+ import random
13
+ import re
14
+ import signal
15
+ import time
16
+ from pathlib import Path
17
+ from typing import Annotated
18
+
19
+ import typer
20
+ from playwright.async_api import Locator, Page, TimeoutError as PlaywrightTimeoutError, async_playwright
21
+ from rich.console import Console
22
+ from rich.panel import Panel
23
+ from rich.progress import Progress, SpinnerColumn, TextColumn, TimeElapsedColumn
24
+ from rich.table import Table
25
+ from rich.text import Text
26
+
27
+
28
+ DEFAULT_QUESTIONS = [
29
+ "What is one practical way to organize my day better?",
30
+ "Explain a useful idea from science in simple terms.",
31
+ "Give me a short writing prompt.",
32
+ "What is a good five-minute habit to build?",
33
+ "Teach me one interesting historical fact.",
34
+ "What is a simple recipe idea using common pantry ingredients?",
35
+ "Give me a small Python exercise for practice.",
36
+ "What is one way to improve focus while working?",
37
+ "Explain a common misconception in technology.",
38
+ "Suggest a quick mental math trick.",
39
+ ]
40
+
41
+
42
+ app = typer.Typer(add_completion=False, help=("Send random local questions to ChatGPT through an existing logged-in Chrome/Chromium CDP session."))
43
+ console = Console()
44
+
45
+
46
+ class StopRequested(Exception):
47
+ pass
48
+
49
+
50
+ async def find_composer(page: Page) -> Locator:
51
+ candidates = [
52
+ page.get_by_role("textbox", name=re.compile(r"(chat with chatgpt|message)", re.I)).last,
53
+ page.locator('[contenteditable="true"]').last,
54
+ page.locator("textarea").last,
55
+ ]
56
+
57
+ last_error: Exception | None = None
58
+ for candidate in candidates:
59
+ try:
60
+ await candidate.wait_for(state="visible", timeout=10_000)
61
+ return candidate
62
+ except Exception as exc: # Playwright has several timeout subclasses.
63
+ last_error = exc
64
+
65
+ login_visible = await page.get_by_role("button", name=re.compile(r"log in|sign in", re.I)).count()
66
+ if login_visible:
67
+ raise RuntimeError("ChatGPT appears to be logged out. Log in in the browser, then rerun.")
68
+
69
+ raise RuntimeError(f"Could not find the ChatGPT message composer: {last_error}")
70
+
71
+
72
+ async def extract_last_assistant_message(page: Page) -> str:
73
+ text = await page.evaluate(
74
+ """
75
+ () => {
76
+ const normalize = (value) => (value || "").replace(/\\s+\\n/g, "\\n").trim();
77
+
78
+ const roleMessages = Array.from(
79
+ document.querySelectorAll('[data-message-author-role="assistant"]')
80
+ )
81
+ .map((node) => normalize(node.innerText || node.textContent))
82
+ .filter(Boolean);
83
+ if (roleMessages.length) return roleMessages.at(-1);
84
+
85
+ const articles = Array.from(document.querySelectorAll("article"))
86
+ .map((node) => normalize(node.innerText || node.textContent))
87
+ .filter((value) => value && !/^you\\b/i.test(value));
88
+ return articles.at(-1) || "";
89
+ }
90
+ """
91
+ )
92
+ return str(text or "").strip()
93
+
94
+
95
+ async def is_generating(page: Page) -> bool:
96
+ return bool(
97
+ await page.evaluate(
98
+ """
99
+ () => {
100
+ const pattern = /stop (generating|answering|streaming)|stop response/i;
101
+ return Array.from(document.querySelectorAll("button")).some((button) => {
102
+ const label = [
103
+ button.innerText,
104
+ button.getAttribute("aria-label"),
105
+ button.getAttribute("title"),
106
+ ].filter(Boolean).join(" ");
107
+ return pattern.test(label);
108
+ });
109
+ }
110
+ """
111
+ )
112
+ )
113
+
114
+
115
+ async def wait_for_response(page: Page, *, timeout_seconds: float, poll_seconds: float, stable_seconds: float) -> str:
116
+ deadline = time.monotonic() + timeout_seconds
117
+ last_text = ""
118
+ stable_since = time.monotonic()
119
+
120
+ while time.monotonic() < deadline:
121
+ text = await extract_last_assistant_message(page)
122
+ generating = await is_generating(page)
123
+
124
+ if text and text != last_text:
125
+ last_text = text
126
+ stable_since = time.monotonic()
127
+ elif text and not generating and time.monotonic() - stable_since >= stable_seconds:
128
+ return text
129
+
130
+ await asyncio.sleep(poll_seconds)
131
+
132
+ if last_text:
133
+ return last_text
134
+ raise TimeoutError("Timed out waiting for a ChatGPT response.")
135
+
136
+
137
+ async def send_question(
138
+ *,
139
+ page: Page,
140
+ question: str,
141
+ chatgpt_url: str,
142
+ pre_submit_wait_seconds: float,
143
+ response_timeout_seconds: float,
144
+ poll_seconds: float,
145
+ stable_seconds: float,
146
+ ) -> str:
147
+ await page.goto(chatgpt_url, wait_until="domcontentloaded", timeout=60_000)
148
+ await page.wait_for_load_state("domcontentloaded")
149
+ await asyncio.sleep(pre_submit_wait_seconds)
150
+
151
+ composer = await find_composer(page)
152
+ await composer.click()
153
+ await composer.fill(question)
154
+ await composer.press("Enter")
155
+
156
+ return await wait_for_response(page, timeout_seconds=response_timeout_seconds, poll_seconds=poll_seconds, stable_seconds=stable_seconds)
157
+
158
+
159
+ def load_questions(question_options: list[str] | None, questions_file: Path | None) -> list[str]:
160
+ questions: list[str] = []
161
+
162
+ if question_options:
163
+ questions.extend(q.strip() for q in question_options if q.strip())
164
+
165
+ if questions_file:
166
+ if not questions_file.exists():
167
+ raise typer.BadParameter(f"questions file does not exist: {questions_file}")
168
+ file_questions = [
169
+ line.strip() for line in questions_file.read_text(encoding="utf-8").splitlines() if line.strip() and not line.lstrip().startswith("#")
170
+ ]
171
+ questions.extend(file_questions)
172
+
173
+ return questions or list(DEFAULT_QUESTIONS)
174
+
175
+
176
+ def print_cycle(cycle: int, question: str, response: str) -> None:
177
+ table = Table.grid(padding=(0, 1))
178
+ table.add_column(style="bold cyan", no_wrap=True)
179
+ table.add_column()
180
+ table.add_row("Cycle", str(cycle))
181
+ table.add_row("Question", question)
182
+ table.add_row("Response", response)
183
+ console.print(Panel(table, title="ChatGPT response", border_style="green"))
184
+
185
+
186
+ async def sleep_with_status(seconds: float, *, cycle: int) -> None:
187
+ if seconds <= 0:
188
+ return
189
+
190
+ with Progress(
191
+ SpinnerColumn(), TextColumn(f"Waiting {seconds:g}s before cycle {cycle + 1}"), TimeElapsedColumn(), transient=True, console=console
192
+ ) as progress:
193
+ task = progress.add_task("sleep", total=None)
194
+ end = time.monotonic() + seconds
195
+ while time.monotonic() < end:
196
+ progress.update(task)
197
+ await asyncio.sleep(min(1.0, end - time.monotonic()))
198
+
199
+
200
+ async def run_loop(
201
+ *,
202
+ cdp_url: str,
203
+ chatgpt_url: str,
204
+ interval_seconds: float,
205
+ cycles: int | None,
206
+ questions: list[str],
207
+ seed: int | None,
208
+ pre_submit_wait_seconds: float,
209
+ response_timeout_seconds: float,
210
+ poll_seconds: float,
211
+ stable_seconds: float,
212
+ keep_tabs: bool,
213
+ dry_run: bool,
214
+ ) -> None:
215
+ rng = random.Random(seed)
216
+
217
+ if dry_run:
218
+ question = rng.choice(questions)
219
+ console.print(Panel(question, title="Dry run question", border_style="yellow"))
220
+ return
221
+
222
+ stop = asyncio.Event()
223
+
224
+ def request_stop(*_: object) -> None:
225
+ stop.set()
226
+
227
+ loop = asyncio.get_running_loop()
228
+ for sig in (signal.SIGINT, signal.SIGTERM):
229
+ try:
230
+ loop.add_signal_handler(sig, request_stop)
231
+ except NotImplementedError:
232
+ pass
233
+
234
+ async with async_playwright() as playwright:
235
+ browser = await playwright.chromium.connect_over_cdp(cdp_url)
236
+ if not browser.contexts:
237
+ raise RuntimeError("Connected to CDP, but no browser contexts were available.")
238
+
239
+ context = browser.contexts[0]
240
+ cycle = 0
241
+
242
+ try:
243
+ while not stop.is_set():
244
+ cycle += 1
245
+ if cycles is not None and cycle > cycles:
246
+ break
247
+
248
+ question = rng.choice(questions)
249
+ page = await context.new_page()
250
+
251
+ try:
252
+ console.print(f"[bold cyan]Cycle {cycle}[/]: opening {chatgpt_url}")
253
+ response = await send_question(
254
+ page=page,
255
+ question=question,
256
+ chatgpt_url=chatgpt_url,
257
+ pre_submit_wait_seconds=pre_submit_wait_seconds,
258
+ response_timeout_seconds=response_timeout_seconds,
259
+ poll_seconds=poll_seconds,
260
+ stable_seconds=stable_seconds,
261
+ )
262
+ print_cycle(cycle, question, response)
263
+ except PlaywrightTimeoutError as exc:
264
+ console.print(Panel(str(exc), title=f"Cycle {cycle} timed out", border_style="red"))
265
+ except Exception as exc:
266
+ console.print(Panel(str(exc), title=f"Cycle {cycle} failed", border_style="red"))
267
+ finally:
268
+ if not keep_tabs:
269
+ await page.close()
270
+
271
+ if cycles is not None and cycle >= cycles:
272
+ break
273
+
274
+ await sleep_with_status(interval_seconds, cycle=cycle)
275
+ finally:
276
+ # The script attaches to an existing browser over CDP. Close per-cycle tabs,
277
+ # but do not intentionally shut down the user's browser process on exit.
278
+ pass
279
+
280
+
281
+ @app.command()
282
+ def main(
283
+ cdp_url: Annotated[
284
+ str, typer.Option("--cdp-url", help="Chrome DevTools Protocol endpoint for the already-running browser.")
285
+ ] = "http://192.168.0.13:9999",
286
+ chatgpt_url: Annotated[str, typer.Option("--chatgpt-url", help="ChatGPT URL to open in each new tab.")] = "https://chatgpt.com/",
287
+ interval_minutes: Annotated[
288
+ float, typer.Option("--interval-minutes", "-i", min=0.0, help="Minutes to wait between cycles. Default is 10 minutes.")
289
+ ] = 10.0,
290
+ cycles: Annotated[int | None, typer.Option("--cycles", "-n", min=1, help="Number of cycles to run. Omit for infinite repeat.")] = None,
291
+ question: Annotated[
292
+ list[str] | None, typer.Option("--question", "-q", help="Question to include in the random pool. Can be passed multiple times.")
293
+ ] = None,
294
+ questions_file: Annotated[
295
+ Path | None,
296
+ typer.Option(
297
+ "--questions-file", "-f", exists=False, dir_okay=False, help="Newline-delimited question file. Empty lines and # comments are ignored."
298
+ ),
299
+ ] = None,
300
+ seed: Annotated[int | None, typer.Option("--seed", help="Random seed for reproducible question selection.")] = None,
301
+ pre_submit_wait_seconds: Annotated[
302
+ float, typer.Option("--pre-submit-wait-seconds", min=0.0, help="Seconds to wait after opening ChatGPT before typing.")
303
+ ] = 3.0,
304
+ response_timeout_seconds: Annotated[
305
+ float, typer.Option("--response-timeout-seconds", min=1.0, help="Maximum seconds to wait for a response per cycle.")
306
+ ] = 180.0,
307
+ poll_seconds: Annotated[float, typer.Option("--poll-seconds", min=0.25, help="How often to poll the page while waiting for the response.")] = 1.0,
308
+ stable_seconds: Annotated[
309
+ float, typer.Option("--stable-seconds", min=0.5, help="Response text must stay unchanged this long before it is considered done.")
310
+ ] = 2.0,
311
+ keep_tabs: Annotated[bool, typer.Option("--keep-tabs/--close-tabs", help="Keep each ChatGPT tab open after a cycle.")] = False,
312
+ dry_run: Annotated[bool, typer.Option("--dry-run", help="Pick and print a question without connecting to the browser.")] = False,
313
+ ) -> None:
314
+ """Open ChatGPT in a new tab, send a random question, print the response, and repeat."""
315
+
316
+ questions = load_questions(question, questions_file)
317
+ interval_seconds = interval_minutes * 60
318
+
319
+ summary = Table.grid(padding=(0, 1))
320
+ summary.add_column(style="bold")
321
+ summary.add_column()
322
+ summary.add_row("CDP URL", cdp_url)
323
+ summary.add_row("ChatGPT URL", chatgpt_url)
324
+ summary.add_row("Interval", f"{interval_minutes:g} minute(s)")
325
+ summary.add_row("Cycles", "infinite" if cycles is None else str(cycles))
326
+ summary.add_row("Question pool", str(len(questions)))
327
+ summary.add_row("Tabs", "keep open" if keep_tabs else "close after each cycle")
328
+ console.print(Panel(summary, title="Configuration", border_style="blue"))
329
+
330
+ try:
331
+ asyncio.run(
332
+ run_loop(
333
+ cdp_url=cdp_url,
334
+ chatgpt_url=chatgpt_url,
335
+ interval_seconds=interval_seconds,
336
+ cycles=cycles,
337
+ questions=questions,
338
+ seed=seed,
339
+ pre_submit_wait_seconds=pre_submit_wait_seconds,
340
+ response_timeout_seconds=response_timeout_seconds,
341
+ poll_seconds=poll_seconds,
342
+ stable_seconds=stable_seconds,
343
+ keep_tabs=keep_tabs,
344
+ dry_run=dry_run,
345
+ )
346
+ )
347
+ except KeyboardInterrupt:
348
+ console.print(Text("Stopped.", style="yellow"))
349
+ except StopRequested:
350
+ console.print(Text("Stopped.", style="yellow"))
351
+
352
+
353
+ if __name__ == "__main__":
354
+ app()
@@ -6,6 +6,8 @@ This script Takes away all config files from the computer, place them in one dir
6
6
 
7
7
  from pathlib import Path
8
8
 
9
+ import yaml
10
+
9
11
  from stackops.profile.linking.operations import ActionType, OperationRecord, OperationResult
10
12
  from rich.console import Console
11
13
  from rich.panel import Panel
@@ -107,7 +109,30 @@ def read_mapper(source: CONFIG_SOURCE_LOOSE) -> MapperFileData:
107
109
  return {"public": merged_public, "private": merged_private}
108
110
  case _:
109
111
  raise ValueError(f"Unsupported config source value: {source}")
110
- mapper_data: MapperDocument = load_dotfiles_mapper(mapper_path)
112
+ if not mapper_path.exists():
113
+ if source_key == "user":
114
+ raise FileNotFoundError(
115
+ f"User dotfiles mapper does not exist: {mapper_path}\n\n"
116
+ "Create a real mapping interactively:\n"
117
+ " devops config setup dotfiles\n"
118
+ "Or install the example and schema for manual editing:\n"
119
+ " devops config dump --which dotfiles --default-path"
120
+ )
121
+ raise FileNotFoundError(f"Packaged dotfiles mapper does not exist: {mapper_path}")
122
+ if not mapper_path.is_file():
123
+ raise IsADirectoryError(f"Dotfiles mapper path is not a file: {mapper_path}")
124
+ try:
125
+ mapper_data: MapperDocument = load_dotfiles_mapper(mapper_path)
126
+ except (TypeError, ValueError, yaml.YAMLError) as exc:
127
+ if source_key == "user":
128
+ raise ValueError(
129
+ f"User dotfiles mapper is invalid: {mapper_path}\n{exc}\n\n"
130
+ "Open it for correction:\n"
131
+ " devops config edit\n"
132
+ "Create a separate example and schema for reference:\n"
133
+ " devops config dump --which dotfiles"
134
+ ) from exc
135
+ raise ValueError(f"Packaged dotfiles mapper is invalid: {mapper_path}\n{exc}") from exc
111
136
  public: dict[str, list[ConfigMapper]] = {}
112
137
  private: dict[str, list[ConfigMapper]] = {}
113
138
  normalized_system = _normalize_os_name(SYSTEM)
@@ -53,7 +53,10 @@ def main_from_parser(
53
53
  return merged_mapper
54
54
 
55
55
  source_key = CONFIG_SOURCE_MAP[source]
56
- mapper_full_obj = read_mapper(source=source_key)
56
+ try:
57
+ mapper_full_obj = read_mapper(source=source_key)
58
+ except (OSError, TypeError, ValueError) as exc:
59
+ _exit_with_error(str(exc))
57
60
  mapper_full: dict[str, list[ConfigMapper]]
58
61
  sensitivity_key = SENSITIVITY_MAP[sensitivity]
59
62
  if sensitivity_key == "private":
@@ -15,6 +15,7 @@ LIBRARY_MAPPER_PATH = get_path_reference_path(
15
15
  )
16
16
  USER_MAPPER_PATH = DOTFILES_USER_MAPPER_PATH
17
17
  DEFAULT_DOTFILE_MAPPER_HEADER = (
18
+ f"# yaml-language-server: $schema=./{mapper_assets.MAPPER_DOTFILES_SCHEMA_PATH_REFERENCE}\n"
18
19
  "# User-defined config file mappings\n"
19
20
  "# Created by `d c` CLI tool\n"
20
21
  "# os must be an explicit YAML list containing one or more of: linux, darwin, windows"