मुख्य सामग्री पर जाएं
OpenClaw एक व्यापक पिछड़ी-संगतता लेयर से हटकर केंद्रित, दस्तावेजीकृत imports वाली आधुनिक Plugin architecture पर आ गया है। यदि आपका Plugin नई architecture से पहले बनाया गया था, तो यह guide आपको migrate करने में मदद करती है।

क्या बदल रहा है

पुराना 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 कर सकता था।
व्यापक import surfaces अब deprecated हैं। वे runtime पर अब भी काम करते हैं, लेकिन नए Plugins को उनका उपयोग नहीं करना चाहिए, और existing Plugins को अगले major release में इन्हें हटाए जाने से पहले migrate कर लेना चाहिए। embedded-runner-only extension factory registration API हटा दी गई है; इसके बजाय tool-result middleware का उपयोग करें। OpenClaw replacement पेश करने वाले उसी change में documented Plugin behavior को remove या reinterpret नहीं करता। Breaking contract changes को पहले compatibility adapter, diagnostics, docs, और deprecation window से गुजरना होगा। यह SDK imports, manifest fields, setup APIs, hooks, और runtime registration behavior पर लागू होता है।
पिछड़ी-संगतता लेयर किसी future major release में हटा दी जाएगी। जो Plugins अब भी इन surfaces से import करते हैं, वे ऐसा होने पर टूट जाएंगे। Legacy embedded extension factory registrations पहले ही अब load नहीं होते।

यह क्यों बदला

पुराने approach ने समस्याएं पैदा कीं:
  • Slow startup - एक helper import करने से दर्जनों असंबंधित modules load हो जाते थे
  • Circular dependencies - व्यापक re-exports से import cycles बनाना आसान हो गया था
  • Unclear API surface - यह बताने का कोई तरीका नहीं था कि कौन से exports stable हैं और कौन से internal
आधुनिक Plugin SDK इसे ठीक करता है: हर import path (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.ts seam में रखता है
  • 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 है:
  1. shared controller/runtime primitives को plugin-sdk/realtime-voice में रखें।
  2. bundled surfaces को shared controller पर move करें: browser relay, managed-room handoff, voice-call realtime, voice-call streaming STT, Google Meet realtime, और native push-to-talk।
  3. पुराने Talk RPC families को final talk.session.* और talk.client.* API से replace करें।
  4. Gateway hello-ok.features.events में एक live Talk event channel advertise करें: talk.event
  5. पुराने realtime HTTP endpoint और किसी भी request-time instruction override path को delete करें।
नए code को 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 यह है:
// Gateway-owned Talk session API.
await gateway.request("talk.session.create", {
  mode: "realtime",
  transport: "gateway-relay",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.session.appendAudio", { sessionId, audioBase64 });
await gateway.request("talk.session.cancelOutput", { sessionId, reason: "barge-in" });
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "working" },
  options: { willContinue: true },
});
await gateway.request("talk.session.submitToolResult", {
  sessionId,
  callId,
  result: { status: "already_delivered" },
  options: { suppressResponse: true },
});
await gateway.request("talk.session.submitToolResult", { sessionId, callId, result });
await gateway.request("talk.session.close", { sessionId });

