@open-feishu-card/schema 0.1.0 → 0.1.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.
Files changed (58) hide show
  1. package/dist/index.cjs +3074 -0
  2. package/dist/index.js +2965 -16
  3. package/package.json +7 -4
  4. package/dist/card.js +0 -41
  5. package/dist/card.js.map +0 -1
  6. package/dist/common/behavior.js +0 -39
  7. package/dist/common/behavior.js.map +0 -1
  8. package/dist/common/behaviors-context.js +0 -88
  9. package/dist/common/behaviors-context.js.map +0 -1
  10. package/dist/common/confirm.js +0 -12
  11. package/dist/common/confirm.js.map +0 -1
  12. package/dist/common/enums.js +0 -131
  13. package/dist/common/enums.js.map +0 -1
  14. package/dist/common/fallback.js +0 -22
  15. package/dist/common/fallback.js.map +0 -1
  16. package/dist/common/icon-tokens.js +0 -1163
  17. package/dist/common/icon-tokens.js.map +0 -1
  18. package/dist/common/icon.js +0 -49
  19. package/dist/common/icon.js.map +0 -1
  20. package/dist/common/index.js +0 -9
  21. package/dist/common/index.js.map +0 -1
  22. package/dist/common/text.js +0 -80
  23. package/dist/common/text.js.map +0 -1
  24. package/dist/common/url.js +0 -30
  25. package/dist/common/url.js.map +0 -1
  26. package/dist/config.js +0 -123
  27. package/dist/config.js.map +0 -1
  28. package/dist/containers/index.js +0 -205
  29. package/dist/containers/index.js.map +0 -1
  30. package/dist/content/index.js +0 -426
  31. package/dist/content/index.js.map +0 -1
  32. package/dist/element-ref.js +0 -17
  33. package/dist/element-ref.js.map +0 -1
  34. package/dist/element.js +0 -46
  35. package/dist/element.js.map +0 -1
  36. package/dist/header.js +0 -27
  37. package/dist/header.js.map +0 -1
  38. package/dist/index.js.map +0 -1
  39. package/dist/interactive/index.js +0 -533
  40. package/dist/interactive/index.js.map +0 -1
  41. package/dist/markdown/builders.js +0 -140
  42. package/dist/markdown/builders.js.map +0 -1
  43. package/dist/markdown/code-language.js +0 -79
  44. package/dist/markdown/code-language.js.map +0 -1
  45. package/dist/markdown/component.js +0 -38
  46. package/dist/markdown/component.js.map +0 -1
  47. package/dist/markdown/emoji-tokens.js +0 -193
  48. package/dist/markdown/emoji-tokens.js.map +0 -1
  49. package/dist/markdown/enums.js +0 -49
  50. package/dist/markdown/enums.js.map +0 -1
  51. package/dist/markdown/escape.js +0 -42
  52. package/dist/markdown/escape.js.map +0 -1
  53. package/dist/markdown/index.js +0 -16
  54. package/dist/markdown/index.js.map +0 -1
  55. package/dist/markdown/tags.js +0 -238
  56. package/dist/markdown/tags.js.map +0 -1
  57. package/dist/markdown/text-size.js +0 -58
  58. package/dist/markdown/text-size.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,16 +1,2965 @@
