@numa-tech/numa 1.14.32 → 1.14.34

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.
@@ -0,0 +1,261 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { createWriteStream } from "node:fs";
3
+ import { access, link, mkdir, rm, stat } from "node:fs/promises";
4
+ import { dirname, resolve } from "node:path";
5
+ import { pipeline } from "node:stream/promises";
6
+ import OSS from "ali-oss";
7
+ import { OssError } from "./errors.js";
8
+ function normalizedPrefix(prefix) {
9
+ let value = prefix?.trim() ?? "";
10
+ // The platform policy service canonicalizes prefixes by removing leading
11
+ // and trailing slashes. Mirror that representation so a malformed or
12
+ // legacy session cannot accidentally widen a prefix check.
13
+ while (value.startsWith("/"))
14
+ value = value.slice(1);
15
+ while (value.endsWith("/"))
16
+ value = value.slice(0, -1);
17
+ return value;
18
+ }
19
+ function validateKey(key, prefix, label, allowExactPrefix = false) {
20
+ const value = key.trim();
21
+ if (!value || value.length > 1024 || /[\\\u0000-\u001f\u007f]/u.test(value)) {
22
+ throw new OssError(`${label} is empty or contains invalid path characters.`, "oss_input_invalid");
23
+ }
24
+ const segments = value.split("/");
25
+ if (segments.some((segment) => segment === "." || segment === "..")) {
26
+ throw new OssError(`${label} must not contain path traversal segments.`, "oss_input_invalid");
27
+ }
28
+ if (prefix && !(allowExactPrefix && value === prefix)
29
+ && !value.startsWith(prefix.endsWith("/") ? prefix : `${prefix}/`)) {
30
+ throw new OssError(`${label} must stay inside the authorized prefix ${prefix}.`, "oss_scope_violation");
31
+ }
32
+ return value;
33
+ }
34
+ function requirePermission(session, operation) {
35
+ if (typeof session.permissionLevel !== "string" || !session.permissionLevel.trim()) {
36
+ throw new OssError("The OSS session has no permission level.", "oss_session_invalid", 502);
37
+ }
38
+ const permission = session.permissionLevel.trim().toUpperCase();
39
+ const allowed = operation === "read"
40
+ ? ["ADMIN", "READ_ONLY", "READ_WRITE", "READ_WRITE_NO_DELETE"].includes(permission)
41
+ : operation === "write"
42
+ ? ["ADMIN", "WRITE_ONLY", "READ_WRITE", "READ_WRITE_NO_DELETE"].includes(permission)
43
+ : ["ADMIN", "READ_WRITE"].includes(permission);
44
+ if (!allowed)
45
+ throw new OssError(`The OSS policy does not allow ${operation}.`, "oss_operation_forbidden", 403);
46
+ }
47
+ function effectivePrefix(session) {
48
+ if (typeof session.scopeType !== "string" || !session.scopeType.trim()) {
49
+ throw new OssError("The OSS session has no scope type.", "oss_session_invalid", 502);
50
+ }
51
+ const scopeType = session.scopeType.trim().toUpperCase().replace(/^OSS_/u, "");
52
+ const prefix = normalizedPrefix(session.objectPrefix);
53
+ if (scopeType !== "BUCKET" && scopeType !== "PREFIX") {
54
+ throw new OssError(`Unsupported OSS scope type: ${session.scopeType}`, "oss_scope_invalid", 502);
55
+ }
56
+ if (scopeType === "PREFIX" && !prefix) {
57
+ throw new OssError("The OSS session has an empty authorized prefix.", "oss_scope_invalid", 502);
58
+ }
59
+ if (prefix && prefix.split("/").some((segment) => segment === "." || segment === "..")) {
60
+ throw new OssError("The OSS session contains an invalid authorized prefix.", "oss_scope_invalid", 502);
61
+ }
62
+ return prefix;
63
+ }
64
+ function clientOptions(session) {
65
+ if (typeof session.region !== "string" || !session.region.trim()) {
66
+ throw new OssError("The OSS session has no region.", "oss_session_invalid", 502);
67
+ }
68
+ if (typeof session.bucketName !== "string" || !session.bucketName.trim()) {
69
+ throw new OssError("The OSS session has no bucket.", "oss_session_invalid", 502);
70
+ }
71
+ if (!session.credentials || typeof session.credentials.accessKeyId !== "string"
72
+ || typeof session.credentials.accessKeySecret !== "string"
73
+ || typeof session.credentials.securityToken !== "string"
74
+ || !session.credentials.accessKeyId
75
+ || !session.credentials.accessKeySecret
76
+ || !session.credentials.securityToken) {
77
+ throw new OssError("The OSS session has invalid temporary credentials.", "oss_session_invalid", 502);
78
+ }
79
+ const rawRegion = session.region.trim().toLowerCase();
80
+ const region = rawRegion.startsWith("oss-") ? rawRegion : `oss-${rawRegion}`;
81
+ if (!/^oss-[a-z0-9][a-z0-9-]*$/u.test(region)) {
82
+ throw new OssError("The OSS session has an invalid region.", "oss_session_invalid", 502);
83
+ }
84
+ const bucket = session.bucketName.trim();
85
+ if (!/^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/u.test(bucket)) {
86
+ throw new OssError("The OSS session has an invalid bucket.", "oss_session_invalid", 502);
87
+ }
88
+ return {
89
+ region,
90
+ endpoint: `https://${region}.aliyuncs.com`,
91
+ secure: true,
92
+ bucket,
93
+ accessKeyId: session.credentials.accessKeyId,
94
+ accessKeySecret: session.credentials.accessKeySecret,
95
+ stsToken: session.credentials.securityToken,
96
+ timeout: 60_000
97
+ };
98
+ }
99
+ function defaultClientFactory(options) {
100
+ return new OSS(options);
101
+ }
102
+ async function pathExists(path) {
103
+ try {
104
+ await access(path);
105
+ return true;
106
+ }
107
+ catch {
108
+ return false;
109
+ }
110
+ }
111
+ function transferError(operation, error) {
112
+ const message = error instanceof Error ? error.message : String(error);
113
+ const status = typeof error === "object" && error !== null && "status" in error && typeof error.status === "number"
114
+ ? error.status : undefined;
115
+ const requestId = typeof error === "object" && error !== null && "requestId" in error && typeof error.requestId === "string"
116
+ ? error.requestId : undefined;
117
+ return new OssError(`OSS ${operation} failed: ${message}`, "oss_transfer_failed", status, requestId);
118
+ }
119
+ export class OssTransferClient {
120
+ clientFactory;
121
+ constructor(dependencies = {}) {
122
+ this.clientFactory = dependencies.clientFactory ?? defaultClientFactory;
123
+ }
124
+ client(session) {
125
+ return this.clientFactory(clientOptions(session));
126
+ }
127
+ async list(session, requestedPrefix, limit = 100) {
128
+ requirePermission(session, "read");
129
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1000) {
130
+ throw new OssError("List limit must be an integer between 1 and 1000.", "oss_input_invalid");
131
+ }
132
+ const prefix = effectivePrefix(session);
133
+ const listPrefix = requestedPrefix == null || requestedPrefix.trim() === ""
134
+ ? prefix
135
+ : validateKey(requestedPrefix, prefix, "prefix", true);
136
+ try {
137
+ const result = await this.client(session).list({ prefix: listPrefix, "max-keys": limit }, {});
138
+ return {
139
+ prefix: listPrefix,
140
+ objects: (result.objects ?? []).map((object) => ({
141
+ key: object.name,
142
+ sizeBytes: Number(object.size ?? 0),
143
+ lastModified: object.lastModified,
144
+ etag: object.etag,
145
+ type: object.type
146
+ })),
147
+ truncated: Boolean(result.isTruncated),
148
+ ...(result.nextMarker ? { nextMarker: result.nextMarker } : {})
149
+ };
150
+ }
151
+ catch (error) {
152
+ throw transferError("list", error);
153
+ }
154
+ }
155
+ async stat(session, key) {
156
+ requirePermission(session, "read");
157
+ const objectKey = validateKey(key, effectivePrefix(session), "object key");
158
+ try {
159
+ const result = await this.client(session).head(objectKey);
160
+ const meta = result.meta ?? {};
161
+ return {
162
+ key: objectKey,
163
+ status: result.status,
164
+ contentType: typeof meta["content-type"] === "string" ? meta["content-type"] : undefined,
165
+ contentLength: typeof meta["content-length"] === "string" ? Number(meta["content-length"]) : undefined,
166
+ etag: typeof meta.etag === "string" ? meta.etag : undefined,
167
+ lastModified: typeof meta["last-modified"] === "string" ? meta["last-modified"] : undefined
168
+ };
169
+ }
170
+ catch (error) {
171
+ throw transferError("stat", error);
172
+ }
173
+ }
174
+ async download(session, key, outputPath) {
175
+ requirePermission(session, "read");
176
+ const objectKey = validateKey(key, effectivePrefix(session), "object key");
177
+ if (!outputPath.trim())
178
+ throw new OssError("Download output path is required.", "oss_input_invalid");
179
+ const destination = resolve(outputPath);
180
+ if (await pathExists(destination))
181
+ throw new OssError(`Output already exists: ${destination}`, "oss_output_exists");
182
+ await mkdir(dirname(destination), { recursive: true });
183
+ const temporaryPath = `${destination}.${randomUUID()}.part`;
184
+ let linking = false;
185
+ try {
186
+ const result = await this.client(session).getStream(objectKey);
187
+ if (!result.stream)
188
+ throw new OssError("OSS returned no object stream.", "oss_download_failed");
189
+ await pipeline(result.stream, createWriteStream(temporaryPath, { flags: "wx", mode: 0o600 }));
190
+ // `rename` replaces an existing destination on POSIX. Check-then-rename
191
+ // would therefore still permit a concurrent invocation to overwrite a
192
+ // file. Linking the completed temporary file into place is atomic and
193
+ // fails with EEXIST if another process won the destination race.
194
+ linking = true;
195
+ await link(temporaryPath, destination);
196
+ await rm(temporaryPath, { force: true }).catch(() => undefined);
197
+ return { key: objectKey, outputPath: destination };
198
+ }
199
+ catch (error) {
200
+ await rm(temporaryPath, { force: true }).catch(() => undefined);
201
+ if (linking && typeof error === "object" && error !== null
202
+ && "code" in error && error.code === "EEXIST") {
203
+ throw new OssError(`Output already exists: ${destination}`, "oss_output_exists");
204
+ }
205
+ if (error instanceof OssError)
206
+ throw error;
207
+ throw transferError("download", error);
208
+ }
209
+ }
210
+ async upload(session, key, inputPath, overwrite = false) {
211
+ requirePermission(session, "write");
212
+ const objectKey = validateKey(key, effectivePrefix(session), "object key");
213
+ const source = resolve(inputPath);
214
+ let sourceStat;
215
+ try {
216
+ sourceStat = await stat(source);
217
+ }
218
+ catch (error) {
219
+ throw new OssError(`Cannot read upload file ${source}: ${error instanceof Error ? error.message : String(error)}`, "oss_input_invalid");
220
+ }
221
+ if (!sourceStat.isFile())
222
+ throw new OssError(`Upload source is not a regular file: ${source}`, "oss_input_invalid");
223
+ try {
224
+ await this.client(session).put(objectKey, source, overwrite ? undefined : { headers: { "x-oss-forbid-overwrite": "true" } });
225
+ return { key: objectKey, sizeBytes: sourceStat.size };
226
+ }
227
+ catch (error) {
228
+ throw transferError("upload", error);
229
+ }
230
+ }
231
+ async remove(session, key) {
232
+ requirePermission(session, "delete");
233
+ const objectKey = validateKey(key, effectivePrefix(session), "object key");
234
+ try {
235
+ await this.client(session).delete(objectKey);
236
+ return { key: objectKey };
237
+ }
238
+ catch (error) {
239
+ throw transferError("delete", error);
240
+ }
241
+ }
242
+ }
243
+ export function sessionMetadata(session) {
244
+ return {
245
+ session_id: session.sessionId,
246
+ grant_id: session.grantId,
247
+ account_code: session.accountCode,
248
+ role_name: session.roleName,
249
+ role_arn: session.roleArn,
250
+ policy_code: session.policyCode,
251
+ region: session.region,
252
+ bucket: session.bucketName,
253
+ scope_type: session.scopeType,
254
+ object_prefix: session.objectPrefix ?? "",
255
+ permission_level: session.permissionLevel,
256
+ role_session_name: session.roleSessionName,
257
+ source_identity: session.sourceIdentity,
258
+ expires_at: session.expiration
259
+ };
260
+ }
261
+ //# sourceMappingURL=transfers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../src/oss/transfers.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,11 @@ export declare class WecomClient {
70
70
  maxTextBytes: number;
