@openclaw/msteams 2026.10.1-beta.2 → 2026.10.5-beta.1

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.
Files changed (26) hide show
  1. package/dist/.setup/{adapter.runtime-D0HYByze.cjs → adapter.runtime-JoPydWqP.cjs} +1 -1
  2. package/dist/.setup/{approval-handler.runtime-C-RJ3wXc.cjs → approval-handler.runtime-bUN9icMr.cjs} +3 -3
  3. package/dist/.setup/{bot-framework-service-url-BUhTe8F3.cjs → bot-framework-service-url-CPp4d-Q6.cjs} +1 -5
  4. package/dist/.setup/{channel-BFhXodl2.cjs → channel-Cifn9fsv.cjs} +230 -430
  5. package/dist/.setup/{channel.runtime-D9jrw2SN.cjs → channel.runtime-DWRAolil.cjs} +70 -44
  6. package/dist/.setup/{channel.setup-ss0TO-ap.cjs → channel.setup-BjbHugkL.cjs} +5 -7
  7. package/dist/.setup/{config-schema-0KoBzb0t.cjs → config-schema-Dk0mRIam.cjs} +1 -1
  8. package/dist/.setup/{conversation-store-state-f7V8CVNy.cjs → conversation-store-state-DprmOfl7.cjs} +103 -236
  9. package/dist/.setup/{monitor-DfSPCRkk.cjs → monitor-C9x_CJhY.cjs} +173 -322
  10. package/dist/.setup/oauth-CWJ85AMw.cjs +55 -0
  11. package/dist/.setup/{reaction-types-B-GEv57k.cjs → reaction-types-Ig9sQJuR.cjs} +3 -3
  12. package/dist/.setup/{resolve-allowlist-Ct9yxQUw.cjs → resolve-allowlist-DdDBVCzl.cjs} +77 -174
  13. package/dist/.setup/{send-7VV1iCai.cjs → send-rJpcVtRp.cjs} +8 -9
  14. package/dist/.setup/{setup-plugin-api-B0OFG32J.cjs → setup-plugin-api-DfoVOqMJ.cjs} +1 -1
  15. package/dist/.setup/{thread-session-ClI-lSyG.cjs → thread-session-B74FC1Id.cjs} +1 -1
  16. package/dist/.setup/{token-config-DOt3XwVa.cjs → token-config-CqIh8z7Q.cjs} +6 -7
  17. package/dist/api.cjs +2 -2
  18. package/dist/channel-config-api.cjs +1 -1
  19. package/dist/channel-plugin-api.cjs +1 -1
  20. package/dist/directory-contract-api.cjs +2 -2
  21. package/dist/doctor-contract-api.cjs +10 -3
  22. package/dist/qa-runner-api.cjs +9 -10
  23. package/dist/setup-entry.cjs +1 -1
  24. package/dist/setup-plugin-api.cjs +1 -1
  25. package/package.json +4 -4
  26. package/dist/.setup/oauth-CYxMYIOQ.cjs +0 -102
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./.setup/rolldown-runtime-BloeesfJ.cjs");
3
- const require_token_config = require("./.setup/token-config-DOt3XwVa.cjs");
3
+ const require_token_config = require("./.setup/token-config-CqIh8z7Q.cjs");
4
4
  const require_doctor_backup_resources = require("./doctor-backup-resources.cjs");
5
5
  let openclaw_plugin_sdk_string_coerce_runtime = require("openclaw/plugin-sdk/string-coerce-runtime");
6
6
  let openclaw_plugin_sdk_error_runtime = require("openclaw/plugin-sdk/error-runtime");
@@ -186,14 +186,20 @@ const streamingAliasMigration = (0, runtime_doctor_migrations_exports.defineChan
186
186
  streaming: { defaultMode: "partial" }
187
187
  });
188
188
  const legacyConfigRules = [...webhookMigration.legacyConfigRules, ...streamingAliasMigration.legacyConfigRules];
