Ir al contenido

Inicio rápido

  1. La clave pública de un proyecto tiene la forma pk_live_…. Es pública por diseño — va directo en tu HTML, de la misma manera que un Sentry DSN. Solo indica a qué proyecto pertenece una grabación; no puede leer nada de vuelta.

  2. Existen dos bundles. Elegí uno:

    <!-- network (con bodies), console, clicks, navigation — 6 KB gzip -->
    <script src="https://dbuger.dnh.ar/sdk/espejo.js" data-key="pk_live_..."></script>
    <!-- todo lo anterior + DOM replay via rrweb — 86 KB gzip -->
    <script src="https://dbuger.dnh.ar/sdk/espejo.dom.js" data-key="pk_live_..."></script>

    Son dos archivos separados, no uno detrás de un flag: un IIFE no puede dividirse en chunks, así que incluir rrweb “por las dudas” le costaría a todos 80 KB, incluyendo a quien solo quiere el log de red.

    Por defecto no se sube nada. El script mantiene un ring buffer en memoria con capacidad limitada y solo lo envía cuando llamás a report(). Agregá data-mode="always" para subir cada sesión en cambio — esa es la diferencia entre algo que podés dejar corriendo en producción y algo que quema tu bucket en una semana.

  3. La instancia iniciada automáticamente es window.espejo:

    const url = await espejo.report("Can't save the weighing");
    // → the URL of the uploaded session, or null if nothing was recording

    La grabación de pantalla necesita un gesto del usuario, así que llamala desde un click handler:

    button.addEventListener("click", async () => {
    await espejo.startVideo({ microphone: true });
    // ... user reproduces the bug ...
    await espejo.stopVideo();
    await espejo.report("Recorded the bug live");
    });

    Un botón flotante de “reportar un problema” se monta automáticamente a menos que pases data-button="off" (o button: 'off' al construir Espejo vos mismo).

  4. Una grabación es un directorio en el bucket:

    espejo/<projectId>/<yyyy-mm>/<sessionId>/
    manifest.json what this session is and what objects compose it
    events.json summary + network + console + interactions + navigation
    dom.jsonl.gz DOM replay events (dom mode)
    video.webm (video mode)

    La ruta del objeto siempre la construye el servidor — el browser nunca propone una clave, o podría sobreescribir la sesión de otro.

    Recuperala a través de la console API:

    Ventana de terminal
    curl https://dbuger.dnh.ar/v1/sessions/<id> \
    -H "Authorization: Bearer <jwt>"
  • Conceptos centrales — el bundle, la redacción, el almacenamiento y el modelo tenant → proyecto → clave.
  • Console API — la superficie HTTP completa: proyectos, claves, sesiones.
  • Servidor MCP — dejá que Claude Code o claude.ai lean tus grabaciones directamente.