Releases: google/adk-java
Releases · google/adk-java
v0.5.0
What's Changed
- fix: Update Spring AI to 1.1.0 and set conditional Ollama tests for CI by @ddobrin in #574
- feat: Support configuring tool execution mode in RunConfig by @copybara-service[bot] in #620
- test: adding a new & re-enabling some ignored tests by @copybara-service[bot] in #624
- test: add test for rearranging history for gemini3 interleaved by @copybara-service[bot] in #625
- chore: update Google GenAI version by @copybara-service[bot] in #627
- chore: update mockito version, and add byte-buddy dependency to fix running tests on some versions of JDK by @copybara-service[bot] in #638
- fix: ApigeeLLM support for Built-in tools like GoogleSearch, BuiltInCodeExecutor when calling Gemini models through Apigee by @copybara-service[bot] in #635
- fix: do not silently ignore exceptions thrown from runLive() by @copybara-service[bot] in #633
- fix: support non-map return values returned from Function Tools by automatically wrapping them into {"result": } by @copybara-service[bot] in #639
- refactor: make ConfigAgentLoader public by @copybara-service[bot] in #640
- feat: add model version to llm response and event by @copybara-service[bot] in #641
- refactor:Switch InvocationContext to use a builder instead of overloaded constructors by @copybara-service[bot] in #594
- fix: allow using legacy "transferToAgent(agentName)" to maintain backwards compatibility by @copybara-service[bot] in #646
- fix:Update HITL/Tool workflows to correctly pause and resume runner operations by @copybara-service[bot] in #600
- refactor:Update BasePlugin to accept LlmRequest.Builder for callbacks instead of immutable LlmRequest by @copybara-service[bot] in #650
- ADK changes by @copybara-service[bot] in #659
- chore: Ensure LoopAgent uses the same builder heirarchy as other agents by @copybara-service[bot] in #661
- feat: AgentTool.fromConfig() by @copybara-service[bot] in #660
- refactor:Refactor Runner to implement a Builder rather than a growing number of constructors by @copybara-service[bot] in #634
- fix: register url_context tool in ComponentRegistry by @copybara-service[bot] in #666
- docs: update ComponentRegistry's doc by @copybara-service[bot] in #667
- feat: add fromConfig method to LongRunningFunctionTool by @copybara-service[bot] in #669
- chore: update version to 0.5.0 by @copybara-service[bot] in #672
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
- feat: Add a constructor to McpAsyncToolset to allow injecting McpSessionManager by @copybara-service[bot] in #446
- refactor: Extracting ToolResolver logic from LlmAgent by @copybara-service[bot] in #444
- refactor: Simplify ComponentRegistry by @copybara-service[bot] in #447
- refactor: Cleaning up LlmAgent by @copybara-service[bot] in #450
- chore(main): release 0.3.1-SNAPSHOT by @release-please[bot] in #442
- fix: Clarify load_artifact prompt by @copybara-service[bot] in #451
- fix!: do not silently fail when an internal error occurs by @copybara-service[bot] in #452
- fix: use SLF4J's logger in FunctionTool exception's handling by @copybara-service[bot] in #453
- chore: Don't add prompt about parent agent when
disallowTransferToParentis true by @copybara-service[bot] in #457 - refactor: Extracting MockApiAnswer from VertexAiSessionServiceTest by @copybara-service[bot] in #459
- refactor: Extracting http calls from VertexAiSessionService by @copybara-service[bot] in #460
- fix: Update package name to com.example.helloworld by @copybara-service[bot] in #461
- test: Adding some tests for Gemini by @copybara-service[bot] in #458
- chore!: Update StreamableHttpServerParameters to avoid SSE mentions and match other MCP builders' structure by @copybara-service[bot] in #465
- feat: Add A2A HTTP E2E demo by @copybara-service[bot] in #464
- feat: Support toolFilters in McpAsyncToolset identical to McpToolset by @copybara-service[bot] in #466
- fix: Include output schema in MCP tool declarations and add filesystem sample by @copybara-service[bot] in #467
- chore: Add a2a directory to copybara by @copybara-service[bot] in #468
- fix!: update basellmflow postprocessing to allow emitting original response prior to generating new events by @copybara-service[bot] in #469
- chore: Renames settings.json to be settings.recommendation.json and enhance .gitignore content by @copybara-service[bot] in #471
- fix: update ADkWebServer start() to override socket property needed to support Gemini Live API message size by @copybara-service[bot] in #472
- fix: avoid timing out slow agents when using the run_sse endpoint by @copybara-service[bot] in #475
- ADK changes by @copybara-service[bot] in #476
- feat: Supports
stateDeltain ADK Java AgentRunRequest for ADK web server by @copybara-service[bot] in #480 - Fix: Map interrupted field from Gemini backend to LlmResponse by @jinnigu in #481
- chore: Update the MCP SDK version to 0.14.0 by @copybara-service[bot] in #477
- chore: Remove .mvn/ from .gitignore by @vorburger in #484
- feat: Include samples in the build by @copybara-service[bot] in #488
- fix: Use JsonBaseModel in FunctionTool (re. #473) by @vorburger in #486
- feat: Supports
stateDeltain ADK Java AgentRunRequest for ADK web server by @copybara-service[bot] in #498 - feat: Update ReadonlyContext to expose the session userId by @copybara-service[bot] in #494
- fix:
deltaStateshould be appended withnewMessageevent andbeforeRunCallbackshould be called after that by @copybara-service[bot] in #502 - feat: Adds schema definition for the recordings for conformance tests ReplayPlugin and also add a RecordingsLoader to load yaml file by @copybara-service[bot] in #506
- fix: Return Completable from
saveArtifactinCallbackContextby @copybara-service[bot] in #495 - feat: Add url_context_tool to Java ADK by @copybara-service[bot] in #508
- chore: Copies latest session state to the passed-in session for runAsync with Session by @copybara-service[bot] in #509
- fix: Fixes the instruction appending logic to be consistent with adk python by @copybara-service[bot] in #515
- chore: Adds maven-compiler-plugin to
pluginsin pom.xml for@AutoValueto be compiled in one pass by @copybara-service[bot] in #517 - chore: update default origings CORS policy for dev UI by @copybara-service[bot] in #518
- chore: Update pom.xml files to enable automated version updates by @copybara-service[bot] in #519
- feat: Supports
-DextraPluginsin maven_plugin WebMojo to allow start AdkWebServer with extraPlugin for conformance tests by @copybara-service[bot] in #522 - refactor!: Use RxJava for VertexAiClient by @copybara-service[bot] in #470
- fix: Make FunctionTool slightly more null safe, and use Text Blocks by @vorburger in #485
- feat: expose meta() and annotations() methods in AbstractMcpTool by @copybara-service[bot] in #523
- Add support for optional parameters in @Annotations.Schema by @jinnigu in #496
- feat: create customMetadata() mutable map in BaseTool by @copybara-service[bot] in #532
- New
GoogleMapsTooltool to ground responses based on location by @glaforge in #534 - refactor: Refactoring ExampleUtil by @copybara-service[bot] in #526
- docs: Adds missing comments by @copybara-service[bot] in #542
- fix: OpenTelemetry context propagation across async boundaries by @ruslan-kurchenko in #524
- feat: HITL/Introduce ToolConfirmations and integrate them into ToolContext by @copybara-service[bot] in #541
- test: Adding a test for telemetry in RunnerTest by @copybara-service[bot] in #540
- refactor: Simplifying TestUtils by @copybara-service[bot] in #544
- fix: Avoid ClassCastException and reduce copy/pasta 🍝 in FunctionTool by @vorburger in #489
- feat: HITL/Introduce ToolConfirmations and integrate them into ToolContext by @copybara-service[bot] in #547
- feat: Add inputAudioTranscription support to Java ADK by @jinnigu in #463
- test: Adding some tests for Runner.runLive() by @copybara-service[bot] in #545
- fix: listSessions returns sessions with empty state by @tomekpanek in #537
- test: Adding tests for GeminiLlmConnection by @copybara-service[bot] in #546
- fix: Update AgentTool to drop thought parts from response by @copybara-service[bot] in #560
- fix: InMemorySessionService mergeWithGlobalState not called in appendEvent by @copybara-service[bot] in #563
- feat: Add integration of Spring AI 1.1.0 into ADK Java by @ddobrin in #491
- feat: Add transcription support for single agent live scenario for Java ADK by @jinnigu in #556
- ADK changes by @copybara-service[bot] in #565
- feat: HITL/Wire up tool confirmation support by @copybara-service[bot] in #531
- test:Add unit tests by @copybara-service[bot] in #554
- fix: Ignore case when determining if the last message comes from a user by @copybara-service[bot] in #562
- fix: add missing avgLogprobs, finishReason and usageMetadata fields by @copybara-service[bot] in #571
- fix: Gemini thoughts not correctly accumulated when streaming enabled by @OwenDavisBC in #514
- fix: initial state for session creation by @copybara-service[bot] in #572
- fix: restore old default method behavior gemini utils by @copybara-service[bot] in #583
- refactor: simplify and deduplicate logic responsible for agent loading by @copybara-service[bot] in #595
- fix: preserve other fields of a part when updating function call by @copybara-service[bot] in #597
- feat: Add ApigeeLlm as a model that let's ADK Agent developers to connect with an Apigee proxy by @copybara-service[bot] in https://github.com/google/a...
v0.3.0
⚠ BREAKING CHANGES
- Allow
beforeModelCallbackto modify the LLM request - Integrate Memory Service into ADK runtime
- This change requires users to update their configurations to provide a service account JSON file. This enables authentication with cloud services.
Features
- Add BaseToolset and update McpToolset to use the new interface (2aa474d)
- Add BaseToolset and update McpToolset to use the new interface (a211ac4)
- Add code executor (5ffa984)
- Add configurable CORS support via application.yml properties (4d4fe25)
- Add ContainerCodeExecutor (a0a1616)
- Add CORS configuration for local ADK-Web angular (4d4fe25)
- Add DeepWiki badge to README (2a44d51)
- Add GeminiSchemaUtil for converting OpenAPI/MCP
JsonSchematocom.google.genai.types.Schema(1945fad) - Add include_contents option to LlmAgentConfig to control inclusion of previous event contents in LLM requests (2bfbc8f)
- add instruction state injection bypass (a3746ed)
- Add MCP Toolset support for agent configuration (bdc39f7)
- Add sessionId() and events() to ReadOnlyContext (a348a30)
- Add support for configuring agent callbacks in YAML (27c0172)
- Add support for configuring subagents in ADK agents via YAML (d827eae)
- Add support for programmatic sub-agent resolution using 'code' key (c498d91)
- add support for Streamable HTTP Connections to MCP Tools (bea3244)
- Add support for streaming tools (fe1df53)
- Add usage metadata to LLM Response model (f5b8fda)
- Add VertexAiCodeExecutor (e5b1fb3)
- Added JSON Schema for configurable agents (095eff6)
- Added serviceAccountJson as a parameter for toolset (5ab8b14)
- Adds
mvn google-adk:web ...cli via maven plugin to allow users debug agents with Web UI much easier. (b02c559) - Adds support for YAML-based basic agents (9723f8a)
- ADK Plugin Base Class (dc29535)
- AgentStaticLoader; like an 🧝 Elve, instead of the 🧙 mage (fixes #149) (5fcd413)
- Allow LongRunningFunctionTool to be created with an instance (9bd2bd6)
- Allow max tokens to be customizable in Claude (bbf38e3)
- bypass state injection for instructions constructed with an
InstructionProvider(ef2931a) - config: Adds
ComponentRegistryfor loading objects in yaml config (55fffb7) - config: Adds
resolveAgentClass,resolveToolInstanceandresolveToolClassto ComponentRegistry for resolving the 3 type of components (8c107d2) - config: Supports loading yaml agents in
mvn google-adk@web ...(417a8bc) - Enforce serializable types for FunctionTools (bd0bb57)
- Implement automatic tool discovery for config-based agents (a2d9533)
- Implement tool configuration loading (f27f48c)
- Initial tutorials/city-time-weather (6ce41ef)
- Integrate Memory Service into ADK runtime (f4f8309)
- Integrating Plugin with ADK (c037893)
- introduce an experimental parameter to limit number of steps LlmAgent can take (4983747)
- Introduce ExampleTool for few-shot examples in LlmAgent (2162f89)
- Introduced ApplicationIntegrationToolset in JavaADK (e21807c)
- Introduced ConnectionClient and IntegrationClient to get OPENAPISPEC of connection (1e114cd)
- JBang! 💥 🤯 (e10e4f9)
- Make
FunctionDeclaration.buildFunctionDeclarationpublic (5bf9cb0) - make readonly context more efficient (60a1707)
- Make StreamableHttpServerParameters class non-final to allow subclassing (bc3ae43)
- maven: Supports using custom/subclass of ComponentRegistry to provide tools for agents (7c7d779)
- pass headers while init mcp client (744814a)
- pass timeout config while init mcp client (d255167)
- provide more detailed logs when mcp tool declaration failed. (4d5b63a)
- Refactors ADK agent loading with a new AgentLoader interface, add CompiledAgentLoader and AgentStaticLoader implementation, move YAML agent loader support to maven_plugin (0f7904b)
- SseServerParameters: Add configuration option for connection endpoint (83899b9)
- support AsyncMcpTool (0c50970)
- support for mcp async toolset (b867ea2)
- update ConfigAgentLoader to load agents from the current directory (008c196)
- Update FunctionTool to handle deserializing arbitrary return types (a33f4da)
- Update model resolution logic for LLM agents (4fc83f0)
Bug Fixes
removeis a state mutation operation and should also be captured in the delta (1071f1e)- Add missing logging for MCP Servers (e2c4d40)
- Added
httpclient5dependency topom.xmlto fix ADKWebServer instantiating issue (62eb2ec) - Allow
beforeModelCallbackto modify the LLM request (8e10df2) - Broken Dev UI (fixes #302) (852ebd8)
- change scheme to https ([7bc003e](https://github.com/google/adk-java/c...
v0.2.0
0.2.0 (2025-06-30)
Features
- LangChain4j Integration: Added experimental integration with LangChain4j to support third-party and local models. (0d1bb89)
- Enabled
FunctionToolsto be created for methods that return aSingle, improving support for asynchronous operations. (cb49092) FunctionToolscan now be created for object instances in addition to static methods. (71d7325)- Added an
endInvocationfield to Event Actions, allowing developers to interrupt or explicitly stop the agent loop after a tool call. (1909869, 07989e2) - Implemented
VertexAiRagRetrievalusing AI Platform APIs. (b5f17f3) - Added support for chained callbacks for
before/aftermodel, agent, and tool execution events. (1cf889d, 2501dc1, b55ed61) - Add InMemoryMemoryService (c8fed2d)
- Development UI:
- Save and reuse evaluation thresholds across runs. (f71ee0f)
- Display the specific metric used in evaluation history. (cec9ef3)
- Render HTML artifacts directly in the chat window. (49e8d85)
- Added a button to export the current session to a JSON file. (0592dc5)
- Updated minified web files to include all the latest UI changes. (bab4bd9)
Bug Fixes
- Fixed an OpenTelemetry version mismatch caused by a Spring Boot dependency override. (94cadce)
- Correctly track state updates within callbacks. (8665637)
- Fixed a bug in
SessionUtilsthat incorrectly filtered out previous events in chats for Vertex-stored sessions. (06529d2) - Fixed a bug where listing events would fail if the session list was empty. (d4ec143)
- Removed an incorrect
auto-valuedependency that was causing confusing annotation processing messages during builds. (d8e5629) - Fixed a bug when using
RunConfigto save blob inputs as artifacts. (3762368) - Fixed artifact loading by refactoring
BaseLlmFlow'spreprocessandpostprocessmethods to be non-blocking and return aSingle. (1331879, 94b061a) - The agent description check now correctly handles
nullor empty strings. (a62c37d) - Development UI:
Documentation
- Added JitPack to the README as an installation option. (04dd583)
- Fixed broken Javadoc comments in
InstructionUtils. (9681380)
Chores
- Introduced a parent POM to simplify the project structure and build process. (dc02503)
- Added the Maven Wrapper (
./mvnw) to ensure a consistent build environment for all contributors. (4a4007a) - Applied extensive reformatting, style fixes, and code clarity improvements across the entire codebase. (891acac, 471bddb, bc43a23, etc)
- Renamed all internal references from "Google ADK" to "ADK" for consistency. (c31b2ee)
- The library now dynamically loads the project version from a
version.propertiesfile. (8c98a38) - The process for creating Gemini model instances has been simplified. (fca01e7)
- Remove blocking calls from Runner and GcsArtifactService (79fc8a6)