Skip to content

Commit 8ad674c

Browse files
authored
feat(a2a): For #233, A2aAgent support generate Msg with agentName and add final msg to memory. (#467)
## AgentScope-Java Version 1.0.7 ## Description Close #233 . ## Checklist Please check the following items before code is ready to be reviewed. - [x] Code has been formatted with `mvn spotless:apply` - [x] All tests are passing (`mvn test`) - [x] Javadoc comments are complete and follow project conventions - [x] Related documentation has been updated (e.g. links, examples, etc.) - [x] Code is ready for review
1 parent 5ec9334 commit 8ad674c

5 files changed

Lines changed: 30 additions & 17 deletions

File tree

agentscope-extensions/agentscope-extensions-a2a/agentscope-extensions-a2a-client/src/main/java/io/agentscope/core/a2a/agent/A2aAgent.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,12 @@ protected Mono<Msg> doCall(List<Msg> msgs) {
121121
LoggerUtil.logTextMsgDetail(log, memory.getMessages());
122122
clientEventContext.setHooks(getSortedHooks());
123123
return Mono.defer(
124-
() -> {
125-
Message message = MessageConvertUtil.convertFromMsg(memory.getMessages());
126-
return checkInterruptedAsync().then(doExecute(message));
127-
});
124+
() -> {
125+
Message message =
126+
MessageConvertUtil.convertFromMsg(memory.getMessages());
127+
return checkInterruptedAsync().then(doExecute(message));
128+
})
129+
.doOnNext(this.memory::addMessage);
128130
}
129131

130132
@Override

