@blueking/chat-x 0.0.52-dev.6 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/components/chat-content/flow-agent-content/flow-agent-state.d.ts +25 -8
  2. package/dist/components/chat-content/flow-agent-content/use-flow-agent.d.ts +6 -1
  3. package/dist/components/chat-content/flow-agent-content/use-flow-node-actions.d.ts +1 -1
  4. package/dist/composables/use-common.d.ts +9 -0
  5. package/dist/icons/execution.d.ts +4 -0
  6. package/dist/index.css +1 -1
  7. package/dist/index.js +2726 -2668
  8. package/dist/index.js.map +1 -1
  9. package/dist/lang/lang.d.ts +4 -2
  10. package/dist/mcp/generated/docs/activity-layout.md +4 -2
  11. package/dist/mcp/generated/docs/activity-message.md +18 -16
  12. package/dist/mcp/generated/docs/ai-selection.md +5 -2
  13. package/dist/mcp/generated/docs/ai-slash-input.md +4 -0
  14. package/dist/mcp/generated/docs/animation-text.md +5 -1
  15. package/dist/mcp/generated/docs/assistant-message.md +1 -1
  16. package/dist/mcp/generated/docs/chat-container.md +3 -1
  17. package/dist/mcp/generated/docs/chat-input.md +1 -0
  18. package/dist/mcp/generated/docs/cite-content.md +6 -2
  19. package/dist/mcp/generated/docs/common-error-content.md +8 -2
  20. package/dist/mcp/generated/docs/delete-tool.md +6 -1
  21. package/dist/mcp/generated/docs/desc-panel.md +5 -1
  22. package/dist/mcp/generated/docs/detail-section.md +3 -1
  23. package/dist/mcp/generated/docs/execution-summary.md +23 -1
  24. package/dist/mcp/generated/docs/file-content.md +8 -2
  25. package/dist/mcp/generated/docs/file-upload-btn.md +3 -1
  26. package/dist/mcp/generated/docs/flow-agent-content.md +40 -26
  27. package/dist/mcp/generated/docs/flow-agent-node-detail.md +5 -2
  28. package/dist/mcp/generated/docs/highlight-keyword.md +9 -31
  29. package/dist/mcp/generated/docs/input-attachment.md +3 -0
  30. package/dist/mcp/generated/docs/input-info-alert.md +3 -0
  31. package/dist/mcp/generated/docs/interrupt-message.md +6 -1
  32. package/dist/mcp/generated/docs/key-value-content.md +6 -1
  33. package/dist/mcp/generated/docs/knowledge-rag-content.md +4 -1
  34. package/dist/mcp/generated/docs/markdown-container.md +3 -0
  35. package/dist/mcp/generated/docs/markdown-content.md +2 -2
  36. package/dist/mcp/generated/docs/mention-tag.md +2 -0
  37. package/dist/mcp/generated/docs/mention-text.md +3 -0
  38. package/dist/mcp/generated/docs/message-container.md +4 -4
  39. package/dist/mcp/generated/docs/preview-toolbar.md +4 -0
  40. package/dist/mcp/generated/docs/reference-content.md +6 -1
  41. package/dist/mcp/generated/docs/reference-doc-content.md +3 -1
  42. package/dist/mcp/generated/docs/simple-table.md +3 -1
  43. package/dist/mcp/generated/docs/text-content.md +5 -1
  44. package/dist/mcp/generated/docs/tool-btn.md +10 -4
  45. package/dist/mcp/generated/docs/toolcall-render.md +8 -8
  46. package/dist/mcp/generated/docs/use-animation-text.md +2 -1
  47. package/dist/mcp/generated/docs/use-artifact-preview.md +11 -1
  48. package/dist/mcp/generated/docs/use-flow-node-actions.md +20 -10
  49. package/dist/mcp/generated/docs/user-question-card.md +31 -0
  50. package/dist/mcp/generated/docs/vnode-renderer.md +3 -3
  51. package/dist/mcp/generated/index.json +93 -100
  52. package/dist/mcp/index.js +0 -0
  53. package/dist/mcp/tools/list-components.js +1 -0
  54. package/dist/mcp/tools/list-components.js.map +1 -1
  55. package/dist/mcp/utils/doc-loader.d.ts +1 -0
  56. package/dist/mcp/utils/doc-loader.js.map +1 -1
  57. package/dist/utils/index.d.ts +1 -0
  58. package/package.json +22 -21
  59. package/skills/blueking-chat-x/references/components/activity-message.md +15 -13
  60. package/skills/blueking-chat-x/references/components/ai-selection.md +1 -1
  61. package/skills/blueking-chat-x/references/components/flow-agent-content.md +14 -10
  62. package/dist/mcp/generated/docs/questions-container.md +0 -88
  63. package/dist/mcp/generated/docs/selection-question.md +0 -91
