
Il toolkit AI per costruire automazioni di browser affidabili
Libretto è un toolkit per costruire integrazioni web robuste. Fornisce al tuo agente di codifica un browser live e una CLI efficiente in termini di token per:
Noi di Saffron Health abbiamo creato Libretto per aiutarci a mantenere le nostre integrazioni browser con i software sanitari comuni. Lo rendiamo open-source in modo che altri team possano fare lo stesso più facilmente.
https://github.com/user-attachments/assets/9b9a0ab3-5133-4b20-b3be-459943349d18
# Aggiungi Libretto al tuo progetto. Richiede Node.js e npm.
npm install libretto
# Configurazione iniziale: installa le skill e scarica Chromium
npx libretto setup
# Verifica lo stato del workspace in qualsiasi momento
npx libretto status
setup crea la directory .libretto/, installa le skill dell'agente e scarica Chromium a meno che non si passi --skip-browsers.
Libretto è progettato per essere utilizzato come skill tramite il tuo agente di codifica. Ecco alcuni esempi di prompt:
Usa la skill Libretto. Vai su LinkedIn e recupera i primi 10 post per contenuto, autore, numero di reazioni, i primi 25 commenti e le prime 25 condivisioni.
Il tuo agente di codifica aprirà una finestra per farti accedere a LinkedIn, e poi inizierà automaticamente a esplorare.
Ti mostrerò un flusso di lavoro nell'EHR eClinicalWorks per ottenere l'ID assicurativo principale di un paziente. Usa la skill Libretto per trasformarlo in uno script Playwright che prende nome e data di nascita del paziente come input per restituire l'ID assicurativo. L'URL è ...
Libretto può leggere le azioni che esegui nel browser, quindi puoi eseguire un flusso di lavoro e poi chiedergli di ricostruire il flusso usando le tue azioni.
Abbiamo uno script browser in ./integration.ts che automatizza l'accesso a Hacker News e il recupero dei primi 10 post. Convertilo in script di rete diretti. Usa la skill Libretto.
Libretto può leggere le richieste di rete dal browser, che può usare per fare reverse engineering dell'API e creare uno script che chiama direttamente quelle richieste. Effettuare chiamate API direttamente è più veloce e più affidabile dell'automazione dell'interfaccia utente. Puoi anche chiedere a Libretto di condurre un'analisi di sicurezza che esamina le richieste per individuare cookie di sicurezza comuni, in modo da capire se un approccio tramite richieste di rete sarà sicuro.
Abbiamo uno script browser in ./integration.ts che dovrebbe andare su Availity ed eseguire un controllo di eleggibilità per un paziente. Ma quando lo eseguo ottengo un errore di selettore rotto. Riparalo. Usa la skill Libretto.
Gli agenti possono utilizzare Libretto per riprodurre il fallimento, mettere in pausa il flusso di lavoro in qualsiasi punto, ispezionare la pagina live e correggere i problemi, tutto in modo autonomo.
Puoi anche usare Libretto direttamente dalla riga di comando. Tutti i comandi accettano --session <nome> per puntare a una sessione specifica.
npx libretto open <url> # avvia il browser e apre un URL
npx libretto run ./integration.ts --headless # esegue un flusso di lavoro e chiude al successo
npx libretto run ./integration.ts --headless --stay-open-on-success # mantiene aperta un'esecuzione riuscita per ispezione
npx libretto snapshot --session <nome> # cattura uno screenshot e un albero di accessibilità compatto
npx libretto exec "<codice>" # esegue Playwright TypeScript contro la pagina aperta
npx libretto close # chiude il browser
Le sessioni run sono ispezionabili tramite gli stessi comandi basati su demone delle sessioni open. Le esecuzioni riuscite chiudono il browser per impostazione predefinita; passa --stay-open-on-success per mantenere il browser aperto per pages, snapshot e exec. I flussi di lavoro falliti o messi in pausa mantengono il browser aperto in modo da poter ispezionare lo stato esatto della pagina prima di correggere o riprendere il flusso.
Esegui npx libretto help per l'elenco completo dei comandi.
Tutti gli stati di Libretto risiedono in una directory .libretto/ nella radice del progetto. Consulta la documentazione di configurazione per i dettagli su file di configurazione, sessioni e profili.
Libretto registra la telemetria CLI per capire l'utilizzo della CLI e aiutarci a prioritizzare i miglioramenti. Ogni comando risolto può inviare solo un ID di installazione, timestamp, nome dell'evento del comando (ad es. libretto run), booleano di errore, versione del pacchetto, canale di build (node_modules, source o unknown) e, quando si è connessi a Libretto Cloud, l'ID utente cloud configurato. Libretto non invia argomenti dei comandi, URL, percorsi di progetto, cookie di sessione, chiavi API, messaggi di errore o dettagli, o email.
L'ID di installazione è memorizzato nel file di telemetria in ~/.libretto/telemetry.json. L'implementazione risiede in packages/libretto/src/cli/core/telemetry.ts.
Per disabilitare la telemetria, imposta LIBRETTO_TELEMETRY_DISABLED=1, imposta DO_NOT_TRACK=1, esegui con CI=1, o modifica ~/.libretto/telemetry.json e imposta "enabled": false.
Unisciti al nostro Discord per entrare in contatto con altri sviluppatori, ottenere aiuto e condividere ciò che hai costruito:
Per discussioni più lunghe, vai su GitHub Discussions. Hai trovato un bug? Apri una segnalazione.
Licenza MIT — utilizzala liberamente in progetti commerciali e open-source.
Per lo sviluppo locale in questo repository:
pnpm i
pnpm build
pnpm type-check
pnpm test
Struttura del sorgente:
packages/libretto/src/cli/ — comandi CLIpackages/libretto/src/runtime/ — runtime del browser (rete, ripristino, download)packages/libretto/src/shared/ — utilità condivise (configurazione, client LLM, logging, stato)packages/libretto/test/ — file di test (*.spec.ts)packages/libretto/README.template.md — sorgente di verità per i README del repository e dei pacchettipackages/libretto/skills/libretto/ — sorgente di verità per la skill LibrettoEsegui pnpm sync:mirrors dopo aver modificato packages/libretto/README.template.md o qualsiasi cosa in packages/libretto/skills/libretto/.
Per verificare che i README generati, i mirror delle skill e i metadati delle versioni delle skill siano sincronizzati senza correggerli, esegui pnpm check:mirrors. Per rilasciare, esegui pnpm prepare-release.
[!NOTE] Questo è un progetto in fase iniziale in fase di sviluppo attivo. Le API potrebbero cambiare prima della versione 1.0. Raccomandiamo di fissare versioni specifiche in produzione.
Costruito dal team di Saffron Health.