@samanhappy/mcphub 0.10.6 → 0.11.0
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/README.fr.md +36 -152
- package/README.md +34 -255
- package/README.zh.md +33 -212
- package/dist/config/DaoConfigService.js +3 -3
- package/dist/config/DaoConfigService.js.map +1 -1
- package/dist/controllers/authController.js +2 -2
- package/dist/controllers/authController.js.map +1 -1
- package/dist/controllers/groupController.js +24 -24
- package/dist/controllers/groupController.js.map +1 -1
- package/dist/controllers/openApiController.js +1 -1
- package/dist/controllers/openApiController.js.map +1 -1
- package/dist/controllers/serverController.js +95 -61
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/controllers/userController.js +22 -21
- package/dist/controllers/userController.js.map +1 -1
- package/dist/dao/DaoFactory.js +19 -0
- package/dist/dao/DaoFactory.js.map +1 -1
- package/dist/dao/DatabaseDaoFactory.js +68 -0
- package/dist/dao/DatabaseDaoFactory.js.map +1 -0
- package/dist/dao/GroupDaoDbImpl.js +131 -0
- package/dist/dao/GroupDaoDbImpl.js.map +1 -0
- package/dist/dao/ServerDaoDbImpl.js +109 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -0
- package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
- package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserConfigDaoDbImpl.js +61 -0
- package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserDaoDbImpl.js +90 -0
- package/dist/dao/UserDaoDbImpl.js.map +1 -0
- package/dist/dao/index.js +7 -0
- package/dist/dao/index.js.map +1 -1
- package/dist/db/entities/Group.js +49 -0
- package/dist/db/entities/Group.js.map +1 -0
- package/dist/db/entities/Server.js +93 -0
- package/dist/db/entities/Server.js.map +1 -0
- package/dist/db/entities/SystemConfig.js +66 -0
- package/dist/db/entities/SystemConfig.js.map +1 -0
- package/dist/db/entities/User.js +45 -0
- package/dist/db/entities/User.js.map +1 -0
- package/dist/db/entities/UserConfig.js +45 -0
- package/dist/db/entities/UserConfig.js.map +1 -0
- package/dist/db/entities/index.js +7 -2
- package/dist/db/entities/index.js.map +1 -1
- package/dist/db/repositories/GroupRepository.js +81 -0
- package/dist/db/repositories/GroupRepository.js.map +1 -0
- package/dist/db/repositories/ServerRepository.js +80 -0
- package/dist/db/repositories/ServerRepository.js.map +1 -0
- package/dist/db/repositories/SystemConfigRepository.js +64 -0
- package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserConfigRepository.js +69 -0
- package/dist/db/repositories/UserConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserRepository.js +68 -0
- package/dist/db/repositories/UserRepository.js.map +1 -0
- package/dist/db/repositories/index.js +6 -1
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/middlewares/auth.js +1 -1
- package/dist/middlewares/auth.js.map +1 -1
- package/dist/middlewares/userContext.js +1 -1
- package/dist/middlewares/userContext.js.map +1 -1
- package/dist/models/User.js +29 -48
- package/dist/models/User.js.map +1 -1
- package/dist/routes/index.js +2 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/scripts/migrate-to-database.js +5 -0
- package/dist/scripts/migrate-to-database.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/groupService.js +87 -113
- package/dist/services/groupService.js.map +1 -1
- package/dist/services/keepAliveService.js +58 -0
- package/dist/services/keepAliveService.js.map +1 -0
- package/dist/services/mcpOAuthProvider.js +22 -28
- package/dist/services/mcpOAuthProvider.js.map +1 -1
- package/dist/services/mcpService.js +73 -92
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/oauthServerService.js +18 -12
- package/dist/services/oauthServerService.js.map +1 -1
- package/dist/services/oauthService.js +11 -10
- package/dist/services/oauthService.js.map +1 -1
- package/dist/services/oauthSettingsStore.js +17 -12
- package/dist/services/oauthSettingsStore.js.map +1 -1
- package/dist/services/openApiGeneratorService.js +6 -7
- package/dist/services/openApiGeneratorService.js.map +1 -1
- package/dist/services/sseService.js +20 -62
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/userService.js +38 -45
- package/dist/services/userService.js.map +1 -1
- package/dist/utils/migration.js +184 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/oauthBearer.js +3 -3
- package/dist/utils/oauthBearer.js.map +1 -1
- package/frontend/dist/assets/index-Dno2pywv.js +251 -0
- package/frontend/dist/assets/index-Dno2pywv.js.map +1 -0
- package/frontend/dist/index.html +1 -1
- package/mcp_settings.json +23 -1
- package/package.json +1 -1
- package/frontend/dist/assets/index-DDht0WYq.js +0 -251
- package/frontend/dist/assets/index-DDht0WYq.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { getAllUsers, getUserByUsername, createNewUser, updateUser, deleteUser, getUserCount, getAdminCount, } from '../services/userService.js';
|
|
2
|
-
import {
|
|
2
|
+
import { getSystemConfigDao } from '../dao/index.js';
|
|
3
3
|
import { validatePasswordStrength } from '../utils/passwordValidation.js';
|
|
4
4
|
// Admin permission check middleware function
|
|
5
|
-
const requireAdmin = (req, res) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const requireAdmin = async (req, res) => {
|
|
6
|
+
const systemConfigDao = getSystemConfigDao();
|
|
7
|
+
const systemConfig = await systemConfigDao.get();
|
|
8
|
+
if (systemConfig?.routing?.skipAuth) {
|
|
8
9
|
return true;
|
|
9
10
|
}
|
|
10
11
|
const user = req.user;
|
|
@@ -18,11 +19,11 @@ const requireAdmin = (req, res) => {
|
|
|
18
19
|
return true;
|
|
19
20
|
};
|
|
20
21
|
// Get all users (admin only)
|
|
21
|
-
export const getUsers = (req, res) => {
|
|
22
|
-
if (!requireAdmin(req, res))
|
|
22
|
+
export const getUsers = async (req, res) => {
|
|
23
|
+
if (!(await requireAdmin(req, res)))
|
|
23
24
|
return;
|
|
24
25
|
try {
|
|
25
|
-
const users = getAllUsers().map(({ password: _, ...user }) => user); // Remove password from response
|
|
26
|
+
const users = (await getAllUsers()).map(({ password: _, ...user }) => user); // Remove password from response
|
|
26
27
|
const response = {
|
|
27
28
|
success: true,
|
|
28
29
|
data: users,
|
|
@@ -37,8 +38,8 @@ export const getUsers = (req, res) => {
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
// Get a specific user by username (admin only)
|
|
40
|
-
export const getUser = (req, res) => {
|
|
41
|
-
if (!requireAdmin(req, res))
|
|
41
|
+
export const getUser = async (req, res) => {
|
|
42
|
+
if (!(await requireAdmin(req, res)))
|
|
42
43
|
return;
|
|
43
44
|
try {
|
|
44
45
|
const { username } = req.params;
|
|
@@ -49,7 +50,7 @@ export const getUser = (req, res) => {
|
|
|
49
50
|
});
|
|
50
51
|
return;
|
|
51
52
|
}
|
|
52
|
-
const user = getUserByUsername(username);
|
|
53
|
+
const user = await getUserByUsername(username);
|
|
53
54
|
if (!user) {
|
|
54
55
|
res.status(404).json({
|
|
55
56
|
success: false,
|
|
@@ -73,7 +74,7 @@ export const getUser = (req, res) => {
|
|
|
73
74
|
};
|
|
74
75
|
// Create a new user (admin only)
|
|
75
76
|
export const createUser = async (req, res) => {
|
|
76
|
-
if (!requireAdmin(req, res))
|
|
77
|
+
if (!(await requireAdmin(req, res)))
|
|
77
78
|
return;
|
|
78
79
|
try {
|
|
79
80
|
const { username, password, isAdmin } = req.body;
|
|
@@ -119,7 +120,7 @@ export const createUser = async (req, res) => {
|
|
|
119
120
|
};
|
|
120
121
|
// Update an existing user (admin only)
|
|
121
122
|
export const updateExistingUser = async (req, res) => {
|
|
122
|
-
if (!requireAdmin(req, res))
|
|
123
|
+
if (!(await requireAdmin(req, res)))
|
|
123
124
|
return;
|
|
124
125
|
try {
|
|
125
126
|
const { username } = req.params;
|
|
@@ -133,7 +134,7 @@ export const updateExistingUser = async (req, res) => {
|
|
|
133
134
|
}
|
|
134
135
|
// Check if trying to change admin status
|
|
135
136
|
if (isAdmin !== undefined) {
|
|
136
|
-
const currentUser = getUserByUsername(username);
|
|
137
|
+
const currentUser = await getUserByUsername(username);
|
|
137
138
|
if (!currentUser) {
|
|
138
139
|
res.status(404).json({
|
|
139
140
|
success: false,
|
|
@@ -142,7 +143,7 @@ export const updateExistingUser = async (req, res) => {
|
|
|
142
143
|
return;
|
|
143
144
|
}
|
|
144
145
|
// Prevent removing admin status from the last admin
|
|
145
|
-
if (currentUser.isAdmin && !isAdmin && getAdminCount() === 1) {
|
|
146
|
+
if (currentUser.isAdmin && !isAdmin && (await getAdminCount()) === 1) {
|
|
146
147
|
res.status(400).json({
|
|
147
148
|
success: false,
|
|
148
149
|
message: 'Cannot remove admin status from the last admin user',
|
|
@@ -197,8 +198,8 @@ export const updateExistingUser = async (req, res) => {
|
|
|
197
198
|
}
|
|
198
199
|
};
|
|
199
200
|
// Delete a user (admin only)
|
|
200
|
-
export const deleteExistingUser = (req, res) => {
|
|
201
|
-
if (!requireAdmin(req, res))
|
|
201
|
+
export const deleteExistingUser = async (req, res) => {
|
|
202
|
+
if (!(await requireAdmin(req, res)))
|
|
202
203
|
return;
|
|
203
204
|
try {
|
|
204
205
|
const { username } = req.params;
|
|
@@ -218,7 +219,7 @@ export const deleteExistingUser = (req, res) => {
|
|
|
218
219
|
});
|
|
219
220
|
return;
|
|
220
221
|
}
|
|
221
|
-
const success = deleteUser(username);
|
|
222
|
+
const success = await deleteUser(username);
|
|
222
223
|
if (!success) {
|
|
223
224
|
res.status(400).json({
|
|
224
225
|
success: false,
|
|
@@ -239,12 +240,12 @@ export const deleteExistingUser = (req, res) => {
|
|
|
239
240
|
}
|
|
240
241
|
};
|
|
241
242
|
// Get user statistics (admin only)
|
|
242
|
-
export const getUserStats = (req, res) => {
|
|
243
|
-
if (!requireAdmin(req, res))
|
|
243
|
+
export const getUserStats = async (req, res) => {
|
|
244
|
+
if (!(await requireAdmin(req, res)))
|
|
244
245
|
return;
|
|
245
246
|
try {
|
|
246
|
-
const totalUsers = getUserCount();
|
|
247
|
-
const adminUsers = getAdminCount();
|
|
247
|
+
const totalUsers = await getUserCount();
|
|
248
|
+
const adminUsers = await getAdminCount();
|
|
248
249
|
const regularUsers = totalUsers - adminUsers;
|
|
249
250
|
const response = {
|
|
250
251
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userController.js","sourceRoot":"","sources":["../../src/controllers/userController.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"userController.js","sourceRoot":"","sources":["../../src/controllers/userController.ts"],"names":[],"mappings":"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"}
|
package/dist/dao/DaoFactory.js
CHANGED
|
@@ -81,6 +81,25 @@ export function setDaoFactory(factory) {
|
|
|
81
81
|
export function getDaoFactory() {
|
|
82
82
|
return daoFactory;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Switch to database-backed DAOs based on environment variable
|
|
86
|
+
* This is synchronous and should be called during app initialization
|
|
87
|
+
*/
|
|
88
|
+
export function initializeDaoFactory() {
|
|
89
|
+
// If USE_DB is explicitly set, use its value; otherwise, auto-detect based on DB_URL presence
|
|
90
|
+
const useDatabase = process.env.USE_DB !== undefined ? process.env.USE_DB === 'true' : !!process.env.DB_URL;
|
|
91
|
+
if (useDatabase) {
|
|
92
|
+
console.log('Using database-backed DAO implementations');
|
|
93
|
+
// Dynamic import to avoid circular dependencies
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
95
|
+
const DatabaseDaoFactoryModule = require('./DatabaseDaoFactory.js');
|
|
96
|
+
setDaoFactory(DatabaseDaoFactoryModule.DatabaseDaoFactory.getInstance());
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log('Using file-based DAO implementations');
|
|
100
|
+
setDaoFactory(JsonFileDaoFactory.getInstance());
|
|
101
|
+
}
|
|
102
|
+
}
|
|
84
103
|
/**
|
|
85
104
|
* Convenience functions to get specific DAOs
|
|
86
105
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaoFactory.js","sourceRoot":"","sources":["../../src/dao/DaoFactory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DaoFactory.js","sourceRoot":"","sources":["../../src/dao/DaoFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { UserDaoDbImpl } from './UserDaoDbImpl.js';
|
|
2
|
+
import { ServerDaoDbImpl } from './ServerDaoDbImpl.js';
|
|
3
|
+
import { GroupDaoDbImpl } from './GroupDaoDbImpl.js';
|
|
4
|
+
import { SystemConfigDaoDbImpl } from './SystemConfigDaoDbImpl.js';
|
|
5
|
+
import { UserConfigDaoDbImpl } from './UserConfigDaoDbImpl.js';
|
|
6
|
+
/**
|
|
7
|
+
* Database-backed DAO factory implementation
|
|
8
|
+
*/
|
|
9
|
+
export class DatabaseDaoFactory {
|
|
10
|
+
/**
|
|
11
|
+
* Get singleton instance
|
|
12
|
+
*/
|
|
13
|
+
static getInstance() {
|
|
14
|
+
if (!DatabaseDaoFactory.instance) {
|
|
15
|
+
DatabaseDaoFactory.instance = new DatabaseDaoFactory();
|
|
16
|
+
}
|
|
17
|
+
return DatabaseDaoFactory.instance;
|
|
18
|
+
}
|
|
19
|
+
constructor() {
|
|
20
|
+
this.userDao = null;
|
|
21
|
+
this.serverDao = null;
|
|
22
|
+
this.groupDao = null;
|
|
23
|
+
this.systemConfigDao = null;
|
|
24
|
+
this.userConfigDao = null;
|
|
25
|
+
// Private constructor for singleton
|
|
26
|
+
}
|
|
27
|
+
getUserDao() {
|
|
28
|
+
if (!this.userDao) {
|
|
29
|
+
this.userDao = new UserDaoDbImpl();
|
|
30
|
+
}
|
|
31
|
+
return this.userDao;
|
|
32
|
+
}
|
|
33
|
+
getServerDao() {
|
|
34
|
+
if (!this.serverDao) {
|
|
35
|
+
this.serverDao = new ServerDaoDbImpl();
|
|
36
|
+
}
|
|
37
|
+
return this.serverDao;
|
|
38
|
+
}
|
|
39
|
+
getGroupDao() {
|
|
40
|
+
if (!this.groupDao) {
|
|
41
|
+
this.groupDao = new GroupDaoDbImpl();
|
|
42
|
+
}
|
|
43
|
+
return this.groupDao;
|
|
44
|
+
}
|
|
45
|
+
getSystemConfigDao() {
|
|
46
|
+
if (!this.systemConfigDao) {
|
|
47
|
+
this.systemConfigDao = new SystemConfigDaoDbImpl();
|
|
48
|
+
}
|
|
49
|
+
return this.systemConfigDao;
|
|
50
|
+
}
|
|
51
|
+
getUserConfigDao() {
|
|
52
|
+
if (!this.userConfigDao) {
|
|
53
|
+
this.userConfigDao = new UserConfigDaoDbImpl();
|
|
54
|
+
}
|
|
55
|
+
return this.userConfigDao;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Reset all cached DAO instances (useful for testing)
|
|
59
|
+
*/
|
|
60
|
+
resetInstances() {
|
|
61
|
+
this.userDao = null;
|
|
62
|
+
this.serverDao = null;
|
|
63
|
+
this.groupDao = null;
|
|
64
|
+
this.systemConfigDao = null;
|
|
65
|
+
this.userConfigDao = null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=DatabaseDaoFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseDaoFactory.js","sourceRoot":"","sources":["../../src/dao/DatabaseDaoFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAS7B;;OAEG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACjC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED;QAhBQ,YAAO,GAAmB,IAAI,CAAC;QAC/B,cAAS,GAAqB,IAAI,CAAC;QACnC,aAAQ,GAAoB,IAAI,CAAC;QACjC,oBAAe,GAA2B,IAAI,CAAC;QAC/C,kBAAa,GAAyB,IAAI,CAAC;QAajD,oCAAoC;IACtC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,OAAQ,CAAC;IACvB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,SAAU,CAAC;IACzB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,eAAgB,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,aAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { GroupRepository } from '../db/repositories/GroupRepository.js';
|
|
2
|
+
/**
|
|
3
|
+
* Database-backed implementation of GroupDao
|
|
4
|
+
*/
|
|
5
|
+
export class GroupDaoDbImpl {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.repository = new GroupRepository();
|
|
8
|
+
}
|
|
9
|
+
async findAll() {
|
|
10
|
+
const groups = await this.repository.findAll();
|
|
11
|
+
return groups.map((g) => ({
|
|
12
|
+
id: g.id,
|
|
13
|
+
name: g.name,
|
|
14
|
+
description: g.description,
|
|
15
|
+
servers: g.servers,
|
|
16
|
+
owner: g.owner,
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
async findById(id) {
|
|
20
|
+
const group = await this.repository.findById(id);
|
|
21
|
+
if (!group)
|
|
22
|
+
return null;
|
|
23
|
+
return {
|
|
24
|
+
id: group.id,
|
|
25
|
+
name: group.name,
|
|
26
|
+
description: group.description,
|
|
27
|
+
servers: group.servers,
|
|
28
|
+
owner: group.owner,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async create(entity) {
|
|
32
|
+
const group = await this.repository.create({
|
|
33
|
+
name: entity.name,
|
|
34
|
+
description: entity.description,
|
|
35
|
+
servers: entity.servers,
|
|
36
|
+
owner: entity.owner,
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
id: group.id,
|
|
40
|
+
name: group.name,
|
|
41
|
+
description: group.description,
|
|
42
|
+
servers: group.servers,
|
|
43
|
+
owner: group.owner,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async update(id, entity) {
|
|
47
|
+
const group = await this.repository.update(id, {
|
|
48
|
+
name: entity.name,
|
|
49
|
+
description: entity.description,
|
|
50
|
+
servers: entity.servers,
|
|
51
|
+
owner: entity.owner,
|
|
52
|
+
});
|
|
53
|
+
if (!group)
|
|
54
|
+
return null;
|
|
55
|
+
return {
|
|
56
|
+
id: group.id,
|
|
57
|
+
name: group.name,
|
|
58
|
+
description: group.description,
|
|
59
|
+
servers: group.servers,
|
|
60
|
+
owner: group.owner,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async delete(id) {
|
|
64
|
+
return await this.repository.delete(id);
|
|
65
|
+
}
|
|
66
|
+
async exists(id) {
|
|
67
|
+
return await this.repository.exists(id);
|
|
68
|
+
}
|
|
69
|
+
async count() {
|
|
70
|
+
return await this.repository.count();
|
|
71
|
+
}
|
|
72
|
+
async findByOwner(owner) {
|
|
73
|
+
const groups = await this.repository.findByOwner(owner);
|
|
74
|
+
return groups.map((g) => ({
|
|
75
|
+
id: g.id,
|
|
76
|
+
name: g.name,
|
|
77
|
+
description: g.description,
|
|
78
|
+
servers: g.servers,
|
|
79
|
+
owner: g.owner,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
async findByServer(serverName) {
|
|
83
|
+
const allGroups = await this.repository.findAll();
|
|
84
|
+
return allGroups
|
|
85
|
+
.filter((g) => g.servers.some((s) => (typeof s === 'string' ? s === serverName : s.name === serverName)))
|
|
86
|
+
.map((g) => ({
|
|
87
|
+
id: g.id,
|
|
88
|
+
name: g.name,
|
|
89
|
+
description: g.description,
|
|
90
|
+
servers: g.servers,
|
|
91
|
+
owner: g.owner,
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
async addServerToGroup(groupId, serverName) {
|
|
95
|
+
const group = await this.repository.findById(groupId);
|
|
96
|
+
if (!group)
|
|
97
|
+
return false;
|
|
98
|
+
// Check if server already exists
|
|
99
|
+
const serverExists = group.servers.some((s) => typeof s === 'string' ? s === serverName : s.name === serverName);
|
|
100
|
+
if (!serverExists) {
|
|
101
|
+
group.servers.push(serverName);
|
|
102
|
+
await this.update(groupId, { servers: group.servers });
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
async removeServerFromGroup(groupId, serverName) {
|
|
107
|
+
const group = await this.repository.findById(groupId);
|
|
108
|
+
if (!group)
|
|
109
|
+
return false;
|
|
110
|
+
group.servers = group.servers.filter((s) => typeof s === 'string' ? s !== serverName : s.name !== serverName);
|
|
111
|
+
await this.update(groupId, { servers: group.servers });
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
async updateServers(groupId, servers) {
|
|
115
|
+
const result = await this.update(groupId, { servers: servers });
|
|
116
|
+
return result !== null;
|
|
117
|
+
}
|
|
118
|
+
async findByName(name) {
|
|
119
|
+
const group = await this.repository.findByName(name);
|
|
120
|
+
if (!group)
|
|
121
|
+
return null;
|
|
122
|
+
return {
|
|
123
|
+
id: group.id,
|
|
124
|
+
name: group.name,
|
|
125
|
+
description: group.description,
|
|
126
|
+
servers: group.servers,
|
|
127
|
+
owner: group.owner,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=GroupDaoDbImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupDaoDbImpl.js","sourceRoot":"","sources":["../../src/dao/GroupDaoDbImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ServerRepository } from '../db/repositories/ServerRepository.js';
|
|
2
|
+
/**
|
|
3
|
+
* Database-backed implementation of ServerDao
|
|
4
|
+
*/
|
|
5
|
+
export class ServerDaoDbImpl {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.repository = new ServerRepository();
|
|
8
|
+
}
|
|
9
|
+
async findAll() {
|
|
10
|
+
const servers = await this.repository.findAll();
|
|
11
|
+
return servers.map((s) => this.mapToServerConfig(s));
|
|
12
|
+
}
|
|
13
|
+
async findById(name) {
|
|
14
|
+
const server = await this.repository.findByName(name);
|
|
15
|
+
return server ? this.mapToServerConfig(server) : null;
|
|
16
|
+
}
|
|
17
|
+
async create(entity) {
|
|
18
|
+
const server = await this.repository.create({
|
|
19
|
+
name: entity.name,
|
|
20
|
+
type: entity.type,
|
|
21
|
+
url: entity.url,
|
|
22
|
+
command: entity.command,
|
|
23
|
+
args: entity.args,
|
|
24
|
+
env: entity.env,
|
|
25
|
+
headers: entity.headers,
|
|
26
|
+
enabled: entity.enabled !== undefined ? entity.enabled : true,
|
|
27
|
+
owner: entity.owner,
|
|
28
|
+
enableKeepAlive: entity.enableKeepAlive,
|
|
29
|
+
keepAliveInterval: entity.keepAliveInterval,
|
|
30
|
+
tools: entity.tools,
|
|
31
|
+
prompts: entity.prompts,
|
|
32
|
+
options: entity.options,
|
|
33
|
+
oauth: entity.oauth,
|
|
34
|
+
});
|
|
35
|
+
return this.mapToServerConfig(server);
|
|
36
|
+
}
|
|
37
|
+
async update(name, entity) {
|
|
38
|
+
const server = await this.repository.update(name, {
|
|
39
|
+
type: entity.type,
|
|
40
|
+
url: entity.url,
|
|
41
|
+
command: entity.command,
|
|
42
|
+
args: entity.args,
|
|
43
|
+
env: entity.env,
|
|
44
|
+
headers: entity.headers,
|
|
45
|
+
enabled: entity.enabled,
|
|
46
|
+
owner: entity.owner,
|
|
47
|
+
enableKeepAlive: entity.enableKeepAlive,
|
|
48
|
+
keepAliveInterval: entity.keepAliveInterval,
|
|
49
|
+
tools: entity.tools,
|
|
50
|
+
prompts: entity.prompts,
|
|
51
|
+
options: entity.options,
|
|
52
|
+
oauth: entity.oauth,
|
|
53
|
+
});
|
|
54
|
+
return server ? this.mapToServerConfig(server) : null;
|
|
55
|
+
}
|
|
56
|
+
async delete(name) {
|
|
57
|
+
return await this.repository.delete(name);
|
|
58
|
+
}
|
|
59
|
+
async exists(name) {
|
|
60
|
+
return await this.repository.exists(name);
|
|
61
|
+
}
|
|
62
|
+
async count() {
|
|
63
|
+
return await this.repository.count();
|
|
64
|
+
}
|
|
65
|
+
async findByOwner(owner) {
|
|
66
|
+
const servers = await this.repository.findByOwner(owner);
|
|
67
|
+
return servers.map((s) => this.mapToServerConfig(s));
|
|
68
|
+
}
|
|
69
|
+
async findEnabled() {
|
|
70
|
+
const servers = await this.repository.findEnabled();
|
|
71
|
+
return servers.map((s) => this.mapToServerConfig(s));
|
|
72
|
+
}
|
|
73
|
+
async findByType(type) {
|
|
74
|
+
const allServers = await this.repository.findAll();
|
|
75
|
+
return allServers.filter((s) => s.type === type).map((s) => this.mapToServerConfig(s));
|
|
76
|
+
}
|
|
77
|
+
async setEnabled(name, enabled) {
|
|
78
|
+
const server = await this.repository.setEnabled(name, enabled);
|
|
79
|
+
return server !== null;
|
|
80
|
+
}
|
|
81
|
+
async updateTools(name, tools) {
|
|
82
|
+
const result = await this.update(name, { tools });
|
|
83
|
+
return result !== null;
|
|
84
|
+
}
|
|
85
|
+
async updatePrompts(name, prompts) {
|
|
86
|
+
const result = await this.update(name, { prompts });
|
|
87
|
+
return result !== null;
|
|
88
|
+
}
|
|
89
|
+
mapToServerConfig(server) {
|
|
90
|
+
return {
|
|
91
|
+
name: server.name,
|
|
92
|
+
type: server.type,
|
|
93
|
+
url: server.url,
|
|
94
|
+
command: server.command,
|
|
95
|
+
args: server.args,
|
|
96
|
+
env: server.env,
|
|
97
|
+
headers: server.headers,
|
|
98
|
+
enabled: server.enabled,
|
|
99
|
+
owner: server.owner,
|
|
100
|
+
enableKeepAlive: server.enableKeepAlive,
|
|
101
|
+
keepAliveInterval: server.keepAliveInterval,
|
|
102
|
+
tools: server.tools,
|
|
103
|
+
prompts: server.prompts,
|
|
104
|
+
options: server.options,
|
|
105
|
+
oauth: server.oauth,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=ServerDaoDbImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerDaoDbImpl.js","sourceRoot":"","sources":["../../src/dao/ServerDaoDbImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { SystemConfigRepository } from '../db/repositories/SystemConfigRepository.js';
|
|
2
|
+
/**
|
|
3
|
+
* Database-backed implementation of SystemConfigDao
|
|
4
|
+
*/
|
|
5
|
+
export class SystemConfigDaoDbImpl {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.repository = new SystemConfigRepository();
|
|
8
|
+
}
|
|
9
|
+
async get() {
|
|
10
|
+
const config = await this.repository.get();
|
|
11
|
+
return {
|
|
12
|
+
routing: config.routing,
|
|
13
|
+
install: config.install,
|
|
14
|
+
smartRouting: config.smartRouting,
|
|
15
|
+
mcpRouter: config.mcpRouter,
|
|
16
|
+
nameSeparator: config.nameSeparator,
|
|
17
|
+
oauth: config.oauth,
|
|
18
|
+
oauthServer: config.oauthServer,
|
|
19
|
+
enableSessionRebuild: config.enableSessionRebuild,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async update(config) {
|
|
23
|
+
const updated = await this.repository.update(config);
|
|
24
|
+
return {
|
|
25
|
+
routing: updated.routing,
|
|
26
|
+
install: updated.install,
|
|
27
|
+
smartRouting: updated.smartRouting,
|
|
28
|
+
mcpRouter: updated.mcpRouter,
|
|
29
|
+
nameSeparator: updated.nameSeparator,
|
|
30
|
+
oauth: updated.oauth,
|
|
31
|
+
oauthServer: updated.oauthServer,
|
|
32
|
+
enableSessionRebuild: updated.enableSessionRebuild,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async reset() {
|
|
36
|
+
const config = await this.repository.reset();
|
|
37
|
+
return {
|
|
38
|
+
routing: config.routing,
|
|
39
|
+
install: config.install,
|
|
40
|
+
smartRouting: config.smartRouting,
|
|
41
|
+
mcpRouter: config.mcpRouter,
|
|
42
|
+
nameSeparator: config.nameSeparator,
|
|
43
|
+
oauth: config.oauth,
|
|
44
|
+
oauthServer: config.oauthServer,
|
|
45
|
+
enableSessionRebuild: config.enableSessionRebuild,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async getSection(section) {
|
|
49
|
+
return (await this.repository.getSection(section));
|
|
50
|
+
}
|
|
51
|
+
async updateSection(section, value) {
|
|
52
|
+
await this.repository.updateSection(section, value);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=SystemConfigDaoDbImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemConfigDaoDbImpl.js","sourceRoot":"","sources":["../../src/dao/SystemConfigDaoDbImpl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAGhC;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAc;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAc;YAC9B,YAAY,EAAE,MAAM,CAAC,YAAmB;YACxC,SAAS,EAAE,MAAM,CAAC,SAAgB;YAClC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,MAAM,CAAC,KAAY;YAC1B,WAAW,EAAE,MAAM,CAAC,WAAkB;YACtC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6B;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAa,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAc;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAc;YAC/B,YAAY,EAAE,OAAO,CAAC,YAAmB;YACzC,SAAS,EAAE,OAAO,CAAC,SAAgB;YACnC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,KAAK,EAAE,OAAO,CAAC,KAAY;YAC3B,WAAW,EAAE,OAAO,CAAC,WAAkB;YACvC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAc;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAc;YAC9B,YAAY,EAAE,MAAM,CAAC,YAAmB;YACxC,SAAS,EAAE,MAAM,CAAC,SAAgB;YAClC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,MAAM,CAAC,KAAY;YAC1B,WAAW,EAAE,MAAM,CAAC,WAAkB;YACtC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAA+B,OAAU;QACvD,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAQ,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAU,EACV,KAAsB;QAEtB,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,KAAY,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { UserConfigRepository } from '../db/repositories/UserConfigRepository.js';
|
|
2
|
+
/**
|
|
3
|
+
* Database-backed implementation of UserConfigDao
|
|
4
|
+
*/
|
|
5
|
+
export class UserConfigDaoDbImpl {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.repository = new UserConfigRepository();
|
|
8
|
+
}
|
|
9
|
+
async getAll() {
|
|
10
|
+
const configs = await this.repository.getAll();
|
|
11
|
+
const result = {};
|
|
12
|
+
for (const [username, config] of Object.entries(configs)) {
|
|
13
|
+
result[username] = {
|
|
14
|
+
routing: config.routing,
|
|
15
|
+
...config.additionalConfig,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
async get(username) {
|
|
21
|
+
const config = await this.repository.get(username);
|
|
22
|
+
if (!config) {
|
|
23
|
+
return { routing: {} };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
routing: config.routing,
|
|
27
|
+
...config.additionalConfig,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async update(username, config) {
|
|
31
|
+
const { routing, ...additionalConfig } = config;
|
|
32
|
+
const updated = await this.repository.update(username, {
|
|
33
|
+
routing,
|
|
34
|
+
additionalConfig,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
routing: updated.routing,
|
|
38
|
+
...updated.additionalConfig,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async delete(username) {
|
|
42
|
+
return await this.repository.delete(username);
|
|
43
|
+
}
|
|
44
|
+
async getSection(username, section) {
|
|
45
|
+
const config = await this.get(username);
|
|
46
|
+
return config[section];
|
|
47
|
+
}
|
|
48
|
+
async updateSection(username, section, value) {
|
|
49
|
+
await this.update(username, { [section]: value });
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
async exists(username) {
|
|
53
|
+
const config = await this.repository.get(username);
|
|
54
|
+
return config !== null;
|
|
55
|
+
}
|
|
56
|
+
async reset(username) {
|
|
57
|
+
await this.repository.delete(username);
|
|
58
|
+
return { routing: {} };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=UserConfigDaoDbImpl.js.map
|