plugins {
    id 'org.jetbrains.kotlin.jvm'
    id 'org.jetbrains.kotlin.plugin.serialization'
    id 'application'
}

application {
    mainClass = 'com.correx.apps.server.MainKt'
}

tasks.named('distTar') {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.named('distZip') {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

dependencies {
    implementation project(':core:config')
    implementation project(':core:events')
    implementation project(':core:approvals')
    implementation project(':core:sessions')
    implementation project(':core:kernel')
    implementation project(':core:journal')
    implementation project(':core:inference')
    implementation project(':core:transitions')
    implementation project(':core:context')
    implementation project(':core:validation')
    implementation project(':core:risk')
    implementation project(':core:artifacts')
    implementation project(':core:artifacts-store')
    implementation project(':infrastructure')
    implementation project(':infrastructure:artifacts-cas')
    implementation project(':infrastructure:workflow')
    implementation project(':infrastructure:persistence')
    implementation project(':infrastructure:inference')
    implementation project(':infrastructure:inference:llama_cpp')
    implementation project(':infrastructure:inference:commons')
    implementation project(':core:router')
    implementation project(':core:tools')
    implementation project(':core:toolintent')
    implementation project(':infrastructure:tools')
    implementation project(':infrastructure:tools:filesystem')

    implementation "com.github.ajalt.clikt:clikt:5.0.1"

    implementation "io.ktor:ktor-client-cio:$ktor_version"
    implementation "io.ktor:ktor-client-logging:$ktor_version"
    implementation "io.ktor:ktor-server-core:$ktor_version"
    implementation "io.ktor:ktor-server-netty:$ktor_version"
    implementation "io.ktor:ktor-server-websockets:$ktor_version"
    implementation "io.ktor:ktor-server-content-negotiation:$ktor_version"
    implementation "io.ktor:ktor-serialization-kotlinx-json:$ktor_version"
    implementation "io.ktor:ktor-server-status-pages:$ktor_version"
    implementation "io.ktor:ktor-server-call-logging:$ktor_version"

    testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinx_coroutines_version"
    testImplementation "io.ktor:ktor-server-test-host:$ktor_version"
    testImplementation "io.ktor:ktor-client-websockets:$ktor_version"
    testImplementation "io.ktor:ktor-client-mock:$ktor_version"

    implementation "org.apache.logging.log4j:log4j-core:2.24.1"
    implementation "org.apache.logging.log4j:log4j-slf4j2-impl:2.24.1"
    implementation "org.slf4j:slf4j-api:2.0.16"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.9.0"
}

tasks.named("koverVerify").configure { enabled = false }
