Metadata-Version: 2.4
Name: orithos-prela
Version: 0.2.0
Summary: Fire-and-forget trace ingestion SDK for Orithos AI Agent Security
Author-email: Orithos <dev@orithos.com>
License: MIT
Project-URL: Homepage, https://orithos.com
Project-URL: Repository, https://github.com/nishkmg/TraceShield
Project-URL: Documentation, https://github.com/nishkmg/TraceShield/tree/staging/prela-sdk
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: ruff>=0.4.0; extra == "dev"

# Prela SDK

Fire-and-forget trace ingestion SDK for [TraceShield](https://traceshield.dev).

## Installation

```bash
pip install prela
```

## Quick Start

```python
from prela import Prela

prela = Prela(
    api_key="ts_ingest_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    endpoint="https://api.traceshield.example.com",
)

# Manual trace
prela.trace(
    input="What is my account balance?",
    output="I don't have access to account information.",
)

# OpenAI integration
from prela.integrations.openai import PrelaOpenAI
from openai import OpenAI

client = PrelaOpenAI(OpenAI(), prela)
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
)

# Before process exit
prela.shutdown()
```

## Design

- **Fire-and-forget**: Never blocks the agent's response path
- **Zero dependencies**: Only requires `httpx`
- **Batching**: Buffers traces and sends every 500ms or 50 traces
- **Resilient**: Drops traces on failure, logs warnings, never raises

## Telemetry

Send runtime events from your AI agent:

```python
import prela

# Configure once
prela.configure_telemetry(
    api_key="ts-key-...",
    org_id="org-...",
    agent_id="agent-...",
)

# Track events throughout your code
prela.track("llm_call", {"model": "gpt-4", "tokens": 150, "latency_ms": 1200})
prela.track("policy_violation", {"rule": "R-001", "input": "..."}, severity="warning")
prela.track("error", {"message": "Timeout connecting to API"}, severity="error")

# Flush before exit
prela.flush()
```

Events are batched (default: every 5s or 10 events) and sent to TraceShield's telemetry API.

## License

Private. All rights reserved.
