From 71a8ab250a50c7f65061fdbe2f9a5324c5cd437f Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:43:16 +0000 Subject: [PATCH 1/2] Add assignee_id parameter to search_issues tool --- src/codegen/extensions/langchain/tools.py | 11 +++++++++-- src/codegen/extensions/tools/github/search.py | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/codegen/extensions/langchain/tools.py b/src/codegen/extensions/langchain/tools.py index 0749384a4..981057452 100644 --- a/src/codegen/extensions/langchain/tools.py +++ b/src/codegen/extensions/langchain/tools.py @@ -518,20 +518,27 @@ class GithubSearchIssuesInput(BaseModel): """Input for searching GitHub issues.""" query: str = Field(..., description="Search query string to find issues") + assignee_id: str | None = Field(default=None, description="Optional GitHub username or ID to filter issues by assignee") class GithubSearchIssuesTool(BaseTool): """Tool for searching GitHub issues.""" name: ClassVar[str] = "search_issues" - description: ClassVar[str] = "Search for GitHub issues/PRs using a query string from pygithub, e.g. 'is:pr is:open test_query'" + description: ClassVar[str] = "Search for GitHub issues/PRs using a query string from pygithub, e.g. 'is:pr is:open test_query'. You can also filter by assignee using the assignee_id parameter." args_schema: ClassVar[type[BaseModel]] = GithubSearchIssuesInput codebase: Codebase = Field(exclude=True) def __init__(self, codebase: Codebase) -> None: super().__init__(codebase=codebase) - def _run(self, query: str) -> str: + def _run(self, query: str, assignee_id: str | None = None) -> str: + # If assignee_id is provided, add it to the query + if assignee_id: + # Check if the query already contains an assignee filter + if "assignee:" not in query: + query = f"{query} assignee:{assignee_id}" + result = search(self.codebase, query) return result.render() diff --git a/src/codegen/extensions/tools/github/search.py b/src/codegen/extensions/tools/github/search.py index b83504937..aabe9eee1 100644 --- a/src/codegen/extensions/tools/github/search.py +++ b/src/codegen/extensions/tools/github/search.py @@ -36,11 +36,13 @@ def search( To search for pull requests specifically, include 'is:pr' in your query. To search for issues specifically, include 'is:issue' in your query. If neither is specified, both issues and PRs will be included in results. + + To filter by assignee, include 'assignee:USERNAME' in your query or use the assignee_id parameter + in the search_issues tool. Args: codebase: The codebase to operate on - query: Search query string (e.g. "is:pr label:bug", "is:issue is:open") - state: Filter by state ("open", "closed", or "all") + query: Search query string (e.g. "is:pr label:bug", "is:issue is:open", "assignee:username") max_results: Maximum number of results to return """ try: From aa83ae14a3d0a1afa2cb7752ca999f9ea598eb8f Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:44:08 +0000 Subject: [PATCH 2/2] Automated pre-commit update --- src/codegen/extensions/langchain/tools.py | 2 +- src/codegen/extensions/tools/github/search.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codegen/extensions/langchain/tools.py b/src/codegen/extensions/langchain/tools.py index 981057452..3ccd59072 100644 --- a/src/codegen/extensions/langchain/tools.py +++ b/src/codegen/extensions/langchain/tools.py @@ -538,7 +538,7 @@ def _run(self, query: str, assignee_id: str | None = None) -> str: # Check if the query already contains an assignee filter if "assignee:" not in query: query = f"{query} assignee:{assignee_id}" - + result = search(self.codebase, query) return result.render() diff --git a/src/codegen/extensions/tools/github/search.py b/src/codegen/extensions/tools/github/search.py index aabe9eee1..dcf13a54f 100644 --- a/src/codegen/extensions/tools/github/search.py +++ b/src/codegen/extensions/tools/github/search.py @@ -36,7 +36,7 @@ def search( To search for pull requests specifically, include 'is:pr' in your query. To search for issues specifically, include 'is:issue' in your query. If neither is specified, both issues and PRs will be included in results. - + To filter by assignee, include 'assignee:USERNAME' in your query or use the assignee_id parameter in the search_issues tool.