@myassis/gateway 1.0.19 → 1.0.20

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 (66) hide show
  1. package/dist/api/index.js +27 -19
  2. package/dist/cli.js +10 -5
  3. package/dist/config/index.js +34 -11
  4. package/dist/index.js +1 -2
  5. package/dist/main.js +76 -71
  6. package/dist/middleware/auth.js +9 -5
  7. package/dist/middleware/errorHandler.js +9 -4
  8. package/dist/routes/agent.js +39 -37
  9. package/dist/routes/auth.js +32 -30
  10. package/dist/routes/chat.js +7 -5
  11. package/dist/routes/config.js +5 -3
  12. package/dist/routes/models.js +28 -23
  13. package/dist/routes/service.js +29 -24
  14. package/dist/routes/settings.js +26 -21
  15. package/dist/routes/skillHub.js +22 -17
  16. package/dist/routes/skills.js +25 -20
  17. package/dist/routes/tasks.js +24 -19
  18. package/dist/routes/upload.js +24 -17
  19. package/dist/routes/version.js +20 -19
  20. package/dist/services/HMSPushService.js +4 -1
  21. package/dist/services/LocalTaskService.js +12 -9
  22. package/dist/services/NotificationService.js +14 -11
  23. package/dist/services/ServiceManager.js +77 -65
  24. package/dist/services/TaskSchedulerService.js +33 -30
  25. package/dist/services/TaskService.js +27 -24
  26. package/dist/services/WebSocketService.js +14 -11
  27. package/dist/services/agent/Agent.js +13 -9
  28. package/dist/services/agent/AgentManager.js +32 -24
  29. package/dist/services/agent/AgentStore.js +7 -3
  30. package/dist/services/dataService.js +72 -69
  31. package/dist/services/index.js +25 -9
  32. package/dist/services/llm/LLMClient.js +17 -9
  33. package/dist/services/memory/MemoryManager.js +22 -18
  34. package/dist/services/model/ModelCapabilities.js +11 -7
  35. package/dist/services/model/index.js +17 -1
  36. package/dist/services/models.js +5 -1
  37. package/dist/services/session/MigrationManager.js +18 -11
  38. package/dist/services/session/Session.js +33 -29
  39. package/dist/services/session/SessionManager.js +26 -21
  40. package/dist/services/session/SessionStore.js +32 -25
  41. package/dist/services/session/index.js +8 -2
  42. package/dist/services/skills.js +4 -1
  43. package/dist/services/systemPrompt.js +23 -16
  44. package/dist/services/task/PushTokenStore.js +9 -5
  45. package/dist/services/task/TaskStore.js +10 -6
  46. package/dist/services/tools/calculator.js +4 -1
  47. package/dist/services/tools/edit.js +16 -10
  48. package/dist/services/tools/exec.js +25 -16
  49. package/dist/services/tools/fetch.js +30 -4
  50. package/dist/services/tools/file.js +41 -35
  51. package/dist/services/tools/index.js +44 -24
  52. package/dist/services/tools/keyboard.js +41 -38
  53. package/dist/services/tools/model.js +12 -9
  54. package/dist/services/tools/mouse.js +12 -9
  55. package/dist/services/tools/screenshot.js +9 -3
  56. package/dist/services/tools/search.js +34 -4
  57. package/dist/services/tools/sessionsSpawn.js +11 -8
  58. package/dist/services/tools/skill.js +19 -16
  59. package/dist/services/tools/task.js +12 -9
  60. package/dist/services/tools/types.js +2 -1
  61. package/dist/services/tools/webFetch.js +34 -4
  62. package/dist/stores/authStore.js +25 -19
  63. package/dist/stores/index.js +9 -3
  64. package/dist/stores/memoryStore.js +5 -2
  65. package/dist/stores/persistStore.js +20 -14
  66. package/package.json +11 -20
@@ -1,17 +1,22 @@
1
- import { Router } from 'express';
2
- import { getLogger } from '@myassis/shared';
3
- import path from 'path';
4
- import { getServiceInfo, installService, uninstallService, startService, stopService, restartService, checkForUpdates, updateService, } from '../services/ServiceManager.js';
5
- import { webSocketService } from '../services/WebSocketService.js';
6
- const router = Router();
7
- const logger = getLogger('service');
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = require("express");
7
+ const shared_1 = require("@myassis/shared");
8
+ const path_1 = __importDefault(require("path"));
9
+ const ServiceManager_js_1 = require("../services/ServiceManager.js");
10
+ const WebSocketService_js_1 = require("../services/WebSocketService.js");
11
+ const router = (0, express_1.Router)();
12
+ const logger = (0, shared_1.getLogger)('service');
8
13
  /**
9
14
  * 获取服务状态
10
15
  * GET /api/v1/service
11
16
  */
