wip: [01-stabilize] paused at task 1/1 - OCR Hallucination Immune logic via Semantic delta window and fret-isolation

This commit is contained in:
2026-03-29 22:08:40 +09:00
parent aca7bf592a
commit 2507de45d3
4289 changed files with 732689 additions and 28672 deletions

View File

@@ -0,0 +1,14 @@
---
description:
globs:
alwaysApply: true
---
# Your rule content
- Use python with type annotations
- Target python 3.11 or higher
- Use `pathlib` instead of `os.path`. Also use `Path.read_text()` over `with ...open()` constructs
- Use `argparse` to add interfaces
- Keep code comments to a minimum and only highlight particularly logically challenging things
- Do not append to the README unless specifically requested

View File

@@ -0,0 +1,17 @@
---
description:
globs:
alwaysApply: true
---
# SWE-agent overview
SWE-agent implements an AI software engineering agent that uses language models to
fix github issues.
Here's what you need to know about the project structure:
- The main entry points to running are in the `sweagent/run`, in particular `run_single.py` and `run_batch.py`, where the latter is used for benchmarking.
- The main class that governs agent behavior is `sweagent/agent/agents.py`
- The AI agent proposes actions that are executed in sandboxed docker containers
- At the beginning of an agent class, we initialize a `SWEEnv` class from `sweagent/environment/swe_env.py`. This class interfaces with the SWE-ReX project to interface with the sandboxed docker containers
- Part of the SWE-agent project are tools in `tools/`. They are organized in bundles. These bundles are copied to the sandboxed container and made available in the $PATH variable.
- In addition we provide two "inspectors" that allow to inspect trajectories (the output files of agents), `inspector_cli.py` provides a command line interface and `sweagent/inspector/server.py` a web interface.

View File

@@ -0,0 +1,4 @@
# .devcontainer
The files in this directory configure a VSCode environment like
GitHub codespaces.

View File

@@ -0,0 +1,13 @@
if [ -z "$(docker images -q sweagent/swe-agent 2> /dev/null)" ]; then
echo "⚠️ Please wait for the postCreateCommand to start and finish (a new window will appear shortly) ⚠️"
fi
echo "Here's an example SWE-agent command to try out:"
echo "sweagent run \\
--agent.model.name=claude-sonnet-4-20250514 \\
--agent.model.per_instance_cost_limit=2.00 \\
--env.repo.github_url=https://github.com/SWE-agent/test-repo \\
--problem_statement.github_url=https://github.com/SWE-agent/test-repo/issues/1 \\
"

View File

@@ -0,0 +1,22 @@
{
"name": "SWE-Agent Codespace",
"image": "mcr.microsoft.com/vscode/devcontainers/miniconda:0-3",
"customizations":{
"vscode":{
"extensions": [
"ms-python.python",
"ms-azuretools.vscode-docker",
"ms-toolsai.jupyter"
]
}
},
"onCreateCommand": "./.devcontainer/oncreate.sh",
"postCreateCommand": "./.devcontainer/postcreate.sh",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
"mounts": [
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
],
"remoteUser": "vscode"
}

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
set -x
# Run from repo root
sudo usermod -aG docker vscode
sudo chmod 666 /var/run/docker.sock
pip install -e '.'
cp .devcontainer/sample_keys.cfg keys.cfg
cat .devcontainer/bashrc_epilog.sh >> ~/.bashrc

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -euo pipefail
set -x
pip install -e '.'

View File

@@ -0,0 +1,11 @@
# All keys are commented out by default. Make sure to remove the leading '#' of the relevant lines
# GITHUB_TOKEN: 'GitHub Token to clone private repos'
# OPENAI_API_KEY: 'OpenAI API Key Here if using OpenAI Model'
# ANTHROPIC_API_KEY: 'Anthropic API Key Here if using Anthropic Model'
# TOGETHER_API_KEY: 'Together API Key Here if using Together Model'
# AZURE_OPENAI_API_KEY: 'Azure OpenAI API Key Here if using Azure OpenAI Model'
# AZURE_OPENAI_ENDPOINT: 'Azure OpenAI Endpoint Here if using Azure OpenAI Model'
# AZURE_OPENAI_DEPLOYMENT: 'Azure OpenAI Deployment Here if using Azure OpenAI Model'
# AZURE_OPENAI_API_VERSION: 'Azure OpenAI API Version Here if using Azure OpenAI Model'
# OPENAI_API_BASE_URL: 'LM base URL here if using Local or alternative api Endpoint'
# GROQ_API_KEY: 'Groq Models API Key'

8
.agent/vendor/mini-swe/.env.example vendored Normal file
View File

@@ -0,0 +1,8 @@
# GitHub Personal Access Token
# Used for GitHub API operations: querying repository metadata,
# cloning private repos, and opening pull requests.
#
# Required scopes:
# public_repo - for public repos (read metadata, open PRs)
# repo - for private repos (all of the above + private repo access)
GITHUB_TOKEN=

View File

@@ -0,0 +1,8 @@
# Trailing whitespace & black
51699eb03c3c4f36d4b5ef2725f7bd5223874da7
70ba97190a781705203ba838bfe0fb8be7cfa32f
83988093c08ab5f1cb999f97fc3745f3d3af306f
# Code quality: Convert to make use of PEP 585 and PEP 604
29a4c6dfb6cceff5e657c707ce809bc78f33b778
# Sort imports
f873761e6760a844c1788cb5f4e42de401ab2c38

View File

