Skip to content

Commit a0de26a

Browse files
committed
fix: Enable state context in AgentExecutor
1 parent 4225b07 commit a0de26a

2 files changed

Lines changed: 23 additions & 16 deletions

File tree

a2a/src/main/java/com/google/adk/a2a/executor/AgentExecutor.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static java.util.Objects.requireNonNull;
1919

20+
import com.google.adk.a2a.converters.AdkMetadataKey;
2021
import com.google.adk.a2a.converters.EventConverter;
2122
import com.google.adk.a2a.converters.PartConverter;
2223
import com.google.adk.agents.BaseAgent;
@@ -217,7 +218,8 @@ public void execute(RequestContext ctx, EventQueue eventQueue) {
217218
getUserId(ctx),
218219
session.id(),
219220
content,
220-
agentExecutorConfig.runConfig());
221+
agentExecutorConfig.runConfig(),
222+
getStateDelta(ctx));
221223
});
222224
})
223225
.concatMap(
@@ -273,6 +275,18 @@ private String getUserId(RequestContext ctx) {
273275
return USER_ID_PREFIX + ctx.getContextId();
274276
}
275277

278+
private Map<String, Object> getStateDelta(RequestContext ctx) {
279+
Map<String, Object> metadata = new HashMap<>();
280+
281+
if (ctx.getTaskId() != null) {
282+
metadata.put(AdkMetadataKey.TASK_ID.getType(), ctx.getTaskId());
283+
}
284+
if (ctx.getContextId() != null) {
285+
metadata.put(AdkMetadataKey.CONTEXT_ID.getType(), ctx.getContextId());
286+
}
287+
return metadata;
288+
}
289+
276290
private Maybe<Session> prepareSession(
277291
RequestContext ctx, String appName, BaseSessionService service) {
278292
return service

a2a/src/test/java/com/google/adk/a2a/executor/AgentExecutorTest.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@
44
import static com.google.common.truth.Truth.assertThat;
55
import static org.junit.Assert.assertThrows;
66
import static org.mockito.ArgumentMatchers.any;
7-
import static org.mockito.Mockito.atLeastOnce;
8-
import static org.mockito.Mockito.doAnswer;
9-
import static org.mockito.Mockito.mock;
10-
import static org.mockito.Mockito.verify;
11-
import static org.mockito.Mockito.when;
7+
import static org.mockito.Mockito.*;
128

139
import com.google.adk.agents.BaseAgent;
1410
import com.google.adk.agents.InvocationContext;
@@ -23,19 +19,11 @@
2319
import com.google.genai.types.Part;
2420
import io.a2a.server.agentexecution.RequestContext;
2521
import io.a2a.server.events.EventQueue;
26-
import io.a2a.spec.Message;
27-
import io.a2a.spec.TaskArtifactUpdateEvent;
28-
import io.a2a.spec.TaskState;
29-
import io.a2a.spec.TaskStatus;
30-
import io.a2a.spec.TaskStatusUpdateEvent;
31-
import io.a2a.spec.TextPart;
22+
import io.a2a.spec.*;
3223
import io.reactivex.rxjava3.core.Flowable;
3324
import io.reactivex.rxjava3.core.Maybe;
3425
import io.reactivex.rxjava3.core.Single;
35-
import java.util.ArrayList;
36-
import java.util.List;
37-
import java.util.Optional;
38-
import java.util.UUID;
26+
import java.util.*;
3927
import org.junit.Before;
4028
import org.junit.Test;
4129
import org.junit.runner.RunWith;
@@ -350,10 +338,15 @@ private RequestContext createRequestContext() {
350338
.parts(ImmutableList.of(new TextPart("trigger")))
351339
.build();
352340

341+
MessageSendParams params = mock(MessageSendParams.class);
342+
when(params.message()).thenReturn(message);
343+
when(params.metadata()).thenReturn(ImmutableMap.of("key", "value"));
344+
353345
RequestContext ctx = mock(RequestContext.class);
354346
when(ctx.getMessage()).thenReturn(message);
355347
when(ctx.getTaskId()).thenReturn("task-" + UUID.randomUUID());
356348
when(ctx.getContextId()).thenReturn("ctx-" + UUID.randomUUID());
349+
when(ctx.getParams()).thenReturn(params);
357350
return ctx;
358351
}
359352

0 commit comments

Comments
 (0)