ReadAware

プラグインシステム

ReadAwareプラグインは読書データを扱い、ネイティブなアクションやプロバイダーを追加し、読書アシスタントを拡張し、範囲を限定したサービスをホストに要求できます。インストール済みパッケージは動的に読み込まれるため、アプリ側にプラグインIDごとの切り替えは必要ありません。

1つのモデル、3つの機能ファミリー

実行可能なプラグイン機能は3つの形のいずれかです。正しい形を選ぶことが最初の実装判断になります。

ファミリー使う場面
ドメイン状態や振る舞いをReadAwareがすでに所有している。ライブラリ、読書、注釈、会話、設定
コントリビューションプラグインが新しい選択肢や実装を提供する。アクション、コマンド、ボイス、コンテンツ、テーマ、エージェントプロバイダー
サービスホストが範囲を限定した外部操作を実行する必要がある。ストレージ、シークレット、スケジュール、ネットワーク、LLM、クリップボード

宣言的なビュー、設定、テーマのスキーマもこれらのファミリーと並びます。ホストが描画するデータを記述するだけで、別の権限源を与えるものではありません。

設定はドメイン

外観は独立したプラグインAPIではなく、設定のセクションです。選択中のテーマを変更するプラグインは、appearance.theme のような正確な設定パスを要求します。新しいテーマを提供するプラグインはthemesコントリビューションを使います。選択と提供は意図的に分離された権限です。

プラグインが追加できるもの

  • 選択アクションとヘッダーアクション、コマンドパレットのコマンド、ホスト描画のビュー。
  • ボイス、仮想ブックのコンテンツプロバイダー、リーダーモード、テーマ、フォント。
  • エージェントツール、ターンごとのコンテキスト、検索可能なプライベートソース、メモリ候補。
  • プラグイン設定、動的な選択肢、定期処理、ストレージ、暗号化されたシークレット。
  • 許可された製品ドメインに対する読み取り、コマンド、コミット済みイベントの購読。

完全なバージョン付き一覧は機能ブラウザーで確認できます。manifest.jsonの権限プレビューも含まれています。

仕組みによってネイティブなUI

プラグインがReact、HTML、CSS、iframe、任意のDOMを直接マウントすることはありません。検証済みのビュー・データとコールバックを返し、レイアウト、ナビゲーション、アクセシビリティ、テーマ互換性、読み込み状態、後始末はReadAwareが担います。新しい視覚表現は範囲を限定したスキーマまたは正式なホスト拡張ポイントとして提供され、汎用WebViewへの抜け道にはなりません。

信頼境界

各プラグインは専用のモジュールWorkerで実行されます。DOM、Tauri、SQLite、ファイルシステム、プロセスハンドルへのアクセスはなく、暗黙のネットワークAPIとブラウザー永続化APIも無効です。ホスト呼び出しはメッセージ境界を越え、プラグインのアクター単位の機能ビューに基づいて解決されます。

これにより偶発的・直接的な越権は抑えられますが、インストールは依然としてソフトウェアへの信頼判断です。コードが実行される前に、ReadAwareは意味のある権限と正確な設定付与を表示します。機能要件は別に検査されます。権限は「これを実行してよいか」、バージョン要件は「この契約を正しく使えるか」に答えるものです。

有効化と更新はトランザクションとして行われる

activate()は読み取りと宣言だけを行う段階です。ホストが呼び出しを処理しWorkerのヘルスチェックを行う間、登録は不可視のままです。書き込み、シークレット、ネットワーク、LLM、クリップボード、UI効果、ナビゲーションはブロックされます。永続データの変更は後でストレージ専用のmigrate()を通じて実行されます。健全性確認と移行を終えた候補だけが昇格します。

更新時にはファイル、プラグインKV、ドキュメントコレクション、コミット済みスキーマメタデータをスナップショットします。有効化または移行に失敗すると、以前のファイルとデータを復元し、必要に応じて以前のランタイムを再起動します。

現在のエコシステム

現在出荷されているプラグインは同梱のファーストパーティ製です。Dictionary、Editorial Themes、RSS Reader、Sentence Reader、TTS Voices、Theme Scheduleがあります。公開 readaware-pluginsリポジトリ には、作成用テンプレート、公開宣言、検証、マーケットプレイスレジストリが含まれます。維持すべき旧来のサードパーティAPIはなく、現在の契約が基準です。

作り始める

ローカルでの開発ループはプラグインを作るに従い、実装中はAPIリファレンスを参照し、マーケットプレイスの変更を提出する前に公開を読んでください。