diff --git a/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java b/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java index e79298703..d8408f46d 100644 --- a/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java +++ b/server-common/src/main/java/io/a2a/server/agentexecution/RequestContext.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; @@ -198,6 +199,15 @@ public List getRelatedTasks() { return params != null ? params.configuration() : null; } + /** + * Returns the request metadata. + * + * @return the metadata, or null if not available + */ + public @Nullable Map getMetadata() { + return (params != null && params.metadata() != null) ? Collections.unmodifiableMap(params.metadata()) : null; + } + /** * Returns the server call context. *

diff --git a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java index 433ebcac3..8a4825697 100644 --- a/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java +++ b/server-common/src/test/java/io/a2a/server/agentexecution/RequestContextTest.java @@ -10,6 +10,7 @@ import static org.mockito.Mockito.mockStatic; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.UUID; @@ -32,6 +33,7 @@ public void testInitWithoutParams() { assertNull(context.getTaskId()); assertNull(context.getContextId()); assertNull(context.getTask()); + assertNull(context.getMetadata()); assertTrue(context.getRelatedTasks().isEmpty()); } @@ -59,6 +61,22 @@ public void testInitWithParamsNoIds() { } } + @Test + public void testInitWithParamsMetadata() { + var message = Message.builder().role(Message.Role.USER).parts(List.of(new TextPart(""))).build(); + var metadata = new HashMap(); + metadata.put("key", "value"); + + var params = MessageSendParams.builder() + .message(message) + .metadata(metadata) + .build(); + + RequestContext context = new RequestContext(params, null, null, null, null, null); + + assertEquals(metadata, context.getMetadata()); + } + @Test public void testInitWithTaskId() { String taskId = "task-123";