1
- /**
2
- * 飞书卡片 JSON 2.0 — 模块化 Zod Schema
3
- *
4
- * 基于飞书开放平台官方文档构建,使用 `tag` / `type` 判别联合以获得最佳类型推导。
5
- */
6
- // 先注册 ElementSchema,确保 Body / 容器的 lazy 引用可用
7
- export * from './element.js';
8
- export * from './common/index.js';
9
- export * from './markdown/index.js';
10
- export * from './config.js';
11
- export * from './header.js';
12
- export * from './content/index.js';
13
- export * from './interactive/index.js';
14
- export * from './containers/index.js';
15
- export * from './card.js';
16
- //# sourceMappingURL=index.js.map
1
+ import { z } from 'zod';
2
+
3
+ // src/element.ts
4
+ var OpenUrlBehaviorSchema = z.object({
5
+ type: z.literal("open_url").describe("\u4EA4\u4E92\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A open_url"),
6
+ default_url: z.string().describe(
7
+ "\u515C\u5E95\u8DF3\u8F6C\u5730\u5740\uFF1B\u65E0\u771F\u5B9E\u94FE\u63A5\u65F6\u53EF\u7528\u793A\u4F8B https://open.feishu.cn"
8
+ ),
9
+ android_url: z.string().optional().describe("Android \u7AEF\u8DF3\u8F6C\u5730\u5740"),
10
+ ios_url: z.string().optional().describe("iOS \u7AEF\u8DF3\u8F6C\u5730\u5740"),
11
+ pc_url: z.string().optional().describe("PC \u7AEF\u8DF3\u8F6C\u5730\u5740")
12
+ }).describe("\u6253\u5F00\u94FE\u63A5\u4EA4\u4E92\uFF08type = open_url\uFF09");
13
+ var CallbackBehaviorSchema = z.object({
14
+ type: z.literal("callback").describe("\u4EA4\u4E92\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A callback"),
15
+ value: z.record(z.string(), z.unknown()).describe("\u56DE\u4F20\u7ED9\u670D\u52A1\u7AEF\u7684\u81EA\u5B9A\u4E49\u6570\u636E\u5BF9\u8C61\uFF1B\u7528\u7B80\u6D01\u4E1A\u52A1\u5B57\u6BB5\u5373\u53EF")
16
+ }).describe("\u8BF7\u6C42\u56DE\u8C03\u4EA4\u4E92\uFF08type = callback\uFF09");
17
+ var BehaviorSchema = z.discriminatedUnion("type", [OpenUrlBehaviorSchema, CallbackBehaviorSchema]).describe("\u7EC4\u4EF6\u4EA4\u4E92\u884C\u4E3A\uFF1Aopen_url\uFF08\u6253\u5F00\u94FE\u63A5\uFF09\u6216 callback\uFF08\u56DE\u4F20\u56DE\u8C03\uFF09\uFF0C\u6CA1\u6709\u522B\u7684\u53EF\u80FD");
18
+ var BehaviorsSchema = z.array(BehaviorSchema).describe("\u7EC4\u4EF6\u4EA4\u4E92\u884C\u4E3A\u5217\u8868\uFF1B\u53EF\u540C\u65F6\u914D\u7F6E\u8DF3\u8F6C\u4E0E\u56DE\u8C03");
19
+ var ElementIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9_]{0,19}$/, {
20
+ error: "element_id \u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4EC5\u542B\u5B57\u6BCD/\u6570\u5B57/\u4E0B\u5212\u7EBF\uFF0C\u4E14\u4E0D\u8D85\u8FC7 20 \u5B57\u7B26"
21
+ }).describe(
22
+ "\u64CD\u4F5C\u7EC4\u4EF6/\u5143\u7D20\u7684\u552F\u4E00\u6807\u8BC6\u3002\u5361\u7247\u5185\u5168\u5C40\u552F\u4E00\uFF1B\u4EC5\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\uFF0C\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4E0D\u8D85\u8FC7 20 \u5B57\u7B26"
23
+ );
24
+ var SpacingValueSchema = z.string().describe(
25
+ "\u8FB9\u8DDD\u503C\u3002\u652F\u6301\u5355\u503C\uFF08\u5982 10px\uFF09\u3001\u53CC\u503C\uFF08\u5982 4px 0\uFF09\u6216\u56DB\u503C\uFF08\u4E0A\u53F3\u4E0B\u5DE6\uFF09\uFF1B\u5355\u4F4D\u4E00\u822C\u4E3A px"
26
+ );
27
+ var SpacingTokenSchema = z.union([
28
+ z.literal("small").describe("\u5C0F\u95F4\u8DDD\uFF0C4px"),
29
+ z.literal("medium").describe("\u4E2D\u7B49\u95F4\u8DDD\uFF0C8px"),
30
+ z.literal("large").describe("\u5927\u95F4\u8DDD\uFF0C12px"),
31
+ z.literal("extra_large").describe("\u8D85\u5927\u95F4\u8DDD\uFF0C16px"),
32
+ z.string().describe("\u81EA\u5B9A\u4E49\u95F4\u8DDD\uFF0C\u53D6\u503C\u8303\u56F4\u901A\u5E38\u4E3A [0,99]px")
33
+ ]).describe("\u7EC4\u4EF6\u95F4\u8DDD\uFF1Asmall / medium / large / extra_large\uFF0C\u6216\u81EA\u5B9A\u4E49 px");
34
+ var HorizontalAlignSchema = z.enum(["left", "center", "right"]).describe("\u6C34\u5E73\u5BF9\u9F50\u65B9\u5F0F\uFF1Aleft / center / right");
35
+ var VerticalAlignSchema = z.enum(["top", "center", "bottom"]).describe("\u5782\u76F4\u5BF9\u9F50\u65B9\u5F0F\uFF1Atop / center / bottom");
36
+ var DirectionSchema = z.enum(["vertical", "horizontal"]).describe("\u5B50\u7EC4\u4EF6\u6392\u5217\u65B9\u5411\uFF1Avertical\uFF08\u5782\u76F4\uFF09/ horizontal\uFF08\u6C34\u5E73\uFF09");
37
+ var ColorSchema = z.string().describe(
38
+ "\u989C\u8272\u503C\u3002\u53EF\u4E3A\u5B98\u65B9\u989C\u8272\u679A\u4E3E\u3001config.style.color \u81EA\u5B9A\u4E49 key\uFF0C\u6216 rgba(...) \u8BED\u6CD5"
39
+ );
40
+ var HeaderTemplateSchema = z.enum([
41
+ "blue",
42
+ "wathet",
43
+ "turquoise",
44
+ "green",
45
+ "yellow",
46
+ "orange",
47
+ "red",
48
+ "carmine",
49
+ "violet",
50
+ "purple",
51
+ "indigo",
52
+ "grey",
53
+ "default"
54
+ ]).describe("\u6807\u9898\u4E3B\u9898\u8272 template\uFF0C\u9ED8\u8BA4 default");
55
+ var TextTagColorSchema = z.enum([
56
+ "neutral",
57
+ "blue",
58
+ "turquoise",
59
+ "lime",
60
+ "orange",
61
+ "violet",
62
+ "indigo",
63
+ "wathet",
64
+ "green",
65
+ "yellow",
66
+ "red",
67
+ "purple",
68
+ "carmine"
69
+ ]).describe("\u6807\u9898\u540E\u7F00\u6807\u7B7E\u989C\u8272\uFF0C\u9ED8\u8BA4 blue");
70
+ var TextSizeSchema = z.union([
71
+ z.enum([
72
+ "heading-0",
73
+ "heading-1",
74
+ "heading-2",
75
+ "heading-3",
76
+ "heading-4",
77
+ "heading",
78
+ "normal",
79
+ "notation",
80
+ "xxxx-large",
81
+ "xxx-large",
82
+ "xx-large",
83
+ "x-large",
84
+ "large",
85
+ "medium",
86
+ "small",
87
+ "x-small"
88
+ ]),
89
+ z.string().regex(/^(1[0-9]|2[0-9]|3[0-9]|40)px$/, {
90
+ error: '\u50CF\u7D20\u5B57\u53F7\u987B\u4E3A 10px\u201340px\uFF0C\u4F8B\u5982 "14px"\u3001"28px"'
91
+ }),
92
+ z.string().min(1).refine((value) => !/^\d+px$/.test(value), {
93
+ message: "\u50CF\u7D20\u5B57\u53F7\u8BF7\u4F7F\u7528 10px\u201340px\uFF1B\u5176\u5B83 px \u503C\u4E0D\u5408\u6CD5"
94
+ })
95
+ ]).describe(
96
+ "\u6587\u672C\u5927\u5C0F\uFF1A\u5B98\u65B9\u679A\u4E3E\u300110px\u201340px \u50CF\u7D20\u503C\uFF0C\u6216 config.style.text_size \u81EA\u5B9A\u4E49 key"
97
+ );
98
+ var InteractiveWidthSchema = z.string().describe(
99
+ "\u4EA4\u4E92\u63A7\u4EF6\u5BBD\u5EA6\uFF1Adefault / fill\uFF0C\u6216\u81EA\u5B9A\u4E49\u5982 120px\uFF08\u901A\u5E38 \u2265100px\uFF09\u3002\u5E76\u6392\u6309\u94AE\u6EE1\u5BBD\u5747\u5206\u7528 fill\uFF08\u914D\u5957\u5217 width=weighted\uFF09\uFF1B\u5185\u5BB9\u81EA\u9002\u5E94\u5219\u7701\u7565\u672C\u5B57\u6BB5\uFF08\u914D\u5957\u5217 width=auto\uFF09"
100
+ );
101
+ var SelectBorderTypeSchema = z.enum(["default", "text"]).describe("\u4E0B\u62C9\u9009\u62E9\u8FB9\u6846\u6837\u5F0F\uFF1Adefault\uFF08\u5E26\u8FB9\u6846\uFF09/ text\uFF08\u65E0\u8FB9\u6846\uFF09");
102
+ var I18nStringMapSchema = z.record(z.string(), z.string()).describe("\u591A\u8BED\u8A00\u6587\u6848\u6620\u5C04\uFF0Ckey \u4E3A\u8BED\u79CD\uFF08\u5982 zh_cn\u3001en_us\uFF09\uFF0Cvalue \u4E3A\u5BF9\u5E94\u6587\u6848");
103
+ var WidthModeSchema = z.enum(["default", "compact", "fill"]).describe(
104
+ "\u5361\u7247\u5BBD\u5EA6\u6A21\u5F0F\uFF1Adefault\uFF08\u7EA6 600px \u4E0A\u9650\uFF09/ compact\uFF08400px\uFF09/ fill\uFF08\u6491\u6EE1\u804A\u5929\u7A97\u53E3\uFF09"
105
+ );
106
+
107
+ // src/common/text.ts
108
+ var PlainTextObjectSchema = z.object({
109
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
110
+ content: z.string().describe("\u6587\u672C\u5185\u5BB9"),
111
+ element_id: ElementIdSchema.optional().describe(
112
+ "\u5143\u7D20\u552F\u4E00\u6807\u8BC6\uFF0C\u6D41\u5F0F\u66F4\u65B0\u7B49\u573A\u666F\u7528\u4E8E\u5B9A\u4F4D\u8BE5\u6587\u672C\u5143\u7D20"
113
+ )
114
+ }).describe("\u7EAF\u6587\u672C\u5BF9\u8C61\uFF08tag = plain_text\uFF09");
115
+ var TextObjectSchema = z.object({
116
+ tag: z.enum(["plain_text", "lark_md"]).describe("\u6587\u672C\u7C7B\u578B\uFF1Aplain_text\uFF08\u7EAF\u6587\u672C\uFF09\u6216 lark_md\uFF08\u6709\u9650 Markdown\uFF09"),
117
+ content: z.string().optional().describe("\u6587\u672C\u5185\u5BB9"),
118
+ element_id: ElementIdSchema.optional().describe("\u5143\u7D20\u552F\u4E00\u6807\u8BC6")
119
+ }).describe("\u6587\u672C\u5BF9\u8C61\uFF08plain_text / lark_md\uFF09");
120
+ var MarkdownTextObjectSchema = z.object({
121
+ tag: z.enum(["plain_text", "markdown"]).describe("\u6587\u672C\u7C7B\u578B\uFF1Aplain_text \u6216 markdown"),
122
+ content: z.string().optional().describe("\u6587\u672C\u5185\u5BB9")
123
+ }).describe("\u6298\u53E0\u9762\u677F\u7B49\u573A\u666F\u7684\u6807\u9898\u6587\u672C\u5BF9\u8C61");
124
+ var StyledTextObjectSchema = z.object({
125
+ tag: z.enum(["plain_text", "lark_md"]).describe("\u6587\u672C\u7C7B\u578B\uFF1Aplain_text \u6216 lark_md"),
126
+ content: z.string().describe("\u6587\u672C\u5185\u5BB9"),
127
+ element_id: ElementIdSchema.optional().describe("\u5143\u7D20\u552F\u4E00\u6807\u8BC6"),
128
+ text_size: TextSizeSchema.optional().describe(
129
+ "\u5B57\u53F7\uFF0C\u9ED8\u8BA4 normal\uFF1B\u5B98\u65B9\u679A\u4E3E\u300110px\u201340px \u6216\u81EA\u5B9A\u4E49 text_size key"
130
+ ),
131
+ text_color: ColorSchema.optional().describe(
132
+ "\u6587\u672C\u989C\u8272\uFF0C\u9ED8\u8BA4 default\uFF1B\u4EC5 plain_text \u751F\u6548"
133
+ ),
134
+ text_align: z.enum(["left", "center", "right"]).optional().describe("\u6587\u672C\u5BF9\u9F50\u65B9\u5F0F\uFF0C\u9ED8\u8BA4 left"),
135
+ lines: z.number().int().positive().optional().describe("\u6700\u5927\u663E\u793A\u884C\u6570\uFF0C\u8D85\u51FA\u7701\u7565")
136
+ }).describe("\u5E26\u6837\u5F0F\u7684\u6587\u672C\u5757\uFF08\u666E\u901A\u6587\u672C\u7EC4\u4EF6\u7684 text \u5B57\u6BB5\uFF09");
137
+ var TextTagSchema = z.object({
138
+ tag: z.literal("text_tag").describe("\u540E\u7F00\u6807\u7B7E\u6807\u8BC6\uFF0C\u56FA\u5B9A\u4E3A text_tag"),
139
+ element_id: ElementIdSchema.optional().describe("\u5143\u7D20\u552F\u4E00\u6807\u8BC6"),
140
+ text: PlainTextObjectSchema.optional().describe("\u6807\u7B7E\u6587\u6848"),
141
+ color: TextTagColorSchema.optional().describe("\u6807\u7B7E\u989C\u8272\uFF0C\u9ED8\u8BA4 blue")
142
+ }).describe("\u6807\u9898\u540E\u7F00\u6807\u7B7E\uFF08\u6700\u591A\u5C55\u793A 3 \u4E2A\uFF09");
143
+ var TipsTextSchema = z.object({
144
+ tag: z.literal("plain_text").describe("\u63D0\u793A\u6587\u6848\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
145
+ content: z.string().describe("\u63D0\u793A\u6587\u6848\u5185\u5BB9")
146
+ }).describe("\u60AC\u6D6E/\u7981\u7528\u7B49\u573A\u666F\u7684\u63D0\u793A\u6587\u6848");
147
+
148
+ // src/common/confirm.ts
149
+ var ConfirmSchema = z.object({
150
+ title: PlainTextObjectSchema.describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u6807\u9898"),
151
+ text: PlainTextObjectSchema.describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u6B63\u6587")
152
+ }).describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E");
153
+ var IconTokenSchema = z.enum([
154
+ "add_outlined",
155
+ "add-app_outlined",
156
+ "add-bold_outlined",
157
+ "add-middle_outlined",
158
+ "admin_outlined",
159
+ "alarm-clock_outlined",
160
+ "album_outlined",
161
+ "alerts-off_outlined",
162
+ "all_outlined",
163
+ "app-default_outlined",
164
+ "arrow_outlined",
165
+ "arrow-down_outlined",
166
+ "arrow-left_outlined",
167
+ "arrow-up_outlined",
168
+ "back-tab_outlined",
169
+ "ban_outlined",
170
+ "ban-cancel_outlined",
171
+ "bell_outlined",
172
+ "calendar-slide_outlined",
173
+ "camera_outlined",
174
+ "cancel-collection_outlined",
175
+ "check_outlined",
176
+ "close_outlined",
177
+ "close-bold_outlined",
178
+ "close-small_outlined",
179
+ "collapse_outlined",
180
+ "collection_outlined",
181
+ "customize-size_outlined",
182
+ "delete_outlined",
183
+ "delete-app_outlined",
184
+ "delete-trash_outlined",
185
+ "details_outlined",
186
+ "done_outlined",
187
+ "down_outlined",
188
+ "down-bold_outlined",
189
+ "down-bottom_outlined",
190
+ "download_outlined",
191
+ "down-right_outlined",
192
+ "down-round_outlined",
193
+ "edit_outlined",
194
+ "edit-continue_outlined",
195
+ "ellipse_outlined",
196
+ "expand_outlined",
197
+ "export_outlined",
198
+ "feed-read_outlined",
199
+ "feed-unread_outlined",
200
+ "filter_outlined",
201
+ "find-app_outlined",
202
+ "history_outlined",
203
+ "history-search_outlined",
204
+ "image_outlined",
205
+ "image-fail_outlined",
206
+ "image-search_outlined",
207
+ "import_outlined",
208
+ "indeterminate_outlined",
209
+ "info_outlined",
210
+ "invisible_outlined",
211
+ "label-add_outlined",
212
+ "label-change_outlined",
213
+ "label-custom_outlined",
214
+ "label-remove_outlined",
215
+ "left_outlined",
216
+ "left-bold_outlined",
217
+ "left-small-ccm_outlined",
218
+ "like_outlined",
219
+ "line-feed_outlined",
220
+ "link-copy_outlined",
221
+ "link-lock_outlined",
222
+ "list-check_outlined",
223
+ "list-check-bold_outlined",
224
+ "list-filter_outlined",
225
+ "loading_outlined",
226
+ "logout_outlined",
227
+ "mark_outlined",
228
+ "maximize-win_outlined",
229
+ "maybe_outlined",
230
+ "menu_outlined",
231
+ "minimize_outlined",
232
+ "minimize-win_outlined",
233
+ "more_outlined",
234
+ "more-add_outlined",
235
+ "more-bold_outlined",
236
+ "more-close_outlined",
237
+ "more-reaction_outlined",
238
+ "more-vertical_outlined",
239
+ "mosaic_outlined",
240
+ "mosaic-box_outlined",
241
+ "mosaic-smear_outlined",
242
+ "multiple_outlined",
243
+ "multitask_outlined",
244
+ "multitask-1_outlined",
245
+ "multitask-2_outlined",
246
+ "multitask-3_outlined",
247
+ "multitask-4_outlined",
248
+ "multitask-5_outlined",
249
+ "navigate_outlined",
250
+ "no_outlined",
251
+ "notspam_outlined",
252
+ "original-size_outlined",
253
+ "original-size-view_outlined",
254
+ "picture-in-picture_outlined",
255
+ "pull-down_outlined",
256
+ "pull-left_outlined",
257
+ "pull-right_outlined",
258
+ "quicksetting_outlined",
259
+ "recall_outlined",
260
+ "rectangle_outlined",
261
+ "reduce_outlined",
262
+ "refresh_outlined",
263
+ "repeat_outlined",
264
+ "replace_outlined",
265
+ "report_outlined",
266
+ "resize_outlined",
267
+ "richtext_outlined",
268
+ "richtext-quit_outlined",
269
+ "right_outlined",
270
+ "right-bold_outlined",
271
+ "right-small-ccm_outlined",
272
+ "rotate_outlined",
273
+ "rotate-slice_outlined",
274
+ "safe_outlined",
275
+ "safe-pass_outlined",
276
+ "safe-settings_outlined",
277
+ "safe-vc_outlined",
278
+ "score_outlined",
279
+ "search_outlined",
280
+ "select_outlined",
281
+ "send_outlined",
282
+ "separate_outlined",
283
+ "set-left_outlined",
284
+ "setting_outlined",
285
+ "setting-inter_outlined",
286
+ "set-top_outlined",
287
+ "set-top-cancel_outlined",
288
+ "share_outlined",
289
+ "share-label_outlined",
290
+ "signature_outlined",
291
+ "spam_outlined",
292
+ "switch_outlined",
293
+ "tab-down_outlined",
294
+ "tab-more_outlined",
295
+ "thumbdown_outlined",
296
+ "thumbsup_outlined",
297
+ "time_outlined",
298
+ "translate_outlined",
299
+ "unmaximize-win_outlined",
300
+ "unmultitask_outlined",
301
+ "up_outlined",
302
+ "up-bold_outlined",
303
+ "up-expand_outlined",
304
+ "up-left_outlined",
305
+ "upload_outlined",
306
+ "upload-new-file_outlined",
307
+ "up-round_outlined",
308
+ "up-top_outlined",
309
+ "video-upload_outlined",
310
+ "view-3day_outlined",
311
+ "view-day_outlined",
312
+ "viewinchat_outlined",
313
+ "view-month_outlined",
314
+ "view-task_outlined",
315
+ "visible_outlined",
316
+ "visible-lock_outlined",
317
+ "voice_outlined",
318
+ "voice2text_outlined",
319
+ "voice-text_outlined",
320
+ "w1-h1_outlined",
321
+ "w3-h4_outlined",
322
+ "w4-h3_outlined",
323
+ "w9-h16_outlined",
324
+ "w16-h9_outlined",
325
+ "warning_outlined",
326
+ "window-close_outlined",
327
+ "window-max_outlined",
328
+ "window-mini_outlined",
329
+ "window-new_outlined",
330
+ "yes_outlined",
331
+ "zoom-in_outlined",
332
+ "zoom-out_outlined",
333
+ "building_outlined",
334
+ "building-unavailable_outlined",
335
+ "room_outlined",
336
+ "room-unavailable_outlined",
337
+ "calendar-line_outlined",
338
+ "calendar-setting_outlined",
339
+ "calendar-switch_outlined",
340
+ "calendar-tittle_outlined",
341
+ "calendar-tomorrow_outlined",
342
+ "calendar-view_outlined",
343
+ "chatbox_outlined",
344
+ "chatbox-remove_outlined",
345
+ "cloud_outlined",
346
+ "cloud-change_outlined",
347
+ "cloud-download_outlined",
348
+ "cloud-upload_outlined",
349
+ "disbandgroup_outlined",
350
+ "external_outlined",
351
+ "flag_outlined",
352
+ "flag-unavailable_outlined",
353
+ "forward_outlined",
354
+ "forward-all_outlined",
355
+ "forward-com_outlined",
356
+ "gift_outlined",
357
+ "gift-bag_outlined",
358
+ "group-card_outlined",
359
+ "inbox_outlined",
360
+ "language_outlined",
361
+ "later_outlined",
362
+ "mail_outlined",
363
+ "mail-code_outlined",
364
+ "mail-contact_outlined",
365
+ "mail-setting_outlined",
366
+ "mark-read_outlined",
367
+ "massage-box-mute_outlined",
368
+ "massage-box-out_outlined",
369
+ "meeting-plan_outlined",
370
+ "meeting-room-offline_outlined",
371
+ "move_outlined",
372
+ "organization-book_outlined",
373
+ "outbox_outlined",
374
+ "priority_outlined",
375
+ "privacy-location_outlined",
376
+ "reply_outlined",
377
+ "reply-all_outlined",
378
+ "resolve_outlined",
379
+ "sent_outlined",
380
+ "sent-cancel_outlined",
381
+ "sent-scheduled_outlined",
382
+ "sharelink_outlined",
383
+ "subscribe_outlined",
384
+ "subscribe-add_outlined",
385
+ "subscribe-cancel_outlined",
386
+ "tag_outlined",
387
+ "unread_outlined",
388
+ "untag_outlined",
389
+ "updatemeeting_outlined",
390
+ "wallet_outlined",
391
+ "add-entry_outlined",
392
+ "allmail_outlined",
393
+ "approval_outlined",
394
+ "appstore_outlined",
395
+ "archive_outlined",
396
+ "attachment_outlined",
397
+ "bonus-payroll_outlined",
398
+ "browser-mac_outlined",
399
+ "browser-win_outlined",
400
+ "busy_outlined",
401
+ "cal-creator_outlined",
402
+ "calendar_outlined",
403
+ "calendar-1_outlined",
404
+ "calendar-2_outlined",
405
+ "calendar-3_outlined",
406
+ "calendar-4_outlined",
407
+ "calendar-5_outlined",
408
+ "calendar-6_outlined",
409
+ "calendar-7_outlined",
410
+ "calendar-8_outlined",
411
+ "calendar-9_outlined",
412
+ "calendar-10_outlined",
413
+ "calendar-11_outlined",
414
+ "calendar-12_outlined",
415
+ "calendar-13_outlined",
416
+ "calendar-14_outlined",
417
+ "calendar-15_outlined",
418
+ "calendar-16_outlined",
419
+ "calendar-17_outlined",
420
+ "calendar-18_outlined",
421
+ "calendar-19_outlined",
422
+ "calendar-20_outlined",
423
+ "calendar-21_outlined",
424
+ "calendar-22_outlined",
425
+ "calendar-23_outlined",
426
+ "calendar-24_outlined",
427
+ "calendar-25_outlined",
428
+ "calendar-26_outlined",
429
+ "calendar-27_outlined",
430
+ "calendar-28_outlined",
431
+ "calendar-29_outlined",
432
+ "calendar-30_outlined",
433
+ "calendar-31_outlined",
434
+ "calendar-add_outlined",
435
+ "calendar-chat_outlined",
436
+ "calendar-date_outlined",
437
+ "calendar-done_outlined",
438
+ "calendar-edit_outlined",
439
+ "add-chat_outlined",
440
+ "add-comment_outlined",
441
+ "at_outlined",
442
+ "boards_outlined",
443
+ "buzz_outlined",
444
+ "cancel-buzz_outlined",
445
+ "chat_outlined",
446
+ "chat-all_outlined",
447
+ "chat-done_outlined",
448
+ "chat-forbidden_outlined",
449
+ "chat-left_outlined",
450
+ "chat-news_outlined",
451
+ "chat-right_outlined",
452
+ "chat-secret_outlined",
453
+ "chat-topic_outlined",
454
+ "comment-subscribe_outlined",
455
+ "discuss_outlined",
456
+ "following_outlined",
457
+ "hashtag_outlined",
458
+ "message-mute_outlined",
459
+ "moments-categories_outlined",
460
+ "reply-cn_outlined",
461
+ "show-feed_outlined",
462
+ "stop-demote_outlined",
463
+ "stop-promote_outlined",
464
+ "vote_outlined",
465
+ "admin-cancel_outlined",
466
+ "admin-setting_outlined",
467
+ "assigned_outlined",
468
+ "community-tab_outlined",
469
+ "contacts_outlined",
470
+ "emoji_outlined",
471
+ "emoji-add_outlined",
472
+ "group_outlined",
473
+ "mail-collaborator_outlined",
474
+ "member_outlined",
475
+ "member-add_outlined",
476
+ "member-new_outlined",
477
+ "nearby-group_outlined",
478
+ "person-admit_outlined",
479
+ "person-remove_outlined",
480
+ "robot_outlined",
481
+ "robot-add_outlined",
482
+ "special-attention_outlined",
483
+ "team-add_outlined",
484
+ "team-code_outlined",
485
+ "withdrawcohost_outlined",
486
+ "active-speaker-view_outlined",
487
+ "admin-multistage_outlined",
488
+ "annotate_outlined",
489
+ "announce_outlined",
490
+ "asterisk_outlined",
491
+ "auto-layout_outlined",
492
+ "av-set-down_outlined",
493
+ "av-set-up_outlined",
494
+ "barrage-off_outlined",
495
+ "big-eye_outlined",
496
+ "bluetooth_outlined",
497
+ "blur_outlined",
498
+ "breakoutrooms_outlined",
499
+ "call_outlined",
500
+ "call-end_outlined",
501
+ "call-net_outlined",
502
+ "call-secret_outlined",
503
+ "call-video_outlined",
504
+ "camera-flip_outlined",
505
+ "controller_outlined",
506
+ "cursor_outlined",
507
+ "dialpad_outlined",
508
+ "ear_outlined",
509
+ "effects_outlined",
510
+ "emoji-keyboard_outlined",
511
+ "face-lift_outlined",
512
+ "floating-view_outlined",
513
+ "grid-view_outlined",
514
+ "hash_outlined",
515
+ "hide-toolbar_outlined",
516
+ "highlighter_outlined",
517
+ "host-control_outlined",
518
+ "labs_outlined",
519
+ "laser_outlined",
520
+ "leaveroom_outlined",
521
+ "lipstick_outlined",
522
+ "livestream_outlined",
523
+ "livestream-content_outlined",
524
+ "livestream-hybrid_outlined",
525
+ "livestream-start_outlined",
526
+ "lock_outlined",
527
+ "lottery-bag_outlined",
528
+ "lowerhand_outlined",
529
+ "mic_outlined",
530
+ "mic-off_outlined",
531
+ "multistreaming_outlined",
532
+ "new-join-meeting_outlined",
533
+ "officephone_outlined",
534
+ "pause-livestream_outlined",
535
+ "pen_outlined",
536
+ "podcast_outlined",
537
+ "raisehand_outlined",
538
+ "record_outlined",
539
+ "scene-expand_outlined",
540
+ "scene-minimaze_outlined",
541
+ "scene-reupload_outlined",
542
+ "sepwindow_outlined",
543
+ "share-computer-audio_outlined",
544
+ "share-screen_outlined",
545
+ "show-toolbar_outlined",
546
+ "sip_outlined",
547
+ "speaker_outlined",
548
+ "speaker-mute_outlined",
549
+ "speaking_outlined",
550
+ "stop_outlined",
551
+ "stop-share-screen_outlined",
552
+ "submit-feedback_outlined",
553
+ "subtitles_outlined",
554
+ "subtitles-settings_outlined",
555
+ "touch-up_outlined",
556
+ "vc-sepwindow_outlined",
557
+ "version_outlined",
558
+ "video_outlined",
559
+ "video-off_outlined",
560
+ "virtual-avatar_outlined",
561
+ "virtual-bg_outlined",
562
+ "virtual-office_outlined",
563
+ "watch-page-settings_outlined",
564
+ "app_outlined",
565
+ "chat-pin_outlined",
566
+ "internet_outlined",
567
+ "local_outlined",
568
+ "pin_outlined",
569
+ "time-zone_outlined",
570
+ "unpin_outlined",
571
+ "cancel-offline_outlined",
572
+ "day_outlined",
573
+ "night_outlined",
574
+ "offline_outlined",
575
+ "jira-issue_outlined",
576
+ "platform_outlined",
577
+ "alarm_outlined",
578
+ "burnlife-day_outlined",
579
+ "burnlife-hour_outlined",
580
+ "burnlife-minute_outlined",
581
+ "burnlife-notime_outlined",
582
+ "burnlife-week_outlined",
583
+ "cellphone_outlined",
584
+ "clear_outlined",
585
+ "computer_outlined",
586
+ "filelink-save_outlined",
587
+ "keyboard_outlined",
588
+ "keyboard-display_outlined",
589
+ "lan_outlined",
590
+ "mouse_outlined",
591
+ "pc_outlined",
592
+ "phone_outlined",
593
+ "printer_outlined",
594
+ "qr_outlined",
595
+ "ram_outlined",
596
+ "scan_outlined",
597
+ "signal_outlined",
598
+ "add-doc_outlined",
599
+ "addnew_outlined",
600
+ "adjustment_outlined",
601
+ "advanced-actived_outlined",
602
+ "align-button_outlined",
603
+ "align-center_outlined",
604
+ "align-left_outlined",
605
+ "align-middle_outlined",
606
+ "align-right_outlined",
607
+ "align-top_outlined",
608
+ "arrange_outlined",
609
+ "bitable-authorization_outlined",
610
+ "bitableform_outlined",
611
+ "bitablegallery_outlined",
612
+ "bitablegantt_outlined",
613
+ "bitablegrid_outlined",
614
+ "bitablekanban_outlined",
615
+ "bitable-move-down_outlined",
616
+ "bitable-move-up_outlined",
617
+ "bitableunknow_outlined",
618
+ "blocknew_outlined",
619
+ "bold_outlined",
620
+ "border_outlined",
621
+ "borders_outlined",
622
+ "bottom-align_outlined",
623
+ "brush-bold_outlined",
624
+ "brush-light_outlined",
625
+ "brush-medium_outlined",
626
+ "bulk-add_outlined",
627
+ "callout_outlined",
628
+ "cancel-freeze_outlined",
629
+ "cancel-link_outlined",
630
+ "cancel-top-align_outlined",
631
+ "card_outlined",
632
+ "card-search_outlined",
633
+ "card-view_outlined",
634
+ "ccm-edit_outlined",
635
+ "ccm-edit-continue_outlined",
636
+ "ccm-next_outlined",
637
+ "ccm-previous_outlined",
638
+ "ccm-rename_outlined",
639
+ "ccm-upload_outlined",
640
+ "center-alignment_outlined",
641
+ "clip_outlined",
642
+ "code_outlined",
643
+ "codeblock_outlined",
644
+ "columnwidth_outlined",
645
+ "command_outlined",
646
+ "copy_outlined",
647
+ "cover-setting_outlined",
648
+ "creat-folder_outlined",
649
+ "data-sheet_outlined",
650
+ "describe_outlined",
651
+ "disorder-list_outlined",
652
+ "divider_outlined",
653
+ "doc-checklist_outlined",
654
+ "doc-comment_outlined",
655
+ "doc-replace_outlined",
656
+ "doc-search_outlined",
657
+ "down-borders_outlined",
658
+ "drag_outlined",
659
+ "drawio_outlined",
660
+ "driveload_outlined",
661
+ "edit-discription_outlined",
662
+ "education_outlined",
663
+ "efficiency_outlined",
664
+ "eraser_outlined",
665
+ "expand-items_outlined",
666
+ "feedback_outlined",
667
+ "feishuclip_outlined",
668
+ "figure_outlined",
669
+ "file-bitable_outlined",
670
+ "file-link-audio_outlined",
671
+ "file-link-audio-shortcut_outlined",
672
+ "file-link-bitable_outlined",
673
+ "filelink-bitable-shortcut_outlined",
674
+ "file-link-deta_outlined",
675
+ "file-link-docx_outlined",
676
+ "file-link-docx-shortcut_outlined",
677
+ "file-link-excel_outlined",
678
+ "file-link-excel-shortcut_outlined",
679
+ "file-link-image_outlined",
680
+ "file-link-image-shortcut_outlined",
681
+ "file-link-mindnote_outlined",
682
+ "file-link-otherfile_outlined",
683
+ "file-link-otherfile-shortcut_outlined",
684
+ "file-link-pdf_outlined",
685
+ "file-link-pdf-shortcut_outlined",
686
+ "file-link-ppt_outlined",
687
+ "file-link-ppt-shortcut_outlined",
688
+ "file-link-sheet_outlined",
689
+ "file-link-slide_outlined",
690
+ "file-link-slide-shortcut_outlined",
691
+ "file-link-text_outlined",
692
+ "file-link-text-shortcut_outlined",
693
+ "file-link-unknow_outlined",
694
+ "file-link-unknow-shortcut_outlined",
695
+ "file-link-video_outlined",
696
+ "file-link-video-shortcut_outlined",
697
+ "file-link-wiki_outlined",
698
+ "file-link-wiki-shortcut_outlined",
699
+ "file-link-word_outlined",
700
+ "file-link-word2_outlined",
701
+ "file-link-word2-shortcut_outlined",
702
+ "file-link-zip_outlined",
703
+ "file-link-zip-shortcut_outlined",
704
+ "find-and-replace_outlined",
705
+ "flip-horizontally_outlined",
706
+ "flip-vertically_outlined",
707
+ "folder_outlined",
708
+ "fontcolor_outlined",
709
+ "form-brush_outlined",
710
+ "formula_outlined",
711
+ "frame-selection_outlined",
712
+ "freeze-1-column_outlined",
713
+ "freeze-column-and-row_outlined",
714
+ "freeze-row_outlined",
715
+ "full-width_outlined",
716
+ "functions_outlined",
717
+ "ganttset_outlined",
718
+ "global-trianglesmall_outlined",
719
+ "gridlines_outlined",
720
+ "gridlines-hide_outlined",
721
+ "group-selection_outlined",
722
+ "h1_outlined",
723
+ "h2_outlined",
724
+ "h3_outlined",
725
+ "h4_outlined",
726
+ "h5_outlined",
727
+ "h6_outlined",
728
+ "h7_outlined",
729
+ "h8_outlined",
730
+ "h9_outlined",
731
+ "helpdesk_outlined",
732
+ "helpdesk-off_outlined",
733
+ "highlightranks_outlined",
734
+ "high-light-repeatvalue_outlined",
735
+ "history-commant_outlined",
736
+ "hn_outlined",
737
+ "home_outlined",
738
+ "horizontal-line_outlined",
739
+ "image-replacement_outlined",
740
+ "increase-indentation_outlined",
741
+ "inner-borders_outlined",
742
+ "insert-chart_outlined",
743
+ "insert-column-left_outlined",
744
+ "insert-column-right_outlined",
745
+ "insert-down_outlined",
746
+ "insert-left_outlined",
747
+ "insert-right_outlined",
748
+ "insert-row-down_outlined",
749
+ "insert-row-up_outlined",
750
+ "insert-up_outlined",
751
+ "into-item_outlined",
752
+ "italic_outlined",
753
+ "justify-text_outlined",
754
+ "latex_outlined",
755
+ "left-alignment_outlined",
756
+ "left-borders_outlined",
757
+ "link-record_outlined",
758
+ "list_outlined",
759
+ "list-view_outlined",
760
+ "long-figure_outlined",
761
+ "lookup_outlined",
762
+ "magnify_outlined",
763
+ "magnify-left_outlined",
764
+ "mergecells_outlined",
765
+ "mindmap_outlined",
766
+ "mindmap-down_outlined",
767
+ "mindmap-left_outlined",
768
+ "mindmap-right_outlined",
769
+ "mindmap-side_outlined",
770
+ "minify_outlined",
771
+ "move-down_outlined",
772
+ "move-to_outlined",
773
+ "move-up_outlined",
774
+ "multi-elementalign-bottom_outlined",
775
+ "multi-elementalign-center_outlined",
776
+ "multi-elementalign-left_outlined",
777
+ "multi-elementalign-middle_outlined",
778
+ "multi-elementalign-right_outlined",
779
+ "multi-elementalign-top_outlined",
780
+ "myfolder_outlined",
781
+ "navigation-button_outlined",
782
+ "new-shortcut_outlined",
783
+ "no-borders_outlined",
784
+ "number_outlined",
785
+ "number-00_outlined",
786
+ "number-0_outlined",
787
+ "numbered-list-continued_outlined",
788
+ "numbered-list-new_outlined",
789
+ "numbered-list-restart_outlined",
790
+ "okr_outlined",
791
+ "operationrecord_outlined",
792
+ "order-list_outlined",
793
+ "organization_outlined",
794
+ "outer-borders_outlined",
795
+ "outline_outlined",
796
+ "paperbag_outlined",
797
+ "paste_outlined",
798
+ "plugin_outlined",
799
+ "poll_outlined",
800
+ "presentation_outlined",
801
+ "preview_outlined",
802
+ "preview-view_outlined",
803
+ "protect-range_outlined",
804
+ "readinfo_outlined",
805
+ "redo_outlined",
806
+ "reduce-indentation_outlined",
807
+ "reference_outlined",
808
+ "return-item_outlined",
809
+ "revolve_outlined",
810
+ "right-alignment_outlined",
811
+ "right-borders_outlined",
812
+ "row-extratall_outlined",
813
+ "row-height_outlined",
814
+ "rowheightsheet_outlined",
815
+ "row-medium_outlined",
816
+ "row-tall_outlined",
817
+ "screen-rotation_outlined",
818
+ "screenshots_outlined",
819
+ "search-outline_outlined",
820
+ "select-all_outlined",
821
+ "select-character_outlined",
822
+ "select-down_outlined",
823
+ "select-line_outlined",
824
+ "select-up_outlined",
825
+ "sheet-bar_outlined",
826
+ "sheet-bitable_outlined",
827
+ "sheet-cardmodel_outlined",
828
+ "sheet-combo_outlined",
829
+ "sheet-conditionalformat_outlined",
830
+ "sheet-currency_outlined",
831
+ "sheet-datareference_outlined",
832
+ "sheet-dollar_outlined",
833
+ "sheet-fontminus_outlined",
834
+ "sheet-fontplus_outlined",
835
+ "sheet-gauge_outlined",
836
+ "sheet-histogram_outlined",
837
+ "sheet-line_outlined",
838
+ "sheet-menu_outlined",
839
+ "sheet-onedatareference_outlined",
840
+ "sheet-pareto_outlined",
841
+ "sheet-percent_outlined",
842
+ "sheet-pie_outlined",
843
+ "sheet-scatter_outlined",
844
+ "sheet-sign_outlined",
845
+ "sheet-slash_outlined",
846
+ "sheet-table_outlined",
847
+ "sheet-text-columns_outlined",
848
+ "sheet-wordcloud_outlined",
849
+ "sidebar_outlined",
850
+ "side-expand_outlined",
851
+ "side-fold_outlined",
852
+ "slides-mode_outlined",
853
+ "sort-a-to-z_outlined",
854
+ "sort-z-to-a_outlined",
855
+ "space_outlined",
856
+ "space-down_outlined",
857
+ "space-down-bold_outlined",
858
+ "space-group_outlined",
859
+ "space-sharedfolder_outlined",
860
+ "space-up_outlined",
861
+ "space-up-bold_outlined",
862
+ "storage_outlined",
863
+ "style_outlined",
864
+ "style-fillcolor_outlined",
865
+ "style-fontcolor_outlined",
866
+ "style-hightlight_outlined",
867
+ "style-set_outlined",
868
+ "switch-completion_outlined",
869
+ "switch-item_outlined",
870
+ "table-group_outlined",
871
+ "take-action_outlined",
872
+ "template_outlined",
873
+ "text_outlined",
874
+ "text2_outlined",
875
+ "text-aa_outlined",
876
+ "textstyle_outlined",
877
+ "todo_outlined",
878
+ "tool-addblock_outlined",
879
+ "tool-indent_outlined",
880
+ "tool-outdent_outlined",
881
+ "top-align_outlined",
882
+ "transfersheet_outlined",
883
+ "treelist_outlined",
884
+ "tuodong_outlined",
885
+ "typography_outlined",
886
+ "uml_outlined",
887
+ "underline_outlined",
888
+ "undo_outlined",
889
+ "untext_outlined",
890
+ "up-borders_outlined",
891
+ "update-log_outlined",
892
+ "uploadfile_outlined",
893
+ "uploadfolder_outlined",
894
+ "ux-fill-color_outlined",
895
+ "ux-font-color_outlined",
896
+ "ux-highlight_outlined",
897
+ "vc-drag_outlined",
898
+ "vertical-align_outlined",
899
+ "view_outlined",
900
+ "view-list_outlined",
901
+ "warn-report_outlined",
902
+ "web-card_outlined",
903
+ "whiteboard_outlined",
904
+ "wiki_outlined",
905
+ "wiki-book_outlined",
906
+ "wiki-doc-shortcut_outlined",
907
+ "wikilink_outlined",
908
+ "wiki-mindnote-shortcut_outlined",
909
+ "wiki-sheet-shortcut_outlined",
910
+ "wikitreelistblod_outlined",
911
+ "workspace_outlined",
912
+ "wrap_outlined",
913
+ "wrapping_outlined",
914
+ "add-dictionary_outlined",
915
+ "googledrive_outlined",
916
+ "hirelogo_outlined",
917
+ "jira_outlined",
918
+ "lark_outlined",
919
+ "larkfriends_outlined",
920
+ "meego_outlined",
921
+ "add-button_outlined",
922
+ "add-sheet_outlined",
923
+ "add-trustparty_outlined",
924
+ "bitable-lock_outlined",
925
+ "briefcase_outlined",
926
+ "bring-front_outlined",
927
+ "buffing_outlined",
928
+ "business-card_outlined",
929
+ "cancel-richtext_outlined",
930
+ "ccm-filter_outlined",
931
+ "ccm-outbox_outlined",
932
+ "ccm-paste_outlined",
933
+ "ccm-replace_outlined",
934
+ "ccm-richtext_outlined",
935
+ "ccm-straight-line_outlined",
936
+ "chat-search-solid_outlined",
937
+ "circularend-point_outlined",
938
+ "collapse-keyboard_outlined",
939
+ "comment-number-a_outlined",
940
+ "company_outlined",
941
+ "connect_outlined",
942
+ "copy-and-paste-item_outlined",
943
+ "crop_outlined",
944
+ "disorde-list_outlined",
945
+ "doc_outlined",
946
+ "dotted-dotted-line_outlined",
947
+ "down-expand_outlined",
948
+ "download-image_outlined",
949
+ "draft_outlined",
950
+ "expand-down_outlined",
951
+ "fill-frame_outlined",
952
+ "fit-to-frame_outlined",
953
+ "folder-add_outlined",
954
+ "follow_outlined",
955
+ "foryou_outlined",
956
+ "gift-bag-linear_outlined",
957
+ "graduation_outlined",
958
+ "hot_outlined",
959
+ "insert-columns_outlined",
960
+ "join-meeting_outlined",
961
+ "kanban_outlined",
962
+ "like-line_outlined",
963
+ "line-arend-point_outlined",
964
+ "list-setting_outlined",
965
+ "listview_outlined",
966
+ "mic-outline_outlined",
967
+ "mindnote_outlined",
968
+ "move-selected_outlined",
969
+ "msgcard-rectangle_outlined",
970
+ "new-item_outlined",
971
+ "orde-list_outlined",
972
+ "original-size-wiew_outlined",
973
+ "pencilkit_outlined",
974
+ "print_outlined",
975
+ "proportion_outlined",
976
+ "push-left_outlined",
977
+ "quick-access_outlined",
978
+ "round-add_outlined",
979
+ "sent-back_outlined",
980
+ "set-as-text_outlined",
981
+ "shape_outlined",
982
+ "sheet_outlined",
983
+ "sheet-dataverification_outlined",
984
+ "short-cuts_outlined",
985
+ "sor-a-to-z_outlined",
986
+ "sort_outlined",
987
+ "sor-z-to-a_outlined",
988
+ "square-dotted-line_outlined",
989
+ "squarend-point_outlined",
990
+ "start_outlined",
991
+ "status-meeting_outlined",
992
+ "status-trip_outlined",
993
+ "status-vacation_outlined",
994
+ "straight-line_outlined",
995
+ "strikethrough_outlined",
996
+ "subtitle-setting_outlined",
997
+ "tab-fix_outlined",
998
+ "tab-release_outlined",
999
+ "tab-todo_outlined",
1000
+ "tex_outlined",
1001
+ "toolbar-toggle_outlined",
1002
+ "triangularend-point_outlined",
1003
+ "trustparty_outlined",
1004
+ "view-video_outlined",
1005
+ "waiting_outlined",
1006
+ "widelist_outlined",
1007
+ "workorder_outlined",
1008
+ "add_filled",
1009
+ "alarm-clock_filled",
1010
+ "alerts-off_filled",
1011
+ "app-default_filled",
1012
+ "ban_filled",
1013
+ "ban-cancel_filled",
1014
+ "bell_filled",
1015
+ "camera_filled",
1016
+ "close_filled",
1017
+ "collect_filled",
1018
+ "delete_filled",
1019
+ "delete-trash_filled",
1020
+ "down-round_filled",
1021
+ "empty_filled",
1022
+ "error_filled",
1023
+ "error-hollow_filled",
1024
+ "expand-down_filled",
1025
+ "expand-left_filled",
1026
+ "expand-right_filled",
1027
+ "expand-up_filled",
1028
+ "gif_filled",
1029
+ "history-search_filled",
1030
+ "info_filled",
1031
+ "info-hollow_filled",
1032
+ "label-custom_filled",
1033
+ "like_filled",
1034
+ "link-copy_filled",
1035
+ "loadfail_filled",
1036
+ "maybe_filled",
1037
+ "more-add_filled",
1038
+ "move-bottom_filled",
1039
+ "move-top_filled",
1040
+ "no_filled",
1041
+ "nopicture_filled",
1042
+ "safe_filled",
1043
+ "safe-vc_filled",
1044
+ "score_filled",
1045
+ "send_filled",
1046
+ "setting_filled",
1047
+ "setting-inter_filled",
1048
+ "share_filled",
1049
+ "succeed_filled",
1050
+ "succeed-hollow_filled",
1051
+ "thumbdown_filled",
1052
+ "thumbsup_filled",
1053
+ "time_filled",
1054
+ "up_filled",
1055
+ "verify_filled",
1056
+ "view-in-chat_filled",
1057
+ "visible_filled",
1058
+ "visible-lock_filled",
1059
+ "warning_filled",
1060
+ "warning-hollow_filled",
1061
+ "yes_filled",
1062
+ "sheet-iconsets-caution_filled",
1063
+ "sheet-iconsets-check_filled",
1064
+ "sheet-iconsets-cross_filled",
1065
+ "sheet-iconsets-decrease_filled",
1066
+ "sheet-iconsets-diamond_filled",
1067
+ "sheet-iconsets-down-grey_filled",
1068
+ "sheet-iconsets-greycircle_filled",
1069
+ "sheet-iconsets-heart-100_filled",
1070
+ "sheet-iconsets-increase_filled",
1071
+ "sheet-iconsets-redflag_filled",
1072
+ "sheet-iconsets-rightdown-grey_filled",
1073
+ "sheet-iconsets-right-grey_filled",
1074
+ "sheet-iconsets-rightup-grey_filled",
1075
+ "sheet-iconsets-stable_filled",
1076
+ "sheet-iconsets-star-100_filled",
1077
+ "sheet-iconsets-thumbsdown_filled",
1078
+ "sheet-iconsets-thumbsup_filled",
1079
+ "sheet-iconsets-triangle_filled",
1080
+ "sheet-iconsets-up-grey_filled",
1081
+ "building_filled",
1082
+ "room_filled",
1083
+ "activity_filled",
1084
+ "approval_filled",
1085
+ "approval-single_filled",
1086
+ "calendar_filled",
1087
+ "calendar-1_filled",
1088
+ "calendar-2_filled",
1089
+ "calendar-3_filled",
1090
+ "calendar-4_filled",
1091
+ "calendar-5_filled",
1092
+ "calendar-6_filled",
1093
+ "calendar-7_filled",
1094
+ "calendar-8_filled",
1095
+ "calendar-9_filled",
1096
+ "calendar-10_filled",
1097
+ "calendar-11_filled",
1098
+ "calendar-12_filled",
1099
+ "calendar-13_filled",
1100
+ "calendar-14_filled",
1101
+ "calendar-15_filled",
1102
+ "calendar-16_filled",
1103
+ "calendar-17_filled",
1104
+ "calendar-18_filled",
1105
+ "calendar-19_filled",
1106
+ "calendar-20_filled",
1107
+ "calendar-21_filled",
1108
+ "calendar-22_filled",
1109
+ "calendar-23_filled",
1110
+ "calendar-24_filled",
1111
+ "calendar-25_filled",
1112
+ "calendar-26_filled",
1113
+ "calendar-27_filled",
1114
+ "calendar-28_filled",
1115
+ "calendar-29_filled",
1116
+ "calendar-30_filled",
1117
+ "calendar-31_filled",
1118
+ "calendar-chat_filled",
1119
+ "calendar-chat-avatar_filled",
1120
+ "calendar-down_filled",
1121
+ "calendar-left_filled",
1122
+ "calendar-right_filled",
1123
+ "calendar-up_filled",
1124
+ "external_filled",
1125
+ "flag_filled",
1126
+ "forward_filled",
1127
+ "forward-all_filled",
1128
+ "forward-com_filled",
1129
+ "gift-bag_filled",
1130
+ "inbox_filled",
1131
+ "language_filled",
1132
+ "later_filled",
1133
+ "mail_filled",
1134
+ "reply_filled",
1135
+ "reply-all_filled",
1136
+ "resolve_filled",
1137
+ "sharelink_filled",
1138
+ "tag_filled",
1139
+ "boards_filled",
1140
+ "buzz_filled",
1141
+ "chat_filled",
1142
+ "chat-all_filled",
1143
+ "chat-done_filled",
1144
+ "chat-news_filled",
1145
+ "chat-secret_filled",
1146
+ "chat-topic_filled",
1147
+ "chat-trans_filled",
1148
+ "lock-chat_filled",
1149
+ "reply-cn_filled",
1150
+ "speed_filled",
1151
+ "community-tab_filled",
1152
+ "contacts_filled",
1153
+ "emoji_filled",
1154
+ "female_filled",
1155
+ "group_filled",
1156
+ "group-exit_filled",
1157
+ "male_filled",
1158
+ "member_filled",
1159
+ "person-add_filled",
1160
+ "person-remove_filled",
1161
+ "robot_filled",
1162
+ "special-attention_filled",
1163
+ "vc-reaction_filled",
1164
+ "addmedia_filled",
1165
+ "annotate_filled",
1166
+ "announce_filled",
1167
+ "bluetooth_filled",
1168
+ "breakoutrooms_filled",
1169
+ "call_filled",
1170
+ "call-end_filled",
1171
+ "call-net_filled",
1172
+ "call-out_filled",
1173
+ "call-secret_filled",
1174
+ "call-video_filled",
1175
+ "coding-test_filled",
1176
+ "ear_filled",
1177
+ "effects_filled",
1178
+ "grid-view_filled",
1179
+ "headphone_filled",
1180
+ "hide-sidebar_filled",
1181
+ "host-control_filled",
1182
+ "labs_filled",
1183
+ "leaveroom_filled",
1184
+ "livestream_filled",
1185
+ "livestream-ing_filled",
1186
+ "livestream-start_filled",
1187
+ "lock_filled",
1188
+ "lock-open_filled",
1189
+ "lowerhand_filled",
1190
+ "mac_filled",
1191
+ "magic-share_filled",
1192
+ "meeting_filled",
1193
+ "mic_filled",
1194
+ "mic-off_filled",
1195
+ "multistreaming_filled",
1196
+ "new-join-meeting_filled",
1197
+ "next-play_filled",
1198
+ "officephone_filled",
1199
+ "pause_filled",
1200
+ "pause-round_filled",
1201
+ "play_filled",
1202
+ "play-round_filled",
1203
+ "previous-play_filled",
1204
+ "raisehand_filled",
1205
+ "record_filled",
1206
+ "reject_filled",
1207
+ "share-screen_filled",
1208
+ "show-sidebar_filled",
1209
+ "sip_filled",
1210
+ "speaker_filled",
1211
+ "speaker-mute_filled",
1212
+ "stop-record_filled",
1213
+ "subtitles_filled",
1214
+ "vc-toolbar-down_filled",
1215
+ "vc-toolbar-up_filled",
1216
+ "video_filled",
1217
+ "video-off_filled",
1218
+ "virtual-office_filled",
1219
+ "wins_filled",
1220
+ "app_filled",
1221
+ "chat-pin_filled",
1222
+ "local_filled",
1223
+ "pin_filled",
1224
+ "gadget_filled",
1225
+ "cellphone_filled",
1226
+ "computer_filled",
1227
+ "mouse_filled",
1228
+ "pc_filled",
1229
+ "arrange_filled",
1230
+ "copy_filled",
1231
+ "describe_filled",
1232
+ "feedback_filled",
1233
+ "folder_filled",
1234
+ "helpdesk_filled",
1235
+ "home_filled",
1236
+ "multi-folder_filled",
1237
+ "myfolder_filled",
1238
+ "note_filled",
1239
+ "organization_filled",
1240
+ "premium-gleam_filled",
1241
+ "scroll_filled",
1242
+ "space_filled",
1243
+ "space-myspace_filled",
1244
+ "space-sharedfolder_filled",
1245
+ "todo_filled",
1246
+ "wiki_filled",
1247
+ "wiki-book_filled",
1248
+ "wiki-space_filled",
1249
+ "workspace_filled",
1250
+ "exchange_filled",
1251
+ "google_filled",
1252
+ "hirelogo_filled",
1253
+ "interview-space_filled",
1254
+ "lark-logo_filled",
1255
+ "meego_filled",
1256
+ "minutes-logo_filled",
1257
+ "wechat_filled",
1258
+ "wechat-friend_filled",
1259
+ "weibo_filled",
1260
+ "attachment_filled",
1261
+ "business-card_filled",
1262
+ "cancel-link_filled",
1263
+ "close-banner_filled",
1264
+ "danmu-off_filled",
1265
+ "danmu-on_filled",
1266
+ "diagnose_filled",
1267
+ "file-link-video_filled",
1268
+ "group-add_filled",
1269
+ "history_filled",
1270
+ "hub_filled",
1271
+ "jobs_filled",
1272
+ "join-meeting_filled",
1273
+ "luckmoney_filled",
1274
+ "photo-album_filled",
1275
+ "referrals_filled",
1276
+ "status-meeting_filled",
1277
+ "status-trip_filled",
1278
+ "status-vacation_filled",
1279
+ "tab-app_filled",
1280
+ "tab-chat_filled",
1281
+ "tab-collect_filled",
1282
+ "tab-community_filled",
1283
+ "tab-contacts_filled",
1284
+ "tab-drive_filled",
1285
+ "tab-mail_filled",
1286
+ "tab-minutes_filled",
1287
+ "tab-pin_filled",
1288
+ "tab-tag_filled",
1289
+ "tab-todo_filled",
1290
+ "tab-video_filled",
1291
+ "tab-wiki_filled",
1292
+ "vote_filled",
1293
+ "workorder_filled",
1294
+ "workorder-close_filled",
1295
+ "calendar_colorful",
1296
+ "todo_colorful",
1297
+ "vote_colorful",
1298
+ "file-lark-minutes_colorful",
1299
+ "file-form_colorful",
1300
+ "wiki-bitable_colorful",
1301
+ "larkcommunity_colorful",
1302
+ "hirelogo_colorful",
1303
+ "lark-logo_colorful",
1304
+ "meego_colorful",
1305
+ "myai_colorful",
1306
+ "apaas_colorful"
1307
+ ]).describe("\u98DE\u4E66\u56FE\u6807\u5E93 token\uFF0C\u5982 add_outlined\u3001chat-forbidden_filled");
1308
+
1309
+ // src/common/icon.ts
1310
+ var StandardIconSchema = z.object({
1311
+ tag: z.literal("standard_icon").describe("\u56FE\u6807\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A standard_icon"),
1312
+ token: IconTokenSchema.optional().describe(
1313
+ "\u56FE\u6807\u5E93 token \u679A\u4E3E\uFF08\u5FC5\u987B\u547D\u4E2D\u679A\u4E3E\u503C\uFF09\u3002\u5E38\u7528\uFF1Amember_outlined\uFF08\u4EBA\u5458\uFF0C\u65E0 user_outlined\uFF09\u3001safe_outlined\uFF08\u5B89\u5168\uFF09\u3001info_outlined\u3001warning_outlined\u3001done_outlined\uFF1B\u56FE\u8868\u76F8\u5173\u53EF\u7528 insert-chart_outlined / sheet-line_outlined / sheet-histogram_outlined / sheet-pie_outlined / data-sheet_outlined / score_outlined / report_outlined / hot_outlined\u3002\u7981\u6B62\u81C6\u9020 token"
1314
+ ),
1315
+ color: ColorSchema.optional().describe(
1316
+ "\u56FE\u6807\u989C\u8272\uFF1B\u5BF9 outlined/filled \u56FE\u6807\u751F\u6548\u3002\u5E94\u4E0E\u63CF\u8FF0\u7684\u72B6\u6001\u6587\u5B57\u989C\u8272\u4E00\u81F4"
1317
+ ),
1318
+ size: z.string().optional().describe('\u56FE\u6807\u5C3A\u5BF8\uFF0C\u5982 "10px 10px"\uFF08\u90E8\u5206\u7EC4\u4EF6\u652F\u6301\uFF09')
1319
+ }).describe("\u6807\u51C6\u56FE\u6807\u5E93\u56FE\u6807");
1320
+ var CustomIconSchema = z.object({
1321
+ tag: z.literal("custom_icon").describe("\u56FE\u6807\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A custom_icon"),
1322
+ img_key: z.string().optional().describe("\u81EA\u5B9A\u4E49\u56FE\u6807\u7684\u56FE\u7247 key\uFF08\u4E0A\u4F20\u56FE\u7247\u63A5\u53E3\u8FD4\u56DE\uFF09"),
1323
+ size: z.string().optional().describe('\u56FE\u6807\u5C3A\u5BF8\uFF0C\u5982 "10px 10px"')
1324
+ }).describe("\u81EA\u5B9A\u4E49\u56FE\u7247\u56FE\u6807");
1325
+ var IconSchema = z.discriminatedUnion("tag", [StandardIconSchema, CustomIconSchema]).describe("\u524D\u7F00\u56FE\u6807\uFF1Astandard_icon\uFF08\u56FE\u6807\u5E93\uFF09\u6216 custom_icon\uFF08\u81EA\u5B9A\u4E49\u56FE\u7247\uFF09");
1326
+ var UdIconSchema = z.object({
1327
+ token: IconTokenSchema.optional().describe("\u56FE\u6807\u5E93 token \u679A\u4E3E"),
1328
+ style: z.object({
1329
+ color: ColorSchema.optional().describe("\u56FE\u6807\u989C\u8272")
1330
+ }).optional().describe("\u56FE\u6807\u6837\u5F0F")
1331
+ }).describe("\u5386\u53F2\u4EBA\u5458\u5217\u8868\u524D\u7F00\u56FE\u6807\uFF08ud_icon\uFF09\uFF1B\u4E0E icon \u540C\u65F6\u5B58\u5728\u65F6\u4EE5 icon \u4E3A\u51C6");
1332
+ var MultiUrlSchema = z.object({
1333
+ url: z.string().optional().describe("\u9ED8\u8BA4\u8DF3\u8F6C\u94FE\u63A5\uFF1B\u82E5\u540C\u65F6\u914D\u7F6E\u5404\u7AEF\u94FE\u63A5\uFF0C\u4F18\u5148\u4F7F\u7528 url"),
1334
+ pc_url: z.string().optional().describe("PC \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
1335
+ ios_url: z.string().optional().describe("iOS \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
1336
+ android_url: z.string().optional().describe("Android \u7AEF\u8DF3\u8F6C\u94FE\u63A5")
1337
+ }).superRefine((data, ctx) => {
1338
+ const hasUrl = Boolean(data.url);
1339
+ const hasAllPlatform = Boolean(data.pc_url) && Boolean(data.ios_url) && Boolean(data.android_url);
1340
+ if (!hasUrl && !hasAllPlatform) {
1341
+ ctx.addIssue({
1342
+ code: "custom",
1343
+ message: "url \u4E0E\u5404\u7AEF\u94FE\u63A5\u81F3\u5C11\u586B\u4E00\u7C7B\uFF1B\u82E5\u4E0D\u586B url\uFF0C\u5219\u5FC5\u987B\u5B8C\u6574\u586B\u5199 android_url\u3001ios_url\u3001pc_url"
1344
+ });
1345
+ }
1346
+ }).describe(
1347
+ "\u591A\u7AEF\u8DF3\u8F6C\u94FE\u63A5\u3002url \u4E0E\u4E09\u7AEF\u94FE\u63A5\u81F3\u5C11\u586B\u4E00\u7C7B\uFF1B\u7981\u7528\u67D0\u7AEF\u53EF\u8BBE\u4E3A lark://msgcard/unsupported_action"
1348
+ );
1349
+ var CardLinkSchema = MultiUrlSchema.describe(
1350
+ "\u5361\u7247\u6574\u4F53\u70B9\u51FB\u8DF3\u8F6C\u94FE\u63A5\uFF08card_link\uFF09"
1351
+ );
1352
+
1353
+ // src/element-ref.ts
1354
+ var elementSchema;
1355
+ function registerElementSchema(schema) {
1356
+ elementSchema = schema;
1357
+ }
1358
+ function getElementSchema() {
1359
+ if (!elementSchema) {
1360
+ throw new Error("ElementSchema \u5C1A\u672A\u6CE8\u518C\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u5BFC\u5165 src/element.ts");
1361
+ }
1362
+ return elementSchema;
1363
+ }
1364
+
1365
+ // src/containers/index.ts
1366
+ var ColumnActionSchema = z.object({
1367
+ multi_url: MultiUrlSchema.optional().describe("\u70B9\u51FB\u8DF3\u8F6C\u7684\u591A\u7AEF\u94FE\u63A5")
1368
+ }).describe("\u5217/\u5206\u680F\u70B9\u51FB\u8DF3\u8F6C\u914D\u7F6E");
1369
+ var ColumnSchema = z.object({
1370
+ tag: z.literal("column").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A column"),
1371
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1372
+ background_style: z.string().optional().describe(
1373
+ "\u5217\u80CC\u666F\u6837\u5F0F/\u989C\u8272\u3002\u5E76\u6392\u6307\u6807/KPI \u5217\u9ED8\u8BA4 grey-50\uFF1B\u52FF\u9010\u5217\u6362\u5F69\u8679\u8272\u3002\u5F69\u8272 -50 \u4EC5\u4F5C\u5C11\u91CF\u70B9\u7F00"
1374
+ ),
1375
+ /** auto / weighted / [16,600]px */
1376
+ width: z.string().optional().describe(
1377
+ "\u5217\u5BBD\uFF1Aauto / weighted / [16,600]px\u3002\u5E76\u6392\u6309\u94AE\u987B\u4E0E\u6309\u94AE width \u914D\u5957\uFF1A\u2460 \u6EE1\u5BBD\u5747\u5206 \u2192 weighted + weight:1\uFF0C\u6309\u94AE width:fill\uFF1B\u2461 \u5185\u5BB9\u81EA\u9002\u5E94 \u2192 auto\uFF0C\u6309\u94AE\u4E0D\u5199 width\u3002\u56FE\u6807\u884C\uFF1Aauto \u653E\u56FE\u6807 + weighted \u653E\u6587\u672C"
1378
+ ),
1379
+ /** width 为 weighted 时的权重,1–5 */
1380
+ weight: z.number().int().min(1).max(5).optional().describe("width \u4E3A weighted \u65F6\u7684\u6743\u91CD\uFF0C\u53D6\u503C 1\u20135\uFF1B\u7B49\u5BBD\u5E76\u6392\u5E38\u7528 1"),
1381
+ horizontal_spacing: SpacingTokenSchema.optional().describe(
1382
+ "\u5217\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u95F4\u8DDD"
1383
+ ),
1384
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1385
+ "\u5217\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u5BF9\u9F50"
1386
+ ),
1387
+ vertical_align: VerticalAlignSchema.optional().describe(
1388
+ "\u5217\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u5BF9\u9F50\uFF1B\u56FE\u6807+\u6587\u672C\u884C\u63A8\u8350 center"
1389
+ ),
1390
+ vertical_spacing: SpacingTokenSchema.optional().describe(
1391
+ "\u5217\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u95F4\u8DDD"
1392
+ ),
1393
+ direction: DirectionSchema.optional().describe("\u5217\u5185\u5B50\u7EC4\u4EF6\u6392\u5217\u65B9\u5411"),
1394
+ padding: SpacingValueSchema.optional().describe(
1395
+ '\u5217\u5185\u8FB9\u8DDD\uFF1B\u5E76\u6392\u6307\u6807\u5217\u9ED8\u8BA4 "8px 12px 8px 12px"'
1396
+ ),
1397
+ margin: SpacingValueSchema.optional().describe("\u5217\u5916\u8FB9\u8DDD"),
1398
+ action: ColumnActionSchema.optional().describe("\u5217\u70B9\u51FB\u8DF3\u8F6C\u914D\u7F6E"),
1399
+ /** 列内嵌组件;不支持 form、table */
1400
+ elements: z.lazy(() => z.array(getElementSchema())).optional().describe(
1401
+ "\u5217\u5185\u5D4C\u7EC4\u4EF6\u5217\u8868\uFF1B\u4E0D\u652F\u6301 form\u3001table\uFF08\u4E8C\u8005\u5FC5\u987B\u5728 body.elements \u6839\u7EA7\uFF09\u3001\u4EA4\u4E92\u5BB9\u5668\uFF08interactive_container\uFF09"
1402
+ )
1403
+ }).describe(
1404
+ "\u5206\u680F\u4E2D\u7684\u5217\uFF08column\uFF09\u3002KPI \u5217\u9ED8\u8BA4 background_style=grey-50 + padding\uFF1B\u6309\u94AE\u5BBD\u5EA6\u5FC5\u987B\u4E0E\u5217\u5BBD\u6A21\u5F0F\u914D\u5957"
1405
+ );
1406
+ var ColumnSetSchema = z.object({
1407
+ tag: z.literal("column_set").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A column_set"),
1408
+ columns: z.array(ColumnSchema).describe("\u5206\u680F\u4E2D\u7684\u5217\u5217\u8868"),
1409
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1410
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1411
+ horizontal_spacing: SpacingTokenSchema.optional().describe("\u5217\u95F4\u8DDD"),
1412
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1413
+ "\u5206\u680F\u5185\u5217\u7684\u6C34\u5E73\u5BF9\u9F50"
1414
+ ),
1415
+ flex_mode: z.enum(["none", "stretch", "flow", "bisect", "trisect"]).optional().describe(
1416
+ "\u7A84\u5C4F\u81EA\u9002\u5E94\u6A21\u5F0F\uFF1Anone / stretch / flow / bisect / trisect\uFF0C\u9ED8\u8BA4 none"
1417
+ ),
1418
+ background_style: z.string().optional().describe("\u5206\u680F\u80CC\u666F\u6837\u5F0F/\u989C\u8272"),
1419
+ action: ColumnActionSchema.optional().describe("\u5206\u680F\u70B9\u51FB\u8DF3\u8F6C\u914D\u7F6E")
1420
+ }).describe(
1421
+ "\u5206\u680F\u7EC4\u4EF6\uFF08column_set\uFF09\u3002\u5E76\u6392\u4FE1\u606F\u7B49\u5BBD\u6392\u5217\uFF1B\u56FE\u6807\u884C\u7528 auto+weighted \u4E24\u5217\u4E14 vertical_align=center"
1422
+ );
1423
+ var FormSchema = z.object({
1424
+ tag: z.literal("form").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A form"),
1425
+ /** 表单标识,卡片内唯一 */
1426
+ name: z.string().describe("\u8868\u5355\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00"),
1427
+ elements: z.lazy(() => z.array(getElementSchema())).describe("\u8868\u5355\u5185\u5D4C\u7EC4\u4EF6\u5217\u8868"),
1428
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1429
+ direction: DirectionSchema.optional().describe("\u8868\u5355\u5185\u5B50\u7EC4\u4EF6\u6392\u5217\u65B9\u5411"),
1430
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1431
+ padding: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5185\u8FB9\u8DDD"),
1432
+ horizontal_spacing: SpacingTokenSchema.optional().describe(
1433
+ "\u8868\u5355\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u95F4\u8DDD"
1434
+ ),
1435
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1436
+ "\u8868\u5355\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u5BF9\u9F50"
1437
+ ),
1438
+ vertical_align: VerticalAlignSchema.optional().describe(
1439
+ "\u8868\u5355\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u5BF9\u9F50"
1440
+ ),
1441
+ vertical_spacing: SpacingTokenSchema.optional().describe(
1442
+ "\u8868\u5355\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u95F4\u8DDD"
1443
+ )
1444
+ }).describe(
1445
+ "\u8868\u5355\u5BB9\u5668\uFF08form\uFF09\uFF1A\u5FC5\u987B\u5728 body.elements \u6839\u7EA7\uFF0C\u7981\u6B62\u5305\u8FDB column / interactive_container\uFF1B\u5185\u9700\u542B submit \u6309\u94AE"
1446
+ );
1447
+ var InteractiveContainerSchema = z.object({
1448
+ tag: z.literal("interactive_container").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A interactive_container"),
1449
+ behaviors: BehaviorsSchema.optional().describe(
1450
+ "\u8868\u5355\u5916\u5FC5\u586B\u3002\u7EAF\u5C55\u793A\u5F31\u5361\u7247\u611F\u65F6\u8BBE disabled:true \u4E14\u4E0D\u8981\u4F9D\u8D56\u70B9\u51FB\uFF1B\u771F\u6B63\u53EF\u70B9\u624D\u914D behaviors"
1451
+ ),
1452
+ elements: z.lazy(() => z.array(getElementSchema())).describe("\u5BB9\u5668\u5185\u5D4C\u7EC4\u4EF6\u5217\u8868\uFF1B\u4E0D\u652F\u6301 form\u3001table"),
1453
+ width: z.string().optional().describe("\u5BB9\u5668\u5BBD\u5EA6"),
1454
+ height: z.string().optional().describe("\u5BB9\u5668\u9AD8\u5EA6"),
1455
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1456
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1457
+ direction: DirectionSchema.optional().describe("\u5BB9\u5668\u5185\u5B50\u7EC4\u4EF6\u6392\u5217\u65B9\u5411"),
1458
+ horizontal_spacing: SpacingTokenSchema.optional().describe(
1459
+ "\u5BB9\u5668\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u95F4\u8DDD"
1460
+ ),
1461
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1462
+ "\u5BB9\u5668\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u5BF9\u9F50"
1463
+ ),
1464
+ vertical_spacing: SpacingTokenSchema.optional().describe(
1465
+ "\u5BB9\u5668\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u95F4\u8DDD"
1466
+ ),
1467
+ vertical_align: VerticalAlignSchema.optional().describe(
1468
+ "\u5BB9\u5668\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u5BF9\u9F50"
1469
+ ),
1470
+ background_style: z.string().optional().describe(
1471
+ "\u5BB9\u5668\u80CC\u666F\u6837\u5F0F/\u989C\u8272\u3002\u5F31\u5206\u7EC4\u53EF\u7528 grey-50/grey-100\uFF1B\u52FF\u5927\u9762\u79EF\u8272\u7CFB-50+\u8272\u7CFB-100 \u8FB9\u6846\u94FA\u5185\u5BB9\u533A"
1472
+ ),
1473
+ has_border: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u8FB9\u6846\uFF0C\u9ED8\u8BA4 false\uFF1B\u9ED8\u8BA4\u4E0D\u8981\u5F00\u8FB9\u6846\u5899"),
1474
+ border_color: ColorSchema.optional().describe("\u8FB9\u6846\u989C\u8272"),
1475
+ corner_radius: z.string().optional().describe("\u5706\u89D2\u534A\u5F84"),
1476
+ padding: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5185\u8FB9\u8DDD"),
1477
+ hover_tips: TipsTextSchema.optional().describe("\u60AC\u6D6E\u63D0\u793A"),
1478
+ disabled: z.boolean().optional().describe(
1479
+ "\u662F\u5426\u7981\u7528\u4EA4\u4E92\uFF0C\u9ED8\u8BA4 false\u3002\u7EAF\u5C55\u793A\u5BB9\u5668\u5199 true \u4E14\u4E0D\u914D\u6709\u6548\u70B9\u51FB\u884C\u4E3A"
1480
+ ),
1481
+ disabled_tips: TipsTextSchema.optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"),
1482
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1483
+ }).describe(
1484
+ "\u4EA4\u4E92\u5BB9\u5668\uFF08interactive_container\uFF09\uFF1A\u4EC5\u7528\u4E8E\u6574\u5757\u53EF\u70B9\u51FB/\u8425\u9500\u901A\u680F/\u5E76\u6392 KPI \u7B49\uFF1B\u9ED8\u8BA4 has_border=false\uFF0C\u52FF\u7ED9\u6BCF\u4E2A\u6587\u6848\u5757\u5957\u5E26\u8FB9\u6846\u5BB9\u5668"
1485
+ );
1486
+ var CollapsiblePanelHeaderSchema = z.object({
1487
+ title: MarkdownTextObjectSchema.optional().describe("\u9762\u677F\u6807\u9898"),
1488
+ background_color: ColorSchema.optional().describe("\u6807\u9898\u533A\u80CC\u666F\u8272"),
1489
+ /** fill / auto / auto_when_fold */
1490
+ width: z.string().optional().describe("\u6807\u9898\u533A\u5BBD\u5EA6\uFF1Afill / auto / auto_when_fold"),
1491
+ vertical_align: VerticalAlignSchema.optional().describe(
1492
+ "\u6807\u9898\u533A\u5185\u5782\u76F4\u5BF9\u9F50"
1493
+ ),
1494
+ padding: SpacingValueSchema.optional().describe("\u6807\u9898\u533A\u5185\u8FB9\u8DDD"),
1495
+ icon: IconSchema.optional().describe(
1496
+ "\u5C55\u5F00/\u6298\u53E0\u56FE\u6807\uFF1B\u63A8\u8350 down-bold_outlined\uFF0C\u7F6E\u53F3"
1497
+ ),
1498
+ icon_position: z.enum(["left", "right", "follow_text"]).optional().describe("\u56FE\u6807\u4F4D\u7F6E\uFF1Aleft / right / follow_text\uFF1B\u63A8\u8350 right"),
1499
+ icon_expanded_angle: z.union([
1500
+ z.literal(-180).describe("\u5C55\u5F00\u6001\u56FE\u6807\u65CB\u8F6C -180\xB0"),
1501
+ z.literal(-90).describe("\u5C55\u5F00\u6001\u56FE\u6807\u65CB\u8F6C -90\xB0"),
1502
+ z.literal(90).describe("\u5C55\u5F00\u6001\u56FE\u6807\u65CB\u8F6C 90\xB0"),
1503
+ z.literal(180).describe("\u5C55\u5F00\u6001\u56FE\u6807\u65CB\u8F6C 180\xB0")
1504
+ ]).optional().describe("\u5C55\u5F00\u72B6\u6001\u4E0B\u56FE\u6807\u65CB\u8F6C\u89D2\u5EA6\uFF1B\u63A8\u8350 -180"),
1505
+ /** JSON 示例中出现,字段表未正式列出 */
1506
+ position: z.string().optional().describe("\u6807\u9898\u4F4D\u7F6E\uFF08\u793A\u4F8B\u5B57\u6BB5\uFF0C\u5B57\u6BB5\u8868\u672A\u6B63\u5F0F\u5217\u51FA\uFF09")
1507
+ }).describe(
1508
+ "\u6298\u53E0\u9762\u677F\u6807\u9898\u533A\uFF1B\u63A8\u8350 icon=down-bold_outlined\u3001icon_position=right\u3001icon_expanded_angle=-180"
1509
+ );
1510
+ var CollapsiblePanelSchema = z.object({
1511
+ tag: z.literal("collapsible_panel").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A collapsible_panel"),
1512
+ header: CollapsiblePanelHeaderSchema.describe("\u6298\u53E0\u9762\u677F\u6807\u9898\u533A"),
1513
+ expanded: z.boolean().optional().describe("\u662F\u5426\u9ED8\u8BA4\u5C55\u5F00\uFF0C\u9ED8\u8BA4 false"),
1514
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1515
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1516
+ direction: DirectionSchema.optional().describe("\u9762\u677F\u5185\u5B50\u7EC4\u4EF6\u6392\u5217\u65B9\u5411"),
1517
+ horizontal_spacing: SpacingTokenSchema.optional().describe(
1518
+ "\u9762\u677F\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u95F4\u8DDD"
1519
+ ),
1520
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1521
+ "\u9762\u677F\u5185\u5B50\u7EC4\u4EF6\u6C34\u5E73\u5BF9\u9F50"
1522
+ ),
1523
+ vertical_spacing: SpacingTokenSchema.optional().describe(
1524
+ "\u9762\u677F\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u95F4\u8DDD"
1525
+ ),
1526
+ vertical_align: VerticalAlignSchema.optional().describe(
1527
+ "\u9762\u677F\u5185\u5B50\u7EC4\u4EF6\u5782\u76F4\u5BF9\u9F50"
1528
+ ),
1529
+ padding: SpacingValueSchema.optional().describe("\u9762\u677F\u5185\u8FB9\u8DDD"),
1530
+ background_color: ColorSchema.optional().describe(
1531
+ "\u9762\u677F\u80CC\u666F\u8272\uFF1B\u63A8\u8350 bg-white / white"
1532
+ ),
1533
+ border: z.object({
1534
+ color: ColorSchema.optional().describe("\u8FB9\u6846\u989C\u8272\uFF1B\u63A8\u8350 grey-200"),
1535
+ corner_radius: z.string().optional().describe("\u8FB9\u6846\u5706\u89D2\uFF1B\u63A8\u8350 8px")
1536
+ }).optional().describe('\u9762\u677F\u8FB9\u6846\u6837\u5F0F\uFF1B\u63A8\u8350 { color: "grey-200", corner_radius: "8px" }'),
1537
+ elements: z.lazy(() => z.array(getElementSchema())).optional().describe("\u9762\u677F\u6298\u53E0\u533A\u57DF\u5185\u5D4C\u7EC4\u4EF6\u5217\u8868")
1538
+ }).describe(
1539
+ "\u6298\u53E0\u9762\u677F\uFF08collapsible_panel\uFF09\u3002\u63A8\u8350\uFF1A\u767D\u5E95 + grey-200/8px \u8FB9\u6846 + \u53F3\u4FA7 down-bold_outlined + icon_expanded_angle=-180"
1540
+ );
1541
+ var DivSchema = z.object({
1542
+ tag: z.literal("div").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A div"),
1543
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1544
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1545
+ /** 宽度:fill / auto / [16,999]px,默认 fill */
1546
+ width: z.string().optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6\uFF1Afill / auto / [16,999]px\uFF0C\u9ED8\u8BA4 fill"),
1547
+ text: StyledTextObjectSchema.optional().describe("\u6587\u672C\u5185\u5BB9\u914D\u7F6E"),
1548
+ icon: IconSchema.optional().describe("\u6587\u672C\u524D\u7F00\u56FE\u6807")
1549
+ }).describe("\u666E\u901A\u6587\u672C\u7EC4\u4EF6\uFF08div\uFF09");
1550
+ var ImageSchema = z.object({
1551
+ tag: z.literal("img").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A img"),
1552
+ /** 图片 key(上传图片接口返回) */
1553
+ img_key: z.string().describe(
1554
+ "\u56FE\u7247 key\uFF08\u4E0A\u4F20\u56FE\u7247\u63A5\u53E3\u8FD4\u56DE\uFF09\uFF1B\u7981\u6B62\u81C6\u9020\u3002\u65E0\u771F\u5B9E\u8D44\u6E90\u65F6\u6539\u7528 markdown/plain_text/standard_icon"
1555
+ ),
1556
+ /** 图片描述(无障碍/加载失败时展示) */
1557
+ alt: z.object({
1558
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1559
+ content: z.string().describe("\u56FE\u7247\u63CF\u8FF0\u6587\u6848")
1560
+ }).describe("\u56FE\u7247\u63CF\u8FF0\uFF08\u65E0\u969C\u788D/\u52A0\u8F7D\u5931\u8D25\u65F6\u5C55\u793A\uFF09"),
1561
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1562
+ margin: SpacingValueSchema.optional().describe(
1563
+ '\u7EC4\u4EF6\u5916\u8FB9\u8DDD\uFF1B\u901A\u680F\u914D\u56FE\u8D34\u8FB9\u53EF\u7528\u8D1F\u6C34\u5E73 margin\uFF08\u5982 "4px -12px"\uFF09'
1564
+ ),
1565
+ title: z.object({
1566
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1567
+ content: z.string().describe("\u56FE\u7247\u6807\u9898\u6587\u6848")
1568
+ }).optional().describe("\u56FE\u7247\u6807\u9898"),
1569
+ corner_radius: z.string().optional().describe("\u5706\u89D2\u534A\u5F84\uFF0C\u5982 8px \u6216 50%"),
1570
+ scale_type: z.enum(["crop_center", "crop_top", "fit_horizontal"]).optional().describe(
1571
+ "\u88C1\u526A/\u7F29\u653E\u65B9\u5F0F\uFF0C\u9ED8\u8BA4 crop_center\u3002\u5185\u5BB9\u56FE/\u622A\u56FE/\u901A\u680F\u914D\u56FE\u7528 fit_horizontal\uFF1Bcrop_center/crop_top \u4EC5\u7528\u4E8E\u7F29\u7565\u56FE/\u5C0F\u5934\u50CF\u5F0F\u914D\u56FE"
1572
+ ),
1573
+ /** stretch / large / medium / small / tiny / "Wpx Hpx" */
1574
+ size: z.string().optional().describe(
1575
+ '\u56FE\u7247\u5C3A\u5BF8\uFF1Astretch / large / medium / small / tiny\uFF0C\u6216\u81EA\u5B9A\u4E49 "Wpx Hpx"\u3002\u4EC5\u5BF9 crop_center/crop_top \u751F\u6548\uFF1Bfit_horizontal \u65F6\u4E0D\u8981\u5199 size'
1576
+ ),
1577
+ transparent: z.boolean().optional().describe("\u662F\u5426\u900F\u660E\u5E95\u8272\uFF0C\u9ED8\u8BA4 false"),
1578
+ preview: z.boolean().optional().describe("\u70B9\u51FB\u540E\u662F\u5426\u652F\u6301\u5927\u56FE\u9884\u89C8\uFF0C\u9ED8\u8BA4 true"),
1579
+ /** @deprecated 历史字段 */
1580
+ mode: z.string().optional().describe("\u5386\u53F2\u5B57\u6BB5\uFF0C\u5DF2\u5E9F\u5F03"),
1581
+ custom_width: z.number().optional().describe("\u5386\u53F2\u5B57\u6BB5\uFF1A\u81EA\u5B9A\u4E49\u5BBD\u5EA6\uFF08px\uFF09"),
1582
+ compact_width: z.boolean().optional().describe("\u5386\u53F2\u5B57\u6BB5\uFF1A\u662F\u5426\u7D27\u51D1\u5BBD\u5EA6")
1583
+ }).describe(
1584
+ "\u56FE\u7247\u7EC4\u4EF6\uFF08img\uFF09\u3002\u5185\u5BB9\u56FE/\u622A\u56FE\u7528 scale_type=fit_horizontal \u4E14\u4E0D\u5199 size\uFF1B\u7F29\u7565\u56FE\u624D\u7528 crop_* + size"
1585
+ );
1586
+ var ImgCombinationSchema = z.object({
1587
+ tag: z.literal("img_combination").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A img_combination"),
1588
+ combination_mode: z.enum(["double", "triple", "bisect", "trisect"]).describe(
1589
+ "\u6DF7\u6392\u6A21\u5F0F\uFF1Adouble\uFF08\u53CC\u56FE\uFF09/ triple\uFF08\u4E09\u56FE\uFF09/ bisect\uFF08\u7B49\u5206\u4E24\u5217\uFF09/ trisect\uFF08\u7B49\u5206\u4E09\u5217\uFF09"
1590
+ ),
1591
+ img_list: z.array(
1592
+ z.object({
1593
+ img_key: z.string().describe("\u56FE\u7247 key\uFF08\u4E0A\u4F20\u56FE\u7247\u63A5\u53E3\u8FD4\u56DE\uFF09")
1594
+ }).describe("\u6DF7\u6392\u4E2D\u7684\u5355\u5F20\u56FE\u7247")
1595
+ ).describe("\u6DF7\u6392\u56FE\u7247\u5217\u8868"),
1596
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1597
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1598
+ combination_transparent: z.boolean().optional().describe("\u6DF7\u6392\u533A\u57DF\u662F\u5426\u900F\u660E\u5E95\u8272\uFF0C\u9ED8\u8BA4 false"),
1599
+ corner_radius: z.string().optional().describe("\u56FE\u7247\u5706\u89D2\u534A\u5F84")
1600
+ }).describe("\u591A\u56FE\u6DF7\u6392\u7EC4\u4EF6\uFF08img_combination\uFF09");
1601
+ var PersonSchema = z.object({
1602
+ tag: z.literal("person").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A person"),
1603
+ /** open_id / user_id;优先 ou_,避免 on_ */
1604
+ user_id: z.string().describe(
1605
+ "\u4EBA\u5458 ID\uFF1A\u4F18\u5148 open_id(ou_) \u6216 user_id\uFF1B\u4E0D\u8981\u7528 union_id(on_)\u3002\u7981\u6B62\u81C6\u9020 ID"
1606
+ ),
1607
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1608
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1609
+ size: z.enum(["extra_small", "small", "medium", "large"]).optional().describe("\u4EBA\u5458\u7EC4\u4EF6\u5C3A\u5BF8\uFF0C\u9ED8\u8BA4 medium"),
1610
+ show_avatar: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u5934\u50CF\uFF0C\u9ED8\u8BA4 true"),
1611
+ show_name: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u59D3\u540D\uFF0C\u9ED8\u8BA4 true"),
1612
+ style: z.enum(["normal", "capsule"]).optional().describe("\u5C55\u793A\u6837\u5F0F\uFF1Anormal / capsule\uFF0C\u9ED8\u8BA4 normal")
1613
+ }).describe(
1614
+ "\u4EBA\u5458\u7EC4\u4EF6\uFF08person\uFF09\uFF1A\u4EC5\u5C55\u793A\uFF0C\u4E0D\u53D1\u901A\u77E5\u3002\u63D0\u793A\u8BCD\u8BF4\u4F5C\u8005/\u8D1F\u8D23\u4EBA/\u540D\u5355\u65F6\u7528\uFF1B\u8981 @/\u901A\u77E5\u6539\u7528 markdown <at>"
1615
+ );
1616
+ var PersonListSchema = z.object({
1617
+ tag: z.literal("person_list").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A person_list"),
1618
+ persons: z.array(
1619
+ z.object({
1620
+ id: z.string().describe(
1621
+ "\u4EBA\u5458 ID\uFF1A\u4F18\u5148 open_id(ou_) \u6216 user_id\uFF1B\u4E0D\u8981\u7528 union_id(on_)\u3002\u7981\u6B62\u81C6\u9020 ID"
1622
+ )
1623
+ }).describe("\u4EBA\u5458\u5217\u8868\u9879")
1624
+ ).describe("\u4EBA\u5458\u5217\u8868"),
1625
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1626
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1627
+ drop_invalid_user_id: z.boolean().optional().describe("\u662F\u5426\u4E22\u5F03\u65E0\u6548\u7684 user_id\uFF0C\u9ED8\u8BA4 false"),
1628
+ lines: z.number().int().optional().describe("\u6700\u5927\u663E\u793A\u884C\u6570\uFF0C\u8D85\u51FA\u7701\u7565"),
1629
+ show_name: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u59D3\u540D\uFF0C\u9ED8\u8BA4 true"),
1630
+ show_avatar: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u5934\u50CF\uFF0C\u9ED8\u8BA4 true"),
1631
+ size: z.enum(["extra_small", "small", "medium", "large"]).optional().describe("\u4EBA\u5458\u5C3A\u5BF8\uFF0C\u9ED8\u8BA4 medium"),
1632
+ icon: IconSchema.optional().describe("\u5217\u8868\u524D\u7F00\u56FE\u6807"),
1633
+ ud_icon: UdIconSchema.optional().describe(
1634
+ "\u5386\u53F2\u524D\u7F00\u56FE\u6807\uFF08ud_icon\uFF09\uFF1B\u4E0E icon \u540C\u65F6\u5B58\u5728\u65F6\u4EE5 icon \u4E3A\u51C6"
1635
+ )
1636
+ }).describe(
1637
+ "\u4EBA\u5458\u5217\u8868\u7EC4\u4EF6\uFF08person_list\uFF09\uFF1A\u4EC5\u5C55\u793A\u591A\u4EBA\uFF0C\u4E0D\u53D1\u901A\u77E5\u3002\u591A\u884C\u591A\u4EBA\u540D\u5355\u4E5F\u53EF\u7528 table \u7684 persons \u5217"
1638
+ );
1639
+ var ChartSchema = z.object({
1640
+ tag: z.literal("chart").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A chart"),
1641
+ chart_spec: z.record(z.string(), z.unknown()).describe("\u56FE\u8868\u914D\u7F6E\uFF0C\u9075\u5FAA VChart \u89C4\u8303"),
1642
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1643
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1644
+ aspect_ratio: z.enum(["1:1", "2:1", "4:3", "16:9"]).optional().describe("\u56FE\u8868\u5BBD\u9AD8\u6BD4\uFF0C\u9ED8\u8BA4 16:9"),
1645
+ color_theme: z.enum(["brand", "rainbow", "complementary", "converse", "primary"]).optional().describe("\u56FE\u8868\u914D\u8272\u4E3B\u9898\uFF0C\u9ED8\u8BA4 brand"),
1646
+ preview: z.boolean().optional().describe("\u70B9\u51FB\u540E\u662F\u5426\u652F\u6301\u5927\u56FE\u9884\u89C8\uFF0C\u9ED8\u8BA4 true"),
1647
+ /** auto 或 [1,999]px */
1648
+ height: z.string().optional().describe("\u56FE\u8868\u9AD8\u5EA6\uFF1Aauto \u6216 [1,999]px")
1649
+ }).describe(
1650
+ "\u56FE\u8868\u7EC4\u4EF6\uFF08chart\uFF09\u3002\u65C1\u4FA7\u8BF4\u660E\u7C7B icon \u53EF\u7528 info_outlined\uFF1B\u56FE\u8868\u76F8\u5173 icon \u63A8\u8350 insert-chart_outlined / sheet-*_outlined / data-sheet_outlined \u7B49\u679A\u4E3E\u5185 token"
1651
+ );
1652
+ var TableHeaderStyleSchema = z.object({
1653
+ text_align: HorizontalAlignSchema.optional().describe("\u8868\u5934\u6587\u672C\u5BF9\u9F50\u65B9\u5F0F"),
1654
+ text_size: z.enum(["normal", "heading"]).optional().describe("\u8868\u5934\u5B57\u53F7\uFF1Anormal / heading"),
1655
+ background_style: z.enum(["none", "grey"]).optional().describe("\u8868\u5934\u80CC\u666F\u6837\u5F0F\uFF1Anone / grey"),
1656
+ text_color: z.enum(["default", "grey"]).optional().describe("\u8868\u5934\u6587\u5B57\u989C\u8272\uFF1Adefault / grey"),
1657
+ bold: z.boolean().optional().describe("\u8868\u5934\u6587\u5B57\u662F\u5426\u52A0\u7C97"),
1658
+ lines: z.number().int().positive().optional().describe("\u8868\u5934\u6700\u5927\u663E\u793A\u884C\u6570")
1659
+ }).describe("\u8868\u683C\u8868\u5934\u6837\u5F0F");
1660
+ var TableColumnSchema = z.object({
1661
+ name: z.string().describe("\u5217\u7684\u552F\u4E00\u6807\u8BC6\uFF0C\u5BF9\u5E94 rows \u4E2D\u7684\u5B57\u6BB5\u540D"),
1662
+ data_type: z.enum(["text", "lark_md", "options", "number", "persons", "date", "markdown"]).optional().describe(
1663
+ "\u5217\u6570\u636E\u7C7B\u578B\uFF1Atext / lark_md / options / number / persons / date / markdown\u3002Owner/\u8D1F\u8D23\u4EBA/\u8DDF\u8FDB\u4EBA\u7B49\u4EBA\u5458\u5217\u5FC5\u987B\u7528 persons\uFF0C\u884C\u503C\u4E3A\u88F8 ou_/user_id\uFF08\u6216\u6570\u7EC4\uFF09\uFF1B\u7981\u6B62\u7528 text/lark_md \u585E\u4EBA\u5458 ID\uFF0C\u4E5F\u7981\u6B62\u5728\u5355\u5143\u683C\u5199 <person>/<at>"
1664
+ ),
1665
+ display_name: z.string().optional().describe("\u5217\u5C55\u793A\u540D\u79F0"),
1666
+ /** auto / px / % */
1667
+ width: z.string().optional().describe("\u5217\u5BBD\uFF1Aauto\u3001\u56FA\u5B9A px \u6216\u767E\u5206\u6BD4"),
1668
+ vertical_align: VerticalAlignSchema.optional().describe("\u5355\u5143\u683C\u5782\u76F4\u5BF9\u9F50"),
1669
+ horizontal_align: HorizontalAlignSchema.optional().describe(
1670
+ "\u5355\u5143\u683C\u6C34\u5E73\u5BF9\u9F50"
1671
+ ),
1672
+ /** number 列格式化 */
1673
+ format: z.record(z.string(), z.unknown()).optional().describe("number \u5217\u7684\u683C\u5F0F\u5316\u914D\u7F6E"),
1674
+ date_format: z.string().optional().describe("date \u5217\u7684\u65E5\u671F\u683C\u5F0F\uFF0C\u5982 yyyy/MM/dd")
1675
+ }).describe("\u8868\u683C\u5217\u5B9A\u4E49");
1676
+ var TableSchema = z.object({
1677
+ tag: z.literal("table").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A table"),
1678
+ columns: z.array(TableColumnSchema).describe("\u8868\u683C\u5217\u5B9A\u4E49\u5217\u8868"),
1679
+ rows: z.array(z.record(z.string(), z.unknown())).describe(
1680
+ "\u8868\u683C\u884C\u6570\u636E\uFF0C\u5BF9\u8C61 key \u5BF9\u5E94 columns.name\u3002persons \u5217\u503C\u4E3A\u88F8\u4EBA\u5458 ID \u5B57\u7B26\u4E32\u6216\u6570\u7EC4\uFF0C\u52FF\u5199 <person>/<at>"
1681
+ ),
1682
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1683
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1684
+ page_size: z.number().int().min(1).max(10).optional().describe("\u6BCF\u9875\u663E\u793A\u884C\u6570\uFF0C\u53D6\u503C 1\u201310\uFF0C\u9ED8\u8BA4 5"),
1685
+ row_height: z.string().optional().describe("\u884C\u9AD8\uFF0C\u5982 low / middle / high \u6216\u81EA\u5B9A\u4E49 px"),
1686
+ row_max_height: z.string().optional().describe("\u884C\u6700\u5927\u9AD8\u5EA6"),
1687
+ freeze_first_column: z.boolean().optional().describe("\u662F\u5426\u51BB\u7ED3\u9996\u5217\uFF0C\u9ED8\u8BA4 false"),
1688
+ header_style: TableHeaderStyleSchema.optional().describe("\u8868\u5934\u6837\u5F0F")
1689
+ }).describe(
1690
+ "\u8868\u683C\u7EC4\u4EF6\uFF08table\uFF09\uFF1A\u5FC5\u987B\u653E\u5728 body.elements \u6839\u7EA7\uFF0C\u7981\u6B62\u5305\u8FDB column / interactive_container \u7B49\u5BB9\u5668"
1691
+ );
1692
+ var HrSchema = z.object({
1693
+ tag: z.literal("hr").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A hr"),
1694
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1695
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD")
1696
+ }).describe("\u5206\u5272\u7EBF\u7EC4\u4EF6\uFF08hr\uFF09");
1697
+ var AudioSchema = z.object({
1698
+ tag: z.literal("audio").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A audio"),
1699
+ file_key: z.string().describe("\u97F3\u9891\u6587\u4EF6 key"),
1700
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1701
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1702
+ i18n_file_key: z.record(z.string(), z.string()).optional().describe("\u591A\u8BED\u8A00\u97F3\u9891\u6587\u4EF6 key \u6620\u5C04"),
1703
+ audio_id: z.string().optional().describe("\u97F3\u9891\u5143\u7D20\u6807\u8BC6\uFF0C\u7528\u4E8E\u533A\u5206\u591A\u4E2A\u97F3\u9891"),
1704
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\u97F3\u9891\u64AD\u653E\uFF0C\u9ED8\u8BA4 false"),
1705
+ disabled_tips: z.object({
1706
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1707
+ content: z.string().describe("\u7981\u7528\u63D0\u793A\u6587\u6848")
1708
+ }).optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"),
1709
+ show_progress_bar: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u8FDB\u5EA6\u6761\uFF0C\u9ED8\u8BA4 true"),
1710
+ show_time: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u65F6\u95F4\uFF0C\u9ED8\u8BA4 true"),
1711
+ time_display: z.enum(["default", "both"]).optional().describe("\u65F6\u95F4\u5C55\u793A\u65B9\u5F0F\uFF1Adefault / both"),
1712
+ time_position: z.enum(["end", "start", "both_sides"]).optional().describe("\u65F6\u95F4\u4F4D\u7F6E\uFF1Aend / start / both_sides"),
1713
+ border: z.object({
1714
+ color: ColorSchema.optional().describe("\u8FB9\u6846\u989C\u8272"),
1715
+ corner_radius: z.string().optional().describe("\u8FB9\u6846\u5706\u89D2")
1716
+ }).optional().describe("\u8FB9\u6846\u6837\u5F0F"),
1717
+ style: z.enum(["normal", "flat", "speak"]).optional().describe("\u97F3\u9891\u6837\u5F0F\uFF1Anormal / flat / speak\uFF0C\u9ED8\u8BA4 normal"),
1718
+ padding: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5185\u8FB9\u8DDD"),
1719
+ background_style: z.string().optional().describe("\u80CC\u666F\u6837\u5F0F"),
1720
+ fill_color: ColorSchema.optional().describe("\u586B\u5145\u989C\u8272"),
1721
+ width: z.string().optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1722
+ fallback: z.union([
1723
+ z.literal("drop").describe("\u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u65F6\u4E22\u5F03\u8BE5\u7EC4\u4EF6"),
1724
+ z.object({
1725
+ tag: z.literal("fallback_text").describe("\u964D\u7EA7\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A fallback_text"),
1726
+ text: z.object({
1727
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1728
+ content: z.string().describe("\u964D\u7EA7\u6587\u6848\u5185\u5BB9")
1729
+ }).describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848")
1730
+ }).describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848\u5BF9\u8C61")
1731
+ ]).optional().describe(
1732
+ "\u964D\u7EA7\u914D\u7F6E\uFF1Adrop \u4E22\u5F03\u7EC4\u4EF6\uFF0C\u6216 fallback_text \u81EA\u5B9A\u4E49\u6587\u6848\uFF1B\u7701\u7565\u5219\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u6587\u6848"
1733
+ )
1734
+ }).describe("\u97F3\u9891\u7EC4\u4EF6\uFF08audio\uFF09");
1735
+ var VideoSchema = z.object({
1736
+ tag: z.literal("video").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A video"),
1737
+ file_key: z.string().describe("\u89C6\u9891\u6587\u4EF6 key"),
1738
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1739
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1740
+ i18n_file_key: z.record(z.string(), z.string()).optional().describe("\u591A\u8BED\u8A00\u89C6\u9891\u6587\u4EF6 key \u6620\u5C04"),
1741
+ enable_download: z.boolean().optional().describe("\u662F\u5426\u5141\u8BB8\u4E0B\u8F7D\u89C6\u9891\uFF0C\u9ED8\u8BA4 false"),
1742
+ show_time: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u65F6\u957F\uFF0C\u9ED8\u8BA4 true"),
1743
+ cover: z.object({
1744
+ img_key: z.string().optional().describe("\u5C01\u9762\u56FE\u7247 key"),
1745
+ i18n_img_key: z.record(z.string(), z.string()).optional().describe("\u591A\u8BED\u8A00\u5C01\u9762\u56FE\u7247 key \u6620\u5C04")
1746
+ }).optional().describe("\u89C6\u9891\u5C01\u9762\u914D\u7F6E"),
1747
+ hover_tips: z.object({
1748
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1749
+ content: z.string().describe("\u60AC\u6D6E\u63D0\u793A\u6587\u6848")
1750
+ }).optional().describe("\u60AC\u6D6E\u63D0\u793A"),
1751
+ fallback: z.union([
1752
+ z.literal("drop").describe("\u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u65F6\u4E22\u5F03\u8BE5\u7EC4\u4EF6"),
1753
+ z.object({
1754
+ tag: z.literal("fallback_text").describe("\u964D\u7EA7\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A fallback_text"),
1755
+ text: z.object({
1756
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1757
+ content: z.string().describe("\u964D\u7EA7\u6587\u6848\u5185\u5BB9")
1758
+ }).describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848")
1759
+ }).describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848\u5BF9\u8C61")
1760
+ ]).optional().describe(
1761
+ "\u964D\u7EA7\u914D\u7F6E\uFF1Adrop \u4E22\u5F03\u7EC4\u4EF6\uFF0C\u6216 fallback_text \u81EA\u5B9A\u4E49\u6587\u6848\uFF1B\u7701\u7565\u5219\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u6587\u6848"
1762
+ )
1763
+ }).describe("\u89C6\u9891\u7EC4\u4EF6\uFF08video\uFF09");
1764
+ var MarkdownTextSizeEnumSchema = z.enum([
1765
+ "heading-0",
1766
+ "heading-1",
1767
+ "heading-2",
1768
+ "heading-3",
1769
+ "heading-4",
1770
+ "heading",
1771
+ "normal",
1772
+ "notation",
1773
+ "xxxx-large",
1774
+ "xxx-large",
1775
+ "xx-large",
1776
+ "x-large",
1777
+ "large",
1778
+ "medium",
1779
+ "small",
1780
+ "x-small"
1781
+ ]).describe(
1782
+ "\u5B98\u65B9\u5B57\u53F7\u679A\u4E3E\u3002heading-* / normal / notation\uFF0C\u6216 xxxx-large \u2026 x-small\uFF08\u7EA6 10\u201330px\uFF09"
1783
+ );
1784
+ var MarkdownTextSizePixelSchema = z.string().regex(/^(1[0-9]|2[0-9]|3[0-9]|40)px$/, {
1785
+ error: '\u50CF\u7D20\u5B57\u53F7\u987B\u4E3A 10px\u201340px\uFF0C\u4F8B\u5982 "14px"\u3001"28px"'
1786
+ }).describe("\u81EA\u5B9A\u4E49\u50CF\u7D20\u5B57\u53F7\uFF0C\u652F\u6301 10px\u201340px");
1787
+ var MarkdownTextSizeCustomKeySchema = z.string().min(1).refine((value) => !/^\d+px$/.test(value), {
1788
+ message: "\u50CF\u7D20\u5B57\u53F7\u8BF7\u4F7F\u7528 10px\u201340px\uFF1B\u5176\u5B83 px \u503C\u4E0D\u5408\u6CD5"
1789
+ }).describe("config.style.text_size \u81EA\u5B9A\u4E49 key\uFF0C\u5982 cus-0");
1790
+ var MarkdownTextSizeSchema = z.union([
1791
+ MarkdownTextSizeEnumSchema,
1792
+ MarkdownTextSizePixelSchema,
1793
+ MarkdownTextSizeCustomKeySchema
1794
+ ]).describe(
1795
+ "\u6587\u672C\u5927\u5C0F\uFF1A\u5B98\u65B9\u679A\u4E3E\u300110px\u201340px \u50CF\u7D20\u503C\uFF0C\u6216 config.style.text_size \u81EA\u5B9A\u4E49 key"
1796
+ );
1797
+
1798
+ // src/markdown/component.ts
1799
+ var MarkdownHrefSchema = z.record(z.string(), MultiUrlSchema).describe(
1800
+ "\u5DEE\u5F02\u5316\u8DF3\u8F6C\u6620\u5C04\uFF08\u65E7\u8BED\u6CD5\uFF09\u3002content \u4E2D\u4F7F\u7528 [\u6587\u6848]($key) \u5F15\u7528\uFF1BJSON 2.0 \u5EFA\u8BAE\u6539\u7528 <link>"
1801
+ );
1802
+ var MarkdownSchema = z.object({
1803
+ tag: z.literal("markdown").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A markdown"),
1804
+ content: z.string().describe(
1805
+ "Markdown \u6587\u672C\u3002\u5206\u533A\u6807\u9898\u9ED8\u8BA4\u5199\u6210 **\u5206\u533A\u540D**\uFF08\u52FF\u7528 # \u6807\u9898\u3001\u52FF\u9ED8\u8BA4\u8272\u6761\u4E28\uFF09\u3002\u5B57\u6BB5\u6807\u7B7E\u7528 <font color='grey'>\uFF1B\u77ED\u6807\u8BC6\u7528 <text_tag>\u3002\u4EC5\u5C55\u793A\u4EBA\u5458\u7528 <person>\uFF0C\u8981\u901A\u77E5\u7528 <at>\uFF1B\u4E8C\u8005\u52FF\u5305\u8FDB <font>\u3002\u652F\u6301 at/person/link/text_tag/number_tag/local_datetime/font/audio \u7B49"
1806
+ ),
1807
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1808
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD\uFF0C\u9ED8\u8BA4 0"),
1809
+ text_align: HorizontalAlignSchema.optional().describe(
1810
+ "\u6587\u672C\u5BF9\u9F50\u65B9\u5F0F\uFF0C\u9ED8\u8BA4 left"
1811
+ ),
1812
+ text_size: MarkdownTextSizeSchema.optional().describe(
1813
+ "\u6587\u672C\u5927\u5C0F\uFF0C\u9ED8\u8BA4 normal\uFF1B\u53EF\u4E3A\u5B98\u65B9\u679A\u4E3E\u6216\u81EA\u5B9A\u4E49 text_size key\u3002\u6807\u7B7E/\u8F85\u52A9\u8BF4\u660E\u53EF\u7528 notation\uFF0C\u6570\u503C\u53EF\u7528 heading"
1814
+ ),
1815
+ icon: IconSchema.optional().describe(
1816
+ "\u6587\u672C\u524D\u7F00\u56FE\u6807\uFF1B\u4E0E\u6587\u5185 emoji \u4E8C\u9009\u4E00\uFF0C\u4E0D\u8981\u53E0\u7528\u3002\u56FE\u6807\u989C\u8272\u5E94\u4E0E\u63CF\u8FF0\u7684\u72B6\u6001\u6587\u5B57\u4E00\u81F4"
1817
+ ),
1818
+ href: MarkdownHrefSchema.optional().describe(
1819
+ "\u65E7\u7248\u5DEE\u5F02\u5316\u8DF3\u8F6C\u6620\u5C04\uFF1BJSON 2.0 \u5EFA\u8BAE\u4F7F\u7528 <link> \u66FF\u4EE3"
1820
+ )
1821
+ }).describe(
1822
+ "\u5BCC\u6587\u672C\uFF08Markdown\uFF09\u7EC4\u4EF6\u3002\u6B63\u6587\u9ED8\u8BA4\u76F4\u63A5\u653E\u5728 body.elements\uFF1B\u5206\u533A\u7528 **\u52A0\u7C97** \u5C0F\u6807\u9898\u8D77\u5934"
1823
+ );
1824
+ var ButtonSchema = z.object({
1825
+ tag: z.literal("button").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A button"),
1826
+ /** 交互行为;表单外必填,form 内可省略 */
1827
+ behaviors: BehaviorsSchema.optional().describe(
1828
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF08open_url / callback\uFF09\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\u3002\u7981\u6B62\u7528 multi_url \u6216\u9876\u5C42 value"
1829
+ ),
1830
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1831
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1832
+ type: z.enum([
1833
+ "default",
1834
+ "primary",
1835
+ "danger",
1836
+ "text",
1837
+ "primary_text",
1838
+ "danger_text",
1839
+ "primary_filled",
1840
+ "danger_filled",
1841
+ "laser"
1842
+ ]).optional().describe(
1843
+ "\u6309\u94AE\u6837\u5F0F\u7C7B\u578B\uFF0C\u9ED8\u8BA4 default\u3002\u4E3B\u64CD\u4F5C\u4F18\u5148 primary_filled\uFF1B\u6B21\u6309\u94AE\u7528 default / primary"
1844
+ ),
1845
+ size: z.enum(["tiny", "small", "medium", "large"]).optional().describe("\u6309\u94AE\u5C3A\u5BF8\uFF0C\u9ED8\u8BA4 medium"),
1846
+ width: InteractiveWidthSchema.optional().describe(
1847
+ "\u6309\u94AE\u5BBD\u5EA6\u3002\u5E76\u6392\u6EE1\u5BBD\u5747\u5206\u65F6\u7528 fill\uFF08\u5217\u987B width=weighted\uFF09\uFF1B\u5185\u5BB9\u81EA\u9002\u5E94\u65F6\u4E0D\u5199 width\uFF08\u5217\u987B width=auto\uFF09\u3002\u7981\u6B62 weighted \u5217\u5305\u9ED8\u8BA4\u5BBD\u6309\u94AE"
1848
+ ),
1849
+ text: z.object({
1850
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1851
+ content: z.string().max(100).describe("\u6309\u94AE\u6587\u6848\uFF0C\u6700\u591A 100 \u5B57\u7B26\uFF1B\u5E94\u76F4\u63A5\u8BF4\u660E\u52A8\u4F5C")
1852
+ }).optional().describe("\u6309\u94AE\u6587\u6848"),
1853
+ icon: IconSchema.optional().describe("\u6309\u94AE\u524D\u7F00\u56FE\u6807"),
1854
+ hover_tips: TipsTextSchema.optional().describe("\u60AC\u6D6E\u63D0\u793A"),
1855
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\u6309\u94AE\uFF0C\u9ED8\u8BA4 false"),
1856
+ disabled_tips: TipsTextSchema.optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"),
1857
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E"),
1858
+ /** 表单内必填:表单项标识,卡片内唯一 */
1859
+ name: z.string().optional().describe("\u8868\u5355\u5185\u5FC5\u586B\uFF1A\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00"),
1860
+ /** 表单内提交/重置按钮必填 */
1861
+ form_action_type: z.enum(["submit", "reset"]).optional().describe("\u8868\u5355\u5185\u63D0\u4EA4/\u91CD\u7F6E\u6309\u94AE\u5FC5\u586B\uFF1Asubmit / reset"),
1862
+ /** @deprecated 历史交互类型字段 */
1863
+ action_type: z.enum(["link", "request", "multi", "form_submit", "form_reset"]).optional().describe("\u5386\u53F2\u4EA4\u4E92\u7C7B\u578B\u5B57\u6BB5\uFF0C\u5DF2\u5E9F\u5F03")
1864
+ }).describe(
1865
+ "\u6309\u94AE\u7EC4\u4EF6\uFF08button\uFF09\u3002\u5355\u6309\u94AE\u53EF\u76F4\u63A5\u653E body.elements\uFF1B\u5E76\u6392\u65F6\u5217\u5BBD\u4E0E\u6309\u94AE width \u5FC5\u987B\u6574\u884C\u914D\u5957\u4E00\u81F4"
1866
+ );
1867
+ var InputSchema = z.object({
1868
+ tag: z.literal("input").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A input"),
1869
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1870
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1871
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
1872
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
1873
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
1874
+ disabled_tips: TipsTextSchema.optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"),
1875
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
1876
+ default_value: z.string().optional().describe("\u8F93\u5165\u6846\u9ED8\u8BA4\u503C"),
1877
+ width: InteractiveWidthSchema.optional().describe("\u8F93\u5165\u6846\u5BBD\u5EA6"),
1878
+ behaviors: BehaviorsSchema.optional().describe("\u4EA4\u4E92\u884C\u4E3A\u5217\u8868"),
1879
+ max_length: z.number().int().min(1).max(1e3).optional().describe("\u6700\u5927\u8F93\u5165\u957F\u5EA6\uFF0C\u53D6\u503C 1\u20131000\uFF0C\u9ED8\u8BA4 1000"),
1880
+ input_type: z.enum(["text", "multiline_text", "password"]).optional().describe("\u8F93\u5165\u7C7B\u578B\uFF1Atext / multiline_text / password\uFF0C\u9ED8\u8BA4 text"),
1881
+ show_icon: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u524D\u7F00\u56FE\u6807\uFF08password \u7C7B\u578B\uFF09\uFF0C\u9ED8\u8BA4 true"),
1882
+ rows: z.number().int().positive().optional().describe("\u591A\u884C\u8F93\u5165\u7684\u9ED8\u8BA4\u884C\u6570"),
1883
+ auto_resize: z.boolean().optional().describe("\u591A\u884C\u8F93\u5165\u662F\u5426\u968F\u5185\u5BB9\u81EA\u52A8\u589E\u9AD8"),
1884
+ max_rows: z.number().int().positive().optional().describe("\u591A\u884C\u8F93\u5165\u81EA\u52A8\u589E\u9AD8\u7684\u6700\u5927\u884C\u6570"),
1885
+ label: TipsTextSchema.optional().describe("\u8F93\u5165\u6846\u6807\u7B7E\u6587\u6848"),
1886
+ label_position: z.enum(["top", "left"]).optional().describe("\u6807\u7B7E\u4F4D\u7F6E\uFF1Atop / left\uFF0C\u9ED8\u8BA4 top"),
1887
+ /** @deprecated 历史回传字段 */
1888
+ value: z.union([z.string(), z.record(z.string(), z.unknown())]).optional().describe("\u5386\u53F2\u56DE\u4F20\u5B57\u6BB5\uFF0C\u5DF2\u5E9F\u5F03"),
1889
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1890
+ }).describe("\u8F93\u5165\u6846\u7EC4\u4EF6\uFF08input\uFF09\uFF0C\u5982\u679C\u9700\u8981checkbox\uFF0C\u8BF7\u4F7F\u7528checker\u7EC4\u4EF6");
1891
+ var OverflowSchema = z.object({
1892
+ tag: z.literal("overflow").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A overflow"),
1893
+ options: z.array(
1894
+ z.object({
1895
+ text: TipsTextSchema.optional().describe("\u9009\u9879\u6587\u6848"),
1896
+ multi_url: z.object({
1897
+ url: z.string().optional().describe("\u9ED8\u8BA4\u8DF3\u8F6C\u94FE\u63A5"),
1898
+ pc_url: z.string().optional().describe("PC \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
1899
+ ios_url: z.string().optional().describe("iOS \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
1900
+ android_url: z.string().optional().describe("Android \u7AEF\u8DF3\u8F6C\u94FE\u63A5")
1901
+ }).optional().describe("\u9009\u9879\u591A\u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
1902
+ value: z.string().optional().describe("\u9009\u9879\u56DE\u4F20\u503C")
1903
+ }).describe("\u6298\u53E0\u6309\u94AE\u7EC4\u9009\u9879")
1904
+ ).describe("\u6298\u53E0\u6309\u94AE\u7EC4\u9009\u9879\u5217\u8868"),
1905
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1906
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1907
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1908
+ behaviors: BehaviorsSchema.optional().describe("\u4EA4\u4E92\u884C\u4E3A\u5217\u8868"),
1909
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1910
+ }).describe("\u6298\u53E0\u6309\u94AE\u7EC4\uFF08overflow\uFF09");
1911
+ var SelectOptionSchema = z.object({
1912
+ text: z.object({
1913
+ tag: z.literal("plain_text").describe("\u6587\u672C\u7C7B\u578B\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A plain_text"),
1914
+ content: z.string().describe("\u9009\u9879\u6587\u6848")
1915
+ }).describe("\u9009\u9879\u5C55\u793A\u6587\u6848"),
1916
+ value: z.string().describe("\u9009\u9879\u56DE\u4F20\u503C"),
1917
+ icon: IconSchema.optional().describe("\u9009\u9879\u524D\u7F00\u56FE\u6807")
1918
+ }).describe("\u4E0B\u62C9\u9009\u62E9\u9009\u9879");
1919
+ var SelectStaticSchema = z.object({
1920
+ tag: z.literal("select_static").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A select_static"),
1921
+ behaviors: BehaviorsSchema.optional().describe(
1922
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
1923
+ ),
1924
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1925
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1926
+ type: z.enum(["default", "text"]).optional().describe("\u8FB9\u6846\u6837\u5F0F\uFF1Adefault\uFF08\u5E26\u8FB9\u6846\uFF09/ text\uFF08\u65E0\u8FB9\u6846\uFF09\uFF0C\u9ED8\u8BA4 default"),
1927
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
1928
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
1929
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
1930
+ initial_option: z.string().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u9879\u7684 value"),
1931
+ initial_index: z.number().int().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u9879\u7684\u4E0B\u6807\uFF08\u4ECE 0 \u5F00\u59CB\uFF09"),
1932
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
1933
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1934
+ options: z.array(SelectOptionSchema).optional().describe("\u9009\u9879\u5217\u8868"),
1935
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1936
+ }).describe("\u4E0B\u62C9\u9009\u62E9 - \u5355\u9009\uFF08select_static\uFF09");
1937
+ var MultiSelectStaticSchema = z.object({
1938
+ tag: z.literal("multi_select_static").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A multi_select_static"),
1939
+ name: z.string().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00"),
1940
+ behaviors: BehaviorsSchema.optional().describe(
1941
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
1942
+ ),
1943
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1944
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1945
+ type: z.enum(["default", "text"]).optional().describe("\u8FB9\u6846\u6837\u5F0F\uFF1Adefault\uFF08\u5E26\u8FB9\u6846\uFF09/ text\uFF08\u65E0\u8FB9\u6846\uFF09\uFF0C\u9ED8\u8BA4 default"),
1946
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
1947
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
1948
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
1949
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1950
+ selected_values: z.array(z.string()).optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u7684\u9009\u9879 value \u5217\u8868"),
1951
+ options: z.array(SelectOptionSchema).optional().describe("\u9009\u9879\u5217\u8868"),
1952
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1953
+ }).describe("\u4E0B\u62C9\u9009\u62E9 - \u591A\u9009\uFF08multi_select_static\uFF09");
1954
+ var SelectPersonSchema = z.object({
1955
+ tag: z.literal("select_person").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A select_person"),
1956
+ behaviors: BehaviorsSchema.optional().describe(
1957
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
1958
+ ),
1959
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1960
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1961
+ type: z.enum(["default", "text"]).optional().describe("\u8FB9\u6846\u6837\u5F0F\uFF1Adefault\uFF08\u5E26\u8FB9\u6846\uFF09/ text\uFF08\u65E0\u8FB9\u6846\uFF09\uFF0C\u9ED8\u8BA4 default"),
1962
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
1963
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
1964
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
1965
+ initial_option: z.string().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u4EBA\u5458\u7684 ID"),
1966
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
1967
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1968
+ options: z.array(
1969
+ z.object({
1970
+ value: z.string().optional().describe("\u53EF\u9009\u4EBA\u5458 ID\uFF1B\u7701\u7565\u5219\u5019\u9009\u8303\u56F4\u4E3A\u5168\u90E8\u4EBA\u5458")
1971
+ }).describe("\u4EBA\u5458\u5019\u9009\u9009\u9879")
1972
+ ).optional().describe("\u53EF\u9009\u4EBA\u5458\u5019\u9009\u5217\u8868\uFF1B\u7701\u7565\u5219\u4E0D\u9650\u5236\u5019\u9009\u8303\u56F4"),
1973
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1974
+ }).describe("\u4EBA\u5458\u9009\u62E9 - \u5355\u9009\uFF08select_person\uFF09");
1975
+ var MultiSelectPersonSchema = z.object({
1976
+ tag: z.literal("multi_select_person").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A multi_select_person"),
1977
+ name: z.string().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00"),
1978
+ behaviors: BehaviorsSchema.optional().describe(
1979
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
1980
+ ),
1981
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
1982
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
1983
+ type: z.enum(["default", "text"]).optional().describe("\u8FB9\u6846\u6837\u5F0F\uFF1Adefault\uFF08\u5E26\u8FB9\u6846\uFF09/ text\uFF08\u65E0\u8FB9\u6846\uFF09\uFF0C\u9ED8\u8BA4 default"),
1984
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
1985
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
1986
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
1987
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
1988
+ selected_values: z.array(z.string()).optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u7684\u4EBA\u5458 ID \u5217\u8868"),
1989
+ options: z.array(
1990
+ z.object({
1991
+ value: z.string().optional().describe("\u53EF\u9009\u4EBA\u5458 ID\uFF1B\u7701\u7565\u5219\u5019\u9009\u8303\u56F4\u4E3A\u5168\u90E8\u4EBA\u5458")
1992
+ }).describe("\u4EBA\u5458\u5019\u9009\u9009\u9879")
1993
+ ).optional().describe("\u53EF\u9009\u4EBA\u5458\u5019\u9009\u5217\u8868\uFF1B\u7701\u7565\u5219\u4E0D\u9650\u5236\u5019\u9009\u8303\u56F4"),
1994
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
1995
+ }).describe("\u4EBA\u5458\u9009\u62E9 - \u591A\u9009\uFF08multi_select_person\uFF09");
1996
+ var DatePickerSchema = z.object({
1997
+ tag: z.literal("date_picker").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A date_picker"),
1998
+ behaviors: BehaviorsSchema.optional().describe(
1999
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
2000
+ ),
2001
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
2002
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
2003
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
2004
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
2005
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
2006
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
2007
+ /** yyyy-MM-dd */
2008
+ initial_date: z.string().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u65E5\u671F\uFF0C\u683C\u5F0F yyyy-MM-dd"),
2009
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
2010
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E"),
2011
+ /** @deprecated 历史回传字段 */
2012
+ value: z.record(z.string(), z.unknown()).optional().describe("\u5386\u53F2\u56DE\u4F20\u5B57\u6BB5\uFF0C\u5DF2\u5E9F\u5F03")
2013
+ }).describe("\u65E5\u671F\u9009\u62E9\u5668\uFF08date_picker\uFF09");
2014
+ var PickerTimeSchema = z.object({
2015
+ tag: z.literal("picker_time").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A picker_time"),
2016
+ behaviors: BehaviorsSchema.optional().describe(
2017
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
2018
+ ),
2019
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
2020
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
2021
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
2022
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
2023
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
2024
+ /** HH:mm */
2025
+ initial_time: z.string().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u65F6\u95F4\uFF0C\u683C\u5F0F HH:mm"),
2026
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
2027
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
2028
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E"),
2029
+ value: z.record(z.string(), z.unknown()).optional().describe("\u5386\u53F2\u56DE\u4F20\u5B57\u6BB5")
2030
+ }).describe("\u65F6\u95F4\u9009\u62E9\u5668\uFF08picker_time\uFF09");
2031
+ var PickerDatetimeSchema = z.object({
2032
+ tag: z.literal("picker_datetime").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A picker_datetime"),
2033
+ behaviors: BehaviorsSchema.optional().describe(
2034
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
2035
+ ),
2036
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
2037
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
2038
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
2039
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
2040
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
2041
+ /** yyyy-MM-dd HH:mm */
2042
+ initial_datetime: z.string().optional().describe("\u9ED8\u8BA4\u9009\u4E2D\u65E5\u671F\u65F6\u95F4\uFF0C\u683C\u5F0F yyyy-MM-dd HH:mm"),
2043
+ placeholder: TipsTextSchema.optional().describe("\u5360\u4F4D\u63D0\u793A\u6587\u6848"),
2044
+ width: InteractiveWidthSchema.optional().describe("\u7EC4\u4EF6\u5BBD\u5EA6"),
2045
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E"),
2046
+ value: z.record(z.string(), z.unknown()).optional().describe("\u5386\u53F2\u56DE\u4F20\u5B57\u6BB5")
2047
+ }).describe("\u65E5\u671F\u65F6\u95F4\u9009\u62E9\u5668\uFF08picker_datetime\uFF09");
2048
+ var SelectImgSchema = z.object({
2049
+ tag: z.literal("select_img").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A select_img"),
2050
+ options: z.array(
2051
+ z.object({
2052
+ img_key: z.string().describe("\u56FE\u7247 key\uFF08\u4E0A\u4F20\u56FE\u7247\u63A5\u53E3\u8FD4\u56DE\uFF09"),
2053
+ value: z.string().optional().describe("\u9009\u9879\u56DE\u4F20\u503C"),
2054
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\u8BE5\u9009\u9879\uFF0C\u9ED8\u8BA4 false"),
2055
+ disabled_tips: TipsTextSchema.optional().describe(
2056
+ "\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"
2057
+ ),
2058
+ hover_tips: TipsTextSchema.optional().describe("\u60AC\u6D6E\u63D0\u793A")
2059
+ }).describe("\u591A\u56FE\u9009\u62E9\u9009\u9879")
2060
+ ).describe("\u53EF\u9009\u56FE\u7247\u5217\u8868"),
2061
+ behaviors: BehaviorsSchema.optional().describe(
2062
+ "\u8868\u5355\u5916\u5FC5\u586B\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09"
2063
+ ),
2064
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
2065
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
2066
+ multi_select: z.boolean().optional().describe("\u662F\u5426\u591A\u9009\uFF1B\u4E3A true \u65F6\u5FC5\u987B\u653E\u5728\u8868\u5355\u5BB9\u5668\u5185\uFF0C\u9ED8\u8BA4 false"),
2067
+ layout: z.enum(["stretch", "bisect", "trisect"]).optional().describe("\u56FE\u7247\u6392\u5E03\uFF1Astretch / bisect / trisect\uFF0C\u9ED8\u8BA4 bisect"),
2068
+ name: z.string().optional().describe("\u8868\u5355\u9879\u6807\u8BC6\uFF0C\u5361\u7247\u5185\u552F\u4E00\uFF1B\u8868\u5355\u5185\u4F7F\u7528\u65F6\u5FC5\u586B"),
2069
+ required: z.boolean().optional().describe("\u662F\u5426\u5FC5\u586B\uFF0C\u9ED8\u8BA4 false"),
2070
+ can_preview: z.boolean().optional().describe("\u70B9\u51FB\u540E\u662F\u5426\u652F\u6301\u5927\u56FE\u9884\u89C8\uFF0C\u9ED8\u8BA4 true"),
2071
+ aspect_ratio: z.enum(["1:1", "16:9", "4:3"]).optional().describe("\u56FE\u7247\u5BBD\u9AD8\u6BD4\uFF0C\u9ED8\u8BA4 1:1"),
2072
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\u6574\u4E2A\u7EC4\u4EF6\uFF0C\u9ED8\u8BA4 false"),
2073
+ disabled_tips: TipsTextSchema.optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A"),
2074
+ value: z.union([z.string(), z.record(z.string(), z.unknown())]).optional().describe("\u5386\u53F2\u56DE\u4F20\u5B57\u6BB5\u6216\u9ED8\u8BA4\u9009\u4E2D\u503C"),
2075
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E")
2076
+ }).describe("\u591A\u56FE\u9009\u62E9\uFF08select_img\uFF09");
2077
+ var CheckerSchema = z.object({
2078
+ tag: z.literal("checker").describe("\u7EC4\u4EF6\u6807\u7B7E\uFF0C\u56FA\u5B9A\u4E3A checker"),
2079
+ element_id: ElementIdSchema.optional().describe("\u7EC4\u4EF6\u552F\u4E00\u6807\u8BC6"),
2080
+ margin: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5916\u8FB9\u8DDD"),
2081
+ name: z.string().optional().describe("\u52FE\u9009\u5668\u6807\u8BC6"),
2082
+ checked: z.boolean().optional().describe("\u521D\u59CB\u662F\u5426\u52FE\u9009\uFF0C\u9ED8\u8BA4 false"),
2083
+ text: z.object({
2084
+ tag: z.enum(["plain_text", "lark_md"]).describe("\u6587\u672C\u7C7B\u578B\uFF1Aplain_text \u6216 lark_md"),
2085
+ content: z.string().optional().describe("\u52FE\u9009\u5668\u6587\u6848\u5185\u5BB9"),
2086
+ text_size: z.enum(["normal", "heading", "notation"]).optional().describe("\u5B57\u53F7\uFF1Anormal / heading / notation"),
2087
+ text_color: z.string().optional().describe("\u6587\u672C\u989C\u8272"),
2088
+ text_align: z.enum(["left", "center", "right"]).optional().describe("\u6587\u672C\u5BF9\u9F50\u65B9\u5F0F")
2089
+ }).optional().describe("\u52FE\u9009\u5668\u6587\u6848\u914D\u7F6E"),
2090
+ overall_checkable: z.boolean().optional().describe("\u662F\u5426\u5141\u8BB8\u70B9\u51FB\u6574\u884C\u5207\u6362\u52FE\u9009\uFF0C\u9ED8\u8BA4 true"),
2091
+ button_area: z.object({
2092
+ pc_display_rule: z.enum(["always", "on_hover"]).optional().describe("PC \u7AEF\u6309\u94AE\u5C55\u793A\u89C4\u5219\uFF1Aalways / on_hover"),
2093
+ /** 最多 3 个按钮 */
2094
+ buttons: z.array(ButtonSchema).max(3).optional().describe("\u53F3\u4FA7\u6309\u94AE\u5217\u8868\uFF0C\u6700\u591A 3 \u4E2A")
2095
+ }).optional().describe("\u53F3\u4FA7\u6309\u94AE\u533A\u57DF"),
2096
+ checked_style: z.object({
2097
+ show_strikethrough: z.boolean().optional().describe("\u52FE\u9009\u540E\u662F\u5426\u5C55\u793A\u5220\u9664\u7EBF\uFF0C\u9ED8\u8BA4 true"),
2098
+ opacity: z.number().min(0).max(1).optional().describe("\u52FE\u9009\u540E\u7684\u4E0D\u900F\u660E\u5EA6\uFF0C\u53D6\u503C 0\u20131")
2099
+ }).optional().describe("\u52FE\u9009\u540E\u7684\u6837\u5F0F"),
2100
+ padding: SpacingValueSchema.optional().describe("\u7EC4\u4EF6\u5185\u8FB9\u8DDD"),
2101
+ confirm: ConfirmSchema.optional().describe("\u4E8C\u6B21\u786E\u8BA4\u5F39\u7A97\u914D\u7F6E"),
2102
+ behaviors: BehaviorsSchema.optional().describe("\u4EA4\u4E92\u884C\u4E3A\u5217\u8868"),
2103
+ hover_tips: TipsTextSchema.optional().describe("\u60AC\u6D6E\u63D0\u793A"),
2104
+ disabled: z.boolean().optional().describe("\u662F\u5426\u7981\u7528\uFF0C\u9ED8\u8BA4 false"),
2105
+ disabled_tips: TipsTextSchema.optional().describe("\u7981\u7528\u65F6\u7684\u60AC\u6D6E\u63D0\u793A")
2106
+ }).describe("\u52FE\u9009\u5668\uFF08checker\uFF09,\u4E00\u4E2A\u5355\u72EC\u7684\u7EC4\u4EF6\uFF0C\u548Cinput\u6CA1\u6709\u5173\u7CFB");
2107
+
2108
+ // src/element.ts
2109
+ var ElementSchema = z.discriminatedUnion("tag", [
2110
+ // 容器
2111
+ ColumnSetSchema,
2112
+ FormSchema,
2113
+ InteractiveContainerSchema,
2114
+ CollapsiblePanelSchema,
2115
+ // 展示
2116
+ DivSchema,
2117
+ MarkdownSchema,
2118
+ ImageSchema,
2119
+ ImgCombinationSchema,
2120
+ PersonSchema,
2121
+ PersonListSchema,
2122
+ ChartSchema,
2123
+ TableSchema,
2124
+ HrSchema,
2125
+ AudioSchema,
2126
+ VideoSchema,
2127
+ // 交互
2128
+ ButtonSchema,
2129
+ InputSchema,
2130
+ OverflowSchema,
2131
+ SelectStaticSchema,
2132
+ MultiSelectStaticSchema,
2133
+ SelectPersonSchema,
2134
+ MultiSelectPersonSchema,
2135
+ DatePickerSchema,
2136
+ PickerTimeSchema,
2137
+ PickerDatetimeSchema,
2138
+ SelectImgSchema,
2139
+ CheckerSchema
2140
+ ]).describe(
2141
+ "\u5361\u7247\u6B63\u6587\u5143\u7D20\uFF08\u57FA\u4E8E tag \u7684\u5224\u522B\u8054\u5408\uFF09\u3002form/table \u4EC5\u5141\u8BB8\u5728 body.elements \u6839\u7EA7\uFF1Bcolumn \u5185\u4E0D\u652F\u6301\u4E8C\u8005"
2142
+ );
2143
+ registerElementSchema(ElementSchema);
2144
+
2145
+ // src/common/behaviors-context.ts
2146
+ var BEHAVIORS_REQUIRED_OUTSIDE_FORM = /* @__PURE__ */ new Set([
2147
+ "button",
2148
+ "select_static",
2149
+ "multi_select_static",
2150
+ "select_person",
2151
+ "multi_select_person",
2152
+ "date_picker",
2153
+ "picker_time",
2154
+ "picker_datetime",
2155
+ "select_img",
2156
+ "interactive_container"
2157
+ ]);
2158
+ function isRecord(v) {
2159
+ return typeof v === "object" && v !== null && !Array.isArray(v);
2160
+ }
2161
+ function hasBehaviorsArray(el) {
2162
+ return Array.isArray(el.behaviors);
2163
+ }
2164
+ function refineBehaviorsByFormContext(card, ctx) {
2165
+ if (!isRecord(card)) return;
2166
+ const body = card.body;
2167
+ if (!isRecord(body)) return;
2168
+ const elements = body.elements;
2169
+ if (!Array.isArray(elements)) return;
2170
+ walkElements(elements, ["body", "elements"], false, ctx);
2171
+ }
2172
+ function walkElements(elements, path, inForm, ctx) {
2173
+ for (let i = 0; i < elements.length; i++) {
2174
+ walkNode(elements[i], [...path, i], inForm, ctx);
2175
+ }
2176
+ }
2177
+ function walkNode(node, path, inForm, ctx) {
2178
+ if (!isRecord(node)) return;
2179
+ const tag = node.tag;
2180
+ if (typeof tag !== "string") return;
2181
+ if (tag === "form") {
2182
+ if (Array.isArray(node.elements)) {
2183
+ walkElements(node.elements, [...path, "elements"], true, ctx);
2184
+ }
2185
+ return;
2186
+ }
2187
+ if (BEHAVIORS_REQUIRED_OUTSIDE_FORM.has(tag) && !inForm && !hasBehaviorsArray(node)) {
2188
+ ctx.addIssue({
2189
+ code: "custom",
2190
+ path: [...path, "behaviors"],
2191
+ message: `\u7EC4\u4EF6 "${tag}" \u5728\u8868\u5355\u5916\u5FC5\u987B\u914D\u7F6E behaviors \u6570\u7EC4\uFF08open_url / callback\uFF09\uFF1B\u8FDB\u5165 form \u540E\u53EF\u7701\u7565\uFF08\u4EA4\u4E92\u968F submit \u63D0\u4EA4\uFF09`
2192
+ });
2193
+ }
2194
+ if (tag === "column_set" && Array.isArray(node.columns)) {
2195
+ for (let c = 0; c < node.columns.length; c++) {
2196
+ const col = node.columns[c];
2197
+ if (!isRecord(col)) continue;
2198
+ if (Array.isArray(col.elements)) {
2199
+ walkElements(
2200
+ col.elements,
2201
+ [...path, "columns", c, "elements"],
2202
+ inForm,
2203
+ ctx
2204
+ );
2205
+ }
2206
+ }
2207
+ }
2208
+ if ((tag === "interactive_container" || tag === "collapsible_panel" || tag === "column") && Array.isArray(node.elements)) {
2209
+ walkElements(node.elements, [...path, "elements"], inForm, ctx);
2210
+ }
2211
+ }
2212
+ var FallbackSchema = z.union([
2213
+ z.literal("drop").describe("\u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u65F6\u4E22\u5F03\u8BE5\u7EC4\u4EF6"),
2214
+ z.object({
2215
+ tag: z.literal("fallback_text").describe("\u964D\u7EA7\u7C7B\u578B\uFF0C\u56FA\u5B9A\u4E3A fallback_text"),
2216
+ text: PlainTextObjectSchema.describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848")
2217
+ }).describe("\u81EA\u5B9A\u4E49\u964D\u7EA7\u6587\u6848\u5BF9\u8C61")
2218
+ ]).describe(
2219
+ "\u97F3\u89C6\u9891\u964D\u7EA7\u914D\u7F6E\uFF1Adrop \u4E22\u5F03\u7EC4\u4EF6\uFF0C\u6216 fallback_text \u81EA\u5B9A\u4E49\u6587\u6848\uFF1B\u7701\u7565\u5219\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u6587\u6848"
2220
+ );
2221
+ var MarkdownCodeLanguageSchema = z.enum([
2222
+ "plain_text",
2223
+ "abap",
2224
+ "ada",
2225
+ "apache",
2226
+ "apex",
2227
+ "assembly",
2228
+ "bash",
2229
+ "c_sharp",
2230
+ "cpp",
2231
+ "c",
2232
+ "cmake",
2233
+ "cobol",
2234
+ "css",
2235
+ "coffee_script",
2236
+ "d",
2237
+ "dart",
2238
+ "delphi",
2239
+ "diff",
2240
+ "django",
2241
+ "docker_file",
2242
+ "erlang",
2243
+ "fortran",
2244
+ "gherkin",
2245
+ "go",
2246
+ "graphql",
2247
+ "groovy",
2248
+ "html",
2249
+ "htmlbars",
2250
+ "http",
2251
+ "haskell",
2252
+ "json",
2253
+ "java",
2254
+ "javascript",
2255
+ "julia",
2256
+ "kotlin",
2257
+ "latex",
2258
+ "lisp",
2259
+ "lua",
2260
+ "matlab",
2261
+ "makefile",
2262
+ "markdown",
2263
+ "nginx",
2264
+ "objective_c",
2265
+ "opengl_shading_language",
2266
+ "php",
2267
+ "perl",
2268
+ "powershell",
2269
+ "prolog",
2270
+ "properties",
2271
+ "protobuf",
2272
+ "python",
2273
+ "r",
2274
+ "ruby",
2275
+ "rust",
2276
+ "sas",
2277
+ "scss",
2278
+ "sql",
2279
+ "scala",
2280
+ "scheme",
2281
+ "shell",
2282
+ "solidity",
2283
+ "swift",
2284
+ "toml",
2285
+ "thrift",
2286
+ "typescript",
2287
+ "vbscript",
2288
+ "visual_basic",
2289
+ "xml",
2290
+ "yaml"
2291
+ ]).describe("\u5BCC\u6587\u672C\u4EE3\u7801\u5757\u8BED\u8A00\u6807\u8BC6\uFF08\u5927\u5C0F\u5199\u4E0D\u654F\u611F\uFF09");
2292
+ var FeishuEmojiTokenSchema = z.enum([
2293
+ "OK",
2294
+ "THUMBSUP",
2295
+ "THANKS",
2296
+ "MUSCLE",
2297
+ "FINGERHEART",
2298
+ "APPLAUSE",
2299
+ "FISTBUMP",
2300
+ "JIAYI",
2301
+ "DONE",
2302
+ "SMILE",
2303
+ "BLUSH",
2304
+ "LAUGH",
2305
+ "SMIRK",
2306
+ "LOL",
2307
+ "FACEPALM",
2308
+ "LOVE",
2309
+ "WINK",
2310
+ "PROUD",
2311
+ "WITTY",
2312
+ "SMART",
2313
+ "SCOWL",
2314
+ "THINKING",
2315
+ "SOB",
2316
+ "CRY",
2317
+ "ERROR",
2318
+ "NOSEPICK",
2319
+ "HAUGHTY",
2320
+ "SLAP",
2321
+ "SPITBLOOD",
2322
+ "TOASTED",
2323
+ "GLANCE",
2324
+ "DULL",
2325
+ "INNOCENTSMILE",
2326
+ "JOYFUL",
2327
+ "WOW",
2328
+ "TRICK",
2329
+ "YEAH",
2330
+ "ENOUGH",
2331
+ "TEARS",
2332
+ "EMBARRASSED",
2333
+ "KISS",
2334
+ "SMOOCH",
2335
+ "DROOL",
2336
+ "OBSESSED",
2337
+ "MONEY",
2338
+ "TEASE",
2339
+ "SHOWOFF",
2340
+ "COMFORT",
2341
+ "CLAP",
2342
+ "PRAISE",
2343
+ "STRIVE",
2344
+ "XBLUSH",
2345
+ "SILENT",
2346
+ "WAVE",
2347
+ "WHAT",
2348
+ "FROWN",
2349
+ "SHY",
2350
+ "DIZZY",
2351
+ "LOOKDOWN",
2352
+ "CHUCKLE",
2353
+ "WAIL",
2354
+ "CRAZY",
2355
+ "WHIMPER",
2356
+ "HUG",
2357
+ "BLUBBER",
2358
+ "WRONGED",
2359
+ "HUSKY",
2360
+ "SHHH",
2361
+ "SMUG",
2362
+ "ANGRY",
2363
+ "HAMMER.png",
2364
+ "SHOCKED",
2365
+ "TERROR",
2366
+ "PETRIFIED",
2367
+ "SKULL",
2368
+ "SWEAT",
2369
+ "SPEECHLESS",
2370
+ "SLEEP",
2371
+ "DROWSY",
2372
+ "YAWN",
2373
+ "SICK",
2374
+ "PUKE",
2375
+ "BETRAYED",
2376
+ "HEADSET",
2377
+ "EatingFood",
2378
+ "MeMeMe",
2379
+ "Sigh",
2380
+ "Typing",
2381
+ "Lemon",
2382
+ "Get",
2383
+ "LGTM",
2384
+ "OnIt.png",
2385
+ "OneSecond",
2386
+ "VRHeadset",
2387
+ "YouAreTheBest",
2388
+ "SALUTE",
2389
+ "SHAKE",
2390
+ "HIGHFIVE",
2391
+ "UPPERLEFT",
2392
+ "ThumbsDown",
2393
+ "SLIGHT",
2394
+ "TONGUE",
2395
+ "EYESCLOSED",
2396
+ "RoarForYou",
2397
+ "CALF",
2398
+ "BEAR",
2399
+ "BULL",
2400
+ "RAINBOWPUKE",
2401
+ "ROSE",
2402
+ "HEART",
2403
+ "PARTY",
2404
+ "LIPS",
2405
+ "BEER",
2406
+ "CAKE",
2407
+ "GIFT",
2408
+ "CUCUMBER",
2409
+ "Drumstick",
2410
+ "Pepper",
2411
+ "CANDIEDHAWS",
2412
+ "BubbleTea",
2413
+ "Coffee",
2414
+ "Yes",
2415
+ "No",
2416
+ "OKR",
2417
+ "CheckMark",
2418
+ "CrossMark",
2419
+ "MinusOne",
2420
+ "Hundred",
2421
+ "AWESOMEN",
2422
+ "Pin",
2423
+ "Alarm",
2424
+ "Loudspeaker",
2425
+ "Trophy",
2426
+ "Fire",
2427
+ "BOMB",
2428
+ "Music",
2429
+ "XmasTree",
2430
+ "Snowman",
2431
+ "XmasHat",
2432
+ "FIREWORKS",
2433
+ "2022",
2434
+ "REDPACKET",
2435
+ "FORTUNE",
2436
+ "LUCK",
2437
+ "FIRECRACKER",
2438
+ "StickyRiceBalls",
2439
+ "HEARTBROKEN",
2440
+ "POOP",
2441
+ "StatusFlashOfInspiration",
2442
+ "18X",
2443
+ "CLEAVER.png",
2444
+ "Soccer",
2445
+ "Basketball",
2446
+ "GeneralDoNotDisturb",
2447
+ "Status_PrivateMessage",
2448
+ "GeneralInMeetingBusy",
2449
+ "StatusReading",
2450
+ "StatusInFlight",
2451
+ "GeneralBusinessTrip",
2452
+ "GeneralWorkFromHome",
2453
+ "StatusEnjoyLife",
2454
+ "GeneralTravellingCar",
2455
+ "StatusBus",
2456
+ "GeneralSun",
2457
+ "GeneralMoonRest",
2458
+ "MoonRabbit",
2459
+ "Mooncake",
2460
+ "JubilantRabbit",
2461
+ "TV",
2462
+ "Movie",
2463
+ "Pumpkin",
2464
+ "BeamingFace",
2465
+ "Delighted",
2466
+ "ColdSweat",
2467
+ "FullMoonFace",
2468
+ "Partying",
2469
+ "GoGoGo",
2470
+ "ThanksFace",
2471
+ "SaluteFace",
2472
+ "Shrug",
2473
+ "ClownFace",
2474
+ "HappyDragon"
2475
+ ]).describe("\u98DE\u4E66\u8868\u60C5 key\uFF08emoji_type\uFF09\uFF0C\u5BCC\u6587\u672C\u4E2D\u5199\u4F5C :KEY:");
2476
+ var MarkdownTextTagColorSchema = z.enum([
2477
+ "neutral",
2478
+ "blue",
2479
+ "turquoise",
2480
+ "lime",
2481
+ "orange",
2482
+ "violet",
2483
+ "indigo",
2484
+ "wathet",
2485
+ "green",
2486
+ "yellow",
2487
+ "red",
2488
+ "purple",
2489
+ "carmine"
2490
+ ]).describe("\u5BCC\u6587\u672C text_tag \u989C\u8272\u679A\u4E3E");
2491
+ var MarkdownDateTimeFormatSchema = z.enum([
2492
+ "date_num",
2493
+ "date_short",
2494
+ "date",
2495
+ "week",
2496
+ "week_short",
2497
+ "time",
2498
+ "time_sec",
2499
+ "timezone"
2500
+ ]).describe(
2501
+ "\u56FD\u9645\u5316\u65F6\u95F4\u5C55\u793A\u683C\u5F0F\uFF1Adate_num / date_short / date / week / week_short / time / time_sec / timezone"
2502
+ );
2503
+ var MarkdownPersonStyleSchema = z.enum(["normal", "capsule"]).describe("\u4EBA\u5458\u6807\u7B7E\u6837\u5F0F\uFF1Anormal\uFF08\u666E\u901A\uFF09/ capsule\uFF08\u80F6\u56CA\uFF09");
2504
+ var MarkdownInlineAudioStyleSchema = z.enum(["normal", "speak"]).describe("\u5185\u5D4C\u97F3\u9891\u6837\u5F0F\uFF1Anormal\uFF08\u4E09\u89D2\u64AD\u653E\uFF09/ speak\uFF08\u8BED\u97F3\u6C14\u6CE1\uFF09");
2505
+
2506
+ // src/markdown/escape.ts
2507
+ var ESCAPE_MAP = [
2508
+ ["&", "&amp;"],
2509
+ ["<", "&#60;"],
2510
+ [">", "&#62;"],
2511
+ ["*", "&#42;"],
2512
+ ["~", "&sim;"],
2513
+ ["-", "&#45;"],
2514
+ ["!", "&#33;"],
2515
+ ["/", "&#47;"],
2516
+ ["\\", "&#92;"],
2517
+ ["[", "&#91;"],
2518
+ ["]", "&#93;"],
2519
+ ["(", "&#40;"],
2520
+ [")", "&#41;"],
2521
+ ["#", "&#35;"],
2522
+ [":", "&#58;"],
2523
+ ["+", "&#43;"],
2524
+ ['"', "&#34;"],
2525
+ ["'", "&#39;"],
2526
+ ["`", "&#96;"],
2527
+ ["$", "&#36;"],
2528
+ ["_", "&#95;"]
2529
+ ];
2530
+ function escapeMarkdown(text) {
2531
+ let result = text;
2532
+ for (const [char, entity] of ESCAPE_MAP) {
2533
+ result = result.split(char).join(entity);
2534
+ }
2535
+ return result;
2536
+ }
2537
+ var NBSP = "&nbsp;";
2538
+ var ENSP = "&ensp;";
2539
+ var EMSP = "&emsp;";
2540
+ function boolAttr(value) {
2541
+ if (value === void 0) return void 0;
2542
+ return value ? "true" : "false";
2543
+ }
2544
+ function renderAttrs(attrs) {
2545
+ return Object.entries(attrs).filter(([, v]) => v !== void 0 && v !== "").map(([k, v]) => ` ${k}='${String(v)}'`).join("");
2546
+ }
2547
+ var MarkdownAtTagSchema = z.object({
2548
+ id: z.string().optional().describe(
2549
+ "\u5355\u4E2A\u7528\u6237 ID\uFF1A\u4F18\u5148 open_id(ou_) \u6216 user_id\uFF0C\u6216 all\uFF08@\u6240\u6709\u4EBA\uFF09\uFF1B\u4E0D\u8981\u7528 union_id(on_)"
2550
+ ),
2551
+ ids: z.array(z.string()).optional().describe("\u591A\u4E2A\u7528\u6237 ID\uFF0C\u6E32\u67D3\u4E3A ids=id1,id2\uFF1B\u4F18\u5148 ou_/user_id"),
2552
+ email: z.string().optional().describe("\u901A\u8FC7\u90AE\u7BB1 @ \u6307\u5B9A\u4EBA")
2553
+ }).superRefine((data, ctx) => {
2554
+ const count = [data.id, data.ids?.length, data.email].filter(Boolean).length;
2555
+ if (count !== 1) {
2556
+ ctx.addIssue({
2557
+ code: "custom",
2558
+ message: "at \u6807\u7B7E\u9700\u4E14\u4EC5\u9700\u63D0\u4F9B id\u3001ids\u3001email \u5176\u4E2D\u4E4B\u4E00"
2559
+ });
2560
+ }
2561
+ }).describe(
2562
+ "@ \u63D0\u53CA\u6807\u7B7E <at>\uFF1A\u4F1A\u901A\u77E5\u5BF9\u65B9\u3002\u63D0\u793A\u8BCD\u660E\u786E\u8981 @/\u827E\u7279/\u901A\u77E5\u65F6\u7528\uFF1B\u7981\u6B62\u7528 person/<person> \u5192\u5145\u3002\u52FF\u628A <at> \u5305\u8FDB <font>"
2563
+ );
2564
+ function renderAtTag(input) {
2565
+ const data = MarkdownAtTagSchema.parse(input);
2566
+ if (data.id !== void 0) return `<at id=${data.id}></at>`;
2567
+ if (data.ids) return `<at ids=${data.ids.join(",")}></at>`;
2568
+ return `<at email=${data.email}></at>`;
2569
+ }
2570
+ var MarkdownPersonTagSchema = z.object({
2571
+ id: z.string().describe(
2572
+ "\u7528\u6237 ID\uFF1A\u4F18\u5148 open_id(ou_) \u6216 user_id\uFF1B\u4E0D\u8981\u7528 union_id(on_)\u3002\u7981\u6B62\u81C6\u9020"
2573
+ ),
2574
+ show_name: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u7528\u6237\u540D\uFF0C\u9ED8\u8BA4 true"),
2575
+ show_avatar: z.boolean().optional().describe("\u662F\u5426\u5C55\u793A\u5934\u50CF\uFF0C\u9ED8\u8BA4 true"),
2576
+ style: MarkdownPersonStyleSchema.optional().describe("\u5C55\u793A\u6837\u5F0F\uFF0C\u9ED8\u8BA4 normal")
2577
+ }).describe(
2578
+ "\u4EBA\u5458\u5C55\u793A\u6807\u7B7E <person>\uFF1A\u4EC5\u6E32\u67D3\u5934\u50CF/\u59D3\u540D\uFF0C\u4E0D\u901A\u77E5\u3002\u884C\u5185\u5C55\u793A\u4F18\u5148\u7528\u6B64\u6807\u7B7E\uFF1B\u8981\u901A\u77E5\u6539\u7528 <at>\u3002\u52FF\u5305\u8FDB <font>"
2579
+ );
2580
+ function renderPersonTag(input) {
2581
+ const data = MarkdownPersonTagSchema.parse(input);
2582
+ return `<person${renderAttrs({
2583
+ id: data.id,
2584
+ show_name: boolAttr(data.show_name),
2585
+ show_avatar: boolAttr(data.show_avatar),
2586
+ style: data.style
2587
+ })}></person>`;
2588
+ }
2589
+ var MarkdownLinkTagSchema = z.object({
2590
+ text: z.string().describe("\u94FE\u63A5\u5C55\u793A\u6587\u6848"),
2591
+ url: z.string().describe("\u9ED8\u8BA4\u8DF3\u8F6C\u5730\u5740\uFF08\u5FC5\u586B\uFF09"),
2592
+ icon: IconTokenSchema.optional().describe("\u524D\u7F00\u56FE\u6807 token\uFF0C\u989C\u8272\u56FA\u5B9A\u84DD\u8272"),
2593
+ pc_url: z.string().optional().describe("PC \u7AEF\u94FE\u63A5\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E url"),
2594
+ ios_url: z.string().optional().describe("iOS \u7AEF\u94FE\u63A5\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E url"),
2595
+ android_url: z.string().optional().describe("Android \u7AEF\u94FE\u63A5\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E url")
2596
+ }).describe("\u542B\u56FE\u6807\u7684\u591A\u7AEF\u94FE\u63A5\u6807\u7B7E <link> \u53C2\u6570");
2597
+ function renderLinkTag(input) {
2598
+ const data = MarkdownLinkTagSchema.parse(input);
2599
+ return `<link${renderAttrs({
2600
+ icon: data.icon,
2601
+ url: data.url,
2602
+ pc_url: data.pc_url,
2603
+ ios_url: data.ios_url,
2604
+ android_url: data.android_url
2605
+ })}>${data.text}</link>`;
2606
+ }
2607
+ var MarkdownTextTagSchema = z.object({
2608
+ text: z.string().describe("\u6807\u7B7E\u6587\u6848\uFF08\u77ED\u6807\u8BC6\uFF09"),
2609
+ color: MarkdownTextTagColorSchema.optional().describe("\u6807\u7B7E\u989C\u8272")
2610
+ }).describe(
2611
+ "\u6587\u672C\u6807\u7B7E <text_tag>\uFF1A\u7528\u4E8E\u72B6\u6001/\u4F18\u5148\u7EA7/\u5E8F\u53F7\u7B49\u77ED\u6807\u8BC6\u3002\u5199\u6CD5\u793A\u4F8B\uFF1A`<text_tag color='blue'>\u6807\u7B7E</text_tag>` + \u4E24\u4E2A\u7A7A\u683C + \u6B63\u6587"
2612
+ );
2613
+ function renderTextTag(input) {
2614
+ const data = MarkdownTextTagSchema.parse(input);
2615
+ return `<text_tag${renderAttrs({ color: data.color })}>${data.text}</text_tag>`;
2616
+ }
2617
+ var MarkdownNumberTagSchema = z.object({
2618
+ number: z.number().int().min(0).max(99).describe("\u89D2\u6807\u6570\u5B57\uFF0C0\u201399"),
2619
+ background_color: ColorSchema.optional().describe("\u5706\u5708\u80CC\u666F\u8272"),
2620
+ font_color: ColorSchema.optional().describe("\u6570\u5B57\u989C\u8272"),
2621
+ url: z.string().optional().describe("\u70B9\u51FB\u8DF3\u8F6C\u9ED8\u8BA4\u94FE\u63A5"),
2622
+ pc_url: z.string().optional().describe("PC \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
2623
+ ios_url: z.string().optional().describe("iOS \u7AEF\u8DF3\u8F6C\u94FE\u63A5"),
2624
+ android_url: z.string().optional().describe("Android \u7AEF\u8DF3\u8F6C\u94FE\u63A5")
2625
+ }).describe("\u6570\u5B57\u89D2\u6807 <number_tag> \u53C2\u6570");
2626
+ function renderNumberTag(input) {
2627
+ const data = MarkdownNumberTagSchema.parse(input);
2628
+ return `<number_tag${renderAttrs({
2629
+ background_color: data.background_color,
2630
+ font_color: data.font_color,
2631
+ url: data.url,
2632
+ pc_url: data.pc_url,
2633
+ ios_url: data.ios_url,
2634
+ android_url: data.android_url
2635
+ })}>${data.number}</number_tag>`;
2636
+ }
2637
+ var MarkdownLocalDateTimeTagSchema = z.object({
2638
+ millisecond: z.union([z.string(), z.number()]).optional().describe("Unix \u6BEB\u79D2\u65F6\u95F4\u6233\uFF1B\u7701\u7565\u5219\u7528\u53D1\u9001/\u53D1\u5E03\u65F6\u95F4"),
2639
+ format_type: MarkdownDateTimeFormatSchema.optional().describe(
2640
+ "\u65F6\u95F4\u5C55\u793A\u683C\u5F0F\uFF0C\u9ED8\u8BA4 date_num"
2641
+ ),
2642
+ link: z.string().optional().describe("\u70B9\u51FB\u65F6\u95F4\u8DF3\u8F6C\u7684\u94FE\u63A5")
2643
+ }).describe("\u56FD\u9645\u5316\u65F6\u95F4\u6807\u7B7E <local_datetime> \u53C2\u6570");
2644
+ function renderLocalDateTimeTag(input) {
2645
+ const data = MarkdownLocalDateTimeTagSchema.parse(input);
2646
+ return `<local_datetime${renderAttrs({
2647
+ millisecond: data.millisecond,
2648
+ format_type: data.format_type,
2649
+ link: data.link
2650
+ })}></local_datetime>`;
2651
+ }
2652
+ var MarkdownFontTagSchema = z.object({
2653
+ text: z.string().describe(
2654
+ "\u6587\u672C\u5185\u5BB9\uFF1B\u4E0D\u8981\u5728\u5176\u4E2D\u5D4C\u5957 <at>/<person>\uFF08\u5D4C\u5957\u540E\u5E38\u663E\u793A\u6807\u7B7E\u539F\u6587\uFF09"
2655
+ ),
2656
+ color: ColorSchema.describe(
2657
+ "\u6587\u672C\u989C\u8272\uFF1Adefault\u3001\u989C\u8272\u679A\u4E3E\u6216 rgba\uFF1B\u4E0D\u5BF9\u94FE\u63A5\u6587\u672C\u751F\u6548\u3002\u5B57\u6BB5\u6807\u7B7E\u5E38\u7528 grey"
2658
+ )
2659
+ }).describe(
2660
+ "\u5F69\u8272\u6587\u672C <font>\u3002\u6B63\u4F8B\uFF1A`<font color='grey'>\u4F5C\u8005\uFF1A</font><person id='ou_xxx' show_name=true show_avatar=true style='normal'></person>`"
2661
+ );
2662
+ function renderFontTag(input) {
2663
+ const data = MarkdownFontTagSchema.parse(input);
2664
+ return `<font color='${data.color}'>${data.text}</font>`;
2665
+ }
2666
+ var MarkdownAnchorTagSchema = z.object({
2667
+ href: z.string().describe("\u8DF3\u8F6C\u5730\u5740\uFF0C\u4EC5\u652F\u6301 HTTP/HTTPS"),
2668
+ text: z.string().optional().describe("\u5C55\u793A\u6587\u6848\uFF1B\u7701\u7565\u65F6\u901A\u5E38\u5C55\u793A URL")
2669
+ }).describe("\u8D85\u94FE\u63A5 <a> \u53C2\u6570");
2670
+ function renderAnchorTag(input) {
2671
+ const data = MarkdownAnchorTagSchema.parse(input);
2672
+ return `<a href='${data.href}'>${data.text ?? ""}</a>`;
2673
+ }
2674
+ var MarkdownInlineAudioTagSchema = z.object({
2675
+ file_key: z.string().describe("\u97F3\u9891\u6587\u4EF6 key\uFF08\u4E0A\u4F20\u6587\u4EF6\u63A5\u53E3\u8FD4\u56DE\uFF09"),
2676
+ audio_id: z.string().optional().describe("\u97F3\u9891\u5B9E\u4F8B\u552F\u4E00\u6807\u8BC6"),
2677
+ show_time: z.boolean().optional().describe("\u662F\u5426\u663E\u793A\u65F6\u957F\uFF0C\u9ED8\u8BA4 false"),
2678
+ style: MarkdownInlineAudioStyleSchema.optional().describe(
2679
+ "\u97F3\u9891\u6837\u5F0F\uFF0C\u9ED8\u8BA4 normal"
2680
+ ),
2681
+ background_color: ColorSchema.optional().describe("\u7EC4\u4EF6\u80CC\u666F\u8272"),
2682
+ fill_color: ColorSchema.optional().describe("\u56FE\u6807\u4E0E\u65F6\u95F4\u989C\u8272"),
2683
+ fallback_text: z.string().optional().describe("\u4F4E\u7248\u672C\u5BA2\u6237\u7AEF\u964D\u7EA7\u6587\u6848\uFF1B\u6307\u5B9A\u65F6\u5FC5\u987B\u540C\u65F6\u63D0\u4F9B fallback_url"),
2684
+ fallback_url: z.string().optional().describe("\u4F4E\u7248\u672C\u5BA2\u6237\u7AEF\u515C\u5E95 URL"),
2685
+ fallback_pc_url: z.string().optional().describe("PC \u7AEF\u515C\u5E95 URL"),
2686
+ fallback_ios_url: z.string().optional().describe("iOS \u7AEF\u515C\u5E95 URL"),
2687
+ fallback_android_url: z.string().optional().describe("Android \u7AEF\u515C\u5E95 URL"),
2688
+ fallback_harmony_url: z.string().optional().describe("\u9E3F\u8499\u7AEF\u515C\u5E95 URL")
2689
+ }).superRefine((data, ctx) => {
2690
+ if (data.fallback_text && !data.fallback_url) {
2691
+ ctx.addIssue({
2692
+ code: "custom",
2693
+ message: "\u6307\u5B9A fallback_text \u65F6\u5FC5\u987B\u540C\u65F6\u63D0\u4F9B fallback_url",
2694
+ path: ["fallback_url"]
2695
+ });
2696
+ }
2697
+ }).describe("\u5BCC\u6587\u672C\u5185\u5D4C\u97F3\u9891 <audio> \u53C2\u6570");
2698
+ function renderInlineAudioTag(input) {
2699
+ const data = MarkdownInlineAudioTagSchema.parse(input);
2700
+ return `<audio${renderAttrs({
2701
+ file_key: data.file_key,
2702
+ audio_id: data.audio_id,
2703
+ show_time: boolAttr(data.show_time),
2704
+ style: data.style,
2705
+ background_color: data.background_color,
2706
+ fill_color: data.fill_color,
2707
+ fallback_text: data.fallback_text,
2708
+ fallback_url: data.fallback_url,
2709
+ fallback_pc_url: data.fallback_pc_url,
2710
+ fallback_ios_url: data.fallback_ios_url,
2711
+ fallback_android_url: data.fallback_android_url,
2712
+ fallback_harmony_url: data.fallback_harmony_url
2713
+ })}></audio>`;
2714
+ }
2715
+
2716
+ // src/markdown/builders.ts
2717
+ var MarkdownContentBuilder = class {
2718
+ chunks = [];
2719
+ /** 追加原始片段(可为 Markdown 或已渲染标签) */
2720
+ raw(text) {
2721
+ this.chunks.push(text);
2722
+ return this;
2723
+ }
2724
+ /** 追加纯文本 */
2725
+ text(value) {
2726
+ return this.raw(value);
2727
+ }
2728
+ /** 硬换行(`\n`) */
2729
+ br() {
2730
+ return this.raw("\n");
2731
+ }
2732
+ /** HTML `<br>` / `<br/>` */
2733
+ htmlBr(selfClosing = true) {
2734
+ return this.raw(selfClosing ? "<br/>" : "<br>");
2735
+ }
2736
+ /** 分割线 */
2737
+ hr(style = "html") {
2738
+ return this.raw(style === "html" ? "<hr>" : "---");
2739
+ }
2740
+ italic(text) {
2741
+ return this.raw(`*${text}*`);
2742
+ }
2743
+ bold(text) {
2744
+ return this.raw(`**${text}**`);
2745
+ }
2746
+ strike(text) {
2747
+ return this.raw(`~~${text}~~`);
2748
+ }
2749
+ inlineCode(text) {
2750
+ return this.raw(`\`${text}\``);
2751
+ }
2752
+ /** `#` ~ `######` 标题 */
2753
+ heading(level, text) {
2754
+ return this.raw(`${"#".repeat(level)} ${text}`);
2755
+ }
2756
+ quote(text) {
2757
+ return this.raw(`> ${text}`);
2758
+ }
2759
+ /** Markdown 文字链接 */
2760
+ mdLink(text, url) {
2761
+ return this.raw(`[${text}](${url})`);
2762
+ }
2763
+ /** 可点击电话(仅移动端) */
2764
+ tel(text, phone) {
2765
+ return this.raw(`[${text}](tel://${phone})`);
2766
+ }
2767
+ /** 图片:`![hover](img_key)` */
2768
+ image(imgKey, hoverText = "") {
2769
+ return this.raw(`![${hoverText}](${imgKey})`);
2770
+ }
2771
+ /** 飞书表情:`:DONE:`;key 为官方 emoji_type 枚举 */
2772
+ emoji(key) {
2773
+ const token = FeishuEmojiTokenSchema.parse(
2774
+ key.startsWith(":") && key.endsWith(":") ? key.slice(1, -1) : key
2775
+ );
2776
+ return this.raw(`:${token}:`);
2777
+ }
2778
+ /**
2779
+ * 代码块。language 官方声明大小写不敏感;未指定时为 Plain Text。
2780
+ */
2781
+ codeBlock(code, language) {
2782
+ const lang = language ?? "";
2783
+ return this.raw(`\`\`\`${lang}
2784
+ ${code}
2785
+ \`\`\``);
2786
+ }
2787
+ unorderedList(items, indent = 0) {
2788
+ const prefix = " ".repeat(indent * 4);
2789
+ for (const item of items) {
2790
+ this.raw(`${prefix}- ${item}
2791
+ `);
2792
+ }
2793
+ return this;
2794
+ }
2795
+ orderedList(items, indent = 0) {
2796
+ const prefix = " ".repeat(indent * 4);
2797
+ items.forEach((item, index) => {
2798
+ this.raw(`${prefix}${index + 1}. ${item}
2799
+ `);
2800
+ });
2801
+ return this;
2802
+ }
2803
+ /** Markdown 表格(除表头外客户端最多展示 5 行) */
2804
+ table(headers, rows) {
2805
+ const escapeCell = (cell) => cell.replace(/\|/g, "\\|");
2806
+ const headerLine = `| ${headers.map(escapeCell).join(" | ")} |`;
2807
+ const sepLine = `| ${headers.map(() => "--------").join(" | ")} |`;
2808
+ this.raw(`${headerLine}
2809
+ ${sepLine}
2810
+ `);
2811
+ for (const row of rows) {
2812
+ this.raw(`| ${row.map(escapeCell).join(" | ")} |
2813
+ `);
2814
+ }
2815
+ return this;
2816
+ }
2817
+ at(input) {
2818
+ return this.raw(renderAtTag(input));
2819
+ }
2820
+ atAll() {
2821
+ return this.at({ id: "all" });
2822
+ }
2823
+ person(input) {
2824
+ return this.raw(renderPersonTag(input));
2825
+ }
2826
+ link(input) {
2827
+ return this.raw(renderLinkTag(input));
2828
+ }
2829
+ textTag(input) {
2830
+ return this.raw(renderTextTag(input));
2831
+ }
2832
+ numberTag(input) {
2833
+ return this.raw(renderNumberTag(input));
2834
+ }
2835
+ localDateTime(input = {}) {
2836
+ return this.raw(renderLocalDateTimeTag(input));
2837
+ }
2838
+ font(input) {
2839
+ return this.raw(renderFontTag(input));
2840
+ }
2841
+ anchor(input) {
2842
+ return this.raw(renderAnchorTag(input));
2843
+ }
2844
+ audio(input) {
2845
+ return this.raw(renderInlineAudioTag(input));
2846
+ }
2847
+ /** 生成最终 content 字符串 */
2848
+ build() {
2849
+ return this.chunks.join("");
2850
+ }
2851
+ toString() {
2852
+ return this.build();
2853
+ }
2854
+ };
2855
+ function markdown() {
2856
+ return new MarkdownContentBuilder();
2857
+ }
2858
+ var StreamingPlatformNumberSchema = z.object({
2859
+ default: z.number().optional().describe("\u9ED8\u8BA4\u7AEF\u6570\u503C"),
2860
+ android: z.number().optional().describe("Android \u7AEF\u6570\u503C"),
2861
+ ios: z.number().optional().describe("iOS \u7AEF\u6570\u503C"),
2862
+ pc: z.number().optional().describe("PC \u7AEF\u6570\u503C")
2863
+ }).describe("\u6309\u7AEF\u533A\u5206\u7684\u6570\u503C\u914D\u7F6E\uFF08default / android / ios / pc\uFF09");
2864
+ var StreamingConfigSchema = z.object({
2865
+ print_frequency_ms: StreamingPlatformNumberSchema.optional().describe(
2866
+ "\u6D41\u5F0F\u66F4\u65B0\u6253\u5370\u9891\u7387\uFF0C\u5355\u4F4D ms"
2867
+ ),
2868
+ print_step: StreamingPlatformNumberSchema.optional().describe(
2869
+ "\u6D41\u5F0F\u66F4\u65B0\u6BCF\u6B21\u6253\u5370\u7684\u5B57\u7B26\u6570"
2870
+ ),
2871
+ print_strategy: z.enum(["fast", "delay"]).optional().describe("\u6D41\u5F0F\u66F4\u65B0\u7B56\u7565\uFF1Afast / delay")
2872
+ }).describe("\u6D41\u5F0F\u66F4\u65B0\u76F8\u5173\u914D\u7F6E\uFF08streaming_config\uFF09");
2873
+ var SummarySchema = z.object({
2874
+ content: z.string().optional().describe("\u6458\u8981\u6587\u6848\uFF1B\u5F00\u542F\u6D41\u5F0F\u66F4\u65B0\u65F6\u9ED8\u8BA4\u4E3A\u300C\u751F\u6210\u4E2D\u300D"),
2875
+ i18n_content: I18nStringMapSchema.optional().describe("\u6458\u8981\u591A\u8BED\u8A00\u914D\u7F6E")
2876
+ }).describe("\u5361\u7247\u6458\u8981\u4FE1\u606F\uFF0C\u5C55\u793A\u5728\u5BA2\u6237\u7AEF\u804A\u5929\u680F\u6D88\u606F\u9884\u89C8\u4E2D");
2877
+ var CustomTextSizeSchema = z.object({
2878
+ default: TextSizeSchema.optional().describe(
2879
+ "\u65E7\u7248\u5BA2\u6237\u7AEF\u65E0\u6CD5\u5DEE\u5F02\u5316\u914D\u7F6E\u65F6\u7684\u515C\u5E95\u5B57\u53F7"
2880
+ ),
2881
+ pc: TextSizeSchema.describe("\u684C\u9762\u7AEF\u5B57\u53F7\uFF08\u5B98\u65B9\u679A\u4E3E\u6216 10px\u201340px\uFF09"),
2882
+ mobile: TextSizeSchema.describe("\u79FB\u52A8\u7AEF\u5B57\u53F7\uFF08\u5B98\u65B9\u679A\u4E3E\u6216 10px\u201340px\uFF09")
2883
+ }).describe("\u81EA\u5B9A\u4E49\u5B57\u53F7\uFF08PC / Mobile / \u53EF\u9009 default\uFF09");
2884
+ var CustomColorSchema = z.object({
2885
+ light_mode: z.string().describe("\u6D45\u8272\u4E3B\u9898\u4E0B\u7684 RGBA \u989C\u8272"),
2886
+ dark_mode: z.string().describe("\u6DF1\u8272\u4E3B\u9898\u4E0B\u7684 RGBA \u989C\u8272")
2887
+ }).describe("\u81EA\u5B9A\u4E49\u989C\u8272\uFF08\u6D45\u8272 / \u6DF1\u8272\u4E3B\u9898\uFF09");
2888
+ var ConfigSchema = z.object({
2889
+ streaming_mode: z.boolean().optional().describe("\u662F\u5426\u5904\u4E8E\u6D41\u5F0F\u66F4\u65B0\u6A21\u5F0F\uFF0C\u9ED8\u8BA4 false"),
2890
+ streaming_config: StreamingConfigSchema.optional().describe("\u6D41\u5F0F\u66F4\u65B0\u914D\u7F6E"),
2891
+ summary: SummarySchema.optional().describe("\u5361\u7247\u6458\u8981\u4FE1\u606F"),
2892
+ locales: z.array(z.string()).optional().describe("\u6307\u5B9A\u751F\u6548\u8BED\u8A00\u5217\u8868\uFF1B\u914D\u7F6E\u540E\u4EC5\u5217\u8868\u5185\u8BED\u8A00\u751F\u6548"),
2893
+ enable_forward: z.boolean().optional().describe("\u662F\u5426\u5141\u8BB8\u8F6C\u53D1\u5361\u7247\uFF0C\u9ED8\u8BA4 true"),
2894
+ update_multi: z.boolean().optional().describe(
2895
+ "\u662F\u5426\u4E3A\u5171\u4EAB\u5361\u7247\uFF0C\u9ED8\u8BA4 true\u3002JSON 2.0 \u53EA\u80FD\u4E3A true\uFF08\u6216\u4E0D\u5199\uFF09\uFF1B\u7981\u6B62\u5199 false"
2896
+ ),
2897
+ width_mode: WidthModeSchema.optional().describe("\u5361\u7247\u5BBD\u5EA6\u6A21\u5F0F"),
2898
+ use_custom_translation: z.boolean().optional().describe("\u662F\u5426\u4F7F\u7528\u81EA\u5B9A\u4E49\u7FFB\u8BD1\u6570\u636E\uFF0C\u9ED8\u8BA4 false"),
2899
+ enable_forward_interaction: z.boolean().optional().describe("\u8F6C\u53D1\u540E\u7684\u5361\u7247\u662F\u5426\u4ECD\u652F\u6301\u56DE\u4F20\u4EA4\u4E92\uFF0C\u9ED8\u8BA4 false"),
2900
+ style: z.object({
2901
+ text_size: z.record(z.string(), CustomTextSizeSchema).optional().describe("\u81EA\u5B9A\u4E49\u5B57\u53F7\u6620\u5C04\uFF0C\u53EF\u5728\u7EC4\u4EF6\u4E2D\u5F15\u7528\u5BF9\u5E94 key"),
2902
+ color: z.record(z.string(), CustomColorSchema).optional().describe("\u81EA\u5B9A\u4E49\u989C\u8272\u6620\u5C04\uFF0C\u53EF\u5728\u7EC4\u4EF6\u4E2D\u5F15\u7528\u5BF9\u5E94 key")
2903
+ }).optional().describe("\u81EA\u5B9A\u4E49\u5B57\u53F7\u4E0E\u989C\u8272\u6837\u5F0F")
2904
+ }).describe("\u5361\u7247\u5168\u5C40\u884C\u4E3A\u914D\u7F6E\uFF08config\uFF09");
2905
+ var BodySchema = z.object({
2906
+ elements: z.lazy(() => z.array(getElementSchema())).describe(
2907
+ "\u6B63\u6587\u7EC4\u4EF6\u5217\u8868\u3002\u9ED8\u8BA4\u76F4\u63A5\u653E markdown / column_set / hr / form / table / img / chart / button\uFF1Bform \u4E0E table \u5FC5\u987B\u5728\u6B64\u6839\u7EA7\u3002\u5C42\u6B21\u9760\u5B57\u91CD\u3001\u7559\u767D\u3001\u6D45\u7070\u5F31\u5E95\u4E0E\u5076\u5C14\u4E00\u6761 hr\uFF0C\u4E0D\u9760\u6EE1\u5C4F\u8272\u5757\u6216\u8FB9\u6846\u5899"
2908
+ ),
2909
+ direction: DirectionSchema.optional().describe(
2910
+ "\u6B63\u6587\u5185\u7EC4\u4EF6\u6392\u5217\u65B9\u5411\uFF0C\u9ED8\u8BA4 vertical"
2911
+ ),
2912
+ padding: SpacingValueSchema.optional().describe("\u6B63\u6587\u5185\u8FB9\u8DDD"),
2913
+ horizontal_spacing: SpacingTokenSchema.optional().describe("\u6B63\u6587\u6C34\u5E73\u95F4\u8DDD"),
2914
+ horizontal_align: HorizontalAlignSchema.optional().describe(
2915
+ "\u6B63\u6587\u6C34\u5E73\u5BF9\u9F50\uFF0C\u9ED8\u8BA4 left"
2916
+ ),
2917
+ vertical_spacing: SpacingTokenSchema.optional().describe("\u6B63\u6587\u5782\u76F4\u95F4\u8DDD"),
2918
+ vertical_align: VerticalAlignSchema.optional().describe(
2919
+ "\u6B63\u6587\u5782\u76F4\u5BF9\u9F50\uFF0C\u9ED8\u8BA4 top"
2920
+ )
2921
+ }).describe(
2922
+ "\u5361\u7247\u6B63\u6587\uFF08body\uFF09\u3002\u767D\u5E95\u53EF\u8BFB\uFF1Bform/table \u4EC5\u5141\u8BB8\u51FA\u73B0\u5728 elements \u6839\u7EA7"
2923
+ );
2924
+ var HeaderSchema = z.object({
2925
+ title: TextObjectSchema.describe(
2926
+ "\u5361\u7247\u4E3B\u6807\u9898\uFF1B\u82E5\u4EC5\u914D\u7F6E\u526F\u6807\u9898\u5219\u5B9E\u9645\u5C55\u793A\u4E3A\u4E3B\u6807\u9898\u6548\u679C"
2927
+ ),
2928
+ subtitle: TextObjectSchema.optional().describe("\u5361\u7247\u526F\u6807\u9898\uFF0C\u6700\u591A\u4E00\u884C"),
2929
+ text_tag_list: z.array(TextTagSchema).max(3).optional().describe(
2930
+ "\u6807\u9898\u540E\u7F00\u6807\u7B7E\uFF0C\u6700\u591A 3 \u4E2A\uFF1B\u4E0E i18n_text_tag_list \u540C\u65F6\u914D\u7F6E\u65F6\u4F18\u5148\u751F\u6548\u591A\u8BED\u8A00\u914D\u7F6E"
2931
+ ),
2932
+ i18n_text_tag_list: z.record(z.string(), z.array(TextTagSchema).max(3)).optional().describe("\u591A\u8BED\u8A00\u6807\u9898\u540E\u7F00\u6807\u7B7E\uFF0C\u6BCF\u4E2A\u8BED\u8A00\u6700\u591A 3 \u4E2A"),
2933
+ template: HeaderTemplateSchema.optional().describe(
2934
+ "\u6807\u9898\u4E3B\u9898\u8272\uFF0C\u9ED8\u8BA4 default\uFF1B\u4E3B\u9898\u8272\u5B9C\u96C6\u4E2D\u5728 header.template\uFF0C\u52FF\u6EE1\u5C4F\u94FA\u8272"
2935
+ ),
2936
+ icon: IconSchema.optional().describe("\u6807\u9898\u524D\u7F00\u56FE\u6807"),
2937
+ padding: SpacingValueSchema.optional().describe("\u6807\u9898\u5185\u8FB9\u8DDD\uFF0C\u9ED8\u8BA4 12px")
2938
+ }).describe("\u5361\u7247\u6807\u9898\u533A\uFF08header\uFF09\uFF0C\u4F4D\u4E8E\u6839\u7EA7\uFF0C\u4E0D\u8FDB\u5165 body.elements");
2939
+ var FeishuCardObjectSchema = z.object({
2940
+ schema: z.literal("2.0").optional().describe(
2941
+ '\u5361\u7247 JSON \u7ED3\u6784\u7248\u672C\u3002\u4F7F\u7528 2.0 \u80FD\u529B\u65F6\u5FC5\u987B\u663E\u5F0F\u58F0\u660E\u4E3A "2.0"\uFF1B\u7701\u7565\u65F6\u5E73\u53F0\u6309 1.0 \u5904\u7406'
2942
+ ),
2943
+ config: ConfigSchema.optional().describe(
2944
+ "\u5168\u5C40\u884C\u4E3A\u914D\u7F6E\uFF1BJSON 2.0 \u4E0B update_multi \u53EA\u80FD\u4E3A true \u6216\u4E0D\u5199"
2945
+ ),
2946
+ card_link: CardLinkSchema.optional().describe("\u5361\u7247\u6574\u4F53\u70B9\u51FB\u8DF3\u8F6C\u94FE\u63A5"),
2947
+ header: HeaderSchema.optional().describe(
2948
+ "\u6807\u9898\u533A\uFF1B\u4E3B\u9898\u8272\u96C6\u4E2D\u5728 header.template\u3001\u56FE\u6807\u3001\u5C0F\u6807\u7B7E\u3001\u5173\u952E\u6570\u503C\u4E0E\u6309\u94AE"
2949
+ ),
2950
+ body: BodySchema.optional().describe("\u6B63\u6587\u533A")
2951
+ }).describe(
2952
+ '\u98DE\u4E66\u5361\u7247 JSON 2.0 \u6839\u7ED3\u6784\u3002\u751F\u6210\u65F6\u987B schema:"2.0"\uFF1B\u4E0D\u8981\u81C6\u9020 image_key / open_id\uFF1B\u4EBA\u5458\u5C55\u793A\u4E0E @ \u901A\u77E5\u8BED\u4E49\u52FF\u6DF7\u7528'
2953
+ );
2954
+ var FeishuCardSchema = FeishuCardObjectSchema.superRefine(
2955
+ refineBehaviorsByFormContext
2956
+ );
2957
+ var FeishuCardV2Schema = FeishuCardObjectSchema.required({
2958
+ schema: true
2959
+ }).extend({
2960
+ schema: z.literal("2.0").describe('\u5361\u7247 JSON \u7ED3\u6784\u7248\u672C\uFF0C\u56FA\u5B9A\u4E3A "2.0"')
2961
+ }).superRefine(refineBehaviorsByFormContext).describe(
2962
+ '\u98DE\u4E66\u5361\u7247 JSON 2.0\uFF08\u5F3A\u5236 schema = "2.0"\uFF09\u3002\u5DE5\u5177 generate_feishu_card \u7684\u53C2\u6570\u5E94\u4F7F\u7528\u6B64\u5B8C\u6574\u5361\u7247\u5BF9\u8C61'
2963
+ );
2964
+
2965
+ export { AudioSchema, BEHAVIORS_REQUIRED_OUTSIDE_FORM, BehaviorSchema, BehaviorsSchema, BodySchema, ButtonSchema, CallbackBehaviorSchema, CardLinkSchema, ChartSchema, CheckerSchema, CollapsiblePanelSchema, ColorSchema, ColumnSchema, ColumnSetSchema, ConfigSchema, ConfirmSchema, CustomColorSchema, CustomIconSchema, CustomTextSizeSchema, DatePickerSchema, DirectionSchema, DivSchema, EMSP, ENSP, ElementIdSchema, ElementSchema, FallbackSchema, FeishuCardSchema, FeishuCardV2Schema, FeishuEmojiTokenSchema, FormSchema, HeaderSchema, HeaderTemplateSchema, HorizontalAlignSchema, HrSchema, I18nStringMapSchema, IconSchema, IconTokenSchema, ImageSchema, ImgCombinationSchema, InputSchema, InteractiveContainerSchema, InteractiveWidthSchema, MarkdownAnchorTagSchema, MarkdownAtTagSchema, MarkdownCodeLanguageSchema, MarkdownContentBuilder, MarkdownDateTimeFormatSchema, MarkdownFontTagSchema, MarkdownHrefSchema, MarkdownInlineAudioStyleSchema, MarkdownInlineAudioTagSchema, MarkdownLinkTagSchema, MarkdownLocalDateTimeTagSchema, MarkdownNumberTagSchema, MarkdownPersonStyleSchema, MarkdownPersonTagSchema, MarkdownSchema, MarkdownTextObjectSchema, MarkdownTextSizeCustomKeySchema, MarkdownTextSizeEnumSchema, MarkdownTextSizePixelSchema, MarkdownTextSizeSchema, MarkdownTextTagColorSchema, MarkdownTextTagSchema, MultiSelectPersonSchema, MultiSelectStaticSchema, MultiUrlSchema, NBSP, OpenUrlBehaviorSchema, OverflowSchema, PersonListSchema, PersonSchema, PickerDatetimeSchema, PickerTimeSchema, PlainTextObjectSchema, SelectBorderTypeSchema, SelectImgSchema, SelectPersonSchema, SelectStaticSchema, SpacingTokenSchema, SpacingValueSchema, StandardIconSchema, StreamingConfigSchema, StyledTextObjectSchema, SummarySchema, TableSchema, TextObjectSchema, TextSizeSchema, TextTagColorSchema, TextTagSchema, TipsTextSchema, UdIconSchema, VerticalAlignSchema, VideoSchema, WidthModeSchema, escapeMarkdown, markdown, refineBehaviorsByFormContext, renderAnchorTag, renderAtTag, renderFontTag, renderInlineAudioTag, renderLinkTag, renderLocalDateTimeTag, renderNumberTag, renderPersonTag, renderTextTag };