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 / retryrunの一覧・ログ・中断・再実行
確認chat app list / infoappの一覧・状態・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