Skip to content

Refactor structured output API to make it more flexible, support native structured output for OpenAI and Google. #1756

Refactor structured output API to make it more flexible, support native structured output for OpenAI and Google.

Refactor structured output API to make it more flexible, support native structured output for OpenAI and Google. #1756

Triggered via pull request August 10, 2025 21:02
Status Success
Total duration 19m 37s
Artifacts 3

checks.yml

on: pull_request
Matrix: tests
Fit to window
Zoom out
Zoom in

Annotations

419 warnings and 2 notices
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L35
Method `getLength$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L204
Method `covering$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/agent/context/AIAgentContext.kt#L235
Method `getAgentContextDataAdditionalKey` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/FileSystemProvider.kt#L10
Constructor `FileSystemProvider` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L26
Method `getEndInclusive$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L32
Method `getAgentConfig` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L104
Method `singleRunAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L84
Method `aiAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/DocumentStorageWithPayload.kt#L102
Method `allDocumentsWithPayload` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/feature/remote/jsonConfig.kt#L50
Constructor `FeatureMessagesSerializerCollector` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L119
Constructor `ProviderKoogProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L109
Method `intersects$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L86
Method `contains$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L45
Method `isEmpty$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L119
Class `ProviderKoogProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L94
Method `singleRunAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L132
Class `OllamaKoogProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L77
Method `substring$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L93
Method `getOpenAIClientProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L37
Method `agentConfig$koog_agents_koog_ktor_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/feature/remote/jsonConfig.kt#L68
Method `polymorphicDefaultSerializer` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L16
Constructor `TextRange` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/jvmMain/kotlin/ai/koog/rag/base/files/JVMFileSystemProvider.kt#L47
Constructor `JVMFileSystemProvider` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L104
Method `getOpenRouterClientProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/vector-storage/src/commonMain/kotlin/ai/koog/rag/vector/InMemoryVectorStorage.kt#L87
Class `InMemoryTextDocumentEmbeddingStorage` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L123
Method `intersect$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/DocumentUtils.kt#L87
Method `getCurrentLineEndExclusive` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L97
Method `contains$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/RankedDocumentStorage.kt#L56
Method `mostRelevantDocuments` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-tools/src/commonMain/kotlin/ai/koog/agents/core/tools/Tool.kt#L163
Method `encodeResultToString` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L151
Method `subtract$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/jvmMain/kotlin/ai/koog/ktor/KoogKtorServerPluginJvm.kt#L19
Constructor `McpToolsConfig` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/DocumentUtils.kt#L142
Method `getCurrentLineEndExclusiveWithLineBreaks` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogAutoConfig.kt#L40
Method `anthropicExecutor` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L31
Method `getPromptExecutor` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/jvmMain/kotlin/ai/koog/ktor/KoogKtorServerPluginJvm.kt#L19
Class `McpToolsConfig` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-test/src/commonMain/kotlin/ai/koog/agents/testing/tools/MockLLMBuilder.kt#L274
Method `addModerationResponseExactPattern` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/feature/remote/jsonConfig.kt#L50
Class `FeatureMessagesSerializerCollector` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L77
Method `getOllamaClientProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L16
Method `getEndExclusive` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L132
Constructor `OllamaKoogProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L55
Method `isNotEmpty$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L50
Method `getAnthropicClientProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/DocumentUtils.kt#L163
Method `getCurrentLineEndExclusiveWithoutLineBreaks` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-ext/src/commonMain/kotlin/ai/koog/agents/ext/llm/choice/AIAgentNodesWithChoiceExt.kt#L16
Method `nodeLLMSendResultsMultipleChoices` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L59
Method `aiAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L33
Method `getAgentFeatures` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogAutoConfig.kt#L29
Constructor `KoogAutoConfiguration` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L29
Constructor `Koog` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L67
Method `shift$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L31
Method `aiAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/jvmMain/kotlin/ai/koog/rag/base/files/JVMFileSystemProvider.kt#L47
Class `JVMFileSystemProvider` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L29
Class `Koog` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/feature/remote/jsonConfig.kt#L75
Method `polymorphicDefaultDeserializer` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/DocumentUtils.kt#L62
Method `getCurrentLineBeginning` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogAutoConfig.kt#L117
Method `openRouterExecutor` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L19
Constructor `KoogProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogAutoConfig.kt#L29
Class `KoogAutoConfiguration` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-test/src/commonMain/kotlin/ai/koog/agents/testing/tools/MockLLMBuilder.kt#L142
Method `setDefaultModerationResponse` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Agents.kt#L69
Method `aiAgent` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L195
Method `invoke$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-spring-boot-starter/src/main/kotlin/ai/koog/spring/KoogProperties.kt#L63
Method `getGoogleClientProperties` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/KoogAgentsConfig.kt#L413
Method `agentConfig` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/vector-storage/src/commonMain/kotlin/ai/koog/rag/vector/InMemoryVectorStorage.kt#L87
Constructor `InMemoryTextDocumentEmbeddingStorage` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-test/src/commonMain/kotlin/ai/koog/agents/testing/tools/MockLLMBuilder.kt#L311
Method `addModerationResponsePartialPattern` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: agents/agents-core/src/commonMain/kotlin/ai/koog/agents/core/dsl/extension/AIAgentNodes.kt#L387
Method `nodeExecuteMultipleToolsAndSendResults` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: koog-ktor/src/commonMain/kotlin/ai/koog/ktor/Koog.kt#L30
Method `getApplication` coverage is below the threshold 50%
Check Kotlin and Java source code coverage: rag/rag-base/src/commonMain/kotlin/ai/koog/rag/base/files/TextRange.kt#L137
Method `covers$koog_agents_rag_rag_base_commonMain` coverage is below the threshold 50%
Vulnerable imported dependency: koog-agents.buildSrc.main#L0
Dependency maven:com.fasterxml.jackson.core:jackson-core:2.12.7 is vulnerable , safe version 2.15.0 Module: koog-agents.buildSrc.main Tree: ``` com.fasterxml.jackson.core:jackson-core:2.12.7 ``` * [WS-2022-0468](https://www.mend.io/vulnerability-database/WS-2022-0468?utm_source=JetBrains) 7.5 Insufficient Information Results powered by [Mend.io](https://www.mend.io/jetbrains-lp/?utm_source=JetBrains)
Vulnerable imported dependency: koog-agents.buildSrc.main#L0
Dependency maven:com.fasterxml.woodstox:woodstox-core:6.2.4 is vulnerable , safe version 6.4.0 Module: koog-agents.buildSrc.main Tree: ``` com.fasterxml.woodstox:woodstox-core:6.2.4 ``` * [CVE-2022-40152](https://www.mend.io/vulnerability-database/CVE-2022-40152?utm_source=JetBrains) 6.5 Out-of-bounds Write Results powered by [Mend.io](https://www.mend.io/jetbrains-lp/?utm_source=JetBrains)
Vulnerable imported dependency: koog-agents.integration-tests.jvmTest#L0
Dependency maven:org.apache.commons:commons-compress:1.24.0 is vulnerable , safe version 1.26.0 Module: koog-agents.integration-tests.jvmTest Tree: ``` org.apache.commons:commons-compress:1.24.0 -org.testcontainers:testcontainers:1.19.7 ``` * [CVE-2024-25710](https://www.mend.io/vulnerability-database/CVE-2024-25710?utm_source=JetBrains) 8.1 Loop with Unreachable Exit Condition ('Infinite Loop') * [CVE-2024-26308](https://www.mend.io/vulnerability-database/CVE-2024-26308?utm_source=JetBrains) 5.5 Allocation of Resources Without Limits or Throttling Results powered by [Mend.io](https://www.mend.io/jetbrains-lp/?utm_source=JetBrains)
Vulnerable imported dependency: koog-agents.integration-tests.jvmMain#L0
Dependency maven:org.apache.commons:commons-compress:1.24.0 is vulnerable , safe version 1.26.0 Module: koog-agents.integration-tests.jvmMain Tree: ``` org.apache.commons:commons-compress:1.24.0 -org.testcontainers:testcontainers:1.19.7 ``` * [CVE-2024-25710](https://www.mend.io/vulnerability-database/CVE-2024-25710?utm_source=JetBrains) 8.1 Loop with Unreachable Exit Condition ('Infinite Loop') * [CVE-2024-26308](https://www.mend.io/vulnerability-database/CVE-2024-26308?utm_source=JetBrains) 5.5 Allocation of Resources Without Limits or Throttling Results powered by [Mend.io](https://www.mend.io/jetbrains-lp/?utm_source=JetBrains)
qodana
Failed to push quick fixes – The process '/usr/bin/git' failed with exit code 128
tests (windows-latest)
The windows-latest label will migrate from Windows Server 2022 to Windows Server 2025 beginning September 2, 2025. For more information see https://github.com/actions/runner-images/issues/12677

Artifacts

Produced during runtime
Name Size Digest
gradle-coverage-data.zip
115 KB
sha256:35cf2746b519ce3662e812e507e09c7eb59be13dc4605792265df5982f399d77
reports-ubuntu-latest
1.35 MB
sha256:25007655f11129f67103f4e38c130ec9893cdc6096116dfd00d6bec7e518870b
reports-windows-latest
621 KB
sha256:7e63f3022d68c6cfae0065141ed75b0d9fea5e3422c5735175cae01e62d6297e