@blueking/chat-x 0.0.45-beta.5 → 0.0.45-dev.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/dist/ag-ui/types/interrupt.d.ts +18 -3
- package/dist/components/chat-message/interrupt-message/tool-approval-card.vue.d.ts +1 -0
- package/dist/composables/use-message-group.d.ts +87 -6
- package/dist/index.css +1 -1
- package/dist/index.js +44 -27
- package/dist/index.js.map +1 -1
- package/dist/mcp/generated/docs/interrupt-message.md +21 -9
- package/dist/mcp/generated/docs/interrupt.md +38 -15
- package/dist/mcp/generated/docs/tool-approval-card.md +19 -3
- package/dist/mcp/generated/index.json +7 -7
- package/dist/mcp/index.js +0 -0
- package/dist/utils/utils.d.ts +2 -2
- package/package.json +20 -21
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
渲染 human-in-the-loop
|
|
4
|
+
渲染 human-in-the-loop 中断消息,分发工具审批,并按 reason 回显 resume 结果(审批单 / 用户回答)。 源码位置:src/components/chat-message/interrupt-message/interrupt-message.vue。
|
|
5
5
|
|
|
6
6
|
### 关联组件
|
|
7
7
|
- **message-render** — role 为 interrupt 时渲染本组件
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
- **源码位置**:`src/components/chat-message/interrupt-message/interrupt-message.vue`
|
|
19
19
|
- **能力域**:Agent 能力
|
|
20
|
-
- **能力说明**:渲染 human-in-the-loop
|
|
20
|
+
- **能力说明**:渲染 human-in-the-loop 中断消息,分发工具审批,并按 `result.reason` 回显 resume 结果。
|
|
21
21
|
|
|
22
22
|
> **能力域**:Agent 能力
|
|
23
23
|
|
|
24
24
|
human-in-the-loop 中断消息渲染器(导出名 **`InterruptMessageRender`**)。对应 `MessageRole.Interrupt`,解析 `content.outcome` 渲染审批卡片或兜底提示。
|
|
25
25
|
|
|
26
26
|
> 通常由 [MessageRender](/components/message/message-render) 自动调用,无需业务侧直接引入。
|
|
27
|
-
> `UserQuestion` 的待回答卡片由 [ChatContainer](/components/setup/chat-container)
|
|
27
|
+
> `UserQuestion` 的待回答卡片由 [ChatContainer](/components/setup/chat-container) 放在输入区上方,本组件在 `outcome.success` 时按 `result.reason` 回显审批单或用户回答。
|
|
28
28
|
|
|
29
29
|
## 渲染架构
|
|
30
30
|
|
|
@@ -38,12 +38,15 @@ InterruptMessageRender
|
|
|
38
38
|
└── 未注册 reason → 兜底块(item.message 或「暂不支持的中断消息」)
|
|
39
39
|
|
|
40
40
|
content.outcome.type === 'success'
|
|
41
|
-
└── result.reason
|
|
41
|
+
└── resultRenderers[result.reason]
|
|
42
|
+
├── aidev:tool_approval → ToolApprovalCard(readonly,隐藏取消审批)
|
|
43
|
+
└── aidev:user_question → UserQuestionAnsweredCard(支持 #answeredQuestion 透传 #answer)
|
|
42
44
|
```
|
|
43
45
|
|
|
44
46
|
| `InterruptReason` | 子组件 |
|
|
45
47
|
| ------------------------------ | ------------------- |
|
|
46
|
-
| `aidev:tool_approval
|
|
48
|
+
| `aidev:tool_approval`(待审批) | `ToolApprovalCard` |
|
|
49
|
+
| `aidev:tool_approval`(已处理) | `ToolApprovalCard`(`readonly`,只读回显) |
|
|
47
50
|
| `aidev:user_question`(待回答) | 输入区 `UserQuestionCard`,本组件不渲染 |
|
|
48
51
|
| `aidev:user_question`(已回答) | `UserQuestionAnsweredCard` |
|
|
49
52
|
| 其他 / 未注册 | 兜底文案区域 |
|
|
@@ -124,6 +127,19 @@ content.outcome.type === 'success'
|
|
|
124
127
|
|
|
125
128
|
**渲染效果**
|
|
126
129
|
|
|
130
|
+
## AIDevToolApproval 已处理回显(outcome.success)
|
|
131
|
+
|
|
132
|
+
`outcome.type === 'success'` 且 `result.reason === InterruptReason.AIDevToolApproval` 时,会话内以只读 `ToolApprovalCard` 回显审批单。`result.payload.metadata` 需透传中断时的 `metadata`(含 `ticket`):
|
|
133
|
+
|
|
134
|
+
```vue
|
|
135
|
+
<InterruptMessageRender
|
|
136
|
+
:content="resumedMessage.content"
|
|
137
|
+
role="interrupt"
|
|
138
|
+
/>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**渲染效果**
|
|
142
|
+
|
|
127
143
|
## UserQuestion 已回答回显(outcome.success)
|
|
128
144
|
|
|
129
145
|
`outcome.type === 'success'` 且 `result.reason === InterruptReason.UserQuestion` 时,会话内回显用户回答。可通过 `#answeredQuestion` slot 自定义单题回显:
|
|
@@ -141,10 +157,6 @@ content.outcome.type === 'success'
|
|
|
141
157
|
|
|
142
158
|
**渲染效果**
|
|
143
159
|
|
|
144
|
-
## 其他已 resume(outcome.success)
|
|
145
|
-
|
|
146
|
-
非 `UserQuestion` 的 success 态不渲染中断卡片,仅保留可选顶部 `content.message`:
|
|
147
|
-
|
|
148
160
|
## 不支持的中断类型(兜底)
|
|
149
161
|
|
|
150
162
|
```vue
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、UserQuestionInterrupt、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合,对应 RUN_FINISHED outcome。
|
|
4
|
+
定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、AIDevToolApprovalResume、UserQuestionInterrupt、InterruptResult、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合,对应 RUN_FINISHED outcome。
|
|
5
5
|
|
|
6
6
|
### 关联组件
|
|
7
|
-
- **interrupt-message** — 根据 outcome.interrupts 与 reason 渲染中断 UI,success
|
|
7
|
+
- **interrupt-message** — 根据 outcome.interrupts 与 reason 渲染中断 UI,success 时按 result.reason 回显审批单或用户回答
|
|
8
8
|
- **user-question-card** — UserQuestion 交互面板,挂载在 ChatInput 上方
|
|
9
9
|
- **tool-approval-card** — AIDevToolApproval 专用卡片
|
|
10
10
|
- **message-render** — role 为 interrupt 时派发 InterruptMessageRender
|
|
@@ -53,7 +53,7 @@ type RunFinishedOutcome =
|
|
|
53
53
|
| `type` | 说明 |
|
|
54
54
|
| ------------- | -------------------------------------------------------------------- |
|
|
55
55
|
| `'interrupt'` | 等待用户响应;`interrupts` 驱动 UI 渲染审批卡片、用户问题面板等 |
|
|
56
|
-
| `'success'` | 用户已通过 `resume`
|
|
56
|
+
| `'success'` | 用户已通过 `resume` 处理;按 `result.reason` 在会话内回显审批单(`AIDevToolApproval`)或用户回答(`UserQuestion`) |
|
|
57
57
|
|
|
58
58
|
## BaseInterrupt
|
|
59
59
|
|
|
@@ -76,18 +76,31 @@ type BaseInterrupt<T extends InterruptReason, M extends Record<string, any>> = {
|
|
|
76
76
|
AI Dev 第三方工具审批中断,`reason` 为 `InterruptReason.AIDevToolApproval`(`'aidev:tool_approval'`):
|
|
77
77
|
|
|
78
78
|
```typescript
|
|
79
|
+
type AIDevToolApprovalInterruptPayloadMetaData = {
|
|
80
|
+
ticket: {
|
|
81
|
+
approvers: string[];
|
|
82
|
+
sn: string;
|
|
83
|
+
status: APPROVAL_STATUS;
|
|
84
|
+
submit_time: string;
|
|
85
|
+
title: string;
|
|
86
|
+
url: string;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
79
90
|
type AIDevToolApprovalInterrupt = BaseInterrupt<
|
|
80
91
|
InterruptReason.AIDevToolApproval,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
AIDevToolApprovalInterruptPayloadMetaData
|
|
93
|
+
>;
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## AIDevToolApprovalResume
|
|
97
|
+
|
|
98
|
+
AI Dev 第三方工具审批中断响应(resume 后用于 `outcome.success` 时会话内回显审批单)。`payload.metadata` 透传中断时的 `metadata`(含 `ticket`),以便复用 `ToolApprovalCard` 只读渲染:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
type AIDevToolApprovalResume = BaseResume<
|
|
102
|
+
InterruptReason.AIDevToolApproval,
|
|
103
|
+
{ metadata: AIDevToolApprovalInterruptPayloadMetaData }
|
|
91
104
|
>;
|
|
92
105
|
```
|
|
93
106
|
|
|
@@ -135,8 +148,18 @@ type Interrupt =
|
|
|
135
148
|
| BaseInterrupt<InterruptReason, Record<string, any>>;
|
|
136
149
|
```
|
|
137
150
|
|
|
151
|
+
## InterruptResult
|
|
152
|
+
|
|
153
|
+
中断处理结果(resume 后回传/持久化,用于 `outcome.success` 时会话内回显)。按 `reason` 区分不同结果形态,统一具备 `BaseResume` 的 `{ interruptId, reason, status }`;新增中断类型的回显结果只需在此联合扩展:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
type InterruptResult = AIDevToolApprovalResume | UserQuestionResume;
|
|
157
|
+
```
|
|
158
|
+
|
|
138
159
|
## InterruptResume 联合类型
|
|
139
160
|
|
|
161
|
+
用户操作后通过 `onInterruptResume` 回传的负载(与 `InterruptResult` 用途不同:`InterruptResume` 侧重**动作回传**,`InterruptResult` 侧重**success 态会话内回显**):
|
|
162
|
+
|
|
140
163
|
```typescript
|
|
141
164
|
type InterruptResume = FlowNodeResume | ToolApprovalResume | UserQuestionResume;
|
|
142
165
|
```
|
|
@@ -228,7 +251,7 @@ type InterruptMessage = BaseMessage<
|
|
|
228
251
|
{
|
|
229
252
|
message?: string;
|
|
230
253
|
outcome?: RunFinishedOutcome;
|
|
231
|
-
result?:
|
|
254
|
+
result?: InterruptResult;
|
|
232
255
|
runId?: string;
|
|
233
256
|
threadId?: string;
|
|
234
257
|
}
|
|
@@ -239,7 +262,7 @@ type InterruptMessage = BaseMessage<
|
|
|
239
262
|
| ---------- | ------------------------------------------------------------ |
|
|
240
263
|
| `message` | 消息组顶部可选说明文案,由 `InterruptMessageRender` 展示 |
|
|
241
264
|
| `outcome` | `type: 'interrupt'` 时从 `interrupts` 渲染交互;`success` 时进入已处理态 |
|
|
242
|
-
| `result` | 用户 resume
|
|
265
|
+
| `result` | 用户 resume 后回传/持久化的 `InterruptResult`;按 `reason` 在会话内回显审批单或用户回答 |
|
|
243
266
|
| `runId` | 关联 AG-UI run 标识 |
|
|
244
267
|
| `threadId` | 关联会话线程标识 |
|
|
245
268
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- AI SUMMARY -->
|
|
2
2
|
## 快速了解
|
|
3
3
|
|
|
4
|
-
渲染 AIDevToolApproval
|
|
4
|
+
渲染 AIDevToolApproval 中断的审批信息与取消操作;outcome.success 回显时以 readonly 只读展示。 源码位置:src/components/chat-message/interrupt-message/tool-approval-card.vue。
|
|
5
5
|
|
|
6
6
|
### 关联组件
|
|
7
7
|
- **interrupt-message** — InterruptMessageRender 按 reason 派发渲染
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
- **源码位置**:`src/components/chat-message/interrupt-message/tool-approval-card.vue`
|
|
16
16
|
- **能力域**:Agent 能力
|
|
17
|
-
- **能力说明**:渲染 AIDevToolApproval
|
|
17
|
+
- **能力说明**:渲染 AIDevToolApproval 中断的审批信息与取消操作;`readonly` 时用于 outcome.success 只读回显。
|
|
18
18
|
|
|
19
19
|
> **能力域**:Agent 能力
|
|
20
20
|
|
|
@@ -29,9 +29,11 @@ ToolApprovalCard
|
|
|
29
29
|
├── 标题栏:左侧色条 + 单据标题 + 复制图标 + 状态徽章(评审中/已通过/已拒绝/已撤销等)
|
|
30
30
|
├── 字段区:单据编号、提交时间
|
|
31
31
|
├── 处理人:当前处理人(overflow-tips 省略)
|
|
32
|
-
└── 操作区:查看单据详情(新窗口打开 url)、取消审批(仅 pending / draft)
|
|
32
|
+
└── 操作区:查看单据详情(新窗口打开 url)、取消审批(仅 pending / draft 且非 readonly)
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
`readonly` 为 `true` 时用于 `outcome.success` 结果回显:隐藏「取消审批」按钮,不接受审批取消交互。通常由 [InterruptMessageRender](/components/agent/interrupt-message) 内部传入,业务侧无需手动设置。
|
|
36
|
+
|
|
35
37
|
状态徽章样式:
|
|
36
38
|
|
|
37
39
|
| `ticket.status` | 视觉 |
|
|
@@ -122,6 +124,19 @@ ToolApprovalCard
|
|
|
122
124
|
|
|
123
125
|
**渲染效果**
|
|
124
126
|
|
|
127
|
+
## 只读回显(readonly)
|
|
128
|
+
|
|
129
|
+
`outcome.success` 时 [InterruptMessageRender](/components/agent/interrupt-message) 会将 `AIDevToolApprovalResume.payload.metadata` 还原为 `interrupt` 形态,并以 `readonly` 挂载本组件:
|
|
130
|
+
|
|
131
|
+
```vue
|
|
132
|
+
<ToolApprovalCard
|
|
133
|
+
:interrupt="approvedInterrupt"
|
|
134
|
+
readonly
|
|
135
|
+
/>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**渲染效果**(待审批态下 readonly 不展示「取消审批」)
|
|
139
|
+
|
|
125
140
|
## API
|
|
126
141
|
|
|
127
142
|
### Props
|
|
@@ -130,6 +145,7 @@ ToolApprovalCard
|
|
|
130
145
|
| ----------------- | ---------------------------- | ------ | -------------------------------------------- |
|
|
131
146
|
| interrupt | `AIDevToolApprovalInterrupt` | — | **必填**,含 `metadata.ticket` |
|
|
132
147
|
| onInterruptResume | `OnInterruptResume` | — | 取消审批时触发,签名为 `(payload, interrupt)`,payload 为 `{ operation: InterruptResumeOperation.ApprovalCancel, payload: { interrupt_id } }` |
|
|
148
|
+
| readonly | `boolean` | — | 只读回显态(`outcome.success` 结果回显):隐藏取消审批按钮,不接受交互 |
|
|
133
149
|
|
|
134
150
|
### Events / Slots / Expose
|
|
135
151
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2.0.0",
|
|
3
|
-
"generatedAt": "2026-06-
|
|
3
|
+
"generatedAt": "2026-06-16T12:27:28.867Z",
|
|
4
4
|
"domains": {
|
|
5
5
|
"setup": {
|
|
6
6
|
"label": "对话搭建",
|
|
@@ -206,8 +206,8 @@
|
|
|
206
206
|
"name": "InterruptMessage 中断消息",
|
|
207
207
|
"slug": "interrupt-message",
|
|
208
208
|
"kind": "component",
|
|
209
|
-
"description": "渲染 human-in-the-loop
|
|
210
|
-
"aiSummary": "渲染 human-in-the-loop
|
|
209
|
+
"description": "渲染 human-in-the-loop 中断消息,分发工具审批,并按 reason 回显 resume 结果。",
|
|
210
|
+
"aiSummary": "渲染 human-in-the-loop 中断消息,分发工具审批,并按 reason 回显 resume 结果(审批单 / 用户回答)。 源码位置:src/components/chat-message/interrupt-message/interrupt-message.vue。",
|
|
211
211
|
"relatedComponents": [
|
|
212
212
|
{
|
|
213
213
|
"slug": "message-render",
|
|
@@ -302,8 +302,8 @@
|
|
|
302
302
|
"name": "ToolApprovalCard 工具审批卡片",
|
|
303
303
|
"slug": "tool-approval-card",
|
|
304
304
|
"kind": "component",
|
|
305
|
-
"description": "渲染 AIDevToolApproval
|
|
306
|
-
"aiSummary": "渲染 AIDevToolApproval
|
|
305
|
+
"description": "渲染 AIDevToolApproval 中断的审批信息与取消操作,支持只读回显态。",
|
|
306
|
+
"aiSummary": "渲染 AIDevToolApproval 中断的审批信息与取消操作;outcome.success 回显时以 readonly 只读展示。 源码位置:src/components/chat-message/interrupt-message/tool-approval-card.vue。",
|
|
307
307
|
"relatedComponents": [
|
|
308
308
|
{
|
|
309
309
|
"slug": "interrupt-message",
|
|
@@ -1673,11 +1673,11 @@
|
|
|
1673
1673
|
"slug": "interrupt",
|
|
1674
1674
|
"kind": "type",
|
|
1675
1675
|
"description": "AG-UI human-in-the-loop 中断相关类型,含 Interrupt、UserQuestion、InterruptMessage 与 resume 回调。",
|
|
1676
|
-
"aiSummary": "定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、UserQuestionInterrupt、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合,对应 RUN_FINISHED outcome。",
|
|
1676
|
+
"aiSummary": "定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、AIDevToolApprovalResume、UserQuestionInterrupt、InterruptResult、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合,对应 RUN_FINISHED outcome。",
|
|
1677
1677
|
"relatedComponents": [
|
|
1678
1678
|
{
|
|
1679
1679
|
"slug": "interrupt-message",
|
|
1680
|
-
"relation": "根据 outcome.interrupts 与 reason 渲染中断 UI,success
|
|
1680
|
+
"relation": "根据 outcome.interrupts 与 reason 渲染中断 UI,success 时按 result.reason 回显审批单或用户回答"
|
|
1681
1681
|
},
|
|
1682
1682
|
{
|
|
1683
1683
|
"slug": "user-question-card",
|
package/dist/mcp/index.js
CHANGED
|
File without changes
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const getCookieByName: (name: string) => string | null;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 将毫秒耗时格式化为紧凑字符串(数字与单位之间不留空格)
|
|
4
4
|
* @param duration 耗时,单位:毫秒
|
|
5
|
-
* @returns
|
|
5
|
+
* @returns 如 1m30s500ms;与 formatElapsedTime 风格一致
|
|
6
6
|
*/
|
|
7
7
|
export declare const formatDuration: (duration: number) => string;
|
|
8
8
|
export declare const generateUUID: () => string;
|
package/package.json
CHANGED
|
@@ -1,26 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blueking/chat-x",
|
|
3
|
-
"version": "0.0.45-
|
|
3
|
+
"version": "0.0.45-dev.1",
|
|
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.10-dev.1"
|
|
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
|
}
|