Metadata-Version: 2.4
Name: zai-limits
Version: 0.1.1
Summary: Мониторинг квоты GLM Coding Plan (Z.AI) — Python-порт (stdlib only)
Author: axisrow
License-Expression: MIT
Project-URL: Homepage, https://github.com/axisrow/zai-quota
Project-URL: Repository, https://github.com/axisrow/zai-quota
Project-URL: Issues, https://github.com/axisrow/zai-quota/issues
Project-URL: Original (opencode-glm-quota), https://github.com/guyinwonder168/opencode-glm-quota
Keywords: zai,glm,coding-plan,quota,monitoring,opencode
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Utilities
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# zai-limits

**Мониторинг квоты GLM Coding Plan (Z.AI)** — Python-CLI, только стандартная библиотека. Показывает тариф, прогресс-бары по пулам (модельные токены + MCP-инструменты), время сброса и обратный отсчёт, предупреждение о пиковом окне.

## 🙏 Благодарность и происхождение

Контракт endpoint'ов мониторинга Z.AI и сама идея quota-монитора взяты из
community-плагина **[`opencode-glm-quota`](https://github.com/guyinwonder168/opencode-glm-quota)**
автора **guyinwonder168** (лицензия MIT). Этот пакет — независимый Python-порт
под той же лицензией (MIT). Спасибо автору за разведку недокументированного
контракта Z.AI — без его работы этот порт был бы невозможен.

Оригинальный endpoint-контракт: [`src/api/endpoints.ts`](https://github.com/guyinwonder168/opencode-glm-quota/blob/main/src/api/endpoints.ts).

## Установка

```bash
pip install zai-limits          # из PyPI (после публикации)
pip install git+https://github.com/axisrow/zai-quota.git   # из git
pip install .                  # из локального клона
```

Зависимостей нет — только стандартная библиотека Python ≥ 3.12.

## Использование

```bash
zai-limits                      # квота (лимиты + сброс)
zai-limits --json               # сырой JSON ответа
zai-limits --models             # + расход токенов по моделям
zai-limits --key sk-...         # свой ключ вместо auth.json
zai-limits --platform zhipu     # платформа Zhipu (open.bigmodel.cn)
zai-limits --tz 8               # часовой пояс для времени сброса (по умолчанию 3 = МСК)
```

```
=== Z.AI (api.z.ai) — квота Coding Plan ===

Тариф: MAX

▍ Модельные токены (главный пул — режет прогоны)
  [███░░░░░░░░░░░░░░░░░] 15%
  окно: 5-часовое окно
  сброс: 2026-07-22 15:58 (через 0ч 27м)

▍ MCP-инструменты (web-search / web-reader / zread)
  [██░░░░░░░░░░░░░░░░░░] 9%
  ...
```

## Ключ API

Источники (по приоритету):

1. `--key sk-...` — явный аргумент
2. env, **по платформе**: `ZAI_API_KEY` (для `--platform zai`), `ZHIPU_API_KEY` (для `--platform zhipu`)
3. `~/.local/share/opencode/auth.json` → `zai-coding-plan.key` / `zhipu-coding-plan.key`

Ключ выбирается **строго по платформе** — credential одной платформы никогда не
уходит на origin другой (см. `resolve_api_key`). Generic OAuth-провайдеры
(`openai`/`glm`, поле `access`) не используются как ключ Coding Plan.

## Endpoint'ы

Недокументированы Z.AI публично; найдены реверс-инжинирингом (см. благодарность):

```
GET https://api.z.ai/api/monitor/usage/quota/limit    ← лимиты / сброс / %
GET https://api.z.ai/api/monitor/usage/model-usage    ← расход по моделям
GET https://api.z.ai/api/monitor/usage/tool-usage     ← MCP-инструменты
```

CN-аналог: `https://open.bigmodel.cn/api/monitor/usage/...`. Auth — голый ключ
в `Authorization` (без префикса `Bearer`).

## Безопасность

- **Redirect-safety**: `_NoAuthRedirectHandler` снимает `Authorization`/`Cookie`
  перед любым редиректом — ключ Coding Plan не утекает на кросс-хост/HTTP.
- **Platform-aware credentials**: ключ и env выбираются строго по `--platform`.

## Лицензия

MIT — см. [LICENSE](LICENSE). Содержит благодарность оригинальному автору
endpoint-контракта (guyinwonder168, `opencode-glm-quota`, MIT).
