38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Gateway adapter: URL /rpc suffix + A2A-Version header override.
|
|
|
|
The Alibaba Cloud intelligent gateway requires:
|
|
1. JSON-RPC endpoint at {base_url}/rpc (not the card's URL directly)
|
|
2. A2A-Version header = "1.0.0" (SDK default is "1.0")
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger("qwenpaw").getChild(
|
|
__name__.replace("plugin_cloudpaw.", ""),
|
|
)
|
|
|
|
GATEWAY_A2A_VERSION = "1.0.0"
|
|
|
|
|
|
def patch_card_url(card: dict) -> dict:
|
|
"""Append /rpc suffix to the card's URL field."""
|
|
url = card.get("url", "")
|
|
if url and not url.endswith("/rpc"):
|
|
card = {**card, "url": url.rstrip("/") + "/rpc"}
|
|
logger.debug("Patched card URL: %s", card["url"])
|
|
return card
|
|
|
|
|
|
def normalize_gateway_card(card_data: dict) -> dict:
|
|
"""Fix gateway AgentCard fields that may cause parsing issues.
|
|
|
|
Known issues: some gateway cards have ``tags: null`` in skills.
|
|
"""
|
|
for skill in card_data.get("skills", []):
|
|
if skill.get("tags") is None:
|
|
skill["tags"] = []
|
|
return card_data
|