# pi-peak-hours

*Индикатор peak/off-peak часов биллинга LLM API для [pi coding agent](https://github.com/earendil-works/pi-coding-agent).*

У некоторых провайдеров peak-часы стоят до 2× дороже off-peak. Расширение показывает прямо над полем ввода, когда текущая модель дорогая — и как долго ждать подешевления.


![pi-peak-hours в действии](docs/screenshots/peak.png)

- **Off-peak — тишина:** виджет скрыт полностью.
- **Peak — одна строка:** кто в пике и когда закончится, в твоей таймзоне.
- **`/peak`** — полная картина по запросу: фазы, окна в локальном времени, ближайшее переключение, источники.

| Провайдер | Peak (биллинг-календарь, UTC+8) | Off-peak |
|---|---|---|
| DeepSeek API | Пн–Пт 09:00–12:00, 14:00–18:00 | 50% от peak; выходные целиком off-peak (с 23.08.2026) |
| GLM Coding Plan (Z.AI) | Пн–Пт 14:00–18:00 | Legacy V2: квота горит в 3× быстрее в peak (GLM-5.3 1×/3×, Flash 0.4×/1.2×); новые кредитные планы: off-peak = 50% кредитов |

Логика DeepSeek покрыта CC0-векторами из [xyzs996/deepseek-peak-hours](https://github.com/xyzs996/deepseek-peak-hours), включая тонкости: день недели читается по **биллинг-календарю** (UTC+8), а не по UTC, и weekend-правило **гейтится на дату вступления**.

## Установка

```bash
pi install npm:pi-peak-hours        # из npm
pi install /path/to/pi-peak-hours   # или локальная папка
pi -e /path/to/pi-peak-hours        # или попробовать один запуск без установки
```

## Настройки

`~/.pi/agent/settings.json`, ключ `peakHours` (`/reload` после правки). Дефолты:

```json
{
  "peakHours": {
    "enabled": true,
    "timezone": "auto",
    "show": "peak",
    "providers": ["deepseek", "glm"]
  }
}
```

- `timezone` — `"auto"` (системная зона), `"UTC"` или IANA-имя (`"Asia/Yekaterinburg"`).
- `show` — `"peak"` (скрывать виджет в off-peak, по умолчанию) или `"always"`.
- `providers` — какие правила трекать.

## Важно

- Время берётся с системных часов, ничего не фетчится.
- Виджет живёт **над полем ввода**, футер не трогает — сосуществует с заменителями футера вроде pi-archimedes.
- Окна применимы к официальным API; прокси-ценам off-peak обычно не прокидывается.
- Правила меняются: окна правятся в `src/schedules.ts` (там же источник и дата сверки).

## Разработка

```bash
npm install
npm run check   # typecheck + тесты + selfcheck
```

MIT — [LICENSE](LICENSE).
