@blueking/chat-x 0.0.42 → 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.
- package/README.md +1 -1
- package/dist/ag-ui/types/constants.d.ts +16 -0
- package/dist/ag-ui/types/contents.d.ts +0 -2
- package/dist/ag-ui/types/index.d.ts +2 -0
- package/dist/ag-ui/types/interrupt.d.ts +107 -0
- package/dist/ag-ui/types/messages.d.ts +2 -0
- package/dist/ag-ui/types/schema.d.ts +42 -0
- package/dist/components/ai-questions/questions-container.vue.d.ts +3 -0
- package/dist/components/ai-questions/selection-question.vue.d.ts +3 -0
- package/dist/components/chat-content/flow-agent-content/flow-agent-node-detail.vue.d.ts +0 -2
- package/dist/components/chat-input/ai-slash-input/ai-slash-input.vue.d.ts +1 -3
- package/dist/components/chat-input/chat-input.vue.d.ts +10 -9
- package/dist/components/chat-input/input-attachment/input-attachment.vue.d.ts +1 -0
- 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
- package/dist/components/chat-message/interrupt-message/index.d.ts +2 -0
- package/dist/components/chat-message/interrupt-message/interrupt-message.vue.d.ts +17 -0
- package/dist/components/chat-message/interrupt-message/tool-approval-card.vue.d.ts +8 -0
- package/dist/components/chat-message/interrupt-message/user-question/index.d.ts +5 -0
- package/dist/components/chat-message/interrupt-message/user-question/use-user-question.d.ts +35 -0
- package/dist/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue.d.ts +25 -0
- package/dist/components/chat-message/interrupt-message/user-question/user-question-card.vue.d.ts +25 -0
- package/dist/components/chat-message/interrupt-message/user-question/user-question-choice.vue.d.ts +13 -0
- package/dist/components/chat-message/interrupt-message/user-question/user-question-option.vue.d.ts +17 -0
- package/dist/components/chat-message/message-container/message-container.vue.d.ts +14 -7
- package/dist/components/chat-message/message-render/message-render.vue.d.ts +4 -0
- package/dist/components/index.d.ts +2 -6
- package/dist/composables/use-common.d.ts +1 -1
- package/dist/composables/use-custom-tab.d.ts +1 -1
- package/dist/composables/use-message-group.d.ts +2004 -224
- package/dist/directives/overflow-tips.d.ts +1 -1
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/interrupt.d.ts +24 -0
- package/dist/index.css +1 -1
- package/dist/index.js +5906 -5346
- package/dist/index.js.map +1 -1
- package/dist/lang/lang.d.ts +33 -2
- package/dist/mcp/generated/docs/activity-layout.md +138 -0
- package/dist/mcp/generated/docs/activity-message.md +18 -28
- package/dist/mcp/generated/docs/ai-image.md +9 -4
- package/dist/mcp/generated/docs/ai-loading.md +11 -6
- package/dist/mcp/generated/docs/ai-prompt-list.md +42 -0
- package/dist/mcp/generated/docs/ai-selection.md +10 -5
- package/dist/mcp/generated/docs/ai-slash-editor.md +43 -0
- package/dist/mcp/generated/docs/ai-slash-input.md +43 -0
- package/dist/mcp/generated/docs/ai-slash-menu.md +42 -0
- package/dist/mcp/generated/docs/animation-text.md +9 -4
- package/dist/mcp/generated/docs/assistant-message.md +10 -5
- package/dist/mcp/generated/docs/chat-container.md +136 -68
- package/dist/mcp/generated/docs/chat-input.md +45 -9
- package/dist/mcp/generated/docs/cite-content.md +8 -3
- package/dist/mcp/generated/docs/code-content.md +9 -4
- package/dist/mcp/generated/docs/common-error-content.md +10 -5
- package/dist/mcp/generated/docs/constants.md +68 -3
- package/dist/mcp/generated/docs/content-render.md +10 -5
- package/dist/mcp/generated/docs/delete-tool.md +9 -4
- package/dist/mcp/generated/docs/desc-panel.md +9 -4
- package/dist/mcp/generated/docs/detail-section.md +93 -0
- package/dist/mcp/generated/docs/execution-summary.md +10 -5
- package/dist/mcp/generated/docs/file-content.md +9 -4
- package/dist/mcp/generated/docs/file-upload-btn.md +11 -6
- package/dist/mcp/generated/docs/flow-agent-content.md +212 -0
- package/dist/mcp/generated/docs/flow-agent-node-detail.md +240 -0
- package/dist/mcp/generated/docs/highlight-keyword.md +10 -5
- package/dist/mcp/generated/docs/image-content.md +9 -4
- package/dist/mcp/generated/docs/image-preview-group.md +9 -4
- package/dist/mcp/generated/docs/image-preview.md +10 -5
- package/dist/mcp/generated/docs/info-message.md +7 -2
- package/dist/mcp/generated/docs/input-attachment.md +43 -0
- package/dist/mcp/generated/docs/input-info-alert.md +42 -0
- package/dist/mcp/generated/docs/interrupt-message.md +204 -0
- package/dist/mcp/generated/docs/interrupt.md +282 -0
- package/dist/mcp/generated/docs/key-value-content.md +9 -4
- package/dist/mcp/generated/docs/knowledge-rag-content.md +126 -0
- package/dist/mcp/generated/docs/latex-content.md +9 -4
- package/dist/mcp/generated/docs/loading-message.md +11 -6
- package/dist/mcp/generated/docs/markdown-container.md +1 -1
- package/dist/mcp/generated/docs/markdown-content.md +13 -31
- package/dist/mcp/generated/docs/markdown-latex.md +3 -3
- package/dist/mcp/generated/docs/markdown-mermaid.md +3 -3
- package/dist/mcp/generated/docs/mermaid-content.md +9 -4
- package/dist/mcp/generated/docs/message-container.md +70 -12
- package/dist/mcp/generated/docs/message-loading.md +120 -0
- package/dist/mcp/generated/docs/message-render.md +21 -9
- package/dist/mcp/generated/docs/message-tools.md +10 -5
- package/dist/mcp/generated/docs/messages.md +75 -11
- package/dist/mcp/generated/docs/overflow-tips.md +4 -4
- package/dist/mcp/generated/docs/preview-toolbar.md +42 -0
- package/dist/mcp/generated/docs/questions-container.md +88 -0
- package/dist/mcp/generated/docs/reasoning-message.md +10 -5
- package/dist/mcp/generated/docs/reference-content.md +10 -5
- package/dist/mcp/generated/docs/reference-doc-content.md +112 -0
- package/dist/mcp/generated/docs/schema.md +93 -0
- package/dist/mcp/generated/docs/scroll-btn.md +8 -3
- package/dist/mcp/generated/docs/selection-footer.md +9 -4
- package/dist/mcp/generated/docs/selection-question.md +91 -0
- package/dist/mcp/generated/docs/shortcut-btn.md +10 -5
- package/dist/mcp/generated/docs/shortcut-btns.md +10 -5
- package/dist/mcp/generated/docs/shortcut-render.md +11 -10
- package/dist/mcp/generated/docs/simple-table.md +103 -0
- package/dist/mcp/generated/docs/text-content.md +9 -4
- package/dist/mcp/generated/docs/theme.md +3 -3
- package/dist/mcp/generated/docs/tool-approval-card.md +148 -0
- package/dist/mcp/generated/docs/tool-btn.md +9 -4
- package/dist/mcp/generated/docs/tool-message.md +10 -5
- package/dist/mcp/generated/docs/toolcall-render.md +10 -5
- package/dist/mcp/generated/docs/use-animation-text.md +4 -4
- package/dist/mcp/generated/docs/use-clipboard.md +3 -3
- package/dist/mcp/generated/docs/use-command-selection.md +1 -1
- package/dist/mcp/generated/docs/use-custom-tab.md +1 -1
- package/dist/mcp/generated/docs/use-global-config.md +1 -1
- package/dist/mcp/generated/docs/use-menu-keydown.md +1 -1
- package/dist/mcp/generated/docs/use-message-group.md +40 -9
- package/dist/mcp/generated/docs/use-observer-visible-list.md +1 -1
- package/dist/mcp/generated/docs/user-feedback.md +8 -3
- package/dist/mcp/generated/docs/user-message.md +10 -5
- package/dist/mcp/generated/docs/user-question-answered-card.md +106 -0
- package/dist/mcp/generated/docs/user-question-card.md +211 -0
- package/dist/mcp/generated/docs/user-question-choice.md +108 -0
- package/dist/mcp/generated/docs/user-question-option.md +42 -0
- package/dist/mcp/generated/docs/vnode-renderer.md +126 -0
- package/dist/mcp/generated/index.json +1061 -532
- package/dist/mcp/index.js +0 -0
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/list-components.d.ts +7 -6
- package/dist/mcp/tools/list-components.js +23 -29
- package/dist/mcp/tools/list-components.js.map +1 -1
- package/dist/mcp/tools/search-docs.js +1 -1
- package/dist/mcp/tools/search-docs.js.map +1 -1
- package/dist/mcp/utils/doc-loader.d.ts +1 -1
- package/dist/plugins/index.d.ts +0 -1
- package/dist/types/custom.d.ts +0 -1
- package/dist/types/editor.d.ts +0 -6
- package/dist/types/input.d.ts +1 -1
- package/dist/types/tool.d.ts +2 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/utils.d.ts +0 -1
- package/package.json +23 -21
- package/dist/plugins/markdown-bk-inline-style.d.ts +0 -20
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
|
|
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](
|
|
238
|
-
- [ReferenceContent](
|
|
239
|
-
- [AssistantMessage](
|
|
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
|
-
|
|
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](
|
|
188
|
-
- [MessageTools](
|
|
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
|
-
|
|
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](
|
|
138
|
-
- [HighlightKeyword](
|
|
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
|
-
|
|
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](
|
|
125
|
-
- [HighlightKeyword](
|
|
126
|
-
- [ChatContainer](
|
|
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
|
-
|
|
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](
|
|
300
|
-
- [UserMessage](
|
|
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
|
-
|
|
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 文件上传](
|
|
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<
|
|
157
|
+
type AITippyProps = Partial<Omit<TippyOptions, 'content' | 'getReferenceClientRect' | 'theme' | 'triggerTarget'>>;
|
|
153
158
|
```
|
|
154
159
|
|
|
155
160
|
## 关联组件
|
|
156
161
|
|
|
157
|
-
- [ChatInput](
|
|
158
|
-
- [FileContent](
|
|
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` 数据结构来自对应类型定义。
|