公開済みオートメーションへのすべての呼び出しは、呼び出し元のAPIキーからでも、Playgroundからでも、スケジュールトリガーからでも、Runを残します。Jinba Trailは、そのRunから再導出したサマリーを表示することはありません。Run Inspectorは、基盤となるBrowserflowエンジンが実行中に記録する追記専用のJournalそのものをレンダリングします。これはCLIのbrowserflow inspectが読むものと同じソースです。

実行履歴 — /runs

/runsは、組織全体を対象にしたセッションスコープの実行インデックスです。所有するすべてのオートメーションにわたるすべてのRunが新しい順で並び、状態ドット、オートメーション名、状態バッジ(成功 / 失敗 / 実行中 / 待機中)、タイムスタンプが表示されます。行を選択すると、そのRunのInspectorである/automations/[id]/runs/[runId]に移動します。
この一覧は、セッション認証されたGET /api/runsを読みます。これは、あなたのオートメーションを経由するJOINによってあなたの組織にスコープされます。エンジン自身の素の/runsではありません。この分離が重要な理由は、Jinba Trailとはのセキュリティノートを参照してください。
/runs/[id](パス内にオートメーションを含まない素のRun ID)も解決されます。ただし、これはレガシーリダイレクト専用です。RunをIDで検索し(run-ref idと基盤エンジンのrun idのどちらも受け付けます)、以下の詳細な/automations/[id]/runs/[runId] Inspectorへ転送します。新しく作るものでは、オートメーションスコープのURLに直接リンクしてください。素の形式は、古いブックマークやリンクを動かし続けるためだけに存在します。

Run Inspector — /automations/[id]/runs/[runId]

Runを開くと、上から下へ積み重なった4つのものが表示されます。ヘッダー、任意のライブブラウザーペイン、手順トレース、マスク済み出力、完全なJournalログです。

ヘッダー

状態ドットとバッジ、呼び出し元(API呼び出しの場合はapi_key:<id>)、所要時間、そしてオートメーションのライブなバージョン、つまりこのRunが実行された時点でのFlowのcontent-addressed digestが表示されます。Journalがまだストリーミング中の間は、ヘッダーの横にライブインジケーターが表示されます。Runが終端状態に達すると、このインジケーターは消えます。 このRunがlocator mismatch(記録された要素がライブページと一致しなくなった状態)で失敗した場合、ヘッダーのすぐ下にReRecordBannerが表示され、タスクを再記録するためにBuild/automations/[id]/build)へ直接ディープリンクします。完全な復旧フローは、トラブルシューティング: 「サイトが変わったため再記録する」を参照してください。

ライブブラウザー表示 — Runが進行中の間のみ

ライブCDPブラウザーペインは、オートメーションを実行している同じリクエストスレッドからのフレームを、オートメーションごとのインメモリフレームハブ経由で中継します。これは、サービスが同期ディスパッチJT_RUN_DISPATCHが未設定、または明示的にsync)で動作している場合にのみ機能します。JT_RUN_DISPATCH=queueでは、一致したRunは、このページのWebSocketを提供するAPIプロセスとメモリを共有しない別のワーカープロセスserver-worker.ts)で実行されます。そのため、キューディスパッチされたRunについて、このペインがフレームを受け取ることはありません。現在、このためのプロセス間リレーは配線されていません(オーサリングバスを反映したRedisベースのものは現実的な可能性ですが、まだ構築されていません)。キューディスパッチでデプロイする場合、それらのRunではこのペインが「接続中」のままになると考えてください。これは想定された挙動であり、バグではありません。このペインに依存する前に、デプロイがどのディスパッチモードで動作しているかをオーナーに確認してください。
Runの状態が実行中または待機中のときだけ、InspectorはGET /api/automations/[id]/run-liveへのWebSocketを開き、ライブブラウザーペインを表示します。これは、決定論的リプレイが操作している実際のChromiumセッションをフレーム単位でストリーミングしたものです。これはBuild Studioがオーサリングに使うものと同一のLiveBrowserコンポーネントで、ここではオンデマンドRunのために再利用されています。「シミュレーションではなく実際のブラウザーを見ている」という保証も同じです。Runが実行中/待機中を離れた瞬間に、ペインはアンマウントされ、ソケットも閉じられます。 このペインはRun IDではなく、オートメーションIDをキーにします。同期Runが完了するまで呼び出し元はRunのIDを知ることができず、その時点では見るものが残っていないためです。そのため、リレーはオートメーション配下に登録され、その特定のRunが終わると破棄されます。

手順トレース

同じJournalリプレイ上でディスパッチされる、手順ごとのライブタイムライン(トレース)です。各手順には、状態ドット、名前、そして失敗時にはDomainErrorコード、リトライ可能かどうか、不要部分を取り除いたエラーメッセージが表示されます。失敗コードがtool.browser.locatorで始まる手順は、上記のページレベルのReRecordBannerと一致する形で、locator mismatchとしてインライン表示されます。

出力

Runの記録済み出力が、投影されたrun.outputから整形済みJSONとしてレンダリングされます。Runが出力を生成しなかった場合は、単純な「出力は記録されていません」カードが表示されます。シークレットは常にマスクされます。シークレット由来の値は記録時に{secret:<slot>}プレースホルダーとしてJournalに記録され、平文が記録されることはありません。そのため、Inspector内のどのビューでも、どのロールでも、生の値を表示することはできません。この境界が上流でどのように強制されるかは、シークレットを参照してください。

完全なログ — 順序どおりの完全なJournal

最後のセクションは、上にある折りたたまれた手順ごとのロールアップではなく、順序どおりのJournal全体です(GitHub #56)。これは手順トレースと同じSSE replay-then-tail(GET /api/runs/:id/stream、組織スコープ、2本目の接続なし)からストリーミングされるため、トレースやヘッダーと同期が外れることはありません。トレースとは異なり、折りたたみビューが意図的に落としているすべてのエントリタイプが含まれます。
エントリ表示内容
run_startedflow digest + inputs digest(切り詰め)
step_started試行番号
step_succeededoutput digest
step_failedエラーコード、メッセージ、リトライ可能フラグ
step_skippedスキップの理由
effect_recorded冪等性キー → result digest
run_finished終端状態(成功 / 失敗 / キャンセル)
各行はイベントタイプごとに左側にアクセントが付きます(成功は緑、失敗は赤、スキップは控えめな色、記録済みeffectはアンバー)。そのため、長いJournalでも一目で走査できます。ストリームはJournalの先頭からリプレイし、終端のrun_finishedでのみ閉じるため、すでに完了したRunでInspectorを開いても完全なログが表示されます。Runをライブで見る場合に限定されません。
ログ内のすべての値は、インラインではなくdigestとして表示されます。出力本文、effectの結果、ロケータはすべて、基盤ストアへの参照です。これはエンジン自身のRun Inspectorが引いている境界と同じです。Jinba TrailのInspectorは、同一のJournalに対する、より薄いホスト型プロダクトのビューです。

関連

トラブルシューティング: サイトが変更された場合

locator mismatchによる失敗の意味と、再記録バナーが公開済みに戻す流れ。

Build Studio

ReRecordBannerがディープリンクする、記録 → レビュー → 公開のループ。

PlaygroundとAPIキー

このページが検査するオンデマンドRunをトリガーします。

Run Inspectorと可観測性(エンジン)

このページのInspectorがホスト型ビューとして扱う、基盤のBrowserflow Journalモデル。