mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-25 21:36:52 +08:00
136 lines
3.3 KiB
Python
136 lines
3.3 KiB
Python
# flake8: noqa: E501
|
|
|
|
import asyncio
|
|
|
|
from openhands.resolver.issue_resolver import IssueResolver
|
|
|
|
|
|
def main() -> None:
|
|
import argparse
|
|
|
|
def int_or_none(value: str) -> int | None:
|
|
if value.lower() == 'none':
|
|
return None
|
|
else:
|
|
return int(value)
|
|
|
|
parser = argparse.ArgumentParser(description='Resolve a single issue.')
|
|
parser.add_argument(
|
|
'--selected-repo',
|
|
type=str,
|
|
required=True,
|
|
help='repository to resolve issues in form of `owner/repo`.',
|
|
)
|
|
parser.add_argument(
|
|
'--token',
|
|
type=str,
|
|
default=None,
|
|
help='token to access the repository.',
|
|
)
|
|
parser.add_argument(
|
|
'--username',
|
|
type=str,
|
|
default=None,
|
|
help='username to access the repository.',
|
|
)
|
|
parser.add_argument(
|
|
'--base-container-image',
|
|
type=str,
|
|
default=None,
|
|
help='base container image to use.',
|
|
)
|
|
parser.add_argument(
|
|
'--runtime-container-image',
|
|
type=str,
|
|
default=None,
|
|
help='Container image to use.',
|
|
)
|
|
parser.add_argument(
|
|
'--runtime',
|
|
type=str,
|
|
default=None,
|
|
help='Runtime environment to use (default: docker).',
|
|
)
|
|
parser.add_argument(
|
|
'--max-iterations',
|
|
type=int,
|
|
default=50,
|
|
help='Maximum number of iterations to run.',
|
|
)
|
|
parser.add_argument(
|
|
'--issue-number',
|
|
type=int,
|
|
required=True,
|
|
help='Issue number to resolve.',
|
|
)
|
|
parser.add_argument(
|
|
'--comment-id',
|
|
type=int_or_none,
|
|
required=False,
|
|
default=None,
|
|
help='Resolve a specific comment',
|
|
)
|
|
parser.add_argument(
|
|
'--output-dir',
|
|
type=str,
|
|
default='output',
|
|
help='Output directory to write the results.',
|
|
)
|
|
parser.add_argument(
|
|
'--llm-model',
|
|
type=str,
|
|
default=None,
|
|
help='LLM model to use.',
|
|
)
|
|
parser.add_argument(
|
|
'--llm-api-key',
|
|
type=str,
|
|
default=None,
|
|
help='LLM API key to use.',
|
|
)
|
|
parser.add_argument(
|
|
'--llm-base-url',
|
|
type=str,
|
|
default=None,
|
|
help='LLM base URL to use.',
|
|
)
|
|
parser.add_argument(
|
|
'--prompt-file',
|
|
type=str,
|
|
default=None,
|
|
help='Path to the prompt template file in Jinja format.',
|
|
)
|
|
parser.add_argument(
|
|
'--repo-instruction-file',
|
|
type=str,
|
|
default=None,
|
|
help='Path to the repository instruction file in text format.',
|
|
)
|
|
parser.add_argument(
|
|
'--issue-type',
|
|
type=str,
|
|
default='issue',
|
|
choices=['issue', 'pr'],
|
|
help='Type of issue to resolve, either open issue or pr comments.',
|
|
)
|
|
parser.add_argument(
|
|
'--is-experimental',
|
|
type=lambda x: x.lower() == 'true',
|
|
help='Whether to run in experimental mode.',
|
|
)
|
|
parser.add_argument(
|
|
'--base-domain',
|
|
type=str,
|
|
default=None,
|
|
help='Base domain for the git server (defaults to "github.com" for GitHub, "gitlab.com" for GitLab, "bitbucket.org" for Bitbucket, and "dev.azure.com" for Azure DevOps)',
|
|
)
|
|
|
|
my_args = parser.parse_args()
|
|
|
|
issue_resolver = IssueResolver(my_args)
|
|
asyncio.run(issue_resolver.resolve_issue())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|