KEMBAR78
Non-graph API by Rizzen · Pull Request #560 · JetBrains/koog · GitHub
Skip to content

Conversation

@Rizzen
Copy link
Member

@Rizzen Rizzen commented Aug 8, 2025

This PR introduces new kind of agents API - ActAgent, allowing users to create simpler agents without working with graphs.


Type of the change

  • New feature
  • Bug fix
  • Documentation fix
  • Tests improvement
  • Refactoring

Checklist for all pull requests

  • The pull request has a description of the proposed change
  • I read the Contributing Guidelines before opening the pull request
  • The pull request uses develop as the base branch
  • Tests for the changes have been added
  • All new and existing tests passed
Additional steps for pull requests adding a new feature
  • An issue describing the proposed change exists
  • The pull request includes a link to the issue
  • The change was discussed and approved in the issue
  • Docs have been added / updated

@github-actions
Copy link

github-actions bot commented Aug 8, 2025

Qodana for JVM

852 new problems were found

Inspection name Severity Problems
Check Kotlin and Java source code coverage 🔶 Warning 820
Missing KDoc for public API declaration 🔶 Warning 25
Vulnerable imported dependency 🔶 Warning 6
String concatenation that can be converted to string template ◽️ Notice 1
@@ Code coverage @@
+ 67% total lines covered
11264 lines analyzed, 7548 lines covered
# Calculated according to the filters of your coverage tool

☁️ View the detailed Qodana report

Detected 205 dependencies

Third-party software list

This page lists the third-party software dependencies used in koog-agents

