Observed since 21 Oct, 09:32 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
ag-ui-validate
Conformance validator for the AG-UI protocol
Native Python port of ag-ui-validate, a conformance validator for the AG-UI protocol. Same rule catalog, same fixture corpus, byte-identical CLI flags and JSON/SARIF/JUnit output as the TypeScript implementation — checked against it on every PR by Parity CI.
pip install ag-ui-validate # or "ag-ui-validate[transport]" for just the endpoint-validating extras
To install from source instead:
git clone https://github.com/langport-dev/ag-ui-validate
cd ag-ui-validate/py
pip install -e ".[dev]"
ag-ui-validate http://localhost:8000/agui # live endpoint (POSTs a RunAgentInput)
ag-ui-validate run.jsonl # recorded stream (NDJSON/JSONL or SSE capture)
cat run.jsonl | ag-ui-validate - # stdin
Exit codes: 0 clean, 1 findings at error level (or warnings over
--max-warnings), 2 tool failure. See ag-ui-validate --help for the
full flag list.
from ag_ui_validate.pytest_plugin import assert_valid_agui
def test_my_agent_stream(captured_events):
assert_valid_agui(captured_events, features=["shared-state"], max_warnings=0)
Registers automatically as a pytest plugin on install — no conftest.py
setup needed. An async counterpart, assert_valid_agui_endpoint, validates
a live endpoint directly from a test.
See the main README for the full rule catalog and design commitments, and docs/PYTHON-PORT-PLAN.md for the port's milestone history.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
ag-ui-protocolEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | ag-ui-protocol>=0.1.0; extra == "dev" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.14; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0.0; extra == "dev" | runtime |
httpxEnvironment{
"extras": "",
"marker": "extra == \"transport\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27; extra == "transport" | runtime |
bdist_wheel · 103.48 KB · Python py3
sdist · 76.83 KB · Python source
Shared repository data · GitHub
Observed since 21 Oct, 09:32 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:5b21440002aa69902090fa4cc3d866498ec6c8721b5b21d93ef49116bce2bc59