agentscope-extensions/agentscope-extensions-a2a/agentscope-extensions-a2a-client/src/main/java/io/agentscope/core/a2a/agent/event/MessageEventHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ public Class<MessageEvent> getHandleEventType() {
3939
@Override
4040
public void handle(MessageEvent event, ClientEventContext context) {
4141
String currentRequestId = context.getCurrentRequestId();
42-
Msg msg = MessageConvertUtil.convertFromMessage(event.getMessage());
42+
Msg msg =
43+
MessageConvertUtil.convertFromMessage(
44+
event.getMessage(), context.getAgent().getName());
4345
context.getSink().success(msg);
4446
LoggerUtil.info(log, "[{}] A2aAgent complete call.", currentRequestId);
4547
LoggerUtil.debug(log, "[{}] A2aAgent complete with artifact messages: ", currentRequestId);

agentscope-extensions/agentscope-extensions-a2a/agentscope-extensions-a2a-client/src/main/java/io/agentscope/core/a2a/agent/event/TaskUpdateEventHandler.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ private static class TaskStatusUpdateEventHandler
9090
public void handle(TaskStatusUpdateEvent event, ClientEventContext context) {
9191
String currentRequestId = context.getCurrentRequestId();
9292
if (event.isFinal()) {
93-
Msg msg = MessageConvertUtil.convertFromArtifact(context.getTask().getArtifacts());
93+
Msg msg =
94+
MessageConvertUtil.convertFromArtifact(
95+
context.getTask().getArtifacts(), context.getAgent().getName());
9496
context.getSink().success(msg);
9597
LoggerUtil.info(log, "[{}] A2aAgent complete call.", currentRequestId);
9698
LoggerUtil.debug(
@@ -106,7 +108,9 @@ public void handle(TaskStatusUpdateEvent event, ClientEventContext context) {
106108
if (null == taskStatus.message()) {
107109
return;
108110
}
109-
Msg msg = MessageConvertUtil.convertFromMessage(taskStatus.message());
111+
Msg msg =
112+
MessageConvertUtil.convertFromMessage(
113+
taskStatus.message(), context.getAgent().getName());
110114
LoggerUtil.debug(
111115
log, "[{}] A2aAgent task status updated with messages: ", currentRequestId);
112116
LoggerUtil.logTextMsgDetail(log, List.of(msg));
@@ -126,7 +130,9 @@ public void handle(TaskArtifactUpdateEvent event, ClientEventContext context) {
126130
if (null == event.getArtifact()) {
127131
return;
128132
}
129-
Msg msg = MessageConvertUtil.convertFromArtifact(event.getArtifact());
133+
Msg msg =
134+
MessageConvertUtil.convertFromArtifact(
135+
event.getArtifact(), context.getAgent().getName());
130136
LoggerUtil.debug(
131137
log, "[{}] A2aAgent artifact append with messages: ", currentRequestTaskId);
132138
LoggerUtil.logTextMsgDetail(log, List.of(msg));

agentscope-extensions/agentscope-extensions-a2a/agentscope-extensions-a2a-client/src/main/java/io/agentscope/core/a2a/agent/utils/MessageConvertUtil.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,21 @@ public class MessageConvertUtil {
4646
* Convert a single {@link Artifact} to {@link Msg}.
4747
*
4848
* @param artifact the artifact to convert
49+
* @param agentName the name of the agent that generated the artifact
4950
* @return the converted Msg object
5051
*/
51-
public static Msg convertFromArtifact(Artifact artifact) {
52-
return convertFromArtifact(List.of(artifact));
52+
public static Msg convertFromArtifact(Artifact artifact, String agentName) {
53+
return convertFromArtifact(List.of(artifact), agentName);
5354
}
5455

5556
/**
5657
* Convert a list of {@link Artifact} to {@link Msg}.
5758
*
5859
* @param artifacts the list of artifacts to convert
60+
* @param agentName the name of the agent that generated the artifacts
5961
* @return the converted Msg object
6062
*/
61-
public static Msg convertFromArtifact(List<Artifact> artifacts) {
63+
public static Msg convertFromArtifact(List<Artifact> artifacts, String agentName) {
6264
Msg.Builder builder = Msg.builder();
6365
List<ContentBlock> contentBlocks = new LinkedList<>();
6466
artifacts.stream()
@@ -67,8 +69,7 @@ public static Msg convertFromArtifact(List<Artifact> artifacts) {
6769
.forEach(
6870
artifact -> {
6971
builder.id(artifact.artifactId());
70-
// TODO agentscope msg name might be agent name.
71-
builder.name(artifact.name());
72+
builder.name(null != agentName ? agentName : artifact.name());
7273
builder.metadata(artifact.metadata());
7374
contentBlocks.addAll(convertFromParts(artifact.parts()));
7475
});
@@ -80,12 +81,14 @@ public static Msg convertFromArtifact(List<Artifact> artifacts) {
8081
/**
8182
* Convert a single {@link Message} to {@link Msg}.
8283
*
83-
* @param message the message to convert
84+
* @param message the message to convert
85+
* @param agentName the name of the agent that generated the message
8486
* @return the converted Msg object
8587
*/
86-
public static Msg convertFromMessage(Message message) {
88+
public static Msg convertFromMessage(Message message, String agentName) {
8789
Msg.Builder builder = Msg.builder();
8890
builder.id(message.getMessageId());
91+
builder.name(agentName);
8992
builder.metadata(null != message.getMetadata() ? message.getMetadata() : Map.of());
9093
builder.role(MsgRole.ASSISTANT);
9194
builder.content(convertFromParts(message.getParts()));

agentscope-extensions/agentscope-extensions-a2a/agentscope-extensions-a2a-client/src/test/java/io/agentscope/core/a2a/agent/A2aAgentTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ void testCallAgentWithDefaultTransport() {
129129
Msg result = agent.call(Msg.builder().textContent("test").build()).block();
130130
assertNotNull(result);
131131
assertEquals("mock success.", result.getTextContent());
132-
assertEquals(1, agent.getMemory().getMessages().size());
132+
assertEquals(2, agent.getMemory().getMessages().size());
133133
}
134134

135135
@Test
@@ -424,7 +424,7 @@ void testCallAgentWithDefaultTransportByObserve() {
424424
Msg result = agent.call(Msg.builder().textContent("test").build()).block();
425425
assertNotNull(result);
426426
assertEquals("mock success.", result.getTextContent());
427-
assertEquals(2, agent.getMemory().getMessages().size());
427+
assertEquals(3, agent.getMemory().getMessages().size());
428428
}
429429

430430
private Answer<Void> mockSuccessMessage() {

0 commit comments

Comments
 (0)