12
17
  router.get('/', async (_req, res) => {
13
18
  try {
14
- const info = await getServiceInfo();
19
+ const info = await (0, ServiceManager_js_1.getServiceInfo)();
15
20
  res.json({ success: true, data: info });
16
21
  }
17
22
  catch (err) {
@@ -25,7 +30,7 @@ router.get('/', async (_req, res) => {
25
30
  */
26
31
  router.post('/install', async (_req, res) => {
27
32
  try {
28
- const result = await installService();
33
+ const result = await (0, ServiceManager_js_1.installService)();
29
34
  if (result.success) {
30
35
  res.json(result);
31
36
  }
@@ -44,7 +49,7 @@ router.post('/install', async (_req, res) => {
44
49
  */
45
50
  router.delete('/', async (_req, res) => {
46
51
  try {
47
- const result = await uninstallService();
52
+ const result = await (0, ServiceManager_js_1.uninstallService)();
48
53
  if (result.success) {
49
54
  res.json(result);
50
55
  }
@@ -63,7 +68,7 @@ router.delete('/', async (_req, res) => {
63
68
  */
64
69
  router.post('/start', async (_req, res) => {
65
70
  try {
66
- const result = await startService();
71
+ const result = await (0, ServiceManager_js_1.startService)();
67
72
  if (result.success) {
68
73
  res.json(result);
69
74
  }
@@ -82,7 +87,7 @@ router.post('/start', async (_req, res) => {
82
87
  */
83
88
  router.post('/stop', async (_req, res) => {
84
89
  try {
85
- const result = await stopService();
90
+ const result = await (0, ServiceManager_js_1.stopService)();
86
91
  if (result.success) {
87
92
  res.json(result);
88
93
  }
@@ -101,7 +106,7 @@ router.post('/stop', async (_req, res) => {
101
106
  */
102
107
  router.post('/restart', async (_req, res) => {
103
108
  try {
104
- const result = await restartService();
109
+ const result = await (0, ServiceManager_js_1.restartService)();
105
110
  if (result.success) {
106
111
  res.json(result);
107
112
  }
@@ -120,7 +125,7 @@ router.post('/restart', async (_req, res) => {
120
125
  */
121
126
  router.get('/check-update', async (_req, res) => {
122
127
  try {
123
- const result = await checkForUpdates();
128
+ const result = await (0, ServiceManager_js_1.checkForUpdates)();
124
129
  res.json({ success: true, data: result });
125
130
  }
126
131
  catch (err) {
@@ -135,7 +140,7 @@ router.get('/check-update', async (_req, res) => {
135
140
  router.post('/update', async (_req, res) => {
136
141
  try {
137
142
  // 先检查版本
138
- const check = await checkForUpdates();
143
+ const check = await (0, ServiceManager_js_1.checkForUpdates)();
139
144
  if (check.error) {
140
145
  res.status(500).json({ success: false, message: `检查更新失败: ${check.error}` });
141
146
  return;
@@ -145,14 +150,14 @@ router.post('/update', async (_req, res) => {
145
150
  return;
146
151
  }
147
152
  // 尝试自动更新(有 nssm 时会成功)
148
- const result = await updateService();
153
+ const result = await (0, ServiceManager_js_1.updateService)();
149
154
  if (result.success) {
150
155
  res.json(result);
151
156
  return;
152
157
  }
153
158
  // 自动更新失败,推送手动更新提示给 Desktop
154
159
  const userId = 'default';
155
- const pushed = webSocketService.sendUpdateRequired(userId, result.message);
160
+ const pushed = WebSocketService_js_1.webSocketService.sendUpdateRequired(userId, result.message);
156
161
  if (pushed) {
157
162
  res.json({ success: true, message: '已推送手动更新提示到桌面端', manual: true });
158
163
  }
@@ -172,7 +177,7 @@ router.post('/update', async (_req, res) => {
172
177
  */
173
178
  router.get('/latest-exe-url', async (_req, res) => {
174
179
  try {
175
- const check = await checkForUpdates();
180
+ const check = await (0, ServiceManager_js_1.checkForUpdates)();
176
181
  if (check.error) {
177
182
  res.status(500).json({ success: false, message: check.error });
178
183
  return;
@@ -210,7 +215,7 @@ router.post('/update-exe', async (_req, res) => {
210
215
  return;
211
216
  }
212
217
  // 获取最新版本信息
213
- const check = await checkForUpdates();
218
+ const check = await (0, ServiceManager_js_1.checkForUpdates)();
214
219
  if (check.error) {
215
220
  res.status(500).json({ success: false, message: `检查更新失败: ${check.error}` });
216
221
  return;
@@ -221,10 +226,10 @@ router.post('/update-exe', async (_req, res) => {
221
226
  }
222
227
  // 获取当前 exe 路径
223
228
  const currentExePath = process.execPath;
224
- const exeDir = path.dirname(currentExePath);
225
- const exeName = path.basename(currentExePath);
226
- const backupPath = path.join(exeDir, `${exeName}.backup`);
227
- const downloadPath = path.join(exeDir, `${exeName}.new`);
229
+ const exeDir = path_1.default.dirname(currentExePath);
230
+ const exeName = path_1.default.basename(currentExePath);
231
+ const backupPath = path_1.default.join(exeDir, `${exeName}.backup`);
232
+ const downloadPath = path_1.default.join(exeDir, `${exeName}.new`);
228
233
  // TODO: 从 GitHub Releases 或自有 CDN 下载最新 exe
229
234
  // 这里需要实现下载逻辑
230
235
  res.status(501).json({ success: false, message: 'EXE 更新功能尚未实现' });
@@ -234,4 +239,4 @@ router.post('/update-exe', async (_req, res) => {
234
239
  res.status(500).json({ success: false, message: err?.message });
235
240
  }
236
241
  });
237
- export default router;
242
+ exports.default = router;
@@ -1,19 +1,24 @@
1
- import express from 'express';
2
- import { getLogger } from '@myassis/shared';
3
- import { settingsService } from '../services/index.js';
4
- import { authStore, persistStore } from '../stores/index.js';
5
- import { authApi, runWithToken } from '../api/index.js';
6
- import { requireAuth } from '../middleware/auth.js';
7
- const logger = getLogger('settings');
8
- const router = express.Router();
9
- router.use(requireAuth);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = __importDefault(require("express"));
7
+ const shared_1 = require("@myassis/shared");
8
+ const index_js_1 = require("../services/index.js");
9
+ const index_js_2 = require("../stores/index.js");
10
+ const index_js_3 = require("../api/index.js");
11
+ const auth_js_1 = require("../middleware/auth.js");
12
+ const logger = (0, shared_1.getLogger)('settings');
13
+ const router = express_1.default.Router();
14
+ router.use(auth_js_1.requireAuth);
10
15
  /**
11
16
  * 获取用户设置
12
17
  * GET /api/v1/settings
13
18
  */
14
19
  router.get('/', async (req, res) => {
15
20
  try {
16
- const result = await settingsService.get(req.token);
21
+ const result = await index_js_1.settingsService.get(req.token);
17
22
  res.json(result);
18
23
  }
19
24
  catch (error) {
@@ -25,9 +30,9 @@ router.get('/', async (req, res) => {
25
30
  * 更新用户设置
26
31
  * PUT /api/v1/settings
27
32
  */
28
- router.put('/', requireAuth, async (req, res) => {
33
+ router.put('/', auth_js_1.requireAuth, async (req, res) => {
29
34
  try {
30
- const result = await runWithToken(req.token, () => settingsService.update(req.body, req.token));
35
+ const result = await (0, index_js_3.runWithToken)(req.token, () => index_js_1.settingsService.update(req.body, req.token));
31
36
  res.json(result);
32
37
  }
33
38
  catch (error) {
@@ -39,14 +44,14 @@ router.put('/', requireAuth, async (req, res) => {
39
44
  * 修改密码
40
45
  * PUT /api/v1/settings/password
41
46
  */
42
- router.put('/password', requireAuth, async (req, res) => {
47
+ router.put('/password', auth_js_1.requireAuth, async (req, res) => {
43
48
  try {
44
49
  const { oldPassword, newPassword } = req.body;
45
50
  if (!oldPassword || !newPassword) {
46
51
  res.status(400).json({ success: false, error: 'Missing required fields' });
47
52
  return;
48
53
  }
49
- const result = await authApi.changePassword({ oldPassword, newPassword }, req.token);
54
+ const result = await index_js_3.authApi.changePassword({ oldPassword, newPassword }, req.token);
50
55
  res.json(result);
51
56
  }
52
57
  catch (error) {
@@ -60,7 +65,7 @@ router.put('/password', requireAuth, async (req, res) => {
60
65
  */
61
66
  router.get('/local', async (req, res) => {
62
67
  try {
63
- const settings = persistStore.getAllLocalUserSettings();
68
+ const settings = index_js_2.persistStore.getAllLocalUserSettings();
64
69
  res.json({ success: true, data: settings });
65
70
  }
66
71
  catch (error) {
@@ -74,8 +79,8 @@ router.get('/local', async (req, res) => {
74
79
  */
75
80
  router.put('/local', async (req, res) => {
76
81
  try {
77
- persistStore.setLocalUserSettings(req.body);
78
- const settings = persistStore.getAllLocalUserSettings();
82
+ index_js_2.persistStore.setLocalUserSettings(req.body);
83
+ const settings = index_js_2.persistStore.getAllLocalUserSettings();
79
84
  res.json({ success: true, data: settings });
80
85
  }
81
86
  catch (error) {
@@ -87,11 +92,11 @@ router.put('/local', async (req, res) => {
87
92
  * 删除账号
88
93
  * DELETE /api/v1/settings/account
89
94
  */
90
- router.delete('/account', requireAuth, async (req, res) => {
95
+ router.delete('/account', auth_js_1.requireAuth, async (req, res) => {
91
96
  try {
92
- const result = await authApi.deleteAccount({ password: req.params.password }, req.token);
97
+ const result = await index_js_3.authApi.deleteAccount({ password: req.params.password }, req.token);
93
98
  if (result.success) {
94
- authStore.clear();
99
+ index_js_2.authStore.clear();
95
100
  }
96
101
  res.json(result);
97
102
  }
@@ -100,4 +105,4 @@ router.delete('/account', requireAuth, async (req, res) => {
100
105
  res.status(500).json({ success: false, error: '删除账号失败' });
101
106
  }
102
107
  });
103
- export default router;
108
+ exports.default = router;
@@ -1,16 +1,21 @@
1
+ "use strict";
1
2
  /**
2
3
  * Gateway SkillHub 路由
3
4
  * 技能库(可安装的技能)
4
5
  */
5
- import express from 'express';
6
- import { skillHubService } from '../services/index.js';
7
- import { requireAuth } from '../middleware/auth.js';
8
- import { runWithToken } from '../api/index.js';
9
- import { getLogger } from '@myassis/shared';
10
- const logger = getLogger('skillHub');
11
- const router = express.Router();
12
- router.use(requireAuth, (req, _res, next) => {
13
- void runWithToken(req.token, async () => { next(); });
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const express_1 = __importDefault(require("express"));
11
+ const index_js_1 = require("../services/index.js");
12
+ const auth_js_1 = require("../middleware/auth.js");
13
+ const index_js_2 = require("../api/index.js");
14
+ const shared_1 = require("@myassis/shared");
15
+ const logger = (0, shared_1.getLogger)('skillHub');
16
+ const router = express_1.default.Router();
17
+ router.use(auth_js_1.requireAuth, (req, _res, next) => {
18
+ void (0, index_js_2.runWithToken)(req.token, async () => { next(); });
14
19
  });
15
20
  /**
16
21
  * 获取技能库列表
@@ -28,7 +33,7 @@ router.get('/', async (req, res) => {
28
33
  params.keyword = search;
29
34
  if (category)
30
35
  params.category = category;
31
- const result = await skillHubService.list(params);
36
+ const result = await index_js_1.skillHubService.list(params);
32
37
  res.json(result);
33
38
  }
34
39
  catch (error) {
@@ -46,7 +51,7 @@ router.get('/:id', async (req, res) => {
46
51
  if (!hubId) {
47
52
  return res.status(400).json({ success: false, error: '无效的技能库ID' });
48
53
  }
49
- const result = await skillHubService.get(hubId, req.token);
54
+ const result = await index_js_1.skillHubService.get(hubId, req.token);
50
55
  res.json(result);
51
56
  }
52
57
  catch (error) {
@@ -64,7 +69,7 @@ router.get('/:id/used', async (req, res) => {
64
69
  if (!hubId) {
65
70
  return res.status(400).json({ success: false, error: '无效的技能库ID' });
66
71
  }
67
- const result = await skillHubService.checkUsed(hubId, req.token);
72
+ const result = await index_js_1.skillHubService.checkUsed(hubId, req.token);
68
73
  res.json(result);
69
74
  }
70
75
  catch (error) {
@@ -82,7 +87,7 @@ router.get('/:id/user-rating', async (req, res) => {
82
87
  if (!hubId) {
83
88
  return res.status(400).json({ success: false, error: '无效的技能库ID' });
84
89
  }
85
- const result = await skillHubService.userRating(hubId, req.token);
90
+ const result = await index_js_1.skillHubService.userRating(hubId, req.token);
86
91
  res.json(result);
87
92
  }
88
93
  catch (error) {
@@ -96,7 +101,7 @@ router.get('/:id/user-rating', async (req, res) => {
96
101
  */
97
102
  router.get('/categories/list', async (req, res) => {
98
103
  try {
99
- const result = await skillHubService.categories(req.token);
104
+ const result = await index_js_1.skillHubService.categories(req.token);
100
105
  res.json(result);
101
106
  }
102
107
  catch (error) {
@@ -108,7 +113,7 @@ router.get('/categories/list', async (req, res) => {
108
113
  * 技能库评分
109
114
  * POST /api/v1/skill-hub/:id/rate
110
115
  */
111
- router.post('/:id/rate', requireAuth, async (req, res) => {
116
+ router.post('/:id/rate', auth_js_1.requireAuth, async (req, res) => {
112
117
  try {
113
118
  const hubId = req.params.id;
114
119
  const { rating } = req.body;
@@ -119,7 +124,7 @@ router.post('/:id/rate', requireAuth, async (req, res) => {
119
124
  if (rating === undefined || rating < 1 || rating > 5) {
120
125
  return res.status(400).json({ success: false, error: '评分必须是1-5的数字' });
121
126
  }
122
- const result = await runWithToken(req.token, () => skillHubService.rate(hubId, rating, req.token));
127
+ const result = await (0, index_js_2.runWithToken)(req.token, () => index_js_1.skillHubService.rate(hubId, rating, req.token));
123
128
  res.json(result);
124
129
  }
125
130
  catch (error) {
@@ -127,4 +132,4 @@ router.post('/:id/rate', requireAuth, async (req, res) => {
127
132
  res.status(500).json({ success: false, error: error?.message });
128
133
  }
129
134
  });
130
- export default router;
135
+ exports.default = router;
@@ -1,17 +1,22 @@
1
+ "use strict";
1
2
  /**
2
3
  * Gateway Skills 路由
3
4
  * 用户已安装技能管理
4
5
  */
5
- import express from 'express';
6
- import { skillsService } from '../services/index.js';
7
- import { persistStore } from '../stores/persistStore.js';
8
- import { getLogger } from '@myassis/shared';
9
- import { requireAuth } from '../middleware/auth.js';
10
- import { runWithToken } from '../api/index.js';
11
- const logger = getLogger('skills');
12
- const router = express.Router();
13
- router.use(requireAuth, (req, _res, next) => {
14
- void runWithToken(req.token, async () => { next(); });
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const express_1 = __importDefault(require("express"));
11
+ const index_js_1 = require("../services/index.js");
12
+ const persistStore_js_1 = require("../stores/persistStore.js");
13
+ const shared_1 = require("@myassis/shared");
14
+ const auth_js_1 = require("../middleware/auth.js");
15
+ const index_js_2 = require("../api/index.js");
16
+ const logger = (0, shared_1.getLogger)('skills');
17
+ const router = express_1.default.Router();
18
+ router.use(auth_js_1.requireAuth, (req, _res, next) => {
19
+ void (0, index_js_2.runWithToken)(req.token, async () => { next(); });
15
20
  });
16
21
  /**
17
22
  * 获取用户已安装的技能列表
@@ -19,7 +24,7 @@ router.use(requireAuth, (req, _res, next) => {
19
24
  */
20
25
  router.get('/', async (req, res) => {
21
26
  try {
22
- const result = await skillsService.list(req.token);
27
+ const result = await index_js_1.skillsService.list(req.token);
23
28
  res.json(result);
24
29
  }
25
30
  catch (error) {
@@ -37,7 +42,7 @@ router.post('/parse', async (req, res) => {
37
42
  if (!content) {
38
43
  return res.status(400).json({ success: false, error: '缺少 content 参数' });
39
44
  }
40
- const result = await skillsService.parse(content, req.token);
45
+ const result = await index_js_1.skillsService.parse(content, req.token);
41
46
  res.json(result);
42
47
  }
43
48
  catch (error) {
@@ -52,7 +57,7 @@ router.post('/parse', async (req, res) => {
52
57
  router.get('/:id', async (req, res) => {
53
58
  try {
54
59
  const skillId = req.params.id;
55
- const result = await skillsService.get(skillId, req.token);
60
+ const result = await index_js_1.skillsService.get(skillId, req.token);
56
61
  res.json(result);
57
62
  }
58
63
  catch (error) {
@@ -72,7 +77,7 @@ router.post('/', async (req, res) => {
72
77
  if (skillHubId) {
73
78
  // 从技能库安装
74
79
  const hubId = String(skillHubId);
75
- const result = await skillsService.install(hubId, req.token);
80
+ const result = await index_js_1.skillsService.install(hubId, req.token);
76
81
  res.json(result);
77
82
  }
78
83
  else {
@@ -80,7 +85,7 @@ router.post('/', async (req, res) => {
80
85
  if (!req.body.name) {
81
86
  return res.status(400).json({ success: false, error: '自定义技能必须提供 name' });
82
87
  }
83
- const result = await skillsService.create(req.body, req.token);
88
+ const result = await index_js_1.skillsService.create(req.body, req.token);
84
89
  res.json(result);
85
90
  }
86
91
  }
@@ -96,7 +101,7 @@ router.post('/', async (req, res) => {
96
101
  router.put('/:id', async (req, res) => {
97
102
  try {
98
103
  const skillId = req.params.id;
99
- const result = await skillsService.update(skillId, req.body, req.token);
104
+ const result = await index_js_1.skillsService.update(skillId, req.body, req.token);
100
105
  res.json(result);
101
106
  }
102
107
  catch (error) {
@@ -111,7 +116,7 @@ router.put('/:id', async (req, res) => {
111
116
  router.delete('/:id', async (req, res) => {
112
117
  try {
113
118
  const skillId = req.params.id;
114
- const result = await skillsService.uninstall(skillId, req.token);
119
+ const result = await index_js_1.skillsService.uninstall(skillId, req.token);
115
120
  res.json(result);
116
121
  }
117
122
  catch (error) {
@@ -131,7 +136,7 @@ router.post('/:id/api-key', async (req, res) => {
131
136
  return res.status(400).json({ success: false, error: '缺少 apiKey 参数' });
132
137
  }
133
138
  // 只存储到本地,不发送到服务端
134
- persistStore.setSkillApiKey(skillId, apiKey);
139
+ persistStore_js_1.persistStore.setSkillApiKey(skillId, apiKey);
135
140
  logger.info(`Skill API Key stored locally for skill: ${skillId}`);
136
141
  res.json({ success: true, message: 'API Key 已保存到本地' });
137
142
  }
@@ -151,7 +156,7 @@ router.post('/:id/rating', async (req, res) => {
151
156
  if (!score || score < 1 || score > 5) {
152
157
  return res.status(400).json({ success: false, error: '评分必须在 1-5 之间' });
153
158
  }
154
- const result = await skillsService.rate(skillId, score, req.token);
159
+ const result = await index_js_1.skillsService.rate(skillId, score, req.token);
155
160
  res.json(result);
156
161
  }
157
162
  catch (error) {
@@ -159,4 +164,4 @@ router.post('/:id/rating', async (req, res) => {
159
164
  res.status(500).json({ success: false, error: '评分失败' });
160
165
  }
161
166
  });
162
- export default router;
167
+ exports.default = router;
@@ -1,16 +1,21 @@
1
+ "use strict";
1
2
  /**
2
3
  * Gateway Tasks 路由
3
4
  * 任务管理
4
5
  */
5
- import express from 'express';
6
- import { tasksService } from '../services/index.js';
7
- import { getLogger } from '@myassis/shared';
8
- import { requireAuth } from '../middleware/auth.js';
9
- import { runWithToken } from '../api/index.js';
10
- const logger = getLogger('tasks');
11
- const router = express.Router();
12
- router.use(requireAuth, (req, _res, next) => {
13
- void runWithToken(req.token, async () => { next(); });
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const express_1 = __importDefault(require("express"));
11
+ const index_js_1 = require("../services/index.js");
12
+ const shared_1 = require("@myassis/shared");
13
+ const auth_js_1 = require("../middleware/auth.js");
14
+ const index_js_2 = require("../api/index.js");
15
+ const logger = (0, shared_1.getLogger)('tasks');
16
+ const router = express_1.default.Router();
17
+ router.use(auth_js_1.requireAuth, (req, _res, next) => {
18
+ void (0, index_js_2.runWithToken)(req.token, async () => { next(); });
14
19
  });
15
20
  /**
16
21
  * 获取任务列表
@@ -20,7 +25,7 @@ router.get('/', async (req, res) => {
20
25
  try {
21
26
  const { status, page, pageSize } = req.query;
22
27
  const userId = req.userId;
23
- const result = await tasksService.list(userId, { status, page, pageSize });
28
+ const result = await index_js_1.tasksService.list(userId, { status, page, pageSize });
24
29
  res.json(result);
25
30
  }
26
31
  catch (error) {
@@ -35,7 +40,7 @@ router.get('/', async (req, res) => {
35
40
  router.get('/:id', async (req, res) => {
36
41
  try {
37
42
  const taskId = req.params.id;
38
- const result = await tasksService.get(taskId);
43
+ const result = await index_js_1.tasksService.get(taskId);
39
44
  res.json(result);
40
45
  }
41
46
  catch (error) {
@@ -50,7 +55,7 @@ router.get('/:id', async (req, res) => {
50
55
  router.post('/', async (req, res) => {
51
56
  try {
52
57
  const userId = req.userId;
53
- const result = await tasksService.create(req.body, String(userId));
58
+ const result = await index_js_1.tasksService.create(req.body, String(userId));
54
59
  res.json(result);
55
60
  }
56
61
  catch (error) {
@@ -65,7 +70,7 @@ router.post('/', async (req, res) => {
65
70
  router.put('/:id', async (req, res) => {
66
71
  try {
67
72
  const taskId = req.params.id;
68
- const result = await tasksService.update(taskId, req.body);
73
+ const result = await index_js_1.tasksService.update(taskId, req.body);
69
74
  res.json(result);
70
75
  }
71
76
  catch (error) {
@@ -80,7 +85,7 @@ router.put('/:id', async (req, res) => {
80
85
  router.delete('/:id', async (req, res) => {
81
86
  try {
82
87
  const taskId = req.params.id;
83
- const result = await tasksService.delete(taskId);
88
+ const result = await index_js_1.tasksService.delete(taskId);
84
89
  res.json(result);
85
90
  }
86
91
  catch (error) {
@@ -95,7 +100,7 @@ router.delete('/:id', async (req, res) => {
95
100
  router.post('/:id/start', async (req, res) => {
96
101
  try {
97
102
  const taskId = req.params.id;
98
- const result = await tasksService.updateStatus(taskId, 'running');
103
+ const result = await index_js_1.tasksService.updateStatus(taskId, 'running');
99
104
  res.json(result);
100
105
  }
101
106
  catch (error) {
@@ -110,7 +115,7 @@ router.post('/:id/start', async (req, res) => {
110
115
  router.post('/:id/complete', async (req, res) => {
111
116
  try {
112
117
  const taskId = req.params.id;
113
- const result = await tasksService.updateStatus(taskId, 'completed');
118
+ const result = await index_js_1.tasksService.updateStatus(taskId, 'completed');
114
119
  res.json(result);
115
120
  }
116
121
  catch (error) {
@@ -125,7 +130,7 @@ router.post('/:id/complete', async (req, res) => {
125
130
  router.post('/:id/cancel', async (req, res) => {
126
131
  try {
127
132
  const taskId = req.params.id;
128
- const result = await tasksService.cancel(taskId);
133
+ const result = await index_js_1.tasksService.cancel(taskId);
129
134
  res.json(result);
130
135
  }
131
136
  catch (error) {
@@ -141,7 +146,7 @@ router.post('/:id/status', async (req, res) => {
141
146
  try {
142
147
  const taskId = req.params.id;
143
148
  const { status } = req.body;
144
- const result = await tasksService.updateStatus(taskId, status);
149
+ const result = await index_js_1.tasksService.updateStatus(taskId, status);
145
150
  res.json(result);
146
151
  }
147
152
  catch (error) {
@@ -149,4 +154,4 @@ router.post('/:id/status', async (req, res) => {
149
154
  res.status(500).json({ success: false, error: '更新任务状态失败' });
150
155
  }
151
156
  });
152
- export default router;
157
+ exports.default = router;
@@ -1,17 +1,23 @@
1
- import { Router } from 'express';
2
- import multer from 'multer';
3
- import { appConfig } from '../config/index.js';
4
- import { requireAuth } from '../middleware/auth.js';
5
- import { runWithToken } from '../api/index.js';
6
- import { getLogger } from '@myassis/shared';
7
- const logger = getLogger('UploadRoutes');
8
- const router = Router();
9
- router.use(requireAuth, (req, _res, next) => {
10
- void runWithToken(req.token, async () => { next(); });
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deleteFile = void 0;
7
+ const express_1 = require("express");
8
+ const multer_1 = __importDefault(require("multer"));
9
+ const index_js_1 = require("../config/index.js");
10
+ const auth_js_1 = require("../middleware/auth.js");
11
+ const index_js_2 = require("../api/index.js");
12
+ const shared_1 = require("@myassis/shared");
13
+ const logger = (0, shared_1.getLogger)('UploadRoutes');
14
+ const router = (0, express_1.Router)();
15
+ router.use(auth_js_1.requireAuth, (req, _res, next) => {
16
+ void (0, index_js_2.runWithToken)(req.token, async () => { next(); });
11
17
  });
12
18
  // 配置 multer 用于解析 multipart/form-data
13
- const upload = multer({
14
- storage: multer.memoryStorage(),
19
+ const upload = (0, multer_1.default)({
20
+ storage: multer_1.default.memoryStorage(),
15
21
  limits: {
16
22
  fileSize: 50 * 1024 * 1024, // 50MB
17
23
  },
@@ -56,7 +62,7 @@ router.post('/', upload.single('file'), async (req, res) => {
56
62
  // 创建 FormData 并转发到 Server
57
63
  const formData = new FormData();
58
64
  formData.append('file', new Blob([req.file.buffer], { type: req.file.mimetype }), req.file.originalname);
59
- const response = await fetch(`${appConfig.serverBaseUrl}/api/v1/upload`, {
65
+ const response = await fetch(`${index_js_1.appConfig.serverBaseUrl}/api/v1/upload`, {
60
66
  method: 'POST',
61
67
  headers: {
62
68
  'Authorization': `Bearer ${req.token}`,
@@ -93,7 +99,7 @@ router.delete('/', async (req, res) => {
93
99
  return;
94
100
  }
95
101
  // 转发到 Server
96
- const response = await fetch(`${appConfig.serverBaseUrl}/api/v1/upload?keys=${encodeURIComponent(keysParam)}`, {
102
+ const response = await fetch(`${index_js_1.appConfig.serverBaseUrl}/api/v1/upload?keys=${encodeURIComponent(keysParam)}`, {
97
103
  method: 'DELETE',
98
104
  headers: {
99
105
  'Authorization': `Bearer ${req.token}`,
@@ -116,8 +122,8 @@ router.delete('/', async (req, res) => {
116
122
  res.status(500).json({ success: false, error: 'Delete failed' });
117
123
  }
118
124
  });
119
- export async function deleteFile(url, token) {
120
- const response = await fetch(`${appConfig.serverBaseUrl}/api/v1/upload`, {
125
+ async function deleteFile(url, token) {
126
+ const response = await fetch(`${index_js_1.appConfig.serverBaseUrl}/api/v1/upload`, {
121
127
  method: 'DELETE',
122
128
  headers: {
123
129
  'Content-Type': 'application/json',
@@ -129,4 +135,5 @@ export async function deleteFile(url, token) {
129
135
  throw new Error(`Delete failed: ${response.status}`);
130
136
  }
131
137
  }
132
- export default router;
138
+ exports.deleteFile = deleteFile;
139
+ exports.default = router;