@openclaw/msteams 2026.5.16-beta.3 → 2026.5.16-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { i as msteamsSetupAdapter, n as openDelegatedOAuthUrl, r as createMSTeamsSetupWizardBase, t as msteamsSetupWizard } from "./setup-surface-CVdYNhQt.js";
2
- import { t as msteamsPlugin } from "./channel-CIHTCPzU.js";
2
+ import { t as msteamsPlugin } from "./channel-C23wdpn6.js";
3
3
  export { createMSTeamsSetupWizardBase, msteamsPlugin, msteamsSetupAdapter, msteamsSetupWizard, openDelegatedOAuthUrl };
@@ -1,7 +1,7 @@
1
1
  import { O as resolveNestedAllowlistDecision, S as normalizeChannelSlug, T as resolveChannelEntryMatchWithFallback, _ as isDangerousNameMatchingEnabled, i as buildChannelKeyCandidates, k as resolveToolsBySender, o as buildProbeChannelStatusSummary, r as PAIRING_APPROVED_MESSAGE, s as chunkTextForOutbound, t as DEFAULT_ACCOUNT_ID, u as createDefaultChannelRuntimeState, w as resolveAllowlistMatchSimple } from "./runtime-api-C3EIaIpt.js";
2
2
  import { h as resolveMSTeamsCredentials } from "./graph-users-ChPPxUzD.js";
3
3
  import { a as looksLikeMSTeamsTargetId, c as parseMSTeamsConversationId, d as resolveMSTeamsUserAllowlist, i as msteamsSetupAdapter, l as parseMSTeamsTeamChannelInput, o as normalizeMSTeamsMessagingTarget, s as normalizeMSTeamsUserInput, t as msteamsSetupWizard, u as resolveMSTeamsChannelAllowlist } from "./setup-surface-CVdYNhQt.js";