// Client-owned provider session API.
await gateway.request("talk.client.create", {
  mode: "realtime",
  transport: "webrtc",
  brain: "agent-consult",
  sessionKey: "main",
});
await gateway.request("talk.client.toolCall", { sessionKey, callId, name, args });
await gateway.request("talk.client.steer", { sessionKey, text, mode: "steer" });
Browser-owned WebRTC/provider-websocket sessions 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 जानबूझकर छोटे रखे गए हैं:
ModeTransportBrainOwnerNotes
realtimegateway-relayagent-consultGatewayGateway के जरिए bridged full-duplex provider audio; tool calls agent-consult tool के जरिए route होते हैं।
transcriptiongateway-relaynoneGatewayकेवल Streaming STT; callers input audio भेजते हैं और transcript events receive करते हैं।
stt-ttsmanaged-roomagent-consultNative/client roomPush-to-talk और walkie-talkie style rooms, जहां client capture/playback own करता है और Gateway turn state own करता है।
stt-ttsmanaged-roomdirect-toolsNative/client roomtrusted first-party surfaces के लिए admin-only room mode, जो Gateway tool actions को सीधे execute करते हैं।
Removed method map:
OldNew
talk.realtime.sessiontalk.client.create
talk.realtime.toolCalltalk.client.toolCall
talk.realtime.relayAudiotalk.session.appendAudio
talk.realtime.relayCanceltalk.session.cancelOutput or talk.session.cancelTurn
talk.realtime.relayToolResulttalk.session.submitToolResult
talk.realtime.relayStoptalk.session.close
talk.transcription.sessiontalk.session.create({ mode: "transcription" })
talk.transcription.relayAudiotalk.session.appendAudio
talk.transcription.relayCanceltalk.session.cancelTurn
talk.transcription.relayStoptalk.session.close
talk.handoff.createtalk.session.create({ transport: "managed-room" })
talk.handoff.jointalk.session.join
talk.handoff.revoketalk.session.close
Unified control vocabulary भी जानबूझकर narrow है:
विधिइस पर लागूअनुबंध
talk.session.appendAudiorealtime/gateway-relay, transcription/gateway-relayउसी Gateway कनेक्शन के स्वामित्व वाले प्रदाता सेशन में base64 PCM ऑडियो चंक जोड़ें।
talk.session.startTurnstt-tts/managed-roommanaged-room उपयोगकर्ता टर्न शुरू करें।
talk.session.endTurnstt-tts/managed-roomstale-turn सत्यापन के बाद सक्रिय टर्न समाप्त करें।
talk.session.cancelTurnसभी Gateway-स्वामित्व वाले सेशनकिसी टर्न के लिए सक्रिय capture/provider/agent/TTS कार्य रद्द करें।
talk.session.cancelOutputrealtime/gateway-relayउपयोगकर्ता टर्न को अनिवार्य रूप से समाप्त किए बिना असिस्टेंट ऑडियो आउटपुट रोकें।
talk.session.submitToolResultrealtime/gateway-relayrelay द्वारा उत्सर्जित प्रदाता टूल कॉल पूरा करें; अंतरिम आउटपुट के लिए options.willContinue या किसी अन्य असिस्टेंट प्रतिक्रिया के बिना कॉल पूरा करने के लिए options.suppressResponse पास करें।
talk.session.steeragent-समर्थित Talk सेशनTalk सेशन से resolved सक्रिय embedded run को बोले गए status, steer, cancel, या followup नियंत्रण भेजें।
talk.session.closeसभी एकीकृत सेशनrelay सेशन रोकें या managed-room स्थिति निरस्त करें, फिर एकीकृत सेशन id भूल जाएं।
इसे काम कराने के लिए core में प्रदाता या प्लेटफॉर्म विशेष मामले न जोड़ें। core Talk सेशन semantics का स्वामी है। प्रदाता plugins vendor सेशन सेटअप के स्वामी हैं। voice-call और Google Meet telephony/meeting adapters के स्वामी हैं। browser और native apps device capture/playback UX के स्वामी हैं।

संगतता नीति

external plugins के लिए, संगतता कार्य इस क्रम का पालन करता है:
  1. नया अनुबंध जोड़ें
  2. पुराने व्यवहार को compatibility adapter के माध्यम से wired रखें
  3. ऐसा diagnostic या warning उत्सर्जित करें जो पुराने पथ और प्रतिस्थापन का नाम बताए
  4. दोनों पथों को tests में cover करें
  5. deprecation और migration path को document करें
  6. announced migration window के बाद ही हटाएं, आम तौर पर major release में
