Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
9ebdec6
fix: memory leak in InMemorySessionService.deleteSession() - clean up…
YuqiGuo105 Feb 27, 2026
e8e18ac
Merge branch 'main' into fix/memory-leak-delete-session
YuqiGuo105 Feb 28, 2026
8f5d8aa
Merge branch 'main' into fix/memory-leak-delete-session
YuqiGuo105 Mar 3, 2026
35b521b
Merge branch 'main' into fix/memory-leak-delete-session
YuqiGuo105 Mar 3, 2026
0901370
Merge branch 'main' into fix/memory-leak-delete-session
YuqiGuo105 Mar 11, 2026
05c7b7f
Merge branch 'main' into fix/memory-leak-delete-session
yongkiy-google Mar 24, 2026
6bb721b
docs: add pull request template
google-genai-bot Feb 13, 2026
d02d25c
Update InMemorySessionService.java
yongkiy-google Mar 25, 2026
316702e
Update InMemorySessionServiceTest.java
yongkiy-google Mar 25, 2026
d1e05ca
fix: Ensure callbackContextData is preserved across session update
google-genai-bot Mar 25, 2026
678b496
chore: set version to 1.0.0-rc.2
tilgalas Mar 25, 2026
b064539
ADK changes
MiloszSobczyk Mar 26, 2026
5f34d59
fix: revert changes to AbstractMcpTool, maintaining backwards compati…
Mar 26, 2026
29da75d
refactor: add precondition null check to SchemaUtils
MiloszSobczyk Mar 26, 2026
84b7f2a
Merge pull request #866 from rohityan:doc/pull_request_template
copybara-github Mar 26, 2026
15f7ec9
refactor: remove usage of @NonNull annotations
MiloszSobczyk Mar 27, 2026
e615701
refactor: add null annotations in appropriate places
MiloszSobczyk Mar 27, 2026
4b53375
refactor: standarize AutoValue Builder setter names
MiloszSobczyk Mar 27, 2026
24f8d5e
feat: add `InMemoryArtifactService` to `AgentExecutor` and update `po…
glaforge Mar 27, 2026
3dee126
Merge pull request #1095 from glaforge:main
copybara-github Mar 27, 2026
dd1c941
chore: set release version to 1.0.0
tilgalas Mar 30, 2026
5adc3fa
chore(main): release 1.0.0
adk-java-releases-bot Mar 30, 2026
5565a83
Merge pull request #1068 from google:release-please--branches--main
copybara-github Mar 30, 2026
aebe6dc
chore(main): release 1.0.1-SNAPSHOT
adk-java-releases-bot Mar 30, 2026
674c4ce
Merge pull request #1100 from google:release-please--branches--main
copybara-github Mar 30, 2026
55becb8
feat: Add ChatCompletionsResponse object
google-genai-bot Mar 30, 2026
d0e1085
feat: Update event IDs in BaseLlmFlow's post processing section
google-genai-bot Mar 31, 2026
1855584
refactor: use new setter methods in place of old ones
MiloszSobczyk Mar 31, 2026
88c8b0e
feat: Support Sub-agent Escalation event in Parallel Agent (Issue #561)
jinnigu Mar 28, 2026
d62b636
Update InMemorySessionServiceTest.java
yongkiy-google Apr 1, 2026
0cf001f
Update InMemorySessionService.java
yongkiy-google Apr 1, 2026
fe30b2a
Update InMemorySessionServiceTest.java
yongkiy-google Apr 1, 2026
3c431e1
Merge pull request #612 from jinnigu:feature/subagent-escalation
copybara-github Apr 1, 2026
e0083b3
Merge pull request #923 from YuqiGuo105:fix/memory-leak-delete-session
copybara-github Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
**Please ensure you have read the [contribution guide](./CONTRIBUTING.md) before creating a pull request.**

### Link to Issue or Description of Change

**1. Link to an existing issue (if applicable):**

- Closes: #_issue_number_
- Related: #_issue_number_

**2. Or, if no issue exists, describe the change:**

_If applicable, please follow the issue templates to provide as much detail as
possible._

**Problem:**
_A clear and concise description of what the problem is._

**Solution:**
_A clear and concise description of what you want to happen and why you choose
this solution._

### Testing Plan

_Please describe the tests that you ran to verify your changes. This is required
for all PRs that are not small documentation or typo fixes._

**Unit Tests:**

- [ ] I have added or updated unit tests for my change.
- [ ] All unit tests pass locally.

_Please include a summary of passed java test results._

**Manual End-to-End (E2E) Tests:**

_Please provide instructions on how to manually test your changes, including any
necessary setup or configuration. Please provide logs or screenshots to help
reviewers better understand the fix._

### Checklist

- [ ] I have read the [CONTRIBUTING.md](./CONTRIBUTING.md) document.
- [ ] My pull request contains a single commit.
- [ ] I have performed a self-review of my own code.
- [ ] I have commented my code, particularly in hard-to-understand areas.
- [ ] I have added tests that prove my fix is effective or that my feature works.
- [ ] New and existing unit tests pass locally with my changes.
- [ ] I have manually tested my changes end-to-end.
- [ ] Any dependent changes have been merged and published in downstream modules.

### Additional context

_Add any other context or screenshots about the feature request here._

2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.0.0-rc.1"
".": "1.0.0"
}
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# Changelog

## [1.0.0](https://github.com/google/adk-java/compare/v1.0.0-rc.1...v1.0.0) (2026-03-30)


### Features

* add `InMemoryArtifactService` to `AgentExecutor` and update `pom.xml` dependencies ([24f8d5e](https://github.com/google/adk-java/commit/24f8d5e2562e1c0812ce6e248500797d9801fafd))
* enabling output_schema and tools to coexist ([40ca6a7](https://github.com/google/adk-java/commit/40ca6a7c5163f711e02a54163d6066f7cd86e64d))


### Bug Fixes

* add media/image support in Spring AI MessageConverter ([8ab7f07](https://github.com/google/adk-java/commit/8ab7f072cdaa363e07b7a786044376c021c4c009)), closes [#705](https://github.com/google/adk-java/issues/705)
* add schema validation to SetModelResponseTool (issue [#587](https://github.com/google/adk-java/issues/587) already implemented, but adding tests from PR [#603](https://github.com/google/adk-java/issues/603)) ([cdc5199](https://github.com/google/adk-java/commit/cdc5199eb0f92cb95db2ee7ff139d67317968457))
* Ensure callbackContextData is preserved across session update ([d1e05ca](https://github.com/google/adk-java/commit/d1e05caf524b7cafb3f321550659296ea70d9286))
* **firestore:** Remove hardcoded dependency version ([6a5a55e](https://github.com/google/adk-java/commit/6a5a55eb3e531c6f8a7083712308c4800f680ca5))
* Fixing tracing for function calls ([84dff10](https://github.com/google/adk-java/commit/84dff10a3ee7f47e30a40409e56b5e9365c69815))
* handle null `AiMessage.text()` to prevent NPE and add unit test (PR [#1035](https://github.com/google/adk-java/issues/1035)) ([3e21e7a](https://github.com/google/adk-java/commit/3e21e7ac46b634341819b3543388a38caef85516))
* parallel agent execution ([677b6d7](https://github.com/google/adk-java/commit/677b6d7452aa28fab42d554d18c150d59ca88eec))
* Removing deprecated methods from Runner ([3633a7d](https://github.com/google/adk-java/commit/3633a7dd071265087ea2ff148d419969b0c888ef))
* resolve MCP tool parsing errors in Claude integration ([5a2abbf](https://github.com/google/adk-java/commit/5a2abbfe6f9e4e1ebdd5b918e34fcdb144603b5a))
* revert changes to AbstractMcpTool, maintaining backwards compatible text_output field in the response ([5f34d59](https://github.com/google/adk-java/commit/5f34d598435a2a8d875a5dbb14344c201db0e75f))
* Using App conformant agent names ([f3eb936](https://github.com/google/adk-java/commit/f3eb936772740b7dc7a803a40d0d39fdbccc4af4))


### Documentation

* add pull request template ([6bb721b](https://github.com/google/adk-java/commit/6bb721b9a6000dac9dfda498fb6dd2c45862e25c))


### Miscellaneous Chores

* set release version to 1.0.0 ([dd1c941](https://github.com/google/adk-java/commit/dd1c94184835838fa47de024cf458c2ea0786aff))
* set version to 1.0.0-rc.2 ([678b496](https://github.com/google/adk-java/commit/678b49653fa93606e2e57926213f0facaf9d6666))

## [1.0.0-rc.1](https://github.com/google/adk-java/compare/v0.9.0...v1.0.0-rc.1) (2026-03-20)


Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ If you're using Maven, add the following to your dependencies:
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk</artifactId>
<version>1.0.0-rc.1</version>
<version>1.0.0</version>
</dependency>
<!-- Dev UI -->
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-dev</artifactId>
<version>1.0.0-rc.1</version>
<version>1.0.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion a2a/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
</parent>

<artifactId>google-adk-a2a</artifactId>
Expand Down
6 changes: 2 additions & 4 deletions contrib/firestore-session-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>../../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/langchain4j/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>../../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/samples/a2a_basic/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-samples</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>..</relativePath>
</parent>

Expand Down
5 changes: 3 additions & 2 deletions contrib/samples/a2a_server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-samples</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>..</relativePath>
</parent>

Expand All @@ -23,12 +23,13 @@
<a2a.sdk.version>0.3.0.Beta1</a2a.sdk.version>
<quarkus.platform.version>3.30.6</quarkus.platform.version>
<flogger.version>0.8</flogger.version>
<quarkus.native.builder-image>graalvm</quarkus.native.builder-image>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.google.adk.samples.a2aagent;

import com.google.adk.a2a.executor.AgentExecutorConfig;
import com.google.adk.artifacts.InMemoryArtifactService;
import com.google.adk.samples.a2aagent.agent.Agent;
import com.google.adk.sessions.InMemorySessionService;
import io.a2a.server.agentexecution.AgentExecutor;
Expand All @@ -18,10 +19,12 @@ public class AgentExecutorProducer {
@Produces
public AgentExecutor agentExecutor() {
InMemorySessionService sessionService = new InMemorySessionService();
InMemoryArtifactService artifactService = new InMemoryArtifactService();
return new com.google.adk.a2a.executor.AgentExecutor.Builder()
.agent(Agent.ROOT_AGENT)
.appName(appName)
.sessionService(sessionService)
.artifactService(artifactService)
.agentExecutorConfig(AgentExecutorConfig.builder().build())
.build();
}
Expand Down
2 changes: 1 addition & 1 deletion contrib/samples/configagent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-samples</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/samples/helloworld/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-samples</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/samples/mcpfilesystem/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>../../..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/samples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>../..</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion contrib/spring-ai/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<relativePath>../../pom.xml</relativePath>
</parent>

Expand Down
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<parent>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-parent</artifactId>
<version>1.0.1-rc.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
<version>1.0.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
</parent>

<artifactId>google-adk</artifactId>
Expand Down
2 changes: 2 additions & 0 deletions core/src/main/java/com/google/adk/SchemaUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.google.adk;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.common.base.Preconditions;
import com.google.genai.types.Schema;
import com.google.genai.types.Type;
import java.util.HashMap;
Expand Down Expand Up @@ -87,6 +88,7 @@ private static Boolean matchType(Object value, Schema schema, Boolean isInput) {
* @throws IllegalArgumentException If the map does not match the schema.
*/
public static void validateMapOnSchema(Map<String, Object> args, Schema schema, Boolean isInput) {
Preconditions.checkNotNull(isInput, "IsInput cannot be null");
Map<String, Schema> properties = schema.properties().get();
for (Entry<String, Object> arg : args.entrySet()) {
// Check if the argument is in the schema.
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/com/google/adk/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
*/
public final class Version {
// Don't touch this, release-please should keep it up to date.
public static final String JAVA_ADK_VERSION = "1.0.0-rc.1"; // x-release-please-released-version
public static final String JAVA_ADK_VERSION = "1.0.0"; // x-release-please-released-version

private Version() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
package com.google.adk.agents;

import io.reactivex.rxjava3.disposables.Disposable;
import javax.annotation.Nullable;
import org.jspecify.annotations.Nullable;

/** Manages streaming tool related resources during invocation. */
public class ActiveStreamingTool {
@Nullable private Disposable task;
@Nullable private LiveRequestQueue stream;
private @Nullable Disposable task;
private @Nullable LiveRequestQueue stream;

public ActiveStreamingTool(Disposable task) {
this(task, null);
Expand All @@ -41,8 +41,7 @@ public ActiveStreamingTool(Disposable task, LiveRequestQueue stream) {
public ActiveStreamingTool() {}

/** Returns the active task of this streaming tool. */
@Nullable
public Disposable task() {
public @Nullable Disposable task() {
return task;
}

Expand All @@ -52,8 +51,7 @@ public void task(@Nullable Disposable task) {
}

/** Returns the active stream of this streaming tool. */
@Nullable
public LiveRequestQueue stream() {
public @Nullable LiveRequestQueue stream() {
return stream;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import javax.annotation.Nullable;
import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Nullable;
import org.jspecify.annotations.Nullable;

/** The context for an agent invocation. */
public class InvocationContext {
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/java/com/google/adk/agents/LiveRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import com.google.genai.types.Blob;
import com.google.genai.types.Content;
import java.util.Optional;
import javax.annotation.Nullable;
import org.jspecify.annotations.Nullable;

/** Represents a request to be sent to a live connection to the LLM model. */
@AutoValue
Expand Down
11 changes: 5 additions & 6 deletions core/src/main/java/com/google/adk/agents/LlmAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.function.Function;
import javax.annotation.Nullable;
import org.jspecify.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -129,10 +129,10 @@ protected LlmAgent(Builder builder) {
requireNonNullElse(builder.globalInstruction, new Instruction.Static(""));
this.generateContentConfig = Optional.ofNullable(builder.generateContentConfig);
this.includeContents = requireNonNullElse(builder.includeContents, IncludeContents.DEFAULT);
this.planning = builder.planning != null && builder.planning;
this.planning = requireNonNullElse(builder.planning, false);
this.maxSteps = Optional.ofNullable(builder.maxSteps);
this.disallowTransferToParent = builder.disallowTransferToParent;
this.disallowTransferToPeers = builder.disallowTransferToPeers;
this.disallowTransferToParent = requireNonNullElse(builder.disallowTransferToParent, false);
this.disallowTransferToPeers = requireNonNullElse(builder.disallowTransferToPeers, false);
this.beforeModelCallback = requireNonNullElse(builder.beforeModelCallback, ImmutableList.of());
this.afterModelCallback = requireNonNullElse(builder.afterModelCallback, ImmutableList.of());
this.onModelErrorCallback =
Expand Down Expand Up @@ -566,8 +566,7 @@ public Builder codeExecutor(BaseCodeExecutor codeExecutor) {
return this;
}

@Nullable
private static <B, A> ImmutableList<A> convertCallbacks(
private static <B, A> @Nullable ImmutableList<A> convertCallbacks(
@Nullable List<? extends B> callbacks, Function<B, A> converter, String callbackType) {
return Optional.ofNullable(callbacks)
.map(
Expand Down
3 changes: 2 additions & 1 deletion core/src/main/java/com/google/adk/agents/ParallelAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,8 @@ protected Flowable<Event> runAsyncImpl(InvocationContext invocationContext) {
for (BaseAgent subAgent : currentSubAgents) {
agentFlowables.add(subAgent.runAsync(updatedInvocationContext).subscribeOn(scheduler));
}
return Flowable.merge(agentFlowables);
return Flowable.merge(agentFlowables)
.takeUntil((Event event) -> event.actions().escalate().orElse(false));
}

/**
Expand Down
Loading
Loading