Dependency Version Licenses
annotations-js 26.0.2 Apache-2.0
annotations-wasmjs 26.0.2 Apache-2.0
annotations 13.0 Apache-2.0
annotations 23.0.0 Apache-2.0
annotations 26.0.2 Apache-2.0
atomicfu-js 0.28.0 Apache-2.0
atomicfu-wasm-js 0.28.0 Apache-2.0
atomicfu 0.23.1 Apache-2.0
aws-config-jvm 1.5.16 Apache-2.0
aws-core-jvm 1.5.16 Apache-2.0
aws-credentials-jvm 1.5.4 Apache-2.0
aws-endpoint-jvm 1.5.16 Apache-2.0
aws-signing-common-jvm 1.5.4 Apache-2.0
bedrockruntime-jvm 1.5.16 Apache-2.0
config 1.4.3 Apache-2.0
dokka-core 2.0.0 Apache-2.0
dokka-gradle-plugin 2.0.0 Apache-2.0
fus-statistics-gradle-plugin 2.1.21 Apache-2.0
http-auth-api-jvm 1.5.4 Apache-2.0
http-auth-jvm 1.5.4 Apache-2.0
http-client-jvm 1.5.4 Apache-2.0
http-jvm 1.5.4 Apache-2.0
identity-api-jvm 1.5.4 Apache-2.0
jackson-annotations 2.12.7 Apache-2.0
jackson-annotations 2.19.1 Apache-2.0
jackson-core 2.12.7 Apache-2.0
jackson-core 2.19.1 Apache-2.0
jackson-databind 2.12.7.1 Apache-2.0
jackson-databind 2.19.1 Apache-2.0
jackson-dataformat-xml 2.12.7 Apache-2.0
jackson-module-jaxb-annotations 2.12.7 Apache-2.0
jackson-module-kotlin 2.12.7 Apache-2.0
jackson-module-kotlin 2.19.1 Apache-2.0
jakarta.activation-api 1.2.1 BSD-3-Clause
jakarta.annotation-api 2.1.1 Classpath-exception-2.0
EPL-2.0
GPL-2.0-only
jakarta.xml.bind-api 2.3.2 BSD-3-Clause
jet-sign 45.47 Apache-2.0
jul-to-slf4j 2.0.17 MIT
kotlin-dom-api-compat 2.1.21 Apache-2.0
kotlin-gradle-plugin-api 2.1.21 Apache-2.0
kotlin-gradle-plugin-model 2.1.21 Apache-2.0
kotlin-gradle-plugin 2.1.21 Apache-2.0
kotlin-logging-js 7.0.7 Apache-2.0
kotlin-logging-jvm 7.0.7 Apache-2.0
kotlin-logging-wasm-js 7.0.7 Apache-2.0
kotlin-logging 7.0.7 Apache-2.0
kotlin-reflect 2.0.21 Apache-2.0
kotlin-reflect 2.1.21 Apache-2.0
kotlin-sdk-jvm 0.6.0 MIT
kotlin-stdlib-js 2.1.21 Apache-2.0
kotlin-stdlib-wasm-js 2.1.21 Apache-2.0
kotlin-stdlib 2.0.21 Apache-2.0
kotlin-stdlib 2.1.21 Apache-2.0
kotlinx-collections-immutable-jvm 0.4.0 Apache-2.0
kotlinx-coroutines-core-js 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.8.0 Apache-2.0
kotlinx-coroutines-core-wasm-js 1.10.2 Apache-2.0
kotlinx-coroutines-core 1.10.2 Apache-2.0
kotlinx-coroutines-jdk8 1.10.2 Apache-2.0
kotlinx-coroutines-reactive 1.10.2 Apache-2.0
kotlinx-coroutines-slf4j 1.10.2 Apache-2.0
kotlinx-datetime-js 0.6.2 Apache-2.0
kotlinx-datetime-jvm 0.6.2 Apache-2.0
kotlinx-datetime-wasm-js 0.6.2 Apache-2.0
kotlinx-datetime 0.6.2 Apache-2.0
kotlinx-io-bytestring-js 0.7.0 Apache-2.0
kotlinx-io-bytestring-jvm 0.7.0 Apache-2.0
kotlinx-io-bytestring-wasm-js 0.7.0 Apache-2.0
kotlinx-io-bytestring 0.7.0 Apache-2.0
kotlinx-io-core-js 0.7.0 Apache-2.0
kotlinx-io-core-jvm 0.7.0 Apache-2.0
kotlinx-io-core-wasm-js 0.7.0 Apache-2.0
kotlinx-io-core 0.7.0 Apache-2.0
kotlinx-serialization-core-js 1.8.1 Apache-2.0
kotlinx-serialization-core-jvm 1.8.1 Apache-2.0
kotlinx-serialization-core-jvm 1.9.0 Apache-2.0
kotlinx-serialization-core-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-core 1.8.1 Apache-2.0
kotlinx-serialization-json-io-js 1.8.1 Apache-2.0
kotlinx-serialization-json-io-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json-io-jvm 1.9.0 Apache-2.0
kotlinx-serialization-json-io-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-json-io 1.8.1 Apache-2.0
kotlinx-serialization-json-js 1.8.1 Apache-2.0
kotlinx-serialization-json-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json-jvm 1.9.0 Apache-2.0
kotlinx-serialization-json-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-json 1.8.1 Apache-2.0
ktor-client-cio-js 3.2.2 Apache-2.0
ktor-client-cio-jvm 3.2.2 Apache-2.0
ktor-client-cio-wasm-js 3.2.2 Apache-2.0
ktor-client-cio 3.2.2 Apache-2.0
ktor-client-content-negotiation-js 3.2.2 Apache-2.0
ktor-client-content-negotiation-jvm 3.2.2 Apache-2.0
ktor-client-content-negotiation-wasm-js 3.2.2 Apache-2.0
ktor-client-content-negotiation 3.2.2 Apache-2.0
ktor-client-core-js 3.2.2 Apache-2.0
ktor-client-core-jvm 3.2.2 Apache-2.0
ktor-client-core-wasm-js 3.2.2 Apache-2.0
ktor-client-core 3.2.2 Apache-2.0
ktor-client-darwin 3.2.2 Apache-2.0
ktor-client-js-js 3.2.2 Apache-2.0
ktor-client-logging-js 3.2.2 Apache-2.0
ktor-client-logging-jvm 3.2.2 Apache-2.0
ktor-client-logging-wasm-js 3.2.2 Apache-2.0
ktor-client-logging 3.2.2 Apache-2.0
ktor-events-js 3.2.2 Apache-2.0
ktor-events-jvm 3.2.2 Apache-2.0
ktor-events-wasm-js 3.2.2 Apache-2.0
ktor-events 3.2.2 Apache-2.0
ktor-http-cio-js 3.2.2 Apache-2.0
ktor-http-cio-jvm 3.2.2 Apache-2.0
ktor-http-cio-wasm-js 3.2.2 Apache-2.0
ktor-http-cio 3.2.2 Apache-2.0
ktor-http-js 3.2.2 Apache-2.0
ktor-http-jvm 3.2.2 Apache-2.0
ktor-http-wasm-js 3.2.2 Apache-2.0
ktor-http 3.2.2 Apache-2.0
ktor-io-js 3.2.2 Apache-2.0
ktor-io-jvm 3.2.2 Apache-2.0
ktor-io-wasm-js 3.2.2 Apache-2.0
ktor-io 3.2.2 Apache-2.0
ktor-network-js 3.2.2 Apache-2.0
ktor-network-jvm 3.2.2 Apache-2.0
ktor-network-tls-js 3.2.2 Apache-2.0
ktor-network-tls-jvm 3.2.2 Apache-2.0
ktor-network-tls-wasm-js 3.2.2 Apache-2.0
ktor-network-tls 3.2.2 Apache-2.0
ktor-network-wasm-js 3.2.2 Apache-2.0
ktor-network 3.2.2 Apache-2.0
ktor-serialization-js 3.2.2 Apache-2.0
ktor-serialization-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-wasm-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json 3.2.2 Apache-2.0
ktor-serialization-kotlinx-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-wasm-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx 3.2.2 Apache-2.0
ktor-serialization-wasm-js 3.2.2 Apache-2.0
ktor-serialization 3.2.2 Apache-2.0
ktor-server-cio-js 3.2.2 Apache-2.0
ktor-server-cio-jvm 3.2.2 Apache-2.0
ktor-server-cio-wasm-js 3.2.2 Apache-2.0
ktor-server-cio 3.2.2 Apache-2.0
ktor-server-core-js 3.2.2 Apache-2.0
ktor-server-core-jvm 3.2.2 Apache-2.0
ktor-server-core-wasm-js 3.2.2 Apache-2.0
ktor-server-core 3.2.2 Apache-2.0
ktor-server-sse-js 3.2.2 Apache-2.0
ktor-server-sse-jvm 3.2.2 Apache-2.0
ktor-server-sse-wasm-js 3.2.2 Apache-2.0
ktor-server-sse 3.2.2 Apache-2.0
ktor-server-websockets-jvm 3.2.1 Apache-2.0
ktor-sse-js 3.2.2 Apache-2.0
ktor-sse-jvm 3.2.2 Apache-2.0
ktor-sse-wasm-js 3.2.2 Apache-2.0
ktor-sse 3.2.2 Apache-2.0
ktor-utils-js 3.2.2 Apache-2.0
ktor-utils-jvm 3.2.2 Apache-2.0
ktor-utils-wasm-js 3.2.2 Apache-2.0
ktor-utils 3.2.2 Apache-2.0
ktor-websocket-serialization-js 3.2.2 Apache-2.0
ktor-websocket-serialization-jvm 3.2.2 Apache-2.0
ktor-websocket-serialization-wasm-js 3.2.2 Apache-2.0
ktor-websocket-serialization 3.2.2 Apache-2.0
ktor-websockets-js 3.2.2 Apache-2.0
ktor-websockets-jvm 3.2.2 Apache-2.0
ktor-websockets-wasm-js 3.2.2 Apache-2.0
ktor-websockets 3.2.2 Apache-2.0
lettuce-core 6.5.5.release MIT
log4j-api 2.24.3 Apache-2.0
log4j-to-slf4j 2.24.3 Apache-2.0
logback-classic 1.5.13 EPL-1.0
LGPL-2.0-or-later
logback-classic 1.5.18 EPL-1.0
LGPL-2.0-or-later
logback-core 1.5.13 EPL-1.0
LGPL-2.0-or-later
logback-core 1.5.18 EPL-1.0
LGPL-2.0-or-later
netty-common 4.1.118.final Apache-2.0
opentelemetry-api 1.51.0 Apache-2.0
opentelemetry-context 1.51.0 Apache-2.0
opentelemetry-exporter-logging 1.51.0 Apache-2.0
opentelemetry-exporter-otlp 1.51.0 Apache-2.0
opentelemetry-sdk-common 1.51.0 Apache-2.0
opentelemetry-sdk-logs 1.51.0 Apache-2.0
opentelemetry-sdk-metrics 1.51.0 Apache-2.0
opentelemetry-sdk-trace 1.51.0 Apache-2.0
opentelemetry-sdk 1.51.0 Apache-2.0
reactive-streams 1.0.4 MIT-0
reactor-core 3.6.6 Apache-2.0
reactor-kotlin-extensions 1.2.3 Apache-2.0
runtime-core-jvm 1.5.4 Apache-2.0
slf4j-api 2.0.17 MIT
smithy-client-jvm 1.5.4 Apache-2.0
snakeyaml 2.4 Apache-2.0
spring-boot-autoconfigure 3.5.3 Apache-2.0
spring-boot-starter-logging 3.5.3 Apache-2.0
spring-boot-starter 3.5.3 Apache-2.0
spring-boot 3.5.3 Apache-2.0
spring-core 6.2.8 Apache-2.0
stax2-api 4.2.1 BSD-2-Clause
BSD-3-Clause
stdlib stdlib Apache-2.0
telemetry-api-jvm 1.5.4 Apache-2.0
woodstox-core 6.2.4 Apache-2.0
Contact Qodana team

