क्या बदल रहा है
पुराना Plugin system दो बहुत खुले surfaces देता था, जिनसे Plugins एक ही entry point से अपनी जरूरत की कोई भी चीज import कर सकते थे:openclaw/plugin-sdk/compat- एक single import जो दर्जनों helpers को re-export करता था। इसे पुराने hook-based Plugins को काम करते रहने के लिए पेश किया गया था, जबकि नई Plugin architecture बनाई जा रही थी।openclaw/plugin-sdk/infra-runtime- एक व्यापक runtime helper barrel, जिसमें system events, heartbeat state, delivery queues, fetch/proxy helpers, file helpers, approval types, और असंबंधित utilities मिले हुए थे।openclaw/plugin-sdk/config-runtime- एक व्यापक config compatibility barrel, जो migration window के दौरान अब भी deprecated direct load/write helpers रखता है।openclaw/extension-api- एक bridge जिसने Plugins को embedded agent runner जैसे host-side helpers तक direct access दिया।api.registerEmbeddedExtensionFactory(...)- एक हटाया गया embedded-runner-only bundled extension hook, जोtool_resultजैसे embedded-runner events को observe कर सकता था।
यह क्यों बदला
पुराने approach ने समस्याएं पैदा कीं:- Slow startup - एक helper import करने से दर्जनों असंबंधित modules load हो जाते थे
- Circular dependencies - व्यापक re-exports से import cycles बनाना आसान हो गया था
- Unclear API surface - यह बताने का कोई तरीका नहीं था कि कौन से exports stable हैं और कौन से internal
openclaw/plugin-sdk/\<subpath\>) एक छोटा, self-contained module है, जिसका उद्देश्य साफ और contract documented है।
bundled channels के लिए legacy provider convenience seams भी हट गए हैं।
Channel-branded helper seams private mono-repo shortcuts थे, stable Plugin contracts नहीं। इसके बजाय narrow generic SDK subpaths का उपयोग करें। bundled Plugin workspace के अंदर, provider-owned helpers को उसी Plugin के अपने api.ts या runtime-api.ts में रखें।
Current bundled provider examples:
- Anthropic अपने Claude-specific stream helpers को अपने
api.ts/contract-api.tsseam में रखता है - OpenAI provider builders, default-model helpers, और realtime provider
builders को अपने
api.tsमें रखता है - OpenRouter provider builder और onboarding/config helpers को अपने
api.tsमें रखता है
Talk और realtime voice migration plan
Realtime voice, telephony, meeting, और browser Talk code surface-local turn bookkeeping से हटकरopenclaw/plugin-sdk/realtime-voice द्वारा export किए गए shared Talk session controller पर जा रहा है। नया controller common Talk event envelope, active turn state, capture state, output-audio state, recent event history, और stale-turn rejection का owner है। Provider Plugins को vendor-specific realtime sessions का ownership रखना चाहिए; surface Plugins को capture, playback, telephony, और meeting quirks का ownership रखना चाहिए।
यह Talk migration जानबूझकर breaking-clean है:
- shared controller/runtime primitives को
plugin-sdk/realtime-voiceमें रखें। - bundled surfaces को shared controller पर move करें: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime, और native push-to-talk।
- पुराने Talk RPC families को final
talk.session.*औरtalk.client.*API से replace करें। - Gateway
hello-ok.features.eventsमें एक live Talk event channel advertise करें:talk.event। - पुराने realtime HTTP endpoint और किसी भी request-time instruction override path को delete करें।
createTalkEventSequencer(...) सीधे call नहीं करना चाहिए, जब तक कि वह कोई low-level adapter या test fixture implement न कर रहा हो। shared controller को prefer करें ताकि turn-scoped events बिना turn id के emit न हो सकें, stale turnEnd /
turnCancel calls किसी नए active turn को clear न कर सकें, और output-audio lifecycle events telephony, meetings, browser relay, managed-room handoff, और native Talk clients में consistent रहें।
Target public API shape यह है:
talk.client.create का उपयोग करते हैं, क्योंकि browser provider negotiation और media transport own करता है, जबकि Gateway credentials, instructions, और tool policy own करता है। talk.session.* gateway-relay realtime, gateway-relay transcription, और managed-room native STT/TTS sessions के लिए common Gateway-managed surface है।
Legacy configs जिन्होंने realtime selectors को talk.provider /
talk.providers के पास रखा था, उन्हें openclaw doctor --fix से repair किया जाना चाहिए; runtime Talk speech/TTS provider config को realtime provider config के रूप में reinterpret नहीं करता।
Supported talk.session.create combinations जानबूझकर छोटे रखे गए हैं:
| Mode | Transport | Brain | Owner | Notes |
|---|---|---|---|---|
realtime | gateway-relay | agent-consult | Gateway | Gateway के जरिए bridged full-duplex provider audio; tool calls agent-consult tool के जरिए route होते हैं। |
transcription | gateway-relay | none | Gateway | केवल Streaming STT; callers input audio भेजते हैं और transcript events receive करते हैं। |
stt-tts | managed-room | agent-consult | Native/client room | Push-to-talk और walkie-talkie style rooms, जहां client capture/playback own करता है और Gateway turn state own करता है। |
stt-tts | managed-room | direct-tools | Native/client room | trusted first-party surfaces के लिए admin-only room mode, जो Gateway tool actions को सीधे execute करते हैं। |
| Old | New |
|---|---|
talk.realtime.session | talk.client.create |
talk.realtime.toolCall | talk.client.toolCall |
talk.realtime.relayAudio | talk.session.appendAudio |
talk.realtime.relayCancel | talk.session.cancelOutput or talk.session.cancelTurn |
talk.realtime.relayToolResult | talk.session.submitToolResult |
talk.realtime.relayStop | talk.session.close |
talk.transcription.session | talk.session.create({ mode: "transcription" }) |
talk.transcription.relayAudio | talk.session.appendAudio |
talk.transcription.relayCancel | talk.session.cancelTurn |
talk.transcription.relayStop | talk.session.close |
talk.handoff.create | talk.session.create({ transport: "managed-room" }) |
talk.handoff.join | talk.session.join |
talk.handoff.revoke | talk.session.close |
| विधि | इस पर लागू | अनुबंध |
|---|---|---|
talk.session.appendAudio | realtime/gateway-relay, transcription/gateway-relay | उसी Gateway कनेक्शन के स्वामित्व वाले प्रदाता सेशन में base64 PCM ऑडियो चंक जोड़ें। |
talk.session.startTurn | stt-tts/managed-room | managed-room उपयोगकर्ता टर्न शुरू करें। |
talk.session.endTurn | stt-tts/managed-room | stale-turn सत्यापन के बाद सक्रिय टर्न समाप्त करें। |
talk.session.cancelTurn | सभी Gateway-स्वामित्व वाले सेशन | किसी टर्न के लिए सक्रिय capture/provider/agent/TTS कार्य रद्द करें। |
talk.session.cancelOutput | realtime/gateway-relay | उपयोगकर्ता टर्न को अनिवार्य रूप से समाप्त किए बिना असिस्टेंट ऑडियो आउटपुट रोकें। |
talk.session.submitToolResult | realtime/gateway-relay | relay द्वारा उत्सर्जित प्रदाता टूल कॉल पूरा करें; अंतरिम आउटपुट के लिए options.willContinue या किसी अन्य असिस्टेंट प्रतिक्रिया के बिना कॉल पूरा करने के लिए options.suppressResponse पास करें। |
talk.session.steer | agent-समर्थित Talk सेशन | Talk सेशन से resolved सक्रिय embedded run को बोले गए status, steer, cancel, या followup नियंत्रण भेजें। |
talk.session.close | सभी एकीकृत सेशन | relay सेशन रोकें या managed-room स्थिति निरस्त करें, फिर एकीकृत सेशन id भूल जाएं। |
संगतता नीति
external plugins के लिए, संगतता कार्य इस क्रम का पालन करता है:- नया अनुबंध जोड़ें
- पुराने व्यवहार को compatibility adapter के माध्यम से wired रखें
- ऐसा diagnostic या warning उत्सर्जित करें जो पुराने पथ और प्रतिस्थापन का नाम बताए
- दोनों पथों को tests में cover करें
- deprecation और migration path को document करें
- announced migration window के बाद ही हटाएं, आम तौर पर major release में
pnpm plugins:boundary-report से कर सकते हैं। compact counts के लिए pnpm plugins:boundary-report:summary, एक Plugin या compatibility owner के लिए --owner <id>, और
जब CI gate को due compatibility records, cross-owner reserved SDK imports, या unused reserved SDK
subpaths पर fail होना चाहिए तब
pnpm plugins:boundary-report:ci का उपयोग करें। report deprecated
compatibility records को removal date के अनुसार group करती है, local code/docs references गिनती है,
cross-owner reserved SDK imports surface करती है, और private
memory-host SDK bridge को summarize करती है ताकि compatibility cleanup ad hoc searches पर
निर्भर रहने के बजाय explicit रहे। Reserved SDK subpaths में tracked owner usage होना चाहिए;
unused reserved helper exports को public SDK से हटा देना चाहिए।
यदि कोई manifest field अभी भी स्वीकार किया जाता है, तो plugin authors उसे तब तक use कर सकते हैं जब तक
docs और diagnostics अन्यथा न कहें। नए code को documented
replacement को prefer करना चाहिए, लेकिन मौजूदा plugins ordinary minor
releases के दौरान break नहीं होने चाहिए।
migrate कैसे करें
Migrate runtime config load/write helpers
api.runtime.config.loadConfig() और
api.runtime.config.writeConfigFile(...) को सीधे call करना बंद कर देना चाहिए। उस config को prefer करें जो
active call path में पहले से pass किया गया था। Long-lived handlers जिन्हें
current process snapshot चाहिए, वे api.runtime.config.current() का उपयोग कर सकते हैं। Long-lived
agent tools को execute के अंदर tool context के ctx.getRuntimeConfig() का उपयोग करना चाहिए
ताकि config write से पहले बनाया गया tool भी refreshed
runtime config देख सके।Config writes को transactional helpers से गुजरना चाहिए और एक
after-write policy चुननी चाहिए:afterWrite: { mode: "restart", reason: "..." } का उपयोग करें, और
afterWrite: { mode: "none", reason: "..." } का उपयोग केवल तब करें जब caller follow-up का स्वामी हो और जानबूझकर reload planner को suppress करना चाहता हो।
Mutation results में tests और logging के लिए typed followUp summary शामिल होती है;
restart लागू करने या schedule करने की जिम्मेदारी gateway की रहती है।
loadConfig और writeConfigFile migration window के दौरान external plugins के लिए deprecated compatibility
helpers के रूप में बने रहते हैं और
runtime-config-load-write compatibility code के साथ एक बार warn करते हैं। Bundled plugins और repo
runtime code को scanner guardrails द्वारा
pnpm check:deprecated-api-usage और
pnpm check:no-runtime-action-load-config में protect किया जाता है: नया production plugin usage
सीधे fail होता है, direct config writes fail होते हैं, gateway server methods को
request runtime snapshot का उपयोग करना चाहिए, runtime channel send/action/client helpers को
अपने boundary से config receive करना चाहिए, और long-lived runtime modules में
ambient loadConfig() calls की allowed संख्या zero है।नए plugin code को broad
openclaw/plugin-sdk/config-runtime compatibility barrel import करने से भी बचना चाहिए। job से match करने वाले narrow
SDK subpath का उपयोग करें:| आवश्यकता | Import |
|---|---|
OpenClawConfig जैसे config types | openclaw/plugin-sdk/config-contracts |
| Already-loaded config assertions और plugin-entry config lookup | openclaw/plugin-sdk/plugin-config-runtime |
| Current runtime snapshot reads | openclaw/plugin-sdk/runtime-config-snapshot |
| Config writes | openclaw/plugin-sdk/config-mutation |
| Session store helpers | openclaw/plugin-sdk/session-store-runtime |
| Markdown table config | openclaw/plugin-sdk/markdown-table-runtime |
| Group policy runtime helpers | openclaw/plugin-sdk/runtime-group-policy |
| Secret input resolution | openclaw/plugin-sdk/secret-input-runtime |
| Model/session overrides | openclaw/plugin-sdk/model-session-runtime |
Migrate embedded tool-result extensions to middleware
api.registerEmbeddedExtensionFactory(...) tool-result handlers को
runtime-neutral middleware से replace करना होगा।contracts.agentToolResultMiddleware में हर targeted runtime declare करें। Undeclared installed middleware
registrations reject किए जाते हैं।Migrate approval-native handlers to capability facts
approvalCapability.nativeRuntime और shared runtime-context registry के माध्यम से expose करते हैं।मुख्य बदलाव:approvalCapability.handler.loadRuntime(...)कोapprovalCapability.nativeRuntimeसे replace करें- approval-specific auth/delivery को legacy
plugin.auth/plugin.approvalswiring से हटाकरapprovalCapabilityपर move करें ChannelPlugin.approvalsको public channel-plugin contract से हटा दिया गया है; delivery/native/render fields कोapprovalCapabilityपर move करेंplugin.authकेवल channel login/logout flows के लिए रहता है; core अब वहां approval auth hooks नहीं पढ़ता- clients, tokens, या Bolt
apps जैसे channel-owned runtime objects को
openclaw/plugin-sdk/channel-runtime-contextके माध्यम से register करें - native approval handlers से plugin-owned reroute notices न भेजें; core अब actual delivery results से routed-elsewhere notices का स्वामी है
createChannelManager(...)मेंchannelRuntimepass करते समय, realcreatePluginRuntime().channelsurface प्रदान करें। Partial stubs reject किए जाते हैं।
/plugins/sdk-channel-plugins देखें।Audit Windows wrapper fallback behavior
openclaw/plugin-sdk/windows-spawn का उपयोग करता है, तो unresolved Windows
.cmd/.bat wrappers अब fail closed होते हैं, जब तक आप स्पष्ट रूप से
allowShellFallback: true pass न करें।allowShellFallback set न करें और thrown error को handle करें।Replace with focused imports
| पुराना इम्पोर्ट | आधुनिक समतुल्य |
|---|---|
resolveAgentDir | api.runtime.agent.resolveAgentDir |
resolveAgentWorkspaceDir | api.runtime.agent.resolveAgentWorkspaceDir |
resolveAgentIdentity | api.runtime.agent.resolveAgentIdentity |
resolveThinkingDefault | api.runtime.agent.resolveThinkingDefault |
resolveAgentTimeoutMs | api.runtime.agent.resolveAgentTimeoutMs |
ensureAgentWorkspace | api.runtime.agent.ensureAgentWorkspace |
| session store helpers | api.runtime.agent.session.* |
Replace broad infra-runtime imports
openclaw/plugin-sdk/infra-runtime बाहरी संगतता के लिए अभी भी मौजूद है,
लेकिन नए कोड को वही केंद्रित helper surface इम्पोर्ट करना चाहिए जिसकी
उसे वास्तव में आवश्यकता है:| आवश्यकता | इम्पोर्ट |
|---|---|
| सिस्टम इवेंट queue helpers | openclaw/plugin-sdk/system-event-runtime |
| Heartbeat wake, event, और visibility helpers | openclaw/plugin-sdk/heartbeat-runtime |
| लंबित delivery queue drain | openclaw/plugin-sdk/delivery-queue-runtime |
| चैनल activity telemetry | openclaw/plugin-sdk/channel-activity-runtime |
| इन-मेमोरी dedupe caches | openclaw/plugin-sdk/dedupe-runtime |
| सुरक्षित local-file/media path helpers | openclaw/plugin-sdk/file-access-runtime |
| Dispatcher-aware fetch | openclaw/plugin-sdk/runtime-fetch |
| Proxy और guarded fetch helpers | openclaw/plugin-sdk/fetch-runtime |
| SSRF dispatcher policy types | openclaw/plugin-sdk/ssrf-dispatcher |
| Approval request/resolution types | openclaw/plugin-sdk/approval-runtime |
| Approval reply payload और command helpers | openclaw/plugin-sdk/approval-reply-runtime |
| Error formatting helpers | openclaw/plugin-sdk/error-runtime |
| Transport readiness waits | openclaw/plugin-sdk/transport-ready-runtime |
| सुरक्षित token helpers | openclaw/plugin-sdk/secure-random-runtime |
| सीमित async task concurrency | openclaw/plugin-sdk/concurrency-runtime |
| Numeric coercion | openclaw/plugin-sdk/number-runtime |
| Process-local async lock | openclaw/plugin-sdk/async-lock-runtime |
| File locks | openclaw/plugin-sdk/file-lock |
infra-runtime के विरुद्ध scanner-guarded रखा गया है,
इसलिए repo code व्यापक barrel पर वापस नहीं जा सकता।Migrate channel route helpers
openclaw/plugin-sdk/channel-route का उपयोग करना चाहिए।
पुराने route-key और comparable-target नाम migration window के दौरान compatibility
aliases के रूप में बने रहते हैं, लेकिन नए Plugin को वे route नाम उपयोग करने
चाहिए जो behavior को सीधे वर्णित करते हैं:| पुराना helper | आधुनिक helper |
|---|---|
channelRouteIdentityKey(...) | channelRouteDedupeKey(...) |
channelRouteKey(...) | channelRouteCompactKey(...) |
ComparableChannelTarget | ChannelRouteParsedTarget |
comparableChannelTargetsMatch(...) | channelRouteTargetsMatchExact(...) |
comparableChannelTargetsShareRoute(...) | channelRouteTargetsShareConversation(...) |
{ channel, to, accountId, threadId }
को लगातार normalize करते हैं।ChannelMessagingAdapter.parseExplicitTarget या parser-backed loaded-route
helpers (parseExplicitTargetForLoadedChannel या
resolveRouteTargetForLoadedChannel) या plugin-sdk/channel-route से
resolveChannelRouteTargetWithParser(...) के नए उपयोग न जोड़ें।
ये hooks deprecated हैं और migration window के दौरान केवल पुराने Plugin के
लिए बने रहते हैं। नए channel Plugin को target id normalization और
directory-miss fallback के लिए messaging.targetResolver.resolveTarget(...),
जब core को early peer kind चाहिए तब messaging.inferTargetChatType(...),
और provider-native session और thread identity के लिए
messaging.resolveOutboundSessionRoute(...) का उपयोग करना चाहिए।इम्पोर्ट path reference
सामान्य import path तालिका
सामान्य import path तालिका
| Import path | उद्देश्य | मुख्य exports |
|---|---|---|
plugin-sdk/plugin-entry | कैननिकल Plugin entry helper | definePluginEntry |
plugin-sdk/core | channel entry परिभाषाओं/builders के लिए legacy umbrella re-export | defineChannelPluginEntry, createChatChannelPlugin |
plugin-sdk/config-schema | root config schema export | OpenClawSchema |
plugin-sdk/provider-entry | single-provider entry helper | defineSingleProviderPluginEntry |
plugin-sdk/channel-core | केंद्रित channel entry परिभाषाएँ और builders | defineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase |
plugin-sdk/setup | साझा setup wizard helpers | Setup translator, allowlist prompts, setup status builders |
plugin-sdk/setup-runtime | setup-time runtime helpers | createSetupTranslator, import-safe setup patch adapters, lookup-note helpers, promptResolvedAllowFrom, splitSetupEntries, delegated setup proxies |
plugin-sdk/setup-adapter-runtime | अप्रचलित setup adapter alias | plugin-sdk/setup-runtime का उपयोग करें |
plugin-sdk/setup-tools | setup tooling helpers | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
plugin-sdk/account-core | multi-account helpers | account list/config/action-gate helpers |
plugin-sdk/account-id | account-id helpers | DEFAULT_ACCOUNT_ID, account-id normalization |
plugin-sdk/account-resolution | account lookup helpers | account lookup + default-fallback helpers |
plugin-sdk/account-helpers | संकीर्ण account helpers | account list/account-action helpers |
plugin-sdk/channel-setup | setup wizard adapters | createOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, साथ में DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries |
plugin-sdk/channel-pairing | DM pairing primitives | createChannelPairingController |
plugin-sdk/channel-reply-pipeline | reply prefix, typing, और source-delivery wiring | createChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode |
plugin-sdk/channel-config-helpers | config adapter factories और DM access helpers | createHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases |
plugin-sdk/channel-config-schema | config schema builders | साझा channel config schema primitives और केवल generic builder |
plugin-sdk/bundled-channel-config-schema | bundled config schemas | केवल OpenClaw-maintained bundled plugins; नए plugins को plugin-local schemas परिभाषित करने होंगे |
plugin-sdk/channel-config-schema-legacy | अप्रचलित bundled config schemas | केवल compatibility alias; maintained bundled plugins के लिए plugin-sdk/bundled-channel-config-schema का उपयोग करें |
plugin-sdk/telegram-command-config | Telegram command config helpers | command-name normalization, description trimming, duplicate/conflict validation |
plugin-sdk/channel-policy | group/DM policy resolution | resolveChannelGroupRequireMention |
plugin-sdk/channel-lifecycle | अप्रचलित compatibility facade | plugin-sdk/channel-outbound का उपयोग करें |
plugin-sdk/inbound-envelope | inbound envelope helpers | साझा route + envelope builder helpers |
plugin-sdk/channel-inbound | inbound receive helpers | context building, formatting, roots, runners, prepared reply dispatch, और dispatch predicates |
plugin-sdk/messaging-targets | अप्रचलित target parsing import path | generic target parsing helpers के लिए plugin-sdk/channel-targets, route comparison के लिए plugin-sdk/channel-route, और provider-specific target resolution के लिए plugin-owned messaging.targetResolver / messaging.resolveOutboundSessionRoute का उपयोग करें |
plugin-sdk/outbound-media | outbound media helpers | साझा outbound media loading |
plugin-sdk/outbound-send-deps | अप्रचलित compatibility facade | plugin-sdk/channel-outbound का उपयोग करें |
plugin-sdk/channel-outbound | outbound message lifecycle helpers | message adapters, receipts, durable send helpers, live preview/streaming helpers, reply options, lifecycle helpers, outbound identity, और payload planning |
plugin-sdk/channel-streaming | अप्रचलित compatibility facade | plugin-sdk/channel-outbound का उपयोग करें |
plugin-sdk/outbound-runtime | अप्रचलित compatibility facade | plugin-sdk/channel-outbound का उपयोग करें |
plugin-sdk/thread-bindings-runtime | thread-binding helpers | thread-binding lifecycle और adapter helpers |
plugin-sdk/agent-media-payload | legacy media payload helpers | legacy field layouts के लिए agent media payload builder |
plugin-sdk/channel-runtime | अप्रचलित compatibility shim | केवल legacy channel runtime utilities |
plugin-sdk/channel-send-result | send result types | reply result types |
plugin-sdk/runtime-store | persistent Plugin storage | createPluginRuntimeStore |
plugin-sdk/runtime | व्यापक runtime helpers | runtime/logging/backup/plugin-install helpers |
plugin-sdk/runtime-env | संकीर्ण runtime env helpers | logger/runtime env, timeout, retry, और backoff helpers |
plugin-sdk/plugin-runtime | साझा Plugin runtime helpers | Plugin commands/hooks/http/interactive helpers |
plugin-sdk/hook-runtime | hook pipeline helpers | साझा Webhook/internal hook pipeline helpers |
plugin-sdk/lazy-runtime | lazy runtime helpers | createLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface |
plugin-sdk/process-runtime | process helpers | साझा exec helpers |
plugin-sdk/cli-runtime | CLI runtime helpers | command formatting, waits, version helpers |
plugin-sdk/gateway-runtime | Gateway helpers | Gateway client, event-loop-ready start helper, और channel-status patch helpers |
plugin-sdk/config-runtime | अप्रचलित config compatibility shim | config-contracts, plugin-config-runtime, runtime-config-snapshot, और config-mutation को प्राथमिकता दें |
plugin-sdk/telegram-command-config | Telegram command helpers | bundled Telegram contract surface अनुपलब्ध होने पर fallback-stable Telegram command validation helpers |
plugin-sdk/approval-runtime | approval prompt helpers | exec/Plugin approval payload, approval capability/profile helpers, native approval routing/runtime helpers, और structured approval display path formatting |
plugin-sdk/approval-auth-runtime | approval auth helpers | approver resolution, same-chat action auth |
plugin-sdk/approval-client-runtime | approval client helpers | native exec approval profile/filter helpers |
plugin-sdk/approval-delivery-runtime | approval delivery helpers | native approval capability/delivery adapters |
plugin-sdk/approval-gateway-runtime | approval Gateway helpers | साझा approval Gateway-resolution helper |
plugin-sdk/approval-handler-adapter-runtime | approval adapter helpers | hot channel entrypoints के लिए हल्के native approval adapter loading helpers |
plugin-sdk/approval-handler-runtime | approval handler helpers | व्यापक approval handler runtime helpers; पर्याप्त होने पर संकीर्ण adapter/Gateway seams को प्राथमिकता दें |
plugin-sdk/approval-native-runtime | approval target helpers | native approval target/account binding helpers |
plugin-sdk/approval-reply-runtime | approval reply helpers | exec/Plugin approval reply payload helpers |
plugin-sdk/channel-runtime-context | channel runtime-context helpers | generic channel runtime-context register/get/watch helpers |
plugin-sdk/security-runtime | security helpers | साझा trust, DM gating, root-bounded file/path helpers, external-content, और secret-collection helpers |
plugin-sdk/ssrf-policy | SSRF policy helpers | host allowlist और private-network policy helpers |
plugin-sdk/ssrf-runtime | SSRF runtime helpers | pinned-dispatcher, guarded fetch, SSRF policy helpers |
plugin-sdk/system-event-runtime | system event helpers | enqueueSystemEvent, peekSystemEventEntries |
plugin-sdk/heartbeat-runtime | Heartbeat helpers | Heartbeat wake, event, और visibility helpers |
plugin-sdk/delivery-queue-runtime | delivery queue helpers | drainPendingDeliveries |
plugin-sdk/channel-activity-runtime | channel activity helpers | recordChannelActivity |
plugin-sdk/dedupe-runtime | dedupe helpers | in-memory dedupe caches |
plugin-sdk/file-access-runtime | file access helpers | सुरक्षित local-file/media path helpers |
plugin-sdk/transport-ready-runtime | transport readiness helpers | waitForTransportReady |
plugin-sdk/exec-approvals-runtime | exec approval policy helpers | loadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile |
plugin-sdk/collection-runtime | bounded cache helpers | pruneMapToMaxSize |
plugin-sdk/diagnostic-runtime | diagnostic gating helpers | isDiagnosticFlagEnabled, isDiagnosticsEnabled |
plugin-sdk/error-runtime | error formatting helpers | formatUncaughtError, isApprovalNotFoundError, error graph helpers |
plugin-sdk/fetch-runtime | wrapped fetch/proxy helpers | resolveFetch, proxy helpers, EnvHttpProxyAgent option helpers |
plugin-sdk/host-runtime | host normalization helpers | normalizeHostname, normalizeScpRemoteHost |
plugin-sdk/retry-runtime | retry helpers | RetryConfig, retryAsync, policy runners |
plugin-sdk/allow-from | allowlist formatting और input mapping | formatAllowFromLowercase, mapAllowlistResolutionInputs |
plugin-sdk/command-auth | command gating और command-surface helpers | resolveControlCommandGate, sender-authorization helpers, dynamic argument menu formatting सहित command registry helpers |
plugin-sdk/command-status | command status/help renderers | buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage |
plugin-sdk/secret-input | secret input parsing | secret input helpers |
plugin-sdk/webhook-ingress | Webhook request helpers | Webhook target utilities |
plugin-sdk/webhook-request-guards | Webhook body guard helpers | request body read/limit helpers |
plugin-sdk/reply-runtime | साझा reply runtime | inbound dispatch, Heartbeat, reply planner, chunking |
plugin-sdk/reply-dispatch-runtime | संकीर्ण reply dispatch helpers | finalize, provider dispatch, और conversation-label helpers |
plugin-sdk/reply-history | reply-history helpers | createChannelHistoryWindow; deprecated map-helper compatibility exports जैसे buildPendingHistoryContextFromMap, recordPendingHistoryEntry, और clearHistoryEntriesIfEnabled |
plugin-sdk/reply-reference | reply reference planning | createReplyReferencePlanner |
plugin-sdk/reply-chunking | reply chunk helpers | text/markdown chunking helpers |
plugin-sdk/session-store-runtime | session store helpers | store path + updated-at helpers |
plugin-sdk/state-paths | state path helpers | state और OAuth dir helpers |
plugin-sdk/routing | रूटिंग/सेशन-की सहायक | resolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, सेशन-की सामान्यीकरण सहायक |
plugin-sdk/status-helpers | चैनल स्थिति सहायक | चैनल/खाता स्थिति सारांश निर्माता, रनटाइम-स्थिति डिफ़ॉल्ट, समस्या मेटाडेटा सहायक |
plugin-sdk/target-resolver-runtime | लक्ष्य रिज़ॉल्वर सहायक | साझा लक्ष्य रिज़ॉल्वर सहायक |
plugin-sdk/string-normalization-runtime | स्ट्रिंग सामान्यीकरण सहायक | स्लग/स्ट्रिंग सामान्यीकरण सहायक |
plugin-sdk/request-url | अनुरोध URL सहायक | अनुरोध-जैसे इनपुट से स्ट्रिंग URL निकालें |
plugin-sdk/run-command | समयबद्ध कमांड सहायक | सामान्यीकृत stdout/stderr के साथ समयबद्ध कमांड रनर |
plugin-sdk/param-readers | पैरामीटर रीडर | सामान्य टूल/CLI पैरामीटर रीडर |
plugin-sdk/tool-payload | टूल पेलोड निष्कर्षण | टूल परिणाम ऑब्जेक्ट से सामान्यीकृत पेलोड निकालें |
plugin-sdk/tool-send | टूल भेजने का निष्कर्षण | टूल आर्ग्युमेंट से कैननिकल भेजने-लक्ष्य फ़ील्ड निकालें |
plugin-sdk/temp-path | अस्थायी पथ सहायक | साझा अस्थायी-डाउनलोड पथ सहायक |
plugin-sdk/logging-core | लॉगिंग सहायक | उपप्रणाली लॉगर और रिडैक्शन सहायक |
plugin-sdk/markdown-table-runtime | Markdown-तालिका सहायक | Markdown तालिका मोड सहायक |
plugin-sdk/reply-payload | संदेश उत्तर प्रकार | उत्तर पेलोड प्रकार |
plugin-sdk/provider-setup | चुने हुए स्थानीय/स्व-होस्टेड प्रदाता सेटअप सहायक | स्व-होस्टेड प्रदाता खोज/कॉन्फ़िगरेशन सहायक |
plugin-sdk/self-hosted-provider-setup | केंद्रित OpenAI-संगत स्व-होस्टेड प्रदाता सेटअप सहायक | वही स्व-होस्टेड प्रदाता खोज/कॉन्फ़िगरेशन सहायक |
plugin-sdk/provider-auth-runtime | प्रदाता रनटाइम प्रमाणीकरण सहायक | रनटाइम API-की रिज़ॉल्यूशन सहायक |
plugin-sdk/provider-auth-api-key | प्रदाता API-की सेटअप सहायक | API-की ऑनबोर्डिंग/प्रोफ़ाइल-लेखन सहायक |
plugin-sdk/provider-auth-result | प्रदाता प्रमाणीकरण-परिणाम सहायक | मानक OAuth प्रमाणीकरण-परिणाम निर्माता |
plugin-sdk/provider-selection-runtime | प्रदाता चयन सहायक | कॉन्फ़िगर-या-स्वचालित प्रदाता चयन और कच्चे प्रदाता कॉन्फ़िगरेशन मर्जिंग |
plugin-sdk/provider-env-vars | प्रदाता env-var सहायक | प्रदाता प्रमाणीकरण env-var लुकअप सहायक |
plugin-sdk/provider-model-shared | साझा प्रदाता मॉडल/रीप्ले सहायक | ProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, साझा रीप्ले-नीति निर्माता, प्रदाता-एंडपॉइंट सहायक, और मॉडल-id सामान्यीकरण सहायक |
plugin-sdk/provider-catalog-shared | साझा प्रदाता कैटलॉग सहायक | findCatalogTemplate, buildSingleProviderApiKeyCatalog, buildManifestModelProviderConfig, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat |
plugin-sdk/provider-onboard | प्रदाता ऑनबोर्डिंग पैच | ऑनबोर्डिंग कॉन्फ़िगरेशन सहायक |
plugin-sdk/provider-http | प्रदाता HTTP सहायक | सामान्य प्रदाता HTTP/एंडपॉइंट क्षमता सहायक, जिनमें ऑडियो ट्रांसक्रिप्शन मल्टीपार्ट फ़ॉर्म सहायक शामिल हैं |
plugin-sdk/provider-web-fetch | प्रदाता web-fetch सहायक | Web-fetch प्रदाता पंजीकरण/कैश सहायक |
plugin-sdk/provider-web-search-config-contract | प्रदाता web-search कॉन्फ़िगरेशन सहायक | उन प्रदाताओं के लिए संकीर्ण web-search कॉन्फ़िगरेशन/क्रेडेंशियल सहायक जिन्हें plugin-enable वायरिंग की आवश्यकता नहीं होती |
plugin-sdk/provider-web-search-contract | प्रदाता web-search अनुबंध सहायक | संकीर्ण web-search कॉन्फ़िगरेशन/क्रेडेंशियल अनुबंध सहायक जैसे createWebSearchProviderContractFields, enablePluginInConfig, resolveProviderWebSearchPluginConfig, और स्कोप किए गए क्रेडेंशियल सेटर/गेटर |
plugin-sdk/provider-web-search | प्रदाता web-search सहायक | Web-search प्रदाता पंजीकरण/कैश/रनटाइम सहायक |
plugin-sdk/provider-tools | प्रदाता टूल/स्कीमा संगतता सहायक | ProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, और DeepSeek/Gemini/OpenAI स्कीमा सफ़ाई + निदान |
plugin-sdk/provider-usage | प्रदाता उपयोग सहायक | fetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage, और अन्य प्रदाता उपयोग सहायक |
plugin-sdk/provider-stream | प्रदाता स्ट्रीम रैपर सहायक | ProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, स्ट्रीम रैपर प्रकार, और साझा Anthropic/Bedrock/DeepSeek V4/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot रैपर सहायक |
plugin-sdk/provider-transport-runtime | प्रदाता ट्रांसपोर्ट सहायक | नेटिव प्रदाता ट्रांसपोर्ट सहायक जैसे guarded fetch, ट्रांसपोर्ट संदेश रूपांतरण, और लिखने योग्य ट्रांसपोर्ट इवेंट स्ट्रीम |
plugin-sdk/keyed-async-queue | क्रमबद्ध असिंक कतार | KeyedAsyncQueue |
plugin-sdk/media-runtime | साझा मीडिया सहायक | मीडिया fetch/transform/store सहायक, ffprobe-समर्थित वीडियो आयाम जांच, और मीडिया पेलोड निर्माता |
plugin-sdk/media-generation-runtime | साझा मीडिया-जनरेशन सहायक | छवि/वीडियो/संगीत जनरेशन के लिए साझा failover सहायक, उम्मीदवार चयन, और अनुपलब्ध-मॉडल संदेश |
plugin-sdk/media-understanding | मीडिया-समझ सहायक | मीडिया समझ प्रदाता प्रकार और प्रदाता-सामने छवि/ऑडियो सहायक एक्सपोर्ट |
plugin-sdk/text-runtime | अप्रचलित व्यापक पाठ संगतता एक्सपोर्ट | string-coerce-runtime, text-chunking, text-utility-runtime, और logging-core का उपयोग करें |
plugin-sdk/text-chunking | पाठ खंडन सहायक | आउटबाउंड पाठ खंडन सहायक |
plugin-sdk/speech | वाक् सहायक | वाक् प्रदाता प्रकार और प्रदाता-सामने निर्देश, रजिस्ट्री, सत्यापन सहायक, और OpenAI-संगत TTS निर्माता |
plugin-sdk/speech-core | साझा वाक् कोर | वाक् प्रदाता प्रकार, रजिस्ट्री, निर्देश, सामान्यीकरण |
plugin-sdk/realtime-transcription | रियलटाइम ट्रांसक्रिप्शन सहायक | प्रदाता प्रकार, रजिस्ट्री सहायक, और साझा WebSocket सेशन सहायक |
plugin-sdk/realtime-voice | रियलटाइम वॉइस सहायक | प्रदाता प्रकार, रजिस्ट्री/रिज़ॉल्यूशन सहायक, ब्रिज सेशन सहायक, साझा एजेंट talk-back कतारें, सक्रिय-run वॉइस नियंत्रण, ट्रांसक्रिप्ट/इवेंट स्वास्थ्य, echo suppression, consult प्रश्न मिलान, forced-consult समन्वय, turn-context ट्रैकिंग, आउटपुट गतिविधि ट्रैकिंग, और तेज़ संदर्भ consult सहायक |
plugin-sdk/image-generation | छवि-जनरेशन सहायक | छवि जनरेशन प्रदाता प्रकार और छवि एसेट/डेटा URL सहायक तथा OpenAI-संगत छवि प्रदाता निर्माता |
plugin-sdk/image-generation-core | साझा छवि-जनरेशन कोर | छवि-जनरेशन प्रकार, failover, प्रमाणीकरण, और रजिस्ट्री सहायक |
plugin-sdk/music-generation | संगीत-जनरेशन सहायक | संगीत-जनरेशन प्रदाता/अनुरोध/परिणाम प्रकार |
plugin-sdk/music-generation-core | साझा संगीत-जनरेशन कोर | संगीत-जनरेशन प्रकार, failover सहायक, प्रदाता लुकअप, और model-ref पार्सिंग |
plugin-sdk/video-generation | वीडियो-जनरेशन सहायक | वीडियो-जनरेशन प्रदाता/अनुरोध/परिणाम प्रकार |
plugin-sdk/video-generation-core | साझा वीडियो-जनरेशन कोर | वीडियो-जनरेशन प्रकार, failover सहायक, प्रदाता लुकअप, और model-ref पार्सिंग |
plugin-sdk/interactive-runtime | इंटरैक्टिव उत्तर सहायक | इंटरैक्टिव उत्तर पेलोड सामान्यीकरण/घटाना |
plugin-sdk/channel-config-primitives | चैनल कॉन्फ़िगरेशन प्रिमिटिव | संकीर्ण चैनल कॉन्फ़िगरेशन-स्कीमा प्रिमिटिव |
plugin-sdk/channel-config-writes | चैनल कॉन्फ़िगरेशन-लेखन सहायक | चैनल कॉन्फ़िगरेशन-लेखन प्राधिकरण सहायक |
plugin-sdk/channel-plugin-common | साझा चैनल प्रस्तावना | साझा चैनल Plugin प्रस्तावना एक्सपोर्ट |
plugin-sdk/channel-status | चैनल स्थिति सहायक | साझा चैनल स्थिति स्नैपशॉट/सारांश सहायक |
plugin-sdk/allowlist-config-edit | Allowlist कॉन्फ़िगरेशन सहायक | Allowlist कॉन्फ़िगरेशन संपादन/पठन सहायक |
plugin-sdk/group-access | समूह पहुंच सहायक | साझा समूह-पहुंच निर्णय सहायक |
plugin-sdk/direct-dm, plugin-sdk/direct-dm-access | अप्रचलित संगतता फ़साड | plugin-sdk/channel-inbound का उपयोग करें |
plugin-sdk/direct-dm-guard-policy | Direct-DM guard सहायक | संकीर्ण pre-crypto guard नीति सहायक |
plugin-sdk/extension-shared | साझा एक्सटेंशन सहायक | passive-channel/status और ambient proxy सहायक प्रिमिटिव |
plugin-sdk/webhook-targets | Webhook लक्ष्य सहायक | Webhook लक्ष्य रजिस्ट्री और route-install सहायक |
plugin-sdk/webhook-path | अप्रचलित Webhook पथ उपनाम | plugin-sdk/webhook-ingress का उपयोग करें |
plugin-sdk/web-media | साझा वेब मीडिया सहायक | रिमोट/स्थानीय मीडिया लोडिंग सहायक |
plugin-sdk/zod | अप्रचलित Zod संगतता पुनः-एक्सपोर्ट | zod से सीधे zod आयात करें |
plugin-sdk/memory-core | बंडल किए गए memory-core सहायक | मेमरी प्रबंधक/कॉन्फ़िगरेशन/फ़ाइल/CLI सहायक सतह |
plugin-sdk/memory-core-engine-runtime | मेमरी इंजन रनटाइम फ़साड | मेमरी इंडेक्स/खोज रनटाइम फ़साड |
plugin-sdk/memory-core-host-embedding-registry | मेमरी एम्बेडिंग रजिस्ट्री | हल्के मेमरी एम्बेडिंग प्रदाता रजिस्ट्री सहायक |
plugin-sdk/memory-core-host-engine-foundation | मेमरी होस्ट फ़ाउंडेशन इंजन | मेमरी होस्ट फ़ाउंडेशन इंजन एक्सपोर्ट |
plugin-sdk/memory-core-host-engine-embeddings | मेमरी होस्ट एम्बेडिंग इंजन | मेमरी एम्बेडिंग अनुबंध, रजिस्ट्री पहुंच, स्थानीय प्रदाता, और सामान्य बैच/रिमोट सहायक; ठोस रिमोट प्रदाता अपने स्वामी plugins में रहते हैं |
plugin-sdk/memory-core-host-engine-qmd | मेमरी होस्ट QMD इंजन | मेमरी होस्ट QMD इंजन एक्सपोर्ट |
plugin-sdk/memory-core-host-engine-storage | मेमरी होस्ट स्टोरेज इंजन | मेमरी होस्ट स्टोरेज इंजन एक्सपोर्ट |
plugin-sdk/memory-core-host-multimodal | मेमरी होस्ट मल्टीमॉडल सहायक | मेमरी होस्ट मल्टीमॉडल सहायक |
plugin-sdk/memory-core-host-query | मेमरी होस्ट क्वेरी सहायक | मेमरी होस्ट क्वेरी सहायक |
plugin-sdk/memory-core-host-secret | मेमरी होस्ट सीक्रेट सहायक | मेमरी होस्ट सीक्रेट सहायक |
plugin-sdk/memory-core-host-events | अप्रचलित मेमरी इवेंट उपनाम | plugin-sdk/memory-host-events का उपयोग करें |
plugin-sdk/memory-core-host-status | मेमरी होस्ट स्थिति सहायक | मेमरी होस्ट स्थिति सहायक |
plugin-sdk/memory-core-host-runtime-cli | मेमरी होस्ट CLI रनटाइम | मेमरी होस्ट CLI रनटाइम सहायक |
plugin-sdk/memory-core-host-runtime-core | मेमरी होस्ट कोर रनटाइम | मेमरी होस्ट कोर रनटाइम सहायक |
plugin-sdk/memory-core-host-runtime-files | मेमरी होस्ट फ़ाइल/रनटाइम सहायक | मेमरी होस्ट फ़ाइल/रनटाइम सहायक |
plugin-sdk/memory-host-core | मेमरी होस्ट कोर रनटाइम उपनाम | मेमरी होस्ट कोर रनटाइम सहायकों के लिए विक्रेता-निरपेक्ष उपनाम |
plugin-sdk/memory-host-events | मेमरी होस्ट इवेंट जर्नल उपनाम | मेमरी होस्ट इवेंट जर्नल सहायकों के लिए विक्रेता-निरपेक्ष उपनाम |
plugin-sdk/memory-host-files | अप्रचलित मेमरी फ़ाइल/रनटाइम उपनाम | plugin-sdk/memory-core-host-runtime-files का उपयोग करें |
plugin-sdk/memory-host-markdown | प्रबंधित markdown सहायक | मेमरी-निकट plugins के लिए साझा प्रबंधित-markdown सहायक |
plugin-sdk/memory-host-search | Active Memory खोज फ़साड | Lazy active-memory खोज-प्रबंधक रनटाइम फ़साड |
plugin-sdk/memory-host-status | अप्रचलित मेमरी होस्ट स्थिति उपनाम | plugin-sdk/memory-core-host-status का उपयोग करें |
plugin-sdk/testing | परीक्षण उपयोगिताएं | रेपो-स्थानीय अप्रचलित संगतता barrel; केंद्रित रेपो-स्थानीय परीक्षण उपपथों का उपयोग करें जैसे plugin-sdk/plugin-test-runtime, plugin-sdk/channel-test-helpers, plugin-sdk/channel-target-testing, plugin-sdk/test-env, और plugin-sdk/test-fixtures |
scripts/lib/plugin-sdk-entrypoints.json में रहती है; package exports
सार्वजनिक उपसमुच्चय से जनरेट किए जाते हैं।
आरक्षित bundled-plugin helper seams को सार्वजनिक SDK
export map से हटा दिया गया है, सिवाय स्पष्ट रूप से प्रलेखित compatibility facades
जैसे deprecated plugin-sdk/discord shim, जिसे प्रकाशित
@openclaw/discord@2026.3.13 package के लिए बनाए रखा गया है। Owner-specific helpers
स्वामित्व रखने वाले Plugin package के अंदर रहते हैं; साझा host behavior को generic SDK
contracts जैसे plugin-sdk/gateway-runtime, plugin-sdk/security-runtime,
और plugin-sdk/plugin-config-runtime के माध्यम से जाना चाहिए।
काम से मेल खाने वाला सबसे संकीर्ण import उपयोग करें। अगर आपको कोई export नहीं मिलता,
तो src/plugin-sdk/ पर source देखें या maintainers से पूछें कि कौन सा generic contract
उसका स्वामी होना चाहिए।
सक्रिय deprecations
Plugin SDK, provider contract, runtime surface, और manifest पर लागू होने वाली संकरी deprecations। इनमें से हर एक आज भी काम करता है, लेकिन भविष्य की major release में हटाया जाएगा। हर item के नीचे दी गई entry पुराने API को उसके canonical replacement से map करती है।command-auth help builders → command-status
command-auth help builders → command-status
openclaw/plugin-sdk/command-auth): buildCommandsMessage,
buildCommandsMessagePaginated, buildHelpMessage.नया (openclaw/plugin-sdk/command-status): वही signatures, वही
exports - बस संकरे subpath से imported। command-auth
इन्हें compat stubs के रूप में re-export करता है।Mention gating helpers → resolveInboundMentionDecision
Mention gating helpers → resolveInboundMentionDecision
openclaw/plugin-sdk/channel-inbound या
openclaw/plugin-sdk/channel-mention-gating से
resolveInboundMentionRequirement({ facts, policy }) और
shouldDropInboundForMention(...)।नया: resolveInboundMentionDecision({ facts, policy }) - दो अलग calls
के बजाय एक single decision object लौटाता है।Downstream channel plugins (Slack, Discord, Matrix, MS Teams) पहले ही
switch कर चुके हैं।Channel runtime shim and channel actions helpers
Channel runtime shim and channel actions helpers
openclaw/plugin-sdk/channel-runtime पुराने channel plugins के लिए compatibility shim है।
नए code से इसे import न करें; runtime objects register करने के लिए
openclaw/plugin-sdk/channel-runtime-context उपयोग करें।openclaw/plugin-sdk/channel-actions में channelActions* helpers
raw “actions” channel exports के साथ deprecated हैं। इसके बजाय semantic
presentation surface के माध्यम से capabilities expose करें - channel plugins
यह declare करते हैं कि वे क्या render करते हैं (cards, buttons, selects), न कि वे कौन से raw
action names स्वीकार करते हैं।Web search provider tool() helper → createTool() on the plugin
Web search provider tool() helper → createTool() on the plugin
openclaw/plugin-sdk/provider-web-search से tool() factory।नया: provider Plugin पर सीधे createTool(...) implement करें।
OpenClaw को tool wrapper register करने के लिए अब SDK helper की जरूरत नहीं है।Plaintext channel envelopes → BodyForAgent
Plaintext channel envelopes → BodyForAgent
formatInboundEnvelope(...) (और
ChannelMessageForAgent.channelEnvelope)।नया: BodyForAgent और structured user-context blocks। Channel
plugins routing metadata (thread, topic, reply-to, reactions) को
prompt string में जोड़ने के बजाय typed fields के रूप में attach करते हैं।
formatAgentEnvelope(...) helper synthesized assistant-facing envelopes के लिए
अभी भी supported है, लेकिन inbound plaintext envelopes हटाए जा रहे हैं।प्रभावित क्षेत्र: inbound_claim, message_received, और कोई भी custom
channel Plugin जिसने channelEnvelope text को post-process किया।deactivate hook → gateway_stop
deactivate hook → gateway_stop
api.on("deactivate", handler)।नया: api.on("gateway_stop", handler)। event और context वही
shutdown cleanup contract हैं; केवल hook name बदलता है।deactivate 2026-08-16 के बाद तक deprecated compatibility alias के रूप में wired रहता है।subagent_spawning hook → core thread binding
subagent_spawning hook → core thread binding
api.on("subagent_spawning", handler) जो
threadBindingReady या deliveryOrigin लौटाता है।नया: core को channel session-binding adapter के माध्यम से thread: true
subagent bindings तैयार करने दें। केवल post-launch observation के लिए
api.on("subagent_spawned", handler) उपयोग करें।subagent_spawning, PluginHookSubagentSpawningEvent,
PluginHookSubagentSpawningResult, और
SubagentLifecycleHookRunner.runSubagentSpawning(...) केवल deprecated
compatibility surfaces के रूप में रहते हैं, जब तक external plugins migrate करते हैं।Provider discovery types → provider catalog types
Provider discovery types → provider catalog types
| पुराना alias | नया type |
|---|---|
ProviderDiscoveryOrder | ProviderCatalogOrder |
ProviderDiscoveryContext | ProviderCatalogContext |
ProviderDiscoveryResult | ProviderCatalogResult |
ProviderPluginDiscovery | ProviderPluginCatalog |
ProviderCapabilities static bag - provider plugins
को static object के बजाय explicit provider hooks जैसे buildReplayPolicy,
normalizeToolSchemas, और wrapStreamFn उपयोग करने चाहिए।Thinking policy hooks → resolveThinkingProfile
Thinking policy hooks → resolveThinkingProfile
ProviderThinkingPolicy पर तीन अलग hooks):
isBinaryThinking(ctx), supportsXHighThinking(ctx), और
resolveDefaultThinkingLevel(ctx)।नया: एक single resolveThinkingProfile(ctx) जो canonical id,
optional label, और ranked level list के साथ ProviderThinkingProfile
लौटाता है। OpenClaw stale stored values को profile rank के आधार पर
automatically downgrade करता है।context में provider, modelId, optional merged reasoning,
और optional merged model compat facts शामिल हैं। Provider plugins उन
catalog facts का उपयोग model-specific profile expose करने के लिए केवल तब कर सकते हैं
जब configured request contract इसका समर्थन करता हो।तीन के बजाय एक hook implement करें। legacy hooks deprecation window के दौरान
काम करते रहेंगे, लेकिन profile result के साथ composed नहीं होते।External auth providers → contracts.externalAuthProviders
External auth providers → contracts.externalAuthProviders
contracts.externalAuthProviders declare करें
और resolveExternalAuthProfiles(...) implement करें।Provider env-var lookup → setup.providers[].envVars
Provider env-var lookup → setup.providers[].envVars
providerAuthEnvVars: { anthropic: ["ANTHROPIC_API_KEY"] }.नया: manifest पर उसी env-var lookup को setup.providers[].envVars
में mirror करें। यह setup/status env metadata को एक जगह consolidate करता है
और env-var lookups का जवाब देने के लिए Plugin runtime boot करने से बचाता है।providerAuthEnvVars compatibility adapter के माध्यम से तब तक supported रहता है
जब तक deprecation window बंद नहीं होती।Memory plugin registration → registerMemoryCapability
Memory plugin registration → registerMemoryCapability
api.registerMemoryPromptSection(...),
api.registerMemoryFlushPlan(...),
api.registerMemoryRuntime(...).नया: memory-state API पर एक call -
registerMemoryCapability(pluginId, { promptBuilder, flushPlanResolver, runtime }).वही slots, single registration call। Additive prompt और corpus helpers
(registerMemoryPromptSupplement, registerMemoryCorpusSupplement) प्रभावित नहीं हैं।Memory embedding provider API
Memory embedding provider API
api.registerMemoryEmbeddingProvider(...) और
contracts.memoryEmbeddingProviders।नया: api.registerEmbeddingProvider(...) और
contracts.embeddingProviders।generic embedding provider contract memory के बाहर भी reusable है और
नए providers के लिए supported path है। memory-specific registration API
deprecated compatibility के रूप में wired रहता है, जब तक existing providers migrate करते हैं।
Plugin inspection non-bundled usage को compatibility debt के रूप में report करता है।Subagent session messages types renamed
Subagent session messages types renamed
src/plugins/runtime/types.ts से अब भी exported दो legacy type aliases:| पुराना | नया |
|---|---|
SubagentReadSessionParams | SubagentGetSessionMessagesParams |
SubagentReadSessionResult | SubagentGetSessionMessagesResult |
readSession को getSessionMessages के पक्ष में deprecated किया गया है।
वही signature; पुराना method नए method को call through करता है।runtime.tasks.flow → runtime.tasks.managedFlows
runtime.tasks.flow → runtime.tasks.managedFlows
runtime.tasks.flow (singular) ने live task-flow accessor लौटाया।नया: runtime.tasks.managedFlows उन plugins के लिए managed TaskFlow mutation
runtime रखता है जो flow से child tasks create, update, cancel, या run करते हैं।
जब Plugin को केवल DTO-based reads चाहिए हों, तब runtime.tasks.flows उपयोग करें।Embedded extension factories → agent tool-result middleware
Embedded extension factories → agent tool-result middleware
api.registerEmbeddedExtensionFactory(...) path
api.registerAgentToolResultMiddleware(...) से replace किया गया है, जिसमें
contracts.agentToolResultMiddleware में explicit runtime list होती है।OpenClawSchemaType alias → OpenClawConfig
OpenClawSchemaType alias → OpenClawConfig
openclaw/plugin-sdk से re-export किया गया OpenClawSchemaType अब
OpenClawConfig के लिए one-line alias है। canonical name को prefer करें।extensions/ के अंतर्गत bundled channel/provider plugins के अंदर extension-level deprecations
उनके अपने api.ts और runtime-api.ts barrels में track की जाती हैं।
वे third-party Plugin contracts को प्रभावित नहीं करतीं और यहां listed नहीं हैं।
अगर आप bundled Plugin का local barrel सीधे consume करते हैं, तो upgrade करने से पहले
उस barrel में deprecation comments पढ़ें।हटाने की समयरेखा
| कब | क्या होता है |
|---|---|
| अब | पदावनत सतहें रनटाइम चेतावनियाँ जारी करती हैं |
| अगला प्रमुख रिलीज़ | पदावनत सतहें हटा दी जाएँगी; जो Plugin अब भी उनका उपयोग कर रहे होंगे वे विफल होंगे |
चेतावनियों को अस्थायी रूप से दबाना
माइग्रेशन पर काम करते समय ये environment variables सेट करें:संबंधित
- शुरू करें - अपना पहला Plugin बनाएँ
- SDK अवलोकन - पूरा subpath import संदर्भ
- Channel Plugins - channel Plugin बनाना
- Provider Plugins - provider Plugin बनाना
- Plugin Internals - आर्किटेक्चर की गहरी जानकारी
- Plugin Manifest - manifest schema संदर्भ