Get started
Canvas plugin yeniden düzenlemesi
Canvas Plugin yeniden düzenlemesi
Canvas az kullanılan ve deneyseldir. Onu temel bir özellik olarak değil, paketle birlikte sunulan bir Plugin olarak değerlendirin. Temel; genel Gateway, Node, HTTP, kimlik doğrulama, yapılandırma ve yerel istemci altyapısını koruyabilir ancak Canvas'a özgü davranışlar extensions/canvas altında bulunmalıdır.
Hedef
Mevcut eşleştirilmiş Node davranışını koruyarak Canvas sahipliğini extensions/canvas konumuna taşıyın:
- aracıya yönelik
canvasaracı Canvas Plugin tarafından kaydedilir - Canvas Node komutlarına yalnızca Canvas Plugin bunları kaydettiğinde izin verilir
- A2UI ana makine/kaynak dosyaları Canvas Plugin altında bulunur
- Canvas belgelerinin somutlaştırılması Canvas Plugin altında gerçekleştirilir
- CLI komutu uygulaması Canvas Plugin altında bulunur veya Plugin sahipliğindeki bir çalışma zamanı dışa aktarım modülü üzerinden yetki devreder
- belgeler ve Plugin envanteri Canvas'ı deneme aşamasında ve Plugin destekli olarak tanımlar
Hedef dışı konular
- Bu yeniden düzenlemede yerel uygulamanın Canvas kullanıcı arayımını yeniden tasarlamayın.
- Ayrı bir ürün kararı Canvas'ın silinmesi gerektiğini belirtmedikçe iOS, Android veya macOS'tan Canvas protokolü/istemci desteğini kaldırmayın.
- En az bir başka paketle birlikte sunulan Plugin aynı bağlantı noktasına ihtiyaç duymadıkça yalnızca Canvas için geniş kapsamlı bir Plugin hizmeti çatısı oluşturmayın.
Geçerli dalın durumu
Tamamlananlar:
extensions/canvaskonumuna paketle birlikte sunulan Plugin paketi eklendi.extensions/canvas/openclaw.plugin.jsoneklendi.- Aracı
canvasaracısrc/agents/tools/canvas-tool.tskonumundanextensions/canvas/src/tool.tskonumuna taşındı. createCanvasTooltemel kaydısrc/agents/openclaw-tools.tsdosyasından kaldırıldı.- Canvas ana makine uygulaması
src/canvas-hostkonumundanextensions/canvas/src/hostkonumuna taşındı. - Testler, paketleme ve harici herkese açık Canvas yardımcıları için Plugin sahipliğindeki uyumluluk dışa aktarım modülü olarak
extensions/canvas/runtime-api.tskorundu. - Canvas belgelerinin somutlaştırılması
src/gateway/canvas-documents.tskonumundanextensions/canvas/src/documents.tskonumuna taşındı. - Canvas CLI uygulaması ve A2UI JSONL yardımcıları
extensions/canvas/src/cli.tskonumuna taşındı. - Canvas ana makine URL'si ve kapsamlı yetenek yardımcıları
extensions/canvas/srckonumuna taşındı. - Canvas Node komutu varsayılanları sabit kodlanmış temel listelerden çıkarılarak Plugin
nodeInvokePoliciesbölümüne taşındı. plugins.entries.canvas.config.hostkonumuna Plugin sahipliğinde Canvas ana makine yapılandırması eklendi.- Canvas ve A2UI HTTP sunumu Canvas Plugin HTTP rotası kaydının arkasına taşındı.
- Plugin sahipliğindeki HTTP rotaları için genel Plugin WebSocket yükseltme yönlendirmesi eklendi.
- Canvas'a özgü Gateway ana makine URL'si ve Node yeteneği kimlik doğrulaması, genel barındırılan Plugin yüzeyi ve Node yeteneği yardımcılarıyla değiştirildi.
- Canvas belge URL'lerinin, temel katmanın Canvas belge iç bileşenlerini içe aktarması yerine Canvas Plugin üzerinden çözümlenmesi için Plugin sahipliğinde barındırılan medya çözümleyicileri eklendi.
- Canvas'ın üst komut yolunu elle belirtmeden
openclaw nodes canvaskomutunu Plugin sahipliğinde bir Node özelliği olarak bildirebilmesi içinapi.registerNodeCliFeature(...)eklendi. - Üretimdeki
extensions/canvas/runtime-api.jsiçe aktarımlarısrc/**dosyalarından kaldırıldı. - A2UI paket kaynağı
apps/shared/OpenClawKit/Tools/CanvasA2UIkonumundanextensions/canvas/src/host/a2ui-appkonumuna taşındı. - A2UI derleme/kopyalama uygulaması
extensions/canvas/scriptsaltına taşındı ve kök derleme bağlantıları genel paketle birlikte sunulan Plugin varlık kancalarıyla değiştirildi. - Çalışma zamanındaki eski üst düzey
canvasHostyapılandırma diğer adı kaldırıldı. openclaw doctor --fixkomutunun eskicanvasHostyapılandırmalarınıplugins.entries.canvas.config.hostbiçiminde yeniden yazması için Canvas doctor geçişi korundu.- Eski aracı Canvas protokolü uyumluluğu Gateway protokolü v4'ün arkasından kaldırıldı. Yerel istemciler ve Gateway'ler artık yalnızca
pluginSurfaceUrls.canvasilenode.pluginSurface.refreshkullanıyor; kullanımdan kaldırılancanvasHostUrl,canvasCapabilityvenode.canvas.capability.refreshyolu bu deneysel yeniden düzenlemede kasıtlı olarak desteklenmiyor. - Oluşturulan Plugin envanteri Canvas'ı içerecek şekilde güncellendi.
docs/plugins/reference/canvas.mdkonumuna Plugin başvuru belgeleri eklendi.
Temelin sahipliğinde kaldığı bilinen Canvas yüzeyleri:
apps/altındaki yerel uygulama Canvas işleyicileri Canvas Plugin yüzeyini kasıtlı olarak kullanmaya devam ediyorapps/altındaki yerel uygulama Canvas protokolü/istemci işleyicileri- yayımlanan yapıt çıktısı geriye dönük uyumlu çalışma zamanı araması için hâlâ
dist/canvas-host/a2uikullanıyor ancak kopyalama adımı artık Plugin sahipliğinde
Hedef yapı
extensions/canvas şunların sahibi olmalıdır:
- Plugin manifestosu ve paket meta verileri
- aracı aracı kaydı
- Node çağırma komutu ilkesi
- Canvas ana makinesi ve A2UI çalışma zamanı
- Canvas A2UI paket kaynağı ve varlık derleme/kopyalama betikleri
- Canvas belgesi oluşturma ve varlık çözümleme
- Canvas CLI uygulaması
- Canvas belgeleri sayfası ve Plugin envanteri girdisi
Temel yalnızca genel bağlantı noktalarının sahibi olmalıdır:
- Plugin keşfi ve kaydı
- genel aracı aracı kayıt defteri
- genel Node çağırma ilkesi kayıt defteri
- genel Gateway HTTP/kimlik doğrulama ve WebSocket yükseltme yönlendirmesi
- genel barındırılan Plugin yüzeyi URL çözümlemesi
- genel barındırılan medya çözümleyicisi kaydı
- genel Node yeteneği aktarımı
- genel yapılandırma altyapısı
- genel paketle birlikte sunulan Plugin varlık kancası keşfi
Yerel uygulamalar protokol istemcileri olarak Canvas komut işleyicilerini koruyabilir. Bunlar Plugin çalışma zamanının sahibi değildir.
Geçiş adımları
plugins.entries.canvas.config.hostöğesini Plugin sahipliğindeki yapılandırma yüzeyi olarak değerlendirin.- Belgeleri Canvas'ın deneysel ve paketle birlikte sunulan bir Plugin olarak tanımlanacağı şekilde güncelleyin.
- Odaklanmış Canvas testlerini, Plugin envanteri denetimlerini, Plugin SDK API denetimlerini ve çalışma zamanı sınırlarından etkilenen derleme/tür kapılarını çalıştırın.
Denetim kontrol listesi
Yeniden düzenlemenin tamamlandığını belirtmeden önce:
rg "src/canvas-host|../canvas-host"hiçbir etkin kaynak içe aktarımı döndürmez.rg "canvas-tool|createCanvasTool" srctemel sahipliğinde bir Canvas aracı uygulaması bulmaz.rg "canvas.present|canvas.snapshot|canvas.a2ui" src/gatewaygenel Plugin ilkesi testleri dışında sabit kodlanmış izin listesi varsayılanları bulmaz.rg "extensions/canvas/runtime-api" src --glob '!**/*.test.ts'boş sonuç döndürür.rg "canvas-documents" srcboş sonuç döndürür.rg "registerNodesCanvasCommands|nodes-canvas" srcboş sonuç döndürür; Canvas Plugin, iç içe Plugin CLI meta verileri aracılığıylaopenclaw nodes canvaskomutunu kaydeder.rg "createCanvasHostHandler|handleA2uiHttpRequest" src/gatewayGateway çalışma zamanı sahipliği döndürmez.rg "apps/shared/OpenClawKit/Tools/CanvasA2UI|canvas-a2ui-copy|extensions/canvas/src/host/a2ui" scripts .github package.jsonyalnızca uyumluluk sarmalayıcılarını veya Plugin sahipliğindeki yolları bulur.pnpm plugins:inventory:checkbaşarılı olur.pnpm plugin-sdk:api:checkbaşarılı olur veya oluşturulan API temel çizgileri kasıtlı olarak güncellenip incelenir.- Hedeflenen Canvas testleri başarılı olur.
- Canvas ana makinesi/A2UI yolları için değişen hat testleri başarılı olur.
- PR gövdesi Canvas'ın deneysel ve Plugin destekli olduğunu açıkça belirtir.
Doğrulama komutları
Yineleme sırasında hedefli yerel denetimleri kullanın:
pnpm test extensions/canvas/src/host/server.test.ts extensions/canvas/src/host/server.state-dir.test.ts extensions/canvas/src/host/file-resolver.test.tspnpm test src/gateway/server.plugin-node-capability-auth.test.ts src/gateway/server-import-boundary.test.tspnpm test extensions/canvas/src/config-migration.test.ts src/commands/doctor-legacy-config.migrations.test.tspnpm test test/scripts/changed-lanes.test.ts test/scripts/build-all.test.ts extensions/canvas/scripts/bundle-a2ui.test.ts test/scripts/bundled-plugin-assets.test.ts extensions/canvas/scripts/copy-a2ui.test.ts src/infra/run-node.test.tspnpm tsgo:extensionspnpm plugins:inventory:checkpnpm plugin-sdk:api:checkÇalışma zamanı dışa aktarım modülü, gecikmeli içe aktarım, paketleme veya yayımlanan Plugin yüzeyleri değişirse göndermeden önce pnpm build komutunu çalıştırın.