@blueking/chat-x 0.0.48-beta.1 → 0.0.49-beta.10

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 (70) hide show
  1. package/dist/ag-ui/types/constants.d.ts +1 -0
  2. package/dist/ag-ui/types/file.d.ts +13 -0
  3. package/dist/ag-ui/types/index.d.ts +1 -0
  4. package/dist/ag-ui/types/messages.d.ts +4 -0
  5. package/dist/components/chat-message/assistant-message/assistant-message.vue.d.ts +12 -1
  6. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-file-card.vue.d.ts +12 -0
  7. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/artifact-preview-host.vue.d.ts +11 -0
  8. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/preview-strategy.d.ts +8 -0
  9. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/code-preview.vue.d.ts +8 -0
  10. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/html-preview.vue.d.ts +6 -0
  11. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/image-preview.vue.d.ts +7 -0
  12. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/markdown-preview.vue.d.ts +6 -0
  13. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/txt-preview.vue.d.ts +6 -0
  14. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/renderers/url-iframe-preview.vue.d.ts +6 -0
  15. package/dist/components/chat-message/assistant-message/message-artifacts/artifact-preview/use-artifact-preview-loader.d.ts +22 -0
  16. package/dist/components/chat-message/assistant-message/message-artifacts/file-artifact-panel.vue.d.ts +13 -0
  17. package/dist/components/chat-message/assistant-message/message-artifacts/message-artifacts.vue.d.ts +9 -0
  18. package/dist/components/chat-message/interrupt-message/user-question/use-user-question.d.ts +7 -2
  19. package/dist/components/chat-message/user-message/user-message.vue.d.ts +15 -2
  20. package/dist/components/file-icon/file-icon.vue.d.ts +7 -0
  21. package/dist/components/index.d.ts +3 -1
  22. package/dist/components/message-tools/message-time/format-message-time.d.ts +8 -0
  23. package/dist/components/message-tools/message-time/message-time.vue.d.ts +8 -0
  24. package/dist/components/message-tools/message-tools.vue.d.ts +11 -1
  25. package/dist/composables/index.d.ts +1 -0
  26. package/dist/composables/use-artifact-preview.d.ts +49 -0
  27. package/dist/composables/use-container-scroll.d.ts +9 -2
  28. package/dist/composables/use-custom-tab.d.ts +7 -3
  29. package/dist/composables/use-global-config.d.ts +3 -0
  30. package/dist/composables/use-message-group.d.ts +505 -0
  31. package/dist/icons/file-icons.d.ts +4 -0
  32. package/dist/icons/file.d.ts +6 -0
  33. package/dist/icons/index.d.ts +2 -0
  34. package/dist/icons/tools.d.ts +3 -0
  35. package/dist/index.css +1 -1
  36. package/dist/index.js +3203 -2368
  37. package/dist/index.js.map +1 -1
  38. package/dist/lang/lang.d.ts +9 -1
  39. package/dist/mcp/generated/docs/activity-message.md +122 -97
  40. package/dist/mcp/generated/docs/assistant-message.md +146 -75
  41. package/dist/mcp/generated/docs/chat-container.md +121 -38
  42. package/dist/mcp/generated/docs/chat-input.md +2 -10
  43. package/dist/mcp/generated/docs/constants.md +3 -1
  44. package/dist/mcp/generated/docs/content-render.md +2 -10
  45. package/dist/mcp/generated/docs/execution-summary.md +3 -3
  46. package/dist/mcp/generated/docs/file-artifact-panel.md +293 -0
  47. package/dist/mcp/generated/docs/file-icon.md +111 -0
  48. package/dist/mcp/generated/docs/info-message.md +29 -12
  49. package/dist/mcp/generated/docs/interrupt.md +1 -0
  50. package/dist/mcp/generated/docs/loading-message.md +36 -17
  51. package/dist/mcp/generated/docs/message-container.md +27 -23
  52. package/dist/mcp/generated/docs/message-render.md +47 -59
  53. package/dist/mcp/generated/docs/message-time.md +180 -0
  54. package/dist/mcp/generated/docs/message-tools.md +47 -12
  55. package/dist/mcp/generated/docs/messages.md +9 -0
  56. package/dist/mcp/generated/docs/reasoning-message.md +17 -20
  57. package/dist/mcp/generated/docs/tool-message.md +61 -45
  58. package/dist/mcp/generated/docs/toolcall-render.md +18 -10
  59. package/dist/mcp/generated/docs/use-artifact-preview.md +234 -0
  60. package/dist/mcp/generated/docs/use-container-scroll.md +6 -2
  61. package/dist/mcp/generated/docs/use-custom-tab.md +25 -8
  62. package/dist/mcp/generated/docs/use-global-config.md +15 -5
  63. package/dist/mcp/generated/docs/use-message-group.md +37 -5
  64. package/dist/mcp/generated/docs/user-message.md +191 -121
  65. package/dist/mcp/generated/docs/user-question-card.md +6 -3
  66. package/dist/mcp/generated/index.json +144 -18
  67. package/dist/mcp/index.js +0 -0
  68. package/dist/utils/file-type.d.ts +14 -0
  69. package/dist/utils/index.d.ts +1 -0
  70. package/package.json +20 -21
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-07-27T02:31:49.169Z",
3
+ "generatedAt": "2026-08-18T06:27:42.645Z",
4
4
  "domains": {
5
5
  "setup": {
6
6
  "label": "对话搭建",
@@ -14,6 +14,7 @@
14
14
  "components": [
15
15
  "activity-message",
16
16
  "assistant-message",
17
+ "file-artifact-panel",
17
18
  "info-message",
18
19
  "loading-message",
19
20
  "message-render",
@@ -82,6 +83,7 @@
82
83
  "label": "工具与反馈",
83
84
  "components": [
84
85
  "delete-tool",
86
+ "message-time",
85
87
  "message-tools",
86
88
  "scroll-btn",
87
89
  "tool-btn",
@@ -97,6 +99,7 @@
97
99
  "components": [
98
100
  "activity-layout",
99
101
  "ai-loading",
102
+ "file-icon",
100
103
  "highlight-keyword",
101
104
  "message-loading",
102
105
  "questions-container",
@@ -361,8 +364,8 @@
361
364
  "name": "UserQuestionCard 用户问题中断",
362
365
  "slug": "user-question-card",
363
366
  "kind": "component",
364
- "description": "渲染 UserQuestion 中断的待回答面板,支持单选、多选、Others 与跳过。",
365
- "aiSummary": "渲染 UserQuestion 中断的待回答面板,支持单选、多选、Others 与跳过。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-card.vue。",
367
+ "description": "渲染 UserQuestion 中断的待回答面板;一次一题分页切换,支持单选/多选、Others、跳过与已完成进度。",
368
+ "aiSummary": "渲染 UserQuestion 中断的待回答面板:一次只展示一题,标题栏提供题号切换, Footer 展示已完成进度;支持单选自动跳下一题、多选/Others、完成与跳过。 源码位置:src/components/chat-message/interrupt-message/user-question/user-question-card.vue。",
366
369
  "relatedComponents": [
367
370
  {
368
371
  "slug": "interrupt-message",
@@ -432,12 +435,35 @@
432
435
  "docFile": "docs/delete-tool.md",
433
436
  "domain": "feedback"
434
437
  },
438
+ {
439
+ "name": "MessageTime 消息时间",
440
+ "slug": "message-time",
441
+ "kind": "component",
442
+ "description": "按「今天 / 昨天 / 今年内 / 跨年」四档格式展示消息创建时间。",
443
+ "aiSummary": "按 createdAt 展示消息时间,四档格式:今天 `12:00`、昨天 `昨天 12:00`、今年内更早 `3-12 12:00`、非今年 `2025-3-12 12:00`; 时区取 props.timezone,未传时回退 injectGlobalConfig().timezone(由 ChatContainer 的 timezone prop 注入),都没有则用浏览器时区; 无值或非法时间不渲染任何 DOM。通常通过 MessageTools 的 prepend / append 插槽使用。 源码位置:src/components/message-tools/message-time/message-time.vue。",
444
+ "relatedComponents": [
445
+ {
446
+ "slug": "message-tools",
447
+ "relation": "通过 prepend / append 插槽嵌入工具栏"
448
+ },
449
+ {
450
+ "slug": "user-message",
451
+ "relation": "用户消息在工具栏左侧展示时间"
452
+ },
453
+ {
454
+ "slug": "message-container",
455
+ "relation": "AI 消息组在工具栏右侧展示本轮回答时间"
456
+ }
457
+ ],
458
+ "docFile": "docs/message-time.md",
459
+ "domain": "feedback"
460
+ },
435
461
  {
436
462
  "name": "MessageTools 消息工具栏",
437
463
  "slug": "message-tools",
438
464
  "kind": "component",
439
465
  "description": "消息悬浮工具栏,组合复制、删除、反馈等工具按钮。",
440
- "aiSummary": "消息悬浮工具栏,组合复制、删除、反馈等工具按钮。 源码位置:src/components/message-tools/message-tools.vue。",
466
+ "aiSummary": "消息悬浮工具栏,组合复制、删除、反馈等工具按钮;提供 prepend / append 两端插槽承载消息时间等附加内容。 源码位置:src/components/message-tools/message-tools.vue。",
441
467
  "relatedComponents": [
442
468
  {
443
469
  "slug": "tool-btn",
@@ -450,6 +476,10 @@
450
476
  {
451
477
  "slug": "delete-tool",
452
478
  "relation": "id 为 delete 时替换为带确认的删除按钮"
479
+ },
480
+ {
481
+ "slug": "message-time",
482
+ "relation": "通过 prepend / append 插槽嵌入消息时间"
453
483
  }
454
484
  ],
455
485
  "docFile": "docs/message-tools.md",
@@ -554,6 +584,25 @@
554
584
  "docFile": "docs/ai-loading.md",
555
585
  "domain": "helper"
556
586
  },
587
+ {
588
+ "name": "FileIcon 文件类型图标",
589
+ "slug": "file-icon",
590
+ "kind": "component",
591
+ "description": "按文件扩展名渲染对应类型图标,尺寸随外层 font-size 自适应。",
592
+ "aiSummary": "按扩展名渲染文件类型图标:内联 svg,尺寸用 1em 跟随外层 font-size; 扩展名解析走 normalizeFileExtension(优先 fileType,缺省回退 fileName,大小写不敏感, 支持 Dockerfile / .gitignore 这类无扩展名或点号开头的文件);未登记类型返回 unknown 兜底图标。 源码位置:src/components/file-icon/file-icon.vue,图标注册表在 src/icons/file-icons.ts。",
593
+ "relatedComponents": [
594
+ {
595
+ "slug": "file-artifact-panel",
596
+ "relation": "文件产物列表与预览头使用该组件展示类型图标"
597
+ },
598
+ {
599
+ "slug": "assistant-message",
600
+ "relation": "消息内的文件产物卡片使用该组件"
601
+ }
602
+ ],
603
+ "docFile": "docs/file-icon.md",
604
+ "domain": "helper"
605
+ },
557
606
  {
558
607
  "name": "HighlightKeyword 关键词高亮",
559
608
  "slug": "highlight-keyword",
@@ -1063,8 +1112,20 @@
1063
1112
  "relation": "由 MessageRender 在 role 为 activity 时创建"
1064
1113
  },
1065
1114
  {
1066
- "slug": "assistant-message",
1067
- "relation": "常与助手回复相邻,描述检索或执行背景"
1115
+ "slug": "flow-agent-content",
1116
+ "relation": "activityType 为 flow_agent 时渲染"
1117
+ },
1118
+ {
1119
+ "slug": "knowledge-rag-content",
1120
+ "relation": "activityType 为 knowledge_rag 时渲染"
1121
+ },
1122
+ {
1123
+ "slug": "reference-doc-content",
1124
+ "relation": "activityType 为 reference_document 时渲染"
1125
+ },
1126
+ {
1127
+ "slug": "chat-container",
1128
+ "relation": "uid / onInterruptResume / 侧栏 Tab 与 ChatContainer 联动"
1068
1129
  }
1069
1130
  ],
1070
1131
  "docFile": "docs/activity-message.md",
@@ -1074,8 +1135,8 @@
1074
1135
  "name": "AssistantMessage AI 助手消息",
1075
1136
  "slug": "assistant-message",
1076
1137
  "kind": "component",
1077
- "description": "渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。",
1078
- "aiSummary": "渲染助手消息主体、工具调用与文件内容,默认插槽可覆盖正文渲染。 源码位置:src/components/chat-message/assistant-message/assistant-message.vue。",
1138
+ "description": "渲染助手消息主体、工具调用与文件产物,默认插槽可覆盖正文渲染。",
1139
+ "aiSummary": "渲染助手 Markdown 正文、ToolCallRender 工具调用列表,以及 property.artifacts 文件卡片; 默认插槽仅覆盖正文。源码位置:src/components/chat-message/assistant-message/assistant-message.vue。",
1079
1140
  "relatedComponents": [
1080
1141
  {
1081
1142
  "slug": "message-render",
@@ -1088,11 +1149,42 @@
1088
1149
  {
1089
1150
  "slug": "toolcall-render",
1090
1151
  "relation": "多条工具调用由 ToolcallRender 统一渲染"
1152
+ },
1153
+ {
1154
+ "slug": "file-artifact-panel",
1155
+ "relation": "property.artifacts 文件产物点击后在侧栏预览"
1091
1156
  }
1092
1157
  ],
1093
1158
  "docFile": "docs/assistant-message.md",
1094
1159
  "domain": "message"
1095
1160
  },
1161
+ {
1162
+ "name": "FileArtifactPanel 文件产物预览",
1163
+ "slug": "file-artifact-panel",
1164
+ "kind": "component",
1165
+ "description": "汇总当前会话全部文件产物,支持搜索、选中与分类型预览,挂载在 ChatContainer 侧栏「文件产物」Tab。",
1166
+ "aiSummary": "汇总当前会话所有 AssistantMessage 的 artifacts(按 outputId 去重),支持关键词搜索、列表选中与下载; 预览区委托 ArtifactPreviewHost:由 resolveFileKind 把扩展名归入 code / markdown / html / text / image / binary 六类, 前四类走 text_from_download 拉正文(code 交给 highlight.js 高亮),image / binary 走 preview_url; download_url / preview_url 经 onArtifactClick 每次异步获取(无 URL 缓存,并发去重); 预览重载键为 outputId:type;重试再次调用 load() 重新取链。 源码位置:src/components/chat-message/assistant-message/message-artifacts/file-artifact-panel.vue。",
1167
+ "relatedComponents": [
1168
+ {
1169
+ "slug": "assistant-message",
1170
+ "relation": "文件产物来源于 AssistantMessage.property.artifacts"
1171
+ },
1172
+ {
1173
+ "slug": "chat-container",
1174
+ "relation": "面板挂载在侧栏「文件产物」Tab(固定、不可关闭),并通过 onArtifactClick 异步取链"
1175
+ },
1176
+ {
1177
+ "slug": "execution-summary",
1178
+ "relation": "同为 ChatContainer 侧栏 Tab 面板,交互形态一致"
1179
+ },
1180
+ {
1181
+ "slug": "message-loading",
1182
+ "relation": "ArtifactPreviewHost 取链 / 拉取正文过程使用 MessageLoading"
1183
+ }
1184
+ ],
1185
+ "docFile": "docs/file-artifact-panel.md",
1186
+ "domain": "message"
1187
+ },
1096
1188
  {
1097
1189
  "name": "InfoMessage 信息消息",
1098
1190
  "slug": "info-message",
@@ -1189,8 +1281,8 @@
1189
1281
  "name": "ToolMessage 工具消息",
1190
1282
  "slug": "tool-message",
1191
1283
  "kind": "component",
1192
- "description": "渲染工具返回内容,JSON 场景交给 DescPanel 展示。",
1193
- "aiSummary": "渲染工具返回内容,JSON 场景交给 DescPanel 展示。 源码位置:src/components/chat-message/tool-message/tool-message.vue。",
1284
+ "description": "渲染工具返回内容,JSON 场景交给 DescPanel + HighlightKeyword 展示。",
1285
+ "aiSummary": "渲染工具返回内容;DescPanel 解析 JSON 为 key-value,嵌套值 JSON.stringify 后经 HighlightKeyword 展示。 源码位置:src/components/chat-message/tool-message/tool-message.vue。",
1194
1286
  "relatedComponents": [
1195
1287
  {
1196
1288
  "slug": "assistant-message",
@@ -1212,8 +1304,8 @@
1212
1304
  "name": "UserMessage 用户消息",
1213
1305
  "slug": "user-message",
1214
1306
  "kind": "component",
1215
- "description": "渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。",
1216
- "aiSummary": "渲染用户消息,支持文本、键值、Markdown、引用、文件和编辑态输入。 源码位置:src/components/chat-message/user-message/user-message.vue。",
1307
+ "description": "渲染用户消息,支持纯文本、键值引用、文件附件和编辑态输入。",
1308
+ "aiSummary": "渲染用户消息:纯文本(非 Markdown)、键值引用、二进制附件与编辑态 ChatInput / ShortcutRender; 工具栏含 copy / cite / edit / delete。源码位置:src/components/chat-message/user-message/user-message.vue。",
1217
1309
  "relatedComponents": [
1218
1310
  {
1219
1311
  "slug": "message-render",
@@ -1223,9 +1315,17 @@
1223
1315
  "slug": "message-tools",
1224
1316
  "relation": "消息工具栏交互与状态由 MessageTools 体系承载"
1225
1317
  },
1318
+ {
1319
+ "slug": "message-time",
1320
+ "relation": "createdAt 经工具栏 prepend 插槽展示"
1321
+ },
1226
1322
  {
1227
1323
  "slug": "message-container",
1228
1324
  "relation": "嵌入列表时由 MessageContainer 管理分组与多选"
1325
+ },
1326
+ {
1327
+ "slug": "chat-input",
1328
+ "relation": "编辑态普通消息使用 ChatInput"
1229
1329
  }
1230
1330
  ],
1231
1331
  "docFile": "docs/user-message.md",
@@ -1456,7 +1556,7 @@
1456
1556
  "slug": "chat-container",
1457
1557
  "kind": "component",
1458
1558
  "description": "完整对话容器,组合消息列表、输入区、模型选择、快捷指令、执行摘要、分享选择和自定义 Tab。",
1459
- "aiSummary": "完整对话容器,组合消息列表、输入区、模型选择、快捷指令、执行摘要、分享选择和自定义 Tab。 透传 models / selectedModel;支持 welcomeTitle 与 #welcome。 源码位置:src/components/chat-container/chat-container.vue。",
1559
+ "aiSummary": "完整对话容器,组合消息列表、输入区、模型选择、快捷指令、执行摘要、分享选择和自定义 Tab。 透传 models / selectedModel;支持 welcomeTitle 与 #welcome。 侧栏展开/折叠由外部 v-model:asideCollapsed 严格受控(传入后以外部值为准,内部展开动作仅发 update 事件),不再依赖执行数据或文件产物有无;无数据时侧栏照常展开并展示空态。 侧栏固定从右侧展开(无 placement prop),且不再内置折叠按钮。 「文件产物」Tab 常驻挂载。 源码位置:src/components/chat-container/chat-container.vue。",
1460
1560
  "relatedComponents": [
1461
1561
  {
1462
1562
  "slug": "message-container",
@@ -1533,6 +1633,28 @@
1533
1633
  ],
1534
1634
  "docFile": "docs/use-animation-text.md"
1535
1635
  },
1636
+ {
1637
+ "name": "useArtifactPreview",
1638
+ "slug": "use-artifact-preview",
1639
+ "kind": "composable",
1640
+ "description": "Provider/Consumer 模式的文件产物预览状态管理,用于 ChatContainer 侧栏「文件产物」Tab 的命中与切换。 Provider 在 ChatContainer 中创建,Consumer 在深层文件卡片中注入使用。",
1641
+ "aiSummary": "useArtifactPreviewProvider 维护 activeArtifactId(值为 outputId),openPreview 命中文件并触发 onOpen 打开侧栏 Tab; 并通过 getOnArtifactClick 封装 resolveArtifactUrls(每次重新取链,并发去重); useArtifactPreviewConsumer 在后代注入同一套 API。SessionArtifact 即 AIFileInfo,会话内以 outputId 为唯一键。 正文加载与分类型渲染不在本 composable,由 FileArtifactPanel 内 ArtifactPreviewHost 完成(重载键 outputId:type)。 FILE_ARTIFACT_TAB_NAME 标识固定「文件产物」Tab。",
1642
+ "relatedComponents": [
1643
+ {
1644
+ "slug": "chat-container",
1645
+ "relation": "Provider 主场景,聚合 sessionArtifacts 并挂载 FileArtifactPanel"
1646
+ },
1647
+ {
1648
+ "slug": "file-artifact-panel",
1649
+ "relation": "侧栏面板消费 activeArtifactId 与 setActiveArtifactId;预览加载在面板内 Host"
1650
+ },
1651
+ {
1652
+ "slug": "assistant-message",
1653
+ "relation": "文件产物来源 property.artifacts"
1654
+ }
1655
+ ],
1656
+ "docFile": "docs/use-artifact-preview.md"
1657
+ },
1536
1658
  {
1537
1659
  "name": "useClipboard",
1538
1660
  "slug": "use-clipboard",
@@ -1574,7 +1696,7 @@
1574
1696
  "slug": "use-container-scroll",
1575
1697
  "kind": "composable",
1576
1698
  "description": "为消息容器提供滚动控制的组合式函数对,通过 **Provider/Consumer** 模式在父子组件间共享滚动状态。",
1577
- "aiSummary": "useContainerScrollProvider 在滚动容器与底部锚点上绑定 IntersectionObserver、scroll、wheel,提供 isScrollBottom、scrollBottomHeight、autoScrollEnabled、toScrollBottom/toScrollTop 及防抖「返回底部」按钮状态。 useContainerScrollConsumer 通过 inject 在子组件中获取同一套控制,无需 props 透传。 典型用于流式输出时仅在用户位于底部时自动滚底。MessageContainer 与 ScrollBtn 配合使用。",
1699
+ "aiSummary": "useContainerScrollProvider 在滚动容器与底部锚点上绑定 IntersectionObserver、scroll、wheel,提供 isScrollBottom、scrollBottomHeight、autoScrollEnabled、jumpToBottom、toScrollBottom/toScrollTop 及防抖「返回底部」按钮状态。 toScrollBottom 缺省按距底部距离自动选择行为:超过 INSTANT_SCROLL_DISTANCE(600px)时瞬时贴底,否则平滑滚动,避免切换会话时出现长距离平滑滚动动画。 useContainerScrollConsumer 通过 inject 在子组件中获取同一套控制,无需 props 透传。 典型用于流式输出时仅在用户位于底部时自动滚底。MessageContainer 与 ScrollBtn 配合使用。",
1578
1700
  "relatedComponents": [
1579
1701
  {
1580
1702
  "slug": "message-container",
@@ -1596,7 +1718,7 @@
1596
1718
  "slug": "use-custom-tab",
1597
1719
  "kind": "composable",
1598
1720
  "description": "Provider/Consumer 模式的自定义 Tab 管理,用于 `ChatContainer` 侧边栏的 Tab 动态管理。Provider 在 `ChatContainer` 中创建,Consumer 在任意后代组件中注入使用。",
1599
- "aiSummary": "useCustomTabProvider 返回 tabs、selectedTab、isCollapse 及 add/remove/selectCustomTab,并通过 provide 共享;可选 onTabChange 在切换时拉取数据。 useCustomTabConsumer 在后代注入同一套 API,常用于侧栏动态节点详情等。EXECUTION_TAB_NAME 标识默认「执行情况」Tab。 ChatContainer 侧栏集成 Provider 与 Tab UI。",
1721
+ "aiSummary": "useCustomTabProvider 返回 tabs、selectedTab、isCollapse 及 add/ensure/remove/selectCustomTab,并通过 provide 共享;可选 onTabChange 在切换时拉取数据、可选 collapsed 注入受控折叠态 ref。 ensureCustomTab 只挂载/合并元信息,不展开侧栏、不主动切换选中;addCustomTab 会展开并选中。 未被主动切换过时,选中态默认跟随 Tab 栏首位(order 最小),如常驻的「文件产物」。 useCustomTabConsumer 在后代注入同一套 API,常用于侧栏动态节点详情等。EXECUTION_TAB_NAME 标识默认「执行情况」Tab。 ChatContainer 侧栏集成 Provider 与 Tab UI。",
1600
1722
  "relatedComponents": [
1601
1723
  {
1602
1724
  "slug": "chat-container",
@@ -1641,12 +1763,16 @@
1641
1763
  "name": "useGlobalConfig",
1642
1764
  "slug": "use-global-config",
1643
1765
  "kind": "composable",
1644
- "description": "在聊天根容器与子组件之间通过 provide/inject 共享全局展示配置(字号主题档位、是否支持上传等)。",
1645
- "aiSummary": "useGlobalConfig 接收 GlobalConfig(含 size?: ComputedRef<AiSizeMode>、supportUpload: ComputedRef<boolean>),以 GLOBAL_CONFIG_TOKEN provide 给后代; injectGlobalConfig 在子组件中取出配置,无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig 注入 size 与 supportUpload; 后代组件可通过 injectGlobalConfig 读取配置;字号主题主要通过根节点 data-ai-size 与 CSS 变量生效。",
1766
+ "description": "在聊天根容器与子组件之间通过 provide/inject 共享全局展示配置(字号主题档位、是否支持上传、消息时间时区等)。",
1767
+ "aiSummary": "useGlobalConfig 接收 GlobalConfig(含 size?: ComputedRef<AiSizeMode>、supportUpload: ComputedRef<boolean>、timezone?: ComputedRef<string | undefined>),以 GLOBAL_CONFIG_TOKEN provide 给后代; injectGlobalConfig 在子组件中取出配置,无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig 注入 size、supportUpload 与 timezone; 后代组件可通过 injectGlobalConfig 读取配置;字号主题主要通过根节点 data-ai-size 与 CSS 变量生效。",
1646
1768
  "relatedComponents": [
1647
1769
  {
1648
1770
  "slug": "chat-container",
1649
1771
  "relation": "根容器调用 useGlobalConfig 注入 supportUpload"
1772
+ },
1773
+ {
1774
+ "slug": "message-time",
1775
+ "relation": "消息时间组件读取 timezone"
1650
1776
  }
1651
1777
  ],
1652
1778
  "docFile": "docs/use-global-config.md"
@@ -1717,7 +1843,7 @@
1717
1843
  "slug": "constants",
1718
1844
  "kind": "type",
1719
1845
  "description": "`@blueking/chat-x` 导出的常量和枚举类型。",
1720
- "aiSummary": "汇总 MessageRole、MessageStatus(含 Fetching 请求中)、MessageContentType、MessageToolsStatus、MessageState、Z-Index 与 CONST_MESSAGE_TOOLS 等导出常量。 用于构造消息、配置 MessageContainer 工具栏与输入态,以及层级与默认快捷指令。与类型 messages 配套使用。",
1846
+ "aiSummary": "汇总 MessageRole、MessageStatus(含 Fetching 请求中、Complete/Completed 完成态兼容)、MessageContentType、MessageToolsStatus、MessageState、Z-Index 与 CONST_MESSAGE_TOOLS 等导出常量。 用于构造消息、配置 MessageContainer 工具栏与输入态,以及层级与默认快捷指令。与类型 messages 配套使用。",
1721
1847
  "relatedComponents": [
1722
1848
  {
1723
1849
  "slug": "message-tools",
package/dist/mcp/index.js CHANGED
File without changes
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 文件分类:图标兜底与预览渲染策略的共同依据。
3
+ * - code:可交给 highlight.js 渲染的源码 / 配置文件
4
+ * - text:纯文本,直接按原文展示
5
+ * - binary:无法在前端直接解析,统一交由后端 preview_url 预览
6
+ */
7
+ export type AIFileKind = 'binary' | 'code' | 'html' | 'image' | 'markdown' | 'text';
8
+ /**
9
+ * 归一化文件类型标识:优先取后台下发的 type,缺省时回退文件名。
10
+ * 统一转小写并截取最后一段扩展名;无扩展名的文件(Dockerfile / Makefile)直接返回文件名本身。
11
+ */
12
+ export declare const normalizeFileExtension: (type?: string, name?: string) => string;
13
+ /** 解析文件分类;未登记的扩展名按 binary 兜底 */
14
+ export declare const resolveFileKind: (type?: string, name?: string) => AIFileKind;
@@ -1,4 +1,5 @@
1
1
  export * from './file';
2
+ export * from './file-type';
2
3
  export * from './markdown-completer';
3
4
  export { completeMarkdownSyntax } from './stream-markdown-completer';
4
5
  export * from './utils';
package/package.json CHANGED
@@ -1,26 +1,8 @@
1
1
  {
2
2
  "name": "@blueking/chat-x",
3
- "version": "0.0.48-beta.1",
3
+ "version": "0.0.49-beta.10",
4
4
  "description": "蓝鲸智云 AI Chat 组件库 —— 遵循 AG-UI,为 AI Agent 和人类开发者共同设计的对话 UI 组件库。",
5
5
  "main": "index.js",
6
- "scripts": {
7
- "prepublishOnly": "vite --config vite.config.ts build && pnpm dts && pnpm mcp:build",
8
- "dev": "vite --config vite.config.ts",
9
- "dts": "vue-tsc --project tsconfig.dts.json",
10
- "build": "vitest && vite --config vite.config.ts build && pnpm dts",
11
- "preview": "vite --config vite.config.ts build --mode preview && pnpm dts",
12
- "lint:script": "eslint . --ext .vue,.ts --fix",
13
- "lint:style": "stylelint \"**/*.{scss,css,vue}\" --fix",
14
- "lint:all": "pnpm lint:script && pnpm lint:style",
15
- "test": "vitest",
16
- "test:coverage": "vitest run --coverage",
17
- "wiki:dev": "vitepress dev wikis",
18
- "wiki:build": "vitepress build wikis",
19
- "mcp:build:index": "tsx mcp/scripts/build-index.ts",
20
- "mcp:build": "tsc -p mcp/tsconfig.json && pnpm mcp:build:index",
21
- "mcp:start": "node dist/mcp/index.js",
22
- "mcp:dev": "tsx mcp/src/index.ts"
23
- },
24
6
  "bin": {
25
7
  "chat-x-mcp": "dist/mcp/index.js"
26
8
  },
@@ -68,7 +50,6 @@
68
50
  "zod": "^4.3.6"
69
51
  },
70
52
  "devDependencies": {
71
- "@blueking/chat-helper": "workspace:*",
72
53
  "@types/katex": "^0.16.7",
73
54
  "@types/lodash": "^4.17.23",
74
55
  "@types/markdown-it": "^14.1.2",
@@ -97,6 +78,24 @@
97
78
  "vite-bundle-analyzer": "^1.3.2",
98
79
  "vitepress": "2.0.0-alpha.16",
99
80
  "vitest": "^4.0.18",
100
- "vue-tsc": "^3.1.4"
81
+ "vue-tsc": "^3.1.4",
82
+ "@blueking/chat-helper": "0.0.12-beta.21"
83
+ },
84
+ "scripts": {
85
+ "dev": "vite --config vite.config.ts",
86
+ "dts": "vue-tsc --project tsconfig.dts.json",
87
+ "build": "vitest && vite --config vite.config.ts build && pnpm dts",
88
+ "preview": "vite --config vite.config.ts build --mode preview && pnpm dts",
89
+ "lint:script": "eslint . --ext .vue,.ts --fix",
90
+ "lint:style": "stylelint \"**/*.{scss,css,vue}\" --fix",
91
+ "lint:all": "pnpm lint:script && pnpm lint:style",
92
+ "test": "vitest",
93
+ "test:coverage": "vitest run --coverage",
94
+ "wiki:dev": "vitepress dev wikis",
95
+ "wiki:build": "vitepress build wikis",
96
+ "mcp:build:index": "tsx mcp/scripts/build-index.ts",
97
+ "mcp:build": "tsc -p mcp/tsconfig.json && pnpm mcp:build:index",
98
+ "mcp:start": "node dist/mcp/index.js",
99
+ "mcp:dev": "tsx mcp/src/index.ts"
101
100
  }
102
101
  }