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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) 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-content/index.d.ts +2 -0
  14. package/dist/components/chat-input/ai-slash-input/ai-slash-input.vue.d.ts +1 -3
  15. package/dist/components/chat-input/chat-input.vue.d.ts +10 -9
  16. package/dist/components/chat-input/input-attachment/input-attachment.vue.d.ts +1 -0
  17. 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
  18. package/dist/components/chat-message/interrupt-message/index.d.ts +2 -0
  19. package/dist/components/chat-message/interrupt-message/interrupt-message.vue.d.ts +17 -0
  20. package/dist/components/chat-message/interrupt-message/tool-approval-card.vue.d.ts +8 -0
  21. package/dist/components/chat-message/interrupt-message/user-question/index.d.ts +5 -0
  22. package/dist/components/chat-message/interrupt-message/user-question/use-user-question.d.ts +35 -0
  23. package/dist/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue.d.ts +25 -0
  24. package/dist/components/chat-message/interrupt-message/user-question/user-question-card.vue.d.ts +25 -0
  25. package/dist/components/chat-message/interrupt-message/user-question/user-question-choice.vue.d.ts +13 -0
  26. package/dist/components/chat-message/interrupt-message/user-question/user-question-option.vue.d.ts +17 -0
  27. package/dist/components/chat-message/message-container/message-container.vue.d.ts +14 -7
  28. package/dist/components/chat-message/message-render/message-render.vue.d.ts +4 -0
  29. package/dist/components/index.d.ts +3 -5
  30. package/dist/composables/index.d.ts +0 -1
  31. package/dist/composables/use-common.d.ts +1 -1
  32. package/dist/composables/use-custom-tab.d.ts +1 -1
  33. package/dist/composables/use-message-group.d.ts +2004 -227
  34. package/dist/icons/execution.d.ts +0 -3
  35. package/dist/icons/index.d.ts +1 -1
  36. package/dist/icons/interrupt.d.ts +24 -0
  37. package/dist/index.css +1 -1
  38. package/dist/index.js +5059 -4674
  39. package/dist/index.js.map +1 -1
  40. package/dist/lang/lang.d.ts +33 -5
  41. package/dist/mcp/generated/docs/activity-layout.md +138 -0
  42. package/dist/mcp/generated/docs/activity-message.md +18 -28
  43. package/dist/mcp/generated/docs/ai-image.md +9 -4
  44. package/dist/mcp/generated/docs/ai-loading.md +11 -6
  45. package/dist/mcp/generated/docs/ai-prompt-list.md +42 -0
  46. package/dist/mcp/generated/docs/ai-selection.md +10 -5
  47. package/dist/mcp/generated/docs/ai-slash-editor.md +43 -0
  48. package/dist/mcp/generated/docs/ai-slash-input.md +43 -0
  49. package/dist/mcp/generated/docs/ai-slash-menu.md +42 -0
  50. package/dist/mcp/generated/docs/animation-text.md +9 -4
  51. package/dist/mcp/generated/docs/assistant-message.md +10 -5
  52. package/dist/mcp/generated/docs/chat-container.md +144 -93
  53. package/dist/mcp/generated/docs/chat-input.md +45 -9
  54. package/dist/mcp/generated/docs/cite-content.md +8 -3
  55. package/dist/mcp/generated/docs/code-content.md +9 -4
  56. package/dist/mcp/generated/docs/common-error-content.md +10 -5
  57. package/dist/mcp/generated/docs/constants.md +68 -3
  58. package/dist/mcp/generated/docs/content-render.md +10 -5
  59. package/dist/mcp/generated/docs/delete-tool.md +9 -4
  60. package/dist/mcp/generated/docs/desc-panel.md +9 -4
  61. package/dist/mcp/generated/docs/detail-section.md +93 -0
  62. package/dist/mcp/generated/docs/execution-summary.md +10 -5
  63. package/dist/mcp/generated/docs/file-content.md +9 -4
  64. package/dist/mcp/generated/docs/file-upload-btn.md +11 -6
  65. package/dist/mcp/generated/docs/flow-agent-content.md +212 -0
  66. package/dist/mcp/generated/docs/flow-agent-node-detail.md +240 -0
  67. package/dist/mcp/generated/docs/highlight-keyword.md +10 -5
  68. package/dist/mcp/generated/docs/image-content.md +9 -4
  69. package/dist/mcp/generated/docs/image-preview-group.md +9 -4
  70. package/dist/mcp/generated/docs/image-preview.md +10 -5
  71. package/dist/mcp/generated/docs/info-message.md +7 -2
  72. package/dist/mcp/generated/docs/input-attachment.md +43 -0
  73. package/dist/mcp/generated/docs/input-info-alert.md +42 -0
  74. package/dist/mcp/generated/docs/interrupt-message.md +204 -0
  75. package/dist/mcp/generated/docs/interrupt.md +282 -0
  76. package/dist/mcp/generated/docs/key-value-content.md +9 -4
  77. package/dist/mcp/generated/docs/knowledge-rag-content.md +126 -0
  78. package/dist/mcp/generated/docs/latex-content.md +9 -4
  79. package/dist/mcp/generated/docs/loading-message.md +11 -6
  80. package/dist/mcp/generated/docs/markdown-container.md +1 -1
  81. package/dist/mcp/generated/docs/markdown-content.md +13 -31
  82. package/dist/mcp/generated/docs/markdown-latex.md +3 -3
  83. package/dist/mcp/generated/docs/markdown-mermaid.md +3 -3
  84. package/dist/mcp/generated/docs/mermaid-content.md +9 -4
  85. package/dist/mcp/generated/docs/message-container.md +70 -12
  86. package/dist/mcp/generated/docs/message-loading.md +120 -0
  87. package/dist/mcp/generated/docs/message-render.md +21 -9
  88. package/dist/mcp/generated/docs/message-tools.md +13 -8
  89. package/dist/mcp/generated/docs/messages.md +75 -11
  90. package/dist/mcp/generated/docs/overflow-tips.md +4 -4
  91. package/dist/mcp/generated/docs/preview-toolbar.md +42 -0
  92. package/dist/mcp/generated/docs/questions-container.md +88 -0
  93. package/dist/mcp/generated/docs/reasoning-message.md +10 -5
  94. package/dist/mcp/generated/docs/reference-content.md +10 -5
  95. package/dist/mcp/generated/docs/reference-doc-content.md +112 -0
  96. package/dist/mcp/generated/docs/schema.md +93 -0
  97. package/dist/mcp/generated/docs/scroll-btn.md +8 -3
  98. package/dist/mcp/generated/docs/selection-footer.md +9 -4
  99. package/dist/mcp/generated/docs/selection-question.md +91 -0
  100. package/dist/mcp/generated/docs/shortcut-btn.md +10 -5
  101. package/dist/mcp/generated/docs/shortcut-btns.md +10 -5
  102. package/dist/mcp/generated/docs/shortcut-render.md +11 -10
  103. package/dist/mcp/generated/docs/simple-table.md +103 -0
  104. package/dist/mcp/generated/docs/text-content.md +9 -4
  105. package/dist/mcp/generated/docs/theme.md +3 -3
  106. package/dist/mcp/generated/docs/tool-approval-card.md +148 -0
  107. package/dist/mcp/generated/docs/tool-btn.md +15 -41
  108. package/dist/mcp/generated/docs/tool-message.md +10 -5
  109. package/dist/mcp/generated/docs/toolcall-render.md +10 -5
  110. package/dist/mcp/generated/docs/use-animation-text.md +4 -4
  111. package/dist/mcp/generated/docs/use-clipboard.md +3 -3
  112. package/dist/mcp/generated/docs/use-command-selection.md +1 -1
  113. package/dist/mcp/generated/docs/use-custom-tab.md +1 -1
  114. package/dist/mcp/generated/docs/use-global-config.md +1 -1
  115. package/dist/mcp/generated/docs/use-menu-keydown.md +1 -1
  116. package/dist/mcp/generated/docs/use-message-group.md +40 -9
  117. package/dist/mcp/generated/docs/use-observer-visible-list.md +1 -1
  118. package/dist/mcp/generated/docs/user-feedback.md +8 -3
  119. package/dist/mcp/generated/docs/user-message.md +10 -5
  120. package/dist/mcp/generated/docs/user-question-answered-card.md +106 -0
  121. package/dist/mcp/generated/docs/user-question-card.md +211 -0
  122. package/dist/mcp/generated/docs/user-question-choice.md +108 -0
  123. package/dist/mcp/generated/docs/user-question-option.md +42 -0
  124. package/dist/mcp/generated/docs/vnode-renderer.md +126 -0
  125. package/dist/mcp/generated/index.json +1062 -551
  126. package/dist/mcp/index.js +0 -0
  127. package/dist/mcp/server.js +1 -1
  128. package/dist/mcp/server.js.map +1 -1
  129. package/dist/mcp/tools/list-components.d.ts +7 -6
  130. package/dist/mcp/tools/list-components.js +23 -29
  131. package/dist/mcp/tools/list-components.js.map +1 -1
  132. package/dist/mcp/tools/search-docs.js +1 -1
  133. package/dist/mcp/tools/search-docs.js.map +1 -1
  134. package/dist/mcp/utils/doc-loader.d.ts +1 -1
  135. package/dist/plugins/index.d.ts +0 -1
  136. package/dist/types/custom.d.ts +0 -1
  137. package/dist/types/editor.d.ts +0 -6
  138. package/dist/types/input.d.ts +1 -1
  139. package/dist/types/tool.d.ts +3 -3
  140. package/dist/utils/index.d.ts +0 -1
  141. package/dist/utils/utils.d.ts +0 -1
  142. package/package.json +23 -21
  143. package/dist/components/chat-content/flow-agent-content/flow-agent-state.d.ts +0 -34
  144. package/dist/components/chat-content/flow-agent-content/use-flow-agent.d.ts +0 -47
  145. package/dist/components/chat-content/flow-agent-content/use-flow-tab.d.ts +0 -18
  146. package/dist/composables/use-full-screen.d.ts +0 -17
  147. package/dist/icons/screen.d.ts +0 -6
  148. package/dist/mcp/generated/docs/use-full-screen.md +0 -114
  149. package/dist/plugins/markdown-bk-inline-style.d.ts +0 -20