@@ -11,7 +11,7 @@
11
11
  ---
12
12
  <!-- FULL DOC -->
13
13
 
14
- # ToolcallRender 工具调用渲染器
14
+ # ToolCallRender 工具调用渲染器
15
15
  ## 源码事实
16
16
 
17
17
  - **源码位置**:`src/components/tool-call/toolcall-render/toolcall-render.vue`
@@ -47,14 +47,14 @@
47
47
 
48
48
  ```vue
49
49
  <template>
50
- <ToolcallRender
50
+ <ToolCallRender
51
51
  :tool-call="toolCall"
52
52
  :status="MessageStatus.Complete"
53
53
  />
54
54
  </template>
55
55
 
56
56
  <script setup lang="ts">
57
- import { ToolcallRender, MessageStatus, MessageContentType, type ToolCall } from '@blueking/chat-x';
57
+ import { ToolCallRender, MessageStatus, MessageContentType, type ToolCall } from '@blueking/chat-x';
58
58
 
59
59
  const toolCall: ToolCall = {
60
60
  id: 'call_1',
@@ -171,10 +171,10 @@ durationDisplay = formatDuration(props.duration || toolCall?.toolMessage?.durati
171
171
 
172
172
  ```vue
173
173
  <!-- 方式一:直接传 duration prop(优先) -->
174
- <ToolcallRender :tool-call="toolCall" status="complete" :duration="1200" />
174
+ <ToolCallRender :tool-call="toolCall" status="complete" :duration="1200" />
175
175
 
176
176
  <!-- 方式二(推荐):duration 放在 toolMessage 中,无需额外 prop -->
177
- <ToolcallRender :tool-call="toolCallWithDuration" status="complete" />
177
+ <ToolCallRender :tool-call="toolCallWithDuration" status="complete" />
178
178
  ```
179
179
 
180
180
  ```typescript
