# Модуль shared

## 1. Функции модуля
- Общие инфраструктурные компоненты для всех модулей:
  - `config/*` - загрузка окружения и общих настроек workspace,
  - `database/*` - подключение к БД, bootstrap и checkpointer,
  - `messaging/*` - общая шина событий и SSE-совместимые события,
  - `resilience/*` - retry и idempotency,
  - `observability/*` - runtime trace и trace logging,
  - `gigachat/*` - клиент и настройки GigaChat.

## 2. Диаграмма классов и взаимосвязей
```mermaid
classDiagram
    class EventBus
    class RetryExecutor
    class IdempotencyStore
    class GigaChatClient
    class GigaChatSettings
    class GigaChatTokenProvider

    GigaChatClient --> GigaChatSettings
    GigaChatClient --> GigaChatTokenProvider
```

## 3. Описание классов
- `EventBus`: общий асинхронный event-bus для публикации и SSE-стриминга.
  Методы: `subscribe` — подписка на канал; `unsubscribe` — удаление подписки; `publish` — отправка события; `as_sse` — сериализация события в SSE-формат.
- `database_url/get_engine/get_session_factory`: общий доступ к engine и session factory SQLAlchemy.
- `bootstrap_database/get_checkpointer`: инициализация persistence-слоя и LangGraph checkpointer.
- `RetryExecutor`: общий механизм повторных попыток для временных ошибок.
  Методы: `run` — выполняет async-операцию с retry по временным исключениям.
- `IdempotencyStore`: in-memory хранилище идемпотентных ключей.
  Методы: `get_task_id` — находит ранее созданную задачу по ключу; `put` — сохраняет ключ и task_id.
- `load_workspace_env`: загрузка `.env` и `.env.local` по цепочке родительских директорий.
- `GigaChatSettings`: конфигурация доступа к GigaChat.
  Методы: `from_env` — собирает настройки из переменных окружения.
- `GigaChatTokenProvider`: управление access token для GigaChat API.
  Методы: `get_access_token` — возвращает валидный токен (с обновлением при необходимости).
- `GigaChatClient`: HTTP-клиент для completion и embeddings.
  Методы: `complete` — выполняет генерацию ответа модели; `embed` — получает векторные представления для списка текстов.

## 4. Сиквенс-диаграммы API
В модуле нет HTTP endpoint'ов: он предоставляет только инфраструктурные классы для других модулей.
