最小限のFlowを作成する
Flowは一度だけ書きます。ここでは2つのサーフェスで示します。HTTP経由で
JSONを取得し、それを純粋なtransformで整形する2手順のFlowです。どちらも、
同じcontent-addressed データエッジ
sha256 digestを持つ同一の正規化されたFlowSpecに
コンパイルされます。そのdigestこそがバージョンです。fetch → shape は、c.steps.fetch.output への参照から
推論されます。needs を手で書くことはほとんどありません。c.now は
注入されたクロックで、リプレイ時にも決定論的なので、タイムスタンプまで
再現可能です。CLIで実行する
日常的なinner loopは、1秒未満で、かつ破壊的でないことを意図しています。
まず型チェックしてdigestを表示し、次に
--dry で実行を計画し、その後に
実際に実行します。--checkは純粋です。型チェックしてdigestを表示するため、CIや pre-commitに最適です。固定されたToolの解決以外でネットワークに 触れることはありません。--dryは実行を計画します。DAGを解決し、入力を検証し、どの手順が 実行されるはずか、どのeffectが実行されるはずかを、実際には effectを実行せずに表示します。
実行を検査してリプレイする
すべての実行はcontent-addressedで、リプレイ可能です。最新の実行を見つけ、
そのタイムラインを時間移動し、オフラインでリプレイできるポータブルな
Journalを記録します。記録されたJournalは、ポータブルで実行可能なfixtureです。
--verify は
hermeticに再実行し、すべての手順の出力がまだ一致することをassertします。
Toolのアップグレードで挙動が変わった場合、リプレイは最初に分岐した
手順ではっきり失敗します。これにより「このリファクタリングで何か
変わったか?」を1コマンドの決定論的チェックに変え、ライブ依存なしで
CI上でFlowをテスト可能にします。browserflow inspect <run-id> --step shape は、単一手順のマスク済み入力と
Journal frameに直接移動します。シークレットはすべてのストリームで
マスクされます。ログ、inspect、エラー、--dry の計画も同様です。同じFlowを別の方法で起動する
同じFlowSpecは、どのLauncher上でも変更なしに実行されます。変わるのは、
環境に対してcapabilityをどう配線するかだけです。Bun上のHono経由で、
FlowをHTTPエンドポイントとして提供します。公開された各Flowは Flowの結果は、どのfrontが呼び出したかには依存しません。同じRider、同じ
digest、同じ結果です。その不変性がプロダクトです。
POST /flows/:name/runs になります。同じFlowは、
MCPサーバーとしてagent ecosystemに公開することもできます。Flowの型付き
inputs は、MCPツールの入力スキーマに自動的になります。次に進む場所
コンセプトとドメインモデル
Flow、Step、Tool、Pack、Run、Registry、Launcher。以降のドキュメントが
土台とする語彙です。
オーサリング: SDKとYAML
両方のサーフェス、式言語、制御フロー、そして1つのIRを通じてそれらが
どのように往復変換されるかを詳しく説明します。
CLIリファレンス
完全なコマンドマップ、inner loop、ワークフローとしての再現性、
そして安全なデフォルト。
Launcherとポータビリティ
CLI、REST、MCP、cron、CI、container、edge。1つのエンジン、多くのホスト。