machineconfig 6.82__py3-none-any.whl → 8.51__py3-none-any.whl
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.
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/run_cluster.py +1 -1
- machineconfig/cluster/remote/run_remote.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
- machineconfig/cluster/sessions_managers/wt_local.py +17 -222
- machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
- machineconfig/jobs/installer/checks/check_installations.py +133 -0
- machineconfig/jobs/installer/checks/install_utils.py +132 -0
- machineconfig/jobs/installer/checks/report_utils.py +39 -0
- machineconfig/jobs/installer/checks/vt_utils.py +89 -0
- machineconfig/jobs/installer/installer_data.json +1500 -310
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +62 -91
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
- machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/python_scripts/hx.py +214 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
- machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
- machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
- machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
- machineconfig/jobs/scripts_dynamic/a.py +428 -0
- machineconfig/logger.py +1 -2
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +79 -21
- machineconfig/profile/create_links_export.py +87 -36
- machineconfig/profile/create_shell_profile.py +92 -127
- machineconfig/profile/mapper_data.toml +45 -0
- machineconfig/profile/mapper_dotfiles.toml +249 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +85 -165
- machineconfig/scripts/python/ai/initai.py +4 -2
- machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
- machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
- machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
- machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
- machineconfig/scripts/python/cloud.py +58 -11
- machineconfig/scripts/python/croshell.py +10 -162
- machineconfig/scripts/python/devops.py +73 -36
- machineconfig/scripts/python/devops_navigator.py +16 -6
- machineconfig/scripts/python/fire_jobs.py +8 -222
- machineconfig/scripts/python/ftpx.py +7 -200
- machineconfig/scripts/python/graph/cli_graph.json +8743 -0
- machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
- machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
- machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
- machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
- machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
- machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
- machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
- machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
- machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
- machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
- machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
- machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
- machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
- machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
- machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
- machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +143 -0
- machineconfig/scripts/python/msearch.py +26 -0
- machineconfig/scripts/python/sessions.py +69 -135
- machineconfig/scripts/python/terminal.py +58 -0
- machineconfig/scripts/python/utils.py +115 -38
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +14 -16
- machineconfig/settings/linters/.ruff.toml +2 -1
- machineconfig/settings/marimo/marimo.toml +1 -1
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +47 -12
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +25 -33
- machineconfig/settings/shells/nushell/env.nu +21 -8
- machineconfig/settings/shells/nushell/init.nu +138 -0
- machineconfig/settings/shells/pwsh/init.ps1 +111 -17
- machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
- machineconfig/settings/shells/wt/settings.json +27 -18
- machineconfig/settings/shells/zsh/init.sh +42 -23
- machineconfig/settings/television/cable_unix/alias.toml +8 -0
- machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
- machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
- machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
- machineconfig/settings/television/cable_unix/channels.toml +19 -0
- machineconfig/settings/television/cable_unix/dirs.toml +13 -0
- machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
- machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
- machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_unix/env.toml +17 -0
- machineconfig/settings/television/cable_unix/files.toml +11 -0
- machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
- machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
- machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
- machineconfig/settings/television/cable_unix/git-log.toml +12 -0
- machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
- machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
- machineconfig/settings/television/cable_unix/guix.toml +20 -0
- machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
- machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
- machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
- machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
- machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
- machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
- machineconfig/settings/television/cable_unix/procs.toml +20 -0
- machineconfig/settings/television/cable_unix/text.toml +17 -0
- machineconfig/settings/television/cable_unix/tldr.toml +18 -0
- machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
- machineconfig/settings/television/cable_windows/alias.toml +7 -0
- machineconfig/settings/television/cable_windows/dirs.toml +13 -0
- machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
- machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_windows/env.toml +17 -0
- machineconfig/settings/television/cable_windows/files.toml +14 -0
- machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
- machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
- machineconfig/settings/television/cable_windows/git-log.toml +11 -0
- machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
- machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
- machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
- machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
- machineconfig/settings/television/cable_windows/text.toml +17 -0
- machineconfig/settings/tv/config.toml +234 -0
- machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
- machineconfig/settings/wsl/.wslconfig +5 -30
- machineconfig/settings/wt/__init__.py +0 -0
- machineconfig/settings/yazi/init.lua +61 -0
- machineconfig/settings/yazi/keymap_linux.toml +94 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +94 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +40 -9
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
- machineconfig/setup_mac/__init__.py +1 -4
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_windows/__init__.py +2 -5
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/type_hinting/sql/__init__.py +1 -0
- machineconfig/type_hinting/sql/base.py +216 -0
- machineconfig/type_hinting/sql/core_schema.py +64 -0
- machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
- machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
- machineconfig/type_hinting/typedict/__init__.py +1 -0
- machineconfig/type_hinting/typedict/ast_utils.py +130 -0
- machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
- machineconfig/type_hinting/typedict/generators.py +231 -0
- machineconfig/type_hinting/typedict/polars_schema.py +24 -0
- machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
- machineconfig/utils/accessories.py +31 -4
- machineconfig/utils/code.py +163 -51
- machineconfig/utils/files/ascii_art.py +11 -15
- machineconfig/utils/files/headers.py +6 -7
- machineconfig/utils/files/read.py +8 -1
- machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
- machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +53 -102
- machineconfig/utils/installer_utils/installer_cli.py +161 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
- machineconfig/utils/io.py +94 -9
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +38 -21
- machineconfig/utils/options.py +81 -23
- machineconfig/utils/options_utils/__init__.py +0 -0
- machineconfig/utils/options_utils/options_tv_linux.py +211 -0
- machineconfig/utils/options_utils/options_tv_windows.py +88 -0
- machineconfig/utils/options_utils/tv_options.py +37 -0
- machineconfig/utils/path_extended.py +52 -102
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +1 -1
- machineconfig/utils/scheduler.py +26 -53
- machineconfig/utils/scheduling.py +0 -2
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/source_of_truth.py +6 -1
- machineconfig/utils/ssh.py +216 -419
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +158 -0
- machineconfig/utils/ssh_utils/wsl.py +147 -0
- machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
- machineconfig/utils/terminal.py +1 -0
- machineconfig/utils/upgrade_packages.py +107 -35
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.51.dist-info/METADATA +140 -0
- machineconfig-8.51.dist-info/RECORD +543 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/jobs/installer/custom/hx.py +0 -140
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -256
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzfag +0 -17
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/fzfrga +0 -21
- machineconfig/scripts/linux/mcfgs +0 -38
- machineconfig/scripts/linux/other/share_smb +0 -1
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
- machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
- machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
- machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
- machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
- machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
- machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
- machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/mcfg.py +0 -48
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
- machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
- machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/mcfgs.ps1 +0 -17
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
- machineconfig/settings/lf/windows/tst.ps1 +0 -1
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig/utils/tst.py +0 -20
- machineconfig-6.82.dist-info/METADATA +0 -82
- machineconfig-6.82.dist-info/RECORD +0 -441
- machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
- machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
- machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
- machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
- machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
import json
|
|
4
|
-
import uuid
|
|
5
3
|
import logging
|
|
6
4
|
import subprocess
|
|
7
5
|
from pathlib import Path
|
|
8
6
|
from typing import Optional, Any
|
|
9
|
-
from rich.console import Console
|
|
7
|
+
# from rich.console import Console
|
|
10
8
|
from machineconfig.utils.scheduler import Scheduler
|
|
11
9
|
from machineconfig.cluster.sessions_managers.wt_local import WTLayoutGenerator
|
|
10
|
+
from machineconfig.cluster.sessions_managers.wt_utils.wt_helpers import check_wt_session_status
|
|
12
11
|
from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
|
|
13
|
-
from machineconfig.cluster.sessions_managers.zellij_utils.monitoring_types import
|
|
14
|
-
|
|
12
|
+
from machineconfig.cluster.sessions_managers.zellij_utils.monitoring_types import StartResult, ActiveSessionInfo
|
|
13
|
+
from machineconfig.cluster.sessions_managers.wt_utils.manager_persistence import (
|
|
14
|
+
generate_session_id, save_json_file, load_json_file, list_saved_sessions_in_dir, delete_session_dir, ensure_session_dir_exists
|
|
15
|
+
)
|
|
16
|
+
from machineconfig.cluster.sessions_managers.wt_utils.status_reporting import (
|
|
17
|
+
print_global_summary, print_session_health_status, print_commands_status, calculate_session_summary, calculate_global_summary_from_status
|
|
15
18
|
)
|
|
16
19
|
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
|
|
20
|
-
logging.basicConfig(level=logging.INFO)
|
|
21
|
-
logger = logging.getLogger(__name__)
|
|
22
|
-
console = Console()
|
|
23
23
|
TMP_SERIALIZATION_DIR = Path.home() / "tmp_results" / "wt_sessions" / "serialized"
|
|
24
24
|
|
|
25
25
|
|
|
@@ -47,8 +47,12 @@ class WTLocalManager:
|
|
|
47
47
|
manager.create_layout_file()
|
|
48
48
|
self.managers.append(manager)
|
|
49
49
|
|
|
50
|
-
logger.info(f"Initialized WTLocalManager with {len(self.managers)} sessions")
|
|
51
50
|
|
|
51
|
+
logging.basicConfig(level=logging.INFO)
|
|
52
|
+
logger = logging.getLogger(__name__)
|
|
53
|
+
# console = Console()
|
|
54
|
+
self.logger = logger
|
|
55
|
+
self.logger.info(f"Initialized WTLocalManager with {len(self.managers)} sessions")
|
|
52
56
|
def get_all_session_names(self) -> list[str]:
|
|
53
57
|
"""Get all managed session names."""
|
|
54
58
|
return [manager.session_name for manager in self.managers]
|
|
@@ -68,19 +72,19 @@ class WTLocalManager:
|
|
|
68
72
|
# Execute the PowerShell script to start Windows Terminal
|
|
69
73
|
cmd = f'powershell -ExecutionPolicy Bypass -File "{script_path}"'
|
|
70
74
|
|
|
71
|
-
logger.info(f"Starting session '{session_name}' with script: {script_path}")
|
|
75
|
+
self.logger.info(f"Starting session '{session_name}' with script: {script_path}")
|
|
72
76
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
|
|
73
77
|
|
|
74
78
|
if result.returncode == 0:
|
|
75
79
|
results[session_name] = {"success": True, "message": f"Session '{session_name}' started successfully"}
|
|
76
|
-
logger.info(f"✅ Session '{session_name}' started successfully")
|
|
80
|
+
self.logger.info(f"✅ Session '{session_name}' started successfully")
|
|
77
81
|
else:
|
|
78
82
|
results[session_name] = {"success": False, "error": result.stderr or result.stdout}
|
|
79
|
-
logger.error(f"❌ Failed to start session '{session_name}': {result.stderr}")
|
|
83
|
+
self.logger.error(f"❌ Failed to start session '{session_name}': {result.stderr}")
|
|
80
84
|
|
|
81
85
|
except Exception as e:
|
|
82
86
|
results[session_name] = {"success": False, "error": str(e)}
|
|
83
|
-
logger.error(f"❌ Exception starting session '{session_name}': {e}")
|
|
87
|
+
self.logger.error(f"❌ Exception starting session '{session_name}': {e}")
|
|
84
88
|
|
|
85
89
|
return results
|
|
86
90
|
|
|
@@ -93,7 +97,7 @@ class WTLocalManager:
|
|
|
93
97
|
# Kill all Windows Terminal processes (Windows Terminal doesn't have session-specific killing)
|
|
94
98
|
cmd = "powershell -Command \"Get-Process -Name 'WindowsTerminal' -ErrorAction SilentlyContinue | Stop-Process -Force\""
|
|
95
99
|
|
|
96
|
-
logger.info(f"Killing Windows Terminal processes for session '{session_name}'")
|
|
100
|
+
self.logger.info(f"Killing Windows Terminal processes for session '{session_name}'")
|
|
97
101
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10)
|
|
98
102
|
|
|
99
103
|
results[session_name] = {"success": result.returncode == 0, "message": "Windows Terminal processes killed" if result.returncode == 0 else result.stderr}
|
|
@@ -129,104 +133,29 @@ class WTLocalManager:
|
|
|
129
133
|
return "\n".join(commands)
|
|
130
134
|
|
|
131
135
|
def check_all_sessions_status(self) -> dict[str, dict[str, Any]]:
|
|
132
|
-
"""Check the status of all sessions and their commands."""
|
|
133
136
|
status_report = {}
|
|
134
|
-
|
|
135
137
|
for manager in self.managers:
|
|
136
138
|
session_name = manager.session_name or "default"
|
|
137
|
-
|
|
138
|
-
# Get session status
|
|
139
|
-
session_status = WTLayoutGenerator.check_wt_session_status(session_name)
|
|
140
|
-
|
|
141
|
-
# Get commands status for this session
|
|
139
|
+
session_status = check_wt_session_status(session_name)
|
|
142
140
|
commands_status = manager.check_all_commands_status()
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
running_count = sum(1 for status in commands_status.values() if status.get("running", False))
|
|
146
|
-
total_count = len(commands_status)
|
|
147
|
-
|
|
148
|
-
status_report[session_name] = {
|
|
149
|
-
"session_status": session_status,
|
|
150
|
-
"commands_status": commands_status,
|
|
151
|
-
"summary": {"total_commands": total_count, "running_commands": running_count, "stopped_commands": total_count - running_count, "session_healthy": session_status.get("session_exists", False)},
|
|
152
|
-
}
|
|
153
|
-
|
|
141
|
+
summary = calculate_session_summary(commands_status, session_status.get("session_exists", False))
|
|
142
|
+
status_report[session_name] = {"session_status": session_status, "commands_status": commands_status, "summary": summary}
|
|
154
143
|
return status_report
|
|
155
144
|
|
|
156
|
-
def get_global_summary(self) ->
|
|
157
|
-
"""Get a global summary across all sessions."""
|
|
145
|
+
def get_global_summary(self) -> dict[str, Any]:
|
|
158
146
|
all_status = self.check_all_sessions_status()
|
|
159
|
-
|
|
160
|
-
total_sessions = len(all_status)
|
|
161
|
-
healthy_sessions = sum(1 for status in all_status.values() if status["summary"]["session_healthy"])
|
|
162
|
-
total_commands = sum(status["summary"]["total_commands"] for status in all_status.values())
|
|
163
|
-
total_running = sum(status["summary"]["running_commands"] for status in all_status.values())
|
|
164
|
-
|
|
165
|
-
return {
|
|
166
|
-
"total_sessions": total_sessions,
|
|
167
|
-
"healthy_sessions": healthy_sessions,
|
|
168
|
-
"unhealthy_sessions": total_sessions - healthy_sessions,
|
|
169
|
-
"total_commands": total_commands,
|
|
170
|
-
"running_commands": total_running,
|
|
171
|
-
"stopped_commands": total_commands - total_running,
|
|
172
|
-
"all_sessions_healthy": healthy_sessions == total_sessions,
|
|
173
|
-
"all_commands_running": total_running == total_commands,
|
|
174
|
-
}
|
|
147
|
+
return calculate_global_summary_from_status(all_status, include_remote_machines=False)
|
|
175
148
|
|
|
176
149
|
def print_status_report(self) -> None:
|
|
177
|
-
"""Print a comprehensive status report for all sessions."""
|
|
178
150
|
all_status = self.check_all_sessions_status()
|
|
179
151
|
global_summary = self.get_global_summary()
|
|
180
|
-
|
|
181
|
-
print("=" * 80)
|
|
182
|
-
print("🖥️ WINDOWS TERMINAL LOCAL MANAGER STATUS REPORT")
|
|
183
|
-
print("=" * 80)
|
|
184
|
-
|
|
185
|
-
# Global summary
|
|
186
|
-
print("🌐 GLOBAL SUMMARY:")
|
|
187
|
-
print(f" Total sessions: {global_summary['total_sessions']}")
|
|
188
|
-
print(f" Healthy sessions: {global_summary['healthy_sessions']}")
|
|
189
|
-
print(f" Total commands: {global_summary['total_commands']}")
|
|
190
|
-
print(f" Running commands: {global_summary['running_commands']}")
|
|
191
|
-
print(f" All healthy: {'✅' if global_summary['all_sessions_healthy'] else '❌'}")
|
|
192
|
-
print()
|
|
193
|
-
|
|
194
|
-
# Per-session details
|
|
152
|
+
print_global_summary(global_summary, "WINDOWS TERMINAL LOCAL MANAGER STATUS REPORT")
|
|
195
153
|
for session_name, status in all_status.items():
|
|
196
|
-
session_status = status["session_status"]
|
|
197
|
-
commands_status = status["commands_status"]
|
|
198
|
-
summary = status["summary"]
|
|
199
|
-
|
|
200
154
|
print(f"🪟 SESSION: {session_name}")
|
|
201
155
|
print("-" * 60)
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if session_status.get("wt_running", False):
|
|
205
|
-
if session_status.get("session_exists", False):
|
|
206
|
-
session_windows = session_status.get("session_windows", [])
|
|
207
|
-
all_windows = session_status.get("all_windows", [])
|
|
208
|
-
print("✅ Windows Terminal is running")
|
|
209
|
-
print(f" Session windows: {len(session_windows)}")
|
|
210
|
-
print(f" Total WT windows: {len(all_windows)}")
|
|
211
|
-
else:
|
|
212
|
-
print("⚠️ Windows Terminal is running but no session windows found")
|
|
213
|
-
else:
|
|
214
|
-
print(f"❌ Windows Terminal session issue: {session_status.get('error', 'Unknown error')}")
|
|
215
|
-
|
|
216
|
-
# Commands in this session
|
|
217
|
-
print(f" Commands ({summary['running_commands']}/{summary['total_commands']} running):")
|
|
218
|
-
for tab_name, cmd_status in commands_status.items():
|
|
219
|
-
status_icon = "✅" if cmd_status.get("running", False) else "❌"
|
|
220
|
-
cmd_text = cmd_status.get("command", "Unknown")[:50]
|
|
221
|
-
if len(cmd_status.get("command", "")) > 50:
|
|
222
|
-
cmd_text += "..."
|
|
223
|
-
console.print(f" {status_icon} {tab_name}: {cmd_text}")
|
|
224
|
-
|
|
225
|
-
if cmd_status.get("processes"):
|
|
226
|
-
for proc in cmd_status["processes"][:2]: # Show first 2 processes
|
|
227
|
-
console.print(f" [dim]└─[/dim] PID {proc['pid']}: {proc['name']}")
|
|
156
|
+
print_session_health_status(status["session_status"], remote_name=None)
|
|
157
|
+
print_commands_status(status["commands_status"], status["summary"])
|
|
228
158
|
print()
|
|
229
|
-
|
|
230
159
|
print("=" * 80)
|
|
231
160
|
|
|
232
161
|
def run_monitoring_routine(self, wait_ms: int = 30000) -> None:
|
|
@@ -283,131 +212,66 @@ class WTLocalManager:
|
|
|
283
212
|
global_summary = self.get_global_summary()
|
|
284
213
|
print(f"📊 Quick Summary: {global_summary['running_commands']}/{global_summary['total_commands']} commands running across {global_summary['healthy_sessions']}/{global_summary['total_sessions']} sessions")
|
|
285
214
|
|
|
286
|
-
logger.info(f"Starting monitoring routine with {wait_ms}ms intervals")
|
|
287
|
-
|
|
215
|
+
self.logger.info(f"Starting monitoring routine with {wait_ms}ms intervals")
|
|
216
|
+
from machineconfig.utils.scheduler import LoggerTemplate
|
|
217
|
+
from typing import cast
|
|
218
|
+
sched = Scheduler(routine=routine, wait_ms=wait_ms, logger=cast(LoggerTemplate, self.logger))
|
|
288
219
|
sched.run(max_cycles=None)
|
|
289
220
|
|
|
290
221
|
def save(self, session_id: Optional[str] = None) -> str:
|
|
291
|
-
"""Save the manager state to disk."""
|
|
292
222
|
if session_id is None:
|
|
293
|
-
session_id =
|
|
294
|
-
|
|
295
|
-
# Create session directory
|
|
223
|
+
session_id = generate_session_id()
|
|
296
224
|
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
297
|
-
session_dir
|
|
298
|
-
|
|
299
|
-
# Save the session2wt_tabs configuration
|
|
300
|
-
config_file = session_dir / "session_layouts.json"
|
|
301
|
-
text = json.dumps(self.session_layouts, indent=2, ensure_ascii=False)
|
|
302
|
-
config_file.write_text(text, encoding="utf-8")
|
|
303
|
-
|
|
304
|
-
# Save metadata
|
|
225
|
+
ensure_session_dir_exists(session_dir)
|
|
226
|
+
save_json_file(session_dir / "session_layouts.json", self.session_layouts, "session layouts")
|
|
305
227
|
metadata = {"session_name_prefix": self.session_name_prefix, "created_at": str(datetime.now()), "num_managers": len(self.managers), "sessions": [item["layoutName"] for item in self.session_layouts], "manager_type": "WTLocalManager"}
|
|
306
|
-
|
|
307
|
-
text = json.dumps(metadata, indent=2, ensure_ascii=False)
|
|
308
|
-
metadata_file.write_text(text, encoding="utf-8")
|
|
309
|
-
|
|
310
|
-
# Save each manager's state
|
|
228
|
+
save_json_file(session_dir / "metadata.json", metadata, "metadata")
|
|
311
229
|
managers_dir = session_dir / "managers"
|
|
312
230
|
managers_dir.mkdir(exist_ok=True)
|
|
313
|
-
|
|
314
231
|
for i, manager in enumerate(self.managers):
|
|
315
232
|
manager_data = {"session_name": manager.session_name, "layout_config": manager.layout_config, "script_path": manager.script_path}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
manager_file.write_text(text, encoding="utf-8")
|
|
319
|
-
|
|
320
|
-
logger.info(f"✅ Saved WTLocalManager session to: {session_dir}")
|
|
233
|
+
save_json_file(managers_dir / f"manager_{i}_{manager.session_name}.json", manager_data, f"manager {i}")
|
|
234
|
+
self.logger.info(f"✅ Saved WTLocalManager session to: {session_dir}")
|
|
321
235
|
return session_id
|
|
322
236
|
|
|
323
|
-
@
|
|
324
|
-
def load(
|
|
325
|
-
"""Load a saved manager state from disk."""
|
|
237
|
+
@staticmethod
|
|
238
|
+
def load(session_id: str) -> "WTLocalManager":
|
|
326
239
|
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
327
|
-
|
|
328
240
|
if not session_dir.exists():
|
|
329
241
|
raise FileNotFoundError(f"Session directory not found: {session_dir}")
|
|
330
|
-
|
|
331
|
-
#
|
|
332
|
-
|
|
333
|
-
if
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
text = config_file.read_text(encoding="utf-8")
|
|
337
|
-
session_layouts = json.loads(text)
|
|
338
|
-
|
|
339
|
-
# Load metadata
|
|
340
|
-
metadata_file = session_dir / "metadata.json"
|
|
341
|
-
session_name_prefix = "LocalWTMgr" # default fallback
|
|
342
|
-
if metadata_file.exists():
|
|
343
|
-
text = metadata_file.read_text(encoding="utf-8")
|
|
344
|
-
metadata = json.loads(text)
|
|
345
|
-
session_name_prefix = metadata.get("session_name_prefix", "LocalWTMgr")
|
|
346
|
-
|
|
347
|
-
# Create new instance
|
|
348
|
-
instance = cls(session_layouts=session_layouts, session_name_prefix=session_name_prefix)
|
|
349
|
-
|
|
350
|
-
# Load saved manager states
|
|
242
|
+
loaded_data = load_json_file(session_dir / "session_layouts.json", "Configuration file")
|
|
243
|
+
session_layouts = loaded_data if isinstance(loaded_data, list) else [] # type: ignore[arg-type]
|
|
244
|
+
metadata_data = load_json_file(session_dir / "metadata.json", "Metadata file") if (session_dir / "metadata.json").exists() else {}
|
|
245
|
+
metadata = metadata_data if isinstance(metadata_data, dict) else {} # type: ignore[arg-type]
|
|
246
|
+
session_name_prefix = metadata.get("session_name_prefix", "LocalWTMgr") # type: ignore[union-attr]
|
|
247
|
+
instance = WTLocalManager(session_layouts=session_layouts, session_name_prefix=session_name_prefix)
|
|
351
248
|
managers_dir = session_dir / "managers"
|
|
352
249
|
if managers_dir.exists():
|
|
353
250
|
instance.managers = []
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
for manager_file in manager_files:
|
|
251
|
+
for manager_file in sorted(managers_dir.glob("manager_*.json")):
|
|
357
252
|
try:
|
|
358
|
-
|
|
359
|
-
manager_data =
|
|
360
|
-
|
|
361
|
-
#
|
|
362
|
-
manager = WTLayoutGenerator(layout_config=manager_data["layout_config"], session_name=manager_data["session_name"])
|
|
363
|
-
manager.script_path = manager_data["script_path"]
|
|
364
|
-
|
|
253
|
+
loaded_manager_data = load_json_file(manager_file, "Manager data")
|
|
254
|
+
manager_data = loaded_manager_data if isinstance(loaded_manager_data, dict) else {} # type: ignore[arg-type]
|
|
255
|
+
manager = WTLayoutGenerator(layout_config=manager_data["layout_config"], session_name=manager_data["session_name"]) # type: ignore[typeddict-item]
|
|
256
|
+
manager.script_path = manager_data["script_path"] # type: ignore[typeddict-item]
|
|
365
257
|
instance.managers.append(manager)
|
|
366
|
-
|
|
367
258
|
except Exception as e:
|
|
368
|
-
logger.warning(f"Failed to load manager from {manager_file}: {e}")
|
|
369
|
-
|
|
370
|
-
logger.info(f"✅ Loaded WTLocalManager session from: {session_dir}")
|
|
259
|
+
instance.logger.warning(f"Failed to load manager from {manager_file}: {e}")
|
|
260
|
+
instance.logger.info(f"✅ Loaded WTLocalManager session from: {session_dir}")
|
|
371
261
|
return instance
|
|
372
262
|
|
|
373
263
|
@staticmethod
|
|
374
264
|
def list_saved_sessions() -> list[str]:
|
|
375
|
-
|
|
376
|
-
if not TMP_SERIALIZATION_DIR.exists():
|
|
377
|
-
return []
|
|
378
|
-
|
|
379
|
-
sessions = []
|
|
380
|
-
for item in TMP_SERIALIZATION_DIR.iterdir():
|
|
381
|
-
if item.is_dir() and (item / "metadata.json").exists():
|
|
382
|
-
sessions.append(item.name)
|
|
383
|
-
|
|
384
|
-
return sorted(sessions)
|
|
265
|
+
return list_saved_sessions_in_dir(TMP_SERIALIZATION_DIR)
|
|
385
266
|
|
|
386
267
|
@staticmethod
|
|
387
268
|
def delete_session(session_id: str) -> bool:
|
|
388
|
-
|
|
389
|
-
session_dir = TMP_SERIALIZATION_DIR / session_id
|
|
390
|
-
|
|
391
|
-
if not session_dir.exists():
|
|
392
|
-
logger.warning(f"Session directory not found: {session_dir}")
|
|
393
|
-
return False
|
|
394
|
-
|
|
395
|
-
try:
|
|
396
|
-
import shutil
|
|
397
|
-
|
|
398
|
-
shutil.rmtree(session_dir)
|
|
399
|
-
logger.info(f"✅ Deleted session: {session_id}")
|
|
400
|
-
return True
|
|
401
|
-
except Exception as e:
|
|
402
|
-
logger.error(f"Failed to delete session {session_id}: {e}")
|
|
403
|
-
return False
|
|
269
|
+
return delete_session_dir(TMP_SERIALIZATION_DIR / session_id, session_id)
|
|
404
270
|
|
|
405
271
|
def list_active_sessions(self) -> list[ActiveSessionInfo]:
|
|
406
|
-
|
|
407
|
-
active_sessions = []
|
|
272
|
+
active_sessions: list[ActiveSessionInfo] = []
|
|
408
273
|
|
|
409
274
|
try:
|
|
410
|
-
# Get all running Windows Terminal processes
|
|
411
275
|
result = subprocess.run(
|
|
412
276
|
["powershell", "-Command", 'Get-Process -Name "WindowsTerminal" -ErrorAction SilentlyContinue | Select-Object Id, ProcessName, StartTime, MainWindowTitle | ConvertTo-Json -Depth 2'], capture_output=True, text=True, timeout=10
|
|
413
277
|
)
|
|
@@ -419,7 +283,6 @@ class WTLocalManager:
|
|
|
419
283
|
if not isinstance(all_processes, list):
|
|
420
284
|
all_processes = [all_processes]
|
|
421
285
|
|
|
422
|
-
# Filter to only our managed sessions
|
|
423
286
|
for manager in self.managers:
|
|
424
287
|
session_name = manager.session_name
|
|
425
288
|
session_windows = []
|
|
@@ -435,12 +298,11 @@ class WTLocalManager:
|
|
|
435
298
|
"is_active": len(session_windows) > 0,
|
|
436
299
|
"tab_count": len(manager.layout_config["layoutTabs"]) if manager.layout_config else 0,
|
|
437
300
|
"tabs": [tab["tabName"] for tab in manager.layout_config["layoutTabs"]] if manager.layout_config else [],
|
|
438
|
-
"windows": session_windows,
|
|
439
301
|
}
|
|
440
302
|
)
|
|
441
303
|
|
|
442
304
|
except Exception as e:
|
|
443
|
-
logger.error(f"Error listing active sessions: {e}")
|
|
305
|
+
self.logger.error(f"Error listing active sessions: {e}")
|
|
444
306
|
|
|
445
307
|
return active_sessions
|
|
446
308
|
|
|
@@ -471,7 +333,7 @@ if __name__ == "__main__":
|
|
|
471
333
|
{
|
|
472
334
|
"layoutName": "DevelopmentEnv",
|
|
473
335
|
"layoutTabs": [
|
|
474
|
-
{"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "
|
|
336
|
+
{"tabName": "🚀Frontend", "startDir": "~/code/myapp/frontend", "command": "bun run dev"},
|
|
475
337
|
{"tabName": "⚙️Backend", "startDir": "~/code/myapp/backend", "command": "python manage.py runserver"},
|
|
476
338
|
{"tabName": "📊Monitor", "startDir": "~", "command": "Get-Process | Sort-Object CPU -Descending | Select-Object -First 10"},
|
|
477
339
|
],
|