machineconfig 6.86__py3-none-any.whl → 6.87__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of machineconfig might be problematic. Click here for more details.

Files changed (23) hide show
  1. machineconfig/scripts/python/agents.py +2 -15
  2. machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
  3. machineconfig/scripts/python/fire_jobs.py +7 -10
  4. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +6 -7
  5. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +3 -4
  6. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +9 -10
  7. machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +4 -5
  8. machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +9 -6
  9. machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +4 -14
  10. machineconfig/scripts/python/helpers_devops/cli_config.py +1 -1
  11. machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
  12. machineconfig/scripts/python/helpers_fire_command/file_wrangler.py +40 -1
  13. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
  14. machineconfig/scripts/python/nw/mount_nfs +1 -1
  15. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
  16. machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
  17. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
  18. machineconfig/utils/ssh.py +1 -1
  19. {machineconfig-6.86.dist-info → machineconfig-6.87.dist-info}/METADATA +1 -1
  20. {machineconfig-6.86.dist-info → machineconfig-6.87.dist-info}/RECORD +23 -23
  21. {machineconfig-6.86.dist-info → machineconfig-6.87.dist-info}/WHEEL +0 -0
  22. {machineconfig-6.86.dist-info → machineconfig-6.87.dist-info}/entry_points.txt +0 -0
  23. {machineconfig-6.86.dist-info → machineconfig-6.87.dist-info}/top_level.txt +0 -0
@@ -5,13 +5,13 @@
5
5
  from pathlib import Path
6
6
  from typing import cast, Optional, get_args, Annotated
7
7
  import typer
8
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, HOST, MODEL, PROVIDER
8
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, HOST, PROVIDER
9
9
 
10
10
 
