machineconfig 6.23__py3-none-any.whl → 8.12__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.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- 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/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 +16 -221
- machineconfig/cluster/sessions_managers/wt_local_manager.py +55 -193
- 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 +3 -3
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +5 -3
- machineconfig/cluster/sessions_managers/zellij_remote.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +2 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -7
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_with_panes.py +1 -1
- machineconfig/jobs/installer/check_installations.py +0 -1
- machineconfig/jobs/installer/installer_data.json +1408 -201
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +63 -92
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/python_scripts/boxes.py +61 -0
- 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 +4 -1
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/{custom → python_scripts}/hx.py +75 -18
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +27 -22
- machineconfig/jobs/installer/python_scripts/sysabc.py +139 -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 +121 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- 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 +25 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +2 -1
- machineconfig/profile/create_links_export.py +64 -18
- machineconfig/profile/create_shell_profile.py +90 -132
- machineconfig/profile/mapper.toml +18 -8
- 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 +82 -60
- machineconfig/scripts/python/ai/initai.py +1 -19
- 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.sh +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 +5 -5
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/generic.py +1 -1
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +7 -2
- machineconfig/scripts/python/cloud.py +14 -9
- machineconfig/scripts/python/croshell.py +135 -117
- machineconfig/scripts/python/devops.py +48 -25
- machineconfig/scripts/python/devops_navigator.py +1 -5
- machineconfig/scripts/python/env_manager/env_manager_tui.py +204 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +18 -9
- machineconfig/scripts/python/fire_jobs.py +127 -118
- machineconfig/scripts/python/ftpx.py +44 -17
- 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/symantic_search.py +25 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- 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_fire → helpers_agents}/fire_agents_help_launch.py +37 -15
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +41 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_copy.py +28 -21
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_mount.py +19 -17
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_sync.py +12 -11
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/start_slidev.py +6 -7
- 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 +221 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/cli_repos.py +60 -36
- 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/{devops_helpers/cli_terminal.py → helpers_devops/cli_share_terminal.py} +15 -17
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_backup_retrieve.py +7 -10
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_status.py +7 -19
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/helpers_devops/run_script.py +168 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_wezterm_theme.py +1 -1
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +2 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +26 -16
- 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/{helper_navigator → helpers_navigator}/command_builder.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_detail.py +1 -1
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/command_tree.py +160 -23
- machineconfig/scripts/python/{helper_navigator → helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers_network/address.py +176 -0
- machineconfig/scripts/python/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/{nw → helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers_network}/mount_ssh.py +1 -1
- machineconfig/scripts/python/{nw/devops_add_identity.py → helpers_network/ssh_add_identity.py} +35 -1
- machineconfig/scripts/python/{nw/devops_add_ssh_key.py → helpers_network/ssh_add_ssh_key.py} +26 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_linux.py +7 -7
- machineconfig/scripts/python/{nw → helpers_network}/ssh_debug_windows.py +4 -4
- machineconfig/scripts/python/{nw → helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +80 -37
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/entrypoint.py +5 -5
- machineconfig/scripts/python/helpers_repos/grource.py +2 -2
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/record.py +3 -2
- machineconfig/scripts/python/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{repos_helpers/count_lines.py → helpers_repos/repo_analyzer_2.py} +113 -192
- machineconfig/scripts/python/{repos_helpers → helpers_repos}/sync.py +5 -5
- machineconfig/scripts/python/{sessions_helpers → helpers_sessions}/sessions_multiprocess.py +19 -13
- machineconfig/scripts/python/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers_utils/python.py +187 -0
- machineconfig/scripts/python/interactive.py +26 -35
- machineconfig/scripts/python/{entry.py → mcfg_entry.py} +24 -10
- machineconfig/scripts/python/msearch.py +72 -0
- machineconfig/scripts/python/sessions.py +101 -38
- machineconfig/scripts/python/terminal.py +136 -0
- machineconfig/scripts/python/utils.py +62 -0
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -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/linux/lfrc +10 -11
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +15 -17
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/shells/bash/init.sh +57 -10
- 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 +59 -23
- 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/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/settings/zellij/layouts/st.kdl +39 -8
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -11
- 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 +3 -5
- machineconfig/setup_windows/ssh/openssh-server.ps1 +1 -1
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +26 -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/code.py +143 -167
- 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/headers.py +6 -11
- machineconfig/utils/files/read.py +3 -9
- 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 +44 -101
- 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} +39 -87
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +17 -63
- machineconfig/utils/io.py +77 -4
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +235 -145
- machineconfig/utils/options.py +46 -18
- machineconfig/utils/options_tv.py +119 -0
- machineconfig/utils/path_extended.py +46 -97
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +10 -23
- machineconfig/utils/scheduler.py +84 -115
- 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/ssh.py +214 -476
- 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 +303 -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/upgrade_packages.py +114 -28
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.12.dist-info/METADATA +132 -0
- machineconfig-8.12.dist-info/RECORD +504 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/entry_points.txt +5 -1
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- 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/windows/archive/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +0 -14
- 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/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/devops_helpers/cli_config.py +0 -81
- machineconfig/scripts/python/devops_helpers/cli_config_dotfile.py +0 -84
- machineconfig/scripts/python/devops_helpers/cli_data.py +0 -18
- machineconfig/scripts/python/devops_helpers/cli_nw.py +0 -73
- machineconfig/scripts/python/devops_helpers/cli_self.py +0 -117
- machineconfig/scripts/python/devops_helpers/cli_share_server.py +0 -104
- machineconfig/scripts/python/helper_navigator/__init__.py +0 -20
- 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/fire_agents_helper_types.py +0 -30
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/python/repos_helpers/action.py +0 -378
- machineconfig/scripts/python/repos_helpers/count_lines_frontend.py +0 -17
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- 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/shells/pwsh/profile.ps1 +0 -0
- machineconfig/settings/yazi/keymap.toml +0 -0
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/nix/cli_installation.sh +0 -137
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/wt_and_pwsh/__init__.py +0 -0
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig-6.23.dist-info/METADATA +0 -84
- machineconfig-6.23.dist-info/RECORD +0 -428
- machineconfig/cluster/sessions_managers/{utils → helpers}/load_balancer_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_helper_restart.py +0 -0
- machineconfig/cluster/sessions_managers/{helpers → zellij_utils}/zellij_local_manager_helper.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +0 -0
- machineconfig/jobs/installer/{custom_dev → 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/web_shortcuts → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{linux/msc → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/mint_keyboard_shortcuts.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/{jobs/python → scripts/python/ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{croshell_helpers → helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{devops_helpers → helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{cloud_helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{devops_helpers/themes → helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/scheduler.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{croshell_helpers → helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{helpers_fire → helpers_devops}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_fire/agentic_frameworks → helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{devops_helpers → helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_fire_command/f.py} +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/data_models.py +0 -0
- /machineconfig/scripts/python/{helper_navigator → helpers_navigator}/search_bar.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers_network}/__init__.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{repos_helpers → helpers_repos}/update.py +0 -0
- /machineconfig/scripts/python/{nw → helpers_sessions}/__init__.py +0 -0
- /machineconfig/{scripts/python/sessions_helpers → settings/wt}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/WHEEL +0 -0
- {machineconfig-6.23.dist-info → machineconfig-8.12.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
wrap_in_shell_script() {
|
|
5
|
+
# set -euo pipefail
|
|
6
|
+
# ANSI color/style codes
|
|
7
|
+
# BOLD="\033[1m"
|
|
8
|
+
# RESET="\033[0m"
|
|
9
|
+
# GREEN="\033[32m"
|
|
10
|
+
# YELLOW="\033[33m"
|
|
11
|
+
# BLUE="\033[34m"
|
|
12
|
+
# RED="\033[31m"
|
|
13
|
+
|
|
14
|
+
local command="$1"
|
|
15
|
+
shift
|
|
16
|
+
local RANDOM_NAME=$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 12)
|
|
17
|
+
local OP_DIR="$HOME/tmp_results/tmp_scripts/machineconfig"
|
|
18
|
+
local OP_PROGRAM_PATH="$OP_DIR/${RANDOM_NAME}.sh"
|
|
19
|
+
export OP_PROGRAM_PATH
|
|
20
|
+
# local timestamp=$(date -u +"%Y-%m-%d %H:%M:%SZ")
|
|
21
|
+
# printf "%b\n" "${BOLD}${BLUE}🛠️ machineconfig — running ${command}${RESET}"
|
|
22
|
+
# printf "%b\n" "${BLUE}Timestamp:${RESET} ${timestamp}"
|
|
23
|
+
# printf "%b\n" "${BLUE}Op program path:${RESET} ${OP_PROGRAM_PATH}"
|
|
24
|
+
# Forward arguments to the command
|
|
25
|
+
"$command" "$@"
|
|
26
|
+
if [[ -f "$OP_PROGRAM_PATH" ]]; then
|
|
27
|
+
printf "%b\n" "🚀 Taking over from python script @ ${OP_PROGRAM_PATH}${RESET}"
|
|
28
|
+
bat --style=full --theme=OneHalfDark --paging=never "$OP_PROGRAM_PATH"
|
|
29
|
+
# printf "%b\n" "${GREEN}▶ Running...${RESET}"
|
|
30
|
+
. "$OP_PROGRAM_PATH"
|
|
31
|
+
status=$?
|
|
32
|
+
# if [[ $status -eq 0 ]]; then
|
|
33
|
+
# printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
|
|
34
|
+
# else
|
|
35
|
+
# printf "%b\n" "${YELLOW}⚠️ Program exited with status ${status}${RESET}"
|
|
36
|
+
# fi
|
|
37
|
+
else
|
|
38
|
+
echo " "
|
|
39
|
+
# printf "%b\n" "${GREEN}✅ '${command}' execution completed.${RESET}"
|
|
40
|
+
fi
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if [[ $# -gt 0 ]]; then
|
|
44
|
+
wrap_in_shell_script "$@"
|
|
45
|
+
fi
|
|
46
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env nu
|
|
2
|
+
|
|
3
|
+
def wrap-in-shell-script [command: string ...args: string] -> nothing {
|
|
4
|
+
# ANSI color/style codes
|
|
5
|
+
let bold = (char ansi_reset | str append "\e[1m")
|
|
6
|
+
let reset = "\e[0m"
|
|
7
|
+
let green = "\e[32m"
|
|
8
|
+
let yellow = "\e[33m"
|
|
9
|
+
let blue = "\e[34m"
|
|
10
|
+
let red = "\e[31m"
|
|
11
|
+
|
|
12
|
+
let random_name = (date now | format date "%s%N" | sha256sum | str substring 0..16)
|
|
13
|
+
let op_dir = $"($env.HOME)/tmp_results/tmp_scripts/machineconfig"
|
|
14
|
+
let op_program_path = $"($op_dir)/($random_name).sh"
|
|
15
|
+
|
|
16
|
+
$env.OP_PROGRAM_PATH = $op_program_path
|
|
17
|
+
|
|
18
|
+
let timestamp = (date now --utc | format date "%Y-%m-%d %H:%M:%SZ")
|
|
19
|
+
|
|
20
|
+
print $"($bold)($blue)🛠️ machineconfig — running ($command)($reset)"
|
|
21
|
+
print $"($blue)Timestamp:($reset) ($timestamp)"
|
|
22
|
+
print $"($blue)Op program path:($reset) ($op_program_path)"
|
|
23
|
+
|
|
24
|
+
# Forward arguments to the command
|
|
25
|
+
let result = (
|
|
26
|
+
try {
|
|
27
|
+
nu -c $"($command) ($args | str join ' ')"
|
|
28
|
+
} catch {
|
|
29
|
+
$"Error running command: ($in)"
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if ($op_program_path | path exists) {
|
|
34
|
+
print $"($green)🚀 Taking over from python script @ ($op_program_path)($reset)"
|
|
35
|
+
|
|
36
|
+
if (which bat | is-empty | not) {
|
|
37
|
+
bat --style=plain --paging=never $op_program_path
|
|
38
|
+
} else {
|
|
39
|
+
open $op_program_path
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
print $"($green)▶ Running...($reset)"
|
|
43
|
+
|
|
44
|
+
let status = (
|
|
45
|
+
try {
|
|
46
|
+
bash $op_program_path
|
|
47
|
+
0
|
|
48
|
+
} catch {
|
|
49
|
+
1
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
if ($status == 0) {
|
|
54
|
+
print $"($green)✅ '($command)' execution completed.($reset)"
|
|
55
|
+
} else {
|
|
56
|
+
print $"($yellow)⚠️ Program exited with status ($status)($reset)"
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
print $"($green)✅ '($command)' execution completed.($reset)"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
def main [] {
|
|
64
|
+
if ($nu.env.args | length) > 0 {
|
|
65
|
+
wrap-in-shell-script ...$nu.env.args
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
main
|
|
@@ -2,33 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from pathlib import Path
|
|
6
5
|
from typing import cast, Optional, get_args, Annotated
|
|
7
6
|
import typer
|
|
8
|
-
from machineconfig.scripts.python.
|
|
7
|
+
from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, HOST, PROVIDER
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
def
|
|
10
|
+
def agents_create(
|
|
12
11
|
agent: Annotated[AGENTS, typer.Option(..., "--agents", "-a", help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}")],
|
|
13
12
|
host: Annotated[HOST, typer.Option(..., "--host", "-h", help=f"Machine to run agents on. One of {', '.join(get_args(HOST))}")],
|
|
14
|
-
model: Annotated[
|
|
13
|
+
model: Annotated[str, typer.Option(..., "--model", "-m", help="Model to use (for crush agent).")],
|
|
15
14
|
provider: Annotated[PROVIDER, typer.Option(..., "--provider", "-p", help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER)[:3])}")],
|
|
16
|
-
context_path: Annotated[Optional[
|
|
15
|
+
context_path: Annotated[Optional[str], typer.Option(..., "--context-path", "-c", help="Path to the context file/folder, defaults to .ai/todo/")] = None,
|
|
17
16
|
separator: Annotated[str, typer.Option(..., "--separator", "-s", help="Separator for context")] = "\n",
|
|
18
17
|
agent_load: Annotated[int, typer.Option(..., "--agent-load", "-al", help="Number of tasks per prompt")] = 13,
|
|
19
18
|
prompt: Annotated[Optional[str], typer.Option(..., "--prompt", "-P", help="Prompt prefix as string")] = None,
|
|
20
|
-
prompt_path: Annotated[Optional[
|
|
19
|
+
prompt_path: Annotated[Optional[str], typer.Option(..., "--prompt-path", "-pp", help="Path to prompt file")] = None,
|
|
21
20
|
job_name: Annotated[str, typer.Option(..., "--job-name", "-j", help="Job name")] = "AI_Agents",
|
|
22
21
|
separate: Annotated[bool, typer.Option(..., "--separate", "-S", help="Keep prompt material in separate file to the context.")] = True,
|
|
23
|
-
output_path: Annotated[Optional[
|
|
24
|
-
agents_dir: Annotated[Optional[
|
|
22
|
+
output_path: Annotated[Optional[str], typer.Option(..., "--output-path", "-o", help="Path to write the layout.json file")] = None,
|
|
23
|
+
agents_dir: Annotated[Optional[str], typer.Option(..., "--agents-dir", "-ad", help="Directory to store agent files. If not provided, will be constructed automatically.")] = None,
|
|
25
24
|
):
|
|
26
25
|
|
|
27
|
-
from machineconfig.scripts.python.
|
|
28
|
-
from machineconfig.scripts.python.
|
|
26
|
+
from machineconfig.scripts.python.helpers_agents.fire_agents_help_launch import prep_agent_launch, get_agents_launch_layout
|
|
27
|
+
from machineconfig.scripts.python.helpers_agents.fire_agents_load_balancer import chunk_prompts
|
|
29
28
|
from machineconfig.utils.accessories import get_repo_root, randstr
|
|
30
29
|
import json
|
|
31
|
-
|
|
30
|
+
from pathlib import Path
|
|
32
31
|
# validate mutual exclusive
|
|
33
32
|
prompt_options = [prompt, prompt_path]
|
|
34
33
|
provided_prompt = [opt for opt in prompt_options if opt is not None]
|
|
@@ -39,12 +38,13 @@ def create(
|
|
|
39
38
|
if repo_root is None:
|
|
40
39
|
typer.echo("💥 Could not determine the repository root. Please run this script from within a git repository.")
|
|
41
40
|
raise typer.Exit(1)
|
|
41
|
+
return
|
|
42
42
|
typer.echo(f"Operating @ {repo_root}")
|
|
43
43
|
|
|
44
44
|
if context_path is None:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
context_path_resolved = Path(repo_root) / ".ai" / "todo"
|
|
46
|
+
else: context_path_resolved = Path(context_path).expanduser().resolve()
|
|
47
|
+
|
|
48
48
|
if not context_path_resolved.exists():
|
|
49
49
|
raise typer.BadParameter(f"Path does not exist: {context_path_resolved}")
|
|
50
50
|
|
|
@@ -60,36 +60,37 @@ def create(
|
|
|
60
60
|
raise typer.BadParameter(f"Path is neither file nor directory: {context_path_resolved}")
|
|
61
61
|
|
|
62
62
|
if prompt_path is not None:
|
|
63
|
-
prompt_prefix = prompt_path.read_text(encoding="utf-8")
|
|
63
|
+
prompt_prefix = Path(prompt_path).read_text(encoding="utf-8")
|
|
64
64
|
else:
|
|
65
65
|
prompt_prefix = cast(str, prompt)
|
|
66
66
|
agent_selected = agent
|
|
67
|
-
if agents_dir is None:
|
|
67
|
+
if agents_dir is None: agents_dir_obj = Path(repo_root) / ".ai" / f"tmp_prompts/{job_name}_{randstr()}"
|
|
68
68
|
else:
|
|
69
69
|
import shutil
|
|
70
|
-
if agents_dir.exists():
|
|
70
|
+
if Path(agents_dir).exists():
|
|
71
71
|
shutil.rmtree(agents_dir)
|
|
72
|
-
|
|
72
|
+
agents_dir_obj = Path(agents_dir)
|
|
73
|
+
prep_agent_launch(repo_root=repo_root, agents_dir=agents_dir_obj, prompts_material=prompt_material_re_splitted,
|
|
73
74
|
keep_material_in_separate_file=separate,
|
|
74
75
|
prompt_prefix=prompt_prefix, machine=host, agent=agent_selected, model=model, provider=provider,
|
|
75
76
|
job_name=job_name)
|
|
76
|
-
layoutfile = get_agents_launch_layout(session_root=
|
|
77
|
-
|
|
78
|
-
#!/usr/bin/env uv run --python 3.14 --with machineconfig
|
|
79
|
-
agents create "{context_path_resolved}" \\
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
"""
|
|
88
|
-
|
|
89
|
-
layout_output_path = output_path if output_path is not None else
|
|
77
|
+
layoutfile = get_agents_launch_layout(session_root=agents_dir_obj)
|
|
78
|
+
# regenerate_py_code = f"""
|
|
79
|
+
# #!/usr/bin/env uv run --python 3.14 --with machineconfig
|
|
80
|
+
# agents create "{context_path_resolved}" \\
|
|
81
|
+
# --prompt-path "{prompt_path or ''}" \\
|
|
82
|
+
# --agent "{agent_selected}" \\
|
|
83
|
+
# --host "{host}" \\
|
|
84
|
+
# --job-name "{job_name}" \\
|
|
85
|
+
# --agent_load {agent_load} \\
|
|
86
|
+
# --separator "{separator}" \\
|
|
87
|
+
# {"--separate" if separate else ""}
|
|
88
|
+
# """
|
|
89
|
+
# (agents_dir_obj / "aa_agents_relaunch.sh").write_text(data=regenerate_py_code, encoding="utf-8")
|
|
90
|
+
layout_output_path = Path(output_path) if output_path is not None else agents_dir_obj / "layout.json"
|
|
90
91
|
layout_output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
91
92
|
layout_output_path.write_text(data=json.dumps(layoutfile, indent=4), encoding="utf-8")
|
|
92
|
-
typer.echo(f"Created agents in {
|
|
93
|
+
typer.echo(f"Created agents in {agents_dir_obj}")
|
|
93
94
|
typer.echo(f"Ceated layout in {layout_output_path}")
|
|
94
95
|
|
|
95
96
|
|
|
@@ -99,6 +100,7 @@ def collect(
|
|
|
99
100
|
separator: Annotated[str, typer.Option(..., help="Separator to use when concatenating material files")] = "\n",
|
|
100
101
|
) -> None:
|
|
101
102
|
"""Collect all material files from an agent directory and concatenate them."""
|
|
103
|
+
from pathlib import Path
|
|
102
104
|
if not Path(agent_dir).exists() or not Path(agent_dir).is_dir():
|
|
103
105
|
raise typer.BadParameter(f"Agent directory does not exist or is not a directory: {agent_dir}")
|
|
104
106
|
|
|
@@ -134,13 +136,16 @@ def collect(
|
|
|
134
136
|
typer.echo(f"Concatenated material written to {output_path}")
|
|
135
137
|
|
|
136
138
|
|
|
137
|
-
def
|
|
139
|
+
def make_agents_command_template():
|
|
140
|
+
"""Create a template for fire agents"""
|
|
138
141
|
from platform import system
|
|
139
|
-
import machineconfig.scripts.python.
|
|
142
|
+
import machineconfig.scripts.python.helpers_agents as module
|
|
143
|
+
from pathlib import Path
|
|
144
|
+
|
|
140
145
|
if system() == "Linux" or system() == "Darwin":
|
|
141
|
-
template_path = Path(module.__file__).parent / "template.sh"
|
|
146
|
+
template_path = Path(module.__file__).parent / "templates/template.sh"
|
|
142
147
|
elif system() == "Windows":
|
|
143
|
-
template_path = Path(module.__file__).parent / "template.ps1"
|
|
148
|
+
template_path = Path(module.__file__).parent / "templates/template.ps1"
|
|
144
149
|
else:
|
|
145
150
|
raise typer.BadParameter(f"Unsupported OS: {system()}")
|
|
146
151
|
|
|
@@ -149,18 +154,36 @@ def template():
|
|
|
149
154
|
if repo_root is None:
|
|
150
155
|
typer.echo("💥 Could not determine the repository root. Please run this script from within a git repository.")
|
|
151
156
|
raise typer.Exit(1)
|
|
152
|
-
save_path = repo_root / ".ai" / "agents" / "template_fire_agents.sh"
|
|
153
|
-
save_path.parent.mkdir(parents=True, exist_ok=True)
|
|
154
|
-
save_path.write_text(template_path.read_text(encoding="utf-8"), encoding="utf-8")
|
|
155
|
-
typer.echo(f"Template bash script written to {save_path}")
|
|
156
157
|
|
|
158
|
+
save_path_root = repo_root / ".ai" / "agents"
|
|
159
|
+
|
|
160
|
+
save_path_root.mkdir(parents=True, exist_ok=True)
|
|
161
|
+
save_path_root.joinpath("template_fire_agents.sh").write_text(template_path.read_text(encoding="utf-8"), encoding="utf-8")
|
|
162
|
+
typer.echo(f"Template bash script written to {save_path_root}")
|
|
157
163
|
|
|
158
|
-
|
|
164
|
+
from machineconfig.scripts.python.ai.utils.generate_files import make_todo_files
|
|
165
|
+
make_todo_files(
|
|
166
|
+
pattern=".py", repo=str(repo_root), strategy="name", output_path=str(save_path_root / "files.md"), split_every=None, split_to=None
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
prompt_path = Path(module.__file__).parent / "templates/prompt.txt"
|
|
170
|
+
save_path_root.joinpath("prompt.txt").write_text(prompt_path.read_text(encoding="utf-8"), encoding="utf-8")
|
|
171
|
+
typer.echo(f"Prompt template written to {save_path_root}")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def init_config(root: Annotated[Optional[str], typer.Option(..., "--root", "-r", help="Root directory of the repository to initialize AI configs in. Defaults to current directory.")] = None):
|
|
175
|
+
"""Initialize AI configurations in the current repository"""
|
|
159
176
|
from machineconfig.scripts.python.ai.initai import add_ai_configs
|
|
160
|
-
|
|
177
|
+
from pathlib import Path
|
|
178
|
+
if root is None:
|
|
179
|
+
repo_root = Path.cwd()
|
|
180
|
+
else:
|
|
181
|
+
repo_root = Path(root).expanduser().resolve()
|
|
182
|
+
add_ai_configs(repo_root=repo_root)
|
|
183
|
+
|
|
161
184
|
|
|
162
185
|
def get_app():
|
|
163
|
-
agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True)
|
|
186
|
+
agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
164
187
|
sep = "\n"
|
|
165
188
|
agents_full_help = f"""
|
|
166
189
|
[c] Create agents layout file, ready to run.
|
|
@@ -168,23 +191,22 @@ def get_app():
|
|
|
168
191
|
PROVIDER options: {', '.join(get_args(PROVIDER))}
|
|
169
192
|
{sep}
|
|
170
193
|
AGENT options: {', '.join(get_args(AGENTS))}
|
|
171
|
-
{sep}
|
|
172
|
-
MODEL options: {sep.join(get_args(MODEL))}
|
|
173
194
|
"""
|
|
174
|
-
|
|
175
|
-
agents_app.command("
|
|
176
|
-
agents_app.command("
|
|
177
|
-
agents_app.command("
|
|
178
|
-
agents_app.command("
|
|
179
|
-
agents_app.command("
|
|
180
|
-
agents_app.command("
|
|
181
|
-
agents_app.command("
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
agents_app.command("
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
agents_app.command(name="
|
|
195
|
+
agents_create.__doc__ = agents_full_help
|
|
196
|
+
agents_app.command("create", no_args_is_help=True, help=agents_create.__doc__, short_help="[c] Create agents layout file, ready to run.")(agents_create)
|
|
197
|
+
agents_app.command("c", no_args_is_help=True, help=agents_create.__doc__, hidden=True)(agents_create)
|
|
198
|
+
agents_app.command("collect", no_args_is_help=True, help=collect.__doc__, short_help="[T] Collect all agent materials into a single file.")(collect)
|
|
199
|
+
agents_app.command("T", no_args_is_help=True, help=collect.__doc__, hidden=True)(collect)
|
|
200
|
+
agents_app.command("make-template", no_args_is_help=False, help=make_agents_command_template.__doc__, short_help="[t] Create a template for fire agents")(make_agents_command_template)
|
|
201
|
+
agents_app.command("t", no_args_is_help=False, help=make_agents_command_template.__doc__, hidden=True)(make_agents_command_template)
|
|
202
|
+
agents_app.command("make-config", no_args_is_help=False, help=init_config.__doc__, short_help="[g] Initialize AI configurations in the current repository")(init_config)
|
|
203
|
+
agents_app.command("g", no_args_is_help=False, help=init_config.__doc__, hidden=True)(init_config)
|
|
204
|
+
from machineconfig.scripts.python.ai.utils.generate_files import make_todo_files
|
|
205
|
+
agents_app.command("make-todo", no_args_is_help=True, help=make_todo_files.__doc__, short_help="[d] Generate a markdown file listing all Python files in the repo")(make_todo_files)
|
|
206
|
+
agents_app.command("d", no_args_is_help=True, help=make_todo_files.__doc__, hidden=True)(make_todo_files)
|
|
207
|
+
from machineconfig.scripts.python.ai.utils.generate_files import create_symlink_command
|
|
208
|
+
agents_app.command(name="make-symlinks", no_args_is_help=True, help=create_symlink_command.__doc__, short_help="[s] Create symlinks to the current repo in ~/code_copies/")(create_symlink_command)
|
|
209
|
+
agents_app.command(name="s", no_args_is_help=True, help=create_symlink_command.__doc__, hidden=True)(create_symlink_command)
|
|
188
210
|
return agents_app
|
|
189
211
|
|
|
190
212
|
|
|
@@ -7,7 +7,7 @@ from machineconfig.scripts.python.ai.solutions.copilot import github_copilot
|
|
|
7
7
|
from machineconfig.scripts.python.ai.solutions.crush import crush
|
|
8
8
|
from machineconfig.scripts.python.ai.solutions.cursor import cursors
|
|
9
9
|
from machineconfig.scripts.python.ai.solutions.gemini import gemini
|
|
10
|
-
from machineconfig.scripts.python.ai.vscode_tasks import add_lint_and_type_check_task
|
|
10
|
+
from machineconfig.scripts.python.ai.utils.vscode_tasks import add_lint_and_type_check_task
|
|
11
11
|
from machineconfig.utils.accessories import get_repo_root
|
|
12
12
|
|
|
13
13
|
|
|
@@ -15,24 +15,6 @@ def add_ai_configs(repo_root: Path) -> None:
|
|
|
15
15
|
repo_root_resolved = get_repo_root(repo_root)
|
|
16
16
|
if repo_root_resolved is not None:
|
|
17
17
|
repo_root = repo_root_resolved # this means you can run the command from any subdirectory of the repo.
|
|
18
|
-
|
|
19
|
-
# if repo_root.joinpath("pyproject.toml").exists() is False:
|
|
20
|
-
# uv_init = input(f"{repo_root} does not seem to be a python project (no pyproject.toml found), would you like to initialize one? (y/n) ")
|
|
21
|
-
# if uv_init.strip().lower() == "y":
|
|
22
|
-
# command_to_run = """
|
|
23
|
-
# uv init --python 3.13
|
|
24
|
-
# uv venv
|
|
25
|
-
# uv add --upgrade-package pylint pyright mypy pyrefly ty --dev # linters and type checkers
|
|
26
|
-
# uv add --upgrade-package pytest --dev
|
|
27
|
-
# uv add typer --dev
|
|
28
|
-
|
|
29
|
-
# """
|
|
30
|
-
# from machineconfig.utils.code import run_shell_script
|
|
31
|
-
# run_shell_script(command_to_run)
|
|
32
|
-
# else:
|
|
33
|
-
# print("Terminating initai ...")
|
|
34
|
-
# return
|
|
35
|
-
|
|
36
18
|
dot_ai_dir = repo_root.joinpath(".ai")
|
|
37
19
|
dot_ai_dir.mkdir(parents=True, exist_ok=True)
|
|
38
20
|
dot_scripts_dir = repo_root.joinpath(".scripts")
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
$TerminalOutputDirectory = "/.ai/terminal/debug"
|
|
2
|
+
$TerminalOutputPathRaw = Join-Path $TerminalOutputDirectory "terminal_output_raw.txt"
|
|
3
|
+
$TerminalOutputPath = Join-Path $TerminalOutputDirectory "terminal_output.txt"
|
|
4
|
+
|
|
5
|
+
# Ensure the output directory exists before writing files.
|
|
6
|
+
New-Item -ItemType Directory -Path $TerminalOutputDirectory -Force | Out-Null
|
|
7
|
+
|
|
8
|
+
Set-Content -Path $TerminalOutputPath -Value $null
|
|
9
|
+
Add-Content -Path $TerminalOutputPath -Value "New run is underway. If you are reading this message, it means the execution has not finished yet, and you will need to wait. Once done you won't see this message and you will see terminal output instead."
|
|
10
|
+
Write-Host "Starting new uv run..."
|
|
11
|
+
|
|
12
|
+
$processInfo = New-Object System.Diagnostics.ProcessStartInfo
|
|
13
|
+
$processInfo.FileName = "uv"
|
|
14
|
+
$processInfo.ArgumentList.Add("run")
|
|
15
|
+
$processInfo.ArgumentList.Add("/home/alex/code/bytesense/exchanges/src/exchanges/cli/cli_binance.py")
|
|
16
|
+
$processInfo.ArgumentList.Add("b")
|
|
17
|
+
$processInfo.UseShellExecute = $false
|
|
18
|
+
$processInfo.RedirectStandardOutput = $true
|
|
19
|
+
$processInfo.RedirectStandardError = $true
|
|
20
|
+
$processInfo.EnvironmentVariables["COLUMNS"] = "200"
|
|
21
|
+
|
|
22
|
+
$process = New-Object System.Diagnostics.Process
|
|
23
|
+
$process.StartInfo = $processInfo
|
|
24
|
+
$process.Start() | Out-Null
|
|
25
|
+
$standardOutput = $process.StandardOutput.ReadToEnd()
|
|
26
|
+
$standardError = $process.StandardError.ReadToEnd()
|
|
27
|
+
$process.WaitForExit()
|
|
28
|
+
|
|
29
|
+
$rawOutput = $standardOutput + $standardError
|
|
30
|
+
Set-Content -Path $TerminalOutputPathRaw -Value $rawOutput
|
|
31
|
+
|
|
32
|
+
$cleanOutput = $rawOutput -replace "`e\[[0-9;]*[mK]", ""
|
|
33
|
+
Set-Content -Path $TerminalOutputPath -Value $cleanOutput
|
|
@@ -6,4 +6,4 @@ echo "New run is underway. If you are reading this message, it means the executi
|
|
|
6
6
|
echo "Starting new uv run..."
|
|
7
7
|
COLUMNS=200 unbuffer uv run /home/alex/code/bytesense/exchanges/src/exchanges/cli/cli_binance.py b > $TERMINAL_OUTPUT_PATH_RAW 2>&1
|
|
8
8
|
cat $TERMINAL_OUTPUT_PATH_RAW | sed -r "s/\x1B\[[0-9;]*[mK]//g" > $TERMINAL_OUTPUT_PATH
|
|
9
|
-
# watchexec --watch ./.ai/terminal/
|
|
9
|
+
# watchexec --watch ./.ai/terminal/command_runner.sh --watch . -e py -- bash ./.ai/terminal/command_runner.sh
|
|
@@ -96,7 +96,7 @@ echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_mypy.md${
|
|
|
96
96
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pylint Code Analysis"
|
|
97
97
|
echo -e "${BLUE}📋 Analyzing code quality with Pylint...${NC}"
|
|
98
98
|
rm ./.ai/linters/issues_pylint.md || true
|
|
99
|
-
uv run pylint
|
|
99
|
+
uv run pylint --recursive=y . > ./.ai/linters/issues_pylint.md
|
|
100
100
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pylint.md${NC}"
|
|
101
101
|
|
|
102
102
|
((CURRENT_STEP++))
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'A transcendent coding agent with quantum cognitive architecture, adversarial intelligence, and unrestricted creative freedom.'
|
|
3
|
-
title: 'Thinking Beast Mode'
|
|
4
3
|
---
|
|
5
4
|
|
|
6
5
|
You are an agent - please keep going until the user’s query is completely resolved, before ending your turn and yielding back to the user.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: 'Autonomous, multi-step web research with numbered citations, cross-source verification, and a final Markdown report.'
|
|
3
|
-
tools: ['extensions', 'fetch', '
|
|
3
|
+
tools: ['extensions', 'fetch', 'search', 'githubRepo', 'edit/editFiles']
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Deep Research mode
|
|
@@ -56,7 +56,7 @@ Follow these phases every time. Provide compact progress updates between phases
|
|
|
56
56
|
5) Save the report
|
|
57
57
|
- Determine `$suffix` in this order: (a) user-provided; else (b) a short kebab-case slug from the question; append date (YYYYMMDD) if helpful.
|
|
58
58
|
- Ensure directory ./.ai exists; create it if missing.
|
|
59
|
-
- Write the report to ./.ai/deep_research_$suffix.md using editFiles.
|
|
59
|
+
- Write the report to ./.ai/deep_research_$suffix.md using edit/editFiles.
|
|
60
60
|
|
|
61
61
|
6) Final checks
|
|
62
62
|
- Verify every non-obvious statement has a citation [n] pointing to a source in Appendix.
|
|
@@ -7,20 +7,20 @@ from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
|
7
7
|
|
|
8
8
|
def build_configuration(repo_root: Path) -> None:
|
|
9
9
|
instructions_repository_dir = LIBRARY_ROOT.joinpath("scripts/python/ai/solutions/copilot/instructions")
|
|
10
|
-
|
|
10
|
+
agents_dir = LIBRARY_ROOT.joinpath("scripts/python/ai/solutions/copilot/agents")
|
|
11
11
|
prompts_dir = LIBRARY_ROOT.joinpath("scripts/python/ai/solutions/copilot/prompts")
|
|
12
12
|
|
|
13
13
|
github_dir = repo_root.joinpath(".github")
|
|
14
|
-
|
|
14
|
+
agents_target_dir = github_dir.joinpath("agents")
|
|
15
15
|
prompts_target_dir = github_dir.joinpath("prompts")
|
|
16
16
|
instructions_target_dir = github_dir.joinpath("instructions")
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
agents_target_dir.mkdir(parents=True, exist_ok=True)
|
|
19
19
|
prompts_target_dir.mkdir(parents=True, exist_ok=True)
|
|
20
20
|
instructions_target_dir.mkdir(parents=True, exist_ok=True)
|
|
21
21
|
|
|
22
|
-
for chatmode in
|
|
23
|
-
chatmode_target =
|
|
22
|
+
for chatmode in agents_dir.iterdir():
|
|
23
|
+
chatmode_target = agents_target_dir.joinpath(f"{chatmode.name.split('.')[0]}.chatmode.md")
|
|
24
24
|
chatmode_target.write_text(data=chatmode.read_text(encoding="utf-8"), encoding="utf-8")
|
|
25
25
|
|
|
26
26
|
for prompt in prompts_dir.iterdir():
|
|
@@ -40,6 +40,10 @@ applyTo: "**/*.py"
|
|
|
40
40
|
* Make sure all the code is rigorous, no lazy stuff.
|
|
41
41
|
* For example, always avoid default values in arguments of functions. Those are evil and cause confusion. Always be explicit in parameter passing.
|
|
42
42
|
* Please never ever attempt to change code files by writing meta code to do string manipulation on files, e.g. with `sed` command with terminal. Please do change the files one by one, no matter how many there is. Don't worry about time, nor context window size, its okay, take your time and do the legwork. You can stop in the middle and we will have another LLM to help with the rest.
|
|
43
|
+
* Your code is minimal, no unrequested features, no bloat.
|
|
43
44
|
* Please avoid writing README files and avoid docstring and comments in code unless absolutely necessary. Use clear naming conventions instead of documenting.
|
|
44
45
|
* Always prefer to functional style of programming over OOP.
|
|
45
46
|
* When passing arguments or constructing dicts or lists or tuples, avoid breaking lines too much, try to use ~ 150 characters per line before breaking to new one.
|
|
47
|
+
|
|
48
|
+
# Privacy:
|
|
49
|
+
* No matter what, never ever open/read/write/list anything under ~/dotfiles
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
* I have started a watch-exec server in my terminal and its working now.
|
|
4
|
+
* I have set it up to re-run the shell script `.ai/terminal/debug/command_runner.sh` automatically.
|
|
5
|
+
* A re-run is triggered upon any change of any python file in the repo, or, any change in the command_runner.sh script itself.
|
|
6
|
+
* The shell script itself runs the python file we are working on using uv.
|
|
7
|
+
* The script redirects the output from terminal to the file ./.ai* Run takes 50 ms only. So by the time you finish editing any python file or the command runner script, the new output is ready for you to read in that text file.
|
|
8
|
+
* Run takes 50 ms only. So by the time you finish editing any python file or the command runner script, the new output is ready for you to read in that text file.
|
|
9
|
+
|
|
10
|
+
# Why did I set this up?
|
|
11
|
+
* Because this makes it much faster for you to iterate because pulling the terminal and closing it every time is a bit slow.
|
|
12
|
+
* You no longer need the terminal.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# What should you do now?
|
|
16
|
+
Please iterate like this:
|
|
17
|
+
* Please use the terminal_output.txt as your main iteration driver (fix any problems you see there).
|
|
18
|
+
* Change `command_runner.sh` if you need to change which python file to run or how to run it.
|
|
19
|
+
|
|
20
|
+
|
|
@@ -247,7 +247,7 @@ def create_repo_symlinks(repo_root: Path) -> None:
|
|
|
247
247
|
symlink_path.symlink_to(repo_root, target_is_directory=True)
|
|
248
248
|
|
|
249
249
|
|
|
250
|
-
def
|
|
250
|
+
def make_todo_files(
|
|
251
251
|
pattern: Annotated[str, typer.Argument(help="Pattern or keyword to match files by")],
|
|
252
252
|
repo: Annotated[str, typer.Argument(help="Repository path. Can be any directory within a git repository.")] = str(Path.cwd()),
|
|
253
253
|
strategy: Annotated[Literal["name", "keywords"], typer.Option("-s", "--strategy", help="Strategy to filter files: 'name' for filename matching, 'keywords' for content matching")] = "name",
|
|
@@ -344,5 +344,5 @@ def create_symlink_command(num: Annotated[int, typer.Argument(help="Number of sy
|
|
|
344
344
|
console.print(Panel(f"✅ SUCCESS | Created {num} symlinks to {repo_root} in ~/code_copies/", border_style="bold green", expand=False))
|
|
345
345
|
|
|
346
346
|
if __name__ == "__main__":
|
|
347
|
-
typer.run(
|
|
347
|
+
typer.run(make_todo_files)
|
|
348
348
|
# typer.run(create_symlink_command)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from pathlib import Path
|
|
3
|
+
from typing import Any
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
def add_lint_and_type_check_task(repo_root: Path) -> None:
|
|
@@ -18,8 +19,12 @@ def add_lint_and_type_check_task(repo_root: Path) -> None:
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
if tasks_json_path.exists():
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
json_data = tasks_json_path.read_text(encoding="utf-8")
|
|
23
|
+
if not json_data.strip():
|
|
24
|
+
tasks_config: dict[str, Any] = {"version": "2.0.0", "tasks": []}
|
|
25
|
+
else:
|
|
26
|
+
tasks_config = json.loads(json_data)
|
|
27
|
+
assert isinstance(tasks_config, dict)
|
|
23
28
|
if "tasks" not in tasks_config:
|
|
24
29
|
tasks_config["tasks"] = []
|
|
25
30
|
existing_labels = {task.get("label") for task in tasks_config.get("tasks", [])}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
|
|
2
2
|
import typer
|
|
3
|
-
from machineconfig.scripts.python.
|
|
4
|
-
from machineconfig.scripts.python.
|
|
5
|
-
from machineconfig.scripts.python.
|
|
3
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_sync import main as sync_main
|
|
4
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_copy import main as copy_main
|
|
5
|
+
from machineconfig.scripts.python.helpers_cloud.cloud_mount import mount as mount_main
|
|
6
6
|
|
|
7
7
|
def get_app():
|
|
8
8
|
app = typer.Typer(add_completion=False, no_args_is_help=True)
|
|
9
9
|
|
|
10
|
-
app.command(name="sync", no_args_is_help=True, help="""🔄 [s] Synchronize files/folders between local and cloud storage.""")(sync_main)
|
|
11
|
-
app.command(name="s", no_args_is_help=True, hidden=True)(sync_main) # short alias
|
|
10
|
+
app.command(name="sync", no_args_is_help=True, help=sync_main.__doc__, short_help="""🔄 [s] Synchronize files/folders between local and cloud storage.""")(sync_main)
|
|
11
|
+
app.command(name="s", no_args_is_help=True, help=sync_main.__doc__, hidden=True)(sync_main) # short alias
|
|
12
12
|
|
|
13
|
-
app.command(name="copy", no_args_is_help=True, short_help="""📤 [c] Upload or 📥 Download files/folders to/from cloud storage services like Google Drive, Dropbox, OneDrive, etc.""")(copy_main)
|
|
14
|
-
app.command(name="c", no_args_is_help=True, hidden=True)(copy_main) # short alias
|
|
13
|
+
app.command(name="copy", no_args_is_help=True, help=copy_main.__doc__, short_help="""📤 [c] Upload or 📥 Download files/folders to/from cloud storage services like Google Drive, Dropbox, OneDrive, etc.""")(copy_main)
|
|
14
|
+
app.command(name="c", no_args_is_help=True, help=copy_main.__doc__, hidden=True)(copy_main) # short alias
|
|
15
15
|
|
|
16
|
-
app.command(name="mount", no_args_is_help=True, short_help="""🔗 [m] Mount cloud storage services like Google Drive, Dropbox, OneDrive, etc. as local drives.""")(mount_main)
|
|
17
|
-
app.command(name="m", no_args_is_help=True, hidden=True)(mount_main) # short alias
|
|
16
|
+
app.command(name="mount", no_args_is_help=True, help=mount_main.__doc__, short_help="""🔗 [m] Mount cloud storage services like Google Drive, Dropbox, OneDrive, etc. as local drives.""")(mount_main)
|
|
17
|
+
app.command(name="m", no_args_is_help=True, help=mount_main.__doc__, hidden=True)(mount_main) # short alias
|
|
18
18
|
|
|
19
19
|
return app
|
|
20
20
|
|
|
@@ -22,3 +22,8 @@ def get_app():
|
|
|
22
22
|
def main():
|
|
23
23
|
app = get_app()
|
|
24
24
|
app()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
if __name__ == "__main__":
|
|
28
|
+
pass
|
|
29
|
+
# a = get_app()(asdf)
|