WKWebView का उपयोग करके, एजेंट-नियंत्रित Canvas पैनल एम्बेड करता है।
Canvas कहाँ स्थित है
Canvas की स्थिति Application Support के अंतर्गत संग्रहीत होती है:~/Library/Application Support/OpenClaw/canvas/<session>/...
openclaw-canvas://<session>/<path> के माध्यम से प्रस्तुत करता है:
openclaw-canvas://main/-><canvasRoot>/main/index.htmlopenclaw-canvas://main/assets/app.css-><canvasRoot>/main/assets/app.cssopenclaw-canvas://main/widgets/todo/-><canvasRoot>/main/widgets/todo/index.html
index.html मौजूद नहीं है, तो ऐप एक अंतर्निर्मित स्कैफ़ोल्ड पृष्ठ दिखाता है।
पैनल का व्यवहार
- मेनू बार (या माउस कर्सर) के पास स्थित सीमाहीन, आकार बदलने योग्य पैनल।
- Canvas प्रस्तुत करने से ऐप स्विच नहीं होते या कीबोर्ड फ़ोकस नहीं छीना जाता।
- प्रत्येक सत्र के लिए आकार/स्थिति याद रखता है।
- स्थानीय Canvas फ़ाइलें बदलने पर स्वतः पुनः लोड होता है।
- एक समय में केवल एक Canvas पैनल दिखाई देता है (आवश्यकतानुसार सत्र बदलते हैं)।
CANVAS_DISABLED लौटाते हैं।
एजेंट API सतह
Canvas को Gateway WebSocket के माध्यम से उपलब्ध कराया जाता है, ताकि एजेंट पैनल को दिखा/छिपा सके, किसी पथ या URL पर नेविगेट कर सके, JavaScript का मूल्यांकन कर सके और स्नैपशॉट छवि कैप्चर कर सके:eval और a2ui.* पैनल को खोले या प्रकट किए बिना सामग्री अपडेट करते हैं। केवल
present, navigate या उपयोगकर्ता की कोई कार्रवाई इसे दिखाती है; छिपाने के बाद भी सामग्री अपडेट
छिपे हुए पैनल पर लागू होते रहते हैं। snapshot के लिए पैनल का दिखाई देना आवश्यक है और
अन्यथा यह CANVAS_HIDDEN लौटाता है; पहले present चलाएँ।
canvas.navigate स्थानीय Canvas पथ, http(s) URL और file://
URL स्वीकार करता है। "/" पास करने पर स्थानीय स्कैफ़ोल्ड या index.html दिखाई देता है।
/__openclaw__/canvas/ और
/__openclaw__/a2ui/ के अंतर्गत Gateway द्वारा होस्ट किए गए लक्ष्य, Node सत्र के वर्तमान सीमित-दायरे वाले
Canvas URL के माध्यम से रिज़ॉल्व किए जाते हैं। ऐप नेविगेशन से पहले उस अल्पकालिक क्षमता को रीफ़्रेश करता है;
आपको स्वयं क्षमता URL बनाने या कॉपी करने की आवश्यकता नहीं है।
Canvas में A2UI
A2UI को Gateway Canvas होस्ट द्वारा होस्ट किया जाता है और Canvas पैनल के भीतर रेंडर किया जाता है। जब Gateway किसी Canvas होस्ट की घोषणा करता है, तो macOS ऐप पहली बार खोलने पर स्वतः A2UI होस्ट पृष्ठ पर नेविगेट करता है। घोषित URL क्षमता-दायरे तक सीमित होता है, उदाहरण के लिएhttp://<gateway-host>:18789/__openclaw__/cap/<token>/__openclaw__/a2ui/?platform=macos।
इसे स्थायी लिंक नहीं, बल्कि अल्पकालिक क्रेडेंशियल मानें।
A2UI कमांड (v0.8)
Canvas, A2UI v0.8 के सर्वर-से-क्लाइंट संदेश स्वीकार करता है:beginRendering,
surfaceUpdate, dataModelUpdate, deleteSurface। createSurface (v0.9)
अभी समर्थित नहीं है।
Canvas से एजेंट रन ट्रिगर करना
Canvas,openclaw://agent?... डीप लिंक के माध्यम से नए एजेंट रन ट्रिगर कर सकता है:
मान्य कुंजी प्रदान न किए जाने पर ऐप पुष्टि के लिए संकेत देता है। बिना कुंजी वाले
लिंक अनुमोदन से पहले संदेश और URL दिखाते हैं तथा डिलीवरी रूटिंग
फ़ील्ड को अनदेखा करते हैं; कुंजी वाले लिंक सामान्य Gateway रन पथ का उपयोग करते हैं।
सुरक्षा संबंधी नोट्स
- Canvas स्कीम डायरेक्टरी ट्रैवर्सल को अवरुद्ध करती है; फ़ाइलें सत्र रूट के अंतर्गत होनी चाहिए।
- स्थानीय Canvas सामग्री कस्टम स्कीम का उपयोग करती है (लूपबैक सर्वर आवश्यक नहीं है)।
- बाहरी
http(s)URL केवल स्पष्ट रूप से नेविगेट किए जाने पर अनुमत हैं। - सामान्य वेब पृष्ठ केवल रेंडर किए जा सकते हैं। एजेंट कार्रवाइयाँ केवल ऐप के स्वामित्व वाली Canvas स्कीम या ऐप द्वारा चुने गए, सटीक क्षमता-दायरे तक सीमित Gateway A2UI दस्तावेज़ से स्वीकार की जाती हैं; सबफ़्रेम, रीडायरेक्ट, पुरानी क्षमताएँ और बदली हुई क्वेरी कार्रवाइयाँ डिस्पैच नहीं कर सकतीं।