11
11
  def create(
12
12
  agent: Annotated[AGENTS, typer.Option(..., "--agents", "-a", help=f"Agent type. One of {', '.join(get_args(AGENTS)[:3])}")],
13
13
  host: Annotated[HOST, typer.Option(..., "--host", "-h", help=f"Machine to run agents on. One of {', '.join(get_args(HOST))}")],
14
- model: Annotated[MODEL, typer.Option(..., "--model", "-m", help=f"Model to use (for crush agent). One of {', '.join(get_args(MODEL)[:3])}")],
14
+ model: Annotated[str, typer.Option(..., "--model", "-m", help="Model to use (for crush agent).")],
15
15
  provider: Annotated[PROVIDER, typer.Option(..., "--provider", "-p", help=f"Provider to use (for crush agent). One of {', '.join(get_args(PROVIDER)[:3])}")],
16
16
  context_path: Annotated[Optional[Path], typer.Option(..., "--context-path", "-c", help="Path to the context file/folder, defaults to .ai/todo/")] = None,
17
17
  separator: Annotated[str, typer.Option(..., "--separator", "-s", help="Separator for context")] = "\n",
@@ -26,20 +26,9 @@ def create(
26
26
 
27
27
  from machineconfig.scripts.python.helpers_agents.fire_agents_help_launch import prep_agent_launch, get_agents_launch_layout
28
28
  from machineconfig.scripts.python.helpers_agents.fire_agents_load_balancer import chunk_prompts
29
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import PROVIDER2MODEL
30
29
  from machineconfig.utils.accessories import get_repo_root, randstr
31
30
  import json
32
31
 
33
- # validate model is valid for the provider
34
- valid_models_for_provider = PROVIDER2MODEL.get(provider, [])
35
- if model not in valid_models_for_provider:
36
- available_models = "\n ".join(valid_models_for_provider) if valid_models_for_provider else "(none configured)"
37
- raise typer.BadParameter(
38
- f"Model '{model}' is not valid for provider '{provider}'.\n"
39
- f"Valid models for '{provider}':\n {available_models}\n"
40
- f"All available models: {', '.join(get_args(MODEL))}"
41
- )
42
-
43
32
  # validate mutual exclusive
44
33
  prompt_options = [prompt, prompt_path]
45
34
  provided_prompt = [opt for opt in prompt_options if opt is not None]
@@ -179,8 +168,6 @@ def get_app():
179
168
  PROVIDER options: {', '.join(get_args(PROVIDER))}
180
169
  {sep}
181
170
  AGENT options: {', '.join(get_args(AGENTS))}
182
- {sep}
183
- MODEL options: {sep.join(get_args(MODEL))}
184
171
  """
185
172
  agents_app.command("create", no_args_is_help=True, help=agents_full_help)(create)
186
173
  agents_app.command("c", no_args_is_help=True, help="Create agents layout file, ready to run.", hidden=True)(create)
@@ -2,7 +2,7 @@
2
2
  # /// script
3
3
  # requires-python = ">=3.13"
4
4
  # dependencies = [
5
- # "machineconfig>=6.86",
5
+ # "machineconfig>=6.87",
6
6
  # "textual",
7
7
  # "pyperclip",
8
8
  # ]
@@ -67,18 +67,19 @@ uv run --project {repo_root} --with marimo marimo edit --host 0.0.0.0 marimo_nb.
67
67
 
68
68
  if choice_file.suffix == ".py":
69
69
  from machineconfig.scripts.python.helpers_fire_command.fire_jobs_route_helper import get_command_streamlit
70
+ with_project = f"--project {repo_root} " if repo_root is not None else ""
70
71
  if args.streamlit:
71
72
  exe = get_command_streamlit(choice_file=choice_file, environment=args.environment, repo_root=repo_root)
72
- exe = f"uv run {exe} "
73
- elif args.jupyter: exe = "uv run jupyter-lab"
73
+ exe = f"uv run {with_project} {exe} "
74
+ elif args.jupyter: exe = f"uv run {with_project} jupyter-lab"
74
75
  else:
75
76
  if args.interactive:
76
77
  _ve_root_from_file, ipy_profile = get_ve_path_and_ipython_profile(choice_file)
77
78
  if ipy_profile is None:
78
79
  ipy_profile = "default"
79
- exe = f"uv run ipython -i --no-banner --profile {ipy_profile} "
80
+ exe = f"uv run {with_project} ipython -i --no-banner --profile {ipy_profile} "
80
81
  else:
81
- exe = "uv run python "
82
+ exe = f"uv run {with_project} python "
82
83
  elif choice_file.suffix == ".ps1" or choice_file.suffix == ".sh": exe = "."
83
84
  elif choice_file.suffix == "": exe = ""
84
85
  else: raise NotImplementedError(f"File type {choice_file.suffix} not supported, in the sense that I don't know how to fire it.")
@@ -155,12 +156,8 @@ uv run --project {repo_root} --with marimo marimo edit --host 0.0.0.0 marimo_nb.
155
156
  if args.git_pull:
156
157
  command = f"\ngit -C {choice_file.parent} pull\n" + command
157
158
  if args.PathExport:
158
- if platform.system() in ["Linux", "Darwin"]:
159
- export_line = f"""export PYTHONPATH="{repo_root}""" + """:${PYTHONPATH}" """
160
- elif platform.system() == "Windows":
161
- export_line = f"""$env:PYTHONPATH="{repo_root}""" + """:$env:PYTHONPATH" """
162
- else:
163
- raise NotImplementedError(f"Platform {platform.system()} not supported.")
159
+ from machineconfig.scripts.python.helpers_fire_command.file_wrangler import add_to_path
160
+ export_line = add_to_path(path_variable="PYTHONPATH", directory=str(repo_root))
164
161
  command = export_line + "\n" + command
165
162
  if args.loop:
166
163
  if platform.system() in ["Linux", "Darwin"]:
@@ -1,21 +1,20 @@
1
1
 
2
2
  from pathlib import Path
3
3
  # import shlex
4
- from typing import Optional
5
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import HOST, PROVIDER, MODEL
4
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
6
5
 
7
6
 
8
- def fire_crush(api_key: Optional[str], model: MODEL, provider: PROVIDER, machine: HOST, prompt_path: Path, repo_root: Path) -> str:
9
- match machine:
7
+ def fire_crush(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path) -> str:
8
+ match ai_spec["machine"]:
10
9
  case "local":
11
10
  cmd = f"""
12
11
  crush run {prompt_path}
13
12
  """
14
13
  case "docker":
15
- assert api_key is not None, "API key is required for Crush agent in docker mode."
14
+ assert ai_spec["api_key"] is not None, "API key is required for Crush agent in docker mode."
16
15
  json_path = Path(__file__).parent / "fire_crush.json"
17
16
  json_template = json_path.read_text(encoding="utf-8")
18
- json_filled = json_template.replace("{api_key}", api_key).replace("{model}", model).replace("{provider}", provider)
17
+ json_filled = json_template.replace("{api_key}", ai_spec["api_key"]).replace("{model}", ai_spec["model"]).replace("{provider}", ai_spec["provider"])
19
18
  from machineconfig.utils.accessories import randstr
20
19
  temp_config_file_local = Path.home().joinpath("tmp_results/tmp_files/crush_" + randstr(8) + ".json")
21
20
  temp_config_file_local.parent.mkdir(parents=True, exist_ok=True)
@@ -23,7 +22,7 @@ crush run {prompt_path}
23
22
  cmd = f"""
24
23
 
25
24
  # -e "PATH_PROMPT=$PATH_PROMPT"
26
- # opencode --model "{provider}/{model}" run {prompt_path}
25
+ # opencode --model "{ai_spec["provider"]}/{ai_spec["model"]}" run {prompt_path}
27
26
 
28
27
 
29
28
  echo "Running prompt @ {prompt_path.relative_to(repo_root)} using Docker with Crush..."
@@ -2,11 +2,10 @@
2
2
 
3
3
  from pathlib import Path
4
4
  # import shlex
5
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import HOST
6
- from typing import Optional
5
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
7
6
 
8
- def fire_cursor(api_key: Optional[str], prompt_path: Path, machine: HOST) -> str:
9
- match machine:
7
+ def fire_cursor(ai_spec: AI_SPEC, prompt_path: Path) -> str:
8
+ match ai_spec["machine"]:
10
9
  case "local":
11
10
  # Export the environment variable so it's available to subshells
12
11
  cmd = f"""
@@ -1,26 +1,25 @@
1
1
 
2
2
  from pathlib import Path
3
3
  import shlex
4
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import HOST
5
- from typing import Optional, Literal
4
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
6
5
 
7
6
 
8
- def fire_gemini(api_key: Optional[str], model: Literal["gemini-2.5-pro"], provider: Literal["google"], machine: HOST, prompt_path: Path, repo_root: Path) -> str:
9
- _ = provider
7
+ def fire_gemini(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path) -> str:
8
+ _ = ai_spec["provider"]
10
9
  # model = "gemini-2.5-flash-lite"
11
10
  # model = None # auto-select
12
11
  # if model is None:
13
12
  # model_arg = ""
14
13
  # else:
15
- model_arg = f"--model {shlex.quote(model)}"
14
+ model_arg = f"--model {shlex.quote(ai_spec['model'])}"
16
15
  # Need a real shell for the pipeline; otherwise '| gemini ...' is passed as args to 'cat'
17
16
  safe_path = shlex.quote(str(prompt_path))
18
17
 
19
- match machine:
18
+ match ai_spec["machine"]:
20
19
  case "local":
21
20
  # Export the environment variable so it's available to subshells
22
- if api_key is not None:
23
- define_api_key = f"""export GEMINI_API_KEY="{shlex.quote(api_key)}" """
21
+ if ai_spec["api_key"] is not None:
22
+ define_api_key = f"""export GEMINI_API_KEY="{shlex.quote(ai_spec['api_key'])}" """
24
23
  else:
25
24
  define_api_key = "echo 'Warning: No GEMINI_API_KEY provided, hoping it is set in the environment.'"
26
25
  cmd = f"""
@@ -31,10 +30,10 @@ gemini {model_arg} --yolo --prompt {safe_path}
31
30
 
32
31
 
33
32
  case "docker":
34
- assert api_key is not None, "When using docker, api_key must be provided."
33
+ assert ai_spec["api_key"] is not None, "When using docker, api_key must be provided."
35
34
  cmd = f"""
36
35
  docker run -it --rm \
37
- -e GEMINI_API_KEY="{api_key}" \
36
+ -e GEMINI_API_KEY="{ai_spec['api_key']}" \
38
37
  -v "{repo_root}:/workspace/{repo_root.name}" \
39
38
  -w "/workspace/{repo_root.name}" \
40
39
  statistician/machineconfig-ai:latest \
@@ -1,11 +1,10 @@
1
1
 
2
2
  from pathlib import Path
3
3
  import shlex
4
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import HOST
5
- from typing import Optional, Literal
4
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AI_SPEC
6
5
 
7
6
 
8
- def fire_qwen(config_dir: Optional[str], model: Literal["qwen"], provider: Literal["qwen"], machine: HOST, prompt_path: Path, repo_root: Path) -> str:
7
+ def fire_qwen(ai_spec: AI_SPEC, prompt_path: Path, repo_root: Path, config_dir: str | None) -> str:
9
8
  # assert model == "qwen", "Only qwen is supported currently."
10
9
  # assert provider == "qwen", "Only qwen is supported currently."
11
10
  # model = "qwen"
@@ -14,12 +13,12 @@ def fire_qwen(config_dir: Optional[str], model: Literal["qwen"], provider: Liter
14
13
  # if model is None:
15
14
  # model_arg = ""
16
15
  # else:
17
- _ = provider
16
+ _ = ai_spec["provider"]
18
17
  # model_arg = f"--model {shlex.quote(model)}"
19
18
  # Need a real shell for the pipeline; otherwise '| gemini ...' is passed as args to 'cat'
20
19
  safe_path = shlex.quote(str(prompt_path))
21
20
 
22
- match machine:
21
+ match ai_spec["machine"]:
23
22
  case "local":
24
23
  # Export the environment variable so it's available to subshells
25
24
  cmd = f"""
@@ -2,7 +2,7 @@
2
2
  import random
3
3
  import shlex
4
4
  from pathlib import Path
5
- from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER, HOST, PROVIDER, MODEL
5
+ from machineconfig.scripts.python.helpers_agents.fire_agents_helper_types import AGENTS, AGENT_NAME_FORMATTER, HOST, PROVIDER, AI_SPEC
6
6
 
7
7
 
8
8
  def get_api_keys(provider: PROVIDER) -> list[str]:
@@ -20,7 +20,7 @@ def get_api_keys(provider: PROVIDER) -> list[str]:
20
20
 
21
21
 
22
22
  def prep_agent_launch(repo_root: Path, agents_dir: Path, prompts_material: list[str], prompt_prefix: str, keep_material_in_separate_file: bool,
23
- machine: HOST, model: MODEL, provider: PROVIDER, agent: AGENTS, *, job_name: str) -> None:
23
+ machine: HOST, model: str, provider: PROVIDER, agent: AGENTS, *, job_name: str) -> None:
24
24
  agents_dir.mkdir(parents=True, exist_ok=True)
25
25
  prompt_folder = agents_dir / "prompts"
26
26
  prompt_folder.mkdir(parents=True, exist_ok=True)
@@ -66,17 +66,20 @@ sleep 0.1
66
66
  assert provider == "google", "Gemini agent only works with google provider."
67
67
  api_keys = get_api_keys(provider="google")
68
68
  api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
69
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model="gemini-2.5-pro", agent=agent, machine=machine, api_key=api_key, api_name="gemini")
69
70
  from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_gemini import fire_gemini
70
- cmd = fire_gemini(api_key=api_key, prompt_path=prompt_path, machine=machine, model="gemini-2.5-pro", provider="google", repo_root=repo_root)
71
+ cmd = fire_gemini(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
71
72
  case "cursor-agent":
73
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_key=None, api_name="cursor")
72
74
  from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_cursor_agents import fire_cursor
73
- cmd = fire_cursor(prompt_path=prompt_path, machine=machine, api_key=None)
75
+ cmd = fire_cursor(ai_spec=ai_spec, prompt_path=prompt_path)
74
76
  raise NotImplementedError("Cursor agent is not implemented yet, api key missing")
75
77
  case "crush":
76
- from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_crush import fire_crush
77
78
  api_keys = get_api_keys(provider=provider)
78
79
  api_key = api_keys[idx % len(api_keys)] if len(api_keys) > 0 else None
79
- cmd = fire_crush(api_key=api_key, prompt_path=prompt_path, machine=machine, repo_root=repo_root, model=model, provider=provider)
80
+ ai_spec: AI_SPEC = AI_SPEC(provider=provider, model=model, agent=agent, machine=machine, api_key=api_key, api_name="crush")
81
+ from machineconfig.scripts.python.helpers_agents.agentic_frameworks.fire_crush import fire_crush
82
+ cmd = fire_crush(ai_spec=ai_spec, prompt_path=prompt_path, repo_root=repo_root)
80
83
  # case "q":
81
84
  # from machineconfig.scripts.python.helpers_fire.fire_q import fire_q
82
85
  # cmd = fire_q(api_key="", prompt_path=prompt_path, machine=machine)
@@ -19,24 +19,14 @@ from typing import Literal, TypeAlias, TypedDict
19
19
  AGENTS: TypeAlias = Literal["cursor-agent", "gemini", "qwen-code", "copilot", "crush", "q", "opencode", "kilocode", "cline", "auggie", "warp", "droid"]
20
20
  HOST: TypeAlias = Literal["local", "docker"]
21
21
  PROVIDER: TypeAlias = Literal["azure", "google", "aws", "openai", "anthropic", "openrouter", "xai"]
22
- MODEL: TypeAlias = Literal["zai/glm-4.6", "anthropic/sonnet-4.5", "google/gemini-2.5-pro", "openai/gpt-5-codex",
23
- "openrouter/supernova", "openrouter/andromeda-alpha", "x-ai/grok-4-fast:free",
24
- ]
25
- PROVIDER2MODEL: dict[PROVIDER, list[MODEL]] = {
26
- "azure": ["zai/glm-4.6"],
27
- "google": ["google/gemini-2.5-pro"],
28
- "aws": [],
29
- "openai": ["openai/gpt-5-codex"],
30
- "anthropic": ["anthropic/sonnet-4.5"],
31
- "openrouter": ["openrouter/supernova", "openrouter/andromeda-alpha"],
32
- "xai": ["x-ai/grok-4-fast:free"]
33
- }
34
22
 
35
23
  class AI_SPEC(TypedDict):
36
24
  provider: PROVIDER
37
- model: MODEL
25
+ model: str
38
26
  agent: AGENTS
39
- machine: HOST
27
+ machine: HOST
28
+ api_key: str | None
29
+ api_name: str
40
30
 
41
31
 
42
32
  AGENT_NAME_FORMATTER = "agent_{idx}_cmd.sh" # e.g., agent_0_cmd.sh
@@ -46,7 +46,7 @@ def path():
46
46
  uv_with = ["textual"]
47
47
  uv_project_dir = None
48
48
  if not Path.home().joinpath("code/machineconfig").exists():
49
- uv_with.append("machineconfig>=6.86")
49
+ uv_with.append("machineconfig>=6.87")
50
50
  else:
51
51
  uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
52
52
  run_shell_script(get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0])
@@ -41,9 +41,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
41
41
  else:
42
42
  import platform
43
43
  if platform.system() == "Windows":
44
- run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.86" """)
44
+ run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.87" """)
45
45
  else:
46
- run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.86" """)
46
+ run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.87" """)
47
47
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
48
48
  if not no_copy_assets:
