fix: omit null optional fields from task result payloads (#2809)

Co-authored-by: Sheldon <neooosky@gmail.com>
This commit is contained in:
Sheldon 2026-06-10 17:37:52 +08:00 • committed by GitHub
commit 2309e5ef97
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -129,9 +129,15 @@ class TaskResultHandler:
# The stored result contains the actual payload data
# Per spec: tasks/result MUST include _meta with related-task metadata
related_task = RelatedTaskMetadata(taskId=task_id)
related_task_meta: dict[str, Any] = {RELATED_TASK_METADATA_KEY: related_task.model_dump(by_alias=True)}
related_task_meta: dict[str, Any] = {
RELATED_TASK_METADATA_KEY: related_task.model_dump(
by_alias=True,
mode="json",
exclude_none=True,
)
}
if result is not None:
result_data = result.model_dump(by_alias=True)
result_data = result.model_dump(by_alias=True, mode="json", exclude_none=True)
existing_meta: dict[str, Any] = result_data.get("_meta") or {}
result_data["_meta"] = {**existing_meta, **related_task_meta}
return GetTaskPayloadResult.model_validate(result_data)