4
- import { t as MSTeamsChannelConfigSchema } from "./config-schema-DwOEthCC.js";
4
+ import { t as MSTeamsChannelConfigSchema } from "./config-schema-oLfFbvgv.js";
5
5
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
6
6
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
7
7
  import { createTopLevelChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -10,7 +10,7 @@ import { createChannelMessageAdapterFromOutbound } from "openclaw/plugin-sdk/cha
10
10
  import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
11
11
  import { createAllowlistProviderGroupPolicyWarningCollector, createDangerousNameMatchingMutableAllowlistWarningCollector, projectConfigWarningCollector } from "openclaw/plugin-sdk/channel-policy";
12
12
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter, listDirectoryEntriesFromSources } from "openclaw/plugin-sdk/directory-runtime";
13
- import { normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
13
+ import { adaptMessagePresentationForChannel, normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
14
14
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
15
15
  import { createRuntimeOutboundDelegates } from "openclaw/plugin-sdk/outbound-runtime";
16
16
  import { createComputedAccountStatusAdapter } from "openclaw/plugin-sdk/status-helpers";
@@ -198,6 +198,20 @@ function resolveMSTeamsReplyPolicy(params) {
198
198
  }
199
199
  //#endregion
200
200
  //#region extensions/msteams/src/presentation.ts
201
+ const MSTEAMS_PRESENTATION_CAPABILITIES = {
202
+ supported: true,
203
+ buttons: true,
204
+ selects: false,
205
+ context: true,
206
+ divider: true,
207
+ limits: {
208
+ actions: {
209
+ supportsStyles: false,
210
+ supportsDisabled: false
211
+ },
212
+ text: { markdownDialect: "markdown" }
213
+ }
214
+ };
201
215
  function buildMSTeamsPresentationCard(params) {
202
216
  const body = [];
203
217
  const text = normalizeOptionalString(params.text);
@@ -206,7 +220,10 @@ function buildMSTeamsPresentationCard(params) {
206
220
  text,
207
221
  wrap: true
208
222
  });
209
- const { presentation } = params;
223
+ const presentation = adaptMessagePresentationForChannel({
224
+ presentation: params.presentation,
225
+ capabilities: MSTEAMS_PRESENTATION_CAPABILITIES
226
+ });
210
227
  if (presentation.title) body.push({
211
228
  type: "TextBlock",
212
229
  text: presentation.title,
@@ -238,11 +255,12 @@ function buildMSTeamsPresentationCard(params) {
238
255
  continue;
239
256
  }
240
257
  if (block.type === "buttons") for (const button of block.buttons) {
241
- if (button.url) {
258
+ const targetUrl = button.url ?? button.webApp?.url ?? button.web_app?.url;
259
+ if (targetUrl) {
242
260
  actions.push({
243
261
  type: "Action.OpenUrl",
244
262
  title: button.label,
245
- url: button.url
263
+ url: targetUrl
246
264
  });
247
265
  continue;
248
266
  }
@@ -313,7 +331,7 @@ const collectMSTeamsSecurityWarnings = createAllowlistProviderGroupPolicyWarning
313
331
  resolveGroupPolicy: ({ cfg }) => cfg.channels?.msteams?.groupPolicy,
314
332
  collect: ({ groupPolicy }) => groupPolicy === "open" ? ["- MS Teams groups: groupPolicy=\"open\" allows any member to trigger (mention-gated). Set channels.msteams.groupPolicy=\"allowlist\" + channels.msteams.groupAllowFrom to restrict senders."] : []
315
333
  });
316
- const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-BDy3Ic97.js"), "msTeamsChannelRuntime");
334
+ const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-DllNtFCC.js"), "msTeamsChannelRuntime");
317
335
  const resolveMSTeamsChannelConfig = (cfg) => ({
318
336
  allowFrom: cfg.channels?.msteams?.allowFrom,
319
337
  defaultTo: cfg.channels?.msteams?.defaultTo
@@ -516,10 +534,14 @@ const msteamsChannelOutbound = {
516
534
  deliveryCapabilities: { durableFinal: {
517
535
  text: true,
518
536
  media: true,
537
+ payload: true,
519
538
  messageSendingHooks: true
520
539
  } },
540
+ presentationCapabilities: MSTEAMS_PRESENTATION_CAPABILITIES,
521
541
  ...createRuntimeOutboundDelegates({
522
542
  getRuntime: loadMSTeamsChannelRuntime,
543
+ renderPresentation: { resolve: (runtime) => runtime.msteamsOutbound.renderPresentation },
544
+ sendPayload: { resolve: (runtime) => runtime.msteamsOutbound.sendPayload },
523
545
  sendText: { resolve: (runtime) => runtime.msteamsOutbound.sendText },
524
546
  sendMedia: { resolve: (runtime) => runtime.msteamsOutbound.sendMedia },
525
547
  sendPoll: { resolve: (runtime) => runtime.msteamsOutbound.sendPoll }
@@ -1095,7 +1117,7 @@ const msteamsPlugin = createChatChannelPlugin({
1095
1117
  })
1096
1118
  }),
1097
1119
  gateway: { startAccount: async (ctx) => {
1098
- const { monitorMSTeamsProvider } = await import("./src-BqTYyUD8.js");
1120
+ const { monitorMSTeamsProvider } = await import("./src-Dt_qbC4X.js");
1099
1121
  const port = ctx.cfg.channels?.msteams?.webhook?.port ?? 3978;
1100
1122
  ctx.setStatus({
1101
1123
  accountId: ctx.accountId,
@@ -1136,4 +1158,4 @@ const msteamsPlugin = createChatChannelPlugin({
1136
1158
  outbound: msteamsChannelOutbound
1137
1159
  });
1138
1160
  //#endregion
1139
- export { resolveMSTeamsRouteConfig as i, resolveMSTeamsAllowlistMatch as n, resolveMSTeamsReplyPolicy as r, msteamsPlugin as t };
1161
+ export { resolveMSTeamsReplyPolicy as a, resolveMSTeamsAllowlistMatch as i, MSTEAMS_PRESENTATION_CAPABILITIES as n, resolveMSTeamsRouteConfig as o, buildMSTeamsPresentationCard as r, msteamsPlugin as t };
@@ -1,2 +1,2 @@
1
- import { t as MSTeamsChannelConfigSchema } from "./config-schema-DwOEthCC.js";
1
+ import { t as MSTeamsChannelConfigSchema } from "./config-schema-oLfFbvgv.js";
2
2
  export { MSTeamsChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as msteamsPlugin } from "./channel-CIHTCPzU.js";
1
+ import { t as msteamsPlugin } from "./channel-C23wdpn6.js";
2
2
  export { msteamsPlugin };
@@ -1,8 +1,10 @@
1
1
  import { s as chunkTextForOutbound } from "./runtime-api-C3EIaIpt.js";
2
2
  import { a as fetchGraphJson, c as normalizeQuery, d as postGraphJson, f as resolveGraphToken, i as fetchGraphAbsoluteUrl, l as patchGraphJson, n as deleteGraphRequest, o as listChannelsForTeam, r as escapeOData, s as listTeamsByName, t as searchGraphUsers, u as postGraphBetaJson } from "./graph-users-ChPPxUzD.js";
3
- import { S as createMSTeamsConversationStoreFs, a as sendMessageMSTeams, b as createMSTeamsPollStoreFs, i as sendAdaptiveCardMSTeams, n as deleteMessageMSTeams, o as sendPollMSTeams, r as editMessageMSTeams, t as probeMSTeams } from "./probe-CHlUM18k.js";
3
+ import { n as MSTEAMS_PRESENTATION_CAPABILITIES, r as buildMSTeamsPresentationCard } from "./channel-C23wdpn6.js";
4
+ import { S as createMSTeamsConversationStoreFs, a as sendMessageMSTeams, b as createMSTeamsPollStoreFs, i as sendAdaptiveCardMSTeams, n as deleteMessageMSTeams, o as sendPollMSTeams, r as editMessageMSTeams, t as probeMSTeams } from "./probe-DhheE-0g.js";
4
5
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
5
- import { createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
6
+ import { resolvePayloadMediaUrls, resolveTextChunksWithFallback, sendPayloadMediaSequence } from "openclaw/plugin-sdk/reply-payload";
7
+ import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
6
8
  import { resolveOutboundSendDep } from "openclaw/plugin-sdk/outbound-send-deps";
7
9
  //#region extensions/msteams/src/directory-live.ts
8
10
  async function listMSTeamsDirectoryPeersLive(params) {
@@ -493,6 +495,12 @@ async function getChannelInfoMSTeams(params) {
493
495
  } };
494
496
  }
495
497
  //#endregion
498
+ //#region extensions/msteams/src/outbound.ts
499
+ function asObjectRecord(value) {
500
+ return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
501
+ }
502
+ const MSTEAMS_TEXT_CHUNK_LIMIT = 4e3;
503
+ //#endregion
496
504
  //#region extensions/msteams/src/channel.runtime.ts
497
505
  const msTeamsChannelRuntime = {
498
506
  addParticipantMSTeams,
@@ -517,8 +525,77 @@ const msTeamsChannelRuntime = {
517
525
  deliveryMode: "direct",
518
526
  chunker: chunkTextForOutbound,
519
527
  chunkerMode: "markdown",
520
- textChunkLimit: 4e3,
528
+ textChunkLimit: MSTEAMS_TEXT_CHUNK_LIMIT,
521
529
  pollMaxOptions: 12,
530
+ deliveryCapabilities: { durableFinal: {
531
+ text: true,
532
+ media: true,
533
+ payload: true,
534
+ messageSendingHooks: true
535
+ } },
536
+ presentationCapabilities: MSTEAMS_PRESENTATION_CAPABILITIES,
537
+ renderPresentation: ({ payload, presentation }) => {
538
+ if (payload.mediaUrl || payload.mediaUrls?.length) return null;
539
+ const card = buildMSTeamsPresentationCard({
540
+ presentation,
541
+ text: payload.text
542
+ });
543
+ const msteamsData = asObjectRecord(payload.channelData?.msteams) ?? {};
544
+ return {
545
+ ...payload,
546
+ channelData: {
547
+ ...payload.channelData,
548
+ msteams: {
549
+ ...msteamsData,
550
+ presentationCard: card
551
+ }
552
+ }
553
+ };
554
+ },
555
+ sendPayload: async ({ cfg, to, text, mediaUrl, mediaLocalRoots, mediaReadFile, payload, deps }) => {
556
+ const presentationCard = asObjectRecord(payload.channelData?.msteams)?.presentationCard;
557
+ if (presentationCard && typeof presentationCard === "object" && !Array.isArray(presentationCard)) return attachChannelToResult("msteams", await sendAdaptiveCardMSTeams({
558
+ cfg,
559
+ to,
560
+ card: presentationCard
561
+ }));
562
+ const mediaUrls = resolvePayloadMediaUrls({
563
+ ...payload,
564
+ mediaUrl: payload.mediaUrl ?? mediaUrl
565
+ }).map((url) => url.trim()).filter(Boolean);
566
+ if (mediaUrls.length > 0) {
567
+ const send = resolveOutboundSendDep(deps, "msteams") ?? ((to, text, opts) => sendMessageMSTeams({
568
+ cfg,
569
+ to,
570
+ text,
571
+ mediaUrl: opts?.mediaUrl,
572
+ mediaLocalRoots: opts?.mediaLocalRoots,
573
+ mediaReadFile: opts?.mediaReadFile
574
+ }));
575
+ const result = await sendPayloadMediaSequence({
576
+ text,
577
+ mediaUrls,
578
+ send: async ({ text, mediaUrl }) => await send(to, text, {
579
+ mediaUrl,
580
+ mediaLocalRoots,
581
+ mediaReadFile
582
+ })
583
+ });
584
+ if (result) return attachChannelToResult("msteams", result);
585
+ }
586
+ if (text.trim()) {
587
+ const send = resolveOutboundSendDep(deps, "msteams") ?? ((to, text) => sendMessageMSTeams({
588
+ cfg,
589
+ to,
590
+ text
591
+ }));
592
+ const chunks = resolveTextChunksWithFallback(text, chunkTextForOutbound(text, MSTEAMS_TEXT_CHUNK_LIMIT));
593
+ let result;
594
+ for (const chunk of chunks) result = await send(to, chunk);
595
+ return attachChannelToResult("msteams", result);
596
+ }
597
+ throw new Error("MS Teams payload send requires text, media, or a presentation card.");
598
+ },
522
599
  ...createAttachedChannelResultAdapter({
523
600
  channel: "msteams",
524
601
  sendText: async ({ cfg, to, text, deps }) => {
@@ -26,6 +26,10 @@ const MSTeamsChannelConfigSchema = buildChannelConfigSchema(MSTeamsConfigSchema,
26
26
  label: "MS Teams Progress Max Lines",
27
27
  help: "Maximum number of compact progress lines to keep below the progress title (default: 8)."
28
28
  },
29
+ "streaming.progress.maxLineChars": {
30
+ label: "MS Teams Progress Max Line Chars",
31
+ help: "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
32
+ },
29
33
  "streaming.progress.toolProgress": {
30
34
  label: "MS Teams Progress Tool Lines",
31
35
  help: "Show compact tool/progress lines in progress mode (default: true). Set false to keep only the title until final delivery."
@@ -1,6 +1,6 @@
1
1
  import { C as normalizeStringEntries, E as resolveChannelMediaMaxBytes, M as getMSTeamsRuntime, d as detectMime, g as getFileExtension, m as extractOriginalFilename, p as extensionForMime, y as loadOutboundMediaFromUrl } from "./runtime-api-C3EIaIpt.js";
2
2
  import { C as loadMSTeamsSdkWithAuth, D as formatMSTeamsSendErrorHint, E as classifyMSTeamsSendError, O as formatUnknownError, S as createMSTeamsTokenProvider, _ as resolveMSTeamsStorePath, h as resolveMSTeamsCredentials, k as isRevokedProxyError, m as loadDelegatedTokens, w as buildUserAgent, x as createMSTeamsAdapter, y as readAccessToken } from "./graph-users-ChPPxUzD.js";
3
- import { i as resolveMSTeamsRouteConfig, r as resolveMSTeamsReplyPolicy } from "./channel-CIHTCPzU.js";
3
+ import { a as resolveMSTeamsReplyPolicy, o as resolveMSTeamsRouteConfig } from "./channel-C23wdpn6.js";
4
4
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
5
5
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { withFileLock } from "openclaw/plugin-sdk/file-lock";
@@ -1,6 +1,6 @@
1
1
  import { h as resolveMSTeamsCredentials } from "./graph-users-ChPPxUzD.js";
2
2
  import { i as msteamsSetupAdapter, t as msteamsSetupWizard } from "./setup-surface-CVdYNhQt.js";
3
- import { t as MSTeamsChannelConfigSchema } from "./config-schema-DwOEthCC.js";
3
+ import { t as MSTeamsChannelConfigSchema } from "./config-schema-oLfFbvgv.js";
4
4
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
5
5
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
6
6
  import { createTopLevelChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -1,8 +1,8 @@
1
1
  import { A as summarizeMapping, D as resolveDefaultGroupPolicy, E as resolveChannelMediaMaxBytes, M as getMSTeamsRuntime, N as getOptionalMSTeamsRuntime, _ as isDangerousNameMatchingEnabled, a as buildMediaPayload, b as logTypingFailure, c as createChannelMessageReplyPipeline, f as dispatchReplyFromConfigWithSettledDispatcher$1, l as createChannelPairingController, n as DEFAULT_WEBHOOK_MAX_BODY_BYTES, t as DEFAULT_ACCOUNT_ID, v as keepHttpServerTaskAlive, x as mergeAllowlist } from "./runtime-api-C3EIaIpt.js";
2
2
  import { A as ATTACHMENT_TAG_RE, B as isLikelyImageAttachment, C as loadMSTeamsSdkWithAuth, D as formatMSTeamsSendErrorHint, E as classifyMSTeamsSendError, F as estimateBase64DecodedBytes, G as resolveAttachmentFetchPolicy, H as isUrlAllowed, I as extractHtmlFromAttachment, J as safeFetchWithPolicy, K as resolveMediaSsrfPolicy, L as extractInlineImageCandidates, M as IMG_SRC_RE, N as applyAuthorizationHeaderForUrl, O as formatUnknownError, P as encodeGraphShareId, R as inferPlaceholder, S as createMSTeamsTokenProvider, T as ensureUserAgentHeader, U as normalizeContentType, V as isRecord$1, W as readNestedString, X as tryBuildGraphSharesUrlForSharedLink, Y as safeHostForUrl, _ as resolveMSTeamsStorePath, a as fetchGraphJson, b as createBotFrameworkJwtValidator, h as resolveMSTeamsCredentials, j as GRAPH_ROOT, q as resolveRequestUrl, w as buildUserAgent, x as createMSTeamsAdapter, z as isDownloadableAttachment } from "./graph-users-ChPPxUzD.js";
3
3
  import { d as resolveMSTeamsUserAllowlist, u as resolveMSTeamsChannelAllowlist } from "./setup-surface-CVdYNhQt.js";
4
- import { i as resolveMSTeamsRouteConfig, n as resolveMSTeamsAllowlistMatch, r as resolveMSTeamsReplyPolicy } from "./channel-CIHTCPzU.js";
5
- import { C as readJsonFile, S as createMSTeamsConversationStoreFs, T as writeJsonFile, _ as buildFileInfoCard, b as createMSTeamsPollStoreFs, c as renderReplyPayloadsToMessages, d as withRevokedProxyFallback, f as resolveGraphChatId, g as removePendingUploadFs, h as getPendingUploadFs, l as sendMSTeamsMessages, m as removePendingUpload, p as getPendingUpload, s as buildConversationReference, u as AI_GENERATED_ENTITY, v as parseFileConsentInvoke, w as withFileLock, x as extractMSTeamsPollVote, y as uploadToConsentUrl } from "./probe-CHlUM18k.js";
4
+ import { a as resolveMSTeamsReplyPolicy, i as resolveMSTeamsAllowlistMatch, o as resolveMSTeamsRouteConfig } from "./channel-C23wdpn6.js";
5
+ import { C as readJsonFile, S as createMSTeamsConversationStoreFs, T as writeJsonFile, _ as buildFileInfoCard, b as createMSTeamsPollStoreFs, c as renderReplyPayloadsToMessages, d as withRevokedProxyFallback, f as resolveGraphChatId, g as removePendingUploadFs, h as getPendingUploadFs, l as sendMSTeamsMessages, m as removePendingUpload, p as getPendingUpload, s as buildConversationReference, u as AI_GENERATED_ENTITY, v as parseFileConsentInvoke, w as withFileLock, x as extractMSTeamsPollVote, y as uploadToConsentUrl } from "./probe-DhheE-0g.js";
6
6
  import { formatAllowlistMatchMeta } from "openclaw/plugin-sdk/allow-from";
7
7
  import { createLiveMessageState, createPreviewMessageReceipt, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, markLiveMessageFinalized } from "openclaw/plugin-sdk/channel-message";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
package/dist/test-api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as msteamsPlugin } from "./channel-CIHTCPzU.js";
1
+ import { t as msteamsPlugin } from "./channel-C23wdpn6.js";
2
2
  export { msteamsPlugin };
@@ -317,6 +317,11 @@
317
317
  "exclusiveMinimum": 0,
318
318
  "maximum": 9007199254740991
319
319
  },
320
+ "maxLineChars": {
321
+ "type": "integer",
322
+ "exclusiveMinimum": 0,
323
+ "maximum": 9007199254740991
324
+ },
320
325
  "render": {
321
326
  "type": "string",
322
327
  "enum": [
@@ -716,6 +721,10 @@
716
721
  "label": "MS Teams Progress Max Lines",
717
722
  "help": "Maximum number of compact progress lines to keep below the progress title (default: 8)."
718
723
  },
724
+ "streaming.progress.maxLineChars": {
725
+ "label": "MS Teams Progress Max Line Chars",
726
+ "help": "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
727
+ },
719
728
  "streaming.progress.toolProgress": {
720
729
  "label": "MS Teams Progress Tool Lines",
721
730
  "help": "Show compact tool/progress lines in progress mode (default: true). Set false to keep only the title until final delivery."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/msteams",
3
- "version": "2026.5.16-beta.3",
3
+ "version": "2026.5.16-beta.5",
4
4
  "description": "OpenClaw Microsoft Teams channel plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,7 +22,7 @@
22
22
  "openclaw": "workspace:*"
23
23
  },
24
24
  "peerDependencies": {
25
- "openclaw": ">=2026.5.16-beta.3"
25
+ "openclaw": ">=2026.5.16-beta.5"
26
26
  },
27
27
  "peerDependenciesMeta": {
28
28
  "openclaw": {
@@ -58,10 +58,10 @@
58
58
  "minHostVersion": ">=2026.4.10"
59
59
  },
60
60
  "compat": {
61
- "pluginApi": ">=2026.5.16-beta.3"
61
+ "pluginApi": ">=2026.5.16-beta.5"
62
62
  },
63
63
  "build": {
64
- "openclawVersion": "2026.5.16-beta.3"
64
+ "openclawVersion": "2026.5.16-beta.5"
65
65
  },
66
66
  "release": {
67
67
  "publishToClawHub": true,