# Vídeo nativo de Vids y NotebookLM; estado de Flow Music

La API y el MCP usan el navegador autorizado del servidor y su conexión compartida. Un agente externo no abre Chrome, perfiles, clientes DevTools ni conexiones de reparación. Las herramientas públicas conservan la autenticación y la propiedad de cada usuario.

## Disponibilidad antes de enviar

Consulta `auroflow_capabilities {area:"native_media"}` (`GET /v1/native-media/capabilities`). La activación del adaptador no confirma la cuenta, la cuota ni el coste de una generación concreta. Cada primer envío exige el control nativo vivo de coste cero y no dispone de alternativa de pago.

- `vids_video`: clip nativo Omni, horizontal 16:9, 720p y objetivo nativo de 10 segundos. Sólo prompt de texto; no acepta ingredientes o una duración/aspecto arbitrarios en este contrato.
- `notebook`: vídeo explicativo o corto en español a partir de una fuente literal propia, de 50 a 40.000 caracteres. Cada trabajo prepara un cuaderno independiente. La duración la determina NotebookLM; no se promete una duración exacta. La cuota incluida de NotebookLM es independiente de los créditos de Flow.
- `flow_music`: no está habilitado para generación pública a cero créditos mientras no se disponga de una cotización nativa exactamente 0. Los créditos diarios o incluidos en una suscripción no equivalen a consumir cero créditos. No se sustituye automáticamente por música de Vids. La música de Vids tiene su contrato independiente: `auroflow_plan_music` y `auroflow_generate_music_zero`.

## Petición y primer envío

Usa un ID `nm-` estable. El plan no genera, no guarda un trabajo ni consulta el navegador:

```json
{
  "id": "nm-mi-video-001",
  "provider": "vids_video",
  "prompt": "Una esfera de cristal sobre una mesa, luz de amanecer, cámara lateral suave. Sonido de brisa. Sin texto, rótulos ni subtítulos.",
  "options": {},
  "approved": true,
  "cost_max": 0
}
```

1. `auroflow_plan_native_media({"request": ...})` / `POST /v1/native-media/plan`.
2. Conserva la intención y su ID. `approved:true` requiere autorización humana real; el plan no la concede.
3. Envía **una vez** `auroflow_generate_native_media_zero({"request": ...})` / `POST /v1/native-media/jobs`.
4. Consulta `auroflow_get({"id":"nm-mi-video-001"})` / `GET /v1/native-media/jobs/{id}`. Usa esperas crecientes de 5 a 30 segundos. NotebookLM puede tardar más de 30 minutos; una espera no autoriza otro envío.

Para NotebookLM cambia `provider` a `notebook`, añade `source_text` literal y usa `options:{"format":"brief"}` o `{"format":"overview"}`. No envíes URLs de cuadernos, rutas del servidor, cuentas, selectores o scripts. El sistema no descarga URLs arbitrarias del cliente como fuentes.

`auroflow_list {kind:"native_media"}` / `GET /v1/native-media/jobs` lista únicamente los trabajos de tu cuenta. La cola persiste en el servidor y aplica prioridad de la cuenta; el payload no puede elevarla. Cerrar la web no cancela la recogida.

## Incertidumbre y recuperación

Un timeout o `unconfirmed` obliga a consultar **el mismo ID**. No cambies el ID, no crees otro documento y no repitas Generate.

- `auroflow_recover({"id":"nm-mi-video-001","cost_max":0})` / `POST /v1/native-media/jobs/{id}/recover` recoge únicamente el trabajo existente. No prepara ni genera otra vez.
- `auroflow_recover {action:"resume_preparation"}` / `POST /v1/native-media/jobs/{id}/resume-preparation` sirve exclusivamente para una primera preparación detenida tras corregir su causa. Antes de continuar, el adaptador debe probar la ausencia de intención de envío, confirmación, incertidumbre o reserva, y verificar la misma cuenta, documento y petición. Nunca reenvía un trabajo cuyo resultado sea incierto.

Una descarga incierta conserva su intención. El collector no vuelve a pulsar Descargar ni elige arbitrariamente entre dos archivos nuevos.

## Entrega verificada

`completed` incluye `output.download_url`, MIME, bytes, SHA-256 y datos técnicos del archivo. La URL `/v1/native-media/jobs/{id}/file` exige la misma autenticación y admite rangos HTTP. No se publican rutas del servidor, cuentas del navegador o enlaces privados del proveedor.

Para acreditar el coste observado, exige `cost.actual_verified:true`, `cost.basis:"verified_native_submit_receipt"` y ceros en `auro_credits`, `google_credits` y `cash`. Mientras sólo exista la política máxima, `actual_verified` permanece en falso. Un recibo contradictorio se bloquea.

El cliente original de este Mac puede guardar la entrega sin copiar su credencial:

```sh
python3 scripts/auroflow_agent.py native-media nm-mi-video-001 /ruta/absoluta/resultado.mp4
```

La entrega técnica exige correlación con el resultado del proveedor, un único archivo, decodificación completa, duración y pistas válidas, y hash de la copia exacta entregada. Esto no certifica una revisión humana de imagen, voz, acento o contenido.
