@blueking/chat-x 0.0.43 → 0.0.45-beta.1

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