@blueking/chat-x 0.0.32 → 0.0.34
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/dist/composables/use-common.d.ts +9 -1
- package/dist/index.css +1 -1
- package/dist/index.js +1500 -1479
- package/dist/index.js.map +1 -1
- package/dist/mcp/generated/docs/activity-message.md +4 -1
- package/dist/mcp/generated/docs/chat-container.md +7 -4
- package/dist/mcp/generated/docs/chat-input.md +7 -1
- package/dist/mcp/generated/docs/file-upload-btn.md +26 -42
- package/dist/mcp/generated/docs/image-preview.md +2 -2
- package/dist/mcp/generated/docs/use-observer-visible-list.md +1 -1
- package/dist/mcp/generated/index.json +4 -4
- package/dist/mcp/index.js +0 -0
- package/dist/utils/file.d.ts +4 -0
- package/package.json +21 -22
|
@@ -160,6 +160,8 @@ ActivityMessage 展示活动类消息:知识检索(knowledge_rag)、引用
|
|
|
160
160
|
- **节点列表**:每个节点显示状态圆点、名称和耗时;hover 时出现「详情」按钮
|
|
161
161
|
- **节点详情**:点击「详情」按钮会通过 `useCustomTabConsumer` 在 `ChatContainer` 侧边栏新增自定义 Tab,展示节点配置(基础信息、输入参数、输出参数)
|
|
162
162
|
|
|
163
|
+
> `FlowAgentContent` 会读取 `ChatContainer` 注入的 `renderMode`。当 `renderMode === RenderMode.Share` 时,节点列表仅展示状态和名称,不展示节点耗时与「详情」按钮,避免分享预览中出现可交互的节点详情入口。独立使用 `ActivityMessage` 且没有上层 Provider 时,默认按 `Chat` 模式渲染。
|
|
164
|
+
|
|
163
165
|
### 内部渲染结构
|
|
164
166
|
|
|
165
167
|
```
|
|
@@ -286,6 +288,7 @@ const messages = [
|
|
|
286
288
|
| `success` | FINISHED | #18B456 |
|
|
287
289
|
| `failed` | FAILED / REVOKED / ROLL_BACK_FAILED | #EA3636 |
|
|
288
290
|
| `suspended` | SUSPENDED | #F59500 |
|
|
291
|
+
| `pending` | PENDING | #DCDEE5 |
|
|
289
292
|
|
|
290
293
|
### 节点详情 Tab
|
|
291
294
|
|
|
@@ -377,7 +380,7 @@ enum MessageContentType {
|
|
|
377
380
|
| ------------ | --------------------------------------------------------------------------- | ------ | --------------------------------------------------------- |
|
|
378
381
|
| content | `ReferenceDocumentContent[] \| KnowledgeRagContent \| BkFlowMessageContent` | - | 内容数据,格式随 `activityType` 不同 |
|
|
379
382
|
| activityType | `'knowledge_rag' \| 'flow_agent' \| 'reference_document' \| string` | - | 活动类型,决定渲染模式(知识检索 / FlowAgent / 引用文档) |
|
|
380
|
-
| status | `MessageStatus` | - |
|
|
383
|
+
| status | `MessageStatus` | - | 消息状态;在 `knowledge_rag` 模式下影响标题和图标,在 `flow_agent` 模式下影响标题 Loading 状态 |
|
|
381
384
|
| id | `string \| number` | - | 消息 ID |
|
|
382
385
|
| messageId | `string \| number` | - | 消息唯一标识 |
|
|
383
386
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer
|
|
4
|
+
ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer 对齐;renderMode 会通过内部 provide 下传给子内容组件。
|
|
5
5
|
|
|
6
6
|
### 关联组件
|
|
7
7
|
- **message-container** — 消息列表与滚动区域
|
|
@@ -27,6 +27,7 @@ ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息
|
|
|
27
27
|
- **执行摘要**:侧边栏展示工具调用 / FlowAgent 执行记录,支持关键词搜索和对话定位
|
|
28
28
|
- **自定义 Tab**:通过 `useCustomTabProvider` 支持动态添加自定义 Tab(如节点详情)
|
|
29
29
|
- **分享模式**:内置消息多选分享流程,选中用户消息后确认分享
|
|
30
|
+
- **渲染模式注入**:`renderMode` 会通过内部 Provider 下传给后代内容组件;例如 FlowAgent 节点在 `Share` 模式下隐藏耗时和「详情」入口
|
|
30
31
|
- **空状态欢迎页**:无消息时展示欢迎语和开场白
|
|
31
32
|
|
|
32
33
|
## 组件结构
|
|
@@ -366,7 +367,7 @@ ChatContainer 的 Props 继承自 `ChatInputProps` 和 `MessageContainerProps`
|
|
|
366
367
|
| confirmShare | `(messages: Message[])` | 确认分享,携带选中的消息 |
|
|
367
368
|
| collapseChange | `(isCollapse: boolean, width: number)` | 侧边栏折叠/展开状态变化 |
|
|
368
369
|
| selectShortcut | `(shortcut: Shortcut)` | 选择快捷指令(继承自 ChatInput) |
|
|
369
|
-
| deleteShortcut |
|
|
370
|
+
| deleteShortcut | — | 删除已选快捷指令(继承自 ChatInput) |
|
|
370
371
|
|
|
371
372
|
### Slots
|
|
372
373
|
|
|
@@ -385,15 +386,17 @@ ChatContainer 的 Props 继承自 `ChatInputProps` 和 `MessageContainerProps`
|
|
|
385
386
|
| addCustomTab | `(tab: CustomTab) => void` | 添加自定义 Tab |
|
|
386
387
|
| removeCustomTab | `(tabName: string) => void` | 移除自定义 Tab |
|
|
387
388
|
| selectCustomTab | `(tab: CustomTab) => void` | 切换到指定 Tab |
|
|
389
|
+
| enterShareMode | `() => void` | 手动进入分享多选模式 |
|
|
390
|
+
| exitShareMode | `() => void` | 退出分享多选模式,并清空已选消息 |
|
|
388
391
|
|
|
389
392
|
## 渲染模式
|
|
390
393
|
|
|
391
|
-
通过 `v-model:render-mode`
|
|
394
|
+
通过 `v-model:render-mode` 控制容器的渲染行为。`ChatContainer` 会把当前 `renderMode` 注入给后代组件,供内容渲染根据场景收敛交互能力。
|
|
392
395
|
|
|
393
396
|
| `renderMode` | 侧边栏 Tab / 折叠按钮 | 底部输入区域 | MessageTools 工具栏 | 说明 |
|
|
394
397
|
| ------------ | ---------------------- | --------------------------------- | --------------------- | -------------------------------- |
|
|
395
398
|
| `Chat` | 正常显示 | 正常显示(ChatInput / ShortcutRender / SelectionFooter) | 全部工具按钮 | 默认对话模式 |
|
|
396
|
-
| `Share` | **隐藏** | **隐藏** | **隐藏**(多选模式) |
|
|
399
|
+
| `Share` | **隐藏** | **隐藏** | **隐藏**(多选模式) | 分享预览模式,仅展示消息;FlowAgent 节点会隐藏耗时和「详情」入口 |
|
|
397
400
|
| `Test` | 正常显示 | 正常显示 | 过滤掉「分享」按钮 | 测试/嵌入模式,隐藏分享入口 |
|
|
398
401
|
|
|
399
402
|
```vue
|
|
@@ -247,7 +247,7 @@ chat-input-container
|
|
|
247
247
|
|
|
248
248
|
**渲染效果**(底部显示快捷指令按钮,点击选中后按钮变为已选状态)
|
|
249
249
|
|
|
250
|
-
## 文件上传
|
|
250
|
+
## 文件上传 {#file-upload}
|
|
251
251
|
|
|
252
252
|
`supportUpload` 默认为 `true`,底部工具栏自动显示文件上传按钮。传入 `onUpload` 回调后即可处理文件上传:
|
|
253
253
|
|
|
@@ -257,6 +257,12 @@ chat-input-container
|
|
|
257
257
|
- 文件自动去重(基于 `name + size + lastModified` 复合键),不会重复上传
|
|
258
258
|
- 发送成功后,`uploadFiles` 自动清空
|
|
259
259
|
|
|
260
|
+
**个数与大小校验(与 `FileUploadBtn` 分工)**:
|
|
261
|
+
|
|
262
|
+
- 列表最多保留 **`MAX_UPLOAD_FILES`(3)** 个待发送附件;已满时再次选择/拖入/粘贴文件会弹出 **bkui-vue `Message` 错误提示**(`formatUploadNotAddedMessage`),且不会继续入队。
|
|
263
|
+
- 在未满的前提下:空文件、单文件大小 **`>= MAX_UPLOAD_FILE_SIZE`(约 2.4MB)**、或与已有文件重复的项会被跳过;若本轮有任意文件因此未加入列表,会在处理结束后弹出**同一条文案风格**的错误提示,汇总未成功添加的数量。
|
|
264
|
+
- `FileUploadBtn` 仅在按钮层过滤**空文件与单文件超大**,把合法文件以数组形式 `upload` 上来;**个数上限与重复校验**在 `ChatInput` 的 `handleUpload` 中统一处理,避免与按钮层各弹一条提示。
|
|
265
|
+
|
|
260
266
|
**发送内容格式**(有文件时):
|
|
261
267
|
|
|
262
268
|
```typescript
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
FileUploadBtn 提供隐藏 file input
|
|
4
|
+
FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过滤空文件与超大单文件并 emit upload; 个数上限不在此截断,由 ChatInput 等与 FileContent 配合完成「选择 → 展示 → 发送」链路。
|
|
5
5
|
|
|
6
6
|
### 关联组件
|
|
7
7
|
- **chat-input** — 输入区附件上传按钮常见挂载位置
|
|
@@ -14,7 +14,7 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择文件后 emit upl
|
|
|
14
14
|
|
|
15
15
|
> **层级**:原子组件 · **功能域**:文件与图片
|
|
16
16
|
|
|
17
|
-
聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type="file">`
|
|
17
|
+
聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type="file">` 与可见的图标按钮;在按钮层对**单文件**做大小与空文件过滤,**已选文件个数上限**由上层(如 `ChatInput`)统一校验并提示,避免按钮与输入区各弹一条错误提示。
|
|
18
18
|
|
|
19
19
|
## 组件结构
|
|
20
20
|
|
|
@@ -33,27 +33,31 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择文件后 emit upl
|
|
|
33
33
|
```
|
|
34
34
|
用户选择文件
|
|
35
35
|
│
|
|
36
|
-
├─
|
|
37
|
-
│
|
|
36
|
+
├─ 遍历所选文件:size > 0 且 size < MAX_UPLOAD_FILE_SIZE(约 2.4MB)→ 加入 toEmit
|
|
37
|
+
│ size 为 0 或 ≥ 上限 → sizeRejected += 1
|
|
38
38
|
│
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
├─ sizeRejected > 0 → bkui-vue Message.error(formatUploadNotAddedMessage,说明可能超大或超出个数等)
|
|
40
|
+
│
|
|
41
|
+
├─ toEmit.length > 0 → emit('upload', toEmit)
|
|
42
|
+
│
|
|
43
|
+
└─ target.value = ''(重置 input,允许再次选择同一文件)
|
|
42
44
|
```
|
|
43
45
|
|
|
44
46
|
**关键边界行为**:
|
|
45
47
|
|
|
46
|
-
| 场景
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
| `file.size
|
|
52
|
-
| `
|
|
53
|
-
| 选择后取消
|
|
48
|
+
| 场景 | 结果 |
|
|
49
|
+
| ------------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
50
|
+
| 一次多选超过上层允许个数(如 `ChatInput` 内已达 3 个) | 由 **ChatInput** 侧 toast 并丢弃/不计入,不在本按钮内按个数提前拦截 |
|
|
51
|
+
| 部分文件因空文件或单文件超大被过滤 | 弹出错误 toast;若仍有合法文件,**仍触发** `upload`(payload 为合法子集) |
|
|
52
|
+
| 全部被过滤(均为空或超大) | 仅 toast,**不触发** `upload` |
|
|
53
|
+
| `file.size === 0` | 计入未添加提示,不进入 `upload` payload |
|
|
54
|
+
| `file.size >= MAX_UPLOAD_FILE_SIZE`(与全局常量一致,约 2.4MB) | 计入未添加提示,不进入 `upload` payload(比较为严格 `<`) |
|
|
55
|
+
| 选择后取消 | `files.length === 0`,不触发 `upload` |
|
|
54
56
|
|
|
55
57
|
> `multiple` prop 声明存在但当前模板中 `input` 的 `multiple` 属性为**硬编码**(非 `:multiple="multiple"` 绑定),始终允许多选,该 prop 暂时无实际效果。
|
|
56
58
|
|
|
59
|
+
> **`maxFiles` prop**:当前版本在按钮内**不参与截断或计数校验**,仅作类型与文档预留;列表最多几个文件由上层(如 `ChatInput` 的 `MAX_UPLOAD_FILES`)控制。详见 [ChatInput 文件上传](../molecular/chat-input.md#file-upload)。
|
|
60
|
+
|
|
57
61
|
## 基础用法
|
|
58
62
|
|
|
59
63
|
```vue
|
|
@@ -101,26 +105,6 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择文件后 emit upl
|
|
|
101
105
|
|
|
102
106
|
> `accept` 仅影响文件选择框的过滤 UI,不做服务端验证,请在 `upload` 回调中自行校验 MIME 类型。
|
|
103
107
|
|
|
104
|
-
## 限制上传数量
|
|
105
|
-
|
|
106
|
-
`maxFiles` 限制单次选择的文件上传上限,实际生效值为 `Math.max(maxFiles, 3)`,不会低于全局下限 3:
|
|
107
|
-
|
|
108
|
-
```vue
|
|
109
|
-
<template>
|
|
110
|
-
<!-- maxFiles=5:可一次选 5 个文件 -->
|
|
111
|
-
<FileUploadBtn
|
|
112
|
-
:max-files="5"
|
|
113
|
-
@upload="handleUpload"
|
|
114
|
-
/>
|
|
115
|
-
|
|
116
|
-
<!-- maxFiles=1:实际等效 maxFiles=3(取 Math.max(1,3)) -->
|
|
117
|
-
<FileUploadBtn
|
|
118
|
-
:max-files="1"
|
|
119
|
-
@upload="handleUpload"
|
|
120
|
-
/>
|
|
121
|
-
</template>
|
|
122
|
-
```
|
|
123
|
-
|
|
124
108
|
## 自定义图标
|
|
125
109
|
|
|
126
110
|
通过默认插槽替换上传图标:
|
|
@@ -137,18 +121,18 @@ FileUploadBtn 提供隐藏 file input 与图标按钮,选择文件后 emit upl
|
|
|
137
121
|
|
|
138
122
|
### Props
|
|
139
123
|
|
|
140
|
-
| 属性名 | 类型 | 默认值 | 说明
|
|
141
|
-
| ------------ | -------------- | ----------- |
|
|
142
|
-
| accept | `string` | `'image/*'` | 文件选择框过滤类型,遵循 `<input accept>` 规范
|
|
143
|
-
| maxFiles | `number` | `3` |
|
|
144
|
-
| multiple | `boolean` | `true` | 声明属性(当前版本未实际绑定到 input,始终多选)
|
|
145
|
-
| tippyOptions | `AITippyProps` | — | 扩展 tooltip 配置,会与内置配置合并
|
|
124
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
125
|
+
| ------------ | -------------- | ----------- | -------------------------------------------------------------------- |
|
|
126
|
+
| accept | `string` | `'image/*'` | 文件选择框过滤类型,遵循 `<input accept>` 规范 |
|
|
127
|
+
| maxFiles | `number` | `3` | 预留字段,**当前不在按钮内生效**;个数上限见 `ChatInput` 与全局常量 |
|
|
128
|
+
| multiple | `boolean` | `true` | 声明属性(当前版本未实际绑定到 input,始终多选) |
|
|
129
|
+
| tippyOptions | `AITippyProps` | — | 扩展 tooltip 配置,会与内置配置合并 |
|
|
146
130
|
|
|
147
131
|
### Events
|
|
148
132
|
|
|
149
133
|
| 事件名 | 参数 | 说明 |
|
|
150
134
|
| ------ | ----------------- | ----------------------------------------------------------------------------------------- |
|
|
151
|
-
| upload | `(files: File[])` |
|
|
135
|
+
| upload | `(files: File[])` | 当存在至少一个合法文件时触发;`files` 为过滤掉空文件与单文件超大(`size >= MAX_UPLOAD_FILE_SIZE`,约 2.4MB)后的数组;个数截断不在此组件内完成 |
|
|
152
136
|
|
|
153
137
|
### Slots
|
|
154
138
|
|
|
@@ -150,8 +150,8 @@ Teleport(to="body")
|
|
|
150
150
|
|
|
151
151
|
> **ObjectURL 生命周期管理**:组件内部维护 `objectUrls` 数组,在以下时机自动回收:
|
|
152
152
|
>
|
|
153
|
-
> - `
|
|
154
|
-
> -
|
|
153
|
+
> - `normalizedImages` 计算属性重算时(会先 `revokeObjectUrls`,再按当前 `images` 与 `visible` 生成新列表)
|
|
154
|
+
> - **`visible` 为 `false` 时**:计算属性直接清空并 `revokeObjectURL`,避免仅依赖 `props.images` 时 computed 仍缓存**已失效**的 blob URL,导致关闭预览后再次打开加载失败
|
|
155
155
|
> - 组件 `onBeforeUnmount` 时
|
|
156
156
|
|
|
157
157
|
## API
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2.0.0",
|
|
3
|
-
"generatedAt": "2026-04-
|
|
3
|
+
"generatedAt": "2026-04-27T03:31:37.817Z",
|
|
4
4
|
"domains": {
|
|
5
5
|
"message": {
|
|
6
6
|
"label": "消息展示",
|
|
@@ -210,8 +210,8 @@
|
|
|
210
210
|
"name": "FileUploadBtn 文件上传按钮",
|
|
211
211
|
"slug": "file-upload-btn",
|
|
212
212
|
"category": "atomic",
|
|
213
|
-
"description": "聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type=\"file\">`
|
|
214
|
-
"aiSummary": "FileUploadBtn 提供隐藏 file input
|
|
213
|
+
"description": "聊天输入框内置的文件上传触发按钮,点击后弹出系统文件选择框。内部包含隐藏的 `<input type=\"file\">` 与可见的图标按钮;在按钮层过滤空文件与超过单文件大小上限的文件,**上传个数上限由上层(如 ChatInput)统一处理**。",
|
|
214
|
+
"aiSummary": "FileUploadBtn 提供隐藏 file input 与图标按钮,选择后在按钮层过滤空文件与超大单文件并 emit upload; 个数上限不在此截断,由 ChatInput 等与 FileContent 配合完成「选择 → 展示 → 发送」链路。",
|
|
215
215
|
"relatedComponents": [
|
|
216
216
|
{
|
|
217
217
|
"slug": "chat-input",
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
"slug": "chat-container",
|
|
539
539
|
"category": "molecular",
|
|
540
540
|
"description": "顶层聊天容器组件,整合了 `MessageContainer`(消息列表)、`ChatInput`(输入框)、`ExecutionSummary`(执行摘要面板)、`ShortcutRender`(快捷指令表单)和 `SelectionFooter`(多选操作栏)。提供完整的 AI 对话界面布局能力。",
|
|
541
|
-
"aiSummary": "ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer
|
|
541
|
+
"aiSummary": "ChatContainer 提供完整 AI 对话布局:分栏(ResizeLayout)、消息列表(MessageContainer)、输入(ChatInput)、执行摘要(ExecutionSummary)、快捷表单(ShortcutRender)与多选栏(SelectionFooter)。 内置 useMessageGroup、分享与自定义 Tab 等能力;对 MessageContainer/ChatInput 下推 inputStatus(末尾 Loading 占位时推导 Fetching),适合一站式接入。 通过 props 传入 messages、shortcuts 等,事件与 ChatInput/MessageContainer 对齐;renderMode 会通过内部 provide 下传给子内容组件。",
|
|
542
542
|
"relatedComponents": [
|
|
543
543
|
{
|
|
544
544
|
"slug": "message-container",
|
package/dist/mcp/index.js
CHANGED
|
File without changes
|
package/dist/utils/file.d.ts
CHANGED
|
@@ -22,3 +22,7 @@ export declare const getFileExtension: (file?: File) => string;
|
|
|
22
22
|
* @returns 1024B -> 1KB 1024KB -> 1MB 1024MB -> 1GB
|
|
23
23
|
*/
|
|
24
24
|
export declare const formatFileSize: (file?: File) => string;
|
|
25
|
+
/**
|
|
26
|
+
* 未成功添加的文件统一提示(中文在数量为 1 时不带「n个」前缀)
|
|
27
|
+
*/
|
|
28
|
+
export declare const formatUploadNotAddedMessage: (count: number, maxMb: string, isEn: boolean) => string;
|
package/package.json
CHANGED
|
@@ -1,26 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blueking/chat-x",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.34",
|
|
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",
|
|
@@ -96,6 +77,24 @@
|
|
|
96
77
|
"vite-bundle-analyzer": "^1.3.2",
|
|
97
78
|
"vitepress": "2.0.0-alpha.16",
|
|
98
79
|
"vitest": "^4.0.18",
|
|
99
|
-
"vue-tsc": "^3.1.4"
|
|
80
|
+
"vue-tsc": "^3.1.4",
|
|
81
|
+
"@blueking/chat-helper": "0.0.2"
|
|
82
|
+
},
|
|
83
|
+
"scripts": {
|
|
84
|
+
"dev": "vite --config vite.config.ts",
|
|
85
|
+
"dts": "vue-tsc --project tsconfig.dts.json",
|
|
86
|
+
"build": "vitest && vite --config vite.config.ts build && pnpm dts",
|
|
87
|
+
"preview": "vite --config vite.config.ts build --mode preview && pnpm dts",
|
|
88
|
+
"lint:script": "eslint . --ext .vue,.ts --fix",
|
|
89
|
+
"lint:style": "stylelint \"**/*.{scss,css,vue}\" --fix",
|
|
90
|
+
"lint:all": "pnpm lint:script && pnpm lint:style",
|
|
91
|
+
"test": "vitest",
|
|
92
|
+
"test:coverage": "vitest run --coverage",
|
|
93
|
+
"wiki:dev": "vitepress dev wikis",
|
|
94
|
+
"wiki:build": "vitepress build wikis",
|
|
95
|
+
"mcp:build:index": "tsx mcp/scripts/build-index.ts",
|
|
96
|
+
"mcp:build": "tsc -p mcp/tsconfig.json && pnpm mcp:build:index",
|
|
97
|
+
"mcp:start": "node dist/mcp/index.js",
|
|
98
|
+
"mcp:dev": "tsx mcp/src/index.ts"
|
|
100
99
|
}
|
|
101
|
-
}
|
|
100
|
+
}
|