# @redonvn/cli

RedAI CLI — kết nối máy bạn với RedAI agent runtime. AI cloud agent có thể:

- **Thao tác máy** qua tools: Read / Write / Edit / Bash / Grep / Glob / WebFetch
- **Spawn code-CLI** có sẵn: `claude` / `codex` / `gemini`
- **Proxy LLM request** qua OAuth của bạn: Claude Code, ChatGPT, Gemini Code Assist, Antigravity, Qwen, Kimi, iFlow, xAI Grok

## Cài đặt

```bash
npm i -g @redonvn/cli
```

Yêu cầu Node.js ≥ 18.17.

## Quick start

### 1. Đăng nhập RedAI

Tạo API key trên dashboard RedAI với permission `cli:connect`, sau đó:

```bash
redai login              # Mặc định = env baked vào build (xem dưới)
redai login --env prod   # Force PROD
redai login --env dev    # Force DEV
# Paste API key khi prompt
```

#### Môi trường

| Env | API base | WebSocket |
|---|---|---|
| `dev` | `https://v2.redai.vn` | `wss://v2.redai.vn` |
| `prod` | `https://app.redai.vn` | `wss://socket.redai.vn` |

**Mặc định khi cài:**

| Bản | Default env | Lệnh cài |
|---|---|---|
| `latest` (prod release) | **prod** | `npm i -g @redonvn/cli` |
| `dev` tag | **dev** | `npm i -g @redonvn/cli@dev` |

→ User chỉ cần `redai login`, không cần truyền `--env`. Cần switch tạm: dùng `--env dev` hoặc `REDAI_ENV=dev`.

Override URL custom (cho dev backend local):
```bash
redai login --api-url http://localhost:3000 --ws-url ws://localhost:3000
```

### 2. (Tuỳ chọn) Đăng nhập OAuth provider để dùng quota của bạn

```bash
redai oauth claude         # Claude Code (PKCE)
redai oauth codex          # Sign in with ChatGPT
redai oauth gemini         # Gemini Code Assist
redai oauth antigravity    # Antigravity (Google)
redai oauth qwen           # Qwen (device flow)
redai oauth kimi           # Kimi (device flow)
redai oauth iflow          # iFlow (OAuth hoặc cookie)
redai oauth xai            # xAI Grok (OIDC)

redai oauth list           # xem tất cả account đã login
```

### 3. Chọn mode

**Mode A — Tunnel WS với RedAI cloud** (AI agent trên RedAI dùng máy bạn làm runtime):

```bash
redai start
```

Cloud worker gọi: `POST /cli/clients/<clientId>/actions/...`

**Mode B — HTTP local server** (Cursor / Cline / Claude Code trỏ tới localhost):

```bash
redai serve --port 8317 --api-key <key>

# Cursor config: baseURL = http://localhost:8317/v1, apiKey = <key>
```

Endpoints expose:
- `POST /v1/messages` → Claude
- `POST /v1/chat/completions` → Codex
- `POST /v1beta/models/*:action` → Gemini
- `POST /llm/<provider>/<rest>` → Generic passthrough cho mọi provider

## Lệnh đầy đủ

```
redai login [--api-key <k>] [--api-url <url>]
redai status
redai start
redai serve [--port 8317] [--host 127.0.0.1] [--api-key <k>]
redai logout

redai oauth <provider> [--account <name>] [--no-browser] [--cookie <c>]
redai oauth list
redai oauth logout <provider> [<account>]
```

## Files

```
~/.redai/
├── config.json              # cliToken + clientId (chmod 600)
├── client.id                # UUID stable của máy
└── oauth/
    └── <provider>/<account>.json    # OAuth token (chmod 600)
```

## Bảo mật

- OAuth token **chỉ lưu local**, RedAI server không thấy.
- API key chỉ gửi qua HTTPS để verify một lần, sau đó dùng `cliToken` JWT 90 ngày.
- File chmod 600 — chỉ chủ máy đọc được.

## License

MIT
