koog icon indicating copy to clipboard operation
koog copied to clipboard

Support Kotlin date time 0.7.x

Open IanArb opened this issue 2 months ago • 2 comments

Hey there, I'm facing a class not found exception and it's due to the Clock dependency from kotlinx-datetime.

When is Koog going to support 0.7.x of this dependency?

I resolved this by downgrading to 0.6.x but I had to modify my implementation since I depend on an API from 0.7.x

java.lang.NoClassDefFoundError: kotlinx/datetime/Clock$System
	at ai.koog.prompt.executor.clients.openai.OpenAILLMClient.<init>(OpenAILLMClient.kt:97)
	at ai.koog.prompt.executor.llms.all.SimplePromptExecutorsKt.simpleOpenAIExecutor(SimplePromptExecutors.kt:24)
	at routes.ConversationRoutesKt$conversationRoutes$1.invokeSuspend(ConversationRoutes.kt:33)
	at routes.ConversationRoutesKt$conversationRoutes$1.invoke(ConversationRoutes.kt)
	at routes.ConversationRoutesKt$conversationRoutes$1.invoke(ConversationRoutes.kt)
	at io.ktor.server.websocket.RoutingKt.handleServerSession(Routing.kt:219)
	at io.ktor.server.websocket.RoutingKt.proceedWebSocket(Routing.kt:204)
	at io.ktor.server.websocket.RoutingKt.access$proceedWebSocket(Routing.kt:1)
	at io.ktor.server.websocket.RoutingKt$webSocket$2.invokeSuspend(Routing.kt:168)
	at io.ktor.server.websocket.RoutingKt$webSocket$2.invoke(Routing.kt)
	at io.ktor.server.websocket.RoutingKt$webSocket$2.invoke(Routing.kt)
	at io.ktor.server.websocket.RoutingKt$webSocketRaw$2$1$1$1$1.invokeSuspend(Routing.kt:117)
	at io.ktor.server.websocket.RoutingKt$webSocketRaw$2$1$1$1$1.invoke(Routing.kt)
	at io.ktor.server.websocket.RoutingKt$webSocketRaw$2$1$1$1$1.invoke(Routing.kt)
	at io.ktor.server.websocket.WebSocketUpgrade$upgrade$2.invokeSuspend(WebSocketUpgrade.kt:103)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:183)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:831)

IanArb avatar Nov 15 '25 17:11 IanArb

My temporary fix, if it is of any help:

build.gtadle.kts

configurations.configureEach {
    resolutionStrategy.eachDependency {
        if (requested.group == "org.jetbrains.kotlinx" && requested.name.startsWith("kotlinx-datetime")) {
            useVersion(libs.versions.kotlinx.datetime.get())
            because("Koog OpenAI client still requires kotlinx-datetime 0.6.x because it references Clock.System.")
        }
    }
}

EurigJones avatar Nov 15 '25 23:11 EurigJones

Just FYI: you can use version "0.7.1-0.6.x-compat" in your own project instead of downgrading back to a 0.6.* version.

kwadkore avatar Nov 24 '25 18:11 kwadkore