@openclaw/msteams 2026.10.5-beta.4 → 2026.10.10-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-JoPydWqP.cjs → adapter.runtime-B-6Q3nMI.cjs} +6 -4
- package/dist/.setup/{approval-handler.runtime-bUN9icMr.cjs → approval-handler.runtime-DccVf5AY.cjs} +16 -6
- package/dist/.setup/{bot-framework-service-url-CPp4d-Q6.cjs → bot-framework-service-url-B3FWn2SV.cjs} +13 -0
- package/dist/.setup/{channel-Cifn9fsv.cjs → channel-B7Gy3QUW.cjs} +261 -175
- package/dist/.setup/{channel.runtime-DWRAolil.cjs → channel.runtime-DzKeQAqd.cjs} +84 -49
- package/dist/.setup/channel.setup-B5ClEcNI.cjs +990 -0
- package/dist/.setup/config-schema-CkKdphSp.cjs +293 -0
- package/dist/.setup/{conversation-store-state-DprmOfl7.cjs → conversation-store-state-C3__T9mK.cjs} +79 -91
- package/dist/.setup/delegated-state-Bv5cWuec.cjs +110 -0
- package/dist/.setup/{monitor-C9x_CJhY.cjs → monitor-CzRI-Hsc.cjs} +283 -240
- package/dist/.setup/{oauth-CWJ85AMw.cjs → oauth-D9u8sPCD.cjs} +1 -1
- package/dist/.setup/{reaction-types-Ig9sQJuR.cjs → reaction-types-DSQWVA4Z.cjs} +15 -9
- package/dist/.setup/{resolve-allowlist-DdDBVCzl.cjs → resolve-allowlist-tYgAHx0t.cjs} +252 -38
- package/dist/.setup/{secret-contract-api-ChQdBeU1.cjs → secret-contract-api-YY3v6MP8.cjs} +1 -1
- package/dist/.setup/secret-contract-api-wAyY5UHv.cjs +85 -0
- package/dist/.setup/{send-rJpcVtRp.cjs → send-Bgm8RYUa.cjs} +45 -24
- package/dist/.setup/{setup-plugin-api-DfoVOqMJ.cjs → setup-plugin-api-BACfeF7_.cjs} +1 -1
- package/dist/.setup/{thread-session-B74FC1Id.cjs → thread-session-C7KTMwLU.cjs} +11 -4
- package/dist/.setup/token-config-bEpua_Q7.cjs +93 -0
- 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 +30 -22
- package/dist/doctor-contract-api.cjs +11 -10
- package/dist/qa-runner-api.cjs +1 -1
- package/dist/runtime-api.cjs +2 -2
- package/dist/secret-contract-api.cjs +1 -1
- package/dist/setup-entry.cjs +2 -2
- package/dist/setup-plugin-api.cjs +1 -1
- package/openclaw.plugin.json +715 -0
- package/package.json +57 -6
- package/dist/.setup/channel.setup-BjbHugkL.cjs +0 -632
- package/dist/.setup/config-schema-Dk0mRIam.cjs +0 -160
- package/dist/.setup/secret-contract-api-ipiUsANg.cjs +0 -28
- package/dist/.setup/token-config-CqIh8z7Q.cjs +0 -138
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
const require_bot_framework_service_url = require("./bot-framework-service-url-B3FWn2SV.cjs");
|
|
2
|
+
const require_token_config = require("./token-config-bEpua_Q7.cjs");
|
|
3
|
+
let openclaw_plugin_sdk_channel_core = require("openclaw/plugin-sdk/channel-core");
|
|
4
|
+
let openclaw_plugin_sdk_account_id = require("openclaw/plugin-sdk/account-id");
|
|
5
|
+
let openclaw_plugin_sdk_secret_input = require("openclaw/plugin-sdk/secret-input");
|
|
6
|
+
let openclaw_plugin_sdk_ssrf_policy = require("openclaw/plugin-sdk/ssrf-policy");
|
|
7
|
+
let openclaw_plugin_sdk_channel_config_schema = require("openclaw/plugin-sdk/channel-config-schema");
|
|
8
|
+
let zod = require("zod");
|
|
9
|
+
let openclaw_plugin_sdk_webhook_targets = require("openclaw/plugin-sdk/webhook-targets");
|
|
10
|
+
//#region extensions/msteams/src/config-schema-refinement.ts
|
|
11
|
+
function hasConfiguredValue(value) {
|
|
12
|
+
return typeof value === "string" ? value.trim().length > 0 : value !== void 0 && value !== null;
|
|
13
|
+
}
|
|
14
|
+
function isAzureChinaBotFrameworkServiceUrl(value) {
|
|
15
|
+
return (0, openclaw_plugin_sdk_ssrf_policy.isHttpsUrlAllowedByHostnameSuffixAllowlist)(value.trim(), ["botframework.azure.cn"]);
|
|
16
|
+
}
|
|
17
|
+
function refineEffectiveAccount(account, path, isDefault, ctx) {
|
|
18
|
+
const label = isDefault ? "The effective default Microsoft Teams account" : "channels.msteams.accounts.*";
|
|
19
|
+
const field = (name) => `${label}${isDefault ? " " : "."}${name}`;
|
|
20
|
+
const allowFrom = isDefault ? "allowFrom" : "channels.msteams.accounts.*.allowFrom (or channels.msteams.allowFrom)";
|
|
21
|
+
(0, openclaw_plugin_sdk_channel_config_schema.requireOpenAllowFrom)({
|
|
22
|
+
policy: account.dmPolicy,
|
|
23
|
+
allowFrom: account.allowFrom,
|
|
24
|
+
ctx,
|
|
25
|
+
path: [...path, "allowFrom"],
|
|
26
|
+
message: `${field("dmPolicy=\"open\"")} requires ${allowFrom} to include "*"`
|
|
27
|
+
});
|
|
28
|
+
(0, openclaw_plugin_sdk_channel_config_schema.requireAllowlistAllowFrom)({
|
|
29
|
+
policy: account.dmPolicy,
|
|
30
|
+
allowFrom: account.allowFrom,
|
|
31
|
+
ctx,
|
|
32
|
+
path: [...path, "allowFrom"],
|
|
33
|
+
message: `${field("dmPolicy=\"allowlist\"")} requires ${allowFrom} to contain at least one sender ID`
|
|
34
|
+
});
|
|
35
|
+
const issue = (name, message) => ctx.addIssue({
|
|
36
|
+
code: zod.z.ZodIssueCode.custom,
|
|
37
|
+
path: [...path, ...name.split(".")],
|
|
38
|
+
message
|
|
39
|
+
});
|
|
40
|
+
if (account.sso?.enabled === true && !account.sso.connectionName?.trim()) issue("sso.connectionName", `${field("sso.enabled=true")} requires sso.connectionName to identify the Bot Framework OAuth connection`);
|
|
41
|
+
const cloud = account.cloud;
|
|
42
|
+
const serviceUrl = account.serviceUrl?.trim();
|
|
43
|
+
if (cloud && cloud !== "Public" && cloud !== "China" && !serviceUrl) issue("serviceUrl", `${field("cloud")} requires serviceUrl for non-public Teams clouds`);
|
|
44
|
+
if (cloud === "China" && serviceUrl && !isAzureChinaBotFrameworkServiceUrl(serviceUrl)) issue("serviceUrl", `${field("cloud=China")} requires serviceUrl to use an Azure China Bot Framework channel host`);
|
|
45
|
+
if (cloud !== "China" && serviceUrl && isAzureChinaBotFrameworkServiceUrl(serviceUrl)) issue("cloud", `Azure China Bot Framework serviceUrl hosts require ${isDefault ? "the effective default Microsoft Teams account cloud=China" : "channels.msteams.accounts.*.cloud=China"}`);
|
|
46
|
+
}
|
|
47
|
+
function refineMSTeamsConfig(value, ctx) {
|
|
48
|
+
const webhookPaths = /* @__PURE__ */ new Map();
|
|
49
|
+
const appIds = /* @__PURE__ */ new Map();
|
|
50
|
+
const recordWebhookPath = (webhookPath, path) => {
|
|
51
|
+
const canonical = (0, openclaw_plugin_sdk_webhook_targets.canonicalizeWebhookRouteKey)(webhookPath);
|
|
52
|
+
const existing = webhookPaths.get(canonical);
|
|
53
|
+
if (existing) ctx.addIssue({
|
|
54
|
+
code: zod.z.ZodIssueCode.custom,
|
|
55
|
+
path,
|
|
56
|
+
message: `Microsoft Teams webhook path ${webhookPath} is already used by ${existing}`
|
|
57
|
+
});
|
|
58
|
+
else webhookPaths.set(canonical, path.join("."));
|
|
59
|
+
};
|
|
60
|
+
const recordAppId = (appId, path) => {
|
|
61
|
+
const normalized = appId?.trim().toLowerCase();
|
|
62
|
+
if (!normalized) return;
|
|
63
|
+
const existing = appIds.get(normalized);
|
|
64
|
+
if (existing) {
|
|
65
|
+
ctx.addIssue({
|
|
66
|
+
code: zod.z.ZodIssueCode.custom,
|
|
67
|
+
path,
|
|
68
|
+
message: `Microsoft Teams appId is already used by ${existing}`
|
|
69
|
+
});
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
appIds.set(normalized, path.join("."));
|
|
73
|
+
};
|
|
74
|
+
const accountKeys = /* @__PURE__ */ new Map();
|
|
75
|
+
for (const accountId of Object.keys(value.accounts ?? {})) {
|
|
76
|
+
const canonicalAccountId = (0, openclaw_plugin_sdk_account_id.normalizeAccountId)(accountId);
|
|
77
|
+
const existing = accountKeys.get(canonicalAccountId);
|
|
78
|
+
if (existing) {
|
|
79
|
+
ctx.addIssue({
|
|
80
|
+
code: zod.z.ZodIssueCode.custom,
|
|
81
|
+
path: ["accounts", accountId],
|
|
82
|
+
message: `channels.msteams.accounts contains duplicate canonical account id "${canonicalAccountId}" from "${existing}" and "${accountId}"`
|
|
83
|
+
});
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
accountKeys.set(canonicalAccountId, accountId);
|
|
87
|
+
}
|
|
88
|
+
const rootDefaultIdentityFields = [value.appId, value.appPassword].some((field) => field !== void 0 && field !== null && field !== "");
|
|
89
|
+
const defaultAccountKey = accountKeys.get(openclaw_plugin_sdk_account_id.DEFAULT_ACCOUNT_ID);
|
|
90
|
+
const accountsDefault = defaultAccountKey ? value.accounts?.[defaultAccountKey] : void 0;
|
|
91
|
+
const accountsDefaultPath = ["accounts", defaultAccountKey ?? openclaw_plugin_sdk_account_id.DEFAULT_ACCOUNT_ID];
|
|
92
|
+
const accountsDefaultIdentityFields = [accountsDefault?.appId, accountsDefault?.appPassword].some((field) => field !== void 0 && field !== null && field !== "");
|
|
93
|
+
const effectiveDefault = {
|
|
94
|
+
...value,
|
|
95
|
+
...accountsDefault,
|
|
96
|
+
sso: {
|
|
97
|
+
...value.sso,
|
|
98
|
+
...accountsDefault?.sso
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const hasEnvironmentDefaultCredentials = require_token_config.hasConfiguredMSTeamsCredentials(effectiveDefault);
|
|
102
|
+
if (rootDefaultIdentityFields && accountsDefaultIdentityFields) ctx.addIssue({
|
|
103
|
+
code: zod.z.ZodIssueCode.custom,
|
|
104
|
+
path: accountsDefaultPath,
|
|
105
|
+
message: "channels.msteams can define the default Teams identity either at the root or in accounts.default, not both"
|
|
106
|
+
});
|
|
107
|
+
const rootDefaultAccountEnabled = value.enabled !== false && accountsDefault?.enabled !== false;
|
|
108
|
+
const defaultAccountConfigured = rootDefaultIdentityFields || accountsDefaultIdentityFields || hasEnvironmentDefaultCredentials || accountKeys.size === 0;
|
|
109
|
+
const effectiveDefaultAppId = hasConfiguredValue(accountsDefault?.appId) ? accountsDefault?.appId : hasConfiguredValue(value.appId) ? value.appId : process.env.MSTEAMS_APP_ID;
|
|
110
|
+
if (rootDefaultAccountEnabled && defaultAccountConfigured) {
|
|
111
|
+
refineEffectiveAccount(effectiveDefault, accountsDefault ? accountsDefaultPath : [], true, ctx);
|
|
112
|
+
recordAppId(effectiveDefaultAppId, ["appId"]);
|
|
113
|
+
recordWebhookPath(require_bot_framework_service_url.resolveMSTeamsWebhookPath(value, openclaw_plugin_sdk_account_id.DEFAULT_ACCOUNT_ID, accountsDefault), [
|
|
114
|
+
...accountsDefault ? accountsDefaultPath : [],
|
|
115
|
+
"webhook",
|
|
116
|
+
"path"
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
for (const [accountId, account] of Object.entries(value.accounts ?? {})) {
|
|
120
|
+
if (!account) continue;
|
|
121
|
+
const canonicalAccountId = (0, openclaw_plugin_sdk_account_id.normalizeAccountId)(accountId);
|
|
122
|
+
const path = ["accounts", accountId];
|
|
123
|
+
if (canonicalAccountId === openclaw_plugin_sdk_account_id.DEFAULT_ACCOUNT_ID) continue;
|
|
124
|
+
if (!(value.enabled !== false && account.enabled !== false)) continue;
|
|
125
|
+
refineEffectiveAccount({
|
|
126
|
+
dmPolicy: account.dmPolicy ?? value.dmPolicy,
|
|
127
|
+
allowFrom: account.allowFrom ?? value.allowFrom,
|
|
128
|
+
sso: {
|
|
129
|
+
...value.sso,
|
|
130
|
+
...account.sso
|
|
131
|
+
},
|
|
132
|
+
cloud: account.cloud ?? value.cloud,
|
|
133
|
+
serviceUrl: account.serviceUrl ?? value.serviceUrl
|
|
134
|
+
}, path, false, ctx);
|
|
135
|
+
if (!account.appId?.trim()) ctx.addIssue({
|
|
136
|
+
code: zod.z.ZodIssueCode.custom,
|
|
137
|
+
path: [...path, "appId"],
|
|
138
|
+
message: "channels.msteams.accounts.*.appId is required for named Microsoft Teams bot accounts"
|
|
139
|
+
});
|
|
140
|
+
if (!(account.tenantId ?? value.tenantId)?.trim()) ctx.addIssue({
|
|
141
|
+
code: zod.z.ZodIssueCode.custom,
|
|
142
|
+
path: [...path, "tenantId"],
|
|
143
|
+
message: "channels.msteams.accounts.*.tenantId or channels.msteams.tenantId is required for named Microsoft Teams bot accounts"
|
|
144
|
+
});
|
|
145
|
+
const effectiveAuthType = account.authType ?? value.authType ?? "secret";
|
|
146
|
+
if (effectiveAuthType === "secret" && !hasConfiguredValue(account.appPassword)) ctx.addIssue({
|
|
147
|
+
code: zod.z.ZodIssueCode.custom,
|
|
148
|
+
path: [...path, "appPassword"],
|
|
149
|
+
message: "channels.msteams.accounts.*.appPassword is required for named Microsoft Teams bot accounts using secret auth"
|
|
150
|
+
});
|
|
151
|
+
if (effectiveAuthType === "federated" && !(account.certificatePath ?? value.certificatePath)?.trim() && (account.useManagedIdentity ?? value.useManagedIdentity) !== true) ctx.addIssue({
|
|
152
|
+
code: zod.z.ZodIssueCode.custom,
|
|
153
|
+
path: [...path, "authType"],
|
|
154
|
+
message: "channels.msteams.accounts.* using federated auth must configure certificatePath or useManagedIdentity"
|
|
155
|
+
});
|
|
156
|
+
recordAppId(account.appId, [...path, "appId"]);
|
|
157
|
+
recordWebhookPath(require_bot_framework_service_url.resolveMSTeamsWebhookPath(value, canonicalAccountId, account), [
|
|
158
|
+
...path,
|
|
159
|
+
"webhook",
|
|
160
|
+
"path"
|
|
161
|
+
]);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region extensions/msteams/src/config-ui-hints.ts
|
|
166
|
+
const msTeamsChannelConfigUiHints = {
|
|
167
|
+
"": {
|
|
168
|
+
label: "MS Teams",
|
|
169
|
+
help: "Microsoft Teams channel provider configuration and provider-specific policy toggles. Use this section to isolate Teams behavior from other enterprise chat providers."
|
|
170
|
+
},
|
|
171
|
+
configWrites: {
|
|
172
|
+
label: "MS Teams Config Writes",
|
|
173
|
+
help: "Allow Microsoft Teams to write config in response to channel events/commands (default: true)."
|
|
174
|
+
},
|
|
175
|
+
cloud: {
|
|
176
|
+
label: "MS Teams Cloud",
|
|
177
|
+
help: "Teams SDK cloud environment for auth, token validation, and token services: \"Public\", \"USGov\", \"USGovDoD\", or \"China\" (default: Public)."
|
|
178
|
+
},
|
|
179
|
+
serviceUrl: {
|
|
180
|
+
label: "MS Teams Service URL",
|
|
181
|
+
help: "Bot Connector service URL for SDK proactive sends/edits/deletes. Set with cloud for USGov/DoD; set alone for GCC."
|
|
182
|
+
},
|
|
183
|
+
graphMediaFallback: {
|
|
184
|
+
label: "MS Teams Graph Media Fallback",
|
|
185
|
+
help: "Query Microsoft Graph for unresolved channel or group-chat HTML media. Adds one lookup per matching message when enabled (default: false)."
|
|
186
|
+
},
|
|
187
|
+
requireMentionInBotThreads: {
|
|
188
|
+
label: "Require Mentions in Bot Threads",
|
|
189
|
+
help: "Override mention requirements for channel threads rooted at this bot's tracked messages. Unset preserves existing behavior. Channel overrides win over team and global values. Ownership tracking lasts up to 24 hours."
|
|
190
|
+
},
|
|
191
|
+
"teams.*.requireMentionInBotThreads": {
|
|
192
|
+
label: "Team Bot Thread Mentions",
|
|
193
|
+
help: "Override mention requirements for this bot's channel threads in this team. Unset inherits the global value."
|
|
194
|
+
},
|
|
195
|
+
"teams.*.channels.*.requireMentionInBotThreads": {
|
|
196
|
+
label: "Channel Bot Thread Mentions",
|
|
197
|
+
help: "Override mention requirements for this bot's threads in this channel. Unset inherits the team or global value."
|
|
198
|
+
},
|
|
199
|
+
...(0, openclaw_plugin_sdk_channel_core.createChannelConfigUiHints)({
|
|
200
|
+
channelLabel: "MS Teams",
|
|
201
|
+
streaming: { "": {
|
|
202
|
+
label: "MS Teams Streaming",
|
|
203
|
+
help: "Microsoft Teams preview/progress streaming mode: \"off\" | \"partial\" | \"block\" | \"progress\". Personal chats use Teams native streaminfo progress when available."
|
|
204
|
+
} },
|
|
205
|
+
progress: {
|
|
206
|
+
labels: "openclaw",
|
|
207
|
+
titleWording: true
|
|
208
|
+
}
|
|
209
|
+
})
|
|
210
|
+
};
|
|
211
|
+
//#endregion
|
|
212
|
+
//#region extensions/msteams/src/config-schema.ts
|
|
213
|
+
const SecretInputSchema = (0, openclaw_plugin_sdk_secret_input.buildSecretInputSchema)();
|
|
214
|
+
const ToolPolicyBySenderSchema = zod.z.record(zod.z.string(), openclaw_plugin_sdk_channel_config_schema.ToolPolicySchema).optional();
|
|
215
|
+
const MSTeamsChannelSchema = zod.z.object({
|
|
216
|
+
requireMention: zod.z.boolean().optional(),
|
|
217
|
+
requireMentionInBotThreads: zod.z.boolean().optional(),
|
|
218
|
+
tools: openclaw_plugin_sdk_channel_config_schema.ToolPolicySchema,
|
|
219
|
+
toolsBySender: ToolPolicyBySenderSchema,
|
|
220
|
+
replyStyle: openclaw_plugin_sdk_channel_config_schema.MSTeamsReplyStyleSchema.optional()
|
|
221
|
+
}).strict();
|
|
222
|
+
const MSTeamsTeamSchema = MSTeamsChannelSchema.extend({ channels: zod.z.record(zod.z.string(), MSTeamsChannelSchema.optional()).optional() });
|
|
223
|
+
const { accountShape, rootPolicyShape } = (0, openclaw_plugin_sdk_channel_config_schema.buildChannelAccountSchemaParts)({
|
|
224
|
+
omit: [
|
|
225
|
+
"name",
|
|
226
|
+
"mentionPatterns",
|
|
227
|
+
"replyToMode"
|
|
228
|
+
],
|
|
229
|
+
allowFrom: zod.z.array(zod.z.string()).optional(),
|
|
230
|
+
groupAllowFrom: zod.z.array(zod.z.string()).optional(),
|
|
231
|
+
streaming: openclaw_plugin_sdk_channel_config_schema.ChannelPreviewStreamingConfigSchema.optional()
|
|
232
|
+
});
|
|
233
|
+
const MSTeamsAccountConfigBaseSchema = zod.z.object({
|
|
234
|
+
...accountShape,
|
|
235
|
+
dangerouslyAllowNameMatching: openclaw_plugin_sdk_channel_config_schema.ChannelDangerouslyAllowNameMatchingSchema,
|
|
236
|
+
appId: zod.z.string().optional(),
|
|
237
|
+
appPassword: (0, openclaw_plugin_sdk_secret_input.registerSensitiveConfigSchema)(SecretInputSchema.optional()),
|
|
238
|
+
tenantId: zod.z.string().optional(),
|
|
239
|
+
cloud: zod.z.enum([
|
|
240
|
+
"Public",
|
|
241
|
+
"USGov",
|
|
242
|
+
"USGovDoD",
|
|
243
|
+
"China"
|
|
244
|
+
]).optional(),
|
|
245
|
+
serviceUrl: zod.z.string().url().refine(require_bot_framework_service_url.isAllowedBotFrameworkServiceUrl, { message: "channels.msteams.serviceUrl must use a supported Microsoft Teams Bot Connector host" }).optional(),
|
|
246
|
+
authType: zod.z.enum(["secret", "federated"]).optional(),
|
|
247
|
+
certificatePath: zod.z.string().optional(),
|
|
248
|
+
certificateThumbprint: zod.z.string().optional(),
|
|
249
|
+
useManagedIdentity: zod.z.boolean().optional(),
|
|
250
|
+
managedIdentityClientId: zod.z.string().optional(),
|
|
251
|
+
webhook: zod.z.object({ path: zod.z.string().optional() }).strict().optional(),
|
|
252
|
+
legacyWebhook: zod.z.union([zod.z.literal(false), zod.z.object({
|
|
253
|
+
port: zod.z.number().int().min(1).max(65535),
|
|
254
|
+
host: zod.z.string().optional()
|
|
255
|
+
}).strict()]).optional(),
|
|
256
|
+
typingIndicator: zod.z.boolean().optional(),
|
|
257
|
+
mediaAllowHosts: zod.z.array(zod.z.string()).optional(),
|
|
258
|
+
mediaAuthAllowHosts: zod.z.array(zod.z.string()).optional(),
|
|
259
|
+
graphMediaFallback: zod.z.boolean().optional(),
|
|
260
|
+
requireMention: zod.z.boolean().optional(),
|
|
261
|
+
requireMentionInBotThreads: zod.z.boolean().optional(),
|
|
262
|
+
replyStyle: openclaw_plugin_sdk_channel_config_schema.MSTeamsReplyStyleSchema.optional(),
|
|
263
|
+
teams: zod.z.record(zod.z.string(), MSTeamsTeamSchema.optional()).optional(),
|
|
264
|
+
/** SharePoint site ID for file uploads in group chats/channels (e.g., "contoso.sharepoint.com,guid1,guid2") */
|
|
265
|
+
sharePointSiteId: zod.z.string().optional(),
|
|
266
|
+
welcomeCard: zod.z.boolean().optional(),
|
|
267
|
+
promptStarters: zod.z.array(zod.z.string()).optional(),
|
|
268
|
+
groupWelcomeCard: zod.z.boolean().optional(),
|
|
269
|
+
feedbackEnabled: zod.z.boolean().optional(),
|
|
270
|
+
feedbackReflection: zod.z.boolean().optional(),
|
|
271
|
+
feedbackReflectionCooldownMs: zod.z.number().int().min(0).optional(),
|
|
272
|
+
delegatedAuth: zod.z.object({
|
|
273
|
+
enabled: zod.z.boolean().optional(),
|
|
274
|
+
scopes: zod.z.array(zod.z.string()).optional()
|
|
275
|
+
}).strict().optional(),
|
|
276
|
+
sso: zod.z.object({
|
|
277
|
+
enabled: zod.z.boolean().optional(),
|
|
278
|
+
connectionName: zod.z.string().optional()
|
|
279
|
+
}).strict().optional()
|
|
280
|
+
}).strict();
|
|
281
|
+
const MSTeamsConfigSchema = MSTeamsAccountConfigBaseSchema.extend({
|
|
282
|
+
...rootPolicyShape,
|
|
283
|
+
accounts: zod.z.record(zod.z.string(), MSTeamsAccountConfigBaseSchema.extend({ name: zod.z.string().optional() }).optional()).optional(),
|
|
284
|
+
defaultAccount: zod.z.string().optional()
|
|
285
|
+
}).strict().superRefine(refineMSTeamsConfig);
|
|
286
|
+
const MSTeamsChannelConfigSchema = (0, openclaw_plugin_sdk_channel_config_schema.buildChannelConfigSchema)(MSTeamsConfigSchema, { uiHints: msTeamsChannelConfigUiHints });
|
|
287
|
+
//#endregion
|
|
288
|
+
Object.defineProperty(exports, "MSTeamsChannelConfigSchema", {
|
|
289
|
+
enumerable: true,
|
|
290
|
+
get: function() {
|
|
291
|
+
return MSTeamsChannelConfigSchema;
|
|
292
|
+
}
|
|
293
|
+
});
|