Metadata-Version: 2.4
Name: cxp
Version: 5.0.0
Summary: Capability Exchange Protocol
Author: Vicente Ruiz
License-Expression: MIT
Project-URL: Homepage, https://github.com/menudoproblema/cxp
Project-URL: Repository, https://github.com/menudoproblema/cxp
Project-URL: Issues, https://github.com/menudoproblema/cxp/issues
Project-URL: Changelog, https://github.com/menudoproblema/cxp/blob/main/CHANGELOG.md
Project-URL: Documentation, https://github.com/menudoproblema/cxp/tree/main/docs
Keywords: capabilities,catalogs,interoperability,protocol,telemetry
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Distributed Computing
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: msgspec<1,>=0.20.0
Provides-Extra: exchange
Requires-Dist: jsonschema<5,>=4.23; extra == "exchange"
Requires-Dist: referencing<1,>=0.35; extra == "exchange"
Requires-Dist: rfc8785<1,>=0.1.4; extra == "exchange"
Provides-Extra: dev
Requires-Dist: cxp[exchange]; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: types-jsonschema; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: jsonschema-rs<1,>=0.46; extra == "dev"
Requires-Dist: hypothesis<7,>=6.100; extra == "dev"
Requires-Dist: setuptools>=77; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Dynamic: license-file

# CXP: Capability Exchange Protocol

CXP exchanges versioned JSON documents for capabilities, requirements,
observations and compatibility results. A catalog is selected by its exact
namespace, name, version and SHA-256. The evaluator returns `compatible`,
`incompatible` or `indeterminate` from validated inputs.

```bash
pip install 'cxp[exchange]'
cxp catalog list
python -m cxp.exchange.tutorial
```

```python
from cxp.exchange import Document, CatalogStore, evaluate_requirements_detailed

# The producer supplies its own catalog and snapshot documents. The consumer
# supplies its pinned requirements and an explicit context, including the
# accepted source kinds in context v2.
result = evaluate_requirements_detailed(
    snapshot,
    requirements,
    context,
    catalogs=CatalogStore((catalog,)),
)
print(result.verdict)
```

CXP validates and compares claims. It does not discover providers, download
catalogs, authenticate evidence, perform probes, create leases, manage a
lifecycle or select a runtime modality. Producers own catalog semantics and
operational contracts. Consumers own admission policy and evidence checks.

Catalog v2 adds explicit string domains and exact documentary sources at the
catalog, capability, property and operation levels. Catalog v1 remains readable;
adoption of v2 is explicit. See the [catalog v2 specification](docs/protocol/catalog-v2.md).

The component handshake, descriptors, global catalog registry, built-in
producer catalogs and telemetry protocol from earlier CXP releases were
retired in the removal major. Historical source, tests and examples are kept
under `evidence/` as non-installed evidence. See the
[migration guide](docs/migration-c4.md) and [C4 conservation matrix](docs/architecture/c4-conservation-matrix.md).

Read the [exchange specification](docs/protocol/exchange-v1.md),
[catalog v2](docs/protocol/catalog-v2.md),
[context v2](docs/protocol/context-v2.md),
[integration guide](docs/protocol/exchange-integration.md),
[CLI guide](docs/cli.md), and [reference catalogs](docs/catalogs/exchange-reference.md).

The package supports Python 3.12–3.14. See [CONTRIBUTING.md](CONTRIBUTING.md)
for local checks and candidate verification. Publication is a separate gate.
