Skip to content

Commit 067c700

Browse files
committed
refactor: Move ReasoningBank from core to contrib module
Move the ReasoningBank feature into contrib/reasoning-bank/ as it is specific to ADK Java and not available across all language runtimes. Revert reasoning-specific changes from InvocationContext and ToolContext in core. Refactor LoadReasoningStrategyTool to be self-contained via a handler pattern, accepting the service and appName in its constructor.
1 parent 01726ca commit 067c700

14 files changed

Lines changed: 130 additions & 54 deletions

contrib/reasoning-bank/pom.xml

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
Copyright 2025 Google LLC
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
-->
17+
<project xmlns="http://maven.apache.org/POM/4.0.0"
18+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
20+
<modelVersion>4.0.0</modelVersion>
21+
22+
<parent>
23+
<groupId>com.google.adk</groupId>
24+
<artifactId>google-adk-parent</artifactId>
25+
<version>0.5.1-SNAPSHOT</version><!-- {x-version-update:google-adk:current} -->
26+
<relativePath>../../pom.xml</relativePath>
27+
</parent>
28+
29+
<artifactId>google-adk-reasoning-bank</artifactId>
30+
<name>Agent Development Kit - Reasoning Bank</name>
31+
<description>Reasoning Bank integration with Agent Development Kit for reusable reasoning strategies</description>
32+
33+
<dependencies>
34+
35+
<dependency>
36+
<groupId>com.google.adk</groupId>
37+
<artifactId>google-adk</artifactId>
38+
<version>${project.version}</version>
39+
</dependency>
40+
<dependency>
41+
<groupId>com.google.auto.value</groupId>
42+
<artifactId>auto-value-annotations</artifactId>
43+
<scope>provided</scope>
44+
</dependency>
45+
<dependency>
46+
<groupId>com.fasterxml.jackson.core</groupId>
47+
<artifactId>jackson-databind</artifactId>
48+
</dependency>
49+
<dependency>
50+
<groupId>io.reactivex.rxjava3</groupId>
51+
<artifactId>rxjava</artifactId>
52+
</dependency>
53+
<dependency>
54+
<groupId>com.google.guava</groupId>
55+
<artifactId>guava</artifactId>
56+
<version>33.0.0-jre</version>
57+
</dependency>
58+
<dependency>
59+
<groupId>com.google.truth</groupId>
60+
<artifactId>truth</artifactId>
61+
<scope>test</scope>
62+
</dependency>
63+
<dependency>
64+
<groupId>org.junit.jupiter</groupId>
65+
<artifactId>junit-jupiter-api</artifactId>
66+
<scope>test</scope>
67+
</dependency>
68+
<dependency>
69+
<groupId>org.junit.jupiter</groupId>
70+
<artifactId>junit-jupiter-engine</artifactId>
71+
<scope>test</scope>
72+
</dependency>
73+
<dependency>
74+
<groupId>org.junit.vintage</groupId>
75+
<artifactId>junit-vintage-engine</artifactId>
76+
<scope>test</scope>
77+
</dependency>
78+
79+
</dependencies>
80+
81+
<build>
82+
<plugins>
83+
<plugin>
84+
<artifactId>maven-compiler-plugin</artifactId>
85+
</plugin>
86+
<plugin>
87+
<groupId>org.jacoco</groupId>
88+
<artifactId>jacoco-maven-plugin</artifactId>
89+
</plugin>
90+
</plugins>
91+
</build>
92+
</project>

core/src/main/java/com/google/adk/reasoning/BaseReasoningBankService.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/reasoning/BaseReasoningBankService.java

File renamed without changes.

core/src/main/java/com/google/adk/reasoning/InMemoryReasoningBankService.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/reasoning/InMemoryReasoningBankService.java

File renamed without changes.

core/src/main/java/com/google/adk/reasoning/ReasoningStrategy.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/reasoning/ReasoningStrategy.java

File renamed without changes.

core/src/main/java/com/google/adk/reasoning/ReasoningTrace.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/reasoning/ReasoningTrace.java

File renamed without changes.

core/src/main/java/com/google/adk/reasoning/SearchReasoningResponse.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/reasoning/SearchReasoningResponse.java

File renamed without changes.

core/src/main/java/com/google/adk/tools/LoadReasoningStrategyResponse.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/tools/LoadReasoningStrategyResponse.java

