日本語English
TrayPage Docs

仕組み

データモデル、レビューのループ、公開範囲と権限、表示の隔離。

データモデル

workspace(チーム)
└─ project(成果物の置き場所)
   └─ artifact(成果物)
      └─ version(投稿ごとに増える。書き換え不可)
  • workspace — メンバーと課金の単位。メンバーは owner / admin / member / viewer のいずれかのロールを持ちます。
  • project — 成果物をまとめる単位。folder で階層化もできます。公開範囲のデフォルトは project 単位で設定します。
  • artifact — 1つの成果物(HTML)。タイトル・slug・公開範囲を持ちます。
  • version — 投稿のたびに追加される版。一度投稿した version の内容は変更できません。修正は常に新しい version の投稿として行います。

レビューのループ

TrayPage の中心は「AI が作る → チームがコメントする → AI が直す」のループです。

  1. AI ツールが publish_html_artifact で成果物を投稿する
  2. チームがレビューページでテキストを選択してコメントする
  3. AI ツールが get_revision_prompt で未解決コメントを修正指示(revision prompt)として取得する
  4. AI が修正した HTML を publish_new_artifact_version で新しい version として投稿する
  5. コメントを resolve し、必要なら version を承認・公開する

各 artifact には「最新版(latest)」と「公開済み版(published)」の2つの参照があります。レビュー中は latest が進み、承認した version を published として固定することで、共有相手には承認済みの内容だけが見えます。

公開範囲(visibility)

artifact ごとに、誰が閲覧できるかをプリセットで設定します。

プリセット閲覧できる人
private明示的に許可された人だけ
project_membersproject のメンバー(デフォルト)
workspace_membersworkspace の全メンバー
workspace_domain_users指定ドメインのメールアドレスでログインしたユーザー
link_login_requiredリンクを知っていて、かつログインしている人

共有リンクを発行すると、リンク経由のアクセスに対して閲覧やコメントの権限を個別に付与できます。

権限

操作権限は viewer(閲覧)/ commenter(閲覧+コメント)/ editor(+新しい version の投稿)/ admin(+承認・アクセス管理)の4段階です。workspace の owner / admin は配下のすべての artifact に対して admin 相当になります。Web・API トークン・MCP・共有リンクのどこから操作しても、同じ権限リゾルバで判定されます。

表示の隔離

投稿された HTML はスクリプトを含むため、アプリ本体とは隔離して表示されます。

  • HTML は専用の viewer URL から、CSP の sandbox allow-scripts 付きで配信されます
  • レビューページは viewer を sandbox 属性付きの iframe として埋め込みます
  • 本番では viewer は別オリジンから配信され、アプリの Cookie にはアクセスできません

成果物内のスクリプトがアプリのセッションやデータに触れることはありません。

On this page