extension-data-viewer について
Caffeine アプリの管理者や開発者向けの、管理画面やデバッグビューアで使うデータ検査拡張機能です。actor に MixinViews() を含めると、対応する安定した可変コレクション向けに、コントローラー専用のクエリを自動生成します。
主な機能
- 01対応コレクション向け検査クエリの生成
- 02カーソルと件数を指定したコレクション読み取り
- 03生成クエリへのコントローラー限定アクセス
- 04必須の MixinViews() の有無を lint で確認
活用シーン
- 01管理画面で保存済みコレクションを検査
- 02デバッグ中にアプリデータを閲覧
- 03actor で自動ビューアークエリが有効か確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ caffeinelabs/ skills --skill extension-data-viewerインストール後、Claude Code で/extension-data-viewerを入力して読み込まれたか確認します。
詳細
データビューアー
Caffeine AI向けの管理者専用データ検査拡張機能です。
概要
すべての Caffeine アプリには、caffeineai-data-viewer mops パッケージが含まれており、moc の --generate-view-queries フラグも有効になっています。これらに加えて、アクターに include MixinViews() を記述すると、コンパイラーが、対応する型の安定変数ごとにコントローラー専用の __<var> クエリを自動的に公開します。
Map.Map<K, V>—(?K, ?Nat) -> [(K, V)]Set.Set<K>—(?K, ?Nat) -> [K][V]、[var V]、List.List<V>、Stack.Stack<V>、Queue.Queue<V>—(?Nat, ?Nat) -> [V]
カーソルが null の場合は先頭から開始します。件数が null の場合は、カーソル以降のすべてを返します。生成される各クエリは、コントローラー以外の呼び出し元に対してトラップします。これらは管理者向けダッシュボードやデバッグビューアー用であり、ユーザー向けエンドポイントではありません。
バックエンド
パッケージと include はテンプレートにすでに組み込まれています。ビューアーを動作させるために、何かを追加したり編集したりする必要はありません。対応する型の安定変数を宣言すれば、__<var> クエリが自動的に生成されます。
import Map "mo:core/Map";
import Principal "mo:core/Principal";
import MixinViews "mo:caffeineai-data-viewer/MixinViews";
actor {
include MixinViews();
let users = Map.empty<Principal, Text>();
// Generated automatically: __users : (ko : ?Principal, count : ?Nat) -> [(Principal, Text)] query
};
パッケージに含まれる Lintoko ルール include-mixin-views は、アクター本体に include MixinViews(); がない場合にエラーを出します。この include は残してください。削除すると、自動生成されるすべてのビューアーが無効になります。
ルール
- 生成された
__<var>クエリをユーザー向けエンドポイントの代わりとして絶対に使用しないでください。コントローラー以外の呼び出し元に対してトラップします。公開するリスト/フィード/検索メソッドは、引き続きpublic query func listX(...)として通常どおり記述する必要があります。 __で始まる名前のアクターメンバーを絶対に宣言しないでください。自動生成クエリと衝突するか、予約済みのプレフィックスに該当します。- 純粋(不変)コレクション(
pure/Map、pure/Set、pure/List、pure/Queue)はサポートされていません。このビューアーは設計上、変更可能なコレクションのみを対象としています。Caffeine プロジェクトでは、純粋コレクションのフィールドアクセスは非推奨のパターンでもあります。