
libretto v0.6.39
AIツールキット - 信頼性の高いブラウザ自動化を構築するための
Libretto
Libretto は、堅牢なウェブインテグレーションを構築するためのツールキットです。コーディングエージェントにライブブラウザとトークン効率の良い CLI を提供し、以下のことを可能にします。
- 最小限のコンテキストオーバーヘッドでライブページを検査
- ネットワークトラフィックをキャプチャしてサイト API をリバースエンジニアリング
- ユーザーの操作を記録し、自動化スクリプトとして再生
- 実際のサイト上でインタラクティブに壊れたワークフローをデバッグ
私たち Saffron Health は、一般的な医療ソフトウェアへのブラウザインテグレーションを維持するために Libretto を構築しました。他のチームも同じことを容易に行えるように、オープンソース化しています。
https://github.com/user-attachments/assets/9b9a0ab3-5133-4b20-b3be-459943349d18
クイックリンク
- ウェブサイト: libretto.sh
- ドキュメント: libretto.sh/docs
- リポジトリ: github.com/saffron-health/libretto
- Discord: discord.gg/NYrG56hVDt
インストール
# Add Libretto to your project. Requires Node.js and npm.
npm install libretto
# First-time onboarding: install skills and download Chromium
npx libretto setup
# Check workspace readiness at any time
npx libretto status
setup は .libretto/ ディレクトリを作成し、エージェントスキルをインストールし、--skip-browsers を渡さない限り Chromium をダウンロードします。
使用例
Libretto はコーディングエージェントを通じてスキルとして使用されるように設計されています。以下にいくつかのプロンプト例を示します。
ワンショットスクリプト生成
Libretto スキルを使ってください。LinkedIn にアクセスし、最初の 10 件の投稿について、内容、投稿者、リアクション数、最初の 25 件のコメント、最初の 25 件のリポストをスクレイピングしてください。
コーディングエージェントは、LinkedIn にログインするためのウィンドウを開き、その後自動的に探索を開始します。
インタラクティブスクリプト構築
eclinicalworks EHR で患者のプライマリ保険 ID を取得するワークフローをお見せします。libretto スキルを使って、それを患者名と生年月日を入力として保険 ID を返す Playwright スクリプトに変換してください。URL は ...
Libretto はブラウザ上で実行する操作を読み取ることができるため、ワークフローを実行し、その操作を使ってワークフローを再構築するよう依頼できます。
ブラウザ自動化をネットワークリクエストに変換
./integration.ts に Hacker News にアクセスして最初の 10 件の投稿を取得する自動化ブラウザスクリプトがあります。代わりに直接ネットワークスクリプトに変換してください。Libretto スキルを使ってください。
Libretto はブラウザからネットワークリクエストを読み取ることができ、それを利用して API をリバースエンジニアリングし、それらのリクエストを直接呼び出すスクリプトを作成できます。API を直接呼び出すほうが UI 自動化よりも高速で信頼性が高いです。また、Libretto にセキュリティ分析を依頼し、リクエストに含まれる一般的なセキュリティクッキーを分析することで、ネットワークリクエストのアプローチが安全かどうかを判断することもできます。
壊れたインテグレーションの修正
./integration.ts に Availity にアクセスして患者の適格性確認を実行するブラウザスクリプトがあります。しかし、実行時にセレクタエラーが発生します。修正してください。Libretto スキルを使ってください。
エージェントは Libretto を使用して障害を再現し、ワークフローを任意の時点で一時停止し、ライブページを検査し、問題を修正することができます。これらすべてを自律的に行います。
CLI の使用法
Libretto はコマンドラインから直接使用することもできます。すべてのコマンドは --session <name> を受け付け、特定のセッションを対象とします。
npx libretto open <url> # launch browser and open a URL
npx libretto run ./integration.ts --headless # run a workflow and close on success
npx libretto run ./integration.ts --headless --stay-open-on-success # keep a successful run inspectable
npx libretto snapshot --session <name> # capture a screenshot and compact accessibility tree
npx libretto exec "<code>" # execute Playwright TypeScript against the open page
npx libretto close # close the browser
run セッションは open セッションと同じデーモンによってバックアップされたコマンドで検査可能です。成功した実行はデフォルトでブラウザを閉じます。--stay-open-on-success を渡すと、pages、snapshot、exec のためにブラウザを開いたままにします。失敗または一時停止したワークフローはブラウザを開いたままにするため、修正や再開の前に正確なページ状態を検査できます。
全コマンドの一覧は npx libretto help を実行してください。
設定
すべての Libretto の状態は、プロジェクトルートの .libretto/ ディレクトリに保存されます。設定ファイル、セッション、プロファイルの詳細については、設定ドキュメント を参照してください。
テレメトリー
Libretto は CLI のテレメトリーを記録し、CLI の使用状況を把握して改善の優先順位付けに役立てます。解決された各コマンドは、インストール ID、タイムスタンプ、コマンドイベント名(libretto run など)、エラーの有無、パッケージバージョン、ビルドチャネル(node_modules、source、または unknown)、および Libretto Cloud にサインインしている場合は設定されたクラウドユーザー ID のみを送信できます。Libretto はコマンド引数、URL、プロジェクトパス、セッションクッキー、API キー、エラーメッセージや詳細、電子メールを送信しません。
インストール ID は ~/.libretto/telemetry.json のテレメトリーファイルに保存されます。実装は packages/libretto/src/cli/core/telemetry.ts にあります。
テレメトリーを無効にするには、LIBRETTO_TELEMETRY_DISABLED=1 を設定するか、DO_NOT_TRACK=1 を設定するか、CI=1 で実行するか、~/.libretto/telemetry.json を編集して "enabled": false に設定してください。
コミュニティに参加
Discord に参加して、他の開発者と交流し、助けを得たり、あなたが構築したものを共有しましょう。
より長い議論は GitHub Discussions をご利用ください。バグを見つけましたか? Issue を開く。
ライセンス
MIT ライセンス — 商用およびオープンソースプロジェクトで自由に使用できます。
開発
このリポジトリでのローカル開発:
pnpm i
pnpm build
pnpm type-check
pnpm test
ソースレイアウト:
packages/libretto/src/cli/— CLI コマンドpackages/libretto/src/runtime/— ブラウザランタイム(ネットワーク、リカバリ、ダウンロード)packages/libretto/src/shared/— 共有ユーティリティ(設定、LLM クライアント、ロギング、状態)packages/libretto/test/— テストファイル(*.spec.ts)packages/libretto/README.template.md— リポジトリおよびパッケージ README のソースpackages/libretto/skills/libretto/— Libretto スキルのソース
packages/libretto/README.template.md または packages/libretto/skills/libretto/ 以下のファイルを編集した後は、pnpm sync:mirrors を実行してください。
生成された README、スキルミラー、スキルバージョンメタデータが同期しているかどうかを確認する(修正は行わない)には、pnpm check:mirrors を実行します。リリースするには、pnpm prepare-release を実行します。
[!NOTE] これは活発に開発中の初期段階のプロジェクトです。API はバージョン 1.0 より前に変更される可能性があります。本番環境では特定のバージョンを固定することをお勧めします。
Saffron Health チームによって構築されました。