Изменение выносит типы контента в :content-api и разделяет потоки событий.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# `: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 + натив).
|
||||
Reference in New Issue
Block a user