plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.serialization) } android { namespace = "pw.binom.agentik.android" compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { applicationId = "pw.binom.agentik.android" minSdk = libs.versions.android.minSdk.get().toInt() targetSdk = libs.versions.android.targetSdk.get().toInt() versionCode = (project.findProperty("versionCode") as? String)?.toIntOrNull() ?: 1 versionName = (project.findProperty("versionName") as? String) ?: "1.0.0" } buildTypes { release { isMinifyEnabled = false } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { compose = true } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" excludes += "/META-INF/INDEX.LIST" excludes += "/META-INF/DEPENDENCIES" } } } dependencies { // Ядро агента (Nexus caffeine). Тянет :proto, :journal-api (транзитивно в v9), ktor-client-core и т.д. implementation(libs.agentik.client) // journal-api объявлен отдельно, чтобы IDE/компилятор видел MessageRecord в AgentMappers // (транзитивная зависимость в v9, но прямой импорт делаем явным). implementation(libs.agentik.journal.api) // InMemoryJournalStore — RAM-кэш истории для HttpChatSession. Персистентный // кэш (SQLite) подключим отдельной задачей. implementation(libs.agentik.journal.inmemory) // Persistent journal-кеш через ksqlite. Подменяет InMemoryJournalStore — // история сообщений переживает kill приложения. Начиная с journal-ksqlite:12 // конструктор `KsqliteJournalStore(path)` публичный — рефлексия и // явная зависимость `pw.binom.db:ksqlite` больше не нужны. implementation(libs.agentik.journal.ksqlite) // ksqlite опубликован в Maven Central (0.1.2). Наш ConversationMetaRepository // работает с SQLiteConnection напрямую — общая абстракция // :journal-ksqlite (MutableJournalStore) про метаданные диалогов не знает. // Декларируем явно, чтобы транзитивная compile-api за journal-ksqlite не // подсунула несовместимую версию. implementation(libs.ksqlite) // ASR-стек: модель Qwen3-ASR на устройстве (auto-download через QwenModelProvider). implementation(libs.asr.qwen3) implementation(libs.mic.api) implementation(libs.androidx.work.runtime.ktx) // Markdown-парсер (ru.otpbank.ai:markdown) — нужно для рендеринга // сообщений ассистента. Хостится в нашем Nexus (см. settings.gradle.kts). implementation(libs.ru.otpbank.markdown) implementation(libs.androidx.core.ktx) implementation(libs.androidx.activity.compose) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.runtime.compose) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.material.icons.extended) debugImplementation(libs.androidx.compose.ui.tooling) implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.coroutines.core) implementation(libs.ktor.client.core) implementation(libs.ktor.client.okhttp) }