koog-agents/build.gradle.kts (136 lines of code) (raw):

import ai.koog.gradle.publish.maven.Publishing.publishToMaven group = rootProject.group version = rootProject.version plugins { id("ai.kotlin.multiplatform") } val excluded = setOf( ":agents:agents-test", ":agents:agents-ext", ":agents:agents-features:agents-features-sql", // Optional SQL persistence provider ":agents:agents-mcp-server", ":integration-tests", ":test-utils", ":koog-spring-boot-starter", ":koog-ktor", ":docs", ":a2a:a2a-core", ":a2a:a2a-server", ":a2a:a2a-client", ":a2a:a2a-transport:a2a-transport-core-jsonrpc", ":a2a:a2a-transport:a2a-transport-server-jsonrpc-http", ":a2a:a2a-transport:a2a-transport-client-jsonrpc-http", ":a2a:a2a-test", ":a2a:test-tck:a2a-test-server-tck", ":agents:agents-features:agents-features-a2a-core", ":agents:agents-features:agents-features-a2a-server", ":agents:agents-features:agents-features-a2a-client", ":agents:agents-features:agents-features-acp", ":http-client:http-client-test", ":http-client:http-client-okhttp", ":http-client:http-client-java", project.path, // the current project should not depend on itself ) val included = setOf( ":agents:agents-core", ":agents:agents-features:agents-features-event-handler", ":agents:agents-features:agents-features-memory", ":agents:agents-features:agents-features-opentelemetry", ":agents:agents-features:agents-features-trace", ":agents:agents-features:agents-features-tokenizer", ":agents:agents-features:agents-features-snapshot", ":agents:agents-mcp", ":agents:agents-planner", ":agents:agents-tools", ":agents:agents-utils", ":embeddings:embeddings-base", ":embeddings:embeddings-llm", ":prompt:prompt-cache:prompt-cache-files", ":prompt:prompt-cache:prompt-cache-model", ":prompt:prompt-cache:prompt-cache-redis", ":prompt:prompt-executor:prompt-executor-cached", ":prompt:prompt-executor:prompt-executor-clients", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-anthropic-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-bedrock-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-deepseek-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-google-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-mistralai-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-ollama-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-openai-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-openai-client-base", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-openrouter-client", ":prompt:prompt-executor:prompt-executor-clients:prompt-executor-dashscope-client", ":prompt:prompt-executor:prompt-executor-llms", ":prompt:prompt-executor:prompt-executor-llms-all", ":prompt:prompt-executor:prompt-executor-model", ":prompt:prompt-llm", ":prompt:prompt-markdown", ":prompt:prompt-model", ":prompt:prompt-processor", ":prompt:prompt-structure", ":prompt:prompt-tokenizer", ":prompt:prompt-xml", ":rag:rag-base", ":rag:vector-storage", ":http-client:http-client-core", ":http-client:http-client-ktor", ":utils", ) kotlin { sourceSets { commonMain { dependencies { val projects = rootProject.subprojects .filterNot { it.path in excluded } .filter { it.buildFile.exists() } val projectsPaths = projects.mapTo(sortedSetOf()) { it.path } val obsoleteIncluded = included - projectsPaths require(obsoleteIncluded.isEmpty()) { "There are obsolete modules that are used for '${project.name}' main jar dependencies" + "but no longer exist," + "please remove them from 'included' in ${project.name}/build.gradle.kts:\n" + obsoleteIncluded.joinToString(",\n") { "\"$it\"" } } val notIncluded = projectsPaths - included require(notIncluded.isEmpty()) { "There are modules that are not listed for '${project.name}' main jar dependencies, " + "please add them to 'included' or 'excluded' in ${project.name}/build.gradle.kts:\n" + notIncluded.joinToString(",\n") { "\"$it\"" } } projects.forEach { val text = it.buildFile.readText() require("import ai.koog.gradle.publish.maven.Publishing.publishToMaven" in text) { "Module ${it.path} is used as a dependency for '${project.name}' main jar. Hence, it should be published. If not, please mark it as excluded in ${project.name}/build.gradle.kts" } require("publishToMaven()" in text) { "Module ${it.path} is used as a dependency for '${project.name}' main jar. Hence, it should be published. If not, please mark it as excluded in ${project.name}/build.gradle.kts" } } projects.forEach { api(project(it.path)) } } } androidMain.dependencies { api(libs.ktor.client.okhttp) } jvmMain.dependencies { api(libs.ktor.client.apache5) } appleMain.dependencies { api(libs.ktor.client.darwin) } jsMain.dependencies { api(libs.ktor.client.js) } wasmJsMain.dependencies { api(libs.ktor.client.js) } } } dokka { dokkaSourceSets.configureEach { suppress.set(true) } } publishToMaven()