stackops 8.98__tar.gz → 8.100__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- stackops-8.100/PKG-INFO +118 -0
- stackops-8.100/README.md +90 -0
- stackops-8.100/pyproject.toml +163 -0
- stackops-8.100/src/stackops/cluster/remote/remote_machine.py +274 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +158 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/session_conflict.py +377 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +247 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +183 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_common.py +18 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_execution.py +260 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_layout.py +295 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_status.py +76 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/utils/load_balancer.py +56 -0
- stackops-8.100/src/stackops/cluster/sessions_managers/utils/maker.py +104 -0
- stackops-8.100/src/stackops/jobs/installer/checks/install_utils.py +158 -0
- stackops-8.100/src/stackops/jobs/installer/checks/security_cli.py +212 -0
- stackops-8.100/src/stackops/jobs/installer/installer_data.json +4757 -0
- stackops-8.100/src/stackops/jobs/installer/linux_scripts/__init__.py +11 -0
- stackops-8.100/src/stackops/jobs/installer/linux_scripts/oz.sh +34 -0
- stackops-8.100/src/stackops/jobs/installer/package_groups.py +304 -0
- stackops-8.100/src/stackops/jobs/installer/powershell_scripts/__init__.py +3 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/nerdfont.py +363 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/redis.py +83 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/rmpc.py +473 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/termusic.py +350 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/wezterm.py +83 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/youtube_tui.py +356 -0
- stackops-8.100/src/stackops/jobs/installer/python_scripts/ytui_music.py +411 -0
- stackops-8.100/src/stackops/jobs/scripts/bash_scripts/weather +1 -0
- stackops-8.100/src/stackops/jobs/scripts/powershell_scripts/weather.ps1 +1 -0
- stackops-8.100/src/stackops/jobs/scripts_dynamic/__init__.py +3 -0
- stackops-8.100/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.json +8 -0
- stackops-8.100/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.py +113 -0
- stackops-8.100/src/stackops/profile/create_links.py +479 -0
- stackops-8.100/src/stackops/profile/create_links_export.py +147 -0
- stackops-8.100/src/stackops/profile/mapper_dotfiles.yaml +751 -0
- stackops-8.100/src/stackops/scripts/python/agents.py +325 -0
- stackops-8.100/src/stackops/scripts/python/agents_browser.py +83 -0
- stackops-8.100/src/stackops/scripts/python/agents_parallel_commands.py +194 -0
- stackops-8.100/src/stackops/scripts/python/agents_parallel_run_command.py +110 -0
- stackops-8.100/src/stackops/scripts/python/ai/initai.py +188 -0
- stackops-8.100/src/stackops/scripts/python/ai/scripts/models_config.py +329 -0
- stackops-8.100/src/stackops/scripts/python/ai/solutions/antigravity/antigravity.py +20 -0
- stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/__init__.py +1 -0
- stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +91 -0
- stackops-8.100/src/stackops/scripts/python/ai/solutions/oz/oz.py +12 -0
- stackops-8.100/src/stackops/scripts/python/ai/utils/generate_files.py +371 -0
- stackops-8.100/src/stackops/scripts/python/cloud.py +99 -0
- stackops-8.100/src/stackops/scripts/python/croshell.py +104 -0
- stackops-8.100/src/stackops/scripts/python/devops.py +149 -0
- stackops-8.100/src/stackops/scripts/python/enums.py +85 -0
- stackops-8.100/src/stackops/scripts/python/fire_jobs.py +84 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph.json +20073 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_apps.py +147 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_eval.py +34 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_node_utils.py +57 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_nodes.py +204 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_registration.py +87 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_resolver.py +218 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_shared.py +85 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_signature.py +207 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_targets.py +103 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_tree.py +75 -0
- stackops-8.100/src/stackops/scripts/python/graph/cli_graph_values.py +232 -0
- stackops-8.100/src/stackops/scripts/python/graph/generate_cli_graph.py +34 -0
- stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +211 -0
- stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +219 -0
- stackops-8.100/src/stackops/scripts/python/graph/visualize/cli_graph_typer_app.py +85 -0
- stackops-8.100/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +20 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helper_env/env_manager_tui.py +227 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helper_env/path_manager_tui.py +250 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +413 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +226 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +32 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +41 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +171 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +127 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +327 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +521 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_add_entry.py +95 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +203 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +175 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +263 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_yaml_defaults.py +56 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +180 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +368 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +252 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_shell.py +95 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +98 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +131 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +280 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_helper_types.py +83 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +637 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +121 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +91 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +31 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mont_tmux.py +41 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +197 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_croshell/croshell_impl.py +328 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +239 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +256 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +472 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +123 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +159 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +157 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +232 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +158 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +444 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +361 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/__init__.py +1 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/app.py +35 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_docs.py +184 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_installer.py +175 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_logic.py +253 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_test.py +186 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflow_capture.py +99 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflows_yaml.py +165 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +56 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +167 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +218 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +165 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +107 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +216 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +190 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +245 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +30 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +17 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +204 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +248 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +39 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +42 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +146 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +299 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/address.py +264 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +138 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +181 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/common.py +40 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/darwin.py +103 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/linux.py +263 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/unsupported.py +47 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/windows.py +148 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +458 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +91 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_search/semantic_search.py +25 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +465 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +207 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +143 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend.py +277 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +126 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +218 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +278 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +196 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +85 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +71 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_aoe.py +174 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +261 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +100 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +187 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +139 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +97 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +420 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/python.py +325 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +37 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui_backend.py +380 -0
- stackops-8.100/src/stackops/scripts/python/helpers/helpers_utils/specs.py +312 -0
- stackops-8.100/src/stackops/scripts/python/seek.py +73 -0
- stackops-8.100/src/stackops/scripts/python/stackops_entry.py +153 -0
- stackops-8.100/src/stackops/scripts/python/terminal.py +515 -0
- stackops-8.100/src/stackops/scripts/setup/linux/interactive.sh +31 -0
- stackops-8.100/src/stackops/scripts/setup/windows/interactive.ps1 +33 -0
- stackops-8.100/src/stackops/settings/psmux/__init__.py +1 -0
- stackops-8.100/src/stackops/settings/psmux/description.md +7 -0
- stackops-8.100/src/stackops/settings/psmux/install-ppm.ps1 +27 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.bindings.conf +47 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.conf +33 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.local.conf +12 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.plugins.conf +14 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.powerline.conf +4 -0
- stackops-8.100/src/stackops/settings/psmux/psmux.theme.conf +24 -0
- stackops-8.100/src/stackops/settings/shells/bash/init.sh +107 -0
- stackops-8.100/src/stackops/settings/shells/kitty/kitty.conf +1475 -0
- stackops-8.100/src/stackops/settings/shells/pwsh/init.ps1 +156 -0
- stackops-8.100/src/stackops/settings/shells/zsh/init.sh +95 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/__init__.py +53 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/apt-packages.toml +21 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/brew-packages.toml +30 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/diskutil.toml +45 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/dotfiles.toml +19 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/downloads.toml +31 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/figlet-fonts.toml +10 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/files.toml +31 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/fonts.toml +13 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/git-diff.toml +34 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/git-files.toml +20 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/git-repos.toml +31 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/git-tags.toml +26 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/git-worktrees.toml +24 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/images.toml +21 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/linux-disks.toml +38 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/mounts.toml +21 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/npm-packages.toml +20 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/path.toml +15 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/ports.toml +19 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/python-venvs.toml +20 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/recent-files.toml +23 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/sesh.toml +39 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/text.toml +29 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/tmux-sessions.toml +22 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/tmux-windows.toml +22 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/todo-comments.toml +26 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/trash.toml +26 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/unicode.toml +43 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/wifi.toml +17 -0
- stackops-8.100/src/stackops/settings/television/cable_unix/zoxide.toml +26 -0
- stackops-8.100/src/stackops/settings/television/cable_windows/alias.toml +8 -0
- stackops-8.100/src/stackops/settings/television/cable_windows/dotfiles.toml +11 -0
- stackops-8.100/src/stackops/settings/television/cable_windows/files.toml +17 -0
- stackops-8.100/src/stackops/settings/television/cable_windows/text.toml +17 -0
- stackops-8.100/src/stackops/settings/wt/set_wt_settings.py +128 -0
- stackops-8.100/src/stackops/settings/yazi/keymap_darwin.toml +189 -0
- stackops-8.100/src/stackops/settings/yazi/keymap_linux.toml +183 -0
- stackops-8.100/src/stackops/settings/yazi/keymap_windows.toml +182 -0
- stackops-8.100/src/stackops/settings/yazi/scripts/copy_file_content.py +82 -0
- stackops-8.100/src/stackops/settings/yazi/scripts/fullscreen_preview.py +348 -0
- stackops-8.100/src/stackops/settings/yazi/scripts/interactive_view.py +126 -0
- stackops-8.100/src/stackops/settings/yazi/scripts/open_default_app.py +290 -0
- stackops-8.100/src/stackops/settings/yazi/scripts/serve_browser_file.py +251 -0
- stackops-8.100/src/stackops/settings/yazi/yazi_darwin.toml +90 -0
- stackops-8.100/src/stackops/settings/yazi/yazi_linux.toml +90 -0
- stackops-8.100/src/stackops/settings/yazi/yazi_windows.toml +94 -0
- stackops-8.100/src/stackops/utils/cli_utils/hierarchy.py +1397 -0
- stackops-8.100/src/stackops/utils/cli_utils/hierarchy_types.py +1659 -0
- stackops-8.100/src/stackops/utils/files/headers.py +69 -0
- stackops-8.100/src/stackops/utils/files/ouch/__init__.py +0 -0
- stackops-8.100/src/stackops/utils/installer_utils/install_from_url.py +259 -0
- stackops-8.100/src/stackops/utils/installer_utils/install_request_logic.py +86 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_class.py +389 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_cli.py +245 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_helper.py +175 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_locator_utils.py +377 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline.py +71 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_constants.py +72 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_models.py +40 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_publish.py +101 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_render.py +68 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_scripts.py +142 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_steps.py +45 -0
- stackops-8.100/src/stackops/utils/installer_utils/installer_offline_uv.py +109 -0
- stackops-8.100/src/stackops/utils/options.py +324 -0
- stackops-8.100/src/stackops/utils/options_utils/__init__.py +0 -0
- stackops-8.100/src/stackops/utils/options_utils/options_tv_windows.py +100 -0
- stackops-8.100/src/stackops/utils/options_utils/textual_options_form_types.py +107 -0
- stackops-8.100/src/stackops/utils/procs.py +274 -0
- stackops-8.100/src/stackops/utils/rclone_wrapper.py +165 -0
- stackops-8.100/src/stackops/utils/repo_stackops.py +39 -0
- stackops-8.100/src/stackops/utils/schemas/__init__.py +1 -0
- stackops-8.100/src/stackops/utils/schemas/installer/installer_type.schema.json +94 -0
- stackops-8.100/src/stackops/utils/schemas/layouts/layout.json +23 -0
- stackops-8.100/src/stackops/utils/schemas/layouts/layout.schema.json +75 -0
- stackops-8.100/src/stackops/utils/schemas/repos/repos_schema.json +87 -0
- stackops-8.100/src/stackops/utils/source_of_truth.py +35 -0
- stackops-8.100/src/stackops/utils/ssh.py +468 -0
- stackops-8.100/src/stackops/utils/ssh_utils/abc.py +5 -0
- stackops-8.100/src/stackops/utils/ssh_utils/wsl.py +172 -0
- stackops-8.100/src/stackops/utils/upgrade_packages.py +356 -0
- stackops-8.100/src/stackops.egg-info/PKG-INFO +118 -0
- stackops-8.100/src/stackops.egg-info/SOURCES.txt +883 -0
- stackops-8.100/tests/test_install_request_logic.py +18 -0
- stackops-8.100/tests/test_layout_maker_stagger.py +76 -0
- stackops-8.100/tests/test_oz_agent_support.py +75 -0
- stackops-8.100/tests/test_rmpc_installer.py +43 -0
- stackops-8.98/PKG-INFO +0 -175
- stackops-8.98/README.md +0 -147
- stackops-8.98/pyproject.toml +0 -163
- stackops-8.98/src/stackops/cluster/remote/remote_machine.py +0 -320
- stackops-8.98/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +0 -145
- stackops-8.98/src/stackops/cluster/sessions_managers/session_conflict.py +0 -377
- stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +0 -234
- stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +0 -181
- stackops-8.98/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_helpers.py +0 -392
- stackops-8.98/src/stackops/cluster/sessions_managers/utils/load_balancer.py +0 -54
- stackops-8.98/src/stackops/cluster/sessions_managers/utils/maker.py +0 -77
- stackops-8.98/src/stackops/jobs/installer/checks/install_utils.py +0 -154
- stackops-8.98/src/stackops/jobs/installer/checks/security_cli.py +0 -190
- stackops-8.98/src/stackops/jobs/installer/installer_data.json +0 -4523
- stackops-8.98/src/stackops/jobs/installer/linux_scripts/__init__.py +0 -12
- stackops-8.98/src/stackops/jobs/installer/linux_scripts/nerdfont.sh +0 -47
- stackops-8.98/src/stackops/jobs/installer/package_groups.py +0 -302
- stackops-8.98/src/stackops/jobs/installer/powershell_scripts/__init__.py +0 -3
- stackops-8.98/src/stackops/jobs/installer/python_scripts/nerdfont.py +0 -122
- stackops-8.98/src/stackops/jobs/installer/python_scripts/nerfont_windows_helper.py +0 -168
- stackops-8.98/src/stackops/jobs/installer/python_scripts/redis.py +0 -99
- stackops-8.98/src/stackops/jobs/installer/python_scripts/wezterm.py +0 -103
- stackops-8.98/src/stackops/profile/create_links.py +0 -428
- stackops-8.98/src/stackops/profile/create_links_export.py +0 -120
- stackops-8.98/src/stackops/profile/mapper_dotfiles.yaml +0 -721
- stackops-8.98/src/stackops/scripts/python/agents.py +0 -289
- stackops-8.98/src/stackops/scripts/python/agents_browser.py +0 -83
- stackops-8.98/src/stackops/scripts/python/agents_parallel_commands.py +0 -158
- stackops-8.98/src/stackops/scripts/python/agents_parallel_run_command.py +0 -108
- stackops-8.98/src/stackops/scripts/python/ai/initai.py +0 -188
- stackops-8.98/src/stackops/scripts/python/ai/scripts/models_config.py +0 -319
- stackops-8.98/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -91
- stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/__init__.py +0 -2
- stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/gemini.py +0 -30
- stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/instructions.md +0 -42
- stackops-8.98/src/stackops/scripts/python/ai/solutions/gemini/settings.json +0 -86
- stackops-8.98/src/stackops/scripts/python/ai/utils/generate_files.py +0 -348
- stackops-8.98/src/stackops/scripts/python/cloud.py +0 -100
- stackops-8.98/src/stackops/scripts/python/croshell.py +0 -35
- stackops-8.98/src/stackops/scripts/python/devops.py +0 -149
- stackops-8.98/src/stackops/scripts/python/enums.py +0 -19
- stackops-8.98/src/stackops/scripts/python/fire_jobs.py +0 -88
- stackops-8.98/src/stackops/scripts/python/graph/cli_graph.json +0 -18513
- stackops-8.98/src/stackops/scripts/python/graph/generate_cli_graph.py +0 -1372
- stackops-8.98/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +0 -208
- stackops-8.98/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +0 -211
- stackops-8.98/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +0 -20
- stackops-8.98/src/stackops/scripts/python/helpers/helper_env/env_manager_tui.py +0 -227
- stackops-8.98/src/stackops/scripts/python/helpers/helper_env/path_manager_tui.py +0 -250
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +0 -400
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +0 -218
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +0 -24
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +0 -41
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +0 -48
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +0 -189
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +0 -127
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +0 -293
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +0 -328
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +0 -208
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +0 -143
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +0 -229
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +0 -205
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +0 -331
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +0 -174
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +0 -91
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +0 -178
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +0 -251
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_helper_types.py +0 -82
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +0 -534
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +0 -138
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +0 -19
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +0 -79
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +0 -14
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mont_tmux.py +0 -39
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +0 -192
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_croshell/croshell_impl.py +0 -252
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +0 -230
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +0 -195
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +0 -391
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +0 -112
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +0 -135
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +0 -126
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +0 -193
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +0 -152
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +0 -360
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +0 -252
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/app.py +0 -28
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_docs.py +0 -143
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_installer.py +0 -146
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/update_test.py +0 -168
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflow_capture.py +0 -88
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai/workflows_yaml.py +0 -183
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +0 -58
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +0 -137
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +0 -155
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +0 -128
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +0 -64
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +0 -168
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +0 -163
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +0 -245
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +0 -25
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +0 -17
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +0 -187
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +0 -245
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +0 -41
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +0 -48
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +0 -148
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +0 -324
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/address.py +0 -172
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +0 -87
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +0 -372
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +0 -420
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_search/symantic_search.py +0 -25
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +0 -456
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +0 -193
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +0 -136
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend.py +0 -270
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +0 -117
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +0 -218
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +0 -278
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +0 -199
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +0 -83
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +0 -64
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_aoe.py +0 -174
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +0 -263
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +0 -79
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +0 -88
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +0 -127
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +0 -95
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +0 -273
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/python.py +0 -333
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +0 -224
- stackops-8.98/src/stackops/scripts/python/helpers/helpers_utils/specs.py +0 -244
- stackops-8.98/src/stackops/scripts/python/seek.py +0 -43
- stackops-8.98/src/stackops/scripts/python/stackops_entry.py +0 -129
- stackops-8.98/src/stackops/scripts/python/terminal.py +0 -403
- stackops-8.98/src/stackops/scripts/setup/linux/interactive.sh +0 -31
- stackops-8.98/src/stackops/scripts/setup/windows/interactive.ps1 +0 -33
- stackops-8.98/src/stackops/settings/shells/bash/init.sh +0 -106
- stackops-8.98/src/stackops/settings/shells/kitty/kitty.conf +0 -1476
- stackops-8.98/src/stackops/settings/shells/pwsh/init.ps1 +0 -155
- stackops-8.98/src/stackops/settings/shells/zsh/init.sh +0 -94
- stackops-8.98/src/stackops/settings/television/cable_unix/__init__.py +0 -28
- stackops-8.98/src/stackops/settings/television/cable_unix/dotfiles.toml +0 -18
- stackops-8.98/src/stackops/settings/television/cable_unix/files.toml +0 -27
- stackops-8.98/src/stackops/settings/television/cable_unix/git-diff.toml +0 -33
- stackops-8.98/src/stackops/settings/television/cable_unix/git-repos.toml +0 -30
- stackops-8.98/src/stackops/settings/television/cable_unix/text.toml +0 -28
- stackops-8.98/src/stackops/settings/television/cable_windows/alias.toml +0 -7
- stackops-8.98/src/stackops/settings/television/cable_windows/dotfiles.toml +0 -11
- stackops-8.98/src/stackops/settings/television/cable_windows/files.toml +0 -14
- stackops-8.98/src/stackops/settings/television/cable_windows/text.toml +0 -17
- stackops-8.98/src/stackops/settings/wt/set_wt_settings.py +0 -141
- stackops-8.98/src/stackops/settings/yazi/keymap_darwin.toml +0 -179
- stackops-8.98/src/stackops/settings/yazi/keymap_linux.toml +0 -173
- stackops-8.98/src/stackops/settings/yazi/keymap_windows.toml +0 -172
- stackops-8.98/src/stackops/settings/yazi/scripts/fullscreen_preview.py +0 -348
- stackops-8.98/src/stackops/settings/yazi/scripts/interactive_view.py +0 -104
- stackops-8.98/src/stackops/settings/yazi/scripts/serve_browser_file.py +0 -265
- stackops-8.98/src/stackops/settings/yazi/yazi_darwin.toml +0 -90
- stackops-8.98/src/stackops/settings/yazi/yazi_linux.toml +0 -90
- stackops-8.98/src/stackops/settings/yazi/yazi_windows.toml +0 -95
- stackops-8.98/src/stackops/settings/zed/__init__.py +0 -1
- stackops-8.98/src/stackops/utils/files/headers.py +0 -69
- stackops-8.98/src/stackops/utils/installer_utils/install_from_url.py +0 -194
- stackops-8.98/src/stackops/utils/installer_utils/install_request_logic.py +0 -86
- stackops-8.98/src/stackops/utils/installer_utils/installer_class.py +0 -375
- stackops-8.98/src/stackops/utils/installer_utils/installer_cli.py +0 -231
- stackops-8.98/src/stackops/utils/installer_utils/installer_helper.py +0 -147
- stackops-8.98/src/stackops/utils/installer_utils/installer_locator_utils.py +0 -212
- stackops-8.98/src/stackops/utils/installer_utils/installer_offline.py +0 -330
- stackops-8.98/src/stackops/utils/options.py +0 -325
- stackops-8.98/src/stackops/utils/options_utils/options_tv_windows.py +0 -88
- stackops-8.98/src/stackops/utils/options_utils/textual_options_form_types.py +0 -107
- stackops-8.98/src/stackops/utils/procs.py +0 -267
- stackops-8.98/src/stackops/utils/rclone_wrapper.py +0 -134
- stackops-8.98/src/stackops/utils/repo_stackops.py +0 -34
- stackops-8.98/src/stackops/utils/source_of_truth.py +0 -35
- stackops-8.98/src/stackops/utils/ssh.py +0 -468
- stackops-8.98/src/stackops/utils/ssh_utils/abc.py +0 -5
- stackops-8.98/src/stackops/utils/ssh_utils/wsl.py +0 -147
- stackops-8.98/src/stackops/utils/upgrade_packages.py +0 -249
- stackops-8.98/src/stackops.egg-info/PKG-INFO +0 -175
- stackops-8.98/src/stackops.egg-info/SOURCES.txt +0 -798
- stackops-8.98/tests/test_cli_self_ai_app.py +0 -26
- stackops-8.98/tests/test_path_reference_usage.py +0 -448
- {stackops-8.98 → stackops-8.100}/MANIFEST.in +0 -0
- {stackops-8.98 → stackops-8.100}/setup.cfg +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/cloud_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/data_transfer.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/distribute.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/execution_script.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/file_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/job_params.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/models.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/remote/notification.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/helpers/enhanced_command_runner.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/session_exit_mode.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/tmux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/utils/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_local.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_local_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_remote.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_remote_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/examples/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/examples/wt_local_manager_demo.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/layout_generator.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/local_monitoring.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/manager_persistence.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/monitoring_helpers.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/process_monitor.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/remote_executor.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/session_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/status_reporter.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/status_reporting.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/windows_terminal/wt_utils/wt_helpers.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_local.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_local_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_remote.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_remote_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/example_usage.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/layout_generator.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/monitoring_types.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/process_monitor.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/remote_executor.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/session_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/status_reporter.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper_restart.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_helper_with_panes.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/cluster/sessions_managers/zellij/zellij_utils/zellij_local_manager_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/agents/mcps/mcp.schema.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/check_installations.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/report_utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/security_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/checks/vt_utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/brave.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/cloudflare_warp_cli.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/edge.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/network.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/ngrok.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/q.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/redis.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/sysabc_macos.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/sysabc_ubuntu.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/vscode.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/linux_scripts/wezterm.sh +0 -0
- {stackops-8.98/src/stackops/jobs/installer/python_scripts → stackops-8.100/src/stackops/jobs/installer/macos_scripts}/__init__.py +0 -0
- /stackops-8.98/src/stackops/jobs/installer/powershell_scripts/install_fonts.ps1 → /stackops-8.100/src/stackops/jobs/installer/powershell_scripts/nerdfonts.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/powershell_scripts/sysabc.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/powershell_scripts/texlive.ps1 +0 -0
- {stackops-8.98/src/stackops/scripts → stackops-8.100/src/stackops/jobs/installer/python_scripts}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/alacritty.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/boxes.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/brave.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/bypass_paywall.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/cloudflare_warp_cli.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/code.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/cursor.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/docker.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/dubdb_adbc.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/espanso.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/goes.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/hx.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/lvim.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/main_protocol.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/orca.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/poppler.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/sysabc.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/winget.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/python_scripts/yazi.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/installer/todo.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/hollywood.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/bash_scripts/lid.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/powershell_scripts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts/powershell_scripts/cmatrix.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/jobs/scripts_dynamic/a.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/logger.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/create_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/create_shell_profile.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/dotfiles_mapper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_data.schema.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_data.yaml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/profile/mapper_dotfiles.schema.json +0 -0
- {stackops-8.98/src/stackops/scripts/python → stackops-8.100/src/stackops/scripts}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/linux/wrap_stackops +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/nu/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/nu/wrap_stackops.nu +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai → stackops-8.100/src/stackops/scripts/python}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/agents_parallel.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions → stackops-8.100/src/stackops/scripts/python/ai}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/command_runner.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/command_runner.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/dashboard.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/lint_and_type_check.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_diagnostics.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_json.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/models_reports.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/scripts/paths.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/auggie → stackops-8.100/src/stackops/scripts/python/ai/solutions}/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/forge → stackops-8.100/src/stackops/scripts/python/ai/solutions/antigravity}/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/copilot → stackops-8.100/src/stackops/scripts/python/ai/solutions/auggie}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/auggie/auggie.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/claude/claude.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/cline/cline.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/codex.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/codex/config.toml +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/droid → stackops-8.100/src/stackops/scripts/python/ai/solutions/copilot}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/Thinking-Beast-Mode.agent.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/agents/deepResearch.agent.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/watch_exec.prompt.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/crush.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/crush.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/crush/privacy.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/cursor/cursors.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/q → stackops-8.100/src/stackops/scripts/python/ai/solutions/droid}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/droid/droid.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/pi → stackops-8.100/src/stackops/scripts/python/ai/solutions/forge}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/forge/forge.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/kilocode.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/opencode.jsonc +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/opencode/opencode.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive → stackops-8.100/src/stackops/scripts/python/ai/solutions/oz}/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie → stackops-8.100/src/stackops/scripts/python/ai/solutions/pi}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/pi/pi.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/qwen_code → stackops-8.100/src/stackops/scripts/python/ai/solutions/q}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/q/amazon_q.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/solutions/warp → stackops-8.100/src/stackops/scripts/python/ai/solutions/qwen_code}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/qwen_code/qwen_code.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/ai/utils → stackops-8.100/src/stackops/scripts/python/ai/solutions/warp}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/solutions/warp/warp.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/graph/visualize → stackops-8.100/src/stackops/scripts/python/ai/utils}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/generic.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/shared.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ai/utils/vscode_tasks.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/ftpx.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/graph/visualize/helpers_navigator → stackops-8.100/src/stackops/scripts/python/graph/visualize}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/dot_export.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/graph_data.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/graph_paths.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers → stackops-8.100/src/stackops/scripts/python/graph/visualize/helpers_navigator}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/cli_graph_loader.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_builder.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_detail.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_tree.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/data_models.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/main_app.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/helpers_navigator/search_bar.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/plotly_browser.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/plotly_views.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/graph/visualize/rich_tree.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents → stackops-8.100/src/stackops/scripts/python/helpers}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helper_env/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helper_env/path_manager_backend.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents}/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/common.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_codex.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_cursor_agents.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_pi.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_constants.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_guides.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_impl.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_inputs.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/agents_mcp_impl.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/agent-browser.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp-browser-url.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-cdp.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-extension.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-storage-state.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-user-data-dir.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.mcp.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_search.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_load_balancer.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/mcp_catalog.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/mcp_types.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/auggie_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/chatgpt_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/cline_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/codex_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/cursor_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/droid_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/kilocode_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/mods_privacy.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_cloud → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode}/__init__.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/cli_self_ai → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/q_privacy.py +0 -0
- {stackops-8.98/src/stackops/utils/schemas → stackops-8.100/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/qwen_privacy.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/privacy/privacy.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/prompt.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.sh +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_croshell → stackops-8.100/src/stackops/scripts/python/helpers/helpers_cloud}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_helpers.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount_zellij.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_sync.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/helpers2.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_cloud/helpers5.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops → stackops-8.100/src/stackops/scripts/python/helpers/helpers_croshell}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/crosh.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/pomodoro.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/scheduler.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/start_slidev.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/viewer.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_croshell/viewer_template.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers → stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/backup_config.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw_vscode_share.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_checks.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_display.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/devops_update_repos.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_fire_command → stackops-8.100/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/device_entry.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/macos.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/selection.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/windows.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_pwsh_theme.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_wezterm_theme.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_windows_terminal_theme.ps1 +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_network → stackops-8.100/src/stackops/scripts/python/helpers/helpers_fire_command}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/cloud_manager.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/f.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/file_wrangler.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_route_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_sessions → stackops-8.100/src/stackops/scripts/python/helpers/helpers_network}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ftpx_impl.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/onetimeshare.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_key_windows.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_ssh_key.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_cloud_init.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin_utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux_utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows_utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_deploy_key_remote.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/action.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/action_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/clone.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/grource.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/record.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_2.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/sync.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_repos/update.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/ast_search.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/qr_code.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/repo_rag.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_search/script_help.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/fzfg +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/search_with_context.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/fzfg +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/fzfg.ps1 +0 -0
- {stackops-8.98/src/stackops/settings → stackops-8.100/src/stackops/scripts/python/helpers/helpers_sessions}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_preview.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_processes.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_focus.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_layout.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_metadata.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_options.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/_zellij_backend_preview.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/kill_impl.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_zellij.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_display.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_tmux.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_zellij.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_impl.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_layout_source.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_multiprocess.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_test_layouts.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/download.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/path_reference_validation.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/test_runtime.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/helpers/helpers_utils/type_fix.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/python/utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/apps_desktop.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/linux/uv.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/macos/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/macos/uv.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/quick_init.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/setup/windows/uv.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/scripts/windows/wrap_stackops.ps1 +0 -0
- {stackops-8.98/src/stackops/settings/shells/ipy/profiles/default → stackops-8.100/src/stackops/settings}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/config.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/themes/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/atuin/themes/catppuccin-mocha-mauve.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/br.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/brootcd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/broot/conf.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/glow/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/glow/glow.yml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/gromit-mpx/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/gromit-mpx/gromit-mpx.cfg +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/config.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/languages.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/helix/yazi-picker.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keras/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keras/keras.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/config/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/config/default.yml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/match/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/espanso/match/base.yml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/kanata/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/keyboard/kanata/kanata.kbd +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/delete.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/on-cd.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/on-quit.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/open.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/paste.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/pre-cd.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/autocall/rename.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/colors +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/cleaner.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/lfcd.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/previewer.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/exe/previewer_archive.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/icons +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/linux/lfrc +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/delete.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/on-cd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/on-quit.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/open.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/paste.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/autocall/rename.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_tere.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_zoxide.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/cd_zoxide2.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/colors +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/icons +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/leftpane_previewer.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/lfcd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/lfrc +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/mkdir.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/mkfile.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lf/windows/previewer.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.flake8 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.mypy.ini +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.pylintrc +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/.ruff.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/pyrefly.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/linters/ty.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/linux/config.lua +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/archive/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/archive/config_additional.lua +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/config.lua +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/lua/user/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/lvim/windows/lua/user/custom_config.lua +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/marimo.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/marimo/snippets/globalize.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/mprocs.yaml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/mprocs/windows/other +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/pistol/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/pistol/pistol.conf +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/presenterm/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/presenterm/config.yaml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/procs/.procs.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/pudb/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/pudb/pudb.cfg +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/config.rasi +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/rofi/config_default.rasi +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/alacritty.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/alacritty/alacritty.yml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/bash/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ghostty/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ghostty/config +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/hyper/.hyper.js +0 -0
- {stackops-8.98/src/stackops/settings/shells/ipy/profiles/default/startup → stackops-8.100/src/stackops/settings/shells/ipy/profiles/default}/__init__.py +0 -0
- {stackops-8.98/src/stackops/settings/wt → stackops-8.100/src/stackops/settings/shells/ipy/profiles/default/startup}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/kitty/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/config.nu +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/env.nu +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/nushell/init.nu +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/pwsh/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/pwsh/search_pwsh_history.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/starship/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/starship/starship.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/vtm/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/vtm/settings.xml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wezterm/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wezterm/wezterm.lua +0 -0
- {stackops-8.98/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/gemini → stackops-8.100/src/stackops/settings/shells/wt}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/wt/settings.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/shells/zsh/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/streamlit/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/streamlit/config.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/linux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/linux/init.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/svim/windows/init.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/alias.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/aws-buckets.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/aws-instances.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/bash-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/channels.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/dirs.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/distrobox-list.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/docker-images.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/env.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/fish-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-branch.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-log.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/git-reflog.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/guix.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/just-recipes.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-deployments.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-pods.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/k8s-services.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/man-pages.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/nu-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/procs.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/tldr.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_unix/zsh-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/dirs.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/docker-images.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/env.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-branch.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-diff.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-log.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-reflog.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/git-repos.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/nu-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/television/cable_windows/pwsh-history.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/terecd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tere/terecd.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tmux/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tmux/tmux.conf.local +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/config.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/themes/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/tv/themes/catppuccin-mocha-sky.toml +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/wsl/.wslconfig +0 -0
- {stackops-8.98/src/stackops/utils → stackops-8.100/src/stackops/settings/wt}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/init.lua +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/compress_selected.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/scripts/open_db_readonly.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/yazi_cd.ps1 +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/shell/yazi_cd.sh +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/yazi/theme.toml +0 -0
- {stackops-8.98/src/stackops/settings/shells/wt → stackops-8.100/src/stackops/settings/zed}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zed/settings.json +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/monitor +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/commands/standard_panes +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/config.kdl +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/hist +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/panes.kdl +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/st.kdl +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/st2.kdl +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/settings/zellij/layouts/stacked_panes.kdl +0 -0
- {stackops-8.98/src/stackops/utils/ai → stackops-8.100/src/stackops/utils}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/accessories.py +0 -0
- {stackops-8.98/src/stackops/utils/files/ouch → stackops-8.100/src/stackops/utils/ai}/__init__.py +0 -0
- {stackops-8.98/src/stackops/utils/options_utils → stackops-8.100/src/stackops/utils/cli_utils}/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/README.md +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/auth.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/file_ops.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/cloud/onedrive/setup_oauth.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/code.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/fat_croco.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/halfwit_croco.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/happy_croco.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/art/water_croco.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/ascii_art.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/dbms.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/f.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/ouch/decompress.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/files/read.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/github_release_bulk.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/github_release_scraper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/installer_runner.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/installer_utils/installer_summary.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/io.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/links.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/meta.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/notifications.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/options_tv_linux.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/textual_options_form.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/options_utils/tv_options.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_compression.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_core.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/path_reference.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/rclone.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/scheduler.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/fire_agents/fire_agents_input.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/installer/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/installer/installer_types.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/layouts/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/layouts/layout_types.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/repos/__init__.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/schemas/repos/repos_types.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/copy_from_here.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/copy_to_here.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/utils.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ssh_utils/wsl_helper.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/terminal.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ve.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/ve_schema.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops/utils/yaml_schema.py +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/dependency_links.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/entry_points.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/requires.txt +0 -0
- {stackops-8.98 → stackops-8.100}/src/stackops.egg-info/top_level.txt +0 -0
stackops-8.100/PKG-INFO
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: stackops
|
|
3
|
+
Version: 8.100
|
|
4
|
+
Summary: Developer Stack Manager
|
|
5
|
+
Author-email: Alex Al-Saffar <programmer@usa.com>
|
|
6
|
+
License: Apache 2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/thisismygitrepo/stackops
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/thisismygitrepo/stackops/issues
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.13
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: fire>=0.7.1
|
|
15
|
+
Requires-Dist: gitpython>=3.1.46
|
|
16
|
+
Requires-Dist: joblib>=1.5.3
|
|
17
|
+
Requires-Dist: paramiko>=4.0.0
|
|
18
|
+
Requires-Dist: psutil>=7.2.2
|
|
19
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
20
|
+
Requires-Dist: questionary>=2.1.1
|
|
21
|
+
Requires-Dist: randomname>=0.2.1
|
|
22
|
+
Requires-Dist: requests>=2.32.5
|
|
23
|
+
Requires-Dist: rich>=14.3.3
|
|
24
|
+
Requires-Dist: tenacity>=9.1.4
|
|
25
|
+
Requires-Dist: typer>=0.24.1
|
|
26
|
+
Provides-Extra: windows
|
|
27
|
+
Provides-Extra: plot
|
|
28
|
+
|
|
29
|
+
<div align="center">
|
|
30
|
+
|
|
31
|
+
<h1>🗜 StackOps</h1>
|
|
32
|
+
|
|
33
|
+
<strong>Digital Life Manager.</strong>
|
|
34
|
+
|
|
35
|
+
<p>
|
|
36
|
+
<a href="https://thisismygitrepo.github.io/stackops/"><img alt="Docs" src="https://img.shields.io/badge/docs-online-2f6f6f"></a>
|
|
37
|
+
<a href="https://pypi.org/project/stackops/"><img alt="PyPI package" src="https://img.shields.io/pypi/v/stackops?color=2f6f6f"></a>
|
|
38
|
+
<img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-3776AB">
|
|
39
|
+
<img alt="Installed with uv" src="https://img.shields.io/badge/install-uv-f05d23">
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
StackOps is a cross-platform CLI for managing your development stack. It is package installer, configurator, dotfile/secrets manager, data and code sync solution, command launcher, processes orchestator (is there anything else?) all wrapped into one solution. As such, it should take a few minutes to make a fresh new machine to look like the machine you were customizing for 10 years.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
| Before | After |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
|  |  |
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
See the [online docs](https://thisismygitrepo.github.io/stackops/) for full usage and reference material.
|
|
53
|
+
|
|
54
|
+
## Install
|
|
55
|
+
|
|
56
|
+
Choose your platform and expand only the commands you need.
|
|
57
|
+
|
|
58
|
+
<details>
|
|
59
|
+
<summary><strong>Linux</strong></summary>
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
63
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
64
|
+
stackops --help
|
|
65
|
+
# OR: . < (curl -L https://bit.ly/sopsu)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
</details>
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary><strong>macOS</strong></summary>
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
75
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
76
|
+
stackops --help
|
|
77
|
+
# OR: . < (curl -L https://bit.ly/sopsu)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
</details>
|
|
81
|
+
|
|
82
|
+
<details>
|
|
83
|
+
<summary><strong>Windows PowerShell</strong></summary>
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
87
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
88
|
+
stackops --help
|
|
89
|
+
# OR: irm bit.ly/sopsw | iex
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
## Quick Init
|
|
96
|
+
|
|
97
|
+
Run these once StackOps is installed.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
devops install --group sysabc
|
|
101
|
+
devops config copy-assets all
|
|
102
|
+
devops config sync down \
|
|
103
|
+
--sensitivity public \
|
|
104
|
+
--method copy \
|
|
105
|
+
--on-conflict overwrite-default-path \
|
|
106
|
+
--which all
|
|
107
|
+
devops config terminal config-shell --which default
|
|
108
|
+
devops install --group termabc
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## Author
|
|
113
|
+
|
|
114
|
+
Alex Al-Saffar. [email](mailto:programmer@usa.com)
|
|
115
|
+
|
|
116
|
+
## Contributor
|
|
117
|
+
|
|
118
|
+
Ruby Chan. [email](mailto:ruby.chan@sa.gov.au)
|
stackops-8.100/README.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<h1>🗜 StackOps</h1>
|
|
4
|
+
|
|
5
|
+
<strong>Digital Life Manager.</strong>
|
|
6
|
+
|
|
7
|
+
<p>
|
|
8
|
+
<a href="https://thisismygitrepo.github.io/stackops/"><img alt="Docs" src="https://img.shields.io/badge/docs-online-2f6f6f"></a>
|
|
9
|
+
<a href="https://pypi.org/project/stackops/"><img alt="PyPI package" src="https://img.shields.io/pypi/v/stackops?color=2f6f6f"></a>
|
|
10
|
+
<img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-3776AB">
|
|
11
|
+
<img alt="Installed with uv" src="https://img.shields.io/badge/install-uv-f05d23">
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
StackOps is a cross-platform CLI for managing your development stack. It is package installer, configurator, dotfile/secrets manager, data and code sync solution, command launcher, processes orchestator (is there anything else?) all wrapped into one solution. As such, it should take a few minutes to make a fresh new machine to look like the machine you were customizing for 10 years.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
| Before | After |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
|  |  |
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
See the [online docs](https://thisismygitrepo.github.io/stackops/) for full usage and reference material.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
Choose your platform and expand only the commands you need.
|
|
29
|
+
|
|
30
|
+
<details>
|
|
31
|
+
<summary><strong>Linux</strong></summary>
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
35
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
36
|
+
stackops --help
|
|
37
|
+
# OR: . < (curl -L https://bit.ly/sopsu)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
</details>
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>macOS</strong></summary>
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
47
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
48
|
+
stackops --help
|
|
49
|
+
# OR: . < (curl -L https://bit.ly/sopsu)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
</details>
|
|
53
|
+
|
|
54
|
+
<details>
|
|
55
|
+
<summary><strong>Windows PowerShell</strong></summary>
|
|
56
|
+
|
|
57
|
+
```powershell
|
|
58
|
+
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
59
|
+
uv tool install --upgrade --python 3.14 stackops
|
|
60
|
+
stackops --help
|
|
61
|
+
# OR: irm bit.ly/sopsw | iex
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
</details>
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Quick Init
|
|
68
|
+
|
|
69
|
+
Run these once StackOps is installed.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
devops install --group sysabc
|
|
73
|
+
devops config copy-assets all
|
|
74
|
+
devops config sync down \
|
|
75
|
+
--sensitivity public \
|
|
76
|
+
--method copy \
|
|
77
|
+
--on-conflict overwrite-default-path \
|
|
78
|
+
--which all
|
|
79
|
+
devops config terminal config-shell --which default
|
|
80
|
+
devops install --group termabc
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
## Author
|
|
85
|
+
|
|
86
|
+
Alex Al-Saffar. [email](mailto:programmer@usa.com)
|
|
87
|
+
|
|
88
|
+
## Contributor
|
|
89
|
+
|
|
90
|
+
Ruby Chan. [email](mailto:ruby.chan@sa.gov.au)
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=80", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
# requires = ["hatchling"]
|
|
5
|
+
# build-backend = "hatchling.build"
|
|
6
|
+
|
|
7
|
+
[project]
|
|
8
|
+
name = "stackops"
|
|
9
|
+
version = "8.100"
|
|
10
|
+
description = "Developer Stack Manager"
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
license = {text = "Apache 2.0"}
|
|
13
|
+
authors = [
|
|
14
|
+
{name = "Alex Al-Saffar", email = "programmer@usa.com"},
|
|
15
|
+
]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"License :: OSI Approved :: Apache Software License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
]
|
|
21
|
+
requires-python = ">=3.13"
|
|
22
|
+
dependencies = [
|
|
23
|
+
"fire>=0.7.1",
|
|
24
|
+
"gitpython>=3.1.46",
|
|
25
|
+
"joblib>=1.5.3",
|
|
26
|
+
"paramiko>=4.0.0",
|
|
27
|
+
"psutil>=7.2.2",
|
|
28
|
+
"pyyaml>=6.0.3",
|
|
29
|
+
"questionary>=2.1.1",
|
|
30
|
+
"randomname>=0.2.1",
|
|
31
|
+
"requests>=2.32.5",
|
|
32
|
+
"rich>=14.3.3",
|
|
33
|
+
"tenacity>=9.1.4",
|
|
34
|
+
"typer>=0.24.1",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
windows = []
|
|
39
|
+
plot = [
|
|
40
|
+
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
[project.urls]
|
|
45
|
+
"Homepage" = "https://github.com/thisismygitrepo/stackops"
|
|
46
|
+
"Bug Tracker" = "https://github.com/thisismygitrepo/stackops/issues"
|
|
47
|
+
|
|
48
|
+
[project.scripts]
|
|
49
|
+
devops = "stackops.scripts.python.devops:main"
|
|
50
|
+
cloud = "stackops.scripts.python.cloud:main"
|
|
51
|
+
fire = "stackops.scripts.python.fire_jobs:main"
|
|
52
|
+
agents = "stackops.scripts.python.agents:main"
|
|
53
|
+
terminal = "stackops.scripts.python.terminal:main"
|
|
54
|
+
croshell = "stackops.scripts.python.croshell:main"
|
|
55
|
+
utils = "stackops.scripts.python.utils:main"
|
|
56
|
+
stackops = "stackops.scripts.python.stackops_entry:main"
|
|
57
|
+
seek = "stackops.scripts.python.seek:main"
|
|
58
|
+
|
|
59
|
+
[tool.setuptools]
|
|
60
|
+
package-dir = {"" = "src"}
|
|
61
|
+
include-package-data = true
|
|
62
|
+
license-files = []
|
|
63
|
+
|
|
64
|
+
[tool.setuptools.packages.find]
|
|
65
|
+
where = ["src"]
|
|
66
|
+
|
|
67
|
+
[tool.setuptools.package-data]
|
|
68
|
+
stackops = ["**/*.toml", "**/*.md", "**/*.sh", "**/*.ps1", "**/*.txt", "utils/schemas/**/*.json"]
|
|
69
|
+
|
|
70
|
+
[dependency-groups]
|
|
71
|
+
dev = [
|
|
72
|
+
"aider>=0.2.6",
|
|
73
|
+
"build>=1.4.1",
|
|
74
|
+
"cleanpy>=0.5.1",
|
|
75
|
+
"cowsay>=6.1",
|
|
76
|
+
"duckdb>=1.5.1",
|
|
77
|
+
"gdown>=5.2.1",
|
|
78
|
+
"griffe>=2.0.2",
|
|
79
|
+
"ipdb>=0.13.13",
|
|
80
|
+
"ipykernel>=7.2.0",
|
|
81
|
+
"ipython>=9.11.0",
|
|
82
|
+
"kaleido>=1.2.0",
|
|
83
|
+
"marimo>=0.21.1",
|
|
84
|
+
"matplotlib>=3.10.8",
|
|
85
|
+
"mkdocstrings>=1.0.3",
|
|
86
|
+
"mkdocstrings-python>=2.0.3",
|
|
87
|
+
"mypy>=1.19.1",
|
|
88
|
+
"numpy>=2.4.3",
|
|
89
|
+
"pandas>=3.0.1",
|
|
90
|
+
"plotly>=6.6.0",
|
|
91
|
+
"polars>=1.39.3",
|
|
92
|
+
"pre-commit>=4.5.1",
|
|
93
|
+
"pudb>=2025.1.5",
|
|
94
|
+
"py7zr>=1.1.0",
|
|
95
|
+
"pydantic>=2.12.5",
|
|
96
|
+
"pydeps>=3.0.2",
|
|
97
|
+
"pyinstaller>=6.19.0",
|
|
98
|
+
"pylint>=4.0.5",
|
|
99
|
+
"pylsp-mypy>=0.7.1",
|
|
100
|
+
"pymupdf>=1.27.2.2",
|
|
101
|
+
"pypdf>=6.9.2",
|
|
102
|
+
"pyrefly>=0.58.0",
|
|
103
|
+
"pyright>=1.1.408",
|
|
104
|
+
"pytest>=9.0.2",
|
|
105
|
+
"python-lsp-server[mypy]>=1.14.0",
|
|
106
|
+
"qrcode>=8.2",
|
|
107
|
+
"ruff>=0.15.7",
|
|
108
|
+
"ruff-lsp>=0.0.62",
|
|
109
|
+
"sqlalchemy>=2.0.48",
|
|
110
|
+
"textual>=8.1.1",
|
|
111
|
+
"trogon>=0.6.0",
|
|
112
|
+
"ty>=0.0.25",
|
|
113
|
+
"types-mysqlclient>=2.2.0.20250915",
|
|
114
|
+
"types-paramiko>=4.0.0.20260322",
|
|
115
|
+
"types-pytz>=2026.1.1.20260304",
|
|
116
|
+
"types-pyyaml>=6.0.12.20250915",
|
|
117
|
+
"types-requests>=2.32.4.20260324",
|
|
118
|
+
"types-sqlalchemy>=1.4.53.38",
|
|
119
|
+
"types-toml>=0.10.8.20240310",
|
|
120
|
+
"types-urllib3>=1.26.25.14",
|
|
121
|
+
"vt-py>=0.22.0",
|
|
122
|
+
"yapf>=0.43.0",
|
|
123
|
+
"zensical>=0.0.29",
|
|
124
|
+
]
|
|
125
|
+
other = [
|
|
126
|
+
"duckdb-engine>=0.17.0",
|
|
127
|
+
"pycrucible>=0.4.6",
|
|
128
|
+
"vt-py>=0.22.0",
|
|
129
|
+
]
|
|
130
|
+
plot = [
|
|
131
|
+
"duckdb>=1.5.1",
|
|
132
|
+
"ipykernel>=7.2.0",
|
|
133
|
+
"ipython>=9.11.0",
|
|
134
|
+
"jupyterlab>=4.5.6",
|
|
135
|
+
"kaleido>=1.2.0",
|
|
136
|
+
"matplotlib>=3.10.8",
|
|
137
|
+
"nbformat>=5.10.4",
|
|
138
|
+
"numpy>=2.4.3",
|
|
139
|
+
"plotly>=6.6.0",
|
|
140
|
+
"polars>=1.39.3",
|
|
141
|
+
"python-magic>=0.4.27",
|
|
142
|
+
"sqlalchemy>=2.0.48",
|
|
143
|
+
]
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
[tool.pycrucible]
|
|
147
|
+
entry = "src/stackops/scripts/python/devops.py"
|
|
148
|
+
[tool.pycrucible.options]
|
|
149
|
+
debug = false
|
|
150
|
+
extract_to_temp = false
|
|
151
|
+
delete_after_run = false
|
|
152
|
+
offline_mode = false
|
|
153
|
+
|
|
154
|
+
[tool.pycrucible.patterns]
|
|
155
|
+
include = [
|
|
156
|
+
"**/*.py",
|
|
157
|
+
"**/*.ps1",
|
|
158
|
+
"**/*.sh",
|
|
159
|
+
"**/*.md",
|
|
160
|
+
]
|
|
161
|
+
exclude = [
|
|
162
|
+
"**/__pycache__/**",
|
|
163
|
+
]
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
|
|
2
|
+
import inspect
|
|
3
|
+
from types import FunctionType
|
|
4
|
+
from typing import Callable
|
|
5
|
+
from typing import cast
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from datetime import datetime
|
|
8
|
+
|
|
9
|
+
from rich.console import Console
|
|
10
|
+
from rich.panel import Panel
|
|
11
|
+
from rich.syntax import Syntax
|
|
12
|
+
|
|
13
|
+
from stackops.utils.accessories import randstr
|
|
14
|
+
from stackops.utils.io import save_json
|
|
15
|
+
from stackops.utils.files.read import read_json
|
|
16
|
+
from stackops.utils.ssh import SSH
|
|
17
|
+
from stackops.cluster.remote.models import RemoteStackOpsConfig, EmailParams
|
|
18
|
+
from stackops.cluster.remote.job_params import JobParams
|
|
19
|
+
from stackops.cluster.remote.file_manager import FileManager
|
|
20
|
+
from stackops.cluster.remote.execution_script import render_execution_script
|
|
21
|
+
from stackops.cluster.remote.notification import render_notification_block
|
|
22
|
+
from stackops.cluster.remote.data_transfer import transfer_sftp, transfer_cloud
|
|
23
|
+
|
|
24
|
+
console = Console()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class RemoteMachine:
|
|
28
|
+
def __init__(self, func: str | Path | Callable[..., object], config: RemoteStackOpsConfig, func_kwargs: dict[str, object] | None, data: list[str] | None) -> None:
|
|
29
|
+
self.config = config
|
|
30
|
+
if isinstance(func, str | Path):
|
|
31
|
+
self.job_params = JobParams.from_script(str(func))
|
|
32
|
+
elif inspect.isfunction(func):
|
|
33
|
+
self.job_params = JobParams.from_callable(func)
|
|
34
|
+
elif inspect.ismethod(func):
|
|
35
|
+
self.job_params = JobParams.from_callable(cast(FunctionType, func.__func__))
|
|
36
|
+
else:
|
|
37
|
+
raise TypeError("func must be a script path, function, or bound method.")
|
|
38
|
+
if config.workload_params is not None and func_kwargs is not None:
|
|
39
|
+
if "workload_params" in func_kwargs:
|
|
40
|
+
raise ValueError("workload_params provided in both config and func_kwargs")
|
|
41
|
+
self.kwargs: dict[str, object] = func_kwargs or {}
|
|
42
|
+
self.data: list[str] = data if data is not None else []
|
|
43
|
+
self.ssh: SSH | None = None
|
|
44
|
+
self.file_manager = FileManager(job_id=config.job_id, remote_machine_type="Linux", lock_resources=config.lock_resources, max_simultaneous_jobs=config.max_simultaneous_jobs, base=config.base_dir)
|
|
45
|
+
self.submitted: bool = False
|
|
46
|
+
self.scripts_generated: bool = False
|
|
47
|
+
self.results_downloaded: bool = False
|
|
48
|
+
self.results_path: Path | None = None
|
|
49
|
+
|
|
50
|
+
def __repr__(self) -> str:
|
|
51
|
+
ssh_repr = self.ssh.get_remote_repr(add_machine=True) if self.ssh else (self.config.ssh_host or "local")
|
|
52
|
+
return f"RemoteMachine({ssh_repr})"
|
|
53
|
+
|
|
54
|
+
def to_dict(self) -> dict[str, object]:
|
|
55
|
+
return {"config": self.config.to_dict(), "job_params": self.job_params.to_dict(), "file_manager": self.file_manager.to_dict(), "kwargs": self.kwargs, "data": self.data, "submitted": self.submitted, "scripts_generated": self.scripts_generated, "results_downloaded": self.results_downloaded, "results_path": str(self.results_path) if self.results_path else None}
|
|
56
|
+
|
|
57
|
+
@staticmethod
|
|
58
|
+
def from_dict(d: dict[str, object]) -> "RemoteMachine":
|
|
59
|
+
rm = RemoteMachine.__new__(RemoteMachine)
|
|
60
|
+
config_data = d["config"]
|
|
61
|
+
if not isinstance(config_data, dict):
|
|
62
|
+
raise TypeError("config must be a dict")
|
|
63
|
+
job_params_data = d["job_params"]
|
|
64
|
+
if not isinstance(job_params_data, dict):
|
|
65
|
+
raise TypeError("job_params must be a dict")
|
|
66
|
+
file_manager_data = d["file_manager"]
|
|
67
|
+
if not isinstance(file_manager_data, dict):
|
|
68
|
+
raise TypeError("file_manager must be a dict")
|
|
69
|
+
rm.config = RemoteStackOpsConfig.from_dict(config_data)
|
|
70
|
+
rm.job_params = JobParams.from_dict(job_params_data)
|
|
71
|
+
rm.file_manager = FileManager.from_dict(file_manager_data)
|
|
72
|
+
kwargs_raw = d.get("kwargs")
|
|
73
|
+
rm.kwargs = dict(kwargs_raw) if isinstance(kwargs_raw, dict) else {}
|
|
74
|
+
data_raw = d.get("data")
|
|
75
|
+
rm.data = [str(item) for item in data_raw] if isinstance(data_raw, list) else []
|
|
76
|
+
rm.submitted = bool(d.get("submitted", False))
|
|
77
|
+
rm.scripts_generated = bool(d.get("scripts_generated", False))
|
|
78
|
+
rm.results_downloaded = bool(d.get("results_downloaded", False))
|
|
79
|
+
rm.results_path = Path(str(d["results_path"])) if d.get("results_path") else None
|
|
80
|
+
rm.ssh = None
|
|
81
|
+
return rm
|
|
82
|
+
|
|
83
|
+
@staticmethod
|
|
84
|
+
def from_job_dir(job_dir: Path) -> "RemoteMachine":
|
|
85
|
+
data_dir = job_dir / "data"
|
|
86
|
+
rm_json = data_dir / "remote_machine.json"
|
|
87
|
+
d: dict[str, object] = read_json(rm_json)
|
|
88
|
+
return RemoteMachine.from_dict(d)
|
|
89
|
+
|
|
90
|
+
def _ensure_ssh(self) -> SSH:
|
|
91
|
+
if self.ssh is None:
|
|
92
|
+
if self.config.ssh_host is None:
|
|
93
|
+
raise ValueError("ssh_host must be set in config to connect to a remote machine")
|
|
94
|
+
self.ssh = SSH.from_config_file(host=self.config.ssh_host)
|
|
95
|
+
return self.ssh
|
|
96
|
+
|
|
97
|
+
def generate_scripts(self) -> None:
|
|
98
|
+
console.rule(f"Generating scripts for job `{self.file_manager.job_id}` @ {self!r}")
|
|
99
|
+
self.job_params.ssh_repr = repr(self.ssh) if self.ssh else ""
|
|
100
|
+
self.job_params.ssh_repr_remote = self.ssh.get_remote_repr() if self.ssh else ""
|
|
101
|
+
self.job_params.description = self.config.description
|
|
102
|
+
self.job_params.file_manager_path = str(self.file_manager.file_manager_path)
|
|
103
|
+
self.job_params.session_name = "TS-" + randstr(noun=True)
|
|
104
|
+
self.job_params.tab_name = f"job-{self.file_manager.job_id}"
|
|
105
|
+
|
|
106
|
+
execution_line = self.job_params.get_execution_line(parallelize=self.config.parallelize, workload_params=self.config.workload_params, wrap_in_try_except=self.config.wrap_in_try_except)
|
|
107
|
+
|
|
108
|
+
notification_block = ""
|
|
109
|
+
if self.config.notify_upon_completion:
|
|
110
|
+
assert self.config.email_config_name is not None
|
|
111
|
+
assert self.config.to_email is not None
|
|
112
|
+
email_params = EmailParams(
|
|
113
|
+
addressee=self.ssh.get_local_repr(add_machine=True) if self.ssh else "local",
|
|
114
|
+
speaker=self.ssh.get_remote_repr(add_machine=True) if self.ssh else "local",
|
|
115
|
+
ssh_conn_str=self.ssh.get_remote_repr(add_machine=False) if self.ssh else "",
|
|
116
|
+
executed_obj=f"{self.job_params.repo_path_rh}/{self.job_params.file_path_r}",
|
|
117
|
+
file_manager_path=str(self.file_manager.file_manager_path),
|
|
118
|
+
to_email=self.config.to_email,
|
|
119
|
+
email_config_name=self.config.email_config_name,
|
|
120
|
+
)
|
|
121
|
+
notification_block = render_notification_block(email_params)
|
|
122
|
+
|
|
123
|
+
# Save params JSON first so the template can reference it
|
|
124
|
+
params_json_path = self.file_manager.job_root / "data/job_params.json"
|
|
125
|
+
params_json_path.parent.mkdir(parents=True, exist_ok=True)
|
|
126
|
+
save_json(obj=self.job_params.to_dict(), path=params_json_path, indent=2, verbose=False)
|
|
127
|
+
|
|
128
|
+
py_script = render_execution_script(
|
|
129
|
+
params_json_path=str(params_json_path),
|
|
130
|
+
file_manager_json_path=str(self.file_manager.file_manager_path),
|
|
131
|
+
execution_line=execution_line,
|
|
132
|
+
notification_block=notification_block,
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
shell_script = _build_shell_script(self.job_params, self.config, self.file_manager)
|
|
136
|
+
|
|
137
|
+
# Write shell script
|
|
138
|
+
shell_path = self.file_manager.shell_script_path.expanduser()
|
|
139
|
+
shell_path.parent.mkdir(parents=True, exist_ok=True)
|
|
140
|
+
shell_path.write_text(shell_script, encoding="utf-8")
|
|
141
|
+
|
|
142
|
+
# Write python script
|
|
143
|
+
py_path = self.file_manager.py_script_path.expanduser()
|
|
144
|
+
py_path.parent.mkdir(parents=True, exist_ok=True)
|
|
145
|
+
py_path.write_text(py_script, encoding="utf-8")
|
|
146
|
+
|
|
147
|
+
# Save supporting data as JSON
|
|
148
|
+
save_json(obj=self.kwargs, path=self.file_manager.kwargs_path.expanduser(), indent=2, verbose=False)
|
|
149
|
+
save_json(obj=self.file_manager.to_dict(), path=self.file_manager.file_manager_path.expanduser(), indent=2, verbose=False)
|
|
150
|
+
save_json(obj=self.config.to_dict(), path=self.file_manager.remote_machine_config_path.expanduser(), indent=2, verbose=False)
|
|
151
|
+
save_json(obj=self.to_dict(), path=self.file_manager.remote_machine_path.expanduser(), indent=2, verbose=False)
|
|
152
|
+
|
|
153
|
+
log_dir = self.file_manager.execution_log_dir.expanduser()
|
|
154
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
155
|
+
(log_dir / "status.txt").write_text("queued", encoding="utf-8")
|
|
156
|
+
self.scripts_generated = True
|
|
157
|
+
|
|
158
|
+
def show_scripts(self) -> None:
|
|
159
|
+
shell_text = self.file_manager.shell_script_path.expanduser().read_text(encoding="utf-8")
|
|
160
|
+
py_text = self.file_manager.py_script_path.expanduser().read_text(encoding="utf-8")
|
|
161
|
+
console.print(Panel(Syntax(shell_text, lexer="sh", theme="monokai", line_numbers=True), title="Shell Script"))
|
|
162
|
+
console.print(Panel(Syntax(py_text, lexer="python", theme="monokai", line_numbers=True), title="Python Script"))
|
|
163
|
+
|
|
164
|
+
def submit(self) -> None:
|
|
165
|
+
console.rule("Submitting job")
|
|
166
|
+
if self.config.ssh_host is not None:
|
|
167
|
+
ssh = self._ensure_ssh()
|
|
168
|
+
if self.config.transfer_method == "sftp":
|
|
169
|
+
transfer_sftp(ssh=ssh, config=self.config, job_params=self.job_params, file_manager=self.file_manager, data=self.data)
|
|
170
|
+
elif self.config.transfer_method == "cloud":
|
|
171
|
+
transfer_cloud(ssh=ssh, config=self.config, job_params=self.job_params, file_manager=self.file_manager, data=self.data)
|
|
172
|
+
else:
|
|
173
|
+
raise ValueError(f"Unknown transfer_method: {self.config.transfer_method}")
|
|
174
|
+
self.submitted = True
|
|
175
|
+
|
|
176
|
+
def fire(self, run: bool) -> tuple[int, str]:
|
|
177
|
+
if not self.submitted:
|
|
178
|
+
raise RuntimeError("Job not submitted yet")
|
|
179
|
+
console.rule(f"Firing job `{self.config.job_id}`")
|
|
180
|
+
cmd = self.file_manager.get_fire_command()
|
|
181
|
+
if self.config.ssh_host is not None:
|
|
182
|
+
ssh = self._ensure_ssh()
|
|
183
|
+
response = ssh.run_shell_cmd_on_remote(command=cmd, verbose_output=True, description=f"fire job {self.config.job_id}", strict_stderr=False, strict_return_code=False)
|
|
184
|
+
return 0, response.op
|
|
185
|
+
else:
|
|
186
|
+
import subprocess
|
|
187
|
+
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
|
188
|
+
return result.returncode, result.stdout
|
|
189
|
+
|
|
190
|
+
def run(self, run: bool, show_scripts: bool) -> "RemoteMachine":
|
|
191
|
+
self.generate_scripts()
|
|
192
|
+
if show_scripts:
|
|
193
|
+
self.show_scripts()
|
|
194
|
+
self.submit()
|
|
195
|
+
self.fire(run=run)
|
|
196
|
+
return self
|
|
197
|
+
|
|
198
|
+
def check_job_status(self) -> Path | None:
|
|
199
|
+
if not self.submitted:
|
|
200
|
+
print("Job not submitted yet.")
|
|
201
|
+
return None
|
|
202
|
+
if self.results_downloaded:
|
|
203
|
+
print("Results already downloaded.")
|
|
204
|
+
return None
|
|
205
|
+
log_dir = self.file_manager.execution_log_dir.expanduser()
|
|
206
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
207
|
+
if self.config.ssh_host is not None:
|
|
208
|
+
ssh = self._ensure_ssh()
|
|
209
|
+
try:
|
|
210
|
+
ssh.copy_to_here(source=str(self.file_manager.execution_log_dir), target=None, compress_with_zip=True, recursive=True)
|
|
211
|
+
except Exception:
|
|
212
|
+
pass
|
|
213
|
+
end_time_file = log_dir / "end_time.txt"
|
|
214
|
+
if not end_time_file.exists():
|
|
215
|
+
start_file = log_dir / "start_time.txt"
|
|
216
|
+
if not start_file.exists():
|
|
217
|
+
print(f"Job {self.config.job_id} still queued.")
|
|
218
|
+
else:
|
|
219
|
+
start_time = start_file.read_text(encoding="utf-8").strip()
|
|
220
|
+
try:
|
|
221
|
+
elapsed = datetime.now() - datetime.fromisoformat(start_time)
|
|
222
|
+
msg = f"Job `{self.config.job_id}` running since {start_time} ({elapsed})"
|
|
223
|
+
except ValueError:
|
|
224
|
+
msg = f"Job `{self.config.job_id}` running since {start_time}"
|
|
225
|
+
console.print(Panel(msg, title="Job Status", border_style="bold red"))
|
|
226
|
+
return None
|
|
227
|
+
results_folder_file = log_dir / "results_folder_path.txt"
|
|
228
|
+
results_folder = results_folder_file.read_text(encoding="utf-8").strip()
|
|
229
|
+
console.rule("Job Completed")
|
|
230
|
+
print(f"Results: {results_folder}")
|
|
231
|
+
self.results_path = Path(results_folder)
|
|
232
|
+
return self.results_path
|
|
233
|
+
|
|
234
|
+
def download_results(self, target: str | None) -> "RemoteMachine":
|
|
235
|
+
if self.results_path is None:
|
|
236
|
+
raise RuntimeError("Results path unknown. Check job status first.")
|
|
237
|
+
if self.results_downloaded:
|
|
238
|
+
print(f"Results already downloaded: {self.results_path}")
|
|
239
|
+
return self
|
|
240
|
+
if self.config.ssh_host is not None:
|
|
241
|
+
ssh = self._ensure_ssh()
|
|
242
|
+
ssh.copy_to_here(source=str(self.results_path), target=target, compress_with_zip=True, recursive=True)
|
|
243
|
+
self.results_downloaded = True
|
|
244
|
+
return self
|
|
245
|
+
|
|
246
|
+
def delete_remote_results(self) -> "RemoteMachine":
|
|
247
|
+
if self.results_path is None:
|
|
248
|
+
print("Results path unknown.")
|
|
249
|
+
return self
|
|
250
|
+
if self.config.ssh_host is not None:
|
|
251
|
+
ssh = self._ensure_ssh()
|
|
252
|
+
ssh.run_shell_cmd_on_remote(command=f"rm -rf {self.results_path}", verbose_output=False, description="delete remote results", strict_stderr=False, strict_return_code=False)
|
|
253
|
+
return self
|
|
254
|
+
|
|
255
|
+
def _build_shell_script(job_params: JobParams, config: RemoteStackOpsConfig, file_manager: FileManager) -> str:
|
|
256
|
+
lines: list[str] = ['echo "=== SHELL START ==="']
|
|
257
|
+
lines.append(f"cd {job_params.repo_path_rh}")
|
|
258
|
+
if config.update_repo:
|
|
259
|
+
lines.append("git pull")
|
|
260
|
+
if config.install_repo:
|
|
261
|
+
lines.append("pip install -e .")
|
|
262
|
+
lines.append('echo "=== SHELL END ==="')
|
|
263
|
+
lines.append(f'echo "Starting job {config.job_id}"')
|
|
264
|
+
py_rel = file_manager.py_script_path
|
|
265
|
+
try:
|
|
266
|
+
py_rel_str = str(py_rel.relative_to(Path.home()))
|
|
267
|
+
except ValueError:
|
|
268
|
+
py_rel_str = str(py_rel)
|
|
269
|
+
lines.append("cd ~")
|
|
270
|
+
if config.interactive:
|
|
271
|
+
lines.append(f"python -i ./{py_rel_str}")
|
|
272
|
+
else:
|
|
273
|
+
lines.append(f"python ./{py_rel_str}")
|
|
274
|
+
return "\n".join(lines) + "\n"
|