OxideTerm プラグイン互換性
互換性の境界を割り当てる前に、該当する実装を読み込んでください。
crates/oxideterm-plugin-manifest/src/registry.rs: カタログリリースおよび補正データcrates/oxideterm-plugin-registry/src/registry.rsおよびcompatibility.rs: バージョン選択、キャッシュ要件、起動時検出crates/oxideterm-plugin-registry/src/install.rs: パッケージインストールチェックcrates/oxideterm-gpui-app/src/workspace/plugin_entity.rs: リフレッシュ、アクティベーションゲート、タスク所有権- 変更の影響を受ける特定のホストAPI、ランタイム、または文法ローダー
crates/oxideterm-editor-syntax/src/plugin.rsおよびcrates/oxideterm-gpui-editor/src/languages.rs: 遅延文法ローディングと開いているドキュメントのリフレッシュ
ホスト側の契約
ホストとプラットフォームの両方がサポートする最高リリースを選択します。その互換性のあるリリースがインストール済みプラグインより新しい場合にのみ更新を提供し、より高い互換性のないバージョンは別途説明します。決して暗黙的にダウングレードしてはいけません。
アプリのアップグレードとダウングレードの両方の後、起動時にインストール済みプラグインを再チェックします。パッケージファイルを書き換えずに、正確なプラグインIDとバージョンに対して最新のキャッシュ補正を適用します。ファイル、設定、有効設定は保持し、互換性のないアクティベーションはブロックします。起動時のリフレッシュはプラグインエンティティにバインドされ、所有されるようにします。オフライン起動では最後の有効なキャッシュを使用します。
公式クライアントはv2サマリーカタログを使用し、インストール済みプラグインと現在のマーケットプレイスページに対してチェックサムバインドされた履歴を読み込みます。履歴はそのサマリーID、最新バージョン、有効ホスト範囲、サイズ、SHA-256と一致する必要があります。凍結されたv1エンドポイント、正確な履歴スナップショット、参照アセット、v1キャッシュリーダーを保持します。後続のすべてのプラグイン、リリース、補正はv2のみに属します。既存のクライアントはそれらを受け取るためにホストをアップグレードする必要があります。新しいクライアントはv2のみを取得します。失敗した場合は、凍結されたv1で置き換えるのではなく、最後の有効なキャッシュを保持します。それを必要とするホストを出荷する前にv2を公開します。コンパクトなルートキャッシュを置き換える前に、検証済みの生の履歴を保存します。起動時および手動インストールでは、インストールされている正確なバージョンに対する補正を解決する必要があります。別のページまたはカタログスナップショットからの結果を破棄し、廃止されたページリクエストをキャンセルします。カタログのメンテナンスと生成は、マーケットプレイスのプラグインごとのソースレコードとリリース自動化に属します。
言語抽出については、文法ローダー、Tree-sitter ABI、および実際の旧クライアントの動作を検証します。ホスト範囲はそれらのチェックを代替できません。新しいプラグインやアプリバージョンがリリースされたからといって、古いプラグインに上限を割り当ててはいけません。
2.2.2以降、言語マニフェストはdisplayName、grammarName、extensions、およびリテラルfileNamesを宣言できます。新しいIDは動的です。レガシー列挙型やファイル関連付けテーブルを拡張しないでください。公開された言語パッケージはそのフォールバック関連付けを保持します。カタログ宣言は検証済みアーカイブから取得され、v2履歴にバインドされ、インストール済みマニフェストが互換性のあるカタログヒントよりも優先されます。新しい宣言には>=2.2.2が必要です。レガシーパッケージへの通常のクエリ修正は、既存のホスト範囲を保持します。IDE、ローカル、SFTPプレビュー全体で、開いているドキュメントの再検出、欠落プラグインのルーティング、オフラインカタログヒントを一貫させてください。
2.2.2以降、言語パッケージは埋め込み文法をinjectionsにバンドルできます。各パーサー、ハイライトクエリ、親セレクターを宣言されたチェックサムで検証します。セレクターはinjection.contentをキャプチャします。ドキュメントは各埋め込みパーサー、そのキャンセル、廃棄を所有します。元のバイト座標を編集全体で保持し、子ハイライトを包含領域に制限し、そこで親キャプチャを置き換えて、テンプレートキャプチャがスクリプトトークンを隠せないようにします。バンドルされた文法はその親パッケージにプライベートであり、個別のファイル関連付けを登録しません。
ACPエージェント抽出については、ACPクライアント、許可決定、プロセス所有権をホストに保持します。公開されたacpマニフェストは引き続きサポートされ、共通のヘルパープランに正規化されます。新しいヘルパーマニフェストはフィーチャーacp、プロトコルacp、バージョン1を宣言します。エージェントはACP stdioを直接話します。それらのトラフィックを通常のプラグインスーパーバイザー経由でルーティングしないでください。起動ゲート、起動解決、クリーンアップについてはregistry.acp_agents、workspace/acp_plugins.rs、workspace/acp_workspace.rsを確認してください。2.2.1までのホストはこのランタイムをロードできません。バンドルされたアダプターをプラグインバインディングに移行する際、既存のエージェントIDとユーザーオプションを保持します。
公開されたMoshマニフェストはterminal-transportを使用します。新しいヘルパーマニフェストはフィーチャーterminal-transport、プロトコルoxideterm-mosh、バージョン1を宣言します。SSHブートストラップ、ターミナルレンダリング、ローカル予測をホストに保持します。UDP、SSP、暗号化はエンジンプラグインに属します。2.2.1までのホストはロードできません。パッケージ置換の前に、oxideterm-moshとそのワークスペース所有のMoshPluginSessionsを起動ゲートとプロセス終了について確認します。両方のパイプ方向は出力背圧の下で独立している必要があります。RDP、VNC、Moshはremote-connectionsカタログカテゴリを共有します。
公開の調整
公開されたリモートデスクトップマニフェストはremote-desktopを使用します。新しいヘルパーマニフェストはフィーチャーremote-desktop、プロトコルoxideterm-remote-desktop、バージョン1を宣言します。どちらも共通のヘルパープランに正規化され、通常のプラグインスーパーバイザーの外部になります。ネイティブビューアー、入力、認証情報、SSHトンネルの所有権をホストに保持します。サポートされているcontributes.remoteDesktop.protocolVersionを要求し、信頼され、有効で、互換性のあるインストール済み実行可能ファイルのみを解決します。ファイルを更新または削除する前にヘルパープロセスを停止して刈り取ります。互換性のあるプロバイダーが利用可能になるまで自動再接続を無効にします。ヘルパーを抽出する際、既存のバイナリstdio形式を変更しないでください。2.2.1までのホストはこのランタイムをロードできません。
汎用helperマニフェストは2.2.2以降のホストが必要です。公開されたマニフェストの種類、機能承認境界、プロトコルペイロードを正規化する際に保持します。ランタイムプランの統合はプラグインスーパーバイザーに子の所有権を譲渡しません。FIDOはフィーチャーssh-authentication、プロトコルoxideterm-security-key、バージョン1を宣言します。その認証タスクはキャンセルと刈り取りを所有します。
プラグインの作成、リリース記録、互換性補正はAnalyseDeCircuit/oxideterm-pluginsリポジトリに属します。ローカルディレクトリ名を想定せず、リポジトリIDで実際のチェックアウトを特定します。その.agents/skills/oxideterm-plugin-release/SKILL.mdを読み、リリーススクリプトを使用します。正式なスキルは以下でも入手可能です:
そのスキルまたはスクリプトがまだ公開されていない場合は、ローカルチェックアウトを使用します。必要なツールがない場合、代替の公開プロセスを考案してはいけません。ホスト実装の変更だけではプラグインの公開は許可されません。
変更された動作については、それを所有する境界で既存のレジストリとプラグインエンティティのテストを使用します。影響を受けるリスクをカバーします:互換性のあるバージョン選択、アップグレード/ダウングレード拒否、補正回復、またはオフライン起動。プラグイン互換性ファイルが変更されたからといって、無関係なスイートを再実行してはいけません。