"""Export all five Agent Cards to protocols/a2a_cards/ (plan ยง7.2). Run: python -m scripts.export_cards """ from __future__ import annotations import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from core.a2a_layer import export_card, make_card # noqa: E402 from core.config import PROJECT_ROOT, settings # noqa: E402 CARDS_DIR = PROJECT_ROOT / "protocols" / "a2a_cards" PORTS = settings()["ports"] CARDS = [ ("auditor", make_card( name="AuditorAgent", description="Monitors warehouse stock over MCP and emits procurement requests", port=PORTS["auditor"], skills=[{"id": "detect_shortage", "name": "Detect stock shortage", "description": "scan inventory below reorder point and raise a ProcurementRequest", "tags": ["inventory", "mcp"]}])), ("sourcing", make_card( name="SourcingAgent", description="Shortlists vendors for a procurement request", port=PORTS["sourcing"], skills=[{"id": "shortlist_vendors", "name": "Shortlist vendors", "description": "rank top-3 vendors for a SKU", "tags": ["procurement", "sourcing"]}])), ("buyer", make_card( name="BuyerAgent", description="Negotiates unit price against a hidden budget ceiling", port=PORTS["buyer"], streaming=True, skills=[{"id": "negotiate_price", "name": "Negotiate price", "description": "multi-turn settle-or-walk negotiation with a vendor", "tags": ["negotiation"]}])), ("vendor", make_card( name="VendorAgent", description="Adversarial sales counterparty with a hidden cost floor and persona", port=PORTS["vendor_a"], streaming=True, skills=[{"id": "counter_offer", "name": "Counter offer", "description": "respond to buyer offers per persona above a hidden floor", "tags": ["negotiation", "sales"]}])), ("settlement", make_card( name="SettlementAgent", description="Selects the winning deal, builds AP2 mandates, gates on human approval", port=PORTS["ui"], skills=[{"id": "settle_purchase", "name": "Settle purchase", "description": "compare deals, assemble Intent/Cart/Payment mandates, write PO on approval", "tags": ["ap2", "human-in-the-loop"]}])), ] if __name__ == "__main__": for name, card in CARDS: export_card(card, CARDS_DIR / f"{name}.json") print(f"exported {name}.json")