@openclaw/msteams 2026.5.10-beta.2 → 2026.5.10-beta.4

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
- import { t as msteamsPlugin } from "./channel-kz4Rzh2w.js";
2
- import { i as msteamsSetupAdapter, n as openDelegatedOAuthUrl, r as createMSTeamsSetupWizardBase, t as msteamsSetupWizard } from "./setup-surface-C7d0jGM5.js";
1
+ import { t as msteamsPlugin } from "./channel-BApPsQGS.js";
2
+ import { i as msteamsSetupAdapter, n as openDelegatedOAuthUrl, r as createMSTeamsSetupWizardBase, t as msteamsSetupWizard } from "./setup-surface-Ce463w3t.js";
3
3
  export { createMSTeamsSetupWizardBase, msteamsPlugin, msteamsSetupAdapter, msteamsSetupWizard, openDelegatedOAuthUrl };
@@ -1,9 +1,9 @@
1
1
  import { o as buildProbeChannelStatusSummary, r as PAIRING_APPROVED_MESSAGE, s as chunkTextForOutbound, t as DEFAULT_ACCOUNT_ID, u as createDefaultChannelRuntimeState } from "./runtime-api-C3EIaIpt.js";
2
- import { h as resolveMSTeamsCredentials } from "./graph-users-CCU0WVMZ.js";
3
- import { a as parseMSTeamsTeamChannelInput, c as resolveMSTeamsUserAllowlist, i as parseMSTeamsConversationId, n as normalizeMSTeamsMessagingTarget, r as normalizeMSTeamsUserInput, s as resolveMSTeamsChannelAllowlist, t as looksLikeMSTeamsTargetId } from "./resolve-allowlist-7CHP2hEA.js";
2
+ import { h as resolveMSTeamsCredentials } from "./graph-users-BQJvcsX8.js";
3
+ import { a as parseMSTeamsTeamChannelInput, c as resolveMSTeamsUserAllowlist, i as parseMSTeamsConversationId, n as normalizeMSTeamsMessagingTarget, r as normalizeMSTeamsUserInput, s as resolveMSTeamsChannelAllowlist, t as looksLikeMSTeamsTargetId } from "./resolve-allowlist-DPCTpYxi.js";
4
4
  import { t as MSTeamsChannelConfigSchema } from "./config-schema-DwOEthCC.js";
5
5
  import { n as resolveMSTeamsGroupToolPolicy } from "./policy-bM71GXRd.js";
6
- import { i as msteamsSetupAdapter, t as msteamsSetupWizard } from "./setup-surface-C7d0jGM5.js";
6
+ import { i as msteamsSetupAdapter, t as msteamsSetupWizard } from "./setup-surface-Ce463w3t.js";
7
7
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
8
8
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
9
9
  import { createTopLevelChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -16,7 +16,7 @@ import { normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-ru
16
16
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
17
17
  import { createRuntimeOutboundDelegates } from "openclaw/plugin-sdk/outbound-runtime";
18
18
  import { createComputedAccountStatusAdapter } from "openclaw/plugin-sdk/status-helpers";
19
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
19
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
20
20
  import { Type } from "typebox";
21
21
  import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
22
22
  //#region extensions/msteams/src/approval-auth.ts
@@ -183,7 +183,7 @@ const collectMSTeamsSecurityWarnings = createAllowlistProviderGroupPolicyWarning
183
183
  resolveGroupPolicy: ({ cfg }) => cfg.channels?.msteams?.groupPolicy,
184
184
  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."] : []
185
185
  });
186
- const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-C1IGCVBT.js"), "msTeamsChannelRuntime");
186
+ const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-CnDHBWml.js"), "msTeamsChannelRuntime");
187
187
  const resolveMSTeamsChannelConfig = (cfg) => ({
188
188
  allowFrom: cfg.channels?.msteams?.allowFrom,
189
189
  defaultTo: cfg.channels?.msteams?.defaultTo
@@ -965,7 +965,7 @@ const msteamsPlugin = createChatChannelPlugin({
965
965
  })
966
966
  }),
