fa-mcp-sdk 0.2.146 → 0.2.182

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 (153) hide show
  1. package/README.md +1 -1
  2. package/bin/fa-mcp.js +66 -54
  3. package/cli-template/.env.example +2 -2
  4. package/cli-template/{fa-mcp-sdk-spec.md → FA-MCP-SDK.md} +699 -42
  5. package/cli-template/README.md +2 -2
  6. package/cli-template/package.json +1 -1
  7. package/cli-template/r/TEST HTTP.xml +9 -0
  8. package/cli-template/{run/TEST SSE.run.xml → r/TEST SSE.xml } +2 -2
  9. package/cli-template/{run/TEST STDIO.run.xml → r/TEST STDIO.xml } +2 -2
  10. package/cli-template/r/generate-token.xml +14 -0
  11. package/cli-template/{run/kill-server.run.xml → r/kill-server.xml} +2 -2
  12. package/cli-template/{run/kill-token-gen-server.xml → r/remove-nul.xml} +4 -5
  13. package/{cli-template/config → config}/_local.yaml +28 -14
  14. package/{cli-template/config → config}/custom-environment-variables.yaml +3 -0
  15. package/{cli-template/config → config}/default.yaml +50 -10
  16. package/{cli-template/config → config}/development.yaml +4 -4
  17. package/config/local.yaml +89 -0
  18. package/{cli-template/config → config}/production.yaml +4 -4
  19. package/dist/core/_types_/active-directory-config.d.ts +3 -0
  20. package/dist/core/_types_/active-directory-config.d.ts.map +1 -1
  21. package/dist/core/_types_/config.d.ts +5 -1
  22. package/dist/core/_types_/config.d.ts.map +1 -1
  23. package/dist/core/_types_/types.d.ts +40 -1
  24. package/dist/core/_types_/types.d.ts.map +1 -1
  25. package/dist/core/ad/group-checker.d.ts +13 -0
  26. package/dist/core/ad/group-checker.d.ts.map +1 -0
  27. package/dist/core/ad/group-checker.js +86 -0
  28. package/dist/core/ad/group-checker.js.map +1 -0
  29. package/dist/core/auth/admin-auth.d.ts +16 -0
  30. package/dist/core/auth/admin-auth.d.ts.map +1 -0
  31. package/dist/core/auth/admin-auth.js +159 -0
  32. package/dist/core/auth/admin-auth.js.map +1 -0
  33. package/dist/core/auth/basic.d.ts +6 -0
  34. package/dist/core/auth/basic.d.ts.map +1 -0
  35. package/dist/core/auth/basic.js +26 -0
  36. package/dist/core/auth/basic.js.map +1 -0
  37. package/dist/core/auth/{jwt-validation.d.ts → jwt.d.ts} +4 -3
  38. package/dist/core/auth/jwt.d.ts.map +1 -0
  39. package/dist/core/auth/{jwt-validation.js → jwt.js} +9 -19
  40. package/dist/core/auth/jwt.js.map +1 -0
  41. package/dist/core/auth/middleware.d.ts.map +1 -1
  42. package/dist/core/auth/middleware.js +3 -3
  43. package/dist/core/auth/middleware.js.map +1 -1
  44. package/dist/core/auth/multi-auth.d.ts +14 -6
  45. package/dist/core/auth/multi-auth.d.ts.map +1 -1
  46. package/dist/core/auth/multi-auth.js +151 -141
  47. package/dist/core/auth/multi-auth.js.map +1 -1
  48. package/dist/core/auth/permanent.d.ts +6 -0
  49. package/dist/core/auth/permanent.d.ts.map +1 -0
  50. package/dist/core/auth/permanent.js +15 -0
  51. package/dist/core/auth/permanent.js.map +1 -0
  52. package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.d.ts +1 -1
  53. package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.d.ts.map +1 -1
  54. package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.js +8 -10
  55. package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.js.map +1 -1
  56. package/dist/core/auth/token-generator/ntlm/ntlm-integration.d.ts.map +1 -1
  57. package/dist/core/auth/token-generator/ntlm/ntlm-integration.js +9 -2
  58. package/dist/core/auth/token-generator/ntlm/ntlm-integration.js.map +1 -1
  59. package/dist/core/auth/token-generator/server.d.ts.map +1 -1
  60. package/dist/core/auth/token-generator/server.js +59 -25
  61. package/dist/core/auth/token-generator/server.js.map +1 -1
  62. package/dist/core/auth/types.d.ts +4 -3
  63. package/dist/core/auth/types.d.ts.map +1 -1
  64. package/dist/core/bootstrap/startup-info.d.ts.map +1 -1
  65. package/dist/core/bootstrap/startup-info.js +19 -0
  66. package/dist/core/bootstrap/startup-info.js.map +1 -1
  67. package/dist/core/consul/access-points-updater.js +1 -1
  68. package/dist/core/consul/access-points-updater.js.map +1 -1
  69. package/dist/core/consul/get-consul-api.d.ts +1 -1
  70. package/dist/core/consul/get-consul-api.d.ts.map +1 -1
  71. package/dist/core/consul/get-consul-api.js +1 -1
  72. package/dist/core/consul/get-consul-api.js.map +1 -1
  73. package/dist/core/consul/register.d.ts +1 -1
  74. package/dist/core/consul/register.d.ts.map +1 -1
  75. package/dist/core/index.d.ts +4 -2
  76. package/dist/core/index.d.ts.map +1 -1
  77. package/dist/core/index.js +3 -1
  78. package/dist/core/index.js.map +1 -1
  79. package/dist/core/init-mcp-server.d.ts.map +1 -1
  80. package/dist/core/init-mcp-server.js +1 -1
  81. package/dist/core/init-mcp-server.js.map +1 -1
  82. package/dist/core/utils/testing/McpSseClient.js.map +1 -1
  83. package/dist/core/web/admin-router.d.ts +10 -0
  84. package/dist/core/web/admin-router.d.ts.map +1 -0
  85. package/dist/core/web/admin-router.js +309 -0
  86. package/dist/core/web/admin-router.js.map +1 -0
  87. package/dist/core/web/favicon-svg.d.ts +1 -1
  88. package/dist/core/web/favicon-svg.d.ts.map +1 -1
  89. package/dist/core/web/favicon-svg.js +21 -3
  90. package/dist/core/web/favicon-svg.js.map +1 -1
  91. package/dist/core/web/home-api.d.ts +7 -0
  92. package/dist/core/web/home-api.d.ts.map +1 -0
  93. package/dist/core/web/home-api.js +106 -0
  94. package/dist/core/web/home-api.js.map +1 -0
  95. package/dist/core/web/server-http.d.ts +1 -0
  96. package/dist/core/web/server-http.d.ts.map +1 -1
  97. package/dist/core/web/server-http.js +60 -25
  98. package/dist/core/web/server-http.js.map +1 -1
  99. package/dist/core/web/static/home/index.html +218 -0
  100. package/dist/core/web/static/home/script.js +643 -0
  101. package/dist/core/web/{about-page/css.js → static/styles.css} +435 -105
  102. package/dist/core/web/static/token-gen/index.html +105 -0
  103. package/dist/core/web/static/token-gen/jwt-icon.svg +3 -0
  104. package/dist/core/web/static/token-gen/logout.svg +4 -0
  105. package/dist/core/web/static/token-gen/script.js +553 -0
  106. package/dist/core/web/static/token-gen/user.svg +4 -0
  107. package/dist/core/web/svg-icons.d.ts +7 -0
  108. package/dist/core/web/svg-icons.d.ts.map +1 -0
  109. package/dist/core/web/svg-icons.js +78 -0
  110. package/dist/core/web/svg-icons.js.map +1 -0
  111. package/package.json +7 -3
  112. package/scripts/copy-static.js +31 -0
  113. package/src/template/_types_/custom-config.ts +83 -0
  114. package/src/template/asset/logo.svg +4 -0
  115. package/src/template/start.ts +3 -3
  116. package/src/template/tools/handle-tool-call.ts +2 -1
  117. package/src/tests/mcp/test-http.js +10 -2
  118. package/src/tests/mcp/test-sse.js +10 -2
  119. package/src/tests/mcp/test-stdio.js +1 -2
  120. package/cli-template/run/TEST HTTP.run.xml +0 -5
  121. package/cli-template/run/TEST search.run.xml +0 -11
  122. package/cli-template/run/remove-nul.js.run.xml +0 -5
  123. package/dist/core/auth/jwt-validation.d.ts.map +0 -1
  124. package/dist/core/auth/jwt-validation.js.map +0 -1
  125. package/dist/core/auth/token-generator/html.d.ts +0 -9
  126. package/dist/core/auth/token-generator/html.d.ts.map +0 -1
  127. package/dist/core/auth/token-generator/html.js +0 -862
  128. package/dist/core/auth/token-generator/html.js.map +0 -1
  129. package/dist/core/web/about-page/css.d.ts +0 -2
  130. package/dist/core/web/about-page/css.d.ts.map +0 -1
  131. package/dist/core/web/about-page/css.js.map +0 -1
  132. package/dist/core/web/about-page/render.d.ts +0 -2
  133. package/dist/core/web/about-page/render.d.ts.map +0 -1
  134. package/dist/core/web/about-page/render.js +0 -773
  135. package/dist/core/web/about-page/render.js.map +0 -1
  136. package/src/template/_examples/multi-auth-examples.ts +0 -541
  137. /package/cli-template/{run/== START ==.run.xml → r/== START ==.xml} +0 -0
  138. /package/cli-template/{run/cb.run.xml → r/cb.xml} +0 -0
  139. /package/cli-template/{run/ci.run.xml → r/ci.xml} +0 -0
  140. /package/cli-template/{run/lint.run.xml → r/lint.xml} +0 -0
  141. /package/cli-template/{run/lint_fix.run.xml → r/lint_fix.xml} +0 -0
  142. /package/cli-template/{run/reinstall.run.xml → r/reinstall.xml} +0 -0
  143. /package/{cli-template/config → config}/test.yaml +0 -0
  144. /package/{src/template/asset/favicon.svg → dist/core/web/static/logo.svg} +0 -0
  145. /package/{cli-template/scripts → scripts}/kill-port.js +0 -0
  146. /package/{cli-template/scripts → scripts}/npm/patch_node_modules.js +0 -0
  147. /package/{cli-template/scripts → scripts}/npm/run.js +0 -0
  148. /package/{cli-template/scripts → scripts}/npm/yarn-ci.ps1 +0 -0
  149. /package/{cli-template/scripts → scripts}/npm/yarn-ci.sh +0 -0
  150. /package/{cli-template/scripts → scripts}/npm/yarn-reinstall.ps1 +0 -0
  151. /package/{cli-template/scripts → scripts}/npm/yarn-reinstall.sh +0 -0
  152. /package/{cli-template/scripts → scripts}/pre-commit +0 -0
  153. /package/{cli-template/scripts → scripts}/remove-nul.js +0 -0
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Admin panel router - Token Generator & Validator
3
+ * Endpoints for JWT token generation and validation
4
+ */
5
+ import { Router } from 'express';
6
+ import chalk from 'chalk';
7
+ import { dirname, join } from 'path';
8
+ import { fileURLToPath } from 'url';
9
+ import { appConfig, getProjectData } from '../bootstrap/init-config.js';
10
+ import { checkJwtToken, generateToken } from '../auth/jwt.js';
11
+ import { isNTLMEnabled } from '../auth/token-generator/ntlm/ntlm-domain-config.js';
12
+ import { getSessionStats } from '../auth/token-generator/ntlm/ntlm-session-storage.js';
13
+ import { getLoginPageHTML } from '../auth/token-generator/ntlm/ntlm-templates.js';
14
+ import { createAdminAuthMW } from '../auth/admin-auth.js';
15
+ import { logger as lgr } from '../logger.js';
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = dirname(__filename);
18
+ // Path to static files (relative to compiled JS location in dist/)
19
+ const staticPath = join(__dirname, 'static/token-gen');
20
+ const logger = lgr.getSubLogger({ name: chalk.bgCyan('admin-router') });
21
+ const timeToSeconds = {
22
+ minutes: 60,
23
+ hours: 60 * 60,
24
+ days: 60 * 60 * 24,
25
+ months: 60 * 60 * 24 * 30,
26
+ years: 60 * 60 * 24 * 365,
27
+ };
28
+ const { adminAuth } = appConfig.webServer || {};
29
+ const adminAuthType = adminAuth?.enabled === true ? adminAuth.type : undefined;
30
+ const ntlmEnabled = adminAuthType === 'ntlm' && isNTLMEnabled;
31
+ // Check if auth type requires Bearer token (handled by frontend modal)
32
+ const requiresBearerToken = adminAuthType === 'permanentServerTokens' || adminAuthType === 'jwtToken';
33
+ /**
34
+ * Checks custom authorization for Token Generator access
35
+ * Returns null if authorized, or AuthResult with error if not
36
+ */
37
+ async function checkTokenGenAuthorization(req) {
38
+ const projectData = getProjectData();
39
+ const handler = projectData?.tokenGenAuthHandler;
40
+ // If no custom handler is configured, allow access
41
+ if (typeof handler !== 'function') {
42
+ return null;
43
+ }
44
+ // Build input based on auth type
45
+ const input = {
46
+ user: req.ntlm?.username || 'Unknown',
47
+ authType: (adminAuthType || 'permanentServerTokens'),
48
+ };
49
+ // Add domain for NTLM
50
+ if (adminAuthType === 'ntlm' && req.ntlm?.domain) {
51
+ input.domain = req.ntlm.domain;
52
+ }
53
+ // Add payload for JWT
54
+ if (adminAuthType === 'jwtToken') {
55
+ input.payload = req.authPayload;
56
+ }
57
+ try {
58
+ const result = await handler(input);
59
+ if (!result.success) {
60
+ logger.info(`Token Generator authorization denied for ${input.user}: ${result.error}`);
61
+ return result;
62
+ }
63
+ return null; // Authorized
64
+ }
65
+ catch (error) {
66
+ logger.error('Token Generator authorization handler error:', error);
67
+ return {
68
+ success: false,
69
+ error: `Authorization check failed: ${error.message}`,
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * Creates admin router with all token generation endpoints
75
+ */
76
+ export function createAdminRouter() {
77
+ const router = Router();
78
+ // ============================
79
+ // PUBLIC ENDPOINTS (no auth required)
80
+ // ============================
81
+ // Public endpoint - auth config (frontend needs this to know if token modal is required)
82
+ router.get('/api/auth-config', (req, res) => {
83
+ res.json({
84
+ success: true,
85
+ authType: adminAuthType || null,
86
+ requiresBearerToken,
87
+ timestamp: new Date().toISOString(),
88
+ });
89
+ });
90
+ // Main admin page - always serve HTML (auth is handled by frontend for Bearer tokens)
91
+ // For NTLM/Basic - middleware will handle auth before this route
92
+ if (requiresBearerToken) {
93
+ // For Bearer token auth: serve page without auth, frontend will handle token modal
94
+ router.get('/', (req, res) => {
95
+ logger.info('Admin page accessed (Bearer token auth - frontend handles authentication)');
96
+ res.sendFile(join(staticPath, 'index.html'));
97
+ });
98
+ // Logout for Bearer token auth - just return success, frontend clears sessionStorage
99
+ router.get('/logout', (req, res) => {
100
+ res.setHeader('Clear-Site-Data', '"storage"');
101
+ return res.status(200).json({
102
+ success: true,
103
+ message: 'Logged out successfully',
104
+ });
105
+ });
106
+ }
107
+ // ============================
108
+ // PROTECTED ENDPOINTS (auth required)
109
+ // ============================
110
+ // Apply admin authentication middleware to protected routes
111
+ const adminAuthMW = createAdminAuthMW();
112
+ router.use(adminAuthMW);
113
+ // Note: Static files (CSS, JS) are served globally at /static/token-gen/ by server-http.ts
114
+ // Main admin page - for NTLM/Basic auth (middleware already authenticated)
115
+ if (!requiresBearerToken) {
116
+ router.get('/', (req, res) => {
117
+ const username = req.ntlm?.username || 'Unknown';
118
+ const domain = req.ntlm?.domain || 'Unknown';
119
+ const isAuthenticated = req.ntlm?.isAuthenticated || false;
120
+ logger.info(`Admin page accessed by: ${domain}\\${username} (Authenticated: ${isAuthenticated})`);
121
+ res.sendFile(join(staticPath, 'index.html'));
122
+ });
123
+ // Logout for NTLM auth
124
+ router.get('/logout', (req, res) => {
125
+ logger.info(`Logout requested by: ${req.ntlm?.domain || 'Unknown'}\\${req.ntlm?.username || 'Unknown'}`);
126
+ if (adminAuthType === 'ntlm') {
127
+ res.setHeader('WWW-Authenticate', 'NTLM');
128
+ res.setHeader('Clear-Site-Data', '"cookies", "storage"');
129
+ return res.status(401).send('Authentication required - please login again');
130
+ }
131
+ // For basic auth
132
+ res.setHeader('Clear-Site-Data', '"cookies", "storage"');
133
+ return res.status(401).json({
134
+ success: true,
135
+ message: 'Logged out successfully',
136
+ });
137
+ });
138
+ }
139
+ // Login page (for NTLM)
140
+ router.get('/login', (req, res) => {
141
+ res.send(getLoginPageHTML(req.ntlm?.username || ''));
142
+ });
143
+ // Debug endpoint for session stats (development only)
144
+ router.get('/debug/sessions', (req, res) => {
145
+ if (process.env.NODE_ENV === 'production') {
146
+ return res.status(404).json({ error: 'Not available in production' });
147
+ }
148
+ const stats = getSessionStats();
149
+ return res.json({
150
+ message: 'Admin Panel Session Statistics',
151
+ timestamp: new Date().toISOString(),
152
+ ...stats,
153
+ });
154
+ });
155
+ // API: Generate token
156
+ router.post('/api/generate-token', async (req, res) => {
157
+ try {
158
+ // Check custom authorization
159
+ const authError = await checkTokenGenAuthorization(req);
160
+ if (authError) {
161
+ return res.status(403).json({
162
+ success: false,
163
+ error: authError.error || 'Authorization denied',
164
+ });
165
+ }
166
+ const username = req.ntlm?.username || 'Unknown';
167
+ const domain = req.ntlm?.domain || 'Unknown';
168
+ const authenticatedUser = `${domain}\\${username}`;
169
+ const { user, timeValue, timeUnit, payload } = req.body;
170
+ if (!user || !timeValue || !timeUnit) {
171
+ logger.info(`Token generation failed (missing parameters) by: ${authenticatedUser}`);
172
+ return res.json({
173
+ success: false,
174
+ error: 'Need to fill in the user and token lifetime',
175
+ });
176
+ }
177
+ const multiplier = timeToSeconds[timeUnit];
178
+ if (!multiplier) {
179
+ logger.info(`Token generation failed (invalid time unit) by: ${authenticatedUser}`);
180
+ return res.json({
181
+ success: false,
182
+ error: 'Invalid Time Unit',
183
+ });
184
+ }
185
+ const liveTimeSec = timeValue * multiplier;
186
+ const token = generateToken(user, liveTimeSec, payload || {});
187
+ logger.info(`Generated token for user: ${user}, duration: ${timeValue} ${timeUnit}, requested by: ${authenticatedUser}`);
188
+ return res.json({
189
+ success: true,
190
+ token: token,
191
+ });
192
+ }
193
+ catch (error) {
194
+ const username = req.ntlm?.username || 'Unknown';
195
+ const domain = req.ntlm?.domain || 'Unknown';
196
+ logger.error(`Error generating token for ${domain}\\${username}:`, error);
197
+ return res.json({
198
+ success: false,
199
+ error: error.message,
200
+ });
201
+ }
202
+ });
203
+ // API: Validate token
204
+ router.post('/api/validate-token', (req, res) => {
205
+ try {
206
+ const username = req.ntlm?.username || 'Unknown';
207
+ const domain = req.ntlm?.domain || 'Unknown';
208
+ const authenticatedUser = `${domain}\\${username}`;
209
+ const { token } = req.body;
210
+ if (!token) {
211
+ logger.info(`Token validation failed (no token provided) by: ${authenticatedUser}`);
212
+ return res.json({
213
+ success: false,
214
+ error: 'Token Not Transferred',
215
+ });
216
+ }
217
+ const result = checkJwtToken({ token });
218
+ if (result.errorReason) {
219
+ logger.info(`Token validation failed (${result.errorReason}) by: ${authenticatedUser}`);
220
+ return res.json({
221
+ success: false,
222
+ error: result.errorReason,
223
+ });
224
+ }
225
+ logger.info(`Token validated successfully for user: ${result.payload?.user}, requested by: ${authenticatedUser}`);
226
+ return res.json({
227
+ success: true,
228
+ payload: result.payload,
229
+ });
230
+ }
231
+ catch (error) {
232
+ const username = req.ntlm?.username || 'Unknown';
233
+ const domain = req.ntlm?.domain || 'Unknown';
234
+ logger.error(`Error validating token for ${domain}\\${username}:`, error);
235
+ return res.json({
236
+ success: false,
237
+ error: error.message,
238
+ });
239
+ }
240
+ });
241
+ // API: Service info
242
+ router.get('/api/service-info', (req, res) => {
243
+ try {
244
+ const username = req.ntlm?.username || 'Unknown';
245
+ const domain = req.ntlm?.domain || 'Unknown';
246
+ const isAuthenticated = req.ntlm?.isAuthenticated || false;
247
+ logger.info(`Service info requested by: ${domain}\\${username}`);
248
+ res.json({
249
+ success: true,
250
+ serviceName: appConfig.name,
251
+ primaryColor: appConfig.uiColor.primary,
252
+ authenticatedUser: `${domain}\\${username}`,
253
+ isAuthenticated,
254
+ authType: adminAuthType,
255
+ ntlmEnabled,
256
+ timestamp: new Date().toISOString(),
257
+ });
258
+ }
259
+ catch (error) {
260
+ const username = req.ntlm?.username || 'Unknown';
261
+ const domain = req.ntlm?.domain || 'Unknown';
262
+ logger.error(`Error getting service info for ${domain}\\${username}:`, error);
263
+ res.json({
264
+ success: false,
265
+ error: error.message,
266
+ serviceName: appConfig.name,
267
+ authType: adminAuthType,
268
+ ntlmEnabled,
269
+ });
270
+ }
271
+ });
272
+ // API: Auth status
273
+ router.get('/api/auth-status', (req, res) => {
274
+ try {
275
+ const username = req.ntlm?.username || 'Unknown';
276
+ const domain = req.ntlm?.domain || 'Unknown';
277
+ const isAuthenticated = req.ntlm?.isAuthenticated || false;
278
+ // Determine if logout is available (for all auth types except disabled)
279
+ const canLogout = isAuthenticated && !!adminAuthType;
280
+ // Format user display based on auth type
281
+ let userDisplay = null;
282
+ if (isAuthenticated) {
283
+ if (adminAuthType === 'ntlm') {
284
+ userDisplay = `${domain}\\${username}`;
285
+ }
286
+ else {
287
+ userDisplay = username;
288
+ }
289
+ }
290
+ res.json({
291
+ success: true,
292
+ authType: adminAuthType || null,
293
+ isAuthenticated,
294
+ user: userDisplay,
295
+ canLogout,
296
+ timestamp: new Date().toISOString(),
297
+ });
298
+ }
299
+ catch (error) {
300
+ res.json({
301
+ success: false,
302
+ error: error.message,
303
+ authType: adminAuthType || null,
304
+ });
305
+ }
306
+ });
307
+ return router;
308
+ }
309
+ //# sourceMappingURL=admin-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-router.js","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { RequestHandler } from 'express';
2
- export declare const getFaviconSvg: () => string;
2
+ export declare const getLogoSvg: () => string;
3
3
  /**
4
4
  * Serves the favicon located by the given `path`.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"favicon-svg.d.ts","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAgB1E,eAAO,MAAM,aAAa,QAAO,MAIhC,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,cAyB7B,CAAC"}
1
+ {"version":3,"file":"favicon-svg.d.ts","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAoC1E,eAAO,MAAM,UAAU,QAAO,MAI7B,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,cAyB7B,CAAC"}
@@ -1,6 +1,24 @@
1
1
  import crypto from 'crypto';
2
+ import { readFileSync } from 'fs';
3
+ import { dirname, join } from 'path';
4
+ import { fileURLToPath } from 'url';
2
5
  import { config, getProjectData } from '../bootstrap/init-config.js';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
3
8
  const ONE_YEAR_MS = 60 * 60 * 24 * 365 * 1000; // 1 year
9
+ // Default logo SVG (loaded from static/logo.svg)
10
+ let defaultLogoSvg = null;
11
+ const loadDefaultLogo = () => {
12
+ if (defaultLogoSvg === null) {
13
+ try {
14
+ defaultLogoSvg = readFileSync(join(__dirname, 'static/logo.svg'), 'utf-8');
15
+ }
16
+ catch {
17
+ defaultLogoSvg = '<svg><!-- No logo provided --></svg>';
18
+ }
19
+ }
20
+ return defaultLogoSvg;
21
+ };
4
22
  const etagS = (entity) => {
5
23
  // compute hash of entity
6
24
  const hash = crypto
@@ -10,9 +28,9 @@ const etagS = (entity) => {
10
28
  .substring(0, 27);
11
29
  return `"${Buffer.byteLength(entity, 'utf8').toString(16)}-${hash}"`;
12
30
  };
13
- export const getFaviconSvg = () => {
31
+ export const getLogoSvg = () => {
14
32
  const { assets } = getProjectData();
15
- let svg = assets?.favicon || '<svg><!-- No favicon provided --></svg>';
33
+ let svg = assets?.logoSvg || loadDefaultLogo();
16
34
  return svg.replace('fill="currentColor"', `fill="${config.uiColor.primary}"`);
17
35
  };
18
36
  /**
@@ -32,7 +50,7 @@ export const faviconSvg = () => {
32
50
  return;
33
51
  }
34
52
  // Lazy load SVG when needed
35
- const svg = getFaviconSvg();
53
+ const svg = getLogoSvg();
36
54
  res.setHeader('Cache-Control', `public, max-age=${Math.floor(ONE_YEAR_MS / 1000)}`);
37
55
  res.setHeader('ETag', etagS(svg));
38
56
  res.setHeader('Content-Length', svg.length);
@@ -1 +1 @@
1
- {"version":3,"file":"favicon-svg.js","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS;AAExD,MAAM,KAAK,GAAG,CAAC,MAAc,EAAU,EAAE;IACvC,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM;SAChB,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;SAChB,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE;IACxC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,GAAG,GAAW,MAAM,EAAE,OAAO,IAAI,yCAAyC,CAAC;IAC/E,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AAChF,CAAC,CAAC;AAGF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAmB,EAAE;IAC7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACtD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;YAC7C,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAE5B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,mBAAmB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC/C,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"favicon-svg.js","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Home page API endpoint
3
+ * Returns all dynamic data needed for the home page
4
+ */
5
+ import { Request, Response } from 'express';
6
+ export declare function handleHomeInfo(_req: Request, res: Response): Promise<void>;
7
+ //# sourceMappingURL=home-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-api.d.ts","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA0B5C,wBAAsB,cAAc,CAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFjF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Home page API endpoint
3
+ * Returns all dynamic data needed for the home page
4
+ */
5
+ import { getResourcesList } from '../mcp/resources.js';
6
+ import { getPromptsList } from '../mcp/prompts.js';
7
+ import { getMainDBConnectionStatus } from '../db/pg-db.js';
8
+ import { getLogoSvg } from './favicon-svg.js';
9
+ import { appConfig, getProjectData } from '../bootstrap/init-config.js';
10
+ import { detectAuthConfiguration } from '../auth/multi-auth.js';
11
+ const startTime = new Date();
12
+ const getUptime = () => {
13
+ const uptimeMs = Date.now() - startTime.getTime();
14
+ const uptimeSeconds = Math.floor(uptimeMs / 1000);
15
+ const hours = Math.floor(uptimeSeconds / 3600);
16
+ const minutes = Math.floor((uptimeSeconds % 3600) / 60);
17
+ const seconds = uptimeSeconds % 60;
18
+ if (hours > 0) {
19
+ return `${hours}h ${minutes}m ${seconds}s`;
20
+ }
21
+ else if (minutes > 0) {
22
+ return `${minutes}m ${seconds}s`;
23
+ }
24
+ else {
25
+ return `${seconds}s`;
26
+ }
27
+ };
28
+ export async function handleHomeInfo(_req, res) {
29
+ try {
30
+ const { version, repo } = appConfig;
31
+ const serviceTitle = appConfig.productName.replace(/MCP/i, '').replace(/\s{2,}/g, ' ').trim();
32
+ const logoSvg = getLogoSvg();
33
+ const { resources } = getResourcesList();
34
+ const { prompts } = getPromptsList();
35
+ const { tools, httpComponents } = global.__MCP_PROJECT_DATA__;
36
+ const { getConsulUIAddress = (_s) => '', assets } = getProjectData();
37
+ // Build footer HTML
38
+ const footerParts = [];
39
+ if (repo) {
40
+ footerParts.push(`<a href="${repo}" target="_blank" rel="noopener">GitHub Repository</a>`);
41
+ }
42
+ if (assets?.maintainerHtml) {
43
+ footerParts.push(assets.maintainerHtml);
44
+ }
45
+ // Database info
46
+ let db = null;
47
+ if (appConfig.isMainDBUsed) {
48
+ const dbStatus = await getMainDBConnectionStatus();
49
+ const { host, port, database } = appConfig.db.postgres.dbs.main;
50
+ db = {
51
+ connection: `${host}:${port}/${database}`,
52
+ status: dbStatus,
53
+ };
54
+ }
55
+ // Consul info
56
+ let consul = null;
57
+ if (appConfig.consul.service.enable) {
58
+ const { id } = appConfig.consul.service;
59
+ if (id) {
60
+ consul = {
61
+ id,
62
+ url: getConsulUIAddress(id),
63
+ };
64
+ }
65
+ }
66
+ // Authentication info (same logic as startup-info.ts)
67
+ const authConfig = appConfig.webServer?.auth;
68
+ const adminAuthConfig = appConfig.webServer?.adminAuth;
69
+ const { configured: mcpAuthTypes } = detectAuthConfiguration();
70
+ const mcpAuth = authConfig?.enabled
71
+ ? (mcpAuthTypes.length ? mcpAuthTypes.join(', ') : 'enabled but not configured')
72
+ : 'disabled';
73
+ const adminAuth = adminAuthConfig?.enabled
74
+ ? adminAuthConfig.type
75
+ : 'disabled';
76
+ const response = {
77
+ serviceTitle,
78
+ description: appConfig.description,
79
+ version,
80
+ uptime: getUptime(),
81
+ primaryColor: appConfig.uiColor.primary,
82
+ logoSvg,
83
+ toolsCount: tools.length,
84
+ resourcesCount: resources.length,
85
+ promptsCount: prompts.length,
86
+ tools,
87
+ resources,
88
+ prompts,
89
+ db,
90
+ swagger: !!httpComponents?.swagger,
91
+ consul,
92
+ mcpAuth,
93
+ adminAuth,
94
+ repo,
95
+ footer: footerParts.join(' • '),
96
+ };
97
+ res.json(response);
98
+ }
99
+ catch (error) {
100
+ res.status(500).json({
101
+ error: 'Failed to get home info',
102
+ message: error.message,
103
+ });
104
+ }
105
+ }
106
+ //# sourceMappingURL=home-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-api.js","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare const isAdminEnabled: boolean;
1
2
  /**
2
3
  * Start HTTP server with SSE transport
3
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"AAgEA;;GAEG;AACH,wBAAsB,eAAe,IAAK,OAAO,CAAC,IAAI,CAAC,CAgYtD"}
1
+ {"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,cAAc,SAA8B,CAAC;AAyC1D;;GAEG;AACH,wBAAsB,eAAe,IAAK,OAAO,CAAC,IAAI,CAAC,CA+ZtD"}