@openclaw/msteams 2026.10.2 → 2026.10.5-beta.2
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/.setup/{adapter.runtime-D0HYByze.cjs → adapter.runtime-JoPydWqP.cjs} +1 -1
- package/dist/.setup/{approval-handler.runtime-C-RJ3wXc.cjs → approval-handler.runtime-bUN9icMr.cjs} +3 -3
- package/dist/.setup/{bot-framework-service-url-BUhTe8F3.cjs → bot-framework-service-url-CPp4d-Q6.cjs} +1 -5
- package/dist/.setup/{channel-BFhXodl2.cjs → channel-Cifn9fsv.cjs} +230 -430
- package/dist/.setup/{channel.runtime-D9jrw2SN.cjs → channel.runtime-DWRAolil.cjs} +70 -44
- package/dist/.setup/{channel.setup-ss0TO-ap.cjs → channel.setup-BjbHugkL.cjs} +5 -7
- package/dist/.setup/{config-schema-0KoBzb0t.cjs → config-schema-Dk0mRIam.cjs} +1 -1
- package/dist/.setup/{conversation-store-state-f7V8CVNy.cjs → conversation-store-state-DprmOfl7.cjs} +103 -236
- package/dist/.setup/{monitor-DfSPCRkk.cjs → monitor-C9x_CJhY.cjs} +173 -322
- package/dist/.setup/oauth-CWJ85AMw.cjs +55 -0
- package/dist/.setup/{reaction-types-B-GEv57k.cjs → reaction-types-Ig9sQJuR.cjs} +3 -3
- package/dist/.setup/{resolve-allowlist-Ct9yxQUw.cjs → resolve-allowlist-DdDBVCzl.cjs} +77 -174
- package/dist/.setup/{send-7VV1iCai.cjs → send-rJpcVtRp.cjs} +8 -9
- package/dist/.setup/{setup-plugin-api-B0OFG32J.cjs → setup-plugin-api-DfoVOqMJ.cjs} +1 -1
- package/dist/.setup/{thread-session-ClI-lSyG.cjs → thread-session-B74FC1Id.cjs} +1 -1
- package/dist/.setup/{token-config-DOt3XwVa.cjs → token-config-CqIh8z7Q.cjs} +6 -7
- package/dist/api.cjs +2 -2
- package/dist/channel-config-api.cjs +1 -1
- package/dist/channel-plugin-api.cjs +1 -1
- package/dist/directory-contract-api.cjs +2 -2
- package/dist/doctor-contract-api.cjs +1 -1
- package/dist/qa-runner-api.cjs +9 -10
- package/dist/setup-entry.cjs +1 -1
- package/dist/setup-plugin-api.cjs +1 -1
- package/package.json +4 -4
- package/dist/.setup/oauth-CYxMYIOQ.cjs +0 -102
package/dist/qa-runner-api.cjs
CHANGED
|
@@ -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-
|
|
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:
|
|
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;
|
package/dist/setup-entry.cjs
CHANGED
|
@@ -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-
|
|
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-
|
|
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.2",
|
|
3
|
+
"version": "2026.10.5-beta.2",
|
|
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.2"
|
|
25
|
+
"openclaw": ">=2026.10.5-beta.2"
|
|
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.2"
|
|
76
|
+
"pluginApi": ">=2026.10.5-beta.2"
|
|
77
77
|
},
|
|
78
78
|
"build": {
|
|
79
|
-
"openclawVersion": "2026.10.2",
|
|
79
|
+
"openclawVersion": "2026.10.5-beta.2",
|
|
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;
|