Canvas plugin yeniden düzenlemesi
Canvas az kullanılan ve deneysel bir özelliktir. Onu temel bir özellik olarak değil, paketle birlikte gelen bir plugin olarak ele alın. Temel katman genel Gateway, Node, HTTP, kimlik doğrulama, yapılandırma ve yerel istemci altyapısını koruyabilir; ancak Canvas’a özgü davranışextensions/canvas altında bulunmalıdır.
Amaç
Mevcut eşleştirilmiş Node davranışını koruyarak Canvas sahipliğiniextensions/canvas konumuna taşıyın:
- ajanın kullanabildiği
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 belge somutlaştırması Canvas plugin altında bulunur
- CLI komut uygulaması Canvas plugin altında bulunur veya plugin’e ait bir çalışma zamanı barrel’ı üzerinden yetki devreder
- belgeler ve plugin envanteri Canvas’ı deneysel ve plugin destekli olarak tanımlar
Kapsam dışı hedefler
- Bu yeniden düzenleme kapsamında yerel uygulamanın Canvas kullanıcı arayımını yeniden tasarlamayın.
- Ayrı bir ürün kararı Canvas’ın silinmesi gerektiğini belirtmediği sürece iOS, Android veya macOS’tan Canvas protokolü/istemci desteğini kaldırmayın.
- En az bir başka paketle birlikte gelen plugin aynı bağlantı noktasına ihtiyaç duymadığı sürece yalnızca Canvas için geniş kapsamlı bir plugin hizmeti çerçevesi oluşturmayın.
Mevcut dal durumu
Tamamlananlar:extensions/canvasiçine paketle birlikte gelen plugin paketi eklendi.extensions/canvas/openclaw.plugin.jsoneklendi.- Ajanın
canvasaracısrc/agents/tools/canvas-tool.tskonumundanextensions/canvas/src/tool.tskonumuna taşındı. createCanvasTooliçin temel katmandaki kayıtsrc/agents/openclaw-tools.tsüzerinden kaldırıldı.- Canvas ana makine uygulaması
src/canvas-hostkonumundanextensions/canvas/src/hostkonumuna taşındı. extensions/canvas/runtime-api.ts; testler, paketleme ve harici genel Canvas yardımcıları için plugin’e ait uyumluluk barrel’ı olarak korundu.- Canvas belge somutlaştırması
src/gateway/canvas-documents.tskonumundanextensions/canvas/src/documents.tskonumuna taşındı. - Canvas CLI uygulaması ve A2UI JSONL yardımcıları
extensions/canvas/src/cli.tsiçine taşındı. - Canvas ana makine URL’si ve kapsamlı yetenek yardımcıları
extensions/canvas/srciçine taşındı. - Canvas Node komutu varsayılanları sabit kodlanmış temel katman listelerinden çıkarılarak plugin
nodeInvokePoliciesiçine taşındı. plugins.entries.canvas.config.hostkonumuna plugin’e ait Canvas ana makine yapılandırması eklendi.- Canvas ve A2UI HTTP sunumu, Canvas plugin HTTP rotası kaydının arkasına taşındı.
- Plugin’e ait 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 olarak 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’e ait barındırılan medya çözümleyicileri eklendi.
- Canvas’ın üst komut yolunu elle yazmadan
openclaw nodes canvasöğesini plugin’e ait bir Node özelliği olarak bildirebilmesi içinapi.registerNodeCliFeature(...)eklendi. src/**içindeki üretimextensions/canvas/runtime-api.jsiçe aktarımları 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 gelen plugin varlık kancalarıyla değiştirildi. - Eski çalışma zamanı üst düzey
canvasHostyapılandırma diğer adı kaldırıldı. openclaw doctor --fixkomutunun eskicanvasHostyapılandırmalarınıplugins.entries.canvas.config.hostbiçimine yeniden yazması için Canvas doctor geçişi korundu.- Eski ajan Canvas protokolü uyumluluğu, Gateway protokolü v4 kapsamında kaldırıldı. Yerel istemciler ve Gateway’ler artık yalnızca
pluginSurfaceUrls.canvasilenode.pluginSurface.refreshkullanır; kullanımdan kaldırılancanvasHostUrl,canvasCapabilityvenode.canvas.capability.refreshyolu bu deneysel yeniden düzenlemede kasıtlı olarak desteklenmez. - Oluşturulan plugin envanteri Canvas’ı içerecek şekilde güncellendi.
docs/plugins/reference/canvas.mdkonumuna plugin referans belgeleri eklendi.
apps/altındaki yerel uygulama Canvas işleyicileri hâlâ kasıtlı olarak Canvas plugin yüzeyini kullanıyorapps/altındaki yerel uygulama Canvas protokolü/istemci işleyicileri- yayımlanan artefakt çı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’e ait
Hedef yapı
extensions/canvas şunların sahibi olmalıdır:
- plugin manifesti ve paket meta verileri
- ajan aracı kaydı
- Node çağırma komutu politikası
- 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
- plugin keşfi ve kaydı
- genel ajan aracı kayıt defteri
- genel Node çağırma politikası kayıt defteri
- genel Gateway HTTP/kimlik doğrulaması 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 gelen plugin varlık kancası keşfi
Geçiş adımları
plugins.entries.canvas.config.hostöğesini plugin’e ait yapılandırma yüzeyi olarak ele alın.- Belgeleri Canvas’ın deneysel ve paketle birlikte gelen bir plugin olarak tanımlanacağı şekilde güncelleyin.
- Odaklanmış Canvas testlerini, plugin envanteri kontrollerini, plugin SDK API kontrollerini ve çalışma zamanı sınırlarından etkilenen derleme/tür kapılarını çalıştırın.
Denetim kontrol listesi
Yeniden düzenlemeyi tamamlanmış olarak değerlendirmeden önce:rg "src/canvas-host|../canvas-host"hiçbir etkin kaynak içe aktarımı döndürmez.rg "canvas-tool|createCanvasTool" srctemel katmana ait hiçbir Canvas aracı uygulaması bulmaz.rg "canvas.present|canvas.snapshot|canvas.a2ui" src/gatewaygenel plugin politikası testleri dışında sabit kodlanmış hiçbir izin listesi varsayılanı bulmaz.rg "extensions/canvas/runtime-api" src --glob '!**/*.test.ts'boştur.rg "canvas-documents" srcboştur.rg "registerNodesCanvasCommands|nodes-canvas" srcboştur; Canvas plugin, iç içe plugin CLI meta verileri aracılığıylaopenclaw nodes canvaskaydını yapar.rg "createCanvasHostHandler|handleA2uiHttpRequest" src/gatewayhiçbir Gateway ç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’e ait yolları bulur.pnpm plugins:inventory:checkbaşarılı olur.pnpm plugin-sdk:api:checkbaşarılı olur veya oluşturulan API sözleşmesi kayıtları kasıtlı olarak güncellenip incelenir.- Hedeflenen Canvas testleri başarılı olur.
- Canvas ana makinesi/A2UI yolları için değişen işlem hattı 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 kontroller kullanın:pnpm build çalıştırın.