machineconfig 6.82__py3-none-any.whl → 8.51__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- machineconfig/cluster/remote/cloud_manager.py +1 -1
- machineconfig/cluster/remote/run_cluster.py +1 -1
- machineconfig/cluster/remote/run_remote.py +1 -1
- machineconfig/cluster/sessions_managers/utils/maker.py +29 -15
- machineconfig/cluster/sessions_managers/wt_local.py +17 -222
- machineconfig/cluster/sessions_managers/wt_local_manager.py +56 -194
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +42 -198
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +1 -1
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +4 -2
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +3 -2
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +2 -2
- machineconfig/jobs/installer/checks/check_installations.py +133 -0
- machineconfig/jobs/installer/checks/install_utils.py +132 -0
- machineconfig/jobs/installer/checks/report_utils.py +39 -0
- machineconfig/jobs/installer/checks/vt_utils.py +89 -0
- machineconfig/jobs/installer/installer_data.json +1500 -310
- machineconfig/jobs/installer/linux_scripts/docker.sh +6 -9
- machineconfig/jobs/installer/linux_scripts/q.sh +10 -7
- machineconfig/jobs/installer/linux_scripts/redis.sh +1 -0
- machineconfig/jobs/installer/package_groups.py +62 -91
- machineconfig/jobs/installer/powershell_scripts/install_fonts.ps1 +129 -34
- machineconfig/jobs/installer/{custom → python_scripts}/boxes.py +2 -3
- machineconfig/jobs/installer/{custom_dev → python_scripts}/brave.py +5 -3
- machineconfig/jobs/installer/python_scripts/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/code.py +14 -9
- machineconfig/jobs/installer/{custom_dev → python_scripts}/dubdb_adbc.py +1 -1
- machineconfig/jobs/installer/python_scripts/hx.py +214 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerdfont.py +2 -2
- machineconfig/jobs/installer/{custom_dev → python_scripts}/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/python_scripts/sysabc.py +145 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/wezterm.py +2 -19
- machineconfig/jobs/installer/{custom_dev → python_scripts}/winget.py +10 -14
- machineconfig/jobs/installer/python_scripts/yazi.py +139 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nfs +0 -1
- machineconfig/jobs/scripts/powershell_scripts/cmatrix.ps1 +52 -0
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +13 -0
- machineconfig/jobs/scripts/powershell_scripts/obs.ps1 +4 -0
- machineconfig/jobs/scripts_dynamic/a.py +428 -0
- machineconfig/logger.py +1 -2
- machineconfig/profile/create_helper.py +56 -18
- machineconfig/profile/create_links.py +79 -21
- machineconfig/profile/create_links_export.py +87 -36
- machineconfig/profile/create_shell_profile.py +92 -127
- machineconfig/profile/mapper_data.toml +45 -0
- machineconfig/profile/mapper_dotfiles.toml +249 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/wrap_mcfg +46 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +85 -165
- machineconfig/scripts/python/ai/initai.py +4 -2
- machineconfig/scripts/python/ai/scripts/__init__.py +1 -0
- machineconfig/scripts/python/ai/scripts/command_runner.ps1 +33 -0
- machineconfig/scripts/python/ai/{command_runner → scripts}/command_runner.sh +1 -1
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +2 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +8 -6
- machineconfig/scripts/python/ai/solutions/claude/claude.py +1 -1
- machineconfig/scripts/python/ai/solutions/cline/cline.py +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Thinking-Beast-Mode.chatmode.md → agents/Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md → agents/Ultimate-Transparent-Thinking-Beast-Mode.agent.md} +0 -1
- machineconfig/scripts/python/ai/solutions/copilot/{chatmodes/deepResearch.chatmode.md → agents/deepResearch.agent.md} +2 -2
- machineconfig/scripts/python/ai/solutions/copilot/github_copilot.py +6 -6
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +33 -0
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/watch_exec.prompt.md +20 -0
- machineconfig/scripts/python/ai/solutions/crush/crush.py +1 -1
- machineconfig/scripts/python/ai/solutions/cursor/cursors.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/gemini.py +1 -1
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +3 -0
- machineconfig/scripts/python/ai/{generate_files.py → utils/generate_files.py} +2 -2
- machineconfig/scripts/python/ai/{solutions → utils}/generic.py +2 -15
- machineconfig/scripts/python/ai/{vscode_tasks.py → utils/vscode_tasks.py} +13 -5
- machineconfig/scripts/python/cloud.py +58 -11
- machineconfig/scripts/python/croshell.py +10 -162
- machineconfig/scripts/python/devops.py +73 -36
- machineconfig/scripts/python/devops_navigator.py +16 -6
- machineconfig/scripts/python/fire_jobs.py +8 -222
- machineconfig/scripts/python/ftpx.py +7 -200
- machineconfig/scripts/python/graph/cli_graph.json +8743 -0
- machineconfig/scripts/python/{env_manager → helper_env}/path_manager_tui.py +2 -2
- machineconfig/scripts/python/helpers/helper_env/env_manager_tui.py +204 -0
- machineconfig/scripts/python/helpers/helper_env/path_manager_tui.py +228 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_crush.json +1 -1
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_crush.py +39 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/fire_cursor_agents.py +3 -4
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_gemini.py +55 -0
- machineconfig/scripts/python/helpers/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers/helpers_agents/agents_impl.py +168 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_launch.py +38 -16
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_helper_types.py +11 -14
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aichat/config.yaml +5 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/aider/.aider.conf.yml +2 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/copilot/config.yml +1 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/crush/crush.json +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/configs/gemini/settings.json +12 -0
- machineconfig/scripts/python/helpers/helpers_agents/privacy/privacy.py +109 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/prompt.txt +10 -0
- machineconfig/scripts/python/helpers/helpers_agents/templates/template.sh +34 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_copy.py +32 -25
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_mount.py +29 -22
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_sync.py +9 -8
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers2.py +1 -1
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/crosh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_croshell/croshell_impl.py +225 -0
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/scheduler.py +4 -4
- machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/start_slidev.py +12 -12
- machineconfig/scripts/python/helpers/helpers_devops/backup_config.py +149 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_backup_retrieve.py +262 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config.py +98 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_config_dotfile.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_data.py +67 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_nw.py +201 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_repos.py +274 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_self.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_file.py +151 -0
- machineconfig/scripts/python/helpers/helpers_devops/cli_share_server.py +125 -0
- machineconfig/scripts/python/{helpers_devops/cli_terminal.py → helpers/helpers_devops/cli_share_terminal.py} +26 -22
- machineconfig/scripts/python/helpers/helpers_devops/cli_ssh.py +167 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_status.py +17 -23
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/devops_update_repos.py +1 -1
- machineconfig/scripts/python/{interactive.py → helpers/helpers_devops/interactive.py} +78 -71
- machineconfig/scripts/python/helpers/helpers_devops/run_script.py +197 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.ps1 +41 -0
- machineconfig/scripts/python/helpers/helpers_devops/themes/choose_starship_theme.sh +48 -0
- machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_wezterm_theme.py +4 -4
- machineconfig/scripts/python/{helpers_fire/helpers4.py → helpers/helpers_fire_command/file_wrangler.py} +57 -20
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_args_helper.py +1 -0
- machineconfig/scripts/python/helpers/helpers_fire_command/fire_jobs_impl.py +233 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/fire_jobs_route_helper.py +26 -16
- machineconfig/scripts/python/helpers/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/python/helpers/helpers_msearch/msearch_impl.py +248 -0
- machineconfig/scripts/{linux → python/helpers/helpers_msearch/scripts_linux}/fzfg +6 -5
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_linux/search_with_context.sh +48 -0
- machineconfig/scripts/python/helpers/helpers_msearch/scripts_windows/fzfg.ps1 +59 -0
- machineconfig/scripts/python/helpers/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers/helpers_navigator/cli_graph_loader.py +234 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/command_builder.py +61 -13
- machineconfig/scripts/python/helpers/helpers_navigator/command_detail.py +153 -0
- machineconfig/scripts/python/helpers/helpers_navigator/command_tree.py +45 -0
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/data_models.py +18 -11
- machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/main_app.py +5 -5
- machineconfig/scripts/python/helpers/helpers_network/address.py +174 -0
- machineconfig/scripts/python/helpers/helpers_network/address_switch.py +78 -0
- machineconfig/scripts/python/helpers/helpers_network/ftpx_impl.py +276 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nfs.py +2 -2
- machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_ssh.py +3 -3
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_identity.py +73 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_add_ssh_key.py +175 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_linux.py +319 -0
- machineconfig/scripts/python/helpers/helpers_network/ssh_debug_windows.py +275 -0
- machineconfig/scripts/python/{nw → helpers/helpers_network}/wifi_conn.py +1 -53
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/action_helper.py +3 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/clone.py +0 -1
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/cloud_repo_sync.py +159 -48
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/grource.py +4 -3
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/record.py +33 -12
- machineconfig/scripts/python/helpers/helpers_repos/repo_analyzer_1.py +160 -0
- machineconfig/scripts/python/{helpers_repos/count_lines.py → helpers/helpers_repos/repo_analyzer_2.py} +156 -191
- machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/update.py +0 -6
- machineconfig/scripts/python/helpers/helpers_search/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/helpers_search/qr_code.py +166 -0
- machineconfig/scripts/python/helpers/helpers_search/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/helpers_search/script_help.py +81 -0
- machineconfig/scripts/python/helpers/helpers_search/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers/helpers_sessions/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_sessions/sessions_impl.py +186 -0
- machineconfig/scripts/python/{helpers_sessions → helpers/helpers_sessions}/sessions_multiprocess.py +20 -14
- machineconfig/scripts/python/helpers/helpers_terminal/__init__.py +0 -0
- machineconfig/scripts/python/helpers/helpers_terminal/terminal_impl.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/download.py +150 -0
- machineconfig/scripts/python/helpers/helpers_utils/pdf.py +96 -0
- machineconfig/scripts/python/helpers/helpers_utils/python.py +210 -0
- machineconfig/scripts/python/helpers/helpers_utils/specs.py +246 -0
- machineconfig/scripts/python/mcfg_entry.py +143 -0
- machineconfig/scripts/python/msearch.py +26 -0
- machineconfig/scripts/python/sessions.py +69 -135
- machineconfig/scripts/python/terminal.py +58 -0
- machineconfig/scripts/python/utils.py +115 -38
- machineconfig/scripts/windows/wrap_mcfg.ps1 +63 -0
- machineconfig/settings/atuin/config.toml +294 -0
- machineconfig/settings/atuin/themes/catppuccin-mocha-mauve.toml +12 -0
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +3 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +14 -16
- machineconfig/settings/linters/.ruff.toml +2 -1
- machineconfig/settings/marimo/marimo.toml +1 -1
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/mprocs/windows/mprocs.yaml +2 -2
- machineconfig/settings/shells/bash/init.sh +47 -12
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +1 -1
- machineconfig/settings/shells/nushell/config.nu +25 -33
- machineconfig/settings/shells/nushell/env.nu +21 -8
- machineconfig/settings/shells/nushell/init.nu +138 -0
- machineconfig/settings/shells/pwsh/init.ps1 +111 -17
- machineconfig/settings/shells/pwsh/search_pwsh_history.ps1 +99 -0
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +6 -1
- machineconfig/settings/shells/wt/settings.json +27 -18
- machineconfig/settings/shells/zsh/init.sh +42 -23
- machineconfig/settings/television/cable_unix/alias.toml +8 -0
- machineconfig/settings/television/cable_unix/aws-buckets.toml +14 -0
- machineconfig/settings/television/cable_unix/aws-instances.toml +13 -0
- machineconfig/settings/television/cable_unix/bash-history.toml +8 -0
- machineconfig/settings/television/cable_unix/channels.toml +19 -0
- machineconfig/settings/television/cable_unix/dirs.toml +13 -0
- machineconfig/settings/television/cable_unix/distrobox-list.toml +42 -0
- machineconfig/settings/television/cable_unix/docker-images.toml +13 -0
- machineconfig/settings/television/cable_unix/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_unix/env.toml +17 -0
- machineconfig/settings/television/cable_unix/files.toml +11 -0
- machineconfig/settings/television/cable_unix/fish-history.toml +8 -0
- machineconfig/settings/television/cable_unix/git-branch.toml +11 -0
- machineconfig/settings/television/cable_unix/git-diff.toml +10 -0
- machineconfig/settings/television/cable_unix/git-log.toml +12 -0
- machineconfig/settings/television/cable_unix/git-reflog.toml +12 -0
- machineconfig/settings/television/cable_unix/git-repos.toml +16 -0
- machineconfig/settings/television/cable_unix/guix.toml +20 -0
- machineconfig/settings/television/cable_unix/just-recipes.toml +18 -0
- machineconfig/settings/television/cable_unix/k8s-deployments.toml +36 -0
- machineconfig/settings/television/cable_unix/k8s-pods.toml +50 -0
- machineconfig/settings/television/cable_unix/k8s-services.toml +36 -0
- machineconfig/settings/television/cable_unix/man-pages.toml +24 -0
- machineconfig/settings/television/cable_unix/nu-history.toml +7 -0
- machineconfig/settings/television/cable_unix/procs.toml +20 -0
- machineconfig/settings/television/cable_unix/text.toml +17 -0
- machineconfig/settings/television/cable_unix/tldr.toml +18 -0
- machineconfig/settings/television/cable_unix/zsh-history.toml +9 -0
- machineconfig/settings/television/cable_windows/alias.toml +7 -0
- machineconfig/settings/television/cable_windows/dirs.toml +13 -0
- machineconfig/settings/television/cable_windows/docker-images.toml +13 -0
- machineconfig/settings/television/cable_windows/dotfiles.toml +11 -0
- machineconfig/settings/television/cable_windows/env.toml +17 -0
- machineconfig/settings/television/cable_windows/files.toml +14 -0
- machineconfig/settings/television/cable_windows/git-branch.toml +11 -0
- machineconfig/settings/television/cable_windows/git-diff.toml +10 -0
- machineconfig/settings/television/cable_windows/git-log.toml +11 -0
- machineconfig/settings/television/cable_windows/git-reflog.toml +11 -0
- machineconfig/settings/television/cable_windows/git-repos.toml +15 -0
- machineconfig/settings/television/cable_windows/nu-history.toml +7 -0
- machineconfig/settings/television/cable_windows/pwsh-history.toml +6 -0
- machineconfig/settings/television/cable_windows/text.toml +17 -0
- machineconfig/settings/tv/config.toml +234 -0
- machineconfig/settings/tv/themes/catppuccin-mocha-sky.toml +22 -0
- machineconfig/settings/wsl/.wslconfig +5 -30
- machineconfig/settings/wt/__init__.py +0 -0
- machineconfig/settings/yazi/init.lua +61 -0
- machineconfig/settings/yazi/keymap_linux.toml +94 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/theme.toml +4 -0
- machineconfig/settings/yazi/yazi_linux.toml +94 -0
- machineconfig/settings/yazi/yazi_windows.toml +58 -0
- machineconfig/settings/zellij/layouts/st.kdl +40 -9
- machineconfig/settings/zellij/layouts/st2.kdl +1 -1
- machineconfig/setup_linux/__init__.py +2 -2
- machineconfig/setup_linux/apps_desktop.sh +8 -27
- machineconfig/setup_linux/web_shortcuts/interactive.sh +27 -12
- machineconfig/setup_linux/web_shortcuts/live_from_github.sh +34 -0
- machineconfig/setup_mac/__init__.py +1 -4
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_windows/__init__.py +2 -5
- machineconfig/setup_windows/uv.ps1 +8 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -12
- machineconfig/setup_windows/web_shortcuts/live_from_github.ps1 +31 -0
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/type_hinting/sql/__init__.py +1 -0
- machineconfig/type_hinting/sql/base.py +216 -0
- machineconfig/type_hinting/sql/core_schema.py +64 -0
- machineconfig/type_hinting/sql/core_schema_typeddict.py +41 -0
- machineconfig/type_hinting/sql/typeddict_codegen.py +222 -0
- machineconfig/type_hinting/typedict/__init__.py +1 -0
- machineconfig/type_hinting/typedict/ast_utils.py +130 -0
- machineconfig/type_hinting/typedict/generator_helpers.py +319 -0
- machineconfig/type_hinting/typedict/generators.py +231 -0
- machineconfig/type_hinting/typedict/polars_schema.py +24 -0
- machineconfig/type_hinting/typedict/polars_schema_typeddict.py +63 -0
- machineconfig/utils/accessories.py +31 -4
- machineconfig/utils/code.py +163 -51
- machineconfig/utils/files/ascii_art.py +11 -15
- machineconfig/utils/files/headers.py +6 -7
- machineconfig/utils/files/read.py +8 -1
- machineconfig/utils/installer_utils/github_release_bulk.py +95 -138
- machineconfig/utils/installer_utils/github_release_scraper.py +99 -0
- machineconfig/utils/installer_utils/install_from_url.py +183 -0
- machineconfig/utils/installer_utils/installer_class.py +53 -102
- machineconfig/utils/installer_utils/installer_cli.py +161 -0
- machineconfig/utils/installer_utils/installer_helper.py +129 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +42 -91
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +20 -65
- machineconfig/utils/io.py +94 -9
- machineconfig/utils/links.py +56 -38
- machineconfig/utils/meta.py +38 -21
- machineconfig/utils/options.py +81 -23
- machineconfig/utils/options_utils/__init__.py +0 -0
- machineconfig/utils/options_utils/options_tv_linux.py +211 -0
- machineconfig/utils/options_utils/options_tv_windows.py +88 -0
- machineconfig/utils/options_utils/tv_options.py +37 -0
- machineconfig/utils/path_extended.py +52 -102
- machineconfig/utils/path_helper.py +76 -23
- machineconfig/utils/procs.py +1 -1
- machineconfig/utils/scheduler.py +26 -53
- machineconfig/utils/scheduling.py +0 -2
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +1 -1
- machineconfig/utils/schemas/layouts/layout_types.py +1 -1
- machineconfig/utils/source_of_truth.py +6 -1
- machineconfig/utils/ssh.py +216 -419
- machineconfig/utils/ssh_utils/abc.py +5 -0
- machineconfig/utils/ssh_utils/copy_from_here.py +116 -0
- machineconfig/utils/ssh_utils/copy_to_here.py +303 -0
- machineconfig/utils/ssh_utils/utils.py +158 -0
- machineconfig/utils/ssh_utils/wsl.py +147 -0
- machineconfig/utils/ssh_utils/wsl_helper.py +217 -0
- machineconfig/utils/terminal.py +1 -0
- machineconfig/utils/upgrade_packages.py +107 -35
- machineconfig/utils/ve.py +12 -4
- machineconfig-8.51.dist-info/METADATA +140 -0
- machineconfig-8.51.dist-info/RECORD +543 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/entry_points.txt +4 -1
- machineconfig/jobs/installer/check_installations.py +0 -248
- machineconfig/jobs/installer/custom/hx.py +0 -140
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -41
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -71
- machineconfig/jobs/installer/powershell_scripts/archive_pygraphviz.ps1 +0 -12
- machineconfig/jobs/installer/powershell_scripts/openssh-server_add_key.ps1 +0 -7
- machineconfig/jobs/installer/powershell_scripts/openssh-server_copy-ssh-id.ps1 +0 -14
- machineconfig/profile/backup.toml +0 -49
- machineconfig/profile/mapper.toml +0 -256
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzfag +0 -17
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/fzfrga +0 -21
- machineconfig/scripts/linux/mcfgs +0 -38
- machineconfig/scripts/linux/other/share_smb +0 -1
- machineconfig/scripts/linux/other/switch_ip +0 -20
- machineconfig/scripts/linux/skrg +0 -4
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/command_runner/prompt.txt +0 -9
- machineconfig/scripts/python/helpers_devops/cli_config.py +0 -120
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +0 -77
- machineconfig/scripts/python/helpers_devops/cli_data.py +0 -25
- machineconfig/scripts/python/helpers_devops/cli_nw.py +0 -73
- machineconfig/scripts/python/helpers_devops/cli_repos.py +0 -181
- machineconfig/scripts/python/helpers_devops/cli_self.py +0 -122
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +0 -104
- machineconfig/scripts/python/helpers_devops/cli_utils.py +0 -221
- machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py +0 -80
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +0 -3
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_crush.py +0 -37
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_gemini.py +0 -44
- machineconfig/scripts/python/helpers_fire/agentic_frameworks/fire_qwen.py +0 -43
- machineconfig/scripts/python/helpers_fire/prompt.txt +0 -2
- machineconfig/scripts/python/helpers_fire/template.sh +0 -15
- machineconfig/scripts/python/helpers_navigator/__init__.py +0 -20
- machineconfig/scripts/python/helpers_navigator/command_detail.py +0 -44
- machineconfig/scripts/python/helpers_navigator/command_tree.py +0 -588
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +0 -17
- machineconfig/scripts/python/helpers_repos/entrypoint.py +0 -76
- machineconfig/scripts/python/helpers_repos/secure_repo.py +0 -15
- machineconfig/scripts/python/mcfg.py +0 -48
- machineconfig/scripts/python/nw/add_ssh_key.py +0 -148
- machineconfig/scripts/python/nw/devops_add_identity.py +0 -82
- machineconfig/scripts/python/nw/devops_add_ssh_key.py +0 -134
- machineconfig/scripts/python/nw/ssh_debug_linux.py +0 -391
- machineconfig/scripts/python/nw/ssh_debug_windows.py +0 -338
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +0 -66
- machineconfig/scripts/windows/fzfb.ps1 +0 -3
- machineconfig/scripts/windows/fzfg.ps1 +0 -2
- machineconfig/scripts/windows/fzfrga.bat +0 -20
- machineconfig/scripts/windows/mcfgs.ps1 +0 -17
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +0 -13
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/settings/lf/windows/fzf_edit.ps1 +0 -6
- machineconfig/settings/lf/windows/tst.ps1 +0 -1
- machineconfig/settings/yazi/yazi.toml +0 -4
- machineconfig/setup_linux/apps.sh +0 -66
- machineconfig/setup_linux/others/cli_installation.sh +0 -137
- machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +0 -30
- machineconfig/setup_linux/ssh/openssh_all.sh +0 -25
- machineconfig/setup_linux/ssh/openssh_wsl.sh +0 -38
- machineconfig/setup_mac/apps.sh +0 -73
- machineconfig/setup_mac/ssh/openssh_setup.sh +0 -114
- machineconfig/setup_windows/apps.ps1 +0 -62
- machineconfig/setup_windows/others/obs.ps1 +0 -4
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +0 -29
- machineconfig/setup_windows/ssh/add_identity.ps1 +0 -11
- machineconfig/setup_windows/ssh/openssh-server.ps1 +0 -37
- machineconfig/utils/installer_utils/installer.py +0 -225
- machineconfig/utils/tst.py +0 -20
- machineconfig-6.82.dist-info/METADATA +0 -82
- machineconfig-6.82.dist-info/RECORD +0 -441
- machineconfig/jobs/installer/{custom_dev → checks}/__init__.py +0 -0
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +0 -0
- machineconfig/{scripts/python/helpers_cloud → jobs/installer/python_scripts}/__init__.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/alacritty.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/bypass_paywall.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/cursor.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/espanso.py +0 -0
- machineconfig/jobs/installer/{custom → python_scripts}/gh.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/goes.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/lvim.py +0 -0
- machineconfig/jobs/installer/{custom_dev → python_scripts}/redis.py +0 -0
- machineconfig/{setup_linux/others → jobs/scripts/bash_scripts}/android.sh +0 -0
- machineconfig/jobs/{installer/linux_scripts → scripts/bash_scripts}/lid.sh +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_nw_drive +0 -0
- machineconfig/{scripts/python/nw → jobs/scripts/bash_scripts}/mount_smb +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_cloud.sh +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/share_nfs +0 -0
- machineconfig/{scripts/linux/other → jobs/scripts/bash_scripts}/start_docker +0 -0
- machineconfig/{scripts → jobs/scripts/powershell_scripts}/Restore-ThunderbirdProfile.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/docker.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nfs.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_nw.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/mount_smb.ps1 +0 -0
- machineconfig/{setup_windows/others → jobs/scripts/powershell_scripts}/power_options.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_cloud.cmd +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/share_smb.ps1 +0 -0
- machineconfig/{scripts/windows/mounts → jobs/scripts/powershell_scripts}/unlock_bitlocker.ps1 +0 -0
- machineconfig/scripts/python/{helpers_croshell → ai/utils}/__init__.py +0 -0
- machineconfig/scripts/python/ai/{solutions/_shared.py → utils/shared.py} +0 -0
- machineconfig/scripts/python/{helpers_devops → graph}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_devops/themes → helpers}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/__init__.py +0 -0
- machineconfig/scripts/python/{env_manager → helpers/helper_env}/path_manager_backend.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/agentic_frameworks/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_help_search.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents}/fire_agents_load_balancer.py +0 -0
- machineconfig/scripts/python/{helpers_fire → helpers/helpers_agents/templates}/template.ps1 +0 -0
- machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers_cloud → helpers/helpers_cloud}/helpers5.py +0 -0
- /machineconfig/scripts/python/{helpers_sessions → helpers/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/pomodoro.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer.py +0 -0
- /machineconfig/scripts/python/{helpers_croshell → helpers/helpers_croshell}/viewer_template.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_devops}/__init__.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → scripts/python/helpers/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/scripts/python/{helpers_devops → helpers/helpers_devops}/themes/choose_pwsh_theme.ps1 +0 -0
- /machineconfig/scripts/python/{helpers_devops/themes/choose_starship_theme.ps1 → helpers/helpers_fire_command/__init__.py} +0 -0
- /machineconfig/scripts/python/{helpers_fire_command → helpers/helpers_fire_command}/cloud_manager.py +0 -0
- /machineconfig/scripts/python/{helpers_fire_command/fire_jobs_streamlit_helper.py → helpers/helpers_fire_command/f.py} +0 -0
- /machineconfig/{settings/shells/pwsh/profile.ps1 → scripts/python/helpers/helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/python/{helpers_navigator → helpers/helpers_navigator}/search_bar.py +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers/helpers_network/__init__.py} +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/mount_nw_drive.py +0 -0
- /machineconfig/scripts/python/{nw → helpers/helpers_network}/onetimeshare.py +0 -0
- /machineconfig/scripts/python/{helpers_repos → helpers/helpers_repos}/sync.py +0 -0
- /machineconfig/{setup_windows/wt_and_pwsh → settings/wt}/set_wt_settings.py +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/WHEEL +0 -0
- {machineconfig-6.82.dist-info → machineconfig-8.51.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
@@ -1,166 +1,92 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Agents management commands - lazy loading subcommands."""
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
from typing import cast, Optional, get_args, Annotated
|
|
3
|
+
from typing import Optional, get_args, Annotated, Literal
|
|
7
4
|
import typer
|
|
8
|
-
from machineconfig.scripts.python.
|
|
5
|
+
from machineconfig.scripts.python.helpers.helpers_agents.fire_agents_helper_types import AGENTS, HOST, PROVIDER
|
|
9
6
|
|
|
10
7
|
|
|
11
|
-
def
|
|
8
|
+
def agents_create(
|
|
12
9
|
agent: Annotated[AGENTS, typer.Option(..., "--agents", "-a", help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}")],
|
|
13
10
|
host: Annotated[HOST, typer.Option(..., "--host", "-h", help=f"Machine to run agents on. One of {', '.join(get_args(HOST))}")],
|
|
14
|
-
model: Annotated[
|
|
11
|
+
model: Annotated[str, typer.Option(..., "--model", "-m", help="Model to use (for crush agent).")],
|
|
15
12
|
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[
|
|
13
|
+
context_path: Annotated[Optional[str], typer.Option(..., "--context-path", "-c", help="Path to the context file/folder, defaults to .ai/todo/")] = None,
|
|
17
14
|
separator: Annotated[str, typer.Option(..., "--separator", "-s", help="Separator for context")] = "\n",
|
|
18
15
|
agent_load: Annotated[int, typer.Option(..., "--agent-load", "-al", help="Number of tasks per prompt")] = 13,
|
|
19
16
|
prompt: Annotated[Optional[str], typer.Option(..., "--prompt", "-P", help="Prompt prefix as string")] = None,
|
|
20
|
-
prompt_path: Annotated[Optional[
|
|
17
|
+
prompt_path: Annotated[Optional[str], typer.Option(..., "--prompt-path", "-pp", help="Path to prompt file")] = None,
|
|
21
18
|
job_name: Annotated[str, typer.Option(..., "--job-name", "-j", help="Job name")] = "AI_Agents",
|
|
22
19
|
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[
|
|
25
|
-
):
|
|
26
|
-
|
|
27
|
-
from machineconfig.scripts.python.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if len(provided_prompt) != 1:
|
|
36
|
-
raise typer.BadParameter("Exactly one of --prompt or --prompt-path must be provided")
|
|
37
|
-
|
|
38
|
-
repo_root = get_repo_root(Path.cwd())
|
|
39
|
-
if repo_root is None:
|
|
40
|
-
typer.echo("💥 Could not determine the repository root. Please run this script from within a git repository.")
|
|
41
|
-
raise typer.Exit(1)
|
|
42
|
-
typer.echo(f"Operating @ {repo_root}")
|
|
43
|
-
|
|
44
|
-
if context_path is None:
|
|
45
|
-
context_path = repo_root / ".ai" / "todo"
|
|
46
|
-
|
|
47
|
-
context_path_resolved = context_path.expanduser().resolve()
|
|
48
|
-
if not context_path_resolved.exists():
|
|
49
|
-
raise typer.BadParameter(f"Path does not exist: {context_path_resolved}")
|
|
50
|
-
|
|
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}")
|
|
20
|
+
output_path: Annotated[Optional[str], typer.Option(..., "--output-path", "-o", help="Path to write the layout.json file")] = None,
|
|
21
|
+
agents_dir: Annotated[Optional[str], typer.Option(..., "--agents-dir", "-ad", help="Directory to store agent files. If not provided, will be constructed automatically.")] = None,
|
|
22
|
+
) -> None:
|
|
23
|
+
"""Create agents layout file, ready to run."""
|
|
24
|
+
from machineconfig.scripts.python.helpers.helpers_agents.agents_impl import agents_create as impl
|
|
25
|
+
try:
|
|
26
|
+
impl(agent=agent, host=host, model=model, provider=provider, context_path=context_path, separator=separator, agent_load=agent_load, prompt=prompt, prompt_path=prompt_path, job_name=job_name, separate=separate, output_path=output_path, agents_dir=agents_dir)
|
|
27
|
+
except ValueError as e:
|
|
28
|
+
raise typer.BadParameter(str(e)) from e
|
|
29
|
+
except RuntimeError as e:
|
|
30
|
+
typer.echo(str(e))
|
|
31
|
+
raise typer.Exit(1) from e
|
|
61
32
|
|
|
62
|
-
if prompt_path is not None:
|
|
63
|
-
prompt_prefix = prompt_path.read_text(encoding="utf-8")
|
|
64
|
-
else:
|
|
65
|
-
prompt_prefix = cast(str, prompt)
|
|
66
|
-
agent_selected = agent
|
|
67
|
-
if agents_dir is None: agents_dir = repo_root / ".ai" / f"tmp_prompts/{job_name}_{randstr()}"
|
|
68
|
-
else:
|
|
69
|
-
import shutil
|
|
70
|
-
if agents_dir.exists():
|
|
71
|
-
shutil.rmtree(agents_dir)
|
|
72
|
-
prep_agent_launch(repo_root=repo_root, agents_dir=agents_dir, prompts_material=prompt_material_re_splitted,
|
|
73
|
-
keep_material_in_separate_file=separate,
|
|
74
|
-
prompt_prefix=prompt_prefix, machine=host, agent=agent_selected, model=model, provider=provider,
|
|
75
|
-
job_name=job_name)
|
|
76
|
-
layoutfile = get_agents_launch_layout(session_root=agents_dir)
|
|
77
|
-
regenerate_py_code = f"""
|
|
78
|
-
#!/usr/bin/env uv run --python 3.14 --with machineconfig
|
|
79
|
-
agents create "{context_path_resolved}" \\
|
|
80
|
-
--prompt-path "{prompt_path or ''}" \\
|
|
81
|
-
--agent "{agent_selected}" \\
|
|
82
|
-
--host "{host}" \\
|
|
83
|
-
--job-name "{job_name}" \\
|
|
84
|
-
--agent_load {agent_load} \\
|
|
85
|
-
--separator "{separator}" \\
|
|
86
|
-
{"--separate" if separate else ""}
|
|
87
|
-
"""
|
|
88
|
-
(agents_dir / "aa_agents_relaunch.py").write_text(data=regenerate_py_code, encoding="utf-8")
|
|
89
|
-
layout_output_path = output_path if output_path is not None else agents_dir / "layout.json"
|
|
90
|
-
layout_output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
91
|
-
layout_output_path.write_text(data=json.dumps(layoutfile, indent=4), encoding="utf-8")
|
|
92
|
-
typer.echo(f"Created agents in {agents_dir}")
|
|
93
|
-
typer.echo(f"Ceated layout in {layout_output_path}")
|
|
94
|
-
|
|
95
|
-
|
|
96
33
|
def collect(
|
|
97
34
|
agent_dir: Annotated[str, typer.Argument(..., help="Path to the agent directory containing the prompts folder")],
|
|
98
35
|
output_path: Annotated[str, typer.Argument(..., help="Path to write the concatenated material files")],
|
|
99
36
|
separator: Annotated[str, typer.Option(..., help="Separator to use when concatenating material files")] = "\n",
|
|
100
37
|
) -> None:
|
|
101
38
|
"""Collect all material files from an agent directory and concatenate them."""
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
for
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
typer.echo(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
typer.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
from machineconfig.utils.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
def init_config():
|
|
159
|
-
from machineconfig.scripts.python.ai.initai import add_ai_configs
|
|
160
|
-
add_ai_configs(repo_root=Path.cwd())
|
|
161
|
-
|
|
162
|
-
def get_app():
|
|
163
|
-
agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True, add_help_option=False, add_completion=False)
|
|
39
|
+
from machineconfig.scripts.python.helpers.helpers_agents.agents_impl import collect as impl
|
|
40
|
+
try:
|
|
41
|
+
impl(agent_dir=agent_dir, output_path=output_path, separator=separator)
|
|
42
|
+
except ValueError as e:
|
|
43
|
+
raise typer.BadParameter(str(e)) from e
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def make_agents_command_template() -> None:
|
|
47
|
+
"""Create a template for fire agents."""
|
|
48
|
+
from machineconfig.scripts.python.helpers.helpers_agents.agents_impl import make_agents_command_template as impl
|
|
49
|
+
try:
|
|
50
|
+
impl()
|
|
51
|
+
except ValueError as e:
|
|
52
|
+
raise typer.BadParameter(str(e)) from e
|
|
53
|
+
except RuntimeError as e:
|
|
54
|
+
typer.echo(str(e))
|
|
55
|
+
raise typer.Exit(1) from e
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
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) -> None:
|
|
59
|
+
"""Initialize AI configurations in the current repository."""
|
|
60
|
+
from machineconfig.scripts.python.helpers.helpers_agents.agents_impl import init_config as impl
|
|
61
|
+
impl(root=root)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def make_todo_files(
|
|
65
|
+
pattern: Annotated[str, typer.Argument(help="Pattern or keyword to match files by")] = ".py",
|
|
66
|
+
repo: Annotated[str, typer.Argument(help="Repository path. Can be any directory within a git repository.")] = ".",
|
|
67
|
+
strategy: Annotated[Literal["name", "keywords"], typer.Option("-s", "--strategy", help="Strategy to filter files: 'name' for filename matching, 'keywords' for content matching")] = "name",
|
|
68
|
+
exclude_init: Annotated[bool, typer.Option("-x", "--exclude-init", help="Exclude __init__.py files from the checklist")] = True,
|
|
69
|
+
include_line_count: Annotated[bool, typer.Option("-l", "--line-count", help="Include line count column in the output")] = False,
|
|
70
|
+
output_path: Annotated[str, typer.Option("-o", "--output-path", help="Base path for output files relative to repo root")] = ".ai/todo/files",
|
|
71
|
+
format_type: Annotated[Literal["csv", "md", "txt"], typer.Option("-f", "--format", help="Output format: csv, md (markdown), or txt")] = "md",
|
|
72
|
+
split_every: Annotated[Optional[int], typer.Option("--split-every", "-e", help="Split output into multiple files, each containing at most this many results")] = None,
|
|
73
|
+
split_to: Annotated[Optional[int], typer.Option("--split-to", "-t", help="Split output into exactly this many files")] = None,
|
|
74
|
+
) -> None:
|
|
75
|
+
"""Generate checklist with Python and shell script files in the repository filtered by pattern."""
|
|
76
|
+
from machineconfig.scripts.python.ai.utils.generate_files import make_todo_files as impl
|
|
77
|
+
impl(pattern=pattern, repo=repo, strategy=strategy, exclude_init=exclude_init, include_line_count=include_line_count, output_path=output_path, format_type=format_type, split_every=split_every, split_to=split_to)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def create_symlink_command(
|
|
81
|
+
num: Annotated[int, typer.Argument(help="Number of symlinks to create (1-5).")] = 5,
|
|
82
|
+
) -> None:
|
|
83
|
+
"""Create symlinks to repo_root at ~/code_copies/${repo_name}_copy_{i}."""
|
|
84
|
+
from machineconfig.scripts.python.ai.utils.generate_files import create_symlink_command as impl
|
|
85
|
+
impl(num=num)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def get_app() -> typer.Typer:
|
|
89
|
+
agents_app = typer.Typer(help="🤖 AI Agents management subcommands", no_args_is_help=True, add_help_option=True, add_completion=False)
|
|
164
90
|
sep = "\n"
|
|
165
91
|
agents_full_help = f"""
|
|
166
92
|
[c] Create agents layout file, ready to run.
|
|
@@ -168,33 +94,27 @@ def get_app():
|
|
|
168
94
|
PROVIDER options: {', '.join(get_args(PROVIDER))}
|
|
169
95
|
{sep}
|
|
170
96
|
AGENT options: {', '.join(get_args(AGENTS))}
|
|
171
|
-
{sep}
|
|
172
|
-
MODEL options: {sep.join(get_args(MODEL))}
|
|
173
97
|
"""
|
|
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
|
-
agents_app.command("make-todo", no_args_is_help=True,
|
|
184
|
-
agents_app.command("d", no_args_is_help=True,
|
|
185
|
-
|
|
186
|
-
agents_app.command(name="
|
|
187
|
-
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)
|
|
98
|
+
agents_create.__doc__ = agents_full_help
|
|
99
|
+
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)
|
|
100
|
+
agents_app.command("c", no_args_is_help=True, help=agents_create.__doc__, hidden=True)(agents_create)
|
|
101
|
+
agents_app.command("collect", no_args_is_help=True, help=collect.__doc__, short_help="[T] Collect all agent materials into a single file.")(collect)
|
|
102
|
+
agents_app.command("T", no_args_is_help=True, help=collect.__doc__, hidden=True)(collect)
|
|
103
|
+
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)
|
|
104
|
+
agents_app.command("t", no_args_is_help=False, help=make_agents_command_template.__doc__, hidden=True)(make_agents_command_template)
|
|
105
|
+
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)
|
|
106
|
+
agents_app.command("g", no_args_is_help=False, help=init_config.__doc__, hidden=True)(init_config)
|
|
107
|
+
agents_app.command("make-todo", no_args_is_help=True, short_help="[d] Generate a markdown file listing all Python files in the repo")(make_todo_files)
|
|
108
|
+
agents_app.command("d", no_args_is_help=True, hidden=True)(make_todo_files)
|
|
109
|
+
agents_app.command(name="make-symlinks", no_args_is_help=True, short_help="[s] Create symlinks to the current repo in ~/code_copies/")(create_symlink_command)
|
|
110
|
+
agents_app.command(name="s", no_args_is_help=True, hidden=True)(create_symlink_command)
|
|
188
111
|
return agents_app
|
|
189
112
|
|
|
190
113
|
|
|
191
|
-
def main():
|
|
114
|
+
def main() -> None:
|
|
192
115
|
agents_app = get_app()
|
|
193
|
-
# from trogon.typer import init_tui
|
|
194
|
-
# agents_app_tui = init_tui(agents_app)
|
|
195
116
|
agents_app()
|
|
196
|
-
# agents_app_tui()
|
|
197
117
|
|
|
198
118
|
|
|
199
|
-
if __name__ == "__main__":
|
|
119
|
+
if __name__ == "__main__":
|
|
200
120
|
pass
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from machineconfig.scripts.python.ai.
|
|
3
|
+
from machineconfig.scripts.python.ai.utils import generic
|
|
4
4
|
from machineconfig.scripts.python.ai.solutions.claude import claude
|
|
5
5
|
from machineconfig.scripts.python.ai.solutions.cline import cline
|
|
6
6
|
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
|
|
|
@@ -20,6 +20,8 @@ def add_ai_configs(repo_root: Path) -> None:
|
|
|
20
20
|
dot_scripts_dir = repo_root.joinpath(".scripts")
|
|
21
21
|
dot_scripts_dir.mkdir(parents=True, exist_ok=True)
|
|
22
22
|
generic.create_dot_scripts(repo_root=repo_root)
|
|
23
|
+
if not repo_root.joinpath(".gitignore").exists():
|
|
24
|
+
repo_root.joinpath(".gitignore").touch()
|
|
23
25
|
generic.adjust_gitignore(repo_root=repo_root)
|
|
24
26
|
|
|
25
27
|
add_lint_and_type_check_task(repo_root=repo_root)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -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
|
|
@@ -52,6 +52,8 @@ uv add --dev pylint --upgrade-package pylint
|
|
|
52
52
|
uv add --dev mypy --upgrade-package mypy
|
|
53
53
|
uv add --dev pyrefly --upgrade-package pyrefly
|
|
54
54
|
uv add --dev cleanpy --upgrade-package cleanpy
|
|
55
|
+
uv add --dev ruff --upgrade-package ruff
|
|
56
|
+
uv add --dev ty --upgrade-package ty
|
|
55
57
|
|
|
56
58
|
uv add types-requests types-toml types-PyYAML types-pytz types-paramiko types-urllib3 --dev
|
|
57
59
|
uv add types-mysqlclient types-SQLAlchemy --dev
|
|
@@ -56,6 +56,8 @@ uv add --dev pylint --upgrade-package pylint
|
|
|
56
56
|
uv add --dev mypy --upgrade-package mypy
|
|
57
57
|
uv add --dev pyrefly --upgrade-package pyrefly
|
|
58
58
|
uv add --dev cleanpy --upgrade-package cleanpy
|
|
59
|
+
uv add --dev ruff --upgrade-package ruff
|
|
60
|
+
uv add --dev ty --upgrade-package ty
|
|
59
61
|
|
|
60
62
|
uv add types-requests types-toml types-PyYAML types-pytz types-paramiko types-urllib3 --dev
|
|
61
63
|
uv add types-mysqlclient types-SQLAlchemy --dev
|
|
@@ -81,35 +83,35 @@ draw_box "🔍 TYPE CHECKERS & LINTERS 🔍" "${BOLD}${PURPLE}"
|
|
|
81
83
|
((CURRENT_STEP++))
|
|
82
84
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pyright Type Checker"
|
|
83
85
|
echo -e "${BLUE}📋 Analyzing types with Pyright...${NC}"
|
|
84
|
-
rm ./.ai/linters/issues_pyright.md || true
|
|
86
|
+
rm -f ./.ai/linters/issues_pyright.md || true
|
|
85
87
|
uv run pyright . > ./.ai/linters/issues_pyright.md
|
|
86
88
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyright.md${NC}"
|
|
87
89
|
|
|
88
90
|
((CURRENT_STEP++))
|
|
89
91
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "MyPy Type Checker"
|
|
90
92
|
echo -e "${BLUE}📋 Analyzing types with MyPy...${NC}"
|
|
91
|
-
rm ./.ai/linters/issues_mypy.md || true
|
|
93
|
+
rm -f ./.ai/linters/issues_mypy.md || true
|
|
92
94
|
uv run mypy . > ./.ai/linters/issues_mypy.md
|
|
93
95
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_mypy.md${NC}"
|
|
94
96
|
|
|
95
97
|
((CURRENT_STEP++))
|
|
96
98
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pylint Code Analysis"
|
|
97
99
|
echo -e "${BLUE}📋 Analyzing code quality with Pylint...${NC}"
|
|
98
|
-
rm ./.ai/linters/issues_pylint.md || true
|
|
99
|
-
uv run pylint
|
|
100
|
+
rm -f ./.ai/linters/issues_pylint.md || true
|
|
101
|
+
uv run pylint --recursive=y . > ./.ai/linters/issues_pylint.md
|
|
100
102
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pylint.md${NC}"
|
|
101
103
|
|
|
102
104
|
((CURRENT_STEP++))
|
|
103
105
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Pyrefly Type Checker"
|
|
104
106
|
echo -e "${BLUE}📋 Analyzing types with Pyrefly...${NC}"
|
|
105
|
-
rm ./.ai/linters/issues_pyrefly.md || true
|
|
107
|
+
rm -f ./.ai/linters/issues_pyrefly.md || true
|
|
106
108
|
uv run pyrefly check . > ./.ai/linters/issues_pyrefly.md
|
|
107
109
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_pyrefly.md${NC}"
|
|
108
110
|
|
|
109
111
|
((CURRENT_STEP++))
|
|
110
112
|
draw_progress $CURRENT_STEP $TOTAL_STEPS "Ruff Linter"
|
|
111
113
|
echo -e "${BLUE}📋 Checking code style with Ruff...${NC}"
|
|
112
|
-
rm ./.ai/linters/issues_ruff.md || true
|
|
114
|
+
rm -f ./.ai/linters/issues_ruff.md || true
|
|
113
115
|
uv run ruff check . > ./.ai/linters/issues_ruff.md
|
|
114
116
|
echo -e "${GREEN}✅ Results saved to ${UNDERLINE}./.ai/linters/issues_ruff.md${NC}"
|
|
115
117
|
|
|
@@ -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.
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from machineconfig.scripts.python.ai.
|
|
3
|
+
from machineconfig.scripts.python.ai.utils.shared import get_generic_instructions_path
|
|
4
4
|
from machineconfig.utils.source_of_truth import LIBRARY_ROOT
|
|
5
5
|
|
|
6
6
|
|
|
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():
|
|
@@ -35,11 +35,44 @@ applyTo: "**/*.py"
|
|
|
35
35
|
* Please run `uv run -m pyright $file_touched` and address all issues. if `pyright is not there, first run `uv add pyright --dev`.
|
|
36
36
|
* For all type checkers and linters, like mypy, pyright, pyrefly and pylint, there are config files at different levels of the repo all the way up to home directory level. You don't need to worry about them, just be mindful that they exist. The tools themselves will respect the configs therein.
|
|
37
37
|
* If you want to run all linters and pycheckers agains the entire project to make sure everything is clean, I prepared a nice shell script, you can run it from the repo root as `./.ai/scripts/lint_and_type_check.sh`. It will produce markdown files that are you are meant to look at @ ./.ai/linters/*.md
|
|
38
|
+
* Rust-inspired style, e.g.
|
|
39
|
+
from typing import Literal, Optional, TypeAlias
|
|
40
|
+
class Success:
|
|
41
|
+
def __init__(self, value: int):
|
|
42
|
+
self.value = value
|
|
43
|
+
FAILURE_REASON: TypeAlias = Literal["cache_missing", "service_history_missing"]
|
|
44
|
+
class Failure:
|
|
45
|
+
def __init__(self, reason: FAILURE_REASON, message: Optional[str] = None):
|
|
46
|
+
self.reason: FAILURE_REASON = reason
|
|
47
|
+
self.message = message
|
|
48
|
+
def fallible_function(a: int, b: int) -> Success | Failure:
|
|
49
|
+
if a > b: return Success(value=a+b)
|
|
50
|
+
else: return Failure(reason="service_history_missing", message="a is not greater than b")
|
|
51
|
+
def example_usage() -> None:
|
|
52
|
+
result = fallible_function(2, 3)
|
|
53
|
+
match result:
|
|
54
|
+
case Success(): # Correct
|
|
55
|
+
print("Addition succeeded.")
|
|
56
|
+
case Failure(): # <--- Looks wrong, because no variable passed, but its correct, it works like this in python3.11+
|
|
57
|
+
# Now this only matches if result IS a Failure instance
|
|
58
|
+
print("Addition failed.")
|
|
59
|
+
print(f"Reason: {result.reason}, Message: {result.message}")
|
|
60
|
+
q = result.reason
|
|
61
|
+
match q:
|
|
62
|
+
case "cache_missing":
|
|
63
|
+
print("Handle cache missing scenario.")
|
|
64
|
+
case "service_history_missing":
|
|
65
|
+
print("Handle service history missing scenario.")
|
|
66
|
+
|
|
38
67
|
|
|
39
68
|
# General Programming Ethos:
|
|
40
69
|
* Make sure all the code is rigorous, no lazy stuff.
|
|
41
70
|
* For example, always avoid default values in arguments of functions. Those are evil and cause confusion. Always be explicit in parameter passing.
|
|
42
71
|
* 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.
|
|
72
|
+
* Your code is minimal, no unrequested features, no bloat.
|
|
43
73
|
* Please avoid writing README files and avoid docstring and comments in code unless absolutely necessary. Use clear naming conventions instead of documenting.
|
|
44
74
|
* Always prefer to functional style of programming over OOP.
|
|
45
75
|
* 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.
|
|
76
|
+
|
|
77
|
+
# Privacy:
|
|
78
|
+
* No matter what, never ever open/read/write/list anything under ~/dotfiles
|