flex-mcp 1.1.10 → 1.1.13
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/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/update.d.ts +6 -0
- package/dist/api/update.d.ts.map +1 -0
- package/dist/api/update.js +269 -0
- package/dist/api/update.js.map +1 -0
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +37 -8
- package/dist/update.js.map +1 -1
- package/dist/web/assets/Blank-BHJQs5sx.js +1 -0
- package/dist/web/assets/Configs-ClEYNzO5.js +1 -0
- package/dist/web/assets/{Dashboard-Bq0D1J8c.js → Dashboard-CnyNQRgh.js} +4 -4
- package/dist/web/assets/InitScriptEditor-BFTWTD26.js +499 -0
- package/dist/web/assets/Layout-B9iGlIQE.js +1 -0
- package/dist/web/assets/Layout-Da7GFkga.js +1 -0
- package/dist/web/assets/Login-BWlz3FI1.js +1 -0
- package/dist/web/assets/Login-DXNFmh7b.js +1 -0
- package/dist/web/assets/Users-DGRVEG-v.js +1 -0
- package/dist/web/assets/index-CmiEbWrJ.js +2 -0
- package/dist/web/assets/monaco-editor-BXWd1EVR.js +11 -0
- package/dist/web/assets/naive-ui-BwyHI4J3.js +7313 -0
- package/dist/web/assets/style-CrcCgeaU.css +1 -0
- package/dist/web/assets/vendor-DpXl860f.js +58 -0
- package/dist/web/index.html +5 -2
- package/package.json +1 -1
- package/dist/web/assets/Blank-BlKddJHU.js +0 -1
- package/dist/web/assets/Configs-sOwPYGsS.js +0 -1
- package/dist/web/assets/InitScriptEditor-D6nioBYF.js +0 -509
- package/dist/web/assets/Layout-CsVepWQk.js +0 -1
- package/dist/web/assets/Layout-DVbq4zY1.js +0 -1
- package/dist/web/assets/Login-Co4BGypj.js +0 -1
- package/dist/web/assets/Login-Cu2_NRNJ.js +0 -1
- package/dist/web/assets/Users-FtcuFUiR.js +0 -1
- package/dist/web/assets/index-h7iG2I9f.js +0 -7371
- package/dist/web/assets/style-BTAlT1zh.css +0 -1
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,eAAO,MAAM,SAAS,4EAAa,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { authRouter } from './auth.js';
|
|
|
8
8
|
import { mcpRouter } from './mcp.js';
|
|
9
9
|
import { tablesRouter } from './tables.js';
|
|
10
10
|
import { promptsRouter } from './prompts.js';
|
|
11
|
+
import { updateRouter } from './update.js';
|
|
11
12
|
export const apiRouter = new Hono();
|
|
12
13
|
// 认证路由
|
|
13
14
|
apiRouter.route('/auth', authRouter);
|
|
@@ -21,4 +22,6 @@ apiRouter.route('/mcp', mcpRouter);
|
|
|
21
22
|
apiRouter.route('/tables', tablesRouter);
|
|
22
23
|
// 提示词管理路由(需要认证)
|
|
23
24
|
apiRouter.route('/prompts', promptsRouter);
|
|
25
|
+
// 更新管理路由(需要管理员认证)
|
|
26
|
+
apiRouter.route('/update', updateRouter);
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAEpC,OAAO;AACP,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAErC,eAAe;AACf,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEtC,eAAe;AACf,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAE1C,iBAAiB;AACjB,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnC,cAAc;AACd,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEzC,gBAAgB;AAChB,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAE3C,kBAAkB;AAClB,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/api/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgD5B,eAAO,MAAM,YAAY,4EAAa,CAAC"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 更新管理 API 路由
|
|
3
|
+
*/
|
|
4
|
+
import { Hono } from 'hono';
|
|
5
|
+
import { authMiddleware, requireAdmin } from './middleware.js';
|
|
6
|
+
import { restartDaemon } from '../daemon.js';
|
|
7
|
+
import pkgUpdateNotifier from 'update-notifier';
|
|
8
|
+
const updateNotifier = pkgUpdateNotifier.default || pkgUpdateNotifier;
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import { execSync } from 'child_process';
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = path.dirname(__filename);
|
|
15
|
+
// 读取 package.json(优先读取 server 包的 package.json,因为这是实际发布的包)
|
|
16
|
+
let pkg;
|
|
17
|
+
let packageJsonPath;
|
|
18
|
+
try {
|
|
19
|
+
// 先尝试读取 server 包的 package.json(编译后在 dist 目录,需要向上两级)
|
|
20
|
+
packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
|
|
21
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
22
|
+
pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// 如果不存在,尝试读取项目根目录的 package.json
|
|
26
|
+
const rootPath = path.join(__dirname, '..', '..', '..', 'package.json');
|
|
27
|
+
if (fs.existsSync(rootPath)) {
|
|
28
|
+
packageJsonPath = rootPath;
|
|
29
|
+
pkg = JSON.parse(fs.readFileSync(rootPath, 'utf-8'));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// 最后尝试当前工作目录
|
|
33
|
+
const cwdPath = path.join(process.cwd(), 'package.json');
|
|
34
|
+
if (fs.existsSync(cwdPath)) {
|
|
35
|
+
packageJsonPath = cwdPath;
|
|
36
|
+
pkg = JSON.parse(fs.readFileSync(cwdPath, 'utf-8'));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new Error(`无法找到 package.json,尝试的路径: ${packageJsonPath}, ${rootPath}, ${cwdPath}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// 验证包信息
|
|
44
|
+
if (!pkg.name || !pkg.version) {
|
|
45
|
+
throw new Error(`package.json 缺少必要字段: name=${pkg.name}, version=${pkg.version}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw new Error(`无法读取 package.json: ${error.message}`);
|
|
50
|
+
}
|
|
51
|
+
export const updateRouter = new Hono();
|
|
52
|
+
/**
|
|
53
|
+
* 获取当前版本(只需要认证,不需要管理员权限)
|
|
54
|
+
*/
|
|
55
|
+
updateRouter.get('/version', authMiddleware, async (c) => {
|
|
56
|
+
try {
|
|
57
|
+
return c.json({
|
|
58
|
+
success: true,
|
|
59
|
+
version: pkg.version,
|
|
60
|
+
name: pkg.name,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return c.json({
|
|
65
|
+
success: false,
|
|
66
|
+
error: error.message || '获取版本失败',
|
|
67
|
+
}, 500);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// 其他更新路由需要管理员权限
|
|
71
|
+
updateRouter.use('/check', authMiddleware);
|
|
72
|
+
updateRouter.use('/check', requireAdmin());
|
|
73
|
+
updateRouter.use('/execute', authMiddleware);
|
|
74
|
+
updateRouter.use('/execute', requireAdmin());
|
|
75
|
+
/**
|
|
76
|
+
* 检查更新
|
|
77
|
+
*/
|
|
78
|
+
updateRouter.get('/check', async (c) => {
|
|
79
|
+
try {
|
|
80
|
+
const notifier = updateNotifier({
|
|
81
|
+
pkg,
|
|
82
|
+
updateCheckInterval: 0, // 强制检查
|
|
83
|
+
});
|
|
84
|
+
// update-notifier v7+ 需要等待检查完成
|
|
85
|
+
// 检查更新是异步的,需要等待完成
|
|
86
|
+
// 尝试多种方法等待检查完成
|
|
87
|
+
if (typeof notifier.check === 'function') {
|
|
88
|
+
await notifier.check();
|
|
89
|
+
}
|
|
90
|
+
else if (typeof notifier.fetchInfo === 'function') {
|
|
91
|
+
await notifier.fetchInfo();
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// 轮询检查 update 属性,最多等待 5 秒
|
|
95
|
+
const maxWait = 5000;
|
|
96
|
+
const interval = 100;
|
|
97
|
+
let waited = 0;
|
|
98
|
+
while (waited < maxWait && !notifier.update) {
|
|
99
|
+
await new Promise(resolve => setTimeout(resolve, interval));
|
|
100
|
+
waited += interval;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (notifier.update) {
|
|
104
|
+
const { current, latest, type } = notifier.update;
|
|
105
|
+
return c.json({
|
|
106
|
+
success: true,
|
|
107
|
+
hasUpdate: true,
|
|
108
|
+
currentVersion: current,
|
|
109
|
+
latestVersion: latest,
|
|
110
|
+
updateType: type,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return c.json({
|
|
115
|
+
success: true,
|
|
116
|
+
hasUpdate: false,
|
|
117
|
+
currentVersion: pkg.version,
|
|
118
|
+
latestVersion: pkg.version,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return c.json({
|
|
124
|
+
success: false,
|
|
125
|
+
error: error.message || '检查更新失败',
|
|
126
|
+
}, 500);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
/**
|
|
130
|
+
* 执行更新并重启
|
|
131
|
+
*/
|
|
132
|
+
updateRouter.post('/execute', async (c) => {
|
|
133
|
+
try {
|
|
134
|
+
// 检查是否有更新
|
|
135
|
+
const notifier = updateNotifier({
|
|
136
|
+
pkg,
|
|
137
|
+
updateCheckInterval: 0,
|
|
138
|
+
});
|
|
139
|
+
// update-notifier v7+ 需要等待检查完成
|
|
140
|
+
// 检查更新是异步的,需要等待完成
|
|
141
|
+
// 尝试多种方法等待检查完成
|
|
142
|
+
if (typeof notifier.check === 'function') {
|
|
143
|
+
await notifier.check();
|
|
144
|
+
}
|
|
145
|
+
else if (typeof notifier.fetchInfo === 'function') {
|
|
146
|
+
await notifier.fetchInfo();
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// 轮询检查 update 属性,最多等待 5 秒
|
|
150
|
+
const maxWait = 5000;
|
|
151
|
+
const interval = 100;
|
|
152
|
+
let waited = 0;
|
|
153
|
+
while (waited < maxWait && !notifier.update) {
|
|
154
|
+
await new Promise(resolve => setTimeout(resolve, interval));
|
|
155
|
+
waited += interval;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (!notifier.update) {
|
|
159
|
+
return c.json({
|
|
160
|
+
success: false,
|
|
161
|
+
error: '没有可用的更新',
|
|
162
|
+
}, 400);
|
|
163
|
+
}
|
|
164
|
+
const { latest } = notifier.update;
|
|
165
|
+
// 执行更新
|
|
166
|
+
// 注意:这里需要根据安装方式选择更新命令
|
|
167
|
+
// 由于是在运行时更新,我们需要使用 npm/pnpm 来更新
|
|
168
|
+
const isGlobal = await isGloballyInstalled();
|
|
169
|
+
if (isGlobal) {
|
|
170
|
+
// 全局安装:使用 npm install -g
|
|
171
|
+
execSync(`npm install -g ${pkg.name}@latest`, {
|
|
172
|
+
stdio: 'pipe', // 改为 pipe,避免在 API 响应中输出
|
|
173
|
+
encoding: 'utf-8',
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// 本地安装:尝试使用 pnpm 或 npm
|
|
178
|
+
const projectRoot = path.dirname(packageJsonPath);
|
|
179
|
+
let updateSuccess = false;
|
|
180
|
+
// 先尝试使用 pnpm(如果项目使用 pnpm)
|
|
181
|
+
try {
|
|
182
|
+
execSync(`pnpm update ${pkg.name}@latest`, {
|
|
183
|
+
stdio: 'pipe',
|
|
184
|
+
encoding: 'utf-8',
|
|
185
|
+
cwd: projectRoot,
|
|
186
|
+
});
|
|
187
|
+
updateSuccess = true;
|
|
188
|
+
}
|
|
189
|
+
catch (pnpmError) {
|
|
190
|
+
// pnpm 失败,尝试 npm
|
|
191
|
+
try {
|
|
192
|
+
execSync(`npm install ${pkg.name}@latest`, {
|
|
193
|
+
stdio: 'pipe',
|
|
194
|
+
encoding: 'utf-8',
|
|
195
|
+
cwd: projectRoot,
|
|
196
|
+
});
|
|
197
|
+
updateSuccess = true;
|
|
198
|
+
}
|
|
199
|
+
catch (npmError) {
|
|
200
|
+
// 如果都失败,抛出错误
|
|
201
|
+
throw new Error(`更新失败: pnpm 和 npm 都失败了`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// 更新完成后,重启守护进程(如果正在运行)
|
|
206
|
+
try {
|
|
207
|
+
await restartDaemon();
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
// 如果重启失败,返回警告但不失败
|
|
211
|
+
console.warn('重启守护进程失败:', error.message);
|
|
212
|
+
return c.json({
|
|
213
|
+
success: true,
|
|
214
|
+
message: '更新成功,但重启失败,请手动重启服务',
|
|
215
|
+
latestVersion: latest,
|
|
216
|
+
restartFailed: true,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return c.json({
|
|
220
|
+
success: true,
|
|
221
|
+
message: '更新成功并已重启服务',
|
|
222
|
+
latestVersion: latest,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
return c.json({
|
|
227
|
+
success: false,
|
|
228
|
+
error: error.message || '更新失败',
|
|
229
|
+
}, 500);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* 检查包是否全局安装
|
|
234
|
+
*/
|
|
235
|
+
async function isGloballyInstalled() {
|
|
236
|
+
try {
|
|
237
|
+
const currentPath = process.argv[1] || __filename;
|
|
238
|
+
const globalPaths = [
|
|
239
|
+
'/usr/local/bin',
|
|
240
|
+
'/usr/bin',
|
|
241
|
+
process.env.HOME + '/.npm-global/bin',
|
|
242
|
+
process.env.APPDATA + '/npm',
|
|
243
|
+
process.env.PROGRAMFILES + '/nodejs',
|
|
244
|
+
];
|
|
245
|
+
for (const globalPath of globalPaths) {
|
|
246
|
+
if (globalPath && currentPath.includes(globalPath)) {
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const npmGlobalPrefix = execSync('npm config get prefix', {
|
|
252
|
+
encoding: 'utf-8',
|
|
253
|
+
stdio: 'pipe',
|
|
254
|
+
}).trim();
|
|
255
|
+
if (currentPath.includes(npmGlobalPrefix)) {
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// 忽略错误
|
|
261
|
+
}
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
// 默认假设是全局安装
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/api/update.ts"],"names":[],"mappings":"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"}
|
package/dist/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAwCA;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAiBlC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAqFhD"}
|
package/dist/update.js
CHANGED
|
@@ -11,21 +11,31 @@ import { getPidFile } from './daemon.js';
|
|
|
11
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
12
|
const __dirname = path.dirname(__filename);
|
|
13
13
|
// 读取 package.json
|
|
14
|
+
// 注意:__dirname 在编译后是 dist 目录,所以需要向上两级到达 packages/server
|
|
14
15
|
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
15
16
|
let pkg;
|
|
16
17
|
try {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
catch (error) {
|
|
20
|
-
// 如果读取失败,尝试从当前目录读取
|
|
21
|
-
const altPath = path.join(process.cwd(), 'package.json');
|
|
22
|
-
if (fs.existsSync(altPath)) {
|
|
23
|
-
pkg = JSON.parse(fs.readFileSync(altPath, 'utf-8'));
|
|
18
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
19
|
+
pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
24
20
|
}
|
|
25
21
|
else {
|
|
26
|
-
|
|
22
|
+
// 如果读取失败,尝试从当前目录读取
|
|
23
|
+
const altPath = path.join(process.cwd(), 'package.json');
|
|
24
|
+
if (fs.existsSync(altPath)) {
|
|
25
|
+
pkg = JSON.parse(fs.readFileSync(altPath, 'utf-8'));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error(`无法读取 package.json,尝试的路径: ${packageJsonPath}, ${altPath}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// 验证包信息
|
|
32
|
+
if (!pkg.name || !pkg.version) {
|
|
33
|
+
throw new Error(`package.json 缺少必要字段: name=${pkg.name}, version=${pkg.version}`);
|
|
27
34
|
}
|
|
28
35
|
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`读取 package.json 失败: ${error.message}`);
|
|
38
|
+
}
|
|
29
39
|
/**
|
|
30
40
|
* 检查更新并提示用户
|
|
31
41
|
*/
|
|
@@ -57,6 +67,25 @@ export async function selfUpdate() {
|
|
|
57
67
|
pkg,
|
|
58
68
|
updateCheckInterval: 0, // 强制检查
|
|
59
69
|
});
|
|
70
|
+
// update-notifier v7+ 需要等待检查完成
|
|
71
|
+
// 检查更新是异步的,需要等待完成
|
|
72
|
+
// 尝试多种方法等待检查完成
|
|
73
|
+
if (typeof notifier.check === 'function') {
|
|
74
|
+
await notifier.check();
|
|
75
|
+
}
|
|
76
|
+
else if (typeof notifier.fetchInfo === 'function') {
|
|
77
|
+
await notifier.fetchInfo();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// 轮询检查 update 属性,最多等待 5 秒
|
|
81
|
+
const maxWait = 5000;
|
|
82
|
+
const interval = 100;
|
|
83
|
+
let waited = 0;
|
|
84
|
+
while (waited < maxWait && !notifier.update) {
|
|
85
|
+
await new Promise(resolve => setTimeout(resolve, interval));
|
|
86
|
+
waited += interval;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
60
89
|
if (!notifier.update) {
|
|
61
90
|
console.log(`✅ 已是最新版本: ${pkg.version}`);
|
|
62
91
|
return;
|
package/dist/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,iBAAiB,MAAM,iBAAiB,CAAC;AAChD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,kBAAkB;AAClB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACnE,IAAI,GAAsC,CAAC;AAE3C,IAAI,CAAC;IACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{q as e,c0 as a,bU as o}from"./vendor-DpXl860f.js";import{_ as t}from"./_plugin-vue_export-helper-DlAUqK2U.js";const s={class:"blank-view"},n=e({__name:"Blank",setup(_){return(c,r)=>(o(),a("div",s))}}),m=t(n,[["__scopeId","data-v-1be224a2"]]);export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as N}from"./index-CmiEbWrJ.js";import{u as S,a as j,C as H,I as P}from"./InitScriptEditor-BFTWTD26.js";import{u as T,B as V,o as E,p as I,s as h,g as D,k as L,l as k}from"./naive-ui-BwyHI4J3.js";import{q as W,r as d,s as q,o as G,c0 as v,c1 as e,bW as s,bS as x,c5 as b,bV as o,bs as a,c2 as O,c7 as _,bU as r,l as A}from"./vendor-DpXl860f.js";import{_ as F}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./monaco-editor-BXWd1EVR.js";const J={class:"configs-page"},K={style:{position:"absolute",width:"0",height:"0"}},Q={class:"configs-container"},R={class:"config-content"},X={class:"user-selector-section"},Y={class:"selector-header"},Z={key:0,class:"loading-state"},$={key:1,class:"config-stats"},ee={class:"stat-card"},te={class:"stat-content"},se={class:"stat-value"},oe={class:"stat-card"},ae={class:"stat-content"},ne={class:"stat-value"},le={key:0,class:"modal-content"},ie={class:"tab-content"},re={class:"tab-content"},de={class:"tab-content"},ce=W({__name:"Configs",setup(ve){const u=T(),p=S(),i=d(null),f=d(!1),y=d([]),g=d(!1),w=d("components"),l=q(()=>p.currentConfig),C=d([]);async function M(){try{const n=await N.get("/users");y.value=n.data.data.filter(t=>t.role!=="admin"),C.value=y.value.map(t=>({label:t.email,value:t.id}))}catch{u.error("加载用户列表失败")}}async function B(){if(i.value){f.value=!0;try{await p.fetchUserConfig(i.value)}catch(n){u.error(n.message)}finally{f.value=!1}}}function U(){l.value&&(w.value="components",g.value=!0)}async function m(n){if(i.value)try{await p.updateUserConfig(i.value,n),u.success("更新成功")}catch(t){u.error(t.message)}}function z(n){i.value=n,n&&B()}return G(()=>{M()}),(n,t)=>(r(),v("div",J,[(r(),v("svg",K,[...t[3]||(t[3]=[e("defs",null,[e("linearGradient",{id:"loading-gradient",x1:"0%",y1:"0%",x2:"100%",y2:"100%"},[e("stop",{offset:"0%","stop-color":"#dc2626"}),e("stop",{offset:"50%","stop-color":"#ea580c"}),e("stop",{offset:"100%","stop-color":"#f59e0b"})])],-1)])])),t[15]||(t[15]=e("div",{class:"page-header"},[e("div",null,[e("h1",{class:"page-title"},"配置管理"),e("p",{class:"page-description"},"查看和编辑用户的 MCP 配置")])],-1)),e("div",Q,[e("main",R,[e("div",X,[e("div",Y,[t[6]||(t[6]=e("div",{class:"selector-label"},[e("svg",{class:"label-icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})]),e("span",null,"选择用户")],-1)),l.value?(r(),x(a(V),{key:0,type:"primary",size:"large",class:"edit-btn",onClick:U},{icon:o(()=>[...t[4]||(t[4]=[e("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),default:o(()=>[t[5]||(t[5]=A(" 编辑配置 ",-1))]),_:1})):b("",!0)]),s(a(E),{value:i.value,"onUpdate:value":[t[0]||(t[0]=c=>i.value=c),z],options:C.value,placeholder:"请选择要配置的用户",size:"large",filterable:"",clearable:"",class:"user-select"},{empty:o(()=>[s(a(h),{description:"暂无用户"})]),_:1},8,["value","options"])]),s(a(I),{class:"content-divider"}),f.value?(r(),v("div",Z,[...t[7]||(t[7]=[e("div",{class:"loading-spinner"},[e("svg",{class:"spinner",viewBox:"0 0 50 50"},[e("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none","stroke-width":"4"})])],-1),e("p",{class:"loading-text"},"加载配置中...",-1)])])):l.value?(r(),v("div",$,[e("div",ee,[t[9]||(t[9]=O('<div class="stat-icon stat-icon--primary" data-v-e297e9f7><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-e297e9f7><rect x="3" y="3" width="7" height="7" rx="1" stroke="currentColor" stroke-width="2" data-v-e297e9f7></rect><rect x="14" y="3" width="7" height="7" rx="1" stroke="currentColor" stroke-width="2" data-v-e297e9f7></rect><rect x="3" y="14" width="7" height="7" rx="1" stroke="currentColor" stroke-width="2" data-v-e297e9f7></rect><rect x="14" y="14" width="7" height="7" rx="1" stroke="currentColor" stroke-width="2" data-v-e297e9f7></rect></svg></div>',1)),e("div",te,[e("div",se,_(l.value.components.length),1),t[8]||(t[8]=e("div",{class:"stat-label"},"MCP 组件",-1))])]),e("div",oe,[t[11]||(t[11]=e("div",{class:"stat-icon stat-icon--success"},[e("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),e("div",ae,[e("div",ne,_(l.value.customTools.length),1),t[10]||(t[10]=e("div",{class:"stat-label"},"自定义工具",-1))])])])):i.value?(r(),x(a(h),{key:3,description:"该用户暂无配置或加载失败",class:"empty-placeholder"},{icon:o(()=>[...t[13]||(t[13]=[e("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),_:1})):(r(),x(a(h),{key:2,description:"请选择一个用户查看配置",class:"empty-placeholder"},{icon:o(()=>[...t[12]||(t[12]=[e("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),_:1}))])]),s(a(D),{show:g.value,"onUpdate:show":t[2]||(t[2]=c=>g.value=c),preset:"card",bordered:!1,class:"config-edit-modal",style:{width:"90vw",maxWidth:"1400px",height:"90vh"}},{header:o(()=>[...t[14]||(t[14]=[e("div",{class:"modal-header"},[e("div",{class:"modal-icon"},[e("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})])]),e("div",null,[e("h3",{class:"modal-title"},"编辑用户配置"),e("p",{class:"modal-subtitle"},"管理 MCP 组件、工具和脚本")])],-1)])]),default:o(()=>[l.value?(r(),v("div",le,[s(a(L),{value:w.value,"onUpdate:value":t[1]||(t[1]=c=>w.value=c),type:"line",animated:"",size:"large",class:"config-tabs"},{default:o(()=>[s(a(k),{name:"components",tab:"MCP 组件"},{default:o(()=>[e("div",ie,[s(j,{config:l.value,onUpdate:m},null,8,["config"])])]),_:1}),s(a(k),{name:"tools",tab:"自定义工具"},{default:o(()=>[e("div",re,[s(H,{config:l.value,onUpdate:m},null,8,["config"])])]),_:1}),s(a(k),{name:"init",tab:"初始化脚本"},{default:o(()=>[e("div",de,[s(P,{config:l.value,onUpdate:m},null,8,["config"])])]),_:1})]),_:1},8,["value"])])):b("",!0)]),_:1},8,["show"])]))}}),he=F(ce,[["__scopeId","data-v-e297e9f7"]]);export{he as default};
|