Skip to main content

Command-line tools for the Agent Accessibility Event Protocol: validate, capture, and replay event streams

Project description

aaep-tools

Official command-line tools for the Agent Accessibility Event Protocol. Install once, get three commands for working with AAEP event streams.

pip install aaep-tools

After installation:

aaep-validate --help
aaep-capture --help
aaep-replay --help

Requires Python 3.10 or newer.


What's included

Command What it does
aaep-validate Validates events against the AAEP JSON Schemas
aaep-capture Records SSE event streams from a running producer to JSONL
aaep-replay Replays JSONL streams as SSE servers for testing subscribers

All three are language-and-framework agnostic. They work with any conformant AAEP producer or subscriber regardless of implementation language.


Quick reference

Validate

# Validate a single event from stdin
cat event.json | aaep-validate

# Validate a captured stream
aaep-validate captured.jsonl

# Validate multiple files
aaep-validate event1.json event2.json stream.jsonl

# Machine-readable JSON output
aaep-validate --json captured.jsonl | jq 'select(.valid == false)'

# CI mode (silent, exit code only)
aaep-validate --quiet captured.jsonl

Exit codes: 0 (all valid), 1 (any invalid), 2 (usage/I/O error).

Capture

# Capture from a running producer until Ctrl-C
aaep-capture --endpoint http://localhost:8080 --output session.jsonl

# Capture for 60 seconds
aaep-capture --endpoint http://localhost:8080 --output session.jsonl --timeout 60

# Capture exactly 100 events
aaep-capture --endpoint http://localhost:8080 --output session.jsonl --max-events 100

# Capture only critical-urgency events
aaep-capture --endpoint http://localhost:8080 --output critical.jsonl --filter-urgency critical

# Capture only tool events from one session
aaep-capture --endpoint http://localhost:8080 --output debug.jsonl \
    --filter-type tool.invoked --filter-type tool.completed \
    --filter-session sess_abc123

The output file is always closed cleanly on Ctrl-C — no partial JSON lines.

Replay

# Replay a captured stream at original pace on port 9000
aaep-replay --file session.jsonl --port 9000

# Replay 10x faster
aaep-replay --file session.jsonl --port 9000 --speed 10

# Replay as fast as possible (no inter-event delay)
aaep-replay --file session.jsonl --port 9000 --no-delay

# Loop replay continuously for soak testing
aaep-replay --file session.jsonl --port 9000 --loop --no-delay

The server provides standard AAEP endpoints:

  • GET /events — SSE stream of replayed events
  • GET /healthz — health check with current state

Programmatic API

If you need to invoke the functionality from Python code rather than the CLI:

from aaep_tools.validate import validate_event, validate_stream
from aaep_tools.capture import capture_stream
from aaep_tools.replay import load_events, run_replay

# Validate a single event
result = validate_event({
    "type": "aaep:agent.session.started",
    # ... rest of event ...
})
if not result.valid:
    for error in result.errors:
        print(error)

# Validate a JSONL stream
with open("captured.jsonl") as f:
    for result in validate_stream(f):
        if not result.valid:
            print(f"{result.location}: {result.errors}")

# Capture (async)
import asyncio, sys
async def grab():
    captured, reason = await capture_stream(
        endpoint="http://localhost:8080",
        output=sys.stdout,
        timeout_seconds=30,
    )
    return captured

asyncio.run(grab())

# Load and inspect captured events
events = load_events(Path("captured.jsonl"))
print(f"Captured {len(events)} events")

Use cases

Producer development. Run aaep-validate in CI on every captured event stream. Catch malformed events before they ship.

Subscriber development. Capture real production traces with aaep-capture, then replay them with aaep-replay to test subscribers against canonical inputs. Replays are deterministic and shareable.

Conformance verification. The aaep-conformance package uses these tools for advanced test scenarios. They also stand alone as a lightweight verification harness.

Production debugging. Capture an incident in real time:

aaep-capture --endpoint http://prod.example.com --output incident.jsonl --timeout 300

Then inspect offline, validate, and share with your team.

Accessibility research. Capture event streams from various producers, share as datasets, analyze cross-producer behavior. Researchers can study how different agents emit AAEP events without needing to run those agents themselves.


Design philosophy

These tools are intentionally minimal:

  • One thing each, well. Following the Unix tradition. Validate doesn't capture, capture doesn't validate, replay doesn't filter.
  • Composable. Chain them together with pipes. Use them in scripts. Run them in CI.
  • Offline-friendly. Schemas are bundled with the package. Works behind firewalls and air gaps.
  • Standard I/O conventions. Reads from stdin, writes to stdout, exit codes follow Unix convention.
  • No surprises. No GUI, no configuration files, no plugins. What you type is what happens.

If you need richer functionality (live web dashboards, complex pipelines, multi-step automation), build it on top of these tools rather than asking us to bloat them.


Stability

aaep-tools is Production/Stable. The three commands have stable CLIs and stable programmatic APIs. Breaking changes follow semver: a major version bump (2.0.0) signals breaking changes; minor versions add features compatibly.

The bundled JSON Schemas track the AAEP specification version. Currently AAEP 1.0.0.


Links


License

MIT. See LICENSE in the repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aaep_tools-1.0.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aaep_tools-1.0.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file aaep_tools-1.0.0.tar.gz.

File metadata

  • Download URL: aaep_tools-1.0.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for aaep_tools-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5a42a4e2bbcc481e242e9f1ae913e3d0c1520f2d335ab9a02fd6ae476f00debb
MD5 37e93d7ce800e53996ec8795a3386170
BLAKE2b-256 f152973033f347c3791e5a7f6bc41253fd7746bc05a1895b68da6fd5401c1682

See more details on using hashes here.

File details

Details for the file aaep_tools-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: aaep_tools-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for aaep_tools-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8430932a551ec36dc5cf85959e9a9358e8ad0cb693263bc9ac0e8089945db8ab
MD5 13ac439cfbf014eccbf6087f2fbac141
BLAKE2b-256 333a5750c4838b249cabfddf5087353c2a9cf7a678c7a1c8cb3a5562ab71af27

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page