From fd8a9efb9024a3e9c237e8d26e402e9384f8ac9d Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Thu, 2 Jul 2026 04:25:06 -0700 Subject: [PATCH] ADK changes PiperOrigin-RevId: 941620378 --- .../java/com/google/adk/agents/BaseAgent.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/core/src/main/java/com/google/adk/agents/BaseAgent.java b/core/src/main/java/com/google/adk/agents/BaseAgent.java index fc1f0f31e..3608d0952 100644 --- a/core/src/main/java/com/google/adk/agents/BaseAgent.java +++ b/core/src/main/java/com/google/adk/agents/BaseAgent.java @@ -35,6 +35,7 @@ import io.reactivex.rxjava3.core.Completable; import io.reactivex.rxjava3.core.Flowable; import io.reactivex.rxjava3.core.Maybe; +import java.time.Instant; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -43,10 +44,14 @@ import java.util.regex.Pattern; import java.util.stream.Stream; import org.jspecify.annotations.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** Base class for all agents. */ public abstract class BaseAgent { + private static final Logger logger = LoggerFactory.getLogger(BaseAgent.class); + // Pattern for valid agent names. private static final String IDENTIFIER_REGEX = "^_?[a-zA-Z0-9]*([. _-][a-zA-Z0-9]+)*$"; private static final Pattern IDENTIFIER_PATTERN = Pattern.compile(IDENTIFIER_REGEX); @@ -342,6 +347,7 @@ private Flowable run( invocationContext) .toFlowable())); + Instant[] startTime = new Instant[1]; return callCallback( beforeCallbacksToFunctions( invocationContext.pluginManager(), beforeAgentCallback), @@ -354,6 +360,27 @@ private Flowable run( return Flowable.just(beforeEvent).concatWith(mainAndAfterEvents); }) .switchIfEmpty(mainAndAfterEvents) + .doOnSubscribe( + subscription -> { + startTime[0] = Instant.now(); + logger.info("ADK Agent {} started execution", name); + }) + .doOnTerminate( + () -> { + if (startTime[0] != null) { + long elapsed = + java.time.Duration.between(startTime[0], Instant.now()).toMillis(); + logger.info("ADK Agent {} finished execution: elapsed={} ms", name, elapsed); + } + }) + .doOnCancel( + () -> { + if (startTime[0] != null) { + long elapsed = + java.time.Duration.between(startTime[0], Instant.now()).toMillis(); + logger.info("ADK Agent {} cancelled execution: elapsed={} ms", name, elapsed); + } + }) .doOnNext(agentInvocation::addEvent) .doOnError(agentInvocation::setError); },