
El kit de herramientas de IA para crear automatizaciones de navegador fiables
<!-- Generado desde packages/libretto/README.template.md por `pnpm sync:mirrors`. No editar directamente. --> <p align="center"> <img src="https://assets.kitploit.com/production/public/readmes/13487/c91ba69059e621bffedef091443b5bebcc6f4115390931ce2bc0f760dd84f045.png" alt="Libretto" /> </p> # Libretto [](https://www.npmjs.com/package/libretto) [](https://opensource.org/licenses/MIT) [](https://github.com/saffron-health/libretto/discussions) [](https://discord.gg/NYrG56hVDt) Libretto es un conjunto de herramientas para construir integraciones web robustas. Le proporciona a tu agente de codificación un navegador en vivo y una CLI eficiente en tokens para: - Inspeccionar páginas en vivo con mínimo overhead de contexto - Capturar tráfico de red para realizar ingeniería inversa de las API del sitio - Grabar acciones del usuario y reproducirlas como scripts de automatización - Depurar flujos de trabajo rotos de forma interactiva contra el sitio real En [Saffron Health](https://saffron.health) construimos Libretto para ayudarnos a mantener nuestras integraciones de navegador con software sanitario común. Lo estamos abriendo en código abierto para que otros equipos tengan una tarea más fácil al hacer lo mismo. https://github.com/user-attachments/assets/9b9a0ab3-5133-4b20-b3be-459943349d18 ### Enlaces rápidos - Sitio web: [libretto.sh](https://libretto.sh) - Documentación: [libretto.sh/docs](https://libretto.sh/docs) - Repositorio: [github.com/saffron-health/libretto](https://github.com/saffron-health/libretto) - Discord: [discord.gg/NYrG56hVDt](https://discord.gg/NYrG56hVDt) ## Instalación ```bash # Añade Libretto a tu proyecto. Requiere Node.js y npm. npm install libretto # Inicio por primera vez: instalar skills y descargar Chromium npx libretto setup # Verificar el estado del espacio de trabajo en cualquier momento npx libretto status ``` `setup` crea el directorio `.libretto/`, instala las skills del agente y descarga Chromium a menos que pases `--skip-browsers`. ## Casos de uso Libretto está diseñado para ser usado como una skill a través de tu agente de codificación. Aquí hay algunos ejemplos de prompts: ### Generación de scripts de una sola vez > Usa la skill de Libretto. Ve a LinkedIn y extrae los primeros 10 posts: contenido, quién lo publicó, número de reacciones, los primeros 25 comentarios y los primeros 25 republicaciones. Tu agente de codificación abrirá una ventana para que inicies sesión en LinkedIn y luego comenzará a explorar automáticamente. ### Construcción interactiva de scripts > Te voy a mostrar un flujo de trabajo en el EHR de eclinicalworks para obtener el ID del seguro principal de un paciente. Usa la skill de libretto para convertirlo en un script de playwright que tome el nombre del paciente y su fecha de nacimiento como entrada para devolver el ID del seguro. La URL es... Libretto puede leer las acciones que realizas en el navegador, por lo que puedes ejecutar un flujo de trabajo y luego pedirle que use tus acciones para reconstruirlo. ### Convertir automatización de navegador a peticiones de red > Tenemos un script de navegador en ./integration.ts que automatiza ir a Hacker News y obtener los primeros 10 posts. Conviértelo a scripts de red directos. Usa la skill de Libretto. Libretto puede leer las peticiones de red desde el navegador, lo que puede usar para hacer ingeniería inversa de la API y crear un script que llame directamente a esas peticiones. Hacer llamadas a la API directamente es más rápido y más fiable que la automatización de la interfaz de usuario. También puedes pedirle a Libretto que realice un análisis de seguridad que examine las peticiones en busca de cookies de seguridad comunes, para que puedas entender si un enfoque basado en peticiones de red será seguro. ### Reparar integraciones rotas > Tenemos un script de navegador en ./integration.ts que se supone que debe ir a Availity y realizar una verificación de elegibilidad para un paciente. Pero al ejecutarlo obtengo un error de selector roto. Arrégialo. Usa la skill de Libretto. Los agentes pueden usar Libretto para reproducir el fallo, pausar el flujo de trabajo en cualquier punto, inspeccionar la página en vivo y corregir problemas, todo de forma autónoma. ### Uso desde la CLI También puedes usar Libretto directamente desde la línea de comandos. Todos los comandos aceptan `--session <nombre>` para apuntar a una sesión específica. ```bash npx libretto open <url> # lanzar navegador y abrir una URL npx libretto run ./integration.ts --headless # ejecutar un flujo de trabajo y cerrar al tener éxito npx libretto run ./integration.ts --headless --stay-open-on-success # mantener la ejecución exitosa inspeccionable npx libretto snapshot --session <nombre> # capturar una captura de pantalla y un árbol de accesibilidad compacto npx libretto exec "<código>" # ejecutar Playwright TypeScript contra la página abierta npx libretto close # cerrar el navegador ``` Las sesiones `run` son inspeccionables a través de los mismos comandos respaldados por un demonio que las sesiones `open`. Las ejecuciones exitosas cierran el navegador por defecto; pasa `--stay-open-on-success` para mantener el navegador abierto para `pages`, `snapshot` y `exec`. Los flujos de trabajo fallidos o pausados mantienen el navegador abierto para que puedas inspeccionar el estado exacto de la página antes de corregir o reanudar el flujo. Ejecuta `npx libretto help` para obtener la lista completa de comandos. ## Configuración Todo el estado de Libretto reside en un directorio `.libretto/` en la raíz de tu proyecto. Consulta la [documentación de configuración](https://libretto.sh/docs/understand-libretto/configuration) para obtener detalles sobre archivos de configuración, sesiones y perfiles. ## Telemetría Libretto registra telemetría de la CLI para ayudar a comprender el uso de la CLI y priorizar mejoras. Cada comando resuelto puede enviar únicamente un ID de instalación, marca de tiempo, nombre del evento del comando como `libretto run`, booleano de error, versión del paquete, canal de compilación (`node_modules`, `source` o `unknown`) y, cuando se ha iniciado sesión en Libretto Cloud, el ID de usuario de la nube configurado. Libretto no envía argumentos de comandos, URL, rutas de proyecto, cookies de sesión, claves de API, mensajes de error ni detalles, ni correos electrónicos. El ID de instalación se almacena en el archivo de telemetría en `~/.libretto/telemetry.json`. La implementación reside en [`packages/libretto/src/cli/core/telemetry.ts`](https://github.com/saffron-health/libretto/blob/main/packages/libretto/src/cli/core/telemetry.ts). Para deshabilitar la telemetría, establece `LIBRETTO_TELEMETRY_DISABLED=1`, establece `DO_NOT_TRACK=1`, ejecuta con `CI=1`, o edita `~/.libretto/telemetry.json` y establece `"enabled": false`. ## Únete a la comunidad Únete a nuestro Discord para conectar con otros desarrolladores, obtener ayuda y compartir lo que has construido: [](https://discord.gg/NYrG56hVDt) Para hilos más largos, dirígete a [Discusiones de GitHub](https://github.com/saffron-health/libretto/discussions). ¿Encontraste un error? [Abre un issue](https://github.com/saffron-health/libretto/issues/new). ## Licencia [Licencia MIT](https://github.com/saffron-health/libretto/blob/main/LICENSE) — úsalo libremente en proyectos comerciales y de código abierto. ## Desarrollo Para el desarrollo local en este repositorio: ```bash pnpm i pnpm build pnpm type-check pnpm test ``` Estructura del código fuente: - `packages/libretto/src/cli/` — comandos de la CLI - `packages/libretto/src/runtime/` — runtime del navegador (red, recuperación, descargas) - `packages/libretto/src/shared/` — utilidades compartidas (configuración, cliente LLM, registro, estado) - `packages/libretto/test/` — archivos de prueba (`*.spec.ts`) - `packages/libretto/README.template.md` — fuente de verdad para el repositorio y los READMEs de los paquetes - `packages/libretto/skills/libretto/` — fuente de verdad para la skill de Libretto Ejecuta `pnpm sync:mirrors` después de editar `packages/libretto/README.template.md` o cualquier cosa bajo `packages/libretto/skills/libretto/`. Para verificar que los READMEs generados, los espejos de las skills y los metadatos de versión de las skills están sincronizados sin corregirlos, ejecuta `pnpm check:mirrors`. Para publicar, ejecuta `pnpm prepare-release`. --- > [!NOTE] > Este es un proyecto en etapa temprana bajo desarrollo activo. Las APIs pueden cambiar antes de la versión 1.0. Recomendamos fijar versiones específicas en producción. Construido por el equipo de [Saffron Health](https://saffron.health).