@@ -242,7 +242,7 @@ const failedToolCall: ToolCall = {
242
242
 
243
243
  ## 与 AssistantMessage 配合
244
244
 
245
- `ToolcallRender` 通常不需要单独使用,将 `toolCalls` 传给 `AssistantMessage`,会自动为每个工具调用渲染 `ToolcallRender`:
245
+ `ToolCallRender` 通常不需要单独使用,将 `toolCalls` 传给 `AssistantMessage`,会自动为每个工具调用渲染 `ToolCallRender`:
246
246
 
247
247
  ```typescript
248
248
  const assistantMessage = {
@@ -274,7 +274,7 @@ const assistantMessage = {
274
274
 
275
275
  ```vue
276
276
  <template>
277
- <ToolcallRender
277
+ <ToolCallRender
278
278
  v-for="toolCall in assistantMessage.toolCalls"
279
279
  :key="toolCall.id"
280
280
  :tool-call="toolCall"
@@ -338,7 +338,7 @@ interface ToolMessage {
338
338
  role: 'tool';
339
339
  content: string; // 返回内容(通常为 JSON 字符串)
340
340
  status: MessageStatus;
341
- duration: number; // 调用耗时(毫秒),被 ToolcallRender 自动读取
341
+ duration: number; // 调用耗时(毫秒),被 ToolCallRender 自动读取
342
342
  error?: string; // 错误信息(仅当 content 为空时由 ToolMessage 展示)
343
343
  toolCallId: string; // 对应 ToolCall.id
344
344
  }
@@ -122,7 +122,8 @@ useAnimationText 接收 MaybeRef<string> 与可选 AnimationConfig(fadeDuratio
122
122
  </template>
123
123
 
124
124
  <script setup lang="ts">
125
- import { AnimationText } from '@blueking/chat-x';
125
+ // AnimationText 未从包入口导出,见内部组件文档
126
+ // import { useAnimationText } from '@blueking/chat-x' 才是公开 API
126
127
  </script>
127
128
  ```
128
129
 
@@ -67,8 +67,8 @@ import {
67
67
  useCustomTabProvider,
68
68
  useMessageGroup,
69
69
  FILE_ARTIFACT_TAB_NAME,
70
+ t,
70
71
  } from '@blueking/chat-x';
71
- import { t } from '@blueking/chat-x/lang';
72
72
 
73
73
  const { addCustomTab, ensureCustomTab, removeCustomTab } = useCustomTabProvider({ /* ... */ });
74
74
 
@@ -157,6 +157,16 @@ const onArtifactClick = async (file: AIFileInfo) => {
157
157
  | `FILE_ARTIFACT_TAB_NAME` | `'file-artifact'` | 「文件产物」侧栏 Tab 的固定标识,不可关闭 |
158
158
  | `ARTIFACT_PREVIEW_TOKEN` | `Symbol` | provide/inject 注入 Token |
159
159
 
160
+ ## triggerArtifactDownload
161
+
162
+ 从包入口导出,用临时 `<a download>` 触发浏览器下载(面板下载按钮内部使用):
163
+
164
+ ```typescript
165
+ import { triggerArtifactDownload } from '@blueking/chat-x';
166
+
167
+ triggerArtifactDownload(downloadUrl, file.name);
168
+ ```
169
+
160
170
  ## 返回值说明
161
171
 
162
172
  | 属性/方法名 | 类型 | 说明 |
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail,返回 getNodeActions 与 isNodePending。 失败节点按 retryable/skippable 展示重试/跳过,详情恒在末尾;点击后进入 pending 防重复提交, 以 task_id:node_id:retry 为键自动收敛;点击 resume 时不传 interrupt。
4
+ useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail,返回 getNodeActions 与 isNodePending。 失败节点按 retryable/skippable 展示重试/跳过,详情恒在末尾;点击后进入 pending 防重复提交, 以 task_id:node_id:retry 为键自动收敛;点击 resume 时不传 interrupt。 hideResumeActions 为 true 时只返回详情,覆盖 Share 分享态与侧栏「执行情况」面板两类只读场景。
5
5
 
6
6
  ### 关联组件
7
7
  - **flow-agent-content** — FlowAgentContent 内部消费,驱动节点行尾按钮组渲染
@@ -11,6 +11,10 @@ useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail,返回 getNodeA
11
11
 
12
12
  # useFlowNodeActions 节点行尾操作
13
13
 
14
+ > **导出状态**:内部实现,未从 `@blueking/chat-x` 包入口导出。
15
+ > 实现位于 `src/components/chat-content/flow-agent-content/use-flow-node-actions.ts`,未进入 `src/composables/index.ts`。
16
+ > 由 [FlowAgentContent](/components/agent/flow-agent-content) 内部消费。
17
+
14
18
  > **分类**:composable
15
19
 
16
20
  将 FlowAgent 节点行尾的「详情(打开侧栏)」与「重试 / 跳过(回传 Agent resume)」聚合为统一的声明式操作列表。`FlowAgentContent` 只需遍历 `getNodeActions` 返回值渲染按钮,显隐与点击行为均收敛于此 composable。
@@ -21,7 +25,7 @@ useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail,返回 getNodeA
21
25
 
22
26
  ```typescript
23
27
  function useFlowNodeActions(options: {
24
- /** 隐藏重试 / 跳过等交互式 resume 操作(分享态只读,仅保留「详情」查看入口) */
28
+ /** 隐藏重试 / 跳过等交互式 resume 操作(分享态、侧栏执行情况面板等只读场景,仅保留「详情」查看入口) */
25
29
  hideResumeActions?: Ref<boolean>;
26
30
  /** resume 回调(与第三方审批取消同一回调,按 payload.operation 分流) */
27
31
  onInterruptResume: Ref<OnInterruptResume | undefined>;
@@ -71,13 +75,16 @@ interface FlowNodeActionVM {
71
75
 
72
76
  | 操作 | `id` | 显隐条件 | 点击行为 |
73
77
  | ---- | ------------------ | ------------------------------------------ | --------------------------------------------- |
74
- | 重试 | `flow_node_retry` | `convergedState === 'failed'` 且 `retryable` | 调用 `onInterruptResume`,**不传** `interrupt` |
75
- | 跳过 | `flow_node_skip` | `convergedState === 'failed'` 且 `skippable` | 同上 |
76
- | 详情 | `detail` | 始终(含 Share 分享态) | 调用 `openNodeDetail(task.raw, node.raw)` |
78
+ | 重试 | `flow_node_retry` | `convergedState === 'failed'` 且 `retryable`,且 `hideResumeActions` 为 `false` | 调用 `onInterruptResume`,**不传** `interrupt` |
79
+ | 跳过 | `flow_node_skip` | `convergedState === 'failed'` 且 `skippable`,且 `hideResumeActions` 为 `false` | 同上 |
80
+ | 详情 | `detail` | 始终(不受 `hideResumeActions` 影响) | 调用 `openNodeDetail(task.raw, node.raw)` |
77
81
 
78
82
  展示顺序:重试 → 跳过 → 详情。
79
83
 
80
- > **分享态过滤**:传入 `hideResumeActions`(`Ref<boolean>`,如 `RenderMode.Share`)为 `true` 时,`getNodeActions` 直接过滤掉重试 / 跳过,仅返回「详情」查看入口;用于只读分享场景放开查看、禁止交互。
84
+ > **只读场景过滤**:`hideResumeActions` 为 `true` 时,`getNodeActions` 直接过滤掉重试 / 跳过,仅返回「详情」查看入口,用于放开查看、禁止交互的场景。`FlowAgentContent` 目前把两类只读场景并入该入参:
85
+ >
86
+ > - `RenderMode.Share` 分享态
87
+ > - 侧栏「执行情况」面板内(`ExecutionSummary` 通过 `EXECUTION_PANEL_TOKEN` 提供上下文,组件用 `useExecutionPanelInject` 读取)
81
88
 
82
89
  ## pending 态与防重复提交
83
90
 
@@ -112,12 +119,15 @@ onInterruptResume?.({
112
119
 
113
120
  ```typescript
114
121
  import { toRef } from 'vue';
115
- import { useFlowNodeActions } from '@blueking/chat-x';
116
- // 或相对路径:'./use-flow-node-actions'
122
+ import { useFlowNodeActions } from '../../src/components/chat-content/flow-agent-content/use-flow-node-actions';
123
+
124
+ // 是否处于侧栏「执行情况」面板内;缺省 false,即对话流内渲染
125
+ // useExecutionPanelInject 来自内部 src/composables/use-common.ts,未从包入口导出
126
+ const isInExecutionPanel = useExecutionPanelInject();
117
127
 
118
128
  const { getNodeActions, isNodePending } = useFlowNodeActions({
119
- // 分享态只读:过滤重试 / 跳过,仅保留详情
120
- hideResumeActions: computed(() => renderMode.value === RenderMode.Share),
129
+ // 分享态与侧栏执行情况面板均只读:过滤重试 / 跳过,仅保留详情
130
+ hideResumeActions: computed(() => renderMode.value === RenderMode.Share || isInExecutionPanel),
121
131
  onInterruptResume: toRef(props, 'onInterruptResume'),
122
132
  openNodeDetail,
123
133
  });
@@ -164,6 +164,37 @@ const payload = buildSkipResumePayload(interrupt);
164
164
  // }
165
165
  ```
166
166
 
167
+ ## useUserQuestion 与选项辅助
168
+
169
+ 以下符号经 interrupt 子 barrel 从 `@blueking/chat-x` 导出,实现在 `src/components/chat-message/interrupt-message/user-question/use-user-question.ts`(不在 `composables/index.ts`)。
170
+
171
+ | 符号 | 说明 |
172
+ | --- | --- |
173
+ | `useUserQuestion` | 答题分页、完成态、`setAnswer` / `buildResolvePayload` / `buildSkipPayload` |
174
+ | `buildSkipResumePayload` | 构造 skip resume(`status: 'cancelled'`,`answers: []`) |
175
+ | `OTHERS_OPTION_LABEL` | Others 选项的固定 `label`(`'others'`) |
176
+ | `toLetter` | 选项序号:0 → A,超过 26 回退数字 |
177
+ | `NormalizedUserQuestionOption` | 选择题内部展示类型(含 `letter` / `isOthers`) |
178
+
179
+ ```typescript
180
+ import {
181
+ OTHERS_OPTION_LABEL,
182
+ toLetter,
183
+ useUserQuestion,
184
+ type NormalizedUserQuestionOption,
185
+ } from '@blueking/chat-x';
186
+
187
+ const {
188
+ questions,
189
+ currentIndex,
190
+ completed,
191
+ setAnswer,
192
+ buildResolvePayload,
193
+ } = useUserQuestion(() => pendingInterrupt);
194
+ ```
195
+
196
+ 自定义 `#question` 面板时,作答有效调用 slot 的 `setAnswer`(即 composable 的 `setAnswer`),无需自己拼 resume。
197
+
167
198
  ## 自定义题目渲染(#question slot)
168
199
 
169
200
  默认每道题由 [UserQuestionChoice](/components/agent/user-question-choice) 渲染;业务可覆盖 `#question` slot 接入自定义表单:
@@ -1,7 +1,7 @@
1
1
  <!-- AI SUMMARY -->
2
2
  ## 快速了解
3
3
 
4
- 将 Markdown token 转成 VNode 的内部渲染桥。 源码位置:src/components/chat-content/vnode-renderer.ts。
4
+ 将 Markdown token 转成 VNode;包入口已导出,通常经 MarkdownContent 使用。 源码位置:src/components/chat-content/vnode-renderer.ts。
5
5
 
6
6
  ### 关联组件
7
7
  - **markdown-content** — MarkdownContent 对普通 token 分组使用本组件渲染
@@ -41,8 +41,8 @@
41
41
  </template>
42
42
 
43
43
  <script setup lang="ts">
44
- import MarkdownIt from '@blueking/chat-x/src/markdown-it/index';
45
- import VNodeRenderer from '@blueking/chat-x/src/components/chat-content/vnode-renderer';
44
+ import { VNodeRenderer } from '@blueking/chat-x';
45
+ // MarkdownIt 未从包入口导出;文档站 demo 使用页面顶部相对路径
46
46
 
47
47
  const md = new MarkdownIt();
48
48
  const tokens = md.parse('这是一段 **加粗文本**。', {});