@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,464 +1,365 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-06-10T07:05:58.442Z",
3
+ "generatedAt": "2026-06-11T14:14:16.495Z",
4
4
  "domains": {
5
- "setup": {
6
- "label": "对话搭建",
7
- "components": [
8
- "chat-container",
9
- "message-container"
10
- ]
11
- },
12
5
  "message": {
13
- "label": "消息系统",
6
+ "label": "消息展示",
14
7
  "components": [
15
8
  "activity-message",
16
9
  "assistant-message",
17
10
  "info-message",
18
11
  "loading-message",
12
+ "message-container",
19
13
  "message-render",
20
14
  "reasoning-message",
21
15
  "tool-message",
22
16
  "user-message"
23
17
  ]
24
18
  },
25
- "rendering": {
19
+ "input": {
20
+ "label": "输入交互",
21
+ "components": [
22
+ "shortcut-btn",
23
+ "shortcut-btns",
24
+ "ai-selection",
25
+ "chat-container",
26
+ "chat-input",
27
+ "shortcut-render"
28
+ ]
29
+ },
30
+ "content": {
26
31
  "label": "内容渲染",
27
32
  "components": [
28
33
  "animation-text",
29
- "cite-content",
30
34
  "code-content",
31
- "common-error-content",
32
- "content-render",
33
- "desc-panel",
34
- "key-value-content",
35
35
  "latex-content",
36
36
  "markdown-content",
37
37
  "mermaid-content",
38
- "reference-content",
39
- "text-content"
38
+ "content-render"
40
39
  ]
41
40
  },
42
- "input": {
43
- "label": "输入交互",
41
+ "media": {
42
+ "label": "文件与图片",
44
43
  "components": [
45
- "ai-prompt-list",
46
- "ai-selection",
47
- "ai-slash-editor",
48
- "ai-slash-input",
49
- "ai-slash-menu",
50
- "chat-input",
44
+ "ai-image",
51
45
  "file-upload-btn",
52
- "input-attachment",
53
- "input-info-alert",
54
- "selection-footer",
55
- "shortcut-btn",
56
- "shortcut-btns",
57
- "shortcut-render"
58
- ]
59
- },
60
- "agent": {
61
- "label": "Agent 能力",
62
- "components": [
63
- "detail-section",
64
- "execution-summary",
65
- "flow-agent-content",
66
- "flow-agent-node-detail",
67
- "interrupt-message",
68
- "knowledge-rag-content",
69
- "reference-doc-content",
70
- "simple-table",
71
- "tool-approval-card",
72
- "toolcall-render",
73
- "user-question-answered-card",
74
- "user-question-card",
75
- "user-question-choice",
76
- "user-question-option"
46
+ "image-content",
47
+ "file-content",
48
+ "image-preview-group",
49
+ "image-preview"
77
50
  ]
78
51
  },
79
- "feedback": {
52
+ "tools": {
80
53
  "label": "工具与反馈",
81
54
  "components": [
55
+ "tool-btn",
82
56
  "delete-tool",
83
57
  "message-tools",
84
- "scroll-btn",
85
- "tool-btn",
58
+ "toolcall-render",
86
59
  "user-feedback"
87
60
  ]
88
61
  },
89
- "media": {
90
- "label": "媒体文件",
91
- "components": []
92
- },
93
62
  "helper": {
94
- "label": "辅助能力",
63
+ "label": "辅助组件",
95
64
  "components": [
96
- "activity-layout",
97
65
  "ai-loading",
66
+ "cite-content",
67
+ "common-error-content",
68
+ "desc-panel",
98
69
  "highlight-keyword",
99
- "message-loading",
100
- "questions-container",
101
- "selection-question",
102
- "vnode-renderer",
103
- "ai-image",
104
- "file-content",
105
- "image-content",
106
- "image-preview-group",
107
- "image-preview",
108
- "preview-toolbar"
70
+ "key-value-content",
71
+ "reference-content",
72
+ "scroll-btn",
73
+ "selection-footer",
74
+ "text-content",
75
+ "execution-summary"
109
76
  ]
110
77
  }
111
78
  },
112
79
  "components": [
113
80
  {
114
- "name": "DetailSection 详情分段",
115
- "slug": "detail-section",
116
- "kind": "component",
117
- "description": "FlowAgent 节点详情中的标题/内容分段容器。",
118
- "aiSummary": "FlowAgent 节点详情中的标题/内容分段容器。 源码位置:src/components/chat-content/flow-agent-content/detail-section.vue。",
81
+ "name": "AiImage 图片展示",
82
+ "slug": "ai-image",
83
+ "category": "atomic",
84
+ "description": "图片展示组件,支持加载状态、加载失败重试、懒加载、点击预览等功能。可独立使用(单图预览),也可配合 `ImagePreviewGroup` 实现多图预览。",
85
+ "aiSummary": "AiImage 负责缩略图展示,并处理加载中、失败重试与懒加载;无 ImagePreviewGroup 上下文时可内嵌 ImagePreview 做全屏预览。 在 Group 内通过 inject 注册子图,点击时参与多图集合预览;支持自定义下载与 preview 事件。 与 ImagePreview、ImagePreviewGroup 共同构成对话内图片展示与预览链路。",
119
86
  "relatedComponents": [
120
87
  {
121
- "slug": "flow-agent-node-detail",
122
- "relation": "节点详情中用于承载基础信息、输入参数、输出参数等区块"
88
+ "slug": "image-preview",
89
+ "relation": "独立模式下内嵌全屏预览,单图预览入口"
123
90
  },
124
91
  {
125
- "slug": "simple-table",
126
- "relation": "常作为分段内容展示结构化参数表格"
92
+ "slug": "image-preview-group",
93
+ "relation": "组内注册子图并统一打开多图预览"
127
94
  }
128
95
  ],
129
- "docFile": "docs/detail-section.md",
130
- "domain": "agent"
96
+ "docFile": "docs/ai-image.md",
97
+ "domain": "media"
131
98
  },
132
99
  {
133
- "name": "ExecutionSummary 执行摘要",
134
- "slug": "execution-summary",
135
- "kind": "component",
136
- "description": "按消息流提取执行摘要,支持关键词定位和消息渲染。",
137
- "aiSummary": "按消息流提取执行摘要,支持关键词定位和消息渲染。 源码位置:src/components/execution-summary/execution-summary.vue。",
100
+ "name": "AiLoading AI 加载动画",
101
+ "slug": "ai-loading",
102
+ "category": "atomic",
103
+ "description": "AI 加载动画原子组件。由两层 SVG 叠加构成:外层旋转光环(带渐变弧线)+ 内层脉冲星形图标,两者共用同一套蓝→紫→粉渐变色。",
104
+ "aiSummary": "AiLoading 使用纯 CSS/SVG 动画(旋转环与脉冲星形)展示加载中,不依赖 bkui Loading 多实例时需用 cloneVNode 等为渐变 id 加前缀避免冲突;支持 stopLoading 暂停动画。",
138
105
  "relatedComponents": [
139
106
  {
140
- "slug": "message-render",
141
- "relation": "摘要列表内渲染消息内容"
107
+ "slug": "loading-message",
108
+ "relation": "列表末尾加载占位"
142
109
  },
143
110
  {
144
- "slug": "highlight-keyword",
145
- "relation": "搜索关键词注入与高亮"
111
+ "slug": "reasoning-message",
112
+ "relation": "推理进行中的加载指示"
146
113
  },
147
114
  {
148
- "slug": "chat-container",
149
- "relation": "常与侧栏「执行情况」Tab 组合"
115
+ "slug": "activity-message",
116
+ "relation": "活动消息加载态指示"
150
117
  }
151
118
  ],
152
- "docFile": "docs/execution-summary.md",
153
- "domain": "agent"
119
+ "docFile": "docs/ai-loading.md",
120
+ "domain": "helper"
154
121
  },
155
122
  {
156
- "name": "FlowAgentContent FlowAgent 执行内容",
157
- "slug": "flow-agent-content",
158
- "kind": "component",
159
- "description": "渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。",
160
- "aiSummary": "渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。 源码位置:src/components/chat-content/flow-agent-content/flow-agent-content.vue。",
123
+ "name": "AnimationText 动画文本",
124
+ "slug": "animation-text",
125
+ "category": "atomic",
126
+ "description": "动画文本原子组件,将文本以**淡入(fade-in)**方式渐显。内部由 `useAnimationText` composable 驱动,核心能力是将增量文本拆分为独立 chunk,每个 chunk 单独触发一次淡入动画,适用于流式文本的逐段渐显效果。",
127
+ "aiSummary": "AnimationText 将文本拆成 chunk 并以淡入 keyframes 逐段显示,适合短文案一次性展示。 props.text 仅在挂载时参与动画;持续流式场景应直接使用 useAnimationText 或自行 watch Ref 与 Markdown 流式渐显等场景可组合使用。",
161
128
  "relatedComponents": [
162
129
  {
163
- "slug": "flow-agent-node-detail",
164
- "relation": "详情入口点击后挂载到自定义 Tab 渲染"
165
- },
166
- {
167
- "slug": "activity-layout",
168
- "relation": "提供可折叠的活动容器外壳"
130
+ "slug": "use-animation-text",
131
+ "relation": "提供 chunk 拆分与 animationStyle 的 composable"
169
132
  },
170
133
  {
171
- "slug": "chat-container",
172
- "relation": "通过自定义 Tab 在侧栏展示节点详情"
134
+ "slug": "markdown-content",
135
+ "relation": "流式 Markdown 中可与渐显策略配合"
173
136
  }
174
137
  ],
175
- "docFile": "docs/flow-agent-content.md",
176
- "domain": "agent"
138
+ "docFile": "docs/animation-text.md",
139
+ "domain": "content"
177
140
  },
178
141
  {
179
- "name": "FlowAgentNodeDetail FlowAgent 节点详情",
180
- "slug": "flow-agent-node-detail",
181
- "kind": "component",
182
- "description": "展示 FlowAgent 节点输入、输出、异常、耗时等详情。",
183
- "aiSummary": "展示 FlowAgent 节点输入、输出、异常、耗时等详情。 源码位置:src/components/chat-content/flow-agent-content/flow-agent-node-detail.vue。",
142
+ "name": "CiteContent 引用内容",
143
+ "slug": "cite-content",
144
+ "category": "atomic",
145
+ "description": "展示被引用文本片段的紧凑条带组件。固定高度 28px,左侧引用图标 + 单行截断文本 + 可选关闭图标,背景灰色(`#f5f7fa`)。",
146
+ "aiSummary": "CiteContent 在输入区上方以紧凑条带展示被引用文本片段,单行截断并可选关闭按钮移除引用。 常与 ChatInput 的引用预览区配合,不执行 HTML 渲染。",
184
147
  "relatedComponents": [
185
148
  {
186
- "slug": "flow-agent-content",
187
- "relation": "节点详情入口由 FlowAgentContent 挂载到自定义 Tab"
188
- },
189
- {
190
- "slug": "detail-section",
191
- "relation": "详情页内部分段容器"
192
- },
193
- {
194
- "slug": "simple-table",
195
- "relation": "展示输入参数、插件输出定义与结构化输出"
196
- },
197
- {
198
- "slug": "chat-container",
199
- "relation": "应用层通过 onCustomTabChange 拉取节点详情并回填"
149
+ "slug": "chat-input",
150
+ "relation": "输入区展示待发送引用内容"
200
151
  }
201
152
  ],
202
- "docFile": "docs/flow-agent-node-detail.md",
203
- "domain": "agent"
153
+ "docFile": "docs/cite-content.md",
154
+ "domain": "helper"
204
155
  },
205
156
  {
206
- "name": "InterruptMessage 中断消息",
207
- "slug": "interrupt-message",
208
- "kind": "component",
209
- "description": "渲染 human-in-the-loop 中断消息,分发工具审批,并回显用户问题回答结果。",
210
- "aiSummary": "渲染 human-in-the-loop 中断消息,分发工具审批,并回显用户问题回答结果。 源码位置:src/components/chat-message/interrupt-message/interrupt-message.vue。",
157
+ "name": "CodeContent 代码块渲染",
158
+ "slug": "code-content",
159
+ "category": "atomic",
160
+ "description": "代码块渲染原子组件,专为 **Markdown 流式输出**设计。接收 `markdown-it` token 数组,基于 `highlight.js`(github-dark 主题)实现逐行语法高亮,顶部固定深色头部展示语言名和复制按钮。",
161
+ "aiSummary": "CodeContent 接收 markdown-it fence/code_block token,按行 highlight.js 高亮并带语言标签与复制。 必填 props 为 token 数组;mounted 事件用于滚动联动等。 由 MarkdownContent 在解析代码块时挂载,面向流式增量更新。",
211
162
  "relatedComponents": [
212
163
  {
213
- "slug": "message-render",
214
- "relation": "role interrupt 时渲染本组件"
215
- },
216
- {
217
- "slug": "user-question-card",
218
- "relation": "UserQuestion 待回答面板与回答回显"
219
- },
220
- {
221
- "slug": "tool-approval-card",
222
- "relation": "AIDevToolApproval 专用子卡片"
223
- },
224
- {
225
- "slug": "message-container",
226
- "relation": "透传 onInterruptResume;末条为 interrupt 时不触发组 hover"
164
+ "slug": "markdown-content",
165
+ "relation": "解析 Markdown 后生成 fence token 并渲染本组件"
227
166
  }
228
167
  ],
229
- "docFile": "docs/interrupt-message.md",
230
- "domain": "agent"
168
+ "docFile": "docs/code-content.md",
169
+ "domain": "content"
231
170
  },
232
171
  {
233
- "name": "KnowledgeRagContent 知识召回内容",
234
- "slug": "knowledge-rag-content",
235
- "kind": "component",
236
- "description": "渲染知识召回活动,包含加载态、Markdown 内容与引用来源。",
237
- "aiSummary": "渲染知识召回活动,包含加载态、Markdown 内容与引用来源。 源码位置:src/components/chat-content/knowledge-rag-content/knowledge-rag-content.vue。",
172
+ "name": "CommonErrorContent 通用错误内容",
173
+ "slug": "common-error-content",
174
+ "category": "atomic",
175
+ "description": "错误状态消息渲染原子组件。红色 `ErrorIcon`(14×14px,绝对定位)+ 文本区域,`display: flex` 水平排列。",
176
+ "aiSummary": "CommonErrorContent 以红色错误图标加文案展示失败态,布局为 flex 横排,文本为纯文本插值。 在 MarkdownContent、ReasoningMessage 等链路上当 status 为 error 时自动替换内容区。",
238
177
  "relatedComponents": [
239
- {
240
- "slug": "activity-message",
241
- "relation": "activityType 为 knowledge_rag 时分发到本组件"
242
- },
243
- {
244
- "slug": "activity-layout",
245
- "relation": "提供可折叠的活动容器外壳"
246
- },
247
178
  {
248
179
  "slug": "markdown-content",
249
- "relation": "渲染知识召回摘要正文"
180
+ "relation": "Markdown 渲染错误态展示"
250
181
  },
251
182
  {
252
- "slug": "reference-content",
253
- "relation": "渲染召回引用来源列表"
183
+ "slug": "reasoning-message",
184
+ "relation": "推理消息错误态展示"
254
185
  }
255
186
  ],
256
- "docFile": "docs/knowledge-rag-content.md",
257
- "domain": "agent"
187
+ "docFile": "docs/common-error-content.md",
188
+ "domain": "helper"
258
189
  },
259
190
  {
260
- "name": "ReferenceDocContent 引用文档活动",
261
- "slug": "reference-doc-content",
262
- "kind": "component",
263
- "description": "渲染引用文档类活动内容,复用 ActivityLayout 与 ReferenceContent。",
264
- "aiSummary": "渲染引用文档类活动内容,复用 ActivityLayout ReferenceContent。 源码位置:src/components/chat-content/reference-doc-content/reference-doc-content.vue。",
191
+ "name": "DescPanel 描述面板",
192
+ "slug": "desc-panel",
193
+ "category": "atomic",
194
+ "description": "工具调用(ToolCall)详情面板的描述区域组件,主要用于 `ToolcallRender` 内部的折叠面板中。",
195
+ "aiSummary": "DescPanel 将描述字符串尝试 JSON 解析为键值列表展示,否则按纯文本输出,用于工具调用详情折叠区。 内部对键与值使用 HighlightKeyword 支持搜索高亮。",
265
196
  "relatedComponents": [
266
197
  {
267
- "slug": "activity-message",
268
- "relation": "非 knowledge_rag / flow_agent 活动默认可分发为引用文档活动"
269
- },
270
- {
271
- "slug": "activity-layout",
272
- "relation": "提供可折叠的活动容器外壳"
198
+ "slug": "toolcall-render",
199
+ "relation": "工具调用详情中渲染描述与参数"
273
200
  },
274
201
  {
275
- "slug": "reference-content",
276
- "relation": "渲染引用文档列表"
202
+ "slug": "highlight-keyword",
203
+ "relation": "键值与文本匹配关键词高亮"
277
204
  }
278
205
  ],
279
- "docFile": "docs/reference-doc-content.md",
280
- "domain": "agent"
206
+ "docFile": "docs/desc-panel.md",
207
+ "domain": "helper"
281
208
  },
282
209
  {
283
- "name": "SimpleTable 简易表格",
284
- "slug": "simple-table",
285
- "kind": "component",
286
- "description": "FlowAgent 节点详情中的轻量表格展示组件。",
287
- "aiSummary": "FlowAgent 节点详情中的轻量表格展示组件。 源码位置:src/components/chat-content/flow-agent-content/simple-table.vue。",
210
+ "name": "FileUploadBtn 文件上传按钮",
211
+ "slug": "file-upload-btn",
212
+ "category": "atomic",
213
+ "description": "聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type=\"file\">` 与可见的图标按钮;在按钮层过滤空文件与超过单文件大小上限的文件,**上传个数上限由上层(如 ChatInput)统一处理**。",
214
+ "aiSummary": "FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过滤空文件与超大单文件并 emit upload; 个数上限不在此截断,由 ChatInput 等与 FileContent 配合完成「选择 → 展示 → 发送」链路。",
288
215
  "relatedComponents": [
289
216
  {
290
- "slug": "flow-agent-node-detail",
291
- "relation": "节点详情中用于展示输入参数、插件输出定义和结构化输出"
217
+ "slug": "chat-input",
218
+ "relation": "输入区附件上传按钮常见挂载位置"
292
219
  },
293
220
  {
294
- "slug": "detail-section",
295
- "relation": "通常放在详情分段容器内使用"
221
+ "slug": "file-content",
222
+ "relation": "选中文件常以列表形式展示待发送内容"
296
223
  }
297
224
  ],
298
- "docFile": "docs/simple-table.md",
299
- "domain": "agent"
225
+ "docFile": "docs/file-upload-btn.md",
226
+ "domain": "media"
300
227
  },
301
228
  {
302
- "name": "ToolApprovalCard 工具审批卡片",
303
- "slug": "tool-approval-card",
304
- "kind": "component",
305
- "description": "渲染 AIDevToolApproval 中断的审批信息与取消操作。",
306
- "aiSummary": "渲染 AIDevToolApproval 中断的审批信息与取消操作。 源码位置:src/components/chat-message/interrupt-message/tool-approval-card.vue。",
229
+ "name": "HighlightKeyword 关键词高亮",
230
+ "slug": "highlight-keyword",
231
+ "category": "atomic",
232
+ "description": "函数式组件,用于在文本中高亮匹配的搜索关键词。通过 `useKeywordInject` 从上层注入关键词,自动将匹配部分包裹在带高亮样式的 `<span>` 中。",
233
+ "aiSummary": "HighlightKeyword 为函数式组件,从 inject 读取关键词并将匹配片段包在带样式 span 中,用于对话内搜索与列表过滤高亮。 ToolcallRender、DescPanel、FlowAgent 等场景组合使用。",
307
234
  "relatedComponents": [
308
235
  {
309
- "slug": "interrupt-message",
310
- "relation": "InterruptMessageRender 按 reason 派发渲染"
236
+ "slug": "toolcall-render",
237
+ "relation": "工具调用标题与状态文案高亮"
238
+ },
239
+ {
240
+ "slug": "desc-panel",
241
+ "relation": "工具详情键值与描述文本高亮"
242
+ },
243
+ {
244
+ "slug": "execution-summary",
245
+ "relation": "执行摘要搜索过滤与列表高亮"
311
246
  }
312
247
  ],
313
- "docFile": "docs/tool-approval-card.md",
314
- "domain": "agent"
248
+ "docFile": "docs/highlight-keyword.md",
249
+ "domain": "helper"
315
250
  },
316
251
  {
317
- "name": "ToolcallRender 工具调用渲染器",
318
- "slug": "toolcall-render",
319
- "kind": "component",
320
- "description": "渲染 assistant toolCalls,展示工具调用状态、参数和结果。",
321
- "aiSummary": "渲染 assistant toolCalls,展示工具调用状态、参数和结果。 源码位置:src/components/tool-call/toolcall-render/toolcall-render.vue。",
252
+ "name": "ImageContent 图片渲染",
253
+ "slug": "image-content",
254
+ "category": "atomic",
255
+ "description": "Markdown Token 层的图片渲染原子组件,被 `MarkdownContent` 在解析到图片 token 时自动调用,通常无需手动引入。",
256
+ "aiSummary": "ImageContent Markdown 解析到图片 token 时渲染,对流式拼接中的 URL 做防抖与预加载,并用模块级缓存避免重复闪烁。 三态展示加载中、成功与失败,通常由 MarkdownContent 自动挂载而非业务直接引用。",
322
257
  "relatedComponents": [
323
258
  {
324
- "slug": "desc-panel",
325
- "relation": "详情区展示参数与描述文本"
326
- },
327
- {
328
- "slug": "highlight-keyword",
329
- "relation": "标题与状态文案关键词高亮"
330
- },
331
- {
332
- "slug": "tool-message",
333
- "relation": "详情底部可内联工具返回消息"
259
+ "slug": "markdown-content",
260
+ "relation": "解析图片 token 后挂载本组件"
334
261
  }
335
262
  ],
336
- "docFile": "docs/toolcall-render.md",
337
- "domain": "agent"
263
+ "docFile": "docs/image-content.md",
264
+ "domain": "media"
338
265
  },
339
266
  {
340
- "name": "UserQuestionAnsweredCard 用户问题回答回显",
341
- "slug": "user-question-answered-card",
342
- "kind": "component",
343
- "description": " UserQuestion resume 成功后回显用户回答或取消状态。",
344
- "aiSummary": " UserQuestion resume 成功后回显用户回答或取消状态。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue。",
267
+ "name": "KeyValueContent 键值对内容",
268
+ "slug": "key-value-content",
269
+ "category": "atomic",
270
+ "description": "键值对列表展示原子组件,每行以 `key : value` 格式渲染一条数据,支持可选标题栏(带 `ThinkingIcon`)。",
271
+ "aiSummary": "KeyValueContent 以多行 key : value 形式展示结构化数据,可选标题栏与 ThinkingIcon 常见于用户消息等需要表格化键值的气泡展示。",
345
272
  "relatedComponents": [
346
273
  {
347
- "slug": "interrupt-message",
348
- "relation": "outcome.success 且 reason 为 UserQuestion 时挂载本组件"
349
- },
350
- {
351
- "slug": "user-question-card",
352
- "relation": "待回答面板,与本组件成对出现"
274
+ "slug": "user-message",
275
+ "relation": "用户消息内展示结构化附加信息"
353
276
  }
354
277
  ],
355
- "docFile": "docs/user-question-answered-card.md",
356
- "domain": "agent"
278
+ "docFile": "docs/key-value-content.md",
279
+ "domain": "helper"
357
280
  },
358
281
  {
359
- "name": "UserQuestionCard 用户问题中断",
360
- "slug": "user-question-card",
361
- "kind": "component",
362
- "description": "渲染 UserQuestion 中断的待回答面板,支持单选、多选、Others 与跳过。",
363
- "aiSummary": "渲染 UserQuestion 中断的待回答面板,支持单选、多选、Others 与跳过。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-card.vue。",
282
+ "name": "LatexContent LaTeX 公式渲染",
283
+ "slug": "latex-content",
284
+ "category": "atomic",
285
+ "description": "Markdown Token 层的 LaTeX 公式渲染原子组件,基于 **KaTeX** 实现。被 `MarkdownContent` 在解析到数学公式 token 时自动调用,通常无需手动引入。",
286
+ "aiSummary": "LatexContent 使用 KaTeX 渲染 math_block / math_inline 等 token,支持行内块级混排与流式防抖。 必填 props 为 token 数组;失败时静默降级展示原始 LaTeX 文本。 由 MarkdownContent 在数学插件解析后自动调用。",
364
287
  "relatedComponents": [
365
288
  {
366
- "slug": "interrupt-message",
367
- "relation": "outcome.success 时挂载 UserQuestionAnsweredCard 回显回答"
368
- },
369
- {
370
- "slug": "chat-container",
371
- "relation": "检测最近待回答 UserQuestion 并把 UserQuestionCard 放在输入区上方"
372
- },
373
- {
374
- "slug": "interrupt",
375
- "relation": "定义 UserQuestionInterrupt 与 UserQuestionResume 协议"
289
+ "slug": "markdown-content",
290
+ "relation": "插件解析 $...$ / $$...$$ 后生成数学 token 并挂载本组件"
376
291
  }
377
292
  ],
378
- "docFile": "docs/user-question-card.md",
379
- "domain": "agent"
293
+ "docFile": "docs/latex-content.md",
294
+ "domain": "content"
380
295
  },
381
296
  {
382
- "name": "UserQuestionChoice 用户问题选择题",
383
- "slug": "user-question-choice",
384
- "kind": "component",
385
- "description": "UserQuestionCard 默认的选择题渲染组件,封装单选/多选、Others 输入与答案组装。",
386
- "aiSummary": "UserQuestionCard 默认的选择题渲染组件,封装单选/多选、Others 输入与答案组装。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-choice.vue。",
297
+ "name": "MarkdownContent Markdown 内容渲染",
298
+ "slug": "markdown-content",
299
+ "category": "atomic",
300
+ "description": "AI 消息内容渲染的核心原子组件,集成代码高亮、LaTeX 公式、Mermaid 图表等能力,内置流式渲染优化(5ms throttle + 语法补全 + 防闪烁)。",
301
+ "aiSummary": "MarkdownContent Markdown 字符串解析为 token 并渲染,集成代码块、公式、Mermaid 等子渲染器。 核心 props 为 content 与 status;内置流式节流、语法补全与 DOMPurify 安全策略。 通常由 ContentRender、AssistantMessage 等间接使用,无需业务直接挂载。",
387
302
  "relatedComponents": [
388
303
  {
389
- "slug": "user-question-card",
390
- "relation": "默认通过"
304
+ "slug": "code-content",
305
+ "relation": "fence 代码块语法高亮与复制"
306
+ },
307
+ {
308
+ "slug": "latex-content",
309
+ "relation": "数学公式 token 的 KaTeX 渲染"
391
310
  },
392
311
  {
393
- "slug": "user-question-option",
394
- "relation": "内部逐条渲染选项行"
312
+ "slug": "mermaid-content",
313
+ "relation": "mermaid 代码块的图表渲染"
395
314
  },
396
315
  {
397
- "slug": "interrupt",
398
- "relation": "答案结构遵循 UserQuestionAnswerItem"
316
+ "slug": "content-render",
317
+ "relation": "上层按类型分发到本组件渲染 Markdown 字符串"
399
318
  }
400
319
  ],
401
- "docFile": "docs/user-question-choice.md",
402
- "domain": "agent"
403
- },
404
- {
405
- "name": "UserQuestionOption 用户问题选项",
406
- "slug": "user-question-option",
407
- "kind": "component",
408
- "description": "UserQuestionChoice 内部选项行,处理单选/多选状态和 Others 输入。",
409
- "aiSummary": "UserQuestionChoice 内部选项行,处理单选/多选状态和 Others 输入。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-option.vue。",
410
- "relatedComponents": [],
411
- "docFile": "docs/user-question-option.md",
412
- "domain": "agent"
320
+ "docFile": "docs/markdown-content.md",
321
+ "domain": "content"
413
322
  },
414
323
  {
415
- "name": "DeleteTool 删除确认按钮",
416
- "slug": "delete-tool",
417
- "kind": "component",
418
- "description": "消息删除二次确认工具。",
419
- "aiSummary": "消息删除二次确认工具。 源码位置:src/components/message-tools/delete-tool/delete-tool.vue。",
324
+ "name": "MermaidContent Mermaid 图表渲染",
325
+ "slug": "mermaid-content",
326
+ "category": "atomic",
327
+ "description": "Markdown Token 层的 Mermaid 图表渲染原子组件,被 `MarkdownContent` 在检测到 mermaid fence token 时自动调用,通常无需手动引入。",
328
+ "aiSummary": "MermaidContent 将 info 为 mermaid 的 fence token 渲染为 SVG,模块级懒加载单例 Mermaid 具备流式 throttle、错误静默与 SVG ID 随机化,避免多实例冲突。 由 MarkdownContent 在解析 mermaid 代码块时调用。",
420
329
  "relatedComponents": [
421
330
  {
422
- "slug": "tool-btn",
423
- "relation": "删除图标与触发入口"
424
- },
425
- {
426
- "slug": "message-tools",
427
- "relation": "delete 工具 id 时自动采用本组件"
331
+ "slug": "markdown-content",
332
+ "relation": "解析 mermaid 类型 fence 代码块后传入 token"
428
333
  }
429
334
  ],
430
- "docFile": "docs/delete-tool.md",
431
- "domain": "feedback"
335
+ "docFile": "docs/mermaid-content.md",
336
+ "domain": "content"
432
337
  },
433
338
  {
434
- "name": "MessageTools 消息工具栏",
435
- "slug": "message-tools",
436
- "kind": "component",
437
- "description": "消息悬浮工具栏,组合复制、删除、反馈等工具按钮。",
438
- "aiSummary": "消息悬浮工具栏,组合复制、删除、反馈等工具按钮。 源码位置:src/components/message-tools/message-tools.vue。",
339
+ "name": "ReferenceContent 引用文档内容",
340
+ "slug": "reference-content",
341
+ "category": "atomic",
342
+ "description": "引用文档列表渲染原子组件,用于展示 AI 回复中引用的参考文档,每项包含文档图标、标题、预览与跳转操作。",
343
+ "aiSummary": "ReferenceContent 以列表形式展示 AI 回复引用的参考文档:图标、标题、摘要与外链跳转。 由 ContentRender、ActivityMessage 等按消息类型分发时挂载。",
439
344
  "relatedComponents": [
440
345
  {
441
- "slug": "tool-btn",
442
- "relation": "普通工具项由 ToolBtn 渲染"
443
- },
444
- {
445
- "slug": "user-feedback",
446
- "relation": "like/unlike 时弹出反馈表单"
346
+ "slug": "content-render",
347
+ "relation": "ReferenceDocument 类型内容路由到本组件"
447
348
  },
448
349
  {
449
- "slug": "delete-tool",
450
- "relation": "id 为 delete 时替换为带确认的删除按钮"
350
+ "slug": "activity-message",
351
+ "relation": "知识库等活动场景内嵌引用列表"
451
352
  }
452
353
  ],
453
- "docFile": "docs/message-tools.md",
454
- "domain": "feedback"
354
+ "docFile": "docs/reference-content.md",
355
+ "domain": "helper"
455
356
  },
456
357
  {
457
358
  "name": "ScrollBtn 滚动按钮",
458
359
  "slug": "scroll-btn",
459
- "kind": "component",
460
- "description": "停止生成或返回底部等滚动/状态按钮。",
461
- "aiSummary": "停止生成或返回底部等滚动/状态按钮。 源码位置:src/components/ai-buttons/scroll-btn/scroll-btn.vue。",
360
+ "category": "atomic",
361
+ "description": "聊天容器底部浮动操作按钮的外壳组件,提供统一的胶囊样式(圆角 26px、高 24px、阴影),内容完全由插槽定制。",
362
+ "aiSummary": "ScrollBtn 为底部浮动操作提供统一胶囊外壳(圆角、阴影),具体图标与行为由插槽与父级决定。 常由 MessageContainer 用于「返回底部」与「停止生成」等场景。",
462
363
  "relatedComponents": [
463
364
  {
464
365
  "slug": "message-container",
@@ -466,361 +367,33 @@
466
367
  }
467
368
  ],
468
369
  "docFile": "docs/scroll-btn.md",
469
- "domain": "feedback"
370
+ "domain": "helper"
470
371
  },
471
372
  {
472
- "name": "ToolBtn 工具按钮",
473
- "slug": "tool-btn",
474
- "kind": "component",
475
- "description": "工具栏图标按钮。",
476
- "aiSummary": "工具栏图标按钮。 源码位置:src/components/ai-buttons/tool-btn/tool-btn.vue。",
373
+ "name": "SelectionFooter 选择操作栏",
374
+ "slug": "selection-footer",
375
+ "category": "atomic",
376
+ "description": "消息多选模式下的底部操作栏,提供全选、取消和确认操作。由 `ChatContainer` 在分享模式下自动渲染,通常不需要单独使用。",
377
+ "aiSummary": "SelectionFooter 为消息多选(如分享)提供底部操作栏:全选、取消与确认,并反映选中数量与 loading 由 ChatContainer 在对应模式下自动挂载,业务一般无需单独引用。",
477
378
  "relatedComponents": [
478
379
  {
479
- "slug": "message-tools",
480
- "relation": "父级组装多个工具按钮与交互"
380
+ "slug": "chat-container",
381
+ "relation": "多选/分享模式由容器渲染底部栏"
481
382
  },
482
383
  {
483
- "slug": "delete-tool",
484
- "relation": "删除确认场景内嵌为触发控件"
384
+ "slug": "message-container",
385
+ "relation": "与消息列表勾选状态联动"
485
386
  }
486
387
  ],
487
- "docFile": "docs/tool-btn.md",
488
- "domain": "feedback"
489
- },
490
- {
491
- "name": "UserFeedback 用户反馈",
492
- "slug": "user-feedback",
493
- "kind": "component",
494
- "description": "用户反馈弹层,提交踩/反馈原因。",
495
- "aiSummary": "用户反馈弹层,提交踩/反馈原因。 源码位置:src/components/message-tools/user-feedback/user-feedback.vue。",
496
- "relatedComponents": [
497
- {
498
- "slug": "message-tools",
499
- "relation": "点赞/踩操作触发并收集反馈"
500
- }
501
- ],
502
- "docFile": "docs/user-feedback.md",
503
- "domain": "feedback"
504
- },
505
- {
506
- "name": "ActivityLayout 活动布局",
507
- "slug": "activity-layout",
508
- "kind": "component",
509
- "description": "活动消息的折叠布局容器,提供 title/default 插槽。",
510
- "aiSummary": "活动消息的折叠布局容器,提供 title/default 插槽。 源码位置:src/components/chat-content/activity-layout/activity-layout.vue。",
511
- "relatedComponents": [
512
- {
513
- "slug": "activity-message",
514
- "relation": "活动消息通过本组件承载标题栏与内容区"
515
- },
516
- {
517
- "slug": "knowledge-rag-content",
518
- "relation": "知识召回活动复用本组件展示加载标题与正文"
519
- },
520
- {
521
- "slug": "reference-doc-content",
522
- "relation": "引用文档活动复用本组件展示文档数量与引用列表"
523
- },
524
- {
525
- "slug": "flow-agent-content",
526
- "relation": "FlowAgent 活动复用本组件,但隐藏默认折叠箭头"
527
- }
528
- ],
529
- "docFile": "docs/activity-layout.md",
530
- "domain": "helper"
531
- },
532
- {
533
- "name": "AiLoading 三点加载",
534
- "slug": "ai-loading",
535
- "kind": "component",
536
- "description": "小尺寸 AI 加载动效。",
537
- "aiSummary": "小尺寸 AI 加载动效。 源码位置:src/components/ai-loading/ai-loading.vue。",
538
- "relatedComponents": [
539
- {
540
- "slug": "loading-message",
541
- "relation": "列表末尾加载占位"
542
- },
543
- {
544
- "slug": "reasoning-message",
545
- "relation": "推理进行中的加载指示"
546
- },
547
- {
548
- "slug": "activity-message",
549
- "relation": "活动消息加载态指示"
550
- }
551
- ],
552
- "docFile": "docs/ai-loading.md",
553
- "domain": "helper"
554
- },
555
- {
556
- "name": "HighlightKeyword 关键词高亮",
557
- "slug": "highlight-keyword",
558
- "kind": "component",
559
- "description": "根据注入关键词高亮文本片段。",
560
- "aiSummary": "根据注入关键词高亮文本片段。 源码位置:src/components/highlight-keyword/highlight-keyword.ts。",
561
- "relatedComponents": [
562
- {
563
- "slug": "toolcall-render",
564
- "relation": "工具调用标题与状态文案高亮"
565
- },
566
- {
567
- "slug": "desc-panel",
568
- "relation": "工具详情键值与描述文本高亮"
569
- },
570
- {
571
- "slug": "execution-summary",
572
- "relation": "执行摘要搜索过滤与列表高亮"
573
- }
574
- ],
575
- "docFile": "docs/highlight-keyword.md",
576
- "domain": "helper"
577
- },
578
- {
579
- "name": "MessageLoading 品牌加载",
580
- "slug": "message-loading",
581
- "kind": "component",
582
- "description": "带品牌图标和逐字渐变动画的加载组件。",
583
- "aiSummary": "带品牌图标和逐字渐变动画的加载组件。 源码位置:src/components/message-loading/message-loading.vue。",
584
- "relatedComponents": [
585
- {
586
- "slug": "loading-message",
587
- "relation": "消息列表加载占位可选择使用品牌加载动效"
588
- },
589
- {
590
- "slug": "ai-loading",
591
- "relation": "更轻量的三点加载动画"
592
- }
593
- ],
594
- "docFile": "docs/message-loading.md",
595
- "domain": "helper"
596
- },
597
- {
598
- "name": "QuestionsContainer 问题容器占位",
599
- "slug": "questions-container",
600
- "kind": "component",
601
- "description": "源码为空文件,没有 props、emits、slots 或渲染能力;不建议作为功能组件使用。",
602
- "aiSummary": "源码为空文件,没有 props、emits、slots 或渲染能力;不建议作为功能组件使用。 源码位置:src/components/ai-questions/questions-container.vue。",
603
- "relatedComponents": [
604
- {
605
- "slug": "user-question-card",
606
- "relation": "用户问题中断交互请使用实际可渲染的问题卡片组件"
607
- },
608
- {
609
- "slug": "user-question-option",
610
- "relation": "用户问题选项行由实际中断组件承载"
611
- },
612
- {
613
- "slug": "interrupt-message",
614
- "relation": "HITL 中断消息由 InterruptMessage 分发到具体问题组件"
615
- }
616
- ],
617
- "docFile": "docs/questions-container.md",
618
- "domain": "helper"
619
- },
620
- {
621
- "name": "SelectionQuestion 选择问题占位",
622
- "slug": "selection-question",
623
- "kind": "component",
624
- "description": "源码为空文件,没有 props、emits、slots 或渲染能力;不建议作为功能组件使用。",
625
- "aiSummary": "源码为空文件,没有 props、emits、slots 或渲染能力;不建议作为功能组件使用。 源码位置:src/components/ai-questions/selection-question.vue。",
626
- "relatedComponents": [
627
- {
628
- "slug": "user-question-card",
629
- "relation": "选择类问题交互请使用实际可渲染的问题卡片组件"
630
- },
631
- {
632
- "slug": "user-question-option",
633
- "relation": "单个选项行由实际问题组件渲染"
634
- },
635
- {
636
- "slug": "interrupt-message",
637
- "relation": "HITL 中断消息由 InterruptMessage 分发到具体问题组件"
638
- }
639
- ],
640
- "docFile": "docs/selection-question.md",
641
- "domain": "helper"
642
- },
643
- {
644
- "name": "VNodeRenderer VNode 渲染器",
645
- "slug": "vnode-renderer",
646
- "kind": "component",
647
- "description": "将 Markdown token 转成 VNode 的内部渲染桥。",
648
- "aiSummary": "将 Markdown token 转成 VNode 的内部渲染桥。 源码位置:src/components/chat-content/vnode-renderer.ts。",
649
- "relatedComponents": [
650
- {
651
- "slug": "markdown-content",
652
- "relation": "MarkdownContent 对普通 token 分组使用本组件渲染"
653
- },
654
- {
655
- "slug": "code-content",
656
- "relation": "fence/code_block 代码块通常会被 MarkdownContent 提前分流到 CodeContent"
657
- },
658
- {
659
- "slug": "mermaid-content",
660
- "relation": "mermaid 代码块通常会被 MarkdownContent 提前分流到 MermaidContent"
661
- },
662
- {
663
- "slug": "image-content",
664
- "relation": "图片 token 由 tokensToVNodes 转为 ImageContent"
665
- }
666
- ],
667
- "docFile": "docs/vnode-renderer.md",
668
- "domain": "helper"
669
- },
670
- {
671
- "name": "AiPromptList Prompt 列表",
672
- "slug": "ai-prompt-list",
673
- "kind": "component",
674
- "description": "/ Prompt 选择列表,供 AiSlashInput 插入模板文本。",
675
- "aiSummary": "/ Prompt 选择列表,供 AiSlashInput 插入模板文本。 源码位置:src/components/chat-input/ai-slash-input/ai-prompt-list/ai-prompt-list.vue。",
676
- "relatedComponents": [],
677
- "docFile": "docs/ai-prompt-list.md",
678
- "domain": "input"
679
- },
680
- {
681
- "name": "AiSelection 划词选择",
682
- "slug": "ai-selection",
683
- "kind": "component",
684
- "description": "监听选中文本并展示快捷操作浮窗。",
685
- "aiSummary": "监听选中文本并展示快捷操作浮窗。 源码位置:src/components/ai-selection/ai-selection.vue。",
686
- "relatedComponents": [
687
- {
688
- "slug": "shortcut-btn",
689
- "relation": "弹窗内快捷指令按钮/菜单项由该基础组件渲染"
690
- },
691
- {
692
- "slug": "chat-input",
693
- "relation": "划词结果常回填或触发与输入框联动的快捷指令"
694
- }
695
- ],
696
- "docFile": "docs/ai-selection.md",
697
- "domain": "input"
698
- },
699
- {
700
- "name": "AiSlashEditor 富文本编辑器",
701
- "slug": "ai-slash-editor",
702
- "kind": "component",
703
- "description": "旧版富文本编辑器实现,封装 command selection 与提示菜单。",
704
- "aiSummary": "旧版富文本编辑器实现,封装 command selection 与提示菜单。 源码位置:src/components/chat-input/ai-slash-editor/ai-slash-editor.vue。",
705
- "relatedComponents": [],
706
- "docFile": "docs/ai-slash-editor.md",
707
- "domain": "input"
708
- },
709
- {
710
- "name": "AiSlashInput 富文本命令输入",
711
- "slug": "ai-slash-input",
712
- "kind": "component",
713
- "description": "ChatInput 内部富文本输入,支持 / Prompt 与 @ 资源标签。",
714
- "aiSummary": "ChatInput 内部富文本输入,支持 / Prompt 与 @ 资源标签。 源码位置:src/components/chat-input/ai-slash-input/ai-slash-input.vue。",
715
- "relatedComponents": [],
716
- "docFile": "docs/ai-slash-input.md",
717
- "domain": "input"
718
- },
719
- {
720
- "name": "AiSlashMenu 资源菜单",
721
- "slug": "ai-slash-menu",
722
- "kind": "component",
723
- "description": "@ 资源选择菜单,展示资源项供 AiSlashInput 插入标签。",
724
- "aiSummary": "@ 资源选择菜单,展示资源项供 AiSlashInput 插入标签。 源码位置:src/components/chat-input/ai-slash-input/ai-slash-menu/ai-slash-menu.vue。",
725
- "relatedComponents": [],
726
- "docFile": "docs/ai-slash-menu.md",
727
- "domain": "input"
728
- },
729
- {
730
- "name": "ChatInput 聊天输入框",
731
- "slug": "chat-input",
732
- "kind": "component",
733
- "description": "聊天输入区,组合富文本输入、快捷指令、附件、引用、发送/停止等交互。",
734
- "aiSummary": "聊天输入区,组合富文本输入、快捷指令、附件、引用、发送/停止等交互。 源码位置:src/components/chat-input/chat-input.vue。",
735
- "relatedComponents": [
736
- {
737
- "slug": "shortcut-btns",
738
- "relation": "底部附件区默认展示的快捷指令列表"
739
- },
740
- {
741
- "slug": "shortcut-btn",
742
- "relation": "已选快捷指令以单按钮形式展示并可关闭"
743
- },
744
- {
745
- "slug": "shortcut-render",
746
- "relation": "快捷指令含 components 时由外层唤起表单渲染"
747
- },
748
- {
749
- "slug": "chat-container",
750
- "relation": "顶层聊天布局中作为输入区子组件"
751
- },
752
- {
753
- "slug": "cite-content",
754
- "relation": "消息引用区展示选中的上下文片段"
755
- }
756
- ],
757
- "docFile": "docs/chat-input.md",
758
- "domain": "input"
759
- },
760
- {
761
- "name": "FileUploadBtn 文件上传按钮",
762
- "slug": "file-upload-btn",
763
- "kind": "component",
764
- "description": "文件选择按钮,封装 input[type=file] 并输出选择事件。",
765
- "aiSummary": "文件选择按钮,封装 input[type=file] 并输出选择事件。 源码位置:src/components/ai-buttons/file-upload-btn/file-upload-btn.vue。",
766
- "relatedComponents": [
767
- {
768
- "slug": "chat-input",
769
- "relation": "输入区附件上传按钮常见挂载位置"
770
- },
771
- {
772
- "slug": "file-content",
773
- "relation": "选中文件常以列表形式展示待发送内容"
774
- }
775
- ],
776
- "docFile": "docs/file-upload-btn.md",
777
- "domain": "input"
778
- },
779
- {
780
- "name": "InputAttachment 输入附件区",
781
- "slug": "input-attachment",
782
- "kind": "component",
783
- "description": "ChatInput 底部附件区布局,承载快捷按钮、文件与发送图标。",
784
- "aiSummary": "ChatInput 底部附件区布局,承载快捷按钮、文件与发送图标。 源码位置:src/components/chat-input/input-attachment/input-attachment.vue。",
785
- "relatedComponents": [],
786
- "docFile": "docs/input-attachment.md",
787
- "domain": "input"
788
- },
789
- {
790
- "name": "InputInfoAlert 输入提示条",
791
- "slug": "input-info-alert",
792
- "kind": "component",
793
- "description": "ChatInput 上方的信息提示条。",
794
- "aiSummary": "ChatInput 上方的信息提示条。 源码位置:src/components/chat-input/input-info-alert.vue。",
795
- "relatedComponents": [],
796
- "docFile": "docs/input-info-alert.md",
797
- "domain": "input"
798
- },
799
- {
800
- "name": "SelectionFooter 多选操作栏",
801
- "slug": "selection-footer",
802
- "kind": "component",
803
- "description": "消息多选/分享模式下的底部操作栏。",
804
- "aiSummary": "消息多选/分享模式下的底部操作栏。 源码位置:src/components/selection-footer/selection-footer.vue。",
805
- "relatedComponents": [
806
- {
807
- "slug": "chat-container",
808
- "relation": "多选/分享模式由容器渲染底部栏"
809
- },
810
- {
811
- "slug": "message-container",
812
- "relation": "与消息列表勾选状态联动"
813
- }
814
- ],
815
- "docFile": "docs/selection-footer.md",
816
- "domain": "input"
388
+ "docFile": "docs/selection-footer.md",
389
+ "domain": "helper"
817
390
  },
818
391
  {
819
392
  "name": "ShortcutBtn 快捷指令按钮",
820
393
  "slug": "shortcut-btn",
821
- "kind": "component",
822
- "description": "单个快捷指令按钮,支持默认/append 插槽和 expose focus。",
823
- "aiSummary": "单个快捷指令按钮,支持默认/append 插槽和 expose focus。 源码位置:src/components/ai-shortcut/shortcut-btn/shortcut-btn.vue。",
394
+ "category": "atomic",
395
+ "description": "单个快捷指令的渲染单元,封装图标选择逻辑和两种布局模式(按钮 / 菜单项)。",
396
+ "aiSummary": "ShortcutBtn 渲染单个快捷指令入口,封装图标解析与「按钮 / 下拉菜单项」两种布局,并暴露根元素供父级测量。 由 ShortcutBtns、AiSelection、ChatInput 内部复用;含 components 的快捷指令可无默认图标。 通过 click 事件传出当前 Shortcut,append 槽常用于关闭按钮。",
824
397
  "relatedComponents": [
825
398
  {
826
399
  "slug": "shortcut-btns",
@@ -841,9 +414,9 @@
841
414
  {
842
415
  "name": "ShortcutBtns 快捷指令按钮组",
843
416
  "slug": "shortcut-btns",
844
- "kind": "component",
845
- "description": "快捷指令列表入口,内部组合多个 ShortcutBtn。",
846
- "aiSummary": "快捷指令列表入口,内部组合多个 ShortcutBtn。 源码位置:src/components/ai-shortcut/shortcut-btns/shortcut-btns.vue。",
417
+ "category": "atomic",
418
+ "description": "快捷指令按钮列表,内置**响应式溢出收起**:根据容器实际宽度动态计算可见数量,超出部分自动收入\"更多\"下拉菜单。",
419
+ "aiSummary": "ShortcutBtns 横向展示快捷指令按钮组,按容器宽度动态计算可见数量,溢出收入「更多」下拉。 默认由 ChatInput 嵌入附件槽;选中含 components 的指令后需配合 ShortcutRender 展示表单。 通过 selectShortcut 等与外层同步当前快捷指令。",
847
420
  "relatedComponents": [
848
421
  {
849
422
  "slug": "shortcut-btn",
@@ -862,139 +435,49 @@
862
435
  "domain": "input"
863
436
  },
864
437
  {
865
- "name": "ShortcutRender 快捷指令表单",
866
- "slug": "shortcut-render",
867
- "kind": "component",
868
- "description": "渲染快捷指令 components 表单并回传确认数据。",
869
- "aiSummary": "渲染快捷指令 components 表单并回传确认数据。 源码位置:src/components/ai-shortcut/shortcut-render/shortcut-render.vue。",
870
- "relatedComponents": [
871
- {
872
- "slug": "shortcut-btn",
873
- "relation": "与快捷指令 Shortcut 元数据一致,表单提交前在列表中选中入口"
874
- },
875
- {
876
- "slug": "chat-input",
877
- "relation": "提交或取消后与输入框内容与状态联动"
878
- },
879
- {
880
- "slug": "chat-container",
881
- "relation": "顶层聊天布局中承载快捷表单区域"
882
- }
883
- ],
884
- "docFile": "docs/shortcut-render.md",
885
- "domain": "input"
886
- },
887
- {
888
- "name": "AiImage 图片展示",
889
- "slug": "ai-image",
890
- "kind": "component",
891
- "description": "图片展示组件,组合加载、错误、预览和 extra 插槽。",
892
- "aiSummary": "图片展示组件,组合加载、错误、预览和 extra 插槽。 源码位置:src/components/image-preview/image.vue。",
893
- "relatedComponents": [
894
- {
895
- "slug": "image-preview",
896
- "relation": "独立模式下内嵌全屏预览,单图预览入口"
897
- },
898
- {
899
- "slug": "image-preview-group",
900
- "relation": "组内注册子图并统一打开多图预览"
901
- }
902
- ],
903
- "docFile": "docs/ai-image.md",
904
- "domain": "helper"
905
- },
906
- {
907
- "name": "FileContent 文件内容",
908
- "slug": "file-content",
909
- "kind": "component",
910
- "description": "渲染文件附件,支持图片预览和下载事件。",
911
- "aiSummary": "渲染文件附件,支持图片预览和下载事件。 源码位置:src/components/chat-content/file-content/file-content.vue。",
912
- "relatedComponents": [
913
- {
914
- "slug": "image-preview",
915
- "relation": "点击图片缩略图打开全屏预览"
916
- },
917
- {
918
- "slug": "user-message",
919
- "relation": "用户消息只读展示附件列表"
920
- }
921
- ],
922
- "docFile": "docs/file-content.md",
923
- "domain": "helper"
924
- },
925
- {
926
- "name": "ImageContent 图片内容",
927
- "slug": "image-content",
928
- "kind": "component",
929
- "description": "渲染 Markdown 图片 token。",
930
- "aiSummary": "渲染 Markdown 图片 token。 源码位置:src/components/markdown-token/image-content/image-content.vue。",
438
+ "name": "TextContent 文本内容",
439
+ "slug": "text-content",
440
+ "category": "atomic",
441
+ "description": "纯文本气泡组件,使用 Vue 文本插值渲染 `content`,天然防 XSS。",
442
+ "aiSummary": "TextContent Vue 文本插值渲染纯文本气泡,不解析 HTML,适合简单提示与用户/助手纯文案。 需要 Markdown、代码块或公式时应改用 MarkdownContent 等富文本组件。",
931
443
  "relatedComponents": [
932
444
  {
933
445
  "slug": "markdown-content",
934
- "relation": "解析图片 token 后挂载本组件"
935
- }
936
- ],
937
- "docFile": "docs/image-content.md",
938
- "domain": "helper"
939
- },
940
- {
941
- "name": "ImagePreviewGroup 图片预览组",
942
- "slug": "image-preview-group",
943
- "kind": "component",
944
- "description": "通过 provide/inject 管理同组图片预览。",
945
- "aiSummary": "通过 provide/inject 管理同组图片预览。 源码位置:src/components/image-preview/image-preview-group.vue。",
946
- "relatedComponents": [
947
- {
948
- "slug": "ai-image",
949
- "relation": "子级注册并参与多图预览集合"
446
+ "relation": "需要富文本时的替代方案"
950
447
  },
951
448
  {
952
- "slug": "image-preview",
953
- "relation": "内置实例承载多图切换与工具栏"
449
+ "slug": "user-message",
450
+ "relation": "用户消息中纯文本内容展示"
954
451
  }
955
452
  ],
956
- "docFile": "docs/image-preview-group.md",
453
+ "docFile": "docs/text-content.md",
957
454
  "domain": "helper"
958
455
  },
959
456
  {
960
- "name": "ImagePreview 图片预览",
961
- "slug": "image-preview",
962
- "kind": "component",
963
- "description": "图片全屏预览容器,支持缩放、旋转、下载工具栏。",
964
- "aiSummary": "图片全屏预览容器,支持缩放、旋转、下载工具栏。 源码位置:src/components/image-preview/image-preview.vue。",
457
+ "name": "ToolBtn 工具按钮",
458
+ "slug": "tool-btn",
459
+ "category": "atomic",
460
+ "description": "消息工具栏中的单个操作按钮,内置 SVG 图标映射、Tippy 悬浮提示、激活态与禁用态,通常由 `MessageTools` 管理,一般不需要手动使用。",
461
+ "aiSummary": "ToolBtn 为消息工具栏提供单个操作入口:内置常用 id 与 SVG 图标映射、Tippy 提示、激活与禁用态。 通常由 MessageTools 遍历配置渲染;DeleteTool 也可将其作为删除触发的视觉入口。",
965
462
  "relatedComponents": [
966
463
  {
967
- "slug": "ai-image",
968
- "relation": "独立模式下由 AiImage 打开预览"
969
- },
970
- {
971
- "slug": "image-preview-group",
972
- "relation": "组内容器内持有一个实例做多图切换"
464
+ "slug": "message-tools",
465
+ "relation": "父级组装多个工具按钮与交互"
973
466
  },
974
467
  {
975
- "slug": "file-content",
976
- "relation": "文件列表点击缩略图触发预览"
468
+ "slug": "delete-tool",
469
+ "relation": "删除确认场景内嵌为触发控件"
977
470
  }
978
471
  ],
979
- "docFile": "docs/image-preview.md",
980
- "domain": "helper"
981
- },
982
- {
983
- "name": "PreviewToolbar 图片预览工具栏",
984
- "slug": "preview-toolbar",
985
- "kind": "component",
986
- "description": "图片预览的缩放、旋转、下载等工具按钮。",
987
- "aiSummary": "图片预览的缩放、旋转、下载等工具按钮。 源码位置:src/components/image-preview/preview-toolbar.vue。",
988
- "relatedComponents": [],
989
- "docFile": "docs/preview-toolbar.md",
990
- "domain": "helper"
472
+ "docFile": "docs/tool-btn.md",
473
+ "domain": "tools"
991
474
  },
992
475
  {
993
476
  "name": "ActivityMessage 活动消息",
994
477
  "slug": "activity-message",
995
- "kind": "component",
996
- "description": " activityType 分发 FlowAgent、知识召回、引用文档等活动内容。",
997
- "aiSummary": " activityType 分发 FlowAgent、知识召回、引用文档等活动内容。 源码位置:src/components/chat-message/activity-message/activity-message.vue。",
478
+ "category": "molecular",
479
+ "description": "活动消息组件,用于展示 AI 的知识检索(Knowledge RAG)过程、参考文档引用列表和 FlowAgent 流程执行情况。通过 `activityType` 切换三种工作模式,点击标题栏可折叠/展开内容区域。",
480
+ "aiSummary": "ActivityMessage 展示活动类消息:知识检索(knowledge_rag)、引用文档列表、FlowAgent 执行(activityType 区分),标题可折叠。 content 结构随模式变化。由 MessageRender 在 activity 角色下渲染,用于 RAG/引用/流程执行过程可视化。",
998
481
  "relatedComponents": [
999
482
  {
1000
483
  "slug": "message-render",
@@ -1008,12 +491,31 @@
1008
491
  "docFile": "docs/activity-message.md",
1009
492
  "domain": "message"
1010
493
  },
494
+ {
495
+ "name": "AiSelection AI 划词选择弹窗",
496
+ "slug": "ai-selection",
497
+ "category": "molecular",
498
+ "description": "AI 划词选择组件,监听用户在页面中的文本选区,在选区附近弹出快捷操作菜单。支持自定义快捷指令列表、数量限制、垂直偏移以及完全自定义插槽内容。",
499
+ "aiSummary": "AiSelection 在 document 级监听文本选区,在选区附近弹出快捷操作菜单;每页建议只挂载一个实例。 通过 shortcuts、maxShortcutCount、offset 等配置菜单内容与布局,支持完全自定义 default 插槽与 Shadow DOM 场景。 常与 ChatInput 或业务侧联动,将选中文本作为追问上下文。",
500
+ "relatedComponents": [
501
+ {
502
+ "slug": "shortcut-btn",
503
+ "relation": "弹窗内快捷指令按钮/菜单项由该原子组件渲染"
504
+ },
505
+ {
506
+ "slug": "chat-input",
507
+ "relation": "划词结果常回填或触发与输入框联动的快捷指令"
508
+ }
509
+ ],
510
+ "docFile": "docs/ai-selection.md",
511
+ "domain": "input"
512
+ },
1011
513
  {
1012
514
  "name": "AssistantMessage AI 助手消息",
1013
515
  "slug": "assistant-message",
1014
- "kind": "component",
1015
- "description": "渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。",
1016
- "aiSummary": "渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。 源码位置:src/components/chat-message/assistant-message/assistant-message.vue。",
516
+ "category": "molecular",
517
+ "description": "AI 助手消息展示组件,负责渲染 AI 回复的文本内容和工具调用(Tool Calls)结果。",
518
+ "aiSummary": "AssistantMessage 渲染 AI 助手回复:正文由 ContentRender(可被默认插槽替换)与 ToolCallRender 展示工具调用及 MCP 标记。 toolCalls[].toolMessage 可内联工具执行结果。用于 MessageRender 分发的 assistant 角色,流式场景配合 streaming 状态更新。",
1017
519
  "relatedComponents": [
1018
520
  {
1019
521
  "slug": "message-render",
@@ -1032,429 +534,442 @@
1032
534
  "domain": "message"
1033
535
  },
1034
536
  {
1035
- "name": "InfoMessage 信息消息",
1036
- "slug": "info-message",
1037
- "kind": "component",
1038
- "description": "渲染居中的系统信息提示。",
1039
- "aiSummary": "渲染居中的系统信息提示。 源码位置:src/components/chat-message/info-message/info-message.vue。",
537
+ "name": "ChatContainer 聊天容器",
538
+ "slug": "chat-container",
539
+ "category": "molecular",
540
+ "description": "顶层聊天容器组件,整合了 `MessageContainer`(消息列表)、`ChatInput`(输入框)、`ExecutionSummary`(执行摘要面板)、`ShortcutRender`(快捷指令表单)和 `SelectionFooter`(多选操作栏)。提供完整的 AI 对话界面布局能力。",
541
+ "aiSummary": "ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer 对齐;renderMode 会通过内部 provide 下传给子内容组件。",
1040
542
  "relatedComponents": [
1041
543
  {
1042
- "slug": "message-render",
1043
- "relation": "由 MessageRender 在 role 为 info 时创建"
544
+ "slug": "message-container",
545
+ "relation": "消息列表与滚动区域"
1044
546
  },
1045
547
  {
1046
- "slug": "message-container",
1047
- "relation": "嵌入消息列表时由 MessageContainer 统一布局与滚动"
1048
- }
1049
- ],
1050
- "docFile": "docs/info-message.md",
1051
- "domain": "message"
1052
- },
1053
- {
1054
- "name": "LoadingMessage 加载消息",
1055
- "slug": "loading-message",
1056
- "kind": "component",
1057
- "description": "消息列表中的加载占位,默认使用 AiLoading,也支持默认插槽覆盖。",
1058
- "aiSummary": "消息列表中的加载占位,默认使用 AiLoading,也支持默认插槽覆盖。 源码位置:src/components/chat-message/loading-message/loading-message.vue。",
1059
- "relatedComponents": [
548
+ "slug": "chat-input",
549
+ "relation": "对话输入与快捷指令入口"
550
+ },
1060
551
  {
1061
- "slug": "message-container",
1062
- "relation": "在消息列表末尾自动追加 Loading 消息组"
552
+ "slug": "shortcut-render",
553
+ "relation": "快捷指令表单浮层"
1063
554
  },
1064
555
  {
1065
- "slug": "message-render",
1066
- "relation": "role 为 loading 时由 MessageRender 渲染"
556
+ "slug": "execution-summary",
557
+ "relation": "执行摘要侧栏与定位"
1067
558
  },
1068
559
  {
1069
- "slug": "ai-loading",
1070
- "relation": "内部使用 AiLoading 基础组件"
560
+ "slug": "selection-footer",
561
+ "relation": "多选分享底部操作栏"
1071
562
  }
1072
563
  ],
1073
- "docFile": "docs/loading-message.md",
1074
- "domain": "message"
564
+ "docFile": "docs/chat-container.md",
565
+ "domain": "input"
1075
566
  },
1076
567
  {
1077
- "name": "MessageRender 消息渲染器",
1078
- "slug": "message-render",
1079
- "kind": "component",
1080
- "description": " message.role 分发到用户、助手、工具、推理、活动、中断等消息组件。",
1081
- "aiSummary": " message.role 分发到用户、助手、工具、推理、活动、中断等消息组件。 源码位置:src/components/chat-message/message-render/message-render.vue。",
568
+ "name": "ChatInput 聊天输入框",
569
+ "slug": "chat-input",
570
+ "category": "molecular",
571
+ "description": "聊天消息输入框组件,支持快捷指令选择、资源 `@` 引用、Prompt `/` 模板、消息引用、文件上传(拖拽/粘贴/点击)等功能。",
572
+ "aiSummary": "ChatInput 是聊天主输入区,集成富文本编辑(/ 提示词模板、@ 资源引用)、消息引用、附件上传与快捷指令入口。 通过 prompts、resources、shortcuts 等 props 配置能力,配合 messageStatus 控制发送、流式与停止。 内部组合 ShortcutBtns、FileUploadBtn 等,与 ShortcutRender 联动完成含表单的快捷指令流程。",
1082
573
  "relatedComponents": [
1083
574
  {
1084
- "slug": "message-container",
1085
- "relation": "在 MessageContainer 中按组调用以渲染每条消息"
575
+ "slug": "shortcut-btns",
576
+ "relation": "底部附件区默认展示的快捷指令列表"
1086
577
  },
1087
578
  {
1088
- "slug": "assistant-message",
1089
- "relation": "role 为 assistant 时渲染 AI 回复与工具调用"
579
+ "slug": "shortcut-btn",
580
+ "relation": "已选快捷指令以单按钮形式展示并可关闭"
1090
581
  },
1091
582
  {
1092
- "slug": "user-message",
1093
- "relation": "role user 时渲染用户消息"
583
+ "slug": "shortcut-render",
584
+ "relation": "快捷指令含 components 时由外层唤起表单渲染"
1094
585
  },
1095
586
  {
1096
- "slug": "interrupt-message",
1097
- "relation": "role 为 interrupt 时渲染 InterruptMessageRender"
587
+ "slug": "chat-container",
588
+ "relation": "顶层聊天布局中作为输入区子组件"
589
+ },
590
+ {
591
+ "slug": "cite-content",
592
+ "relation": "消息引用区展示选中的上下文片段"
1098
593
  }
1099
594
  ],
1100
- "docFile": "docs/message-render.md",
1101
- "domain": "message"
595
+ "docFile": "docs/chat-input.md",
596
+ "domain": "input"
1102
597
  },
1103
598
  {
1104
- "name": "ReasoningMessage 推理消息",
1105
- "slug": "reasoning-message",
1106
- "kind": "component",
1107
- "description": "渲染推理过程,覆盖加载、错误与 Markdown 内容展示。",
1108
- "aiSummary": "渲染推理过程,覆盖加载、错误与 Markdown 内容展示。 源码位置:src/components/chat-message/reasoning-message/reasoning-message.vue。",
599
+ "name": "ContentRender 内容渲染器",
600
+ "slug": "content-render",
601
+ "category": "molecular",
602
+ "description": "消息内容渲染分发组件,根据 `content` 的 JavaScript 类型自动选择渲染方式:字符串 → `MarkdownContent`(Markdown 渲染),数组 → `ReferenceContent`(引用列表)。",
603
+ "aiSummary": "ContentRender 按消息 content 类型分发:字符串走 Markdown 管线,数组可走引用文档等;可扩展自定义 slot 主要 props 为 content、status,与 MessageRender、AssistantMessage 等配合使用。 内置与 MarkdownContent、ReferenceContent 等原子/分子组件衔接。",
1109
604
  "relatedComponents": [
1110
605
  {
1111
- "slug": "message-render",
1112
- "relation": " MessageRender 在 role 为 reasoning 时创建"
606
+ "slug": "markdown-content",
607
+ "relation": "文本类 Markdown 正文的默认渲染实现"
1113
608
  },
1114
609
  {
1115
- "slug": "assistant-message",
1116
- "relation": "推理结束后通常紧跟 Assistant 的正式回复"
610
+ "slug": "reference-content",
611
+ "relation": "引用文档数组类型的列表渲染"
1117
612
  },
1118
613
  {
1119
- "slug": "markdown-content",
1120
- "relation": "内容区通过 Markdown 渲染推理文本"
614
+ "slug": "assistant-message",
615
+ "relation": "AI 回复中默认通过本组件渲染正文"
1121
616
  }
1122
617
  ],
1123
- "docFile": "docs/reasoning-message.md",
1124
- "domain": "message"
618
+ "docFile": "docs/content-render.md",
619
+ "domain": "content"
1125
620
  },
1126
621
  {
1127
- "name": "ToolMessage 工具消息",
1128
- "slug": "tool-message",
1129
- "kind": "component",
1130
- "description": "渲染工具返回内容,JSON 场景交给 DescPanel 展示。",
1131
- "aiSummary": "渲染工具返回内容,JSON 场景交给 DescPanel 展示。 源码位置:src/components/chat-message/tool-message/tool-message.vue。",
622
+ "name": "DeleteTool 删除确认按钮",
623
+ "slug": "delete-tool",
624
+ "category": "molecular",
625
+ "description": "删除操作的二次确认组件。点击删除图标后弹出确认弹窗,用户需再次点击\"删除\"按钮才会触发 `confirm` 事件,防止误删。内部由 `ToolBtn`(触发按钮)+ `Tippy`(确认弹窗)组合实现。",
626
+ "aiSummary": "DeleteTool 在点击删除图标后弹出 Tippy 确认层,需再次点击「删除」才 emit confirm,避免误删。 触发器为 ToolBtn;MessageTools 在工具 id 为 delete 时用本组件替换普通 ToolBtn。",
1132
627
  "relatedComponents": [
1133
628
  {
1134
- "slug": "assistant-message",
1135
- "relation": "结果常作为 assistant 消息中 toolCall.toolMessage 内联展示"
1136
- },
1137
- {
1138
- "slug": "message-render",
1139
- "relation": "独立 tool 角色消息由 MessageRender 渲染为 ToolMessage"
629
+ "slug": "tool-btn",
630
+ "relation": "删除图标与触发入口"
1140
631
  },
1141
632
  {
1142
- "slug": "desc-panel",
1143
- "relation": "内部使用 DescPanel 展示「返回内容」"
633
+ "slug": "message-tools",
634
+ "relation": "delete 工具 id 时自动采用本组件"
1144
635
  }
1145
636
  ],
1146
- "docFile": "docs/tool-message.md",
1147
- "domain": "message"
637
+ "docFile": "docs/delete-tool.md",
638
+ "domain": "tools"
1148
639
  },
1149
640
  {
1150
- "name": "UserMessage 用户消息",
1151
- "slug": "user-message",
1152
- "kind": "component",
1153
- "description": "渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。",
1154
- "aiSummary": "渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。 源码位置:src/components/chat-message/user-message/user-message.vue。",
641
+ "name": "ExecutionSummary 执行摘要",
642
+ "slug": "execution-summary",
643
+ "category": "molecular",
644
+ "description": "执行摘要面板组件,以时间线形式展示对话中的工具调用和 FlowAgent 活动记录。支持关键词搜索过滤和点击定位到对话中的消息位置。",
645
+ "aiSummary": "ExecutionSummary 以时间线汇总工具调用与 FlowAgent 等活动记录,支持关键词过滤与 HighlightKeyword 高亮。 点击可 emit 定位到会话中对应消息;内部用 MessageRender 渲染摘要条目中的消息片段。",
1155
646
  "relatedComponents": [
1156
647
  {
1157
648
  "slug": "message-render",
1158
- "relation": "由 MessageRender 在 role 为 user 时创建"
649
+ "relation": "摘要列表内渲染消息内容"
1159
650
  },
1160
651
  {
1161
- "slug": "message-tools",
1162
- "relation": "消息工具栏交互与状态由 MessageTools 体系承载"
652
+ "slug": "highlight-keyword",
653
+ "relation": "搜索关键词注入与高亮"
1163
654
  },
1164
655
  {
1165
- "slug": "message-container",
1166
- "relation": "嵌入列表时由 MessageContainer 管理分组与多选"
656
+ "slug": "chat-container",
657
+ "relation": "常与侧栏「执行情况」Tab 组合"
1167
658
  }
1168
659
  ],
1169
- "docFile": "docs/user-message.md",
1170
- "domain": "message"
660
+ "docFile": "docs/execution-summary.md",
661
+ "domain": "helper"
1171
662
  },
1172
663
  {
1173
- "name": "AnimationText 动画文本",
1174
- "slug": "animation-text",
1175
- "kind": "component",
1176
- "description": "按文本增量播放流式动画。",
1177
- "aiSummary": "按文本增量播放流式动画。 源码位置:src/components/animation-text/animation-text.vue。",
664
+ "name": "FileContent 文件内容展示",
665
+ "slug": "file-content",
666
+ "category": "molecular",
667
+ "description": "文件列表展示组件,支持图片缩略图预览、点击图片全屏预览(`ImagePreview`)、文档卡片展示(文件名/扩展名/文件大小)、图片加载失败占位和删除操作。",
668
+ "aiSummary": "FileContent 展示消息或输入区附件列表:图片显示缩略图并可进入 ImagePreview,文档以卡片展示文件名、类型与大小。 支持删除、图片加载失败占位及仅有远端文件名的降级展示。",
1178
669
  "relatedComponents": [
1179
670
  {
1180
- "slug": "use-animation-text",
1181
- "relation": "提供 chunk 拆分与 animationStyle 的 composable"
671
+ "slug": "image-preview",
672
+ "relation": "点击图片缩略图打开全屏预览"
1182
673
  },
1183
674
  {
1184
- "slug": "markdown-content",
1185
- "relation": "流式 Markdown 中可与渐显策略配合"
1186
- }
1187
- ],
1188
- "docFile": "docs/animation-text.md",
1189
- "domain": "rendering"
1190
- },
1191
- {
1192
- "name": "CiteContent 引用内容",
1193
- "slug": "cite-content",
1194
- "kind": "component",
1195
- "description": "渲染输入或消息中的引用片段。",
1196
- "aiSummary": "渲染输入或消息中的引用片段。 源码位置:src/components/chat-content/cite-content/cite-content.vue。",
1197
- "relatedComponents": [
1198
- {
1199
- "slug": "chat-input",
1200
- "relation": "输入区展示待发送引用内容"
675
+ "slug": "user-message",
676
+ "relation": "用户消息只读展示附件列表"
1201
677
  }
1202
678
  ],
1203
- "docFile": "docs/cite-content.md",
1204
- "domain": "rendering"
679
+ "docFile": "docs/file-content.md",
680
+ "domain": "media"
1205
681
  },
1206
682
  {
1207
- "name": "CodeContent 代码块",
1208
- "slug": "code-content",
1209
- "kind": "component",
1210
- "description": "渲染 Markdown 代码块,支持高亮、复制和 header 插槽。",
1211
- "aiSummary": "渲染 Markdown 代码块,支持高亮、复制和 header 插槽。 源码位置:src/components/markdown-token/code-content/code-content.vue。",
683
+ "name": "ImagePreviewGroup 图片预览组",
684
+ "slug": "image-preview-group",
685
+ "category": "molecular",
686
+ "description": "多图预览管理容器。通过 `provide/inject` + `Map<symbol>` 模式管理子级 `AiImage` 的注册与预览状态,点击任意子图片时自动收集所有已注册图片并打开多图预览。",
687
+ "aiSummary": "ImagePreviewGroup 通过 provide/inject 与子级 symbol 注册表管理多个 AiImage,点击任一子图时聚合已注册图片并打开内置全屏预览。 解决同屏多缩略图统一多图浏览与索引切换的需求。",
1212
688
  "relatedComponents": [
1213
689
  {
1214
- "slug": "markdown-content",
1215
- "relation": "解析 Markdown 后生成 fence token 并渲染本组件"
690
+ "slug": "ai-image",
691
+ "relation": "子级注册并参与多图预览集合"
692
+ },
693
+ {
694
+ "slug": "image-preview",
695
+ "relation": "内置实例承载多图切换与工具栏"
1216
696
  }
1217
697
  ],
1218
- "docFile": "docs/code-content.md",
1219
- "domain": "rendering"
698
+ "docFile": "docs/image-preview-group.md",
699
+ "domain": "media"
1220
700
  },
1221
701
  {
1222
- "name": "CommonErrorContent 错误内容",
1223
- "slug": "common-error-content",
1224
- "kind": "component",
1225
- "description": "展示统一错误提示内容。",
1226
- "aiSummary": "展示统一错误提示内容。 源码位置:src/components/chat-content/common-error-content/common-error-content.vue。",
702
+ "name": "ImagePreview 图片预览",
703
+ "slug": "image-preview",
704
+ "category": "molecular",
705
+ "description": "全屏图片预览组件,通过 `Teleport` 渲染到 `body`,支持缩放、旋转、拖拽、下载、键盘导航等功能。`images` 支持传入 URL 字符串、`ImageItem` 对象或 `File` 对象,File 对象会自动通过 `URL.createObjectURL` 生成预览并在关闭/卸载时回收。通常不直接使用,而是配合 `AiImage`、`ImagePreviewGroup` 或 `FileContent` 自动触发。",
706
+ "aiSummary": "ImagePreview 通过 Teleport 提供全屏图片预览,支持缩放、旋转、拖拽、下载、键盘与多图切换。 数据源可为 URL 字符串、ImageItem 或 File(自动 ObjectURL 并在关闭时回收)。 通常由 AiImage、ImagePreviewGroup、FileContent 等触发,业务较少直接单独挂载。",
1227
707
  "relatedComponents": [
1228
708
  {
1229
- "slug": "markdown-content",
1230
- "relation": "Markdown 渲染错误态展示"
709
+ "slug": "ai-image",
710
+ "relation": "独立模式下由 AiImage 打开预览"
1231
711
  },
1232
712
  {
1233
- "slug": "reasoning-message",
1234
- "relation": "推理消息错误态展示"
713
+ "slug": "image-preview-group",
714
+ "relation": "组内容器内持有一个实例做多图切换"
715
+ },
716
+ {
717
+ "slug": "file-content",
718
+ "relation": "文件列表点击缩略图触发预览"
1235
719
  }
1236
720
  ],
1237
- "docFile": "docs/common-error-content.md",
1238
- "domain": "rendering"
721
+ "docFile": "docs/image-preview.md",
722
+ "domain": "media"
1239
723
  },
1240
724
  {
1241
- "name": "ContentRender 内容渲染器",
1242
- "slug": "content-render",
1243
- "kind": "component",
1244
- "description": "按 MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。",
1245
- "aiSummary": " MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。 源码位置:src/components/chat-content/content-render/content-render.vue。",
725
+ "name": "InfoMessage 信息消息",
726
+ "slug": "info-message",
727
+ "category": "molecular",
728
+ "description": "系统信息分隔组件,在聊天消息列表中以**居中虚线分隔条**的形式展示非对话类信息(会话重置、时间节点、状态变更等)。",
729
+ "aiSummary": "InfoMessage 以居中虚线分隔条展示系统提示、会话重置、时间戳等非对话信息;content 可为字符串或字符串数组。 MessageRender 在 info 角色下渲染,不承载用户与助手轮次内容。",
1246
730
  "relatedComponents": [
1247
731
  {
1248
- "slug": "markdown-content",
1249
- "relation": "文本类 Markdown 正文的默认渲染实现"
1250
- },
1251
- {
1252
- "slug": "reference-content",
1253
- "relation": "引用文档数组类型的列表渲染"
732
+ "slug": "message-render",
733
+ "relation": " MessageRender 在 role 为 info 时创建"
1254
734
  },
1255
735
  {
1256
- "slug": "assistant-message",
1257
- "relation": "AI 回复中默认通过本组件渲染正文"
736
+ "slug": "message-container",
737
+ "relation": "嵌入消息列表时由 MessageContainer 统一布局与滚动"
1258
738
  }
1259
739
  ],
1260
- "docFile": "docs/content-render.md",
1261
- "domain": "rendering"
740
+ "docFile": "docs/info-message.md",
741
+ "domain": "message"
1262
742
  },
1263
743
  {
1264
- "name": "DescPanel 描述面板",
1265
- "slug": "desc-panel",
1266
- "kind": "component",
1267
- "description": "将文本或 JSON 内容降级为可读描述面板。",
1268
- "aiSummary": "将文本或 JSON 内容降级为可读描述面板。 源码位置:src/components/tool-call/desc-panel/desc-panel.vue。",
744
+ "name": "LoadingMessage 加载中消息",
745
+ "slug": "loading-message",
746
+ "category": "molecular",
747
+ "description": "加载等待状态组件,展示 AI 正在处理请求时的过渡动画。由旋转渐变环 + 脉冲星形图标(蓝→紫→粉渐变)和\"请求中...\"文案组成。支持通过默认插槽自定义加载文案。",
748
+ "aiSummary": "LoadingMessage 展示等待 AI 响应的加载动画(内部 AiLoading),无必填 Props,默认插槽可自定义「请求中」文案。 典型用法是由 MessageContainer 在末尾为用户消息时自动注入 Loading 组;也可在自定义布局中手动放置。",
1269
749
  "relatedComponents": [
1270
750
  {
1271
- "slug": "toolcall-render",
1272
- "relation": "工具调用详情中渲染描述与参数"
751
+ "slug": "message-container",
752
+ "relation": "在消息列表末尾自动追加 Loading 消息组"
1273
753
  },
1274
754
  {
1275
- "slug": "highlight-keyword",
1276
- "relation": "键值与文本匹配关键词高亮"
755
+ "slug": "message-render",
756
+ "relation": "role 为 loading 时由 MessageRender 渲染"
757
+ },
758
+ {
759
+ "slug": "ai-loading",
760
+ "relation": "内部使用 AiLoading 原子组件"
1277
761
  }
1278
762
  ],
1279
- "docFile": "docs/desc-panel.md",
1280
- "domain": "rendering"
763
+ "docFile": "docs/loading-message.md",
764
+ "domain": "message"
1281
765
  },
1282
766
  {
1283
- "name": "KeyValueContent 键值内容",
1284
- "slug": "key-value-content",
1285
- "kind": "component",
1286
- "description": "以键值列表展示结构化内容。",
1287
- "aiSummary": "以键值列表展示结构化内容。 源码位置:src/components/chat-content/key-value-content/key-value-content.vue。",
767
+ "name": "MessageContainer 消息容器",
768
+ "slug": "message-container",
769
+ "category": "molecular",
770
+ "description": "消息列表容器组件,负责将原始的 `Message[]` 数组渲染为结构化的对话界面。核心能力:",
771
+ "aiSummary": "MessageContainer 是消息列表的核心容器。接收父组件用 useMessageGroup 生成的 messageGroups 与 messageStatus, 内部通过 MessageRender 按组渲染消息。支持流式停止、自动滚动与返回底部、多选与工具栏,需配置 onAgentAction 处理复制/重试等;点赞点踩通过 onAgentFeedback 回传原因。通常与 ChatInput 组合成完整对话区。",
1288
772
  "relatedComponents": [
1289
773
  {
1290
- "slug": "user-message",
1291
- "relation": "用户消息内展示结构化附加信息"
774
+ "slug": "message-render",
775
+ "relation": "按组渲染每条消息时委托 MessageRender"
776
+ },
777
+ {
778
+ "slug": "chat-input",
779
+ "relation": "常与 ChatInput 组合构成完整对话界面"
780
+ },
781
+ {
782
+ "slug": "loading-message",
783
+ "relation": "末尾为用户消息时自动追加 Loading 消息组"
1292
784
  }
1293
785
  ],
1294
- "docFile": "docs/key-value-content.md",
1295
- "domain": "rendering"
786
+ "docFile": "docs/message-container.md",
787
+ "domain": "message"
1296
788
  },
1297
789
  {
1298
- "name": "LatexContent LaTeX 公式",
1299
- "slug": "latex-content",
1300
- "kind": "component",
1301
- "description": "使用 KaTeX 渲染 LaTeX 公式内容。",
1302
- "aiSummary": "使用 KaTeX 渲染 LaTeX 公式内容。 源码位置:src/components/markdown-token/latex-content/latex-content.vue。",
790
+ "name": "MessageRender 消息渲染器",
791
+ "slug": "message-render",
792
+ "category": "molecular",
793
+ "description": "统一的消息渲染入口,通过 `message.role` 字段自动派发到对应的子组件。整个渲染过程由一个 `computed` 属性完成,无额外状态。",
794
+ "aiSummary": "MessageRender 是单条消息的渲染入口,根据 message.role 派发到 UserMessage、AssistantMessage、ReasoningMessage、 ToolMessage、ActivityMessage、InfoMessage、LoadingMessage 等。Assistant 默认通过插槽用 ContentRender 渲染正文,可被默认插槽覆盖。 无独立状态,通常由 MessageContainer 内部调用而非业务直接挂载。",
1303
795
  "relatedComponents": [
1304
796
  {
1305
- "slug": "markdown-content",
1306
- "relation": "插件解析 $...$ / $$...$$ 后生成数学 token 并挂载本组件"
797
+ "slug": "message-container",
798
+ "relation": " MessageContainer 中按组调用以渲染每条消息"
799
+ },
800
+ {
801
+ "slug": "assistant-message",
802
+ "relation": "role 为 assistant 时渲染 AI 回复与工具调用"
803
+ },
804
+ {
805
+ "slug": "user-message",
806
+ "relation": "role 为 user 时渲染用户消息"
1307
807
  }
1308
808
  ],
1309
- "docFile": "docs/latex-content.md",
1310
- "domain": "rendering"
809
+ "docFile": "docs/message-render.md",
810
+ "domain": "message"
1311
811
  },
1312
812
  {
1313
- "name": "MarkdownContent Markdown 内容渲染",
1314
- "slug": "markdown-content",
1315
- "kind": "component",
1316
- "description": "Markdown 主渲染器,集成代码块、公式、错误降级和 codeHeader 插槽。",
1317
- "aiSummary": "Markdown 主渲染器,集成代码块、公式、错误降级和 codeHeader 插槽。 源码位置:src/components/chat-content/markdown-content/markdown-content.vue。",
813
+ "name": "MessageTools 消息工具栏",
814
+ "slug": "message-tools",
815
+ "category": "molecular",
816
+ "description": "AI 消息的操作工具栏组件,由**左侧消息工具区**和**右侧更新工具区**两部分组成,中间以分隔线分隔。仅 `like` / `unlike` 按钮会弹出反馈表单(`UserFeedback`),其余按钮直接触发 `onAction`。",
817
+ "aiSummary": "MessageTools 渲染 AI 消息底部工具区:左侧消息工具(复制、引用、重建等),右侧更新工具;点赞/踩会弹出 UserFeedback 收集原因。 工具 id 为 delete 时用 DeleteTool 替代普通 ToolBtn 做二次确认;其余操作通过 onAction 异步解析或直出。",
1318
818
  "relatedComponents": [
1319
819
  {
1320
- "slug": "code-content",
1321
- "relation": "fence 代码块语法高亮与复制"
1322
- },
1323
- {
1324
- "slug": "latex-content",
1325
- "relation": "数学公式 token 的 KaTeX 渲染"
820
+ "slug": "tool-btn",
821
+ "relation": "普通工具项由 ToolBtn 渲染"
1326
822
  },
1327
823
  {
1328
- "slug": "mermaid-content",
1329
- "relation": "mermaid 代码块的图表渲染"
824
+ "slug": "user-feedback",
825
+ "relation": "like/unlike 时弹出反馈表单"
1330
826
  },
1331
827
  {
1332
- "slug": "content-render",
1333
- "relation": "上层按类型分发到本组件渲染 Markdown 字符串"
828
+ "slug": "delete-tool",
829
+ "relation": "id delete 时替换为带确认的删除按钮"
1334
830
  }
1335
831
  ],
1336
- "docFile": "docs/markdown-content.md",
1337
- "domain": "rendering"
832
+ "docFile": "docs/message-tools.md",
833
+ "domain": "tools"
1338
834
  },
1339
835
  {
1340
- "name": "MermaidContent Mermaid 图表",
1341
- "slug": "mermaid-content",
1342
- "kind": "component",
1343
- "description": "渲染 Mermaid 图表并处理渲染事件。",
1344
- "aiSummary": "渲染 Mermaid 图表并处理渲染事件。 源码位置:src/components/markdown-token/mermaid-content/mermaid-content.vue。",
836
+ "name": "ReasoningMessage 推理消息",
837
+ "slug": "reasoning-message",
838
+ "category": "molecular",
839
+ "description": "AI 思维链(Chain-of-Thought)推理过程展示组件。由**可点击标题栏**和**内容区域**组成,内容区支持 Markdown 渲染。`duration` 传入后自动折叠一次,用户可随时点击标题展开/收起。",
840
+ "aiSummary": "ReasoningMessage 展示 AI 思维链(Chain-of-Thought)推理过程,含可折叠标题与 Markdown 内容区;可传入 duration 并在结束后自动折叠。 content 为字符串数组(或兼容字符串)。由 MessageRender 在 reasoning 角色下使用,常出现在用户消息与正式回答之间。",
1345
841
  "relatedComponents": [
842
+ {
843
+ "slug": "message-render",
844
+ "relation": "由 MessageRender 在 role 为 reasoning 时创建"
845
+ },
846
+ {
847
+ "slug": "assistant-message",
848
+ "relation": "推理结束后通常紧跟 Assistant 的正式回复"
849
+ },
1346
850
  {
1347
851
  "slug": "markdown-content",
1348
- "relation": "解析 mermaid 类型 fence 代码块后传入 token"
852
+ "relation": "内容区通过 Markdown 渲染推理文本"
1349
853
  }
1350
854
  ],
1351
- "docFile": "docs/mermaid-content.md",
1352
- "domain": "rendering"
855
+ "docFile": "docs/reasoning-message.md",
856
+ "domain": "message"
1353
857
  },
1354
858
  {
1355
- "name": "ReferenceContent 引用来源",
1356
- "slug": "reference-content",
1357
- "kind": "component",
1358
- "description": "渲染引用文档/来源列表。",
1359
- "aiSummary": "渲染引用文档/来源列表。 源码位置:src/components/chat-content/reference-content/reference-content.vue",
859
+ "name": "ShortcutRender 快捷指令渲染器",
860
+ "slug": "shortcut-render",
861
+ "category": "molecular",
862
+ "description": "快捷指令表单渲染组件,将 `Shortcut.components` 配置自动渲染为可交互表单(基于 bkui-vue 的 `Form`),支持 8 种控件类型、两列网格布局、必填校验和内置提交/取消操作。",
863
+ "aiSummary": "ShortcutRender 将 Shortcut.components 声明渲染为 bkui-vue Form,支持多种控件与两列网格、必填校验及提交/取消。 通常由 ChatContainer 等布局挂载在输入区旁,formModel 与快捷指令回填联动。 与 Shortcut、ShortcutBtn 等共享同一套快捷指令数据模型。",
1360
864
  "relatedComponents": [
1361
865
  {
1362
- "slug": "content-render",
1363
- "relation": "ReferenceDocument 类型内容路由到本组件"
866
+ "slug": "shortcut-btn",
867
+ "relation": "与快捷指令 Shortcut 元数据一致,表单提交前在列表中选中入口"
1364
868
  },
1365
869
  {
1366
- "slug": "activity-message",
1367
- "relation": "知识库等活动场景内嵌引用列表"
870
+ "slug": "chat-input",
871
+ "relation": "提交或取消后与输入框内容与状态联动"
872
+ },
873
+ {
874
+ "slug": "chat-container",
875
+ "relation": "顶层聊天布局中承载快捷表单区域"
1368
876
  }
1369
877
  ],
1370
- "docFile": "docs/reference-content.md",
1371
- "domain": "rendering"
878
+ "docFile": "docs/shortcut-render.md",
879
+ "domain": "input"
1372
880
  },
1373
881
  {
1374
- "name": "TextContent 文本内容",
1375
- "slug": "text-content",
1376
- "kind": "component",
1377
- "description": "渲染纯文本内容。",
1378
- "aiSummary": "渲染纯文本内容。 源码位置:src/components/chat-content/text-content/text-content.vue。",
882
+ "name": "ToolMessage 工具消息",
883
+ "slug": "tool-message",
884
+ "category": "molecular",
885
+ "description": "工具(Function Call)执行结果展示组件。内部通过 `DescPanel` 渲染,标题固定为\"返回内容\",支持将 JSON 自动解析为 key-value 列表。",
886
+ "aiSummary": "ToolMessage 展示工具(Function Call)执行返回,内部用 DescPanel 将 JSON 解析为 key-value 或纯文本。通常不单独使用: ToolcallRender 在 toolCall.toolMessage 有值时内联渲染;独立 role 为 tool 的消息由 MessageRender 统一渲染。核心关注 content 与 error。",
1379
887
  "relatedComponents": [
1380
888
  {
1381
- "slug": "markdown-content",
1382
- "relation": "需要富文本时的替代方案"
889
+ "slug": "assistant-message",
890
+ "relation": "结果常作为 assistant 消息中 toolCall.toolMessage 内联展示"
1383
891
  },
1384
892
  {
1385
- "slug": "user-message",
1386
- "relation": "用户消息中纯文本内容展示"
893
+ "slug": "message-render",
894
+ "relation": "独立 tool 角色消息由 MessageRender 渲染为 ToolMessage"
895
+ },
896
+ {
897
+ "slug": "desc-panel",
898
+ "relation": "内部使用 DescPanel 展示「返回内容」"
1387
899
  }
1388
900
  ],
1389
- "docFile": "docs/text-content.md",
1390
- "domain": "rendering"
901
+ "docFile": "docs/tool-message.md",
902
+ "domain": "message"
1391
903
  },
1392
904
  {
1393
- "name": "ChatContainer 聊天容器",
1394
- "slug": "chat-container",
1395
- "kind": "component",
1396
- "description": "完整对话容器,组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab。",
1397
- "aiSummary": "完整对话容器,组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab。 源码位置:src/components/chat-container/chat-container.vue。",
905
+ "name": "ToolcallRender 工具调用渲染器",
906
+ "slug": "toolcall-render",
907
+ "category": "molecular",
908
+ "description": "展示 AI 调用外部工具/函数过程与结果的渲染组件。由**可折叠头部**和**详情面板**组成,根据 `status` 自动切换颜色和状态文案,支持 MCP 调用识别和内联结果展示。",
909
+ "aiSummary": "ToolcallRender 折叠展示一次工具/MCP 调用:头部显示名称、状态色、耗时与 MCP 标识,展开区展示参数与返回。 内部组合 DescPanel 与 HighlightKeyword;可在详情底部内联 ToolMessage 结果。",
1398
910
  "relatedComponents": [
1399
911
  {
1400
- "slug": "message-container",
1401
- "relation": "消息列表与滚动区域"
1402
- },
1403
- {
1404
- "slug": "chat-input",
1405
- "relation": "对话输入与快捷指令入口"
912
+ "slug": "desc-panel",
913
+ "relation": "详情区展示参数与描述文本"
1406
914
  },
1407
915
  {
1408
- "slug": "shortcut-render",
1409
- "relation": "快捷指令表单浮层"
916
+ "slug": "highlight-keyword",
917
+ "relation": "标题与状态文案关键词高亮"
1410
918
  },
1411
919
  {
1412
- "slug": "execution-summary",
1413
- "relation": "执行摘要侧栏与定位"
1414
- },
920
+ "slug": "tool-message",
921
+ "relation": "详情底部可内联工具返回消息"
922
+ }
923
+ ],
924
+ "docFile": "docs/toolcall-render.md",
925
+ "domain": "tools"
926
+ },
927
+ {
928
+ "name": "MessageUserFeedback 用户反馈",
929
+ "slug": "user-feedback",
930
+ "category": "molecular",
931
+ "description": "AI 消息点赞/踩后收集用户具体反馈原因的弹出面板。支持多选预设原因标签、补充文字说明(textarea)、异步加载原因列表(骨架屏)。",
932
+ "aiSummary": "UserFeedback 在点赞或踩之后展示原因收集面板:多选预设标签、补充说明与异步加载原因列表(骨架屏)。 由 MessageTools 在 like/unlike 流程中挂载,提交后向父级回传原因列表与备注。",
933
+ "relatedComponents": [
1415
934
  {
1416
- "slug": "selection-footer",
1417
- "relation": "多选分享底部操作栏"
935
+ "slug": "message-tools",
936
+ "relation": "点赞/踩操作触发并收集反馈"
1418
937
  }
1419
938
  ],
1420
- "docFile": "docs/chat-container.md",
1421
- "domain": "setup"
939
+ "docFile": "docs/user-feedback.md",
940
+ "domain": "tools"
1422
941
  },
1423
942
  {
1424
- "name": "MessageContainer 消息列表容器",
1425
- "slug": "message-container",
1426
- "kind": "component",
1427
- "description": "负责消息分组渲染、滚动控制、工具栏和消息插槽透传。",
1428
- "aiSummary": "负责消息分组渲染、滚动控制、工具栏和消息插槽透传。 源码位置:src/components/chat-message/message-container/message-container.vue。",
943
+ "name": "UserMessage 用户消息",
944
+ "slug": "user-message",
945
+ "category": "molecular",
946
+ "description": "用户消息展示组件,右对齐显示用户发送的消息内容。支持纯文本、多媒体(图片/文件)、文本引用、结构化引用、快捷指令等多种内容形式,以及消息的内联编辑功能。",
947
+ "aiSummary": "UserMessage 渲染右对齐用户消息,支持文本、附件、文本/结构化引用、快捷指令与内联编辑。需处理 onAction、onInputConfirm、 onShortcutConfirm 等回调;messageToolsStatus 控制工具栏。由 MessageRender 在 user 角色下使用,常与多选联动。",
1429
948
  "relatedComponents": [
1430
949
  {
1431
950
  "slug": "message-render",
1432
- "relation": "按组渲染每条消息时委托 MessageRender"
1433
- },
1434
- {
1435
- "slug": "chat-input",
1436
- "relation": "常与 ChatInput 组合构成完整对话界面"
951
+ "relation": " MessageRender 在 role 为 user 时创建"
1437
952
  },
1438
953
  {
1439
- "slug": "loading-message",
1440
- "relation": "末尾为用户消息时自动追加 Loading 消息组"
954
+ "slug": "message-tools",
955
+ "relation": "消息工具栏交互与状态由 MessageTools 体系承载"
1441
956
  },
1442
957
  {
1443
- "slug": "interrupt-message",
1444
- "relation": "透传 onInterruptResume;末条 interrupt 消息不触发组 hover"
958
+ "slug": "message-container",
959
+ "relation": "嵌入列表时由 MessageContainer 管理分组与多选"
1445
960
  }
1446
961
  ],
1447
- "docFile": "docs/message-container.md",
1448
- "domain": "setup"
962
+ "docFile": "docs/user-message.md",
963
+ "domain": "message"
1449
964
  }
1450
965
  ],
1451
966
  "composables": [
1452
967
  {
1453
968
  "name": "useAnimationText",
1454
969
  "slug": "use-animation-text",
1455
- "kind": "composable",
970
+ "category": "composable",
1456
971
  "description": "文本淡入动画的组合式函数。将响应式文本按**增量**拆分为独立 chunk,每个新增 chunk 对应一次淡入动画,适用于 AI 流式输出的逐段渐显效果。",
1457
- "aiSummary": "useAnimationText 接收 MaybeRef<string> 与可选 AnimationConfig(fadeDuration、easing),返回 chunks 与 animationStyle。 监听文本变化:前缀追加则增量拆分为新 chunk 并触发动画,否则重置为单 chunk,适合流式输出逐段淡入。 全局样式已含 ai-markdown-fade-in。AnimationText 组件内部封装同一逻辑。",
972
+ "aiSummary": "useAnimationText 接收 MaybeRef<string> 与可选 AnimationConfig(fadeDuration、easing),返回 chunks 与 animationStyle。 监听文本变化:前缀追加则增量拆分为新 chunk 并触发动画,否则重置为单 chunk,适合流式输出逐段淡入。 全局样式已含 ai-markdown-fade-in。AnimationText 原子组件内部封装同一逻辑。",
1458
973
  "relatedComponents": [
1459
974
  {
1460
975
  "slug": "animation-text",
@@ -1470,7 +985,7 @@
1470
985
  {
1471
986
  "name": "useClipboard",
1472
987
  "slug": "use-clipboard",
1473
- "kind": "composable",
988
+ "category": "composable",
1474
989
  "description": "复制文本到剪贴板的组合式函数。内置两级降级策略,并自动通过 bkui-vue `Message` 提示复制结果,调用方无需关心成功/失败处理。",
1475
990
  "aiSummary": "useClipboard 返回 { copy },copy(text) 将字符串写入剪贴板,返回 Promise<void>。 优先使用 navigator.clipboard.writeText,失败或不支持时降级为隐藏 textarea + execCommand('copy')。 成功/失败均通过 bkui-vue Message 提示,调用方无需处理结果。CodeContent、MessageContainer、UserMessage 的复制能力内部使用。",
1476
991
  "relatedComponents": [
@@ -1492,7 +1007,7 @@
1492
1007
  {
1493
1008
  "name": "useCommandSelection",
1494
1009
  "slug": "use-command-selection",
1495
- "kind": "composable",
1010
+ "category": "composable",
1496
1011
  "description": "为 `edix` 富文本编辑器提供光标位置追踪能力的组合式函数。内部封装一个 `EditorCommand`,由编辑器调用后将光标的行列信息存入响应式变量,供后续编辑命令(如插入 tag、删除关键词)精确定位。",
1497
1012
  "aiSummary": "useCommandSelection 无参数,返回 commandSelection、docSnapshot、GetCursorPosition、GetDocSnapshot。 GetCursorPosition 写入光标行列;GetDocSnapshot 将当前文档快照写入 docSnapshot,供外部 modelValue 与编辑器比对同步。 仅在 AiSlashInput(@ 菜单插入与 modelValue 同步)内部使用。",
1498
1013
  "relatedComponents": [
@@ -1506,7 +1021,7 @@
1506
1021
  {
1507
1022
  "name": "useContainerScroll",
1508
1023
  "slug": "use-container-scroll",
1509
- "kind": "composable",
1024
+ "category": "composable",
1510
1025
  "description": "为消息容器提供滚动控制的组合式函数对,通过 **Provider/Consumer** 模式在父子组件间共享滚动状态。",
1511
1026
  "aiSummary": "useContainerScrollProvider 在滚动容器与底部锚点上绑定 IntersectionObserver、scroll、wheel,提供 isScrollBottom、scrollBottomHeight、autoScrollEnabled、toScrollBottom/toScrollTop 及防抖「返回底部」按钮状态。 useContainerScrollConsumer 通过 inject 在子组件中获取同一套控制,无需 props 透传。 典型用于流式输出时仅在用户位于底部时自动滚底。MessageContainer 与 ScrollBtn 配合使用。",
1512
1027
  "relatedComponents": [
@@ -1528,7 +1043,7 @@
1528
1043
  {
1529
1044
  "name": "useCustomTab",
1530
1045
  "slug": "use-custom-tab",
1531
- "kind": "composable",
1046
+ "category": "composable",
1532
1047
  "description": "Provider/Consumer 模式的自定义 Tab 管理,用于 `ChatContainer` 侧边栏的 Tab 动态管理。Provider 在 `ChatContainer` 中创建,Consumer 在任意后代组件中注入使用。",
1533
1048
  "aiSummary": "useCustomTabProvider 返回 tabs、selectedTab、isCollapse 及 add/remove/selectCustomTab,并通过 provide 共享;可选 onTabChange 在切换时拉取数据。 useCustomTabConsumer 在后代注入同一套 API,常用于侧栏动态节点详情等。EXECUTION_TAB_NAME 标识默认「执行情况」Tab。 ChatContainer 侧栏集成 Provider 与 Tab UI。",
1534
1049
  "relatedComponents": [
@@ -1539,24 +1054,10 @@
1539
1054
  ],
1540
1055
  "docFile": "docs/use-custom-tab.md"
1541
1056
  },
1542
- {
1543
- "name": "useFlowNodeActions",
1544
- "slug": "use-flow-node-actions",
1545
- "kind": "composable",
1546
- "description": "聚合 FlowAgent 节点行尾操作(详情 / 重试 / 跳过)为声明式视图模型列表,显隐与 resume 回调收敛于此。",
1547
- "aiSummary": "useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail,返回 getNodeActions(task, node)。 失败节点按 retryable/skippable 展示重试/跳过,详情恒在末尾;点击 resume 时不传 interrupt。",
1548
- "relatedComponents": [
1549
- {
1550
- "slug": "flow-agent-content",
1551
- "relation": "FlowAgentContent 内部消费,驱动节点行尾按钮组渲染"
1552
- }
1553
- ],
1554
- "docFile": "docs/use-flow-node-actions.md"
1555
- },
1556
1057
  {
1557
1058
  "name": "useFullScreen",
1558
1059
  "slug": "use-full-screen",
1559
- "kind": "composable",
1060
+ "category": "composable",
1560
1061
  "description": "基于浏览器原生 Fullscreen API 的全屏控制组合式函数,自动嗅探标准与 WebKit 前缀,状态与 ESC 退出保持同步。",
1561
1062
  "aiSummary": "useFullScreen 将目标元素(或 document.documentElement)以浏览器原生全屏展示。 模块加载时一次性嗅探 requestFullscreen / webkitRequestFullscreen,返回 isSupported、只读 isFullScreen 与 enter/exit/toggle。 监听 fullscreenchange 同步 ESC 等外部退出;ChatContainer 侧栏全屏按钮使用此 composable。",
1562
1063
  "relatedComponents": [
@@ -1574,9 +1075,9 @@
1574
1075
  {
1575
1076
  "name": "useGlobalConfig",
1576
1077
  "slug": "use-global-config",
1577
- "kind": "composable",
1578
- "description": "在聊天根容器与子组件之间通过 provide/inject 共享全局展示配置(字号主题档位、是否支持上传等)。",
1579
- "aiSummary": "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 变量生效。",
1078
+ "category": "composable",
1079
+ "description": "在聊天根容器与子组件之间通过 provide/inject 共享全局展示配置(如是否支持上传)。",
1080
+ "aiSummary": "useGlobalConfig 接收 GlobalConfig(含 supportUpload: ComputedRef<boolean>),以 GLOBAL_CONFIG_TOKEN provide 给后代; injectGlobalConfig 在子组件中取出配置,无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig UserMessage 等通过 injectGlobalConfig 读取 supportUpload。",
1580
1081
  "relatedComponents": [
1581
1082
  {
1582
1083
  "slug": "chat-container",
@@ -1588,7 +1089,7 @@
1588
1089
  {
1589
1090
  "name": "useMenuKeydown",
1590
1091
  "slug": "use-menu-keydown",
1591
- "kind": "composable",
1092
+ "category": "composable",
1592
1093
  "description": "为弹出菜单提供键盘导航能力的组合式函数。在 `onMounted` 时于 **`window` 捕获阶段**注册 `keydown` 监听,在 `onScopeDispose` 时自动移除,通过 `menuRef.offsetParent` 检测菜单可见性来决定是否响应按键。",
1593
1094
  "aiSummary": "useMenuKeydown 接收 items、menuRef、onSelect,在 window 捕获阶段监听 keydown;菜单不可见(offsetParent 为空)或列表为空时不响应。 维护 activeIndex,处理 ArrowUp/ArrowDown 循环与 Enter 选中,并 scrollIntoView 当前 .is-active 项。 AiSlashMenu、AiPromptList(ChatInput 子模块)内部使用。",
1594
1095
  "relatedComponents": [
@@ -1602,7 +1103,7 @@
1602
1103
  {
1603
1104
  "name": "useMessageGroup",
1604
1105
  "slug": "use-message-group",
1605
- "kind": "composable",
1106
+ "category": "composable",
1606
1107
  "description": "核心消息分组逻辑,将原始 `Message[]` 数组转换为结构化的 `MessageGroup[]`。处理 Tool 消息合并、Loading 自动注入、执行摘要过滤和消息多选/分享等逻辑。",
1607
1108
  "aiSummary": "useMessageGroup 接收 keyword、messages、selectedUserMessages,通过 watchEffect 产出 messageGroups(User/Assistant/Tool 合并、末尾 Loading 注入且占位 id 为 LOADING_MESSAGE_ID、pause 与分享勾选等)。 executionGroups 供侧边执行摘要过滤,并暴露 isShareMode、全选与 onConfirmShare。 ChatContainer 组装后传给 MessageContainer;ExecutionSummary 消费 executionGroups。",
1608
1109
  "relatedComponents": [
@@ -1624,7 +1125,7 @@
1624
1125
  {
1625
1126
  "name": "useObserverVisibleList",
1626
1127
  "slug": "use-observer-visible-list",
1627
- "kind": "composable",
1128
+ "category": "composable",
1628
1129
  "description": "基于 `ResizeObserver` 的容器宽度感知组合式函数:遍历列表项的实际 `offsetWidth`,使用贪心算法计算在容器中能完整显示的项目子集,并为\"更多\"按钮动态预留空间。",
1629
1130
  "aiSummary": "useObserverVisibleList 根据 containerRef、itemRefs、gap、ComputedRef items 与可选 moreItemRef,用 ResizeObserver + 贪心算法得到 visibleItems。 依赖每项真实 offsetWidth,隐藏项需仍挂载于 DOM。返回 calculateVisibleMenuItems 供必要时手动触发。 ShortcutBtns 内部用于快捷指令溢出收入「更多」菜单。",
1630
1131
  "relatedComponents": [
@@ -1638,7 +1139,7 @@
1638
1139
  {
1639
1140
  "name": "useParentScrolling",
1640
1141
  "slug": "use-parent-scrolling",
1641
- "kind": "composable",
1142
+ "category": "composable",
1642
1143
  "description": "向上递归查找**最近可滚动祖先**,监听其 `scroll` / `scrollend` 事件,提供 `isScrolling` 状态。常用于滚动时自动关闭浮层、禁用交互等场景。",
1643
1144
  "aiSummary": "useParentScrolling(domRef) 在挂载后通过 getScrollParent 找到最近可滚动祖先,监听 scroll 与 scrollend,返回 isScrolling 与 scrollParent。 scroll 时将 isScrolling 置 true,300ms 无滚动或 scrollend 时置 false,适合滚动时隐藏浮层等交互。getScrollParent 可单独导出使用。 当前源码无组件内引用,供业务或后续浮层组件按需集成。",
1644
1145
  "relatedComponents": [],
@@ -1649,7 +1150,7 @@
1649
1150
  {
1650
1151
  "name": "常量枚举",
1651
1152
  "slug": "constants",
1652
- "kind": "type",
1153
+ "category": "type",
1653
1154
  "description": "`@blueking/chat-x` 导出的常量和枚举类型。",
1654
1155
  "aiSummary": "汇总 MessageRole、MessageStatus(含 Fetching 请求中)、MessageContentType、MessageToolsStatus、MessageState、Z-Index 与 CONST_MESSAGE_TOOLS 等导出常量。 用于构造消息、配置 MessageContainer 工具栏与输入态,以及层级与默认快捷指令。与类型 messages 配套使用。",
1655
1156
  "relatedComponents": [
@@ -1668,36 +1169,10 @@
1668
1169
  ],
1669
1170
  "docFile": "docs/constants.md"
1670
1171
  },
1671
- {
1672
- "name": "中断类型 Interrupt",
1673
- "slug": "interrupt",
1674
- "kind": "type",
1675
- "description": "AG-UI human-in-the-loop 中断相关类型,含 Interrupt、UserQuestion、InterruptMessage 与 resume 回调。",
1676
- "aiSummary": "定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、UserQuestionInterrupt、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合,对应 RUN_FINISHED outcome。",
1677
- "relatedComponents": [
1678
- {
1679
- "slug": "interrupt-message",
1680
- "relation": "根据 outcome.interrupts 与 reason 渲染中断 UI,success 时回显 UserQuestion 回答"
1681
- },
1682
- {
1683
- "slug": "user-question-card",
1684
- "relation": "UserQuestion 交互面板,挂载在 ChatInput 上方"
1685
- },
1686
- {
1687
- "slug": "tool-approval-card",
1688
- "relation": "AIDevToolApproval 专用卡片"
1689
- },
1690
- {
1691
- "slug": "message-render",
1692
- "relation": "role 为 interrupt 时派发 InterruptMessageRender"
1693
- }
1694
- ],
1695
- "docFile": "docs/interrupt.md"
1696
- },
1697
1172
  {
1698
1173
  "name": "消息类型",
1699
1174
  "slug": "messages",
1700
- "kind": "type",
1175
+ "category": "type",
1701
1176
  "description": "`@blueking/chat-x` 提供了完整的消息类型定义,用于构建 AI 对话消息。",
1702
1177
  "aiSummary": "文档说明 Message 联合类型、BaseMessage、MessageRole、MessageStatus、User/Assistant/Tool/Activity/Reasoning 等具体形态及 MessageContentType。 业务构造 messages 数组供 ChatContainer/MessageContainer 渲染;Tool 消息经 useMessageGroup 注入 Assistant。可声明合并扩展 AIBluekingMessageMap。",
1703
1178
  "relatedComponents": [
@@ -1715,31 +1190,13 @@
1715
1190
  }
1716
1191
  ],
1717
1192
  "docFile": "docs/messages.md"
1718
- },
1719
- {
1720
- "name": "用户问题 Schema",
1721
- "slug": "schema",
1722
- "kind": "type",
1723
- "description": "历史 human-in-the-loop 用户问题 JSON Schema 工具;新 UserQuestion 中断协议以 Interrupt 文档为准。",
1724
- "aiSummary": "schema.ts 仍导出 UserSingleChoiceQuestionSchema、UserMultiChoiceQuestionSchema、UserQuestionSchema 及 FromSchema 推导类型; 新的 aidev:user_question 中断不再通过 BaseInterrupt.responseSchema 区分单选/多选,而是在 metadata.questions[].multiSelect 中描述题型。",
1725
- "relatedComponents": [
1726
- {
1727
- "slug": "interrupt",
1728
- "relation": "新 UserQuestionInterrupt 与 UserQuestionResume 协议"
1729
- },
1730
- {
1731
- "slug": "user-question-card",
1732
- "relation": "根据 metadata.questions 渲染单选、多选与 Others 输入"
1733
- }
1734
- ],
1735
- "docFile": "docs/schema.md"
1736
1193
  }
1737
1194
  ],
1738
1195
  "directives": [
1739
1196
  {
1740
1197
  "name": "OverflowTips",
1741
1198
  "slug": "overflow-tips",
1742
- "kind": "directive",
1199
+ "category": "directive",
1743
1200
  "description": "当元素文本**水平溢出**(`scrollWidth > clientWidth`)时,鼠标悬停自动弹出 Tippy tooltip 显示完整内容;未溢出时不创建实例,零性能损耗。",
1744
1201
  "aiSummary": "v-overflow-tips 在元素水平溢出(scrollWidth > clientWidth)时于 mouseenter 懒创建 Tippy,展示完整文本或自定义 text/content。 结合 IntersectionObserver 仅在可见时绑定悬停;隐藏时销毁实例。指令值为 Partial<TippyProps> 与 disabled 等。 DescPanel、ExecutionSummary、ToolcallRender、AiSlashMenu 等用于标题或列表溢出提示。",
1745
1202
  "relatedComponents": [
@@ -1767,7 +1224,7 @@
1767
1224
  {
1768
1225
  "name": "markdownItContainer",
1769
1226
  "slug": "markdown-container",
1770
- "kind": "plugin",
1227
+ "category": "plugin",
1771
1228
  "description": "Markdown-it 自定义容器插件,支持 ::: name ... ::: 语法,用于对齐块等场景。",
1772
1229
  "aiSummary": "markdownItContainer 基于 markdown-it-container,支持字符串或正则匹配容器名;MarkdownContent 中用于 hljs-left/center/right 对齐。 渲染为带 class 的 div,与 tokens-to-vnodes 及样式配合。",
1773
1230
  "relatedComponents": [
@@ -1781,7 +1238,7 @@
1781
1238
  {
1782
1239
  "name": "markdownItLatex",
1783
1240
  "slug": "markdown-latex",
1784
- "kind": "plugin",
1241
+ "category": "plugin",
1785
1242
  "description": "Markdown-it LaTeX 解析插件,用于解析 LaTeX 数学公式语法。",
1786
1243
  "aiSummary": "markdownItLatex 为 markdown-it 插件,解析 $...$、$$...$$、\\\\(...\\\\)、\\\\[...\\\\] 为 math_inline / math_block token,可选 LatexOption.replaceAlignStart。 不负责渲染,KaTeX 在 LatexContent 中异步渲染。与 Markdown 管道、ContentRender 中的公式展示链路配合。",
1787
1244
  "relatedComponents": [
@@ -1803,7 +1260,7 @@
1803
1260
  {
1804
1261
  "name": "markdownItMermaid",
1805
1262
  "slug": "markdown-mermaid",
1806
- "kind": "plugin",
1263
+ "category": "plugin",
1807
1264
  "description": "Markdown-it Mermaid 解析插件,用于解析 Mermaid 图表代码块。",
1808
1265
  "aiSummary": "markdownItMermaid 为 markdown-it 插件,将 ```mermaid 代码块转为带 data-mermaid-code、data-mermaid-idx 的占位 DOM,便于前端挂载渲染。 实际绘图由 Mermaid 动态导入在 MermaidContent 中完成,支持流式场景节流与缓存。ContentRender 驱动完整消息 Markdown 流程。",
1809
1266
  "relatedComponents": [
@@ -1831,9 +1288,9 @@
1831
1288
  {
1832
1289
  "name": "主题配置",
1833
1290
  "slug": "theme",
1834
- "kind": "theme",
1291
+ "category": "theme",
1835
1292
  "description": "`@blueking/chat-x` 使用 SCSS 变量和 CSS 类来控制样式,支持通过覆盖变量或样式来自定义主题。",
1836
- "aiSummary": "说明通过 SCSS 变量(尺寸、颜色、z-index)、字号主题 CSS 变量(data-ai-size 切换 small/normal)与 CSS 类覆盖自定义主题。 ChatContainer.size 控制根节点 data-ai-size;浮层同步 document.body.dataset.aiSize。含渐变边框 mixin、骨架屏类 ai-skeleton-element 等。",
1293
+ "aiSummary": "说明通过 SCSS 变量(尺寸、颜色、z-index)与 CSS 类覆盖(chat-input、用户/助手消息、shortcut-btns、ai-markdown-body、tool-btn 等)自定义主题。 含渐变边框 mixinai-markdown-fade-in 与弹窗过渡。暗色示例通过根 class 切换。组件随包引入样式,业务侧按需覆写。",
1837
1294
  "relatedComponents": [
1838
1295
  {
1839
1296
  "slug": "chat-container",