Metadata-Version: 2.4
Name: a2a_agentmesh
Version: 3.4.0
Summary: A2A protocol bridge for AgentMesh — trust-verified agent-to-agent communication via the A2A standard
Project-URL: Homepage, https://github.com/microsoft/agent-governance-toolkit
Project-URL: Repository, https://github.com/microsoft/agent-governance-toolkit
Author: Microsoft Corporation
License: MIT
License-File: LICENSE
Keywords: a2a,agent2agent,agentmesh,agents,identity,interoperability,multi-agent,trust
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Provides-Extra: dev
Requires-Dist: pytest-asyncio<1.0,>=0.21; extra == 'dev'
Requires-Dist: pytest<8.0,>=7.0; extra == 'dev'
Description-Content-Type: text/markdown

# A2A AgentMesh

A2A protocol bridge for AgentMesh — trust-verified agent-to-agent communication via the [A2A standard](https://a2a-protocol.org/).

## Features

- **AgentCard**: Convert AgentMesh identities to A2A-compliant discovery cards
- **TaskEnvelope**: Trust-verified task lifecycle (submitted → working → complete/failed)
- **TrustGate**: Policy enforcement for A2A task negotiations (trust scores, rate limits, DID allow/deny)

## Quick Start

```python
from a2a_agentmesh import AgentCard, TaskEnvelope, TrustGate, TrustPolicy

# Publish your agent as an A2A card
card = AgentCard.from_identity(
    did="did:mesh:my-agent",
    name="TranslationAgent",
    capabilities=["translate", "summarize"],
    trust_score=800,
)

# Create a trust-verified task
task = TaskEnvelope.create(
    skill_id="translate",
    source_did="did:mesh:requester",
    target_did=card.agent_did,
    source_trust_score=600,
    input_text="Translate 'hello' to Spanish",
)

# Gate the request
gate = TrustGate(TrustPolicy(min_trust_score=500))
result = gate.evaluate(task)
assert result.allowed
```
