@blueking/chat-x 0.0.45-beta.5 → 0.0.45-beta.6

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 (135) hide show
  1. package/README.md +1 -1
  2. package/dist/ag-ui/types/constants.d.ts +0 -16
  3. package/dist/ag-ui/types/contents.d.ts +0 -2
  4. package/dist/ag-ui/types/index.d.ts +0 -2
  5. package/dist/ag-ui/types/messages.d.ts +0 -2
  6. package/dist/components/chat-content/flow-agent-content/flow-agent-content.vue.d.ts +0 -3
  7. package/dist/components/chat-content/flow-agent-content/use-flow-agent.d.ts +0 -4
  8. package/dist/components/chat-input/chat-input.vue.d.ts +8 -14
  9. package/dist/components/chat-input/input-attachment/input-attachment.vue.d.ts +0 -1
  10. package/dist/components/chat-message/activity-message/activity-message.vue.d.ts +1 -4
  11. package/dist/components/chat-message/assistant-message/assistant-message.vue.d.ts +1 -1
  12. package/dist/components/chat-message/message-container/message-container.vue.d.ts +7 -14
  13. package/dist/components/chat-message/message-render/message-render.vue.d.ts +0 -4
  14. package/dist/components/index.d.ts +2 -3
  15. package/dist/composables/use-global-config.d.ts +0 -3
  16. package/dist/composables/use-message-group.d.ts +823 -2609
  17. package/dist/icons/index.d.ts +0 -1
  18. package/dist/index.css +1 -1
  19. package/dist/index.js +1935 -2552
  20. package/dist/index.js.map +1 -1
  21. package/dist/lang/lang.d.ts +2 -34
  22. package/dist/mcp/generated/docs/activity-message.md +7 -21
  23. package/dist/mcp/generated/docs/ai-image.md +4 -9
  24. package/dist/mcp/generated/docs/ai-loading.md +6 -11
  25. package/dist/mcp/generated/docs/ai-selection.md +5 -10
  26. package/dist/mcp/generated/docs/animation-text.md +4 -9
  27. package/dist/mcp/generated/docs/assistant-message.md +5 -10
  28. package/dist/mcp/generated/docs/chat-container.md +19 -173
  29. package/dist/mcp/generated/docs/chat-input.md +10 -78
  30. package/dist/mcp/generated/docs/cite-content.md +3 -8
  31. package/dist/mcp/generated/docs/code-content.md +4 -9
  32. package/dist/mcp/generated/docs/common-error-content.md +5 -10
  33. package/dist/mcp/generated/docs/constants.md +3 -68
  34. package/dist/mcp/generated/docs/content-render.md +5 -10
  35. package/dist/mcp/generated/docs/delete-tool.md +4 -9
  36. package/dist/mcp/generated/docs/desc-panel.md +4 -9
  37. package/dist/mcp/generated/docs/execution-summary.md +5 -10
  38. package/dist/mcp/generated/docs/file-content.md +4 -9
  39. package/dist/mcp/generated/docs/file-upload-btn.md +5 -10
  40. package/dist/mcp/generated/docs/highlight-keyword.md +5 -10
  41. package/dist/mcp/generated/docs/image-content.md +4 -9
  42. package/dist/mcp/generated/docs/image-preview-group.md +4 -9
  43. package/dist/mcp/generated/docs/image-preview.md +5 -10
  44. package/dist/mcp/generated/docs/info-message.md +2 -7
  45. package/dist/mcp/generated/docs/key-value-content.md +4 -9
  46. package/dist/mcp/generated/docs/latex-content.md +4 -9
  47. package/dist/mcp/generated/docs/loading-message.md +6 -11
  48. package/dist/mcp/generated/docs/markdown-container.md +1 -1
  49. package/dist/mcp/generated/docs/markdown-content.md +8 -13
  50. package/dist/mcp/generated/docs/markdown-latex.md +3 -3
  51. package/dist/mcp/generated/docs/markdown-mermaid.md +3 -3
  52. package/dist/mcp/generated/docs/mermaid-content.md +4 -9
  53. package/dist/mcp/generated/docs/message-container.md +11 -69
  54. package/dist/mcp/generated/docs/message-render.md +11 -23
  55. package/dist/mcp/generated/docs/message-tools.md +5 -10
  56. package/dist/mcp/generated/docs/messages.md +11 -75
  57. package/dist/mcp/generated/docs/overflow-tips.md +4 -4
  58. package/dist/mcp/generated/docs/reasoning-message.md +5 -10
  59. package/dist/mcp/generated/docs/reference-content.md +5 -10
  60. package/dist/mcp/generated/docs/scroll-btn.md +3 -8
  61. package/dist/mcp/generated/docs/selection-footer.md +4 -9
  62. package/dist/mcp/generated/docs/shortcut-btn.md +5 -10
  63. package/dist/mcp/generated/docs/shortcut-btns.md +5 -10
  64. package/dist/mcp/generated/docs/shortcut-render.md +5 -10
  65. package/dist/mcp/generated/docs/text-content.md +4 -9
  66. package/dist/mcp/generated/docs/theme.md +4 -50
  67. package/dist/mcp/generated/docs/tool-btn.md +4 -9
  68. package/dist/mcp/generated/docs/tool-message.md +5 -10
  69. package/dist/mcp/generated/docs/toolcall-render.md +5 -10
  70. package/dist/mcp/generated/docs/use-animation-text.md +4 -4
  71. package/dist/mcp/generated/docs/use-clipboard.md +3 -3
  72. package/dist/mcp/generated/docs/use-command-selection.md +1 -1
  73. package/dist/mcp/generated/docs/use-custom-tab.md +1 -1
  74. package/dist/mcp/generated/docs/use-full-screen.md +3 -3
  75. package/dist/mcp/generated/docs/use-global-config.md +5 -20
  76. package/dist/mcp/generated/docs/use-menu-keydown.md +1 -1
  77. package/dist/mcp/generated/docs/use-message-group.md +9 -40
  78. package/dist/mcp/generated/docs/use-observer-visible-list.md +1 -1
  79. package/dist/mcp/generated/docs/user-feedback.md +3 -8
  80. package/dist/mcp/generated/docs/user-message.md +5 -10
  81. package/dist/mcp/generated/index.json +560 -1103
  82. package/dist/mcp/index.js +0 -0
  83. package/dist/mcp/server.js +1 -1
  84. package/dist/mcp/server.js.map +1 -1
  85. package/dist/mcp/tools/list-components.d.ts +6 -7
  86. package/dist/mcp/tools/list-components.js +29 -23
  87. package/dist/mcp/tools/list-components.js.map +1 -1
  88. package/dist/mcp/tools/search-docs.js +1 -1
  89. package/dist/mcp/tools/search-docs.js.map +1 -1
  90. package/dist/mcp/utils/doc-loader.d.ts +1 -1
  91. package/package.json +21 -23
  92. package/dist/ag-ui/types/interrupt.d.ts +0 -137
  93. package/dist/ag-ui/types/schema.d.ts +0 -42
  94. package/dist/components/ai-questions/questions-container.vue.d.ts +0 -3
  95. package/dist/components/ai-questions/selection-question.vue.d.ts +0 -3
  96. package/dist/components/chat-content/flow-agent-content/use-flow-node-actions.d.ts +0 -32
  97. package/dist/components/chat-content/index.d.ts +0 -2
  98. package/dist/components/chat-input/input-info-alert.vue.d.ts +0 -6
  99. package/dist/components/chat-message/interrupt-message/index.d.ts +0 -2
  100. package/dist/components/chat-message/interrupt-message/interrupt-message.vue.d.ts +0 -17
  101. package/dist/components/chat-message/interrupt-message/tool-approval-card.vue.d.ts +0 -8
  102. package/dist/components/chat-message/interrupt-message/user-question/index.d.ts +0 -5
  103. package/dist/components/chat-message/interrupt-message/user-question/use-user-question.d.ts +0 -35
  104. package/dist/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue.d.ts +0 -25
  105. package/dist/components/chat-message/interrupt-message/user-question/user-question-card.vue.d.ts +0 -25
  106. package/dist/components/chat-message/interrupt-message/user-question/user-question-choice.vue.d.ts +0 -13
  107. package/dist/components/chat-message/interrupt-message/user-question/user-question-option.vue.d.ts +0 -17
  108. package/dist/icons/interrupt.d.ts +0 -24
  109. package/dist/mcp/generated/docs/activity-layout.md +0 -138
  110. package/dist/mcp/generated/docs/ai-prompt-list.md +0 -42
  111. package/dist/mcp/generated/docs/ai-slash-editor.md +0 -43
  112. package/dist/mcp/generated/docs/ai-slash-input.md +0 -43
  113. package/dist/mcp/generated/docs/ai-slash-menu.md +0 -42
  114. package/dist/mcp/generated/docs/detail-section.md +0 -93
  115. package/dist/mcp/generated/docs/flow-agent-content.md +0 -252
  116. package/dist/mcp/generated/docs/flow-agent-node-detail.md +0 -240
  117. package/dist/mcp/generated/docs/input-attachment.md +0 -43
  118. package/dist/mcp/generated/docs/input-info-alert.md +0 -42
  119. package/dist/mcp/generated/docs/interrupt-message.md +0 -204
  120. package/dist/mcp/generated/docs/interrupt.md +0 -354
  121. package/dist/mcp/generated/docs/knowledge-rag-content.md +0 -126
  122. package/dist/mcp/generated/docs/message-loading.md +0 -120
  123. package/dist/mcp/generated/docs/preview-toolbar.md +0 -42
  124. package/dist/mcp/generated/docs/questions-container.md +0 -88
  125. package/dist/mcp/generated/docs/reference-doc-content.md +0 -112
  126. package/dist/mcp/generated/docs/schema.md +0 -93
  127. package/dist/mcp/generated/docs/selection-question.md +0 -91
  128. package/dist/mcp/generated/docs/simple-table.md +0 -103
  129. package/dist/mcp/generated/docs/tool-approval-card.md +0 -148
  130. package/dist/mcp/generated/docs/use-flow-node-actions.md +0 -124
  131. package/dist/mcp/generated/docs/user-question-answered-card.md +0 -106
  132. package/dist/mcp/generated/docs/user-question-card.md +0 -228
  133. package/dist/mcp/generated/docs/user-question-choice.md +0 -108
  134. package/dist/mcp/generated/docs/user-question-option.md +0 -42
  135. package/dist/mcp/generated/docs/vnode-renderer.md +0 -126
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- useGlobalConfig 接收 GlobalConfig(含 size?: ComputedRef<AiSizeMode>、supportUpload: ComputedRef<boolean>),以 GLOBAL_CONFIG_TOKEN provide 给后代; injectGlobalConfig 在子组件中取出配置,无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig 注入 size 与 supportUpload; 后代组件可通过 injectGlobalConfig 读取配置;字号主题主要通过根节点 data-ai-size 与 CSS 变量生效。
4
+ useGlobalConfig 接收 GlobalConfig(含 supportUpload: ComputedRef<boolean>),以 GLOBAL_CONFIG_TOKEN provide 给后代; injectGlobalConfig 在子组件中取出配置,无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig UserMessage 等通过 injectGlobalConfig 读取 supportUpload。
5
5
 
