diff --git a/core/src/main/java/com/google/adk/tools/BaseTool.java b/core/src/main/java/com/google/adk/tools/BaseTool.java index b1381746..1c46d82d 100644 --- a/core/src/main/java/com/google/adk/tools/BaseTool.java +++ b/core/src/main/java/com/google/adk/tools/BaseTool.java @@ -37,6 +37,14 @@ public abstract class BaseTool { private final String description; private final boolean isLongRunning; + protected BaseTool() { + this(/* name= */ null, /* description= */ null, /* isLongRunning= */ false); + } + + protected BaseTool(boolean isLongRunning) { + this(/* name= */ null, /* description= */ null, isLongRunning); + } + protected BaseTool(@Nonnull String name, @Nonnull String description) { this(name, description, /* isLongRunning= */ false); } @@ -48,11 +56,19 @@ protected BaseTool(@Nonnull String name, @Nonnull String description, boolean is } public String name() { - return name; + return name != null + ? name + : declaration() + .flatMap(FunctionDeclaration::name) + .orElseThrow(() -> new IllegalStateException("Tool name is not set.")); } public String description() { - return description; + return description != null + ? description + : declaration() + .flatMap(FunctionDeclaration::description) + .orElseThrow(() -> new IllegalStateException("Tool description is not set.")); } public boolean longRunning() {