mcpField
E
extension-data-viewer

extension-data-viewer

github.com/caffeinelabsデータ・データベース29.9k 回インストール6 日前に更新
リポジトリ

extension-data-viewer について

Caffeine アプリの管理者や開発者向けの、管理画面やデバッグビューアで使うデータ検査拡張機能です。actor に MixinViews() を含めると、対応する安定した可変コレクション向けに、コントローラー専用のクエリを自動生成します。

主な機能

  1. 01対応コレクション向け検査クエリの生成
  2. 02カーソルと件数を指定したコレクション読み取り
  3. 03生成クエリへのコントローラー限定アクセス
  4. 04必須の MixinViews() の有無を lint で確認

活用シーン

  1. 01管理画面で保存済みコレクションを検査
  2. 02デバッグ中にアプリデータを閲覧
  3. 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 プロジェクトでは、純粋コレクションのフィールドアクセスは非推奨のパターンでもあります。

コメント