# acl-cli

CLI для ACL — Agent Control Layer. Управляйте браузером, сессиями и учётными данными из терминала.

## Установка

```bash
# Создать виртуальное окружение и установить
cd acl
uv venv .venv && source .venv/bin/activate
uv pip install -e cli/
```

Проверить:
```bash
acl --help
```

## Первичная настройка

```bash
acl init
```

Вводите email и имя — CLI зарегистрирует вас на ACL API и сохранит ключ в `~/.acl/config.json`.

## Команды

### `acl init`

Регистрация и настройка CLI.

```bash
acl init            # первичная настройка
acl init --reset    # перерегистрация (новый аккаунт)
```

### `acl browser` — управление браузером

```bash
# Открыть сайт (автоматически создаёт сессию)
acl browser open kaspi.kz

# Извлечь данные по CSS-селектору
acl browser extract ".product-card" --fields name:.name,price:.price

# Извлечь данные как JSON
acl browser extract ".item" --json

# Заполнить поле формы
acl browser fill "#search" "iPhone 15"

# Кликнуть по элементу
acl browser click ".submit-btn" --wait-for ".result"

# Сделать скриншот
acl browser screenshot
acl browser screenshot --selector ".main-content" --open

# Авторизоваться на сайте
acl browser auth https://kaspi.kz --type login_password
acl browser auth https://bank.kz --type qr

# Загрузить файл
acl browser upload ./document.pdf "input[type=file]"
```

Все команды принимают `--user/-u` (по умолчанию `default`).

### `acl session` — управление сессиями

```bash
acl session list              # таблица активных сессий
acl session delete kaspi.kz   # удалить сессию
acl session clear             # удалить все (с подтверждением)
```

### `acl credentials` — учётные данные

```bash
acl credentials save kaspi.kz        # интерактивный ввод логина и пароля
acl credentials list                  # таблица (логин замаскирован, пароль скрыт)
acl credentials delete kaspi.kz      # удалить (с подтверждением)
acl credentials test kaspi.kz        # проверить авторизацию
```

### `acl chat` — интерактивный AI-агент

AI-агент на базе GPT-4o-mini, который управляет браузером по описанию задачи на естественном языке.

```bash
export OPENAI_API_KEY=sk-proj-...
acl chat
```

Или добавьте ключ в конфиг:
```bash
# В ~/.acl/config.json добавьте поле:
# "openai_api_key": "sk-proj-..."
```

Примеры задач:

```
→ Открой kaspi.kz и найди цену на iPhone 15
→ Зайди на hh.kz, найди вакансии Python-разработчик в Алматы
→ Авторизуйся на bank.kz и покажи баланс
→ Сделай скриншот главной страницы google.com
```

Агент сам создаёт сессии, навигирует, извлекает данные и отвечает на русском языке.

## FAQ

### Как сменить аккаунт?

```bash
acl init --reset
```

### Как работать с несколькими пользователями?

Все команды поддерживают флаг `--user/-u`:

```bash
acl browser open kaspi.kz --user alice
acl session list --user alice
acl credentials save kaspi.kz --user bob
```

### Где хранится конфигурация?

В `~/.acl/config.json` (chmod 600). Содержит API-ключ, email и URL сервера.

### Тесты

```bash
uv run pytest cli/tests/ -x
```