Contact us at qodana-support@jetbrains.com

@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch 3 times, most recently from 33882ba to 26cc791 Compare August 15, 2025 18:03
@Rizzen
Copy link
Member Author

Rizzen commented Aug 15, 2025

@sdubov @Ololoshechkin @EugeneTheDev This PR still in progress and I would like to finish it when I'll back. But it's mostly ready implementation-wise, so it's already up to top-level review (GraphAgent/Non-Graph agent separation, pipeline separation, environment separation, etc).
What's remaining - tests, features migration (at least Memory, MessageTokenizer, maybe some more), docs.

@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch from 26cc791 to e036de0 Compare August 15, 2025 18:06
@Rizzen Rizzen requested a review from devcrocod August 15, 2025 18:10
@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch from e036de0 to 2dd6fab Compare August 27, 2025 15:52
@Rizzen Rizzen marked this pull request as ready for review August 28, 2025 14:51
@Rizzen Rizzen changed the title [IN PROGRESS] Non-graph API Non-graph API Aug 28, 2025
@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch from e07f8df to 23e21a5 Compare August 28, 2025 15:09
* @see [AIAgent] class
*/
@OptIn(ExperimentalUuidApi::class)
public inline fun <reified Input, reified Output> AIAgent(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now, as it's an external function it would be even harder to instantiate from Java.

Maybe let's keep everything inside AIAgent and make them separate constructors (and in Java they would be factory methods) ?

@Rizzen Rizzen requested a review from kpavlov September 3, 2025 10:48
Copy link
Contributor

@sdubov sdubov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Rizzen, I like the API in general. Looks really cool!

I have some general concerns about the changes in features. Currently, all features need to implement both interfaces and register handlers twice. Even more, each feature should have a duplicated set of handlers if you what to use it in both graph and non-graph agents. This might be a bit overcomplicated.

I would propose to use a bit different approach if you like it. In scope of events, the difference between graph and non-graph agents are in the events that agent execution triggers. For graph agents we have all these before/after node, etc. For non-graph API you have the same, but no node-related events. So, I would expect that if you install the same feature in a non-graph agent you will receive all events registered inside a feature, except nodes-related (as they are not fired on agent execution).

Taking this, you can leave current implementation for all feature as it is right now without any change. The same is true for Agent pipeline. You keep it the same with ability to register all events (graph and non-graph). So, feature can also register them all. On a AIAgentPipeline side you can add some logic (it can be a flag in constructor or use some other checks for context type for each handler) that will define what type of agent is that - graph or non-graph. Based on flag you can ignore some handlers that are not needed. This approach make Feature development as simple as it is right now (without duplicate handlers registration), but delegate this graph/non-graph responsibility to the pipeline class (which I think much easier to control).

Please let me know what do you think about proposed solution.

@Rizzen
Copy link
Member Author

Rizzen commented Sep 4, 2025

@sdubov I don't really like the idea of "universal registration" you suggest.

The idea behind the current design is clear separation of concerns. When you develop a feature for either a graph or non-graph agent, you only deal with the relevant handlers. This keeps the mental model simple — you know exactly which events your feature can react to.

With a universal interface, you end up in situations like: “Okay, I have something called afterNode, let's try it out”, then you install the feature on a non-graph agent and... nothing happens. After some time digging through source code, you finally discover that some handlers in the interface you implemented are silently ignored because of an internal flag in the pipeline.
That kind of invisible behavior would be very frustrating to users — it's unpredictable and hard to debug.

This also opens the door to other confusing scenarios. For example, it would technically allow installing something like the Persistency feature into a non-graph agent. It would appear to install successfully but would silently do nothing, which is extremely unclear for users and could easily lead to subtle bugs.

From an implementation perspective, this would also require the non-graph agent to maintain a graph-like pipeline to satisfy all those extra handlers, even if they’re never actually used. That adds unnecessary complexity and coupling in places where it doesn’t belong.

The current design avoids these problems by using clear, explicit interfaces:

If you’re writing a NonGraphFeature, you only see the relevant events, and everything you implement will always fire.

The type system enforces compatibility — you simply cannot install a non-graph feature into a graph agent or vice versa. This makes incorrect usage impossible at compile time, rather than a silent runtime no-op.

This makes the system much more predictable and maintainable. A developer always knows exactly what events are available, what will trigger, and what won’t. It also keeps the boundaries between graph and non-graph agents crisp, without forcing one to emulate the internals of the other just to support a universal abstraction. Yes, it requires to impement two installs in case of features that should work on both types of agents, but it's lesser price for clear interfaces and type safety.

@sdubov
Copy link
Contributor

sdubov commented Sep 4, 2025

@Rizzen, I fully agree with your points and concerns. I think there are pros and cons in both approaches. It's up to you, for sure, to estimate which one would be better for an end-user perspective.

Let me clarify some points from my suggestion (as I found that I miss-format the original message) and I have a feeling that the idea might be not clear from the initial description:

It would appear to install successfully but would silently do nothing

I would not expect the feature is fully ignored. My suggestion was to ignore a graph-specific events only, e.g. if you have Tracing feature and you install it in a graph-agent you get trace:

> agent start
> node call llm 1 start
> llm call 1 start
> llm call 1 finish
> node call llm 1 finish
> agent finished

If you install the same feature inside a non-graph-agent, you should get everything except graph-specific events (which are not fired in a non-graph mode) as expected:

> agent start
> llm call 1 start
> llm call 1 finish
> agent finished

I think it might be quite clear for a user that everything graph-specific will not work in non-graph-agent scenarios (it is actually already works the same way with your approach, but you explicitly need to write extra code in the feature for that).

In the approach that you use, you make every feature development more complicated. You need to be familiar with non-graph option in koog. Otherwise, it also might be a surprise, when you cannot install an existing feature when you run non-graph agent. A user need to be aware that they should implement both interfaces to make sure feature works for both of them, and it is not obvious from my vision.

@CaelumF
Copy link

CaelumF commented Sep 4, 2025

I think the type system should indicate whether a feature was developed with an awareness of non-graph and/or graph scenarios. If there is a lot of overlap between them, then the overlap could be another candidate for indicating an awareness of via type system.

I reckon it probably makes sense to have them separate before identifying that overlap, unless it's very clear already

@Rizzen
Copy link
Member Author

Rizzen commented Sep 4, 2025

@sdubov Thank you for clarification, I believe I got your suggestion right.

> agent start
> node call llm 1 start
> llm call 1 start
> llm call 1 finish
> node call llm 1 finish
> agent finished

and

> agent start
> node call llm 1 start
> llm call 1 start
> llm call 1 finish
> node call llm 1 finish
> agent finished

examples are exactly what I meant by "silently ignoring" events. In case of tracing feature it might be still look pretty logical, because it still traces most events for both agents. But with Persistency, for example, it would be just working feature in the case of graph agent and completely no-op feature in the case of non-graph, while still allowing to install it to non-graph agent.

So when we were designing that feature - we were aiming to clearly separate Graph and Non-Graph agents - we have different contexts, different pipelines and different features, preventing to install wrong features to wrong agents on compilation level to avoid strange behaviour and confusion from users.

From the feature developer perspective - if you're one, you are aware of concepts like graph agent, non-graph agent and even graph elements like nodes etc. We can do that with additional documentation on feature development.

@ptitjes
Copy link
Contributor

ptitjes commented Sep 4, 2025

Just a note to say that the current persistency feature stores not only the current graph node but also the history and the agent state. I would hope that the persistency feature would allow for explicit checkpoint creation/recall from a programatic agent. If it's necessary to decouple the addition of the current graph node to the checkpoint, through an extension point, then it's the way to go IMO.

@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch from 00751b5 to 7a84501 Compare September 5, 2025 12:41
@Rizzen Rizzen force-pushed the mark/non-graph-api-2 branch from b30384d to 9585e69 Compare September 5, 2025 15:34
Copy link
Contributor

@sdubov sdubov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some outdated naming left in a codebase. Other than that, I think it can go to the branch from my vision. Thank you!

@Ololoshechkin Ololoshechkin self-requested a review September 8, 2025 12:08
@Ololoshechkin
Copy link
Collaborator

Let's make follow-up cosmetic changes in the future PRs :)
Conceptually, this one looks good.

Copy link
Contributor

@sdubov sdubov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All major comments are fixed. There are some other places with outdated comments and KDoc that needs to be updated as well. I've added several places that need to be fixed. @Rizzen you can just search for "loop" or "actAgent" text and fix it here or later. Other that that, LGTM!

@github-actions
Copy link

github-actions bot commented Sep 8, 2025

Qodana for JVM

853 new problems were found

Inspection name Severity Problems
Check Kotlin and Java source code coverage 🔶 Warning 821
Missing KDoc for public API declaration 🔶 Warning 25
Vulnerable imported dependency 🔶 Warning 6
String concatenation that can be converted to string template ◽️ Notice 1
@@ Code coverage @@
+ 66% total lines covered
11276 lines analyzed, 7544 lines covered
# Calculated according to the filters of your coverage tool

☁️ View the detailed Qodana report

Detected 205 dependencies

Third-party software list

This page lists the third-party software dependencies used in koog-agents

Dependency Version Licenses
annotations-js 26.0.2 Apache-2.0
annotations-wasmjs 26.0.2 Apache-2.0
annotations 13.0 Apache-2.0
annotations 23.0.0 Apache-2.0
annotations 26.0.2 Apache-2.0
atomicfu-js 0.28.0 Apache-2.0
atomicfu-wasm-js 0.28.0 Apache-2.0
atomicfu 0.23.1 Apache-2.0
aws-config-jvm 1.5.16 Apache-2.0
aws-core-jvm 1.5.16 Apache-2.0
aws-credentials-jvm 1.5.4 Apache-2.0
aws-endpoint-jvm 1.5.16 Apache-2.0
aws-signing-common-jvm 1.5.4 Apache-2.0
bedrockruntime-jvm 1.5.16 Apache-2.0
config 1.4.3 Apache-2.0
dokka-core 2.0.0 Apache-2.0
dokka-gradle-plugin 2.0.0 Apache-2.0
fus-statistics-gradle-plugin 2.1.21 Apache-2.0
http-auth-api-jvm 1.5.4 Apache-2.0
http-auth-jvm 1.5.4 Apache-2.0
http-client-jvm 1.5.4 Apache-2.0
http-jvm 1.5.4 Apache-2.0
identity-api-jvm 1.5.4 Apache-2.0
jackson-annotations 2.12.7 Apache-2.0
jackson-annotations 2.19.1 Apache-2.0
jackson-core 2.12.7 Apache-2.0
jackson-core 2.19.1 Apache-2.0
jackson-databind 2.12.7.1 Apache-2.0
jackson-databind 2.19.1 Apache-2.0
jackson-dataformat-xml 2.12.7 Apache-2.0
jackson-module-jaxb-annotations 2.12.7 Apache-2.0
jackson-module-kotlin 2.12.7 Apache-2.0
jackson-module-kotlin 2.19.1 Apache-2.0
jakarta.activation-api 1.2.1 BSD-3-Clause
jakarta.annotation-api 2.1.1 Classpath-exception-2.0
EPL-2.0
GPL-2.0-only
jakarta.xml.bind-api 2.3.2 BSD-3-Clause
jet-sign 45.47 Apache-2.0
jul-to-slf4j 2.0.17 MIT
kotlin-dom-api-compat 2.1.21 Apache-2.0
kotlin-gradle-plugin-api 2.1.21 Apache-2.0
kotlin-gradle-plugin-model 2.1.21 Apache-2.0
kotlin-gradle-plugin 2.1.21 Apache-2.0
kotlin-logging-js 7.0.7 Apache-2.0
kotlin-logging-jvm 7.0.7 Apache-2.0
kotlin-logging-wasm-js 7.0.7 Apache-2.0
kotlin-logging 7.0.7 Apache-2.0
kotlin-reflect 2.0.21 Apache-2.0
kotlin-reflect 2.1.21 Apache-2.0
kotlin-sdk-jvm 0.6.0 MIT
kotlin-stdlib-js 2.1.21 Apache-2.0
kotlin-stdlib-wasm-js 2.1.21 Apache-2.0
kotlin-stdlib 2.0.21 Apache-2.0
kotlin-stdlib 2.1.21 Apache-2.0
kotlinx-collections-immutable-jvm 0.4.0 Apache-2.0
kotlinx-coroutines-core-js 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.10.2 Apache-2.0
kotlinx-coroutines-core-jvm 1.8.0 Apache-2.0
kotlinx-coroutines-core-wasm-js 1.10.2 Apache-2.0
kotlinx-coroutines-core 1.10.2 Apache-2.0
kotlinx-coroutines-jdk8 1.10.2 Apache-2.0
kotlinx-coroutines-reactive 1.10.2 Apache-2.0
kotlinx-coroutines-slf4j 1.10.2 Apache-2.0
kotlinx-datetime-js 0.6.2 Apache-2.0
kotlinx-datetime-jvm 0.6.2 Apache-2.0
kotlinx-datetime-wasm-js 0.6.2 Apache-2.0
kotlinx-datetime 0.6.2 Apache-2.0
kotlinx-io-bytestring-js 0.7.0 Apache-2.0
kotlinx-io-bytestring-jvm 0.7.0 Apache-2.0
kotlinx-io-bytestring-wasm-js 0.7.0 Apache-2.0
kotlinx-io-bytestring 0.7.0 Apache-2.0
kotlinx-io-core-js 0.7.0 Apache-2.0
kotlinx-io-core-jvm 0.7.0 Apache-2.0
kotlinx-io-core-wasm-js 0.7.0 Apache-2.0
kotlinx-io-core 0.7.0 Apache-2.0
kotlinx-serialization-core-js 1.8.1 Apache-2.0
kotlinx-serialization-core-jvm 1.8.1 Apache-2.0
kotlinx-serialization-core-jvm 1.9.0 Apache-2.0
kotlinx-serialization-core-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-core 1.8.1 Apache-2.0
kotlinx-serialization-json-io-js 1.8.1 Apache-2.0
kotlinx-serialization-json-io-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json-io-jvm 1.9.0 Apache-2.0
kotlinx-serialization-json-io-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-json-io 1.8.1 Apache-2.0
kotlinx-serialization-json-js 1.8.1 Apache-2.0
kotlinx-serialization-json-jvm 1.8.1 Apache-2.0
kotlinx-serialization-json-jvm 1.9.0 Apache-2.0
kotlinx-serialization-json-wasm-js 1.8.1 Apache-2.0
kotlinx-serialization-json 1.8.1 Apache-2.0
ktor-client-cio-js 3.2.2 Apache-2.0
ktor-client-cio-jvm 3.2.2 Apache-2.0
ktor-client-cio-wasm-js 3.2.2 Apache-2.0
ktor-client-cio 3.2.2 Apache-2.0
ktor-client-content-negotiation-js 3.2.2 Apache-2.0
ktor-client-content-negotiation-jvm 3.2.2 Apache-2.0
ktor-client-content-negotiation-wasm-js 3.2.2 Apache-2.0
ktor-client-content-negotiation 3.2.2 Apache-2.0
ktor-client-core-js 3.2.2 Apache-2.0
ktor-client-core-jvm 3.2.2 Apache-2.0
ktor-client-core-wasm-js 3.2.2 Apache-2.0
ktor-client-core 3.2.2 Apache-2.0
ktor-client-darwin 3.2.2 Apache-2.0
ktor-client-js-js 3.2.2 Apache-2.0
ktor-client-logging-js 3.2.2 Apache-2.0
ktor-client-logging-jvm 3.2.2 Apache-2.0
ktor-client-logging-wasm-js 3.2.2 Apache-2.0
ktor-client-logging 3.2.2 Apache-2.0
ktor-events-js 3.2.2 Apache-2.0
ktor-events-jvm 3.2.2 Apache-2.0
ktor-events-wasm-js 3.2.2 Apache-2.0
ktor-events 3.2.2 Apache-2.0
ktor-http-cio-js 3.2.2 Apache-2.0
ktor-http-cio-jvm 3.2.2 Apache-2.0
ktor-http-cio-wasm-js 3.2.2 Apache-2.0
ktor-http-cio 3.2.2 Apache-2.0
ktor-http-js 3.2.2 Apache-2.0
ktor-http-jvm 3.2.2 Apache-2.0
ktor-http-wasm-js 3.2.2 Apache-2.0
ktor-http 3.2.2 Apache-2.0
ktor-io-js 3.2.2 Apache-2.0
ktor-io-jvm 3.2.2 Apache-2.0
ktor-io-wasm-js 3.2.2 Apache-2.0
ktor-io 3.2.2 Apache-2.0
ktor-network-js 3.2.2 Apache-2.0
ktor-network-jvm 3.2.2 Apache-2.0
ktor-network-tls-js 3.2.2 Apache-2.0
ktor-network-tls-jvm 3.2.2 Apache-2.0
ktor-network-tls-wasm-js 3.2.2 Apache-2.0
ktor-network-tls 3.2.2 Apache-2.0
ktor-network-wasm-js 3.2.2 Apache-2.0
ktor-network 3.2.2 Apache-2.0
ktor-serialization-js 3.2.2 Apache-2.0
ktor-serialization-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json-wasm-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx-json 3.2.2 Apache-2.0
ktor-serialization-kotlinx-jvm 3.2.2 Apache-2.0
ktor-serialization-kotlinx-wasm-js 3.2.2 Apache-2.0
ktor-serialization-kotlinx 3.2.2 Apache-2.0
ktor-serialization-wasm-js 3.2.2 Apache-2.0
ktor-serialization 3.2.2 Apache-2.0
ktor-server-cio-js 3.2.2 Apache-2.0
ktor-server-cio-jvm 3.2.2 Apache-2.0
ktor-server-cio-wasm-js 3.2.2 Apache-2.0
ktor-server-cio 3.2.2 Apache-2.0
ktor-server-core-js 3.2.2 Apache-2.0
ktor-server-core-jvm 3.2.2 Apache-2.0
ktor-server-core-wasm-js 3.2.2 Apache-2.0
ktor-server-core 3.2.2 Apache-2.0
ktor-server-sse-js 3.2.2 Apache-2.0
ktor-server-sse-jvm 3.2.2 Apache-2.0
ktor-server-sse-wasm-js 3.2.2 Apache-2.0
ktor-server-sse 3.2.2 Apache-2.0
ktor-server-websockets-jvm 3.2.1 Apache-2.0
ktor-sse-js 3.2.2 Apache-2.0
ktor-sse-jvm 3.2.2 Apache-2.0
ktor-sse-wasm-js 3.2.2 Apache-2.0
ktor-sse 3.2.2 Apache-2.0
ktor-utils-js 3.2.2 Apache-2.0
ktor-utils-jvm 3.2.2 Apache-2.0
ktor-utils-wasm-js 3.2.2 Apache-2.0
ktor-utils 3.2.2 Apache-2.0
ktor-websocket-serialization-js 3.2.2 Apache-2.0
ktor-websocket-serialization-jvm 3.2.2 Apache-2.0
ktor-websocket-serialization-wasm-js 3.2.2 Apache-2.0
ktor-websocket-serialization 3.2.2 Apache-2.0
ktor-websockets-js 3.2.2 Apache-2.0
ktor-websockets-jvm 3.2.2 Apache-2.0
ktor-websockets-wasm-js 3.2.2 Apache-2.0
ktor-websockets 3.2.2 Apache-2.0
lettuce-core 6.5.5.release MIT
log4j-api 2.24.3 Apache-2.0
log4j-to-slf4j 2.24.3 Apache-2.0
logback-classic 1.5.13 EPL-1.0
LGPL-2.0-or-later
logback-classic 1.5.18 EPL-1.0
LGPL-2.0-or-later
logback-core 1.5.13 EPL-1.0
LGPL-2.0-or-later
logback-core 1.5.18 EPL-1.0
LGPL-2.0-or-later
netty-common 4.1.118.final Apache-2.0
opentelemetry-api 1.51.0 Apache-2.0
opentelemetry-context 1.51.0 Apache-2.0
opentelemetry-exporter-logging 1.51.0 Apache-2.0
opentelemetry-exporter-otlp 1.51.0 Apache-2.0
opentelemetry-sdk-common 1.51.0 Apache-2.0
opentelemetry-sdk-logs 1.51.0 Apache-2.0
opentelemetry-sdk-metrics 1.51.0 Apache-2.0
opentelemetry-sdk-trace 1.51.0 Apache-2.0
opentelemetry-sdk 1.51.0 Apache-2.0
reactive-streams 1.0.4 MIT-0
reactor-core 3.6.6 Apache-2.0
reactor-kotlin-extensions 1.2.3 Apache-2.0
runtime-core-jvm 1.5.4 Apache-2.0
slf4j-api 2.0.17 MIT
smithy-client-jvm 1.5.4 Apache-2.0
snakeyaml 2.4 Apache-2.0
spring-boot-autoconfigure 3.5.3 Apache-2.0
spring-boot-starter-logging 3.5.3 Apache-2.0
spring-boot-starter 3.5.3 Apache-2.0
spring-boot 3.5.3 Apache-2.0
spring-core 6.2.8 Apache-2.0
stax2-api 4.2.1 BSD-2-Clause
BSD-3-Clause
stdlib stdlib Apache-2.0
telemetry-api-jvm 1.5.4 Apache-2.0
woodstox-core 6.2.4 Apache-2.0
Contact Qodana team

Contact us at qodana-support@jetbrains.com

@Rizzen Rizzen merged commit bcab227 into develop Sep 8, 2025
8 checks passed
@Rizzen Rizzen deleted the mark/non-graph-api-2 branch September 8, 2025 15:36
kpavlov pushed a commit that referenced this pull request Sep 12, 2025
This PR introduces new kind of agents API - ActAgent, allowing users to
create simpler agents without working with graphs.

---

#### Type of the change
- [x] New feature
- [ ] Bug fix
- [ ] Documentation fix
- [ ] Tests improvement
- [ ] Refactoring

#### Checklist for all pull requests
- [ ] The pull request has a description of the proposed change
- [ ] I read the [Contributing
Guidelines](https://github.com/JetBrains/koog/blob/main/CONTRIBUTING.md)
before opening the pull request
- [ ] The pull request uses **`develop`** as the base branch
- [ ] Tests for the changes have been added
- [ ] All new and existing tests passed

##### Additional steps for pull requests adding a new feature
- [ ] An issue describing the proposed change exists
- [ ] The pull request includes a link to the issue
- [ ] The change was discussed and approved in the issue
- [ ] Docs have been added / updated
karloti pushed a commit to karloti/koog that referenced this pull request Sep 20, 2025
This PR introduces new kind of agents API - ActAgent, allowing users to
create simpler agents without working with graphs.

---

#### Type of the change
- [x] New feature
- [ ] Bug fix
- [ ] Documentation fix
- [ ] Tests improvement
- [ ] Refactoring

#### Checklist for all pull requests
- [ ] The pull request has a description of the proposed change
- [ ] I read the [Contributing
Guidelines](https://github.com/JetBrains/koog/blob/main/CONTRIBUTING.md)
before opening the pull request
- [ ] The pull request uses **`develop`** as the base branch
- [ ] Tests for the changes have been added
- [ ] All new and existing tests passed

##### Additional steps for pull requests adding a new feature
- [ ] An issue describing the proposed change exists
- [ ] The pull request includes a link to the issue
- [ ] The change was discussed and approved in the issue
- [ ] Docs have been added / updated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants