@openclaw/msteams 2026.10.7 → 2026.10.9

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-DCw2c3b1.cjs");
2
- const require_channel = require("./channel-B2ftcwuA.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
2
+ const require_channel = require("./channel-ouDH_pr2.cjs");
3
3
  const require_approval_card = require("./approval-card-DWPDItvq.cjs");
4
- const require_send = require("./send-BJ704vWC.cjs");
4
+ const require_send = require("./send-Cr2c-NLA.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-DCw2c3b1.cjs");
3
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
4
4
  const require_directory_contract_api = require("../directory-contract-api.cjs");
5
- const require_thread_session = require("./thread-session-CYU-gW_N.cjs");
6
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
5
+ const require_thread_session = require("./thread-session-DshIRtvn.cjs");
6
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.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");
@@ -303,7 +303,7 @@ const msTeamsLazyApprovalNativeRuntime = (0, openclaw_plugin_sdk_approval_handle
303
303
  request
304
304
  }),
305
305
  load: async () => {
306
- const { msTeamsApprovalNativeRuntime } = await Promise.resolve().then(() => require("./approval-handler.runtime-Bz07UW4K.cjs"));
306
+ const { msTeamsApprovalNativeRuntime } = await Promise.resolve().then(() => require("./approval-handler.runtime-DurkYq7Q.cjs"));
307
307
  return msTeamsApprovalNativeRuntime;
308
308
  }
309
309
  });
@@ -925,7 +925,7 @@ const collectMSTeamsSecurityFindings = openclaw_plugin_sdk_channel_policy.create
925
925
  severity: "warn",
926
926
  title: "MS Teams security warning"
927
927
  });
928
- const loadMSTeamsChannelRuntime = (0, openclaw_plugin_sdk_lazy_runtime.createLazyRuntimeNamedExport)(() => Promise.resolve().then(() => require("./channel.runtime-Chz9z3pi.cjs")), "msTeamsChannelRuntime");
928
+ const loadMSTeamsChannelRuntime = (0, openclaw_plugin_sdk_lazy_runtime.createLazyRuntimeNamedExport)(() => Promise.resolve().then(() => require("./channel.runtime-Cs55PYnR.cjs")), "msTeamsChannelRuntime");
929
929
  const MSTEAMS_REACTION_TYPES = [
930
930
  "like",
931
931
  "heart",
@@ -1445,7 +1445,7 @@ const msteamsPlugin = (0, openclaw_plugin_sdk_channel_core.createChatChannelPlug
1445
1445
  })
1446
1446
  }),
