fix(a2a): handle string-form errors in delegate_task (v2) #287

Closed
core-be wants to merge 4 commits from fix/a2a-tools-v2 into main

4 Commits

Author SHA1 Message Date
67b2e48824 fix(a2a): handle string-form errors in delegate_task
Some checks failed
sop-tier-check / tier-check (pull_request) Failing after 13s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 13s
audit-force-merge / audit (pull_request) Has been skipped
The A2A proxy can return three error shapes:
  {"error": "plain string"}
  {"error": {"message": "...", "code": ...}}
  {"error": {"message": {"nested": "object"}}}   ← value at .message is a string

builtin_tools/a2a_tools.py:72 called data["error"].get("message")
without guarding against error being a string, which raised:
  AttributeError: 'str' object has no attribute 'get'

This broke every delegation attempt through the legacy a2a_tools path
(the LangChain-wrapped version used by adapter templates). The
SSOT parser a2a_response.py already handled string errors; the
legacy inline sniffer in a2a_tools.py did not.

Fix: branch on isinstance(err, dict/str/other) before calling .get().

Also update both publish-workflow files to remove the dead
`staging` branch trigger — trunk-based migration (PR #109,
2026-05-08) removed the staging branch.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 10:13:24 +00:00
cd73b38c7b chore: restore manifest.json after trigger test 2026-05-10 10:13:24 +00:00
1746b96765 chore: trigger publish workflow [Integration Tester 2026-05-10T08:45Z] 2026-05-10 10:13:24 +00:00
1a28110539 chore: staging trigger commit from Integration Tester 2026-05-10 10:13:24 +00:00