71
71
  maxMarkdownBytes: number;
72
72
  }>;
73
+ recipientByEmail(email: string, emailType?: number): Promise<{
74
+ userId: string;
75
+ name: string;
76
+ departmentIds: number[];
77
+ }>;
73
78
  recipients(query: string, limit?: number): Promise<{
74
79
  items: {
75
80
  userId: string;
@@ -1,6 +1,7 @@
1
1
  import { resolveBackendUrl } from "../backend.js";
2
2
  import { ensureAccessToken, fetchWithKeycloakIdentity } from "../oauth.js";
3
3
  import { WecomError } from "./errors.js";
4
+ import { EmailSchema, EmailTypeSchema, EmailRecipientSchema } from "./schemas.js";
4
5
  import { CapabilitiesSchema, MessageSchema, RecipientQuerySchema, RecipientsSchema, RequestIdSchema, SendMessageSchema, MappingListSchema, MappingSchema, MappingSyncSchema, PlatformUserIdSchema, UserIdSchema } from "./schemas.js";
5
6
  export const WECOM_MAPPING_ROOT = "/api/v1/admin/notifications/wecom/mappings";
6
7
  export const WECOM_API_ROOT = "/api/v1/notifications/wecom";
@@ -68,12 +69,20 @@ export class WecomClient {
68
69
  throw new WecomError("WeCom platform request failed. Check the platform connection and authentication.", "WECOM_NETWORK_ERROR");
69
70
  }
70
71
  if (!response.ok) {
71
- await response.body?.cancel().catch(() => undefined);
72
+ let code = "WECOM_API_ERROR";
73
+ try {
74
+ const error = JSON.parse(await boundedResponseText(response, 8192));
75
+ if (typeof error.code === "string" && /^WECOM_[A-Z0-9_]{1,80}$/u.test(error.code))
76
+ code = error.code;
77
+ }
78
+ catch { /* Never expose provider bodies or message content. */ }
72
79
  if (requestId && response.status >= 500)
73
80
  throw this.unknown(requestId, response.status);
74
81
  if (method !== "GET" && response.status >= 500)
75
82
  throw this.mappingUnknown(response.status);
76
- throw new WecomError(`WeCom platform API returned HTTP ${response.status}.`, "WECOM_API_ERROR", response.status, requestId);
83
+ const hint = path.includes("by-email") || code === "WECOM_EMAIL_LOOKUP_THROTTLED"
84
+ ? " Verify the exact email, enterprise/personal type and application visibility. Do not repeatedly guess addresses; provider errors can block email lookup for a day." : "";
85
+ throw new WecomError(`WeCom platform API returned HTTP ${response.status}.${hint}`, code, response.status, requestId);
77
86
  }
78
87
  try {
79
88
  const raw = await boundedResponseText(response, path.startsWith(WECOM_MAPPING_ROOT) ? MAPPING_RESPONSE_LIMIT : MESSAGE_RESPONSE_LIMIT);
@@ -119,6 +128,11 @@ export class WecomClient {
119
128
  return this.json(`${WECOM_MAPPING_ROOT}/${encodeURIComponent(id)}`, MappingSchema, undefined, undefined, "DELETE");
120
129
  }
121
130
  capabilities() { return this.json(`${WECOM_API_ROOT}/capabilities`, CapabilitiesSchema); }
131
+ recipientByEmail(email, emailType = 1) {
132
+ const address = validate(EmailSchema, email, "one exact email address");
133
+ const type = validate(EmailTypeSchema, emailType, "email type (1 enterprise, 2 personal)");
134
+ return this.json(`${WECOM_API_ROOT}/recipients/by-email?${new URLSearchParams({ email: address, emailType: String(type) })}`, EmailRecipientSchema);
135
+ }
122
136
  recipients(query, limit = 20) {
123
137
  const validated = validate(RecipientQuerySchema, query, "recipient query (2-100 characters)");
124
138
  if (!Number.isInteger(limit) || limit < 1 || limit > 50)
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/wecom/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/wecom/client.ts"],"names":[],"mappings":"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"}
@@ -77,15 +77,26 @@ export function registerWecomCommands(program, dependencies = {}) {
77
77
  await output(command, result, `Enabled: ${result.enabled}; configured: ${result.configured}; types: ${result.messageTypes.join(", ")}; recipients: ${result.maxRecipients}; text/markdown bytes: ${result.maxTextBytes}/${result.maxMarkdownBytes}`);
78
78
  });
79
79
  wecom.command("recipients").description("按姓名或 userid 查询候选成员;查看结果后明确选择 userid")
80
- .requiredOption("--query <text>", "至少 2 个字符")
80
+ .option("--query <text>", "按姓名或 userid 查询,至少 2 个字符;与 --email 互斥")
81
+ .option("--email <address>", "按一个完整邮箱精确查询;不自动猜测邮箱或切换类型")
82
+ .option("--email-type <type>", "enterprise 企业邮箱(默认)或 personal 个人邮箱")
81
83
  .option("--limit <number>", "最多返回 1-50 个成员", "20")
82
84
  .action(async (options, command) => {
85
+ if (Boolean(options.query) === Boolean(options.email) || options.emailType && !options.email)
86
+ throw new WecomError("Choose exactly one of --query or --email; --email-type requires --email.", "WECOM_INPUT_INVALID");
87
+ if (options.email) {
88
+ const item = await client().recipientByEmail(options.email, parseEmailType(options.emailType));
89
+ await output(command, { items: [item], hasMore: false }, `${item.userId}\t${item.name}\t${item.departmentIds.join(",")}`);
90
+ return;
91
+ }
83
92
  const result = await client().recipients(options.query, Number(options.limit));
84
93
  await output(command, result, (result.items.map(item => `${item.userId}\t${item.name}\t${item.departmentIds.join(",")}`).join("\n") || "No matching recipients.") + (result.hasMore ? "\nMore matches exist; narrow your query before choosing a userid." : ""));
85
94
  });
86
95
  wecom.command("send").description("发送 text/markdown;先核对 userid 和正文;结果未知时仅查询状态")
87
96
  .option("--to <userids...>", "已确认的企微 userid(空格分隔);不支持姓名或 @all")
88
97
  .option("--platform-user <subjects...>", "已映射的 Keycloak 用户 subject;与 --to 互斥")
98
+ .option("--email <address>", "一个精确邮箱;与 --to、--platform-user 互斥;先用 recipients --email 核对")
99
+ .option("--email-type <type>", "enterprise 企业邮箱(默认)或 personal 个人邮箱;不自动回退")
89
100
  .requiredOption("--request-id <id>", "稳定幂等键,8-128 位字母/数字/._:-;同一请求保持不变")
90
101
  .option("--type <type>", "text 或 markdown", "text")
91
102
  .option("--text-file <path|->", "从 UTF-8 文件或 - 标准输入读取正文(推荐)")
@@ -98,7 +109,9 @@ export function registerWecomCommands(program, dependencies = {}) {
98
109
  if (!RequestIdSchema.safeParse(options.requestId).success)
99
110
  throw new WecomError("Invalid request ID; use 8-128 ASCII letters, digits or ._:-.", "WECOM_INPUT_INVALID");
100
111
  const content = await readMessageContent(options.textFile, options.text, dependencies.stdin ?? process.stdin);
101
- const parsed = SendMessageSchema.safeParse({ ...(options.to ? { recipientUserIds: options.to } : {}), ...(options.platformUser ? { platformUserIds: options.platformUser } : {}), messageType: options.type, content, safe: Boolean(options.safe) });
112
+ if (options.emailType && !options.email)
113
+ throw new WecomError("--email-type requires --email.", "WECOM_INPUT_INVALID");
114
+ const parsed = SendMessageSchema.safeParse({ ...(options.to ? { recipientUserIds: options.to } : {}), ...(options.platformUser ? { platformUserIds: options.platformUser } : {}), ...(options.email ? { recipientEmail: options.email, emailType: parseEmailType(options.emailType) } : {}), messageType: options.type, content, safe: Boolean(options.safe) });
102
115
  if (!parsed.success)
103
116
  throw new WecomError("Invalid message. Use explicit unique userids, text/markdown, at most 2048 UTF-8 bytes; --safe supports text only.", "WECOM_INPUT_INVALID");
104
117
  process.stderr.write(`WeCom request ID: ${options.requestId}\n`);
@@ -150,4 +163,11 @@ export function registerWecomCommands(program, dependencies = {}) {
150
163
  await output(command, result, statusLine(result));
151
164
  });
152
165
  }
166
+ function parseEmailType(value) {
167
+ if (value == null || value === "enterprise")
168
+ return 1;
169
+ if (value === "personal")
170
+ return 2;
171
+ throw new WecomError("--email-type must be enterprise or personal.", "WECOM_INPUT_INVALID");
172
+ }
153
173
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/wecom/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/wecom/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAgB,MAAM,cAAc,CAAC;AAMhF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAwB,EAAE,MAA0B,EAAE,KAAyC;IACtI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,iEAAiE,EAAE,qBAAqB,CAAC,CAAC;IACxJ,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,UAAU,OAAO,CAAC,MAA0C;YAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;gBACvB,IAAI,KAAK,GAAG,IAAI;oBAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;gBACnG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAK,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;gBAAE,MAAM,IAAI,UAAU,CAAC,kEAAkE,EAAE,qBAAqB,CAAC,CAAC;YACxJ,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;gBAAS,CAAC;YAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU;YAAE,MAAM,KAAK,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,8EAA8E,EAAE,qBAAqB,CAAC,CAAC;IAC9H,CAAC;AACH,CAAC;AACD,SAAS,KAAK,CAAC,KAAc;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxL,OAAO,KAAK,CAAC;AACf,CAAC;AACD,KAAK,UAAU,MAAM,CAAC,OAAgB,EAAE,KAAc,EAAE,IAAY;IAClE,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAsB,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAC9F,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,YAAY,CAAC,MAAyB;IAC7C,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC;AACD,SAAS,UAAU,CAAC,OAAgB;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,0DAA0D;QAC5G,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,EAAE,CAAC;IACrH,OAAO,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;AAChF,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,YAAY,GAA6B,EAAE;IACjG,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;IACzF,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,MAAM,CAAC,OAAO,iBAAiB,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,aAAa,0BAA0B,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvP,CAAC,CAAC,CAAC;IACL,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC;SAC3E,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,OAA8E,EAAE,OAAgB,EAAE,EAAE;QACjH,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,UAAU,CAAC,0EAA0E,EAAE,qBAAqB,CAAC,CAAC;QACtN,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/F,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1H,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnQ,CAAC,CAAC,CAAC;IACL,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC;SAC5E,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,+BAA+B,EAAE,oCAAoC,CAAC;SAC7E,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;SACxF,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,cAAc,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,MAAM,CAAC;SAClD,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,OAAyL,EAAE,OAAgB,EAAE,EAAE;QAC5N,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,UAAU,CAAC,oEAAoE,EAAE,6BAA6B,CAAC,CAAC;QAC5I,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,8DAA8D,EAAE,qBAAqB,CAAC,CAAC;QACvK,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9G,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,UAAU,CAAC,gCAAgC,EAAE,qBAAqB,CAAC,CAAC;QACvH,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChW,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,mHAAmH,EAAE,qBAAqB,CAAC,CAAC;QACtL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,yQAAyQ,CAAC,CAAC;IACrS,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;IAC/F,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;SACrD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,OAAgB,EAAE,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC;IAC3Q,CAAC,CAAC,CAAC;IACL,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC;SAClE,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;SAC3B,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,OAAgB,EAAE,EAAE;QAC9E,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,UAAU,CAAC,oEAAoE,EAAE,6BAA6B,CAAC,CAAC;QAC7J,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,WAAW,YAAY,MAAM,CAAC,WAAW,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzR,CAAC,CAAC,CAAC;IACL,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC;SACpF,cAAc,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACxD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;SACzB,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA6C,EAAE,OAAgB,EAAE,EAAE;QACjG,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,UAAU,CAAC,gEAAgE,EAAE,6BAA6B,CAAC,CAAC;QACxI,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,IAAI,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IACL,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC;SACnE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;SACzB,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA0B,EAAE,OAAgB,EAAE,EAAE;QAC9E,IAAI,CAAC,OAAO,CAAC,GAAG;YAAE,MAAM,IAAI,UAAU,CAAC,8DAA8D,EAAE,6BAA6B,CAAC,CAAC;QACtI,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IACL,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC;SAC/E,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,EAAsB,EAAE,OAA+B,EAAE,OAAgB,EAAE,EAAE;QAC1F,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,mDAAmD,EAAE,qBAAqB,CAAC,CAAC;QACjJ,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAG,CAAC,CAAC;QACxG,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,UAAU,CAAC,8CAA8C,EAAE,qBAAqB,CAAC,CAAC;AAC9F,CAAC"}
@@ -7,9 +7,13 @@ export declare const MessageTypeSchema: z.ZodEnum<{
7
7
  text: "text";
8
8
  }>;
9
9
  export declare const RecipientQuerySchema: z.ZodString;
10
+ export declare const EmailSchema: z.ZodString;
11
+ export declare const EmailTypeSchema: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
10
12
  export declare const SendMessageSchema: z.ZodObject<{
11
13
  recipientUserIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
14
  platformUserIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ recipientEmail: z.ZodOptional<z.ZodString>;
16
+ emailType: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>>;
13
17
  messageType: z.ZodEnum<{
14
18
  markdown: "markdown";
15
19
  text: "text";
@@ -36,6 +40,11 @@ export declare const RecipientsSchema: z.ZodObject<{
36
40
  }, z.core.$strip>>;
37
41
  hasMore: z.ZodBoolean;
38
42
  }, z.core.$strip>;
43
+ export declare const EmailRecipientSchema: z.ZodObject<{
44
+ userId: z.ZodString;
45
+ name: z.ZodString;
46
+ departmentIds: z.ZodArray<z.ZodNumber>;
47
+ }, z.core.$strip>;
39
48
  export declare const MessageSchema: z.ZodObject<{
40
49
  id: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>;
41
50
  requestId: z.ZodString;
@@ -6,14 +6,19 @@ export const PlatformUserIdSchema = z.string().min(1).max(256)
6
6
  .refine(value => value.trim().length > 0 && value === value.trim() && !/[\u0000-\u001f\u007f-\u009f]/u.test(value), "Subject must be nonblank, unpadded and contain no control characters");
7
7
  export const MessageTypeSchema = z.enum(["text", "markdown"]);
8
8
  export const RecipientQuerySchema = z.string().trim().min(2).max(100);
9
+ export const EmailSchema = z.string().trim().toLowerCase().max(320).regex(/^[^\s@<>;,|]+@[^\s@<>;,|]+\.[^\s@<>;,|]+$/u)
10
+ .refine(value => !/[\u0000-\u001f\u007f-\u009f]/u.test(value));
11
+ export const EmailTypeSchema = z.union([z.literal(1), z.literal(2)]);
9
12
  export const SendMessageSchema = z.object({
10
13
  recipientUserIds: z.array(UserIdSchema).min(1).max(100).refine(ids => new Set(ids).size === ids.length, "Duplicate recipients are not allowed").optional(),
11
14
  platformUserIds: z.array(PlatformUserIdSchema).min(1).max(100).refine(ids => new Set(ids).size === ids.length, "Duplicate recipients are not allowed").optional(),
15
+ recipientEmail: EmailSchema.optional(),
16
+ emailType: EmailTypeSchema.optional(),
12
17
  messageType: MessageTypeSchema,
13
18
  content: z.string().min(1).refine(value => value.trim().length > 0, "Content must not be blank"),
14
19
  safe: z.boolean().default(false)
15
20
  }).strict().superRefine((value, ctx) => {
16
- if (Boolean(value.recipientUserIds?.length) === Boolean(value.platformUserIds?.length)) {
21
+ if ([value.recipientUserIds?.length, value.platformUserIds?.length, value.recipientEmail].filter(Boolean).length !== 1 || value.emailType != null && !value.recipientEmail) {
17
22
  ctx.addIssue({ code: "custom", path: ["recipientUserIds"], message: "Choose exactly one recipient identifier type" });
18
23
  }
19
24
  if (value.messageType === "markdown" && value.safe) {
@@ -32,6 +37,7 @@ export const RecipientsSchema = z.object({
32
37
  items: z.array(z.object({ userId: UserIdSchema, name: z.string(), departmentIds: z.array(z.number().int()) })),
33
38
  hasMore: z.boolean()
34
39
  });
40
+ export const EmailRecipientSchema = z.object({ userId: UserIdSchema, name: z.string(), departmentIds: z.array(z.number().int()) });
35
41
  export const MessageSchema = z.object({
36
42
  id: z.union([z.string().min(1), z.number().int().positive()]).transform(String),
37
43
  requestId: RequestIdSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/wecom/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/wecom/schemas.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,37 @@ numa wecom mappings unbind <keycloak-subject> --yes --json
30
30
 
31
31
  ## Choose recipients and send
32
32
 
33
+ ### Exact email lookup (requires the matching DevOps backend release)
34
+
35
+ ```sh
36
+ numa wecom recipients --email user@example.com --email-type enterprise --json
37
+ numa wecom send --email user@example.com --email-type enterprise --request-id email-notice-001 --text-file ./message.txt --yes --json
38
+ numa wecom status --request-id email-notice-001 --json
39
+ ```
40
+
41
+ `--email` accepts one exact mailbox, mutually exclusive with `--query` for lookup and with `--to`/`--platform-user`
42
+ for send. `--email-type` accepts `enterprise` (default, API type 1) or `personal` (type 2); it never guesses aliases,
43
+ changes domains, or retries another type. Review the returned userid/name before sending. The server checks application
44
+ directory visibility even if the provider resolves the email. Sending does not create a platform-user mapping.
45
+
46
+ The CLI calls GET `/recipients/by-email?email=...&emailType=...`; send posts `recipientEmail/emailType` alongside
47
+ the normal content/type/safe fields. Query requires WeCom view and send requires edit, including service accounts.
48
+ The mailbox is normalized by trimming and lowercasing only. Server idempotency uses the original normalized mailbox
49
+ and type, so replays return the original resolved recipients rather than resolving a changed mailbox again.
50
+ Existing userid/subject commands remain compatible. An old backend or a provider rejection is an error, not a reason
51
+ to silently fall back to name search or a different recipient. Email-specific parameters currently belong to the CLI/REST;
52
+ the existing MCP send tool retains its explicit userid/subject contract.
53
+
54
+ WeCom imposes a corporation-wide error budget: incorrect email lookups beyond 20% of the corporation member limit can
55
+ disable this API for a day. Do not enumerate email guesses or run bulk fallbacks. The platform adds a per-instance
56
+ one-second lookup interval and a 60-second cooldown after provider failures, not a distributed daily-budget guarantee.
57
+ Failures return sanitized provider codes; verify address/type/visibility before retrying.
58
+ See [official email lookup API](https://developer.work.weixin.qq.com/document/path/95895).
59
+
60
+ The console's user mapping page now also supports an explicit single-user lookup using the selected Keycloak user's
61
+ unique email, followed by human-reviewed binding. Bulk directory sync still relies on actually returned email fields;
62
+ it does not repeatedly reverse-query every platform user when WeCom withholds sensitive fields.
63
+
33
64
  Search by name or userid (2–100 characters). Review candidates and choose exact userids; matching a name does not authorize sending to all matches. The recipient search returns at most 50 items; `has_more:true` means the query should be narrowed.
34
65
 
35
66
  ```sh