1447
1447
  gateway: { startAccount: async (ctx) => {
1448
- const { monitorMSTeamsProvider } = await Promise.resolve().then(() => require("./monitor-dvQ4LS9V.cjs"));
1448
+ const { monitorMSTeamsProvider } = await Promise.resolve().then(() => require("./monitor-BOQEeizo.cjs"));
1449
1449
  const webhookPath = ctx.cfg.channels?.msteams?.webhook?.path || "/api/messages";
1450
1450
  const statusSink = (0, openclaw_plugin_sdk_channel_outbound.createAccountStatusSink)({
1451
1451
  accountId: ctx.accountId,
@@ -1,11 +1,11 @@
1
1
  require("../runtime-api.cjs");
2
- const require_resolve_allowlist = require("./resolve-allowlist-DCw2c3b1.cjs");
2
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
3
3
  const require_token_config = require("./token-config-CqIh8z7Q.cjs");
4
- const require_channel = require("./channel-B2ftcwuA.cjs");
5
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
6
- const require_conversation_store_state = require("./conversation-store-state-9VM7xSZy.cjs");
7
- const require_send = require("./send-BJ704vWC.cjs");
8
- const require_reaction_types = require("./reaction-types-DTQ2Rq2v.cjs");
4
+ const require_channel = require("./channel-ouDH_pr2.cjs");
5
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.cjs");
6
+ const require_conversation_store_state = require("./conversation-store-state-H9QtDPp6.cjs");
7
+ const require_send = require("./send-Cr2c-NLA.cjs");
8
+ const require_reaction_types = require("./reaction-types-1iWrpk77.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-DCw2c3b1.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
2
2
  const require_token_config = require("./token-config-CqIh8z7Q.cjs");
3
3
  const require_config_schema = require("./config-schema-Dk0mRIam.cjs");
4
4
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
@@ -469,7 +469,7 @@ const msteamsSetupWizard = {
469
469
  };
470
470
  let oauthModule;
471
471
  try {
472
- oauthModule = await Promise.resolve().then(() => require("./oauth-BE4tGXvi.cjs"));
472
+ oauthModule = await Promise.resolve().then(() => require("./oauth-DX3UvAxU.cjs"));
473
473
  } catch (err) {
474
474
  await noteDelegatedAuthFailure(err);
475
475
  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-DCw2c3b1.cjs");
4
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
5
5
  const require_bot_framework_service_url = require("./bot-framework-service-url-CPp4d-Q6.cjs");
6
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
6
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.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,15 +1,15 @@
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-DCw2c3b1.cjs");
4
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
5
5
  const require_bot_framework_service_url = require("./bot-framework-service-url-CPp4d-Q6.cjs");
6
6
  const require_token_config = require("./token-config-CqIh8z7Q.cjs");
7
- const require_channel = require("./channel-B2ftcwuA.cjs");
8
- const require_thread_session = require("./thread-session-CYU-gW_N.cjs");
9
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
7
+ const require_channel = require("./channel-ouDH_pr2.cjs");
8
+ const require_thread_session = require("./thread-session-DshIRtvn.cjs");
9
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.cjs");
10
10
  const require_approval_card = require("./approval-card-DWPDItvq.cjs");
11
- const require_conversation_store_state = require("./conversation-store-state-9VM7xSZy.cjs");
12
- const require_reaction_types = require("./reaction-types-DTQ2Rq2v.cjs");
11
+ const require_conversation_store_state = require("./conversation-store-state-H9QtDPp6.cjs");
12
+ const require_reaction_types = require("./reaction-types-1iWrpk77.cjs");
13
13
  let openclaw_plugin_sdk_channel_outbound = require("openclaw/plugin-sdk/channel-outbound");
14
14
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
15
15
  let openclaw_plugin_sdk_allow_from = require("openclaw/plugin-sdk/allow-from");
@@ -734,9 +734,8 @@ function extractMSTeamsHtmlAttachmentIds(attachments) {
734
734
  for (const att of list) {
735
735
  const html = require_resolve_allowlist.extractHtmlFromAttachment(att);
736
736
  if (!html) continue;
737
- require_resolve_allowlist.ATTACHMENT_TAG_RE.lastIndex = 0;
738
- for (const match of html.matchAll(require_resolve_allowlist.ATTACHMENT_TAG_RE)) {
739
- const id = match[1]?.trim();
737
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "attachment", "id")) {
738
+ const id = value.trim();
740
739
  if (id) ids.add(id);
741
740
  }
742
741
  }
@@ -756,20 +755,18 @@ function summarizeMSTeamsHtmlAttachments(attachments) {
756
755
  const html = require_resolve_allowlist.extractHtmlFromAttachment(att);
757
756
  if (!html) continue;
758
757
  htmlAttachments += 1;
759
- require_resolve_allowlist.IMG_SRC_RE.lastIndex = 0;
760
- for (const match of html.matchAll(require_resolve_allowlist.IMG_SRC_RE)) {
758
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "img", "src")) {
761
759
  imgTags += 1;
762
- const src = match[1]?.trim();
760
+ const src = value.trim();
763
761
  if (src) {
764
762
  if (src.startsWith("data:")) dataImages += 1;
765
763
  else if (src.startsWith("cid:")) cidImages += 1;
766
764
  else srcHosts.add(require_resolve_allowlist.safeHostForUrl(src));
767
765
  }
768
766
  }
769
- require_resolve_allowlist.ATTACHMENT_TAG_RE.lastIndex = 0;
770
- for (const attachmentMatch of html.matchAll(require_resolve_allowlist.ATTACHMENT_TAG_RE)) {
767
+ for (const value of require_resolve_allowlist.htmlTagAttributeValues(html, "attachment", "id")) {
771
768
  attachmentTags += 1;
772
- const id = attachmentMatch[1]?.trim();
769
+ const id = value.trim();
773
770
  if (id) attachmentIds.add(id);
774
771
  }
775
772
  }
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-DCw2c3b1.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
2
2
  let openclaw_plugin_sdk_provider_auth = require("openclaw/plugin-sdk/provider-auth");
3
3
  let openclaw_plugin_sdk_provider_auth_runtime = require("openclaw/plugin-sdk/provider-auth-runtime");
4
4
  //#region extensions/msteams/src/oauth.flow.ts
@@ -1,4 +1,4 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-DCw2c3b1.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.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.
@@ -71,8 +71,48 @@ async function withMSTeamsAbortableRequestTimeout(params) {
71
71
  //#endregion
72
72
  //#region extensions/msteams/src/attachments/shared.ts
73
73
  const IMAGE_EXT_RE = /\.(avif|bmp|gif|heic|heif|jpe?g|png|tiff?|webp)$/i;
74
- const IMG_SRC_RE = /<img[^>]+src=["']([^"']+)["'][^>]*>/gi;
75
- const ATTACHMENT_TAG_RE = /<attachment[^>]+id=["']([^"']+)["'][^>]*>/gi;
74
+ /**
75
+ * Values of `attr` on each `<tag ...>` in document order, matching the captures of
76
+ * `/<tag[^>]+attr=["']([^"']+)["'][^>]*>/gi`: the last attribute spelling inside the
77
+ * tag wins, and a quoted value may contain `>`. Each `<tag` start is resolved from
78
+ * precomputed next-`>` and next-quote positions in one forward pass.
79
+ */
80
+ function htmlTagAttributeValues(html, tag, attr) {
81
+ const length = html.length;
82
+ const nextGt = new Int32Array(length + 1).fill(length);
83
+ const nextQuote = new Int32Array(length + 1).fill(length);
84
+ for (let index = length - 1; index >= 0; index -= 1) {
85
+ const char = html[index];
86
+ nextGt[index] = char === ">" ? index : nextGt[index + 1];
87
+ nextQuote[index] = char === "\"" || char === "'" ? index : nextQuote[index + 1];
88
+ }
89
+ const candidates = [];
90
+ for (const match of html.matchAll(new RegExp(`${attr}=["']`, "gi"))) {
91
+ const valueStart = match.index + match[0].length;
92
+ const valueEnd = nextQuote[valueStart];
93
+ if (valueEnd > valueStart && valueEnd < length && nextGt[valueEnd + 1] < length) candidates.push({
94
+ start: match.index,
95
+ valueStart,
96
+ valueEnd,
97
+ end: nextGt[valueEnd + 1] + 1
98
+ });
99
+ }
100
+ const values = [];
101
+ let resumeAt = 0;
102
+ let pastWindow = 0;
103
+ for (const open of html.matchAll(new RegExp(`<${tag}`, "gi"))) {
104
+ if (open.index < resumeAt) continue;
105
+ const nameEnd = open.index + open[0].length;
106
+ const lastStart = nextGt[nameEnd];
107
+ while (pastWindow < candidates.length && candidates[pastWindow].start <= lastStart) pastWindow += 1;
108
+ const candidate = candidates[pastWindow - 1];
109
+ if (candidate && candidate.start > nameEnd) {
110
+ values.push(html.slice(candidate.valueStart, candidate.valueEnd));
111
+ resumeAt = candidate.end;
112
+ }
113
+ }
114
+ return values;
115
+ }
76
116
  const GRAPH_HOSTED_CONTENT_SRC_RE = /\/hostedContents\/([^/?#]+)/i;
77
117
  function resolveInlineImageSourceId(src) {
78
118
  const hostedContentId = GRAPH_HOSTED_CONTENT_SRC_RE.exec(src)?.[1];
@@ -211,9 +251,8 @@ function extractInlineImageReferences(attachments) {
211
251
  for (const att of attachments) {
212
252
  const html = extractHtmlFromAttachment(att);
213
253
  if (!html) continue;
214
- IMG_SRC_RE.lastIndex = 0;
215
- for (const match of html.matchAll(IMG_SRC_RE)) {
216
- const src = match[1]?.trim();
254
+ for (const value of htmlTagAttributeValues(html, "img", "src")) {
255
+ const src = value.trim();
217
256
  if (src) {
218
257
  if (src.startsWith("data:")) out.push({
219
258
  kind: "data",
@@ -949,6 +988,34 @@ function htmlToPlainText(html) {
949
988
  return (0, openclaw_plugin_sdk_html_entity_runtime.decodeHtmlEntities)(html.replace(/<[^>]*>/g, " ")).replaceAll("\xA0", " ").replace(/\s+/g, " ").trim();
950
989
  }
951
990
  /**
991
+ * Content of the first `<p ...>` whose opening tag contains `attribute`, up to the next
992
+ * `</p>`, matching `/<p[^>]*ATTRIBUTE[^>]*>(.*?)<\/p>/is`. Opening tags, attribute
993
+ * matches and `>` positions are all visited in one forward pass.
994
+ */
995
+ function findParagraphContent(html, attribute) {
996
+ const attributes = Array.from(html.matchAll(attribute), (match) => ({
997
+ start: match.index,
998
+ end: match.index + match[0].length
999
+ }));
1000
+ let nextAttribute = 0;
1001
+ let tagEnd = -1;
1002
+ for (const open of html.matchAll(/<p/gi)) {
1003
+ const afterOpen = open.index + open[0].length;
1004
+ if (tagEnd < afterOpen) {
1005
+ tagEnd = html.indexOf(">", afterOpen);
1006
+ if (tagEnd < 0) return;
1007
+ }
1008
+ while (nextAttribute < attributes.length && attributes[nextAttribute].start < afterOpen) nextAttribute += 1;
1009
+ const match = attributes[nextAttribute];
1010
+ if (match && match.end <= tagEnd) {
1011
+ const close = /<\/p>/gi;
1012
+ close.lastIndex = tagEnd + 1;
1013
+ const closeMatch = close.exec(html);
1014
+ return closeMatch ? html.slice(tagEnd + 1, closeMatch.index) : void 0;
1015
+ }
1016
+ }
1017
+ }
1018
+ /**
952
1019
  * Extract quote info from MS Teams HTML reply attachments.
953
1020
  * Teams wraps quoted content in a blockquote with itemtype="http://schema.skype.com/Reply".
954
1021
  */
@@ -964,8 +1031,8 @@ function extractMSTeamsQuoteInfo(attachments) {
964
1031
  if (!content.includes("http://schema.skype.com/Reply")) continue;
965
1032
  const senderMatch = /<strong[^>]*itemprop=["']mri["'][^>]*>(.*?)<\/strong>/i.exec(content);
966
1033
  const sender = senderMatch?.[1] ? htmlToPlainText(senderMatch[1]) : void 0;
967
- const bodyMatch = /<p[^>]*itemprop=["']copy["'][^>]*>(.*?)<\/p>/is.exec(content) ?? /<p[^>]*itemprop=["']preview["'][^>]*>(.*?)<\/p>/is.exec(content);
968
- const body = bodyMatch?.[1] ? htmlToPlainText(bodyMatch[1]) : void 0;
1034
+ const bodyHtml = findParagraphContent(content, /itemprop=["']copy["']/gi) ?? findParagraphContent(content, /itemprop=["']preview["']/gi);
1035
+ const body = bodyHtml ? htmlToPlainText(bodyHtml) : void 0;
969
1036
  const id = /<blockquote[^>]*\bitemid=["']([^"']+)["'][^>]*>/is.exec(content)?.[1]?.trim() || void 0;
970
1037
  if (body) return {
971
1038
  sender: sender ?? "unknown",
@@ -1422,24 +1489,12 @@ async function resolveMSTeamsUserAllowlist(params) {
1422
1489
  });
1423
1490
  }
1424
1491
  //#endregion
1425
- Object.defineProperty(exports, "ATTACHMENT_TAG_RE", {
1426
- enumerable: true,
1427
- get: function() {
1428
- return ATTACHMENT_TAG_RE;
1429
- }
1430
- });
1431
1492
  Object.defineProperty(exports, "GRAPH_ROOT", {
1432
1493
  enumerable: true,
1433
1494
  get: function() {
1434
1495
  return GRAPH_ROOT;
1435
1496
  }
1436
1497
  });
1437
- Object.defineProperty(exports, "IMG_SRC_RE", {
1438
- enumerable: true,
1439
- get: function() {
1440
- return IMG_SRC_RE;
1441
- }
1442
- });
1443
1498
  Object.defineProperty(exports, "MSTEAMS_DEFAULT_DELEGATED_SCOPES", {
1444
1499
  enumerable: true,
1445
1500
  get: function() {
@@ -1578,6 +1633,12 @@ Object.defineProperty(exports, "fetchGraphJson", {
1578
1633
  return fetchGraphJson;
1579
1634
  }
1580
1635
  });
1636
+ Object.defineProperty(exports, "htmlTagAttributeValues", {
1637
+ enumerable: true,
1638
+ get: function() {
1639
+ return htmlTagAttributeValues;
1640
+ }
1641
+ });
1581
1642
  Object.defineProperty(exports, "htmlToPlainText", {
1582
1643
  enumerable: true,
1583
1644
  get: function() {
@@ -1,11 +1,11 @@
1
1
  const require_runtime = require("./runtime-gZTAuFux.cjs");
2
2
  require("../runtime-api.cjs");
3
- const require_resolve_allowlist = require("./resolve-allowlist-DCw2c3b1.cjs");
3
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.cjs");
4
4
  const require_bot_framework_service_url = require("./bot-framework-service-url-CPp4d-Q6.cjs");
5
5
  const require_token_config = require("./token-config-CqIh8z7Q.cjs");
6
- const require_channel = require("./channel-B2ftcwuA.cjs");
7
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
8
- const require_conversation_store_state = require("./conversation-store-state-9VM7xSZy.cjs");
6
+ const require_channel = require("./channel-ouDH_pr2.cjs");
7
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.cjs");
8
+ const require_conversation_store_state = require("./conversation-store-state-H9QtDPp6.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_error_runtime = require("openclaw/plugin-sdk/error-runtime");
@@ -1,3 +1,3 @@
1
- const require_channel_setup = require("./channel.setup-UNYeg2e9.cjs");
1
+ const require_channel_setup = require("./channel.setup-Deb_TZQu.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-DCw2c3b1.cjs");
1
+ const require_resolve_allowlist = require("./resolve-allowlist-0xGaYkeS.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-backup-resources.cjs","source":"extensions/msteams/doctor-backup-resources.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-JoPydWqP.cjs","sha256":"d44ff5f05f8b889d28ddadd8ee10fdae6bfee07374f2dfcb9f8c60395c94dbe1","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-DurkYq7Q.cjs","sha256":"dcc504960ac314bea20b7cb4a3b8e05acc330d15a28494aca639cb7d528cb031","facadeSource":"extensions/msteams/src/approval-handler.runtime.ts","sources":["extensions/msteams/src/approval-handler.runtime.ts"]},{"output":".setup/bot-framework-service-url-CPp4d-Q6.cjs","sha256":"d29f9aaf183e6c846604206772de329d24bc8e4f0be1a177275df1ccbedd1ed1","facadeSource":null,"sources":["extensions/msteams/src/bot-framework-service-url.ts"]},{"output":".setup/channel-ouDH_pr2.cjs","sha256":"876b2b586ad8845e95a1a501ee0df8b27b806667e50a85b3d30206742a891088","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/outbound-config.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-Cs55PYnR.cjs","sha256":"49a3e02bbdd5106a65db4cff40c778a2a9ebce9d11bb49fbaca106246510e3c6","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-Deb_TZQu.cjs","sha256":"ab0d1fcb2a1e2b107b5f31f791776af2140738c2edcf6fd2d18ea9d17325dbee","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-Dk0mRIam.cjs","sha256":"67b90385c303062078d92032c4ad60d43cb06efba1e8b76d1f9fce146e418e3d","facadeSource":null,"sources":["extensions/msteams/src/config-schema.ts","extensions/msteams/src/config-ui-hints.ts"]},{"output":".setup/conversation-store-state-H9QtDPp6.cjs","sha256":"1960bfab60c6e88dcfc7bb7472e4f5d5afbb738d5342998fa96d25be09aed6f9","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/monitor-BOQEeizo.cjs","sha256":"e2aadb337a4166f3a82f9e63502953fe4345c5b4f824a74ecf2231fd0bc38c1d","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-DX3UvAxU.cjs","sha256":"f987d62e452afa467983d21ddf94d6867dae6384459a42a5e70d89390bc33019","facadeSource":"extensions/msteams/src/oauth.ts","sources":["extensions/msteams/src/oauth.flow.ts","extensions/msteams/src/oauth.ts"]},{"output":".setup/reaction-types-1iWrpk77.cjs","sha256":"d803af264198def7c34f314048961d0ba94a69a0da1d32519522ad4499f2aea2","facadeSource":null,"sources":["extensions/msteams/src/graph-thread.ts","extensions/msteams/src/reaction-types.ts"]},{"output":".setup/resolve-allowlist-0xGaYkeS.cjs","sha256":"7d3b6d24c117bb8ae072ca58d90b2104b9f52e56b087295a5d9fb675c8a396b5","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-Cr2c-NLA.cjs","sha256":"aac42ffe7ac1ba94132d0aff549f8080476f1375279011b51392c520815f849c","facadeSource":null,"sources":["extensions/msteams/src/send-context.ts","extensions/msteams/src/send.ts"]},{"output":".setup/setup-plugin-api-mz1Dh7Nj.cjs","sha256":"465d340d3822d0eab6964b5ad9539b09223d6f62471d81ddc8e835f15675edbf","facadeSource":"extensions/msteams/setup-plugin-api.ts","sources":[]},{"output":".setup/thread-session-DshIRtvn.cjs","sha256":"191902320ee59992907b54da28e994204a2bd0f37e8ede1205c46d835f303aec","facadeSource":null,"sources":["extensions/msteams/src/approval-auth.ts","extensions/msteams/src/monitor-handler/thread-session.ts"]},{"output":".setup/token-config-CqIh8z7Q.cjs","sha256":"b9bd936da03f12605421ee9ccf60825116b9a136f121d5a64f3d578c01df040b","facadeSource":null,"sources":["extensions/msteams/src/delegated-state.ts","extensions/msteams/src/token-config.ts"]},{"output":"api.cjs","sha256":"f7680bbea9e03f4c76478a7eab52c85142f4b76350487873fd0e3087c208e131","facadeSource":"extensions/msteams/api.ts","sources":[]},{"output":"channel-config-api.cjs","sha256":"7a3b3e9fb0742a3e9b53d4298c1d1bd36fe9f832742c02c01568e24b2ea64fce","facadeSource":"extensions/msteams/channel-config-api.ts","sources":[]},{"output":"channel-plugin-api.cjs","sha256":"e0143d4b8af56c64cf53a881c3299451640b3afdcef5c1b81fe06fa26dd89b95","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":"6bd1f670a84c064d3f7eaa6043619b73bc997b43ac3244bc2140a3eb5116ae9b","facadeSource":"extensions/msteams/directory-contract-api.ts","sources":["extensions/msteams/directory-contract-api.ts"]},{"output":"doctor-backup-resources.cjs","sha256":"dd07e5b9d0b9bca67b1282809c75c5913f6e3b44a280003b527cc97bb7a51ebc","facadeSource":"extensions/msteams/doctor-backup-resources.ts","sources":["extensions/msteams/doctor-backup-resources.ts"]},{"output":"doctor-contract-api.cjs","sha256":"ba4f2923781328293fcb211c87f0d0e4bedba6351f804639a7cb217d38d0dcc5","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":"49686f1ca9d7063464a5ba4e9bed4de3925118f9de65b2b817a5619acb7297b9","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":"879ab3c2a66671923a7d36cacdf4c178284f7046c669a9ef87ba534e9af4499f","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":"4570c906fd85f6e2e55e7ceea8f658106ab47edbd2ac35844dd5df76415141d8","facadeSource":"extensions/msteams/setup-entry.ts","sources":["extensions/msteams/setup-entry.ts"]},{"output":"setup-plugin-api.cjs","sha256":"f84a816566ea0f348491605a045592edad8ef621b13f55fce31fab2dc43c0c33","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-B2ftcwuA.cjs");
3
- const require_channel_setup = require("./.setup/channel.setup-UNYeg2e9.cjs");
2
+ const require_channel = require("./.setup/channel-ouDH_pr2.cjs");
3
+ const require_channel_setup = require("./.setup/channel.setup-Deb_TZQu.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-B2ftcwuA.cjs");
2
+ const require_channel = require("./.setup/channel-ouDH_pr2.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-DCw2c3b1.cjs");
2
+ const require_resolve_allowlist = require("./.setup/resolve-allowlist-0xGaYkeS.cjs");
3
3
  const require_token_config = require("./.setup/token-config-CqIh8z7Q.cjs");
4
4
  let openclaw_plugin_sdk_directory_runtime = require("openclaw/plugin-sdk/directory-runtime");
5
5
  const msteamsDirectoryContractPlugin = {
@@ -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-i60v-Y0l.cjs", require("url").pathToFileURL(__filename).href).href),
7
+ specifier: (0, node_url.fileURLToPath)(new URL(".setup/setup-plugin-api-mz1Dh7Nj.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-UNYeg2e9.cjs");
2
+ const require_channel_setup = require("./.setup/channel.setup-Deb_TZQu.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.10.7",
3
+ "version": "2026.10.9",
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.10.7"
25
+ "openclaw": ">=2026.10.9"
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.10.7"
76
+ "pluginApi": ">=2026.10.9"
77
77
  },
78
78
  "build": {
79
- "openclawVersion": "2026.10.7",
79
+ "openclawVersion": "2026.10.9",
80
80
  "runtimeFormat": "cjs"
81
81
  },
82
82
  "release": {