Skip to content

Commit de51a20

Browse files
committed
Initial Commit
1 parent 40178ba commit de51a20

49 files changed

Lines changed: 14323 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Gemini API Key (required)
2+
# GitHub Token (required for higher rate limits)
3+
GEMINI_API_KEY=your-gemini-api-key
4+
GITHUB_TOKEN=your-github-token
5+
6+
# LLM Models (LiteLLM format)
7+
MAIN_MODEL=gemini/gemini-3-pro-preview
8+
SUB_MODEL=gemini/gemini-3-flash-preview
9+
10+
# RLM Configuration
11+
MAX_ITERATIONS=20
12+
MAX_LLM_CALLS=25
13+
14+
# Repo Snapshot Constraints
15+
MAX_FILE_BYTES=200000
16+
MAX_TOTAL_BYTES=5000000
17+
18+
# Optional: Include/Exclude patterns (comma-separated)
19+
# INCLUDE_GLOBS=src/**,lib/**
20+
# EXCLUDE_GLOBS=*.test.ts,*.spec.ts
21+
22+
# Cache directory
23+
CR_CACHE_DIR=~/.cr
24+
25+
# API Server (for Part 2)
26+
API_HOST=127.0.0.1
27+
API_PORT=8000
28+

.gitignore

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
*.egg-info/
20+
.installed.cfg
21+
*.egg
22+
23+
# Virtual environments
24+
.venv/
25+
venv/
26+
ENV/
27+
env/
28+
29+
# Environment variables (contains secrets!)
30+
.env
31+
32+
# IDE
33+
.idea/
34+
.vscode/
35+
*.swp
36+
*.swo
37+
*~
38+
39+
# OS
40+
.DS_Store
41+
Thumbs.db
42+
43+
# Deno
44+
node_modules/
45+
deno.lock
46+
47+
# Test artifacts
48+
.pytest_cache/
49+
.coverage
50+
htmlcov/
51+
.tox/
52+
.nox/
53+
54+
# Traces and cache
55+
.cr/
56+
57+
# Logs
58+
*.log
59+

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Changelog
2+
3+
## [0.1.0] - 2026-01-24
4+
5+
### Added
6+
- Initial OSS release
7+
- GitHub PR loading and diff viewing
8+
- Automatic bug detection with Gemini RLM
9+
- Interactive Q&A about code changes
10+
- Web UI with real-time streaming
11+
- CLI for terminal-based reviews

CONTRIBUTING.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Contributing to AsyncReview
2+
3+
## Development Setup
4+
5+
```bash
6+
# Backend
7+
uv pip install -e ".[dev]"
8+
9+
# Frontend
10+
cd web && bun install
11+
```
12+
13+
## Code Style
14+
15+
**Python:** ruff + mypy (config in pyproject.toml)
16+
```bash
17+
ruff check .
18+
mypy cr/
19+
```
20+
21+
**TypeScript:** Follow existing patterns.
22+
23+
## Testing
24+
25+
```bash
26+
# Backend
27+
uv run pytest tests/ -v
28+
29+
# Frontend
30+
cd web && bun test
31+
```
32+
33+
## Pull Requests
34+
35+
1. Fork and create a feature branch
36+
2. Add tests for new features
37+
3. Ensure all tests pass
38+
4. Submit PR with clear description

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 AsyncReview Contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,60 @@
11
# AsyncReview
22
Open-source Agentic code review tool inspired by DevinReview, using Recursive Language Models (RLM)
3+
4+
## Prerequisites
5+
6+
- **Python 3.11+**
7+
- **Node.js** (or Bun)
8+
- **uv** (recommended for Python package management)
9+
- **Deno** (Required for sandboxed code execution)
10+
11+
## Setup
12+
13+
1. **Install Backend (cr)**
14+
```bash
15+
# Using uv (Recommended)
16+
uv pip install -e .
17+
18+
# Or standard pip
19+
pip install -e .
20+
```
21+
22+
2. **Install Frontend (web)**
23+
```bash
24+
cd web
25+
bun install # or npm install
26+
```
27+
28+
3. **Environment Setup**
29+
Copy `.env.example` to `.env` and fill in your API keys:
30+
```bash
31+
cp .env.example .env
32+
```
33+
**Required variables:**
34+
- `GEMINI_API_KEY`: Your Google Gemini API key.
35+
- `GITHUB_TOKEN`: GitHub Token (for PR access & higher rate limits).
36+
37+
## Running
38+
39+
### 1. Start the API Server
40+
```bash
41+
cr serve
42+
# or
43+
uv run uvicorn cr.server:app --reload
44+
```
45+
Server runs at `http://127.0.0.1:8000`.
46+
47+
### 2. Start the Web UI
48+
```bash
49+
cd web
50+
bun dev
51+
```
52+
Open `http://localhost:3000` in your browser.
53+
54+
## CLI Usage
55+
56+
You can also use the tool directly from the terminal:
57+
58+
- **Interactive Q&A**: `cr ask`
59+
- **One-shot Review**: `cr review -q "What does this repo do?"`
60+
- **Help**: `cr --help`

cr/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Gemini RLM Codebase Review Tool"""
2+
3+
__version__ = "0.1.0"
4+

0 commit comments

Comments
 (0)