|
3 | 3 | <p align="center"><strong>Python SDK for the Agent Runtime Control Protocol (ARCP) — submit, observe, and control long-running agent jobs from Python.</strong></p> |
4 | 4 |
|
5 | 5 | <p align="center"> |
6 | | - <a href="https://pypi.org/project/agentruntimecontrolprotocol/"><img alt="PyPI" src="https://img.shields.io/pypi/v/agentruntimecontrolprotocol.svg"></a> |
7 | | - <a href="https://pypi.org/project/agentruntimecontrolprotocol/"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/agentruntimecontrolprotocol.svg"></a> |
8 | | - <a href="https://github.com/agentruntimecontrolprotocol/python-sdk/actions/workflows/test.yml"><img alt="CI" src="https://github.com/agentruntimecontrolprotocol/python-sdk/actions/workflows/test.yml/badge.svg"></a> |
9 | | - <a href="https://codecov.io/gh/agentruntimecontrolprotocol/python-sdk"><img alt="codecov" src="https://codecov.io/gh/agentruntimecontrolprotocol/python-sdk/graph/badge.svg?token=RHW2K4B7C8"></a> |
10 | | - <a href="https://github.com/agentruntimecontrolprotocol/spec/blob/main/docs/draft-arcp-1.1.md"><img alt="ARCP" src="https://img.shields.io/badge/ARCP-v1.1%20draft-blue"></a> |
11 | | - <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-lightgrey"></a> |
| 6 | + <a href="https://pypi.org/project/agentruntimecontrolprotocol/"><img alt="PyPI" src="https://img.shields.io/pypi/v/agentruntimecontrolprotocol.svg?cacheSeconds=60"></a> |
| 7 | + <a href="https://pypi.org/project/agentruntimecontrolprotocol/"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/agentruntimecontrolprotocol.svg?cacheSeconds=60"></a> |
| 8 | + <a href="https://github.com/agentruntimecontrolprotocol/python-sdk/actions/workflows/test.yml"><img alt="CI" src="https://github.com/agentruntimecontrolprotocol/python-sdk/actions/workflows/test.yml/badge.svg?branch=main"></a> |
| 9 | + <a href="https://codecov.io/gh/agentruntimecontrolprotocol/python-sdk"><img alt="codecov" src="https://codecov.io/gh/agentruntimecontrolprotocol/python-sdk/graph/badge.svg?token=RHW2K4B7C8&cacheSeconds=60"></a> |
| 10 | + <a href="https://github.com/agentruntimecontrolprotocol/spec/blob/main/docs/draft-arcp-1.1.md"><img alt="ARCP" src="https://img.shields.io/badge/ARCP-v1.1%20draft-blue?cacheSeconds=60"></a> |
| 11 | + <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-lightgrey?cacheSeconds=60"></a> |
12 | 12 | </p> |
13 | 13 |
|
14 | 14 | <p align="center"> |
@@ -39,11 +39,25 @@ pip install agentruntimecontrolprotocol |
39 | 39 | # in its lockfile or dependency manifest) |
40 | 40 | pip install "agentruntimecontrolprotocol[client]" |
41 | 41 | pip install "agentruntimecontrolprotocol[runtime]" |
| 42 | +pip install "agentruntimecontrolprotocol[jwks]" |
| 43 | +pip install "agentruntimecontrolprotocol[otel]" |
42 | 44 |
|
43 | 45 | # pytest stack for running the test suite |
44 | 46 | pip install "agentruntimecontrolprotocol[test]" |
45 | 47 | ``` |
46 | 48 |
|
| 49 | +**Available extras** (as declared in the wheel's `Provides-Extra` metadata): |
| 50 | + |
| 51 | +| Extra | What it adds | When to use | |
| 52 | +|-------|-------------|-------------| |
| 53 | +| `client` | _(none — included by default)_ | Document that a service is a job submitter / observer. | |
| 54 | +| `runtime` | _(none — included by default)_ | Document that a service hosts agents and accepts jobs. | |
| 55 | +| `jwks` | _(none — included by default)_ | Document that a service verifies bearer tokens against a remote JWKS. | |
| 56 | +| `otel` | _(none — included by default)_ | Document that a service emits OpenTelemetry spans through `arcp.middleware.otel`. | |
| 57 | +| `test` | `pytest`, `pytest-cov`, `pytest-asyncio`, `pytest-randomly`, `pytest-timeout`, `hypothesis`, `dirty-equals`, `aiohttp`, `starlette`, `opentelemetry-sdk` | Run the SDK's own pytest suite against an installed wheel. | |
| 58 | + |
| 59 | +> Python extras can only **add** dependencies, not subtract — so the `client` / `runtime` / `jwks` / `otel` extras are no-ops at install time. They exist as semantic markers in lockfiles and dependency manifests, so a consumer can declare *which side of the wire they're using* without affecting what `pip` resolves. |
| 60 | +
|
47 | 61 | ## Quick start |
48 | 62 |
|
49 | 63 | Connect to a runtime, submit a job, stream its events to completion: |
|
0 commit comments