machineconfig 5.15__py3-none-any.whl → 7.98__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/__init__.py +0 -28
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/remote/script_execution.py +0 -1
- machineconfig/cluster/sessions_managers/{utils → helpers}/enhanced_command_runner.py +4 -6
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +114 -289
- machineconfig/cluster/sessions_managers/wt_local_manager.py +70 -210
- machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +52 -198
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
- 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_reporter.py +4 -2
- 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 +81 -375
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +25 -170
- machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +16 -12
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
- machineconfig/jobs/{python → installer}/check_installations.py +2 -3
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/hx.py +76 -19
- machineconfig/jobs/installer/custom/yazi.py +119 -0
- machineconfig/jobs/installer/custom_dev/alacritty.py +4 -4
- machineconfig/jobs/installer/custom_dev/brave.py +5 -9
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +4 -1
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +1 -1
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +33 -28
- machineconfig/jobs/installer/custom_dev/sysabc.py +139 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +2 -19
- machineconfig/jobs/installer/custom_dev/winget.py +10 -14
- machineconfig/jobs/installer/installer_data.json +1487 -229
- machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
- machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/nerdfont.sh +5 -17
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -6
- machineconfig/jobs/installer/linux_scripts/redis.sh +6 -17
- machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/wezterm.sh +4 -12
- machineconfig/jobs/installer/package_groups.py +106 -177
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/logger.py +0 -1
- machineconfig/profile/backup.toml +49 -0
- machineconfig/profile/bash_shell_profiles.md +11 -0
- machineconfig/profile/create_helper.py +62 -0
- machineconfig/profile/create_links.py +288 -0
- machineconfig/profile/create_links_export.py +100 -0
- machineconfig/profile/create_shell_profile.py +147 -0
- machineconfig/profile/mapper.toml +263 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +123 -117
- machineconfig/scripts/python/ai/initai.py +3 -28
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/scripts/command_runner.sh +9 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -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 +5 -5
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +5 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/generic.py +28 -5
- machineconfig/scripts/python/ai/utils/generate_files.py +348 -0
- machineconfig/scripts/python/ai/utils/vscode_tasks.py +37 -0
- machineconfig/scripts/python/cloud.py +29 -0
- machineconfig/scripts/python/croshell.py +137 -113
- machineconfig/scripts/python/devops.py +61 -101
- machineconfig/scripts/python/devops_navigator.py +6 -0
- machineconfig/scripts/python/env_manager/__init__.py +1 -0
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
- machineconfig/scripts/python/fire_jobs.py +110 -150
- machineconfig/scripts/python/ftpx.py +51 -24
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/run_py_script.py +79 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers/tmp_py_scripts/a.py +26 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +126 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +41 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +32 -0
- machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +30 -23
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +29 -35
- machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +8 -9
- machineconfig/scripts/python/helpers_devops/cli_config.py +105 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +214 -0
- machineconfig/scripts/python/helpers_devops/cli_repos.py +215 -0
- machineconfig/scripts/python/helpers_devops/cli_self.py +172 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +142 -0
- machineconfig/scripts/python/{share_terminal.py → helpers_devops/cli_share_terminal.py} +45 -35
- machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
- machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
- machineconfig/scripts/python/helpers_devops/devops_status.py +499 -0
- machineconfig/scripts/python/{devops_update_repos.py → helpers_devops/devops_update_repos.py} +68 -49
- machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +3 -3
- machineconfig/scripts/python/helpers_fire_command/__init__.py +0 -0
- machineconfig/scripts/python/helpers_fire_command/f.py +0 -0
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +56 -20
- machineconfig/scripts/python/{fire_jobs_args_helper.py → helpers_fire_command/fire_jobs_args_helper.py} +5 -1
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +121 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py +0 -0
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +3 -3
- machineconfig/scripts/python/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
- machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
- machineconfig/scripts/python/helpers_navigator/command_tree.py +620 -0
- machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
- machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
- machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
- machineconfig/scripts/python/helpers_network/__init__.py +0 -0
- machineconfig/scripts/python/helpers_network/address.py +132 -0
- machineconfig/scripts/python/{devops_add_identity.py → helpers_network/devops_add_identity.py} +0 -2
- machineconfig/scripts/python/helpers_network/devops_add_ssh_key.py +153 -0
- machineconfig/scripts/{linux → python/helpers_network}/mount_nfs +0 -1
- machineconfig/scripts/python/{mount_nfs.py → helpers_network/mount_nfs.py} +3 -3
- machineconfig/scripts/{linux → python/helpers_network}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → helpers_network/mount_ssh.py} +3 -3
- machineconfig/scripts/python/{onetimeshare.py → helpers_network/onetimeshare.py} +0 -1
- machineconfig/scripts/python/helpers_network/ssh_debug_linux.py +391 -0
- machineconfig/scripts/python/helpers_network/ssh_debug_windows.py +338 -0
- machineconfig/scripts/python/{wifi_conn.py → helpers_network/wifi_conn.py} +1 -53
- machineconfig/scripts/python/{wsl_windows_transfer.py → helpers_network/wsl_windows_transfer.py} +5 -4
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +2 -3
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/{repos_helper.py → helpers_repos/entrypoint.py} +9 -17
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +4 -3
- machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{count_lines.py → helpers_repos/repo_analyzer_2.py} +113 -192
- machineconfig/scripts/python/helpers_repos/sync.py +66 -0
- machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
- machineconfig/scripts/python/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +65 -0
- machineconfig/scripts/python/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers_utils/path.py +185 -0
- machineconfig/scripts/python/interactive.py +64 -84
- machineconfig/scripts/python/mcfg_entry.py +58 -0
- machineconfig/scripts/python/msearch.py +71 -0
- machineconfig/scripts/python/sessions.py +119 -45
- machineconfig/scripts/python/terminal.py +133 -0
- machineconfig/scripts/python/utils.py +64 -0
- machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
- machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
- machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
- machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/broot/br.sh +0 -4
- 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 +9 -3
- machineconfig/settings/lf/linux/lfrc +10 -12
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +18 -38
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/pistol/pistol.conf +1 -1
- machineconfig/settings/shells/bash/init.sh +82 -31
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +2 -35
- machineconfig/settings/shells/nushell/env.nu +45 -6
- machineconfig/settings/shells/nushell/init.nu +314 -0
- machineconfig/settings/shells/pwsh/init.ps1 +61 -43
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/svim/linux/init.toml +0 -4
- machineconfig/settings/svim/windows/init.toml +0 -3
- 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/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 +84 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/setup_linux/__init__.py +11 -0
- machineconfig/setup_linux/apps_desktop.sh +89 -0
- machineconfig/setup_linux/apps_gui.sh +64 -0
- machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
- machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
- machineconfig/setup_linux/uv.sh +15 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +26 -6
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +31 -0
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +11 -0
- machineconfig/setup_windows/others/power_options.ps1 +7 -0
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
- machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
- machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
- machineconfig/setup_windows/uv.ps1 +17 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -10
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +30 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/utils/accessories.py +7 -5
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +155 -105
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +1 -1
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +11 -14
- machineconfig/utils/files/ouch/__init__.py +0 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +10 -18
- machineconfig/utils/installer_utils/github_release_bulk.py +156 -119
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +64 -181
- machineconfig/utils/installer_utils/installer_cli.py +175 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +66 -97
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +49 -82
- machineconfig/utils/io.py +77 -23
- machineconfig/utils/links.py +254 -162
- machineconfig/utils/meta.py +256 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +46 -18
- machineconfig/utils/options_tv.py +119 -0
- machineconfig/utils/path_extended.py +48 -101
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +50 -70
- machineconfig/utils/scheduler.py +88 -124
- machineconfig/utils/scheduling.py +0 -3
- 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 +3 -6
- machineconfig/utils/ssh.py +263 -274
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +111 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +302 -0
- machineconfig/utils/ssh_utils/utils.py +142 -0
- machineconfig/utils/ssh_utils/wsl.py +210 -0
- machineconfig/utils/terminal.py +3 -113
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +114 -28
- machineconfig/utils/ve.py +12 -4
- machineconfig-7.98.dist-info/METADATA +132 -0
- machineconfig-7.98.dist-info/RECORD +504 -0
- machineconfig-7.98.dist-info/entry_points.txt +13 -0
- machineconfig/cluster/sessions_managers/ffile.py +0 -4
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -16
- machineconfig/jobs/python/python_ve_symlink.py +0 -37
- machineconfig/jobs/python/vscode/api.py +0 -57
- machineconfig/jobs/python/vscode/sync_code.py +0 -73
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
- machineconfig/jobs/windows/start_terminal.ps1 +0 -6
- machineconfig/jobs/windows/startup_file.cmd +0 -2
- machineconfig/profile/create.py +0 -303
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- machineconfig/scripts/linux/agents +0 -2
- machineconfig/scripts/linux/choose_wezterm_theme +0 -3
- machineconfig/scripts/linux/cloud_copy +0 -2
- machineconfig/scripts/linux/cloud_mount +0 -2
- machineconfig/scripts/linux/cloud_repo_sync +0 -2
- machineconfig/scripts/linux/cloud_sync +0 -2
- machineconfig/scripts/linux/croshell +0 -3
- machineconfig/scripts/linux/devops +0 -2
- machineconfig/scripts/linux/fire +0 -2
- machineconfig/scripts/linux/ftpx +0 -2
- 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/gh_models +0 -2
- machineconfig/scripts/linux/initai +0 -2
- machineconfig/scripts/linux/kill_process +0 -2
- machineconfig/scripts/linux/scheduler +0 -2
- machineconfig/scripts/linux/sessions +0 -2
- machineconfig/scripts/linux/share_smb +0 -1
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/start_slidev +0 -2
- machineconfig/scripts/linux/start_terminals +0 -3
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/wifi_conn +0 -2
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/generate_files.py +0 -83
- machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
- machineconfig/scripts/python/cloud_repo_sync.py +0 -190
- machineconfig/scripts/python/count_lines_frontend.py +0 -16
- machineconfig/scripts/python/devops_add_ssh_key.py +0 -120
- machineconfig/scripts/python/dotfile.py +0 -78
- machineconfig/scripts/python/fire_agents_help_launch.py +0 -120
- machineconfig/scripts/python/fire_agents_helper_types.py +0 -12
- machineconfig/scripts/python/fire_jobs_route_helper.py +0 -65
- machineconfig/scripts/python/get_zellij_cmd.py +0 -15
- machineconfig/scripts/python/gh_models.py +0 -104
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -116
- machineconfig/scripts/python/repos.py +0 -132
- machineconfig/scripts/python/repos_helper_action.py +0 -378
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/t4.py +0 -17
- machineconfig/scripts/windows/agents.ps1 +0 -1
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
- machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
- machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
- machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
- machineconfig/scripts/windows/croshell.ps1 +0 -1
- machineconfig/scripts/windows/devops.ps1 +0 -1
- machineconfig/scripts/windows/dotfile.ps1 +0 -1
- machineconfig/scripts/windows/fire.ps1 +0 -1
- machineconfig/scripts/windows/ftpx.ps1 +0 -1
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/gpt.ps1 +0 -1
- machineconfig/scripts/windows/grep.ps1 +0 -2
- machineconfig/scripts/windows/initai.ps1 +0 -1
- machineconfig/scripts/windows/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/nano.ps1 +0 -3
- machineconfig/scripts/windows/pomodoro.ps1 +0 -1
- machineconfig/scripts/windows/reload_path.ps1 +0 -3
- machineconfig/scripts/windows/scheduler.ps1 +0 -1
- machineconfig/scripts/windows/sessions.ps1 +0 -1
- machineconfig/scripts/windows/snapshot.ps1 +0 -1
- machineconfig/scripts/windows/start_slidev.ps1 +0 -1
- machineconfig/scripts/windows/start_terminals.ps1 +0 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
- machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
- machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
- 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/nix/cli_installation.sh +0 -157
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
- machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
- machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig/utils/installer_utils/installer.py +0 -189
- machineconfig-5.15.dist-info/METADATA +0 -188
- machineconfig-5.15.dist-info/RECORD +0 -415
- machineconfig-5.15.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
- machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
- machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
- machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
- machineconfig/{jobs/python → scripts/python/ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → helpers_agents}/__init__.py +0 -0
- machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_agents/agentic_frameworks/__init__.py} +0 -0
- machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
- machineconfig/scripts/python/{fire_agents_load_balancer.py → helpers_agents/fire_agents_load_balancer.py} +0 -0
- machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_cloud/__init__.py} +0 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_croshell/__init__.py} +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -0
- /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
- /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/__init__.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers_devops/themes/__init__.py} +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_network}/mount_drive +0 -0
- /machineconfig/scripts/python/{mount_nw_drive.py → helpers_network/mount_nw_drive.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_network}/mount_smb +0 -0
- /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
- /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
- /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
- /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- {machineconfig-5.15.dist-info → machineconfig-7.98.dist-info}/WHEEL +0 -0
- {machineconfig-5.15.dist-info → machineconfig-7.98.dist-info}/top_level.txt +0 -0
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import random
|
|
3
|
-
import shlex
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from machineconfig.scripts.python.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def get_gemini_api_keys() -> list[str]:
|
|
9
|
-
from machineconfig.utils.io import read_ini
|
|
10
|
-
|
|
11
|
-
config = read_ini(Path.home().joinpath("dotfiles/creds/llm/gemini/api_keys.ini"))
|
|
12
|
-
res: list[str] = []
|
|
13
|
-
for a_section_name in list(config.sections()):
|
|
14
|
-
a_section = config[a_section_name]
|
|
15
|
-
if "api_key" in a_section:
|
|
16
|
-
api_key = a_section["api_key"].strip()
|
|
17
|
-
if api_key:
|
|
18
|
-
res.append(api_key)
|
|
19
|
-
print(f"Found {len(res)} Gemini API keys configured.")
|
|
20
|
-
return res
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def prep_agent_launch(agents_dir: Path, prompts_material: list[str], prompt_prefix: str, keep_material_in_separate_file: bool, agent: AGENTS, *, job_name: str) -> None:
|
|
24
|
-
agents_dir.mkdir(parents=True, exist_ok=True)
|
|
25
|
-
prompt_folder = agents_dir / "prompts"
|
|
26
|
-
prompt_folder.mkdir(parents=True, exist_ok=True)
|
|
27
|
-
|
|
28
|
-
for idx, a_prompt_material in enumerate(prompts_material):
|
|
29
|
-
prompt_root = prompt_folder / f"agent_{idx}"
|
|
30
|
-
prompt_root.mkdir(parents=True, exist_ok=True)
|
|
31
|
-
prompt_path = prompt_root / f"agent_{idx}_prompt.txt"
|
|
32
|
-
if keep_material_in_separate_file:
|
|
33
|
-
prompt_material_path = prompt_root / f"agent_{idx}_material.txt"
|
|
34
|
-
prompt_material_path.write_text(a_prompt_material, encoding="utf-8")
|
|
35
|
-
prompt_path.write_text(prompt_prefix + f"""\nPlease only look @ {prompt_material_path}. You don't need to do any other work beside the content of this material file.""", encoding="utf-8")
|
|
36
|
-
else:
|
|
37
|
-
prompt_material_path = prompt_path
|
|
38
|
-
prompt_path.write_text(prompt_prefix + """\nPlease only look @ the following:\n""" + a_prompt_material, encoding="utf-8")
|
|
39
|
-
|
|
40
|
-
agent_cmd_launch_path = prompt_root / AGENT_NAME_FORMATTER.format(idx=idx) # e.g., agent_0_cmd.sh
|
|
41
|
-
random_sleep_time = random.uniform(0, 5)
|
|
42
|
-
cmd_prefix = f"""
|
|
43
|
-
#!/usr/bin/env bash
|
|
44
|
-
|
|
45
|
-
# AGENT-{idx}-LAUNCH-SCRIPT
|
|
46
|
-
# Auto-generated by fire_agents.py
|
|
47
|
-
|
|
48
|
-
export FIRE_AGENTS_AGENT_NAME="{agent}"
|
|
49
|
-
export FIRE_AGENTS_JOB_NAME="{job_name}"
|
|
50
|
-
export FIRE_AGENTS_PROMPT_FILE="{prompt_path}"
|
|
51
|
-
export FIRE_AGENTS_MATERIAL_FILE="{prompt_material_path}"
|
|
52
|
-
export FIRE_AGENTS_AGENT_LAUNCHER="{agent_cmd_launch_path}"
|
|
53
|
-
|
|
54
|
-
echo "Sleeping for {random_sleep_time:.2f} seconds to stagger agent startups..."
|
|
55
|
-
sleep {random_sleep_time:.2f}
|
|
56
|
-
echo "Launching agent {agent} with prompt from {prompt_path}"
|
|
57
|
-
echo "Launching agent {agent} with command from {agent_cmd_launch_path}"
|
|
58
|
-
echo "--------START OF AGENT OUTPUT--------"
|
|
59
|
-
sleep 0.1
|
|
60
|
-
|
|
61
|
-
"""
|
|
62
|
-
match agent:
|
|
63
|
-
case "gemini":
|
|
64
|
-
model = "gemini-2.5-pro"
|
|
65
|
-
# model = "gemini-2.5-flash-lite"
|
|
66
|
-
# model = None # auto-select
|
|
67
|
-
# if model is None:
|
|
68
|
-
# model_arg = ""
|
|
69
|
-
# else:
|
|
70
|
-
model_arg = f"--model {shlex.quote(model)}"
|
|
71
|
-
# Need a real shell for the pipeline; otherwise '| gemini ...' is passed as args to 'cat'
|
|
72
|
-
safe_path = shlex.quote(str(prompt_path))
|
|
73
|
-
api_keys = get_gemini_api_keys()
|
|
74
|
-
api_key = api_keys[idx % len(api_keys)] if api_keys else ""
|
|
75
|
-
# Export the environment variable so it's available to subshells
|
|
76
|
-
cmd = f"""
|
|
77
|
-
export GEMINI_API_KEY={shlex.quote(api_key)}
|
|
78
|
-
echo "Using Gemini API key $GEMINI_API_KEY"
|
|
79
|
-
gemini {model_arg} --yolo --prompt {safe_path}
|
|
80
|
-
"""
|
|
81
|
-
case "cursor-agent":
|
|
82
|
-
# As originally implemented
|
|
83
|
-
cmd = f"""
|
|
84
|
-
|
|
85
|
-
cursor-agent --print --output-format text < {prompt_path}
|
|
86
|
-
|
|
87
|
-
"""
|
|
88
|
-
case "crush":
|
|
89
|
-
cmd = f"""
|
|
90
|
-
crush run {prompt_path}
|
|
91
|
-
"""
|
|
92
|
-
case "q":
|
|
93
|
-
cmd = f"""
|
|
94
|
-
q chat --no-interactive --trust-all-tools {prompt_path}
|
|
95
|
-
"""
|
|
96
|
-
case _:
|
|
97
|
-
raise ValueError(f"Unsupported agent type: {agent}")
|
|
98
|
-
cmd_postfix = """
|
|
99
|
-
sleep 0.1
|
|
100
|
-
echo "---------END OF AGENT OUTPUT---------"
|
|
101
|
-
"""
|
|
102
|
-
agent_cmd_launch_path.write_text(cmd_prefix + cmd + cmd_postfix, encoding="utf-8")
|
|
103
|
-
|
|
104
|
-
return None
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def get_agents_launch_layout(session_root: Path):
|
|
108
|
-
from machineconfig.utils.schemas.layouts.layout_types import TabConfig, LayoutConfig, LayoutsFile
|
|
109
|
-
|
|
110
|
-
tab_config: list[TabConfig] = []
|
|
111
|
-
prompt_root = session_root / "prompts"
|
|
112
|
-
all_dirs_under_prompts = [d for d in prompt_root.iterdir() if d.is_dir()]
|
|
113
|
-
for a_prompt_dir in all_dirs_under_prompts:
|
|
114
|
-
idx = a_prompt_dir.name.split("_")[-1] # e.g., agent_0 -> 0
|
|
115
|
-
agent_cmd_path = a_prompt_dir / AGENT_NAME_FORMATTER.format(idx=idx)
|
|
116
|
-
fire_cmd = f"bash {shlex.quote(str(agent_cmd_path))}"
|
|
117
|
-
tab_config.append(TabConfig(tabName=f"Agent{idx}", startDir=str(session_root.parent.parent.parent), command=fire_cmd))
|
|
118
|
-
layout = LayoutConfig(layoutName="Agents", layoutTabs=tab_config)
|
|
119
|
-
layouts_file: LayoutsFile = LayoutsFile(version="1.0", layouts=[layout])
|
|
120
|
-
return layouts_file
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
from typing import Literal, TypeAlias
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
AGENTS: TypeAlias = Literal[
|
|
6
|
-
"cursor-agent", "gemini", "crush", "q"
|
|
7
|
-
# warp terminal
|
|
8
|
-
]
|
|
9
|
-
AGENT_NAME_FORMATTER = "agent_{idx}_cmd.sh" # e.g., agent_0_cmd.sh
|
|
10
|
-
|
|
11
|
-
SEARCH_STRATEGIES: TypeAlias = Literal["file_path", "keyword_search", "filename_pattern"]
|
|
12
|
-
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import platform
|
|
4
|
-
from typing import Optional
|
|
5
|
-
import tomllib
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
from machineconfig.utils.accessories import randstr
|
|
8
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def get_command_streamlit(choice_file: Path, environment: str, repo_root: Optional[Path]) -> str:
|
|
12
|
-
import socket
|
|
13
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
14
|
-
try:
|
|
15
|
-
s.connect(("8.8.8.8", 1))
|
|
16
|
-
local_ip_v4 = s.getsockname()[0]
|
|
17
|
-
except Exception:
|
|
18
|
-
local_ip_v4 = socket.gethostbyname(socket.gethostname())
|
|
19
|
-
finally:
|
|
20
|
-
s.close()
|
|
21
|
-
computer_name = platform.node()
|
|
22
|
-
port = 8501
|
|
23
|
-
toml_path: Optional[Path] = None
|
|
24
|
-
toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
|
|
25
|
-
if toml_path_maybe.exists():
|
|
26
|
-
toml_path = toml_path_maybe
|
|
27
|
-
elif choice_file.parent.name == "pages":
|
|
28
|
-
toml_path_maybe = choice_file.parent.parent.joinpath(".streamlit/config.toml")
|
|
29
|
-
if toml_path_maybe.exists():
|
|
30
|
-
toml_path = toml_path_maybe
|
|
31
|
-
if toml_path is not None:
|
|
32
|
-
print(f"📄 Reading config.toml @ {toml_path}")
|
|
33
|
-
config = tomllib.loads(toml_path.read_text(encoding="utf-8"))
|
|
34
|
-
if "server" in config:
|
|
35
|
-
if "port" in config["server"]:
|
|
36
|
-
port = config["server"]["port"]
|
|
37
|
-
secrets_path = toml_path.with_name("secrets.toml")
|
|
38
|
-
if repo_root is not None:
|
|
39
|
-
secrets_template_path = Path.home().joinpath(f"dotfiles/creds/streamlit/{PathExtended(repo_root).name}/{choice_file.name}/secrets.toml")
|
|
40
|
-
if environment != "" and not secrets_path.exists() and secrets_template_path.exists():
|
|
41
|
-
secrets_template = tomllib.loads(secrets_template_path.read_text(encoding="utf-8"))
|
|
42
|
-
if environment == "ip":
|
|
43
|
-
host_url = f"http://{local_ip_v4}:{port}/oauth2callback"
|
|
44
|
-
elif environment == "localhost":
|
|
45
|
-
host_url = f"http://localhost:{port}/oauth2callback"
|
|
46
|
-
elif environment == "hostname":
|
|
47
|
-
host_url = f"http://{computer_name}:{port}/oauth2callback"
|
|
48
|
-
else:
|
|
49
|
-
host_url = f"http://{environment}:{port}/oauth2callback"
|
|
50
|
-
try:
|
|
51
|
-
secrets_template["auth"]["redirect_uri"] = host_url
|
|
52
|
-
secrets_template["auth"]["cookie_secret"] = randstr(35)
|
|
53
|
-
secrets_template["auth"]["auth0"]["redirect_uri"] = host_url
|
|
54
|
-
# save_toml(obj=secrets_template, path=secrets_path)
|
|
55
|
-
except Exception as ex:
|
|
56
|
-
print(ex)
|
|
57
|
-
raise ex
|
|
58
|
-
message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
|
|
59
|
-
from rich.panel import Panel
|
|
60
|
-
from rich import print as rprint
|
|
61
|
-
|
|
62
|
-
rprint(Panel(message))
|
|
63
|
-
exe = f"streamlit run --server.address 0.0.0.0 --server.headless true --server.port {port}"
|
|
64
|
-
# exe = f"cd '{choice_file.parent}'; " + exe
|
|
65
|
-
return exe
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
def get_zellij_cmd(wd1: Path, wd2: Path) -> str:
|
|
5
|
-
_ = wd1, wd2
|
|
6
|
-
lines = [
|
|
7
|
-
""" zellij action new-tab --name gitdiff""",
|
|
8
|
-
"""zellij action new-pane --direction down --name local --cwd ./data """,
|
|
9
|
-
"""zellij action write-chars "cd '{wd1}'; git status" """,
|
|
10
|
-
"""zellij action move-focus up; zellij action close-pane """,
|
|
11
|
-
"""zellij action new-pane --direction down --name remote --cwd code """,
|
|
12
|
-
"""zellij action write-chars "cd '{wd2}' """,
|
|
13
|
-
"""git status" """,
|
|
14
|
-
]
|
|
15
|
-
return "; ".join(lines)
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# # as per https://github.com/marketplace/models/azure-openai/o1-preview
|
|
2
|
-
# from openai import OpenAI
|
|
3
|
-
# from machineconfig.utils.path_reduced import P as PathExtended
|
|
4
|
-
# from machineconfig.utils.utils2 import read_ini
|
|
5
|
-
# from rich import print as rprint
|
|
6
|
-
# from rich.panel import Panel
|
|
7
|
-
# from typing import Any
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# gh_token = read_ini(PathExtended.home().joinpath("dotfiles/creds/git/git_host_tokens.ini"))['thisismygitrepo']['newLongterm']
|
|
11
|
-
# endpoint = "https://models.inference.ai.azure.com"
|
|
12
|
-
# model_name_preferences = ["o3-mini", "o1-preview", "o1-mini", "GPT-4o", "GPT-4-o-mini"]
|
|
13
|
-
# client__ = OpenAI(
|
|
14
|
-
# base_url=endpoint,
|
|
15
|
-
# api_key=gh_token,
|
|
16
|
-
# )
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# def get_response(client: Any, model_name: str, messages: list[dict[str, str]]):
|
|
20
|
-
# print(f"""
|
|
21
|
-
# ┌────────────────────────────────────────────────────────────────
|
|
22
|
-
# │ 🤖 Querying Model: {model_name}
|
|
23
|
-
# │ Sending request to API...
|
|
24
|
-
# └────────────────────────────────────────────────────────────────""")
|
|
25
|
-
# try:
|
|
26
|
-
# response = client.chat.completions.create(
|
|
27
|
-
# messages=messages,
|
|
28
|
-
# model=model_name
|
|
29
|
-
# )
|
|
30
|
-
# return response.choices
|
|
31
|
-
# except Exception as e:
|
|
32
|
-
# print(f"""
|
|
33
|
-
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
34
|
-
# ┃ ❌ API Error with model {model_name}
|
|
35
|
-
# ┃ {str(e)}
|
|
36
|
-
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
37
|
-
# return None
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
# def interactive_chat():
|
|
41
|
-
# conversation_history = []
|
|
42
|
-
# model_index = 0
|
|
43
|
-
# model_name = model_name_preferences[model_index]
|
|
44
|
-
|
|
45
|
-
# print("""
|
|
46
|
-
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
47
|
-
# ┃ 🚀 Interactive Chat Started
|
|
48
|
-
# ┃ Type your message and press Enter to chat
|
|
49
|
-
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
50
|
-
|
|
51
|
-
# while True:
|
|
52
|
-
# header = f" 🤖 Using Model: {model_name} "
|
|
53
|
-
# print(f"\n{header.center(80, '═')}\n")
|
|
54
|
-
|
|
55
|
-
# while True:
|
|
56
|
-
# try:
|
|
57
|
-
# user_input = input("💬 You: ")
|
|
58
|
-
# conversation_history.append({"role": "user", "content": user_input})
|
|
59
|
-
|
|
60
|
-
# while True:
|
|
61
|
-
# choices = get_response(client__, model_name, conversation_history)
|
|
62
|
-
# if choices is None:
|
|
63
|
-
# model_index += 1
|
|
64
|
-
# model_name = model_name_preferences[model_index % len(model_name_preferences)]
|
|
65
|
-
# print(f"""
|
|
66
|
-
# ┌────────────────────────────────────────────────────────────────
|
|
67
|
-
# │ 🔄 Model Switch
|
|
68
|
-
# │ Now using: {model_name}
|
|
69
|
-
# └────────────────────────────────────────────────────────────────""")
|
|
70
|
-
# continue
|
|
71
|
-
# else:
|
|
72
|
-
# break
|
|
73
|
-
|
|
74
|
-
# for a_choice in choices:
|
|
75
|
-
# response_content = a_choice.message.content
|
|
76
|
-
# print("\n" * 2)
|
|
77
|
-
# try:
|
|
78
|
-
# rprint(Panel(
|
|
79
|
-
# f"{response_content}",
|
|
80
|
-
# title=f"🤖 AI ({model_name})",
|
|
81
|
-
# border_style="blue"
|
|
82
|
-
# ))
|
|
83
|
-
# except Exception:
|
|
84
|
-
# # Fallback if rich formatting fails
|
|
85
|
-
# print(f"""
|
|
86
|
-
# ┌────────────────────────────────────────────────────────────────
|
|
87
|
-
# │ 🤖 AI ({model_name}):
|
|
88
|
-
# │
|
|
89
|
-
# {response_content}
|
|
90
|
-
# └────────────────────────────────────────────────────────────────""")
|
|
91
|
-
|
|
92
|
-
# conversation_history.append({"role": "assistant", "content": response_content})
|
|
93
|
-
# print("\n")
|
|
94
|
-
# except KeyboardInterrupt:
|
|
95
|
-
# print("""
|
|
96
|
-
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
97
|
-
# ┃ 👋 Chat Session Ended
|
|
98
|
-
# ┃ Thank you for using the interactive chat!
|
|
99
|
-
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
100
|
-
# return
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
# if __name__ == "__main__":
|
|
104
|
-
# interactive_chat()
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
2
|
-
from machineconfig.utils.terminal import Response
|
|
3
|
-
from machineconfig.scripts.python.get_zellij_cmd import get_zellij_cmd
|
|
4
|
-
from machineconfig.utils.source_of_truth import CONFIG_PATH, DEFAULTS_PATH
|
|
5
|
-
from machineconfig.utils.io import read_ini
|
|
6
|
-
from machineconfig.utils.code import write_shell_script_to_file
|
|
7
|
-
import platform
|
|
8
|
-
import subprocess
|
|
9
|
-
from rich.console import Console
|
|
10
|
-
from rich.panel import Panel
|
|
11
|
-
|
|
12
|
-
console = Console()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def delete_remote_repo_copy_and_push_local(remote_repo: str, local_repo: str, cloud: str):
|
|
16
|
-
console.print(Panel("🗑️ Deleting remote repo copy and pushing local copy", title="[bold blue]Repo Sync[/bold blue]", border_style="blue"))
|
|
17
|
-
repo_sync_root = PathExtended(remote_repo).expanduser().absolute()
|
|
18
|
-
repo_root_path = PathExtended(local_repo).expanduser().absolute()
|
|
19
|
-
repo_sync_root.delete(sure=True)
|
|
20
|
-
print("🧹 Removed temporary remote copy")
|
|
21
|
-
from git.remote import Remote
|
|
22
|
-
from git.repo import Repo
|
|
23
|
-
|
|
24
|
-
try:
|
|
25
|
-
Remote.remove(Repo(repo_root_path), "originEnc")
|
|
26
|
-
console.print(Panel("🔗 Removed originEnc remote reference", border_style="blue"))
|
|
27
|
-
except Exception:
|
|
28
|
-
pass # type: ignore
|
|
29
|
-
console.print(Panel("📈 Deleting remote repository copy and pushing local changes", width=150, border_style="blue"))
|
|
30
|
-
|
|
31
|
-
repo_root_path.to_cloud(cloud=cloud, zip=True, encrypt=True, rel2home=True, os_specific=False)
|
|
32
|
-
|
|
33
|
-
console.print(Panel("✅ Repository successfully pushed to cloud", title="[bold green]Repo Sync[/bold green]", border_style="green"))
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
# import sys
|
|
37
|
-
# import subprocess
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def get_wt_cmd(wd1: PathExtended, wd2: PathExtended) -> str:
|
|
41
|
-
lines = [
|
|
42
|
-
f"""wt --window 0 new-tab --profile pwsh --title "gitdiff" --tabColor `#3b04d1 --startingDirectory {wd1} ` --colorScheme "Solarized Dark" """,
|
|
43
|
-
f"""split-pane --horizontal --profile pwsh --startingDirectory {wd2} --size 0.5 --colorScheme "Tango Dark" -- pwsh -Interactive """,
|
|
44
|
-
]
|
|
45
|
-
return " `; ".join(lines)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def inspect_repos(repo_local_root: str, repo_remote_root: str):
|
|
49
|
-
console.print(Panel(f"📂 Local: {repo_local_root}\n📂 Remote: {repo_remote_root}", title="[bold blue]🔍 Inspecting Repositories[/bold blue]", border_style="blue"))
|
|
50
|
-
|
|
51
|
-
if platform.system() == "Windows":
|
|
52
|
-
program = get_wt_cmd(wd1=PathExtended(repo_local_root), wd2=PathExtended(repo_local_root))
|
|
53
|
-
write_shell_script_to_file(shell_script=program)
|
|
54
|
-
return None
|
|
55
|
-
elif platform.system() in ["Linux", "Darwin"]:
|
|
56
|
-
program = get_zellij_cmd(wd1=PathExtended(repo_local_root), wd2=PathExtended(repo_remote_root))
|
|
57
|
-
write_shell_script_to_file(shell_script=program)
|
|
58
|
-
return None
|
|
59
|
-
else:
|
|
60
|
-
raise NotImplementedError(f"Platform {platform.system()} not implemented.")
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def fetch_dotfiles():
|
|
64
|
-
console.print(Panel("📁 Fetching Dotfiles", title="[bold blue]Dotfiles[/bold blue]", border_style="blue"))
|
|
65
|
-
|
|
66
|
-
cloud_resolved = read_ini(DEFAULTS_PATH)["general"]["rclone_config_name"]
|
|
67
|
-
console.print(Panel(f"⚠️ Using default cloud: `{cloud_resolved}` from {DEFAULTS_PATH}", width=150, border_style="yellow"))
|
|
68
|
-
|
|
69
|
-
dotfiles_local = PathExtended.home().joinpath("dotfiles")
|
|
70
|
-
CONFIG_PATH.joinpath("remote").mkdir(parents=True, exist_ok=True)
|
|
71
|
-
dotfiles_remote = PathExtended(CONFIG_PATH).joinpath("remote", dotfiles_local.rel2home())
|
|
72
|
-
remote_path = dotfiles_local.get_remote_path(rel2home=True, os_specific=False, root="myhome") + ".zip.enc"
|
|
73
|
-
|
|
74
|
-
console.print(Panel("📥 Downloading dotfiles from cloud...", width=150, border_style="blue"))
|
|
75
|
-
|
|
76
|
-
dotfiles_remote.from_cloud(remotepath=remote_path, cloud=cloud_resolved, unzip=True, decrypt=True, rel2home=True, os_specific=False, pwd=None)
|
|
77
|
-
|
|
78
|
-
console.print(Panel("🗑️ Removing old dotfiles and replacing with cloud version...", width=150, border_style="blue"))
|
|
79
|
-
|
|
80
|
-
dotfiles_local.delete(sure=True)
|
|
81
|
-
dotfiles_remote.move(folder=PathExtended.home())
|
|
82
|
-
script = f"""
|
|
83
|
-
# rm -rf {dotfiles_local}
|
|
84
|
-
# mv {dotfiles_remote} {dotfiles_local}
|
|
85
|
-
"""
|
|
86
|
-
if platform.system() == "Linux":
|
|
87
|
-
script += """
|
|
88
|
-
sudo chmod 600 $HOME/.ssh/*
|
|
89
|
-
sudo chmod 700 $HOME/.ssh
|
|
90
|
-
sudo chmod +x $HOME/dotfiles/scripts/linux -R
|
|
91
|
-
"""
|
|
92
|
-
shell_path = write_shell_script_to_file(shell_script=script)
|
|
93
|
-
completed = subprocess.run(f". {shell_path}", capture_output=True, check=False, text=True, shell=True)
|
|
94
|
-
Response.from_completed_process(completed).capture().print()
|
|
95
|
-
|
|
96
|
-
console.print(Panel("✅ Dotfiles successfully fetched and installed", title="[bold green]Dotfiles[/bold green]", border_style="green"))
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
def check_dotfiles_version_is_beyond(commit_dtm: str, update: bool) -> bool:
|
|
100
|
-
dotfiles_path = str(PathExtended.home().joinpath("dotfiles"))
|
|
101
|
-
from git import Repo
|
|
102
|
-
|
|
103
|
-
repo = Repo(path=dotfiles_path)
|
|
104
|
-
last_commit = repo.head.commit
|
|
105
|
-
dtm = last_commit.committed_datetime
|
|
106
|
-
from datetime import datetime # make it tz unaware
|
|
107
|
-
|
|
108
|
-
dtm = datetime(dtm.year, dtm.month, dtm.day, dtm.hour, dtm.minute, dtm.second)
|
|
109
|
-
res = dtm > datetime.fromisoformat(commit_dtm)
|
|
110
|
-
if res is False and update is True:
|
|
111
|
-
console = Console()
|
|
112
|
-
console.print(Panel(f"🔄 UPDATE REQUIRED | Updating dotfiles because {dtm} < {datetime.fromisoformat(commit_dtm)}", border_style="bold blue", expand=False))
|
|
113
|
-
from machineconfig.scripts.python.cloud_repo_sync import main
|
|
114
|
-
|
|
115
|
-
main(cloud=None, path=dotfiles_path)
|
|
116
|
-
return res
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"""Repos CLI powered by Typer.
|
|
2
|
-
|
|
3
|
-
# TODO use gh api user --jq '.login' to get the username and use it to clone the repos.
|
|
4
|
-
in the event that username@github.com is not mentioned in the remote url.
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
from typing import Annotated, Optional
|
|
10
|
-
import typer
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
app = typer.Typer(help="� Manage development repositories", no_args_is_help=True)
|
|
15
|
-
sync_app = typer.Typer(help="� Manage repository specifications and syncing", no_args_is_help=True)
|
|
16
|
-
app.add_typer(sync_app, name="sync", help="� Sync repositories using saved specs")
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
DirectoryArgument = Annotated[
|
|
20
|
-
Optional[str],
|
|
21
|
-
typer.Argument(help="📁 Folder containing repos or the specs JSON file to use."),
|
|
22
|
-
]
|
|
23
|
-
RecursiveOption = Annotated[
|
|
24
|
-
bool,
|
|
25
|
-
typer.Option("--recursive", "-r", help="🔍 Recurse into nested repositories."),
|
|
26
|
-
]
|
|
27
|
-
NoSyncOption = Annotated[
|
|
28
|
-
bool,
|
|
29
|
-
typer.Option("--no-sync", help="🚫 Disable automatic uv sync after pulls."),
|
|
30
|
-
]
|
|
31
|
-
CloudOption = Annotated[
|
|
32
|
-
Optional[str],
|
|
33
|
-
typer.Option("--cloud", "-c", help="☁️ Upload to or download from this cloud remote."),
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
@app.command()
|
|
39
|
-
def push(directory: DirectoryArgument = None,
|
|
40
|
-
recursive: RecursiveOption = False,
|
|
41
|
-
no_sync: NoSyncOption = False,
|
|
42
|
-
) -> None:
|
|
43
|
-
"""🚀 Push changes across repositories."""
|
|
44
|
-
from machineconfig.scripts.python.repos_helper import git_operations
|
|
45
|
-
git_operations(directory, pull=False, commit=False, push=True, recursive=recursive, no_sync=no_sync)
|
|
46
|
-
@app.command()
|
|
47
|
-
def pull(
|
|
48
|
-
directory: DirectoryArgument = None,
|
|
49
|
-
recursive: RecursiveOption = False,
|
|
50
|
-
no_sync: NoSyncOption = False,
|
|
51
|
-
) -> None:
|
|
52
|
-
"""⬇️ Pull changes across repositories."""
|
|
53
|
-
from machineconfig.scripts.python.repos_helper import git_operations
|
|
54
|
-
git_operations(directory, pull=True, commit=False, push=False, recursive=recursive, no_sync=no_sync)
|
|
55
|
-
@app.command()
|
|
56
|
-
def commit(
|
|
57
|
-
directory: DirectoryArgument = None,
|
|
58
|
-
recursive: RecursiveOption = False,
|
|
59
|
-
no_sync: NoSyncOption = False,
|
|
60
|
-
) -> None:
|
|
61
|
-
"""💾 Commit changes across repositories."""
|
|
62
|
-
from machineconfig.scripts.python.repos_helper import git_operations
|
|
63
|
-
git_operations(directory, pull=False, commit=True, push=False, recursive=recursive, no_sync=no_sync)
|
|
64
|
-
@app.command()
|
|
65
|
-
def all(
|
|
66
|
-
directory: DirectoryArgument = None,
|
|
67
|
-
recursive: RecursiveOption = False,
|
|
68
|
-
no_sync: NoSyncOption = False,
|
|
69
|
-
) -> None:
|
|
70
|
-
"""🔄 Pull, commit, and push changes across repositories."""
|
|
71
|
-
from machineconfig.scripts.python.repos_helper import git_operations
|
|
72
|
-
git_operations(directory, pull=True, commit=True, push=True, recursive=recursive, no_sync=no_sync)
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
@sync_app.command()
|
|
76
|
-
def capture(
|
|
77
|
-
directory: DirectoryArgument = None,
|
|
78
|
-
cloud: CloudOption = None,
|
|
79
|
-
) -> None:
|
|
80
|
-
"""📝 Record repositories into a repos.json specification."""
|
|
81
|
-
from machineconfig.scripts.python.repos_helper import print_banner, resolve_directory
|
|
82
|
-
print_banner()
|
|
83
|
-
repos_root = resolve_directory(directory)
|
|
84
|
-
from machineconfig.scripts.python.repos_helper_record import main as record_repos
|
|
85
|
-
save_path = record_repos(repos_root=repos_root)
|
|
86
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
87
|
-
if cloud is not None:
|
|
88
|
-
PathExtended(save_path).to_cloud(rel2home=True, cloud=cloud)
|
|
89
|
-
@sync_app.command()
|
|
90
|
-
def clone(
|
|
91
|
-
directory: DirectoryArgument = None,
|
|
92
|
-
cloud: CloudOption = None,
|
|
93
|
-
) -> None:
|
|
94
|
-
"""📥 Clone repositories described by a repos.json specification."""
|
|
95
|
-
from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
|
|
96
|
-
print_banner()
|
|
97
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=False)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
@sync_app.command(name="checkout-to-commit")
|
|
101
|
-
def checkout_command(
|
|
102
|
-
directory: DirectoryArgument = None,
|
|
103
|
-
cloud: CloudOption = None,
|
|
104
|
-
) -> None:
|
|
105
|
-
"""🔀 Check out specific commits listed in the specification."""
|
|
106
|
-
from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
|
|
107
|
-
print_banner()
|
|
108
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=False, checkout_commit_flag=True)
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
@sync_app.command(name="checkout-to-branch")
|
|
112
|
-
def checkout_to_branch_command(
|
|
113
|
-
directory: DirectoryArgument = None,
|
|
114
|
-
cloud: CloudOption = None,
|
|
115
|
-
) -> None:
|
|
116
|
-
"""🔀 Check out to the main branch defined in the specification."""
|
|
117
|
-
from machineconfig.scripts.python.repos_helper import print_banner, clone_from_specs
|
|
118
|
-
print_banner()
|
|
119
|
-
clone_from_specs(directory, cloud, checkout_branch_flag=True, checkout_commit_flag=False)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
@app.command()
|
|
123
|
-
def analyze(
|
|
124
|
-
directory: DirectoryArgument = None,
|
|
125
|
-
) -> None:
|
|
126
|
-
"""📊 Analyze repository development over time."""
|
|
127
|
-
from machineconfig.scripts.python.repos_helper import print_banner
|
|
128
|
-
print_banner()
|
|
129
|
-
repo_path = directory if directory is not None else "."
|
|
130
|
-
from machineconfig.scripts.python.count_lines_frontend import analyze_repo_development
|
|
131
|
-
analyze_repo_development(repo_path=repo_path)
|
|
132
|
-
|