Metadata-Version: 2.4
Name: meteor-ia
Version: 0.1.0
Summary: SDK oficial de Python para la API de Meteor — infraestructura agéntica como servicio.
Project-URL: Homepage, https://developers.meteor.com.co
Project-URL: Documentation, https://developers.meteor.com.co
Project-URL: Repository, https://github.com/met-claude/Met
Author: Meteor
License: MIT
Keywords: agentic,agents,ai,meteor,sdk
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# meteor-ia — SDK oficial de Python para Meteor

Infraestructura agéntica como servicio. Ejecutá tus Mets, gestioná el CRM,
integraciones MCP y más, por código.

> Server-side only: tu API key `met_*` es secreta. Nunca la expongas en el browser.

## Instalación

```bash
pip install meteor-ia
```

Sin dependencias de runtime (solo la stdlib).

## Uso

```python
import os
from meteor_ia import Met

met = Met(os.environ["MET_API_KEY"], workspace_id=7)

# Ejecutar un Met y esperar el resultado
run = met.runs.create("Resume los leads de hoy", met="ventas")
print(run["output"])
print(run["energy"])  # breakdown de Energía del run

# Streaming de eventos
for event, data in met.runs.stream("Hola"):
    print(event, data)

# CRM
for contact in met.contacts.iterate():
    print(contact["id"], contact.get("name"))
```

### Manejo de errores

```python
from meteor_ia import MetRateLimitError, MetAuthError

try:
    met.runs.create("...")
except MetRateLimitError as e:
    print("esperá", e.retry_after, "segundos")
except MetAuthError:
    print("key inválida")
```

Jerarquía: `MetError` → `MetAuthError` (401), `MetInvalidRequestError`
(400/403/404/409), `MetRateLimitError` (429, con `retry_after`), `MetAgentError`
(el Met falló), `MetApiError` (5xx).

### Webhooks salientes (Meteor → tu servidor)

Verificá la firma HMAC de cada entrega antes de procesarla:

```python
from meteor_ia import construct_event, MetSignatureVerificationError

# En tu handler HTTP (Flask/FastAPI/…):
try:
    event = construct_event(raw_body, signature_header, os.environ["MET_WEBHOOK_SECRET"])
except MetSignatureVerificationError:
    return ("bad signature", 400)

if event["type"] == "run.completed":
    ...
```

### Partners

Con una key de partner (`partner:*`):

```python
met.partner.clients.list()
met.partner.commissions.list(status="PAID")
met.partner.payouts.summary()
```

## Auto-paginación

Los endpoints de lista devuelven `{ "data": [...], "has_more": bool }`. Usá
`.iterate()` para recorrer todo transparentemente (cursor opaco `starting_after`).

## Reintentos

429 y 5xx se reintentan con backoff exponencial (default 2 intentos, respeta
`Retry-After`). Los POST llevan `Idempotency-Key` automático para no duplicar.
