stackops 26.8__tar.gz → 26.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {stackops-26.8/src/stackops.egg-info → stackops-26.8.1}/PKG-INFO +1 -1
- {stackops-26.8 → stackops-26.8.1}/pyproject.toml +2 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/cloud_manager.py +2 -2
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/models.py +6 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/notifications.py +4 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/security_cli.py +29 -23
- stackops-26.8.1/src/stackops/jobs/installer/python_scripts/rustdesk_server.py +69 -0
- stackops-26.8.1/src/stackops/jobs/scripts/python_scripts/chatgpt_random_questions.py +354 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_links.py +26 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_links_export.py +4 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/dotfiles_mapper.py +1 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents.py +79 -22
- stackops-26.8.1/src/stackops/scripts/python/agents_browser.py +295 -0
- stackops-26.8.1/src/stackops/scripts/python/agents_followup.py +146 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel_commands.py +1 -0
- stackops-26.8.1/src/stackops/scripts/python/agents_second_brain.instructions.md +21 -0
- stackops-26.8.1/src/stackops/scripts/python/agents_second_brain.py +31 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph.json +1934 -874
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/devops_navigator.py +1 -1
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_batch.py +216 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_constants.py +30 -7
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_processes.py +73 -33
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch.py +94 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_lock.py +2 -2
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_profile_filesystem.py +112 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_profiles.py +172 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_resolution.py +8 -5
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_reuse.py +4 -4
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_rich_output.py +51 -3
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_temporary_profiles.py +70 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux.py +2 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_lifecycle.py +16 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_impl.py +3 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_shell.py +9 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_config.py +38 -5
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy.py +17 -5
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_copy_artifacts.py +3 -3
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_path_resolver.py +3 -3
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_sync.py +16 -2
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config.py +12 -3
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup.py +133 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_config.py +101 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_domains.py +151 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_email.py +91 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_devops/cli_config_setup_email_profile.py +185 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/env_manager_tui.py +1 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/path_manager_tui.py +1 -1
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +192 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_actions.py +95 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_archive.py +65 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +78 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_git.py +76 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_integration.py +52 -0
- stackops-26.8.1/src/stackops/scripts/python/helpers/helpers_repos/sync.py +50 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_common.py +7 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_layout_source.py +7 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/interactive.sh +8 -8
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/interactive.ps1 +9 -9
- stackops-26.8.1/src/stackops/utils/cloud/default_remote.py +29 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/rclone.py +43 -50
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/rclone_wrapper.py +1 -1
- stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_constants.py +14 -0
- stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_fetch.py +122 -0
- stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_output.py +54 -0
- stackops-26.8.1/src/stackops/utils/installer_utils/github_commit_dates_report.py +99 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_class.py +14 -3
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_helper.py +47 -0
- stackops-26.8.1/src/stackops/utils/installer_utils/update_github_commit_dates.py +167 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/io.py +6 -0
- stackops-26.8.1/src/stackops/utils/schemas/config/constants.py +5 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_data.json +415 -3
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/dotfiles.yaml +57 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/abc.py +1 -1
- {stackops-26.8 → stackops-26.8.1/src/stackops.egg-info}/PKG-INFO +1 -1
- {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/SOURCES.txt +22 -0
- stackops-26.8/src/stackops/jobs/scripts/python_scripts/chatgpt_random_questions.py +0 -881
- stackops-26.8/src/stackops/scripts/python/agents_browser.py +0 -172
- stackops-26.8/src/stackops/scripts/python/agents_second_brain.py +0 -22
- stackops-26.8/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch.py +0 -106
- stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync.py +0 -462
- stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/cloud_repo_sync_conflicts.py +0 -91
- stackops-26.8/src/stackops/scripts/python/helpers/helpers_repos/sync.py +0 -96
- stackops-26.8/src/stackops/utils/installer_utils/update_github_commit_dates.py +0 -137
- {stackops-26.8 → stackops-26.8.1}/MANIFEST.in +0 -0
- {stackops-26.8 → stackops-26.8.1}/README.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/setup.cfg +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/manual/test_dotfile_mapper_assets.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/manual/test_path_references.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/manual/test_secrets_schema.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/manual/test_stackops_skill_refs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/manual/test_stackops_versioning.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/__main__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/cli.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_css.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_css_continued.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_js.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/graph_js_continued.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/renderer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/architecture_graph/scanner.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/data_transfer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/distribute.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/execution_script.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/file_manager.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/job_params.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/notification.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/remote/remote_machine.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/scheduler.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/enhanced_command_runner.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/helpers/load_balancer_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/monitoring_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/session_conflict.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/session_exit_mode.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/status_reporting.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_local.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_local_manager.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_execution.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_layout.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/tmux/tmux_utils/tmux_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/load_balancer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/cluster/sessions_managers/utils/maker.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/agents/mcps/mcp.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/check_installations.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/install_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/report_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/security_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/checks/vt_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/network.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/ngrok.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/linux_scripts/sysabc_macos.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/macos_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/nerdfonts.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/sysabc.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/powershell_scripts/texlive.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/alacritty.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/boxes.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/brave.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/bypass_paywall.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/cloudflare_warp_cli.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/code.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/cursor.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/deer_flow.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/docker.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/dubdb_adbc.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/espanso.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/goes.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/hx.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/lvim.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/nerdfont.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/orca.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/oz.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/poppler.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/redis.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/rmpc.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/sysabc.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/termusic.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/wezterm.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/winget.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/yazi.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/youtube_tui.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/python_scripts/ytui_music.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/installer/todo.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/hollywood.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/lid.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/bash_scripts/weather +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/cmatrix.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/powershell_scripts/weather.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts/python_scripts/gh.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/download_stackops_offline_installer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/jobs/scripts_dynamic/system_compute_analyzer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/logger.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/create_shell_profile.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/conflict.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/operations.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/profile/linking/options.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/linux/wrap_stackops +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/nu/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/nu/wrap_stackops.nu +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_iter.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_parallel_run_command.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_test_runtime.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/agents_type_fix.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_artifacts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_frameworks.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/initai_rich_output.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/command_runner.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/command_runner.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/dashboard.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/lint_and_type_check.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_config.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_core.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_diagnostics.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_json.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/models_reports.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/scripts/paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/antigravity/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/antigravity/antigravity.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/auggie/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/auggie/auggie.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/claude/claude.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/cline/cline.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/codex.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/codex/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/Thinking-Beast-Mode.agent.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/agents/deepResearch.agent.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/github_copilot.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/archive/watch_exec.prompt.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/copilot/prompts/research-report-skeleton.prompt.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/crush.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/crush.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/crush/privacy.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/cursor/cursors.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/droid/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/droid/droid.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/forge/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/forge/forge.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/kilocode.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/kilocode/privacy.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/opencode.jsonc +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/opencode/opencode.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/oz/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/oz/oz.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/pi/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/pi/pi.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/q/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/q/amazon_q.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/qwen_code/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/qwen_code/qwen_code.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/warp/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/solutions/warp/warp.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files_content.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generate_files_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generic.instructions.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/generic.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/shared.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai/utils/vscode_tasks.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ai_account.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/cloud.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/devops.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/enums.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/fire_jobs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/ftpx.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_apps.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_eval.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_node_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_nodes.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_registration.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_resolver.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_shared.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_signature.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_targets.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_tree.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/cli_graph_values.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/generate_cli_graph.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/python_api_graph.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/cli_graph_typer_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/dot_export.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/graph_data.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/graph_paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/cli_graph_loader.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_builder.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_detail.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/command_tree.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/data_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/main_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/helpers_navigator/search_bar.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/plotly_browser.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/plotly_views.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/python_api_graph_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/python_api_graph_search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/graph/visualize/rich_tree.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/create_options.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agent_impl_interactive/main.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_codex.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_copilot.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_cursor_agents.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_pi.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_agentops_cache.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_ask_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_launch.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_detached_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_guides.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_details.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_identity.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_launch_runtime.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_lifecycle.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_prompt.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_launch.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_browser_tmux_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_clean.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_artifacts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_create_inputs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_execute_prompts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_contract.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_herdr.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_herdr_protocol.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_plan.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_records.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_render.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_rich_output.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_selection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_service.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_iter_workspace_records.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_mcp_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_add_entry.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_aoe_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_layouts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_config.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_run_yaml.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_parallel_yaml_defaults.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_rich_output.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_context.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_run_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_stackops_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_skill_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/agents_yaml_schemas.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_cdp_relay.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/agent-browser.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp-browser-url.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/chrome-devtools-mcp.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/pinchtab.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-cli.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-cdp.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-extension.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-storage-state.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp-user-data-dir.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.mcp.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_guides/playwright-mcp.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/brave.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/chrome.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/edge.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/firefox.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/registry.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/browser_launchers/safari.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_launch.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_help_search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/fire_agents_load_balancer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_catalog.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_install.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/mcp_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/auggie/auggie_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/chatgpt/chatgpt_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cline/cline_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/codex/codex_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/common/privacy_orchestrator.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/cursor/cursor_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/droid/droid_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/kilocode/kilocode_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/mods/mods_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/opencode/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/q/q_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/configs/qwen/qwen_privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/privacy/privacy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/reasoning_capabilities.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/prompt.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_agents/templates/template.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/agy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/auggie.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/claude.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/cline.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/codex.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/copilot.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/crush.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/cursor_agent.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/droid.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/forge.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/json_values.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/kilocode.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/opencode.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/oz.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/pi.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/profiles.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/q.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/qwen.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_ai_account/registry.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_registration.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/backup_selection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_helpers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_cloud/cloud_mount_tmux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_cloudflare.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_cloudflare_tunnel.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile_mapper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_dotfile_transfer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_mount.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_actions.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_candidates.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_errors.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_json.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_prompts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_support.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_secrets_validation.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_terminal.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_config_tmux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_display.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_subset.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_data_subset_io.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_device.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_interactive_picker.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_nw_vscode_share.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos_version.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_repos_viz.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_assets.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_clone.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docker.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_docs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_export.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_info.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_self_repo.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_file.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_server.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_temp.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_share_terminal.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_ssh_port.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_subset_support.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cli_vault.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_config.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_maintenance.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/cloudflare_tunnel_runtime.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_checks.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_status_display.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/devops_update_repos.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/interactive.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/commands.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/device_entry.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/devices.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/linux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/macos.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/selection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/mount_helpers/windows.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/register_interactive.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/run_script.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/stackops_skill_refs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_pwsh_theme.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_wezterm_theme.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/themes/choose_windows_terminal_theme.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/vault.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_devops/vscode_tunnel_auth.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_env/path_manager_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/cloud_manager.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/f.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/file_wrangler.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_args_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_route_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/address_switch.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ftpx_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/onetimeshare.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_key_windows.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_add_ssh_key.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_cloud_init.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_darwin_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_linux_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_debug_windows_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/ssh/ssh_deploy_key_remote.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/darwin.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/linux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/unsupported.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_network/wifi_conn_platforms/windows.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/pomodoro.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/preview_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/preview_read.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/scheduler.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/start_slidev.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/viewer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_preview/viewer_template.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/action.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/action_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/clone.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/discovery.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/git_action.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/grource.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/record.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/repo_analyzer_2.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/spec_store.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/update.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_capture.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_checkout.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_status.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_repos/version_store.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/ast_search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/qr_code.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/repo_rag.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/script_help.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_search/semantic_search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/fzfg +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_linux/search_with_context.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_macos/fzfg +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/scripts_windows/fzfg.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_seek/seek_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_aoe_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_attach_common.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_herdr_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_herdr_backend_idle.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_options.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_preview.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_process_commands.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_backend_processes.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/_tmux_process_inspection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/attach_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export_selection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/herdr_export_source.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/kill_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/kill_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_aoe.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_herdr.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_kill.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_runner.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_selection.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/session_trace_tmux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_aoe_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_cli_run_all.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_display.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_dynamic_tmux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_herdr.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_impl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_multiprocess.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_test_layouts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/sessions_trace_render.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/terminal_cli_helpers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/terminal_export.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/tmux_export.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/tmux_export_constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_sessions/utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/file_utils_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/machine_utils_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/path_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/path_reference_validation.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pdf.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/process_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/processes.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_check.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_deps.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_maintenance.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_commands_setup.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_graph.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_parse.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_css.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_graph_css.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_bootstrap.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_interaction.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_layout.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_shared.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_render_js_svg.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_deps_runner.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/pyproject_utils_helpers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python_env.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/python_init.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/read_db_cli_tui_backend.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/scrape.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/specs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/surya.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/helpers/helpers_utils/upgrade_packages.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/preview.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/seek.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/stackops_entry.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal_summarize.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/terminal_summary.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/python/utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/apps_desktop.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/live_from_github.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/quick_init.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/linux/uv.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/macos/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/macos/uv.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/live_from_github.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/quick_init.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/setup/windows/uv.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/scripts/windows/wrap_stackops.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/assets.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/loader.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/passwords.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/readers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/search.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/secrets/writer.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/themes/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/atuin/themes/catppuccin-mocha-mauve.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/br.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/brootcd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/broot/conf.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/glow/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/glow/glow.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/gromit-mpx/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/gromit-mpx/gromit-mpx.cfg +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/languages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/helix/yazi-picker.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/herdr/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/herdr/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keras/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keras/keras.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/config/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/config/default.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/match/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/espanso/match/base.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/kanata/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/keyboard/kanata/kanata.kbd +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/delete.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/on-cd.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/on-quit.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/open.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/paste.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/pre-cd.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/autocall/rename.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/colors +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/cleaner.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/leftpane_previewer.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/lfcd.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/previewer.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/exe/previewer_archive.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/icons +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/linux/lfrc +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/action.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/delete.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/on-cd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/on-quit.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/open.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/paste.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/autocall/rename.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_tere.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_zoxide.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/cd_zoxide2.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/colors +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/icons +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/leftpane_previewer.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/lfcd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/lfrc +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/mkdir.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/mkfile.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/previewer.cmd +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lf/windows/previewer.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.flake8 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.mypy.ini +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.pylintrc +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/.ruff.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/pyrefly.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/linters/ty.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/linux/config.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/archive/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/archive/config_additional.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/config.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/lua/user/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/lvim/windows/lua/user/custom_config.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/marimo.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/marimo/snippets/globalize.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/mprocs.yaml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/mprocs/windows/other +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/ollama/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/ollama/server.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pistol/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pistol/pistol.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/presenterm/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/presenterm/config.yaml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/procs/.procs.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/description.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/install-ppm.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.bindings.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.local.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.plugins.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.powerline.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/psmux/psmux.theme.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pudb/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/pudb/pudb.cfg +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/config.rasi +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/rofi/config_default.rasi +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/alacritty.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/alacritty/alacritty.yml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/bash/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/bash/init.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/config.ghostty +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ghostty/themes/wezterm-default +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/hyper/.hyper.js +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/ipy/profiles/default/startup/playext.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/DynamicProfiles/stackops.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/bootstrap/com.googlecode.iterm2.plist +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/iterm2/com.googlecode.iterm2.plist +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/kitty/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/kitty/kitty.conf +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/config.nu +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/env.nu +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/nushell/init.nu +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/init.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/pwsh/search_pwsh_history.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/starship/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/starship/starship.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/vtm/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/vtm/settings.xml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wezterm/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wezterm/wezterm.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wt/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/wt/settings.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/zsh/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/shells/zsh/init.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/streamlit/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/streamlit/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/linux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/linux/init.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/svim/windows/init.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/alias.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/apt-packages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/aws-buckets.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/aws-instances.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/bash-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/brew-packages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/channels.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dirs.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/diskutil.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/distrobox-list.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dnf-packages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/docker-images.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/dotfiles.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/downloads.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/env.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/figlet-fonts.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/files.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/fish-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/fonts.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-branch.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-diff.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-files.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-log.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-reflog.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-repos.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-tags.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/git-worktrees.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/guix.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/images.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/just-recipes.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-deployments.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-pods.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/k8s-services.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/linux-disks.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/man-pages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/mounts.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/npm-packages.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/nu-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/path.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/ports.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/procs.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/python-venvs.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/recent-files.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/sesh.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/text.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tldr.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tmux-sessions.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/tmux-windows.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/todo-comments.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/trash.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/unicode.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/wifi.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/zoxide.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_unix/zsh-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/alias.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/dirs.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/docker-images.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/dotfiles.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/env.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/files.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-branch.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-diff.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-log.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-reflog.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/git-repos.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/nu-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/pwsh-history.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/television/cable_windows/text.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/terecd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tere/terecd.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tmux/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tmux/tmux.conf.local +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/config.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/themes/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/tv/themes/catppuccin-mocha-sky.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wsl/.wslconfig +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wt/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/wt/set_wt_settings.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/init.lua +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_darwin.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_linux.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/keymap_windows.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/compress_selected.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/copy_file_content.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/fullscreen_preview.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/interactive_view.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/open_db_readonly.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/open_default_app.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/scripts/serve_browser_file.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/yazi_cd.ps1 +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/shell/yazi_cd.sh +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/theme.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_darwin.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_linux.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/yazi/yazi_windows.toml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/zed/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/settings/zed/settings.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/accessories.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/alias_markers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/command_lookup.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/hierarchy.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/hierarchy_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cli_utils/terminal.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/defaults.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/encryption.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/README.md +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/accounts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/auth.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/cli.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/credentials.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/errors.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/file_ops.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/items.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/onedrive/output.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/cloud/target_conflict.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/code.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/fat_croco.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/halfwit_croco.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/happy_croco.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/art/water_croco.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ascii_art.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/compression.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/dbms.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/download.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/f.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/headers.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/notebook.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ouch/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/ouch/decompress.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/files/read.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/github_release_bulk.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/github_release_scraper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/install_from_url.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/install_request_logic.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_cli.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_explore.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_locator_utils.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_main_protocol.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_constants.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_models.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_publish.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_render.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_scripts.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_steps.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_offline_uv.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_runner.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/installer_summary.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/linux_package_file.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/installer_utils/linux_package_manager.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/machine/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/machine/specs.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/meta.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/network/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/network/address.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/optional_dependencies.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options_tv_linux.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/options_tv_windows.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/textual_options_form.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/textual_options_form_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/options_utils/tv_options.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/path_core.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/path_reference.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/python/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/python/imports.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/repos/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/repos/stackops_paths.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/parallel.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/agents/prompts.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/config/config_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/fire_agents_input.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/fire_agents/fire_agents_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_type.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/installer_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/installer/package_groups.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/layouts/layout_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/data.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/data.yaml +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/mapper/dotfiles.schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/repos_schema.json +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/repos/repos_types.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/schemas/yaml_schema.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/source_of_truth.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/__init__.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/connection_target.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/open_ssh_config.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/ssh.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/wsl.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/utils/ssh_utils/wsl_helper.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops/version.py +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/dependency_links.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/entry_points.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/requires.txt +0 -0
- {stackops-26.8 → stackops-26.8.1}/src/stackops.egg-info/top_level.txt +0 -0
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "stackops"
|
|
9
|
-
version = "26.8"
|
|
9
|
+
version = "26.8.1"
|
|
10
10
|
description = "Developer Stack Manager"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
license = {text = "Apache 2.0"}
|
|
@@ -99,6 +99,7 @@ dev = [
|
|
|
99
99
|
"numpy>=2.5.0",
|
|
100
100
|
"pandas>=3.0.3",
|
|
101
101
|
"paramiko>=5.0.0",
|
|
102
|
+
"playwright>=1.62.0",
|
|
102
103
|
"plotly>=6.8.0",
|
|
103
104
|
"polars>=1.42.0",
|
|
104
105
|
"pre-commit>=4.6.0",
|
|
@@ -12,9 +12,9 @@ from rich.console import Console
|
|
|
12
12
|
|
|
13
13
|
from stackops.cluster.remote.models import JOB_STATUS, LogEntry
|
|
14
14
|
from stackops.utils.cloud import rclone as rclone_utils
|
|
15
|
+
from stackops.utils.cloud.default_remote import read_default_rclone_remote
|
|
15
16
|
from stackops.utils.files.read import read_json
|
|
16
17
|
from stackops.utils.io import save_json
|
|
17
|
-
from stackops.utils.source_of_truth import read_stackops_config_string
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
LOCK_EXPIRY_SECONDS = 3600
|
|
@@ -59,7 +59,7 @@ class CloudManager:
|
|
|
59
59
|
self.status_root = status_root
|
|
60
60
|
self.max_jobs = max_jobs
|
|
61
61
|
if cloud is None:
|
|
62
|
-
self.cloud =
|
|
62
|
+
self.cloud = read_default_rclone_remote()
|
|
63
63
|
else:
|
|
64
64
|
self.cloud = cloud
|
|
65
65
|
self.lock_claimed = False
|
|
@@ -162,7 +162,12 @@ def _read_default_config_value(key: StackOpsConfigStringKey) -> str:
|
|
|
162
162
|
try:
|
|
163
163
|
return read_stackops_config_string(key)
|
|
164
164
|
except (FileNotFoundError, KeyError, ValueError) as err:
|
|
165
|
-
|
|
165
|
+
setup_domain = "cloud" if key == "default_rclone_config" else "email"
|
|
166
|
+
raise ValueError(
|
|
167
|
+
f"Config value '{key}' could not be read from `{DOTFILES_STACKOPS_CONFIG_PATH}`.\n\n"
|
|
168
|
+
"Create or update it with:\n"
|
|
169
|
+
f" devops config setup {setup_domain}"
|
|
170
|
+
) from err
|
|
166
171
|
|
|
167
172
|
|
|
168
173
|
@dataclass
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
import smtplib
|
|
6
|
+
import ssl
|
|
6
7
|
import imaplib
|
|
7
8
|
from email.mime.text import MIMEText
|
|
8
9
|
from email.mime.multipart import MIMEMultipart
|
|
@@ -119,6 +120,9 @@ class Email:
|
|
|
119
120
|
self.server = smtplib.SMTP_SSL(host=smtp_host, port=smtp_port)
|
|
120
121
|
elif encryption_name == "tls":
|
|
121
122
|
self.server = smtplib.SMTP(host=smtp_host, port=smtp_port)
|
|
123
|
+
self.server.starttls(context=ssl.create_default_context())
|
|
124
|
+
else:
|
|
125
|
+
raise ValueError(f"Email encryption for {config_name!r} must be 'tls' or 'ssl', got {encryption!r}.")
|
|
122
126
|
self.server.login(self.email_add, password=password)
|
|
123
127
|
|
|
124
128
|
def send_message(self, to: str, subject: str, body: str, txt_to_html: bool = True, attachments: list[Any] | None = None):
|
|
@@ -4,6 +4,8 @@ from typing import TYPE_CHECKING, Annotated, Literal
|
|
|
4
4
|
|
|
5
5
|
import typer
|
|
6
6
|
|
|
7
|
+
from stackops.jobs.installer.checks.security_helper import parse_apps_argument
|
|
8
|
+
|
|
7
9
|
if TYPE_CHECKING:
|
|
8
10
|
from rich.console import Console
|
|
9
11
|
from rich.table import Table
|
|
@@ -20,19 +22,25 @@ def _console() -> Console:
|
|
|
20
22
|
return Console()
|
|
21
23
|
|
|
22
24
|
|
|
23
|
-
def _parse_apps_argument(apps: str | None) -> list[str] | None:
|
|
24
|
-
if apps is None:
|
|
25
|
-
return None
|
|
26
|
-
app_names = [name.strip() for name in apps.split(",") if name.strip()]
|
|
27
|
-
return app_names or None
|
|
28
|
-
|
|
29
|
-
|
|
30
25
|
def _resolve_report_view(view: ReportView | None, summarize: bool) -> ReportView:
|
|
31
26
|
if view is not None:
|
|
32
27
|
return view
|
|
33
28
|
return "app-summary" if summarize else "engines"
|
|
34
29
|
|
|
35
30
|
|
|
31
|
+
def _run_scan(app_names: list[str] | None, path_value: str | None, record: bool) -> None:
|
|
32
|
+
if path_value is not None:
|
|
33
|
+
from pathlib import Path
|
|
34
|
+
|
|
35
|
+
from stackops.jobs.installer.checks.security_helper import scan_single_path
|
|
36
|
+
|
|
37
|
+
scan_single_path(Path(path_value), record)
|
|
38
|
+
else:
|
|
39
|
+
from stackops.jobs.installer.checks.check_installations import scan_installed_apps
|
|
40
|
+
|
|
41
|
+
scan_installed_apps(app_names, write_reports_to_repo=record)
|
|
42
|
+
|
|
43
|
+
|
|
36
44
|
def scan(
|
|
37
45
|
apps: Annotated[str | None, typer.Argument(help="Optional comma-separated app names to scan")] = None,
|
|
38
46
|
path: Annotated[
|
|
@@ -50,23 +58,21 @@ def scan(
|
|
|
50
58
|
),
|
|
51
59
|
] = None,
|
|
52
60
|
) -> None:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
resolved_record = record if record is not None else path is None
|
|
59
|
-
if path is not None:
|
|
60
|
-
scan_single_path(path, resolved_record)
|
|
61
|
-
else:
|
|
62
|
-
from stackops.jobs.installer.checks.check_installations import scan_installed_apps
|
|
63
|
-
|
|
64
|
-
app_names = _parse_apps_argument(apps)
|
|
65
|
-
scan_installed_apps(app_names, write_reports_to_repo=resolved_record)
|
|
61
|
+
if apps is not None and path is not None:
|
|
62
|
+
raise typer.BadParameter("Use either APPS or --path, not both.")
|
|
63
|
+
app_names = parse_apps_argument(apps)
|
|
64
|
+
path_value = str(path) if path is not None else None
|
|
65
|
+
resolved_record = record if record is not None else path is None
|
|
66
66
|
|
|
67
67
|
from stackops.utils.code import run_lambda_function
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
proc = run_lambda_function(
|
|
70
|
+
lambda: _run_scan(app_names=app_names, path_value=path_value, record=resolved_record),
|
|
71
|
+
uv_with=["vt-py"],
|
|
72
|
+
uv_project_dir=None,
|
|
73
|
+
)
|
|
74
|
+
if proc.returncode != 0:
|
|
75
|
+
raise typer.Exit(code=proc.returncode)
|
|
70
76
|
|
|
71
77
|
|
|
72
78
|
def _build_apps_table(apps_to_scan: list[tuple[Path, str | None]]) -> Table:
|
|
@@ -85,7 +91,7 @@ def _build_apps_table(apps_to_scan: list[tuple[Path, str | None]]) -> Table:
|
|
|
85
91
|
def list_apps(apps: Annotated[str | None, typer.Argument(help="Optional comma-separated app names to list")] = None) -> None:
|
|
86
92
|
from stackops.jobs.installer.checks.check_installations import collect_apps_to_scan
|
|
87
93
|
|
|
88
|
-
apps_names =
|
|
94
|
+
apps_names = parse_apps_argument(apps)
|
|
89
95
|
apps_to_scan = collect_apps_to_scan(apps_names)
|
|
90
96
|
if not apps_to_scan:
|
|
91
97
|
if apps_names is None:
|
|
@@ -147,7 +153,7 @@ def report(
|
|
|
147
153
|
normalize_app_names,
|
|
148
154
|
)
|
|
149
155
|
|
|
150
|
-
apps_names =
|
|
156
|
+
apps_names = parse_apps_argument(apps)
|
|
151
157
|
normalized_app_names = normalize_app_names(apps_names)
|
|
152
158
|
app_rows, engine_rows, app_data_list, hydrated_engine_rows = load_filtered_report_rows(normalized_app_names)
|
|
153
159
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import platform
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
import stackops.utils.path_core as path_core
|
|
5
|
+
from stackops.utils.installer_utils.installer_class import Installer
|
|
6
|
+
from stackops.utils.path_core import delete_path
|
|
7
|
+
from stackops.utils.schemas.installer.installer_types import InstallerData
|
|
8
|
+
from stackops.utils.source_of_truth import LINUX_INSTALL_PATH, WINDOWS_INSTALL_PATH
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _build_release_installer_data(installer_data: InstallerData) -> InstallerData:
|
|
12
|
+
release_installer_data = installer_data.copy()
|
|
13
|
+
release_installer_data["fileNamePattern"] = {
|
|
14
|
+
"amd64": {
|
|
15
|
+
"linux": "rustdesk-server-linux-amd64.zip",
|
|
16
|
+
"windows": "rustdesk-server-windows-x86_64-unsigned.zip",
|
|
17
|
+
"darwin": None,
|
|
18
|
+
},
|
|
19
|
+
"arm64": {
|
|
20
|
+
"linux": "rustdesk-server-linux-arm64v8.zip",
|
|
21
|
+
"windows": None,
|
|
22
|
+
"darwin": None,
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
return release_installer_data
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _resolve_release_binaries(extracted_root: Path, binary_names: tuple[str, ...], suffix: str) -> dict[str, Path]:
|
|
29
|
+
resolved_binaries: dict[str, Path] = {}
|
|
30
|
+
for binary_name in binary_names:
|
|
31
|
+
expected_name = f"{binary_name}{suffix}"
|
|
32
|
+
matches = [candidate for candidate in extracted_root.rglob(expected_name) if candidate.is_file()]
|
|
33
|
+
if len(matches) != 1:
|
|
34
|
+
raise FileNotFoundError(f"Expected one {expected_name} in {extracted_root}, found {len(matches)}.")
|
|
35
|
+
resolved_binaries[binary_name] = matches[0]
|
|
36
|
+
return resolved_binaries
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def main(installer_data: InstallerData, version: str | None, update: bool) -> None:
|
|
40
|
+
_ = update
|
|
41
|
+
match platform.system():
|
|
42
|
+
case "Linux":
|
|
43
|
+
install_root = Path(LINUX_INSTALL_PATH)
|
|
44
|
+
executable_suffix = ""
|
|
45
|
+
case "Windows":
|
|
46
|
+
install_root = Path(WINDOWS_INSTALL_PATH)
|
|
47
|
+
executable_suffix = ".exe"
|
|
48
|
+
case operating_system:
|
|
49
|
+
raise NotImplementedError(f"RustDesk Server is not published for {operating_system}.")
|
|
50
|
+
|
|
51
|
+
binary_names = ("hbbs", "hbbr", "rustdesk-utils")
|
|
52
|
+
release_installer_data = _build_release_installer_data(installer_data=installer_data)
|
|
53
|
+
extracted_root, _resolved_version = Installer(installer_data=release_installer_data).binary_download(version=version)
|
|
54
|
+
_ = _resolved_version
|
|
55
|
+
try:
|
|
56
|
+
if not extracted_root.is_dir():
|
|
57
|
+
raise NotADirectoryError(f"Expected an extracted RustDesk Server archive, got {extracted_root}.")
|
|
58
|
+
resolved_binaries = _resolve_release_binaries(
|
|
59
|
+
extracted_root=extracted_root,
|
|
60
|
+
binary_names=binary_names,
|
|
61
|
+
suffix=executable_suffix,
|
|
62
|
+
)
|
|
63
|
+
install_root.mkdir(parents=True, exist_ok=True)
|
|
64
|
+
for binary_path in resolved_binaries.values():
|
|
65
|
+
if platform.system() == "Linux":
|
|
66
|
+
binary_path.chmod(0o755)
|
|
67
|
+
path_core.move(binary_path, folder=install_root, overwrite=True)
|
|
68
|
+
finally:
|
|
69
|
+
delete_path(extracted_root, verbose=False)
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# /// script
|
|
3
|
+
# requires-python = ">=3.13"
|
|
4
|
+
# dependencies = [
|
|
5
|
+
# "playwright>=1.49.0",
|
|
6
|
+
# "rich>=13.9.0",
|
|
7
|
+
# "typer>=0.15.0",
|
|
8
|
+
# ]
|
|
9
|
+
# ///
|
|
10
|
+
|
|
11
|
+
import asyncio
|
|
12
|
+
import random
|
|
13
|
+
import re
|
|
14
|
+
import signal
|
|
15
|
+
import time
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from typing import Annotated
|
|
18
|
+
|
|
19
|
+
import typer
|
|
20
|
+
from playwright.async_api import Locator, Page, TimeoutError as PlaywrightTimeoutError, async_playwright
|
|
21
|
+
from rich.console import Console
|
|
22
|
+
from rich.panel import Panel
|
|
23
|
+
from rich.progress import Progress, SpinnerColumn, TextColumn, TimeElapsedColumn
|
|
24
|
+
from rich.table import Table
|
|
25
|
+
from rich.text import Text
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DEFAULT_QUESTIONS = [
|
|
29
|
+
"What is one practical way to organize my day better?",
|
|
30
|
+
"Explain a useful idea from science in simple terms.",
|
|
31
|
+
"Give me a short writing prompt.",
|
|
32
|
+
"What is a good five-minute habit to build?",
|
|
33
|
+
"Teach me one interesting historical fact.",
|
|
34
|
+
"What is a simple recipe idea using common pantry ingredients?",
|
|
35
|
+
"Give me a small Python exercise for practice.",
|
|
36
|
+
"What is one way to improve focus while working?",
|
|
37
|
+
"Explain a common misconception in technology.",
|
|
38
|
+
"Suggest a quick mental math trick.",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
app = typer.Typer(add_completion=False, help=("Send random local questions to ChatGPT through an existing logged-in Chrome/Chromium CDP session."))
|
|
43
|
+
console = Console()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class StopRequested(Exception):
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
async def find_composer(page: Page) -> Locator:
|
|
51
|
+
candidates = [
|
|
52
|
+
page.get_by_role("textbox", name=re.compile(r"(chat with chatgpt|message)", re.I)).last,
|
|
53
|
+
page.locator('[contenteditable="true"]').last,
|
|
54
|
+
page.locator("textarea").last,
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
last_error: Exception | None = None
|
|
58
|
+
for candidate in candidates:
|
|
59
|
+
try:
|
|
60
|
+
await candidate.wait_for(state="visible", timeout=10_000)
|
|
61
|
+
return candidate
|
|
62
|
+
except Exception as exc: # Playwright has several timeout subclasses.
|
|
63
|
+
last_error = exc
|
|
64
|
+
|
|
65
|
+
login_visible = await page.get_by_role("button", name=re.compile(r"log in|sign in", re.I)).count()
|
|
66
|
+
if login_visible:
|
|
67
|
+
raise RuntimeError("ChatGPT appears to be logged out. Log in in the browser, then rerun.")
|
|
68
|
+
|
|
69
|
+
raise RuntimeError(f"Could not find the ChatGPT message composer: {last_error}")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
async def extract_last_assistant_message(page: Page) -> str:
|
|
73
|
+
text = await page.evaluate(
|
|
74
|
+
"""
|
|
75
|
+
() => {
|
|
76
|
+
const normalize = (value) => (value || "").replace(/\\s+\\n/g, "\\n").trim();
|
|
77
|
+
|
|
78
|
+
const roleMessages = Array.from(
|
|
79
|
+
document.querySelectorAll('[data-message-author-role="assistant"]')
|
|
80
|
+
)
|
|
81
|
+
.map((node) => normalize(node.innerText || node.textContent))
|
|
82
|
+
.filter(Boolean);
|
|
83
|
+
if (roleMessages.length) return roleMessages.at(-1);
|
|
84
|
+
|
|
85
|
+
const articles = Array.from(document.querySelectorAll("article"))
|
|
86
|
+
.map((node) => normalize(node.innerText || node.textContent))
|
|
87
|
+
.filter((value) => value && !/^you\\b/i.test(value));
|
|
88
|
+
return articles.at(-1) || "";
|
|
89
|
+
}
|
|
90
|
+
"""
|
|
91
|
+
)
|
|
92
|
+
return str(text or "").strip()
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
async def is_generating(page: Page) -> bool:
|
|
96
|
+
return bool(
|
|
97
|
+
await page.evaluate(
|
|
98
|
+
"""
|
|
99
|
+
() => {
|
|
100
|
+
const pattern = /stop (generating|answering|streaming)|stop response/i;
|
|
101
|
+
return Array.from(document.querySelectorAll("button")).some((button) => {
|
|
102
|
+
const label = [
|
|
103
|
+
button.innerText,
|
|
104
|
+
button.getAttribute("aria-label"),
|
|
105
|
+
button.getAttribute("title"),
|
|
106
|
+
].filter(Boolean).join(" ");
|
|
107
|
+
return pattern.test(label);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
"""
|
|
111
|
+
)
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
async def wait_for_response(page: Page, *, timeout_seconds: float, poll_seconds: float, stable_seconds: float) -> str:
|
|
116
|
+
deadline = time.monotonic() + timeout_seconds
|
|
117
|
+
last_text = ""
|
|
118
|
+
stable_since = time.monotonic()
|
|
119
|
+
|
|
120
|
+
while time.monotonic() < deadline:
|
|
121
|
+
text = await extract_last_assistant_message(page)
|
|
122
|
+
generating = await is_generating(page)
|
|
123
|
+
|
|
124
|
+
if text and text != last_text:
|
|
125
|
+
last_text = text
|
|
126
|
+
stable_since = time.monotonic()
|
|
127
|
+
elif text and not generating and time.monotonic() - stable_since >= stable_seconds:
|
|
128
|
+
return text
|
|
129
|
+
|
|
130
|
+
await asyncio.sleep(poll_seconds)
|
|
131
|
+
|
|
132
|
+
if last_text:
|
|
133
|
+
return last_text
|
|
134
|
+
raise TimeoutError("Timed out waiting for a ChatGPT response.")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
async def send_question(
|
|
138
|
+
*,
|
|
139
|
+
page: Page,
|
|
140
|
+
question: str,
|
|
141
|
+
chatgpt_url: str,
|
|
142
|
+
pre_submit_wait_seconds: float,
|
|
143
|
+
response_timeout_seconds: float,
|
|
144
|
+
poll_seconds: float,
|
|
145
|
+
stable_seconds: float,
|
|
146
|
+
) -> str:
|
|
147
|
+
await page.goto(chatgpt_url, wait_until="domcontentloaded", timeout=60_000)
|
|
148
|
+
await page.wait_for_load_state("domcontentloaded")
|
|
149
|
+
await asyncio.sleep(pre_submit_wait_seconds)
|
|
150
|
+
|
|
151
|
+
composer = await find_composer(page)
|
|
152
|
+
await composer.click()
|
|
153
|
+
await composer.fill(question)
|
|
154
|
+
await composer.press("Enter")
|
|
155
|
+
|
|
156
|
+
return await wait_for_response(page, timeout_seconds=response_timeout_seconds, poll_seconds=poll_seconds, stable_seconds=stable_seconds)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def load_questions(question_options: list[str] | None, questions_file: Path | None) -> list[str]:
|
|
160
|
+
questions: list[str] = []
|
|
161
|
+
|
|
162
|
+
if question_options:
|
|
163
|
+
questions.extend(q.strip() for q in question_options if q.strip())
|
|
164
|
+
|
|
165
|
+
if questions_file:
|
|
166
|
+
if not questions_file.exists():
|
|
167
|
+
raise typer.BadParameter(f"questions file does not exist: {questions_file}")
|
|
168
|
+
file_questions = [
|
|
169
|
+
line.strip() for line in questions_file.read_text(encoding="utf-8").splitlines() if line.strip() and not line.lstrip().startswith("#")
|
|
170
|
+
]
|
|
171
|
+
questions.extend(file_questions)
|
|
172
|
+
|
|
173
|
+
return questions or list(DEFAULT_QUESTIONS)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def print_cycle(cycle: int, question: str, response: str) -> None:
|
|
177
|
+
table = Table.grid(padding=(0, 1))
|
|
178
|
+
table.add_column(style="bold cyan", no_wrap=True)
|
|
179
|
+
table.add_column()
|
|
180
|
+
table.add_row("Cycle", str(cycle))
|
|
181
|
+
table.add_row("Question", question)
|
|
182
|
+
table.add_row("Response", response)
|
|
183
|
+
console.print(Panel(table, title="ChatGPT response", border_style="green"))
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
async def sleep_with_status(seconds: float, *, cycle: int) -> None:
|
|
187
|
+
if seconds <= 0:
|
|
188
|
+
return
|
|
189
|
+
|
|
190
|
+
with Progress(
|
|
191
|
+
SpinnerColumn(), TextColumn(f"Waiting {seconds:g}s before cycle {cycle + 1}"), TimeElapsedColumn(), transient=True, console=console
|
|
192
|
+
) as progress:
|
|
193
|
+
task = progress.add_task("sleep", total=None)
|
|
194
|
+
end = time.monotonic() + seconds
|
|
195
|
+
while time.monotonic() < end:
|
|
196
|
+
progress.update(task)
|
|
197
|
+
await asyncio.sleep(min(1.0, end - time.monotonic()))
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
async def run_loop(
|
|
201
|
+
*,
|
|
202
|
+
cdp_url: str,
|
|
203
|
+
chatgpt_url: str,
|
|
204
|
+
interval_seconds: float,
|
|
205
|
+
cycles: int | None,
|
|
206
|
+
questions: list[str],
|
|
207
|
+
seed: int | None,
|
|
208
|
+
pre_submit_wait_seconds: float,
|
|
209
|
+
response_timeout_seconds: float,
|
|
210
|
+
poll_seconds: float,
|
|
211
|
+
stable_seconds: float,
|
|
212
|
+
keep_tabs: bool,
|
|
213
|
+
dry_run: bool,
|
|
214
|
+
) -> None:
|
|
215
|
+
rng = random.Random(seed)
|
|
216
|
+
|
|
217
|
+
if dry_run:
|
|
218
|
+
question = rng.choice(questions)
|
|
219
|
+
console.print(Panel(question, title="Dry run question", border_style="yellow"))
|
|
220
|
+
return
|
|
221
|
+
|
|
222
|
+
stop = asyncio.Event()
|
|
223
|
+
|
|
224
|
+
def request_stop(*_: object) -> None:
|
|
225
|
+
stop.set()
|
|
226
|
+
|
|
227
|
+
loop = asyncio.get_running_loop()
|
|
228
|
+
for sig in (signal.SIGINT, signal.SIGTERM):
|
|
229
|
+
try:
|
|
230
|
+
loop.add_signal_handler(sig, request_stop)
|
|
231
|
+
except NotImplementedError:
|
|
232
|
+
pass
|
|
233
|
+
|
|
234
|
+
async with async_playwright() as playwright:
|
|
235
|
+
browser = await playwright.chromium.connect_over_cdp(cdp_url)
|
|
236
|
+
if not browser.contexts:
|
|
237
|
+
raise RuntimeError("Connected to CDP, but no browser contexts were available.")
|
|
238
|
+
|
|
239
|
+
context = browser.contexts[0]
|
|
240
|
+
cycle = 0
|
|
241
|
+
|
|
242
|
+
try:
|
|
243
|
+
while not stop.is_set():
|
|
244
|
+
cycle += 1
|
|
245
|
+
if cycles is not None and cycle > cycles:
|
|
246
|
+
break
|
|
247
|
+
|
|
248
|
+
question = rng.choice(questions)
|
|
249
|
+
page = await context.new_page()
|
|
250
|
+
|
|
251
|
+
try:
|
|
252
|
+
console.print(f"[bold cyan]Cycle {cycle}[/]: opening {chatgpt_url}")
|
|
253
|
+
response = await send_question(
|
|
254
|
+
page=page,
|
|
255
|
+
question=question,
|
|
256
|
+
chatgpt_url=chatgpt_url,
|
|
257
|
+
pre_submit_wait_seconds=pre_submit_wait_seconds,
|
|
258
|
+
response_timeout_seconds=response_timeout_seconds,
|
|
259
|
+
poll_seconds=poll_seconds,
|
|
260
|
+
stable_seconds=stable_seconds,
|
|
261
|
+
)
|
|
262
|
+
print_cycle(cycle, question, response)
|
|
263
|
+
except PlaywrightTimeoutError as exc:
|
|
264
|
+
console.print(Panel(str(exc), title=f"Cycle {cycle} timed out", border_style="red"))
|
|
265
|
+
except Exception as exc:
|
|
266
|
+
console.print(Panel(str(exc), title=f"Cycle {cycle} failed", border_style="red"))
|
|
267
|
+
finally:
|
|
268
|
+
if not keep_tabs:
|
|
269
|
+
await page.close()
|
|
270
|
+
|
|
271
|
+
if cycles is not None and cycle >= cycles:
|
|
272
|
+
break
|
|
273
|
+
|
|
274
|
+
await sleep_with_status(interval_seconds, cycle=cycle)
|
|
275
|
+
finally:
|
|
276
|
+
# The script attaches to an existing browser over CDP. Close per-cycle tabs,
|
|
277
|
+
# but do not intentionally shut down the user's browser process on exit.
|
|
278
|
+
pass
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
@app.command()
|
|
282
|
+
def main(
|
|
283
|
+
cdp_url: Annotated[
|
|
284
|
+
str, typer.Option("--cdp-url", help="Chrome DevTools Protocol endpoint for the already-running browser.")
|
|
285
|
+
] = "http://192.168.0.13:9999",
|
|
286
|
+
chatgpt_url: Annotated[str, typer.Option("--chatgpt-url", help="ChatGPT URL to open in each new tab.")] = "https://chatgpt.com/",
|
|
287
|
+
interval_minutes: Annotated[
|
|
288
|
+
float, typer.Option("--interval-minutes", "-i", min=0.0, help="Minutes to wait between cycles. Default is 10 minutes.")
|
|
289
|
+
] = 10.0,
|
|
290
|
+
cycles: Annotated[int | None, typer.Option("--cycles", "-n", min=1, help="Number of cycles to run. Omit for infinite repeat.")] = None,
|
|
291
|
+
question: Annotated[
|
|
292
|
+
list[str] | None, typer.Option("--question", "-q", help="Question to include in the random pool. Can be passed multiple times.")
|
|
293
|
+
] = None,
|
|
294
|
+
questions_file: Annotated[
|
|
295
|
+
Path | None,
|
|
296
|
+
typer.Option(
|
|
297
|
+
"--questions-file", "-f", exists=False, dir_okay=False, help="Newline-delimited question file. Empty lines and # comments are ignored."
|
|
298
|
+
),
|
|
299
|
+
] = None,
|
|
300
|
+
seed: Annotated[int | None, typer.Option("--seed", help="Random seed for reproducible question selection.")] = None,
|
|
301
|
+
pre_submit_wait_seconds: Annotated[
|
|
302
|
+
float, typer.Option("--pre-submit-wait-seconds", min=0.0, help="Seconds to wait after opening ChatGPT before typing.")
|
|
303
|
+
] = 3.0,
|
|
304
|
+
response_timeout_seconds: Annotated[
|
|
305
|
+
float, typer.Option("--response-timeout-seconds", min=1.0, help="Maximum seconds to wait for a response per cycle.")
|
|
306
|
+
] = 180.0,
|
|
307
|
+
poll_seconds: Annotated[float, typer.Option("--poll-seconds", min=0.25, help="How often to poll the page while waiting for the response.")] = 1.0,
|
|
308
|
+
stable_seconds: Annotated[
|
|
309
|
+
float, typer.Option("--stable-seconds", min=0.5, help="Response text must stay unchanged this long before it is considered done.")
|
|
310
|
+
] = 2.0,
|
|
311
|
+
keep_tabs: Annotated[bool, typer.Option("--keep-tabs/--close-tabs", help="Keep each ChatGPT tab open after a cycle.")] = False,
|
|
312
|
+
dry_run: Annotated[bool, typer.Option("--dry-run", help="Pick and print a question without connecting to the browser.")] = False,
|
|
313
|
+
) -> None:
|
|
314
|
+
"""Open ChatGPT in a new tab, send a random question, print the response, and repeat."""
|
|
315
|
+
|
|
316
|
+
questions = load_questions(question, questions_file)
|
|
317
|
+
interval_seconds = interval_minutes * 60
|
|
318
|
+
|
|
319
|
+
summary = Table.grid(padding=(0, 1))
|
|
320
|
+
summary.add_column(style="bold")
|
|
321
|
+
summary.add_column()
|
|
322
|
+
summary.add_row("CDP URL", cdp_url)
|
|
323
|
+
summary.add_row("ChatGPT URL", chatgpt_url)
|
|
324
|
+
summary.add_row("Interval", f"{interval_minutes:g} minute(s)")
|
|
325
|
+
summary.add_row("Cycles", "infinite" if cycles is None else str(cycles))
|
|
326
|
+
summary.add_row("Question pool", str(len(questions)))
|
|
327
|
+
summary.add_row("Tabs", "keep open" if keep_tabs else "close after each cycle")
|
|
328
|
+
console.print(Panel(summary, title="Configuration", border_style="blue"))
|
|
329
|
+
|
|
330
|
+
try:
|
|
331
|
+
asyncio.run(
|
|
332
|
+
run_loop(
|
|
333
|
+
cdp_url=cdp_url,
|
|
334
|
+
chatgpt_url=chatgpt_url,
|
|
335
|
+
interval_seconds=interval_seconds,
|
|
336
|
+
cycles=cycles,
|
|
337
|
+
questions=questions,
|
|
338
|
+
seed=seed,
|
|
339
|
+
pre_submit_wait_seconds=pre_submit_wait_seconds,
|
|
340
|
+
response_timeout_seconds=response_timeout_seconds,
|
|
341
|
+
poll_seconds=poll_seconds,
|
|
342
|
+
stable_seconds=stable_seconds,
|
|
343
|
+
keep_tabs=keep_tabs,
|
|
344
|
+
dry_run=dry_run,
|
|
345
|
+
)
|
|
346
|
+
)
|
|
347
|
+
except KeyboardInterrupt:
|
|
348
|
+
console.print(Text("Stopped.", style="yellow"))
|
|
349
|
+
except StopRequested:
|
|
350
|
+
console.print(Text("Stopped.", style="yellow"))
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
if __name__ == "__main__":
|
|
354
|
+
app()
|
|
@@ -6,6 +6,8 @@ This script Takes away all config files from the computer, place them in one dir
|
|
|
6
6
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
9
11
|
from stackops.profile.linking.operations import ActionType, OperationRecord, OperationResult
|
|
10
12
|
from rich.console import Console
|
|
11
13
|
from rich.panel import Panel
|
|
@@ -107,7 +109,30 @@ def read_mapper(source: CONFIG_SOURCE_LOOSE) -> MapperFileData:
|
|
|
107
109
|
return {"public": merged_public, "private": merged_private}
|
|
108
110
|
case _:
|
|
109
111
|
raise ValueError(f"Unsupported config source value: {source}")
|
|
110
|
-
|
|
112
|
+
if not mapper_path.exists():
|
|
113
|
+
if source_key == "user":
|
|
114
|
+
raise FileNotFoundError(
|
|
115
|
+
f"User dotfiles mapper does not exist: {mapper_path}\n\n"
|
|
116
|
+
"Create a real mapping interactively:\n"
|
|
117
|
+
" devops config setup dotfiles\n"
|
|
118
|
+
"Or install the example and schema for manual editing:\n"
|
|
119
|
+
" devops config dump --which dotfiles --default-path"
|
|
120
|
+
)
|
|
121
|
+
raise FileNotFoundError(f"Packaged dotfiles mapper does not exist: {mapper_path}")
|
|
122
|
+
if not mapper_path.is_file():
|
|
123
|
+
raise IsADirectoryError(f"Dotfiles mapper path is not a file: {mapper_path}")
|
|
124
|
+
try:
|
|
125
|
+
mapper_data: MapperDocument = load_dotfiles_mapper(mapper_path)
|
|
126
|
+
except (TypeError, ValueError, yaml.YAMLError) as exc:
|
|
127
|
+
if source_key == "user":
|
|
128
|
+
raise ValueError(
|
|
129
|
+
f"User dotfiles mapper is invalid: {mapper_path}\n{exc}\n\n"
|
|
130
|
+
"Open it for correction:\n"
|
|
131
|
+
" devops config edit\n"
|
|
132
|
+
"Create a separate example and schema for reference:\n"
|
|
133
|
+
" devops config dump --which dotfiles"
|
|
134
|
+
) from exc
|
|
135
|
+
raise ValueError(f"Packaged dotfiles mapper is invalid: {mapper_path}\n{exc}") from exc
|
|
111
136
|
public: dict[str, list[ConfigMapper]] = {}
|
|
112
137
|
private: dict[str, list[ConfigMapper]] = {}
|
|
113
138
|
normalized_system = _normalize_os_name(SYSTEM)
|
|
@@ -53,7 +53,10 @@ def main_from_parser(
|
|
|
53
53
|
return merged_mapper
|
|
54
54
|
|
|
55
55
|
source_key = CONFIG_SOURCE_MAP[source]
|
|
56
|
-
|
|
56
|
+
try:
|
|
57
|
+
mapper_full_obj = read_mapper(source=source_key)
|
|
58
|
+
except (OSError, TypeError, ValueError) as exc:
|
|
59
|
+
_exit_with_error(str(exc))
|
|
57
60
|
mapper_full: dict[str, list[ConfigMapper]]
|
|
58
61
|
sensitivity_key = SENSITIVITY_MAP[sensitivity]
|
|
59
62
|
if sensitivity_key == "private":
|
|
@@ -15,6 +15,7 @@ LIBRARY_MAPPER_PATH = get_path_reference_path(
|
|
|
15
15
|
)
|
|
16
16
|
USER_MAPPER_PATH = DOTFILES_USER_MAPPER_PATH
|
|
17
17
|
DEFAULT_DOTFILE_MAPPER_HEADER = (
|
|
18
|
+
f"# yaml-language-server: $schema=./{mapper_assets.MAPPER_DOTFILES_SCHEMA_PATH_REFERENCE}\n"
|
|
18
19
|
"# User-defined config file mappings\n"
|
|
19
20
|
"# Created by `d c` CLI tool\n"
|
|
20
21
|
"# os must be an explicit YAML list containing one or more of: linux, darwin, windows"
|