Metadata-Version: 2.4
Name: roboto-sai-sdk
Version: 0.6.0
Summary: Roboto SAI python SDK
Author-email: "Roboto SAI, LLC" <roberto@roboto-sai.com>
License-Expression: LicenseRef-RVM-ECOL-1.0
Project-URL: Homepage, https://github.com/Roboto-SAI-LLC/roboto-sai-sdk
Project-URL: Repository, https://github.com/Roboto-SAI-LLC/roboto-sai-sdk
Project-URL: Issues, https://github.com/Roboto-SAI-LLC/roboto-sai-sdk/issues
Keywords: roboto,sai,sdk,ai,python,api
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27.0
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: mypy>=1.10; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: pytest-mock>=3.0; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Provides-Extra: xai
Requires-Dist: xai-sdk>=1.6.1; extra == "xai"
Dynamic: license-file

# roboto-sai-sdk

Python SDK for the [Roboto SAI](https://roboto-sai.com) platform — the canonical client and source of truth for public model names, runtime profiles, and the frozen runtime contract.

## Install

```bash
pip install roboto-sai-sdk
```

Requires Python 3.10+.

## Quick Start

```python
from roboto_sai_sdk import RobotoSAI

client = RobotoSAI()  # uses SAI_API_KEY from env
result = client.send_message("Review this repository and propose the next refactor.")

print(result["model"])      # "roboto-sai"
print(result["subtitle"])   # "Core runtime"
print(result["text"])       # assistant reply
```

Stream mode:

```python
from roboto_sai_sdk import RobotoSAI

client = RobotoSAI(model="roboto-sai")
for event in client.stream("List five things to test in a new SDK release."):
    delta = ""
    if isinstance(event.data, dict) and event.data.get("type") == "response.output_text.delta":
        delta = event.data.get("delta") or ""
    print(delta, end="", flush=True)
```

## Public Model Surface

The SDK exposes four canonical models:

| Model | Mode | Use |
| --- | --- | --- |
| `roboto-sai` | single-agent | Core general intelligence |
| `roboto-sai-code-x` | single-agent | Code generation, debugging, architecture |
| `roboto-sai-cortex` | multi-agent | Deep orchestration with research capabilities |
| `roboto-sai-rovox` | single-agent (audio) | Voice/audio I/O — separate realtime path |

Use only canonical `roboto-sai-*` names. Legacy aliases (e.g. `roboto-sai-lightning`, `-heavy`, `-flex`) were removed in `0.2.0`.

## Inspect Runtime Profiles

```python
from roboto_sai_sdk import (
    DEFAULT_PUBLIC_MODEL,
    PUBLIC_MODEL_NAMES,
    get_runtime_profile,
)

print(DEFAULT_PUBLIC_MODEL)             # "roboto-sai"
print(sorted(PUBLIC_MODEL_NAMES))       # all 4 names
print(get_runtime_profile("roboto-sai"))
```

## Key Precedence

The SDK resolves API keys in this order:

1. Explicit `api_key=...` argument
2. `SAI_API_KEY` environment variable

Set `SAI_API_BASE_URL` to override the default base URL (`https://api.roboto-sai.com/v1`).

## Public API

The stable surface is **`roboto_sai_sdk.__all__`** (15 names; client, keys, and MCP are lazy-loaded on first access):

`RobotoSAI`, `SendMessageResult`, `DEFAULT_PUBLIC_MODEL`, `PUBLIC_MODEL_NAMES`, `RuntimeProfile`, `get_runtime_profile`, `normalize_public_model`, `get_public_runtime_contract`, `CONTRACT_VERSION`, `CONTRACT_LAST_UPDATED`, `get_mcp_config`, `SAI_API_KEY`, `resolve_api_keys`, `resolve_provider_api_key`, `hash_key`

```python
import roboto_sai_sdk

assert roboto_sai_sdk.__all__ == [
    "RobotoSAI",
    "SendMessageResult",
    "DEFAULT_PUBLIC_MODEL",
    "PUBLIC_MODEL_NAMES",
    "RuntimeProfile",
    "get_runtime_profile",
    "normalize_public_model",
    "get_mcp_config",
    "get_public_runtime_contract",
    "CONTRACT_VERSION",
    "CONTRACT_LAST_UPDATED",
    "SAI_API_KEY",
    "resolve_api_keys",
    "resolve_provider_api_key",
    "hash_key",
]
```

Voice/audio (`roboto-sai-rovox`) requires the realtime integration — `send_message` and `stream` raise `NotImplementedError` for that model. A future `RobotoSAIVoice` client will land in a separate release.

## Repository

Source code, examples, and full release notes: <https://github.com/Roboto-SAI-LLC/roboto-sai-sdk>

## License

Proprietary. See LICENSE in the repository.
