@evox/plugin-protocol içindeki gerçek sözleşmedir; renderer/plugin payload’ı authoritative değildir, kimlik ve context host tarafından türetilir.
Sözleşme kuralları
- Her binding örneği yalnız kendi
bindingInstanceIdcontext’i için geçerlidir.action.willDisappearsonrası display çağrısıCONTEXT_EXPIREDile reddedilir. - Host-assigned
session.plugin.pluginIdtek authoritative kimliktir; event/RPC payload’ıyla başka kimlik seçilmez. - RPC çağrıları capability gerektirir. Declared/granted olmayan çağrı
CAPABILITY_DENIEDdöner (bkz. Capability API’leri). - Hata davranışı fail-closed’dır; kodlar için Hata kodları.
Alınan eventler (host → plugin)
client.on(<event>, handler) ile kaydedilir. Handler’lar client.start() handshake’inden önce kaydedilmelidir.
Plugin yaşam döngüsü
Cihaz
Action binding
Her event
event.context içinde actionId ve bindingInstanceId taşır. Plugin’in tanımadığı actionId ignore edilmelidir.
Host-RPC çağrıları (plugin → host)
SDK client üzerinden çağrılır; her biriPromise döner ve fail-closed hata verir.
Tuş/ekran gösterimi — key.display capability
Ayar kalıcılığı
Plugin-scoped depolama — storage.private capability
Ağ ve credential — network.fetch / secret.manage / oauth
Sistem — system.openExternal / system.openPath
Bu iki çağrı protokolde tanımlı ve capability korumalıdır; ayrı bir SDK kısayol metodu olmadan generic istek yolundan kullanılır.
Notlar
- Bu referans mevcut protokol sürümünü yansıtır; capability adları ve limitler Capability API’leri sayfasında normatiftir.
- Public dağıtım sınırı ve T1/T2/T3 farkları için Güven katmanları ve Dağıtım durumu.
