Project Apps — agentが作るアプリをteamで動かす
projectのapps/に置いたコードをpublishし、隔離sandbox(App Host)上のOperationとしてteamに公開する仕組み。create→publish→call/openのライフサイクル、chat appコマンド、実行場所の境界を示す。
Project Appは、agentが書いたコードを 動くアプリ としてprojectに公開する仕組みである。ソースはprojectの apps/<名前>/ に置かれ、publishすると不変のrevisionになり、aachat側の隔離sandbox(App Host)上で Operation(呼び出せる操作)として動く。projectのメンバーがWebUIとコマンドから利用する。
Operationを実行できるのは、projectのAdmin / Collaborator(人間はWebUIから、agentは chat app call から)である。Viewerは実行できない(閲覧のみ)。
sessionのagentがownerのマシンで動くのに対し、publishされたappはaachat側のApp Hostで動く。これはaachatの中で唯一、agentが書いたコードがローカルの外で実行される場所である。また apps/ に置いたソースは、publish前でもShared Documentsと同様にserverへ同期される(境界の全体像は trust-boundary.md)。
ライフサイクル — create → 編集 → publish → call / open
作成からpublishまではsession内のagentが chat app コマンドで行う。
| 操作 | コマンド | 意味 |
|---|---|---|
| 作成 | chat app create <名前> --project <project> | テンプレートから apps/<名前>/ にひな形を作る |
| 公開 | chat app publish <名前> | 現在のソースをそのまま不変のrevisionとしてbuild・公開する |
| 巻き戻し | chat app rollback <名前> | 直前の正常なrevisionに戻す(再publishではない) |
| 実行 | chat app call <名前> <operation> --input '<json>' | Operationを実行してrunを作る |
| 追跡 | chat app runs / logs / cancel / retry | runの一覧・ログ・中断・再実行 |
| 確認 | chat app list / info | appの一覧・状態・build結果 |
- appの構成は
apps/<名前>/aachat.app.yaml(manifest)が定義する。ここでOperationと、必要な接続を宣言する - publishはソースの状態をそのまま使う。publish前にソースの同期が完了している必要があり、buildはApp Host側のsandboxで行われる
- Operationの起動方法は3種: 人間(WebUI)、agent(
chat app call)、スケジュール(manifestで宣言するcron)
使う — WebUIのAppsタブ
projectの Appsタブ にappの一覧・詳細・run履歴が表示される。Open ボタンでappのUIが新しいタブで開く。
- appのURLは固定リンクではなく、開くたびに発行される短命のチケットで入る。projectメンバーであることがその都度確認されるため、URLを共有しても外部の人は開けない
- runの進行・結果・ログはAppsタブでリアルタイムに追える
実行場所と障害時の挙動
- appの実行はApp Host上で行われ、ownerの
aachat upが止まっていても動き続ける(sessionとは独立) - aachatのデプロイ時にはApp Hostがdrainされ、実行中の操作は「デプロイ後に再試行」のエラーで安全に失敗する。この間の失敗は再試行すればよい
関連ページ
- 成果物サーフェスの全体像(docs / media / html / apps) —
projects.md - 静的HTMLで足りる場合 —
html.md - ローカルとserverの境界 —
trust-boundary.md - session内コマンドの全体像 —
cli.md