44import verifiers as vf
55from verifiers .v1 .utils .sandbox_python_utils import python_runtime_setup_command
66
7+ from .utils import split_versioned_agent_spec
8+
79DEFAULT_INSTALL_DIR = "/opt/mini-swe-agent"
810DEFAULT_PREFIX_DIR = f"{ DEFAULT_INSTALL_DIR } /prefix"
911DEFAULT_SITE_PACKAGES_DIR = f"{ DEFAULT_PREFIX_DIR } /site-packages"
1416MINI_SWE_AGENT_DEFAULT_SYSTEM_PROMPT_PATH = "/mini-swe-agent/system.txt"
1517MINI_SWE_AGENT_DEFAULT_LOG_PATH = "/logs/agent/mini-swe-agent.log"
1618MINI_SWE_AGENT_DEFAULT_TRAJECTORY_PATH = "/logs/agent/mini-swe-agent.traj.json"
17- MINI_SWE_AGENT_DEFAULT_PACKAGE_VERSION = "2.2.8"
18- MINI_SWE_AGENT_DEFAULT_PACKAGE_SHA256 = (
19- "694df4de1337e665e3cd82e99f93374f573bf52b8e7c362ac5d8045ad9f7c37c"
20- )
19+ MINI_SWE_AGENT_DEFAULT_PACKAGE = "mini-swe-agent@2.2.8"
2120MINI_SWE_AGENT_DEFAULT_CONFIG_SPEC = "mini"
2221MINI_SWE_AGENT_DEFAULT_MODEL_CLASS = "litellm"
2322MINI_SWE_AGENT_DEFAULT_ENVIRONMENT_TIMEOUT = 120
2423
2524
2625def build_mini_swe_agent_install_script (
27- package_version : str = MINI_SWE_AGENT_DEFAULT_PACKAGE_VERSION ,
28- package_sha256 : str = MINI_SWE_AGENT_DEFAULT_PACKAGE_SHA256 ,
26+ package : str = MINI_SWE_AGENT_DEFAULT_PACKAGE ,
2927 prefix_dir : str = DEFAULT_PREFIX_DIR ,
3028) -> str :
3129 install_dir = str (PurePosixPath (prefix_dir ).parent )
3230 site_packages_dir = f"{ prefix_dir .rstrip ('/' )} /site-packages"
33- wheel_filename = f"mini_swe_agent-{ package_version } -py3-none-any.whl"
34- wheel_url = (
35- f"https://files.pythonhosted.org/packages/py3/m/mini-swe-agent/{ wheel_filename } "
36- )
3731 setup_prefix_dir = shlex .quote (prefix_dir )
3832 setup_site_packages_dir = shlex .quote (site_packages_dir )
33+ package_name , package_version = split_versioned_agent_spec (package )
34+ package_requirement = package_name
35+ if package_version and package_version != "latest" :
36+ package_requirement = f"{ package_name } =={ package_version } "
3937 return f"""\
4038 set -e
4139{ python_runtime_setup_command ()}
4240rm -rf { setup_prefix_dir }
4341mkdir -p { shlex .quote (install_dir )} { setup_prefix_dir } /bin { setup_site_packages_dir } { shlex .quote (DEFAULT_LOG_DIR )} /mini-swe-agent
44- MINI_SWE_AGENT_WHEEL_DIR="$(mktemp -d)"
45- trap 'rm -rf "$MINI_SWE_AGENT_WHEEL_DIR"' EXIT
46- MINI_SWE_AGENT_WHEEL="$MINI_SWE_AGENT_WHEEL_DIR/{ wheel_filename } "
47- MINI_SWE_AGENT_WHEEL_URL={ shlex .quote (wheel_url )}
48- export MINI_SWE_AGENT_WHEEL MINI_SWE_AGENT_WHEEL_URL
49- "$VF_PYTHON" -c 'import os, urllib.request; urllib.request.urlretrieve(os.environ["MINI_SWE_AGENT_WHEEL_URL"], os.environ["MINI_SWE_AGENT_WHEEL"])'
50- echo "{ package_sha256 } $MINI_SWE_AGENT_WHEEL" | sha256sum -c -
51- vf_python_install --target { setup_site_packages_dir } "$MINI_SWE_AGENT_WHEEL"
42+ vf_python_install --target { setup_site_packages_dir } { shlex .quote (package_requirement )}
5243echo "$VF_PYTHON" > { setup_prefix_dir } /python
5344cat > { setup_prefix_dir } /bin/mini <<'EOF'
5445#!/usr/bin/env sh
@@ -66,8 +57,7 @@ class MiniSWEAgentProgramConfig(vf.ProgramConfig):
6657 system_prompt_path : str = MINI_SWE_AGENT_DEFAULT_SYSTEM_PROMPT_PATH
6758 log_path : str = MINI_SWE_AGENT_DEFAULT_LOG_PATH
6859 trajectory_path : str = MINI_SWE_AGENT_DEFAULT_TRAJECTORY_PATH
69- package_version : str = MINI_SWE_AGENT_DEFAULT_PACKAGE_VERSION
70- package_sha256 : str = MINI_SWE_AGENT_DEFAULT_PACKAGE_SHA256
60+ package : str = MINI_SWE_AGENT_DEFAULT_PACKAGE
7161 config_spec : str = MINI_SWE_AGENT_DEFAULT_CONFIG_SPEC
7262 model_class : str = MINI_SWE_AGENT_DEFAULT_MODEL_CLASS
7363 environment_timeout : int = MINI_SWE_AGENT_DEFAULT_ENVIRONMENT_TIMEOUT
@@ -125,8 +115,7 @@ def resolve(self) -> vf.ProgramConfig:
125115 config_args .extend (["-c" , shlex .quote (spec )])
126116
127117 setup = build_mini_swe_agent_install_script (
128- package_version = self .package_version ,
129- package_sha256 = self .package_sha256 ,
118+ package = self .package ,
130119 )
131120 log_dir = str (PurePosixPath (self .log_path ).parent )
132121 trajectory_dir = str (PurePosixPath (self .trajectory_path ).parent )
0 commit comments