# Integrar desde código

Actualmente no se distribuye un SDK público independiente de EditorBrain con un contrato de soporte propio. El repositorio tiene `packages/core` para validación/resolución y un cliente interno del CLI; sus nombres internos no son paquetes públicos que debas instalar.

Para una integración externa usa la [API HTTP](https://editorbrain.com/docs/api), un cliente [MCP](https://editorbrain.com/docs/mcp) o invoca el CLI como proceso. No importes archivos internos de `node_modules/editorbrain` como si fueran una API estable.

## Ejemplo Node.js: leer contexto

Este ejemplo hace una consulta, no genera ni gasta créditos creativos:

```js
const token = process.env.EDITORBRAIN_API_KEY;
if (!token) throw new Error('Falta la credencial en el entorno');
const response = await fetch('https://api.editorbrain.com/v1/workflow/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({projectId: 'mi-proyecto'}),
  redirect: 'error',
  signal: AbortSignal.timeout(15000)
});
const result = await response.json();
if (!response.ok) {
  throw new Error(`${response.status}: ${result.error?.code ?? 'request_failed'}`);
}
console.log(result.editorialSnapshot?.brandId);
```

Sustituye el ID por uno accesible a la credencial. No registres el token ni el contexto privado completo. Un timeout limita tu espera, no cancela automáticamente una operación iniciada por el servidor.

## Invocar el CLI

```js
import {execFile} from 'node:child_process';
import {promisify} from 'node:util';
const exec = promisify(execFile);
const {stdout} = await exec('editorbrain', [
  'workflow', 'check', '--project', 'mi-proyecto'
], {timeout: 15000, maxBuffer: 2 * 1024 * 1024});
const workflow = JSON.parse(stdout);
console.log(workflow.mode);
```

Usa argumentos separados y evita concatenar entrada del usuario en un comando de shell. Conserva el error/código de salida y acota el volumen de datos. No conviertas un fallo de red en un reintento automático de un gasto.

## Código del núcleo para colaboradores del repositorio

El núcleo TypeScript comparte validadores y resolución entre CLI y servicio. Las carpetas portables contienen marca, estilo, proyecto y hashes de fuentes. Si contribuyes al repositorio, consulta `packages/core`; si consumes el producto, utiliza interfaces públicas versionadas y no copies lógica de permisos o saldo al cliente.
