feat: DX v0.1.2 — user_id kwarg, wait_for_status, parse_event_type/ack
- send/emit: первый класс user_id (сливается с payload, параметр сильнее payload["user_id"]) — sync и async близнецы
- wait_for_status(): поллинг статуса события до целевого
  (дефолт done/failed, timeout 30 c); морг транспорта не прерывает
  ожидание, не дождались — SynapseStatusTimeoutError с последним статусом
- webhook: parse_event_type() — тройка из X-Gnexus-Event-Type,
  ack(event_id) — тело ответа 2xx приёмника
- smoke: источник из SYNAPSE_DEFAULT_SOURCE (как в реальном сервисе),
  user_id в обоих send; прогнан против живого стека — ALL OK
- README: пин @v0.1.2, сигнатуры, новые строки таблиц

Тесты: 37 passed, ruff + mypy strict чисто.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent 41995ce commit 1834128d3c27c2cf937b3a01f1be6277288e275b
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 12 hours ago
Showing 10 changed files
View
README.md
View
examples/plain/smoke.py
View
pyproject.toml
View
src/gnexus_synapse/__init__.py
View
src/gnexus_synapse/_async.py
View
src/gnexus_synapse/client.py
View
src/gnexus_synapse/exceptions.py
View
src/gnexus_synapse/webhook.py
View
tests/unit/test_client.py
View
tests/unit/test_webhook.py