@@ -36,6 +36,7 @@ enum MessageRole {
36
36
  HiddenSystem = 'hidden-system',
37
37
  HiddenUser = 'hidden-user',
38
38
  Info = 'info',
39
+ Interrupt = 'interrupt',
39
40
  Loading = 'loading',
40
41
  Pause = 'pause',
41
42
  Placeholder = 'placeholder',
@@ -72,6 +73,70 @@ enum MessageStatus {
72
73
  | --------------- | ---- |
73
74
  | `Fetching` | 请求中:与 `useMessageGroup` 在末尾用户消息后注入的 Loading 占位(`LOADING_MESSAGE_ID`)配合时,`ChatContainer` 会将传入输入区与列表底部的状态推导为该值,便于展示「停止」与禁止重复发送。 |
74
75
 
76
+ ### InterruptReason
77
+
78
+ human-in-the-loop 中断原因枚举,用于 `Interrupt.reason` 区分中断类型并选择对应的 UI 渲染器。
79
+
80
+ ```typescript
81
+ enum InterruptReason {
82
+ AIDevToolApproval = 'aidev:tool_approval',
83
+ UserQuestion = 'aidev:user_question',
84
+ }
85
+ ```
86
+
87
+ ### APPROVAL_STATUS
88
+
89
+ AI Dev 工具审批单状态枚举,`AIDevToolApprovalInterrupt.metadata.ticket.status` 使用该类型。
90
+
91
+ ```typescript
92
+ enum APPROVAL_STATUS {
93
+ ABANDONED = 'abandoned',
94
+ APPROVED = 'approved',
95
+ CANCELLED = 'cancelled',
96
+ DRAFT = 'draft',
97
+ EXPIRED = 'expired',
98
+ PENDING = 'pending',
99
+ REJECTED = 'rejected',
100
+ REVOKED = 'revoked',
101
+ }
102
+ ```
103
+
104
+ ### APPROVAL_STATUS_MAP
105
+
106
+ 审批单状态到展示文案的映射,供 `ToolApprovalCard` 等组件使用:
107
+
108
+ ```typescript
109
+ const APPROVAL_STATUS_MAP: Record<APPROVAL_STATUS, string> = {
110
+ [APPROVAL_STATUS.ABANDONED]: '已废弃',
111
+ [APPROVAL_STATUS.APPROVED]: '已通过',
112
+ [APPROVAL_STATUS.CANCELLED]: '已取消',
113
+ [APPROVAL_STATUS.DRAFT]: '待审批',
114
+ [APPROVAL_STATUS.EXPIRED]: '已过期',
115
+ [APPROVAL_STATUS.PENDING]: '待审批',
116
+ [APPROVAL_STATUS.REJECTED]: '已拒绝',
117
+ [APPROVAL_STATUS.REVOKED]: '已撤销',
118
+ };
119
+ ```
120
+
121
+ | 状态值 | 展示文案 |
122
+ | ----------- | -------- |
123
+ | `pending` | 待审批 |
124
+ | `draft` | 待审批 |
125
+ | `approved` | 已通过 |
126
+ | `rejected` | 已拒绝 |
127
+ | `cancelled` | 已取消 |
128
+ | `expired` | 已过期 |
129
+ | `abandoned` | 已废弃 |
130
+ | `revoked` | 已撤销 |
131
+
132
+ ### RunFinishedOutcome
133
+
134
+ AG-UI `RUN_FINISHED` 事件的结束结果类型。中断结果不再是字符串枚举,而是对象联合类型;`type: 'interrupt'` 时,中断列表放在 `interrupts` 字段中。
135
+
136
+ ```typescript
137
+ type RunFinishedOutcome = { interrupts: Interrupt[]; type: 'interrupt' } | { type: 'success' };
138
+ ```
139
+
75
140
  ### MessageContentType
76
141
 
77
142
  消息内容类型枚举:
@@ -238,6 +303,6 @@ console.log(
238
303
 
239
304
  ## 关联组件
240
305
 
241
- - [MessageTools](../components/molecular/message-tools.md) — 消息工具栏
242
- - [ChatInput](../components/molecular/chat-input.md) — 输入与状态
243
- - [MessageContainer](../components/molecular/message-container.md) — 工具与消息展示
306
+ - [MessageTools](../components/feedback/message-tools) — 消息工具栏
307
+ - [ChatInput](../components/input/chat-input) — 输入与状态
308
+ - [MessageContainer](../components/setup/message-container) — 工具与消息展示
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- ContentRender 按消息 content 类型分发:字符串走 Markdown 管线,数组可走引用文档等;可扩展自定义 slot 主要 props 为 content、status,与 MessageRender、AssistantMessage 等配合使用。 内置与 MarkdownContent、ReferenceContent 等原子/分子组件衔接。
4
+ MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。 源码位置:src/components/chat-content/content-render/content-render.vue
5
5
 
6
6
  ### 关联组件
7
7
  - **markdown-content** — 文本类 Markdown 正文的默认渲染实现
@@ -12,8 +12,13 @@ ContentRender 按消息 content 类型分发:字符串走 Markdown 管线,
12
12
  <!-- FULL DOC -->
13
13
 
14
14
  # ContentRender 内容渲染器
15
+ ## 源码事实
15
16
 
16
- > **层级**:分子组件 · **功能域**:内容渲染
17
+ - **源码位置**:`src/components/chat-content/content-render/content-render.vue`
18
+ - **能力域**:内容渲染
19
+ - **能力说明**:按 MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。
20
+
21
+ > **能力域**:内容渲染
17
22
 
18
23
  消息内容渲染分发组件,根据 `content` 的 JavaScript 类型自动选择渲染方式:字符串 → `MarkdownContent`(Markdown 渲染),数组 → `ReferenceContent`(引用列表)。
19
24
 
@@ -234,6 +239,6 @@ enum MessageStatus {
234
239
 
235
240
  ## 关联组件
236
241
 
237
- - [MarkdownContent](../atomic/markdown-content.md) — 字符串 Markdown 正文
238
- - [ReferenceContent](../atomic/reference-content.md) — 引用文档数组
239
- - [AssistantMessage](./assistant-message.md) — assistant 消息中默认使用
242
+ - [MarkdownContent](/components/rendering/markdown-content) — 字符串 Markdown 正文
243
+ - [ReferenceContent](/components/rendering/reference-content) — 引用文档数组
244
+ - [AssistantMessage](/components/message/assistant-message) — assistant 消息中默认使用
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- DeleteTool 在点击删除图标后弹出 Tippy 确认层,需再次点击「删除」才 emit confirm,避免误删。 触发器为 ToolBtn;MessageTools 在工具 id 为 delete 时用本组件替换普通 ToolBtn
4
+ 消息删除二次确认工具。 源码位置:src/components/message-tools/delete-tool/delete-tool.vue
5
5
 
6
6
  ### 关联组件
7
7
  - **tool-btn** — 删除图标与触发入口
@@ -11,8 +11,13 @@ DeleteTool 在点击删除图标后弹出 Tippy 确认层,需再次点击「
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # DeleteTool 删除确认按钮
14
+ ## 源码事实
14
15
 
15
- > **层级**:分子组件 · **功能域**:工具与反馈
16
+ - **源码位置**:`src/components/message-tools/delete-tool/delete-tool.vue`
17
+ - **能力域**:工具与反馈
18
+ - **能力说明**:消息删除二次确认工具。
19
+
20
+ > **能力域**:工具与反馈
16
21
 
17
22
  删除操作的二次确认组件。点击删除图标后弹出确认弹窗,用户需再次点击"删除"按钮才会触发 `confirm` 事件,防止误删。内部由 `ToolBtn`(触发按钮)+ `Tippy`(确认弹窗)组合实现。
18
23
 
@@ -184,5 +189,5 @@ export type DeleteToolProps = IToolBtn & {
184
189
 
185
190
  ## 关联组件
186
191
 
187
- - [ToolBtn](../atomic/tool-btn.md) — 触发按钮
188
- - [MessageTools](./message-tools.md) — 工具栏中 delete 替换入口
192
+ - [ToolBtn](/components/feedback/tool-btn) — 触发按钮
193
+ - [MessageTools](/components/feedback/message-tools) — 工具栏中 delete 替换入口
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- DescPanel 将描述字符串尝试 JSON 解析为键值列表展示,否则按纯文本输出,用于工具调用详情折叠区。 内部对键与值使用 HighlightKeyword 支持搜索高亮。
4
+ 将文本或 JSON 内容降级为可读描述面板。 源码位置:src/components/tool-call/desc-panel/desc-panel.vue。
5
5
 
6
6
  ### 关联组件
7
7
  - **toolcall-render** — 工具调用详情中渲染描述与参数
@@ -11,8 +11,13 @@ DescPanel 将描述字符串尝试 JSON 解析为键值列表展示,否则按
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # DescPanel 描述面板
14
+ ## 源码事实
14
15
 
15
- > **层级**:原子组件 · **功能域**:辅助组件
16
+ - **源码位置**:`src/components/tool-call/desc-panel/desc-panel.vue`
17
+ - **能力域**:内容渲染
18
+ - **能力说明**:将文本或 JSON 内容降级为可读描述面板。
19
+
20
+ > **能力域**:内容渲染
16
21
 
17
22
  工具调用(ToolCall)详情面板的描述区域组件,主要用于 `ToolcallRender` 内部的折叠面板中。
18
23
 
@@ -134,5 +139,5 @@ JSON 数组同样被视为 `object`,以数组索引(`0:`、`1:`…)作为
134
139
 
135
140
  ## 关联组件
136
141
 
137
- - [ToolcallRender](../molecular/toolcall-render.md) — 主要使用场景
138
- - [HighlightKeyword](./highlight-keyword.md) — 键值高亮
142
+ - [ToolcallRender](/components/agent/toolcall-render) — 主要使用场景
143
+ - [HighlightKeyword](/components/helper/highlight-keyword) — 键值高亮
@@ -0,0 +1,93 @@
1
+ <!-- AI SUMMARY -->
2
+ ## 快速了解
3
+
4
+ FlowAgent 节点详情中的标题/内容分段容器。 源码位置:src/components/chat-content/flow-agent-content/detail-section.vue。
5
+
6
+ ### 关联组件
7
+ - **flow-agent-node-detail** — 节点详情中用于承载基础信息、输入参数、输出参数等区块
8
+ - **simple-table** — 常作为分段内容展示结构化参数表格
9
+
10
+ ---
11
+ <!-- FULL DOC -->
12
+
13
+ # DetailSection 详情分段
14
+
15
+ > **能力域**:Agent 能力
16
+
17
+ `DetailSection` 是 FlowAgent 节点详情页中的轻量分段容器,用于给一组相关信息提供统一标题样式。组件自身只负责渲染标题和默认插槽,不处理数据格式、折叠、空态或表格逻辑。
18
+
19
+ 通常不需要单独接入,主要由 `FlowAgentNodeDetail` 内部组合使用。
20
+
21
+ ## 源码事实
22
+
23
+ - **源码位置**:`src/components/chat-content/flow-agent-content/detail-section.vue`
24
+ - **能力说明**:FlowAgent 节点详情中的标题/内容分段容器。
25
+
26
+ ## 核心能力
27
+
28
+ - **统一标题样式**:标题前带蓝色竖条,标题文本使用详情页统一字号与字重
29
+ - **内容完全透传**:通过默认插槽承载任意内容,如基础信息表单、`SimpleTable` 或自定义说明
30
+ - **无内部状态**:不维护折叠、加载、选择等状态,适合作为详情页布局基础块
31
+
32
+ ## 基础用法
33
+
34
+ ```vue
35
+ <template>
36
+ <DetailSection title="基础信息">
37
+ <div class="info-row">节点名称:采集主机指标</div>
38
+ </DetailSection>
39
+ </template>
40
+
41
+ <script setup lang="ts">
42
+ import DetailSection from '@blueking/chat-x/src/components/chat-content/flow-agent-content/detail-section.vue';
43
+ </script>
44
+ ```
45
+
46
+ **渲染效果**
47
+
48
+ ## 搭配 SimpleTable
49
+
50
+ `DetailSection` 最常见的用法是包裹结构化内容,由外层负责分段标题,内部组件负责数据展示。
51
+
52
+ ```vue
53
+ <template>
54
+ <DetailSection title="输入参数">
55
+ <SimpleTable
56
+ :columns="columns"
57
+ :data="data"
58
+ />
59
+ </DetailSection>
60
+ </template>
61
+ ```
62
+
63
+ ## API
64
+
65
+ ### Props
66
+
67
+ | 属性名 | 类型 | 必填 | 默认值 | 说明 |
68
+ | ------ | -------- | ---- | ------ | -------- |
69
+ | title | `string` | 是 | — | 分段标题 |
70
+
71
+ ### Emits
72
+
73
+ - 无。
74
+
75
+ ### Slots
76
+
77
+ | 插槽名 | 说明 |
78
+ | ------- | ---------------- |
79
+ | default | 分段主体展示内容 |
80
+
81
+ ### Expose
82
+
83
+ - 无。
84
+
85
+ ## 使用建议
86
+
87
+ - 用于详情页内部的短分段,不建议作为通用卡片或页面 Section 使用。
88
+ - 内容空态应由插槽内组件自行处理,`DetailSection` 不会主动显示空态。
89
+
90
+ ## 关联组件
91
+
92
+ - [FlowAgentNodeDetail](./flow-agent-node-detail.md) — 节点详情主体。
93
+ - [SimpleTable](./simple-table.md) — 分段内常用的轻量表格。
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- ExecutionSummary 以时间线汇总工具调用与 FlowAgent 等活动记录,支持关键词过滤与 HighlightKeyword 高亮。 点击可 emit 定位到会话中对应消息;内部用 MessageRender 渲染摘要条目中的消息片段。
4
+ 按消息流提取执行摘要,支持关键词定位和消息渲染。 源码位置:src/components/execution-summary/execution-summary.vue。
5
5
 
6
6
  ### 关联组件
7
7
  - **message-render** — 摘要列表内渲染消息内容
@@ -12,8 +12,13 @@ ExecutionSummary 以时间线汇总工具调用与 FlowAgent 等活动记录,
12
12
  <!-- FULL DOC -->
13
13
 
14
14
  # ExecutionSummary 执行摘要
15
+ ## 源码事实
15
16
 
16
- > **层级**:分子组件 · **功能域**:辅助组件
17
+ - **源码位置**:`src/components/execution-summary/execution-summary.vue`
18
+ - **能力域**:Agent 能力
19
+ - **能力说明**:按消息流提取执行摘要,支持关键词定位和消息渲染。
20
+
21
+ > **能力域**:Agent 能力
17
22
 
18
23
  执行摘要面板组件,以时间线形式展示对话中的工具调用和 FlowAgent 活动记录。支持关键词搜索过滤和点击定位到对话中的消息位置。
19
24
 
@@ -121,6 +126,6 @@ interface MessageGroup {
121
126
 
122
127
  ## 关联组件
123
128
 
124
- - [MessageRender](./message-render.md) — 摘要内消息渲染
125
- - [HighlightKeyword](../atomic/highlight-keyword.md) — 搜索高亮
126
- - [ChatContainer](./chat-container.md) — 侧栏挂载场景
129
+ - [MessageRender](/components/message/message-render) — 摘要内消息渲染
130
+ - [HighlightKeyword](/components/helper/highlight-keyword) — 搜索高亮
131
+ - [ChatContainer](/components/setup/chat-container) — 侧栏挂载场景
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- FileContent 展示消息或输入区附件列表:图片显示缩略图并可进入 ImagePreview,文档以卡片展示文件名、类型与大小。 支持删除、图片加载失败占位及仅有远端文件名的降级展示。
4
+ 渲染文件附件,支持图片预览和下载事件。 源码位置:src/components/chat-content/file-content/file-content.vue。
5
5
 
6
6
  ### 关联组件
7
7
  - **image-preview** — 点击图片缩略图打开全屏预览
@@ -11,8 +11,13 @@ FileContent 展示消息或输入区附件列表:图片显示缩略图并可
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # FileContent 文件内容展示
14
+ ## 源码事实
14
15
 
15
- > **层级**:分子组件 · **功能域**:文件与图片
16
+ - **源码位置**:`src/components/chat-content/file-content/file-content.vue`
17
+ - **能力域**:媒体文件
18
+ - **能力说明**:渲染文件附件,支持图片预览和下载事件。
19
+
20
+ > **能力域**:媒体文件
16
21
 
17
22
  文件列表展示组件,支持图片缩略图预览、点击图片全屏预览(`ImagePreview`)、文档卡片展示(文件名/扩展名/文件大小)、图片加载失败占位和删除操作。
18
23
 
@@ -296,5 +301,5 @@ const formatFileSize = (file?: File): string => {
296
301
 
297
302
  ## 关联组件
298
303
 
299
- - [ImagePreview](./image-preview.md) — 图片全屏预览
300
- - [UserMessage](./user-message.md) — 用户消息内附件展示
304
+ - [ImagePreview](/components/medias/image-preview) — 图片全屏预览
305
+ - [UserMessage](/components/message/user-message) — 用户消息内附件展示
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过滤空文件与超大单文件并 emit upload; 个数上限不在此截断,由 ChatInput 等与 FileContent 配合完成「选择 → 展示 → 发送」链路。
4
+ 文件选择按钮,封装 input[type=file] 并输出选择事件。 源码位置:src/components/ai-buttons/file-upload-btn/file-upload-btn.vue。
5
5
 
6
6
  ### 关联组件
7
7
  - **chat-input** — 输入区附件上传按钮常见挂载位置
@@ -11,8 +11,13 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过
11
11
  <!-- FULL DOC -->
12
12
 
13
13
  # FileUploadBtn 文件上传按钮
14
+ ## 源码事实
14
15
 
15
- > **层级**:原子组件 · **功能域**:文件与图片
16
+ - **源码位置**:`src/components/ai-buttons/file-upload-btn/file-upload-btn.vue`
17
+ - **能力域**:输入交互
18
+ - **能力说明**:文件选择按钮,封装 input[type=file] 并输出选择事件。
19
+
20
+ > **能力域**:输入交互
16
21
 
17
22
  聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type="file">` 与可见的图标按钮;在按钮层对**单文件**做大小与空文件过滤,**已选文件个数上限**由上层(如 `ChatInput`)统一校验并提示,避免按钮与输入区各弹一条错误提示。
18
23
 
@@ -56,7 +61,7 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过
56
61
 
57
62
  > `multiple` prop 声明存在但当前模板中 `input` 的 `multiple` 属性为**硬编码**(非 `:multiple="multiple"` 绑定),始终允许多选,该 prop 暂时无实际效果。
58
63
 
59
- > **`maxFiles` prop**:当前版本在按钮内**不参与截断或计数校验**,仅作类型与文档预留;列表最多几个文件由上层(如 `ChatInput` 的 `MAX_UPLOAD_FILES`)控制。详见 [ChatInput 文件上传](../molecular/chat-input.md#file-upload)。
64
+ > **`maxFiles` prop**:当前版本在按钮内**不参与截断或计数校验**,仅作类型与文档预留;列表最多几个文件由上层(如 `ChatInput` 的 `MAX_UPLOAD_FILES`)控制。详见 [ChatInput 文件上传](/components/input/chat-input#file-upload)。
60
65
 
61
66
  ## 基础用法
62
67
 
@@ -149,10 +154,10 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过
149
154
  ```typescript
150
155
  import type { TippyOptions } from 'vue-tippy';
151
156
 
152
- type AITippyProps = Partial<Pick<TippyOptions, 'appendTo' | 'placement' | 'zIndex'>>;
157
+ type AITippyProps = Partial<Omit<TippyOptions, 'content' | 'getReferenceClientRect' | 'theme' | 'triggerTarget'>>;
153
158
  ```
154
159
 
155
160
  ## 关联组件
156
161
 
157
- - [ChatInput](../molecular/chat-input.md) — 默认内置上传入口
158
- - [FileContent](../molecular/file-content.md) — 选中文件列表展示
162
+ - [ChatInput](/components/input/chat-input) — 默认内置上传入口
163
+ - [FileContent](/components/medias/file-content) — 选中文件列表展示
@@ -0,0 +1,212 @@
1
+ <!-- AI SUMMARY -->
2
+ ## 快速了解
3
+
4
+ 渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。 源码位置:src/components/chat-content/flow-agent-content/flow-agent-content.vue。
5
+
6
+ ### 关联组件
7
+ - **flow-agent-node-detail** — 详情入口点击后挂载到自定义 Tab 渲染
8
+ - **activity-layout** — 提供可折叠的活动容器外壳
9
+ - **chat-container** — 通过自定义 Tab 在侧栏展示节点详情
10
+
11
+ ---
12
+ <!-- FULL DOC -->
13
+
14
+ # FlowAgentContent FlowAgent 执行内容
15
+
16
+ > **能力域**:Agent 能力
17
+
18
+ 渲染 FlowAgent(标准运维 / 流程编排)执行过程的活动组件,以「任务 → 节点」两级结构展示执行状态、耗时统计与详情入口。组件内部消费 `useCustomTabConsumer`,点击节点「详情」会向侧栏的自定义 Tab 注入 `FlowAgentNodeDetail` 渲染节点输入输出。
19
+
20
+ 通常不需要直接使用,`MessageRender` 会根据消息 `content.type === flow_agent` 自动渲染。
21
+
22
+ ## 源码事实
23
+
24
+ - **源码位置**:`src/components/chat-content/flow-agent-content/flow-agent-content.vue`
25
+ - **能力说明**:渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。
26
+
27
+ ## 核心能力
28
+
29
+ - **状态聚合统计**:汇总所有任务的 `statistics.state_counts`,在标题栏按「执行中 / 成功 / 失败 / 挂起 / 待执行」分类展示带颜色的计数(超过 99 显示 `99+`)
30
+ - **两级折叠**:任务整体由 `ActivityLayout` 折叠;每个任务节点列表可单独展开/收起
31
+ - **耗时格式化**:节点耗时与任务总耗时按 `d/h/m/s` 紧凑展示,小于 1 秒显示 `<1s`
32
+ - **详情入口联动**:hover 节点行显示「详情」按钮,点击后通过自定义 Tab 挂载 `FlowAgentNodeDetail`
33
+ - **分享态降级**:`RenderMode.Share` 下隐藏耗时与详情入口,仅保留只读的执行状态
34
+
35
+ ## 状态映射
36
+
37
+ 组件将后端原始 `state` / `task_state` 归一为 5 类收敛状态(`getConvergedState`),用于图标、颜色与统计分类:
38
+
39
+ | 收敛状态 | 颜色 | 原始状态 |
40
+ | ----------- | ----------- | --------------------------------------------------------------------------------- |
41
+ | `success` | `#18B456` | `FINISHED` |
42
+ | `failed` | `#EA3636` | `FAILED`、`REVOKED`、`ROLL_BACK_FAILED` |
43
+ | `suspended` | `#F59500` | `SUSPENDED` |
44
+ | `pending` | `#4D4F56` | `PENDING` |
45
+ | `running` | `#3A84FF` | `CREATED`、`LOOP_READY`、`READY`、`RUNNING`、`BLOCKED`、`ROLLING_BACK`、`ROLL_BACK_SUCCESS` 及未知状态(兜底) |
46
+
47
+ ## 基础用法
48
+
49
+ `content` 为任务数组 `BkFlowTask[]`;传入单个对象时组件会自动包装为单元素数组。
50
+
51
+ ```vue
52
+ <template>
53
+ <FlowAgentContent
54
+ :content="flowContent"
55
+ :message-uid="messageUid"
56
+ :status="status"
57
+ />
58
+ </template>
59
+
60
+ <script setup lang="ts">
61
+ import { FlowAgentContent } from '@blueking/chat-x';
62
+ import type { BkFlowMessageContent } from '@blueking/chat-x';
63
+
64
+ const messageUid = 'flow-msg-1';
65
+ const status = 'success';
66
+ const flowContent: BkFlowMessageContent = [
67
+ {
68
+ task_id: 100,
69
+ task_name: '主机巡检流程',
70
+ task_state: 'FINISHED',
71
+ task_outputs: { result: 'ok' },
72
+ statistics: { state_counts: { FINISHED: 2, FAILED: 1 }, total: 3 },
73
+ nodes: {
74
+ n1: { id: 'n1', name: '采集主机指标', state: 'FINISHED', elapsed_time: 12, type: 'task', loop: 0, retry: 0, skip: false, start_time: '', finish_time: '' },
75
+ n2: { id: 'n2', name: '分析异常项', state: 'FINISHED', elapsed_time: 65, type: 'task', loop: 0, retry: 0, skip: false, start_time: '', finish_time: '' },
76
+ n3: { id: 'n3', name: '推送告警', state: 'FAILED', elapsed_time: 3, type: 'task', loop: 0, retry: 1, skip: false, start_time: '', finish_time: '' },
77
+ },
78
+ },
79
+ ];
80
+ </script>
81
+ ```
82
+
83
+ **渲染效果**(hover 节点行可看到耗时切换为「详情」按钮,点击会向侧栏自定义 Tab 注入节点详情)
84
+
85
+ ## 执行中状态
86
+
87
+ `status` 为 `pending` / `streaming` 时,标题栏图标显示为加载动画;运行中的节点显示旋转 Loading,待执行 / 挂起节点显示对应颜色的状态点。
88
+
89
+ ## 节点详情联动
90
+
91
+ 点击节点「详情」按钮时,组件调用 `addCustomTab` 注入一个以 `${task_id}|${node.id}|${node.name}` 为唯一 `name` 的 Tab,渲染组件为 `FlowAgentNodeDetail`:
92
+
93
+ ```ts
94
+ addCustomTab?.({
95
+ label: node.name,
96
+ name: `${task.task_id}|${node.id}|${node.name}`,
97
+ data: {
98
+ component: BkFlowNodeDetail,
99
+ messageUid: props.messageUid,
100
+ props: {
101
+ loading: true,
102
+ node_id: node.id,
103
+ node_name: node.name,
104
+ task_id: task.task_id,
105
+ task_name: task.task_name,
106
+ data: {},
107
+ },
108
+ },
109
+ });
110
+ ```
111
+
112
+ > 实际节点详情数据由应用层在 `ChatContainer` 的 `onCustomTabChange` 中异步拉取后回填,组件本身只负责挂载占位与传参。组件卸载时(在消息容器滚动上下文中)会自动调用 `removeCustomTab` 清理对应 Tab。
113
+
114
+ ## 组件结构
115
+
116
+ ```
117
+ ActivityLayout(activity-type=flow_agent,v-model:collapsed)
118
+ ├── #title(执行情况统计栏)
119
+ │ ├── AiLoading / ArrowRightIcon(加载态 / 折叠箭头)
120
+ │ └── flow-agent-stat-item × N(按收敛状态分类的计数)
121
+ └── flow-agent-task-group × N(任务)
122
+ ├── flow-agent-task-header(点击折叠当前任务)
123
+ │ ├── task-arrow(任务展开箭头)
124
+ │ ├── task-state-icon(Loading / 状态图标)
125
+ │ ├── task-name(HighlightKeyword + 溢出提示)
126
+ │ └── task-time(任务总耗时 = 各节点耗时累加)
127
+ └── flow-agent-task-nodes(v-show 折叠)
128
+ └── flow-agent-node-item × N(节点)
129
+ ├── node-status(Loading / 状态圆点)
130
+ ├── node-name(HighlightKeyword + 溢出提示)
131
+ └── node-trailing(非 Share 态)
132
+ ├── node-time(节点耗时,hover 时隐藏)
133
+ └── node-detail-btn(hover 时显示,点击挂载详情 Tab)
134
+ ```
135
+
136
+ ## API
137
+
138
+ ### Props
139
+
140
+ | 属性名 | 类型 | 必填 | 默认值 | 说明 |
141
+ | ---------- | ------------------------ | ---- | ----------- | -------------------------------------------------------------------------- |
142
+ | content | `BkFlowMessageContent` | 否 | `[{}]` | 任务数组;传入单个 `BkFlowTask` 时自动包装为单元素数组 |
143
+ | messageUid | `string` | 否 | — | 所属消息唯一标识,注入到节点详情 Tab 的 `data.messageUid`,用于异步回填数据 |
144
+ | status | `MessageStatus` | 否 | — | 消息状态;`pending` / `streaming` 时标题栏显示加载动画 |
145
+
146
+ ### Emits
147
+
148
+ - 无。
149
+
150
+ ### Slots
151
+
152
+ - 无。
153
+
154
+ ### Expose
155
+
156
+ - 无。
157
+
158
+ ## 类型定义
159
+
160
+ ```typescript
161
+ // 来自 @blueking/chat-x 导出
162
+ type BkFlowMessageContent = BkFlowTask[];
163
+
164
+ interface BkFlowTask {
165
+ task_id: number;
166
+ task_name: string;
167
+ task_state: string; // 原始任务状态,经 getConvergedState 归一
168
+ task_outputs: unknown; // 任务输出(当前展示区块已注释,不渲染)
169
+ statistics: {
170
+ state_counts: Record<string, number>; // 原始状态 → 数量,用于标题统计聚合
171
+ total: number;
172
+ };
173
+ nodes: Record<string, BkFlowNode>; // key 为节点 id
174
+ }
175
+
176
+ interface BkFlowNode {
177
+ id: string;
178
+ name: string;
179
+ state: string; // 原始节点状态
180
+ elapsed_time: number; // 耗时(秒)
181
+ type: string;
182
+ loop: number;
183
+ retry: number;
184
+ skip: boolean;
185
+ start_time: string;
186
+ finish_time: string;
187
+ }
188
+ ```
189
+
190
+ ## 组件依赖
191
+
192
+ - `AiLoading` — 标题栏流式加载动画
193
+ - `ActivityLayout` — 可折叠活动容器外壳
194
+ - `BkFlowNodeDetail` — 节点详情面板(经自定义 Tab 挂载)
195
+ - `Loading`(bkui-vue) — 运行中状态的旋转指示
196
+ - `HighlightKeyword` — 任务 / 节点名称的搜索关键词高亮
197
+
198
+ ## 注意事项
199
+
200
+ 1. **依赖自定义 Tab 上下文**:组件内部使用 `useCustomTabConsumer()!`,必须存在 `useCustomTabProvider` 提供者(`ChatContainer` 已内置)。脱离上下文直接使用需自行提供,否则详情入口会报错。
201
+ 2. **统计来自 `statistics.state_counts` 而非节点遍历**:标题栏计数直接读取后端下发的统计,不会实时统计 `nodes`;两者不一致时以 `state_counts` 为准。
202
+ 3. **任务总耗时为节点累加**:`task-time` 由各节点 `elapsed_time` 求和得到,并非任务级独立字段。
203
+ 4. **`task_outputs` 暂不渲染**:模板中任务输出展示区块已注释,传入也不会显示。
204
+ 5. **未知状态兜底为 `running`**:`getConvergedState` 对未识别的原始状态统一归为运行中。
205
+ 6. **Share 模式降级**:`RenderMode.Share` 下不渲染节点耗时与「详情」按钮,仅保留只读执行状态。
206
+
207
+ ## 关联组件
208
+
209
+ - [FlowAgentNodeDetail](/components/agent/flow-agent-node-detail) — 节点详情面板
210
+ - [ActivityLayout](/components/helper/activity-layout) — 可折叠活动容器
211
+ - [ChatContainer](/components/setup/chat-container) — 侧栏自定义 Tab 挂载场景
212
+ - [使用建议] 优先通过上层组合组件(`MessageRender`)使用;直接使用前请确认 `content` 数据结构来自对应类型定义。