@@ -0,0 +1,134 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -0,0 +1,72 @@
name: Bug Report
description: Create a report to help us reproduce and correct the bug
labels: ['bug']
body:
- type: markdown
attributes:
value: >
#### Before submitting a bug, please make sure the issue hasn't been already
addressed by searching through [the past issues](https://github.com/SWE-agent/SWE-agent/issues).
- type: textarea
attributes:
label: Describe the bug
description: >
A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
attributes:
label: Steps/commands/code to Reproduce
description: >
**Please add the FULL COMMAND that you were running as well as how you set up the software (docker, conda, etc.)**
Please always copy code as text and not as a screenshot.
Enclose code/commands/log output in [triple backticks](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code).
placeholder: |
Sample code/commands to reproduce the problem.
```
PLEASE INCLUDE THE FULL COMMAND HERE.
```
validations:
required: true
- type: textarea
attributes:
label: Error message/results
description: >
Please paste or describe the expected results.
Use [triple backticks](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code) around log/error messages.
You should find the full log in your `trajectory` folder (look for `*.log` files).
placeholder: >
```
Full log file here
```
validations:
required: true
- type: textarea
attributes:
label: System Information
description: |
Please tell us what OS and processor architecture you are using, your Python version, and the `swebench` package version if applicable.
placeholder: >
e.g. MacOS M1, Python 3.9, swebench 1.0.1
validations:
required: true
- type: checkboxes
id: checks
attributes:
label: Checklist
description: We can only help you if you have done the following
options:
- label: I'm running with the latest docker container/on the latest development version (i.e., I ran `git pull`))
required: true
- label: I have copied the full command/code that I ran (as text, not as screenshot!)
required: true
- label: "If applicable: I have copied the **full** log file/error message that was the result (as text, not as screenshot!)"
required: true
- label: I have enclosed code/log messages in triple backticks ([docs](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code)) and clicked "Preview" to make sure it's displayed correctly.
required: true
- type: markdown
attributes:
value: >
Thanks for contributing 🎉!

View File

@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Blank issue
url: https://github.com/SWE-agent/SWE-agent/issues/new
about: None of the above? Open a blank issue
- name: Slack server
url: https://join.slack.com/t/swe-bench/shared_invite/zt-36pj9bu5s-o3_yXPZbaH2wVnxnss1EkQ
about: Open ended discussions

View File

@@ -0,0 +1,20 @@
name: Feature Request
description: Suggest a new feature or enhancement to the project
labels: ['feature']
body:
- type: textarea
attributes:
label: Describe the feature
description: >
Please describe the feature as best as you can.
If applicable, it would help to know how you currently manage without it.
What improvements would you expect with its implementation?
validations:
required: true
- type: textarea
attributes:
label: Potential Solutions
description: Links to similar features in other projects, diagrams, or any other references that could help us understand your vision are highly appreciated.
validations:
required: true

View File

@@ -0,0 +1,20 @@
name: Question
description: Ask an open-ended question about SWE-agent (e.g., "How do I do ...?"). If you get an error message or think that something went wrong, please open a bug issue instead!
labels: ['question']
body:
- type: textarea
attributes:
label: Describe the issue
description: >
Tell us about the confusion you have about SWE-agent *or*
the information that is missing in the documentation.
If you face error messages and more, please open a bug report
instead https://github.com/SWE-agent/SWE-agent/issues/new?template=bug_report.yml
validations:
required: true
- type: input
attributes:
label: "Optional: Relevant documentation page"
description: >
If something is missing in a specific page, put the URL here

View File

@@ -0,0 +1,18 @@
<!--
Thanks for contributing a pull request!
-->
#### Reference Issues/PRs
<!--
Example: "Fixes #1234", "See also #3456"
Please use keywords (e.g., Fixes) to create link to the issues or pull requests
you resolved, so that they will automatically be closed when your pull request
is merged. See https://github.com/blog/1506-closing-issues-via-pull-requests
-->
#### What does this implement/fix? Explain your changes.
<!--
Please include a brief explanation of how your solution
fixes the tagged issue(s), along with what files / entities have
been modified for this fix.
-->

View File

@@ -0,0 +1,7 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -0,0 +1,52 @@
name: build-docs
on:
push:
branches:
- main
- "build-docs-*"
pull_request:
branches:
- main
# Prevent concurrent runs that could conflict when pushing to gh-pages
concurrency:
group: build-docs-${{ github.ref }}
cancel-in-progress: false
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- uses: actions/setup-python@v6
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v5
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
- run: uv pip install --python ${Python_ROOT_DIR} '.[dev]'
- name: Build Documentation
if: github.ref != 'refs/heads/main' && github.ref != 'refs/heads/v0.7'
run: mkdocs build
- name: Deploy on 0.7
if: github.ref == 'refs/heads/v0.7'
run: mike deploy --push 0.7
- name: Build + Deploy Documentation
if: github.ref == 'refs/heads/main'
run: mike deploy --push 1.0 latest

View File

@@ -0,0 +1,20 @@
name: Check Markdown links
on:
workflow_dispatch:
push:
branches:
- main
- bala/fix_broken_links
schedule:
- cron: "0 0 1 * *"
jobs:
markdown-link-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: tcort/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
use-verbose-mode: 'yes'

View File

@@ -0,0 +1,13 @@
on: [pull_request]
name: Check Markdown links in modified files
jobs:
markdown-link-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: tcort/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
use-verbose-mode: 'yes'
check-modified-files-only: 'yes'
base-branch: 'main'

View File

@@ -0,0 +1,75 @@
name: Pytest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
on:
push:
branches:
- main
- prepare-public2
paths-ignore:
- 'docs/**'
- '.cursor/**'
- 'README.md'
- 'mkdocs.yml'
pull_request:
branches:
- main
- prepare-public2
paths-ignore:
- 'docs/**'
- 'README.md'
- 'mkdocs.yml'
# Not possible to test windows capability:
# https://github.com/orgs/community/discussions/25491
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash -l {0}
steps:
- name: Checkout code
uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "${{ matrix.python-version }}"
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Install dependencies
run: |
uv pip install --python ${Python_ROOT_DIR} -e '.[dev]'
- name: Check available files
run: |
find .
- name: Run pytest
uses: sjvrijn/pytest-last-failed@v2
with:
pytest-args: '--junitxml=test-results.xml --cov -n auto -s'
- name: Upload logs & trajectories
uses: actions/upload-artifact@v7
if: always()
with:
name: trajectories-py${{ matrix.python-version }}
path: |
trajectories/runner/
- name: Explicitly convert coverage to xml
if: matrix.python-version == '3.11'
run: coverage xml
- name: Upload coverage reports to Codecov
if: matrix.python-version == '3.11'
uses: codecov/codecov-action@v5.5.2
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: SWE-agent/SWE-agent
- name: Upload test results to Codecov
if: matrix.python-version == '3.11'
uses: codecov/test-results-action@v1
with:
files: test-results.xml

210
.agent/vendor/mini-swe/.gitignore vendored Normal file
View File

@@ -0,0 +1,210 @@
keys.yaml
.swe-agent-human-history
.vscode/**
cov.xml
trajectories/**
!trajectories/demonstrations/**
data/**
*.env
!tools/*
# -------- automatically generated files --------
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
/lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# Mac files
*.DS_Store
# Custom
keys*.cfg
# iPython Notebooks
*.ipynb
# Evaluation folders
results/
testbed/
temp/
# Ignore all YAML files in data/
data/*/ic-*
data/*/single-issues
# Fine tuning data
fine_tune/*.ipynb
fine_tune/subtasks/*.jsonl
temp*.jsonl
# Inspector
inspector/*.json
# Ignore all files in the private folder
private/
### Website
# dependencies
website/frontend/node_modules
website/frontend/package-lock.json
website/frontend/.pnp
*.pnp.js
# testing
website/frontend/coverage
# production
website/frontend/build
# misc
*.env.local
*.env.development.local
*.env.test.local
*.env.production.local
.api_key
*npm-debug.log*
*yarn-debug.log*
*yarn-error.log*
# demo yamls (for editing)
*.demo.yaml
# PyCharm
.idea/
# Disasm / Decomp output
*.decomp.json
*.disas.json
# SWE-smith
agent_conf
sb-cli-reports/
trajectories_sft/

View File

@@ -0,0 +1,39 @@
ci:
autoupdate_commit_msg: "chore: update pre-commit hooks"
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v6.0.0"
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-symlinks
- id: mixed-line-ending
- id: detect-private-key
- id: check-ast
- id: trailing-whitespace
- repo: https://github.com/crate-ci/typos
rev: v1
hooks:
- id: typos
files: \.(py|md|rst|yaml|toml)
exclude: pyproject.toml
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.7
hooks:
# Run the linter.
- id: ruff
args: ["--fix"]
# Run the formatter.
- id: ruff-format
- repo: https://github.com/pre-commit/mirrors-prettier
rev: "v4.0.0-alpha.8" # Use the sha or tag you want to point at
hooks:
- id: prettier
types_or: ["javascript", "css"]
exclude: "^tests/test_data/|^tools/.*/.*.py"

16
.agent/vendor/mini-swe/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,16 @@
# Contribution guidelines
<!-- Please don't use relative links in this page, as it is included by github in various places -->
<!-- INCLUSION START -->
The easiest way to contribute is to give us feedback.
* **Something isn't working?** Open a [bug report](https://github.com/SWE-agent/SWE-agent/issues/new?template=bug_report.yml).
Rule of thumb: If you're running something and you get some error messages, this is the issue type for you.
* **You have a concrete question?** Open a [question issue](https://github.com/SWE-agent/SWE-agent/issues/new?template=question.yml).
* **You are missing something?** Open a [feature request issue](https://github.com/SWE-agent/SWE-agent/issues/new?template=feature_request.yml)
* **Open-ended discussion?** Talk on [discord](https://discord.gg/AVEFbBn2rH). Note that all actionable items should be an issue though.
<!-- INCLUSION END -->
You want to do contribute to the development? Great! Please see the [development guidelines](https://swe-agent.com/latest/dev/contribute/) for guidelines and tips.

21
.agent/vendor/mini-swe/LICENSE vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 John Yang, Carlos E. Jimenez, Alexander Wettig, Shunyu Yao, Karthik Narasimhan, Ofir Press
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

145
.agent/vendor/mini-swe/README.md vendored Normal file
View File

@@ -0,0 +1,145 @@
<p align="center">
<a href="https://swe-agent.com/latest/">
<img src="assets/swe-agent-banner.png" alt="swe-agent.com" style="height: 7em" />
</a>
</p>
<p align="center">
<a href="https://swe-agent.com/latest/"><img src="https://img.shields.io/badge/Docs-green?style=for-the-badge&logo=materialformkdocs&logoColor=white" alt="Docs"></a>
<a href="https://join.slack.com/t/swe-bench/shared_invite/zt-36pj9bu5s-o3_yXPZbaH2wVnxnss1EkQ"><img src="https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white" alt="Slack"></a>
<a href="https://arxiv.org/abs/2405.15793"><img src="https://img.shields.io/badge/arxiv-2405.15793-red?style=for-the-badge&logo=arxiv&logoColor=white&labelColor=black" alt="arxiv 2405.15793"></a>
</p>
<p align="center">
<a href="https://github.com/SWE-agent/mini-swe-agent/">
<img src="assets/warning.png" alt="mini-swe-agent.com" style="height: 7em" />
</a>
</p>
> [!warning]
> Most of our current development effort is on [mini-swe-agent](https://github.com/SWE-agent/mini-swe-agent/),
> which has superseded SWE-agent. It matches the performance performance of SWE-agent, while being
> much simpler.
> See the [FAQ](https://mini-swe-agent.com/latest/faq/) for more details about the differences.
> Our general recommendation is to use mini-SWE-agent instead of SWE-agent going forward.
SWE-agent enables your language model of choice (e.g. GPT-4o or Claude Sonnet 4) to autonomously use tools to
[fix issues in real GitHub repositories](https://swe-agent.com/latest/usage/hello_world),
[find cybersecurity vulnerabilities](https://enigma-agent.com/), or
[perform any custom task](https://swe-agent.com/latest/usage/coding_challenges).
***State of the art** on SWE-bench among open-source projects
***Free-flowing & generalizable**: Leaves maximal agency to the LM
***Configurable & fully documented**: Governed by a single `yaml` file
***Made for research**: Simple & hackable by design
SWE-agent is built and maintained by researchers from Princeton University and Stanford University.
## 📣 News
* July 24: [Mini-SWE-Agent](https://github.com/SWE-agent/mini-SWE-agent) achieves 65% on SWE-bench verified in 100 lines of python!
* May 2: [SWE-agent-LM-32b](https://github.com/SWE-bench/SWE-smith) achieves open-weights SOTA on SWE-bench
* Feb 28: [SWE-agent 1.0 + Claude 3.7 is SoTA on SWE-Bench full](https://x.com/KLieret/status/1895487966409298067)
* Feb 25: [SWE-agent 1.0 + Claude 3.7 is SoTA on SWE-bench verified](https://x.com/KLieret/status/1894408819670733158)
* Feb 13: [Releasing SWE-agent 1.0: SoTA on SWE-bench light & tons of new features](https://x.com/KLieret/status/1890048205448220849)
* Dec 7: [An interview with the SWE-agent & SWE-bench team](https://www.youtube.com/watch?v=fcr8WzeEXyk)
## 🚀 Get started!
👉 Try SWE-agent in your browser: [![Open in GitHub Codespaces](https://img.shields.io/badge/Open_in_GitHub_Codespaces-gray?logo=github)](https://codespaces.new/SWE-agent/SWE-agent) ([more information](https://swe-agent.com/latest/installation/codespaces/))
Read our [documentation][docs] to learn more:
* [Installation](https://swe-agent.com/latest/installation/source/)
* [Hello world from the command line](https://swe-agent.com/latest/usage/hello_world/)
* [Benchmarking on SWE-bench](https://swe-agent.com/latest/usage/batch_mode/)
* [Frequently Asked Questions](https://swe-agent.com/latest/faq/)
[docs]: https://swe-agent.com
## SWE-agent for offensive cybersecurity (EnIGMA) <a name="enigma"></a>
<img src="https://github.com/user-attachments/assets/84599168-11a7-4776-8a49-33dbf0758bb2" height="80px"></img>
[SWE-agent: EnIGMA][enigma] is a mode for solving offensive cybersecurity (capture the flag) challenges.
EnIGMA achieves state-of-the-art results on multiple cybersecurity benchmarks (see [leaderboard](https://enigma-agent.com/#results)).
Please use [SWE-agent 0.7](https://github.com/SWE-agent/SWE-agent/tree/v0.7) while we update EnIGMA for 1.0.
[enigma]: https://enigma-agent.com
[SWE-bench]: https://github.com/SWE-bench/SWE-bench
[nyu-ctf]: https://arxiv.org/abs/2406.05590
In addition, you might be interested in our other projects:
<div align="center">
<a href="https://github.com/SWE-agent/mini-SWE-agent"><img src="docs/assets/mini_logo_text_below.svg" alt="Mini-SWE-Agent" height="120px"></a>
&nbsp;&nbsp;
<a href="https://github.com/SWE-agent/SWE-ReX"><img src="docs/assets/swerex_logo_text_below.svg" alt="SWE-ReX" height="120px"></a>
&nbsp;&nbsp;
<a href="https://github.com/SWE-bench/SWE-bench"><img src="docs/assets/swebench_logo_text_below.svg" alt="SWE-bench" height="120px"></a>
&nbsp;&nbsp;
<!-- <a href="https://github.com/SWE-agent/SWE-agent"><img src="docs/assets/sweagent_logo_text_below.svg" alt="SWE-agent" height="120px"></a> -->
<a href="https://github.com/SWE-bench/SWE-smith"><img src="docs/assets/swesmith_logo_text_below.svg" alt="SWE-smith" height="120px"></a>
&nbsp;&nbsp;
<a href="https://github.com/SWE-bench/sb-cli"><img src="docs/assets/sbcli_logo_text_below.svg" alt="sb-cli" height="120px"></a>
</div>
## Contributions <a name="contributions"></a>
If you'd like to contribute to the codebase, we welcome [issues](https://github.com/SWE-agent/SWE-agent/issues) and [pull requests](https://github.com/SWE-agent/SWE-agent/pulls)! For larger code changes, we always encourage discussion in issues first.
## Citation & contact <a name="citation"></a>
SWE-agent is an academic project started at Princeton University by John Yang*, Carlos E. Jimenez*, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, and Ofir Press.
Contact person: [John Yang](https://john-b-yang.github.io/), [Carlos E. Jimenez](http://www.carlosejimenez.com/), and [Kilian Lieret](https://www.lieret.net/) (Email: johnby@stanford.edu, carlosej@cs.princeton.edu, kl5675@princeton.edu).
If you found this work helpful, please consider citing it using the following:
<details>
<summary> SWE-agent citation</summary>
```bibtex
@inproceedings{yang2024sweagent,
title={{SWE}-agent: Agent-Computer Interfaces Enable Automated Software Engineering},
author={John Yang and Carlos E Jimenez and Alexander Wettig and Kilian Lieret and Shunyu Yao and Karthik R Narasimhan and Ofir Press},
booktitle={The Thirty-eighth Annual Conference on Neural Information Processing Systems},
year={2024},
url={https://arxiv.org/abs/2405.15793}
}
```
</details>
If you used the summarizer, interactive commands or the offensive cybersecurity capabilities in SWE-agent, please also consider citing:
<details>
<summary>EnIGMA citation</summary>
```bibtex
@misc{abramovich2024enigmaenhancedinteractivegenerative,
title={EnIGMA: Enhanced Interactive Generative Model Agent for CTF Challenges},
author={Talor Abramovich and Meet Udeshi and Minghao Shao and Kilian Lieret and Haoran Xi and Kimberly Milner and Sofija Jancheska and John Yang and Carlos E. Jimenez and Farshad Khorrami and Prashanth Krishnamurthy and Brendan Dolan-Gavitt and Muhammad Shafique and Karthik Narasimhan and Ramesh Karri and Ofir Press},
year={2024},
eprint={2409.16165},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2409.16165},
}
```
</details>
## 🪪 License <a name="license"></a>
MIT. Check `LICENSE`.
<div align="center">
[![Pytest](https://github.com/SWE-agent/SWE-agent/actions/workflows/pytest.yaml/badge.svg)](https://github.com/SWE-agent/SWE-agent/actions/workflows/pytest.yaml)
[![build-docs](https://github.com/SWE-agent/SWE-agent/actions/workflows/build-docs.yaml/badge.svg)](https://github.com/SWE-agent/SWE-agent/actions/workflows/build-docs.yaml)
[![codecov](https://codecov.io/gh/SWE-agent/SWE-agent/graph/badge.svg?token=18XAVDK365)](https://codecov.io/gh/SWE-agent/SWE-agent)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/SWE-agent/SWE-agent/main.svg)](https://results.pre-commit.ci/latest/github/SWE-agent/SWE-agent/main)
[![Markdown links](https://github.com/SWE-agent/SWE-agent/actions/workflows/check-links-periodic.yaml/badge.svg)](https://github.com/SWE-agent/SWE-agent/actions/workflows/check-links-periodic.yaml)
</div>

5
.agent/vendor/mini-swe/SECURITY.md vendored Normal file
View File

@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please contact Kilian Lieret (kl5675@princeton.edu), John Yang (johnby@stanford.edu), Carlos E. Jimenez (carlosej@princeton.edu), and Ofir Press (ofirp@princeton.edu).

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 1313.9 1350">
<!-- Generator: Adobe Illustrator 29.3.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 151) -->
<defs>
<style>
.st0, .st1 {
fill-rule: evenodd;
}
.st1, .st2 {
fill: #fff7ec;
}
</style>
</defs>
<path d="M200.2,931.3c-16.6,13.5-19.9,16-33.6,10.5-11.4-4.5-32.9-11.6-31-13.3,15-13.4,22.5-26.9,41.4-19.5,15.1,5.9,20.8,10.4,20.8,10.4,0,0,11,3.6,2.4,11.8Z"/>
<path d="M356.1,1121.9c-55-22.1-109-43.6-163.9-65.6,17.1-21.7,29.1-25.8,49.2-18,69.7,27.2,139.3,54.8,208.9,82.2,4.7,1.8,9.8,3.2,11.7,8.7-13.2,17.9-28.8,23-48,15.5-19-7.4-37.9-14.9-57.9-22.9Z"/>
<path d="M775.9,1162.3c10.7-8.8,21-9,32.2-3.8,16.3,7.7,34.6,11.3,48.9,21.4.6,5.2-1.6,7.4-4.2,9-23.2,13.7-46.5,27.3-69.7,41-5.1,3-10.6,4.4-16.1,2.3-24.6-9.6-49.1-19.6-73.6-29.5-2.8-1.1-5.4-2.9-6-6.3,15.3-17.7,26.2-21.5,45.8-14.5,8.1,2.9,14.4,2.1,20.9-3.5,6.6-5.6,13.9-10.3,21.8-16.1Z"/>
<path d="M794,1102.4c33.8,13.2,66.6,26,99.2,39,5.1,2,12,3.2,12.8,9.5,1,7.5-6.7,9.3-11.5,12.7-9.6,6.8-19.1,9-31.2,4.1-50-20.3-100.4-39.7-150.6-59.5-5.1-2-10.7-3.6-13.5-9,11.7-17.2,26.8-22.4,45.1-15.6,16.2,6,32.4,12.3,49.6,18.9Z"/>
<path d="M535.5,1193.2c-28-12-56-21-82.3-34.6,12.9-19.1,28.6-24.9,47.6-17.6,42.7,16.5,85.3,33.4,127.8,50.2,5.6,2.2,12.7,3.9,12.9,11.2.2,6.6-7.1,7.8-11.3,11.2-11.1,8.9-22.8,9.1-35.6,3.5-19.1-8.3-38.6-15.8-59.1-23.9Z"/>
<path d="M153.3,1003c16.7,8,34.3,11.6,49.1,22-17.2,21-28.2,24.2-49.5,15.8-33.1-13.1-66.1-26.3-99.1-39.4-4.7-1.9-10.6-3.3-11.7-8.7-1.4-7,5.9-8.5,9.9-11.9,10.3-8.8,20.8-10.1,33.7-4.5,21.8,9.6,44.4,17.7,67.7,26.8Z"/>
<path d="M189.6,966.8c14.3,5.8,27.4,11.1,40.6,16.4,10.2,4.1,9.4,9.1,1.5,15-12.8,9.6-25.2,14-41.9,6.3-28.5-13.2-58.3-23.6-87.4-35.5-5-2-11.8-3.2-12.9-9.4-1.3-7,6.2-8.3,10.1-11.8,9.3-8.3,19.2-9.4,30.8-4.4,19.1,8.2,38.7,15.3,59.1,23.4Z"/>
<path d="M726.7,1230.7c9.1,4.5,18.9,5,25.4,12.2-7.3,12.7-25.9,23.9-37.6,19.8-25.4-8.8-50.2-19.3-75.2-29.3-1.6-.6-2.6-2.8-3.8-4.1,13.5-17.6,27.9-22.7,46.1-16.1,14.8,5.4,29.4,11.3,45.2,17.5Z"/>
<path d="M650.8,1084.2c-13.4-5.2-25.7-9.9-37.9-14.9-4.1-1.7-9.3-3.1-9.5-8.6-.2-5.6,5.5-6.5,8.9-9.2,13.3-10.7,26.9-11.3,42.3-3.7,13.1,6.5,27.3,10.8,40.9,16.3,4.1,1.7,8.9,3.3,9.4,8.8.6,5.9-4.9,6.9-8.2,9.7-14.5,12.6-29.6,10.3-46,1.5Z"/>
<path d="M560.1,1150.3c-18.9-8.2-38.3-12.6-54.9-23.7,14.4-19.7,27.7-23.8,47.7-16.2,13.3,5.1,26.6,9.9,39.8,15.1,5.1,2,10.6,3.7,13.4,9-11,17.6-25.8,22.8-46,15.8Z"/>
<path d="M548.1,1042.1c-18.9-8.2-38.3-12.6-54.9-23.7,14.4-19.7,27.7-23.8,47.7-16.2,13.3,5.1,26.6,9.9,39.8,15.1,5.1,2,10.6,3.7,13.4,9-11,17.6-25.8,22.8-46,15.8Z"/>
<path d="M376.4,1003.5c-16.6,13.5-32.8,12.7-50,3.4-14.4-7.8-31.5-10.1-44.8-20.6,13.6-18.6,27.3-22.9,46.1-15.5,15.1,5.9,30.2,11.7,45.3,17.7,7,2.8,12.1,6.8,3.5,14.9Z"/>
<path d="M417.7,1070.4c-16.6,13.5-32.9,12.7-50,3.4-14.4-7.8-31.5-10.1-44.8-20.7,13.6-18.6,27.3-22.9,46.1-15.5,15.1,5.9,30.2,11.7,45.3,17.7,7,2.8,12.1,6.8,3.5,15Z"/>
<path d="M642.7,1094.4c5.1,2.4,9.8,3.4,11.8,8.2-10.8,17.9-25.5,23.3-44.3,16.1-13.7-5.3-27.5-10.6-41.2-16-5.1-2-10.9-3.3-12.8-9.5,12.3-16.7,25-21.5,42.6-15.3,14.4,5,28.5,10.7,43.8,16.6Z"/>
<path d="M542.5,1053.8c5.1,2.4,9.8,3.4,11.9,8.2-10.8,17.9-25.6,23.3-44.3,16.1-13.7-5.3-27.5-10.6-41.2-16-5.1-2-10.9-3.3-12.8-9.5,12.3-16.7,25-21.5,42.6-15.3,14.4,5,28.5,10.7,43.8,16.6Z"/>
<path d="M510.4,1102.4c-16.9,14.9-34,18.3-53.6,7.3-13.8-7.7-30.4-10.2-43.5-20.6,18.9-19.8,29-22.4,51.6-13.8,11.8,4.5,23.7,9,35.4,13.9,5.3,2.2,12.3,3.6,10.1,13.2Z"/>
<path d="M679.6,1183.8c-9.6,7.1-18.5,7.1-28.2,2.9-13.5-5.9-27.3-11.1-41-16.6-4.6-1.9-9.5-3.5-11.7-8.5,13.2-18,26.9-22.7,45.7-15.6,11.4,4.3,22.7,8.9,34,13.5,6,2.4,14.9,2.6,16.1,9.7,1.5,8.8-9,9.4-14.9,14.6Z"/>
<path d="M272.7,999.5c20.4,8.8,41.1,14,59.3,25.3-14.4,19.6-29,24.3-48.8,15.5-16.8-7.5-35.8-10.8-52.4-25,13.5-9.2,22.7-22.5,41.9-15.8Z"/>
<path d="M230.9,933c.6,20.2,16,33.4,31.3,31.2,9.4-1.4,17.6-5.6,24.2-10.6,6.9,2.8,11.8,6.8,3.3,14.9-16.6,13.5-32.9,12.7-50,3.4-5.8-3.1-12-5.4-18.3-7.6-9.3-3.4-18.6-6.7-26.6-13,11.1-15.1,22.2-20.8,36.1-18.4,0,0,0,.1,0,.1Z"/>
<path d="M577.8,126.4c-.2,113-.1,349.5-.1,349.5,0,0,0,19.2-.1,46.9l72.4-19.2s48.7-7.8,72.6-26.1c4.2-3.2,6.9-6.8,9.4-10.3,3.4-4.7,6.6-9.1,13.1-11.9,11.6-5,25.1-8.9,38.6-12.6,13.4-3.8,26.8-7.5,37.8-12.4,19.9-8.8,38.5-17.1,59.8-20.1,20.6-3,44.7,16.1,66.2,37.5,16,16,33.5,53.3,40.5,92.4,6.4,35.6,7.8,59,0,90.9-3.8,15.5-8.4,25.4-21.2,34.9-15.4,11.4-31.9,15-50.2,18.9-11.1,2.4-22.8,4.9-35.3,9.4-14.6,5.2-37.2,13.9-37.2,13.9,0,0-9.4,50-20.9,79.8-3.2,8.2-5.4,16.3-7.6,24.2-.8,2.9-1.6,5.8-2.4,8.7,10.8,4.3,17.3,6.9,17.3,6.9,0,0,242.9,91.8,364.4,137.7,2.9,1.1,5.9,2,8.7,2.9,1.3.4,2.5.8,3.7,1.2,5.8-4.7,5.5-10.3,5.2-15.7,0-1.2-.1-2.3-.1-3.4,0-65.1,0-130.2,0-195.3v-.3c0-133.7,0-267.5.3-401.2,0-13.6-5.4-19.6-17.7-24.1-150.1-54.8-300.1-109.9-450.1-165,0,0-.2,0-.2,0-40.1-14.7-80.3-29.5-120.4-44.2-9.7-3.6-19.4-7.1-29.1-10.6h0c-4.5-1.6-8.9-3.2-13.3-4.8-5.1,6.1-4.7,12-4.4,17.6,0,1.4.2,2.8.2,4.1Z"/>
<path d="M316.7,875.5c-2.3,7.5-3.9,14.9-5.2,22.1,16,6.3,34,13.4,52.7,20.8-.2-2.1-.4-4.3-.6-6.6-.6-6.5-.9-12.6-.9-18.5-16.5-6.4-32-12.4-46-17.8Z"/>
<path d="M454.7,929.1c.2,3.5.5,6.9.8,10.3.5,5.1.9,10.2,1.1,15.4,44.4,17.4,78.1,30.7,78.1,30.7,0,0,236.3,92.3,354.4,138.4,16.6,6.5,33.2,13,49.8,19.5,10.2,4,11.6,9.4,2.2,16-3.3,2.3-6.8,4.4-10.3,6.5-15.9,9.4-32,18.6-48,27.9,0,0,0,0,0,0h0c-37.4,21.6-74.7,43.1-111.1,66.2-31.7,20-61.6,20.9-95.4,7.4-152.7-61.1-305.6-121.8-458.5-182.6-53.5-21.2-106.9-42.5-160.4-63.7-9.5-3.8-38.1-19.1-26.7-29.9,19.4-18.3,98.6-75.4,150.7-112.5-1.4-3.5-2.2-7.4-2.4-11.7-70,45.7-161.3,113-169.7,124.2-14.2,19-8.4,46.3-5.3,60.9,0,.3.1.6.2.9,4.9,22.7,10.2,24.8,32.5,33.2,3.6,1.3,7.6,2.9,12.1,4.7,122.1,48.7,244.1,97.4,366.4,146.2,88.1,35.2,176.4,70.4,264.8,105.7,30.3,9,59.3,12,86.9-4,40.7-23.6,81.3-47.6,121.9-71.5,11.2-6.6,22.4-13.2,33.6-19.8,46.8-27.6,46.8-27.9,46.2-61.9,0-5.5-.2-11.9-.1-19.4.3-33-3.3-37.7-33.7-49.5-53.4-20.8-106.7-41.7-160.1-62.5-45.4-17.7-90.8-35.5-136.3-53.2-5,1-10,.8-14.7-.7-8.2-2.6-16-7.3-22.1-13.6-.4-.2-.8-.3-1.2-.5-2.1-.8-6.7-2.6-13.3-5.2-24.5-9.5-76.4-29.8-132.2-51.5Z"/>
<path d="M385.7,1000.8c-6.8,2.8-13,8.3-19.3,16.8,8,6.3,17.3,9.7,26.6,13,6.2,2.2,12.5,4.5,18.3,7.6,17.2,9.3,33.4,10.1,50-3.4,8.6-8.2,3.5-12.1-3.5-14.9-5-2-10-4-15-6-5.3,8.1-12.1,13.8-20.5,13.3-14.6-.8-26.8-11.3-36.6-26.4Z"/>
<path d="M365.4,936.3c-12.5-1.1-22.7,4.8-32.9,18.8,8,6.3,17.3,9.7,26.6,13,4.5,1.6,9,3.2,13.3,5.2-4.5-12.7-5.9-24-6.9-37Z"/>
<path d="M295.8,945.2c3,1.1,5.9,2.2,8.3,3.2,13.7,5.5,17,3,33.6-10.5,8.6-8.2-2.4-11.8-2.4-11.8,0,0-5.7-4.5-20.8-10.4-2-.8-4-1.4-5.8-1.7-1,6.5-2,12.9-3.3,19.1,0,0-3.4,5.7-9.7,12.2Z"/>
<path d="M228.4,916.6c-.4-2.4-.6-4.7-.6-6.8h0c0-3.1,0-6.1,0-9.2-2.7-3.2-5.9-2.8-9-2.4-1,.1-1.9.2-2.8.2-9.4,0-17.4-2.1-23.4-6-1.5,1.7-3.1,3.6-4.6,5.7,8,6.3,17.3,9.7,26.6,13,4.7,1.7,9.3,3.4,13.8,5.4Z"/>
<path d="M565.8,4.6c-36.7-13.8-64.8,4.4-64.2,45.4l-1.2,492.1,44.8-10.7,12.9-3.4c2.4-153.5,3.1-306.9,3.1-460.5,115.9,42.5,231.4,86,347,129.5h0c97.9,36.9,195.8,73.8,294,110,29.7,11,33.6,15.9,33.6,46.7,0,63.1,0,126.2,0,189.3,0,144,0,287.9,0,431.9,0,16-13.2,20.1-22.7,16.9-139.5-46.9-274.6-95.9-409.4-146.5-3.1,5.9-7.1,11.7-12.3,17.2-10.3,11-19.6,18.3-30.5,27,0,0,0,0-.1,0,9.8,3.5,19.7,7,29.5,10.5,146.3,52.2,290.6,103.8,405.7,149.6,28.7,11.4,54.8,12.1,82.6-.1,23.8-10.4,35.1-26.1,35.2-52.5,0-21.9,0-43.9,0-65.8,0-11,0-22,0-32.9V326.1c0-34.7-10.2-49.6-42.8-61.5-10.3-3.8-20.6-7.5-31-11.3-60.1-21.8-120.2-43.7-180.1-65.8-31.4-11.6-62.8-23.1-94.1-34.7C832.3,103.7,698.9,54.6,565.8,4.6Z"/>
<path d="M637,845.1c1.7-1.9,3.4-3.8,5.1-5.6,13.7-15.2,27.3-30.2,31.9-43.5-23.5-9-47-18.1-70.6-27.2-3.2.6-6.3,1.4-9.4,2.3-3.2,1-6.3,1.9-9.3,2.8h0c-17.4,5.2-31.3,9.3-48.1,19.9-5.2,3.3-9.6,6.5-13.7,9.6,37.2,13.8,75.4,27.7,114.2,41.7Z"/>
<path d="M448.8,1002.3c1,.4,2.1.8,3.1,1.1h0c4,1.5,7.9,2.9,11,4.2,13.7,5.5,17,3,33.6-10.5,8.6-8.2-2.4-11.8-2.4-11.8,0,0-5.7-4.4-20.8-10.4-7-2.8-12.5-2.6-17.3-.7-.4,3-.9,6.1-1.5,9.3-1.2,6-3.1,12.5-5.7,18.8Z"/>
<path d="M933,621c-9.6,6-18.6,7.7-25.8-.8-6.7-7.8-5.8-17.1-.7-25.6,6.4-10.7,19.9-13.9,29-7.3,10.1,7.2,9.6,19-2.6,33.7Z"/>
<path class="st0" d="M262.2,964.2c-15.3,2.2-30.7-11-31.3-31.2-.1-3.3-.8-7.1-1.5-11-.8-4.3-1.6-8.6-1.6-12.2h0c0-3.1,0-6.1,0-9.2-3.6-4.2-7.9-2.2-11.8-2.2-26.7.1-41.1-17-36.3-43.7,6.6-36.6,17.8-73.6,33.3-107.5h0c2.1-4.5,4.2-9.2,2.6-15.3-4.6.9-9,2.2-13.5,3.6-7.7,2.3-15.3,4.6-23.4,4.6-20.2,0-34-7-40.3-21.8-6.4-15.1-2.1-31.6,13.1-45.1,29.7-26.5,51.1-55.1,94-73.1,16.8-7,27-8.9,44.6-13.5,34.9-9.1,90.8-16.2,90.8-16.2l164.2-39.1,104.8-27.8s48.7-7.8,72.6-26.1c9.8-7.5,11.2-17.3,22.5-22.2,23.2-10.1,54.3-15.3,76.4-25.1,19.9-8.8,38.5-17.1,59.8-20.1,20.6-3,44.7,16.1,66.2,37.5,16,16,33.5,53.3,40.5,92.4,6.4,35.6,7.8,59,0,90.9-3.8,15.5-8.4,25.4-21.2,34.9-24.7,18.4-52.4,16.4-85.5,28.3-14.6,5.2-37.2,13.9-37.2,13.9,0,0-9.4,50-20.9,79.8-10.2,26.5-10.8,52.3-31.7,74.7-12.8,13.7-24,21.7-38.8,33.6-18.5,14.8-39.5,34.5-52.2,47.8-10.3,10.7-17.2,17.9-28.6,32.9-14.2,18.7-32.7,28.2-48.4,23.2-19-6-35.2-22.9-35.8-46.9-.5-18.4,14.9-51.3,21.3-68.6,11.1-30.3,62.9-67.1,66.4-94.5,1.8-14.2-19.8-15.8-31.4-18.9-18.9-5.1-34.7-4.7-50.1,0-22,6.7-37.7,10.3-57.5,22.7-17,10.6-25.5,20.6-39,30-22.2,15.5-26.2,14.1-35.5,31.3-5.6,10.3-6.1,30.4-7.5,52.2-1.8,28.9,6,47.3,0,76.3-4,19.1-14.7,44.6-32.2,43.6-20.8-1.2-36.7-21.8-47.5-47.6-9.7-23.1-8.6-40-11.3-67.9-2.9-30.6,1.6-51.4,9-80.9,4.5-18,11.2-31.2,20.1-43.1,7.5-9.9,18.2-19.2,18.2-19.2,0,0-29.5,18.2-38.3,25.2-13.4,10.6-25.3,27.6-28.2,33.3-33.1,36-32.2,73.6-38.9,105.9,0,0-16.6,27.4-43.3,31.2ZM253.1,799.2h0c8.9-19,17.7-38,26-57.2,10-23.2,25.9-39.2,49.2-49.4,45.3-19.8,90.6-39.4,136.9-56.8,5.7-2.1,11.6-3.8,17.6-4.8,6.5-1,12.5.7,14.7,7.9,1.9,6.6-2.4,10.6-7.3,13.6-3.5,2.1-7.4,3.5-11.1,5,0,0-24.7,10.7-37.1,16,0,0,0,0,0,0h0c-32.5,14.1-65,28.1-97.6,41.9-17.8,7.5-30.7,19.5-38.9,36.9-2.9,6.2-5.7,12.5-8.6,18.8h0s0,0,0,0c-7.4,16.5-14.9,32.9-23.6,48.7-17.9,32.5-18.5,70.6-19.5,106.7-.2,5.7-.2,11.9,6.2,14.1,6.2,2.1,10.6-2,14.9-5.6,8-6.6,12-15.9,12.4-25.4,1.5-36.9,18.2-66.8,41.1-94.3,12.4-14.8,18.4-30.3,35-44.1,15-12.5,39.6-29.2,39.6-29.2,0,0,34.5-13.8,55.4-23.5,20.5-9.6,31.6-18.1,46.5-22.2,7-1.9,13.4-2.9,18.5,0,3,1.7,4.3,3.6,5.4,6.9,1.8,5.5-2.3,11.7-8,15.3-12.7,8.1-26,10.9-41.8,23.5-18.2,14.5-47.8,41.8-47.8,41.8,0,0-31.9,33.6-34.9,54.1-4.4,30.7-9.4,37.6-9.4,73.9s1.2,81.9,35.3,89.9c15.5,3.6,10-36,10-36l-6.2-55.8s1.2-42.6,13.8-65.5c7.3-13.4,16.7-19.5,25.4-26.8,4.4-3.6,33.9-25.9,55.6-42.4,24.3-18.4,44.8-20.6,73.1-27.9,32.4-8.3,57.9-10.3,84.5,9.5,12.6,9.4,25.7,15.3,25.7,31.1,0,23.9-25.2,46.1-39,60.3-17,17.6-35.1,38.7-44.4,59.1-13.3,29.3-13.1,55.9,6.6,63.7,8.8,3.5,13-3.3,16.6-9.1,33.5-54.1,73.1-66.3,108.7-99.3,25.9-24,29.5-51.4,47.7-87.4,17.8-35,3.7-74.4,22.9-111,2.9-5.5,3.8-11.4,4-17.6,1.6-56.4-22.9-99.8-66.5-133.8-8.3-6.5-16.4-7.7-26.9-4.5-37.5,11.2-75.3,21.8-113.2,31.9-100.3,26.7-201.2,51.6-303.5,69-33.2,5.7-62.8,14.6-88.5,36.3-12.9,10.9-25.8,22.1-39.7,31.6-11.5,7.7-30.3,20.4-25.3,31,12.4,26.3,74.8-20.5,82-33.9,10-18.6,26.3-27.8,45.4-33.3,40.1-11.7,80.2-23.1,120.4-34.5,9.8-2.8,19.7-5.2,29.6-7.9,0,0,0,0,0,0,3.4-.9,6.8-1.8,10.2-2.6,7.6-2,13.6.7,15.9,7.9,2.3,7-2.6,11.4-8.7,14.1-15.1,6.5-32,10-47.7,14.8h0s0,0,0,0c-36.6,11.2-73.2,22.4-109.9,33.3-15.6,4.7-26.9,13.5-34,28.3-24.9,52-47,104.8-60.7,161-1.5,6-3.1,12.6,4.8,15.4,7.7,2.7,12.8-3.3,15.6-9.2,3.5-7.4,6.5-15.1,9.6-23.4h0c1.7-4.5,3.5-9.2,5.5-14.1,3.8-8.2,7.6-16.4,11.4-24.6ZM855.4,645.7c.6,5.1.1,10.2-.5,15.4-.8,7.4-1.6,15,.9,23.1,8.6-2.8,17-5.7,25.4-8.6h0s0,0,0,0h0s0,0,0,0h0s0,0,0,0c20.4-6.9,40.4-13.7,60.8-19.6,13.1-3.7,17.8-11.3,19.6-23.4,4.1-28.3,5.5-56.6-.1-84.8-8.9-44.3-28.3-82.3-67.7-107.6-7.5-4.8-14.3-5.7-22.9-2.9-18.8,6.1-37.6,12.1-56.4,18h0c-5,1.6-10,3.2-15,4.8-9.3,3-18.6,6.1-28.1,8.7h0c-4.5,1.3-9.3,2.6-10.5,8.6,2.3,4.4,6.3,6.6,10.3,8.8,56.1,31,83.9,98.1,84.2,159.3Z"/>
<path class="st2" d="M253.2,799.1h0c-3.8,8.3-7.7,16.5-11.4,24.7-2,4.9-3.8,9.6-5.5,14.1h0c-3.2,8.3-6.2,16-9.6,23.4-2.8,5.9-7.9,11.9-15.6,9.2-7.9-2.8-6.3-9.4-4.8-15.4,13.7-56.1,35.8-109,60.7-161,7.1-14.8,18.3-23.6,34-28.3,36.7-10.9,73.3-22.1,109.9-33.3h0s0,0,0,0c15.7-4.8,32.6-8.3,47.7-14.8,6.1-2.6,11-7,8.7-14.1-2.3-7.2-8.3-9.9-15.9-7.9-3.4.9-6.8,1.8-10.2,2.6h0c-9.8,2.7-19.7,5.1-29.6,7.9-40.2,11.4-80.3,22.8-120.4,34.5-19.1,5.6-35.4,14.7-45.4,33.3-7.2,13.4-69.6,60.2-82,33.9-5-10.6,13.8-23.3,25.3-31,14-9.4,26.9-20.7,39.7-31.6,25.7-21.8,55.3-30.7,88.5-36.3,102.3-17.4,203.2-42.3,303.5-69,37.9-10.1,75.6-20.7,113.2-31.9,10.4-3.1,18.6-1.9,26.9,4.5,43.7,34,68.1,77.4,66.5,133.8-.2,6.2-1.1,12.1-4,17.6-19.1,36.6-5.1,76-22.9,111-18.2,36-21.8,63.3-47.7,87.4-35.6,33-75.2,45.3-108.7,99.3-3.6,5.8-7.8,12.6-16.6,9.1-19.8-7.8-20-34.4-6.6-63.7,9.3-20.5,27.4-41.6,44.4-59.1,13.8-14.2,39-36.4,39-60.3s-13.1-21.7-25.7-31.1c-26.6-19.8-52.1-17.8-84.5-9.5-28.3,7.3-48.8,9.5-73.1,27.9-21.7,16.5-51.3,38.7-55.6,42.4-8.7,7.2-18.1,13.4-25.4,26.8-12.5,23-13.8,65.5-13.8,65.5l6.2,55.8s5.5,39.6-10,36c-34.1-8-35.3-79.9-35.3-89.9,0-36.3,5.1-43.2,9.4-73.9,2.9-20.6,34.9-54.1,34.9-54.1,0,0,29.5-27.3,47.8-41.8,15.8-12.6,29.1-15.4,41.8-23.5,5.7-3.6,9.8-9.8,8-15.3-1.1-3.2-2.4-5.2-5.4-6.9-5.1-2.9-11.5-1.9-18.5,0-14.8,4.1-25.9,12.6-46.5,22.2-20.9,9.7-55.4,23.5-55.4,23.5,0,0-24.7,16.7-39.6,29.2-16.6,13.8-22.7,29.3-35,44.1-22.9,27.5-39.6,57.4-41.1,94.3-.4,9.5-4.4,18.9-12.4,25.4-4.3,3.5-8.7,7.7-14.9,5.6-6.4-2.2-6.4-8.5-6.2-14.1,1-36.1,1.6-74.2,19.5-106.7,8.7-15.8,16.1-32.2,23.6-48.7h0s0,0,0,0c2.8-6.3,5.7-12.5,8.6-18.8,8.1-17.4,21.1-29.4,38.9-36.9,32.6-13.8,65.1-27.9,97.6-41.9h0s0,0,0,0c12.4-5.4,37.1-16,37.1-16,3.7-1.6,7.6-2.9,11.1-5,4.9-3,9.3-7.1,7.3-13.6-2.1-7.2-8.2-8.9-14.7-7.9-6,1-11.9,2.7-17.6,4.8-46.2,17.4-91.6,37-136.9,56.8-23.3,10.2-39.2,26.1-49.2,49.4-8.3,19.2-17.1,38.2-26,57.2Z"/>
<path class="st1" d="M855,661.1c.6-5.2,1.1-10.4.5-15.4-.3-61.3-28.1-128.3-84.2-159.3-4-2.2-8-4.4-10.3-8.8,1.3-6,6.1-7.4,10.5-8.6h0c9.4-2.7,18.7-5.7,28.1-8.7,5-1.6,10-3.3,15-4.8h0c18.8-5.9,37.7-11.8,56.4-18,8.5-2.8,15.4-1.9,22.9,2.9,39.5,25.4,58.9,63.3,67.7,107.6,5.6,28.2,4.2,56.5.1,84.8-1.7,12.1-6.5,19.6-19.6,23.4-20.3,5.8-40.4,12.6-60.8,19.6h0s0,0,0,0h0s0,0,0,0h0s0,0,0,0c-8.4,2.9-16.9,5.7-25.4,8.6-2.5-8.1-1.7-15.7-.9-23.1ZM907.2,620.3c7.2,8.4,16.2,6.8,25.8.8,12.2-14.6,12.7-26.4,2.6-33.7-9.2-6.6-22.7-3.3-29,7.3-5.1,8.5-6,17.8.7,25.6Z"/>
<path class="st2" d="M577.7,475.9s0-236.6.1-349.5c0-1.4,0-2.7-.2-4.1-.4-5.6-.7-11.5,4.4-17.6,4.4,1.6,8.8,3.2,13.3,4.8h0c9.6,3.5,19.4,7,29.1,10.6,40.1,14.7,80.3,29.5,120.4,44.2h.2c150,55.2,300,110.3,450.1,165.1,12.3,4.5,17.7,10.5,17.7,24.1-.2,133.7-.3,267.5-.3,401.2v.3c0,65.1,0,130.2,0,195.3,0,1.1,0,2.3.1,3.4.3,5.4.6,11-5.2,15.7-1.2-.4-2.4-.8-3.7-1.2-2.8-.9-5.8-1.8-8.7-2.9-121.5-45.9-364.4-137.7-364.4-137.7,0,0-6.5-2.6-17.3-6.9-2.5,8.4-5.2,16.7-9.5,24.6,134.8,50.6,269.9,99.6,409.4,146.5,9.4,3.2,22.7-.9,22.7-16.9,0-144,0-287.9,0-431.9,0-63.1,0-126.2,0-189.3s-4-35.7-33.6-46.7c-98.2-36.3-196.1-73.2-294-110h0c-115.5-43.5-231.1-87-347-129.6,0,153.6-.7,307.1-3.1,460.5l19.5-5.2c0-27.6.1-46.9.1-46.9Z"/>
<path class="st2" d="M603.3,768.9c23.6,9.1,47.1,18.2,70.6,27.2.7-2,1.2-4.1,1.5-6,1.8-14.2-19.8-15.8-31.4-18.9-15.1-4.1-28.2-4.6-40.7-2.3Z"/>
<path class="st1" d="M286.4,953.6c6.9,2.8,11.8,6.8,3.3,14.9-16.6,13.5-32.9,12.7-50,3.4-5.8-3.1-12-5.4-18.3-7.6-9.3-3.4-18.6-6.7-26.6-13,11.1-15.1,22.2-20.8,36.1-18.4h0c-.1-3.2-.8-7-1.5-10.8-.3-1.8-.7-3.6-1-5.4-4.5-2-9.1-3.7-13.8-5.4-9.3-3.4-18.6-6.7-26.6-13,1.5-2.1,3.1-4,4.6-5.7-5.2-3.4-9.1-8.1-11.4-14-52.1,37.1-131.2,94.2-150.7,112.5-11.4,10.8,17.2,26.1,26.7,29.9,53.5,21.3,106.9,42.5,160.4,63.7,152.9,60.7,305.8,121.4,458.5,182.6,33.8,13.5,63.8,12.7,95.4-7.4,36.4-23,73.8-44.6,111.1-66.2h0c16-9.3,32-18.5,48-27.9,3.5-2.1,7-4.2,10.3-6.5,9.5-6.6,8.1-11.9-2.2-16-16.6-6.5-33.2-13-49.8-19.5-118.1-46.1-354.4-138.4-354.4-138.4,0,0-33.7-13.2-78.1-30.7.3,6.2.2,12.6-.7,19.5,4.9-2,10.3-2.1,17.3.7,15.1,5.9,20.8,10.4,20.8,10.4,0,0,11,3.6,2.4,11.8-16.6,13.5-19.9,16-33.6,10.5-3.1-1.2-7-2.7-11-4.2h0c-1-.4-2.1-.8-3.1-1.1-1.7,4.1-3.7,8.1-6,11.6,5,2,10,3.9,15,6,7,2.8,12.1,6.8,3.5,14.9-16.6,13.5-32.9,12.7-50,3.4-5.8-3.1-12-5.4-18.3-7.6-9.3-3.4-18.6-6.7-26.6-13,6.2-8.5,12.5-14.1,19.3-16.8-4.1-6.3-7.7-13.5-11-21.1-.9-2.2-1.7-4.3-2.5-6.3-4.3-1.9-8.8-3.6-13.3-5.2-9.3-3.4-18.6-6.7-26.6-13,10.2-14,20.5-19.9,32.9-18.8-.4-5.6-.8-11.5-1.3-18-18.6-7.3-36.6-14.4-52.7-20.8-1,5.5-1.9,11-2.7,16.4,1.8.3,3.7.9,5.8,1.7,15.1,5.9,20.8,10.4,20.8,10.4,0,0,11,3.6,2.4,11.8-16.6,13.5-19.9,16-33.6,10.5-2.4-1-5.3-2-8.3-3.2-2.6,2.8-5.8,5.7-9.4,8.4ZM166.7,941.8c13.7,5.5,17,3,33.6-10.5,8.6-8.2-2.4-11.8-2.4-11.8,0,0-5.7-4.4-20.8-10.4-18.8-7.4-26.4,6.1-41.4,19.5-1.9,1.7,19.6,8.7,31,13.3ZM192.1,1056.3c54.9,22,108.9,43.5,163.9,65.6,20,7.9,38.9,15.5,57.9,22.9,19.2,7.5,34.8,2.4,48-15.5-1.9-5.5-7-6.9-11.7-8.7-69.6-27.4-139.2-54.9-208.9-82.2-20.1-7.9-32.2-3.8-49.2,18ZM808.1,1158.6c-11.2-5.3-21.5-5-32.2,3.8-7.9,5.8-15.3,10.5-21.8,16.1-6.5,5.6-12.8,6.4-20.9,3.5-19.6-7-30.5-3.1-45.8,14.5.5,3.4,3.2,5.2,6,6.3,24.5,9.9,49,19.9,73.6,29.5,5.5,2.1,11,.7,16.1-2.3,23.2-13.7,46.5-27.3,69.7-41,2.6-1.6,4.8-3.8,4.2-9-14.3-10.1-32.5-13.7-48.9-21.4ZM893.2,1141.4c-32.7-12.9-65.4-25.7-99.2-39-17.3-6.6-33.4-12.9-49.6-18.9-18.3-6.8-33.4-1.6-45.1,15.6,2.8,5.4,8.4,7,13.5,9,50.2,19.8,100.6,39.1,150.6,59.5,12.1,4.9,21.6,2.7,31.2-4.1,4.7-3.4,12.5-5.2,11.5-12.7-.8-6.3-7.7-7.5-12.8-9.5ZM453.2,1158.6c26.3,13.6,54.3,22.7,82.3,34.6,20.5,8.1,40,15.5,59.1,23.9,12.9,5.6,24.5,5.4,35.6-3.5,4.2-3.4,11.5-4.6,11.3-11.2-.2-7.3-7.4-9-12.9-11.2-42.6-16.8-85.1-33.8-127.8-50.2-18.9-7.3-34.7-1.5-47.6,17.6ZM202.4,1025c-14.8-10.4-32.4-14-49.1-22-23.3-9.1-45.9-17.2-67.7-26.8-12.9-5.7-23.4-4.3-33.7,4.5-4,3.4-11.3,4.9-9.9,11.9,1.1,5.5,6.9,6.9,11.7,8.7,33.1,13.1,66.1,26.3,99.1,39.4,21.4,8.5,32.3,5.3,49.5-15.8ZM230.2,983.2c-13.2-5.3-26.4-10.6-40.6-16.4-20.4-8.1-40-15.2-59.1-23.4-11.7-5-21.6-3.9-30.8,4.4-3.9,3.5-11.4,4.8-10.1,11.8,1.2,6.3,8,7.4,12.9,9.4,29.1,11.9,58.9,22.3,87.4,35.5,16.7,7.7,29,3.3,41.9-6.3,7.9-5.9,8.7-11-1.5-15ZM752.1,1242.9c-6.4-7.2-16.3-7.7-25.4-12.2-15.8-6.2-30.4-12.1-45.2-17.5-18.2-6.6-32.6-1.5-46.1,16.1,1.2,1.3,2.2,3.4,3.8,4.1,25,10,49.8,20.6,75.2,29.3,11.7,4.1,30.4-7.1,37.6-19.8ZM612.9,1069.3c12.2,5,24.5,9.6,37.9,14.9,16.5,8.8,31.5,11.1,46-1.5,3.3-2.9,8.8-3.8,8.2-9.7-.5-5.5-5.4-7.2-9.4-8.8-13.6-5.6-27.8-9.8-40.9-16.3-15.4-7.7-29-7-42.3,3.7-3.4,2.7-9.1,3.7-8.9,9.2.2,5.5,5.4,6.9,9.5,8.6ZM505.2,1126.6c16.6,11.1,36,15.6,54.9,23.7,20.1,7,35,1.8,46-15.8-2.8-5.3-8.3-7-13.4-9-13.2-5.2-26.5-10.1-39.8-15.1-20-7.7-33.3-3.5-47.7,16.2ZM493.2,1018.4c16.6,11.1,36,15.5,54.9,23.7,20.1,7,35,1.8,46-15.8-2.8-5.3-8.3-7-13.4-9-13.2-5.2-26.5-10.1-39.8-15.1-20-7.7-33.3-3.5-47.7,16.2ZM326.3,1006.9c17.2,9.3,33.4,10.1,50-3.4,8.6-8.2,3.5-12.1-3.5-14.9-15-6.1-30.2-11.8-45.3-17.7-18.8-7.4-32.5-3.2-46.1,15.5,13.3,10.5,30.5,12.9,44.8,20.6ZM367.7,1073.8c17.2,9.3,33.4,10.1,50-3.4,8.6-8.2,3.5-12.1-3.5-15-15-6.1-30.2-11.8-45.3-17.7-18.8-7.4-32.5-3.2-46.1,15.5,13.3,10.5,30.5,12.9,44.8,20.7ZM654.5,1102.6c-2-4.8-6.8-5.8-11.8-8.2-15.3-5.8-29.5-11.5-43.8-16.6-17.5-6.2-30.3-1.3-42.6,15.3,1.9,6.3,7.6,7.5,12.8,9.5,13.7,5.4,27.5,10.7,41.2,16,18.7,7.2,33.5,1.8,44.3-16.1ZM554.3,1062c-2-4.8-6.8-5.8-11.9-8.2-15.3-5.8-29.5-11.5-43.8-16.6-17.5-6.2-30.3-1.3-42.6,15.3,1.9,6.3,7.6,7.5,12.8,9.5,13.7,5.4,27.5,10.7,41.2,16,18.7,7.2,33.5,1.8,44.3-16.1ZM456.8,1109.7c19.7,11,36.7,7.6,53.6-7.3,2.2-9.5-4.8-10.9-10.1-13.2-11.7-4.9-23.6-9.4-35.4-13.9-22.6-8.6-32.7-6.1-51.6,13.8,13,10.4,29.7,12.9,43.5,20.6ZM651.4,1186.7c9.7,4.3,18.6,4.2,28.2-2.9,5.9-5.1,16.4-5.8,14.9-14.6-1.2-7.2-10.2-7.3-16.1-9.7-11.3-4.6-22.6-9.2-34-13.5-18.8-7.1-32.5-2.4-45.7,15.6,2.2,5,7.1,6.6,11.7,8.5,13.7,5.5,27.5,10.7,41,16.6ZM332,1024.8c-18.3-11.3-39-16.5-59.3-25.3-19.2-6.7-28.4,6.6-41.9,15.8,16.6,14.2,35.6,17.5,52.4,25,19.8,8.8,34.4,4.1,48.8-15.5Z"/>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 MiB

16
.agent/vendor/mini-swe/codecov.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
# Configuration for codecov
coverage:
status:
project:
default:
# If we get < 50% coverage, codecov is gonna mark it a failure
target: 50%
threshold: null
patch:
default:
# Codecov won't mark it as a failure if a patch is not covered well
informational: true
github_checks:
# Don't mark lines that aren't covered
annotations: false

15
.agent/vendor/mini-swe/config/README.md vendored Normal file
View File

@@ -0,0 +1,15 @@
* Default config: `anthropic_filemap.yaml`
* `swebench_submissions`: Configs that were used for swebench submissions
* `sweagent_0_7`: Configs from SWE-agent 0.7, similar to the one used in the paper
* `exotic`: Various specific configurations that might be more of niche interest
* `human`: Demo/debug configs that have the human type commands and run without a LM
* `demo`: Configs for demonstrations/talks
* Configs for running with SWE-smith are at https://github.com/SWE-bench/SWE-smith/blob/main/agent/swesmith_infer.yaml
🔗 Tutorial on [adding custom tools](https://swe-agent.com/latest/usage/adding_custom_tools/)
🔗 For more information on config files, visit [our documentation website][docs].
You can also find the corresponding markdown files in the [`docs/` folder][source].
[docs]: https://swe-agent.com/latest/config/config
[source]: https://github.com/SWE-agent/SWE-agent/tree/main/docs

View File

@@ -0,0 +1,222 @@
# This config is a super basic, stripped down config that should be compatible with any instruction following LM
agent:
type: default
templates:
system_template: |-
You are a helpful assistant that can interact multiple times with a computer shell to solve programming tasks.
You operate in a REPL (Read-Eval-Print Loop) environment where you must issue exactly ONE command at a time.
Your response must contain exactly ONE bash code block with ONE command (or commands connected with && or ||).
Include a THOUGHT section before your command where you explain your reasoning process.
Format your response as:
THOUGHT: Your reasoning and analysis here
```bash
your_command_here
```
Failure to follow these rules will cause your response to be rejected.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
<pr_description>
I've uploaded a python code repository in the directory {{working_dir}}.
Consider the following PR description:
{{problem_statement}}
</pr_description>
<instructions>
# Task Instructions
## Overview
You're a software engineer interacting continuously with a computer shell in a REPL (Read-Eval-Print Loop) environment.
You'll be helping implement necessary changes to meet requirements in the PR description.
Your task is specifically to make changes to non-test files in the {{working_dir}} directory in order to fix the issue described in the PR description in a way that is general and consistent with the codebase.
IMPORTANT: This is an interactive process where you will think and issue ONE command, see its result, then think and issue your next command.
For each response:
1. Include a THOUGHT section explaining your reasoning and what you're trying to accomplish
2. Provide exactly ONE bash command to execute
## Important Boundaries
- MODIFY: Regular source code files in {{working_dir}}
- DO NOT MODIFY: Tests, configuration files (pyproject.toml, setup.cfg, etc.)
## Recommended Workflow
1. Analyze the codebase by finding and reading relevant files
2. Create a script to reproduce the issue
3. Edit the source code to resolve the issue
4. Verify your fix works by running your script again
5. Test edge cases to ensure your fix is robust
## Command Execution Rules
You are operating in a REPL (Read-Eval-Print Loop) environment where:
1. You write a single command
2. The system executes that command
3. You see the result
4. You write your next command
Each response should include:
1. A **THOUGHT** section where you explain your reasoning and plan
2. A single bash code block with your command
Format your responses like this:
```
THOUGHT: Here I explain my reasoning process, analysis of the current situation,
and what I'm trying to accomplish with the command below.
```bash
your_command_here
```
```
Commands must be specified in a single bash code block:
```bash
your_command_here
```
**CRITICAL REQUIREMENTS:**
- Your response SHOULD include a THOUGHT section explaining your reasoning
- Your response MUST include EXACTLY ONE bash code block
- This bash block MUST contain EXACTLY ONE command (or a set of commands connected with && or ||)
- If you include zero or multiple bash blocks, or no command at all, YOUR RESPONSE WILL FAIL
- Do NOT try to run multiple independent commands in separate blocks in one response
Example of a CORRECT response:
<example_response>
THOUGHT: I need to understand the structure of the repository first. Let me check what files are in the current directory to get a better understanding of the codebase.
```bash
ls -la
```
</example_response>
Example of an INCORRECT response:
<example_response>
THOUGHT: I need to examine the codebase and then look at a specific file. I'll run multiple commands to do this.
```bash
ls -la
```
Now I'll read the file:
```bash
cat file.txt
```
</example_response>
If you need to run multiple commands, either:
1. Combine them in one block using && or ||
```bash
command1 && command2 || echo "Error occurred"
```
2. Wait for the first command to complete, see its output, then issue the next command in your following response.
## Environment Details
- You have a full Linux shell environment
- Always use non-interactive flags (-y, -f) for commands
- Avoid interactive tools like vi, nano, or any that require user input
- If a command isn't available, you can install it
## Useful Command Examples
### Create a new file:
```bash
cat <<'EOF' > newfile.py
import numpy as np
hello = "world"
print(hello)
EOF
```
### Edit files with sed:
```bash
# Replace all occurrences
sed -i 's/old_string/new_string/g' filename.py
# Replace only first occurrence
sed -i 's/old_string/new_string/' filename.py
# Replace first occurrence on line 1
sed -i '1s/old_string/new_string/' filename.py
# Replace all occurrences in lines 1-10
sed -i '1,10s/old_string/new_string/g' filename.py
```
### View file content:
```bash
# View specific lines with numbers
nl -ba filename.py | sed -n '10,20p'
```
### Any other command you want to run
```bash
anything
```
## Submission
When you've completed your changes or can't make further progress:
```bash
submit
```
We'll automatically save your work and have maintainers evaluate it.
</instructions>
next_step_template: |-
<observation>
{{observation}}
</observation>
next_step_no_output_template: |-
<warning>
Your last command ran successfully and did not produce any output.
</warning>
max_observation_length: 10_000
next_step_truncated_observation_template: |-
<warning>
The output of your last command was too long.
Please try a different command that produces less output.
If you're looking at a file you can try use head, tail or sed to view a smaller number of lines selectively.
If you're using grep or find and it produced too much output, you can use a more selective search pattern.
If you really need to see something from the full command's output, you can redirect output to a file and then search in that file.
</warning>
<observation_head>
{{observation[ : max_observation_length // 2]}}
</observation_head>
<elided_chars>
{{elided_chars}} characters elided
</elided_chars>
<observation_tail>
{{observation[- max_observation_length // 2:]}}
</observation_tail>
command_cancelled_timeout_template: |-
<warning>
The command '{{command}}' was cancelled because it took more than {{timeout}} seconds to complete.
It may have been waiting for user input or otherwise blocked.
Please try a different command.
</warning>
tools:
execution_timeout: 60
bundles:
- path: tools/submit
parse_function:
type: single_bash_code_block
model:
per_instance_cost_limit: 3
per_instance_call_limit: 250
total_cost_limit: 1500.0
temperature: 0.0
delay: 0.0
retry:
retries: 6
max_wait: 30

View File

@@ -0,0 +1,188 @@
# Used for our SWE-Bench lite benchmark submission from 12 Feb 2025
# Used together with swe-agent as
# sweagent run-batch --num_workers=12 --instances.type=swe_bench --instances.subset=lite --instances.split=test
# --instances.shuffle=True --instances.evaluate=True --instances.deployment.docker_args=--memory=10g --config config/retry_heavy_v3.yaml
# This template is heavily inspired by anthropic's computer use demo
agent:
type: retry
agent_configs:
# +filemap
- type: default
model: &model
name: claude-3-7-sonnet-latest
api_key: $CLAUDE_API_KEY_ROTATION
per_instance_cost_limit: 1.5
per_instance_call_limit: 75
total_cost_limit: 1000.0
temperature: 0.0
delay: 1.0
templates:
system_template: &system_template |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: &instance_template |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: &next_step_no_diff |-
OBSERVATION:
{{observation}}
next_step_no_output_template: &next_step_no_output_no_diff |-
Your last command ran successfully and did not produce any output.
tools:
execution_timeout: &execution_timeout 300
bundles: &vanilla_bundles
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
- path: tools/diff_state
enable_bash_tool: true
parse_function: &parse_function
type: function_calling
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES: &submit_review_messages
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
history_processors: &vanilla_history_processors
- type: cache_control
last_n_messages: 2
# vanilla anthropic
- type: default
model: *model
templates:
system_template: *system_template
instance_template: *instance_template
next_step_template: *next_step_no_diff
next_step_no_output_template: *next_step_no_output_no_diff
tools:
execution_timeout: *execution_timeout
bundles: *vanilla_bundles
enable_bash_tool: true
parse_function: *parse_function
registry_variables:
SUBMIT_REVIEW_MESSAGES: *submit_review_messages
history_processors: *vanilla_history_processors
# + state
- type: default
model: *model
templates:
system_template: *system_template
instance_template: *instance_template
next_step_template: &next_step_with_diff |-
{% if diff %}
<diff>
Your cumulative changes so far:
{{diff}}
</diff>
{% endif %}
The observation from the last command:
{{observation}}
next_step_no_output_template: &next_step_no_output_with_diff |-
{% if diff %}
<diff>
Your cumulative changes so far:
{{diff}}
</diff>
{% endif %}
Your last command ran successfully and did not produce any output.
tools:
execution_timeout: *execution_timeout
bundles: *vanilla_bundles
enable_bash_tool: true
parse_function: *parse_function
registry_variables:
SUBMIT_REVIEW_MESSAGES: *submit_review_messages
history_processors: &diff_history_processors
- type: remove_regex
keep_last: 2
remove:
- "<diff>.*</diff>"
- type: cache_control
last_n_messages: 2
last_n_messages_offset: 2
retry_loop:
type: chooser
cost_limit: 6.0
max_attempts: 10
min_budget_for_new_attempt: 1.0
chooser:
system_template: |
You are an expert software engineer reviewing code. Your thinking is very thorough, so it is ok if its very long.
instance_template: |
You will be given a problem statement and a list of patch submissions.
Pick the most reasonable patch.
The patch should solve the problem described in the problem statement in a way that is consistent with the rest of the codebase and the conventions of the codebase.
Note: Disregard all testing code in the patch, as testing was already done in a separate step.
Having a test in the patch does not make it any better.
<IMPORTANT>The last line of your response should be the index of the patch you chose.
You must choose a single index no matter what. If you cannot decide between two or more
submissions, choose the first one of these.
</IMPORTANT>
Problem statement:
{{problem_statement}}
Submissions:
{% for submission in submissions %}
Submission {{loop.index0}}:
{{submission}}
{% endfor %}
<IMPORTANT>The last line of your response should be the index of the patch you chose without any other text.</IMPORTANT>
submission_template: |
Patch:
```python
{{submission}}
```
The final edited file with 30 lines of context:
```python
{{edited_files30}}
```
max_len_submission: &chooser_max_len_submission 5000
model: &chooser_model
name: o1
top_p: null
temperature: 1.
per_instance_cost_limit: 30
completion_kwargs:
reasoning_effort: "high"

View File

@@ -0,0 +1,75 @@
# This template is heavily inspired by anthropic and openhands
# For running on lite:
# sweagent run-batch --num_workers=20 --instances.type=swe_bench --instances.subset=lite --instances.split=test --instances.shuffle=True --instances.evaluate=True --instances.deployment.docker_args='--memory=10g' --config config/250225_anthropic_filemap_simple_review.yaml
# For running on test:
agent:
type: default
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your last command ran successfully and did not produce any output.
tools:
execution_timeout: 300
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
- path: tools/diff_state
enable_bash_tool: true
parse_function:
type: function_calling
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-3-7-sonnet-20250219
api_key: $CLAUDE_API_KEY_ROTATION
per_instance_cost_limit: 2
per_instance_call_limit: 150
total_cost_limit: 1000.0
temperature: 0.0
delay: 0.0

View File

@@ -0,0 +1,92 @@
# This template only features minor adaptions from the 250225 config.
# For running on lite:
# sweagent run-batch --config config/benchmarks/250522_anthropic_filemap_simple_review.yaml --num_workers=20
# To fully reproduce, please run from the submissions/250522-sonnet-4-sbv branch
# For running on test:
random_delay_multiplier: 1.0
instances:
type: swe_bench
subset: verified
split: test
shuffle: true
evaluate: true
deployment:
type: docker
docker_args:
- '--memory=10g'
agent:
type: default
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your last command ran successfully and did not produce any output.
tools:
execution_timeout: 300
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
- path: tools/diff_state
enable_bash_tool: true
parse_function:
type: function_calling
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514
api_key: $CLAUDE_API_KEY_ROTATION
per_instance_cost_limit: 3
per_instance_call_limit: 150
total_cost_limit: 1000.0
temperature: 0.0
delay: 0.0

View File

@@ -0,0 +1,93 @@
# Identical to the 250522 config except for a $5 limit/instance
# For running on lite:
# sweagent run-batch --config config/benchmarks/250526_anthropic_filemap_simple_review_sbl.yaml --num_workers=20
# To fully reproduce, please run from the submissions/250526-sonnet-4-sbl branch
# For running on test:
random_delay_multiplier: 1.0
instances:
type: swe_bench
subset: lite
split: test
shuffle: true
evaluate: true
deployment:
type: docker
docker_args:
- '--memory=10g'
agent:
type: default
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your last command ran successfully and did not produce any output.
tools:
execution_timeout: 300
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
- path: tools/diff_state
enable_bash_tool: true
parse_function:
type: function_calling
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514
api_key: $CLAUDE_API_KEY_ROTATION
per_instance_cost_limit: 5
per_instance_call_limit: 0
total_cost_limit: 1000.0
temperature: 0.0
delay: 0.0
completion_kwargs: {'extra_headers': {'anthropic-beta': 'output-128k-2025-02-19'}}

View File

@@ -0,0 +1,66 @@
# This template is heavily inspired by anthropic, but you can use it with any LM. It is almost
# identical to anthropic_filemap.yaml, but it removes python-specific language
# and adds the multilingual_setup tool to support evaluation on the Multilingual dataset.
agent:
type: default
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
execution_timeout: 300
bundles:
- path: tools/multilingual_setup
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
- path: tools/diff_state
enable_bash_tool: true
parse_function:
type: function_calling
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
history_processors:
- type: cache_control
last_n_messages: 2

View File

@@ -0,0 +1,104 @@
# This is the template you should use when using SWE-agent to solve a coding challenge (i.e. LeetCode).
# It also shows how to repurpose the agent to do tasks different from software engineering.
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use the following commands to help you navigate and edit files.
COMMANDS:
{{command_docs}}
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>) <cwd> $
You need to format your output using two fields; discussion and command.
Your output should always include _one_ discussion and _one_ command field EXACTLY as in the following example:
DISCUSSION
First I'll start by using ls to see what files are in the current directory. Then maybe we can look at some relevant files to see what they look like.
```
ls -a
```
You should only include a *SINGLE* command in the command section and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first command, and then after receiving a response you'll be able to issue the second command.
You're free to use any other bash commands you want (e.g. find, grep, cat, ls, cd) in addition to the special commands listed above.
However, the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently attempting to solve the following problem:
ISSUE:
{{issue}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU CAN ONLY ENTER ONE COMMAND AT A TIME. You should always wait for feedback after every command.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with `python <script_name>.py`.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Write your solution in main.py. Always test your code thoroughly before submitting, and if any of the tests fail, try to fix the code before continuing.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
5. When editing files, it is easy to accidentally specify a wrong line number or to write code with incorrect indentation. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstration_template: |
Here is a demonstration of how to correctly accomplish this task.
It is included to show you how to correctly use the interface.
You do not need to follow exactly what is done in the demonstration.
--- DEMONSTRATION ---
{{demonstration}}
--- END OF DEMONSTRATION ---
demonstrations:
- trajectories/demonstrations/human_thought__swe-bench-HumanEvalFix-python__lcb__t-0.00__p-0.95__c-4.00__install-0/humanevalfix-python-0.traj
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
CURRENT_LINE: 0
CURRENT_FILE: ""
SEARCH_RESULTS: ()
SEARCH_FILES: ()
SEARCH_INDEX: 0
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_replace
- path: tools/submit
parse_function:
type: thought_action
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,69 @@
# Formerly called: anthropic_filemap.yaml
# This template is heavily inspired by anthropic's computer use demo, but you can use
# it with any LM.
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2

View File

@@ -0,0 +1,69 @@
# Formerly called: anthropic_filemap.yaml
# This template is heavily inspired by anthropic's computer use demo, but you can use
# it with any LM.
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: thought_action
history_processors:
- type: cache_control
last_n_messages: 2

View File

@@ -0,0 +1,82 @@
# Configuration for SWE-agent with image viewing capabilities
# This extends the default config with image parsing history processor
# and the image_tools bundle for viewing images as base64-encoded markdown.
agent:
templates:
# disable_image_processing: false
disable_image_processing: true
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
Note: You can use the view_image command to display images as embedded base64 data when relevant.
If you need to start a command that has long-running output (e.g. a web server), you should _always_ use the following pattern:
server_command &> my_server_log.txt &
This way you can see the server's output in the my_server_log.txt file and it will not block the rest of your work.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
max_observation_length: 10_000_000 # need longer for images
tools:
execution_timeout: 300 # need longer for builds
bundles:
- path: tools/registry
- path: tools/edit_anthropic
# - path: tools/image_tools # lets models view image files
# - path: tools/web_browser # browser tool for interacting with web servers
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: function_calling
# history_processors:
# - type: image_parsing # parses base64 encoded images in the observation
# - type: cache_control # enable for claude
# last_n_messages: 2 # enable for claude
instances:
type: swe_bench
subset: multimodal
split: dev
shuffle: true
# filter: processing__p5.js-6069

View File

@@ -0,0 +1,83 @@
# Configuration for SWE-agent with image viewing capabilities
# This extends the default config with image parsing history processor
# and the image_tools bundle for viewing images as base64-encoded markdown.
agent:
templates:
disable_image_processing: false
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
Note: You can use the view_image command to display images as embedded base64 data when relevant.
You'll also be given access browser tools to interact with the web or a local server.
In the browser, your mouse is shown as a red crosshair.
If you need to start a command that has long-running output (e.g. a web server), you should _always_ use the following pattern:
server_command &> my_server_log.txt &
This way you can see the server's output in the my_server_log.txt file and it will not block the rest of your work.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
max_observation_length: 10_000_000 # need longer for images
tools:
execution_timeout: 300 # need longer for builds
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/image_tools # lets models view image files
- path: tools/web_browser # browser tool for interacting with web servers
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: image_parsing # parses base64 encoded images in the observation
# - type: cache_control # enable for claude
# last_n_messages: 2 # enable for claude
instances:
type: swe_bench
subset: multimodal
split: dev
shuffle: true
# filter: processing__p5.js-6069

View File

@@ -0,0 +1,80 @@
# Formerly called: anthropic_filemap.yaml
# This template is heavily inspired by anthropic's computer use demo, but you can use
# it with any LM.
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514
env:
repo:
github_url: https://github.com/SWE-agent/test-repo
deployment:
image: tiny
python_standalone_dir: ""
problem_statement:
github_url:
https://github.com/SWE-agent/test-repo/issues/1

View File

@@ -0,0 +1,69 @@
# Formerly called: anthropic_filemap.yaml
# This template is heavily inspired by anthropic's computer use demo, but you can use
# it with any LM.
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
SUBMIT_REVIEW_MESSAGES:
- |
Thank you for your work on this issue. Please carefully follow the steps below to help review your changes.
1. If you made any changes to your code after running the reproduction script, please run the reproduction script again.
If the reproduction script is failing, please revisit your changes and make sure they are correct.
If you have already removed your reproduction script, please ignore this step.
2. Remove your reproduction script (if you haven't done so already).
3. If you have modified any TEST files, please revert them to the state they had before you started fixing the issue.
You can do this with `git checkout -- /path/to/test/file.py`. Use below <diff> to find the files you need to revert.
4. Run the submit command again to confirm.
Here is a list of all of your changes:
<diff>
{{diff}}
</diff>
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514
env:
repo:
github_url: https://github.com/SWE-agent/test-repo
deployment:
image: tiny
python_standalone_dir: ""
problem_statement:
github_url:
https://github.com/SWE-agent/test-repo/issues/1

View File

@@ -0,0 +1,60 @@
# Formerly called: anthropic_filemap.yaml
# This template is heavily inspired by anthropic's computer use demo, but you can use
# it with any LM.
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/submit
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514
env:
repo:
github_url: https://github.com/SWE-agent/test-repo
deployment:
image: tiny
python_standalone_dir: ""
problem_statement:
github_url:
https://github.com/SWE-agent/test-repo/issues/1

View File

@@ -0,0 +1,52 @@
# For use with sweagent sh
agent:
type: shell
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
instance_template: |-
<uploaded_files>
{{working_dir}}
</uploaded_files>
I've uploaded a python code repository in the directory {{working_dir}}. Consider the following PR description:
<pr_description>
{{problem_statement}}
</pr_description>
Can you help me implement the necessary changes to the repository so that the requirements specified in the <pr_description> are met?
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!
Your task is to make the minimal changes to non-tests files in the {{working_dir}} directory to ensure the <pr_description> is satisfied.
Follow these steps to resolve the issue:
1. As a first step, it might be a good idea to find and read code relevant to the <pr_description>
2. Create a script to reproduce the error and execute it with `python <filename.py>` using the bash tool, to confirm the error
3. Edit the sourcecode of the repo to resolve the issue
4. Rerun your reproduce script and confirm that the error is fixed!
5. Think about edgecases and make sure your fix handles them as well
Your thinking should be thorough and so it's fine if it's very long.
next_step_template: |-
OBSERVATION:
{{observation}}
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
registry_variables:
USE_FILEMAP: 'true'
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2
model:
name: claude-sonnet-4-20250514

View File

@@ -0,0 +1,125 @@
# This config uses the windowed-replace tools together with a prompt similar to
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use specific commands to help you navigate and edit files.
To call a command, you need to invoke it with a function call/tool call.
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
For example, if you are looking at this file:
def fct():
print("Hello world")
and you want to edit the file to read:
def fct():
print("Hello")
print("world")
you search string should be `Hello world` and your replace string should be `"Hello"\n print("world")`
(note the extra spaces before the print statement!).
You could also get the same result by search for ` print("Hello world")` and replace with ` print("Hello")\n print("world")`.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>)
(Current directory: <cwd>)
bash-$
First, you should _always_ include a general thought about what you're going to do next.
Then, for every response, you must include exactly _ONE_ tool call/function call.
Remember, you should always include a _SINGLE_ tool call/function call and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first tool call, and then after receiving a response you'll be able to issue the second .
Note that the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU SHOULD ALWAYS INCLUDE EXACTLY ONE TOOL CALL/FUNCTION CALL PER RESPONSE.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with the python command.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
GENERAL IMPORTANT TIPS:
1. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
2. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
3. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
4. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
5. When editing files, it is easy to accidentally to write code with incorrect indentation or make other mistakes. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
6. When editing files, first explain the code you want to edit and why it is causing the problem. Then explain the edit you want to make and how it fixes the problem. Explain how the edit does not break existing functionality.
7. Do not try to install any packages with `pip`, `conda`, or any other way. This will usually not work. If the environment is not set up correctly, try to fix the issue without executing python code or running any tests that require the package installed.
STRATEGY:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. Locate relevant code using the find and search commands. `open` the file you want to edit.
3. Use the `edit` command to perform edits.
4. When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
5. Create additional tests to verify the fix in a style similar to the existing reproduction script. In particular, make sure to test edge cases.
If you find any issues, go back to the file you edited and perform further edits.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace__install-1/marshmallow-code__marshmallow-1867.traj
put_demos_in_history: true
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_replace
- path: tools/submit
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,127 @@
# This config is similar to windowed_replace.yaml, but with a slightly tweaked prompt that encourages the model
# to write the reproduction script _after_ it has investigated the codebase.
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use specific commands to help you navigate and edit files.
To call a command, you need to invoke it with a function call/tool call.
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
For example, if you are looking at this file:
def fct():
print("Hello world")
and you want to edit the file to read:
def fct():
print("Hello")
print("world")
you search string should be `Hello world` and your replace string should be `"Hello"\n print("world")`
(note the extra spaces before the print statement!).
You could also get the same result by search for ` print("Hello world")` and replace with ` print("Hello")\n print("world")`.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>)
(Current directory: <cwd>)
bash-$
First, you should _always_ include a general thought about what you're going to do next.
Then, for every response, you must include exactly _ONE_ tool call/function call.
Remember, you should always include a _SINGLE_ tool call/function call and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first tool call, and then after receiving a response you'll be able to issue the second .
Note that the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU SHOULD ALWAYS INCLUDE EXACTLY ONE TOOL CALL/FUNCTION CALL PER RESPONSE.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with the python command.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
GENERAL IMPORTANT TIPS:
1. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
2. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
3. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
4. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
5. When editing files, it is easy to accidentally to write code with incorrect indentation or make other mistakes. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
6. When editing files, first explain the code you want to edit and why it is causing the problem. Then explain the edit you want to make and how it fixes the problem. Explain how the edit does not break existing functionality.
7. Do not try to install any packages with `pip`, `conda`, or any other way. This will usually not work. If the environment is not set up correctly, try to fix the issue without executing python code or running any tests that require the package installed.
STRATEGY:
1. Locate relevant files using the find and search commands, then read the code related to the issue.
2. Try to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
3. Use the `edit` command to perform edits on the files that cause the issue.
4. When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
5. Create additional tests to verify the fix in a style similar to the existing reproduction script. In particular, make sure to test edge cases.
If you find any issues, go back to the file you edited and perform further edits.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstrations:
- trajectories/demonstrations/function_calling_simple.traj
put_demos_in_history: true
tools:
submit_command: "submit -f"
env_variables:
WINDOW: 100
OVERLAP: 2
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_replace
- path: tools/submit
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,24 @@
env:
deployment:
image: python:3.11
agent:
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
parse_function:
type: thought_action
model:
name: human

View File

@@ -0,0 +1,52 @@
env:
deployment:
image: python:3.11
agent:
templates:
system_template: |-
Enter any commands you want to run.
There are a few special commands you can use to raise exceptions for testing:
`raise_runtime`, `raise_cost`, `raise_context`, `raise_function_calling:<error_code>`,
etc.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
parse_function:
type: thought_action
history_processors:
- type: last_n_observations
n: 5
model:
name: human_thought

View File

@@ -0,0 +1,101 @@
# This is the configuration from SWE-agent 0.7
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use the following commands to help you navigate and edit files.
COMMANDS:
{{command_docs}}
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>) <cwd> $
You need to format your output using two fields; discussion and command.
Your output should always include _one_ discussion and _one_ command field EXACTLY as in the following example:
DISCUSSION
First I'll start by using ls to see what files are in the current directory. Then maybe we can look at some relevant files to see what they look like.
```
ls -a
```
You should only include a *SINGLE* command in the command section and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first command, and then after receiving a response you'll be able to issue the second command.
You're free to use any other bash commands you want (e.g. find, grep, cat, ls, cd) in addition to the special commands listed above.
However, the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU CAN ONLY ENTER ONE COMMAND AT A TIME. You should always wait for feedback after every command.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with `python <script_name>.py`.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
5. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
6. When editing files, it is easy to accidentally specify a wrong line number or to write code with incorrect indentation. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstration_template: |
Here is a demonstration of how to correctly accomplish this task.
It is included to show you how to correctly use the interface.
You do not need to follow exactly what is done in the demonstration.
--- DEMONSTRATION ---
{{demonstration}}
--- END OF DEMONSTRATION ---
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
parse_function:
type: thought_action
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,100 @@
# This config shows the use of the function calling action parser together with the line-range based replace tools
# This config is close to SWE-agent 0.7
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use specific commands to help you navigate and edit files.
To call a command, you need to invoke it with a function call/tool call.
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>)
(Current directory: <cwd>)
bash-$
First, you should _always_ include a general thought about what you're going to do next.
Then, for every response, you must include exactly _ONE_ tool call/function call.
Remember, you should always include a _SINGLE_ tool call/function call and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first tool call, and then after receiving a response you'll be able to issue the second tool call.
Note that the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU SHOULD ALWAYS INCLUDE EXACTLY ONE TOOL CALL/FUNCTION CALL PER RESPONSE.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with the python <script_name>.py`.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
5. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
6. When editing files, it is easy to accidentally specify a wrong line number or to write code with incorrect indentation. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
7. Do not try to install any packages with `pip`, `conda`, or any other way. This will usually not work. If the environment is not set up correctly, try to fix the issue without executing python code or running any tests that require the package installed.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstration_template: |
Here is a demonstration of how to correctly accomplish this task.
It is included to show you how to correctly use the interface.
You do not need to follow exactly what is done in the demonstration.
--- DEMONSTRATION ---
{{demonstration}}
--- END OF DEMONSTRATION ---
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling__install-1/marshmallow-code__marshmallow-1867.traj
put_demos_in_history: true
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,114 @@
# This config is close to SWE-agent 0.7, i.e., using the line-range based replace edit tools.
# This config was specifically used to be pointed to an arbitrary github issue rather than for benchmarking.
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use specific commands to help you navigate and edit files.
To call a command, you need to invoke it with a function call/tool call.
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
For example, if you are looking at this file:
def fct():
print("Hello world")
and you want to edit the file to read:
def fct():
print("Hello")
print("world")
you search string should be `Hello world` and your replace string should be `"Hello"\n print("world")`
(note the extra spaces before the print statement!).
You could also get the same result by search for ` print("Hello world")` and replace with ` print("Hello")\n print("world")`.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>)
(Current directory: <cwd>)
bash-$
First, you should _always_ include a general thought about what you're going to do next.
Then, for every response, you must include exactly _ONE_ tool call/function call.
Remember, you should always include a _SINGLE_ tool call/function call and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first tool call, and then after receiving a response you'll be able to issue the second .
Note that the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU SHOULD ALWAYS INCLUDE EXACTLY ONE TOOL CALL/FUNCTION CALL PER RESPONSE.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with the python command.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
5. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
6. When editing files, it is easy to accidentally to write code with incorrect indentation or make other mistakes. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
7. It may be necessary to install the repository from source before you can run code. Please think about how to install the environment from the repository directory if you need to do so.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstration_template: |
Here is a demonstration of how to correctly accomplish this task.
It is included to show you how to correctly use the interface.
You do not need to follow exactly what is done in the demonstration.
--- DEMONSTRATION ---
{{demonstration}}
--- END OF DEMONSTRATION ---
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace_from_source/marshmallow-code__marshmallow-1867.traj
put_demos_in_history: true
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_replace
- path: tools/submit
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,102 @@
# This config shows the use of the thought_action action parser together with the line-range based replace tools
# This config is close to SWE-agent 0.7
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use the following commands to help you navigate and edit files.
COMMANDS:
{{command_docs}}
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>) <cwd> $
You need to format your output using two fields; discussion and command.
Your output should always include _one_ discussion and _one_ command field EXACTLY as in the following example:
DISCUSSION
First I'll start by using ls to see what files are in the current directory. Then maybe we can look at some relevant files to see what they look like.
```
ls -a
```
You should only include a *SINGLE* command in the command section and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first command, and then after receiving a response you'll be able to issue the second command.
You're free to use any other bash commands you want (e.g. find, grep, cat, ls, cd) in addition to the special commands listed above.
However, the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU CAN ONLY ENTER ONE COMMAND AT A TIME. You should always wait for feedback after every command.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with `python <script_name>.py`.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
5. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
6. When editing files, it is easy to accidentally specify a wrong line number or to write code with incorrect indentation. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstration_template: |
Here is a demonstration of how to correctly accomplish this task.
It is included to show you how to correctly use the interface.
You do not need to follow exactly what is done in the demonstration.
--- DEMONSTRATION ---
{{demonstration}}
--- END OF DEMONSTRATION ---
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
parse_function:
type: thought_action
history_processors:
- type: last_n_observations
n: 5

View File

@@ -0,0 +1,96 @@
# This config shows the use of the thought action xml parser together with the line-range based replace tools
# This config is close to SWE-agent 0.7
agent:
templates:
system_template: |-
SETTING: You are an autonomous programmer, and you're working directly in the command line with a special interface.
The special interface consists of a file editor that shows you {{WINDOW}} lines of a file at a time.
In addition to typical bash commands, you can also use the following commands to help you navigate and edit files.
COMMANDS:
{{command_docs}}
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.
RESPONSE FORMAT:
Your shell prompt is formatted as follows:
(Open file: <path>) <cwd> $
You need to format your output using two fields; discussion and command.
Your output should always include _one_ discussion and _one_ command field EXACTLY as in the following example:
DISCUSSION
First I'll start by using ls to see what files are in the current directory. Then maybe we can look at some relevant files to see what they look like.
<command>
ls -a
</command>
You should only include a *SINGLE* command in the command section and then wait for a response from the shell before continuing with more discussion and commands. Everything you include in the DISCUSSION section will be saved for future reference.
If you'd like to issue two commands at once, PLEASE DO NOT DO THAT! Please instead first submit just the first command, and then after receiving a response you'll be able to issue the second command.
You're free to use any other bash commands you want (e.g. find, grep, cat, ls, cd) in addition to the special commands listed above.
However, the environment does NOT support interactive session commands (e.g. python, vim), so please do not invoke them.
instance_template: |-
We're currently solving the following issue within our repository. Here's the issue text:
ISSUE:
{{problem_statement}}
INSTRUCTIONS:
Now, you're going to solve this issue on your own. Your terminal session has started and you're in the repository's root directory. You can use any bash commands or the special interface to help you. Edit all the files you need to and run any checks or tests that you want.
Remember, YOU CAN ONLY ENTER ONE COMMAND AT A TIME. You should always wait for feedback after every command.
When you're satisfied with all of the changes you've made, you can submit your changes to the code base by simply running the submit command.
Note however that you cannot use any interactive session commands (e.g. python, vim) in this environment, but you can write scripts and run them. E.g. you can write a python script and then run it with `python <script_name>.py`.
NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When editing a file, make sure to insert appropriate indentation before each line!
IMPORTANT TIPS:
1. Always start by trying to replicate the bug that the issues discusses.
If the issue includes code for reproducing the bug, we recommend that you re-implement that in your environment, and run it to make sure you can reproduce the bug.
Then start trying to fix it.
When you think you've fixed the bug, re-run the bug reproduction script to make sure that the bug has indeed been fixed.
If the bug reproduction script does not print anything when it successfully runs, we recommend adding a print("Script completed successfully, no errors.") command at the end of the file,
so that you can be sure that the script indeed ran fine all the way through.
2. If you run a command and it doesn't work, try running a different command. A command that did not work once will not work the second time unless you modify it!
3. If you open a file and need to get to an area around a specific line that is not in the first 100 lines, say line 583, don't just use the scroll_down command multiple times. Instead, use the goto 583 command. It's much quicker.
4. If the bug reproduction script requires inputting/reading a specific file, such as buggy-input.png, and you'd like to understand how to input that file, conduct a search in the existing repo code, to see whether someone else has already done that. Do this by running the command: find_file "buggy-input.png" If that doesn't work, use the linux 'find' command.
5. Always make sure to look at the currently open file and the current working directory (which appears right after the currently open file). The currently open file might be in a different directory than the working directory! Note that some commands, such as 'create', open files, so they might change the current open file.
6. When editing files, it is easy to accidentally specify a wrong line number or to write code with incorrect indentation. Always check the code after you issue an edit to make sure that it reflects what you wanted to accomplish. If it didn't, issue another command to fix it.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_template: |-
{{observation}}
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
next_step_no_output_template: |-
Your command ran successfully and did not produce any output.
(Open file: {{open_file}})
(Current directory: {{working_dir}})
bash-$
demonstrations:
- trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__xml_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj
put_demos_in_history: true
tools:
env_variables:
WINDOW: 100
OVERLAP: 2
bundles:
- path: tools/registry
- path: tools/windowed
- path: tools/search
- path: tools/windowed_edit_linting
- path: tools/submit
parse_function:
type: xml_thought_action
history_processors:
- type: last_n_observations
n: 5

1
.agent/vendor/mini-swe/docs/CNAME vendored Normal file
View File

@@ -0,0 +1 @@
swe-agent.com

10
.agent/vendor/mini-swe/docs/README.md vendored Normal file
View File

@@ -0,0 +1,10 @@
# SWE-agent
<div style="text-align: center;">
<img src="assets/readme_assets/swe-agent-banner.png" alt="SWE-agent banner" style="height: 12em;">
</div>
🔗 Simply want to read the docs? Please head to [the web version of these docs](https://swe-agent.com/latest/)
This folder holds the source for the SWE-agent documentation.
Want to modify and build the website locally? See [here](https://swe-agent.com/latest/dev/contribute#mkdocs).

21
.agent/vendor/mini-swe/docs/_footer.md vendored Normal file
View File

@@ -0,0 +1,21 @@
<div class="grid cards">
<a href="https://github.com/SWE-agent/SWE-agent/issues/new" class="nav-card-link">
<div class="nav-card">
<div class="nav-card-header">
<span class="material-icons nav-card-icon">bug_report</span>
<span class="nav-card-title">Something broken/unclear?</span>
</div>
<p class="nav-card-description">Open an issue on GitHub!</p>
</div>
</a>
<a href="https://join.slack.com/t/swe-bench/shared_invite/zt-36pj9bu5s-o3_yXPZbaH2wVnxnss1EkQ" class="nav-card-link">
<div class="nav-card">
<div class="nav-card-header">
<span class="material-icons nav-card-icon">help</span>
<span class="nav-card-title">Open-ended discussions</span>
</div>
<p class="nav-card-description">Join our Slack!</p>
</div>
</a>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@@ -0,0 +1,83 @@
/* Floating bubbles styles */
.floating-bubbles {
position: fixed;
bottom: 20px;
right: 20px;
display: flex;
flex-direction: column;
gap: 10px;
z-index: 1000;
}
.floating-bubbles-title {
position: absolute;
top: -30px;
right: 0;
font-size: 12px;
color: #777;
text-align: right;
font-weight: bold;
opacity: 0;
visibility: hidden;
transition:
opacity 0.3s ease,
visibility 0.3s ease;
white-space: nowrap;
}
.floating-bubbles:hover .floating-bubbles-title {
opacity: 1;
visibility: visible;
}
.bubble {
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
position: relative;
transition: transform 0.3s ease;
}
.bubble:hover {
transform: scale(1.1);
}
.bubble img {
width: 40px;
height: 40px;
}
.bubble-tooltip {
position: absolute;
right: 60px;
background-color: #333;
color: white;
padding: 5px 10px;
border-radius: 4px;
font-size: 14px;
white-space: nowrap;
opacity: 0;
visibility: hidden;
transition:
opacity 0.3s ease,
visibility 0.3s ease;
}
.bubble:hover .bubble-tooltip {
opacity: 1;
visibility: visible;
}
.floating-bubbles:hover .bubble-tooltip {
opacity: 1;
visibility: visible;
}
/* Hide on mobile */
@media (max-width: 768px) {
.floating-bubbles {
display: none;
}
}

View File

@@ -0,0 +1,37 @@
[data-md-color-scheme="default"] {
--md-default-bg-color: #fff7ec;
--md-primary-fg-color: #000000;
--md-typeset-a-color: #0099ff;
--md-code-bg-color: #e7e7e7;
}
[data-md-color-scheme="slate"] {
--md-primary-fg-color: #000000;
--md-default-fg-color: #fff7ec;
--md-default-bg-color: #111111;
}
.clickable-banner {
color: #000000;
}
.md-main__inner.md-grid,
.md-grid {
max-width: 64rem;
}
@media screen and (min-width: 1220px) {
.md-main__inner.md-grid,
.md-grid {
max-width: 64rem;
}
}
.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
font-weight: 400;
color: var(
--md-primary-fg-color-dark
); /* this actually works for both light and dark themes */
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,11 @@
.dark-mode-only {
display: none !important;
}
[data-md-color-scheme="slate"] .dark-mode-only {
display: inline-block !important;
}
[data-md-color-scheme="slate"] .light-mode-only {
display: none !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

View File

@@ -0,0 +1,11 @@
// Source: https://github.com/srl-labs/learn-srlinux/pull/133/files
// this script is used to remove extra leading space when annotating shell code blocks ending with `\`
// character. See https://github.com/squidfunk/mkdocs-material/issues/3846 for more info.
document$.subscribe(() => {
const tags = document.querySelectorAll("code .se");
tags.forEach((tag) => {
if (tag.innerText.startsWith("\\")) {
tag.innerText = "\\";
}
});
});

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,16 @@
/* From https://mkdocstrings.github.io/python/usage/customization/#symbol-types */
[data-md-color-scheme="default"] {
--doc-symbol-parameter-fg-color: #df50af;
--doc-symbol-attribute-fg-color: #0079ff;
--doc-symbol-function-fg-color: #00dfa2;
--doc-symbol-method-fg-color: #00dfa2;
--doc-symbol-class-fg-color: #d1b619;
--doc-symbol-module-fg-color: #ff0060;
--doc-symbol-parameter-bg-color: #df50af1a;
--doc-symbol-attribute-bg-color: #0079ff1a;
--doc-symbol-function-bg-color: #00dfa21a;
--doc-symbol-method-bg-color: #00dfa21a;
--doc-symbol-class-bg-color: #d1b6191a;
--doc-symbol-module-bg-color: #ff00601a;
}

View File

@@ -0,0 +1,43 @@
/* Navigation cards styling */
.nav-card-link {
text-decoration: none;
color: inherit;
display: block;
}
.nav-card {
padding: 1rem;
border: 1px solid var(--md-default-fg-color--lighter);
border-radius: 0.5rem;
transition:
box-shadow 0.2s,
transform 0.2s;
}
.nav-card:hover {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
.nav-card-header {
display: flex;
align-items: center;
margin-bottom: 0.5rem;
}
.nav-card-icon {
margin-right: 0.5rem;
font-size: 1.2rem;
color: var(--md-default-fg-color);
}
.nav-card-description {
margin: 0;
color: var(--md-default-fg-color--light);
}
.nav-card-title {
margin: 0;
font-weight: bold;
color: var(--md-default-fg-color);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1 @@
../../assets

View File

@@ -0,0 +1,10 @@
<svg width="658" height="353" viewBox="0 0 658 353" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M55.1537 318.026C51.7794 303.904 48.0221 289.861 45.1064 275.646C37.9205 240.61 31.0843 205.503 24.1762 170.411C16.1041 129.406 7.63666 88.4686 0.481801 47.3038C-0.897936 39.3656 2.87274 30.6123 5.58506 21.6882C15.1668 20.5639 23.6075 19.2929 31.9346 19.2829C134.817 19.1586 237.7 19.2873 340.582 19.0712C350.484 19.0504 358.728 21.8786 366.073 28.1404C371.661 32.9035 377.615 36.9801 383.547 42.386C398.77 126.163 410.072 211.032 431.491 293.541C431.423 316.71 423.039 325.081 400.592 325.171C398.492 325.18 396.393 325.16 394.294 325.161C321.603 325.174 248.912 325.19 176.222 325.201C144.941 325.206 113.66 325.123 82.3807 325.257C75.0251 325.288 68.1349 325.05 62.4362 319.241C61.0433 317.821 57.6351 318.378 55.1537 318.026Z" fill="#A8A3A7"/>
<path d="M103.675 1.07191C157.678 1.0985 211.024 0.958722 266.558 0.990249C269.471 0.965039 272.376 1.10224 273.759 1.07198C304.545 1.11839 334.851 0.711146 365.626 1.33516C382.219 1.67169 396.154 10.3148 403.346 26.2693C396.468 32.4468 389.815 37.0288 383.547 42.386C377.961 37.6212 371.661 32.9035 366.073 28.1404C358.728 21.8786 350.484 19.0504 340.582 19.0712C237.7 19.2873 134.817 19.1586 31.9346 19.2829C23.6075 19.2929 14.6875 21.0059 5.58506 21.6882C11.2591 6.63185 25.4035 2.28426 39.589 1.4272C56.7915 0.387894 74.8957 1.08602 93.7812 1.07179C98.5512 1.07262 100.528 1.10091 103.675 1.07191Z" fill="#BEB2BD"/>
<path d="M515.829 280.943C514.796 283.698 513.116 285.976 510.432 288.96C492.127 288.58 474.647 288.974 457.176 288.064C457.143 285.846 457.427 281.109 457.335 278.243C476.681 278.147 495.607 280.091 515.829 280.943Z" fill="#A8A3A7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M403.346 26.2693C396.46 31.8133 389.47 36.3877 383.547 42.386C398.682 125.68 408.684 211.738 431.24 293.46C430.514 316.575 423.037 325.081 400.59 325.171C399.364 325.176 398.138 325.172 396.912 325.167C396.039 325.164 395.165 325.16 394.291 325.161L317.505 325.175C270.41 325.185 223.315 325.194 176.219 325.201C167.217 325.202 158.216 325.196 149.214 325.19C126.935 325.176 104.657 325.162 82.3785 325.257C75.0229 325.288 68.1327 325.05 62.434 319.241C60.6676 317.44 57.3192 317.744 55.1537 318.026C62.7049 339.915 77.4495 351.235 99.7865 351.436C119.364 351.612 138.942 351.716 158.52 351.82C166.961 351.865 175.401 351.91 183.842 351.96C183.842 351.96 201.052 352.088 220.341 352.042C290.845 353.207 361.493 352.261 432.003 352.023C435.82 352.011 457.323 350.123 457.176 350.487C478.346 353.369 498.075 348.707 517.677 344.076C526.575 341.973 535.446 339.877 544.414 338.495C560.582 336.004 576.629 331.994 592.64 328.49C598.173 327.278 603.706 326.067 609.245 324.898C609.245 324.898 632.023 320.412 639.66 318.175C651.795 314.62 656.121 304.062 657.117 292.56C654.52 289.364 651.061 286.39 648.118 283.561C617.827 283.096 587.294 282.142 556.93 281.869C542.997 281.671 529.108 281.184 515.829 280.943C513.978 283.397 512.273 285.827 510.432 288.96C514.659 290.812 519.076 292.14 523.328 293.919C537.731 295.135 554.881 296.283 570.136 296.957C570.143 296.985 570.149 297.013 570.155 297.041L583.324 299.759C580.268 300.502 577.878 301.566 575.237 302.232C569.882 303.581 565.204 304.76 560.483 305.727C556.374 306.568 552.261 307.392 548.141 308.217C536.974 310.453 525.379 312.42 514.032 315.057C514.032 315.057 518.968 322.188 522.131 326.756C522.131 326.756 517.373 335.735 512.237 336.737C500.538 333.137 500.533 333.055 501.433 318.657C490.404 318.189 477.133 318.47 464.537 318.657C461.837 315.957 460.037 311.458 459.138 308.758C458.124 301.414 457.797 295.713 457.176 288.064C457.151 285.037 457.836 281.707 457.335 278.243C453.818 262.723 449.511 249.221 446.648 234.91C441.872 211.044 437.124 187.172 432.375 163.301C424.852 125.477 417.328 87.6528 409.697 49.85C408.066 41.7662 406.269 34.0301 403.346 26.2693Z" fill="#8B7887"/>
<path d="M583.324 299.759C577.025 303.359 567.877 304.615 560.827 306.058C545.581 309.18 530.271 311.333 514.032 315.057C509.379 316.521 505.122 317.939 501.433 318.657C489.365 318.895 477.28 318.731 464.537 318.657C461.837 315.957 460.037 312.358 459.138 308.758C480.584 303.391 502.186 298.639 523.328 293.919C541.327 294.665 566.589 291.391 583.324 299.759Z" fill="#BEB2BD"/>
<path d="M523.328 293.919C502.341 299.297 480.968 303.896 459.138 308.758C457.82 302.061 457.797 295.713 457.176 288.064C474.655 288.165 492.118 287.902 510.432 288.96C515.363 290.226 519.085 292.144 523.328 293.919Z" fill="#542F3F"/>
<path d="M501.433 318.657C501.433 318.657 509.637 315.888 514.032 315.057C522.131 315.057 522.129 323.707 522.131 326.756C522.136 335.837 515.042 336.19 512.237 336.737C500.538 337.637 496.74 325.947 501.433 318.657Z" fill="#542F3F"/>
<path d="M265.323 169.3C265.037 168.535 264.525 167.877 263.855 167.411C263.184 166.946 262.388 166.696 261.572 166.696H213.277L241.134 112.534C241.449 111.924 241.602 111.243 241.578 110.557C241.554 109.871 241.353 109.202 240.995 108.616C240.638 108.03 240.135 107.546 239.536 107.211C238.936 106.876 238.261 106.7 237.574 106.702C236.615 106.703 235.688 107.048 234.962 107.674L146.972 183.666C146.354 184.199 145.914 184.909 145.711 185.699C145.508 186.489 145.552 187.323 145.836 188.087C146.12 188.852 146.632 189.512 147.301 189.977C147.971 190.443 148.768 190.693 149.583 190.693H197.878L170.021 244.856C169.706 245.466 169.553 246.147 169.577 246.833C169.601 247.519 169.802 248.187 170.16 248.773C170.517 249.359 171.02 249.844 171.619 250.179C172.219 250.514 172.894 250.689 173.581 250.687C174.54 250.687 175.467 250.342 176.193 249.715L264.183 173.723C264.802 173.19 265.243 172.481 265.447 171.69C265.651 170.899 265.608 170.065 265.323 169.3Z" fill="#FFBD5D"/>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -0,0 +1,184 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 429.4 442.2" style="enable-background:new 0 0 429.4 442.2;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;}
.st1{fill:#FFF7EC;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#FFF7EC;}
</style>
<path d="M65.4,305c-5.4,4.4-6.5,5.3-11,3.5c-3.7-1.5-10.7-3.8-10.1-4.3c4.9-4.4,7.4-8.8,13.5-6.4c4.9,1.9,6.8,3.4,6.8,3.4
S68.3,302.4,65.4,305z"/>
<path d="M116.4,367.5c-18-7.2-35.6-14.3-53.6-21.5c5.6-7.1,9.5-8.5,16.1-5.9c22.8,8.9,45.5,17.9,68.3,26.9c1.5,0.6,3.2,1.1,3.8,2.9
c-4.3,5.9-9.4,7.5-15.7,5.1C129.1,372.6,122.9,370.1,116.4,367.5z"/>
<path d="M253.6,380.7c3.5-2.9,6.9-3,10.5-1.2c5.3,2.5,11.3,3.7,16,7c0.2,1.7-0.5,2.4-1.4,2.9c-7.6,4.5-15.2,8.9-22.8,13.4
c-1.7,1-3.5,1.4-5.3,0.8c-8-3.2-16.1-6.4-24.1-9.7c-0.9-0.4-1.8-0.9-1.9-2.1c5-5.8,8.6-7,15-4.8c2.7,1,4.7,0.7,6.8-1.1
C248.6,384.2,251,382.6,253.6,380.7z"/>
<path d="M259.5,361.1c11.1,4.3,21.8,8.5,32.4,12.8c1.7,0.7,3.9,1,4.2,3.1c0.3,2.5-2.2,3-3.8,4.1c-3.1,2.2-6.3,3-10.2,1.3
c-16.3-6.7-32.8-13-49.2-19.5c-1.7-0.7-3.5-1.2-4.4-3c3.8-5.6,8.8-7.3,14.7-5.1C248.6,356.9,253.9,359,259.5,361.1z"/>
<path d="M175,390.8c-9.1-3.9-18.3-6.9-26.9-11.3c4.2-6.3,9.4-8.2,15.5-5.8c14,5.4,27.9,10.9,41.8,16.5c1.8,0.7,4.1,1.3,4.2,3.7
c0.1,2.2-2.3,2.6-3.7,3.7c-3.6,2.9-7.4,3-11.6,1.1C188.1,395.9,181.7,393.5,175,390.8z"/>
<path d="M50.1,328.5c5.5,2.6,11.2,3.8,16,7.2c-5.6,6.9-9.2,7.9-16.2,5.2c-10.8-4.3-21.6-8.6-32.4-12.9c-1.5-0.6-3.5-1.1-3.8-2.9
c-0.5-2.3,1.9-2.8,3.2-3.9c3.4-2.9,6.8-3.3,11-1.5C35.1,322.9,42.5,325.6,50.1,328.5z"/>
<path d="M62,316.7c4.7,1.9,9,3.6,13.3,5.4c3.3,1.3,3.1,3,0.5,4.9c-4.2,3.2-8.2,4.6-13.7,2.1c-9.3-4.3-19-7.7-28.6-11.6
c-1.6-0.7-3.8-1-4.2-3.1c-0.4-2.3,2-2.7,3.3-3.9c3-2.7,6.3-3.1,10.1-1.4C48.9,311.7,55.3,314,62,316.7z"/>
<path d="M237.5,403.1c3,1.5,6.2,1.6,8.3,4c-2.4,4.1-8.5,7.8-12.3,6.5c-8.3-2.9-16.4-6.3-24.6-9.6c-0.5-0.2-0.8-0.9-1.2-1.3
c4.4-5.8,9.1-7.4,15.1-5.3C227.6,399.1,232.4,401.1,237.5,403.1z"/>
<path d="M212.7,355.1c-4.4-1.7-8.4-3.2-12.4-4.9c-1.3-0.5-3-1-3.1-2.8c-0.1-1.8,1.8-2.1,2.9-3c4.4-3.5,8.8-3.7,13.8-1.2
c4.3,2.1,8.9,3.5,13.4,5.3c1.3,0.5,2.9,1.1,3.1,2.9c0.2,1.9-1.6,2.2-2.7,3.2C223,358.8,218.1,358,212.7,355.1z"/>
<path d="M183.1,376.8c-6.2-2.7-12.5-4.1-17.9-7.8c4.7-6.5,9-7.8,15.6-5.3c4.3,1.7,8.7,3.3,13,5c1.7,0.7,3.5,1.2,4.4,2.9
C194.5,377.4,189.6,379.1,183.1,376.8z"/>
<path d="M179.1,341.4c-6.2-2.7-12.5-4.1-17.9-7.8c4.7-6.5,9-7.8,15.6-5.3c4.3,1.7,8.7,3.3,13,5c1.7,0.7,3.5,1.2,4.4,2.9
C190.6,341.9,185.7,343.7,179.1,341.4z"/>
<path d="M123,328.7c-5.4,4.4-10.7,4.2-16.4,1.1c-4.7-2.5-10.3-3.3-14.7-6.8c4.4-6.1,8.9-7.5,15.1-5.1c4.9,1.9,9.9,3.8,14.8,5.8
C124.2,324.7,125.8,326,123,328.7z"/>
<path d="M136.5,350.6c-5.4,4.4-10.7,4.2-16.4,1.1c-4.7-2.5-10.3-3.3-14.7-6.8c4.4-6.1,8.9-7.5,15.1-5.1c4.9,1.9,9.9,3.8,14.8,5.8
C137.7,346.6,139.3,347.9,136.5,350.6z"/>
<path d="M210.1,358.5c1.7,0.8,3.2,1.1,3.9,2.7c-3.5,5.9-8.4,7.6-14.5,5.3c-4.5-1.7-9-3.5-13.5-5.2c-1.7-0.7-3.6-1.1-4.2-3.1
c4-5.5,8.2-7,13.9-5C200.4,354.7,205.1,356.6,210.1,358.5z"/>
<path d="M177.3,345.2c1.7,0.8,3.2,1.1,3.9,2.7c-3.5,5.9-8.4,7.6-14.5,5.3c-4.5-1.7-9-3.5-13.5-5.2c-1.7-0.7-3.5-1.1-4.2-3.1
c4-5.5,8.2-7,13.9-5C167.7,341.4,172.3,343.3,177.3,345.2z"/>
<path d="M166.8,361.1c-5.5,4.9-11.1,6-17.5,2.4c-4.5-2.5-10-3.3-14.2-6.8c6.2-6.5,9.5-7.3,16.9-4.5c3.9,1.5,7.7,3,11.6,4.5
C165.3,357.5,167.6,358,166.8,361.1z"/>
<path d="M222.1,387.8c-3.1,2.3-6,2.3-9.2,0.9c-4.4-1.9-8.9-3.6-13.4-5.4c-1.5-0.6-3.1-1.1-3.8-2.8c4.3-5.9,8.8-7.4,14.9-5.1
c3.7,1.4,7.4,2.9,11.1,4.4c1.9,0.8,4.9,0.8,5.3,3.2C227.5,385.9,224.1,386.1,222.1,387.8z"/>
<path d="M89.1,327.4c6.7,2.9,13.4,4.6,19.4,8.3c-4.7,6.4-9.5,7.9-16,5.1c-5.5-2.4-11.7-3.5-17.1-8.2
C79.9,329.6,82.9,325.2,89.1,327.4z"/>
<path d="M75.5,305.6c0.2,6.6,5.2,10.9,10.2,10.2c3.1-0.4,5.8-1.9,7.9-3.5c2.3,0.9,3.9,2.2,1.1,4.9c-5.4,4.4-10.7,4.2-16.4,1.1
c-1.9-1-3.9-1.8-6-2.5c-3-1.1-6.1-2.2-8.7-4.3C67.3,306.6,70.9,304.8,75.5,305.6C75.5,305.6,75.5,305.6,75.5,305.6z"/>
<path d="M188.9,41.4c-0.1,37,0,114.5,0,114.5s0,6.3,0,15.4l23.7-6.3c0,0,15.9-2.6,23.7-8.6c1.4-1.1,2.2-2.2,3.1-3.4
c1.1-1.5,2.2-3,4.3-3.9c3.8-1.7,8.2-2.9,12.6-4.1c4.4-1.2,8.7-2.5,12.4-4.1c6.5-2.9,12.6-5.6,19.5-6.6c6.7-1,14.6,5.3,21.7,12.3
c5.2,5.2,11,17.5,13.2,30.3c2.1,11.7,2.5,19.3,0,29.8c-1.2,5.1-2.7,8.3-6.9,11.4c-5,3.8-10.4,4.9-16.4,6.2
c-3.6,0.8-7.5,1.6-11.5,3.1c-4.8,1.7-12.2,4.5-12.2,4.5s-3.1,16.4-6.8,26.2c-1,2.7-1.8,5.3-2.5,7.9c-0.3,1-0.5,1.9-0.8,2.8
c3.5,1.4,5.7,2.3,5.7,2.3s79.4,30.1,119.1,45.1c0.9,0.4,1.9,0.7,2.8,1c0.4,0.1,0.8,0.3,1.2,0.4c1.9-1.5,1.8-3.4,1.7-5.1
c0-0.4,0-0.8,0-1.1c0-21.3,0-42.6,0-64c0,0,0-0.1,0-0.1c0-43.8,0-87.6,0.1-131.4c0-4.5-1.8-6.4-5.8-7.9c-49.1-18-98.1-36-147.1-54.1
c0,0-0.1,0-0.1,0c-13.1-4.8-26.2-9.7-39.3-14.5c-3.2-1.2-6.4-2.3-9.5-3.5l0,0c-1.5-0.5-2.9-1.1-4.4-1.6c-1.7,2-1.5,3.9-1.4,5.8
C188.8,40.5,188.9,41,188.9,41.4z"/>
<path d="M103.5,286.8c-0.7,2.4-1.3,4.9-1.7,7.2c5.2,2.1,11.1,4.4,17.2,6.8c-0.1-0.7-0.1-1.4-0.2-2.2c-0.2-2.1-0.3-4.1-0.3-6
C113.1,290.5,108,288.5,103.5,286.8z"/>
<path d="M148.6,304.3c0.1,1.1,0.2,2.3,0.3,3.4c0.2,1.7,0.3,3.3,0.4,5c14.5,5.7,25.5,10,25.5,10S252,353,290.6,368.1
c5.4,2.1,10.8,4.3,16.3,6.4c3.3,1.3,3.8,3.1,0.7,5.2c-1.1,0.8-2.2,1.5-3.4,2.1c-5.2,3.1-10.5,6.1-15.7,9.1c0,0,0,0,0,0l0,0
c-12.2,7.1-24.4,14.1-36.3,21.7c-10.4,6.6-20.1,6.8-31.2,2.4c-49.9-20-99.9-39.9-149.9-59.8c-17.5-7-35-13.9-52.4-20.9
c-3.1-1.2-12.5-6.3-8.7-9.8c6.4-6,32.2-24.7,49.3-36.9c-0.4-1.1-0.7-2.4-0.8-3.8c-22.9,15-52.7,37-55.5,40.7
c-4.7,6.2-2.7,15.2-1.7,20c0,0.1,0,0.2,0.1,0.3c1.6,7.4,3.3,8.1,10.6,10.9c1.2,0.4,2.5,0.9,4,1.5c39.9,15.9,79.8,31.9,119.8,47.9
c28.8,11.5,57.6,23.1,86.6,34.6c9.9,2.9,19.4,3.9,28.4-1.3c13.3-7.7,26.6-15.6,39.8-23.4c3.7-2.2,7.3-4.3,11-6.5
c15.3-9,15.3-9.2,15.1-20.3c0-1.8-0.1-3.9,0-6.4c0.1-10.8-1.1-12.3-11-16.2c-17.4-6.8-34.9-13.6-52.3-20.5
c-14.8-5.8-29.7-11.6-44.5-17.4c-1.6,0.3-3.3,0.3-4.8-0.2c-2.7-0.9-5.2-2.4-7.2-4.5c-0.1-0.1-0.3-0.1-0.4-0.2
c-0.7-0.3-2.2-0.9-4.4-1.7C183.8,318.1,166.8,311.5,148.6,304.3z"/>
<path d="M126.1,327.8c-2.2,0.9-4.3,2.7-6.3,5.5c2.6,2.1,5.7,3.2,8.7,4.3c2,0.7,4.1,1.5,6,2.5c5.6,3,10.9,3.3,16.4-1.1
c2.8-2.7,1.1-4-1.1-4.9c-1.6-0.7-3.3-1.3-4.9-1.9c-1.7,2.7-4,4.5-6.7,4.4C133.3,336.2,129.3,332.8,126.1,327.8z"/>
<path d="M119.4,306.7c-4.1-0.4-7.4,1.6-10.8,6.2c2.6,2.1,5.7,3.2,8.7,4.3c1.5,0.5,2.9,1.1,4.3,1.7
C120.2,314.6,119.8,311,119.4,306.7z"/>
<path d="M96.7,309.6c1,0.4,1.9,0.7,2.7,1c4.5,1.8,5.6,1,11-3.5c2.8-2.7-0.8-3.9-0.8-3.9s-1.9-1.5-6.8-3.4c-0.7-0.3-1.3-0.4-1.9-0.6
c-0.3,2.1-0.7,4.2-1.1,6.2C99.8,305.6,98.7,307.5,96.7,309.6z"/>
<path d="M74.6,300.3c-0.1-0.8-0.2-1.5-0.2-2.2v0c0-1,0-2,0-3c-0.9-1-1.9-0.9-2.9-0.8c-0.3,0-0.6,0.1-0.9,0.1c-3.1,0-5.7-0.7-7.7-2
c-0.5,0.6-1,1.2-1.5,1.9c2.6,2.1,5.7,3.2,8.7,4.3C71.7,299,73.2,299.6,74.6,300.3z"/>
<path d="M184.9,1.5c-12-4.5-21.2,1.5-21,14.9l-0.4,161.2l14.7-3.5l4.2-1.1c0.8-50.3,1-100.5,1-150.9c37.9,13.9,75.6,28.2,113.4,42.4
c0,0,0,0,0,0c32,12.1,64,24.2,96.1,36c9.7,3.6,11,5.2,11,15.3c0,20.7,0,41.3,0,62c0,47.2,0,94.3,0,141.5c0,5.2-4.3,6.6-7.4,5.5
c-45.6-15.4-89.7-31.4-133.8-48c-1,1.9-2.3,3.8-4,5.6c-3.4,3.6-6.4,6-10,8.8c0,0,0,0,0,0c3.2,1.2,6.4,2.3,9.6,3.5
c47.8,17.1,95,34,132.6,49c9.4,3.7,17.9,4,27,0c7.8-3.4,11.5-8.6,11.5-17.2c0-7.2,0-14.4,0-21.6c0-3.6,0-7.2,0-10.8
c0-19.6,0-39.1,0-58.7c0-42.9,0-85.8,0-128.7c0-11.4-3.3-16.3-14-20.1c-3.4-1.2-6.7-2.5-10.1-3.7c-19.6-7.2-39.3-14.3-58.9-21.5
c-10.3-3.8-20.5-7.6-30.8-11.4C272,34,228.4,17.9,184.9,1.5z"/>
<path d="M208.2,276.8c0.5-0.6,1.1-1.2,1.7-1.8c4.5-5,8.9-9.9,10.4-14.2c-7.7-3-15.4-5.9-23.1-8.9c-1,0.2-2,0.4-3.1,0.8
c-1.1,0.3-2.1,0.6-3,0.9h0c-5.7,1.7-10.2,3-15.7,6.5c-1.7,1.1-3.2,2.1-4.5,3.2C183,267.7,195.5,272.3,208.2,276.8z"/>
<path d="M146.7,328.3c0.3,0.1,0.7,0.3,1,0.4l0,0c1.3,0.5,2.6,1,3.6,1.4c4.5,1.8,5.6,1,11-3.5c2.8-2.7-0.8-3.9-0.8-3.9
s-1.9-1.5-6.8-3.4c-2.3-0.9-4.1-0.9-5.7-0.2c-0.1,1-0.3,2-0.5,3.1C148.1,324.1,147.5,326.3,146.7,328.3z"/>
<path d="M305,203.4c-3.1,2-6.1,2.5-8.4-0.2c-2.2-2.6-1.9-5.6-0.2-8.4c2.1-3.5,6.5-4.5,9.5-2.4C309.1,194.8,308.9,198.6,305,203.4z"
/>
<path class="st0" d="M85.7,315.8c-5,0.7-10-3.6-10.2-10.2c0-1.1-0.3-2.3-0.5-3.6c-0.3-1.4-0.5-2.8-0.5-4v0c0-1,0-2,0-3
c-1.2-1.4-2.6-0.7-3.8-0.7c-8.7,0-13.4-5.6-11.9-14.3c2.1-12,5.8-24.1,10.9-35.2l0,0c0.7-1.5,1.4-3,0.8-5c-1.5,0.3-3,0.7-4.4,1.2
c-2.5,0.8-5,1.5-7.7,1.5c-6.6,0-11.1-2.3-13.2-7.1c-2.1-4.9-0.7-10.3,4.3-14.8c9.7-8.7,16.7-18.1,30.7-23.9
c5.5-2.3,8.8-2.9,14.6-4.4c11.4-3,29.7-5.3,29.7-5.3l53.7-12.8l34.3-9.1c0,0,15.9-2.6,23.7-8.6c3.2-2.5,3.7-5.7,7.4-7.3
c7.6-3.3,17.7-5,25-8.2c6.5-2.9,12.6-5.6,19.5-6.6c6.7-1,14.6,5.3,21.7,12.3c5.2,5.2,11,17.5,13.2,30.3c2.1,11.7,2.5,19.3,0,29.8
c-1.2,5.1-2.7,8.3-6.9,11.4c-8.1,6-17.1,5.4-28,9.3c-4.8,1.7-12.2,4.5-12.2,4.5s-3.1,16.4-6.8,26.2c-3.4,8.7-3.5,17.1-10.4,24.5
c-4.2,4.5-7.9,7.1-12.7,11c-6,4.9-12.9,11.3-17.1,15.7c-3.4,3.5-5.6,5.8-9.3,10.8c-4.6,6.1-10.7,9.2-15.8,7.6
c-6.2-2-11.5-7.5-11.7-15.4c-0.1-6,4.9-16.8,7-22.5c3.6-9.9,20.6-22,21.7-30.9c0.6-4.6-6.5-5.2-10.3-6.2c-6.2-1.7-11.3-1.5-16.4,0
c-7.2,2.2-12.3,3.4-18.8,7.4c-5.6,3.5-8.3,6.7-12.8,9.8c-7.3,5.1-8.6,4.6-11.6,10.2c-1.8,3.4-2,10-2.4,17.1c-0.6,9.5,2,15.5,0,25
c-1.3,6.2-4.8,14.6-10.5,14.3c-6.8-0.4-12-7.2-15.5-15.6c-3.2-7.6-2.8-13.1-3.7-22.2c-1-10,0.5-16.8,2.9-26.5
c1.5-5.9,3.7-10.2,6.6-14.1c2.4-3.3,6-6.3,6-6.3s-9.6,6-12.5,8.3c-4.4,3.5-8.3,9-9.2,10.9c-10.8,11.8-10.5,24.1-12.7,34.7
C99.8,305.6,94.4,314.6,85.7,315.8z M82.7,261.8L82.7,261.8c2.9-6.2,5.8-12.4,8.5-18.7c3.3-7.6,8.5-12.8,16.1-16.2
c14.8-6.5,29.6-12.9,44.7-18.6c1.9-0.7,3.8-1.3,5.7-1.6c2.1-0.3,4.1,0.2,4.8,2.6c0.6,2.2-0.8,3.5-2.4,4.5c-1.1,0.7-2.4,1.1-3.6,1.7
c0,0-8.1,3.5-12.1,5.3c0,0,0,0,0,0l0,0c-10.6,4.6-21.2,9.2-31.9,13.7c-5.8,2.5-10,6.4-12.7,12.1c-0.9,2-1.9,4.1-2.8,6.1l0,0l0,0
c-2.4,5.4-4.9,10.8-7.7,15.9c-5.9,10.6-6,23.1-6.4,34.9c-0.1,1.9-0.1,3.9,2,4.6c2,0.7,3.5-0.7,4.9-1.8c2.6-2.2,3.9-5.2,4.1-8.3
c0.5-12.1,6-21.9,13.4-30.9c4-4.9,6-9.9,11.4-14.5c4.9-4.1,13-9.6,13-9.6s11.3-4.5,18.1-7.7c6.7-3.1,10.3-5.9,15.2-7.3
c2.3-0.6,4.4-0.9,6,0c1,0.5,1.4,1.2,1.8,2.2c0.6,1.8-0.8,3.8-2.6,5c-4.1,2.7-8.5,3.6-13.7,7.7c-6,4.8-15.6,13.7-15.6,13.7
s-10.4,11-11.4,17.7c-1.4,10.1-3.1,12.3-3.1,24.2c0,3.3,0.4,26.8,11.5,29.4c5.1,1.2,3.3-11.8,3.3-11.8l-2-18.3
c0,0,0.4-13.9,4.5-21.5c2.4-4.4,5.5-6.4,8.3-8.8c1.4-1.2,11.1-8.5,18.2-13.9c7.9-6,14.6-6.8,23.9-9.1c10.6-2.7,18.9-3.4,27.6,3.1
c4.1,3.1,8.4,5,8.4,10.2c0,7.8-8.2,15.1-12.7,19.8c-5.6,5.8-11.5,12.7-14.5,19.4c-4.4,9.6-4.3,18.3,2.2,20.9c2.9,1.1,4.2-1.1,5.4-3
c10.9-17.7,23.9-21.7,35.5-32.5c8.5-7.9,9.6-16.8,15.6-28.6c5.8-11.5,1.2-24.4,7.5-36.4c0.9-1.8,1.2-3.7,1.3-5.8
c0.5-18.5-7.5-32.7-21.7-43.8c-2.7-2.1-5.4-2.5-8.8-1.5c-12.3,3.7-24.6,7.1-37,10.4c-32.8,8.8-65.8,16.9-99.2,22.6
c-10.9,1.9-20.5,4.8-28.9,11.9c-4.2,3.6-8.4,7.3-13,10.3c-3.7,2.5-9.9,6.7-8.3,10.2c4,8.6,24.4-6.7,26.8-11.1
c3.3-6.1,8.6-9.1,14.8-10.9c13.1-3.8,26.2-7.6,39.3-11.3c3.2-0.9,6.4-1.7,9.7-2.6c0,0,0,0,0,0c1.1-0.3,2.2-0.6,3.3-0.9
c2.5-0.6,4.4,0.2,5.2,2.6c0.7,2.3-0.8,3.7-2.8,4.6c-4.9,2.1-10.5,3.3-15.6,4.8c0,0,0,0,0,0c0,0,0,0,0,0c-12,3.7-23.9,7.3-35.9,10.9
c-5.1,1.5-8.8,4.4-11.1,9.3c-8.1,17-15.4,34.3-19.8,52.7c-0.5,2-1,4.1,1.6,5.1c2.5,0.9,4.2-1.1,5.1-3c1.1-2.4,2.1-5,3.2-7.7l0,0
c0.6-1.5,1.2-3,1.8-4.6C80.2,267.2,81.5,264.5,82.7,261.8z M279.6,211.5c0.2,1.7,0,3.3-0.1,5.1c-0.3,2.4-0.5,4.9,0.3,7.6
c2.8-0.9,5.6-1.9,8.3-2.8l0,0h0l0,0l0,0l0,0l0,0c6.7-2.3,13.2-4.5,19.9-6.4c4.3-1.2,5.8-3.7,6.4-7.7c1.3-9.3,1.8-18.5,0-27.8
c-2.9-14.5-9.2-26.9-22.1-35.3c-2.4-1.6-4.7-1.9-7.5-1c-6.1,2-12.3,3.9-18.4,5.9l0,0c-1.6,0.5-3.3,1-4.9,1.6c-3,1-6.1,2-9.2,2.9h0
c-1.5,0.4-3,0.9-3.4,2.8c0.8,1.4,2.1,2.2,3.4,2.9C270.4,169.5,279.5,191.4,279.6,211.5z"/>
<path class="st1" d="M82.8,261.8L82.8,261.8c-1.3,2.7-2.5,5.4-3.7,8.1c-0.7,1.6-1.2,3.1-1.8,4.6l0,0c-1,2.7-2,5.2-3.2,7.7
c-0.9,1.9-2.6,3.9-5.1,3c-2.6-0.9-2.1-3.1-1.6-5.1c4.5-18.4,11.7-35.7,19.8-52.7c2.3-4.8,6-7.7,11.1-9.3c12-3.6,24-7.2,35.9-10.9
l0,0l0,0c5.1-1.6,10.7-2.7,15.6-4.8c2-0.9,3.6-2.3,2.8-4.6c-0.8-2.4-2.7-3.2-5.2-2.6c-1.1,0.3-2.2,0.6-3.3,0.9l0,0
c-3.2,0.9-6.5,1.7-9.7,2.6c-13.1,3.7-26.2,7.5-39.3,11.3c-6.2,1.8-11.6,4.8-14.8,10.9c-2.4,4.4-22.8,19.7-26.8,11.1
c-1.6-3.5,4.5-7.6,8.3-10.2c4.6-3.1,8.8-6.8,13-10.3c8.4-7.1,18.1-10,28.9-11.9c33.5-5.7,66.4-13.9,99.2-22.6
c12.4-3.3,24.7-6.8,37-10.4c3.4-1,6.1-0.6,8.8,1.5c14.3,11.1,22.3,25.4,21.7,43.8c-0.1,2-0.4,4-1.3,5.8c-6.2,12-1.7,24.9-7.5,36.4
c-6,11.8-7.1,20.7-15.6,28.6c-11.6,10.8-24.6,14.8-35.5,32.5c-1.2,1.9-2.6,4.1-5.4,3c-6.5-2.6-6.5-11.3-2.2-20.9
c3-6.7,9-13.6,14.5-19.4c4.5-4.7,12.7-11.9,12.7-19.8c0-5.2-4.3-7.1-8.4-10.2c-8.7-6.5-17-5.8-27.6-3.1c-9.3,2.4-15.9,3.1-23.9,9.1
c-7.1,5.4-16.8,12.7-18.2,13.9c-2.8,2.4-5.9,4.4-8.3,8.8c-4.1,7.5-4.5,21.5-4.5,21.5l2,18.3c0,0,1.8,13-3.3,11.8
c-11.1-2.6-11.5-26.2-11.5-29.4c0-11.9,1.7-14.2,3.1-24.2c1-6.7,11.4-17.7,11.4-17.7s9.7-8.9,15.6-13.7c5.2-4.1,9.5-5.1,13.7-7.7
c1.9-1.2,3.2-3.2,2.6-5c-0.4-1.1-0.8-1.7-1.8-2.2c-1.7-0.9-3.8-0.6-6,0c-4.8,1.3-8.5,4.1-15.2,7.3c-6.8,3.2-18.1,7.7-18.1,7.7
s-8.1,5.5-13,9.6c-5.4,4.5-7.4,9.6-11.4,14.5c-7.5,9-12.9,18.8-13.4,30.9c-0.1,3.1-1.4,6.2-4.1,8.3c-1.4,1.2-2.8,2.5-4.9,1.8
c-2.1-0.7-2.1-2.8-2-4.6c0.3-11.8,0.5-24.3,6.4-34.9c2.8-5.2,5.3-10.6,7.7-15.9l0,0l0,0c0.9-2.1,1.9-4.1,2.8-6.1
c2.7-5.7,6.9-9.6,12.7-12.1c10.7-4.5,21.3-9.1,31.9-13.7l0,0l0,0c4-1.8,12.1-5.3,12.1-5.3c1.2-0.5,2.5-0.9,3.6-1.7
c1.6-1,3-2.3,2.4-4.5c-0.7-2.4-2.7-2.9-4.8-2.6c-2,0.3-3.9,0.9-5.7,1.6c-15.1,5.7-29.9,12.1-44.7,18.6c-7.6,3.3-12.8,8.6-16.1,16.2
C88.5,249.3,85.6,255.5,82.8,261.8z"/>
<path class="st1" d="M188.8,155.9c0,0,0-77.5,0-114.5c0-0.4,0-0.9-0.1-1.4c-0.1-1.8-0.2-3.8,1.4-5.8c1.4,0.5,2.9,1,4.4,1.6l0,0
c3.2,1.1,6.3,2.3,9.5,3.5c13.1,4.8,26.2,9.7,39.3,14.5l0.1,0c49,18,98.1,36.1,147.1,54.1c4,1.5,5.8,3.4,5.8,7.9
c-0.1,43.8-0.1,87.6-0.1,131.4v0.1c0,21.3,0,42.6,0,64c0,0.4,0,0.7,0,1.1c0.1,1.8,0.2,3.6-1.7,5.1c-0.4-0.1-0.8-0.3-1.2-0.4
c-0.9-0.3-1.9-0.6-2.8-1c-39.7-15-119.1-45.1-119.1-45.1s-2.1-0.8-5.7-2.3c-0.8,2.8-1.7,5.5-3.1,8.1c44,16.6,88.2,32.6,133.8,48
c3.1,1,7.4-0.3,7.4-5.5c0-47.2,0-94.3,0-141.5c0-20.7,0-41.3,0-62c0-10.1-1.3-11.7-11-15.3c-32.1-11.9-64.1-24-96.1-36l0,0
C259.1,50.3,221.3,36,183.4,22.1c0,50.3-0.2,100.6-1,150.9l6.4-1.7C188.8,162.2,188.8,155.9,188.8,155.9z"/>
<path class="st2" d="M93.6,312.4c2.3,0.9,3.9,2.2,1.1,4.9c-5.4,4.4-10.7,4.2-16.4,1.1c-1.9-1-3.9-1.8-6-2.5c-3-1.1-6.1-2.2-8.7-4.3
c3.6-5,7.2-6.8,11.8-6l0,0c0-1.1-0.3-2.3-0.5-3.6c-0.1-0.6-0.2-1.2-0.3-1.8c-1.5-0.7-3-1.2-4.5-1.8c-3-1.1-6.1-2.2-8.7-4.3
c0.5-0.7,1-1.3,1.5-1.9c-1.7-1.1-3-2.7-3.7-4.6c-17,12.1-42.9,30.9-49.3,36.9c-3.7,3.5,5.6,8.6,8.7,9.8c17.5,7,35,13.9,52.4,20.9
c50,19.9,99.9,39.8,149.9,59.8c11,4.4,20.8,4.2,31.2-2.4c11.9-7.5,24.1-14.6,36.3-21.7l0,0l0,0c5.2-3,10.5-6.1,15.7-9.1
c1.1-0.7,2.3-1.4,3.4-2.1c3.1-2.2,2.6-3.9-0.7-5.2c-5.4-2.1-10.8-4.3-16.3-6.4C252,353,174.8,322.8,174.8,322.8s-11-4.3-25.5-10
c0.1,2,0.1,4.1-0.2,6.4c1.6-0.6,3.4-0.7,5.7,0.2c4.9,1.9,6.8,3.4,6.8,3.4s3.6,1.2,0.8,3.9c-5.4,4.4-6.5,5.3-11,3.5
c-1-0.4-2.3-0.9-3.6-1.4l0,0c-0.3-0.1-0.7-0.3-1-0.4c-0.6,1.4-1.2,2.6-1.9,3.8c1.6,0.6,3.3,1.3,4.9,1.9c2.3,0.9,3.9,2.2,1.1,4.9
c-5.4,4.4-10.7,4.2-16.4,1.1c-1.9-1-3.9-1.8-6-2.5c-3-1.1-6.1-2.2-8.7-4.3c2-2.8,4.1-4.6,6.3-5.5c-1.3-2.1-2.5-4.4-3.6-6.9
c-0.3-0.7-0.6-1.4-0.8-2.1c-1.4-0.6-2.9-1.2-4.3-1.7c-3-1.1-6.1-2.2-8.7-4.3c3.3-4.6,6.7-6.5,10.8-6.2c-0.1-1.8-0.3-3.8-0.4-5.9
c-6.1-2.4-12-4.7-17.2-6.8c-0.3,1.8-0.6,3.6-0.9,5.4c0.6,0.1,1.2,0.3,1.9,0.6c4.9,1.9,6.8,3.4,6.8,3.4s3.6,1.2,0.8,3.9
c-5.4,4.4-6.5,5.3-11,3.5c-0.8-0.3-1.7-0.7-2.7-1C95.8,310.5,94.8,311.5,93.6,312.4z M54.5,308.5c4.5,1.8,5.6,1,11-3.5
c2.8-2.7-0.8-3.9-0.8-3.9s-1.9-1.5-6.8-3.4c-6.2-2.4-8.6,2-13.5,6.4C43.7,304.7,50.8,307,54.5,308.5z M62.8,346
c18,7.2,35.6,14.3,53.6,21.5c6.5,2.6,12.7,5.1,18.9,7.5c6.3,2.4,11.4,0.8,15.7-5.1c-0.6-1.8-2.3-2.3-3.8-2.9
c-22.8-9-45.5-18-68.3-26.9C72.3,337.5,68.4,338.9,62.8,346z M264.1,379.5c-3.7-1.7-7-1.7-10.5,1.2c-2.6,1.9-5,3.4-7.1,5.3
c-2.1,1.8-4.2,2.1-6.8,1.1c-6.4-2.3-10-1-15,4.8c0.2,1.1,1,1.7,1.9,2.1c8,3.3,16,6.5,24.1,9.7c1.8,0.7,3.6,0.2,5.3-0.8
c7.6-4.5,15.2-8.9,22.8-13.4c0.9-0.5,1.6-1.3,1.4-2.9C275.4,383.2,269.5,382,264.1,379.5z M291.9,373.9
c-10.7-4.2-21.4-8.4-32.4-12.8c-5.7-2.2-10.9-4.2-16.2-6.2c-6-2.2-10.9-0.5-14.7,5.1c0.9,1.8,2.7,2.3,4.4,3
c16.4,6.5,32.9,12.8,49.2,19.5c4,1.6,7.1,0.9,10.2-1.3c1.6-1.1,4.1-1.7,3.8-4.1C295.9,374.9,293.6,374.5,291.9,373.9z M148.1,379.5
c8.6,4.5,17.8,7.4,26.9,11.3c6.7,2.7,13.1,5.1,19.3,7.8c4.2,1.8,8,1.8,11.6-1.1c1.4-1.1,3.8-1.5,3.7-3.7c-0.1-2.4-2.4-3-4.2-3.7
c-13.9-5.5-27.8-11.1-41.8-16.5C157.5,371.3,152.3,373.2,148.1,379.5z M66.1,335.8c-4.8-3.4-10.6-4.6-16-7.2c-7.6-3-15-5.6-22.1-8.8
c-4.2-1.9-7.6-1.4-11,1.5c-1.3,1.1-3.7,1.6-3.2,3.9c0.4,1.8,2.3,2.2,3.8,2.9c10.8,4.3,21.6,8.6,32.4,12.9
C56.9,343.7,60.5,342.6,66.1,335.8z M75.2,322.1c-4.3-1.7-8.6-3.5-13.3-5.4c-6.7-2.6-13.1-5-19.3-7.7c-3.8-1.6-7-1.3-10.1,1.4
c-1.3,1.2-3.7,1.6-3.3,3.9c0.4,2,2.6,2.4,4.2,3.1c9.5,3.9,19.3,7.3,28.6,11.6c5.5,2.5,9.5,1.1,13.7-2.1
C78.3,325,78.6,323.4,75.2,322.1z M245.8,407.1c-2.1-2.4-5.3-2.5-8.3-4c-5.2-2-9.9-4-14.8-5.7c-5.9-2.2-10.6-0.5-15.1,5.3
c0.4,0.4,0.7,1.1,1.2,1.3c8.2,3.3,16.3,6.7,24.6,9.6C237.3,414.9,243.4,411.3,245.8,407.1z M200.3,350.3c4,1.6,8,3.2,12.4,4.9
c5.4,2.9,10.3,3.6,15-0.5c1.1-0.9,2.9-1.3,2.7-3.2c-0.2-1.8-1.8-2.3-3.1-2.9c-4.4-1.8-9.1-3.2-13.4-5.3c-5-2.5-9.5-2.3-13.8,1.2
c-1.1,0.9-3,1.2-2.9,3C197.3,349.3,199,349.7,200.3,350.3z M165.1,369c5.4,3.6,11.8,5.1,17.9,7.8c6.6,2.3,11.4,0.6,15-5.2
c-0.9-1.7-2.7-2.3-4.4-2.9c-4.3-1.7-8.7-3.3-13-5C174.2,361.2,169.8,362.6,165.1,369z M161.2,333.6c5.4,3.6,11.8,5.1,17.9,7.8
c6.6,2.3,11.4,0.6,15-5.2c-0.9-1.7-2.7-2.3-4.4-2.9c-4.3-1.7-8.7-3.3-13-5C170.2,325.8,165.9,327.1,161.2,333.6z M106.7,329.8
c5.6,3,10.9,3.3,16.4-1.1c2.8-2.7,1.1-4-1.1-4.9c-4.9-2-9.9-3.9-14.8-5.8c-6.2-2.4-10.6-1-15.1,5.1
C96.4,326.5,102,327.3,106.7,329.8z M120.2,351.7c5.6,3,10.9,3.3,16.4-1.1c2.8-2.7,1.1-4-1.1-4.9c-4.9-2-9.9-3.9-14.8-5.8
c-6.2-2.4-10.6-1-15.1,5.1C109.9,348.4,115.5,349.2,120.2,351.7z M213.9,361.2c-0.7-1.6-2.2-1.9-3.9-2.7c-5-1.9-9.6-3.8-14.3-5.4
c-5.7-2-9.9-0.4-13.9,5c0.6,2.1,2.5,2.5,4.2,3.1c4.5,1.8,9,3.5,13.5,5.2C205.6,368.8,210.4,367.1,213.9,361.2z M181.2,347.9
c-0.7-1.6-2.2-1.9-3.9-2.7c-5-1.9-9.6-3.8-14.3-5.4c-5.7-2-9.9-0.4-13.9,5c0.6,2.1,2.5,2.5,4.2,3.1c4.5,1.8,9,3.5,13.5,5.2
C172.8,355.5,177.7,353.7,181.2,347.9z M149.3,363.5c6.4,3.6,12,2.5,17.5-2.4c0.7-3.1-1.6-3.6-3.3-4.3c-3.8-1.6-7.7-3.1-11.6-4.5
c-7.4-2.8-10.7-2-16.9,4.5C139.4,360.2,144.8,361,149.3,363.5z M212.9,388.7c3.2,1.4,6.1,1.4,9.2-0.9c1.9-1.7,5.4-1.9,4.9-4.8
c-0.4-2.3-3.3-2.4-5.3-3.2c-3.7-1.5-7.4-3-11.1-4.4c-6.2-2.3-10.6-0.8-14.9,5.1c0.7,1.6,2.3,2.2,3.8,2.8
C204,385.1,208.5,386.8,212.9,388.7z M108.5,335.7c-6-3.7-12.7-5.4-19.4-8.3c-6.3-2.2-9.3,2.2-13.7,5.2c5.4,4.7,11.6,5.7,17.1,8.2
C99,343.6,103.8,342.1,108.5,335.7z"/>
<path class="st2" d="M279.5,216.6c0.2-1.7,0.4-3.4,0.1-5.1c-0.1-20.1-9.2-42-27.5-52.2c-1.3-0.7-2.6-1.4-3.4-2.9
c0.4-2,2-2.4,3.4-2.8h0c3.1-0.9,6.1-1.9,9.2-2.9c1.6-0.5,3.3-1.1,4.9-1.6l0,0c6.2-1.9,12.3-3.9,18.4-5.9c2.8-0.9,5-0.6,7.5,1
c12.9,8.3,19.2,20.7,22.1,35.3c1.8,9.2,1.4,18.5,0,27.8c-0.6,4-2.1,6.4-6.4,7.7c-6.6,1.9-13.2,4.1-19.9,6.4l0,0l0,0l0,0l0,0h0l0,0
c-2.7,0.9-5.5,1.9-8.3,2.8C278.9,221.5,279.2,219,279.5,216.6z M296.5,203.2c2.4,2.8,5.3,2.2,8.4,0.2c4-4.8,4.2-8.7,0.9-11
c-3-2.1-7.4-1.1-9.5,2.4C294.7,197.6,294.4,200.6,296.5,203.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

View File

@@ -0,0 +1,16 @@
# Agent Computer Interface (ACI)
SWE-agent is built on the idea of an **Agent-Computer Interface** (ACI).
An ACI is essentially an a set of tools and interaction format that allows an agent to interact with a computer-based environment, to perform tasks, such as software engineering.
The SWE-agent repository is built to make it easy to invent new ACIs for agents to solve various tasks.
Just like how typical language models requires good prompt engineering, **good ACI design leads to much better results when using agents**. As we show in the SWE-agent [paper](https://arxiv.org/abs/2405.15793), a baseline agent without a well-tuned ACI does much worse than SWE-agent.
SWE-agent contains features that we discovered to be immensely helpful during the agent-computer interface design process:
1. We add a **linter** that runs when an edit command is issued, and do not let the edit command go through if the code isn't syntactically correct.
2. We supply the agent with a **special-built file viewer**, instead of having it just `cat` files. We found that this file viewer works best when displaying just 100 lines in each turn. The **file editor** that we built has commands for scrolling up and down and for performing a search within the file.
3. We supply the agent with a special-built full-directory string **searching command**. We found that it was important for this tool to succinctly list the matches- we simply list each file that had at least one match. Showing the model more context about each match proved to be too confusing for the model.
4. When commands have an empty output we return a message saying "Your command ran successfully and did not produce any output."
Read our paper for more details [here](https://arxiv.org/abs/2405.15793).

View File

@@ -0,0 +1,17 @@
# Architecture
This page walks you through the general architecture of the SWE-agent package. Want to just run it? Jump ahead to the [installation](../installation/index.md) or [usage](../usage/index.md) sections.
![architecture](../assets/architecture.png)
The central entry point to SWE-agent is the `sweagent` command line executable (1). It initializes an instance of the [`SWEEnv`](../reference/env.md) class (2) that manages the environment.
With SWE-agent 1.0, this class is now merely a thin wrapper around our [SWE-ReX](https://swe-rex.com) package.
Upon initialization, `SWEEnv` initializes the SWE-ReX _Deployment_. The Deployment either starts a local Docker container (4), or it starts the container on a remote system like modal or aws (3).
Within the container, SWE-ReX starts a shell session (5) that will be used to execute the commands.
SWE-ReX also installs the [ACI](aci.md) elements as [custom tools](../config/tools.md) (9) that are available to the shell session.
The second class that is initialized by is the [`Agent`](../reference/agent.md) (6). It can be configured with a yaml file (see [config](../config/config.md)). It's most important method is `forward()` which prompts the model and executes its action.
To prompt the model, the history (all prompts to the model together with actions and outputs) need to be sent to the LM. In order to make the best use of the context window of the model, the history gets compressed by a `HistoryProcessor` (7). The model output (8) is then interpreted by the `Agent` class (in particular, we use a [parser](../reference/parsers.md) to extract the action) and executed in the Shell session via `SWEEnv` (10).
For this, `SWEEnv` holds the SWE-ReX deployment class that talks to a server running within the docker container (11).

View File

@@ -0,0 +1,69 @@
# Project overview
This section of the documentation talks about the architecture and research goals of [SWE-agent](#swe-agent).
## SWE-agent <a name="swe-agent"></a>
SWE-agent turns LMs (e.g. GPT-4) into software engineering agents that can fix issues in GitHub repositories.
On [SWE-bench](https://github.com/SWE-bench/SWE-bench), SWE-agent resolves **12.29%** of issues, achieving the state-of-the-art performance on the full test set.
We accomplish our results by designing simple LM-centric commands and feedback formats to make it easier for the LM to browse the repository, view, edit and execute code files. We call this an 🤖 **Agent-Computer Interface (ACI)**.
Read more about the ACI [here](aci.md).
SWE-agent is built and maintained by researchers from Princeton University.
For a quick introduction, watch the following video:
<iframe width="560" height="315" src="https://www.youtube.com/embed/CeMtJ4XObAM?si=W2tyY9EpEe-v12EU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
A longer lecture touching on the project's motivation, research findings, as well as providing a hands-on tutorial on how to install, use, and configure SWE-agent is provided here:
<iframe width="560" height="315" src="https://www.youtube.com/embed/d9gcXpiiDao" title="NeurIPS Hacker Cup AI: SWEAgent" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
For in-depth information, read our [paper](https://arxiv.org/abs/2405.15793). If you found this work helpful, please consider using the following citation:
```bibtex
@inproceedings{yang2024sweagent,
title={{SWE}-agent: Agent-Computer Interfaces Enable Automated Software Engineering},
author={John Yang and Carlos E Jimenez and Alexander Wettig and Kilian Lieret and Shunyu Yao and Karthik R Narasimhan and Ofir Press},
booktitle={The Thirty-eighth Annual Conference on Neural Information Processing Systems},
year={2024},
url={https://arxiv.org/abs/2405.15793}
}
```
## SWE-agent <span class="enigma">EnIGMA</span> <a name="enigma"></a>
!!! warning "Compatibility"
SWE-agent <span class="enigma">EnIGMA</span> is currently only available for SWE-agent v0.7.0.
SWE-agent <span class="enigma">EnIGMA</span> adds advanced **offensive cybersecurity capabilities**.
On the [NYU CTF benchmark](https://github.com/NYU-LLM-CTF/LLM_CTF_Database), EnIGMA solves **13.5%** of the capture the flag (CTF) challenges, achieving the state-of-the-art performance on the full test set of 200 challenges, **surpassing previous agents by more than 3x** ([leaderboard](https://enigma-agent.com#results)).
We accomplish our results by extending the [🤖 ACIs](../background/aci.md) concept first introduced in SWE-agent, to the cybersecurity domain. We establish the novel [**:gear: Interactive Agent Tools** (IATs)](https://swe-agent.com/0.7/background/iat/) concept, which enables our agent to use interactive tools such as a debugger, in a multitasking way such that the agent still has access to the main shell while using the debugger.
We also use a new **Summarizer** concept integrated into the agent to deal with long context. Read more about our different summarizers [here](https://swe-agent.com/0.7/config/summarizers/).
Specific [demonstrations](../config/demonstrations.md) were built per each CTF category (cryptography, reverse-engineering, forensics, ...), to enhance the model ability to solve new tasks from the same category.
EnIGMA is built and maintained by researchers from Tel-Aviv University, New York University and Princeton University.
For a quick introduction, watch the following video:
<iframe width="560" height="315" src="https://www.youtube.com/embed/IJxqOsNFiCc?si=xtIxyCcriM9FJexK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
For all the details, read our [paper](https://arxiv.org/abs/2409.16165). If you found this work helpful, please consider using the following citation:
```bibtex
@misc{abramovich2024enigmaenhancedinteractivegenerative,
title={EnIGMA: Enhanced Interactive Generative Model Agent for CTF Challenges},
author={Talor Abramovich and Meet Udeshi and Minghao Shao and Kilian Lieret and Haoran Xi and Kimberly Milner and Sofija Jancheska and John Yang and Carlos E. Jimenez and Farshad Khorrami and Prashanth Krishnamurthy and Brendan Dolan-Gavitt and Muhammad Shafique and Karthik Narasimhan and Ramesh Karri and Ofir Press},
year={2024},
eprint={2409.16165},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2409.16165},
}
```

View File

@@ -0,0 +1,72 @@
# Configuration
This page contains details describing how to write your own configurations to control how agents can interact with the `SWEEnv` environment.
A configuration is represented in one or more `.yaml` files, specified by the `--config` flag in the [command line interface](../usage/cl_tutorial.md), allowing you to...
* Define the [**tools**](tools.md) that agents may use to traverse + modify a codebase.
* Write [**prompts**](templates.md) that are deterministically/conditionally shown to the agent over the course of a single trajectory.
* Use [**demonstrations**](demonstrations.md) to guide the agent's behavior.
* Change the [**model behavior**](models.md) of the agent.
* Control the **input/output interface** that sits between the agent and the environment
!!! tip "Default config files"
Our default config files are in the [`config/`](https://github.com/SWE-agent/SWE-agent/tree/main/config) directory.
For multimodal support, use `config/default_mm_with_images.yaml` which includes image processing capabilities.
To use a config file, you can use the `--config` flag in the command line interface.
```bash
sweagent run --config config/your_config.yaml
sweagent run-batch --config config/your_config.yaml
```
You can also use more than one config file, e.g., `--config config/default.yaml --config my_config.yaml`
(note that you need to repeat `--config`).
Config options are merged in a nested way.
This is the current default configuration file which is loaded when no `--config` flag is provided:
<details>
<summary><code>default.yaml</code></summary>
```yaml title="config/default.yaml"
--8<-- "config/default.yaml"
```
</details>
!!! hint "Relative paths"
Relative paths in config files are resolved to the `SWE_AGENT_CONFIG_ROOT` environment variable (if set)
or the SWE-agent repository root.
## Multimodal Configuration
For working with images and vision-capable models, SWE-agent provides specialized multimodal configuration options.
These options are best demonstrated in `default_mm_with_images.yaml`.
This configuration enables full image processing capabilities:
- **SWE-bench Multimodal Image processing**: Downloads and converts GitHub issue images to base64 format for SWE-bench Multimodal instances.
- **Extended observation length**: Increases observation token limits to accommodate images
- **Image tools**: Includes `image_tools` bundle for viewing images
- **Web browsing tools**: Includes `web_browser` bundle for using web browsers
- **History processing**: Enables `image_parsing` history processor for parsing
### Key Multimodal Settings
```yaml
agent:
templates:
disable_image_processing: false # enable/disable image processing
max_observation_length: 10_000_000 # increased for images
tools:
bundles:
- path: tools/image_tools # image viewing capabilities
- path: tools/web_browser # browser automation tools
history_processors:
- type: image_parsing # process image tools outputs (required for tools to work)
```
See the [multimodal guide](../usage/multimodal.md) for detailed configuration options.

View File

@@ -0,0 +1,41 @@
# Changing the demonstrations
!!! warning "Under construction"
We're in the process of updating this page to reflect SWE-agent 1.0.0.
An important way to show LMs how to use commands and interact with the environment is through providing a demonstration - which is basically a completed [trajectory](../usage/trajectories.md) that the LM can learn from.
For simplicity we only ingest demonstrations in the from of a trajectory file. However, since trajectory files are usually JSON, you can convert them to yaml using the `sweagent traj-to-demo` command to be more human-readable and easier to edit.
Demo (yaml) files are stored in the `demos/` directory by default and consist primarily of the sequence of actions that an LM would need to take to complete a task. It's important that your demo have the proper format to be parsed by SWE-agent and your config.
## Manually creating a custom trajectory <a name="manual"></a>
You can manually generate a trajectory by running the agent with `--agent.model.name=human_thought`.
This lets you input, at each turn, the thought (ending with END_THOUGHT) and then the action (a single command).
You should then convert that trajectory into a demonstration as shown below.
To edit text in `human_thought` mode with the traditional line-based editor:
1. Run the command `edit edit_start_line:edit_end_line`
2. Write the text you want to insert. Feel free to write the text across multiple lines.
3. Press `return` then write `end_of_edit` and then press `return` again to submit the edit.
If you would like to run `human_thought` mode without having to type in a thought at each turn (for debugging for example), use `--agent.model.name=human`.
## Converting an existing trajectory into a demonstration
Here's how you can make a demo from an existing trajectory file (like the one created from the previous step):
1. Find a basic trajectory that you already like and want to use as the basis for your demo.
For instance, consider the `.traj` files in the [`trajectories/demonstrations/` folder](https://github.com/SWE-agent/SWE-agent/tree/main/trajectories/demonstrations)
or find the trajectory from the previous step (the path will be printed at the bottom).
2. Run `sweagent traj-to-demo --traj_path<path to trajectory file.traj>` to convert the trajectory to a demo.
This demo will be saved as a readable yaml file in the `demos/` directory.
3. Edit the demo by hand to make it work for your particular use case and configuration.
4. (Optional) Run `sweagent run-replay --traj_path <path to demo>` to execute the actions of the demo, have the system generate the execution output, and ensure that it works as expected.
5. Inspect the resulting trajectory to ensure it was executed correctly.
6. Specify the path to your demonstration in your [config file](config.md)
{% include-markdown "../_footer.md" %}

View File

@@ -0,0 +1,24 @@
# Environment variables
This page details all environment variables that are currently in use by SWE-agent.
* All API keys (for LMs and GitHub) can be set as an environment variable. See [here](../installation/keys.md) for more information.
* `SWE_AGENT_CONFIG_ROOT`: Used to resolve relative paths in the [config](config.md). E.g., if `SWE_AGENT_CONFIG_ROOT=/a/b/c` and you set
add a tool bundle as `tools/my_bundle`, it will be resolved to `/a/b/c/tools/my_bundle`. The default of `SWE_AGENT_CONFIG_ROOT` is the
the `swe-agent` package directory.
The following variables can only be set as environment variables, not in the config file.
If you install `swe-agent` without the `--editable` option, please make sure to set
* `SWE_AGENT_CONFIG_DIR` (default `<PACKAGE>/config`)
* `SWE_AGENT_TOOLS_DIR` (default `<PACKAGE>/tools`)
* `SWE_AGENT_TRAJECTORY_DIR` (default `<PACKAGE>/trajectories`)
In addition, the following env variables allow to configure the logging.
* `SWE_AGENT_LOG_TIME`: Add timestamps to log
* `SWE_AGENT_LOG_STREAM_LEVEL`: Level of logging that is shown on the command line interface (`TRACE` being a custom level below `DEBUG`). Will have no effect for `run-batch`.
!!! hint "Persisting environment variables"
Most environment variables can also be added to `.env` instead.

View File

@@ -0,0 +1,33 @@
# Environments
SWE-agent runs on docker images (`python:3.11` by default).
If you are running on SWE-Bench, every instance has a docker image that we pull from dockerhub.
Here's an example of a simple custom docker environment:
```dockerfile title="tiny.Dockerfile"
FROM python:3.11.10-bullseye # (1)!
ARG DEBIAN_FRONTEND=noninteractive # (2)!
ENV TZ=Etc/UTC
WORKDIR /
# Install swe-rex for faster startup
RUN pip install pipx
RUN pipx install swe-rex
RUN pipx ensurepath
ENV PATH="$PATH:/root/.local/bin/"
# Install any extra dependencies
RUN pip install flake8
SHELL ["/bin/bash", "-c"]
```
1. This is the base image that we're starting from
2. Important to disable any interactive prompts when installing things
Build it with `docker build -f tiny.Dockerfile -t swe-agent-tiny .`.
Now you can run it in the agent with `sweagent run --env.deployment.image swe-agent-tiny ...`

View File

@@ -0,0 +1 @@
config.md

View File

@@ -0,0 +1,144 @@
# Models
!!! tip "Required reading"
See [the model section](../installation/keys.md) in the installation guide for a primer before reading the rest of this page.
!!! tip "Related pages"
* See [the model config reference](../reference/model_config.md) for the full list of model options
* To control how the agent extracts the actions from the model response, see the [action parsers](../reference/parsers.md) reference
## Notes for specific models
### Local models
See [the model section](../installation/keys.md) in the installation guide.
Remember to unset spending limits and configure the action parser if you cannot support function calling.
For "cost" tracking with local models, you can optionally provide a custom `litellm_model_registry` file in your configuration.
This allows you to define custom pricing information for your local models instead of disabling cost limits entirely.
See the [local models section](../installation/keys.md#custom-model-registry-for-cost-tracking) for detailed instructions.
### Anthropic Claude
Prompt caching makes SWE-agent several times more affordable. While this is done automatically for models like `gpt-4o`,
care has to be taken for Anthropic Claude, as you need to manually set the cache break points.
For this, include the following history processor:
```yaml
agent:
history_processors:
- type: cache_control
last_n_messages: 2
```
!!! warning "Other history processors"
Other history processors might interfere with the prompt caching
if you are not careful.
However, if your history processor is only modifying the last observation,
you can combine as done [here](https://github.com/SWE-agent/SWE-agent/blob/main/config/sweagent_heavy.yaml).
Anthropic Claude gives you 4 cache break points per key.
You need two of them for a single agent run (because the break points are both used to retrieve and set the cache).
Therefore, you can only run two parallel instances of SWE-agent with [`run-batch`](../usage/batch_mode.md) per key.
To support more parallel running instances, supply multiple keys as described below.
We recommend that you check how often you hit the cache. A very simple way is to go to your trajectory directory and grep like so:
```bash
grep -o "cached_tokens=[0-9]*" django__django-11299.debug.log
```
Note that the maximum number of output tokens of Claude 3.7/4 can be extended with extra headers.
See [this issue in litellm](https://github.com/BerriAI/litellm/issues/8984) and and [swe-agent PR #1035](https://github.com/SWE-agent/SWE-agent/issues/1035)
for omore information.
Since [#1036](https://github.com/SWE-agent/SWE-agent/pull/1036) you can also manually set the maximum output tokens and override the information
from `litellm`.
To use extended thinking, you can set the following in your config:
```yaml
agent:
name: 'claude-sonnet-4-20250514'
model:
temperature: 1.
completion_kwargs:
reasoning_effort: 'high'
```
### o1
Make sure to set
```yaml
agent:
model:
top_p: null
temperature: 1.
```
as other values aren't supported by `o1`.
## Using multiple keys
We support rotating through multiple keys for [`run-batch`](../usage/batch_mode.md). For this, concatenate all keys with `:::` and set them via the `--agent.model.api_key` flag.
Every thread (i.e., every parallel running agent that is working on one task instance) will stick to one key during the entire run, i.e., this does not break prompt caching.
### Custom cost tracking
If you want to track costs for models not in the default litellm registry, you can provide a custom model registry file. This is particularly useful for:
- New models not yet supported by litellm's default registry
- Overriding default / old cost values in litellm
- Local models that you want to track "costs" for, to compare to other results
This file will override entries in the [litellm community model cost file](https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json).
Create a JSON file with your model's cost information following the litellm model registry format:
```json title="my_model_registry.json"
{
"ollama/llama2": {
"max_tokens": 8192,
"input_cost_per_token": 0.00002,
"output_cost_per_token": 0.00006,
"litellm_provider": "ollama",
"mode": "chat"
},
"my-custom-provider/my-new-model": {
"max_tokens": 8192,
"max_input_tokens": 8192,
"max_output_tokens": 8192,
"input_cost_per_token": 0.000001,
"output_cost_per_token": 0.000002,
"litellm_provider": "openai",
"mode": "chat"
}
}
```
Then specify this registry in your config:
```yaml title="config/your_config.yaml"
agent:
model:
litellm_model_registry: "my_model_registry.json" # Path to your custom registry
...
```
If you need to modify the tokenizer that is used when calculating costs, you can set the `custom_tokenizer` setting in the [model config](../reference/model_config.md).
## Models for testing
We also provide models for testing SWE-agent without spending any credits
* `HumanModel` and `HumanThoughtModel` will prompt for input from the user that stands in for the output of the LM. This can be used to create new [demonstrations](../config/demonstrations.md#manual).
* `ReplayModel` takes a trajectory as input and "replays it"
* `InstantEmptySubmitTestModel` will create an empty `reproduce.py` and then submit
{% include-markdown "../_footer.md" %}

Some files were not shown because too many files have changed in this diff Show More