189
+ function normalizeHistoricalWebhookConfig({ cfg }) {
190
+ return {
191
+ ...webhookMigration.normalizeCompatibilityConfig({ cfg }),
192
+ historicalWebhookAccountIds: cfg.channels?.msteams === void 0 && !require_token_config.resolveMSTeamsCredentials() ? null : cfg.channels?.msteams?.enabled === false ? [] : [void 0]
193
+ };
194
+ }
189
195
  function normalizeCompatibilityConfig({ cfg }) {
190
- const webhook = webhookMigration.normalizeCompatibilityConfig({ cfg });
196
+ const webhook = normalizeHistoricalWebhookConfig({ cfg });
191
197
  return {
192
198
  ...streamingAliasMigration.normalizeChannelConfig({
193
199
  cfg: webhook.config,
194
200
  changes: webhook.changes
195
201
  }),
196
- historicalWebhookAccountIds: cfg.channels?.msteams === void 0 && !require_token_config.resolveMSTeamsCredentials() ? null : cfg.channels?.msteams?.enabled === false ? [] : [void 0]
202
+ historicalWebhookAccountIds: webhook.historicalWebhookAccountIds
197
203
  };
198
204
  }
199
205
  //#endregion
@@ -342,4 +348,5 @@ const stateMigrations = [
342
348
  exports.historicalWebhookListener = historicalWebhookListener;
343
349
  exports.legacyConfigRules = legacyConfigRules;
344
350
  exports.normalizeCompatibilityConfig = normalizeCompatibilityConfig;
351
+ exports.normalizeHistoricalWebhookConfig = normalizeHistoricalWebhookConfig;
345
352
  exports.stateMigrations = stateMigrations;
@@ -2,15 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let openclaw_plugin_sdk_qa_runner_runtime = require("openclaw/plugin-sdk/qa-runner-runtime");
3
3
  //#region extensions/msteams/src/qa/cli.ts
4
4
  const DEFAULT_MSTEAMS_QA_SCENARIOS = ["channel-canary"];
5
- const loadMSTeamsQaAdapterRuntime = (0, openclaw_plugin_sdk_qa_runner_runtime.createLazyCliRuntimeLoader)(() => Promise.resolve().then(() => require("./.setup/adapter.runtime-D0HYByze.cjs")));
6
- async function runQaMSTeams(options) {
7
- await (0, openclaw_plugin_sdk_qa_runner_runtime.runLiveTransportQaSuiteCommand)({
8
- channelId: "msteams",
9
- defaultProviderMode: "mock-openai",
10
- options,
11
- selectScenarioIds: ({ scenarioIds }) => scenarioIds?.length ? [...scenarioIds] : [...DEFAULT_MSTEAMS_QA_SCENARIOS]
12
- });
13
- }
5
+ const loadMSTeamsQaAdapterRuntime = (0, openclaw_plugin_sdk_qa_runner_runtime.createLazyCliRuntimeLoader)(() => Promise.resolve().then(() => require("./.setup/adapter.runtime-JoPydWqP.cjs")));
14
6
  //#endregion
15
7
  //#region extensions/msteams/qa-runner-api.ts
16
8
  const qaRunnerCliRegistrations = [(0, openclaw_plugin_sdk_qa_runner_runtime.createLiveTransportQaCliRegistration)({
@@ -30,7 +22,14 @@ const qaRunnerCliRegistrations = [(0, openclaw_plugin_sdk_qa_runner_runtime.crea
30
22
  allowFailuresHelp: "Write artifacts without setting a failing exit code when scenarios fail",
31
23
  scenarioHelp: "Run only the named Microsoft Teams QA scenario (repeatable)",
32
24
  sutAccountHelp: "Normalized Microsoft Teams SUT account id in QA artifacts",
33
- run: runQaMSTeams
25
+ run: async (options) => {
26
+ await (0, openclaw_plugin_sdk_qa_runner_runtime.runLiveTransportQaSuiteCommand)({
27
+ channelId: "msteams",
28
+ defaultProviderMode: "mock-openai",
29
+ options,
30
+ selectScenarioIds: ({ scenarioIds }) => scenarioIds?.length ? [...scenarioIds] : [...DEFAULT_MSTEAMS_QA_SCENARIOS]
31
+ });
32
+ }
34
33
  })];
35
34
  //#endregion
36
35
  exports.qaRunnerCliRegistrations = qaRunnerCliRegistrations;
@@ -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-B0OFG32J.cjs", require("url").pathToFileURL(__filename).href).href),
7
+ specifier: (0, node_url.fileURLToPath)(new URL(".setup/setup-plugin-api-DfoVOqMJ.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-ss0TO-ap.cjs");
2
+ const require_channel_setup = require("./.setup/channel.setup-BjbHugkL.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.1-beta.2",
3
+ "version": "2026.10.5-beta.1",
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.1-beta.2"
25
+ "openclaw": ">=2026.10.5-beta.1"
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.1-beta.2"
76
+ "pluginApi": ">=2026.10.5-beta.1"
77
77
  },
78
78
  "build": {
79
- "openclawVersion": "2026.10.1-beta.2",
79
+ "openclawVersion": "2026.10.5-beta.1",
80
80
  "runtimeFormat": "cjs"
81
81
  },
82
82
  "release": {
@@ -1,102 +0,0 @@
1
- const require_resolve_allowlist = require("./resolve-allowlist-Ct9yxQUw.cjs");
2
- let openclaw_plugin_sdk_runtime_env = require("openclaw/plugin-sdk/runtime-env");
3
- let openclaw_plugin_sdk_provider_auth = require("openclaw/plugin-sdk/provider-auth");
4
- let openclaw_plugin_sdk_provider_auth_runtime = require("openclaw/plugin-sdk/provider-auth-runtime");
5
- //#region extensions/msteams/src/oauth.flow.ts
6
- function shouldUseManualOAuthFlow(isRemote) {
7
- return isRemote || (0, openclaw_plugin_sdk_runtime_env.isWSL2Sync)();
8
- }
9
- function buildMSTeamsAuthUrl(params) {
10
- const scopes = params.scopes ?? require_resolve_allowlist.MSTEAMS_DEFAULT_DELEGATED_SCOPES;
11
- return `${require_resolve_allowlist.buildMSTeamsAuthEndpoint(params.tenantId)}?${new URLSearchParams({
12
- client_id: params.clientId,
13
- response_type: "code",
14
- redirect_uri: require_resolve_allowlist.MSTEAMS_OAUTH_REDIRECT_URI,
15
- scope: scopes.join(" "),
16
- code_challenge: params.challenge,
17
- code_challenge_method: "S256",
18
- state: params.state,
19
- prompt: "consent"
20
- }).toString()}`;
21
- }
22
- //#endregion
23
- //#region extensions/msteams/src/oauth.ts
24
- async function loginMSTeamsDelegated(ctx, params) {
25
- const scopes = params.scopes ?? require_resolve_allowlist.MSTEAMS_DEFAULT_DELEGATED_SCOPES;
26
- const needsManual = shouldUseManualOAuthFlow(ctx.isRemote);
27
- await ctx.note(needsManual ? [
28
- "You are running in a remote/VPS environment.",
29
- "A URL will be shown for you to open in your LOCAL browser.",
30
- "After signing in, copy the redirect URL and paste it back here."
31
- ].join("\n") : [
32
- "Browser will open for Microsoft authentication.",
33
- `Sign in to grant delegated permissions for MSTeams.`,
34
- `The callback will be captured automatically on localhost:${require_resolve_allowlist.MSTEAMS_OAUTH_CALLBACK_PORT}.`
35
- ].join("\n"), "MSTeams Delegated OAuth");
36
- const { verifier, challenge } = (0, openclaw_plugin_sdk_provider_auth.generateHexPkceVerifierChallenge)();
37
- const state = (0, openclaw_plugin_sdk_provider_auth_runtime.generateOAuthState)();
38
- const authUrl = buildMSTeamsAuthUrl({
39
- tenantId: params.tenantId,
40
- clientId: params.clientId,
41
- challenge,
42
- state,
43
- scopes
44
- });
45
- if (needsManual) return manualFlow(ctx, authUrl, state, verifier, params);
46
- ctx.progress.update("Complete sign-in in browser...");
47
- try {
48
- await ctx.openUrl(authUrl);
49
- } catch {
50
- ctx.log(`\nOpen this URL in your browser:\n\n${authUrl}\n`);
51
- }
52
- try {
53
- const { code } = await (0, openclaw_plugin_sdk_provider_auth_runtime.waitForLocalOAuthCallback)({
54
- expectedState: state,
55
- timeoutMs: 3e5,
56
- port: require_resolve_allowlist.MSTEAMS_OAUTH_CALLBACK_PORT,
57
- callbackPath: require_resolve_allowlist.MSTEAMS_OAUTH_CALLBACK_PATH,
58
- redirectUri: require_resolve_allowlist.MSTEAMS_OAUTH_REDIRECT_URI,
59
- successTitle: "MSTeams Delegated OAuth complete",
60
- progressMessage: `Waiting for OAuth callback on ${require_resolve_allowlist.MSTEAMS_OAUTH_REDIRECT_URI}...`,
61
- onProgress: (msg) => ctx.progress.update(msg)
62
- });
63
- ctx.progress.update("Exchanging authorization code for tokens...");
64
- return await require_resolve_allowlist.exchangeMSTeamsCodeForTokens({
65
- tenantId: params.tenantId,
66
- clientId: params.clientId,
67
- clientSecret: params.clientSecret,
68
- code,
69
- verifier,
70
- scopes
71
- });
72
- } catch (err) {
73
- if (err instanceof Error && (err.message.includes("EADDRINUSE") || err.message.includes("port") || err.message.includes("listen"))) {
74
- ctx.progress.update("Local callback server failed. Switching to manual mode...");
75
- return manualFlow(ctx, authUrl, state, verifier, params, err);
76
- }
77
- throw err;
78
- }
79
- }
80
- async function manualFlow(ctx, authUrl, state, verifier, params, cause) {
81
- ctx.progress.update("OAuth URL ready");
82
- ctx.log(`\nOpen this URL in your LOCAL browser:\n\n${authUrl}\n`);
83
- ctx.progress.update("Waiting for you to paste the callback URL...");
84
- const callbackInput = await ctx.prompt("Paste the redirect URL here: ");
85
- const parsed = (0, openclaw_plugin_sdk_provider_auth_runtime.parseOAuthCallbackInput)(callbackInput, {
86
- missingState: "Missing 'state' parameter in URL. Paste the full redirect URL.",
87
- invalidInput: "Paste the full redirect URL (including code and state parameters), not just the authorization code."
88
- });
89
- if ("error" in parsed) throw new Error(parsed.error, cause ? { cause } : void 0);
90
- if (parsed.state !== state) throw new Error("OAuth state mismatch - please try again", cause ? { cause } : void 0);
91
- ctx.progress.update("Exchanging authorization code for tokens...");
92
- return require_resolve_allowlist.exchangeMSTeamsCodeForTokens({
93
- tenantId: params.tenantId,
94
- clientId: params.clientId,
95
- clientSecret: params.clientSecret,
96
- code: parsed.code,
97
- verifier,
98
- scopes: params.scopes
99
- });
100
- }
101
- //#endregion
102
- exports.loginMSTeamsDelegated = loginMSTeamsDelegated;