49
49
  create_default_shell_profile() # involves copying assets too
@@ -68,7 +68,7 @@ def navigate():
68
68
  path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
69
69
  from machineconfig.utils.code import run_shell_script
70
70
  if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
71
- else: executable = """--with "machineconfig>=6.86,textual" """
71
+ else: executable = """--with "machineconfig>=6.87,textual" """
72
72
  run_shell_script(f"""uv run {executable} {path}""")
73
73
 
74
74
 
@@ -1,7 +1,7 @@
1
-
2
1
  from typing import Optional
3
2
  import os
4
3
  from machineconfig.utils.path_extended import PathExtended
4
+ import platform
5
5
 
6
6
 
7
7
  def search_for_files_of_interest(path_obj: PathExtended):
@@ -125,3 +125,42 @@ def wrap_import_in_try_except(import_line: str, pyfile: str, repo_root: Optional
125
125
  sys.path.append(repo_root)
126
126
  exec(f"from {Path(pyfile).stem} import *")
127
127
  print(fr"✅ Successfully imported `{pyfile}`")
128
+
129
+
130
+ def add_to_path(path_variable: str, directory: str) -> str:
131
+ """
132
+ Generate shell script to add directory to path_variable.
133
+ Handles both Windows (cmd) and Unix-like systems (bash/zsh).
134
+ Checks if variable exists before appending, otherwise creates it.
135
+ """
136
+ system = platform.system()
137
+
138
+ if system == "Windows":
139
+ script = f"""# Check if {path_variable} is defined
140
+ if (Test-Path env:{path_variable}) {{
141
+ Write-Host "Adding {directory} to existing {path_variable}"
142
+ $currentValue = [Environment]::GetEnvironmentVariable("{path_variable}", "User")
143
+ $newValue = "$currentValue;{directory}"
144
+ [Environment]::SetEnvironmentVariable("{path_variable}", $newValue, "User")
145
+ $env:{path_variable} = $newValue
146
+ }} else {{
147
+ Write-Host "Creating new {path_variable} variable"
148
+ [Environment]::SetEnvironmentVariable("{path_variable}", "{directory}", "User")
149
+ $env:{path_variable} = "{directory}"
150
+ }}
151
+ Write-Host "{path_variable} is now: $env:{path_variable}\""""
152
+ return script
153
+ else:
154
+ script = f"""#!/bin/bash
155
+ # Check if {path_variable} is defined and not empty
156
+ if [ -z "${{{path_variable}}}" ]; then
157
+ echo "Creating new {path_variable} variable"
158
+ export {path_variable}="{directory}"
159
+ else
160
+ echo "Adding {directory} to existing {path_variable}"
161
+ export {path_variable}="${{{path_variable}}}:{directory}"
162
+ fi
163
+ echo "{path_variable} is now: ${{{path_variable}}}"
164
+ """
165
+ return script
166
+
@@ -80,7 +80,7 @@ git pull originEnc master
80
80
  uv_project_dir = f"""{str(Path.home().joinpath("code/machineconfig"))}"""
81
81
  uv_with = None
82
82
  else:
83
- uv_with = ["machineconfig>=6.86"]
83
+ uv_with = ["machineconfig>=6.87"]
84
84
  uv_project_dir = None
85
85
 
86
86
  import tempfile
@@ -5,7 +5,7 @@
5
5
  # mkdir ~/data/local
6
6
  # sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
7
7
 
8
- uv run --python 3.14 --with "machineconfig>=6.86" python -m machineconfig.scripts.python.mount_nfs
8
+ uv run --python 3.14 --with "machineconfig>=6.87" python -m machineconfig.scripts.python.mount_nfs
9
9
  # Check if remote server is reachable and share folder exists
10
10
  if ! ping -c 1 "$remote_server" &> /dev/null; then
11
11
  echo "💥 Error: Remote server $remote_server is not reachable."
@@ -7,7 +7,7 @@ $user = ''
7
7
  $sharePath = ''
8
8
  $driveLetter = ''
9
9
 
10
- uv run --python 3.14 --with "machineconfig>=6.86" python -m machineconfig.scripts.python.mount_ssh
10
+ uv run --python 3.14 --with "machineconfig>=6.87" python -m machineconfig.scripts.python.mount_ssh
11
11
 
12
12
  net use T: \\sshfs.kr\$user@$host.local
13
13
  # this worked: net use T: \\sshfs\alex@alex-p51s-5.local
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
3
  mcfg() {
4
- "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.86" mcfg "$@"
4
+ "$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.87" mcfg "$@"
5
5
  }
6
6
  alias d="mcfg devops"
7
7
  alias c="mcfg cloud"
@@ -2,7 +2,7 @@
2
2
 
3
3
  iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
4
  function mcfg {
5
- & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.86" mcfg $args
5
+ & "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.87" mcfg $args
6
6
  }
7
7
  function d { mcfg devops @args }
8
8
  function c { mcfg cloud @args }
@@ -8,7 +8,7 @@ from machineconfig.utils.terminal import Response
8
8
  from machineconfig.utils.accessories import pprint, randstr
9
9
  from machineconfig.utils.meta import lambda_to_python_script
10
10
  UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
11
- MACHINECONFIG_VERSION = "machineconfig>=6.86"
11
+ MACHINECONFIG_VERSION = "machineconfig>=6.87"
12
12
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
13
13
 
14
14
  class SSH:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.86
3
+ Version: 6.87
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -118,12 +118,12 @@ machineconfig/scripts/linux/other/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513Mzty
118
118
  machineconfig/scripts/linux/other/start_docker,sha256=_yDN_PPqgzSUnPT7dmniMTpL4IfeeaGy1a2OL3IJlDU,525
119
119
  machineconfig/scripts/linux/other/switch_ip,sha256=NQfeKMBSbFY3eP6M-BadD-TQo5qMP96DTp77KHk2tU8,613
120
120
  machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- machineconfig/scripts/python/agents.py,sha256=4wOpvY41oVlE2V3UsdHgjiDPMsiRCiHPKYZDOUoDF88,11383
121
+ machineconfig/scripts/python/agents.py,sha256=aVbLQDgpngXZm4taHcED4sAxyHvV2_Dz5VW3apPcQcY,10651
122
122
  machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
123
123
  machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
124
124
  machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
125
125
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
126
- machineconfig/scripts/python/fire_jobs.py,sha256=WpidbsAM5O4Z2fUR6Ajo6eq3dArgDqChENzZh-nNOKA,13923
126
+ machineconfig/scripts/python/fire_jobs.py,sha256=t_ciW_Uu9L6fzgrFianT6_mUHCJQeFV21VWsrYJRPRw,13875
127
127
  machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
128
128
  machineconfig/scripts/python/interactive.py,sha256=zt3g6nGKR_Y5A57UnR4Y5-JpLzrpnCOSaqU1bnaikK0,11666
129
129
  machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
@@ -162,18 +162,18 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
162
162
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
164
164
  machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
165
- machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=Z6jFnQbERLtYoHeswpeujLIDsqGOfknHkOHwabnb-ok,6932
165
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=ItVcsmF6EFYSo_MoR7b1XEfydu1Hw91muE2k88SpXv8,6932
166
166
  machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=o08UNqcKKgpfvxMpXbzo9s7Yw0qiuM_ihLf5iDv-cpg,5627
167
+ machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
168
168
  machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
169
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py,sha256=oBm29ZfU4ydNLxCot9uYacsC3fYqolHmYDCV1BsNTQ8,1364
169
+ machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py,sha256=yLES5EVu-NNJ6_scZ22jvI8O9cDb3-tpNN606h4LctA,824
170
170
  machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py,sha256=mpqx3uaQdBXYieuvhdK-qsvLepf9oIMo3pwPj9mSEDI,1079
171
171
  machineconfig/scripts/python/helpers_agents/agentic_frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json,sha256=YGuJF-qlMjhICPf0QnNfQlGNPsYrJJDlNcgmes0TFhM,252
173
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py,sha256=vJrG_ZCbxwCMa3RsyvkAnSyMJlyHOYvgAxlqkukxCAY,1774
174
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py,sha256=gYU_uHpw7kwhCZGK0Uldf23ZJV_-OdjdNCEElHTsdag,564
175
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py,sha256=7Mf4MKnnYteZ8olShHnqNpubdYAXzjDguhpMVyNdE3k,1559
176
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py,sha256=gG7hsZIwp_f6iWBaAJ8BKsfNdrB4A3RhpLpz1XYidRo,1699
173
+ machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py,sha256=QcHVXodLRqso1Y71AhN06hfOckCQfDZfiCkaipOJyA8,1754
174
+ machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py,sha256=4LD841Qk9PRP6I97oNlV_twixoERg4IVdZjvy49mGVk,529
175
+ machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py,sha256=6FHDONsdvEjA97ZIB7sWP6w2TgjzheW7YEF95xDnc_A,1518
176
+ machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py,sha256=BIb3hdT4YQB931rhqKmTNz_qbHfurF1wimzrGeUCSRA,1636
177
177
  machineconfig/scripts/python/helpers_agents/templates/prompt.txt,sha256=sX7Fh_hxaazNw-cv9hIw_XdL6WTcsiG53ILwoyZWv5o,257
178
178
  machineconfig/scripts/python/helpers_agents/templates/template.ps1,sha256=9F7h9NMIJisunMIii2wETpgonQmiGLHLHfWg9k_QWKo,859
179
179
  machineconfig/scripts/python/helpers_agents/templates/template.sh,sha256=RJRw5xZv0-NGJkKeuOiEeXFiaZ07RJJUlttJfs7il90,986
@@ -192,12 +192,12 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
192
192
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
193
193
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
194
194
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=XPeql-3v0ZN2Oe2h1-MWDNmUCRkZSzXwaDmhbFUg9K4,7218
195
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=rj8Y60RvpGfa7OhZQbrZisRDgeEDXx7Vc_DOWGLTF2I,7218
196
196
  machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=fluxRtD6hlbh131_RmeKr2Dy8tZpeC4H9-wp2sYt0dM,2486
197
197
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
198
198
  machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=edeZPhQrm-hvOx80TPt9GNZXlXq9kkTaRSZSpNdku8w,6441
199
199
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
200
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=kS7L_o8jju3fCbrmoymOpUUUYtSybVm8CUIxcOwBS78,6225
200
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=vP0FBM1f7qT8A0AtYDdnzOTtcGoJJXbsKFjC41awmMg,6225
201
201
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
202
202
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
203
203
  machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
@@ -211,7 +211,7 @@ machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.ps1,sha
211
211
  machineconfig/scripts/python/helpers_devops/themes/choose_wezterm_theme.py,sha256=pRXAGe2IpysYshsaF8CKEwHI8EGPtLcM8PtiAqM7vmM,3425
212
212
  machineconfig/scripts/python/helpers_fire_command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
213
  machineconfig/scripts/python/helpers_fire_command/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
214
- machineconfig/scripts/python/helpers_fire_command/file_wrangler.py,sha256=VCrnv5n42SbDXKDJ8VNu_bA0UruTLWXQBK9SxhflzTY,5477
214
+ machineconfig/scripts/python/helpers_fire_command/file_wrangler.py,sha256=tZS9qXOXiHltiZ9JHEs2serGEFm0uLbz7xh6ZBAa2l0,6946
215
215
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py,sha256=teioVhLI-skNpbYOJGo7WJEnz_FHzyidHff174CZSg8,4359
216
216
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py,sha256=0aqH_ShEvmrzMC2oyWDds-CwtUqJNniNjp39-0wTpvQ,5391
217
217
  machineconfig/scripts/python/helpers_fire_command/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -225,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
225
225
  machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
226
226
  machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
227
227
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
228
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=4h34KHXAR9OYn5Uko67V2KuHquWh7XkNuvDQHI0805c,10450
228
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=pWZ11gkxRfN6PPOhPIgyZexA4jBZqMMzQjdT8mBL6OY,10450
229
229
  machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
230
230
  machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
231
231
  machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
@@ -241,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
241
241
  machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
242
242
  machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
243
243
  machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
244
- machineconfig/scripts/python/nw/mount_nfs,sha256=toDevRO02ygKFPDtOJcT7C3mJSB2SdJmN1X6n7srTyQ,1855
244
+ machineconfig/scripts/python/nw/mount_nfs,sha256=alchs6FVme2HpAIa316HvyO29ypnKsCEy64eZ09aEa0,1855
245
245
  machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
246
246
  machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
247
247
  machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
@@ -260,7 +260,7 @@ machineconfig/scripts/windows/term.ps1,sha256=nme_OWis84qN-zI2c0rdysNcDIdoaEKajX
260
260
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
261
261
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
262
262
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
263
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=VsnDsy-SFizmzSPPBTszHQHUr3YIIHXwJY656SWTMsU,322
263
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=HiOurQAeM8XLj1LG398K4p7QLa1ItV3GMkxzL9yo8VI,322
264
264
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
265
265
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
266
266
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -377,7 +377,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
377
377
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
378
378
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
379
379
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
380
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=SBwPZ2qwn-WTsuGm2PP087ETjiEjBLjx8yq2u2Q8m8Q,488
380
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=Q8fQ5Jgw2f_BVEhZjjLXcS2NQh1SBQzKbKB2kb720Ec,488
381
381
  machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
382
382
  machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
383
383
  machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
@@ -391,7 +391,7 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
391
391
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
392
392
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
393
393
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
394
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=l0Pw5IJH1c5lqRf_SpzXIJ_HCsfyizQKaVX46RERgzc,616
394
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=XEjrxJXFDjTPORszOVX-Iijd3OL4NFww4NVGyCLmIoQ,616
395
395
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
396
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
397
397
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -409,7 +409,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
409
409
  machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
410
410
  machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
411
411
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
412
- machineconfig/utils/ssh.py,sha256=ERcNJOAzPMGQ3PWcdTUPRCqohZh91dD9vtEVT8xEbEk,39008
412
+ machineconfig/utils/ssh.py,sha256=zsGHp4SOkFIGbqAwBzNRXKT-4JU9pWfDmCy_Q33FNAQ,39008
413
413
  machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
414
414
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
415
415
  machineconfig/utils/upgrade_packages.py,sha256=3H-U-Le0kn7ACYf_RHMSDav2UGnWzZEqgaL9bC0Yn4s,3695
@@ -438,8 +438,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
438
438
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
439
439
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
440
440
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
- machineconfig-6.86.dist-info/METADATA,sha256=3HeFIcWWUIQR4SuI9BhVujs9BwFYTl68lLi6xomn_e0,2928
442
- machineconfig-6.86.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
443
- machineconfig-6.86.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
444
- machineconfig-6.86.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
445
- machineconfig-6.86.dist-info/RECORD,,
441
+ machineconfig-6.87.dist-info/METADATA,sha256=6qopnVYk46jmfz3hkQF7hsHUy9wItdGY4OImaXalFLA,2928
442
+ machineconfig-6.87.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
443
+ machineconfig-6.87.dist-info/entry_points.txt,sha256=uf_ZPJa02_y3Fw5Z7m22cq7PwxhYd1QV2FfPNZTl_dQ,519
444
+ machineconfig-6.87.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
445
+ machineconfig-6.87.dist-info/RECORD,,