@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
@@ -43,8 +43,8 @@ export declare const lang: {
43
43
  readonly 失败: "Failed";
44
44
  readonly 挂起: "Pending";
45
45
  readonly 待执行: "To Be Executed";
46
+ readonly 跳过: "Skipped";
46
47
  readonly 详情: "Details";
47
- readonly 重试: "Retry";
48
48
  readonly 节点: "Node";
49
49
  readonly 节点配置: "Node Config";
50
50
  readonly 节点输出: "Node Output";
@@ -69,25 +69,6 @@ export declare const lang: {
69
69
  readonly 暂无数据: "No Data";
70
70
  readonly '\u8C03\u7528 MCP\uFF1A': "Call MCP:";
71
71
  readonly 更多: "More";
72
- readonly 算法方案评审单: "Algorithm Plan Review Ticket";
73
- readonly 评审中: "Reviewing";
74
- readonly 已废弃: "Abandoned";
75
- readonly 已批准: "Approved";
76
- readonly 已通过: "Approved";
77
- readonly 已取消: "Cancelled";
78
- readonly 已过期: "Expired";
79
- readonly 已拒绝: "Rejected";
80
- readonly 已撤销: "Revoked";
81
- readonly 单据编号: "Ticket No.";
82
- readonly 提交时间: "Submitted At";
83
- readonly 当前处理人: "Current Handler";
84
- readonly 无: "None";
85
- readonly 查看单据详情: "View Ticket Detail";
86
- readonly 复制单据: "Copy Ticket";
87
- readonly 复制单据链接: "Copy Ticket Link";
88
- readonly 取消审批: "Cancel Approval";
89
- readonly '\u5F53\u524D\u4F1A\u8BDD\u6709 {count} \u4E2A\u5F85\u5BA1\u6279\u5355\uFF0C\u5982\u9700\u7EE7\u7EED\uFF0C\u8BF7\u5148\u53D6\u6D88\u5BA1\u6279': "There are {count} pending approval tickets in the current conversation. To continue, cancel approval first.";
90
- readonly 暂不支持的中断消息: "Unsupported interrupt message";
91
72
  readonly 检索中: "Searching";
92
73
  readonly 检索完成: "Search Completed";
93
74
  readonly 上传文件: "Upload File";
@@ -119,18 +100,5 @@ export declare const lang: {
119
100
  readonly 有效证据: "Valid Evidence";
120
101
  readonly 全屏: "Full Screen";
121
102
  readonly 退出全屏: "Exit Full Screen";
122
- readonly 请选择以继续: "Please choose to continue";
123
- readonly 继续: "Continue";
124
- readonly '\u6536\u5230\u4FE1\u606F\uFF1A': "Received: ";
125
- readonly 待审批: "Pending";
126
- readonly 已审批: "Approved";
127
- readonly 完成: "Done";
128
- readonly 跳过: "Skip";
129
- readonly 单选: "Single";
130
- readonly 多选: "Multiple";
131
- readonly 其他: "Others";
132
- readonly 回答内容: "Answers";
133
- readonly 已回复: "Replied";
134
- readonly '\u8BF7\u8F93\u5165...': "Please enter...";
135
103
  };
136
- export declare const t: (key: keyof typeof lang) => "Send" | "Stop" | "Ask AI" | "Copy" | "Share" | "Like" | "Unsatisfied" | "Delete" | "Quote" | "Regenerate" | "Regenerating will clear the content below" | "Submit" | "Cancel" | "Preview Content" | "Jump to Detail" | "Call Tool:" | "Calling..." | "Call Success" | "Call Failed" | "Tell us your thoughts" | "What makes you satisfied?" | "What makes you dissatisfied?" | "Return Content" | "Edit" | "Deep Thinking" | "Loading image..." | "Failed to load image" | "Thinking..." | "Thinking Completed" | "Thinking Failed" | "Copy Success" | "Copy Failed" | "Return to bottom" | "Stop generating" | "Stopping" | "Duration" | "Parameters" | "Description" | "Execution Status" | "Running" | "Success" | "Failed" | "Pending" | "To Be Executed" | "Details" | "Retry" | "Node" | "Node Config" | "Node Output" | "Basic Info" | "Flow Template" | "Node Name" | "Step Name" | "Execution Plan" | "Optional" | "Failure Handler" | "Timeout Control" | "Yes" | "No" | "Input Params" | "Output Params" | "Param Name" | "Param Value" | "Name" | "Structured Output" | "Manual Skip" | "No Data" | "Call MCP:" | "More" | "Algorithm Plan Review Ticket" | "Reviewing" | "Abandoned" | "Approved" | "Cancelled" | "Expired" | "Rejected" | "Revoked" | "Ticket No." | "Submitted At" | "Current Handler" | "None" | "View Ticket Detail" | "Copy Ticket" | "Copy Ticket Link" | "Cancel Approval" | "There are {count} pending approval tickets in the current conversation. To continue, cancel approval first." | "Unsupported interrupt message" | "Searching" | "Search Completed" | "Upload File" | "Requesting..." | "Cancel satisfied" | "Cancel dissatisfied" | "Confirm delete this answer?" | "This operation cannot be undone. Please proceed with caution!" | "Preview" | "Zoom Out" | "Zoom In" | "Rotate" | "Download" | "Sorry, image loading failed. Please try reloading." | "Reset" | "Reload" | "W" | "H" | "Upload Image" | "Search keyword" | "Select date" | "Locate in Chat" | "Select All" | "Confirm" | "Upload Image, up to 3 images supported, max 2.4MB each" | "Hello, I am BlueKing AI Bot" | "Clear Search" | "Search Result is Empty" | "Valid Evidence" | "Full Screen" | "Exit Full Screen" | "Please choose to continue" | "Continue" | "Received: " | "Done" | "Skip" | "Single" | "Multiple" | "Others" | "Answers" | "Replied" | "Please enter..." | "发送" | "停止" | "问问小鲸" | "复制" | "分享" | "点赞" | "不满意" | "删除" | "引用" | "重新生成" | "重新生成将清空下文内容" | "提交" | "取消" | "预览内容" | "跳转详情" | "调用工具:" | "调用中" | "调用成功" | "调用失败" | "说出您的想法" | "什么原因让你满意?" | "什么原因让你不满意?" | "返回内容" | "编辑" | "深度思考" | "图片加载中..." | "图片加载失败" | "思考中" | "已思考完成" | "思考失败" | "复制成功" | "复制失败" | "返回底部" | "停止生成" | "正在停止" | "耗时" | "参数" | "描述" | "执行情况" | "执行中" | "成功" | "失败" | "挂起" | "待执行" | "详情" | "重试" | "节点" | "节点配置" | "节点输出" | "基础信息" | "流程模板" | "节点名称" | "步骤名称" | "执行方案" | "是否可选" | "失败处理" | "超时控制" | "是" | "否" | "输入参数" | "输出参数" | "参数名" | "参数值" | "名称" | "变量说明" | "结构化输出" | "手动跳过" | "暂无数据" | "调用 MCP:" | "更多" | "算法方案评审单" | "评审中" | "已废弃" | "已批准" | "已通过" | "已取消" | "已过期" | "已拒绝" | "已撤销" | "单据编号" | "提交时间" | "当前处理人" | "无" | "查看单据详情" | "复制单据" | "复制单据链接" | "取消审批" | "当前会话有 {count} 个待审批单,如需继续,请先取消审批" | "暂不支持的中断消息" | "检索中" | "检索完成" | "上传文件" | "请求中..." | "取消满意" | "取消不满意" | "确认删除该回答?" | "删除操作无法撤回,请谨慎操作!" | "预览" | "缩小" | "放大" | "旋转" | "下载" | "抱歉,图片加载失败,可尝试重新加载" | "重置" | "重新加载" | "宽" | "高" | "上传图片" | "搜索 关键字" | "选择日期" | "在对话中定位" | "全选" | "确定" | "上传图片, 最多支持上传 3 个, 最大支持 2.4MB" | "你好,我是小鲸" | "清空搜索" | "搜索结果为空" | "有效证据" | "全屏" | "退出全屏" | "请选择以继续" | "继续" | "收到信息:" | "待审批" | "已审批" | "完成" | "跳过" | "单选" | "多选" | "其他" | "回答内容" | "已回复" | "请输入...";
104
+ export declare const t: (key: keyof typeof lang) => "Send" | "Stop" | "Ask AI" | "Copy" | "Share" | "Like" | "Unsatisfied" | "Delete" | "Quote" | "Regenerate" | "Regenerating will clear the content below" | "Submit" | "Cancel" | "Preview Content" | "Jump to Detail" | "Call Tool:" | "Calling..." | "Call Success" | "Call Failed" | "Tell us your thoughts" | "What makes you satisfied?" | "What makes you dissatisfied?" | "Return Content" | "Edit" | "Deep Thinking" | "Loading image..." | "Failed to load image" | "Thinking..." | "Thinking Completed" | "Thinking Failed" | "Copy Success" | "Copy Failed" | "Return to bottom" | "Stop generating" | "Stopping" | "Duration" | "Parameters" | "Description" | "Execution Status" | "Running" | "Success" | "Failed" | "Pending" | "To Be Executed" | "Skipped" | "Details" | "Node" | "Node Config" | "Node Output" | "Basic Info" | "Flow Template" | "Node Name" | "Step Name" | "Execution Plan" | "Optional" | "Failure Handler" | "Timeout Control" | "Yes" | "No" | "Input Params" | "Output Params" | "Param Name" | "Param Value" | "Name" | "Structured Output" | "Manual Skip" | "No Data" | "Call MCP:" | "More" | "Searching" | "Search Completed" | "Upload File" | "Requesting..." | "Cancel satisfied" | "Cancel dissatisfied" | "Confirm delete this answer?" | "This operation cannot be undone. Please proceed with caution!" | "Preview" | "Zoom Out" | "Zoom In" | "Rotate" | "Download" | "Sorry, image loading failed. Please try reloading." | "Reset" | "Reload" | "W" | "H" | "Upload Image" | "Search keyword" | "Select date" | "Locate in Chat" | "Select All" | "Confirm" | "Upload Image, up to 3 images supported, max 2.4MB each" | "Hello, I am BlueKing AI Bot" | "Clear Search" | "Search Result is Empty" | "Valid Evidence" | "Full Screen" | "Exit Full Screen" | "发送" | "停止" | "问问小鲸" | "复制" | "分享" | "点赞" | "不满意" | "删除" | "引用" | "重新生成" | "重新生成将清空下文内容" | "提交" | "取消" | "预览内容" | "跳转详情" | "调用工具:" | "调用中" | "调用成功" | "调用失败" | "说出您的想法" | "什么原因让你满意?" | "什么原因让你不满意?" | "返回内容" | "编辑" | "深度思考" | "图片加载中..." | "图片加载失败" | "思考中" | "已思考完成" | "思考失败" | "复制成功" | "复制失败" | "返回底部" | "停止生成" | "正在停止" | "耗时" | "参数" | "描述" | "执行情况" | "执行中" | "成功" | "失败" | "挂起" | "待执行" | "跳过" | "详情" | "节点" | "节点配置" | "节点输出" | "基础信息" | "流程模板" | "节点名称" | "步骤名称" | "执行方案" | "是否可选" | "失败处理" | "超时控制" | "是" | "否" | "输入参数" | "输出参数" | "参数名" | "参数值" | "名称" | "变量说明" | "结构化输出" | "手动跳过" | "暂无数据" | "调用 MCP:" | "更多" | "检索中" | "检索完成" | "上传文件" | "请求中..." | "取消满意" | "取消不满意" | "确认删除该回答?" | "删除操作无法撤回,请谨慎操作!" | "预览" | "缩小" | "放大" | "旋转" | "下载" | "抱歉,图片加载失败,可尝试重新加载" | "重置" | "重新加载" | "宽" | "高" | "上传图片" | "搜索 关键字" | "选择日期" | "在对话中定位" | "全选" | "确定" | "上传图片, 最多支持上传 3 个, 最大支持 2.4MB" | "你好,我是小鲸" | "清空搜索" | "搜索结果为空" | "有效证据" | "全屏" | "退出全屏";
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- activityType 分发 FlowAgent、知识召回、引用文档等活动内容。 源码位置:src/components/chat-message/activity-message/activity-message.vue。
4
+ ActivityMessage 展示活动类消息:知识检索(knowledge_rag)、引用文档列表、FlowAgent 执行(activityType 区分),标题可折叠。 content 结构随模式变化。由 MessageRender 在 activity 角色下渲染,用于 RAG/引用/流程执行过程可视化。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-render** — 由 MessageRender 在 role 为 activity 时创建
@@ -11,19 +11,12 @@
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # ActivityMessage 活动消息
14
- ## 源码事实
15
14
 
16
- - **源码位置**:`src/components/chat-message/activity-message/activity-message.vue`
17
- - **能力域**:消息系统
18
- - **能力说明**:按 activityType 分发 FlowAgent、知识召回、引用文档等活动内容。
19
-
20
- > **能力域**:消息系统
15
+ > **层级**:分子组件 · **功能域**:消息展示
21
16
 
22
17
  活动消息组件,用于展示 AI 的知识检索(Knowledge RAG)过程、参考文档引用列表和 FlowAgent 流程执行情况。通过 `activityType` 切换三种工作模式,点击标题栏可折叠/展开内容区域。
23
18
 
24
- 组件会将父级传入消息上的 **`uid`** 以 **`message-uid`** 形式透传给各活动子组件(`FlowAgentContent` / `KnowledgeRagContent` / `ReferenceDocContent`),用于侧栏自定义 Tab、`addCustomTab` 的 `data.messageUid` 与主对话区「在对话中定位」联动(详见 [ChatContainer](/components/setup/chat-container))。
25
-
26
- `onInterruptResume` 仅由 `FlowAgentContent` 消费(失败节点「重试 / 跳过」),由 `MessageRender` 从 `ChatContainer` 透传;知识检索、引用文档等活动子组件忽略该 prop。
19
+ 组件会将父级传入消息上的 **`uid`** 以 **`message-uid`** 形式透传给各活动子组件(`FlowAgentContent` / `KnowledgeRagContent` / `ReferenceDocContent`),用于侧栏自定义 Tab、`addCustomTab` 的 `data.messageUid` 与主对话区「在对话中定位」联动(详见 [ChatContainer](./chat-container.md))。
27
20
 
28
21
  ## 三种工作模式
29
22
 
@@ -167,8 +160,7 @@
167
160
  - **有效证据**:`task.has_confidence === true` 时,任务行右侧展示「有效证据」按钮,点击后在侧栏打开置信度/证据详情 Tab(`props.has_confidence: true`)
168
161
  - **默认激活**:当 `MessageContainer` 已注入滚动上下文(`useContainerScrollProvider`,供 `FlowAgentContent` 内 `useContainerScrollConsumer` 读取)时,组件挂载后若存在 `task.is_active === true` 且 `task.has_confidence === true` 的任务,会自动在侧栏打开该任务的「有效证据」Tab;无滚动 Provider(例如独立演示)时不做自动打开。用户手动切换 Tab 后不再沿用 `is_active` 默认高亮
169
162
  - **选中态**:当前侧栏 Tab 与任务行 / 节点行联动高亮(`is-selected`);任务 Tab 与「有效证据」Tab 均视为该任务的选中态
170
- - **节点列表**:每个节点显示状态圆点、名称和耗时;hover 时出现行尾操作按钮组
171
- - **失败节点操作**:失败且 `retryable` / `skippable` 为 `true` 的节点,hover 时额外展示「重试」「跳过」按钮,点击后通过 `onInterruptResume` 回传 Agent(不传 `interrupt`)
163
+ - **节点列表**:每个节点显示状态圆点、名称和耗时;hover 时出现「详情」按钮
172
164
  - **节点详情**:点击「详情」会通过 `useCustomTabConsumer` 在 `ChatContainer` 侧边栏新增自定义 Tab,展示节点配置(基础信息、输入参数、输出参数)
173
165
 
174
166
  > `FlowAgentContent` 会读取 `ChatContainer` 注入的 `renderMode`。当 `renderMode === RenderMode.Share` 时,任务行不展示总耗时与「有效证据」,节点列表不展示耗时与「详情」按钮,避免分享预览中出现可交互入口。独立使用 `ActivityMessage` 且没有上层 Provider 时,默认按 `Chat` 模式渲染。
@@ -192,10 +184,7 @@ FlowAgentContent(activityType = 'flow_agent')
192
184
  ├── 状态圆点(颜色对应状态)
193
185
  ├── node.name(HighlightKeyword 支持搜索高亮)
194
186
  ├── node.elapsed_time
195
- └── 行尾操作按钮组(hover 显示)
196
- ├── 重试(失败 + retryable)→ onInterruptResume
197
- ├── 跳过(失败 + skippable)→ onInterruptResume
198
- └── 详情 → 打开节点详情 Tab
187
+ └── 详情按钮(hover 显示)→ 打开节点详情 Tab
199
188
  ```
200
189
 
201
190
  ### 用法示例
@@ -351,9 +340,7 @@ type BkFlowNode = {
351
340
  loop: number;
352
341
  name: string;
353
342
  retry: number;
354
- retryable?: boolean;
355
343
  skip: boolean;
356
- skippable?: boolean;
357
344
  start_time: string;
358
345
  state: string;
359
346
  type: string;
@@ -417,7 +404,6 @@ enum MessageContentType {
417
404
  | status | `MessageStatus` | - | 消息状态;在 `knowledge_rag` 模式下影响标题和图标,在 `flow_agent` 模式下影响标题 Loading 状态 |
418
405
  | id | `string \| number` | - | 消息 ID |
419
406
  | messageId | `string \| number` | - | 消息唯一标识 |
420
- | onInterruptResume | `OnInterruptResume` | - | 仅 `flow_agent` 子组件消费;失败节点「重试 / 跳过」回调,由 `MessageRender` 透传 |
421
407
 
422
408
  ### v-model
423
409
 
@@ -462,5 +448,5 @@ enum MessageContentType {
462
448
 
463
449
  ## 关联组件
464
450
 
465
- - [MessageRender](/components/message/message-render) — activity 角色由其实例化
466
- - [AssistantMessage](/components/message/assistant-message) — 常与助手主回复配合出现
451
+ - [MessageRender](./message-render.md) — activity 角色由其实例化
452
+ - [AssistantMessage](./assistant-message.md) — 常与助手主回复配合出现
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 图片展示组件,组合加载、错误、预览和 extra 插槽。 源码位置:src/components/image-preview/image.vue。
4
+ AiImage 负责缩略图展示,并处理加载中、失败重试与懒加载;无 ImagePreviewGroup 上下文时可内嵌 ImagePreview 做全屏预览。 在 Group 内通过 inject 注册子图,点击时参与多图集合预览;支持自定义下载与 preview 事件。 与 ImagePreview、ImagePreviewGroup 共同构成对话内图片展示与预览链路。
5
5
 
6
6
  ### 关联组件
7
7
  - **image-preview** — 独立模式下内嵌全屏预览,单图预览入口
@@ -11,13 +11,8 @@
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # AiImage 图片展示
14
- ## 源码事实
15
14
 
16
- - **源码位置**:`src/components/image-preview/image.vue`
17
- - **能力域**:媒体文件
18
- - **能力说明**:图片展示组件,组合加载、错误、预览和 extra 插槽。
19
-
20
- > **能力域**:媒体文件
15
+ > **层级**:原子组件 · **功能域**:文件与图片
21
16
 
22
17
  图片展示组件,支持加载状态、加载失败重试、懒加载、点击预览等功能。可独立使用(单图预览),也可配合 `ImagePreviewGroup` 实现多图预览。
23
18
 
@@ -228,5 +223,5 @@ interface ImagePreviewConfig {
228
223
 
229
224
  ## 关联组件
230
225
 
231
- - [ImagePreview](/components/medias/image-preview) — 独立模式下的全屏预览
232
- - [ImagePreviewGroup](/components/medias/image-preview-group) — 多图注册与预览上下文
226
+ - [ImagePreview](../molecular/image-preview.md) — 独立模式下的全屏预览
227
+ - [ImagePreviewGroup](../molecular/image-preview-group.md) — 多图注册与预览上下文
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 小尺寸 AI 加载动效。 源码位置:src/components/ai-loading/ai-loading.vue
4
+ AiLoading 使用纯 CSS/SVG 动画(旋转环与脉冲星形)展示加载中,不依赖 bkui Loading 多实例时需用 cloneVNode 等为渐变 id 加前缀避免冲突;支持 stopLoading 暂停动画。
5
5
 
6
6
  ### 关联组件
7
7
  - **loading-message** — 列表末尾加载占位
@@ -12,15 +12,10 @@
12
12
  <!-- FULL DOC -->
13
13
 
14
14
  # AiLoading AI 加载动画
15
- ## 源码事实
16
15
 
17
- - **源码位置**:`src/components/ai-loading/ai-loading.vue`
18
- - **能力域**:辅助能力
19
- - **能力说明**:小尺寸 AI 加载动效。
16
+ > **层级**:原子组件 · **功能域**:辅助组件
20
17
 
21
- > **能力域**:辅助能力
22
-
23
- AI 加载动画基础组件。由两层 SVG 叠加构成:外层旋转光环(带渐变弧线)+ 内层脉冲星形图标,两者共用同一套蓝→紫→粉渐变色。
18
+ AI 加载动画原子组件。由两层 SVG 叠加构成:外层旋转光环(带渐变弧线)+ 内层脉冲星形图标,两者共用同一套蓝→紫→粉渐变色。
24
19
 
25
20
  ## 组件结构
26
21
 
@@ -129,6 +124,6 @@ ai-loading-star-{instanceId}
129
124
 
130
125
  ## 关联组件
131
126
 
132
- - [LoadingMessage](/components/message/loading-message) — 对话加载消息
133
- - [ReasoningMessage](/components/message/reasoning-message) — 推理加载态
134
- - [ActivityMessage](/components/message/activity-message) — 活动加载态
127
+ - [LoadingMessage](../molecular/loading-message.md) — 对话加载消息
128
+ - [ReasoningMessage](../molecular/reasoning-message.md) — 推理加载态
129
+ - [ActivityMessage](../molecular/activity-message.md) — 活动加载态
@@ -1,23 +1,18 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 监听选中文本并展示快捷操作浮窗。 源码位置:src/components/ai-selection/ai-selection.vue。
4
+ AiSelection 在 document 级监听文本选区,在选区附近弹出快捷操作菜单;每页建议只挂载一个实例。 通过 shortcuts、maxShortcutCount、offset 等配置菜单内容与布局,支持完全自定义 default 插槽与 Shadow DOM 场景。 常与 ChatInput 或业务侧联动,将选中文本作为追问上下文。
5
5
 
6
6
  ### 关联组件
7
- - **shortcut-btn** — 弹窗内快捷指令按钮/菜单项由该基础组件渲染
7
+ - **shortcut-btn** — 弹窗内快捷指令按钮/菜单项由该原子组件渲染
8
8
  - **chat-input** — 划词结果常回填或触发与输入框联动的快捷指令
9
9
 
10
10
  ---
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # AiSelection AI 划词选择弹窗
14
- ## 源码事实
15
14
 
16
- - **源码位置**:`src/components/ai-selection/ai-selection.vue`
17
- - **能力域**:输入交互
18
- - **能力说明**:监听选中文本并展示快捷操作浮窗。
19
-
20
- > **能力域**:输入交互
15
+ > **层级**:分子组件 · **功能域**:输入交互
21
16
 
22
17
  AI 划词选择组件,监听用户在页面中的文本选区,在选区附近弹出快捷操作菜单。支持自定义快捷指令列表、数量限制、垂直偏移以及完全自定义插槽内容。
23
18
 
@@ -437,5 +432,5 @@ interface Shortcut {
437
432
 
438
433
  ## 关联组件
439
434
 
440
- - [ShortcutBtn](/components/input/shortcut-btn) — 弹窗内快捷指令按钮单元
441
- - [ChatInput](/components/input/chat-input) — 选区文本常回填到聊天输入框
435
+ - [ShortcutBtn](../atomic/shortcut-btn.md) — 弹窗内快捷指令按钮单元
436
+ - [ChatInput](./chat-input.md) — 选区文本常回填到聊天输入框
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 按文本增量播放流式动画。 源码位置:src/components/animation-text/animation-text.vue
4
+ AnimationText 将文本拆成 chunk 并以淡入 keyframes 逐段显示,适合短文案一次性展示。 props.text 仅在挂载时参与动画;持续流式场景应直接使用 useAnimationText 或自行 watch Ref 与 Markdown 流式渐显等场景可组合使用。
5
5
 
6
6
  ### 关联组件
7
7
  - **use-animation-text** — 提供 chunk 拆分与 animationStyle 的 composable
@@ -11,15 +11,10 @@
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # AnimationText 动画文本
14
- ## 源码事实
15
14
 
16
- - **源码位置**:`src/components/animation-text/animation-text.vue`
17
- - **能力域**:内容渲染
18
- - **能力说明**:按文本增量播放流式动画。
15
+ > **层级**:原子组件 · **功能域**:内容渲染
19
16
 
20
- > **能力域**:内容渲染
21
-
22
- 动画文本基础组件,将文本以**淡入(fade-in)**方式渐显。内部由 `useAnimationText` composable 驱动,核心能力是将增量文本拆分为独立 chunk,每个 chunk 单独触发一次淡入动画,适用于流式文本的逐段渐显效果。
17
+ 动画文本原子组件,将文本以**淡入(fade-in)**方式渐显。内部由 `useAnimationText` composable 驱动,核心能力是将增量文本拆分为独立 chunk,每个 chunk 单独触发一次淡入动画,适用于流式文本的逐段渐显效果。
23
18
 
24
19
  ## 组件结构
25
20
 
@@ -201,4 +196,4 @@ interface AnimationConfig {
201
196
  ## 关联组件
202
197
 
203
198
  - [useAnimationText](../../composables/use-animation-text.md) — chunk 与动画样式逻辑
204
- - [MarkdownContent](/components/rendering/markdown-content) — 流式正文渲染时可配合渐显
199
+ - [MarkdownContent](./markdown-content.md) — 流式正文渲染时可配合渐显
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。 源码位置:src/components/chat-message/assistant-message/assistant-message.vue。
4
+ AssistantMessage 渲染 AI 助手回复:正文由 ContentRender(可被默认插槽替换)与 ToolCallRender 展示工具调用及 MCP 标记。 toolCalls[].toolMessage 可内联工具执行结果。用于 MessageRender 分发的 assistant 角色,流式场景配合 streaming 状态更新。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-render** — 由 MessageRender 在 role 为 assistant 时创建
@@ -12,13 +12,8 @@
12
12
  <!-- FULL DOC -->
13
13
 
14
14
  # AssistantMessage AI 助手消息
15
- ## 源码事实
16
15
 
17
- - **源码位置**:`src/components/chat-message/assistant-message/assistant-message.vue`
18
- - **能力域**:消息系统
19
- - **能力说明**:渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。
20
-
21
- > **能力域**:消息系统
16
+ > **层级**:分子组件 · **功能域**:消息展示
22
17
 
23
18
  AI 助手消息展示组件,负责渲染 AI 回复的文本内容和工具调用(Tool Calls)结果。
24
19
 
@@ -424,6 +419,6 @@ interface ToolMessage extends BaseMessage<MessageRole.Tool, string> {
424
419
 
425
420
  ## 关联组件
426
421
 
427
- - [MessageRender](/components/message/message-render) — assistant 角色由其实例化
428
- - [ToolMessage](/components/message/tool-message) — 工具执行结果可通过 toolCall.toolMessage 内联
429
- - [ToolcallRender](/components/agent/toolcall-render) — 工具调用列表渲染
422
+ - [MessageRender](./message-render.md) — assistant 角色由其实例化
423
+ - [ToolMessage](./tool-message.md) — 工具执行结果可通过 toolCall.toolMessage 内联
424
+ - [ToolcallRender](./toolcall-render.md) — 工具调用列表渲染
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 完整对话容器,组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab 源码位置:src/components/chat-container/chat-container.vue。
4
+ ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer 对齐;renderMode 会通过内部 provide 下传给子内容组件。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-container** — 消息列表与滚动区域
@@ -14,13 +14,8 @@
14
14
  <!-- FULL DOC -->
15
15
 
16
16
  # ChatContainer 聊天容器
17
- ## 源码事实
18
17
 
19
- - **源码位置**:`src/components/chat-container/chat-container.vue`
20
- - **能力域**:对话搭建
21
- - **能力说明**:完整对话容器,组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab。
22
-
23
- > **能力域**:对话搭建
18
+ > **层级**:分子组件 · **功能域**:输入交互
24
19
 
25
20
  顶层聊天容器组件,整合了 `MessageContainer`(消息列表)、`ChatInput`(输入框)、`ExecutionSummary`(执行摘要面板)、`ShortcutRender`(快捷指令表单)和 `SelectionFooter`(多选操作栏)。提供完整的 AI 对话界面布局能力。
26
21
 
@@ -29,20 +24,17 @@
29
24
  - **分栏布局**:基于 `ResizeLayout` 的可拖拽分栏;**侧栏是否展示 Tab / 执行摘要、以及分栏是否进入折叠样式(`ai-is-collapse`)以 `executionGroups` 与执行情况搜索关键词 `keyword` 共同决定**(`executionGroups` 由 `useMessageGroup` 从消息中过滤工具调用与 FlowAgent 记录;`keyword` 来自 `ExecutionSummary` 的 `@update-keyword`)。当 `executionGroups` 为空且未输入搜索词时,侧栏 Tab 与执行摘要不展示;**用户正在搜索执行情况时(`keyword` 非空),即使暂无执行类消息也会保留侧栏**,避免搜索态被折叠
30
25
  - **消息分组**:内置 `useMessageGroup` 自动处理消息分组、Tool 合并、Loading 注入
31
26
  - **输入区状态推导**:传给 `MessageContainer` 与 `ChatInput` 的 `messageStatus` 为内部计算值 `inputStatus`:当分组中存在 id 为 `LOADING_MESSAGE_ID`(`'__loading__'`,由 `useMessageGroup` 注入的占位 Loading 消息)时,对内使用 `MessageStatus.Fetching`;否则使用外部传入的 `messageStatus`。用于在「已发用户消息、尚未流式」阶段与流式中一致地展示停止能力,并避免输入区重复发送
32
- - **待审批发送阻塞**:当消息中存在 `AIDevToolApproval` 且状态为 `pending` / `draft` 的中断项时,`useMessageGroup` 会返回待审批提示,容器在输入区上方展示提示并通过 `ChatInput.sendDisabledTip` 禁止继续发送
33
- - **用户问题中断**:当消息中存在待回答 `UserQuestion` 中断时,容器会在输入区上方挂载 `UserQuestionCard`;结构化作答走 `onInterruptResume`,用户在输入框直接发送时走 `onSendMessage` 并在第三参数附带 skip 用的 `payload`(`status: 'cancelled'`)与 `interrupt`,且不会自动清空输入框
34
27
  - **执行摘要**:侧边栏展示工具调用 / FlowAgent 执行记录,支持关键词搜索和对话定位
35
28
  - **侧栏全屏**:Tab 栏右侧提供全屏/退出全屏按钮,基于 `useFullScreen` 将侧栏区域(`.ai-full-screen-wrapper`)以浏览器原生全屏展示;全屏时 Tippy 的 `appendTo` 自动切换为全屏容器,避免 tooltip 被遮挡
36
29
  - **自定义 Tab**:通过 `useCustomTabProvider` 支持动态添加自定义 Tab(如节点详情)
37
30
  - **分享模式**:内置消息多选分享流程,选中用户消息后确认分享
38
31
  - **渲染模式注入**:`renderMode` 会通过内部 Provider 下传给后代内容组件;例如 FlowAgent 节点在 `Share` 模式下隐藏耗时和「详情」入口
39
- - **字号主题**:通过 `size` 控制 `small`(默认 12px)/ `normal`(14px)两档字号;根节点设置 `data-ai-size`,子组件通过 CSS 变量(`--ai-font-size` 等)响应式缩放;浮层(Tippy / Teleport)会同步 `document.body.dataset.aiSize`,卸载时自动清理
40
32
  - **空状态欢迎页**:无消息时展示欢迎语和开场白
41
33
 
42
34
  ## 组件结构
43
35
 
44
36
  ```
45
- ai-chat-container(:data-ai-size="size")
37
+ ai-chat-container
46
38
  ├── Loading(chatLoading 时)
47
39
  └── ResizeLayout
48
40
  ├── aside(侧边栏)
@@ -56,14 +48,12 @@ ai-chat-container(:data-ai-size="size")
56
48
  │ └── collapse-button(折叠按钮,CollapsedIcon;折叠时图标旋转,hover 高亮 #3a84ff)
57
49
  └── main(主内容区)
58
50
  ├── MessageContainer(有消息时)
59
- │ ├── #group 插槽(可选,自定义消息组内容)
60
- │ ├── #message 插槽(可选,自定义单条消息)
61
51
  │ └── 消息列表 + 工具栏
62
52
  ├── 欢迎页(无消息时,容器 .ai-welcome-content)
63
53
  │ └── welcome 插槽(默认:Banner + 欢迎标题 + 开场白 ContentRender;自定义则整块替换)
64
54
  ├── SelectionFooter(分享模式时)
65
55
  ├── ShortcutRender(有快捷指令时)
66
- └── ChatInput(默认状态,待审批时通过 interrupt slot 展示 InputInfoAlert)
56
+ └── ChatInput(默认状态)
67
57
  ```
68
58
 
69
59
  ## 基础用法
@@ -118,26 +108,6 @@ ai-chat-container(:data-ai-size="size")
118
108
 
119
109
  **渲染效果**
120
110
 
121
- ## 字号主题
122
-
123
- 通过 `size` 切换两档字号主题。未传时默认为 `small`(12px 基准字号);设为 `normal` 时使用 14px 基准字号,并联动行高、间距与图标尺寸。
124
-
125
- ```vue
126
- <template>
127
- <ChatContainer
128
- v-model="inputValue"
129
- :messages="messages"
130
- message-status="complete"
131
- size="normal"
132
- :on-send-message="handleSendMessage"
133
- />
134
- </template>
135
- ```
136
-
137
- **渲染效果**(左右对比 `size="small"` 与 `size="normal"`)
138
-
139
- > CSS 变量与档位取值详见 [主题配置 — 字号主题](../../theme/theme#字号主题)。
140
-
141
111
  ## 侧边栏与执行摘要
142
112
 
143
113
  侧边栏默认包含「执行情况」Tab,展示所有工具调用和 FlowAgent 类型的 Activity 消息。支持关键词搜索过滤和点击定位到对话中的消息位置。
@@ -347,113 +317,6 @@ ai-chat-container(:data-ai-size="size")
347
317
 
348
318
  `messageStatus` 为 `streaming` 时,底部固定区域显示「停止生成」按钮,点击后触发 `@stop-streaming` 事件:
349
319
 
350
- ## 待审批阻塞发送
351
-
352
- 当会话中存在待审批的 AI Dev 工具审批中断时,`ChatContainer` 会在输入框上方展示提示,并禁用发送按钮。用户需要在审批卡片中点击「取消审批」或等待状态变化后,才能继续发送新消息。
353
-
354
- ```vue
355
- <template>
356
- <ChatContainer
357
- v-model="inputValue"
358
- :messages="messages"
359
- message-status="complete"
360
- :on-interrupt-resume="handleInterruptResume"
361
- :on-send-message="handleSendMessage"
362
- :on-stop-sending="handleStopSending"
363
- />
364
- </template>
365
- ```
366
-
367
- **渲染效果**(待审批单存在时,输入区上方展示提示,发送按钮置灰)
368
-
369
- ## 用户问题中断
370
-
371
- 当会话中最近一条待处理 interrupt 包含 `InterruptReason.UserQuestion` 时,`ChatContainer` 会在 `ChatInput` 上方显示 [UserQuestionCard](/components/agent/user-question-card)。
372
-
373
- - **结构化作答**:用户在卡片内完成选择或点击「跳过」后,通过 `onInterruptResume(payload, interrupt)` 回传 `UserQuestionResume`。
374
- - **输入框发送**:用户也可在输入框直接点击发送;容器会调用 `onSendMessage(content, docSchema, options)`,其中 `options.interrupt` 为当前激活的 UserQuestion,`options.payload` 为 `buildSkipResumePayload` 生成的 skip resume(`status: 'cancelled'`,`answers: []`)。此时**不会自动清空**输入框,由业务侧在 `onSendMessage` 内决定如何处理 `content` 与中断恢复。
375
-
376
- ```vue
377
- <template>
378
- <ChatContainer
379
- v-model="inputValue"
380
- :messages="messages"
381
- message-status="complete"
382
- :on-interrupt-resume="handleInterruptResume"
383
- :on-send-message="handleSendMessage"
384
- />
385
- </template>
386
-
387
- <script setup lang="ts">
388
- import {
389
- type OnInterruptResume,
390
- type UserMessage,
391
- type TagSchema,
392
- type Interrupt,
393
- type InterruptResume,
394
- } from '@blueking/chat-x';
395
-
396
- const handleInterruptResume: OnInterruptResume = async (payload, interrupt) => {
397
- // UserQuestionCard 完成 / 跳过时 payload 为 UserQuestionResume
398
- await resumeAgent({ interruptId: interrupt.id, resume: payload });
399
- };
400
-
401
- const handleSendMessage = async (
402
- content: UserMessage['content'],
403
- docSchema: TagSchema,
404
- options?: { interrupt?: Interrupt; payload?: InterruptResume },
405
- ) => {
406
- if (options?.interrupt && options?.payload) {
407
- // 存在 UserQuestion 时发送:附带 skip resume,content 仍为输入框文本
408
- await resumeAgent({ interruptId: options.interrupt.id, resume: options.payload });
409
- // 业务侧自行决定是否将 content 作为新用户消息继续发送
410
- return;
411
- }
412
- await sendMessage(content, docSchema);
413
- };
414
- </script>
415
- ```
416
-
417
- ## 自定义消息组渲染
418
-
419
- 通过 `#group` 插槽可替换单个消息组的默认内容,透传至内部 `MessageContainer`。外层消息组容器(`id`、hover、选中背景)仍由 `MessageContainer` 管理。
420
-
421
- > **注意**:提供 `#group` 后需自行编排组内全部 UI(Checkbox、消息列表、`MessageTools`);若只需替换单条消息,请使用 `#message` 插槽。详见 [MessageContainer 自定义消息组渲染](/components/setup/message-container#自定义消息组渲染)。
422
-
423
- ```vue
424
- <ChatContainer
425
- v-model="inputValue"
426
- :messages="messages"
427
- message-status="complete"
428
- :on-send-message="handleSendMessage"
429
- >
430
- <template #group="{ group }">
431
- <MyCustomGroup :group="group" />
432
- </template>
433
- </ChatContainer>
434
- ```
435
-
436
- ### 自定义题目渲染
437
-
438
- 通过 `#interruptQuestion` slot 可覆盖输入区上方 `UserQuestionCard` 的默认选择题渲染,参数与 [UserQuestionCard](/components/agent/user-question-card) 的 `#question` 一致:
439
-
440
- ```vue
441
- <ChatContainer
442
- v-model="inputValue"
443
- :messages="messages"
444
- :on-interrupt-resume="handleInterruptResume"
445
- :on-send-message="handleSendMessage"
446
- >
447
- <template #interruptQuestion="{ question, qIndex, answer, setAnswer, confirm }">
448
- <MyCustomForm
449
- :model="question"
450
- @change="setAnswer"
451
- @submit="confirm"
452
- />
453
- </template>
454
- </ChatContainer>
455
- ```
456
-
457
320
  ## 分享模式
458
321
 
459
322
  点击消息工具栏的「分享」按钮后进入分享模式,底部出现 `SelectionFooter` 操作栏:
@@ -537,11 +400,10 @@ ChatContainer 的 Props 继承自 `ChatInputProps` 和 `MessageContainerProps`
537
400
  | getSideTabRenderComponent | `(h, tab, { removeCustomTab }) => VNode \| undefined` | — | 自定义侧栏 Tab 标签渲染;未返回时使用默认图标 + 文案 + 关闭按钮 |
538
401
  | openingRemark | `string` | — | 开场白,无消息时显示,支持 Markdown |
539
402
  | placement | `'left' \| 'right'` | `'left'` | 侧边栏位置 |
540
- | size | `'normal' \| 'small'` | `'small'` | 字号主题档位:`small` 为 12px 基准,`normal` 为 14px 基准;根节点设置 `data-ai-size` 并注入 `useGlobalConfig` |
541
403
  | resizeProps | `{ disabled?: boolean; initialDivide?: number \| string; max?: number; min?: number }` | — | 透传给内部 `ResizeLayout` 的可选配置,与默认 `collapsible: false`、`immediate: true`、`min: 400` 合并;`placement` 始终取自本组件 `placement`;`initialDivide` 可为像素数字或百分比等字符串(与 bkui ResizeLayout 一致) |
542
404
  | onCustomTabChange | `(tab: CustomTab) => Promise<any>` | — | 自定义 Tab 切换回调,返回值作为 Tab 组件 props |
543
405
 
544
- > 完整 Props 列表请参考 [ChatInput](/components/input/chat-input) 和 [MessageContainer](/components/setup/message-container) 文档。
406
+ > 完整 Props 列表请参考 [ChatInput](./chat-input.md) 和 [MessageContainer](./message-container.md) 文档。
545
407
 
546
408
  ### v-model
547
409
 
@@ -566,14 +428,12 @@ ChatContainer 的 Props 继承自 `ChatInputProps` 和 `MessageContainerProps`
566
428
 
567
429
  ### Slots
568
430
 
569
- | 插槽名 | 参数 | 说明 |
570
- | ----------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
571
- | codeHeader | `{ language: string; token: Token[] }` | 代码块头部自定义操作区域,透传给 MessageRender → ContentRender → MarkdownContent → CodeContent |
572
- | default | 消息列表相关绑定(messages 等) | 自定义消息列表区域 |
573
- | group | `{ group: MessageGroup }` | 自定义单个消息组内容,透传至 MessageContainer 的 `#group`;替换默认 Checkbox、消息列表与工具栏 |
574
- | interruptQuestion | `{ question, qIndex, answer, setAnswer, confirm }` | 自定义 UserQuestion 单题渲染,透传至输入区上方 UserQuestionCard 的 `#question` |
575
- | message | `{ message, messageToolsStatus, onInterruptResume }` | 自定义单条消息渲染;自定义渲染中断消息时需继续透传 `onInterruptResume` |
576
- | welcome | `{ openingRemark: string }` | 无消息时自定义欢迎页;传入则替换默认 Banner、标题与开场白区域(整块替换) |
431
+ | 插槽名 | 参数 | 说明 |
432
+ | ---------- | -------------------------------------- | ---------------------------------------------------------------------------------------------- |
433
+ | codeHeader | `{ language: string; token: Token[] }` | 代码块头部自定义操作区域,透传给 MessageRender → ContentRender → MarkdownContent → CodeContent |
434
+ | default | 消息列表相关绑定(messages 等) | 自定义消息列表区域 |
435
+ | message | `{ message, messageToolsStatus }` | 自定义单条消息渲染 |
436
+ | welcome | `{ openingRemark: string }` | 无消息时自定义欢迎页;传入则替换默认 Banner、标题与开场白区域(整块替换) |
577
437
 
578
438
  ### Expose
579
439
 
@@ -618,19 +478,7 @@ ChatContainer 的 Props 继承自 `ChatInputProps` 和 `MessageContainerProps`
618
478
  ## 类型定义
619
479
 
620
480
  ```typescript
621
- import { ChatContainer, RenderMode, MessageRole, type CustomTab, type MessageGroup, type Shortcut, type Message } from '@blueking/chat-x';
622
-
623
- // 消息组(由 useMessageGroup 生成)
624
- interface MessageGroup {
625
- checked: boolean;
626
- isHover: boolean;
627
- messages: Message[];
628
- pause?: boolean;
629
- startTime?: number;
630
- type: MessageRole;
631
- uid: string;
632
- userMessageTitle?: number | string;
633
- }
481
+ import { ChatContainer, RenderMode, type CustomTab, type Shortcut, type Message } from '@blueking/chat-x';
634
482
 
635
483
  // 自定义 Tab(data 可与 messageUid 组合,供侧栏定位主对话)
636
484
  interface CustomTab<T = Record<string, unknown>> {
@@ -649,12 +497,10 @@ interface Shortcut {
649
497
 
650
498
  ## 关联组件
651
499
 
652
- - [MessageContainer](/components/setup/message-container) — 消息列表区域
653
- - [ChatInput](/components/input/chat-input) — 输入与快捷指令
654
- - [ShortcutRender](/components/input/shortcut-render) — 快捷指令表单
655
- - [ExecutionSummary](/components/agent/execution-summary) — 执行摘要侧栏
656
- - [SelectionFooter](/components/input/selection-footer) — 多选操作栏
657
- - [ToolBtn](/components/feedback/tool-btn) — 侧栏全屏按钮(自定义插槽)
658
- - [useFullScreen](/composables/use-full-screen) — 侧栏全屏控制
659
- - [useGlobalConfig](/composables/use-global-config) — 注入 `size` 与 `supportUpload`
660
- - [主题配置](/theme/theme) — 字号主题 CSS 变量
500
+ - [MessageContainer](./message-container.md) — 消息列表区域
501
+ - [ChatInput](./chat-input.md) — 输入与快捷指令
502
+ - [ShortcutRender](./shortcut-render.md) — 快捷指令表单
503
+ - [ExecutionSummary](./execution-summary.md) — 执行摘要侧栏
504
+ - [SelectionFooter](../atomic/selection-footer.md) — 多选操作栏
505
+ - [ToolBtn](../atomic/tool-btn.md) — 侧栏全屏按钮(自定义插槽)
506
+ - [useFullScreen](../../composables/use-full-screen.md) — 侧栏全屏控制