Metadata-Version: 2.4
Name: cortex-suite-sdk
Version: 1.1.12
Summary: Cortex SDK — transport client for Python
License: MIT
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: anyio[trio]; extra == 'dev'
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: jsonschema>=4.23; extra == 'dev'
Requires-Dist: mypy>=1.9; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# Cortex SDK for Python

## Install

`pip install cortex-suite-sdk`

## Quick start

```python
import asyncio

from cortex_sdk import CortexClient


def on_message(msg):
    print(msg["type"], msg["payload"])


async def main():
    client = CortexClient(
        api_key="your-api-key",
        # auth_url="https://cortexsuite.app",  # optional override
        on_message=on_message,
    )
    await client.connect()
    await client.send_message(content="Hello")


asyncio.run(main())
```

## API

See the [full API reference](../docs/04_api_reference.md).
`auth_url` is optional; if omitted, the SDK uses its default auth base URL.

## Error handling

```python
from cortex_sdk import CortexClient, CortexError


def on_message(msg):
    if msg["type"] == "system::error":
        print("Runtime error:", msg["payload"]["code"])
        if msg["payload"].get("fatal"):
            pass  # handle unrecoverable session


client = CortexClient(
    api_key="your-api-key",
    on_message=on_message,
)

try:
    await client.connect()
except CortexError as err:
    if err.code in ("auth_invalid", "auth_refresh_failed"):
        pass  # prompt re-authentication
```

