# Version catalog is a central place for you to declare and version dependencies
# https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format
[versions]
# Build tool versions
build-android-buildTools = "35.0.0" # Used in playground Android modules
build-android-compileSdk = "36" # Used in playground Android modules
build-android-minSdk = "27" # Used in playground Android modules
build-android-targetSdk = "36" # Used in playground Android modules
build-android-agp = "8.11.1"
# Kotlin versions
build-kotlin = "2.2.0"
build-kotlin-language = "2.0" # Used in all Kotlin modules
build-kotlin-coroutines = "1.10.2"
build-kotlin-datetime = "0.7.1"
# Java versions
build-java-target = "22" # Used in root build.gradle.kts and playground
# Gradle plugin versions (currently unused but available for future use)
build-gradle-doctor = "0.10.0"
build-gradle-sortDependencies = "0.14"
# AndroidX versions
androidx-core = "1.16.0"
androidx-activity-compose = "1.10.1"
androidx-compose-bom = "2025.07.00"
androidx-lifecycle = "2.9.2"
androidx-startup = "1.2.0"
# Media library versions
coil = "3.3.0"
core-splashscreen = "1.2.0-rc01"
kotlinx-coroutines-test = "1.10.2"
media3 = "1.7.1"
# Library versions
clikt = "5.0.3"
junit-jupiter-api = "5.13.4"
junit-vintage-engine = "5.13.4"
koog-agents = "0.3.0"
mockk = "1.14.5"
mockk-android = "1.14.4"
robolectric = "4.15.1"
snakeyaml = "2.4"
test-junit = "4.13.2"
test-androidx-junit = "1.2.1"
test-androidx-espresso = "3.6.1"
# Navigation versions
navigation3 = "1.0.0-alpha05" # Used in playground app
# Kotlin ecosystem
kotlinx-serialization-json = "1.9.0"
kotlin-poet = "2.2.0"
appcompat = "1.7.1"
material = "1.12.0"
lifecycleViewmodelNavigation3Android = "1.0.0-alpha03"
# Publishing
mavenpublish = "0.34.0"
[plugins]
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "build-kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "build-kotlin" }
android-library = { id = "com.android.library", version.ref = "build-android-agp" }
android-application = { id = "com.android.application", version.ref = "build-android-agp" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "build-kotlin" }
mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "mavenpublish" }
[libraries]
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "core-splashscreen" }
clikt = { module = "com.github.ajalt.clikt:clikt", version.ref = "clikt" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter-api" }
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit-jupiter-api" }
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter-api" }
junit-vintage-engine = { module = "org.junit.vintage:junit-vintage-engine", version.ref = "junit-vintage-engine" }
kgp = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "build-kotlin" }
agp = { module = "com.android.tools.build:gradle", version.ref = "build-android-agp" }
koog-agents = { module = "ai.koog:koog-agents", version.ref = "koog-agents" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test" }
kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "build-kotlin-coroutines" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "build-kotlin-datetime" }
kotlinx-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization-json" }
kotlin-poet = { module = "com.squareup:kotlinpoet", version.ref = "kotlin-poet" }
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "navigation3" }
navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" }
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
snakeyaml = { module = "org.yaml:snakeyaml", version.ref = "snakeyaml" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidx-lifecycle" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
androidx-startup = { module = "androidx.startup:startup-runtime", version.ref = "androidx-startup" }
compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" }
compose-ui-core = { group = "androidx.compose.ui", name = "ui" }
compose-ui-util = { group = "androidx.compose.ui", name = "ui-util" }
compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
compose-ui-junit = { group = "androidx.compose.ui", name = "ui-test-junit4" }
compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
compose-ui-foundation = { group = "androidx.compose.foundation", name = "foundation" }
compose-material = { group = "androidx.compose.material3", name = "material3" }
compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" }
junit = { module = "junit:junit", version.ref = "test-junit" }
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "test-androidx-junit" }
androidx-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "test-androidx-espresso" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle" }
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
# Media libraries
coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" }
coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" }
media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
media3-ui = { module = "androidx.media3:media3-ui", version.ref = "media3" }
media3-ui-compose = { module = "androidx.media3:media3-ui-compose", version.ref = "media3" }
media3-database = { module = "androidx.media3:media3-database", version.ref = "media3" }
media3-datasource = { module = "androidx.media3:media3-datasource", version.ref = "media3" }
androidx-lifecycle-viewmodel-navigation3-android = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-navigation3-android", version.ref = "lifecycleViewmodelNavigation3Android" }
# Libraries can be bundled together for easier import
[bundles]
kotlinx-ecosystem = ["kotlinx-datetime", "kotlinx-serialization", "kotlinx-coroutines"]
compose-ui = [
"androidx-activity-compose",
"compose-ui-core",
"compose-ui-util",
"compose-ui-graphics",
"compose-ui-foundation",
"compose-ui-tooling",
"compose-ui-tooling-preview",
"compose-material",
"compose-material-icons-extended"
]
compose-ui-espresso-test = [
"androidx-junit",
"compose-ui-junit",
"androidx-espresso"
]
compose-ui-debug = [
"compose-ui-tooling",
"compose-ui-test-manifest"
]
unit-test = [
"junit",
"kotlinx-coroutines",
"kotlinx-coroutines-test",
"mockk",
]
media-libraries = [
"coil-compose",
"coil-network-okhttp",
"media3-exoplayer",
"media3-ui",
"media3-ui-compose",
"media3-database",
"media3-datasource"
]