Metadata-Version: 2.4
Name: asap-compliance
Version: 1.3.0
Summary: ASAP Protocol compliance testing harness
Author: ASAP Protocol Contributors
License: Apache-2.0
Keywords: asap,compliance,protocol,pytest,testing
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Pytest
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Testing
Classifier: Typing :: Typed
Requires-Python: >=3.13
Requires-Dist: asap-protocol>=2.5.0
Requires-Dist: httpx>=0.28.0
Requires-Dist: pydantic>=2.12.0
Requires-Dist: pytest>=8.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=6.0; extra == 'dev'
Requires-Dist: ruff>=0.14.0; extra == 'dev'
Description-Content-Type: text/markdown

# ASAP Compliance Harness

Protocol compliance testing suite for ASAP (Async Simple Agent Protocol) implementations.

## Overview

The Compliance Harness validates that ASAP agents follow the protocol specification. Third parties can use this package to certify their agents are ASAP-compliant, enabling ecosystem interoperability.

## Installation

```bash
uv add asap-compliance
# or
pip install asap-compliance
```

## Usage

Run compliance tests against an agent:

```bash
pytest --asap-agent-url https://your-agent.example.com -m asap_compliance
```

Or set the agent URL via environment variable:

```bash
ASAP_AGENT_URL=https://your-agent.example.com pytest -m asap_compliance
```

## Test Categories

- **handshake** (implemented): Agent connection, health/content-type, manifest schema,
  signature verification, version negotiation
- **schema** (implemented): Pydantic model compliance (Envelope, TaskRequest,
  TaskResponse, McpToolResult, MessageAck, extensions, extra='forbid')
- **state**: Task state machine transitions
- **mcp-auth-bridge** (v1.3.0+, requires `asap-protocol>=2.5.0`): Stdio MCP Auth Bridge release gate — JWT paths, grants, constraints, manifest ⊆ registered tools. See [MCP Auth Bridge](../docs/adapters/mcp-auth-bridge.md) and `examples/mcp_auth_bridge/README.md`.

### Protocol v2.2 and Compliance Harness v2

This package focuses on **handshake**, **schema**, **state**, and **SLA** validators for third-party certification. **Compliance Harness v2** (identity, streaming, errors, versioning, batch, audit checks against the v2.2 spec) ships with the main [`asap-protocol`](https://pypi.org/project/asap-protocol/) library — use `from asap.testing.compliance import run_compliance_harness_v2` on an ASGI app. See the [changelog](https://github.com/adriannoes/asap-protocol/blob/main/CHANGELOG.md) for v2.2.0 details.

## Programmatic Usage

```python
# Handshake validation (against live agent)
from asap_compliance import ComplianceConfig, validate_handshake

config = ComplianceConfig(agent_url="https://your-agent.example.com")
result = validate_handshake(config)
if result.passed:
    print("Agent is compliant")
else:
    for check in result.checks:
        if not check.passed:
            print(f"FAIL: {check.name} - {check.message}")

# Schema validation (static, for envelope/payload dicts)
from asap_compliance import validate_schema

envelope_dict = {"asap_version": "0.1", "sender": "urn:asap:agent:a", ...}
schema_result = validate_schema(envelope_dict)
if schema_result.passed:
    print("Envelope and payload schema valid")
```

## Development

```bash
cd asap-compliance
uv sync
uv run pytest
```