File renamed without changes.

core/src/main/java/com/google/adk/tools/LoadReasoningStrategyTool.java renamed to contrib/reasoning-bank/src/main/java/com/google/adk/tools/LoadReasoningStrategyTool.java

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.adk.tools;
1818

1919
import com.google.adk.models.LlmRequest;
20+
import com.google.adk.reasoning.BaseReasoningBankService;
2021
import com.google.common.collect.ImmutableList;
2122
import io.reactivex.rxjava3.core.Completable;
2223
import io.reactivex.rxjava3.core.Single;
@@ -33,39 +34,56 @@
3334
*/
3435
public class LoadReasoningStrategyTool extends FunctionTool {
3536

37+
/** Handler that holds the service reference and implements the tool method. */
38+
public static class ReasoningBankHandler {
39+
private final BaseReasoningBankService reasoningBankService;
40+
private final String appName;
41+
42+
ReasoningBankHandler(BaseReasoningBankService reasoningBankService, String appName) {
43+
this.reasoningBankService = reasoningBankService;
44+
this.appName = appName;
45+
}
46+
47+
/**
48+
* Loads reasoning strategies that match the given query.
49+
*
50+
* @param query A description of the task or problem to find strategies for.
51+
* @param toolContext The tool context (required by FunctionTool contract).
52+
* @return A response containing matching reasoning strategies.
53+
*/
54+
public Single<LoadReasoningStrategyResponse> loadReasoningStrategy(
55+
@Annotations.Schema(name = "query", description = "A description of the task or problem")
56+
String query,
57+
ToolContext toolContext) {
58+
return reasoningBankService
59+
.searchStrategies(appName, query)
60+
.map(response -> new LoadReasoningStrategyResponse(response.strategies()));
61+
}
62+
}
63+
3664
private static Method getLoadReasoningStrategyMethod() {
3765
try {
38-
return LoadReasoningStrategyTool.class.getMethod(
66+
return ReasoningBankHandler.class.getMethod(
3967
"loadReasoningStrategy", String.class, ToolContext.class);
4068
} catch (NoSuchMethodException e) {
4169
throw new IllegalStateException("Failed to find loadReasoningStrategy method.", e);
4270
}
4371
}
4472

45-
public LoadReasoningStrategyTool() {
73+
/**
74+
* Creates a new LoadReasoningStrategyTool.
75+
*
76+
* @param reasoningBankService The reasoning bank service to search for strategies.
77+
* @param appName The application name used to scope strategy storage and retrieval.
78+
*/
79+
public LoadReasoningStrategyTool(BaseReasoningBankService reasoningBankService, String appName) {
4680
super(
47-
/* instance= */ null,
81+
new ReasoningBankHandler(reasoningBankService, appName),
4882
getLoadReasoningStrategyMethod(),
4983
/* isLongRunning= */ false,
5084
/* requireConfirmation= */ false);
5185
}
5286

53-
/**
54-
* Loads reasoning strategies that match the given query.
55-
*
56-
* @param query A description of the task or problem to find strategies for.
57-
* @param toolContext The tool context providing access to the reasoning bank service.
58-
* @return A response containing matching reasoning strategies.
59-
*/
60-
public static Single<LoadReasoningStrategyResponse> loadReasoningStrategy(
61-
@Annotations.Schema(name = "query", description = "A description of the task or problem")
62-
String query,
63-
ToolContext toolContext) {
64-
return toolContext
65-
.searchReasoningStrategies(query)
66-
.map(response -> new LoadReasoningStrategyResponse(response.strategies()));
67-
}
68-
6987
@Override
7088
public Completable processLlmRequest(
7189
LlmRequest.Builder llmRequestBuilder, ToolContext toolContext) {

core/src/test/java/com/google/adk/reasoning/InMemoryReasoningBankServiceTest.java renamed to contrib/reasoning-bank/src/test/java/com/google/adk/reasoning/InMemoryReasoningBankServiceTest.java

File renamed without changes.

core/src/test/java/com/google/adk/reasoning/ReasoningStrategyTest.java renamed to contrib/reasoning-bank/src/test/java/com/google/adk/reasoning/ReasoningStrategyTest.java

File renamed without changes.

0 commit comments

Comments
 (0)