Skip to main content
Todo error de la API de Driftless (ya sea que lo alcances por la CLI, el servidor MCP o directamente) vuelve como el mismo sobre JSON. Un agente debería ramificar según el code legible por máquina, no parsear el message humano.

El sobre

retryable es honesto: la CLI reintenta un GET una vez ante un fallo transitorio, pero nunca reenvía una escritura, y nunca reintenta un 4xx. Si construyes tu propio cliente, haz lo mismo.

Por qué un code siquiera

Una entrada incorrecta no debería llegar al agente como un 500 opaco. Dos capas lo garantizan:
  1. La validación rechaza un enum inválido (status, visibility) con un 400 a nivel de campo antes de que toque la base de datos.
  2. Un traductor de errores de Postgres captura cualquier violación de restricción que se escape y la convierte en un 4xx codificado, nunca en un 500 genérico.
Después de esas dos, un 500 significa lo que debe: un bug real o una caída. Ese es también el único momento en que retryable es true.

Catálogo de códigos

Validación y entrada

Acceso e identidad

Gobernanza y conflictos

Saldo comercial

Estos errores incluyen el estado actual en usage y una next_action accionable para hablar con ventas. Son definitivos (retryable: false).

Servidor

Observabilidad

Cada error capturado también se emite a PostHog (request_failed del lado del servidor, command_failed desde la CLI) con code, status_code y endpoint como propiedades, de modo que la superficie de errores es un único mapa consultable, segmentable por tipo y endpoint en vez de texto libre. El texto de la excepción nunca sale del log — se une por request_id.