reenzar 0.1.2
LangGraph-based coding agent CLI with multi-provider routing
Requires Python: >=3.11
Keywords: ai, agent, cli, langgraph, automation

# Reenzar Coding Agent

Ini CLI coding agent berbasis LangGraph. Fokusnya simpel: bantu bikin rencana kerja, generate patch, kasih review, atau tanya jawab soal repo. Routing model bisa pindah antar provider (Google AI Studio, OpenRouter, Z.ai) lewat config.

Catatan singkat: tanpa API key, perintah yang butuh model akan gagal dengan pesan error. Jadi pastikan key sudah diisi dulu.

## Yang sudah jalan
- Pipeline LangGraph: plan -> implement -> critic -> summary.
- Repo indexer buat ngasih konteks file yang relevan ke model.
- CLI + REPL interaktif (banner, prompt git-aware, status provider, tips).
- Progress indicator detail buat operasi yang lama.
- Artifacts otomatis ke .reenzar-memory/ (plan, summary, patch, log).
- Deteksi request pembuatan file dari response model.
- Konfigurasi provider, UI, dan tips lewat file YAML.

## Yang masih WIP / catatan
- Output patch tergantung kualitas model, jadi selalu cek diff dulu.
- Default model, prompt, dan UX masih bisa berubah.
- Sebagian fitur butuh koneksi dan API key valid.

## Quick start
### Install (PyPI)
Pilih salah satu:
- `pipx install reenzar` (disarankan untuk CLI)
- `pip install reenzar`

Kalau mau ambil versi terbaru langsung dari repo:
- `pipx install git+https://github.com/Erik-cpu-create/reenzar-coding-agent.git`
- `pip install git+https://github.com/Erik-cpu-create/reenzar-coding-agent.git`

### Windows (PowerShell)
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
copy .env.example .env
```

Edit .env dan isi key. Atau pakai helper:
```powershell
reenzar auth GOOGLE_API_KEY "your_key"
reenzar auth OPENROUTER_API_KEY "your_key"
reenzar auth ZAI_API_KEY "your_key"
```

Coba jalanin:
```powershell
reenzar init
reenzar plan "rapikan struktur folder"
```

### macOS/Linux
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env
```

## Gemini OAuth (opsional)
Kalau mau pakai OAuth (bukan API key) untuk Gemini:
1. Buat OAuth Client di Google Cloud Console (Desktop App).
2. Download `client_secret.json`, simpan sebagai `config/google_oauth_client.json` (file ini jangan di-commit).
3. Isi `GOOGLE_CLOUD_PROJECT` di `.env`.
4. Ubah `auth_mode: oauth` di `config/default.yaml` untuk `google_ai_studio`.
5. Jalankan:
   ```bash
   reenzar auth --oauth google
   ```

Token akan disimpan ke OS keyring (fallback ke `.reenzar-memory/google_oauth_token.json` kalau keyring tidak tersedia).

## Gemini CLI OAuth (eksperimental)
Ini flow alternatif yang mengikuti Gemini CLI (Google login + Code Assist). Cocok kalau kamu mau coba akses kuota/plan dari akun Google-mu.
1. Ubah `auth_mode: gemini_cli` di `config/default.yaml` untuk `google_ai_studio`.
2. (Opsional tapi disarankan) set `GOOGLE_CLOUD_PROJECT` atau `OPENCODE_GEMINI_PROJECT_ID` di `.env`.
3. Jalankan:
   ```bash
   reenzar auth --oauth gemini-cli
   ```

Flow ini memakai OAuth "Gemini CLI" dan endpoint Code Assist. Ini bukan jalur API resmi standar, jadi bisa berubah sewaktu-waktu.
Token disimpan ke OS keyring (fallback ke `.reenzar-memory/gemini_cli_oauth.json`).

## Codex OAuth (eksperimental)
Mode ini pakai login ChatGPT (Codex OAuth) dan backend Codex. Cocok buat yang punya langganan ChatGPT Plus/Pro dan mau coba akses Codex tanpa API key.
1. Ubah `auth_mode: codex_oauth` di `config/default.yaml` untuk `openai_codex`.
2. Jalankan:
   ```bash
   reenzar auth --oauth codex
   ```

Token disimpan ke OS keyring (fallback ke `.reenzar-memory/codex_oauth.json`).

## Perintah penting
- `reenzar` menjalankan mode interaktif (REPL).
- `reenzar init` cek setup dan bikin folder artifacts.
- `reenzar plan "<goal>"` bikin rencana.
- `reenzar implement "<goal>"` plan -> implement -> critic -> summary.
- `reenzar ask "<question>"` tanya cepat (default free-mode).
- `reenzar review "<goal>"` review ringan tanpa diff.
- `reenzar diff` lihat patch terakhir.
- `reenzar apply` terapkan patch terakhir (`--revert` untuk rollback).
- `reenzar commit-msg` draft commit message dari patch terakhir.
- `reenzar repl` jalankan REPL secara eksplisit.
- Opsi umum: `--provider` untuk override provider, `--free-mode` untuk prefer provider gratis.
  - Contoh provider: `google_ai_studio`, `openai_codex`, `openrouter`, `z_ai`.

## Konfigurasi singkat
- `config/default.yaml` ngatur urutan provider, model, token, retry, safety, dan UI.
- Kamu bisa atur provider per role (planner/implementer/reviewer/responder) di:
  - `providers.defaults.role` (contoh: planner = openai_codex, implementer = google_ai_studio).
- Di REPL, kamu juga bisa override sementara:
  - `:set role.plan openai_codex`
  - `:set role.review openrouter`
- Bahasa UI bisa diatur di config:
  - `ui.language: id` atau `ui.language: en`
- Di REPL juga bisa ganti cepat:
  - `:set lang id` / `:set lang en`
- `config/tips.yaml` isi tips yang muncul di progress indicator (EN).
- `config/tips.id.yaml` versi Indonesia (dipakai otomatis kalau `ui.language: id`).
- Kalau mau matiin banner/tips, cek bagian `ui` di config.

## Security
Lokal di Windows maupun Linux tetap bisa pakai `.env` (lebih gampang dan aman).
- Jangan commit `.env` ke repo.
- API key dibaca dari environment variables (bisa di-load lewat `.env`).
- `reenzar auth` nulis ke `.env` dengan permission yang lebih aman (kalau OS mendukung).

## Struktur repo
- `src/agent/` inti logika agent, graph, clients.
- `src/agent/cli/` UI CLI, REPL, progress indicator.
- `config/` file konfigurasi.
- `docs/` dokumentasi tambahan.
- `.reenzar-memory/` hasil artifact (plan, summary, patch, log).

## Dokumentasi lain
- `docs/CLI_USAGE.md`
- `docs/TIPS_CONFIGURATION.md`
- `docs/WINDOWS_COMPATIBILITY.md`

## Development
```bash
pytest
```