6
6
  ### 关联组件
7
7
  - **chat-container** — 根容器调用 useGlobalConfig 注入 supportUpload
@@ -13,20 +13,14 @@ useGlobalConfig 接收 GlobalConfig(含 size?: ComputedRef<AiSizeMode>、suppo
13
13
 
14
14
  > **分类**:composable
15
15
 
16
- 在聊天容器根组件与子组件之间通过 Vue `provide` / `inject` 共享**全局展示相关配置**(当前包括字号主题档位 `size`、是否支持上传 `supportUpload`)。与 Teleport 插槽 ID 无关。
17
-
18
- > 字号主题主要通过 `ChatContainer` 根节点的 `data-ai-size` 与 CSS 变量(`--ai-font-size` 等)生效;`GlobalConfig.size` 供后代在逻辑层读取当前档位,样式层无需逐组件传参。
16
+ 在聊天容器根组件与子组件之间通过 Vue `provide` / `inject` 共享**全局展示相关配置**(当前主要为是否支持上传 `supportUpload`)。与 Teleport 插槽 ID 无关。
19
17
 
20
18
  ## 工作原理
21
19
 
22
20
  ```
23
21
  ChatContainer(根)
24
- ├── :data-ai-size="size"(CSS 变量作用域)
25
- ├── useGlobalConfig({
26
- │ size: computed(() => props.size ?? 'small'),
27
- │ supportUpload: computed(() => props.supportUpload ?? false),
28
- │ })
29
- │ └── provide(GLOBAL_CONFIG_TOKEN, { size, supportUpload })
22
+ ├── useGlobalConfig({ supportUpload: computed(() => props.supportUpload ?? false) })
23
+ │ └── provide(GLOBAL_CONFIG_TOKEN, { supportUpload })
30
24
 
31
25
  └── MessageContainer → … → UserMessage 等
32
26
 
@@ -49,12 +43,10 @@ UserMessage(后代)
49
43
  import { useGlobalConfig } from '@blueking/chat-x';
50
44
 
51
45
  const props = defineProps<{
52
- size?: 'normal' | 'small';
53
46
  supportUpload?: boolean;
54
47
  }>();
55
48
 
56
49
  useGlobalConfig({
57
- size: computed(() => props.size ?? 'small'),
58
50
  supportUpload: computed(() => props.supportUpload ?? false),
59
51
  });
60
52
  </script>
@@ -83,15 +75,11 @@ import type { ComputedRef } from 'vue';
83
75
 
84
76
  export const GLOBAL_CONFIG_TOKEN: unique symbol;
85
77
 
86
- export type AiSizeMode = 'normal' | 'small';
87
-
88
78
  export type GlobalConfig = {
89
- size?: ComputedRef<AiSizeMode>;
90
79
  supportUpload: ComputedRef<boolean>;
91
80
  };
92
81
 
93
82
  export function useGlobalConfig(options: GlobalConfig): {
94
- size?: ComputedRef<AiSizeMode>;
95
83
  supportUpload: ComputedRef<boolean>;
96
84
  };
97
85
 
@@ -108,14 +96,12 @@ export function injectGlobalConfig(): GlobalConfig | undefined;
108
96
 
109
97
  | 字段 | 说明 |
110
98
  | --------------- | ------------------------------------------------------------------------ |
111
- | `size` | 可选。字号主题档位 `normal`(14px)/ `small`(12px),与 `ChatContainer.size` 对齐 |
112
99
  | `supportUpload` | 是否支持上传,与根容器 `ChatContainer` 的 `supportUpload` 等展示策略对齐 |
113
100
 
114
101
  ### `useGlobalConfig(options)`
115
102
 
116
103
  | 参数 | 说明 |
117
104
  | ----------------------- | ------------------------------------------------------------------------------------- |
118
- | `options.size` | 可选。字号主题档位,建议使用 `computed(() => props.size ?? 'small')` 与根 props 同步 |
119
105
  | `options.supportUpload` | 是否支持上传,建议使用 `computed(() => props.supportUpload ?? false)` 与根 props 同步 |
120
106
 
121
107
  - 调用后立即 `provide(GLOBAL_CONFIG_TOKEN, options)`。
@@ -136,5 +122,4 @@ export function injectGlobalConfig(): GlobalConfig | undefined;
136
122
 
137
123
  ## 关联组件
138
124
 
139
- - [ChatContainer](../components/setup/chat-container) — 调用 `useGlobalConfig` 注入 `size` 与 `supportUpload`
140
- - [主题配置](../theme/theme) — `data-ai-size` 与 CSS 变量说明
125
+ - [ChatContainer](../components/molecular/chat-container.md) — 调用 `useGlobalConfig` 注入 `supportUpload`
@@ -161,4 +161,4 @@ useMenuKeydown<T>(props: {
161
161
 
162
162
  ## 关联组件
163
163
 
164
- - [ChatInput](../components/input/chat-input) — `@` 菜单与 `/` 提示词列表
164
+ - [ChatInput](../components/molecular/chat-input.md) — `@` 菜单与 `/` 提示词列表
@@ -27,8 +27,6 @@ function useMessageGroup(options: {
27
27
  }): {
28
28
  messageGroups: Ref<MessageGroup[]>;
29
29
  executionGroups: ComputedRef<MessageGroup[]>;
30
- pendingApprovalCount: ComputedRef<number>;
31
- pendingApprovalTipText: ComputedRef<string>;
32
30
  isShareMode: ShallowRef<boolean>;
33
31
  isAllSelected: ComputedRef<boolean>;
34
32
  onToggleShareAll: (isAllSelected: boolean) => void;
@@ -115,24 +113,6 @@ const isExecutionMessage = (m: Message): boolean => {
115
113
  | toolCall | `function.name`、`mcpName`、`description`、`arguments`、`id` |
116
114
  | flow_agent | 各任务 `task_name`、各节点 `name` |
117
115
 
118
- ## 待审批统计
119
-
120
- `useMessageGroup` 会统计消息列表中处于待审批状态的 AI Dev 审批中断:
121
-
122
- ```typescript
123
- const pendingApprovalStatusSet = new Set([APPROVAL_STATUS.PENDING, APPROVAL_STATUS.DRAFT]);
124
- ```
125
-
126
- 当 `MessageRole.Interrupt` 消息的 `content.outcome.type === 'interrupt'`,且其中断项满足 `reason === InterruptReason.AIDevToolApproval`、`metadata.ticket.status` 为 `pending` 或 `draft` 时,计入 `pendingApprovalCount`。
127
-
128
- `pendingApprovalTipText` 根据数量生成输入区提示文案:
129
-
130
- ```typescript
131
- '当前会话有 {count} 个待审批单,如需继续,请先取消审批'
132
- ```
133
-
134
- `ChatContainer` 会消费该返回值,向 `ChatInput` 传入 `sendDisabledTip` 并在输入区上方展示提示,从而阻止继续发送。
135
-
136
116
  ## 分享模式
137
117
 
138
118
  `useMessageGroup` 提供完整的分享模式支持:
@@ -162,21 +142,12 @@ const keyword = shallowRef('');
162
142
  const messages = computed(() => props.messages);
163
143
  const selectedUserMessages = deepRef<Message[]>([]);
164
144
 
165
- const {
166
- messageGroups,
167
- executionGroups,
168
- pendingApprovalCount,
169
- pendingApprovalTipText,
170
- isShareMode,
171
- isAllSelected,
172
- onToggleShareAll,
173
- onCancelShare,
174
- onConfirmShare,
175
- } = useMessageGroup({
176
- keyword,
177
- messages,
178
- selectedUserMessages,
179
- });
145
+ const { messageGroups, executionGroups, isShareMode, isAllSelected, onToggleShareAll, onCancelShare, onConfirmShare } =
146
+ useMessageGroup({
147
+ keyword,
148
+ messages,
149
+ selectedUserMessages,
150
+ });
180
151
  ```
181
152
 
182
153
  ## 返回值说明
@@ -185,8 +156,6 @@ const {
185
156
  | ---------------- | ----------------------------- | --------------------------------------------------------------------------- |
186
157
  | messageGroups | `Ref<MessageGroup[]>` | 完整消息分组列表 |
187
158
  | executionGroups | `ComputedRef<MessageGroup[]>` | 仅包含执行类消息的分组(工具调用 + FlowAgent),自动提取 `userMessageTitle` |
188
- | pendingApprovalCount | `ComputedRef<number>` | 当前消息中待审批 AI Dev 审批中断的数量 |
189
- | pendingApprovalTipText | `ComputedRef<string>` | 待审批阻塞发送提示文案;无待审批时为空字符串 |
190
159
  | isShareMode | `ShallowRef<boolean>` | 是否处于分享模式 |
191
160
  | isAllSelected | `ComputedRef<boolean>` | 所有用户消息组是否全部选中 |
192
161
  | onToggleShareAll | `(checked: boolean) => void` | 切换全选 |
@@ -212,6 +181,6 @@ interface MessageGroup {
212
181
 
213
182
  ## 关联组件
214
183
 
215
- - [ChatContainer](../components/setup/chat-container) — 调用 useMessageGroup 并下传分组
216
- - [MessageContainer](../components/setup/message-container) — 渲染 messageGroups
217
- - [ExecutionSummary](../components/agent/execution-summary) — 消费 executionGroups
184
+ - [ChatContainer](../components/molecular/chat-container.md) — 调用 useMessageGroup 并下传分组
185
+ - [MessageContainer](../components/molecular/message-container.md) — 渲染 messageGroups
186
+ - [ExecutionSummary](../components/molecular/execution-summary.md) — 消费 executionGroups
@@ -186,4 +186,4 @@ function useObserverVisibleList<T>(
186
186
 
187
187
  ## 关联组件
188
188
 
189
- - [ShortcutBtns](../components/input/shortcut-btns.md) — 快捷指令条与「更多」
189
+ - [ShortcutBtns](../components/atomic/shortcut-btns.md) — 快捷指令条与「更多」
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 用户反馈弹层,提交踩/反馈原因。 源码位置:src/components/message-tools/user-feedback/user-feedback.vue。
4
+ UserFeedback 在点赞或踩之后展示原因收集面板:多选预设标签、补充说明与异步加载原因列表(骨架屏)。 由 MessageTools 在 like/unlike 流程中挂载,提交后向父级回传原因列表与备注。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-tools** — 点赞/踩操作触发并收集反馈
@@ -10,13 +10,8 @@
10
10
  <!-- FULL DOC -->
11
11
 
12
12
  # MessageUserFeedback 用户反馈
13
- ## 源码事实
14
13
 
15
- - **源码位置**:`src/components/message-tools/user-feedback/user-feedback.vue`
16
- - **能力域**:工具与反馈
17
- - **能力说明**:用户反馈弹层,提交踩/反馈原因。
18
-
19
- > **能力域**:工具与反馈
14
+ > **层级**:分子组件 · **功能域**:工具与反馈
20
15
 
21
16
  AI 消息点赞/踩后收集用户具体反馈原因的弹出面板。支持多选预设原因标签、补充文字说明(textarea)、异步加载原因列表(骨架屏)。
22
17
 
@@ -231,4 +226,4 @@ loading=false,展示原因标签列表
231
226
 
232
227
  ## 关联组件
233
228
 
234
- - [MessageTools](/components/feedback/message-tools) — 点赞/踩入口与反馈联动
229
+ - [MessageTools](./message-tools.md) — 点赞/踩入口与反馈联动
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。 源码位置:src/components/chat-message/user-message/user-message.vue。
4
+ UserMessage 渲染右对齐用户消息,支持文本、附件、文本/结构化引用、快捷指令与内联编辑。需处理 onAction、onInputConfirm、 onShortcutConfirm 等回调;messageToolsStatus 控制工具栏。由 MessageRender 在 user 角色下使用,常与多选联动。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-render** — 由 MessageRender 在 role 为 user 时创建
@@ -12,13 +12,8 @@
12
12
  <!-- FULL DOC -->
13
13
 
14
14
  # UserMessage 用户消息
15
- ## 源码事实
16
15
 
17
- - **源码位置**:`src/components/chat-message/user-message/user-message.vue`
18
- - **能力域**:消息系统
19
- - **能力说明**:渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。
20
-
21
- > **能力域**:消息系统
16
+ > **层级**:分子组件 · **功能域**:消息展示
22
17
 
23
18
  用户消息展示组件,右对齐显示用户发送的消息内容。支持纯文本、多媒体(图片/文件)、文本引用、结构化引用、快捷指令等多种内容形式,以及消息的内联编辑功能。
24
19
 
@@ -351,6 +346,6 @@ interface MessageExtra {
351
346
 
352
347
  ## 关联组件
353
348
 
354
- - [MessageRender](/components/message/message-render) — user 角色由其实例化
355
- - [MessageTools](/components/feedback/message-tools) — 工具栏交互
356
- - [MessageContainer](/components/setup/message-container) — 列表与多选容器
349
+ - [MessageRender](./message-render.md) — user 角色由其实例化
350
+ - [MessageTools](./message-tools.md) — 工具栏交互
351
+ - [MessageContainer](./message-container.md) — 列表与多选容器