@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.
Files changed (100) hide show
  1. package/README.fr.md +36 -152
  2. package/README.md +34 -255
  3. package/README.zh.md +33 -212
  4. package/dist/config/DaoConfigService.js +3 -3
  5. package/dist/config/DaoConfigService.js.map +1 -1
  6. package/dist/controllers/authController.js +2 -2
  7. package/dist/controllers/authController.js.map +1 -1
  8. package/dist/controllers/groupController.js +24 -24
  9. package/dist/controllers/groupController.js.map +1 -1
  10. package/dist/controllers/openApiController.js +1 -1
  11. package/dist/controllers/openApiController.js.map +1 -1
  12. package/dist/controllers/serverController.js +95 -61
  13. package/dist/controllers/serverController.js.map +1 -1
  14. package/dist/controllers/userController.js +22 -21
  15. package/dist/controllers/userController.js.map +1 -1
  16. package/dist/dao/DaoFactory.js +19 -0
  17. package/dist/dao/DaoFactory.js.map +1 -1
  18. package/dist/dao/DatabaseDaoFactory.js +68 -0
  19. package/dist/dao/DatabaseDaoFactory.js.map +1 -0
  20. package/dist/dao/GroupDaoDbImpl.js +131 -0
  21. package/dist/dao/GroupDaoDbImpl.js.map +1 -0
  22. package/dist/dao/ServerDaoDbImpl.js +109 -0
  23. package/dist/dao/ServerDaoDbImpl.js.map +1 -0
  24. package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
  25. package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
  26. package/dist/dao/UserConfigDaoDbImpl.js +61 -0
  27. package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
  28. package/dist/dao/UserDaoDbImpl.js +90 -0
  29. package/dist/dao/UserDaoDbImpl.js.map +1 -0
  30. package/dist/dao/index.js +7 -0
  31. package/dist/dao/index.js.map +1 -1
  32. package/dist/db/entities/Group.js +49 -0
  33. package/dist/db/entities/Group.js.map +1 -0
  34. package/dist/db/entities/Server.js +93 -0
  35. package/dist/db/entities/Server.js.map +1 -0
  36. package/dist/db/entities/SystemConfig.js +66 -0
  37. package/dist/db/entities/SystemConfig.js.map +1 -0
  38. package/dist/db/entities/User.js +45 -0
  39. package/dist/db/entities/User.js.map +1 -0
  40. package/dist/db/entities/UserConfig.js +45 -0
  41. package/dist/db/entities/UserConfig.js.map +1 -0
  42. package/dist/db/entities/index.js +7 -2
  43. package/dist/db/entities/index.js.map +1 -1
  44. package/dist/db/repositories/GroupRepository.js +81 -0
  45. package/dist/db/repositories/GroupRepository.js.map +1 -0
  46. package/dist/db/repositories/ServerRepository.js +80 -0
  47. package/dist/db/repositories/ServerRepository.js.map +1 -0
  48. package/dist/db/repositories/SystemConfigRepository.js +64 -0
  49. package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
  50. package/dist/db/repositories/UserConfigRepository.js +69 -0
  51. package/dist/db/repositories/UserConfigRepository.js.map +1 -0
  52. package/dist/db/repositories/UserRepository.js +68 -0
  53. package/dist/db/repositories/UserRepository.js.map +1 -0
  54. package/dist/db/repositories/index.js +6 -1
  55. package/dist/db/repositories/index.js.map +1 -1
  56. package/dist/index.js +12 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/middlewares/auth.js +1 -1
  59. package/dist/middlewares/auth.js.map +1 -1
  60. package/dist/middlewares/userContext.js +1 -1
  61. package/dist/middlewares/userContext.js.map +1 -1
  62. package/dist/models/User.js +29 -48
  63. package/dist/models/User.js.map +1 -1
  64. package/dist/routes/index.js +2 -1
  65. package/dist/routes/index.js.map +1 -1
  66. package/dist/scripts/migrate-to-database.js +5 -0
  67. package/dist/scripts/migrate-to-database.js.map +1 -0
  68. package/dist/server.js +2 -2
  69. package/dist/server.js.map +1 -1
  70. package/dist/services/groupService.js +87 -113
  71. package/dist/services/groupService.js.map +1 -1
  72. package/dist/services/keepAliveService.js +58 -0
  73. package/dist/services/keepAliveService.js.map +1 -0
  74. package/dist/services/mcpOAuthProvider.js +22 -28
  75. package/dist/services/mcpOAuthProvider.js.map +1 -1
  76. package/dist/services/mcpService.js +73 -92
  77. package/dist/services/mcpService.js.map +1 -1
  78. package/dist/services/oauthServerService.js +18 -12
  79. package/dist/services/oauthServerService.js.map +1 -1
  80. package/dist/services/oauthService.js +11 -10
  81. package/dist/services/oauthService.js.map +1 -1
  82. package/dist/services/oauthSettingsStore.js +17 -12
  83. package/dist/services/oauthSettingsStore.js.map +1 -1
  84. package/dist/services/openApiGeneratorService.js +6 -7
  85. package/dist/services/openApiGeneratorService.js.map +1 -1
  86. package/dist/services/sseService.js +20 -62
  87. package/dist/services/sseService.js.map +1 -1
  88. package/dist/services/userService.js +38 -45
  89. package/dist/services/userService.js.map +1 -1
  90. package/dist/utils/migration.js +184 -0
  91. package/dist/utils/migration.js.map +1 -0
  92. package/dist/utils/oauthBearer.js +3 -3
  93. package/dist/utils/oauthBearer.js.map +1 -1
  94. package/frontend/dist/assets/index-Dno2pywv.js +251 -0
  95. package/frontend/dist/assets/index-Dno2pywv.js.map +1 -0
  96. package/frontend/dist/index.html +1 -1
  97. package/mcp_settings.json +23 -1
  98. package/package.json +1 -1
  99. package/frontend/dist/assets/index-DDht0WYq.js +0 -251
  100. 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 { loadSettings } from '../config/index.js';
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 settings = loadSettings();
7
- if (settings.systemConfig?.routing?.skipAuth) {
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":"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"}
1
+ {"version":3,"file":"userController.js","sourceRoot":"","sources":["../../src/controllers/userController.ts"],"names":[],"mappings":"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"}
@@ -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