Maintainers वर्तमान migration queue का audit 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 कैसे करें

1

Migrate runtime config load/write helpers

Bundled plugins को 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 चुननी चाहिए:
await api.runtime.config.mutateConfigFile({
  afterWrite: { mode: "auto" },
  mutate(draft) {
    draft.plugins ??= {};
  },
});
जब caller जानता है कि change को clean gateway restart चाहिए, तब 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 typesopenclaw/plugin-sdk/config-contracts
Already-loaded config assertions और plugin-entry config lookupopenclaw/plugin-sdk/plugin-config-runtime
Current runtime snapshot readsopenclaw/plugin-sdk/runtime-config-snapshot
Config writesopenclaw/plugin-sdk/config-mutation
Session store helpersopenclaw/plugin-sdk/session-store-runtime
Markdown table configopenclaw/plugin-sdk/markdown-table-runtime
Group policy runtime helpersopenclaw/plugin-sdk/runtime-group-policy
Secret input resolutionopenclaw/plugin-sdk/secret-input-runtime
Model/session overridesopenclaw/plugin-sdk/model-session-runtime
Bundled plugins और उनके tests को broad barrel के विरुद्ध scanner-guard किया गया है ताकि imports और mocks उस behavior के local रहें जिसकी उन्हें जरूरत है। Broad barrel external compatibility के लिए अभी भी मौजूद है, लेकिन नए code को उस पर depend नहीं करना चाहिए।
2

Migrate embedded tool-result extensions to middleware

Bundled plugins को embedded-runner-only api.registerEmbeddedExtensionFactory(...) tool-result handlers को runtime-neutral middleware से replace करना होगा।
// OpenClaw and Codex runtime dynamic tools
api.registerAgentToolResultMiddleware(async (event) => {
  return compactToolResult(event);
}, {
  runtimes: ["openclaw", "codex"],
});
उसी समय Plugin manifest update करें:
{
  "contracts": {
    "agentToolResultMiddleware": ["openclaw", "codex"]
  }
}
Installed plugins tool-result middleware भी register कर सकते हैं जब वे स्पष्ट रूप से enabled हों और contracts.agentToolResultMiddleware में हर targeted runtime declare करें। Undeclared installed middleware registrations reject किए जाते हैं।
3

Migrate approval-native handlers to capability facts

Approval-capable channel plugins अब native approval behavior को approvalCapability.nativeRuntime और shared runtime-context registry के माध्यम से expose करते हैं।मुख्य बदलाव:
  • approvalCapability.handler.loadRuntime(...) को approvalCapability.nativeRuntime से replace करें
  • approval-specific auth/delivery को legacy plugin.auth / plugin.approvals wiring से हटाकर 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(...) में channelRuntime pass करते समय, real createPluginRuntime().channel surface प्रदान करें। Partial stubs reject किए जाते हैं।
current approval capability layout के लिए /plugins/sdk-channel-plugins देखें।
4

Audit Windows wrapper fallback behavior

यदि आपका Plugin openclaw/plugin-sdk/windows-spawn का उपयोग करता है, तो unresolved Windows .cmd/.bat wrappers अब fail closed होते हैं, जब तक आप स्पष्ट रूप से allowShellFallback: true pass न करें।
// Before
const program = applyWindowsSpawnProgramPolicy({ candidate });

// After
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Only set this for trusted compatibility callers that intentionally
  // accept shell-mediated fallback.
  allowShellFallback: true,
});
यदि आपका caller जानबूझकर shell fallback पर rely नहीं करता, तो allowShellFallback set न करें और thrown error को handle करें।
5

Find deprecated imports

अपने Plugin में किसी भी deprecated surface से imports search करें:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "plugin-sdk/infra-runtime" my-plugin/
grep -r "plugin-sdk/config-runtime" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
6

Replace with focused imports

