mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-04-29 03:00:45 -04:00
Compare commits
1 Commits
openhands-
...
openhands-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38f1b56172 |
31
.github/workflows/ghcr-build.yml
vendored
31
.github/workflows/ghcr-build.yml
vendored
@@ -54,22 +54,22 @@ jobs:
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Lowercase Repository Owner
|
||||
run: |
|
||||
echo REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
- name: Build and push app image
|
||||
if: "!github.event.pull_request.head.repo.fork"
|
||||
run: |
|
||||
./containers/build.sh -i openhands -o ${{ env.REPO_OWNER }} --push
|
||||
./containers/build.sh -i openhands -o ${{ github.repository_owner }} --push
|
||||
- name: Build app image
|
||||
if: "github.event.pull_request.head.repo.fork"
|
||||
run: |
|
||||
./containers/build.sh -i openhands -o ${{ env.REPO_OWNER }} --load
|
||||
./containers/build.sh -i openhands -o ${{ github.repository_owner }} --load
|
||||
- name: Get hash in App Image
|
||||
id: get_hash_in_app_image
|
||||
run: |
|
||||
# Lowercase the repository owner
|
||||
export REPO_OWNER=${{ github.repository_owner }}
|
||||
REPO_OWNER=$(echo $REPO_OWNER | tr '[:upper:]' '[:lower:]')
|
||||
# Run the build script in the app image
|
||||
docker run -e SANDBOX_USER_ID=0 -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/${{ env.REPO_OWNER }}/openhands:${{ env.RELEVANT_SHA }} /bin/bash -c "mkdir -p containers/runtime; python3 openhands/runtime/utils/runtime_build.py --base_image ${{ env.BASE_IMAGE_FOR_HASH_EQUIVALENCE_TEST }} --build_folder containers/runtime --force_rebuild" 2>&1 | tee docker-outputs.txt
|
||||
docker run -e SANDBOX_USER_ID=0 -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/${REPO_OWNER}/openhands:${{ env.RELEVANT_SHA }} /bin/bash -c "mkdir -p containers/runtime; python3 openhands/runtime/utils/runtime_build.py --base_image ${{ env.BASE_IMAGE_FOR_HASH_EQUIVALENCE_TEST }} --build_folder containers/runtime --force_rebuild" 2>&1 | tee docker-outputs.txt
|
||||
# Get the hash from the build script
|
||||
hash_from_app_image=$(cat docker-outputs.txt | grep "Hash for docker build directory" | awk -F "): " '{print $2}' | uniq | head -n1)
|
||||
echo "hash_from_app_image=$hash_from_app_image" >> $GITHUB_OUTPUT
|
||||
@@ -122,19 +122,16 @@ jobs:
|
||||
run: make install-python-dependencies
|
||||
- name: Create source distribution and Dockerfile
|
||||
run: poetry run python3 openhands/runtime/utils/runtime_build.py --base_image ${{ matrix.base_image.image }} --build_folder containers/runtime --force_rebuild
|
||||
- name: Lowercase Repository Owner
|
||||
run: |
|
||||
echo REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
- name: Build and push runtime image ${{ matrix.base_image.image }}
|
||||
if: github.event.pull_request.head.repo.fork != true
|
||||
run: |
|
||||
./containers/build.sh -i runtime -o ${{ env.REPO_OWNER }} --push -t ${{ matrix.base_image.tag }}
|
||||
./containers/build.sh -i runtime -o ${{ github.repository_owner }} --push -t ${{ matrix.base_image.tag }}
|
||||
# Forked repos can't push to GHCR, so we need to upload the image as an artifact
|
||||
- name: Build runtime image ${{ matrix.base_image.image }} for fork
|
||||
if: github.event.pull_request.head.repo.fork
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
tags: ghcr.io/${{ env.REPO_OWNER }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image.tag }}
|
||||
tags: ghcr.io/all-hands-ai/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image.tag }}
|
||||
outputs: type=docker,dest=/tmp/runtime-${{ matrix.base_image.tag }}.tar
|
||||
context: containers/runtime
|
||||
- name: Upload runtime image for fork
|
||||
@@ -236,9 +233,6 @@ jobs:
|
||||
run: pipx install poetry
|
||||
- name: Install Python dependencies using Poetry
|
||||
run: make install-python-dependencies
|
||||
- name: Lowercase Repository Owner
|
||||
run: |
|
||||
echo REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
- name: Run docker runtime tests
|
||||
run: |
|
||||
# We install pytest-xdist in order to run tests across CPUs
|
||||
@@ -247,7 +241,8 @@ jobs:
|
||||
# Install to be able to retry on failures for flaky tests
|
||||
poetry run pip install pytest-rerunfailures
|
||||
|
||||
image_name=ghcr.io/${{ env.REPO_OWNER }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image }}
|
||||
image_name=ghcr.io/${{ github.repository_owner }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image }}
|
||||
image_name=$(echo $image_name | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
TEST_RUNTIME=docker \
|
||||
SANDBOX_USER_ID=$(id -u) \
|
||||
@@ -301,9 +296,6 @@ jobs:
|
||||
run: pipx install poetry
|
||||
- name: Install Python dependencies using Poetry
|
||||
run: make install-python-dependencies
|
||||
- name: Lowercase Repository Owner
|
||||
run: |
|
||||
echo REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
|
||||
- name: Run runtime tests
|
||||
run: |
|
||||
# We install pytest-xdist in order to run tests across CPUs
|
||||
@@ -312,7 +304,8 @@ jobs:
|
||||
# Install to be able to retry on failures for flaky tests
|
||||
poetry run pip install pytest-rerunfailures
|
||||
|
||||
image_name=ghcr.io/${{ env.REPO_OWNER }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image }}
|
||||
image_name=ghcr.io/${{ github.repository_owner }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image }}
|
||||
image_name=$(echo $image_name | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
TEST_RUNTIME=docker \
|
||||
SANDBOX_USER_ID=$(id -u) \
|
||||
|
||||
5
.github/workflows/integration-runner.yml
vendored
5
.github/workflows/integration-runner.yml
vendored
@@ -40,11 +40,6 @@ jobs:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: "poetry"
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '22.x'
|
||||
|
||||
- name: Comment on PR if 'integration-test' label is present
|
||||
if: github.event_name == 'pull_request' && github.event.label.name == 'integration-test'
|
||||
uses: KeisukeYamashita/create-comment@v1
|
||||
|
||||
@@ -100,7 +100,7 @@ poetry run pytest ./tests/unit/test_*.py
|
||||
To reduce build time (e.g., if no changes were made to the client-runtime component), you can use an existing Docker container image by
|
||||
setting the SANDBOX_RUNTIME_CONTAINER_IMAGE environment variable to the desired Docker image.
|
||||
|
||||
Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.27-nikolaik`
|
||||
Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.26-nikolaik`
|
||||
|
||||
## Develop inside Docker container
|
||||
|
||||
|
||||
@@ -43,17 +43,17 @@ See the [Running OpenHands](https://docs.all-hands.dev/modules/usage/installatio
|
||||
system requirements and more information.
|
||||
|
||||
```bash
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik
|
||||
|
||||
docker run -it --rm --pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e LOG_ALL_EVENTS=true \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v ~/.openhands-state:/.openhands-state \
|
||||
-p 3000:3000 \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26
|
||||
```
|
||||
|
||||
You'll find OpenHands running at [http://localhost:3000](http://localhost:3000)!
|
||||
|
||||
@@ -11,7 +11,7 @@ services:
|
||||
- BACKEND_HOST=${BACKEND_HOST:-"0.0.0.0"}
|
||||
- SANDBOX_API_HOSTNAME=host.docker.internal
|
||||
#
|
||||
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/all-hands-ai/runtime:0.27-nikolaik}
|
||||
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/all-hands-ai/runtime:0.26-nikolaik}
|
||||
- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234}
|
||||
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
|
||||
ports:
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
image: openhands:latest
|
||||
container_name: openhands-app-${DATE:-}
|
||||
environment:
|
||||
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik}
|
||||
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik}
|
||||
#- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234} # enable this only if you want a specific non-root sandbox user but you will have to manually adjust permissions of openhands-state for this user
|
||||
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
|
||||
ports:
|
||||
|
||||
@@ -42,11 +42,10 @@ Créez un fichier ```config.toml``` dans le répertoire OpenHands et entrez ces
|
||||
[core]
|
||||
workspace_base="./workspace"
|
||||
run_as_openhands=true
|
||||
[sandbox]
|
||||
base_container_image="image_personnalisée"
|
||||
sandbox_base_container_image="image_personnalisée"
|
||||
```
|
||||
|
||||
> Assurez-vous que ```base_container_image``` est défini sur le nom de votre image personnalisée précédente.
|
||||
> Assurez-vous que ```sandbox_base_container_image``` est défini sur le nom de votre image personnalisée précédente.
|
||||
|
||||
## Exécution
|
||||
|
||||
@@ -83,15 +82,14 @@ dockerfile_content = (
|
||||
## Dépannage / Erreurs
|
||||
|
||||
### Erreur: ```useradd: UID 1000 est non unique```
|
||||
Si vous voyez cette erreur dans la sortie de la console, il s'agit du fait que OpenHands essaie de créer le utilisateur openhands dans le sandbox avec un ID d'utilisateur de 1000, cependant cet ID d'utilisateur est déjà utilisé dans l'image (pour une raison inconnue). Pour résoudre ce problème, changez la valeur du champ user_id dans le fichier config.toml en une valeur différente:
|
||||
Si vous voyez cette erreur dans la sortie de la console, il s'agit du fait que OpenHands essaie de créer le utilisateur openhands dans le sandbox avec un ID d'utilisateur de 1000, cependant cet ID d'utilisateur est déjà utilisé dans l'image (pour une raison inconnue). Pour résoudre ce problème, changez la valeur du champ sandbox_user_id dans le fichier config.toml en une valeur différente:
|
||||
|
||||
```toml
|
||||
[core]
|
||||
workspace_base="./workspace"
|
||||
run_as_openhands=true
|
||||
[sandbox]
|
||||
base_container_image="image_personnalisée"
|
||||
user_id="1001"
|
||||
sandbox_base_container_image="image_personnalisée"
|
||||
sandbox_user_id="1001"
|
||||
```
|
||||
|
||||
### Erreurs de port d'utilisation
|
||||
|
||||
@@ -52,7 +52,7 @@ LLM_API_KEY="sk_test_12345"
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -61,7 +61,7 @@ docker run -it \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.cli
|
||||
```
|
||||
|
||||
|
||||
@@ -44,13 +44,12 @@ Tout d'abord, assurez-vous de pouvoir exécuter OpenHands en suivant les instruc
|
||||
|
||||
### Spécifier l'Image de Base du Sandbox
|
||||
|
||||
Dans le fichier `config.toml` dans le répertoire OpenHands, définissez `base_container_image` sur l'image que vous souhaitez utiliser. Cela peut être une image que vous avez déjà extraite ou une que vous avez construite :
|
||||
Dans le fichier `config.toml` dans le répertoire OpenHands, définissez `sandbox_base_container_image` sur l'image que vous souhaitez utiliser. Cela peut être une image que vous avez déjà extraite ou une que vous avez construite :
|
||||
|
||||
```bash
|
||||
[core]
|
||||
...
|
||||
[sandbox]
|
||||
base_container_image="custom-image"
|
||||
sandbox_base_container_image="custom-image"
|
||||
```
|
||||
|
||||
### Exécution
|
||||
|
||||
@@ -46,7 +46,7 @@ LLM_API_KEY="sk_test_12345"
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -56,6 +56,6 @@ docker run -it \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.main -t "write a bash script that prints hi" --no-auto-continue
|
||||
```
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
La façon la plus simple d'exécuter OpenHands est avec Docker.
|
||||
|
||||
```bash
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik
|
||||
|
||||
docker run -it --rm --pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e LOG_ALL_EVENTS=true \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-p 3000:3000 \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26
|
||||
```
|
||||
|
||||
Vous pouvez également exécuter OpenHands en mode [headless scriptable](https://docs.all-hands.dev/modules/usage/how-to/headless-mode), en tant que [CLI interactive](https://docs.all-hands.dev/modules/usage/how-to/cli-mode), ou en utilisant l'[Action GitHub OpenHands](https://docs.all-hands.dev/modules/usage/how-to/github-action).
|
||||
|
||||
@@ -13,7 +13,7 @@ C'est le Runtime par défaut qui est utilisé lorsque vous démarrez OpenHands.
|
||||
|
||||
```
|
||||
docker run # ...
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
# ...
|
||||
```
|
||||
|
||||
@@ -58,11 +58,10 @@ docker build -t custom_image .
|
||||
[core]
|
||||
workspace_base="./workspace"
|
||||
run_as_openhands=true
|
||||
[sandbox]
|
||||
base_container_image="custom_image"
|
||||
sandbox_base_container_image="custom_image"
|
||||
```
|
||||
|
||||
对于 `base_container_image` 的值, 您可以选择以下任意一项:
|
||||
对于 `sandbox_base_container_image` 的值, 您可以选择以下任意一项:
|
||||
1. 在上一步中您构建的自定义镜像的名称(例如,`“custom_image”`)
|
||||
2. 从 Docker Hub 拉取的镜像(例如,`“node:20”`,如果你需要一个预装 `Node.js` 的沙箱环境)
|
||||
|
||||
@@ -84,15 +83,14 @@ base_container_image="custom_image"
|
||||
|
||||
### 错误:```useradd: UID 1000 is not unique```
|
||||
|
||||
如果在控制台输出中看到此错误,说明 OpenHands 尝试在沙箱中以 UID 1000 创建 openhands 用户,但该 UID 已经被映像中的其他部分使用(不知何故)。要解决这个问题,请更改 config.toml 文件中的 user_id 字段为不同的值:
|
||||
如果在控制台输出中看到此错误,说明 OpenHands 尝试在沙箱中以 UID 1000 创建 openhands 用户,但该 UID 已经被映像中的其他部分使用(不知何故)。要解决这个问题,请更改 config.toml 文件中的 sandbox_user_id 字段为不同的值:
|
||||
|
||||
```
|
||||
[core]
|
||||
workspace_base="./workspace"
|
||||
run_as_openhands=true
|
||||
[sandbox]
|
||||
base_container_image="custom_image"
|
||||
user_id="1001"
|
||||
sandbox_base_container_image="custom_image"
|
||||
sandbox_user_id="1001"
|
||||
```
|
||||
|
||||
### 端口使用错误
|
||||
|
||||
@@ -50,7 +50,7 @@ LLM_API_KEY="sk_test_12345"
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -59,7 +59,7 @@ docker run -it \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.cli
|
||||
```
|
||||
|
||||
|
||||
@@ -42,13 +42,12 @@ docker build -t custom-image .
|
||||
|
||||
### 指定基础沙箱镜像
|
||||
|
||||
在 OpenHands 目录中的 `config.toml` 文件中,将 `base_container_image` 设置为你要使用的镜像。这可以是你已经拉取的镜像或你构建的镜像:
|
||||
在 OpenHands 目录中的 `config.toml` 文件中,将 `sandbox_base_container_image` 设置为你要使用的镜像。这可以是你已经拉取的镜像或你构建的镜像:
|
||||
|
||||
```bash
|
||||
[core]
|
||||
...
|
||||
[sandbox]
|
||||
base_container_image="custom-image"
|
||||
sandbox_base_container_image="custom-image"
|
||||
```
|
||||
|
||||
### 运行
|
||||
|
||||
@@ -47,7 +47,7 @@ LLM_API_KEY="sk_test_12345"
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -57,6 +57,6 @@ docker run -it \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.main -t "write a bash script that prints hi" --no-auto-continue
|
||||
```
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
在 Docker 中运行 OpenHands 是最简单的方式。
|
||||
|
||||
```bash
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik
|
||||
|
||||
docker run -it --rm --pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e LOG_ALL_EVENTS=true \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-p 3000:3000 \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26
|
||||
```
|
||||
|
||||
你也可以在可脚本化的[无头模式](https://docs.all-hands.dev/modules/usage/how-to/headless-mode)下运行 OpenHands,作为[交互式 CLI](https://docs.all-hands.dev/modules/usage/how-to/cli-mode),或使用 [OpenHands GitHub Action](https://docs.all-hands.dev/modules/usage/how-to/github-action)。
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
```
|
||||
docker run # ...
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
# ...
|
||||
```
|
||||
|
||||
@@ -385,11 +385,6 @@ To use these with the docker command, pass in `-e SANDBOX_<option>`. Example: `-
|
||||
- Default: `false`
|
||||
- Description: Use host network
|
||||
|
||||
- `runtime_binding_address`
|
||||
- Type: `str`
|
||||
- Default: `127.0.0.1`
|
||||
- Description: The binding address for the runtime ports. It specifies which network interface on the host machine Docker should bind the runtime ports to.
|
||||
|
||||
### Linting and Plugins
|
||||
- `enable_auto_lint`
|
||||
- Type: `bool`
|
||||
|
||||
@@ -35,7 +35,7 @@ To run OpenHands in CLI mode with Docker:
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -45,7 +45,7 @@ docker run -it \
|
||||
-v ~/.openhands-state:/.openhands-state \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.cli
|
||||
```
|
||||
|
||||
|
||||
@@ -60,14 +60,13 @@ First, ensure you can run OpenHands by following the instructions in [Developmen
|
||||
|
||||
### Specify the Base Sandbox Image
|
||||
|
||||
In the `config.toml` file within the OpenHands directory, set the `base_container_image` to the image you want to use.
|
||||
In the `config.toml` file within the OpenHands directory, set the `sandbox_base_container_image` to the image you want to use.
|
||||
This can be an image you’ve already pulled or one you’ve built:
|
||||
|
||||
```bash
|
||||
[core]
|
||||
...
|
||||
[sandbox]
|
||||
base_container_image="custom-image"
|
||||
sandbox_base_container_image="custom-image"
|
||||
```
|
||||
|
||||
### Additional Configuration Options
|
||||
|
||||
@@ -32,7 +32,7 @@ To run OpenHands in Headless mode with Docker:
|
||||
```bash
|
||||
docker run -it \
|
||||
--pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e SANDBOX_USER_ID=$(id -u) \
|
||||
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
|
||||
-e LLM_API_KEY=$LLM_API_KEY \
|
||||
@@ -43,7 +43,7 @@ docker run -it \
|
||||
-v ~/.openhands-state:/.openhands-state \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app-$(date +%Y%m%d%H%M%S) \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27 \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26 \
|
||||
python -m openhands.core.main -t "write a bash script that prints hi"
|
||||
```
|
||||
|
||||
|
||||
@@ -58,17 +58,17 @@ A system with a modern processor and a minimum of **4GB RAM** is recommended to
|
||||
The easiest way to run OpenHands is in Docker.
|
||||
|
||||
```bash
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik
|
||||
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik
|
||||
|
||||
docker run -it --rm --pull=always \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-e LOG_ALL_EVENTS=true \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v ~/.openhands-state:/.openhands-state \
|
||||
-p 3000:3000 \
|
||||
--add-host host.docker.internal:host-gateway \
|
||||
--name openhands-app \
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.27
|
||||
docker.all-hands.dev/all-hands-ai/openhands:0.26
|
||||
```
|
||||
|
||||
You'll find OpenHands running at http://localhost:3000!
|
||||
|
||||
@@ -16,7 +16,7 @@ some flags being passed to `docker run` that make this possible:
|
||||
|
||||
```
|
||||
docker run # ...
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
|
||||
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
# ...
|
||||
```
|
||||
|
||||
8
docs/package-lock.json
generated
8
docs/package-lock.json
generated
@@ -17,7 +17,7 @@
|
||||
"prism-react-renderer": "^2.4.1",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-icons": "^5.5.0",
|
||||
"react-icons": "^5.4.0",
|
||||
"react-use": "^17.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -15680,9 +15680,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-icons": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz",
|
||||
"integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==",
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz",
|
||||
"integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"react": "*"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"prism-react-renderer": "^2.4.1",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-icons": "^5.5.0",
|
||||
"react-icons": "^5.4.0",
|
||||
"react-use": "^17.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,6 +24,7 @@ from openhands.core.config import (
|
||||
from openhands.core.logger import openhands_logger as logger
|
||||
from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import MessageAction
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
game = None
|
||||
|
||||
@@ -121,6 +122,7 @@ def process_instance(
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
|
||||
state: State | None = asyncio.run(
|
||||
run_controller(
|
||||
|
||||
@@ -34,6 +34,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import AgentFinishAction, CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
|
||||
def get_config(
|
||||
@@ -210,6 +211,7 @@ def process_instance(
|
||||
# =============================================
|
||||
|
||||
runtime: Runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
|
||||
initialize_runtime(runtime, instance=instance)
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
# Configure visibility of unit tests to the Agent.
|
||||
USE_UNIT_TESTS = os.environ.get('USE_UNIT_TESTS', 'false').lower() == 'true'
|
||||
@@ -203,6 +204,7 @@ def process_instance(
|
||||
# =============================================
|
||||
|
||||
runtime: Runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
|
||||
initialize_runtime(runtime, instance=instance)
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
'CodeActAgent': functools.partial(
|
||||
@@ -274,6 +275,7 @@ def process_instance(
|
||||
instruction += AGENT_CLS_TO_INST_SUFFIX[metadata.agent_class]
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -34,6 +34,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
|
||||
def codeact_user_response(state: State) -> str:
|
||||
@@ -399,6 +400,7 @@ def process_instance(
|
||||
instruction += AGENT_CLS_TO_INST_SUFFIX[metadata.agent_class]
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -35,6 +35,7 @@ from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation, ErrorObservation
|
||||
from openhands.events.serialization.event import event_to_dict
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
from openhands.utils.shutdown_listener import sleep_if_should_continue
|
||||
|
||||
USE_HINT_TEXT = os.environ.get('USE_HINT_TEXT', 'false').lower() == 'true'
|
||||
@@ -394,6 +395,7 @@ def process_instance(
|
||||
logger.info(f'Starting evaluation for instance {instance.instance_id}.')
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
try:
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import AgentFinishAction, CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
EVALUATION_LLM = 'gpt-4-1106-preview'
|
||||
|
||||
@@ -281,6 +282,7 @@ def process_instance(
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance.data_files)
|
||||
|
||||
state: State | None = asyncio.run(
|
||||
|
||||
@@ -31,6 +31,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import AgentFinishAction, CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
DATASET_CACHE_DIR = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
@@ -148,6 +149,7 @@ def process_instance(
|
||||
logger.info(f'Instruction:\n{instruction}', extra={'msg_type': 'OBSERVATION'})
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -26,6 +26,7 @@ from openhands.core.config import (
|
||||
from openhands.core.logger import openhands_logger as logger
|
||||
from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import MessageAction
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
'CodeActAgent': codeact_user_response,
|
||||
@@ -82,6 +83,7 @@ def process_instance(
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
state: State | None = asyncio.run(
|
||||
run_controller(
|
||||
config=config,
|
||||
|
||||
@@ -49,6 +49,7 @@ from openhands.events.action import (
|
||||
MessageAction,
|
||||
)
|
||||
from openhands.events.observation import Observation
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
ACTION_FORMAT = """
|
||||
<<FINAL_ANSWER||
|
||||
@@ -214,6 +215,7 @@ Ok now its time to start solving the question. Good luck!
|
||||
"""
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
state: State | None = asyncio.run(
|
||||
run_controller(
|
||||
config=config,
|
||||
|
||||
@@ -39,6 +39,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
IMPORT_HELPER = {
|
||||
'python': [
|
||||
@@ -232,6 +233,7 @@ def process_instance(
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
state: State | None = asyncio.run(
|
||||
run_controller(
|
||||
|
||||
@@ -31,6 +31,7 @@ from openhands.events.action import (
|
||||
)
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
'CodeActAgent': codeact_user_response,
|
||||
@@ -206,6 +207,7 @@ def process_instance(
|
||||
instruction += AGENT_CLS_TO_INST_SUFFIX[metadata.agent_class]
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -41,6 +41,7 @@ from openhands.runtime.browser.browser_env import (
|
||||
BROWSER_EVAL_GET_GOAL_ACTION,
|
||||
BROWSER_EVAL_GET_REWARDS_ACTION,
|
||||
)
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
SUPPORTED_AGENT_CLS = {'BrowsingAgent', 'CodeActAgent'}
|
||||
|
||||
@@ -145,6 +146,7 @@ def process_instance(
|
||||
logger.info(f'Starting evaluation for instance {env_id}.')
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
task_str, obs = initialize_runtime(runtime)
|
||||
|
||||
task_str += (
|
||||
|
||||
@@ -35,6 +35,7 @@ from openhands.events.action import (
|
||||
)
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
|
||||
def codeact_user_response_mint(state: State, task: Task, task_config: dict[str, int]):
|
||||
@@ -184,6 +185,7 @@ def process_instance(
|
||||
)
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime)
|
||||
|
||||
state: State | None = asyncio.run(
|
||||
|
||||
@@ -43,6 +43,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
config = load_app_config()
|
||||
|
||||
@@ -234,6 +235,7 @@ def process_instance(instance: Any, metadata: EvalMetadata, reset_logger: bool =
|
||||
instruction += AGENT_CLS_TO_INST_SUFFIX[metadata.agent_class]
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Run the agent
|
||||
|
||||
@@ -29,6 +29,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
'CodeActAgent': codeact_user_response,
|
||||
@@ -195,6 +196,7 @@ If the program uses some packages that are incompatible, please figure out alter
|
||||
"""
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -11,11 +11,7 @@ from swebench.harness.run_evaluation import (
|
||||
APPLY_PATCH_FAIL,
|
||||
APPLY_PATCH_PASS,
|
||||
)
|
||||
from swebench.harness.test_spec.test_spec import (
|
||||
SWEbenchInstance,
|
||||
TestSpec,
|
||||
make_test_spec,
|
||||
)
|
||||
from swebench.harness.test_spec import SWEbenchInstance, TestSpec, make_test_spec
|
||||
from swebench.harness.utils import load_swebench_dataset
|
||||
from tqdm import tqdm
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation, ErrorObservation
|
||||
from openhands.events.serialization.event import event_to_dict
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
from openhands.utils.shutdown_listener import sleep_if_should_continue
|
||||
|
||||
USE_HINT_TEXT = os.environ.get('USE_HINT_TEXT', 'false').lower() == 'true'
|
||||
@@ -58,6 +59,8 @@ def _get_swebench_workspace_dir_name(instance: pd.Series) -> str:
|
||||
|
||||
def get_instruction(instance: pd.Series, metadata: EvalMetadata):
|
||||
workspace_dir_name = _get_swebench_workspace_dir_name(instance)
|
||||
# Prepare instruction
|
||||
|
||||
# Instruction based on Anthropic's official trajectory
|
||||
# https://github.com/eschluntz/swe-bench-experiments/tree/main/evaluation/verified/20241022_tools_claude-3-5-sonnet-updated/trajs
|
||||
instruction = (
|
||||
@@ -69,20 +72,14 @@ def get_instruction(instance: pd.Series, metadata: EvalMetadata):
|
||||
f'{instance.problem_statement}\n'
|
||||
'</issue_description>\n\n'
|
||||
'Can you help me implement the necessary changes to the repository so that the requirements specified in the <issue_description> are met?\n'
|
||||
"I've already taken care of all changes to any of the test files described in the <issue_description>. This means you DON'T have to modify the testing logic or any of the tests in any way!\n"
|
||||
"Also the development Python environment is already set up for you (i.e., all dependencies already installed), so you don't need to install other packages.\n"
|
||||
'Your task is to make the minimal changes to non-test files in the /workspace directory to ensure the <issue_description> is satisfied.\n'
|
||||
"I've already taken care of all changes to any of the test files described in the <pr_description>. This means you DON'T have to modify the testing logic or any of the tests in any way!\n"
|
||||
'Your task is to make the minimal changes to non-tests files in the /workspace directory to ensure the <pr_description> is satisfied.\n'
|
||||
'Follow these steps to resolve the issue:\n'
|
||||
'1. As a first step, it might be a good idea to explore the repo to familiarize yourself with its structure.\n'
|
||||
'2. Create a script to reproduce the error and execute it with `python <filename.py>` using the BashTool, to confirm the error\n'
|
||||
'3. Edit the sourcecode of the repo to resolve the issue\n'
|
||||
'4. Rerun your reproduce script and confirm that the error is fixed!\n'
|
||||
'5. Think about edgecases, add comprehensive tests for them in your reproduce script, and run them to make sure your fix handles them as well\n'
|
||||
f'6. Once you are done with the initial implementation, please carefully re-read the problem description and check the difference between the current code and the base commit {instance["base_commit"]}. Do you think that the issue has been completely and comprehensively solved? Write tests to check the correctness of the solution, specifically focusing on tests that may point out any remaining problems that are not yet solved. Run all of the tests in the repo and check if any of them fail, and if they do fix the code. Repeat this process of carefully reading the problem description and current implementation, testing, and fixing any problems until you are confident that the current implementation is correct. Find and run any tests in the repo that are related to:\n'
|
||||
' - The issue you are fixing\n'
|
||||
' - The files you modified\n'
|
||||
' - The functions you changed\n'
|
||||
' Make sure all these tests pass with your changes.\n'
|
||||
'5. Think about edgecases and make sure your fix handles them as well\n'
|
||||
"Your thinking should be thorough and so it's fine if it's very long.\n"
|
||||
)
|
||||
|
||||
@@ -100,19 +97,11 @@ DOCKER_IMAGE_PREFIX = os.environ.get('EVAL_DOCKER_IMAGE_PREFIX', 'docker.io/xing
|
||||
logger.info(f'Using docker image prefix: {DOCKER_IMAGE_PREFIX}')
|
||||
|
||||
|
||||
def get_instance_docker_image(instance_id: str, official_image: bool = False) -> str:
|
||||
if official_image:
|
||||
# Official SWE-Bench image
|
||||
# swebench/sweb.eval.x86_64.django_1776_django-11333:v1
|
||||
repo, name = instance_id.split('__')
|
||||
image_name = f'sweb.eval.x86_64.{repo}_1776_{name}:latest'
|
||||
logger.warning(f'Using official SWE-Bench image: {image_name}')
|
||||
else:
|
||||
# OpenHands version of the image
|
||||
image_name = 'sweb.eval.x86_64.' + instance_id
|
||||
image_name = image_name.replace(
|
||||
'__', '_s_'
|
||||
) # to comply with docker image naming convention
|
||||
def get_instance_docker_image(instance_id: str) -> str:
|
||||
image_name = 'sweb.eval.x86_64.' + instance_id
|
||||
image_name = image_name.replace(
|
||||
'__', '_s_'
|
||||
) # to comply with docker image naming convention
|
||||
return (DOCKER_IMAGE_PREFIX.rstrip('/') + '/' + image_name).lower()
|
||||
|
||||
|
||||
@@ -123,12 +112,7 @@ def get_config(
|
||||
SWE_BENCH_CONTAINER_IMAGE = 'ghcr.io/opendevin/eval-swe-bench:full-v1.2.1'
|
||||
if USE_INSTANCE_IMAGE:
|
||||
# We use a different instance image for the each instance of swe-bench eval
|
||||
use_official_image = bool(
|
||||
'verified' in metadata.dataset.lower() or 'lite' in metadata.dataset.lower()
|
||||
)
|
||||
base_container_image = get_instance_docker_image(
|
||||
instance['instance_id'], use_official_image
|
||||
)
|
||||
base_container_image = get_instance_docker_image(instance['instance_id'])
|
||||
logger.info(
|
||||
f'Using instance container image: {base_container_image}. '
|
||||
f'Please make sure this image exists. '
|
||||
@@ -371,32 +355,6 @@ def complete_runtime(
|
||||
f'Failed to git config --global core.pager "": {str(obs)}',
|
||||
)
|
||||
|
||||
# First check for any git repositories in subdirectories
|
||||
action = CmdRunAction(command='find . -type d -name .git -not -path "./.git"')
|
||||
action.set_hard_timeout(600)
|
||||
logger.info(action, extra={'msg_type': 'ACTION'})
|
||||
obs = runtime.run_action(action)
|
||||
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
|
||||
assert_and_raise(
|
||||
isinstance(obs, CmdOutputObservation) and obs.exit_code == 0,
|
||||
f'Failed to find git repositories: {str(obs)}',
|
||||
)
|
||||
|
||||
git_dirs = [p for p in obs.content.strip().split('\n') if p]
|
||||
if git_dirs:
|
||||
# Remove all .git directories in subdirectories
|
||||
for git_dir in git_dirs:
|
||||
action = CmdRunAction(command=f'rm -rf "{git_dir}"')
|
||||
action.set_hard_timeout(600)
|
||||
logger.info(action, extra={'msg_type': 'ACTION'})
|
||||
obs = runtime.run_action(action)
|
||||
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
|
||||
assert_and_raise(
|
||||
isinstance(obs, CmdOutputObservation) and obs.exit_code == 0,
|
||||
f'Failed to remove git directory {git_dir}: {str(obs)}',
|
||||
)
|
||||
|
||||
# add all files
|
||||
action = CmdRunAction(command='git add -A')
|
||||
action.set_hard_timeout(600)
|
||||
logger.info(action, extra={'msg_type': 'ACTION'})
|
||||
@@ -464,6 +422,7 @@ def process_instance(
|
||||
f'This is the {runtime_failure_count + 1}th attempt for instance {instance.instance_id}, setting resource factor to {config.sandbox.remote_runtime_resource_factor}'
|
||||
)
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
|
||||
try:
|
||||
initialize_runtime(runtime, instance)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,300 +1,336 @@
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-12907:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14182:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14365:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14995:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-6938:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-7746:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10914:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10924:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11001:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11019:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11039:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11049:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11099:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11133:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11179:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11283:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11422:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11564:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11583:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11620:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11630:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11742:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11797:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11815:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11848:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11905:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11910:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11964:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11999:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12113:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12125:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12184:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12284:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12286:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12308:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12453:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12470:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12497:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12589:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12700:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12708:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12747:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12856:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12908:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12915:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12983:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13028:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13033:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13158:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13220:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13230:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13265:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13315:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13321:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13401:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13447:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13448:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13551:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13590:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13658:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13660:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13710:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13757:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13768:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13925:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13933:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13964:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14016:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14017:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14155:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14238:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14382:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14411:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14534:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14580:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14608:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14667:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14672:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14730:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14752:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14787:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14855:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14915:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14997:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14999:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15061:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15202:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15213:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15252:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15320:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15347:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15388:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15400:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15498:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15695:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15738:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15781:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15789:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15790:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15814:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15819:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15851:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15902:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15996:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16041:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16046:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16139:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16229:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16255:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16379:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16400:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16408:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16527:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16595:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16816:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16820:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16873:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16910:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-17051:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-17087:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-18869:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-22711:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-22835:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23299:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23314:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23476:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23562:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23563:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23913:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23964:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23987:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24149:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24265:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24334:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24970:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25079:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25311:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25332:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25433:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25442:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25498:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26011:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26020:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-2848:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-3010:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-3190:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-3407:latest
|
||||
swebench/sweb.eval.x86_64.pallets_1776_flask-4045:latest
|
||||
swebench/sweb.eval.x86_64.pallets_1776_flask-4992:latest
|
||||
swebench/sweb.eval.x86_64.pallets_1776_flask-5063:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-1963:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-2148:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-2317:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-2674:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-3362:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-863:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3364:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4094:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4248:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4493:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-5131:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-5859:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-6506:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7080:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7114:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7228:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7993:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-11143:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-11148:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5103:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5221:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5227:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5413:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5495:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5692:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-6116:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7168:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7220:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7373:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7432:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7490:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-8365:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-8906:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-9359:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10297:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10508:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10949:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-11040:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-11281:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-12471:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13142:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13241:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13439:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13496:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13497:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13584:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13779:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14087:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14092:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14894:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14983:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-15512:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-15535:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25500:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25570:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25638:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25747:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10325:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10451:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-11445:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7686:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7738:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7975:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8273:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8282:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8435:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8474:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8506:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8595:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8627:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8713:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8721:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8801:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-11400:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-11870:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-11897:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12171:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12236:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12419:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12454:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12481:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13031:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13043:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13146:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13177:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13437:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13471:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13480:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13647:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13773:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13895:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13915:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13971:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14024:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14308:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14317:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14396:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14774:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14817:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15011:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15308:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15345:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15346:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15609:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15678:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16106:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16281:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16503:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16792:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16988:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17022:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17139:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17630:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17655:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18057:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18087:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18189:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18199:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18532:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18621:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18698:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18835:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19007:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19254:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19487:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20049:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20154:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20212:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20322:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20442:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20590:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20639:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21055:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21171:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21379:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21612:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21614:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21627:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21847:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22005:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22714:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22840:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23117:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23191:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23262:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24066:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24102:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24152:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24213:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24909:latest
|
||||
sweb.base.x86_64:latest
|
||||
sweb.env.x86_64.088a7e628bda9770f9757b:latest
|
||||
sweb.env.x86_64.0d80c7dec81ee2f2f513e2:latest
|
||||
sweb.env.x86_64.0f99bce2750f3109957bec:latest
|
||||
sweb.env.x86_64.1b3b218535da0abf4469cb:latest
|
||||
sweb.env.x86_64.1c1a6945f732f9391228c5:latest
|
||||
sweb.env.x86_64.1f92e6d7cef88badc4f744:latest
|
||||
sweb.env.x86_64.27dd9791e13f5c857a09f9:latest
|
||||
sweb.env.x86_64.297af196949a2a635bce66:latest
|
||||
sweb.env.x86_64.2baaea72acc974f6c02079:latest
|
||||
sweb.env.x86_64.2e50125951bc69cddd7421:latest
|
||||
sweb.env.x86_64.2f217c8b4490bfa0e2ba14:latest
|
||||
sweb.env.x86_64.31244378a92e3bcce809ac:latest
|
||||
sweb.env.x86_64.428468730904ff6b4232aa:latest
|
||||
sweb.env.x86_64.5d1fda9d55d65d8a4e5bdb:latest
|
||||
sweb.env.x86_64.6b007979cf533f0f3016e8:latest
|
||||
sweb.env.x86_64.7037e8c448a4b8ebfe9b13:latest
|
||||
sweb.env.x86_64.71498c7426dbf05599642f:latest
|
||||
sweb.env.x86_64.756beac07713d7e8dc1129:latest
|
||||
sweb.env.x86_64.78278ae2cf880e395f1337:latest
|
||||
sweb.env.x86_64.8f1f7b974f0c57c7aeba39:latest
|
||||
sweb.env.x86_64.934a137824256b612e9dc5:latest
|
||||
sweb.env.x86_64.a0efca7a0fe6719dbf65c2:latest
|
||||
sweb.env.x86_64.a18371b03f944585b4f08c:latest
|
||||
sweb.env.x86_64.a33dddf55cdff5d8e23374:latest
|
||||
sweb.env.x86_64.aa92880033da20ca313928:latest
|
||||
sweb.env.x86_64.b649f0ff62fad147f7f073:latest
|
||||
sweb.env.x86_64.b7ce4be3b3c35f68c61248:latest
|
||||
sweb.env.x86_64.c70909fdac4897d1c685df:latest
|
||||
sweb.env.x86_64.c795f4b88616b8462021ed:latest
|
||||
sweb.env.x86_64.cc47cc71483942d0c3a15e:latest
|
||||
sweb.env.x86_64.dc5ff4c0e3fe8db5afc4da:latest
|
||||
sweb.env.x86_64.e3afd7f04b325a4de4982d:latest
|
||||
sweb.env.x86_64.e5bb89bf78258a7d14c34b:latest
|
||||
sweb.env.x86_64.e83e37f52c09532c62acfb:latest
|
||||
sweb.env.x86_64.efa6065ed5bf204410fd53:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-12907:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-14182:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-14365:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-14995:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-6938:latest
|
||||
sweb.eval.x86_64.astropy_s_astropy-7746:latest
|
||||
sweb.eval.x86_64.django_s_django-10914:latest
|
||||
sweb.eval.x86_64.django_s_django-10924:latest
|
||||
sweb.eval.x86_64.django_s_django-11001:latest
|
||||
sweb.eval.x86_64.django_s_django-11019:latest
|
||||
sweb.eval.x86_64.django_s_django-11039:latest
|
||||
sweb.eval.x86_64.django_s_django-11049:latest
|
||||
sweb.eval.x86_64.django_s_django-11099:latest
|
||||
sweb.eval.x86_64.django_s_django-11133:latest
|
||||
sweb.eval.x86_64.django_s_django-11179:latest
|
||||
sweb.eval.x86_64.django_s_django-11283:latest
|
||||
sweb.eval.x86_64.django_s_django-11422:latest
|
||||
sweb.eval.x86_64.django_s_django-11564:latest
|
||||
sweb.eval.x86_64.django_s_django-11583:latest
|
||||
sweb.eval.x86_64.django_s_django-11620:latest
|
||||
sweb.eval.x86_64.django_s_django-11630:latest
|
||||
sweb.eval.x86_64.django_s_django-11742:latest
|
||||
sweb.eval.x86_64.django_s_django-11797:latest
|
||||
sweb.eval.x86_64.django_s_django-11815:latest
|
||||
sweb.eval.x86_64.django_s_django-11848:latest
|
||||
sweb.eval.x86_64.django_s_django-11905:latest
|
||||
sweb.eval.x86_64.django_s_django-11910:latest
|
||||
sweb.eval.x86_64.django_s_django-11964:latest
|
||||
sweb.eval.x86_64.django_s_django-11999:latest
|
||||
sweb.eval.x86_64.django_s_django-12113:latest
|
||||
sweb.eval.x86_64.django_s_django-12125:latest
|
||||
sweb.eval.x86_64.django_s_django-12184:latest
|
||||
sweb.eval.x86_64.django_s_django-12284:latest
|
||||
sweb.eval.x86_64.django_s_django-12286:latest
|
||||
sweb.eval.x86_64.django_s_django-12308:latest
|
||||
sweb.eval.x86_64.django_s_django-12453:latest
|
||||
sweb.eval.x86_64.django_s_django-12470:latest
|
||||
sweb.eval.x86_64.django_s_django-12497:latest
|
||||
sweb.eval.x86_64.django_s_django-12589:latest
|
||||
sweb.eval.x86_64.django_s_django-12700:latest
|
||||
sweb.eval.x86_64.django_s_django-12708:latest
|
||||
sweb.eval.x86_64.django_s_django-12747:latest
|
||||
sweb.eval.x86_64.django_s_django-12856:latest
|
||||
sweb.eval.x86_64.django_s_django-12908:latest
|
||||
sweb.eval.x86_64.django_s_django-12915:latest
|
||||
sweb.eval.x86_64.django_s_django-12983:latest
|
||||
sweb.eval.x86_64.django_s_django-13028:latest
|
||||
sweb.eval.x86_64.django_s_django-13033:latest
|
||||
sweb.eval.x86_64.django_s_django-13158:latest
|
||||
sweb.eval.x86_64.django_s_django-13220:latest
|
||||
sweb.eval.x86_64.django_s_django-13230:latest
|
||||
sweb.eval.x86_64.django_s_django-13265:latest
|
||||
sweb.eval.x86_64.django_s_django-13315:latest
|
||||
sweb.eval.x86_64.django_s_django-13321:latest
|
||||
sweb.eval.x86_64.django_s_django-13401:latest
|
||||
sweb.eval.x86_64.django_s_django-13447:latest
|
||||
sweb.eval.x86_64.django_s_django-13448:latest
|
||||
sweb.eval.x86_64.django_s_django-13551:latest
|
||||
sweb.eval.x86_64.django_s_django-13590:latest
|
||||
sweb.eval.x86_64.django_s_django-13658:latest
|
||||
sweb.eval.x86_64.django_s_django-13660:latest
|
||||
sweb.eval.x86_64.django_s_django-13710:latest
|
||||
sweb.eval.x86_64.django_s_django-13757:latest
|
||||
sweb.eval.x86_64.django_s_django-13768:latest
|
||||
sweb.eval.x86_64.django_s_django-13925:latest
|
||||
sweb.eval.x86_64.django_s_django-13933:latest
|
||||
sweb.eval.x86_64.django_s_django-13964:latest
|
||||
sweb.eval.x86_64.django_s_django-14016:latest
|
||||
sweb.eval.x86_64.django_s_django-14017:latest
|
||||
sweb.eval.x86_64.django_s_django-14155:latest
|
||||
sweb.eval.x86_64.django_s_django-14238:latest
|
||||
sweb.eval.x86_64.django_s_django-14382:latest
|
||||
sweb.eval.x86_64.django_s_django-14411:latest
|
||||
sweb.eval.x86_64.django_s_django-14534:latest
|
||||
sweb.eval.x86_64.django_s_django-14580:latest
|
||||
sweb.eval.x86_64.django_s_django-14608:latest
|
||||
sweb.eval.x86_64.django_s_django-14667:latest
|
||||
sweb.eval.x86_64.django_s_django-14672:latest
|
||||
sweb.eval.x86_64.django_s_django-14730:latest
|
||||
sweb.eval.x86_64.django_s_django-14752:latest
|
||||
sweb.eval.x86_64.django_s_django-14787:latest
|
||||
sweb.eval.x86_64.django_s_django-14855:latest
|
||||
sweb.eval.x86_64.django_s_django-14915:latest
|
||||
sweb.eval.x86_64.django_s_django-14997:latest
|
||||
sweb.eval.x86_64.django_s_django-14999:latest
|
||||
sweb.eval.x86_64.django_s_django-15061:latest
|
||||
sweb.eval.x86_64.django_s_django-15202:latest
|
||||
sweb.eval.x86_64.django_s_django-15213:latest
|
||||
sweb.eval.x86_64.django_s_django-15252:latest
|
||||
sweb.eval.x86_64.django_s_django-15320:latest
|
||||
sweb.eval.x86_64.django_s_django-15347:latest
|
||||
sweb.eval.x86_64.django_s_django-15388:latest
|
||||
sweb.eval.x86_64.django_s_django-15400:latest
|
||||
sweb.eval.x86_64.django_s_django-15498:latest
|
||||
sweb.eval.x86_64.django_s_django-15695:latest
|
||||
sweb.eval.x86_64.django_s_django-15738:latest
|
||||
sweb.eval.x86_64.django_s_django-15781:latest
|
||||
sweb.eval.x86_64.django_s_django-15789:latest
|
||||
sweb.eval.x86_64.django_s_django-15790:latest
|
||||
sweb.eval.x86_64.django_s_django-15814:latest
|
||||
sweb.eval.x86_64.django_s_django-15819:latest
|
||||
sweb.eval.x86_64.django_s_django-15851:latest
|
||||
sweb.eval.x86_64.django_s_django-15902:latest
|
||||
sweb.eval.x86_64.django_s_django-15996:latest
|
||||
sweb.eval.x86_64.django_s_django-16041:latest
|
||||
sweb.eval.x86_64.django_s_django-16046:latest
|
||||
sweb.eval.x86_64.django_s_django-16139:latest
|
||||
sweb.eval.x86_64.django_s_django-16229:latest
|
||||
sweb.eval.x86_64.django_s_django-16255:latest
|
||||
sweb.eval.x86_64.django_s_django-16379:latest
|
||||
sweb.eval.x86_64.django_s_django-16400:latest
|
||||
sweb.eval.x86_64.django_s_django-16408:latest
|
||||
sweb.eval.x86_64.django_s_django-16527:latest
|
||||
sweb.eval.x86_64.django_s_django-16595:latest
|
||||
sweb.eval.x86_64.django_s_django-16816:latest
|
||||
sweb.eval.x86_64.django_s_django-16820:latest
|
||||
sweb.eval.x86_64.django_s_django-16873:latest
|
||||
sweb.eval.x86_64.django_s_django-16910:latest
|
||||
sweb.eval.x86_64.django_s_django-17051:latest
|
||||
sweb.eval.x86_64.django_s_django-17087:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-18869:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-22711:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-22835:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23299:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23314:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23476:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23562:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23563:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23913:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23964:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-23987:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-24149:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-24265:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-24334:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-24970:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25079:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25311:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25332:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25433:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25442:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-25498:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-26011:latest
|
||||
sweb.eval.x86_64.matplotlib_s_matplotlib-26020:latest
|
||||
sweb.eval.x86_64.mwaskom_s_seaborn-2848:latest
|
||||
sweb.eval.x86_64.mwaskom_s_seaborn-3010:latest
|
||||
sweb.eval.x86_64.mwaskom_s_seaborn-3190:latest
|
||||
sweb.eval.x86_64.mwaskom_s_seaborn-3407:latest
|
||||
sweb.eval.x86_64.pallets_s_flask-4045:latest
|
||||
sweb.eval.x86_64.pallets_s_flask-4992:latest
|
||||
sweb.eval.x86_64.pallets_s_flask-5063:latest
|
||||
sweb.eval.x86_64.psf_s_requests-1963:latest
|
||||
sweb.eval.x86_64.psf_s_requests-2148:latest
|
||||
sweb.eval.x86_64.psf_s_requests-2317:latest
|
||||
sweb.eval.x86_64.psf_s_requests-2674:latest
|
||||
sweb.eval.x86_64.psf_s_requests-3362:latest
|
||||
sweb.eval.x86_64.psf_s_requests-863:latest
|
||||
sweb.eval.x86_64.pydata_s_xarray-3364:latest
|
||||
sweb.eval.x86_64.pydata_s_xarray-4094:latest
|
||||
sweb.eval.x86_64.pydata_s_xarray-4248:latest
|
||||
sweb.eval.x86_64.pydata_s_xarray-4493:latest
|
||||
sweb.eval.x86_64.pydata_s_xarray-5131:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-5859:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-6506:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-7080:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-7114:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-7228:latest
|
||||
sweb.eval.x86_64.pylint-dev_s_pylint-7993:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-11143:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-11148:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5103:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5221:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5227:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5413:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5495:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-5692:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-6116:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-7168:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-7220:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-7373:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-7432:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-7490:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-8365:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-8906:latest
|
||||
sweb.eval.x86_64.pytest-dev_s_pytest-9359:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-10297:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-10508:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-10949:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-11040:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-11281:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-12471:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13142:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13241:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13439:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13496:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13497:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13584:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-13779:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-14087:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-14092:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-14894:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-14983:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-15512:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-15535:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-25500:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-25570:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-25638:latest
|
||||
sweb.eval.x86_64.scikit-learn_s_scikit-learn-25747:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-10325:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-10451:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-11445:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-7686:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-7738:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-7975:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8273:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8282:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8435:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8474:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8506:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8595:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8627:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8713:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8721:latest
|
||||
sweb.eval.x86_64.sphinx-doc_s_sphinx-8801:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-11400:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-11870:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-11897:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-12171:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-12236:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-12419:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-12454:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-12481:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13031:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13043:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13146:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13177:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13437:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13471:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13480:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13647:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13773:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13895:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13915:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-13971:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14024:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14308:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14317:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14396:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14774:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-14817:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15011:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15308:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15345:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15346:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15609:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-15678:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-16106:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-16281:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-16503:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-16792:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-16988:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-17022:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-17139:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-17630:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-17655:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18057:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18087:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18189:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18199:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18532:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18621:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18698:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-18835:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-19007:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-19254:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-19487:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20049:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20154:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20212:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20322:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20442:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20590:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-20639:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21055:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21171:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21379:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21612:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21614:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21627:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-21847:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-22005:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-22714:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-22840:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-23117:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-23191:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-23262:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-24066:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-24102:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-24152:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-24213:latest
|
||||
sweb.eval.x86_64.sympy_s_sympy-24909:latest
|
||||
|
||||
@@ -1,500 +0,0 @@
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-12907:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13033:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13236:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13398:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13453:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13579:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-13977:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14096:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14182:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14309:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14365:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14369:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14508:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14539:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14598:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-14995:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-7166:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-7336:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-7606:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-7671:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-8707:latest
|
||||
swebench/sweb.eval.x86_64.astropy_1776_astropy-8872:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10097:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10554:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10880:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10914:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10973:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-10999:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11066:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11087:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11095:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11099:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11119:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11133:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11138:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11141:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11149:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11163:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11179:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11206:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11211:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11239:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11265:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11276:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11292:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11299:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11333:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11400:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11433:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11451:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11477:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11490:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11532:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11551:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11555:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11603:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11728:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11734:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11740:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11749:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11790:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11815:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11820:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11848:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11880:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11885:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11951:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11964:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-11999:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12039:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12050:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12125:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12143:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12155:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12193:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12209:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12262:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12273:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12276:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12304:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12308:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12325:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12406:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12419:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12663:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12708:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12713:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12741:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12754:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12774:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12858:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-12965:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13012:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13023:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13028:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13033:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13089:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13109:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13112:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13121:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13128:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13158:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13195:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13212:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13279:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13297:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13315:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13343:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13344:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13346:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13363:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13401:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13406:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13410:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13417:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13449:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13512:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13513:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13516:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13551:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13568:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13569:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13590:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13658:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13670:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13741:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13786:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13794:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13807:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13809:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13810:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13820:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13821:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13837:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13925:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13933:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-13964:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14007:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14011:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14017:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14034:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14053:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14089:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14122:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14140:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14155:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14170:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14238:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14311:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14315:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14349:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14351:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14373:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14376:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14404:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14434:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14493:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14500:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14534:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14539:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14559:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14580:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14608:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14631:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14672:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14725:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14752:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14765:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14771:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14787:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14792:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14855:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14915:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-14999:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15022:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15037:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15098:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15103:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15104:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15127:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15128:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15161:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15252:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15268:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15277:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15278:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15280:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15315:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15368:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15375:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15380:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15382:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15467:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15499:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15503:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15525:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15554:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15561:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15563:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15569:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15572:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15629:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15695:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15731:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15732:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15741:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15814:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15851:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15863:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15916:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15930:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15957:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15973:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-15987:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16032:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16082:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16100:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16116:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16136:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16139:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16145:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16255:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16256:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16263:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16315:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16333:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16429:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16454:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16485:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16493:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16502:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16527:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16560:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16569:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16595:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16612:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16631:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16642:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16661:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16662:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16667:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16801:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16819:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16877:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16899:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16901:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16938:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-16950:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-17029:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-17084:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-17087:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-7530:latest
|
||||
swebench/sweb.eval.x86_64.django_1776_django-9296:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-13989:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-14623:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-20488:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-20676:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-20826:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-20859:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-21568:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-22719:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-22865:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-22871:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23299:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23314:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23412:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-23476:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24026:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24149:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24177:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24570:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24627:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24637:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24870:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-24970:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25122:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25287:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25311:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25332:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25479:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25775:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-25960:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26113:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26208:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26291:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26342:latest
|
||||
swebench/sweb.eval.x86_64.matplotlib_1776_matplotlib-26466:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-3069:latest
|
||||
swebench/sweb.eval.x86_64.mwaskom_1776_seaborn-3187:latest
|
||||
swebench/sweb.eval.x86_64.pallets_1776_flask-5014:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-1142:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-1724:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-1766:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-1921:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-2317:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-2931:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-5414:latest
|
||||
swebench/sweb.eval.x86_64.psf_1776_requests-6028:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-2905:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3095:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3151:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3305:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3677:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-3993:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4075:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4094:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4356:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4629:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4687:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4695:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-4966:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6461:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6599:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6721:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6744:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6938:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-6992:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-7229:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-7233:latest
|
||||
swebench/sweb.eval.x86_64.pydata_1776_xarray-7393:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-4551:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-4604:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-4661:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-4970:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-6386:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-6528:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-6903:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7080:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-7277:latest
|
||||
swebench/sweb.eval.x86_64.pylint-dev_1776_pylint-8898:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-10051:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-10081:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-10356:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5262:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5631:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5787:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5809:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-5840:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-6197:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-6202:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7205:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7236:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7324:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7432:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7490:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7521:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7571:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-7982:latest
|
||||
swebench/sweb.eval.x86_64.pytest-dev_1776_pytest-8399:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10297:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10844:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-10908:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-11310:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-11578:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-12585:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-12682:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-12973:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13124:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13135:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13142:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13328:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13439:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13496:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-13779:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14053:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14087:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14141:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14496:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14629:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14710:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14894:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-14983:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-15100:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25102:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25232:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25747:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25931:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-25973:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-26194:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-26323:latest
|
||||
swebench/sweb.eval.x86_64.scikit-learn_1776_scikit-learn-9288:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10323:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10435:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10449:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10466:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10614:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-10673:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-11445:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-11510:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7440:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7454:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7462:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7590:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7748:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7757:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7889:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7910:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-7985:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8035:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8056:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8120:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8265:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8269:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8459:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8475:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8548:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8551:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8593:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8595:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8621:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8638:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-8721:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9229:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9230:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9258:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9281:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9320:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9367:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9461:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9591:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9602:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9658:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9673:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9698:latest
|
||||
swebench/sweb.eval.x86_64.sphinx-doc_1776_sphinx-9711:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-11618:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12096:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12419:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12481:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-12489:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13031:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13091:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13372:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13480:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13551:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13615:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13647:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13757:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13798:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13852:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13877:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13878:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-13974:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14248:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14531:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14711:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-14976:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15017:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15345:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15349:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15599:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15809:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15875:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-15976:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16450:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16597:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16766:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16792:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-16886:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17139:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17318:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17630:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-17655:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18189:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18199:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18211:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18698:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-18763:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19040:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19346:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19495:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19637:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19783:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-19954:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20154:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20428:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20438:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20590:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20801:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-20916:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21379:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21596:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21612:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21847:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-21930:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22080:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22456:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22714:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-22914:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23262:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23413:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23534:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23824:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-23950:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24066:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24213:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24443:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24539:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24562:latest
|
||||
swebench/sweb.eval.x86_64.sympy_1776_sympy-24661:latest
|
||||
@@ -1,50 +0,0 @@
|
||||
"""Get official docker image names for SWE-bench instances."""
|
||||
|
||||
import argparse
|
||||
|
||||
from datasets import load_dataset
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--dataset', type=str, default='princeton-nlp/SWE-bench')
|
||||
parser.add_argument('--split', type=str, default='test')
|
||||
parser.add_argument('--output', type=str, default='swebench_images.txt')
|
||||
args = parser.parse_args()
|
||||
|
||||
SUPPORTED_DATASET = {
|
||||
'princeton-nlp/SWE-bench_Multimodal',
|
||||
'princeton-nlp/SWE-bench',
|
||||
'princeton-nlp/SWE-bench_Lite',
|
||||
'princeton-nlp/SWE-bench_Verified',
|
||||
}
|
||||
assert args.dataset in SUPPORTED_DATASET, f'Dataset {args.dataset} not supported'
|
||||
|
||||
|
||||
def swebench_instance_id_to_docker_image_name(instance_id: str) -> str:
|
||||
# swebench/sweb.eval.x86_64.django_1776_django-11333:v1
|
||||
repo, name = instance_id.split('__')
|
||||
return f'swebench/sweb.eval.x86_64.{repo}_1776_{name}:latest'
|
||||
|
||||
|
||||
def swebench_multimodal_instance_id_to_docker_image_name(instance_id: str) -> str:
|
||||
# swebench/sweb.mm.eval.x86_64.openlayers_1776_openlayers-12172
|
||||
repo, name = instance_id.split('__')
|
||||
return f'swebench/sweb.mm.eval.x86_64.{repo}_1776_{name}:latest'
|
||||
|
||||
|
||||
dataset = load_dataset(args.dataset, split=args.split)
|
||||
instance_ids = dataset['instance_id']
|
||||
|
||||
print(f'Loading {len(instance_ids)} instances from {args.dataset} split {args.split}')
|
||||
with open(args.output, 'w') as f:
|
||||
for instance_id in instance_ids:
|
||||
if args.dataset in [
|
||||
'princeton-nlp/SWE-bench',
|
||||
'princeton-nlp/SWE-bench_Lite',
|
||||
'princeton-nlp/SWE-bench_Verified',
|
||||
]:
|
||||
f.write(swebench_instance_id_to_docker_image_name(instance_id) + '\n')
|
||||
else:
|
||||
f.write(
|
||||
swebench_multimodal_instance_id_to_docker_image_name(instance_id) + '\n'
|
||||
)
|
||||
print(f'Saved {len(instance_ids)} images to {args.output}')
|
||||
@@ -1,36 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
SET=$1
|
||||
# check set is in ["full", "lite", "verified"]
|
||||
if [ "$SET" != "full" ] && [ "$SET" != "lite" ] && [ "$SET" != "verified" ]; then
|
||||
echo "Error: argument 1 must be one of: full, lite, verified"
|
||||
LEVEL=$1
|
||||
# three levels:
|
||||
# - base, keyword "sweb.base"
|
||||
# - env, keyword "sweb.env"
|
||||
# - instance, keyword "sweb.eval"
|
||||
SET=$2
|
||||
|
||||
if [ -z "$LEVEL" ]; then
|
||||
echo "Usage: $0 <cache_level> <set>"
|
||||
echo "cache_level: base, env, or instance"
|
||||
echo "set: lite, full"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
input_file=evaluation/benchmarks/swe_bench/scripts/docker/all-swebench-${SET}-instance-images.txt
|
||||
echo "Downloading images based on ${input_file}"
|
||||
# Check if the file exists
|
||||
if [ ! -f "$input_file" ]; then
|
||||
echo "Error: File '$input_file' not found"
|
||||
exit 1
|
||||
if [ -z "$SET" ]; then
|
||||
echo "Usage: $0 <cache_level> <set>"
|
||||
echo "cache_level: base, env, or instance"
|
||||
echo "set: lite, full, default is lite"
|
||||
SET="lite"
|
||||
fi
|
||||
|
||||
# Get total number of images
|
||||
total_images=$(wc -l < "${input_file}")
|
||||
counter=0
|
||||
# Check if namespace is provided via argument $3, otherwise default to 'xingyaoww'
|
||||
NAMESPACE=${3:-xingyaoww}
|
||||
|
||||
echo "Starting to pull ${total_images} images"
|
||||
echo "Using namespace: $NAMESPACE"
|
||||
|
||||
# Read the file line by line and pull each image
|
||||
while IFS= read -r image; do
|
||||
# Skip empty lines or comments
|
||||
if [ -n "$image" ] && [[ ! "$image" =~ ^[[:space:]]*# ]]; then
|
||||
counter=$((counter + 1))
|
||||
echo "[${counter}/${total_images}] Pulling ${image}"
|
||||
docker pull "${image}"
|
||||
sleep 2
|
||||
fi
|
||||
done < "${input_file}"
|
||||
if [ "$SET" == "lite" ]; then
|
||||
IMAGE_FILE="$(dirname "$0")/all-swebench-lite-instance-images.txt"
|
||||
else
|
||||
IMAGE_FILE="$(dirname "$0")/all-swebench-full-instance-images.txt"
|
||||
fi
|
||||
|
||||
echo "Finished pulling all images"
|
||||
# Define a pattern based on the level
|
||||
case $LEVEL in
|
||||
base)
|
||||
PATTERN="sweb.base"
|
||||
;;
|
||||
env)
|
||||
PATTERN="sweb.base\|sweb.env"
|
||||
;;
|
||||
instance)
|
||||
PATTERN="sweb.base\|sweb.env\|sweb.eval"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid cache level: $LEVEL"
|
||||
echo "Valid levels are: base, env, instance"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Pulling docker images for [$LEVEL] level"
|
||||
|
||||
echo "Pattern: $PATTERN"
|
||||
echo "Image file: $IMAGE_FILE"
|
||||
|
||||
# Read each line from the file, filter by pattern, and pull the docker image
|
||||
grep "$PATTERN" "$IMAGE_FILE" | while IFS= read -r image; do
|
||||
echo "Pulling $NAMESPACE/$image into $image"
|
||||
docker pull $NAMESPACE/$image
|
||||
# replace _s_ to __ in the image name
|
||||
renamed_image=$(echo "$image" | sed 's/_s_/__/g')
|
||||
docker tag $NAMESPACE/$image $renamed_image
|
||||
done
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
import pandas as pd
|
||||
from termcolor import colored
|
||||
@@ -36,23 +35,6 @@ if args.only_x_instances:
|
||||
f'After removing instances not in X={args.input_file_1}: Y={df2.shape[0]} instances'
|
||||
)
|
||||
|
||||
|
||||
# Add summarization step for each input file
|
||||
def summarize_file(file_path):
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
summarize_script = os.path.join(script_dir, 'summarize_outputs.py')
|
||||
|
||||
print(f'\nSummary for {file_path}:')
|
||||
print('=' * 80)
|
||||
subprocess.run(['python', summarize_script, file_path], check=True)
|
||||
print('=' * 80)
|
||||
|
||||
|
||||
# Generate summaries
|
||||
summarize_file(args.input_file_1)
|
||||
summarize_file(args.input_file_2)
|
||||
|
||||
|
||||
# Get the intersection of the instance_ids
|
||||
df = pd.merge(df1, df2, on='instance_id', how='inner')
|
||||
|
||||
|
||||
@@ -248,22 +248,6 @@ def write_row_to_md_file(row, instance_id_to_test_result):
|
||||
|
||||
completions = load_completions(instance_id)
|
||||
|
||||
# report file
|
||||
global output_dir
|
||||
report_file = os.path.join(output_dir, 'eval_outputs', instance_id, 'report.json')
|
||||
if os.path.exists(report_file):
|
||||
with open(report_file, 'r') as f:
|
||||
report = json.load(f)
|
||||
else:
|
||||
report = None
|
||||
|
||||
test_output_file = os.path.join(
|
||||
output_dir, 'eval_outputs', instance_id, 'test_output.txt'
|
||||
)
|
||||
if test_output is None and os.path.exists(test_output_file):
|
||||
with open(test_output_file, 'r') as f:
|
||||
test_output = f.read()
|
||||
|
||||
with open(filepath, 'w') as f:
|
||||
f.write(f'# {instance_id} (resolved: {resolved})\n')
|
||||
|
||||
@@ -285,14 +269,8 @@ def write_row_to_md_file(row, instance_id_to_test_result):
|
||||
f.write('## Model Patch\n')
|
||||
f.write(f'{process_git_patch(model_patch)}\n')
|
||||
|
||||
if report is not None:
|
||||
f.write('## Report\n')
|
||||
f.write(json.dumps(report, indent=2))
|
||||
f.write('\n')
|
||||
|
||||
f.write('## Test Output\n')
|
||||
f.write(str(test_output))
|
||||
f.write('\n')
|
||||
|
||||
|
||||
instance_id_to_test_result = {}
|
||||
|
||||
@@ -44,6 +44,7 @@ if os.path.exists(swebench_official_report_json):
|
||||
f"- resolved instances: {report['resolved_instances']}\n"
|
||||
f"- unresolved instances: {report['unresolved_instances']}\n"
|
||||
f"- error instances: {report['error_instances']}\n"
|
||||
f"- unstopped instances: {report['unstopped_instances']}\n"
|
||||
)
|
||||
|
||||
output_md += '\n## Resolved Instances\n'
|
||||
|
||||
@@ -28,6 +28,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import BrowserOutputObservation, CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
|
||||
def get_config(
|
||||
@@ -275,6 +276,7 @@ if __name__ == '__main__':
|
||||
args.task_image_name, task_short_name, temp_dir, agent_llm_config, agent_config
|
||||
)
|
||||
runtime: Runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
|
||||
init_task_env(runtime, args.server_hostname, env_llm_config)
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import CmdRunAction, MessageAction
|
||||
from openhands.events.observation import CmdOutputObservation
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
'CodeActAgent': codeact_user_response,
|
||||
@@ -104,6 +105,7 @@ def process_instance(instance: Any, metadata: EvalMetadata, reset_logger: bool =
|
||||
logger.info(f'Instruction:\n{instruction}', extra={'msg_type': 'OBSERVATION'})
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
initialize_runtime(runtime)
|
||||
|
||||
# Here's how you can run the agent (similar to the `main` function) and get the final task state
|
||||
|
||||
@@ -37,6 +37,7 @@ from openhands.runtime.browser.browser_env import (
|
||||
BROWSER_EVAL_GET_GOAL_ACTION,
|
||||
BROWSER_EVAL_GET_REWARDS_ACTION,
|
||||
)
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
SUPPORTED_AGENT_CLS = {'VisualBrowsingAgent'}
|
||||
AGENT_CLS_TO_FAKE_USER_RESPONSE_FN = {
|
||||
@@ -159,6 +160,7 @@ def process_instance(
|
||||
logger.info(f'Starting evaluation for instance {env_id}.')
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
task_str, goal_image_urls = initialize_runtime(runtime)
|
||||
initial_user_action = MessageAction(content=task_str, image_urls=goal_image_urls)
|
||||
state: State | None = asyncio.run(
|
||||
|
||||
@@ -36,6 +36,7 @@ from openhands.runtime.browser.browser_env import (
|
||||
BROWSER_EVAL_GET_GOAL_ACTION,
|
||||
BROWSER_EVAL_GET_REWARDS_ACTION,
|
||||
)
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
SUPPORTED_AGENT_CLS = {'BrowsingAgent'}
|
||||
|
||||
@@ -144,6 +145,7 @@ def process_instance(
|
||||
logger.info(f'Starting evaluation for instance {env_id}.')
|
||||
|
||||
runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
task_str = initialize_runtime(runtime)
|
||||
|
||||
state: State | None = asyncio.run(
|
||||
|
||||
@@ -30,6 +30,7 @@ from openhands.core.main import create_runtime, run_controller
|
||||
from openhands.events.action import MessageAction
|
||||
from openhands.events.serialization.event import event_to_dict
|
||||
from openhands.runtime.base import Runtime
|
||||
from openhands.utils.async_utils import call_async_from_sync
|
||||
|
||||
FAKE_RESPONSES = {
|
||||
'CodeActAgent': fake_user_response,
|
||||
@@ -108,6 +109,7 @@ def process_instance(
|
||||
# create sandbox and run the agent
|
||||
# =============================================
|
||||
runtime: Runtime = create_runtime(config)
|
||||
call_async_from_sync(runtime.connect)
|
||||
try:
|
||||
test_class.initialize_runtime(runtime)
|
||||
|
||||
|
||||
@@ -247,21 +247,11 @@ def prepare_dataset(
|
||||
f'Starting evaluation with skipping first {skip_num} instances ({len(dataset)} instances to run).'
|
||||
)
|
||||
if eval_n_limit and eval_n_limit > 0:
|
||||
# Use fixed random seed 42 for sampling without replacement
|
||||
dataset = dataset.sample(
|
||||
min(eval_n_limit, len(dataset)), random_state=42, replace=False
|
||||
)
|
||||
logger.info(
|
||||
f'Randomly sampling {eval_n_limit} unique instances with random seed 42.'
|
||||
)
|
||||
dataset = dataset.head(eval_n_limit)
|
||||
logger.info(f'Limiting evaluation to {eval_n_limit} instances.')
|
||||
elif eval_n_limit and eval_n_limit > 0:
|
||||
# Use fixed random seed 42 for sampling without replacement
|
||||
dataset = dataset.sample(
|
||||
min(eval_n_limit, len(dataset)), random_state=42, replace=False
|
||||
)
|
||||
logger.info(
|
||||
f'Randomly sampling {eval_n_limit} unique instances with random seed 42.'
|
||||
)
|
||||
dataset = dataset.head(eval_n_limit)
|
||||
logger.info(f'Limiting evaluation to first {eval_n_limit} instances.')
|
||||
|
||||
new_dataset = [
|
||||
instance
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { screen, within } from "@testing-library/react";
|
||||
import { render, screen, within } from "@testing-library/react";
|
||||
import userEvent from "@testing-library/user-event";
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { renderWithProviders } from "test-utils";
|
||||
import { TrajectoryActions } from "#/components/features/trajectory/trajectory-actions";
|
||||
|
||||
describe("TrajectoryActions", () => {
|
||||
@@ -15,7 +14,7 @@ describe("TrajectoryActions", () => {
|
||||
});
|
||||
|
||||
it("should render correctly", () => {
|
||||
renderWithProviders(
|
||||
render(
|
||||
<TrajectoryActions
|
||||
onPositiveFeedback={onPositiveFeedback}
|
||||
onNegativeFeedback={onNegativeFeedback}
|
||||
@@ -26,11 +25,10 @@ describe("TrajectoryActions", () => {
|
||||
const actions = screen.getByTestId("feedback-actions");
|
||||
within(actions).getByTestId("positive-feedback");
|
||||
within(actions).getByTestId("negative-feedback");
|
||||
within(actions).getByTestId("export-trajectory");
|
||||
});
|
||||
|
||||
it("should call onPositiveFeedback when positive feedback is clicked", async () => {
|
||||
renderWithProviders(
|
||||
render(
|
||||
<TrajectoryActions
|
||||
onPositiveFeedback={onPositiveFeedback}
|
||||
onNegativeFeedback={onNegativeFeedback}
|
||||
@@ -45,7 +43,7 @@ describe("TrajectoryActions", () => {
|
||||
});
|
||||
|
||||
it("should call onNegativeFeedback when negative feedback is clicked", async () => {
|
||||
renderWithProviders(
|
||||
render(
|
||||
<TrajectoryActions
|
||||
onPositiveFeedback={onPositiveFeedback}
|
||||
onNegativeFeedback={onNegativeFeedback}
|
||||
@@ -60,7 +58,7 @@ describe("TrajectoryActions", () => {
|
||||
});
|
||||
|
||||
it("should call onExportTrajectory when negative feedback is clicked", async () => {
|
||||
renderWithProviders(
|
||||
render(
|
||||
<TrajectoryActions
|
||||
onPositiveFeedback={onPositiveFeedback}
|
||||
onNegativeFeedback={onNegativeFeedback}
|
||||
|
||||
@@ -2,7 +2,6 @@ import { render, screen } from "@testing-library/react";
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { Messages } from "#/components/features/chat/messages";
|
||||
import type { Message } from "#/message";
|
||||
import { renderWithProviders } from "test-utils";
|
||||
|
||||
describe("File Operations Messages", () => {
|
||||
it("should show success indicator for successful file read operation", () => {
|
||||
@@ -17,7 +16,7 @@ describe("File Operations Messages", () => {
|
||||
},
|
||||
];
|
||||
|
||||
renderWithProviders(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
render(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
|
||||
const statusIcon = screen.getByTestId("status-icon");
|
||||
expect(statusIcon).toBeInTheDocument();
|
||||
@@ -36,7 +35,7 @@ describe("File Operations Messages", () => {
|
||||
},
|
||||
];
|
||||
|
||||
renderWithProviders(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
render(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
|
||||
const statusIcon = screen.getByTestId("status-icon");
|
||||
expect(statusIcon).toBeInTheDocument();
|
||||
@@ -55,7 +54,7 @@ describe("File Operations Messages", () => {
|
||||
},
|
||||
];
|
||||
|
||||
renderWithProviders(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
render(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
|
||||
const statusIcon = screen.getByTestId("status-icon");
|
||||
expect(statusIcon).toBeInTheDocument();
|
||||
@@ -74,7 +73,7 @@ describe("File Operations Messages", () => {
|
||||
},
|
||||
];
|
||||
|
||||
renderWithProviders(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
render(<Messages messages={messages} isAwaitingUserConfirmation={false} />);
|
||||
|
||||
const statusIcon = screen.getByTestId("status-icon");
|
||||
expect(statusIcon).toBeInTheDocument();
|
||||
|
||||
@@ -36,20 +36,4 @@ describe("BrandButton", () => {
|
||||
|
||||
expect(screen.getByText("Test Button")).toBeDisabled();
|
||||
});
|
||||
|
||||
it("should pass a start content", () => {
|
||||
render(
|
||||
<BrandButton
|
||||
type="button"
|
||||
variant="primary"
|
||||
startContent={
|
||||
<div data-testid="custom-start-content">Start Content</div>
|
||||
}
|
||||
>
|
||||
Test Button
|
||||
</BrandButton>,
|
||||
);
|
||||
|
||||
screen.getByTestId("custom-start-content");
|
||||
});
|
||||
});
|
||||
@@ -133,4 +133,30 @@ describe("ModelSelector", () => {
|
||||
expect(screen.getByLabelText("LLM Provider")).toHaveValue("Azure");
|
||||
expect(screen.getByLabelText("LLM Model")).toHaveValue("ada");
|
||||
});
|
||||
|
||||
it("should handle Mistral AI provider selection correctly", async () => {
|
||||
const mistralModels = {
|
||||
mistral: {
|
||||
separator: "/",
|
||||
models: ["mistral-tiny", "mistral-small", "mistral-medium"],
|
||||
},
|
||||
};
|
||||
|
||||
const user = userEvent.setup();
|
||||
render(<ModelSelector models={mistralModels} />);
|
||||
|
||||
const providerSelector = screen.getByLabelText("LLM Provider");
|
||||
await user.click(providerSelector);
|
||||
|
||||
// Select Mistral AI (display name)
|
||||
const mistralOption = screen.getByText("Mistral AI");
|
||||
await user.click(mistralOption);
|
||||
|
||||
// Verify model dropdown is enabled and shows correct models
|
||||
const modelSelector = screen.getByLabelText("LLM Model");
|
||||
expect(modelSelector).not.toBeDisabled();
|
||||
|
||||
await user.click(modelSelector);
|
||||
expect(screen.getByText("mistral-tiny")).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "openhands-frontend",
|
||||
"version": "0.27.0",
|
||||
"version": "0.26.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "openhands-frontend",
|
||||
"version": "0.27.0",
|
||||
"version": "0.26.0",
|
||||
"dependencies": {
|
||||
"@heroui/react": "2.6.14",
|
||||
"@monaco-editor/react": "^4.7.0-rc.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "openhands-frontend",
|
||||
"version": "0.27.0",
|
||||
"version": "0.26.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"engines": {
|
||||
|
||||
@@ -174,7 +174,7 @@ class OpenHands {
|
||||
code: string,
|
||||
): Promise<GitHubAccessTokenResponse> {
|
||||
const { data } = await openHands.post<GitHubAccessTokenResponse>(
|
||||
"/api/keycloak/callback",
|
||||
"/api/github/callback",
|
||||
{
|
||||
code,
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M15.359 21V17.319C15.3974 16.8654 15.3314 16.4095 15.1651 15.9814C14.9989 15.5534 14.7363 15.1631 14.3949 14.8364C17.6154 14.5035 21 13.3716 21 8.17826C20.9997 6.85027 20.4489 5.57321 19.4615 4.61139C19.9291 3.44954 19.896 2.16532 19.3692 1.02548C19.3692 1.02548 18.159 0.692576 15.359 2.43321C13.0082 1.84237 10.5302 1.84237 8.17949 2.43321C5.37949 0.692576 4.16923 1.02548 4.16923 1.02548C3.64244 2.16532 3.60938 3.44954 4.07692 4.61139C3.08218 5.58034 2.53079 6.86895 2.53846 8.2068C2.53846 13.3621 5.92308 14.494 9.14359 14.865C8.80615 15.1883 8.54591 15.574 8.3798 15.9968C8.2137 16.4196 8.14544 16.8701 8.17949 17.319V21M8.17949 18.1465C3.05128 19.5732 3.05128 15.7686 1 15.293L8.17949 18.1465Z"
|
||||
stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
|
||||
stroke="white" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 896 B After Width: | Height: | Size: 889 B |
Binary file not shown.
@@ -1,3 +1,4 @@
|
||||
import { ModalButton } from "#/components/shared/buttons/modal-button";
|
||||
import {
|
||||
BaseModalTitle,
|
||||
BaseModalDescription,
|
||||
@@ -6,7 +7,6 @@ import { ModalBackdrop } from "#/components/shared/modals/modal-backdrop";
|
||||
import { ModalBody } from "#/components/shared/modals/modal-body";
|
||||
import { useCurrentSettings } from "#/context/settings-context";
|
||||
import { handleCaptureConsent } from "#/utils/handle-capture-consent";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
|
||||
interface AnalyticsConsentFormModalProps {
|
||||
onClose: () => void;
|
||||
@@ -40,7 +40,7 @@ export function AnalyticsConsentFormModal({
|
||||
onSubmit={handleSubmit}
|
||||
className="flex flex-col gap-2"
|
||||
>
|
||||
<ModalBody className="border border-tertiary">
|
||||
<ModalBody>
|
||||
<BaseModalTitle title="Your Privacy Preferences" />
|
||||
<BaseModalDescription>
|
||||
We use tools to understand how our application is used to improve
|
||||
@@ -53,14 +53,12 @@ export function AnalyticsConsentFormModal({
|
||||
Send anonymous usage data
|
||||
</label>
|
||||
|
||||
<BrandButton
|
||||
<ModalButton
|
||||
testId="confirm-preferences"
|
||||
type="submit"
|
||||
variant="primary"
|
||||
className="w-full"
|
||||
>
|
||||
Confirm Preferences
|
||||
</BrandButton>
|
||||
text="Confirm Preferences"
|
||||
className="bg-primary text-white w-full hover:opacity-80"
|
||||
/>
|
||||
</ModalBody>
|
||||
</form>
|
||||
</ModalBackdrop>
|
||||
|
||||
@@ -11,7 +11,6 @@ import { addUserMessage } from "#/state/chat-slice";
|
||||
import { RootState } from "#/store";
|
||||
import { AgentState } from "#/types/agent-state";
|
||||
import { generateAgentStateChangeEvent } from "#/services/agent-state-service";
|
||||
import { getStopProcessesCommand } from "#/services/terminal-service";
|
||||
import { FeedbackModal } from "../feedback/feedback-modal";
|
||||
import { useScrollToBottom } from "#/hooks/use-scroll-to-bottom";
|
||||
import { TypingIndicator } from "./typing-indicator";
|
||||
@@ -83,8 +82,7 @@ export function ChatInterface() {
|
||||
|
||||
const handleStop = () => {
|
||||
posthog.capture("stop_button_clicked");
|
||||
send(getStopProcessesCommand()); // First kill all processes
|
||||
send(generateAgentStateChangeEvent(AgentState.STOPPED)); // Then change agent state
|
||||
send(generateAgentStateChangeEvent(AgentState.STOPPED));
|
||||
};
|
||||
|
||||
const handleSendContinueMsg = () => {
|
||||
|
||||
@@ -47,7 +47,7 @@ export function ChatMessage({
|
||||
className={cn(
|
||||
"rounded-xl relative",
|
||||
"flex flex-col gap-2",
|
||||
type === "user" && " max-w-[305px] p-4 bg-tertiary self-end",
|
||||
type === "user" && " max-w-[305px] p-4 bg-neutral-700 self-end",
|
||||
type === "assistant" && "mt-6 max-w-full bg-tranparent",
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -13,7 +13,7 @@ export function ChatSuggestions({ onSuggestionsClick }: ChatSuggestionsProps) {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-6 h-full px-4 items-center justify-center">
|
||||
<div className="flex flex-col items-center p-4 bg-tertiary rounded-xl w-full">
|
||||
<div className="flex flex-col items-center p-4 bg-neutral-700 rounded-xl w-full">
|
||||
<BuildIt width={45} height={54} />
|
||||
<span className="font-semibold text-[20px] leading-6 -tracking-[0.01em] gap-1">
|
||||
{t(I18nKey.LANDING$TITLE)}
|
||||
|
||||
@@ -2,7 +2,6 @@ import { useState, useEffect } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import Markdown from "react-markdown";
|
||||
import remarkGfm from "remark-gfm";
|
||||
import { Link } from "react-router";
|
||||
import { code } from "../markdown/code";
|
||||
import { ol, ul } from "../markdown/list";
|
||||
import ArrowUp from "#/icons/angle-up-solid.svg?react";
|
||||
@@ -10,8 +9,6 @@ import ArrowDown from "#/icons/angle-down-solid.svg?react";
|
||||
import CheckCircle from "#/icons/check-circle-solid.svg?react";
|
||||
import XCircle from "#/icons/x-circle-solid.svg?react";
|
||||
import { cn } from "#/utils/utils";
|
||||
import { useConfig } from "#/hooks/query/use-config";
|
||||
import { BILLING_SETTINGS } from "#/utils/feature-flags";
|
||||
|
||||
interface ExpandableMessageProps {
|
||||
id?: string;
|
||||
@@ -26,7 +23,6 @@ export function ExpandableMessage({
|
||||
type,
|
||||
success,
|
||||
}: ExpandableMessageProps) {
|
||||
const { data: config } = useConfig();
|
||||
const { t, i18n } = useTranslation();
|
||||
const [showDetails, setShowDetails] = useState(true);
|
||||
const [headline, setHeadline] = useState("");
|
||||
@@ -42,28 +38,6 @@ export function ExpandableMessage({
|
||||
|
||||
const statusIconClasses = "h-4 w-4 ml-2 inline";
|
||||
|
||||
if (
|
||||
BILLING_SETTINGS() &&
|
||||
config?.APP_MODE === "saas" &&
|
||||
id === "STATUS$ERROR_LLM_OUT_OF_CREDITS"
|
||||
) {
|
||||
return (
|
||||
<div className="flex gap-2 items-center justify-start border-l-2 pl-2 my-2 py-2 border-danger">
|
||||
<div className="text-sm w-full">
|
||||
<div className="font-bold text-danger">
|
||||
{t("STATUS$ERROR_LLM_OUT_OF_CREDITS")}
|
||||
</div>
|
||||
<Link
|
||||
className="mt-2 mb-2 w-full h-10 rounded flex items-center justify-center gap-2 bg-primary text-[#0D0F11]"
|
||||
to="/settings/billing"
|
||||
>
|
||||
{t("BILLING$CLICK_TO_TOP_UP")}
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
|
||||
@@ -59,7 +59,7 @@ export function InteractiveChatBox({
|
||||
<div
|
||||
className={cn(
|
||||
"flex items-end gap-1",
|
||||
"bg-tertiary border border-neutral-600 rounded-lg px-2",
|
||||
"bg-neutral-700 border border-neutral-600 rounded-lg px-2",
|
||||
"transition-colors duration-200",
|
||||
"hover:border-neutral-500 focus-within:border-neutral-500",
|
||||
)}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export function TypingIndicator() {
|
||||
return (
|
||||
<div className="flex items-center space-x-1.5 bg-tertiary px-3 py-1.5 rounded-full">
|
||||
<div className="flex items-center space-x-1.5 bg-neutral-700 px-3 py-1.5 rounded-full">
|
||||
<span
|
||||
className="w-1.5 h-1.5 bg-gray-400 rounded-full animate-[bounce_0.5s_infinite] translate-y-[-2px]"
|
||||
style={{ animationDelay: "0ms" }}
|
||||
|
||||
@@ -18,7 +18,7 @@ export function ContextMenu({
|
||||
<ul
|
||||
data-testid={testId}
|
||||
ref={ref}
|
||||
className={cn("bg-tertiary rounded-md w-[140px]", className)}
|
||||
className={cn("bg-[#404040] rounded-md w-[140px]", className)}
|
||||
>
|
||||
{children}
|
||||
</ul>
|
||||
|
||||
@@ -9,21 +9,12 @@ import {
|
||||
useWsClient,
|
||||
WsClientProviderStatus,
|
||||
} from "#/context/ws-client-provider";
|
||||
import { useNotification } from "#/hooks/useNotification";
|
||||
import { browserTab } from "#/utils/browser-tab";
|
||||
|
||||
const notificationStates = [
|
||||
AgentState.AWAITING_USER_INPUT,
|
||||
AgentState.FINISHED,
|
||||
AgentState.AWAITING_USER_CONFIRMATION,
|
||||
];
|
||||
|
||||
export function AgentStatusBar() {
|
||||
const { t, i18n } = useTranslation();
|
||||
const { curAgentState } = useSelector((state: RootState) => state.agent);
|
||||
const { curStatusMessage } = useSelector((state: RootState) => state.status);
|
||||
const { status } = useWsClient();
|
||||
const { notify } = useNotification();
|
||||
|
||||
const [statusMessage, setStatusMessage] = React.useState<string>("");
|
||||
|
||||
@@ -54,40 +45,13 @@ export function AgentStatusBar() {
|
||||
updateStatusMessage();
|
||||
}, [curStatusMessage.id]);
|
||||
|
||||
// Handle window focus/blur
|
||||
React.useEffect(() => {
|
||||
if (typeof window === "undefined") return undefined;
|
||||
|
||||
const handleFocus = () => {
|
||||
browserTab.stopNotification();
|
||||
};
|
||||
|
||||
window.addEventListener("focus", handleFocus);
|
||||
return () => {
|
||||
window.removeEventListener("focus", handleFocus);
|
||||
browserTab.stopNotification();
|
||||
};
|
||||
}, []);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (status === WsClientProviderStatus.DISCONNECTED) {
|
||||
setStatusMessage("Connecting...");
|
||||
} else {
|
||||
setStatusMessage(AGENT_STATUS_MAP[curAgentState].message);
|
||||
if (notificationStates.includes(curAgentState)) {
|
||||
const message = t(AGENT_STATUS_MAP[curAgentState].message);
|
||||
notify(t(AGENT_STATUS_MAP[curAgentState].message), {
|
||||
body: t(`Agent state changed to ${curAgentState}`),
|
||||
playSound: true,
|
||||
});
|
||||
|
||||
// Update browser tab if window exists and is not focused
|
||||
if (typeof document !== "undefined" && !document.hasFocus()) {
|
||||
browserTab.startNotification(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [curAgentState, notify, t]);
|
||||
}, [curAgentState]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { ModalButton } from "#/components/shared/buttons/modal-button";
|
||||
import {
|
||||
BaseModalDescription,
|
||||
BaseModalTitle,
|
||||
} from "#/components/shared/modals/confirmation-modals/base-modal";
|
||||
import { ModalBackdrop } from "#/components/shared/modals/modal-backdrop";
|
||||
import { ModalBody } from "#/components/shared/modals/modal-body";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
|
||||
interface ConfirmDeleteModalProps {
|
||||
onConfirm: () => void;
|
||||
@@ -17,7 +17,7 @@ export function ConfirmDeleteModal({
|
||||
}: ConfirmDeleteModalProps) {
|
||||
return (
|
||||
<ModalBackdrop>
|
||||
<ModalBody className="items-start border border-tertiary">
|
||||
<ModalBody className="items-start">
|
||||
<div className="flex flex-col gap-2">
|
||||
<BaseModalTitle title="Are you sure you want to delete this project?" />
|
||||
<BaseModalDescription description="All data associated with this project will be lost." />
|
||||
@@ -26,22 +26,16 @@ export function ConfirmDeleteModal({
|
||||
className="flex flex-col gap-2 w-full"
|
||||
onClick={(event) => event.stopPropagation()}
|
||||
>
|
||||
<BrandButton
|
||||
type="button"
|
||||
variant="primary"
|
||||
<ModalButton
|
||||
onClick={onConfirm}
|
||||
className="w-full"
|
||||
>
|
||||
Confirm
|
||||
</BrandButton>
|
||||
<BrandButton
|
||||
type="button"
|
||||
variant="secondary"
|
||||
className="bg-danger font-bold"
|
||||
text="Confirm"
|
||||
/>
|
||||
<ModalButton
|
||||
onClick={onCancel}
|
||||
className="w-full"
|
||||
>
|
||||
Cancel
|
||||
</BrandButton>
|
||||
className="bg-neutral-500 font-bold"
|
||||
text="Cancel"
|
||||
/>
|
||||
</div>
|
||||
</ModalBody>
|
||||
</ModalBackdrop>
|
||||
|
||||
@@ -101,11 +101,9 @@ export function ConversationCard({
|
||||
"h-auto w-fit rounded-xl border border-[#525252]",
|
||||
)}
|
||||
>
|
||||
<div className="flex items-center justify-between w-full">
|
||||
<div className="flex items-center gap-2 flex-1 min-w-0 overflow-hidden mr-2">
|
||||
{isActive && (
|
||||
<span className="w-2 h-2 bg-blue-500 rounded-full flex-shrink-0" />
|
||||
)}
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center gap-2 w-full">
|
||||
{isActive && <span className="w-2 h-2 bg-blue-500 rounded-full" />}
|
||||
{titleMode === "edit" && (
|
||||
<input
|
||||
ref={inputRef}
|
||||
@@ -121,8 +119,7 @@ export function ConversationCard({
|
||||
{titleMode === "view" && (
|
||||
<p
|
||||
data-testid="conversation-card-title"
|
||||
className="text-sm leading-6 font-semibold bg-transparent truncate overflow-hidden"
|
||||
title={title}
|
||||
className="text-sm leading-6 font-semibold bg-transparent w-full"
|
||||
>
|
||||
{title}
|
||||
</p>
|
||||
|
||||
@@ -25,7 +25,7 @@ export function ExitConversationModal({
|
||||
<ModalButton
|
||||
text="Cancel"
|
||||
onClick={onClose}
|
||||
className="bg-tertiary flex-1"
|
||||
className="bg-neutral-700 flex-1"
|
||||
/>
|
||||
</div>
|
||||
</ModalBody>
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next";
|
||||
import { I18nKey } from "#/i18n/declaration";
|
||||
import { Feedback } from "#/api/open-hands.types";
|
||||
import { useSubmitFeedback } from "#/hooks/mutation/use-submit-feedback";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
import { ModalButton } from "#/components/shared/buttons/modal-button";
|
||||
|
||||
const FEEDBACK_VERSION = "1.0";
|
||||
const VIEWER_PAGE = "https://www.all-hands.dev/share";
|
||||
@@ -121,23 +121,18 @@ export function FeedbackForm({ onClose, polarity }: FeedbackFormProps) {
|
||||
</div>
|
||||
|
||||
<div className="flex gap-2">
|
||||
<BrandButton
|
||||
<ModalButton
|
||||
disabled={isPending}
|
||||
type="submit"
|
||||
variant="primary"
|
||||
className="grow"
|
||||
isDisabled={isPending}
|
||||
>
|
||||
{t(I18nKey.FEEDBACK$SHARE_LABEL)}
|
||||
</BrandButton>
|
||||
<BrandButton
|
||||
type="button"
|
||||
variant="secondary"
|
||||
className="grow"
|
||||
text={t(I18nKey.FEEDBACK$SHARE_LABEL)}
|
||||
className="bg-[#4465DB] grow"
|
||||
/>
|
||||
<ModalButton
|
||||
disabled={isPending}
|
||||
text={t(I18nKey.FEEDBACK$CANCEL_LABEL)}
|
||||
onClick={onClose}
|
||||
isDisabled={isPending}
|
||||
>
|
||||
{t(I18nKey.FEEDBACK$CANCEL_LABEL)}
|
||||
</BrandButton>
|
||||
className="bg-[#737373] grow"
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
||||
@@ -21,7 +21,7 @@ export function FeedbackModal({
|
||||
|
||||
return (
|
||||
<ModalBackdrop onClose={onClose}>
|
||||
<ModalBody className="border border-tertiary">
|
||||
<ModalBody>
|
||||
<BaseModalTitle title="Feedback" />
|
||||
<BaseModalDescription description="To help us improve, we collect feedback from your interactions to improve our prompts. By submitting this form, you consent to us collecting this data." />
|
||||
<FeedbackForm onClose={onClose} polarity={polarity} />
|
||||
|
||||
@@ -10,8 +10,7 @@ import { useListFiles } from "#/hooks/query/use-list-files";
|
||||
import { cn } from "#/utils/utils";
|
||||
import { FileExplorerHeader } from "./file-explorer-header";
|
||||
import { useVSCodeUrl } from "#/hooks/query/use-vscode-url";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
import VSCodeIcon from "#/assets/vscode-alt.svg?react";
|
||||
import { OpenVSCodeButton } from "#/components/shared/buttons/open-vscode-button";
|
||||
|
||||
interface FileExplorerProps {
|
||||
isOpen: boolean;
|
||||
@@ -78,17 +77,10 @@ export function FileExplorer({ isOpen, onToggle }: FileExplorerProps) {
|
||||
</div>
|
||||
)}
|
||||
{isOpen && (
|
||||
<BrandButton
|
||||
testId="open-vscode-button"
|
||||
type="button"
|
||||
variant="secondary"
|
||||
className="w-full text-content border-content"
|
||||
isDisabled={RUNTIME_INACTIVE_STATES.includes(curAgentState)}
|
||||
<OpenVSCodeButton
|
||||
onClick={handleOpenVSCode}
|
||||
startContent={<VSCodeIcon width={20} height={20} />}
|
||||
>
|
||||
{t(I18nKey.VSCODE$OPEN)}
|
||||
</BrandButton>
|
||||
isDisabled={RUNTIME_INACTIVE_STATES.includes(curAgentState)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,14 +3,14 @@ import { useTranslation } from "react-i18next";
|
||||
import { useNavigate } from "react-router";
|
||||
import { I18nKey } from "#/i18n/declaration";
|
||||
import { SuggestionBox } from "#/components/features/suggestions/suggestion-box";
|
||||
import GitHubLogo from "#/assets/branding/github-logo.svg?react";
|
||||
import { GitHubRepositorySelector } from "./github-repo-selector";
|
||||
import { ModalButton } from "#/components/shared/buttons/modal-button";
|
||||
import { useAppRepositories } from "#/hooks/query/use-app-repositories";
|
||||
import { useSearchRepositories } from "#/hooks/query/use-search-repositories";
|
||||
import { useUserRepositories } from "#/hooks/query/use-user-repositories";
|
||||
import { sanitizeQuery } from "#/utils/sanitize-query";
|
||||
import { useDebounce } from "#/hooks/use-debounce";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
import GitHubLogo from "#/assets/branding/github-logo.svg?react";
|
||||
|
||||
interface GitHubRepositoriesSuggestionBoxProps {
|
||||
handleSubmit: () => void;
|
||||
@@ -62,16 +62,13 @@ export function GitHubRepositoriesSuggestionBox({
|
||||
userRepositories={repositories}
|
||||
/>
|
||||
) : (
|
||||
<BrandButton
|
||||
<ModalButton
|
||||
testId="connect-to-github"
|
||||
type="button"
|
||||
variant="secondary"
|
||||
className="w-full text-content border-content"
|
||||
text={t(I18nKey.GITHUB$CONNECT)}
|
||||
icon={<GitHubLogo width={20} height={20} />}
|
||||
className="bg-[#791B80] w-full"
|
||||
onClick={handleConnectToGitHub}
|
||||
startContent={<GitHubLogo width={20} height={20} />}
|
||||
>
|
||||
{t(I18nKey.GITHUB$CONNECT)}
|
||||
</BrandButton>
|
||||
/>
|
||||
)
|
||||
}
|
||||
/>
|
||||
|
||||
@@ -7,7 +7,6 @@ interface BrandButtonProps {
|
||||
isDisabled?: boolean;
|
||||
className?: string;
|
||||
onClick?: () => void;
|
||||
startContent?: React.ReactNode;
|
||||
}
|
||||
|
||||
export function BrandButton({
|
||||
@@ -18,7 +17,6 @@ export function BrandButton({
|
||||
isDisabled,
|
||||
className,
|
||||
onClick,
|
||||
startContent,
|
||||
}: React.PropsWithChildren<BrandButtonProps>) {
|
||||
return (
|
||||
<button
|
||||
@@ -32,11 +30,9 @@ export function BrandButton({
|
||||
"w-fit p-2 rounded disabled:opacity-30 disabled:cursor-not-allowed",
|
||||
variant === "primary" && "bg-primary text-[#0D0F11]",
|
||||
variant === "secondary" && "border border-primary text-primary",
|
||||
startContent && "flex items-center justify-center gap-2",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
{startContent}
|
||||
{children}
|
||||
</button>
|
||||
);
|
||||
|
||||
@@ -11,7 +11,7 @@ interface SuggestionItemProps {
|
||||
export function SuggestionItem({ suggestion, onClick }: SuggestionItemProps) {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<li className="list-none border border-neutral-600 rounded-xl hover:bg-tertiary flex-1">
|
||||
<li className="list-none border border-neutral-600 rounded-xl hover:bg-neutral-700 flex-1">
|
||||
<button
|
||||
type="button"
|
||||
data-testid="suggestion"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import ThumbsUpIcon from "#/icons/thumbs-up.svg?react";
|
||||
import ThumbDownIcon from "#/icons/thumbs-down.svg?react";
|
||||
import ExportIcon from "#/icons/export.svg?react";
|
||||
@@ -15,27 +14,22 @@ export function TrajectoryActions({
|
||||
onNegativeFeedback,
|
||||
onExportTrajectory,
|
||||
}: TrajectoryActionsProps) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<div data-testid="feedback-actions" className="flex gap-1">
|
||||
<TrajectoryActionButton
|
||||
testId="positive-feedback"
|
||||
onClick={onPositiveFeedback}
|
||||
icon={<ThumbsUpIcon width={15} height={15} />}
|
||||
tooltip={t("BUTTON$MARK_HELPFUL")}
|
||||
/>
|
||||
<TrajectoryActionButton
|
||||
testId="negative-feedback"
|
||||
onClick={onNegativeFeedback}
|
||||
icon={<ThumbDownIcon width={15} height={15} />}
|
||||
tooltip={t("BUTTON$MARK_NOT_HELPFUL")}
|
||||
/>
|
||||
<TrajectoryActionButton
|
||||
testId="export-trajectory"
|
||||
onClick={onExportTrajectory}
|
||||
icon={<ExportIcon width={15} height={15} />}
|
||||
tooltip={t("BUTTON$EXPORT_CONVERSATION")}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import React from "react";
|
||||
import GitHubLogo from "#/assets/branding/github-logo.svg?react";
|
||||
import AllHandsLogo from "#/assets/branding/all-hands-logo.svg?react";
|
||||
import { JoinWaitlistAnchor } from "./join-waitlist-anchor";
|
||||
import { WaitlistMessage } from "./waitlist-message";
|
||||
import { ModalBackdrop } from "#/components/shared/modals/modal-backdrop";
|
||||
import { ModalButton } from "#/components/shared/buttons/modal-button";
|
||||
import { ModalBody } from "#/components/shared/modals/modal-body";
|
||||
import { TOSCheckbox } from "./tos-checkbox";
|
||||
import { handleCaptureConsent } from "#/utils/handle-capture-consent";
|
||||
import { BrandButton } from "../settings/brand-button";
|
||||
import GitHubLogo from "#/assets/branding/github-logo.svg?react";
|
||||
|
||||
interface WaitlistModalProps {
|
||||
ghTokenIsSet: boolean;
|
||||
@@ -29,23 +29,20 @@ export function WaitlistModal({
|
||||
|
||||
return (
|
||||
<ModalBackdrop>
|
||||
<ModalBody className="border border-tertiary">
|
||||
<ModalBody>
|
||||
<AllHandsLogo width={68} height={46} />
|
||||
<WaitlistMessage content={ghTokenIsSet ? "waitlist" : "sign-in"} />
|
||||
|
||||
<TOSCheckbox onChange={() => setIsTosAccepted((prev) => !prev)} />
|
||||
|
||||
{!ghTokenIsSet && (
|
||||
<BrandButton
|
||||
isDisabled={!isTosAccepted}
|
||||
type="button"
|
||||
variant="primary"
|
||||
<ModalButton
|
||||
disabled={!isTosAccepted}
|
||||
text="Connect to GitHub"
|
||||
icon={<GitHubLogo width={20} height={20} />}
|
||||
className="bg-[#791B80] w-full"
|
||||
onClick={handleGitHubAuth}
|
||||
className="w-full"
|
||||
startContent={<GitHubLogo width={20} height={20} />}
|
||||
>
|
||||
Connect to GitHub
|
||||
</BrandButton>
|
||||
/>
|
||||
)}
|
||||
{ghTokenIsSet && <JoinWaitlistAnchor />}
|
||||
</ModalBody>
|
||||
|
||||
@@ -15,19 +15,18 @@ export function NavTab({ to, label, icon, isBeta }: NavTabProps) {
|
||||
end
|
||||
key={to}
|
||||
to={to}
|
||||
className={cn(
|
||||
"px-2 border-b border-r border-neutral-600 bg-base-secondary flex-1",
|
||||
"first-of-type:rounded-tl-xl last-of-type:rounded-tr-xl last-of-type:border-r-0",
|
||||
"flex items-center gap-2",
|
||||
)}
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
"px-2 border-b border-r border-neutral-600 bg-base flex-1",
|
||||
"first-of-type:rounded-tl-xl last-of-type:rounded-tr-xl last-of-type:border-r-0",
|
||||
"flex items-center gap-2",
|
||||
isActive && "bg-base-secondary",
|
||||
)
|
||||
}
|
||||
>
|
||||
{({ isActive }) => (
|
||||
<>
|
||||
<div className={cn(isActive && "text-primary")}>{icon}</div>
|
||||
{label}
|
||||
{isBeta && <BetaBadge />}
|
||||
</>
|
||||
)}
|
||||
{icon}
|
||||
{label}
|
||||
{isBeta && <BetaBadge />}
|
||||
</NavLink>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ export function ActionTooltip({ type, onClick }: ActionTooltipProps) {
|
||||
? t(I18nKey.ACTION$CONFIRM)
|
||||
: t(I18nKey.ACTION$REJECT)
|
||||
}
|
||||
className="bg-tertiary rounded-full p-1 hover:bg-base-secondary"
|
||||
className="bg-neutral-700 rounded-full p-1 hover:bg-base-secondary"
|
||||
onClick={onClick}
|
||||
>
|
||||
{type === "confirm" ? <ConfirmIcon /> : <RejectIcon />}
|
||||
|
||||
@@ -19,7 +19,7 @@ export function EditorActionButton({
|
||||
disabled={disabled}
|
||||
className={cn(
|
||||
"text-sm py-0.5 rounded w-20",
|
||||
"hover:bg-tertiary disabled:opacity-50 disabled:cursor-not-allowed",
|
||||
"hover:bg-neutral-700 disabled:opacity-50 disabled:cursor-not-allowed",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { I18nKey } from "#/i18n/declaration";
|
||||
import { cn } from "#/utils/utils";
|
||||
import VSCodeIcon from "#/assets/vscode-alt.svg?react";
|
||||
|
||||
interface OpenVSCodeButtonProps {
|
||||
isDisabled: boolean;
|
||||
onClick: () => void;
|
||||
}
|
||||
|
||||
export function OpenVSCodeButton({
|
||||
isDisabled,
|
||||
onClick,
|
||||
}: OpenVSCodeButtonProps) {
|
||||
const { t } = useTranslation();
|
||||
const buttonText = t(I18nKey.VSCODE$OPEN);
|
||||
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
onClick={onClick}
|
||||
disabled={isDisabled}
|
||||
className={cn(
|
||||
"mt-auto mb-2 w-full h-10 text-white rounded flex items-center justify-center gap-2 transition-colors",
|
||||
isDisabled
|
||||
? "bg-neutral-600 cursor-not-allowed"
|
||||
: "bg-[#4465DB] hover:bg-[#3451C7]",
|
||||
)}
|
||||
aria-label={buttonText}
|
||||
>
|
||||
<VSCodeIcon width={20} height={20} />
|
||||
{buttonText}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
@@ -1,19 +1,15 @@
|
||||
import { Tooltip } from "@heroui/react";
|
||||
|
||||
interface TrajectoryActionButtonProps {
|
||||
testId?: string;
|
||||
onClick: () => void;
|
||||
icon: React.ReactNode;
|
||||
tooltip?: string;
|
||||
}
|
||||
|
||||
export function TrajectoryActionButton({
|
||||
testId,
|
||||
onClick,
|
||||
icon,
|
||||
tooltip,
|
||||
}: TrajectoryActionButtonProps) {
|
||||
const button = (
|
||||
return (
|
||||
<button
|
||||
type="button"
|
||||
data-testid={testId}
|
||||
@@ -23,14 +19,4 @@ export function TrajectoryActionButton({
|
||||
{icon}
|
||||
</button>
|
||||
);
|
||||
|
||||
if (tooltip) {
|
||||
return (
|
||||
<Tooltip content={tooltip} closeDelay={100}>
|
||||
{button}
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ export function BaseModal({
|
||||
backdrop="blur"
|
||||
hideCloseButton
|
||||
size="sm"
|
||||
className="bg-base-secondary rounded-lg"
|
||||
className="bg-base rounded-lg"
|
||||
>
|
||||
<ModalContent className={contentClassName}>
|
||||
{(closeModal) => (
|
||||
|
||||
@@ -12,7 +12,7 @@ export function ModalBody({ testID, children, className }: ModalBodyProps) {
|
||||
<div
|
||||
data-testid={testID}
|
||||
className={cn(
|
||||
"bg-base-secondary flex flex-col gap-6 items-center w-[384px] p-6 rounded-xl",
|
||||
"bg-base flex flex-col gap-6 items-center w-[384px] p-6 rounded-xl",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -127,7 +127,7 @@ function SecurityInvariant() {
|
||||
<>
|
||||
<div className="flex justify-between items-center border-b border-neutral-600 mb-4 p-4">
|
||||
<h2 className="text-2xl">{t(I18nKey.INVARIANT$LOG_LABEL)}</h2>
|
||||
<Button onPress={() => exportTraces()} className="bg-tertiary">
|
||||
<Button onPress={() => exportTraces()} className="bg-neutral-700">
|
||||
{t(I18nKey.INVARIANT$EXPORT_TRACE_LABEL)}
|
||||
</Button>
|
||||
</div>
|
||||
@@ -161,7 +161,7 @@ function SecurityInvariant() {
|
||||
<div className="flex justify-between items-center border-b border-neutral-600 mb-4 p-4">
|
||||
<h2 className="text-2xl">{t(I18nKey.INVARIANT$POLICY_LABEL)}</h2>
|
||||
<Button
|
||||
className="bg-tertiary"
|
||||
className="bg-neutral-700"
|
||||
onPress={() => updatePolicy({ policy })}
|
||||
>
|
||||
{t(I18nKey.INVARIANT$UPDATE_POLICY_LABEL)}
|
||||
@@ -183,7 +183,7 @@ function SecurityInvariant() {
|
||||
<div className="flex justify-between items-center border-b border-neutral-600 mb-4 p-4">
|
||||
<h2 className="text-2xl">{t(I18nKey.INVARIANT$SETTINGS_LABEL)}</h2>
|
||||
<Button
|
||||
className="bg-tertiary"
|
||||
className="bg-neutral-700"
|
||||
onPress={() => updateRiskSeverity({ riskSeverity: selectedRisk })}
|
||||
>
|
||||
{t(I18nKey.INVARIANT$UPDATE_SETTINGS_LABEL)}
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { I18nKey } from "#/i18n/declaration";
|
||||
import { mapProvider } from "#/utils/map-provider";
|
||||
import { mapProvider, MAP_PROVIDER } from "#/utils/map-provider";
|
||||
import { VERIFIED_MODELS, VERIFIED_PROVIDERS } from "#/utils/verified-models";
|
||||
import { extractModelAndProvider } from "#/utils/extract-model-and-provider";
|
||||
|
||||
@@ -39,11 +39,16 @@ export function ModelSelector({
|
||||
}, [currentModel]);
|
||||
|
||||
const handleChangeProvider = (provider: string) => {
|
||||
setSelectedProvider(provider);
|
||||
// Find the actual provider key from MAP_PROVIDER if a display name was provided
|
||||
const providerKey = Object.entries(MAP_PROVIDER).find(
|
||||
([_, displayName]) => displayName === provider
|
||||
)?.[0] || provider;
|
||||
|
||||
setSelectedProvider(providerKey);
|
||||
setSelectedModel(null);
|
||||
|
||||
const separator = models[provider]?.separator || "";
|
||||
setLitellmId(provider + separator);
|
||||
const separator = models[providerKey]?.separator || "";
|
||||
setLitellmId(providerKey + separator);
|
||||
};
|
||||
|
||||
const handleChangeModel = (model: string) => {
|
||||
|
||||
@@ -21,7 +21,7 @@ export function SettingsModal({ onClose, settings }: SettingsModalProps) {
|
||||
<ModalBackdrop>
|
||||
<div
|
||||
data-testid="ai-config-modal"
|
||||
className="bg-base-secondary min-w-[384px] p-6 rounded-xl flex flex-col gap-2 border border-tertiary"
|
||||
className="bg-base min-w-[384px] p-6 rounded-xl flex flex-col gap-2"
|
||||
>
|
||||
{aiConfigOptions.error && (
|
||||
<p className="text-danger text-xs">{aiConfigOptions.error.message}</p>
|
||||
|
||||
@@ -70,7 +70,7 @@ export function TaskForm({ ref }: TaskFormProps) {
|
||||
<div
|
||||
className={cn(
|
||||
"border border-neutral-600 px-4 rounded-lg text-[17px] leading-5 w-full transition-colors duration-200",
|
||||
inputIsFocused ? "bg-neutral-600" : "bg-tertiary",
|
||||
inputIsFocused ? "bg-neutral-600" : "bg-neutral-700",
|
||||
"hover:border-neutral-500 focus-within:border-neutral-500",
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -20,7 +20,6 @@ const saveSettingsMutationFn = async (settings: Partial<PostSettings>) => {
|
||||
github_token: settings.github_token,
|
||||
unset_github_token: settings.unset_github_token,
|
||||
enable_default_condenser: settings.ENABLE_DEFAULT_CONDENSER,
|
||||
enable_sound_notifications: settings.ENABLE_SOUND_NOTIFICATIONS,
|
||||
user_consents_to_analytics: settings.user_consents_to_analytics,
|
||||
};
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ const getSettingsQueryFn = async () => {
|
||||
REMOTE_RUNTIME_RESOURCE_FACTOR: apiSettings.remote_runtime_resource_factor,
|
||||
GITHUB_TOKEN_IS_SET: apiSettings.github_token_is_set,
|
||||
ENABLE_DEFAULT_CONDENSER: apiSettings.enable_default_condenser,
|
||||
ENABLE_SOUND_NOTIFICATIONS: apiSettings.enable_sound_notifications,
|
||||
USER_CONSENTS_TO_ANALYTICS: apiSettings.user_consents_to_analytics,
|
||||
};
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user