Problem: With RedisStreamsEventQueue and a2a-sdk's default flow, the final task state (completed/failed/canceled) is never saved to TaskStore.
Cause: EventConsumer calls queue.close(True) on final event. RedisStreamsEventQueue.close() has no parameters → TypeError → final event is never yielded → TaskStore.save() never runs.
Fix: Add close(self, immediate: bool = False) to match the SDK contract. When manager closes a task queue, call queue.close(immediate=True) (and optionally run pending cleanup: xpending_range + xack).
We have a patch and can open a PR.
Problem: With
RedisStreamsEventQueueand a2a-sdk's default flow, the final task state (completed/failed/canceled) is never saved to TaskStore.Cause: EventConsumer calls
queue.close(True)on final event.RedisStreamsEventQueue.close()has no parameters →TypeError→ final event is never yielded →TaskStore.save()never runs.Fix: Add
close(self, immediate: bool = False)to match the SDK contract. When manager closes a task queue, callqueue.close(immediate=True)(and optionally run pending cleanup: xpending_range + xack).We have a patch and can open a PR.