967
967
  gateway: { startAccount: async (ctx) => {
968
- const { monitorMSTeamsProvider } = await import("./src-DQ7ARgDd.js");
968
+ const { monitorMSTeamsProvider } = await import("./src-BEhrsfns.js");
969
969
  const port = ctx.cfg.channels?.msteams?.webhook?.port ?? 3978;
970
970
  ctx.setStatus({
971
971
  accountId: ctx.accountId,
@@ -1,2 +1,2 @@
1
- import { t as msteamsPlugin } from "./channel-kz4Rzh2w.js";
1
+ import { t as msteamsPlugin } from "./channel-BApPsQGS.js";
2
2
  export { msteamsPlugin };
@@ -1,7 +1,7 @@
1
1
  import { s as chunkTextForOutbound } from "./runtime-api-C3EIaIpt.js";
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-CCU0WVMZ.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-CQKmxtlj.js";
4
- import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtime";
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-BQJvcsX8.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-4kXMWuAw.js";
4
+ import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
6
6
  import { resolveOutboundSendDep } from "openclaw/plugin-sdk/outbound-send-deps";
7
7
  //#region extensions/msteams/src/directory-live.ts
@@ -1,7 +1,7 @@
1
1
  import { M as getMSTeamsRuntime, h as fetchWithSsrFGuard$1 } from "./runtime-api-C3EIaIpt.js";
2
2
  import { n as refreshMSTeamsDelegatedTokens } from "./oauth.token-xxpoLWy5.js";
3
3
  import { createRequire } from "node:module";
4
- import { isRecord as isRecord$2, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
4
+ import { isRecord as isRecord$2, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
6
6
  import { Buffer } from "node:buffer";
7
7
  import { lookup } from "node:dns/promises";
@@ -1,10 +1,11 @@
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
- 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-CCU0WVMZ.js";
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-BQJvcsX8.js";
3
3
  import { i as resolveMSTeamsRouteConfig, r as resolveMSTeamsReplyPolicy } from "./policy-bM71GXRd.js";
4
4
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
5
- import { convertMarkdownTables, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, sleep } from "openclaw/plugin-sdk/text-runtime";
5
+ import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { withFileLock } from "openclaw/plugin-sdk/file-lock";
7
7
  import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
8
+ import { convertMarkdownTables } from "openclaw/plugin-sdk/text-chunking";
8
9
  import { lookup } from "node:dns/promises";
9
10
  import { isPrivateIpAddress } from "openclaw/plugin-sdk/ssrf-policy";
10
11
  import path from "node:path";
@@ -13,6 +14,7 @@ import { readJsonFileWithFallback, writeJsonFileAtomically } from "openclaw/plug
13
14
  import crypto from "node:crypto";
14
15
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
15
16
  import { SILENT_REPLY_TOKEN, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
17
+ import { sleep } from "openclaw/plugin-sdk/text-utility-runtime";
16
18
  import { loadWebMedia } from "openclaw/plugin-sdk/web-media";
17
19
  //#region extensions/msteams/src/conversation-store-helpers.ts
18
20
  function normalizeStoredConversationId(raw) {
@@ -723,16 +725,6 @@ function setPendingUploadActivityId(uploadId, activityId) {
723
725
  }
724
726
  //#endregion
725
727
  //#region extensions/msteams/src/file-consent-helpers.ts
726
- /**
727
- * Shared helpers for FileConsentCard flow in MSTeams.
728
- *
729
- * FileConsentCard is required for:
730
- * - Personal (1:1) chats with large files (>=4MB)
731
- * - Personal chats with non-image files (PDFs, documents, etc.)
732
- *
733
- * This module consolidates the logic used by both send.ts (proactive sends)
734
- * and messenger.ts (reply path) to avoid duplication.
735
- */
736
728
  function buildConsentActivity(params) {
737
729
  const { media, description, uploadId } = params;
738
730
  return {
@@ -817,24 +809,6 @@ function requiresFileConsent(params) {
817
809
  }
818
810
  //#endregion
819
811
  //#region extensions/msteams/src/graph-chat.ts
820
- /**
821
- * Native Teams file card attachments for Bot Framework.
822
- *
823
- * The Bot Framework SDK supports `application/vnd.microsoft.teams.card.file.info`
824
- * content type which produces native Teams file cards.
825
- *
826
- * @see https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/bots-filesv4
827
- */
828
- /**
829
- * Build a native Teams file card attachment for Bot Framework.
830
- *
831
- * This uses the `application/vnd.microsoft.teams.card.file.info` content type
832
- * which is supported by Bot Framework and produces native Teams file cards
833
- * (the same display as when a user manually shares a file).
834
- *
835
- * @param file - DriveItem properties from getDriveItemProperties()
836
- * @returns Attachment object for Bot Framework sendActivity()
837
- */
838
812
  function buildTeamsFileInfoCard(file) {
839
813
  const rawETag = file.eTag;
840
814
  const uniqueId = rawETag.replace(/^["']|["']$/g, "").replace(/[{}]/g, "").split(",")[0] ?? rawETag;
@@ -1,6 +1,6 @@
1
- import { c as normalizeQuery, f as resolveGraphToken, o as listChannelsForTeam, s as listTeamsByName, t as searchGraphUsers } from "./graph-users-CCU0WVMZ.js";
1
+ import { c as normalizeQuery, f as resolveGraphToken, o as listChannelsForTeam, s as listTeamsByName, t as searchGraphUsers } from "./graph-users-BQJvcsX8.js";
2
2
  import { mapAllowlistResolutionInputs } from "openclaw/plugin-sdk/allow-from";
3
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
3
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/msteams/src/resolve-allowlist.ts
5
5
  function stripProviderPrefix(raw) {
6
6
  return raw.replace(/^(msteams|teams):/i, "");
@@ -1,6 +1,6 @@
1
- import { h as resolveMSTeamsCredentials } from "./graph-users-CCU0WVMZ.js";
1
+ import { h as resolveMSTeamsCredentials } from "./graph-users-BQJvcsX8.js";
2
2
  import { t as MSTeamsChannelConfigSchema } from "./config-schema-DwOEthCC.js";
3
- import { i as msteamsSetupAdapter, t as msteamsSetupWizard } from "./setup-surface-C7d0jGM5.js";
3
+ import { i as msteamsSetupAdapter, t as msteamsSetupWizard } from "./setup-surface-Ce463w3t.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,5 +1,5 @@
1
- import { O as formatUnknownError, g as saveDelegatedTokens, h as resolveMSTeamsCredentials, p as hasConfiguredMSTeamsCredentials, v as normalizeSecretInputString } from "./graph-users-CCU0WVMZ.js";
2
- import { c as resolveMSTeamsUserAllowlist, o as parseMSTeamsTeamEntry, s as resolveMSTeamsChannelAllowlist } from "./resolve-allowlist-7CHP2hEA.js";
1
+ import { O as formatUnknownError, g as saveDelegatedTokens, h as resolveMSTeamsCredentials, p as hasConfiguredMSTeamsCredentials, v as normalizeSecretInputString } from "./graph-users-BQJvcsX8.js";
2
+ import { c as resolveMSTeamsUserAllowlist, o as parseMSTeamsTeamEntry, s as resolveMSTeamsChannelAllowlist } from "./resolve-allowlist-DPCTpYxi.js";
3
3
  import { DEFAULT_ACCOUNT_ID, createStandardChannelSetupStatus, createTopLevelChannelAllowFromSetter, createTopLevelChannelDmPolicy, createTopLevelChannelGroupPolicySetter, mergeAllowFromEntries, splitSetupEntries } from "openclaw/plugin-sdk/setup";
4
4
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
5
5
  //#region extensions/msteams/src/setup-core.ts
@@ -1,11 +1,11 @@
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
- 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-CCU0WVMZ.js";
3
- import { c as resolveMSTeamsUserAllowlist, s as resolveMSTeamsChannelAllowlist } from "./resolve-allowlist-7CHP2hEA.js";
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-BQJvcsX8.js";
3
+ import { c as resolveMSTeamsUserAllowlist, s as resolveMSTeamsChannelAllowlist } from "./resolve-allowlist-DPCTpYxi.js";
4
4
  import { i as resolveMSTeamsRouteConfig, r as resolveMSTeamsReplyPolicy, t as resolveMSTeamsAllowlistMatch } from "./policy-bM71GXRd.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-CQKmxtlj.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-4kXMWuAw.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
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/text-runtime";
8
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { createDraftStreamLoop } from "openclaw/plugin-sdk/channel-lifecycle";
10
10
  import { readResponseWithLimit } from "openclaw/plugin-sdk/media-runtime";
11
11
  import { dispatchReplyFromConfigWithSettledDispatcher, hasFinalInboundReplyDispatch, resolveInboundReplyDispatchCounts } from "openclaw/plugin-sdk/inbound-reply-dispatch";
@@ -133,17 +133,6 @@ async function storeSessionLearning(params) {
133
133
  }
134
134
  //#endregion
135
135
  //#region extensions/msteams/src/feedback-reflection.ts
136
- /**
137
- * Background reflection triggered by negative user feedback (thumbs-down).
138
- *
139
- * Flow:
140
- * 1. User thumbs-down -> invoke handler acks immediately
141
- * 2. This module runs in the background (fire-and-forget)
142
- * 3. Reads recent session context
143
- * 4. Sends a synthetic reflection prompt to the agent
144
- * 5. Stores the derived learning in session
145
- * 6. Optionally sends a proactive follow-up to the user
146
- */
147
136
  function buildFeedbackEvent(params) {
148
137
  return {
149
138
  type: "custom",
@@ -2486,12 +2475,14 @@ async function resolveMSTeamsInboundMedia(params) {
2486
2475
  }
2487
2476
  //#endregion
2488
2477
  //#region extensions/msteams/src/monitor-handler/thread-session.ts
2478
+ const TRAILING_THREAD_SUFFIX = /(?::thread:[^:]+)+$/;
2489
2479
  function resolveMSTeamsRouteSessionKey(params) {
2490
2480
  const channelThreadId = params.isChannel ? params.conversationMessageId ?? params.replyToId ?? void 0 : void 0;
2481
+ const cleanBase = params.baseSessionKey.replace(TRAILING_THREAD_SUFFIX, "");
2491
2482
  return resolveThreadSessionKeys({
2492
- baseSessionKey: params.baseSessionKey,
2483
+ baseSessionKey: cleanBase,
2493
2484
  threadId: channelThreadId,
2494
- parentSessionKey: channelThreadId ? params.baseSessionKey : void 0
2485
+ parentSessionKey: channelThreadId ? cleanBase : void 0
2495
2486
  }).sessionKey;
2496
2487
  }
2497
2488
  //#endregion
package/dist/test-api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as msteamsPlugin } from "./channel-kz4Rzh2w.js";
1
+ import { t as msteamsPlugin } from "./channel-BApPsQGS.js";
2
2
  export { msteamsPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/msteams",
3
- "version": "2026.5.10-beta.2",
3
+ "version": "2026.5.10-beta.4",
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.10-beta.2"
25
+ "openclaw": ">=2026.5.10-beta.4"
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.10-beta.2"
61
+ "pluginApi": ">=2026.5.10-beta.4"
62
62
  },
63
63
  "build": {
64
- "openclawVersion": "2026.5.10-beta.2"
64
+ "openclawVersion": "2026.5.10-beta.4"
65
65
  },
66
66
  "release": {
67
67
  "publishToClawHub": true,