old surface से प्रत्येक export एक specific modern import path से map होता है:
// Before (deprecated backwards-compatibility layer)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// After (modern focused imports)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
host-side helpers के लिए, सीधे import करने के बजाय injected plugin runtime का उपयोग करें:
// Before (deprecated extension-api bridge)
import { runEmbeddedAgent } from "openclaw/extension-api";
const result = await runEmbeddedAgent({ sessionId, prompt });

// After (injected runtime)
const result = await api.runtime.agent.runEmbeddedAgent({ sessionId, prompt });
यही पैटर्न अन्य पुराने bridge helpers पर भी लागू होता है:
पुराना इम्पोर्टआधुनिक समतुल्य
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
session store helpersapi.runtime.agent.session.*
7

Replace broad infra-runtime imports

openclaw/plugin-sdk/infra-runtime बाहरी संगतता के लिए अभी भी मौजूद है, लेकिन नए कोड को वही केंद्रित helper surface इम्पोर्ट करना चाहिए जिसकी उसे वास्तव में आवश्यकता है:
आवश्यकताइम्पोर्ट
सिस्टम इवेंट queue helpersopenclaw/plugin-sdk/system-event-runtime
Heartbeat wake, event, और visibility helpersopenclaw/plugin-sdk/heartbeat-runtime
लंबित delivery queue drainopenclaw/plugin-sdk/delivery-queue-runtime
चैनल activity telemetryopenclaw/plugin-sdk/channel-activity-runtime
इन-मेमोरी dedupe cachesopenclaw/plugin-sdk/dedupe-runtime
सुरक्षित local-file/media path helpersopenclaw/plugin-sdk/file-access-runtime
Dispatcher-aware fetchopenclaw/plugin-sdk/runtime-fetch
Proxy और guarded fetch helpersopenclaw/plugin-sdk/fetch-runtime
SSRF dispatcher policy typesopenclaw/plugin-sdk/ssrf-dispatcher
Approval request/resolution typesopenclaw/plugin-sdk/approval-runtime
Approval reply payload और command helpersopenclaw/plugin-sdk/approval-reply-runtime
Error formatting helpersopenclaw/plugin-sdk/error-runtime
Transport readiness waitsopenclaw/plugin-sdk/transport-ready-runtime
सुरक्षित token helpersopenclaw/plugin-sdk/secure-random-runtime
सीमित async task concurrencyopenclaw/plugin-sdk/concurrency-runtime
Numeric coercionopenclaw/plugin-sdk/number-runtime
Process-local async lockopenclaw/plugin-sdk/async-lock-runtime
File locksopenclaw/plugin-sdk/file-lock
बंडल किए गए Plugin को infra-runtime के विरुद्ध scanner-guarded रखा गया है, इसलिए repo code व्यापक barrel पर वापस नहीं जा सकता।
8

Migrate channel route helpers

