@openclaw/msteams 2026.9.34 → 2026.9.35

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.
@@ -1,7 +1,7 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
2
- const require_channel = require("./channel-ByzS7QJ0.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
2
+ const require_channel = require("./channel-DKKKsoa6.cjs");
3
3
  const require_approval_card = require("./approval-card-DWPDItvq.cjs");
4
- const require_send = require("./send-VUM7Sryb.cjs");
4
+ const require_send = require("./send-DeRNN5E6.cjs");
5
5
  let openclaw_plugin_sdk_account_id = require("openclaw/plugin-sdk/account-id");
6
6
  let openclaw_plugin_sdk_approval_native_runtime = require("openclaw/plugin-sdk/approval-native-runtime");
7
7
  let openclaw_plugin_sdk_approval_handler_runtime = require("openclaw/plugin-sdk/approval-handler-runtime");
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-BloeesfJ.cjs");
2
2
  require("../runtime-api.cjs");
3
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
3
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
4
4
  const require_directory_contract_api = require("../directory-contract-api.cjs");
5
- const require_thread_session = require("./thread-session--rw3BTal.cjs");
6
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
5
+ const require_thread_session = require("./thread-session-Bwm9pe6P.cjs");
6
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
7
7
  let openclaw_plugin_sdk_approval_handler_adapter_runtime = require("openclaw/plugin-sdk/approval-handler-adapter-runtime");
8
8
  let openclaw_plugin_sdk_channel_actions = require("openclaw/plugin-sdk/channel-actions");
9
9
  let openclaw_plugin_sdk_channel_core = require("openclaw/plugin-sdk/channel-core");
@@ -393,7 +393,7 @@ const msTeamsLazyApprovalNativeRuntime = (0, openclaw_plugin_sdk_approval_handle
393
393
  request
394
394
  }),
395
395
  load: async () => {
396
- const { msTeamsApprovalNativeRuntime } = await Promise.resolve().then(() => require("./approval-handler.runtime-D1s7UR3U.cjs"));
396
+ const { msTeamsApprovalNativeRuntime } = await Promise.resolve().then(() => require("./approval-handler.runtime-BuhDCcmA.cjs"));
397
397
  return msTeamsApprovalNativeRuntime;
398
398
  }
399
399
  });
@@ -1039,7 +1039,7 @@ const collectMSTeamsSecurityFindings = openclaw_plugin_sdk_channel_policy.create
1039
1039
  severity: "warn",
1040
1040
  title: "MS Teams security warning"
1041
1041
  });
1042
- const loadMSTeamsChannelRuntime = (0, openclaw_plugin_sdk_lazy_runtime.createLazyRuntimeNamedExport)(() => Promise.resolve().then(() => require("./channel.runtime-Baz8XDFs.cjs")), "msTeamsChannelRuntime");
1042
+ const loadMSTeamsChannelRuntime = (0, openclaw_plugin_sdk_lazy_runtime.createLazyRuntimeNamedExport)(() => Promise.resolve().then(() => require("./channel.runtime-BSKd5itR.cjs")), "msTeamsChannelRuntime");
1043
1043
  const MSTEAMS_REACTION_TYPES = [
1044
1044
  "like",
1045
1045
  "heart",
@@ -1665,7 +1665,7 @@ const msteamsPlugin = (0, openclaw_plugin_sdk_channel_core.createChatChannelPlug
1665
1665
  })
1666
1666
  }),
