feat: add output truncation and offset paging to all large-output tools
- coding_tools: list_files (max_entries=200, sorted), run_command (max_chars=8000, output_offset), grep_search (max_lines=100, offset); added _truncate_output helper for run_command paging - pr_tools: get_pull_request_diff / get_pull_request_patch now truncate at 15k chars with hunk-boundary awareness and char_offset paging; get_pull_request_comments gains limit/offset paging - issue_tools: get_issue_comments gains limit/offset paging - file_tools: get_file_content / get_file_content_with_ref now paginate by line (offset=1, limit=250), matching existing read_file convention; added _paginate_lines helper - research_tools: fetch_url gains char_offset parameter; _smart_truncate now slices from an offset and embeds next char_offset in the footer - gitea_tools facade: all new params threaded through
This commit is contained in:
@@ -26,10 +26,34 @@ class IssueTools:
|
||||
except Exception as e:
|
||||
return f"Error closing issue: {str(e)}"
|
||||
|
||||
def get_issue_comments(self, owner: str, repo: str, issue_number: int) -> str:
|
||||
def get_issue_comments(
|
||||
self,
|
||||
owner: str,
|
||||
repo: str,
|
||||
issue_number: int,
|
||||
limit: int = 20,
|
||||
offset: int = 0,
|
||||
) -> str:
|
||||
"""Get comments on an issue with optional paging.
|
||||
|
||||
Args:
|
||||
limit: Maximum number of comments to return (default 20).
|
||||
offset: Zero-based comment index to start from (default 0).
|
||||
"""
|
||||
try:
|
||||
comments: list[CommentModel] = self._client.get_issue_comments(owner, repo, issue_number)
|
||||
return json.dumps([c.model_dump() for c in comments], indent=2)
|
||||
comments: list[CommentModel] = self._client.get_issue_comments(
|
||||
owner, repo, issue_number
|
||||
)
|
||||
total: int = len(comments)
|
||||
page: list[CommentModel] = comments[offset : offset + limit]
|
||||
result: str = json.dumps([c.model_dump() for c in page], indent=2)
|
||||
if total > offset + limit:
|
||||
next_offset: int = offset + limit
|
||||
result += (
|
||||
f"\n\n[{total} comments total — showing {offset}–{offset + len(page)}. "
|
||||
f"Re-call with offset={next_offset} to see more.]"
|
||||
)
|
||||
return result
|
||||
except Exception as e:
|
||||
return f"Error getting issue comments: {str(e)}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user