Hi, Did someone tried to use GraalVM to make simpl...
# koog-agentic-framework
v
Hi, Did someone tried to use GraalVM to make simple binary? I am getting
Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.
. is there any option how to make it work.
Copy code
at kotlinx.serialization.internal.Platform_commonKt.serializerNotRegistered(Platform.common.kt:90)
        at kotlinx.serialization.SerializersKt__SerializersKt.serializer(Serializers.kt:327)
        at kotlinx.serialization.SerializersKt.serializer(Unknown Source)
        at io.ktor.serialization.kotlinx.SerializerLookupKt.guessSerializer(SerializerLookup.kt:54)
        at io.ktor.serialization.kotlinx.KotlinxSerializationConverter.serialize(KotlinxSerializationConverter.kt:55)
        at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.ContentNegotiation$lambda$16$convertRequest(ContentNegotiation.kt:231)
        at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.access$ContentNegotiation$lambda$16$convertRequest(ContentNegotiation.kt:1)
        at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$1.invokeSuspend(ContentNegotiation.kt:289)
        at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$1.invoke(ContentNegotiation.kt)
        at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$1.invoke(ContentNegotiation.kt)
        at io.ktor.client.plugins.api.TransformRequestBodyHook$install$1.invokeSuspend(KtorCallContexts.kt:87)
        at io.ktor.client.plugins.api.TransformRequestBodyHook$install$1.invoke(KtorCallContexts.kt)
        at io.ktor.client.plugins.api.TransformRequestBodyHook$install$1.invoke(KtorCallContexts.kt)
        at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
        at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
        at io.ktor.client.plugins.RequestError$install$1.invokeSuspend(HttpCallValidator.kt:150)
        at io.ktor.client.plugins.RequestError$install$1.invoke(HttpCallValidator.kt)
        at io.ktor.client.plugins.RequestError$install$1.invoke(HttpCallValidator.kt)
        at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
        at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
        at io.ktor.client.plugins.SetupRequestContext$install$1.invokeSuspend$proceed(HttpRequestLifecycle.kt:42)
        at io.ktor.client.plugins.SetupRequestContext$install$1.access$invokeSuspend$proceed(HttpRequestLifecycle.kt)
        at io.ktor.client.plugins.SetupRequestContext$install$1$1.invoke(HttpRequestLifecycle.kt:42)
        at io.ktor.client.plugins.SetupRequestContext$install$1$1.invoke(HttpRequestLifecycle.kt:42)
        at io.ktor.client.plugins.HttpRequestLifecycleKt$HttpRequestLifecycle$1$1.invokeSuspend(HttpRequestLifecycle.kt:29)
        at io.ktor.client.plugins.HttpRequestLifecycleKt$HttpRequestLifecycle$1$1.invoke(HttpRequestLifecycle.kt)
        at io.ktor.client.plugins.HttpRequestLifecycleKt$HttpRequestLifecycle$1$1.invoke(HttpRequestLifecycle.kt)
        at io.ktor.client.plugins.SetupRequestContext$install$1.invokeSuspend(HttpRequestLifecycle.kt:42)
        at io.ktor.client.plugins.SetupRequestContext$install$1.invoke(HttpRequestLifecycle.kt)
        at io.ktor.client.plugins.SetupRequestContext$install$1.invoke(HttpRequestLifecycle.kt)
        at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
        at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
        at io.ktor.util.pipeline.DebugPipelineContext.execute$ktor_utils(DebugPipelineContext.kt:63)
        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:92)
        at io.ktor.client.HttpClient.execute$ktor_client_core(HttpClient.kt:1418)
        at io.ktor.client.statement.HttpStatement.fetchResponse(HttpStatement.kt:162)
        at io.ktor.client.statement.HttpStatement.execute(HttpStatement.kt:76)
        at ai.koog.prompt.executor.clients.google.GoogleLLMClient$getGoogleResponse$response$1.invokeSuspend(GoogleLLMClient.kt:642)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
        at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808)
Copy code
plugins {
    alias(libs.plugins.serialization)
    alias(libs.plugins.jvm)
    id("org.graalvm.buildtools.native") version "0.11.0"
}

dependencies {
    implementation(libs.koog.agents)
    implementation(libs.kotlinx.serialization.json)

}

graalvmNative {
    toolchainDetection.set(true)
    binaries {
        named("main") {
            mainClass.set("MainKt")
        }
    }
}
Copy code
[versions]
kotlin = "2.2.20-RC2"
koog = "0.4.1"
serialization = "1.9.0"