1667
1667
  gateway: { startAccount: async (ctx) => {
1668
- const { monitorMSTeamsProvider } = await Promise.resolve().then(() => require("./monitor-BJ7IyH4y.cjs"));
1668
+ const { monitorMSTeamsProvider } = await Promise.resolve().then(() => require("./monitor-Dij6VlyP.cjs"));
1669
1669
  const webhookPath = ctx.cfg.channels?.msteams?.webhook?.path || "/api/messages";
1670
1670
  const statusSink = (0, openclaw_plugin_sdk_channel_outbound.createAccountStatusSink)({
1671
1671
  accountId: ctx.accountId,
@@ -1,11 +1,11 @@
1
1
  require("../runtime-api.cjs");
2
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
2
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
3
3
  const require_delegated_state = require("./delegated-state-u-ywZyZT.cjs");
4
- const require_channel = require("./channel-ByzS7QJ0.cjs");
5
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
6
- const require_conversation_store_state = require("./conversation-store-state-B7JuyZTm.cjs");
7
- const require_send = require("./send-VUM7Sryb.cjs");
8
- const require_reaction_types = require("./reaction-types-CQ4oSUe7.cjs");
4
+ const require_channel = require("./channel-DKKKsoa6.cjs");
5
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
6
+ const require_conversation_store_state = require("./conversation-store-state-qsmX2I3x.cjs");
7
+ const require_send = require("./send-DeRNN5E6.cjs");
8
+ const require_reaction_types = require("./reaction-types-BqNpRWuf.cjs");
9
9
  let openclaw_plugin_sdk_channel_outbound = require("openclaw/plugin-sdk/channel-outbound");
10
10
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
11
11
  let openclaw_plugin_sdk_reply_payload = require("openclaw/plugin-sdk/reply-payload");
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
2
2
  const require_delegated_state = require("./delegated-state-u-ywZyZT.cjs");
3
3
  const require_config_schema = require("./config-schema-0KoBzb0t.cjs");
4
4
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
@@ -475,7 +475,7 @@ const msteamsSetupWizard = {
475
475
  };
476
476
  let oauthModule;
477
477
  try {
478
- oauthModule = await Promise.resolve().then(() => require("./oauth-DQjOnJ4l.cjs"));
478
+ oauthModule = await Promise.resolve().then(() => require("./oauth-BTrajyuc.cjs"));
479
479
  } catch (err) {
480
480
  await noteDelegatedAuthFailure(err);
481
481
  return {
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-BloeesfJ.cjs");
2
2
  const require_runtime = require("./runtime-gZTAuFux.cjs");
3
3
  require("../runtime-api.cjs");
4
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
4
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
5
5
  const require_bot_framework_service_url = require("./bot-framework-service-url-BUhTe8F3.cjs");
6
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
6
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
7
7
  let openclaw_plugin_sdk_lazy_runtime = require("openclaw/plugin-sdk/lazy-runtime");
8
8
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
9
9
  let openclaw_plugin_sdk_fetch_runtime = require("openclaw/plugin-sdk/fetch-runtime");
@@ -1,14 +1,14 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-BloeesfJ.cjs");
2
2
  const require_runtime = require("./runtime-gZTAuFux.cjs");
3
3
  require("../runtime-api.cjs");
4
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
4
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
5
5
  const require_bot_framework_service_url = require("./bot-framework-service-url-BUhTe8F3.cjs");
6
- const require_channel = require("./channel-ByzS7QJ0.cjs");
7
- const require_thread_session = require("./thread-session--rw3BTal.cjs");
8
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
6
+ const require_channel = require("./channel-DKKKsoa6.cjs");
7
+ const require_thread_session = require("./thread-session-Bwm9pe6P.cjs");
8
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
9
9
  const require_approval_card = require("./approval-card-DWPDItvq.cjs");
10
- const require_conversation_store_state = require("./conversation-store-state-B7JuyZTm.cjs");
11
- const require_reaction_types = require("./reaction-types-CQ4oSUe7.cjs");
10
+ const require_conversation_store_state = require("./conversation-store-state-qsmX2I3x.cjs");
11
+ const require_reaction_types = require("./reaction-types-BqNpRWuf.cjs");
12
12
  let openclaw_plugin_sdk_channel_outbound = require("openclaw/plugin-sdk/channel-outbound");
13
13
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
14
14
  let openclaw_plugin_sdk_allow_from = require("openclaw/plugin-sdk/allow-from");
@@ -769,9 +769,8 @@ function extractMSTeamsHtmlAttachmentIds(attachments) {
769
769
  for (const att of list) {
770
770
  const html = require_resolve_allowlist.extractHtmlFromAttachment(att);
771
771
  if (!html) continue;
772
- require_resolve_allowlist.ATTACHMENT_TAG_RE.lastIndex = 0;
773
- for (const match of html.matchAll(require_resolve_allowlist.ATTACHMENT_TAG_RE)) {
774
- const id = match[1]?.trim();
772
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "attachment", "id")) {
773
+ const id = value.trim();
775
774
  if (id) ids.add(id);
776
775
  }
777
776
  }
@@ -791,20 +790,18 @@ function summarizeMSTeamsHtmlAttachments(attachments) {
791
790
  const html = require_resolve_allowlist.extractHtmlFromAttachment(att);
792
791
  if (!html) continue;
793
792
  htmlAttachments += 1;
794
- require_resolve_allowlist.IMG_SRC_RE.lastIndex = 0;
795
- for (const match of html.matchAll(require_resolve_allowlist.IMG_SRC_RE)) {
793
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "img", "src")) {
796
794
  imgTags += 1;
797
- const src = match[1]?.trim();
795
+ const src = value.trim();
798
796
  if (src) {
799
797
  if (src.startsWith("data:")) dataImages += 1;
800
798
  else if (src.startsWith("cid:")) cidImages += 1;
801
799
  else srcHosts.add(require_resolve_allowlist.safeHostForUrl(src));
802
800
  }
803
801
  }
804
- require_resolve_allowlist.ATTACHMENT_TAG_RE.lastIndex = 0;
805
- for (const attachmentMatch of html.matchAll(require_resolve_allowlist.ATTACHMENT_TAG_RE)) {
802
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "attachment", "id")) {
806
803
  attachmentTags += 1;
807
- const id = attachmentMatch[1]?.trim();
804
+ const id = value.trim();
808
805
  if (id) attachmentIds.add(id);
809
806
  }
810
807
  }
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
2
2
  let openclaw_plugin_sdk_runtime_env = require("openclaw/plugin-sdk/runtime-env");
3
3
  let openclaw_plugin_sdk_provider_auth = require("openclaw/plugin-sdk/provider-auth");
4
4
  let openclaw_plugin_sdk_provider_auth_runtime = require("openclaw/plugin-sdk/provider-auth-runtime");
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
2
2
  //#region extensions/msteams/src/graph-thread.ts
3
3
  /**
4
4
  * Strip HTML tags from Teams message content, preserving @mention display names.
@@ -64,8 +64,48 @@ async function withMSTeamsAbortableRequestTimeout(params) {
64
64
  //#endregion
65
65
  //#region extensions/msteams/src/attachments/shared.ts
66
66
  const IMAGE_EXT_RE = /\.(avif|bmp|gif|heic|heif|jpe?g|png|tiff?|webp)$/i;
67
- const IMG_SRC_RE = /<img[^>]+src=["']([^"']+)["'][^>]*>/gi;
68
- const ATTACHMENT_TAG_RE = /<attachment[^>]+id=["']([^"']+)["'][^>]*>/gi;
67
+ /**
68
+ * Values of `attr` on each `<tag ...>` in document order, matching the captures of
69
+ * `/<tag[^>]+attr=["']([^"']+)["'][^>]*>/gi`: the last attribute spelling inside the
70
+ * tag wins, and a quoted value may contain `>`. Each `<tag` start is resolved from
71
+ * precomputed next-`>` and next-quote positions in one forward pass.
72
+ */
73
+ function htmlTagAttributeValues(html, tag, attr) {
74
+ const length = html.length;
75
+ const nextGt = new Int32Array(length + 1).fill(length);
76
+ const nextQuote = new Int32Array(length + 1).fill(length);
77
+ for (let index = length - 1; index >= 0; index -= 1) {
78
+ const char = html[index];
79
+ nextGt[index] = char === ">" ? index : nextGt[index + 1];
80
+ nextQuote[index] = char === "\"" || char === "'" ? index : nextQuote[index + 1];
81
+ }
82
+ const candidates = [];
83
+ for (const match of html.matchAll(new RegExp(`${attr}=["']`, "gi"))) {
84
+ const valueStart = match.index + match[0].length;
85
+ const valueEnd = nextQuote[valueStart];
86
+ if (valueEnd > valueStart && valueEnd < length && nextGt[valueEnd + 1] < length) candidates.push({
87
+ start: match.index,
88
+ valueStart,
89
+ valueEnd,
90
+ end: nextGt[valueEnd + 1] + 1
91
+ });
92
+ }
93
+ const values = [];
94
+ let resumeAt = 0;
95
+ let pastWindow = 0;
96
+ for (const open of html.matchAll(new RegExp(`<${tag}`, "gi"))) {
97
+ if (open.index < resumeAt) continue;
98
+ const nameEnd = open.index + open[0].length;
99
+ const lastStart = nextGt[nameEnd];
100
+ while (pastWindow < candidates.length && candidates[pastWindow].start <= lastStart) pastWindow += 1;
101
+ const candidate = candidates[pastWindow - 1];
102
+ if (candidate && candidate.start > nameEnd) {
103
+ values.push(html.slice(candidate.valueStart, candidate.valueEnd));
104
+ resumeAt = candidate.end;
105
+ }
106
+ }
107
+ return values;
108
+ }
69
109
  const GRAPH_HOSTED_CONTENT_SRC_RE = /\/hostedContents\/([^/?#]+)/i;
70
110
  function resolveInlineImageSourceId(src) {
71
111
  const hostedContentId = GRAPH_HOSTED_CONTENT_SRC_RE.exec(src)?.[1];
@@ -222,9 +262,8 @@ function extractInlineImageReferences(attachments) {
222
262
  for (const att of attachments) {
223
263
  const html = extractHtmlFromAttachment(att);
224
264
  if (!html) continue;
225
- IMG_SRC_RE.lastIndex = 0;
226
- for (const match of html.matchAll(IMG_SRC_RE)) {
227
- const src = match[1]?.trim();
265
+ for (const value of htmlTagAttributeValues(html, "img", "src")) {
266
+ const src = value.trim();
228
267
  if (src) {
229
268
  if (src.startsWith("data:")) out.push({
230
269
  kind: "data",
@@ -1114,6 +1153,34 @@ function htmlToPlainText(html) {
1114
1153
  return (0, openclaw_plugin_sdk_html_entity_runtime.decodeHtmlEntities)(html.replace(/<[^>]*>/g, " ")).replaceAll("\xA0", " ").replace(/\s+/g, " ").trim();
1115
1154
  }
1116
1155
  /**
1156
+ * Content of the first `<p ...>` whose opening tag contains `attribute`, up to the next
1157
+ * `</p>`, matching `/<p[^>]*ATTRIBUTE[^>]*>(.*?)<\/p>/is`. Opening tags, attribute
1158
+ * matches and `>` positions are all visited in one forward pass.
1159
+ */
1160
+ function findParagraphContent(html, attribute) {
1161
+ const attributes = Array.from(html.matchAll(attribute), (match) => ({
1162
+ start: match.index,
1163
+ end: match.index + match[0].length
1164
+ }));
1165
+ let nextAttribute = 0;
1166
+ let tagEnd = -1;
1167
+ for (const open of html.matchAll(/<p/gi)) {
1168
+ const afterOpen = open.index + open[0].length;
1169
+ if (tagEnd < afterOpen) {
1170
+ tagEnd = html.indexOf(">", afterOpen);
1171
+ if (tagEnd < 0) return;
1172
+ }
1173
+ while (nextAttribute < attributes.length && attributes[nextAttribute].start < afterOpen) nextAttribute += 1;
1174
+ const match = attributes[nextAttribute];
1175
+ if (match && match.end <= tagEnd) {
1176
+ const close = /<\/p>/gi;
1177
+ close.lastIndex = tagEnd + 1;
1178
+ const closeMatch = close.exec(html);
1179
+ return closeMatch ? html.slice(tagEnd + 1, closeMatch.index) : void 0;
1180
+ }
1181
+ }
1182
+ }
1183
+ /**
1117
1184
  * Extract quote info from MS Teams HTML reply attachments.
1118
1185
  * Teams wraps quoted content in a blockquote with itemtype="http://schema.skype.com/Reply".
1119
1186
  */
@@ -1129,8 +1196,8 @@ function extractMSTeamsQuoteInfo(attachments) {
1129
1196
  if (!content.includes("http://schema.skype.com/Reply")) continue;
1130
1197
  const senderMatch = /<strong[^>]*itemprop=["']mri["'][^>]*>(.*?)<\/strong>/i.exec(content);
1131
1198
  const sender = senderMatch?.[1] ? htmlToPlainText(senderMatch[1]) : void 0;
1132
- const bodyMatch = /<p[^>]*itemprop=["']copy["'][^>]*>(.*?)<\/p>/is.exec(content) ?? /<p[^>]*itemprop=["']preview["'][^>]*>(.*?)<\/p>/is.exec(content);
1133
- const body = bodyMatch?.[1] ? htmlToPlainText(bodyMatch[1]) : void 0;
1199
+ const bodyHtml = findParagraphContent(content, /itemprop=["']copy["']/gi) ?? findParagraphContent(content, /itemprop=["']preview["']/gi);
1200
+ const body = bodyHtml ? htmlToPlainText(bodyHtml) : void 0;
1134
1201
  const id = /<blockquote[^>]*\bitemid=["']([^"']+)["'][^>]*>/is.exec(content)?.[1]?.trim() || void 0;
1135
1202
  if (body) return {
1136
1203
  sender: sender ?? "unknown",
@@ -1599,24 +1666,12 @@ async function resolveMSTeamsUserAllowlist(params) {
1599
1666
  });
1600
1667
  }
1601
1668
  //#endregion
1602
- Object.defineProperty(exports, "ATTACHMENT_TAG_RE", {
1603
- enumerable: true,
1604
- get: function() {
1605
- return ATTACHMENT_TAG_RE;
1606
- }
1607
- });
1608
1669
  Object.defineProperty(exports, "GRAPH_ROOT", {
1609
1670
  enumerable: true,
1610
1671
  get: function() {
1611
1672
  return GRAPH_ROOT;
1612
1673
  }
1613
1674
  });
1614
- Object.defineProperty(exports, "IMG_SRC_RE", {
1615
- enumerable: true,
1616
- get: function() {
1617
- return IMG_SRC_RE;
1618
- }
1619
- });
1620
1675
  Object.defineProperty(exports, "MSTEAMS_DEFAULT_DELEGATED_SCOPES", {
1621
1676
  enumerable: true,
1622
1677
  get: function() {
@@ -1767,6 +1822,12 @@ Object.defineProperty(exports, "hasConfiguredMSTeamsCredentials", {
1767
1822
  return hasConfiguredMSTeamsCredentials;
1768
1823
  }
1769
1824
  });
1825
+ Object.defineProperty(exports, "htmlTagAttributeValues", {
1826
+ enumerable: true,
1827
+ get: function() {
1828
+ return htmlTagAttributeValues;
1829
+ }
1830
+ });
1770
1831
  Object.defineProperty(exports, "htmlToPlainText", {
1771
1832
  enumerable: true,
1772
1833
  get: function() {
@@ -1,10 +1,10 @@
1
1
  const require_runtime = require("./runtime-gZTAuFux.cjs");
2
2
  require("../runtime-api.cjs");
3
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
3
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
4
4
  const require_bot_framework_service_url = require("./bot-framework-service-url-BUhTe8F3.cjs");
5
- const require_channel = require("./channel-ByzS7QJ0.cjs");
6
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
7
- const require_conversation_store_state = require("./conversation-store-state-B7JuyZTm.cjs");
5
+ const require_channel = require("./channel-DKKKsoa6.cjs");
6
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
7
+ const require_conversation_store_state = require("./conversation-store-state-qsmX2I3x.cjs");
8
8
  let openclaw_plugin_sdk_channel_outbound = require("openclaw/plugin-sdk/channel-outbound");
9
9
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
10
10
  let openclaw_plugin_sdk_error_runtime = require("openclaw/plugin-sdk/error-runtime");
@@ -1,3 +1,3 @@
1
- const require_channel_setup = require("./channel.setup-DL8lcWT_.cjs");
1
+ const require_channel_setup = require("./channel.setup-BijiHWdx.cjs");
2
2
  require("../setup-plugin-api.cjs");
3
3
  exports.msteamsSetupPlugin = require_channel_setup.msteamsSetupPlugin;
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Pl_NQFYH.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-6NukYhtD.cjs");
2
2
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
3
3
  let openclaw_plugin_sdk_approval_auth_runtime = require("openclaw/plugin-sdk/approval-auth-runtime");
4
4
  let openclaw_plugin_sdk_routing = require("openclaw/plugin-sdk/routing");
@@ -0,0 +1 @@
1
+ {"version":3,"entries":[{"output":"api.cjs","source":"extensions/msteams/api.ts"},{"output":"channel-config-api.cjs","source":"extensions/msteams/channel-config-api.ts"},{"output":"channel-plugin-api.cjs","source":"extensions/msteams/channel-plugin-api.ts"},{"output":"configured-state.cjs","source":"extensions/msteams/configured-state.ts"},{"output":"directory-contract-api.cjs","source":"extensions/msteams/directory-contract-api.ts"},{"output":"doctor-contract-api.cjs","source":"extensions/msteams/doctor-contract-api.ts"},{"output":"index.cjs","source":"extensions/msteams/index.ts"},{"output":"qa-runner-api.cjs","source":"extensions/msteams/qa-runner-api.ts"},{"output":"runtime-api.cjs","source":"extensions/msteams/runtime-api.ts"},{"output":"secret-contract-api.cjs","source":"extensions/msteams/secret-contract-api.ts"},{"output":"setup-entry.cjs","source":"extensions/msteams/setup-entry.ts"},{"output":"setup-plugin-api.cjs","source":"extensions/msteams/setup-plugin-api.ts"}],"chunks":[{"output":".setup/adapter.runtime-BiWeMKXE.cjs","sha256":"0955d5767a9ae029b5e63bd0409270c1a4796549abfb0ac4999bb01f017d7584","facadeSource":"extensions/msteams/src/qa/adapter.runtime.ts","sources":["extensions/msteams/src/qa/adapter.runtime.ts","extensions/msteams/src/qa/bot-framework-server.ts"]},{"output":".setup/approval-card-DWPDItvq.cjs","sha256":"7f9ec8b926c94dc0d2f9bfd7c50a0a3308a8689a1038acbdaef3c283d71663b5","facadeSource":null,"sources":["extensions/msteams/src/approval-card-actions.ts","extensions/msteams/src/approval-card.ts"]},{"output":".setup/approval-handler.runtime-BuhDCcmA.cjs","sha256":"dcc2326f13c5931298e53d85c4115c421c07d67f910d507601eacd6f29882df4","facadeSource":"extensions/msteams/src/approval-handler.runtime.ts","sources":["extensions/msteams/src/approval-handler.runtime.ts"]},{"output":".setup/bot-framework-service-url-BUhTe8F3.cjs","sha256":"8b2be17e2613a60bcea30ff7b72994f1e86b7fa2a41c8b03c07197440a9b5db9","facadeSource":null,"sources":["extensions/msteams/src/bot-framework-service-url.ts"]},{"output":".setup/channel-DKKKsoa6.cjs","sha256":"efcacc2734face982ba594aa4eb2d995ccf6412207c4ea205e1a0c19cf230c2d","facadeSource":null,"sources":["extensions/msteams/src/action-params.ts","extensions/msteams/src/action-results.ts","extensions/msteams/src/action-threading.ts","extensions/msteams/src/approval-native.ts","extensions/msteams/src/channel.ts","extensions/msteams/src/doctor.ts","extensions/msteams/src/graph-action-context.ts","extensions/msteams/src/policy.ts","extensions/msteams/src/presentation.ts","extensions/msteams/src/read-policy.ts","extensions/msteams/src/session-route.ts","extensions/msteams/src/webhook-route.ts","packages/normalization-core/src/string-coerce.ts","src/gateway/gateway-http-route-contracts.ts","src/gateway/security-path.ts","src/gateway/server/plugins-http/path-context.ts","src/plugins/http-path-prefix.ts"]},{"output":".setup/channel.runtime-BSKd5itR.cjs","sha256":"c494822257bbd1365308c593be1216a5f88c00ef5544662701d3e25177dbde1b","facadeSource":"extensions/msteams/src/channel.runtime.ts","sources":["extensions/msteams/src/channel.runtime.ts","extensions/msteams/src/directory-live.ts","extensions/msteams/src/graph-conversation-members.ts","extensions/msteams/src/graph-group-management.ts","extensions/msteams/src/graph-members.ts","extensions/msteams/src/graph-messages.ts","extensions/msteams/src/graph-teams.ts","extensions/msteams/src/outbound.ts","extensions/msteams/src/probe.ts"]},{"output":".setup/channel.setup-BijiHWdx.cjs","sha256":"f4be8c54d057c47a147c5baa2ef22b4f58be06fcdd6530e8c3fb8fa3e55b46ce","facadeSource":null,"sources":["extensions/msteams/src/channel-config.ts","extensions/msteams/src/channel.setup.ts","extensions/msteams/src/errors.ts","extensions/msteams/src/setup-core.ts","extensions/msteams/src/setup-surface.ts"]},{"output":".setup/config-schema-0KoBzb0t.cjs","sha256":"66b2e92f7913c694e31076a4d67da0d34209e63c4e0c5e5bd201eabd5c30fed9","facadeSource":null,"sources":["extensions/msteams/src/config-schema.ts","extensions/msteams/src/config-ui-hints.ts"]},{"output":".setup/conversation-store-state-qsmX2I3x.cjs","sha256":"879df33e1b75e9867c44df2f880f3fc4c096439edea0890267f88d7d33efd8df","facadeSource":null,"sources":["extensions/msteams/src/conversation-store-helpers.ts","extensions/msteams/src/conversation-store-state.ts","extensions/msteams/src/file-consent-helpers.ts","extensions/msteams/src/file-consent.ts","extensions/msteams/src/format.ts","extensions/msteams/src/graph-chat.ts","extensions/msteams/src/graph-upload.ts","extensions/msteams/src/media-helpers.ts","extensions/msteams/src/mentions.ts","extensions/msteams/src/message-activity.ts","extensions/msteams/src/messenger.ts","extensions/msteams/src/pending-uploads-fs.ts","extensions/msteams/src/pending-uploads.ts","extensions/msteams/src/polls.ts","extensions/msteams/src/revoked-context.ts","extensions/msteams/src/sdk-proactive.ts","extensions/msteams/src/sent-message-cache.ts","extensions/msteams/src/sqlite-state.ts"]},{"output":".setup/delegated-state-u-ywZyZT.cjs","sha256":"12ac11581defd2750c6c567a54e5590e76289307be8d6fa4740b0ca918637534","facadeSource":null,"sources":["extensions/msteams/src/delegated-state.ts"]},{"output":".setup/monitor-Dij6VlyP.cjs","sha256":"60ae5151c34b56cf17041a36f142bd8c2da0119dd78d5776f1a795f8907ea2ad","facadeSource":"extensions/msteams/src/monitor.ts","sources":["extensions/msteams/src/adaptive-card-submit.ts","extensions/msteams/src/approval-card-submit.ts","extensions/msteams/src/attachments/bot-framework.ts","extensions/msteams/src/attachments/download.ts","extensions/msteams/src/attachments/graph.ts","extensions/msteams/src/attachments/html.ts","extensions/msteams/src/attachments/remote-media.ts","extensions/msteams/src/feedback-invoke.ts","extensions/msteams/src/feedback-reflection-store.ts","extensions/msteams/src/feedback-reflection.ts","extensions/msteams/src/file-consent-invoke.ts","extensions/msteams/src/monitor-handler.ts","extensions/msteams/src/monitor-handler/access.ts","extensions/msteams/src/monitor-handler/inbound-content.ts","extensions/msteams/src/monitor-handler/inbound-dispatch.ts","extensions/msteams/src/monitor-handler/inbound-facts.ts","extensions/msteams/src/monitor-handler/inbound-media.ts","extensions/msteams/src/monitor-handler/message-handler.ts","extensions/msteams/src/monitor-handler/reaction-handler.ts","extensions/msteams/src/monitor-handler/thread-context.ts","extensions/msteams/src/monitor-status.ts","extensions/msteams/src/monitor.ts","extensions/msteams/src/msteams-ingress.ts","extensions/msteams/src/replay-context.ts","extensions/msteams/src/reply-dispatcher.ts","extensions/msteams/src/reply-stream-controller.ts","extensions/msteams/src/sso-token-store.ts","extensions/msteams/src/team-identity.ts","extensions/msteams/src/thread-parent-context.ts","extensions/msteams/src/webhook-handler.ts","extensions/msteams/src/welcome-card.ts","src/channels/mention-gating.ts"]},{"output":".setup/oauth-BTrajyuc.cjs","sha256":"c5eb339883793aa8a05edec857bae63bfc8b173c5bd3acfbaf2392d68c4acb59","facadeSource":"extensions/msteams/src/oauth.ts","sources":["extensions/msteams/src/oauth.flow.ts","extensions/msteams/src/oauth.ts"]},{"output":".setup/reaction-types-BqNpRWuf.cjs","sha256":"347c9967dbfea41c8e48b525e6621c2f269b7a0f63e5d90d27341841ad8ec98f","facadeSource":null,"sources":["extensions/msteams/src/graph-thread.ts","extensions/msteams/src/reaction-types.ts"]},{"output":".setup/resolve-allowlist-6NukYhtD.cjs","sha256":"5c5ff4c9df39b42a26cd47ced7a61b7f2b1365e230c048e0230011b61e84f2a3","facadeSource":null,"sources":["extensions/msteams/src/attachments/shared.ts","extensions/msteams/src/cloud.ts","extensions/msteams/src/graph-users.ts","extensions/msteams/src/graph.ts","extensions/msteams/src/inbound.ts","extensions/msteams/src/oauth.shared.ts","extensions/msteams/src/oauth.token.ts","extensions/msteams/src/qa/private-runtime.ts","extensions/msteams/src/request-timeout.ts","extensions/msteams/src/resolve-allowlist.ts","extensions/msteams/src/sdk.ts","extensions/msteams/src/send-handoff.ts","extensions/msteams/src/token.ts","extensions/msteams/src/user-agent.ts"]},{"output":".setup/rolldown-runtime-BloeesfJ.cjs","sha256":"f6d735fe8d12fdafd7b0aba5388ce3cd75a782df76da5377cba1663718459d5b","facadeSource":null,"sources":[]},{"output":".setup/runtime-gZTAuFux.cjs","sha256":"f16d4b7c9c8ed1bc3088aca3fcbaf0d0226b766db964e97b13893d505cabfc34","facadeSource":null,"sources":["extensions/msteams/src/runtime.ts"]},{"output":".setup/secret-contract-api-ChQdBeU1.cjs","sha256":"cd9ef1c2041debc738bbc81bf5b63a64aa37b32c7dac727b484d4a2dada38fef","facadeSource":"extensions/msteams/secret-contract-api.ts","sources":[]},{"output":".setup/secret-contract-api-ipiUsANg.cjs","sha256":"29d947a14bc430f5e68f904e5177a51f1a93707b10c2c66daad25df36e61b211","facadeSource":null,"sources":["extensions/msteams/src/secret-contract.ts"]},{"output":".setup/send-DeRNN5E6.cjs","sha256":"6369f9bcaf929b753d623381a2d78864c6d46ac50b22ce0df1310881c55187c8","facadeSource":null,"sources":["extensions/msteams/src/send-context.ts","extensions/msteams/src/send.ts"]},{"output":".setup/setup-plugin-api-CqFDGPnT.cjs","sha256":"199a2c275f513c3141723906b31cf492cdd9016955b965eb53dfcf53abf1c01f","facadeSource":"extensions/msteams/setup-plugin-api.ts","sources":[]},{"output":".setup/thread-session-Bwm9pe6P.cjs","sha256":"c64af5eb98b03027e8e711576530f1d17d460ae44158018fa6705f9f69fc201a","facadeSource":null,"sources":["extensions/msteams/src/approval-auth.ts","extensions/msteams/src/monitor-handler/thread-session.ts"]},{"output":"api.cjs","sha256":"c2f978ba85bad99b30dec9d84d3197004d09e58e476bfa00a3d2313c8219dca4","facadeSource":"extensions/msteams/api.ts","sources":[]},{"output":"channel-config-api.cjs","sha256":"821ebe676551e85ce07954b444bb8813848b2b220d1c5ec4cd96c7b88ba6138a","facadeSource":"extensions/msteams/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.cjs","sha256":"eaa0d7c1dec5e8200eb370f16935ed765c5b531d78e389c55f884971ce557347","facadeSource":"extensions/msteams/channel-plugin-api.ts","sources":[]},{"output":"configured-state.cjs","sha256":"f2a39ca958245449c4fef25a376f6ed3b4b84be4e9edb9d623572a1becb2d9b7","facadeSource":"extensions/msteams/configured-state.ts","sources":["extensions/msteams/configured-state.ts"]},{"output":"directory-contract-api.cjs","sha256":"8fe7c869f553ededce0e38a38eb1144e123fb3c79ab3d504812cb3dc6b4563d9","facadeSource":"extensions/msteams/directory-contract-api.ts","sources":["extensions/msteams/directory-contract-api.ts"]},{"output":"doctor-contract-api.cjs","sha256":"c74a6ae4d17efc5ba9b40664829fab6b81bac16bacf991051a9f289404fc3fae","facadeSource":"extensions/msteams/doctor-contract-api.ts","sources":["extensions/msteams/config-doctor-api.ts","extensions/msteams/doctor-contract-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":"index.cjs","sha256":"7b5ba63fb0abc15c606c95b165e50e09bb31c37036489781cfcca685ae1d79dd","facadeSource":"extensions/msteams/index.ts","sources":["extensions/msteams/index.ts"]},{"output":"qa-runner-api.cjs","sha256":"536588b0150eb8e8785b302ec36290283bfd8d3295ad7a7f08332ddc3fb2b90a","facadeSource":"extensions/msteams/qa-runner-api.ts","sources":["extensions/msteams/qa-runner-api.ts","extensions/msteams/src/qa/cli.ts"]},{"output":"runtime-api.cjs","sha256":"9a3a8f49499dd1e7f40ad7c434357ed6a30d3ffc616f7004fedb0d1d1e592758","facadeSource":"extensions/msteams/runtime-api.ts","sources":[]},{"output":"secret-contract-api.cjs","sha256":"be53089b2ab85c3dbb04ded7d95793559bba9d543b21d00fd7075b5423b5539a","facadeSource":"extensions/msteams/secret-contract-api.ts","sources":[]},{"output":"setup-entry.cjs","sha256":"9280c51f0adaa1bce98684ef3559c204ee175d2814c7580308cf94ccdd4e0137","facadeSource":"extensions/msteams/setup-entry.ts","sources":["extensions/msteams/setup-entry.ts"]},{"output":"setup-plugin-api.cjs","sha256":"e0d9f23a588ef616b86bcdea6bf6103b7a62f4cd81dc65a1181b4116ecf74fe3","facadeSource":"extensions/msteams/setup-plugin-api.ts","sources":[]}],"unrenderedSources":["extensions/msteams/api.ts","extensions/msteams/channel-config-api.ts","extensions/msteams/channel-plugin-api.ts","extensions/msteams/runtime-api.ts","extensions/msteams/secret-contract-api.ts","extensions/msteams/setup-plugin-api.ts","extensions/msteams/src/attachments.ts"]}
package/dist/api.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_channel = require("./.setup/channel-ByzS7QJ0.cjs");
3
- const require_channel_setup = require("./.setup/channel.setup-DL8lcWT_.cjs");
2
+ const require_channel = require("./.setup/channel-DKKKsoa6.cjs");
3
+ const require_channel_setup = require("./.setup/channel.setup-BijiHWdx.cjs");
4
4
  exports.createMSTeamsSetupWizardBase = require_channel_setup.createMSTeamsSetupWizardBase;
5
5
  exports.msteamsPlugin = require_channel.msteamsPlugin;
6
6
  exports.msteamsSetupAdapter = require_channel_setup.msteamsSetupAdapter;
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_channel = require("./.setup/channel-ByzS7QJ0.cjs");
2
+ const require_channel = require("./.setup/channel-DKKKsoa6.cjs");
3
3
  exports.msteamsPlugin = require_channel.msteamsPlugin;
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_resolve_allowlist = require("./.setup/resolve-allowlist-Pl_NQFYH.cjs");
2
+ const require_resolve_allowlist = require("./.setup/resolve-allowlist-6NukYhtD.cjs");
3
3
  let openclaw_plugin_sdk_directory_runtime = require("openclaw/plugin-sdk/directory-runtime");
4
4
  const msteamsDirectoryContractPlugin = {
5
5
  id: "msteams",
@@ -4,7 +4,7 @@ let node_url = require("node:url");
4
4
  var setup_entry_default = (0, openclaw_plugin_sdk_channel_entry_contract.defineBundledChannelSetupEntry)({
5
5
  importMetaUrl: require("url").pathToFileURL(__filename).href,
6
6
  plugin: {
7
- specifier: (0, node_url.fileURLToPath)(new URL(".setup/setup-plugin-api-Dyf8kF-l.cjs", require("url").pathToFileURL(__filename).href).href),
7
+ specifier: (0, node_url.fileURLToPath)(new URL(".setup/setup-plugin-api-CqFDGPnT.cjs", require("url").pathToFileURL(__filename).href).href),
8
8
  exportName: "msteamsSetupPlugin"
9
9
  },
10
10
  secrets: {
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_channel_setup = require("./.setup/channel.setup-DL8lcWT_.cjs");
2
+ const require_channel_setup = require("./.setup/channel.setup-BijiHWdx.cjs");
3
3
  exports.msteamsSetupPlugin = require_channel_setup.msteamsSetupPlugin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/msteams",
3
- "version": "2026.9.34",
3
+ "version": "2026.9.35",
4
4
  "description": "OpenClaw Microsoft Teams channel plugin for bot conversations.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,7 +22,7 @@
22
22
  "openclaw": "workspace:*"
23
23
  },
24
24
  "peerDependencies": {
25
- "openclaw": ">=2026.9.34"
25
+ "openclaw": ">=2026.9.35"
26
26
  },
27
27
  "peerDependenciesMeta": {
28
28
  "openclaw": {
@@ -73,10 +73,10 @@
73
73
  "minHostVersion": ">=2026.4.10"
74
74
  },
75
75
  "compat": {
76
- "pluginApi": ">=2026.9.34"
76
+ "pluginApi": ">=2026.9.35"
77
77
  },
78
78
  "build": {
79
- "openclawVersion": "2026.9.34",
79
+ "openclawVersion": "2026.9.35",
80
80
  "runtimeFormat": "cjs"
81
81
  },
82
82
  "release": {