@samanhappy/mcphub 0.12.4 → 0.12.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/index.js +6 -1
- package/dist/config/index.js.map +1 -1
- package/dist/controllers/builtinPromptController.js +119 -0
- package/dist/controllers/builtinPromptController.js.map +1 -0
- package/dist/controllers/builtinResourceController.js +142 -0
- package/dist/controllers/builtinResourceController.js.map +1 -0
- package/dist/controllers/serverController.js +134 -8
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/dao/BuiltinPromptDao.js +72 -0
- package/dist/dao/BuiltinPromptDao.js.map +1 -0
- package/dist/dao/BuiltinPromptDaoDbImpl.js +76 -0
- package/dist/dao/BuiltinPromptDaoDbImpl.js.map +1 -0
- package/dist/dao/BuiltinResourceDao.js +72 -0
- package/dist/dao/BuiltinResourceDao.js.map +1 -0
- package/dist/dao/BuiltinResourceDaoDbImpl.js +76 -0
- package/dist/dao/BuiltinResourceDaoDbImpl.js.map +1 -0
- package/dist/dao/DaoFactory.js +24 -0
- package/dist/dao/DaoFactory.js.map +1 -1
- package/dist/dao/DatabaseDaoFactory.js +18 -0
- package/dist/dao/DatabaseDaoFactory.js.map +1 -1
- package/dist/dao/ServerDao.js +4 -0
- package/dist/dao/ServerDao.js.map +1 -1
- package/dist/dao/ServerDaoDbImpl.js +7 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -1
- package/dist/dao/index.js +4 -0
- package/dist/dao/index.js.map +1 -1
- package/dist/db/connection.js +33 -14
- package/dist/db/connection.js.map +1 -1
- package/dist/db/entities/BuiltinPrompt.js +57 -0
- package/dist/db/entities/BuiltinPrompt.js.map +1 -0
- package/dist/db/entities/BuiltinResource.js +57 -0
- package/dist/db/entities/BuiltinResource.js.map +1 -0
- package/dist/db/entities/Server.js +4 -0
- package/dist/db/entities/Server.js.map +1 -1
- package/dist/db/entities/VectorEmbedding.js +1 -2
- package/dist/db/entities/VectorEmbedding.js.map +1 -1
- package/dist/db/entities/index.js +5 -1
- package/dist/db/entities/index.js.map +1 -1
- package/dist/db/repositories/BuiltinPromptRepository.js +40 -0
- package/dist/db/repositories/BuiltinPromptRepository.js.map +1 -0
- package/dist/db/repositories/BuiltinResourceRepository.js +40 -0
- package/dist/db/repositories/BuiltinResourceRepository.js.map +1 -0
- package/dist/db/repositories/index.js +3 -1
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/routes/index.js +18 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/services/mcpService.js +176 -8
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/sseService.js +13 -0
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/vectorSearchService.js +35 -1
- package/dist/services/vectorSearchService.js.map +1 -1
- package/dist/utils/base64.js +59 -0
- package/dist/utils/base64.js.map +1 -0
- package/dist/utils/migration.js +47 -0
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/smartRouting.js +9 -0
- package/dist/utils/smartRouting.js.map +1 -1
- package/frontend/dist/assets/index-BT845f3p.js +314 -0
- package/frontend/dist/assets/index-BT845f3p.js.map +1 -0
- package/frontend/dist/assets/index-Cf9Rz7Uy.css +1 -0
- package/frontend/dist/assets/resourceService-B7vWfjLj.js +2 -0
- package/frontend/dist/assets/resourceService-B7vWfjLj.js.map +1 -0
- package/frontend/dist/index.html +2 -2
- package/mcp_settings.json +3 -1
- package/package.json +2 -2
- package/frontend/dist/assets/index-CtcblSpA.js +0 -294
- package/frontend/dist/assets/index-CtcblSpA.js.map +0 -1
- package/frontend/dist/assets/index-DM2_JGfR.css +0 -1
package/dist/config/index.js
CHANGED
|
@@ -141,6 +141,11 @@ export function replaceEnvVars(input) {
|
|
|
141
141
|
}
|
|
142
142
|
return input;
|
|
143
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Expand environment variable references and trim leading/trailing whitespace.
|
|
146
|
+
* Trimming here prevents hard-to-diagnose API failures caused by accidental
|
|
147
|
+
* whitespace in values at the beginning or end of the string.
|
|
148
|
+
*/
|
|
144
149
|
export const expandEnvVars = (value) => {
|
|
145
150
|
if (typeof value !== 'string') {
|
|
146
151
|
return String(value);
|
|
@@ -149,7 +154,7 @@ export const expandEnvVars = (value) => {
|
|
|
149
154
|
let result = value.replace(/\$\{([^}]+)\}/g, (_, key) => process.env[key] || '');
|
|
150
155
|
// Also replace $VAR format (common on Unix-like systems)
|
|
151
156
|
result = result.replace(/\$([A-Z_][A-Z0-9_]*)/g, (_, key) => process.env[key] || '');
|
|
152
|
-
return result;
|
|
157
|
+
return result.trim();
|
|
153
158
|
};
|
|
154
159
|
export default defaultConfig;
|
|
155
160
|
export function getNameSeparator() {
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEpF,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;IAC9B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM;IAC/C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IACrC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK;IAClD,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,iBAAiB,EAAE;CACnC,CAAC;AAEF,MAAM,WAAW,GAAgB,cAAc,EAAE,CAAC;AAElD,MAAM,yBAAyB,GAAG,CAAC,QAAqB,EAAW,EAAE;IACnE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,QAAQ,CAAC,YAAY,GAAG;YACtB,WAAW,EAAE,6BAA6B,EAAE;SAC7C,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACvC,QAAQ,CAAC,YAAY,CAAC,WAAW,GAAG,6BAA6B,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,iBAAiB;AACjB,IAAI,aAAa,GAAuB,IAAI,CAAC;AAE7C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,OAAO,iBAAiB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,+CAA+C;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,uBAAuB;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,8BAA8B,YAAY,2BAA2B,CAAC,CAAC;QACpF,MAAM,eAAe,GAAgB,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACnE,yBAAyB,CAAC,eAAe,CAAC,CAAC;QAC3C,yBAAyB;QACzB,aAAa,GAAG,eAAe,CAAC;QAChC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,UAAU,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,eAAe;QACf,aAAa,GAAG,QAAQ,CAAC;QAEzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,KAAK,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAe,EAAE;IACxD,OAAO,WAAW,CAAC,cAAe,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAqB,EAAE,IAAY,EAAW,EAAE;IAC3E,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,WAAW,CAAC,aAAc,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1F,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEhF,qCAAqC;QACrC,aAAa,GAAG,cAAc,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAS,EAAE;IAC3C,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAA0B,EAAE;IAC9D,OAAO;QACL,QAAQ,EAAE,aAAa,KAAK,IAAI;KACjC,CAAC;AACJ,CAAC,CAAC;AAKF,MAAM,UAAU,cAAc,CAC5B,KAA0D;IAE1D,6DAA6D;IAC7D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACvD,+CAA+C;gBAC/C,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAY,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACrD,OAAO,cAAc,CAAC,IAAW,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,wBAAwB;IACxB,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACjF,yDAAyD;IACzD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { getBuiltinPromptDao } from '../dao/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* List all built-in prompts
|
|
4
|
+
*/
|
|
5
|
+
export const listBuiltinPrompts = async (_req, res) => {
|
|
6
|
+
try {
|
|
7
|
+
const prompts = await getBuiltinPromptDao().findAll();
|
|
8
|
+
const response = {
|
|
9
|
+
success: true,
|
|
10
|
+
data: prompts,
|
|
11
|
+
};
|
|
12
|
+
res.json(response);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error('Error listing built-in prompts:', error);
|
|
16
|
+
res.status(500).json({
|
|
17
|
+
success: false,
|
|
18
|
+
message: error instanceof Error ? error.message : 'Failed to list built-in prompts',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Get a single built-in prompt by ID
|
|
24
|
+
*/
|
|
25
|
+
export const getBuiltinPrompt = async (req, res) => {
|
|
26
|
+
try {
|
|
27
|
+
const { id } = req.params;
|
|
28
|
+
const prompt = await getBuiltinPromptDao().findById(id);
|
|
29
|
+
if (!prompt) {
|
|
30
|
+
res.status(404).json({ success: false, message: 'Built-in prompt not found' });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const response = { success: true, data: prompt };
|
|
34
|
+
res.json(response);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('Error getting built-in prompt:', error);
|
|
38
|
+
res.status(500).json({
|
|
39
|
+
success: false,
|
|
40
|
+
message: error instanceof Error ? error.message : 'Failed to get built-in prompt',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Create a new built-in prompt
|
|
46
|
+
*/
|
|
47
|
+
export const createBuiltinPrompt = async (req, res) => {
|
|
48
|
+
try {
|
|
49
|
+
const { name, title, description, template, arguments: args, enabled } = req.body;
|
|
50
|
+
if (!name || !template) {
|
|
51
|
+
res.status(400).json({ success: false, message: 'name and template are required' });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const prompt = await getBuiltinPromptDao().create({
|
|
55
|
+
name,
|
|
56
|
+
title,
|
|
57
|
+
description,
|
|
58
|
+
template,
|
|
59
|
+
arguments: args,
|
|
60
|
+
enabled: enabled !== false,
|
|
61
|
+
});
|
|
62
|
+
const response = { success: true, data: prompt };
|
|
63
|
+
res.status(201).json(response);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Error creating built-in prompt:', error);
|
|
67
|
+
const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
|
|
68
|
+
res.status(status).json({
|
|
69
|
+
success: false,
|
|
70
|
+
message: error instanceof Error ? error.message : 'Failed to create built-in prompt',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Update an existing built-in prompt
|
|
76
|
+
*/
|
|
77
|
+
export const updateBuiltinPrompt = async (req, res) => {
|
|
78
|
+
try {
|
|
79
|
+
const { id } = req.params;
|
|
80
|
+
const updates = req.body;
|
|
81
|
+
const prompt = await getBuiltinPromptDao().update(id, updates);
|
|
82
|
+
if (!prompt) {
|
|
83
|
+
res.status(404).json({ success: false, message: 'Built-in prompt not found' });
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const response = { success: true, data: prompt };
|
|
87
|
+
res.json(response);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('Error updating built-in prompt:', error);
|
|
91
|
+
const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
|
|
92
|
+
res.status(status).json({
|
|
93
|
+
success: false,
|
|
94
|
+
message: error instanceof Error ? error.message : 'Failed to update built-in prompt',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Delete a built-in prompt
|
|
100
|
+
*/
|
|
101
|
+
export const deleteBuiltinPrompt = async (req, res) => {
|
|
102
|
+
try {
|
|
103
|
+
const { id } = req.params;
|
|
104
|
+
const deleted = await getBuiltinPromptDao().delete(id);
|
|
105
|
+
if (!deleted) {
|
|
106
|
+
res.status(404).json({ success: false, message: 'Built-in prompt not found' });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
res.json({ success: true, message: 'Built-in prompt deleted' });
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error('Error deleting built-in prompt:', error);
|
|
113
|
+
res.status(500).json({
|
|
114
|
+
success: false,
|
|
115
|
+
message: error instanceof Error ? error.message : 'Failed to delete built-in prompt',
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=builtinPromptController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtinPromptController.js","sourceRoot":"","sources":["../../src/controllers/builtinPromptController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { getBuiltinResourceDao } from '../dao/index.js';
|
|
2
|
+
import { handleReadResourceRequest } from '../services/mcpService.js';
|
|
3
|
+
/**
|
|
4
|
+
* List all built-in resources
|
|
5
|
+
*/
|
|
6
|
+
export const listBuiltinResources = async (_req, res) => {
|
|
7
|
+
try {
|
|
8
|
+
const resources = await getBuiltinResourceDao().findAll();
|
|
9
|
+
const response = {
|
|
10
|
+
success: true,
|
|
11
|
+
data: resources,
|
|
12
|
+
};
|
|
13
|
+
res.json(response);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
console.error('Error listing built-in resources:', error);
|
|
17
|
+
res.status(500).json({
|
|
18
|
+
success: false,
|
|
19
|
+
message: error instanceof Error ? error.message : 'Failed to list built-in resources',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Get a single built-in resource by ID
|
|
25
|
+
*/
|
|
26
|
+
export const getBuiltinResource = async (req, res) => {
|
|
27
|
+
try {
|
|
28
|
+
const { id } = req.params;
|
|
29
|
+
const resource = await getBuiltinResourceDao().findById(id);
|
|
30
|
+
if (!resource) {
|
|
31
|
+
res.status(404).json({ success: false, message: 'Built-in resource not found' });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const response = { success: true, data: resource };
|
|
35
|
+
res.json(response);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error('Error getting built-in resource:', error);
|
|
39
|
+
res.status(500).json({
|
|
40
|
+
success: false,
|
|
41
|
+
message: error instanceof Error ? error.message : 'Failed to get built-in resource',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Create a new built-in resource
|
|
47
|
+
*/
|
|
48
|
+
export const createBuiltinResource = async (req, res) => {
|
|
49
|
+
try {
|
|
50
|
+
const { uri, name, description, mimeType, content, enabled } = req.body;
|
|
51
|
+
if (!uri || !content) {
|
|
52
|
+
res.status(400).json({ success: false, message: 'uri and content are required' });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const resource = await getBuiltinResourceDao().create({
|
|
56
|
+
uri,
|
|
57
|
+
name,
|
|
58
|
+
description,
|
|
59
|
+
mimeType: mimeType || 'text/plain',
|
|
60
|
+
content,
|
|
61
|
+
enabled: enabled !== false,
|
|
62
|
+
});
|
|
63
|
+
const response = { success: true, data: resource };
|
|
64
|
+
res.status(201).json(response);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('Error creating built-in resource:', error);
|
|
68
|
+
const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
|
|
69
|
+
res.status(status).json({
|
|
70
|
+
success: false,
|
|
71
|
+
message: error instanceof Error ? error.message : 'Failed to create built-in resource',
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Update an existing built-in resource
|
|
77
|
+
*/
|
|
78
|
+
export const updateBuiltinResource = async (req, res) => {
|
|
79
|
+
try {
|
|
80
|
+
const { id } = req.params;
|
|
81
|
+
const updates = req.body;
|
|
82
|
+
const resource = await getBuiltinResourceDao().update(id, updates);
|
|
83
|
+
if (!resource) {
|
|
84
|
+
res.status(404).json({ success: false, message: 'Built-in resource not found' });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const response = { success: true, data: resource };
|
|
88
|
+
res.json(response);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Error updating built-in resource:', error);
|
|
92
|
+
const status = error instanceof Error && error.message.includes('already exists') ? 409 : 500;
|
|
93
|
+
res.status(status).json({
|
|
94
|
+
success: false,
|
|
95
|
+
message: error instanceof Error ? error.message : 'Failed to update built-in resource',
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Delete a built-in resource
|
|
101
|
+
*/
|
|
102
|
+
export const deleteBuiltinResource = async (req, res) => {
|
|
103
|
+
try {
|
|
104
|
+
const { id } = req.params;
|
|
105
|
+
const deleted = await getBuiltinResourceDao().delete(id);
|
|
106
|
+
if (!deleted) {
|
|
107
|
+
res.status(404).json({ success: false, message: 'Built-in resource not found' });
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
res.json({ success: true, message: 'Built-in resource deleted' });
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.error('Error deleting built-in resource:', error);
|
|
114
|
+
res.status(500).json({
|
|
115
|
+
success: false,
|
|
116
|
+
message: error instanceof Error ? error.message : 'Failed to delete built-in resource',
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Read a resource by URI (built-in or from a connected MCP server)
|
|
122
|
+
*/
|
|
123
|
+
export const readResource = async (req, res) => {
|
|
124
|
+
try {
|
|
125
|
+
const { uri } = req.body;
|
|
126
|
+
if (!uri) {
|
|
127
|
+
res.status(400).json({ success: false, message: 'uri is required' });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const result = await handleReadResourceRequest({ params: { uri } }, {});
|
|
131
|
+
const response = { success: true, data: result };
|
|
132
|
+
res.json(response);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
console.error('Error reading resource:', error);
|
|
136
|
+
res.status(500).json({
|
|
137
|
+
success: false,
|
|
138
|
+
message: error instanceof Error ? error.message : 'Failed to read resource',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=builtinResourceController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtinResourceController.js","sourceRoot":"","sources":["../../src/controllers/builtinResourceController.ts"],"names":[],"mappings":"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"}
|
|
@@ -770,6 +770,7 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
770
770
|
(typeof smartRouting.enabled === 'boolean' ||
|
|
771
771
|
typeof smartRouting.dbUrl === 'string' ||
|
|
772
772
|
typeof smartRouting.embeddingProvider === 'string' ||
|
|
773
|
+
typeof smartRouting.embeddingEncodingFormat === 'string' ||
|
|
773
774
|
typeof smartRouting.openaiApiBaseUrl === 'string' ||
|
|
774
775
|
typeof smartRouting.openaiApiKey === 'string' ||
|
|
775
776
|
typeof smartRouting.openaiApiEmbeddingModel === 'string' ||
|
|
@@ -944,6 +945,11 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
944
945
|
systemConfig.smartRouting.embeddingProvider =
|
|
945
946
|
normalized === 'azure' || normalized === 'azure_openai' ? 'azure_openai' : 'openai';
|
|
946
947
|
}
|
|
948
|
+
if (typeof smartRouting.embeddingEncodingFormat === 'string') {
|
|
949
|
+
const normalized = smartRouting.embeddingEncodingFormat.trim().toLowerCase();
|
|
950
|
+
systemConfig.smartRouting.embeddingEncodingFormat =
|
|
951
|
+
normalized === 'base64' || normalized === 'float' ? normalized : 'auto';
|
|
952
|
+
}
|
|
947
953
|
if (typeof smartRouting.enabled === 'boolean') {
|
|
948
954
|
// If enabling Smart Routing, validate required fields
|
|
949
955
|
if (smartRouting.enabled) {
|
|
@@ -986,29 +992,30 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
986
992
|
systemConfig.smartRouting.enabled = smartRouting.enabled;
|
|
987
993
|
}
|
|
988
994
|
if (typeof smartRouting.dbUrl === 'string') {
|
|
989
|
-
systemConfig.smartRouting.dbUrl = smartRouting.dbUrl;
|
|
995
|
+
systemConfig.smartRouting.dbUrl = smartRouting.dbUrl?.trim();
|
|
990
996
|
}
|
|
991
997
|
if (typeof smartRouting.openaiApiBaseUrl === 'string') {
|
|
992
|
-
systemConfig.smartRouting.openaiApiBaseUrl = smartRouting.openaiApiBaseUrl;
|
|
998
|
+
systemConfig.smartRouting.openaiApiBaseUrl = smartRouting.openaiApiBaseUrl?.trim();
|
|
993
999
|
}
|
|
994
1000
|
if (typeof smartRouting.openaiApiKey === 'string') {
|
|
995
|
-
systemConfig.smartRouting.openaiApiKey = smartRouting.openaiApiKey;
|
|
1001
|
+
systemConfig.smartRouting.openaiApiKey = smartRouting.openaiApiKey?.trim();
|
|
996
1002
|
}
|
|
997
1003
|
if (typeof smartRouting.openaiApiEmbeddingModel === 'string') {
|
|
998
|
-
systemConfig.smartRouting.openaiApiEmbeddingModel =
|
|
1004
|
+
systemConfig.smartRouting.openaiApiEmbeddingModel =
|
|
1005
|
+
smartRouting.openaiApiEmbeddingModel?.trim();
|
|
999
1006
|
}
|
|
1000
1007
|
if (typeof smartRouting.azureOpenaiEndpoint === 'string') {
|
|
1001
|
-
systemConfig.smartRouting.azureOpenaiEndpoint = smartRouting.azureOpenaiEndpoint;
|
|
1008
|
+
systemConfig.smartRouting.azureOpenaiEndpoint = smartRouting.azureOpenaiEndpoint?.trim();
|
|
1002
1009
|
}
|
|
1003
1010
|
if (typeof smartRouting.azureOpenaiApiKey === 'string') {
|
|
1004
|
-
systemConfig.smartRouting.azureOpenaiApiKey = smartRouting.azureOpenaiApiKey;
|
|
1011
|
+
systemConfig.smartRouting.azureOpenaiApiKey = smartRouting.azureOpenaiApiKey?.trim();
|
|
1005
1012
|
}
|
|
1006
1013
|
if (typeof smartRouting.azureOpenaiApiVersion === 'string') {
|
|
1007
|
-
systemConfig.smartRouting.azureOpenaiApiVersion = smartRouting.azureOpenaiApiVersion;
|
|
1014
|
+
systemConfig.smartRouting.azureOpenaiApiVersion = smartRouting.azureOpenaiApiVersion?.trim();
|
|
1008
1015
|
}
|
|
1009
1016
|
if (typeof smartRouting.azureOpenaiEmbeddingDeployment === 'string') {
|
|
1010
1017
|
systemConfig.smartRouting.azureOpenaiEmbeddingDeployment =
|
|
1011
|
-
smartRouting.azureOpenaiEmbeddingDeployment;
|
|
1018
|
+
smartRouting.azureOpenaiEmbeddingDeployment?.trim();
|
|
1012
1019
|
}
|
|
1013
1020
|
if (typeof smartRouting.progressiveDisclosure === 'boolean') {
|
|
1014
1021
|
systemConfig.smartRouting.progressiveDisclosure = smartRouting.progressiveDisclosure;
|
|
@@ -1018,6 +1025,8 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1018
1025
|
const hasConfigChanged = previousSmartRoutingConfig.dbUrl !== systemConfig.smartRouting.dbUrl ||
|
|
1019
1026
|
previousSmartRoutingConfig.embeddingProvider !==
|
|
1020
1027
|
systemConfig.smartRouting.embeddingProvider ||
|
|
1028
|
+
previousSmartRoutingConfig.embeddingEncodingFormat !==
|
|
1029
|
+
systemConfig.smartRouting.embeddingEncodingFormat ||
|
|
1021
1030
|
previousSmartRoutingConfig.openaiApiBaseUrl !==
|
|
1022
1031
|
systemConfig.smartRouting.openaiApiBaseUrl ||
|
|
1023
1032
|
previousSmartRoutingConfig.openaiApiKey !== systemConfig.smartRouting.openaiApiKey ||
|
|
@@ -1251,4 +1260,121 @@ export const updatePromptDescription = async (req, res) => {
|
|
|
1251
1260
|
});
|
|
1252
1261
|
}
|
|
1253
1262
|
};
|
|
1263
|
+
// Toggle resource status for a specific server
|
|
1264
|
+
export const toggleResource = async (req, res) => {
|
|
1265
|
+
try {
|
|
1266
|
+
// Decode URL-encoded parameters to handle slashes in server/resource names
|
|
1267
|
+
const serverName = decodeURIComponent(req.params.serverName);
|
|
1268
|
+
const resourceUri = decodeURIComponent(req.params.resourceUri);
|
|
1269
|
+
const { enabled } = req.body;
|
|
1270
|
+
if (!serverName || !resourceUri) {
|
|
1271
|
+
res.status(400).json({
|
|
1272
|
+
success: false,
|
|
1273
|
+
message: 'Server name and resource URI are required',
|
|
1274
|
+
});
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
if (typeof enabled !== 'boolean') {
|
|
1278
|
+
res.status(400).json({
|
|
1279
|
+
success: false,
|
|
1280
|
+
message: 'Enabled status must be a boolean',
|
|
1281
|
+
});
|
|
1282
|
+
return;
|
|
1283
|
+
}
|
|
1284
|
+
const serverDao = getServerDao();
|
|
1285
|
+
const server = await serverDao.findById(serverName);
|
|
1286
|
+
if (!server) {
|
|
1287
|
+
res.status(404).json({
|
|
1288
|
+
success: false,
|
|
1289
|
+
message: 'Server not found',
|
|
1290
|
+
});
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
// Initialize resources config if it doesn't exist
|
|
1294
|
+
const resources = server.resources || {};
|
|
1295
|
+
// Set the resource's enabled state (preserve existing description if any)
|
|
1296
|
+
resources[resourceUri] = { ...resources[resourceUri], enabled };
|
|
1297
|
+
// Update via DAO (supports both file and database modes)
|
|
1298
|
+
const result = await serverDao.updateResources(serverName, resources);
|
|
1299
|
+
if (!result) {
|
|
1300
|
+
res.status(500).json({
|
|
1301
|
+
success: false,
|
|
1302
|
+
message: 'Failed to save settings',
|
|
1303
|
+
});
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
// Notify that tools/resources metadata has changed
|
|
1307
|
+
notifyToolChanged();
|
|
1308
|
+
res.json({
|
|
1309
|
+
success: true,
|
|
1310
|
+
message: `Resource ${resourceUri} ${enabled ? 'enabled' : 'disabled'} successfully`,
|
|
1311
|
+
});
|
|
1312
|
+
}
|
|
1313
|
+
catch (error) {
|
|
1314
|
+
res.status(500).json({
|
|
1315
|
+
success: false,
|
|
1316
|
+
message: 'Internal server error',
|
|
1317
|
+
});
|
|
1318
|
+
}
|
|
1319
|
+
};
|
|
1320
|
+
// Update resource description for a specific server
|
|
1321
|
+
export const updateResourceDescription = async (req, res) => {
|
|
1322
|
+
try {
|
|
1323
|
+
// Decode URL-encoded parameters to handle slashes in server/resource names
|
|
1324
|
+
const serverName = decodeURIComponent(req.params.serverName);
|
|
1325
|
+
const resourceUri = decodeURIComponent(req.params.resourceUri);
|
|
1326
|
+
const { description } = req.body;
|
|
1327
|
+
if (!serverName || !resourceUri) {
|
|
1328
|
+
res.status(400).json({
|
|
1329
|
+
success: false,
|
|
1330
|
+
message: 'Server name and resource URI are required',
|
|
1331
|
+
});
|
|
1332
|
+
return;
|
|
1333
|
+
}
|
|
1334
|
+
if (typeof description !== 'string') {
|
|
1335
|
+
res.status(400).json({
|
|
1336
|
+
success: false,
|
|
1337
|
+
message: 'Description must be a string',
|
|
1338
|
+
});
|
|
1339
|
+
return;
|
|
1340
|
+
}
|
|
1341
|
+
const serverDao = getServerDao();
|
|
1342
|
+
const server = await serverDao.findById(serverName);
|
|
1343
|
+
if (!server) {
|
|
1344
|
+
res.status(404).json({
|
|
1345
|
+
success: false,
|
|
1346
|
+
message: 'Server not found',
|
|
1347
|
+
});
|
|
1348
|
+
return;
|
|
1349
|
+
}
|
|
1350
|
+
// Initialize resources config if it doesn't exist
|
|
1351
|
+
const resources = server.resources || {};
|
|
1352
|
+
// Set the resource's description
|
|
1353
|
+
if (!resources[resourceUri]) {
|
|
1354
|
+
resources[resourceUri] = { enabled: true };
|
|
1355
|
+
}
|
|
1356
|
+
resources[resourceUri].description = description;
|
|
1357
|
+
// Update via DAO (supports both file and database modes)
|
|
1358
|
+
const result = await serverDao.updateResources(serverName, resources);
|
|
1359
|
+
if (!result) {
|
|
1360
|
+
res.status(500).json({
|
|
1361
|
+
success: false,
|
|
1362
|
+
message: 'Failed to save settings',
|
|
1363
|
+
});
|
|
1364
|
+
return;
|
|
1365
|
+
}
|
|
1366
|
+
// Notify that tools/resources metadata has changed
|
|
1367
|
+
notifyToolChanged();
|
|
1368
|
+
res.json({
|
|
1369
|
+
success: true,
|
|
1370
|
+
message: `Resource ${resourceUri} description updated successfully`,
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
catch (error) {
|
|
1374
|
+
res.status(500).json({
|
|
1375
|
+
success: false,
|
|
1376
|
+
message: 'Internal server error',
|
|
1377
|
+
});
|
|
1378
|
+
}
|
|
1379
|
+
};
|
|
1254
1380
|
//# sourceMappingURL=serverController.js.map
|