diff --git a/client/base/src/main/java/org/a2aproject/sdk/client/ClientTaskManager.java b/client/base/src/main/java/org/a2aproject/sdk/client/ClientTaskManager.java
index 0a962eab7..1a393dc44 100644
--- a/client/base/src/main/java/org/a2aproject/sdk/client/ClientTaskManager.java
+++ b/client/base/src/main/java/org/a2aproject/sdk/client/ClientTaskManager.java
@@ -60,7 +60,7 @@ synchronized Task saveTaskEvent(TaskStatusUpdateEvent taskStatusUpdateEvent) thr
Task task = currentTask;
if (task == null) {
task = Task.builder()
- .status(new TaskStatus(TaskState.UNRECOGNIZED))
+ .status(new TaskStatus(TaskState.TASK_STATE_UNSPECIFIED))
.id(taskId)
.contextId(contextId == null ? "" : contextId)
.build();
@@ -96,7 +96,7 @@ synchronized Task saveTaskEvent(TaskArtifactUpdateEvent taskArtifactUpdateEvent)
Task task = currentTask;
if (task == null) {
task = Task.builder()
- .status(new TaskStatus(TaskState.UNRECOGNIZED))
+ .status(new TaskStatus(TaskState.TASK_STATE_UNSPECIFIED))
.id(taskId)
.contextId(contextId == null ? "" : contextId)
.build();
diff --git a/compat-0.3/server-conversion/src/main/java/org/a2aproject/sdk/compat03/conversion/mappers/domain/TaskStateMapper_v0_3.java b/compat-0.3/server-conversion/src/main/java/org/a2aproject/sdk/compat03/conversion/mappers/domain/TaskStateMapper_v0_3.java
index 05f8b464d..82a5faf4b 100644
--- a/compat-0.3/server-conversion/src/main/java/org/a2aproject/sdk/compat03/conversion/mappers/domain/TaskStateMapper_v0_3.java
+++ b/compat-0.3/server-conversion/src/main/java/org/a2aproject/sdk/compat03/conversion/mappers/domain/TaskStateMapper_v0_3.java
@@ -15,12 +15,12 @@
*
v1.0: {@code TASK_STATE_SUBMITTED, TASK_STATE_WORKING, ...}
*
*
- * Additionally, the {@code UNKNOWN} state in v0.3 maps to {@code UNRECOGNIZED} in v1.0.
+ * Additionally, the {@code UNKNOWN} state in v0.3 maps to {@code TASK_STATE_UNSPECIFIED} in v1.0.
*
* This mapper uses manual switch statements instead of {@code @ValueMapping} to:
*
* - Avoid mapstruct-spi-protobuf enum strategy initialization issues
- * - Handle explicit null mapping (null → UNRECOGNIZED/UNKNOWN)
+ * - Handle explicit null mapping (null → TASK_STATE_UNSPECIFIED/UNKNOWN)
* - Provide clear, compile-time-safe enum conversions
*
*
@@ -50,8 +50,8 @@ public interface TaskStateMapper_v0_3 {
* CANCELED → TASK_STATE_CANCELED
* FAILED → TASK_STATE_FAILED
* REJECTED → TASK_STATE_REJECTED
- * UNKNOWN → UNRECOGNIZED
- * null → UNRECOGNIZED
+ * UNKNOWN → TASK_STATE_UNSPECIFIED
+ * null → TASK_STATE_UNSPECIFIED
*
*
* @param v03 the v0.3 task state (may be null)
@@ -59,7 +59,7 @@ public interface TaskStateMapper_v0_3 {
*/
default TaskState toV10(TaskState_v0_3 v03) {
if (v03 == null) {
- return TaskState.UNRECOGNIZED;
+ return TaskState.TASK_STATE_UNSPECIFIED;
}
return switch (v03) {
case SUBMITTED -> TaskState.TASK_STATE_SUBMITTED;
@@ -70,7 +70,7 @@ default TaskState toV10(TaskState_v0_3 v03) {
case CANCELED -> TaskState.TASK_STATE_CANCELED;
case FAILED -> TaskState.TASK_STATE_FAILED;
case REJECTED -> TaskState.TASK_STATE_REJECTED;
- case UNKNOWN -> TaskState.UNRECOGNIZED;
+ case UNKNOWN -> TaskState.TASK_STATE_UNSPECIFIED;
};
}
@@ -89,7 +89,7 @@ default TaskState toV10(TaskState_v0_3 v03) {
* TASK_STATE_CANCELED → CANCELED
* TASK_STATE_FAILED → FAILED
* TASK_STATE_REJECTED → REJECTED
- * UNRECOGNIZED → UNKNOWN
+ * TASK_STATE_UNSPECIFIED → UNKNOWN
* null → UNKNOWN
*
*
@@ -109,7 +109,7 @@ default TaskState_v0_3 fromV10(TaskState v10) {
case TASK_STATE_CANCELED -> TaskState_v0_3.CANCELED;
case TASK_STATE_FAILED -> TaskState_v0_3.FAILED;
case TASK_STATE_REJECTED -> TaskState_v0_3.REJECTED;
- case UNRECOGNIZED -> TaskState_v0_3.UNKNOWN;
+ case TASK_STATE_UNSPECIFIED -> TaskState_v0_3.UNKNOWN;
};
}
}
diff --git a/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/A2ACommonFieldMapper.java b/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/A2ACommonFieldMapper.java
index 7a5c277da..d2170d9c1 100644
--- a/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/A2ACommonFieldMapper.java
+++ b/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/A2ACommonFieldMapper.java
@@ -445,7 +445,7 @@ default org.a2aproject.sdk.spec.TaskState taskStateOrNull(org.a2aproject.sdk.grp
// Reject invalid enum values (e.g., "INVALID_STATUS" from JSON)
if (state == org.a2aproject.sdk.grpc.TaskState.UNRECOGNIZED) {
String validStates = java.util.Arrays.stream(org.a2aproject.sdk.spec.TaskState.values())
- .filter(s -> s != org.a2aproject.sdk.spec.TaskState.UNRECOGNIZED)
+ .filter(s -> s != org.a2aproject.sdk.spec.TaskState.TASK_STATE_UNSPECIFIED)
.map(Enum::name)
.collect(java.util.stream.Collectors.joining(", "));
throw new InvalidParamsError(null,
diff --git a/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/TaskStateMapper.java b/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/TaskStateMapper.java
index a8507afb5..cf9c071ad 100644
--- a/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/TaskStateMapper.java
+++ b/spec-grpc/src/main/java/org/a2aproject/sdk/grpc/mapper/TaskStateMapper.java
@@ -38,7 +38,7 @@ default org.a2aproject.sdk.grpc.TaskState toProto(org.a2aproject.sdk.spec.TaskSt
case TASK_STATE_CANCELED -> org.a2aproject.sdk.grpc.TaskState.TASK_STATE_CANCELED;
case TASK_STATE_FAILED -> org.a2aproject.sdk.grpc.TaskState.TASK_STATE_FAILED;
case TASK_STATE_REJECTED -> org.a2aproject.sdk.grpc.TaskState.TASK_STATE_REJECTED;
- case UNRECOGNIZED -> org.a2aproject.sdk.grpc.TaskState.UNRECOGNIZED;
+ case TASK_STATE_UNSPECIFIED -> org.a2aproject.sdk.grpc.TaskState.TASK_STATE_UNSPECIFIED;
};
}
@@ -46,11 +46,11 @@ default org.a2aproject.sdk.grpc.TaskState toProto(org.a2aproject.sdk.spec.TaskSt
* Converts proto TaskState to domain TaskState.
*
* @param proto the proto task state
- * @return the domain task state, or UNKNOWN if input is null or unrecognized
+ * @return the domain task state, or TASK_STATE_UNSPECIFIED if input is null or unrecognized
*/
default org.a2aproject.sdk.spec.TaskState fromProto(org.a2aproject.sdk.grpc.TaskState proto) {
if (proto == null) {
- return org.a2aproject.sdk.spec.TaskState.UNRECOGNIZED;
+ return org.a2aproject.sdk.spec.TaskState.TASK_STATE_UNSPECIFIED;
}
return switch (proto) {
@@ -62,7 +62,7 @@ default org.a2aproject.sdk.spec.TaskState fromProto(org.a2aproject.sdk.grpc.Task
case TASK_STATE_CANCELED -> org.a2aproject.sdk.spec.TaskState.TASK_STATE_CANCELED;
case TASK_STATE_FAILED -> org.a2aproject.sdk.spec.TaskState.TASK_STATE_FAILED;
case TASK_STATE_REJECTED -> org.a2aproject.sdk.spec.TaskState.TASK_STATE_REJECTED;
- case TASK_STATE_UNSPECIFIED, UNRECOGNIZED -> org.a2aproject.sdk.spec.TaskState.UNRECOGNIZED;
+ case TASK_STATE_UNSPECIFIED, UNRECOGNIZED -> org.a2aproject.sdk.spec.TaskState.TASK_STATE_UNSPECIFIED;
};
}
}
diff --git a/spec/src/main/java/org/a2aproject/sdk/spec/TaskState.java b/spec/src/main/java/org/a2aproject/sdk/spec/TaskState.java
index 2044581b1..a9a243464 100644
--- a/spec/src/main/java/org/a2aproject/sdk/spec/TaskState.java
+++ b/spec/src/main/java/org/a2aproject/sdk/spec/TaskState.java
@@ -27,7 +27,7 @@
* TASK_STATE_CANCELED: Task was explicitly canceled by the user or system
* TASK_STATE_FAILED: Task failed due to an error during execution
* TASK_STATE_REJECTED: Task was rejected by the agent (e.g., invalid request, policy violation)
- * UNRECOGNIZED: Task state cannot be determined (error recovery state)
+ * TASK_STATE_UNSPECIFIED: Task state cannot be determined (error recovery state)
*
*
* The {@link #isFinal()} method can be used to determine if a state is terminal, which is
@@ -64,7 +64,7 @@ public enum TaskState {
TASK_STATE_REJECTED(true, false),
/** Task state is unknown or cannot be determined (terminal state). */
- UNRECOGNIZED(true, false);
+ TASK_STATE_UNSPECIFIED(false, false);
private final boolean isFinal;
private final boolean isInterrupted;
@@ -81,7 +81,7 @@ public enum TaskState {
* not transition to any other state. This is used by the event queue system
* to determine when to close queues and by clients to know when to stop polling.
*
- * Terminal states: COMPLETED, FAILED, CANCELED, REJECTED, UNRECOGNIZED.
+ * Terminal states: TASK_STATE_COMPLETED, TASK_STATE_FAILED, TASK_STATE_CANCELED, TASK_STATE_REJECTED, TASK_STATE_UNSPECIFIED.
*
* @return {@code true} if this is a terminal state, {@code false} else.
*/