संगतता रजिस्ट्री
Plugin संगतता अनुबंधों को कोर रजिस्ट्री मेंsrc/plugins/compat/registry.ts पर ट्रैक किया जाता है। प्रत्येक रिकॉर्ड में ये होते हैं:
- एक स्थिर संगतता कोड
- स्थिति:
active,deprecated,removal-pending, याremoved - स्वामी:
sdk,config,setup,channel,provider,plugin-execution,agent-runtime, याcore - लागू होने पर प्रस्तुत किए जाने और अप्रचलन की तिथियाँ
- स्वामी अनुरक्षक द्वारा स्वीकृति दिए जाने के बाद हटाने की सटीक तिथि; छोड़ा गया
removeAfterकिसी अप्रचलित सतह को हटाए जाने के लिए अपात्र रखता है - प्रतिस्थापन मार्गदर्शन
- पुराने और नए व्यवहार को समाहित करने वाले दस्तावेज़, निदान और परीक्षण
src/commands/doctor/shared/deprecation-compat.ts पर ट्रैक किया जाता है। उन रिकॉर्डों में पुराने
कॉन्फ़िगरेशन आकार, इंस्टॉल-लेजर लेआउट और ऐसे सुधार शिम शामिल होते हैं, जिन्हें
रनटाइम संगतता पथ हटाए जाने के बाद भी उपलब्ध रखने की आवश्यकता हो सकती है।
रिलीज़ स्वीप में दोनों रजिस्ट्रियों की जाँच होनी चाहिए। किसी Doctor
माइग्रेशन को केवल इसलिए न हटाएँ क्योंकि उससे मेल खाने वाला रनटाइम या कॉन्फ़िगरेशन संगतता रिकॉर्ड
समाप्त हो गया है; पहले पुष्टि करें कि कोई समर्थित अपग्रेड पथ ऐसा नहीं है जिसे अब भी
सुधार की आवश्यकता हो। रिलीज़ योजना के दौरान प्रत्येक प्रतिस्थापन एनोटेशन को भी पुनः सत्यापित करें,
क्योंकि प्रदाताओं और चैनलों के कोर से बाहर जाने पर plugin स्वामित्व और कॉन्फ़िगरेशन का दायरा
बदल सकता है।
अप्रचलन नीति
OpenClaw को किसी दस्तावेज़ीकृत plugin अनुबंध को उसी रिलीज़ में नहीं हटाना चाहिए जिसमें उसका प्रतिस्थापन प्रस्तुत किया जाता है। माइग्रेशन क्रम:- नया अनुबंध जोड़ें।
- पुराने व्यवहार को नामित संगतता एडाप्टर के माध्यम से जोड़े रखें।
- जब plugin लेखक कार्रवाई कर सकें, तब निदान या चेतावनियाँ जारी करें।
- प्रतिस्थापन और समयरेखा का दस्तावेज़ीकरण करें।
- पुराने और नए, दोनों पथों का परीक्षण करें।
- घोषित माइग्रेशन अवधि पूरी होने तक प्रतीक्षा करें।
- केवल स्पष्ट ब्रेकिंग-रिलीज़ स्वीकृति मिलने पर हटाएँ।
active चिह्नित न करें।
वर्तमान संगतता क्षेत्र
जुलाई 2026 के स्वीप ने समय-सीमा समाप्त हो चुके रूट SDK, मैनिफ़ेस्ट, प्रदाता, रनटाइम, रजिस्ट्री-फ़्लैग और plugin-स्वामित्व वाले वेब-कॉन्फ़िगरेशन उपनाम हटा दिए। Doctor माइग्रेशन अलग से ट्रैक होते रहते हैं, ताकि समर्थित अपग्रेड पथ अब भी पुराने कॉन्फ़िगरेशन की मरम्मत कर सकें। शेष दिनांकित संगतता क्षेत्र ये हैं:- माइग्रेशन गाइड में सूचीबद्ध अगस्त और सितंबर की SDK उपपथ अवधियाँ
api.on("deactivate", ...)औरapi.on("subagent_spawning", ...)हुक उपनाम- मेमोरी-विशिष्ट एम्बेडिंग पंजीकरण और beta.5 सेशन-स्टोर ब्रिज
- नीचे वर्णित WhatsApp इनबाउंड कॉलबैक उपनाम
- स्पष्ट चैनल लक्ष्य पार्सिंग और
openclaw/plugin-sdk/messaging-targets - एम्बेडेड Pi एजेंट उपनाम
- जारी किए गए एजेंट-हार्नेस SDK उपनाम, जिन्हें हटाने के लिए एक नया बाहरी रूप से दस्तावेज़ीकृत माइग्रेशन निर्णय लंबित है
WhatsApp इनबाउंड कॉलबैक के फ़्लैट उपनाम
WhatsApp रनटाइम कॉलबैकWebInboundMessage प्रदान करते हैं: कैनोनिकल
नेस्टेड event, payload, quote, group, और platform संदर्भ तथा
जारी किए गए कॉलबैक फ़ील्ड के लिए अप्रचलित फ़्लैट उपनाम। नए कॉलबैक कोड को
नेस्टेड संदर्भ पढ़ने चाहिए। स्वच्छ नेस्टेड कॉलबैक
संदेश बनाने वाला कोड WebInboundCallbackMessage का उपयोग कर सकता है; ऐसे संगतता लिसनर जो
अब भी पुराने फ़्लैट परीक्षण या plugin संदेश इंजेक्ट करते हैं, उन्हें
LegacyFlatWebInboundMessage या WebInboundMessageInput का उपयोग करना चाहिए।
फ़्लैट उपनाम 2026-08-30 तक उपलब्ध रहेंगे; यह अवधि
केवल फ़्लैट उपनाम एक्सेस पर लागू होती है, नेस्टेड आकार पर नहीं, जो कैनोनिकल
रनटाइम अनुबंध है। प्रत्येक फ़्लैट उपनाम का TypeScript @deprecated एनोटेशन
उसके सटीक नेस्टेड प्रतिस्थापन का नाम बताता है। सामान्य उदाहरण:
id,timestamp, औरisBatched,eventके अंतर्गत जाते हैं।body,mediaPath,mediaType,mediaFileName,mediaUrl,location, औरuntrustedStructuredContext,payloadके अंतर्गत जाते हैं।to,chatId, प्रेषक/स्वयं फ़ील्ड,sendComposing,reply(...), औरsendMedia(...),platformके अंतर्गत जाते हैं।replyTo*फ़ील्डquoteके अंतर्गत जाते हैं; समूह विषय/प्रतिभागी/उल्लेख फ़ील्डgroupके अंतर्गत जाते हैं।
payload.untrustedStructuredContext को इनबाउंड प्रदाता
पेलोड से निकाला जाता है। Plugins को इसके payload को प्रामाणिक मानने से पहले
label, source, और type की जाँच करनी चाहिए।
WhatsApp इनबाउंड प्रवेश फ़ील्ड
स्वीकृत WhatsApp कॉलबैक संदेशों मेंadmission होता है, जो संदेश को प्रवेश देने वाले
अभिगम-नियंत्रण निर्णय के लिए सार्वजनिक रूप से सुरक्षित
एनवेलप है। नए कॉलबैक कोड को पुराने शीर्ष-स्तरीय प्रवेश फ़ील्ड के बजाय
msg.admission से प्रवेश तथ्य पढ़ने चाहिए।
शीर्ष-स्तरीय फ़ील्ड 2026-08-30 तक उपलब्ध रहेंगे। प्रत्येक फ़ील्ड का
TypeScript @deprecated एनोटेशन उसके प्रतिस्थापन का नाम बताता है:
fromऔरconversationId,admission.conversation.idमें जाते हैं।accountId,admission.accountIdमें जाता है।accessControlPassed,admission.ingress.decision === "allow"का एक व्युत्पन्न संगतता दृश्य है; उन संदेशों पर जिनमें पहले सेadmissionमौजूद है, लेगेसी बूलियन लिखने से इनग्रेस ग्राफ़ दोबारा नहीं लिखा जाता।chatType,admission.conversation.kindमें जाता है।
Plugin निरीक्षक पैकेज
Plugin निरीक्षक को कोर OpenClaw रिपॉज़िटरी के बाहर एक अलग पैकेज/रिपॉज़िटरी के रूप में होना चाहिए, जो संस्करणित संगतता और मैनिफ़ेस्ट अनुबंधों द्वारा समर्थित हो। पहले दिन का CLI यह होना चाहिए:--json का उपयोग करें। OpenClaw कोर को ऐसे
अनुबंध और फ़िक्सचर उपलब्ध कराने चाहिए जिनका निरीक्षक उपयोग कर सके, लेकिन मुख्य
openclaw पैकेज से निरीक्षक बाइनरी प्रकाशित नहीं करनी चाहिए।
अनुरक्षक स्वीकृति लेन
OpenClaw plugin पैकेजों के विरुद्ध बाहरी निरीक्षक को सत्यापित करते समय इंस्टॉल किए जा सकने वाले पैकेज की स्वीकृति लेन के लिए Crabbox-समर्थित Blacksmith Testbox का उपयोग करें। पैकेज बनने के बाद इसे एक स्वच्छ OpenClaw चेकआउट से चलाएँ:रिलीज़ नोट्स
किसी संगतता पथ केremoval-pending या removed में जाने से पहले,
रिलीज़ नोट्स में लक्ष्य तिथियों और माइग्रेशन दस्तावेज़ों के लिंक के साथ आगामी plugin अप्रचलन शामिल होने चाहिए।