From 292f32cd73e2b9b21ed0c62b7d24ac5c2c492d0c Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 10:31:16 -0800 Subject: [PATCH 01/14] update config Signed-off-by: Brian Yu --- .../configs/mini_swe_resource.yaml | 35 +++++++++++++---- scripts/update_resource_servers.py | 39 ++++++++++++------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml b/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml index 8f6d0fc77..20b2633a5 100644 --- a/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml +++ b/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml @@ -1,10 +1,11 @@ +# This resources server is unused. It's just here as a placeholder for meta information mini_swe_resource_resources_server: resources_servers: mini_swe_resource: entrypoint: app.py domain: coding verified: false -mini_swe_simple_agent: +mini_swe_main_agent_train: responses_api_agents: mini_swe_agent: entrypoint: app.py @@ -23,6 +24,29 @@ mini_swe_simple_agent: version: 0.0.1 artifact_fpath: train.jsonl license: MIT + - name: example + type: example + jsonl_fpath: resources_servers/mini_swe_resource/data/example.jsonl + concurrency: 16 + env: singularity + cache_dir_template: ??? + run_golden: False + step_timeout: 300 + eval_timeout: 900 + skip_if_exists: False + step_limit: 150 + collapse_limit: 3 +mini_swe_main_agent_validation: + responses_api_agents: + mini_swe_agent: + entrypoint: app.py + resources_server: + type: resources_servers + name: mini_swe_resource_resources_server + model_server: + type: responses_api_models + name: policy_model + datasets: - name: validation type: validation jsonl_fpath: resources_servers/mini_swe_resource/data/validation.jsonl @@ -31,15 +55,12 @@ mini_swe_simple_agent: version: 0.0.1 artifact_fpath: validation.jsonl license: MIT - - name: example - type: example - jsonl_fpath: resources_servers/mini_swe_resource/data/example.jsonl concurrency: 16 env: singularity cache_dir_template: ??? run_golden: False - step_timeout: 600 - eval_timeout: 1800 + step_timeout: 300 + eval_timeout: 900 skip_if_exists: False - step_limit: 250 + step_limit: 150 collapse_limit: 3 diff --git a/scripts/update_resource_servers.py b/scripts/update_resource_servers.py index dc59d1869..aa98ec644 100644 --- a/scripts/update_resource_servers.py +++ b/scripts/update_resource_servers.py @@ -69,21 +69,30 @@ def visit_resource_server(data, level=1): def visit_agent_datasets(data): nonlocal license - for k1, v1 in data.items(): - if k1.endswith("_simple_agent") and isinstance(v1, dict): - v2 = v1.get("responses_api_agents") - if isinstance(v2, dict): - # Look for any agent key - for agent_key, v3 in v2.items(): - if isinstance(v3, dict): - datasets = v3.get("datasets") - if isinstance(datasets, list): - for entry in datasets: - if isinstance(entry, dict): - types.append(entry.get("type")) - if entry.get("type") == "train": - license = entry.get("license") - return + for v1 in data.values(): + if not isinstance(v1, dict): + continue + + v2 = v1.get("responses_api_agents") + if not isinstance(v2, dict): + continue + + # Look for any agent key + for v3 in v2.values(): + if not isinstance(v3, dict): + continue + + datasets = v3.get("datasets") + if not isinstance(datasets, list): + continue + + for entry in datasets: + if not isinstance(entry, dict): + continue + + types.append(entry.get("type")) + if entry.get("type") == "train": + license = entry.get("license") visit_resource_server(data) visit_agent_datasets(data) From 387238b84d5c59acde3f753a7fdb769942354283 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 10:47:08 -0800 Subject: [PATCH 02/14] add run example Signed-off-by: Brian Yu --- resources_servers/mini_swe_resource/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/resources_servers/mini_swe_resource/README.md b/resources_servers/mini_swe_resource/README.md index b56a438df..3f1cf48e9 100644 --- a/resources_servers/mini_swe_resource/README.md +++ b/resources_servers/mini_swe_resource/README.md @@ -1,6 +1,12 @@ # Description -Data links: ? +```bash +config_paths="responses_api_models/openai_model/configs/openai_model.yaml,\ +resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml" +ng_run "+config_paths=[$config_paths]" \ + ++mini_swe_main_agent_train.responses_api_agents.mini_swe_agent.cache_dir_template={your cache dir} \ + ++mini_swe_main_agent_validation.responses_api_agents.mini_swe_agent.cache_dir_template={your cache dir} +``` # Licensing information Code: ? From 9ac66eef59c1c25f7d8a3496465361e4bc0ec269 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 11:18:09 -0800 Subject: [PATCH 03/14] print container instance num Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/responses_api_agents/mini_swe_agent/app.py b/responses_api_agents/mini_swe_agent/app.py index 403a7f426..2be6f16b7 100644 --- a/responses_api_agents/mini_swe_agent/app.py +++ b/responses_api_agents/mini_swe_agent/app.py @@ -103,6 +103,7 @@ async def responses(self, body: NeMoGymResponseCreateParamsNonStreaming = Body() async def run(self, body: MiniSWEAgentRunRequest) -> MiniSWEAgentVerifyResponse: async with self.sem: + print(f"Spinning up container instance #{self.config.concurrency - self.sem._value}") model_server_name = self.config.model_server.name global_config_dict = ServerClient.load_from_global_config().global_config_dict From 96f721263aab39b789fe7109988a126349e70357 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 12:08:15 -0800 Subject: [PATCH 04/14] try big repeat number Signed-off-by: Brian Yu --- .../mini_swe_resource/configs/mini_swe_resource.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml b/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml index 20b2633a5..8f6d8bef5 100644 --- a/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml +++ b/resources_servers/mini_swe_resource/configs/mini_swe_resource.yaml @@ -24,6 +24,7 @@ mini_swe_main_agent_train: version: 0.0.1 artifact_fpath: train.jsonl license: MIT + num_repeats: 100 # Just some big repeat number - name: example type: example jsonl_fpath: resources_servers/mini_swe_resource/data/example.jsonl From 83abe09e8c1f809f03f7572f6d8adffb5be3471e Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 12:13:36 -0800 Subject: [PATCH 05/14] add trian and val metrics from prepare data Signed-off-by: Brian Yu --- .../mini_swe_resource/data/train_metrics.json | 97 ++++++++++++++++ .../data/validation_metrics.json | 105 ++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 resources_servers/mini_swe_resource/data/train_metrics.json create mode 100644 resources_servers/mini_swe_resource/data/validation_metrics.json diff --git a/resources_servers/mini_swe_resource/data/train_metrics.json b/resources_servers/mini_swe_resource/data/train_metrics.json new file mode 100644 index 000000000..6c01b0f6a --- /dev/null +++ b/resources_servers/mini_swe_resource/data/train_metrics.json @@ -0,0 +1,97 @@ +{ + "name": "train", + "type": "train", + "jsonl_fpath": "resources_servers/mini_swe_resource/data/train.jsonl", + "num_repeats": 100, + "gitlab_identifier": { + "dataset_name": "mini_swe_agent", + "version": "0.0.1", + "artifact_fpath": "train.jsonl" + }, + "license": "MIT", + "Number of examples": 240100, + "Number of tools": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "Json-dumped number of words (proxy for token count)": { + "Total # non-null values": 240100, + "Average": 2.0, + "Min": 2.0, + "Max": 2.0, + "Median": 2.0, + "Standard deviation": 0.0 + }, + "Number of turns": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "Temperature": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "instance_id": { + "unique_count": 2401, + "total_count": 240100 + }, + "hints_text": { + "unique_count": 1489, + "total_count": 240100 + }, + "patch": { + "unique_count": 2401, + "total_count": 240100 + }, + "test_patch": { + "unique_count": 2400, + "total_count": 240100 + }, + "created_at": { + "unique_count": 2401, + "total_count": 240100 + }, + "problem_statement": { + "unique_count": 2374, + "total_count": 240100 + }, + "repo": { + "unique_count": 11, + "total_count": 240100 + }, + "base_commit": { + "unique_count": 2132, + "total_count": 240100 + }, + "version": { + "unique_count": 160, + "total_count": 240100 + }, + "PASS_TO_PASS": { + "unique_count": 303293, + "total_count": 178030500 + }, + "FAIL_TO_PASS": { + "unique_count": 22310, + "total_count": 2384000 + }, + "subset": { + "unique_count": 1, + "total_count": 240100 + }, + "split": { + "unique_count": 1, + "total_count": 240100 + } +} \ No newline at end of file diff --git a/resources_servers/mini_swe_resource/data/validation_metrics.json b/resources_servers/mini_swe_resource/data/validation_metrics.json new file mode 100644 index 000000000..992d2e43a --- /dev/null +++ b/resources_servers/mini_swe_resource/data/validation_metrics.json @@ -0,0 +1,105 @@ +{ + "name": "validation", + "type": "validation", + "jsonl_fpath": "resources_servers/mini_swe_resource/data/validation.jsonl", + "num_repeats": 1, + "gitlab_identifier": { + "dataset_name": "mini_swe_agent", + "version": "0.0.1", + "artifact_fpath": "validation.jsonl" + }, + "license": "MIT", + "Number of examples": 500, + "Number of tools": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "Json-dumped number of words (proxy for token count)": { + "Total # non-null values": 500, + "Average": 2.0, + "Min": 2.0, + "Max": 2.0, + "Median": 2.0, + "Standard deviation": 0.0 + }, + "Number of turns": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "Temperature": { + "Total # non-null values": 0, + "Average": 0.0, + "Min": 0.0, + "Max": 0.0, + "Median": 0.0, + "Standard deviation": 0.0 + }, + "repo": { + "unique_count": 12, + "total_count": 500 + }, + "instance_id": { + "unique_count": 500, + "total_count": 500 + }, + "base_commit": { + "unique_count": 499, + "total_count": 500 + }, + "patch": { + "unique_count": 500, + "total_count": 500 + }, + "test_patch": { + "unique_count": 500, + "total_count": 500 + }, + "problem_statement": { + "unique_count": 500, + "total_count": 500 + }, + "hints_text": { + "unique_count": 338, + "total_count": 500 + }, + "created_at": { + "unique_count": 500, + "total_count": 500 + }, + "version": { + "unique_count": 53, + "total_count": 500 + }, + "FAIL_TO_PASS": { + "unique_count": 494, + "total_count": 500 + }, + "PASS_TO_PASS": { + "unique_count": 489, + "total_count": 500 + }, + "environment_setup_commit": { + "unique_count": 80, + "total_count": 500 + }, + "difficulty": { + "unique_count": 4, + "total_count": 500 + }, + "subset": { + "unique_count": 1, + "total_count": 500 + }, + "split": { + "unique_count": 1, + "total_count": 500 + } +} \ No newline at end of file From 71c17990c2462ca06be392448d1fe254c863dfb7 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 13:46:01 -0800 Subject: [PATCH 06/14] try new branch Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/responses_api_agents/mini_swe_agent/requirements.txt b/responses_api_agents/mini_swe_agent/requirements.txt index 55c66a288..0447a6d80 100644 --- a/responses_api_agents/mini_swe_agent/requirements.txt +++ b/responses_api_agents/mini_swe_agent/requirements.txt @@ -1,3 +1,3 @@ -e nemo-gym[dev] @ ../../ -mini-swe-agent @ git+https://github.com/sdevare-nv/nv-mini-swe-agent.git@b750a0e865454881ac8275e81171791a18a108a1 +mini-swe-agent @ git+https://github.com/bxyu-nvidia/nv-mini-swe-agent.git@bxyu/sdd/dev-20251108 swegym @ git+https://github.com/sdevare-nv/nv-SWE-Bench-Package.git@31e1cb8f0241da1707d00faa633c3d6ce1a8ba3b \ No newline at end of file From 52e22a054980671d3dc7757a7a54d802bce78326 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 14:19:18 -0800 Subject: [PATCH 07/14] try check for 400 there as well Signed-off-by: Brian Yu --- responses_api_models/vllm_model/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/responses_api_models/vllm_model/app.py b/responses_api_models/vllm_model/app.py index 5ff4b0b4f..356465e19 100644 --- a/responses_api_models/vllm_model/app.py +++ b/responses_api_models/vllm_model/app.py @@ -213,7 +213,7 @@ async def chat_completions( """ result_content_str = e.response_content.decode() - is_out_of_context_length = e.status == 400 and ( + is_out_of_context_length = (e.status == 400 or '"code":400' in result_content_str) and ( "context length" in result_content_str or "max_tokens" in result_content_str ) if is_out_of_context_length: From 235a7b283e284b7e3610bc7b7f342dc8ebe68691 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 15:24:20 -0800 Subject: [PATCH 08/14] print error Signed-off-by: Brian Yu --- responses_api_models/vllm_model/app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/responses_api_models/vllm_model/app.py b/responses_api_models/vllm_model/app.py index 356465e19..538c4acf2 100644 --- a/responses_api_models/vllm_model/app.py +++ b/responses_api_models/vllm_model/app.py @@ -212,6 +212,7 @@ async def chat_completions( 4. https://github.com/vllm-project/vllm/blob/685c99ee77b4818dcdd15b30fe0e0eff0d5d22ec/vllm/sampling_params.py#L463 """ result_content_str = e.response_content.decode() + print(f"CHAT COMPLETION ERROR: {result_content_str}. Status: {e.status}") is_out_of_context_length = (e.status == 400 or '"code":400' in result_content_str) and ( "context length" in result_content_str or "max_tokens" in result_content_str From 2a318ed74a536718a3880dba8cacc81094214102 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 21:31:16 -0800 Subject: [PATCH 09/14] use absolute ips Signed-off-by: Brian Yu --- nemo_gym/global_config.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/nemo_gym/global_config.py b/nemo_gym/global_config.py index 5c7588a03..f18c29d83 100644 --- a/nemo_gym/global_config.py +++ b/nemo_gym/global_config.py @@ -44,6 +44,7 @@ DISALLOWED_PORTS_KEY_NAME = "disallowed_ports" HEAD_SERVER_DEPS_KEY_NAME = "head_server_deps" PYTHON_VERSION_KEY_NAME = "python_version" +USE_ABSOLUTE_IP = "use_absolute_ip" NEMO_GYM_RESERVED_TOP_LEVEL_KEYS = [ CONFIG_PATHS_KEY_NAME, ENTRYPOINT_KEY_NAME, @@ -52,6 +53,7 @@ DISALLOWED_PORTS_KEY_NAME, HEAD_SERVER_DEPS_KEY_NAME, PYTHON_VERSION_KEY_NAME, + USE_ABSOLUTE_IP, ] POLICY_BASE_URL_KEY_NAME = "policy_base_url" @@ -229,9 +231,16 @@ def parse(self, parse_config: Optional[GlobalConfigDictParserConfig] = None) -> server_instance_configs = self.filter_for_server_instance_configs(global_config_dict) - # Do one pass through all the configs validate and populate various configs for our servers. - default_host = global_config_dict.get(DEFAULT_HOST_KEY_NAME) or "127.0.0.1" + use_absolute_ip = global_config_dict.get(USE_ABSOLUTE_IP, False) + + if use_absolute_ip: + import socket + default_host = socket.gethostbyname(socket.gethostname()) + else: + default_host = global_config_dict.get(DEFAULT_HOST_KEY_NAME) or "127.0.0.1" + + # Do one pass through all the configs validate and populate various configs for our servers. head_server_config = global_config_dict.get(HEAD_SERVER_KEY_NAME, {}) head_server_port = head_server_config.get("port", DEFAULT_HEAD_SERVER_PORT) From 8174ee775b3e7c9e868107e0460fb4010e6b666d Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 21:32:59 -0800 Subject: [PATCH 10/14] fix imports Signed-off-by: Brian Yu --- nemo_gym/global_config.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nemo_gym/global_config.py b/nemo_gym/global_config.py index f18c29d83..ccf128698 100644 --- a/nemo_gym/global_config.py +++ b/nemo_gym/global_config.py @@ -15,7 +15,7 @@ from os import getenv from pathlib import Path from platform import python_version -from socket import socket +from socket import gethostbyname, gethostname, socket from typing import ClassVar, List, Optional, Tuple, Type import hydra @@ -234,9 +234,7 @@ def parse(self, parse_config: Optional[GlobalConfigDictParserConfig] = None) -> use_absolute_ip = global_config_dict.get(USE_ABSOLUTE_IP, False) if use_absolute_ip: - import socket - - default_host = socket.gethostbyname(socket.gethostname()) + default_host = gethostbyname(gethostname()) else: default_host = global_config_dict.get(DEFAULT_HOST_KEY_NAME) or "127.0.0.1" From de3e1db500f364e668de0fca4fcc923ce1d0df48 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sat, 8 Nov 2025 22:46:50 -0800 Subject: [PATCH 11/14] no try except Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/app.py | 60 ++++++++++------------ 1 file changed, 26 insertions(+), 34 deletions(-) diff --git a/responses_api_agents/mini_swe_agent/app.py b/responses_api_agents/mini_swe_agent/app.py index 2be6f16b7..5d365aae5 100644 --- a/responses_api_agents/mini_swe_agent/app.py +++ b/responses_api_agents/mini_swe_agent/app.py @@ -168,40 +168,32 @@ async def run(self, body: MiniSWEAgentRunRequest) -> MiniSWEAgentVerifyResponse: #### RUN MINI-SWE-AGENT ##### reseponses_create_params_dict = body.responses_create_params.model_dump() - try: - params = dict( - subset=subset, - split=split, - workers=workers, - output=output_file_dir, - model=model_name, - api_key=dummy_key, - base_url=base_url, - cache_dir_template=cache_dir_template, - env=env, - run_golden=run_golden, - instance_id=instance_id, - # TODO: add this later - instance_dict=body.model_dump(), - responses_create_params=json.dumps(reseponses_create_params_dict), - step_timeout=step_timeout, - eval_timeout=eval_timeout, - step_limit=step_limit, - collapse_limit=collapse_limit, - ) - future = runner_ray_remote.remote(run_swegym, params) - result = await asyncio.to_thread(ray.get, future) - result = result[instance_id] - messages = result["messages"] - responses = result["responses"] - reward = 1.0 if MiniSWEAgentUtils.is_resolved(instance_id, result["eval_report"]) else 0.0 - - except Exception as e: - print(f"Error running swegym: {e}") - result = None - messages = [] - responses = [] - reward = 0.0 + params = dict( + subset=subset, + split=split, + workers=workers, + output=output_file_dir, + model=model_name, + api_key=dummy_key, + base_url=base_url, + cache_dir_template=cache_dir_template, + env=env, + run_golden=run_golden, + instance_id=instance_id, + # TODO: add this later + instance_dict=body.model_dump(), + responses_create_params=json.dumps(reseponses_create_params_dict), + step_timeout=step_timeout, + eval_timeout=eval_timeout, + step_limit=step_limit, + collapse_limit=collapse_limit, + ) + future = runner_ray_remote.remote(run_swegym, params) + result = await asyncio.to_thread(ray.get, future) + result = result[instance_id] + messages = result["messages"] + responses = result["responses"] + reward = 1.0 if MiniSWEAgentUtils.is_resolved(instance_id, result["eval_report"]) else 0.0 # The first two messages are the system and user message generated by the harness # TODO(sugam): what if the user only provides the system/user message From 827867a72b116eee3808f2b8c5f626617af9ae34 Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sun, 9 Nov 2025 09:39:36 -0800 Subject: [PATCH 12/14] use wrap future Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/app.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/responses_api_agents/mini_swe_agent/app.py b/responses_api_agents/mini_swe_agent/app.py index 5d365aae5..9f47ea52d 100644 --- a/responses_api_agents/mini_swe_agent/app.py +++ b/responses_api_agents/mini_swe_agent/app.py @@ -188,8 +188,9 @@ async def run(self, body: MiniSWEAgentRunRequest) -> MiniSWEAgentVerifyResponse: step_limit=step_limit, collapse_limit=collapse_limit, ) - future = runner_ray_remote.remote(run_swegym, params) - result = await asyncio.to_thread(ray.get, future) + ref = runner_ray_remote.remote(run_swegym, params) + fut: asyncio.Future = asyncio.wrap_future(ref.future()) + result = await fut result = result[instance_id] messages = result["messages"] responses = result["responses"] From 93594c402cfd4af68e3ba88f31a3cc30c76bba1c Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sun, 9 Nov 2025 10:12:33 -0800 Subject: [PATCH 13/14] bump branch Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/responses_api_agents/mini_swe_agent/requirements.txt b/responses_api_agents/mini_swe_agent/requirements.txt index 0447a6d80..efb15c40f 100644 --- a/responses_api_agents/mini_swe_agent/requirements.txt +++ b/responses_api_agents/mini_swe_agent/requirements.txt @@ -1,3 +1,3 @@ -e nemo-gym[dev] @ ../../ -mini-swe-agent @ git+https://github.com/bxyu-nvidia/nv-mini-swe-agent.git@bxyu/sdd/dev-20251108 +mini-swe-agent @ git+https://github.com/bxyu-nvidia/nv-mini-swe-agent.git@bxyu/dev-asyncify-20251108 swegym @ git+https://github.com/sdevare-nv/nv-SWE-Bench-Package.git@31e1cb8f0241da1707d00faa633c3d6ce1a8ba3b \ No newline at end of file From 44c6d4ce0add7796f006ba0b9eca952c2771a5fe Mon Sep 17 00:00:00 2001 From: Brian Yu Date: Sun, 9 Nov 2025 10:21:21 -0800 Subject: [PATCH 14/14] fix runner_ray_remote Signed-off-by: Brian Yu --- responses_api_agents/mini_swe_agent/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/responses_api_agents/mini_swe_agent/app.py b/responses_api_agents/mini_swe_agent/app.py index 9f47ea52d..5b927898b 100644 --- a/responses_api_agents/mini_swe_agent/app.py +++ b/responses_api_agents/mini_swe_agent/app.py @@ -80,8 +80,8 @@ class MiniSWEAgentVerifyResponse(BaseVerifyResponse): "py_executable": sys.executable, }, ) -def runner_ray_remote(runner: Callable, params: dict[str, Any]) -> Any: - return runner(**params) +async def runner_ray_remote(runner: Callable, params: dict[str, Any]) -> Any: + return await runner(**params) class MiniSWEAgent(SimpleResponsesAPIAgent):