नए channel route code को openclaw/plugin-sdk/channel-route का उपयोग करना चाहिए। पुराने route-key और comparable-target नाम migration window के दौरान compatibility aliases के रूप में बने रहते हैं, लेकिन नए Plugin को वे route नाम उपयोग करने चाहिए जो behavior को सीधे वर्णित करते हैं:
पुराना helperआधुनिक helper
channelRouteIdentityKey(...)channelRouteDedupeKey(...)
channelRouteKey(...)channelRouteCompactKey(...)
ComparableChannelTargetChannelRouteParsedTarget
comparableChannelTargetsMatch(...)channelRouteTargetsMatchExact(...)
comparableChannelTargetsShareRoute(...)channelRouteTargetsShareConversation(...)
आधुनिक route helpers native approvals, reply suppression, inbound dedupe, Cron delivery, और session routing में { 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(...) का उपयोग करना चाहिए।
9

Build and test

pnpm build
pnpm test -- my-plugin/

इम्पोर्ट path reference

Import pathउद्देश्यमुख्य exports
plugin-sdk/plugin-entryकैननिकल Plugin entry helperdefinePluginEntry
plugin-sdk/corechannel entry परिभाषाओं/builders के लिए legacy umbrella re-exportdefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaroot config schema exportOpenClawSchema
plugin-sdk/provider-entrysingle-provider entry helperdefineSingleProviderPluginEntry
plugin-sdk/channel-coreकेंद्रित channel entry परिभाषाएँ और buildersdefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupसाझा setup wizard helpersSetup translator, allowlist prompts, setup status builders
plugin-sdk/setup-runtimesetup-time runtime helperscreateSetupTranslator, import-safe setup patch adapters, lookup-note helpers, promptResolvedAllowFrom, splitSetupEntries, delegated setup proxies
plugin-sdk/setup-adapter-runtimeअप्रचलित setup adapter aliasplugin-sdk/setup-runtime का उपयोग करें
plugin-sdk/setup-toolssetup tooling helpersformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coremulti-account helpersaccount list/config/action-gate helpers
plugin-sdk/account-idaccount-id helpersDEFAULT_ACCOUNT_ID, account-id normalization
plugin-sdk/account-resolutionaccount lookup helpersaccount lookup + default-fallback helpers
plugin-sdk/account-helpersसंकीर्ण account helpersaccount list/account-action helpers
plugin-sdk/channel-setupsetup wizard adapterscreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, साथ में DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingDM pairing primitivescreateChannelPairingController
plugin-sdk/channel-reply-pipelinereply prefix, typing, और source-delivery wiringcreateChannelReplyPipeline, resolveChannelSourceReplyDeliveryMode
plugin-sdk/channel-config-helpersconfig adapter factories और DM access helperscreateHybridChannelConfigAdapter, resolveChannelDmAccess, resolveChannelDmAllowFrom, resolveChannelDmPolicy, normalizeChannelDmPolicy, normalizeLegacyDmAliases
plugin-sdk/channel-config-schemaconfig schema buildersसाझा channel config schema primitives और केवल generic builder
plugin-sdk/bundled-channel-config-schemabundled 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-configTelegram command config helperscommand-name normalization, description trimming, duplicate/conflict validation
plugin-sdk/channel-policygroup/DM policy resolutionresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleअप्रचलित compatibility facadeplugin-sdk/channel-outbound का उपयोग करें
plugin-sdk/inbound-envelopeinbound envelope helpersसाझा route + envelope builder helpers
plugin-sdk/channel-inboundinbound receive helperscontext building, formatting, roots, runners, prepared reply dispatch, और dispatch predicates
plugin-sdk/messaging-targetsअप्रचलित target parsing import pathgeneric 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-mediaoutbound media helpersसाझा outbound media loading
plugin-sdk/outbound-send-depsअप्रचलित compatibility facadeplugin-sdk/channel-outbound का उपयोग करें
plugin-sdk/channel-outboundoutbound message lifecycle helpersmessage adapters, receipts, durable send helpers, live preview/streaming helpers, reply options, lifecycle helpers, outbound identity, और payload planning
plugin-sdk/channel-streamingअप्रचलित compatibility facadeplugin-sdk/channel-outbound का उपयोग करें
plugin-sdk/outbound-runtimeअप्रचलित compatibility facadeplugin-sdk/channel-outbound का उपयोग करें
plugin-sdk/thread-bindings-runtimethread-binding helpersthread-binding lifecycle और adapter helpers
plugin-sdk/agent-media-payloadlegacy media payload helperslegacy field layouts के लिए agent media payload builder
plugin-sdk/channel-runtimeअप्रचलित compatibility shimकेवल legacy channel runtime utilities
plugin-sdk/channel-send-resultsend result typesreply result types
plugin-sdk/runtime-storepersistent Plugin storagecreatePluginRuntimeStore
plugin-sdk/runtimeव्यापक runtime helpersruntime/logging/backup/plugin-install helpers
plugin-sdk/runtime-envसंकीर्ण runtime env helperslogger/runtime env, timeout, retry, और backoff helpers
plugin-sdk/plugin-runtimeसाझा Plugin runtime helpersPlugin commands/hooks/http/interactive helpers
plugin-sdk/hook-runtimehook pipeline helpersसाझा Webhook/internal hook pipeline helpers
plugin-sdk/lazy-runtimelazy runtime helperscreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeprocess helpersसाझा exec helpers
plugin-sdk/cli-runtimeCLI runtime helperscommand formatting, waits, version helpers
plugin-sdk/gateway-runtimeGateway helpersGateway client, event-loop-ready start helper, और channel-status patch helpers
plugin-sdk/config-runtimeअप्रचलित config compatibility shimconfig-contracts, plugin-config-runtime, runtime-config-snapshot, और config-mutation को प्राथमिकता दें
plugin-sdk/telegram-command-configTelegram command helpersbundled Telegram contract surface अनुपलब्ध होने पर fallback-stable Telegram command validation helpers
plugin-sdk/approval-runtimeapproval prompt helpersexec/Plugin approval payload, approval capability/profile helpers, native approval routing/runtime helpers, और structured approval display path formatting
plugin-sdk/approval-auth-runtimeapproval auth helpersapprover resolution, same-chat action auth
plugin-sdk/approval-client-runtimeapproval client helpersnative exec approval profile/filter helpers
plugin-sdk/approval-delivery-runtimeapproval delivery helpersnative approval capability/delivery adapters
plugin-sdk/approval-gateway-runtimeapproval Gateway helpersसाझा approval Gateway-resolution helper
plugin-sdk/approval-handler-adapter-runtimeapproval adapter helpershot channel entrypoints के लिए हल्के native approval adapter loading helpers
plugin-sdk/approval-handler-runtimeapproval handler helpersव्यापक approval handler runtime helpers; पर्याप्त होने पर संकीर्ण adapter/Gateway seams को प्राथमिकता दें
plugin-sdk/approval-native-runtimeapproval target helpersnative approval target/account binding helpers
plugin-sdk/approval-reply-runtimeapproval reply helpersexec/Plugin approval reply payload helpers
plugin-sdk/channel-runtime-contextchannel runtime-context helpersgeneric channel runtime-context register/get/watch helpers
plugin-sdk/security-runtimesecurity helpersसाझा trust, DM gating, root-bounded file/path helpers, external-content, और secret-collection helpers
plugin-sdk/ssrf-policySSRF policy helpershost allowlist और private-network policy helpers
plugin-sdk/ssrf-runtimeSSRF runtime helperspinned-dispatcher, guarded fetch, SSRF policy helpers
plugin-sdk/system-event-runtimesystem event helpersenqueueSystemEvent, peekSystemEventEntries
plugin-sdk/heartbeat-runtimeHeartbeat helpersHeartbeat wake, event, और visibility helpers
plugin-sdk/delivery-queue-runtimedelivery queue helpersdrainPendingDeliveries
plugin-sdk/channel-activity-runtimechannel activity helpersrecordChannelActivity
plugin-sdk/dedupe-runtimededupe helpersin-memory dedupe caches
plugin-sdk/file-access-runtimefile access helpersसुरक्षित local-file/media path helpers
plugin-sdk/transport-ready-runtimetransport readiness helperswaitForTransportReady
plugin-sdk/exec-approvals-runtimeexec approval policy helpersloadExecApprovals, resolveExecApprovalsFromFile, ExecApprovalsFile
plugin-sdk/collection-runtimebounded cache helperspruneMapToMaxSize
plugin-sdk/diagnostic-runtimediagnostic gating helpersisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeerror formatting helpersformatUncaughtError, isApprovalNotFoundError, error graph helpers
plugin-sdk/fetch-runtimewrapped fetch/proxy helpersresolveFetch, proxy helpers, EnvHttpProxyAgent option helpers
plugin-sdk/host-runtimehost normalization helpersnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeretry helpersRetryConfig, retryAsync, policy runners
plugin-sdk/allow-fromallowlist formatting और input mappingformatAllowFromLowercase, mapAllowlistResolutionInputs
plugin-sdk/command-authcommand gating और command-surface helpersresolveControlCommandGate, sender-authorization helpers, dynamic argument menu formatting सहित command registry helpers
plugin-sdk/command-statuscommand status/help renderersbuildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage
plugin-sdk/secret-inputsecret input parsingsecret input helpers
plugin-sdk/webhook-ingressWebhook request helpersWebhook target utilities
plugin-sdk/webhook-request-guardsWebhook body guard helpersrequest body read/limit helpers
plugin-sdk/reply-runtimeसाझा reply runtimeinbound dispatch, Heartbeat, reply planner, chunking
plugin-sdk/reply-dispatch-runtimeसंकीर्ण reply dispatch helpersfinalize, provider dispatch, और conversation-label helpers
plugin-sdk/reply-historyreply-history helperscreateChannelHistoryWindow; deprecated map-helper compatibility exports जैसे buildPendingHistoryContextFromMap, recordPendingHistoryEntry, और clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencereply reference planningcreateReplyReferencePlanner
plugin-sdk/reply-chunkingreply chunk helperstext/markdown chunking helpers
plugin-sdk/session-store-runtimesession store helpersstore path + updated-at helpers
plugin-sdk/state-pathsstate path helpersstate और 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-runtimeMarkdown-तालिका सहायक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-editAllowlist कॉन्फ़िगरेशन सहायकAllowlist कॉन्फ़िगरेशन संपादन/पठन सहायक
plugin-sdk/group-accessसमूह पहुंच सहायकसाझा समूह-पहुंच निर्णय सहायक
plugin-sdk/direct-dm, plugin-sdk/direct-dm-accessअप्रचलित संगतता फ़साडplugin-sdk/channel-inbound का उपयोग करें
plugin-sdk/direct-dm-guard-policyDirect-DM guard सहायकसंकीर्ण pre-crypto guard नीति सहायक
plugin-sdk/extension-sharedसाझा एक्सटेंशन सहायकpassive-channel/status और ambient proxy सहायक प्रिमिटिव
plugin-sdk/webhook-targetsWebhook लक्ष्य सहायक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-searchActive 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
यह तालिका जानबूझकर सामान्य माइग्रेशन उपसमुच्चय है, पूर्ण SDK सतह नहीं। कंपाइलर एंट्रीपॉइंट इन्वेंटरी 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 करती है।
पुराना (openclaw/plugin-sdk/command-auth): buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage.नया (openclaw/plugin-sdk/command-status): वही signatures, वही exports - बस संकरे subpath से imported। command-auth इन्हें compat stubs के रूप में re-export करता है।
// Before
import { buildHelpMessage } from "openclaw/plugin-sdk/command-auth";

// After
import { buildHelpMessage } from "openclaw/plugin-sdk/command-status";
पुराना: 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 कर चुके हैं।
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 स्वीकार करते हैं।
पुराना: openclaw/plugin-sdk/provider-web-search से tool() factory।नया: provider Plugin पर सीधे createTool(...) implement करें। OpenClaw को tool wrapper register करने के लिए अब SDK helper की जरूरत नहीं है।
पुराना: inbound channel messages से flat plaintext prompt envelope बनाने के लिए 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 किया।
पुराना: api.on("deactivate", handler)नया: api.on("gateway_stop", handler)। event और context वही shutdown cleanup contract हैं; केवल hook name बदलता है।
// Before
api.on("deactivate", async (event, ctx) => {
  await stopPluginService(ctx);
});

// After
api.on("gateway_stop", async (event, ctx) => {
  await stopPluginService(ctx);
});
deactivate 2026-08-16 के बाद तक deprecated compatibility alias के रूप में wired रहता है।
पुराना: api.on("subagent_spawning", handler) जो threadBindingReady या deliveryOrigin लौटाता है।नया: core को channel session-binding adapter के माध्यम से thread: true subagent bindings तैयार करने दें। केवल post-launch observation के लिए api.on("subagent_spawned", handler) उपयोग करें।
// Before
api.on("subagent_spawning", async () => ({
  status: "ok",
  threadBindingReady: true,
  deliveryOrigin: { channel: "discord", to: "channel:123", threadId: "456" },
}));

// After
api.on("subagent_spawned", async (event) => {
  await observeSubagentLaunch(event);
});
subagent_spawning, PluginHookSubagentSpawningEvent, PluginHookSubagentSpawningResult, और SubagentLifecycleHookRunner.runSubagentSpawning(...) केवल deprecated compatibility surfaces के रूप में रहते हैं, जब तक external plugins migrate करते हैं।
चार discovery type aliases अब catalog-era types पर thin wrappers हैं:
पुराना aliasनया type
ProviderDiscoveryOrderProviderCatalogOrder
ProviderDiscoveryContextProviderCatalogContext
ProviderDiscoveryResultProviderCatalogResult
ProviderPluginDiscoveryProviderPluginCatalog
साथ ही legacy ProviderCapabilities static bag - provider plugins को static object के बजाय explicit provider hooks जैसे buildReplayPolicy, normalizeToolSchemas, और wrapStreamFn उपयोग करने चाहिए।
पुराना (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 नहीं होते।
पुराना: Plugin manifest में provider declare किए बिना external auth hooks implement करना।नया: Plugin manifest में contracts.externalAuthProviders declare करें और resolveExternalAuthProfiles(...) implement करें।
{
  "contracts": {
    "externalAuthProviders": ["anthropic", "openai"]
  }
}
पुराना manifest field: 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 बंद नहीं होती।
पुराना: तीन अलग calls - 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) प्रभावित नहीं हैं।
पुराना: api.registerMemoryEmbeddingProvider(...) और contracts.memoryEmbeddingProvidersनया: api.registerEmbeddingProvider(...) और contracts.embeddingProvidersgeneric 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 करता है।
src/plugins/runtime/types.ts से अब भी exported दो legacy type aliases:
पुरानानया
SubagentReadSessionParamsSubagentGetSessionMessagesParams
SubagentReadSessionResultSubagentGetSessionMessagesResult
runtime method readSession को getSessionMessages के पक्ष में deprecated किया गया है। वही signature; पुराना method नए method को call through करता है।
पुराना: 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 उपयोग करें।
// Before
const flow = api.runtime.tasks.flow.fromToolContext(ctx);
// After
const flow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
ऊपर “How to migrate → Migrate embedded tool-result extensions to middleware” में covered है। पूर्णता के लिए यहां शामिल: हटाया गया embedded-runner-only api.registerEmbeddedExtensionFactory(...) path api.registerAgentToolResultMiddleware(...) से replace किया गया है, जिसमें contracts.agentToolResultMiddleware में explicit runtime list होती है।
openclaw/plugin-sdk से re-export किया गया OpenClawSchemaType अब OpenClawConfig के लिए one-line alias है। canonical name को prefer करें।
// Before
import type { OpenClawSchemaType } from "openclaw/plugin-sdk";
// After
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-schema";
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 अब भी उनका उपयोग कर रहे होंगे वे विफल होंगे
सभी core Plugin पहले ही माइग्रेट किए जा चुके हैं। बाहरी Plugin को अगले प्रमुख रिलीज़ से पहले माइग्रेट कर लेना चाहिए।

चेतावनियों को अस्थायी रूप से दबाना

माइग्रेशन पर काम करते समय ये environment variables सेट करें:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
यह एक अस्थायी निकास उपाय है, स्थायी समाधान नहीं।

संबंधित