5a8102d71c
Two bugs reported by gfdsa (PR #41711 comment, Jul 12) that break the official a2a-sdk 1.1.0 Python client: 1. Task objects serialized non-spec createdAt/lastModified fields. The A2A v1.0 Task proto (lf.a2a.v1.Task) only has id, contextId, status, artifacts, history, metadata. Strict ProtoJSON parsers reject unknown fields with ParseError. Removed both fields from build_task(); created_at param kept for call-site compatibility. 2. SSE streaming frames were not JSON-RPC wrapped. A2A v1.0 §9.4 requires data: {"jsonrpc":"2.0","id":...,"result":{StreamResponse}}. sse_data() now accepts req_id and wraps in JSON-RPC envelope. sse_done() changed from 'data: {}' to SSE comment ': done' so SDK doesn't try to parse an empty JSON-RPC response. All call sites in adapter.py (_emit_terminal, _rpc_message_stream, _rpc_tasks_subscribe) updated to thread req_id through. Tests updated: 153 pass (151 unit + 17 integration, including 2 new tests for JSON-RPC envelope wrapping and fallback behavior). Refs: gfdsa/a2a-hermes reproduction repo