Skip to content

Commit 97aa2d7

Browse files
committed
fix: Add missing extensions to Artifact and Message
1 parent dbe4bd5 commit 97aa2d7

File tree

5 files changed

+33
-9
lines changed

5 files changed

+33
-9
lines changed

extras/queue-manager-replicated/core/src/test/java/io/a2a/extras/queuemanager/replicated/core/EventSerializationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public void testTaskStatusUpdateEventSerialization() throws JsonProcessingExcept
139139
public void testTaskArtifactUpdateEventSerialization() throws JsonProcessingException {
140140
// Create a TaskArtifactUpdateEvent
141141
List<Part<?>> parts = List.of(new TextPart("Test artifact content"));
142-
Artifact artifact = new Artifact("test-artifact-123", "Test Artifact", "Test description", parts, null);
142+
Artifact artifact = new Artifact("test-artifact-123", "Test Artifact", "Test description", parts, null, null);
143143
TaskArtifactUpdateEvent originalEvent = new TaskArtifactUpdateEvent.Builder()
144144
.taskId("test-task-xyz")
145145
.contextId("test-context-uvw")

server-common/src/main/java/io/a2a/server/util/ArtifactUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static Artifact newArtifact(String name, List<Part<?>> parts, String desc
3232
name,
3333
description,
3434
parts,
35+
null,
3536
null
3637
);
3738
}

spec-grpc/src/main/java/io/a2a/grpc/utils/ProtoUtils.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -875,7 +875,8 @@ public static Message message(io.a2a.grpc.MessageOrBuilder message) {
875875
message.getContextId().isEmpty() ? null : message.getContextId(),
876876
message.getTaskId().isEmpty() ? null : message.getTaskId(),
877877
null, // referenceTaskIds is not in grpc message
878-
struct(message.getMetadata())
878+
struct(message.getMetadata()),
879+
message.getExtensionsList().isEmpty() ? null : message.getExtensionsList()
879880
);
880881
}
881882

@@ -906,7 +907,8 @@ private static Artifact artifact(io.a2a.grpc.ArtifactOrBuilder artifact) {
906907
artifact.getName(),
907908
artifact.getDescription(),
908909
artifact.getPartsList().stream().map(item -> part(item)).collect(Collectors.toList()),
909-
struct(artifact.getMetadata())
910+
struct(artifact.getMetadata()),
911+
artifact.getExtensionsList().isEmpty() ? null : artifact.getExtensionsList()
910912
);
911913
}
912914

spec/src/main/java/io/a2a/spec/Artifact.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
*/
1313
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1414
@JsonIgnoreProperties(ignoreUnknown = true)
15-
public record Artifact(String artifactId, String name, String description, List<Part<?>> parts, Map<String, Object> metadata) {
15+
public record Artifact(String artifactId, String name, String description, List<Part<?>> parts, Map<String, Object> metadata,
16+
List<String> extensions) {
1617

1718
public Artifact {
1819
Assert.checkNotNullParam("artifactId", artifactId);
@@ -28,6 +29,7 @@ public static class Builder {
2829
private String description;
2930
private List<Part<?>> parts;
3031
private Map<String, Object> metadata;
32+
private List<String> extensions;
3133

3234
public Builder(){
3335
}
@@ -38,6 +40,7 @@ public Builder(Artifact existingArtifact) {
3840
description = existingArtifact.description;
3941
parts = existingArtifact.parts;
4042
metadata = existingArtifact.metadata;
43+
extensions = existingArtifact.extensions;
4144
}
4245

4346
public Builder artifactId(String artifactId) {
@@ -71,8 +74,13 @@ public Builder metadata(Map<String, Object> metadata) {
7174
return this;
7275
}
7376

77+
public Builder extensions(List<String> extensions) {
78+
this.extensions = this.extensions = (extensions == null) ? null : List.copyOf(extensions);
79+
return this;
80+
}
81+
7482
public Artifact build() {
75-
return new Artifact(artifactId, name, description, parts, metadata);
83+
return new Artifact(artifactId, name, description, parts, metadata, extensions);
7684
}
7785
}
7886
}

spec/src/main/java/io/a2a/spec/Message.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,18 @@ public final class Message implements EventKind, StreamingEventKind {
3434
private final Map<String, Object> metadata;
3535
private final String kind;
3636
private final List<String> referenceTaskIds;
37+
private final List<String> extensions;
3738

3839
public Message(Role role, List<Part<?>> parts, String messageId, String contextId, String taskId,
39-
List<String> referenceTaskIds, Map<String, Object> metadata) {
40-
this(role, parts, messageId, contextId, taskId, referenceTaskIds, metadata, MESSAGE);
40+
List<String> referenceTaskIds, Map<String, Object> metadata, List<String> extensions) {
41+
this(role, parts, messageId, contextId, taskId, referenceTaskIds, metadata, extensions, MESSAGE);
4142
}
4243

4344
@JsonCreator
4445
public Message(@JsonProperty("role") Role role, @JsonProperty("parts") List<Part<?>> parts,
4546
@JsonProperty("messageId") String messageId, @JsonProperty("contextId") String contextId,
4647
@JsonProperty("taskId") String taskId, @JsonProperty("referenceTaskIds") List<String> referenceTaskIds,
47-
@JsonProperty("metadata") Map<String, Object> metadata,
48+
@JsonProperty("metadata") Map<String, Object> metadata, @JsonProperty("extensions") List<String> extensions,
4849
@JsonProperty("kind") String kind) {
4950
Assert.checkNotNullParam("kind", kind);
5051
Assert.checkNotNullParam("parts", parts);
@@ -63,6 +64,7 @@ public Message(@JsonProperty("role") Role role, @JsonProperty("parts") List<Part
6364
this.taskId = taskId;
6465
this.referenceTaskIds = referenceTaskIds;
6566
this.metadata = metadata;
67+
this.extensions = extensions;
6668
this.kind = kind;
6769
}
6870

@@ -102,6 +104,10 @@ public List<String> getReferenceTaskIds() {
102104
return referenceTaskIds;
103105
}
104106

107+
public List<String> getExtensions() {
108+
return extensions;
109+
}
110+
105111
@Override
106112
public String getKind() {
107113
return kind;
@@ -132,6 +138,7 @@ public static class Builder {
132138
private String taskId;
133139
private List<String> referenceTaskIds;
134140
private Map<String, Object> metadata;
141+
private List<String> extensions;
135142

136143
public Builder() {
137144
}
@@ -144,6 +151,7 @@ public Builder(Message message) {
144151
taskId = message.taskId;
145152
referenceTaskIds = message.referenceTaskIds;
146153
metadata = message.metadata;
154+
extensions = message.extensions;
147155
}
148156

149157
public Builder role(Role role) {
@@ -186,9 +194,14 @@ public Builder metadata(Map<String, Object> metadata) {
186194
return this;
187195
}
188196

197+
public Builder extensions(List<String> extensions) {
198+
this.extensions = (extensions == null) ? null : List.copyOf(extensions);
199+
return this;
200+
}
201+
189202
public Message build() {
190203
return new Message(role, parts, messageId == null ? UUID.randomUUID().toString() : messageId,
191-
contextId, taskId, referenceTaskIds, metadata);
204+
contextId, taskId, referenceTaskIds, metadata, extensions);
192205
}
193206
}
194207
}

0 commit comments

Comments
 (0)