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
|
@@ -2,44 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
from typing import cast, Iterable, Optional, get_args
|
|
5
|
+
from typing import cast, Optional, get_args, Annotated
|
|
7
6
|
import typer
|
|
8
|
-
from machineconfig.scripts.python.fire_agents_helper_types import AGENTS
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def _write_list_file(target: Path, files: Iterable[Path]) -> None:
|
|
12
|
-
target.parent.mkdir(parents=True, exist_ok=True)
|
|
13
|
-
target.write_text("\n".join(str(f) for f in files), encoding="utf-8")
|
|
7
|
+
from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, HOST, PROVIDER
|
|
14
8
|
|
|
15
9
|
|
|
16
10
|
def create(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
11
|
+
agent: Annotated[AGENTS, typer.Option(..., "--agents", "-a", help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}")],
|
|
12
|
+
host: Annotated[HOST, typer.Option(..., "--host", "-h", help=f"Machine to run agents on. One of {', '.join(get_args(HOST))}")],
|
|
13
|
+
model: Annotated[str, typer.Option(..., "--model", "-m", help="Model to use (for crush agent).")],
|
|
14
|
+
provider: Annotated[PROVIDER, typer.Option(..., "--provider", "-p", help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER)[:3])}")],
|
|
15
|
+
context_path: Annotated[Optional[str], typer.Option(..., "--context-path", "-c", help="Path to the context file/folder, defaults to .ai/todo/")] = None,
|
|
16
|
+
separator: Annotated[str, typer.Option(..., "--separator", "-s", help="Separator for context")] = "\n",
|
|
17
|
+
agent_load: Annotated[int, typer.Option(..., "--agent-load", "-al", help="Number of tasks per prompt")] = 13,
|
|
18
|
+
prompt: Annotated[Optional[str], typer.Option(..., "--prompt", "-P", help="Prompt prefix as string")] = None,
|
|
19
|
+
prompt_path: Annotated[Optional[str], typer.Option(..., "--prompt-path", "-pp", help="Path to prompt file")] = None,
|
|
20
|
+
job_name: Annotated[str, typer.Option(..., "--job-name", "-j", help="Job name")] = "AI_Agents",
|
|
21
|
+
separate: Annotated[bool, typer.Option(..., "--separate", "-S", help="Keep prompt material in separate file to the context.")] = True,
|
|
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,
|
|
29
24
|
):
|
|
30
25
|
|
|
31
|
-
from machineconfig.scripts.python.fire_agents_help_launch import prep_agent_launch, get_agents_launch_layout
|
|
32
|
-
from machineconfig.scripts.python.
|
|
33
|
-
from machineconfig.scripts.python.fire_agents_load_balancer import chunk_prompts
|
|
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
|
|
34
28
|
from machineconfig.utils.accessories import get_repo_root, randstr
|
|
35
29
|
import json
|
|
36
|
-
|
|
30
|
+
from pathlib import Path
|
|
37
31
|
# validate mutual exclusive
|
|
38
|
-
context_options = [context_path, keyword_search, filename_pattern]
|
|
39
|
-
provided_context = [opt for opt in context_options if opt is not None]
|
|
40
|
-
if len(provided_context) != 1:
|
|
41
|
-
raise typer.BadParameter("Exactly one of --context-path, --keyword-search, --filename-pattern must be provided")
|
|
42
|
-
|
|
43
32
|
prompt_options = [prompt, prompt_path]
|
|
44
33
|
provided_prompt = [opt for opt in prompt_options if opt is not None]
|
|
45
34
|
if len(provided_prompt) != 1:
|
|
@@ -49,80 +38,73 @@ def create(
|
|
|
49
38
|
if repo_root is None:
|
|
50
39
|
typer.echo("💥 Could not determine the repository root. Please run this script from within a git repository.")
|
|
51
40
|
raise typer.Exit(1)
|
|
41
|
+
return
|
|
52
42
|
typer.echo(f"Operating @ {repo_root}")
|
|
53
43
|
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
if context_path is None:
|
|
45
|
+
context_path_resolved = Path(repo_root) / ".ai" / "todo"
|
|
46
|
+
else: context_path_resolved = Path(context_path).expanduser().resolve()
|
|
47
|
+
|
|
48
|
+
if not context_path_resolved.exists():
|
|
49
|
+
raise typer.BadParameter(f"Path does not exist: {context_path_resolved}")
|
|
56
50
|
|
|
57
|
-
if
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
typer.echo(f"💥 No .py files found containing keyword: {keyword_search}")
|
|
68
|
-
raise typer.Exit(1)
|
|
69
|
-
target_file_path = repo_root / ".ai" / "target_file.txt"
|
|
70
|
-
_write_list_file(target_file_path, matching_files)
|
|
71
|
-
prompt_material_path = target_file_path
|
|
72
|
-
elif filename_pattern is not None:
|
|
73
|
-
search_strategy = "filename_pattern"
|
|
74
|
-
matching_files = search_files_by_pattern(repo_root, filename_pattern)
|
|
75
|
-
if not matching_files:
|
|
76
|
-
typer.echo(f"💥 No files found matching pattern: {filename_pattern}")
|
|
77
|
-
raise typer.Exit(1)
|
|
78
|
-
target_file_path = repo_root / ".ai" / "target_file.txt"
|
|
79
|
-
_write_list_file(target_file_path, matching_files)
|
|
80
|
-
prompt_material_path = target_file_path
|
|
51
|
+
if context_path_resolved.is_file():
|
|
52
|
+
prompt_material_re_splitted = chunk_prompts(context_path_resolved, tasks_per_prompt=agent_load, joiner=separator)
|
|
53
|
+
elif context_path_resolved.is_dir():
|
|
54
|
+
files = [f for f in context_path_resolved.rglob("*") if f.is_file()]
|
|
55
|
+
if not files:
|
|
56
|
+
raise typer.BadParameter(f"No files found in directory: {context_path_resolved}")
|
|
57
|
+
concatenated = separator.join(f.read_text(encoding="utf-8") for f in files)
|
|
58
|
+
prompt_material_re_splitted = [concatenated]
|
|
59
|
+
else:
|
|
60
|
+
raise typer.BadParameter(f"Path is neither file nor directory: {context_path_resolved}")
|
|
81
61
|
|
|
82
62
|
if prompt_path is not None:
|
|
83
|
-
prompt_prefix = prompt_path.read_text(encoding="utf-8")
|
|
63
|
+
prompt_prefix = Path(prompt_path).read_text(encoding="utf-8")
|
|
84
64
|
else:
|
|
85
65
|
prompt_prefix = cast(str, prompt)
|
|
86
66
|
agent_selected = agent
|
|
87
|
-
|
|
88
|
-
prompt_material_re_splitted = chunk_prompts(prompt_material_path, tasks_per_prompt=tasks_per_prompt, joiner=separator)
|
|
89
|
-
if agents_dir is None: agents_dir = repo_root / ".ai" / f"tmp_prompts/{job_name}_{randstr()}"
|
|
67
|
+
if agents_dir is None: agents_dir_obj = Path(repo_root) / ".ai" / f"tmp_prompts/{job_name}_{randstr()}"
|
|
90
68
|
else:
|
|
91
69
|
import shutil
|
|
92
|
-
if agents_dir.exists():
|
|
70
|
+
if Path(agents_dir).exists():
|
|
93
71
|
shutil.rmtree(agents_dir)
|
|
94
|
-
|
|
95
|
-
|
|
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,
|
|
74
|
+
keep_material_in_separate_file=separate,
|
|
75
|
+
prompt_prefix=prompt_prefix, machine=host, agent=agent_selected, model=model, provider=provider,
|
|
76
|
+
job_name=job_name)
|
|
77
|
+
layoutfile = get_agents_launch_layout(session_root=agents_dir_obj)
|
|
96
78
|
regenerate_py_code = f"""
|
|
97
|
-
#!/usr/bin/env uv run --python 3.
|
|
98
|
-
|
|
99
|
-
fire_agents create --context-path "{prompt_material_path}" \\
|
|
100
|
-
--{search_strategy} "{context_path or keyword_search or filename_pattern}" \\
|
|
79
|
+
#!/usr/bin/env uv run --python 3.14 --with machineconfig
|
|
80
|
+
agents create "{context_path_resolved}" \\
|
|
101
81
|
--prompt-path "{prompt_path or ''}" \\
|
|
102
82
|
--agent "{agent_selected}" \\
|
|
83
|
+
--host "{host}" \\
|
|
103
84
|
--job-name "{job_name}" \\
|
|
104
|
-
--
|
|
85
|
+
--agent_load {agent_load} \\
|
|
105
86
|
--separator "{separator}" \\
|
|
106
|
-
{"--
|
|
87
|
+
{"--separate" if separate else ""}
|
|
107
88
|
"""
|
|
108
|
-
(
|
|
109
|
-
layout_output_path = output_path if output_path is not None else
|
|
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"
|
|
110
91
|
layout_output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
111
92
|
layout_output_path.write_text(data=json.dumps(layoutfile, indent=4), encoding="utf-8")
|
|
112
|
-
typer.echo(f"Created agents in {
|
|
93
|
+
typer.echo(f"Created agents in {agents_dir_obj}")
|
|
113
94
|
typer.echo(f"Ceated layout in {layout_output_path}")
|
|
114
95
|
|
|
115
96
|
|
|
116
97
|
def collect(
|
|
117
|
-
agent_dir:
|
|
118
|
-
output_path:
|
|
119
|
-
separator: str
|
|
98
|
+
agent_dir: Annotated[str, typer.Argument(..., help="Path to the agent directory containing the prompts folder")],
|
|
99
|
+
output_path: Annotated[str, typer.Argument(..., help="Path to write the concatenated material files")],
|
|
100
|
+
separator: Annotated[str, typer.Option(..., help="Separator to use when concatenating material files")] = "\n",
|
|
120
101
|
) -> None:
|
|
121
102
|
"""Collect all material files from an agent directory and concatenate them."""
|
|
122
|
-
|
|
103
|
+
from pathlib import Path
|
|
104
|
+
if not Path(agent_dir).exists() or not Path(agent_dir).is_dir():
|
|
123
105
|
raise typer.BadParameter(f"Agent directory does not exist or is not a directory: {agent_dir}")
|
|
124
106
|
|
|
125
|
-
prompts_dir = agent_dir / "prompts"
|
|
107
|
+
prompts_dir = Path(agent_dir) / "prompts"
|
|
126
108
|
if not prompts_dir.exists():
|
|
127
109
|
raise typer.BadParameter(f"Prompts directory not found: {prompts_dir}")
|
|
128
110
|
|
|
@@ -149,36 +131,20 @@ def collect(
|
|
|
149
131
|
result = separator.join(concatenated_content)
|
|
150
132
|
|
|
151
133
|
# Write to output file
|
|
152
|
-
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
153
|
-
output_path.write_text(result, encoding="utf-8")
|
|
134
|
+
Path(output_path).parent.mkdir(parents=True, exist_ok=True)
|
|
135
|
+
Path(output_path).write_text(result, encoding="utf-8")
|
|
154
136
|
typer.echo(f"Concatenated material written to {output_path}")
|
|
155
137
|
|
|
156
138
|
|
|
157
|
-
def
|
|
158
|
-
template_bash = """#!/bin/bash
|
|
159
|
-
JOB_NAME="outpatient_mapping"
|
|
160
|
-
REPO_ROOT="$HOME/code/work/winter_planning/"
|
|
161
|
-
CONTEXT_PATH="$REPO_ROOT/data/outpatient_mapping/op_services_collected.csv"
|
|
162
|
-
PROMPT_PATH="$REPO_ROOT/data/outpatient_mapping/prompt"
|
|
163
|
-
|
|
164
|
-
AGENTS_DIR="$REPO_ROOT/.ai/agents/$JOB_NAME"
|
|
165
|
-
LAYOUT_PATH="$REPO_ROOT/.ai/agents/$JOB_NAME/layout_unbalanced.json"
|
|
166
|
-
LAYOUT_BALANCED_PATH="$REPO_ROOT/.ai/agents/$JOB_NAME/layout_balanced.json"
|
|
167
|
-
|
|
168
|
-
agents create --context-path $CONTEXT_PATH --tasks-per-prompt 10 --agent crush --prompt-path $PROMPT_PATH --keep-separate --output-path $LAYOUT_PATH --agents-dir $AGENTS_DIR
|
|
169
|
-
sessions balance-load $LAYOUT_PATH --max-thresh 6 --breaking-method moreLayouts --thresh-type number --output-path $LAYOUT_BALANCED_PATH
|
|
170
|
-
|
|
171
|
-
sessions run $LAYOUT_BALANCED_PATH --kill-upon-completion
|
|
172
|
-
agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
|
|
173
|
-
"""
|
|
174
|
-
template_powershell = """
|
|
175
|
-
|
|
176
|
-
"""
|
|
139
|
+
def make_agents_command_template():
|
|
177
140
|
from platform import system
|
|
178
|
-
|
|
179
|
-
|
|
141
|
+
import machineconfig.scripts.python.helpers_agents as module
|
|
142
|
+
from pathlib import Path
|
|
143
|
+
|
|
144
|
+
if system() == "Linux" or system() == "Darwin":
|
|
145
|
+
template_path = Path(module.__file__).parent / "templates/template.sh"
|
|
180
146
|
elif system() == "Windows":
|
|
181
|
-
|
|
147
|
+
template_path = Path(module.__file__).parent / "templates/template.ps1"
|
|
182
148
|
else:
|
|
183
149
|
raise typer.BadParameter(f"Unsupported OS: {system()}")
|
|
184
150
|
|
|
@@ -187,22 +153,62 @@ agents collect $AGENTS_DIR "$REPO_ROOT/.ai/agents/$JOB_NAME/collected.txt"
|
|
|
187
153
|
if repo_root is None:
|
|
188
154
|
typer.echo("💥 Could not determine the repository root. Please run this script from within a git repository.")
|
|
189
155
|
raise typer.Exit(1)
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
import
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
156
|
+
|
|
157
|
+
save_path_root = repo_root / ".ai" / "agents"
|
|
158
|
+
|
|
159
|
+
save_path_root.mkdir(parents=True, exist_ok=True)
|
|
160
|
+
save_path_root.joinpath("template_fire_agents.sh").write_text(template_path.read_text(encoding="utf-8"), encoding="utf-8")
|
|
161
|
+
typer.echo(f"Template bash script written to {save_path_root}")
|
|
162
|
+
|
|
163
|
+
from machineconfig.scripts.python.ai.utils.generate_files import make_todo_files
|
|
164
|
+
make_todo_files(
|
|
165
|
+
pattern=".py", repo=str(repo_root), strategy="name", output_path=str(save_path_root / "files.md"), split_every=None, split_to=None
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
prompt_path = Path(module.__file__).parent / "templates/prompt.txt"
|
|
169
|
+
save_path_root.joinpath("prompt.txt").write_text(prompt_path.read_text(encoding="utf-8"), encoding="utf-8")
|
|
170
|
+
typer.echo(f"Prompt template written to {save_path_root}")
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def init_config():
|
|
174
|
+
from machineconfig.scripts.python.ai.initai import add_ai_configs
|
|
175
|
+
from pathlib import Path
|
|
176
|
+
add_ai_configs(repo_root=Path.cwd())
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def get_app():
|
|
180
|
+
agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
181
|
+
sep = "\n"
|
|
182
|
+
agents_full_help = f"""
|
|
183
|
+
[c] Create agents layout file, ready to run.
|
|
184
|
+
{sep}
|
|
185
|
+
PROVIDER options: {', '.join(get_args(PROVIDER))}
|
|
186
|
+
{sep}
|
|
187
|
+
AGENT options: {', '.join(get_args(AGENTS))}
|
|
188
|
+
"""
|
|
189
|
+
agents_app.command("create", no_args_is_help=True, help=agents_full_help)(create)
|
|
190
|
+
agents_app.command("c", no_args_is_help=True, help="Create agents layout file, ready to run.", hidden=True)(create)
|
|
191
|
+
agents_app.command("collect", no_args_is_help=True, help="[T] Collect all agent materials into a single file.")(collect)
|
|
192
|
+
agents_app.command("T", no_args_is_help=True, help="Collect all agent materials into a single file.", hidden=True)(collect)
|
|
193
|
+
agents_app.command("make-template", no_args_is_help=False, help="[t] Create a template for fire agents")(make_agents_command_template)
|
|
194
|
+
agents_app.command("t", no_args_is_help=False, help="Create a template for fire agents", hidden=True)(make_agents_command_template)
|
|
195
|
+
agents_app.command("make-config", no_args_is_help=False, help="[g] Initialize AI configurations in the current repository")(init_config)
|
|
196
|
+
agents_app.command("g", no_args_is_help=False, help="Initialize AI configurations in the current repository", hidden=True)(init_config)
|
|
197
|
+
from machineconfig.scripts.python.ai.utils.generate_files import make_todo_files
|
|
198
|
+
agents_app.command("make-todo", no_args_is_help=True, help="[d] Generate a markdown file listing all Python files in the repo")(make_todo_files)
|
|
199
|
+
agents_app.command("d", no_args_is_help=True, help="Generate a markdown file listing all Python files in the repo", hidden=True)(make_todo_files)
|
|
200
|
+
from machineconfig.scripts.python.ai.utils.generate_files import create_symlink_command
|
|
201
|
+
agents_app.command(name="make-symlinks", no_args_is_help=True, help="[s] Create symlinks to the current repo in ~/code_copies/")(create_symlink_command)
|
|
202
|
+
agents_app.command(name="s", no_args_is_help=True, help="Create symlinks to the current repo in ~/code_copies/", hidden=True)(create_symlink_command)
|
|
203
|
+
return agents_app
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def main():
|
|
207
|
+
agents_app = get_app()
|
|
208
|
+
# from trogon.typer import init_tui
|
|
209
|
+
# agents_app_tui = init_tui(agents_app)
|
|
210
|
+
agents_app()
|
|
211
|
+
# agents_app_tui()
|
|
206
212
|
|
|
207
213
|
|
|
208
214
|
if __name__ == "__main__": # pragma: no cover
|
|
@@ -7,6 +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.utils.vscode_tasks import add_lint_and_type_check_task
|
|
10
11
|
from machineconfig.utils.accessories import get_repo_root
|
|
11
12
|
|
|
12
13
|
|
|
@@ -14,25 +15,6 @@ def add_ai_configs(repo_root: Path) -> None:
|
|
|
14
15
|
repo_root_resolved = get_repo_root(repo_root)
|
|
15
16
|
if repo_root_resolved is not None:
|
|
16
17
|
repo_root = repo_root_resolved # this means you can run the command from any subdirectory of the repo.
|
|
17
|
-
|
|
18
|
-
if repo_root.joinpath("pyproject.toml").exists() is False:
|
|
19
|
-
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) ")
|
|
20
|
-
if uv_init.strip().lower() == "y":
|
|
21
|
-
command_to_run = """
|
|
22
|
-
uv init --python 3.13
|
|
23
|
-
uv venv
|
|
24
|
-
uv add --upgrade-package pylint pyright mypy pyrefly ty --dev # linters and type checkers
|
|
25
|
-
uv add --upgrade-package pytest --dev
|
|
26
|
-
# uv add typer --dev
|
|
27
|
-
|
|
28
|
-
"""
|
|
29
|
-
import subprocess
|
|
30
|
-
|
|
31
|
-
subprocess.run(command_to_run, shell=True, check=True)
|
|
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")
|
|
@@ -40,6 +22,8 @@ uv add --upgrade-package pytest --dev
|
|
|
40
22
|
generic.create_dot_scripts(repo_root=repo_root)
|
|
41
23
|
generic.adjust_gitignore(repo_root=repo_root)
|
|
42
24
|
|
|
25
|
+
add_lint_and_type_check_task(repo_root=repo_root)
|
|
26
|
+
|
|
43
27
|
github_copilot.build_configuration(repo_root=repo_root)
|
|
44
28
|
cursors.build_configuration(repo_root=repo_root)
|
|
45
29
|
gemini.build_configuration(repo_root=repo_root)
|
|
@@ -47,12 +31,3 @@ uv add --upgrade-package pytest --dev
|
|
|
47
31
|
crush.build_configuration(repo_root=repo_root)
|
|
48
32
|
cline.build_configuration(repo_root=repo_root)
|
|
49
33
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def main() -> None:
|
|
53
|
-
repo_root = Path.cwd()
|
|
54
|
-
add_ai_configs(repo_root=repo_root)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if __name__ == "__main__":
|
|
58
|
-
add_ai_configs(repo_root=Path.cwd())
|
|
@@ -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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
TERMINAL_OUTPUT_PATH_RAW="/.ai/terminal/debug/terminal_output_raw.txt"
|
|
3
|
+
TERMINAL_OUTPUT_PATH="/.ai/terminal/debug/terminal_output.txt"
|
|
4
|
+
> $TERMINAL_OUTPUT_PATH
|
|
5
|
+
echo "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." >> $TERMINAL_OUTPUT_PATH
|
|
6
|
+
echo "Starting new uv run..."
|
|
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
|
+
cat $TERMINAL_OUTPUT_PATH_RAW | sed -r "s/\x1B\[[0-9;]*[mK]//g" > $TERMINAL_OUTPUT_PATH
|
|
9
|
+
# watchexec --watch ./.ai/terminal/command_runner.sh --watch . -e py -- bash ./.ai/terminal/command_runner.sh
|
|
@@ -66,9 +66,8 @@ uv run -m cleanpy .
|
|
|
66
66
|
uv run -m ruff clean
|
|
67
67
|
# uv run -m ruff format .
|
|
68
68
|
uv run -m ruff check . --fix
|
|
69
|
-
uv run --no-dev --project $HOME/code/machineconfig -m machineconfig.scripts.python.ai.generate_files
|
|
70
69
|
|
|
71
|
-
New-Item -ItemType Directory -Force -Path .linters | Out-Null
|
|
70
|
+
New-Item -ItemType Directory -Force -Path .ai/linters | Out-Null
|
|
72
71
|
|
|
73
72
|
Write-Host "${GREEN}🧹 Code cleanup complete!${NC}"
|
|
74
73
|
Write-Host
|
|
@@ -78,38 +77,38 @@ Draw-Box "🔍 TYPE CHECKERS & LINTERS 🔍" "${BOLD}${PURPLE}"
|
|
|
78
77
|
$CURRENT_STEP++
|
|
79
78
|
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pyright Type Checker"
|
|
80
79
|
Write-Host "${BLUE}📋 Analyzing types with Pyright...${NC}"
|
|
81
|
-
Remove-Item ./.linters/
|
|
82
|
-
uv run pyright . | Out-File -FilePath ./.linters/
|
|
83
|
-
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
80
|
+
Remove-Item ./.ai/linters/issues_pyright.md -ErrorAction SilentlyContinue
|
|
81
|
+
uv run pyright . | Out-File -FilePath ./.ai/linters/issues_pyright.md
|
|
82
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyright.md${NC}"
|
|
84
83
|
|
|
85
84
|
$CURRENT_STEP++
|
|
86
85
|
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "MyPy Type Checker"
|
|
87
86
|
Write-Host "${BLUE}📋 Analyzing types with MyPy...${NC}"
|
|
88
|
-
Remove-Item ./.linters/
|
|
89
|
-
uv run mypy . | Out-File -FilePath ./.linters/
|
|
90
|
-
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
87
|
+
Remove-Item ./.ai/linters/issues_mypy.md -ErrorAction SilentlyContinue
|
|
88
|
+
uv run mypy . | Out-File -FilePath ./.ai/linters/issues_mypy.md
|
|
89
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_mypy.md${NC}"
|
|
91
90
|
|
|
92
91
|
$CURRENT_STEP++
|
|
93
92
|
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pylint Code Analysis"
|
|
94
93
|
Write-Host "${BLUE}📋 Analyzing code quality with Pylint...${NC}"
|
|
95
|
-
Remove-Item ./.linters/
|
|
96
|
-
uv run pylint ./src/ | Out-File -FilePath ./.linters/
|
|
97
|
-
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
94
|
+
Remove-Item ./.ai/linters/issues_pylint.md -ErrorAction SilentlyContinue
|
|
95
|
+
uv run pylint ./src/ | Out-File -FilePath ./.ai/linters/issues_pylint.md
|
|
96
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pylint.md${NC}"
|
|
98
97
|
|
|
99
98
|
$CURRENT_STEP++
|
|
100
99
|
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Pyrefly Type Checker"
|
|
101
100
|
Write-Host "${BLUE}📋 Analyzing types with Pyrefly...${NC}"
|
|
102
|
-
Remove-Item ./.linters/
|
|
103
|
-
uv run pyrefly check . | Out-File -FilePath ./.linters/
|
|
104
|
-
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
101
|
+
Remove-Item ./.ai/linters/issues_pyrefly.md -ErrorAction SilentlyContinue
|
|
102
|
+
uv run pyrefly check . | Out-File -FilePath ./.ai/linters/issues_pyrefly.md
|
|
103
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyrefly.md${NC}"
|
|
105
104
|
|
|
106
105
|
$CURRENT_STEP++
|
|
107
106
|
Draw-Progress $CURRENT_STEP $TOTAL_STEPS "Ruff Linter"
|
|
108
107
|
Write-Host "${BLUE}📋 Checking code style with Ruff...${NC}"
|
|
109
|
-
Remove-Item ./.linters/
|
|
110
|
-
uv run ruff check . | Out-File -FilePath ./.linters/
|
|
111
|
-
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
108
|
+
Remove-Item ./.ai/linters/issues_ruff.md -ErrorAction SilentlyContinue
|
|
109
|
+
uv run ruff check . | Out-File -FilePath ./.ai/linters/issues_ruff.md
|
|
110
|
+
Write-Host "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_ruff.md${NC}"
|
|
112
111
|
|
|
113
112
|
Write-Host
|
|
114
113
|
Draw-Box "🎉 ALL CHECKS COMPLETED! 🎉" "${BOLD}${GREEN}"
|
|
115
|
-
Write-Host "${BOLD}${GREEN}📁 Check the ${UNDERLINE}.linters${NC}${BOLD}${GREEN} directory for detailed results.${NC}"
|
|
114
|
+
Write-Host "${BOLD}${GREEN}📁 Check the ${UNDERLINE}.ai/linters${NC}${BOLD}${GREEN} directory for detailed results.${NC}"
|
|
@@ -70,9 +70,8 @@ uv run -m cleanpy .
|
|
|
70
70
|
uv run -m ruff clean
|
|
71
71
|
# uv run -m ruff format .
|
|
72
72
|
uv run -m ruff check . --fix
|
|
73
|
-
uv run --no-dev --project $HOME/code/machineconfig -m machineconfig.scripts.python.ai.generate_files
|
|
74
73
|
|
|
75
|
-
mkdir .linters
|
|
74
|
+
mkdir .ai/linters
|
|
76
75
|
|
|
77
76
|
echo -e "${GREEN}🧹 Code cleanup complete!${NC}"
|
|
78
77
|
echo
|
|
@@ -82,38 +81,38 @@ draw_box "🔍 TYPE CHECKERS & LINTERS 🔍" "${BOLD}${PURPLE}"
|
|
|
82
81
|
((CURRENT_STEP++))
|
|
83
82
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pyright Type Checker"
|
|
84
83
|
echo -e "${BLUE}📋 Analyzing types with Pyright...${NC}"
|
|
85
|
-
rm ./.linters/
|
|
86
|
-
uv run pyright . > ./.linters/
|
|
87
|
-
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
84
|
+
rm ./.ai/linters/issues_pyright.md || true
|
|
85
|
+
uv run pyright . > ./.ai/linters/issues_pyright.md
|
|
86
|
+
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyright.md${NC}"
|
|
88
87
|
|
|
89
88
|
((CURRENT_STEP++))
|
|
90
89
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "MyPy Type Checker"
|
|
91
90
|
echo -e "${BLUE}📋 Analyzing types with MyPy...${NC}"
|
|
92
|
-
rm ./.linters/
|
|
93
|
-
uv run mypy . > ./.linters/
|
|
94
|
-
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
91
|
+
rm ./.ai/linters/issues_mypy.md || true
|
|
92
|
+
uv run mypy . > ./.ai/linters/issues_mypy.md
|
|
93
|
+
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_mypy.md${NC}"
|
|
95
94
|
|
|
96
95
|
((CURRENT_STEP++))
|
|
97
96
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pylint Code Analysis"
|
|
98
97
|
echo -e "${BLUE}📋 Analyzing code quality with Pylint...${NC}"
|
|
99
|
-
rm ./.linters/
|
|
100
|
-
uv run pylint ./src/ > ./.linters/
|
|
101
|
-
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
98
|
+
rm ./.ai/linters/issues_pylint.md || true
|
|
99
|
+
uv run pylint ./src/ > ./.ai/linters/issues_pylint.md
|
|
100
|
+
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pylint.md${NC}"
|
|
102
101
|
|
|
103
102
|
((CURRENT_STEP++))
|
|
104
103
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pyrefly Type Checker"
|
|
105
104
|
echo -e "${BLUE}📋 Analyzing types with Pyrefly...${NC}"
|
|
106
|
-
rm ./.linters/
|
|
107
|
-
uv run pyrefly check . > ./.linters/
|
|
108
|
-
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
105
|
+
rm ./.ai/linters/issues_pyrefly.md || true
|
|
106
|
+
uv run pyrefly check . > ./.ai/linters/issues_pyrefly.md
|
|
107
|
+
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyrefly.md${NC}"
|
|
109
108
|
|
|
110
109
|
((CURRENT_STEP++))
|
|
111
110
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Ruff Linter"
|
|
112
111
|
echo -e "${BLUE}📋 Checking code style with Ruff...${NC}"
|
|
113
|
-
rm ./.linters/
|
|
114
|
-
uv run ruff check . > ./.linters/
|
|
115
|
-
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.linters/
|
|
112
|
+
rm ./.ai/linters/issues_ruff.md || true
|
|
113
|
+
uv run ruff check . > ./.ai/linters/issues_ruff.md
|
|
114
|
+
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_ruff.md${NC}"
|
|
116
115
|
|
|
117
116
|
echo
|
|
118
117
|
draw_box "🎉 ALL CHECKS COMPLETED! 🎉" "${BOLD}${GREEN}"
|
|
119
|
-
echo -e "${BOLD}${GREEN}📁 Check the ${UNDERLINE}.linters${NC}${BOLD}${GREEN} directory for detailed results.${NC}"
|
|
118
|
+
echo -e "${BOLD}${GREEN}📁 Check the ${UNDERLINE}.ai/linters${NC}${BOLD}${GREEN} directory for detailed results.${NC}"
|
|
@@ -2,4 +2,12 @@ from pathlib import Path
|
|
|
2
2
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
3
3
|
|
|
4
4
|
def get_generic_instructions_path() -> Path:
|
|
5
|
-
|
|
5
|
+
path = LIBRARY_ROOT.joinpath("scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md")
|
|
6
|
+
text = path.read_text(encoding="utf-8")
|
|
7
|
+
import platform
|
|
8
|
+
if platform.system().lower() == "windows":
|
|
9
|
+
text = text.replace("bash", "powershell").replace(".sh", ".ps1")
|
|
10
|
+
import tempfile
|
|
11
|
+
temp_path = Path(tempfile.gettempdir()).joinpath("generic_instructions.md")
|
|
12
|
+
temp_path.write_text(data=text, encoding="utf-8")
|
|
13
|
+
return temp_path
|
|
@@ -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():
|