ee0b9d8341
ci / JVM build + tests (push) Failing after 1m25s
Пользователь признал TUI-подход неудачным (Mosaic 0.18 требует alt-screen
костылей, нативный ввод/вывод ограничен, тестирование через pty).
Папка agentik-tui/ оставлена на диске — комментарий в settings.gradle.kts
фиксирует дату и причину, на случай если вернёмся.
Изменения:
- settings.gradle.kts: include(':agentik-tui') → закомментировано
- build.gradle.kts: убран из moduleDescriptions
- .gitea/workflows/ci.yml: убран shadowJar шаг и из upload paths
- .gitea/workflows/release.yml: убран из комментария
- README.md, proto/README.md, server/README.md, client/README.md:
ссылки на :agentik-tui помечены как устаревшие
- agentik-cli/build.gradle.kts: убрана ссылка в комментарии
115 lines
4.5 KiB
Kotlin
115 lines
4.5 KiB
Kotlin
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||
|
||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||
import org.gradle.api.artifacts.ConfigurationContainer
|
||
|
||
plugins {
|
||
alias(libs.plugins.kotlin.multiplatform)
|
||
alias(libs.plugins.kotlin.serialization)
|
||
alias(libs.plugins.shadow)
|
||
}
|
||
|
||
kotlin {
|
||
jvmToolchain(21)
|
||
|
||
// Suppress Beta-предупреждения от expect/actual объектов — фича стабильна с Kotlin 1.9,
|
||
// но компилятор всё ещё требует -Xexpect-actual-classes, чтобы не ныть.
|
||
compilerOptions {
|
||
freeCompilerArgs.add("-Xexpect-actual-classes")
|
||
}
|
||
|
||
// "Все возможные цели сборки": jvm + весь натив. Зеркалит набор :server/:proto.
|
||
// commonMain зависит только от :proto (KMP). jvmMain подключает :client (JVM-only)
|
||
// и JLine — там же и `:client`'s AgentClient. nativeMain пока получает stub actual,
|
||
// расширять будем через ktor-client-* {curl,darwin,winhttp} когда дойдёт очередь.
|
||
jvm()
|
||
macosX64()
|
||
macosArm64()
|
||
iosX64()
|
||
iosArm64()
|
||
iosSimulatorArm64()
|
||
linuxX64()
|
||
linuxArm64()
|
||
mingwX64()
|
||
|
||
sourceSets {
|
||
commonMain.dependencies {
|
||
implementation(project(":proto"))
|
||
|
||
implementation(libs.kotlinx.coroutines.core)
|
||
implementation(libs.kotlinx.serialization.core)
|
||
implementation(libs.kotlinx.serialization.json)
|
||
}
|
||
jvmMain.dependencies {
|
||
// :client JVM-only (ktor-cio). Подключаем только в jvmMain.
|
||
implementation(project(":client"))
|
||
// JLine для readline с историей и completion.
|
||
implementation(libs.jline)
|
||
}
|
||
commonTest.dependencies {
|
||
implementation(kotlin("test"))
|
||
implementation(libs.kotlinx.coroutines.core)
|
||
// runTest { } — suspend test runner для commonTest.
|
||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0")
|
||
}
|
||
jvmTest.dependencies {
|
||
// JUnit нужен в jvmTest — kotlin-test на JVM = JUnit4.
|
||
implementation("junit:junit:4.13.2")
|
||
}
|
||
}
|
||
|
||
@OptIn(ExperimentalKotlinGradlePluginApi::class)
|
||
jvm {
|
||
binaries {
|
||
executable {
|
||
mainClass.set("pw.binom.agentik.cli.MainKt")
|
||
}
|
||
}
|
||
}
|
||
|
||
// Native executables для десктопных таргетов. iOS пропускаем — там
|
||
// не бывает CLI-сессий. entryPoint задаём явно — паттерн зеркалится на старом :agentik-tui.
|
||
// (комментарий в agentik-tui/build.gradle.kts объясняет зачем).
|
||
// Реально рабочий native-Main пока stub (Platform.native.kt — error()),
|
||
// но kexe всё равно собирается: линкер не вызывает main, пока не запустишь.
|
||
@OptIn(ExperimentalKotlinGradlePluginApi::class)
|
||
listOf(linuxX64(), linuxArm64(), macosX64(), macosArm64(), mingwX64()).forEach {
|
||
it.binaries.executable {
|
||
entryPoint = "pw.binom.agentik.cli.main"
|
||
}
|
||
}
|
||
}
|
||
|
||
// --- Fatjar (uberjar) ---
|
||
//
|
||
// По аналогии с :standalone: shadowJar берёт `jvmJar` + `jvmRuntimeClasspath`.
|
||
// Shadow 8.x не авторегистрирует shadowJar в KMP-проектах — нужно явно register.
|
||
|
||
val shadowJarTask = tasks.register<ShadowJar>("shadowJar") {
|
||
archiveBaseName.set("agentik-cli")
|
||
archiveClassifier.set("all")
|
||
description = "Self-contained fatjar with all runtime dependencies bundled."
|
||
group = "build"
|
||
|
||
from(tasks.named("jvmJar"))
|
||
val cc = try {
|
||
@Suppress("UNCHECKED_CAST")
|
||
configurations as org.gradle.api.artifacts.ConfigurationContainer
|
||
} catch (_: ClassCastException) {
|
||
@Suppress("UNCHECKED_CAST")
|
||
(project as org.gradle.api.Project).configurations as org.gradle.api.artifacts.ConfigurationContainer
|
||
}
|
||
from(cc.getByName("jvmRuntimeClasspath"))
|
||
|
||
mergeServiceFiles()
|
||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||
|
||
manifest {
|
||
attributes["Main-Class"] = "pw.binom.agentik.cli.MainKt"
|
||
attributes["Implementation-Title"] = "agentik-cli"
|
||
attributes["Implementation-Version"] = project.version.toString()
|
||
}
|
||
|
||
includeEmptyDirs = false
|
||
}
|