Skip to content

Commit f084464

Browse files
committed
feat(cli): v0.2.0 - Agentic codebase access for PR reviews
- Added repo_tools.py with FETCH_FILE, LIST_DIR, SEARCH_CODE support - RLM can now fetch files outside the diff during review - Smart filename search using GitHub's filename: qualifier - Improved step progress display with reasoning/code/output
1 parent fe5e72b commit f084464

6 files changed

Lines changed: 571 additions & 35 deletions

File tree

npx/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

npx/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "asyncreview",
3-
"version": "0.1.0",
3+
"version": "0.2.0",
44
"description": "AI-powered GitHub PR/Issue reviews from the command line",
55
"type": "module",
66
"bin": {
@@ -45,4 +45,4 @@
4545
"@types/node": "^20.11.0",
4646
"@types/inquirer": "^9.0.7"
4747
}
48-
}
48+
}

npx/python/cli/github_fetcher.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ async def fetch_pr(owner: str, repo: str, number: int) -> dict:
148148
"state": pr_data.get("state", "open"),
149149
"base_branch": pr_data["base"]["ref"],
150150
"head_branch": pr_data["head"]["ref"],
151+
"head_sha": pr_data["head"]["sha"], # For consistent file reads
151152
"files": files,
152153
"commits": commits_list,
153154
"comments": comments_list,

npx/python/cli/main.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,28 @@
3131
console = Console()
3232

3333

34-
def print_step(step_num: int, reasoning: str, code: str):
34+
def print_step(step_num: int, reasoning: str, code: str, output: str = ""):
3535
"""Print RLM step progress (when not in quiet mode)."""
36+
from rich.syntax import Syntax
37+
3638
console.print(f"\n[cyan]Step {step_num}[/cyan]", style="bold")
39+
40+
# Show reasoning
3741
if reasoning:
38-
# Truncate for display
39-
display = reasoning[:200] + "..." if len(reasoning) > 200 else reasoning
40-
console.print(f"[dim]{display}[/dim]")
42+
reasoning_display = reasoning[:800] + "..." if len(reasoning) > 800 else reasoning
43+
console.print(f"[dim]💭 {reasoning_display}[/dim]")
44+
45+
# Show executed code with syntax highlighting
46+
if code and code.strip():
47+
code_display = code[:2000] if len(code) > 2000 else code
48+
console.print("\n[yellow]📝 Code:[/yellow]")
49+
syntax = Syntax(code_display, "python", theme="monokai", line_numbers=False)
50+
console.print(syntax)
51+
52+
# Show output (truncated)
53+
if output and output.strip():
54+
output_display = output[:500] + "..." if len(output) > 500 else output
55+
console.print(f"\n[green]📤 Output:[/green] [dim]{output_display}[/dim]")
4156

4257

4358
def print_info(message: str):

0 commit comments

Comments
 (0)