# `:content-api` — общие типы содержимого сообщения Низкоуровневый KMP-модуль с типами, которые используются во всех слоях agentik и раньше дублировались: - `Content` — часть содержимого сообщения: `Content.Text(body)`, `Content.Image(data, mime)`. - `MessageContext` — контекст инициации хода (`origin`, `description`, `sourceId`, `metadata`). - `MessageOrigin` — `USER` / `SYSTEM` / `EVENT`. - `TurnTokens` — token usage одного assistant turn'а (`input`, `output`). ## Зачем отдельный модуль `:proto` (wire-контракт), `:journal-api` (слой хранения) и `:outbox-api` (события) должны ссылаться на **один и тот же** `Content`/`MessageContext`, а не держать по собственной копии. Общий модуль убирает дубли и циклы: ``` :content-api ◄── :proto ◄── :journal-api ◄── :outbox-api ``` `:proto`/`:journal-api`/`:outbox-api` объявляют `api(project(":content-api"))`, поэтому потребители (`:client`, `:server`, `:standalone`, ...) видят типы транзитивно, но должны импортировать их напрямую из `pw.binom.agentik.content`. ## Публикация Каталог `gradle/libs.versions.toml` → `agentik-content-api`. `./gradlew :content-api:publish -Pversion=...` публикует все KMP-таргеты (jvm + натив).