a2aproject / a2aproject/a2a-python

[Bug]: Response Stream Array-Wrapping Crash (Transport Layer Mismatch)

オープン
#1,089 コメント 6 件 リアクション 0 件 担当者 1 名 @ishymko が担当を希望しています GitHub で見る
component: client
主要言語
Python
スター
2.1k
フォーク
496
平均マージ
4日 17時間
マージ済み PR(30日)
12

説明

### What happened?

This is continuation from #1074 as splitting into two issues are suggested by @ishymko

Copied the issue description below for context

##### Response Stream Array-Wrapping Crash (Transport Layer Mismatch)
By default, Google wraps streaming RPC responses (`Flow`) inside a JSON array `[ {"task": ...} ]` to frame stream chunk boundaries on the wire.
* **The Mismatch**: The SDK's legacy compatibility transport (`CompatRestTransport` inside `a2a/compat/v0_3/rest_transport.py`) fails to request standard SSE transcoding from Google because it does not append the standard **`?alt=sse`** query parameter to the stream endpoint URL. This forces Google to fall back to default plain JSON array-wrapped streams.
* **The Crash**: Standard transports in `a2a/client/transports/rest.py` parse stream events using standard `Parse` (from `google.protobuf.json_format`):
```python
event: StreamResponse = Parse(sse_data, StreamResponse())
```
Because standard `Parse` strictly expects a single JSON object `{...}`, the leading and trailing array brackets (`[` and `]`) cause `json_format.Parse` to crash immediately on the very first chunk:
```python
google.protobuf.json_format.ParseError: Failed to parse {'task': {...}} field: unhashable type: 'dict'.
```

----

Thanks for pointing this issue is not specific to v0.3 but v1 as well. Regarding the workaround mentioned in https://github.com/a2aproject/a2a-python/issues/1074#issuecomment-4555290758 , yes it will work with the workaround but this mean all the customer/developer who integrated with Google A2A APIs will require this workaround introduces developer friction. Is there any way we could make this smoother so developer can use SDK with Google A2A API out of the box? Thanks!

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。