@qwickapps/server 1.5.1 → 1.5.2
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/CHANGELOG.md +21 -0
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +41 -0
- package/dist/core/control-panel.js.map +1 -1
- package/dist/core/guards.d.ts.map +1 -1
- package/dist/core/guards.js +77 -0
- package/dist/core/guards.js.map +1 -1
- package/dist/core/health-manager.d.ts +4 -0
- package/dist/core/health-manager.d.ts.map +1 -1
- package/dist/core/health-manager.js +6 -1
- package/dist/core/health-manager.js.map +1 -1
- package/dist/core/plugin-registry.d.ts +55 -5
- package/dist/core/plugin-registry.d.ts.map +1 -1
- package/dist/core/plugin-registry.js +57 -19
- package/dist/core/plugin-registry.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/auth/auth-plugin.d.ts.map +1 -1
- package/dist/plugins/auth/auth-plugin.js +16 -0
- package/dist/plugins/auth/auth-plugin.js.map +1 -1
- package/dist/plugins/auth/auth-plugin.test.js +133 -0
- package/dist/plugins/auth/auth-plugin.test.js.map +1 -1
- package/dist/plugins/auth/env-config.d.ts.map +1 -1
- package/dist/plugins/auth/env-config.js +4 -0
- package/dist/plugins/auth/env-config.js.map +1 -1
- package/dist/plugins/auth/types.d.ts +10 -0
- package/dist/plugins/auth/types.d.ts.map +1 -1
- package/dist/plugins/auth/types.js.map +1 -1
- package/dist/plugins/devices/__tests__/token-utils.test.js +4 -2
- package/dist/plugins/devices/__tests__/token-utils.test.js.map +1 -1
- package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
- package/dist/plugins/frontend-app-plugin.js +18 -4
- package/dist/plugins/frontend-app-plugin.js.map +1 -1
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/qwickbrain/index.d.ts +25 -0
- package/dist/plugins/qwickbrain/index.d.ts.map +1 -0
- package/dist/plugins/qwickbrain/index.js +24 -0
- package/dist/plugins/qwickbrain/index.js.map +1 -0
- package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts +23 -0
- package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts.map +1 -0
- package/dist/plugins/qwickbrain/qwickbrain-plugin.js +528 -0
- package/dist/plugins/qwickbrain/qwickbrain-plugin.js.map +1 -0
- package/dist/plugins/qwickbrain/types.d.ts +131 -0
- package/dist/plugins/qwickbrain/types.d.ts.map +1 -0
- package/dist/plugins/qwickbrain/types.js +9 -0
- package/dist/plugins/qwickbrain/types.js.map +1 -0
- package/dist-ui/assets/{index-CynOqPkb.js → index-BfC7mG5L.js} +2 -2
- package/dist-ui/assets/{index-CynOqPkb.js.map → index-BfC7mG5L.js.map} +1 -1
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/api/controlPanelApi.d.ts +6 -0
- package/dist-ui-lib/index.js +277 -266
- package/dist-ui-lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/core/control-panel.ts +47 -0
- package/src/core/guards.ts +89 -0
- package/src/core/health-manager.ts +6 -1
- package/src/core/plugin-registry.ts +123 -25
- package/src/core/types.ts +2 -0
- package/src/index.ts +11 -0
- package/src/plugins/auth/auth-plugin.test.ts +167 -0
- package/src/plugins/auth/auth-plugin.ts +16 -0
- package/src/plugins/auth/env-config.ts +4 -0
- package/src/plugins/auth/types.ts +10 -0
- package/src/plugins/devices/__tests__/token-utils.test.ts +4 -2
- package/src/plugins/frontend-app-plugin.ts +19 -4
- package/src/plugins/index.ts +15 -0
- package/src/plugins/qwickbrain/index.ts +33 -0
- package/src/plugins/qwickbrain/qwickbrain-plugin.ts +642 -0
- package/src/plugins/qwickbrain/types.ts +146 -0
- package/ui/src/api/controlPanelApi.ts +49 -37
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,27 @@ All notable changes to @qwickapps/server will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.5.2] - 2025-12-21
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Basic Auth Guard** - Fixed repeated login prompts in Control Panel (#523)
|
|
13
|
+
- Added session cookie support to basic auth guard
|
|
14
|
+
- After successful authentication, a signed session cookie is set
|
|
15
|
+
- Subsequent requests use the session cookie instead of re-prompting for credentials
|
|
16
|
+
- Configurable session duration via `sessionDurationHours` (default: 8 hours)
|
|
17
|
+
- Adds `Secure` flag automatically when running over HTTPS
|
|
18
|
+
- Fixes issue where users had to login 4-5 times to access `/cpanel/users`
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Auth Plugin onAuthenticated Callback** - New callback for syncing users on authentication
|
|
23
|
+
- Added `onAuthenticated` callback to `AuthPluginConfig` and `AuthEnvPluginOptions`
|
|
24
|
+
- Called after successful authentication with the authenticated user's info
|
|
25
|
+
- Use this to sync users to a local database on first login
|
|
26
|
+
- Errors in callback are logged but don't fail the authentication
|
|
27
|
+
- **Guards Unit Tests** - Comprehensive test suite for route guards (14 tests)
|
|
28
|
+
|
|
8
29
|
## [1.5.1] - 2025-12-18
|
|
9
30
|
|
|
10
31
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGpB,MAAM,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGpB,MAAM,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CA8Y3F"}
|
|
@@ -308,6 +308,47 @@ export function createControlPanel(options) {
|
|
|
308
308
|
logger.error(`Failed to start plugin: ${plugin.id}`);
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
|
+
// Register all routes with automatic ordering by path specificity
|
|
312
|
+
const routes = pluginRegistry.getRoutes();
|
|
313
|
+
// Sort routes by path specificity (longest first, wildcards last)
|
|
314
|
+
routes.sort((a, b) => {
|
|
315
|
+
// Wildcards last
|
|
316
|
+
const aWild = a.path.includes('*') ? 1 : 0;
|
|
317
|
+
const bWild = b.path.includes('*') ? 1 : 0;
|
|
318
|
+
if (aWild !== bWild)
|
|
319
|
+
return aWild - bWild;
|
|
320
|
+
// Longer paths first (more specific)
|
|
321
|
+
return b.path.length - a.path.length;
|
|
322
|
+
});
|
|
323
|
+
// Register routes with Express
|
|
324
|
+
logger.debug(`Registering ${routes.length} routes in priority order:`);
|
|
325
|
+
for (const route of routes) {
|
|
326
|
+
// TODO: Add auth middleware if route.auth?.required
|
|
327
|
+
// For now, just register the handler
|
|
328
|
+
// Auth will be handled by auth plugin middleware globally
|
|
329
|
+
const handlers = [route.handler];
|
|
330
|
+
switch (route.method) {
|
|
331
|
+
case 'get':
|
|
332
|
+
app.get(route.path, ...handlers);
|
|
333
|
+
break;
|
|
334
|
+
case 'post':
|
|
335
|
+
app.post(route.path, ...handlers);
|
|
336
|
+
break;
|
|
337
|
+
case 'put':
|
|
338
|
+
app.put(route.path, ...handlers);
|
|
339
|
+
break;
|
|
340
|
+
case 'delete':
|
|
341
|
+
app.delete(route.path, ...handlers);
|
|
342
|
+
break;
|
|
343
|
+
case 'patch':
|
|
344
|
+
app.patch(route.path, ...handlers);
|
|
345
|
+
break;
|
|
346
|
+
case 'use':
|
|
347
|
+
app.use(route.path, ...handlers);
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
logger.debug(` ${route.method.toUpperCase()} ${route.path}`);
|
|
351
|
+
}
|
|
311
352
|
return new Promise((resolve) => {
|
|
312
353
|
server = app.listen(config.port, () => {
|
|
313
354
|
logger.debug(`Control panel listening on port ${config.port}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-panel.js","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"control-panel.js","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,YAAY,CAAC;AAgEpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAazE;AA2JD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI,CAU7D"}
|
package/dist/core/guards.js
CHANGED
|
@@ -5,6 +5,61 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
+
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
9
|
+
// Session cookie configuration
|
|
10
|
+
const SESSION_COOKIE_NAME = 'cpanel_session';
|
|
11
|
+
const DEFAULT_SESSION_DURATION_HOURS = 8;
|
|
12
|
+
/**
|
|
13
|
+
* Create a signed session token with expiration
|
|
14
|
+
*/
|
|
15
|
+
function createSessionToken(secret, durationHours) {
|
|
16
|
+
const expiresAt = Date.now() + durationHours * 60 * 60 * 1000;
|
|
17
|
+
const payload = `cpanel:${expiresAt}`;
|
|
18
|
+
const signature = createHmac('sha256', secret).update(payload).digest('hex');
|
|
19
|
+
return `${payload}:${signature}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Verify a session token and check expiration
|
|
23
|
+
*/
|
|
24
|
+
function verifySessionToken(token, secret) {
|
|
25
|
+
const parts = token.split(':');
|
|
26
|
+
if (parts.length !== 3 || parts[0] !== 'cpanel') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const [prefix, expiresAt, signature] = parts;
|
|
30
|
+
const payload = `${prefix}:${expiresAt}`;
|
|
31
|
+
// Verify signature
|
|
32
|
+
const expectedSignature = createHmac('sha256', secret).update(payload).digest('hex');
|
|
33
|
+
try {
|
|
34
|
+
if (!timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature))) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// Check expiration
|
|
42
|
+
const expires = parseInt(expiresAt, 10);
|
|
43
|
+
if (isNaN(expires) || Date.now() > expires) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parse cookies from Cookie header
|
|
50
|
+
*/
|
|
51
|
+
function parseCookies(cookieHeader) {
|
|
52
|
+
const cookies = {};
|
|
53
|
+
if (!cookieHeader)
|
|
54
|
+
return cookies;
|
|
55
|
+
cookieHeader.split(';').forEach((cookie) => {
|
|
56
|
+
const [name, ...rest] = cookie.trim().split('=');
|
|
57
|
+
if (name && rest.length > 0) {
|
|
58
|
+
cookies[name] = rest.join('=');
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return cookies;
|
|
62
|
+
}
|
|
8
63
|
/**
|
|
9
64
|
* Create a route guard middleware from configuration
|
|
10
65
|
*/
|
|
@@ -24,20 +79,42 @@ export function createRouteGuard(config) {
|
|
|
24
79
|
}
|
|
25
80
|
/**
|
|
26
81
|
* Create basic auth guard middleware
|
|
82
|
+
*
|
|
83
|
+
* This guard supports session cookies to prevent repeated login prompts.
|
|
84
|
+
* After successful Basic Auth, a signed session cookie is set that allows
|
|
85
|
+
* subsequent requests to proceed without re-prompting for credentials.
|
|
27
86
|
*/
|
|
28
87
|
function createBasicAuthGuard(config) {
|
|
29
88
|
const expectedAuth = `Basic ${Buffer.from(`${config.username}:${config.password}`).toString('base64')}`;
|
|
30
89
|
const realm = config.realm || 'Protected';
|
|
31
90
|
const excludePaths = config.excludePaths || [];
|
|
91
|
+
const sessionDurationHours = config.sessionDurationHours ?? DEFAULT_SESSION_DURATION_HOURS;
|
|
92
|
+
// Use password as HMAC secret for session tokens
|
|
93
|
+
const sessionSecret = config.password;
|
|
32
94
|
return (req, res, next) => {
|
|
33
95
|
// Check if path is excluded
|
|
34
96
|
if (excludePaths.some(path => req.path.startsWith(path))) {
|
|
35
97
|
return next();
|
|
36
98
|
}
|
|
99
|
+
// Check for valid session cookie first
|
|
100
|
+
const cookies = parseCookies(req.headers.cookie);
|
|
101
|
+
const sessionToken = cookies[SESSION_COOKIE_NAME];
|
|
102
|
+
if (sessionToken && verifySessionToken(sessionToken, sessionSecret)) {
|
|
103
|
+
return next();
|
|
104
|
+
}
|
|
105
|
+
// Check Authorization header
|
|
37
106
|
const authHeader = req.headers.authorization;
|
|
38
107
|
if (authHeader === expectedAuth) {
|
|
108
|
+
// Set session cookie on successful auth
|
|
109
|
+
const token = createSessionToken(sessionSecret, sessionDurationHours);
|
|
110
|
+
const maxAge = sessionDurationHours * 60 * 60; // seconds
|
|
111
|
+
// Add Secure flag when running over HTTPS
|
|
112
|
+
const isSecure = req.secure || req.headers['x-forwarded-proto'] === 'https';
|
|
113
|
+
const secureFlag = isSecure ? ' Secure;' : '';
|
|
114
|
+
res.setHeader('Set-Cookie', `${SESSION_COOKIE_NAME}=${token}; Path=/; HttpOnly; SameSite=Strict;${secureFlag} Max-Age=${maxAge}`);
|
|
39
115
|
return next();
|
|
40
116
|
}
|
|
117
|
+
// No valid session or auth header - prompt for credentials
|
|
41
118
|
res.setHeader('WWW-Authenticate', `Basic realm="${realm}"`);
|
|
42
119
|
res.status(401).json({
|
|
43
120
|
error: 'Unauthorized',
|
package/dist/core/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,10 @@ export declare class HealthManager {
|
|
|
38
38
|
getResult(name: string): HealthCheckResult | undefined;
|
|
39
39
|
/**
|
|
40
40
|
* Get aggregated status
|
|
41
|
+
*
|
|
42
|
+
* Returns 'degraded' instead of 'unhealthy' when subsystems fail,
|
|
43
|
+
* allowing the service to remain available even when dependencies are down.
|
|
44
|
+
* This ensures the control panel and other features remain accessible.
|
|
41
45
|
*/
|
|
42
46
|
getAggregatedStatus(): HealthStatus;
|
|
43
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-manager.d.ts","sourceRoot":"","sources":["../../src/core/health-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEvF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAsBlC;;OAEG;YACW,QAAQ;IAwDtB;;OAEG;YACW,YAAY;IAmC1B;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAI/C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAItD
|
|
1
|
+
{"version":3,"file":"health-manager.d.ts","sourceRoot":"","sources":["../../src/core/health-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEvF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAsBlC;;OAEG;YACW,QAAQ;IAwDtB;;OAEG;YACW,YAAY;IAmC1B;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAI/C;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAItD;;;;;;OAMG;IACH,mBAAmB,IAAI,YAAY;IAkBnC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;OAEG;IACH,QAAQ,IAAI,IAAI;CAOjB"}
|
|
@@ -149,6 +149,10 @@ export class HealthManager {
|
|
|
149
149
|
}
|
|
150
150
|
/**
|
|
151
151
|
* Get aggregated status
|
|
152
|
+
*
|
|
153
|
+
* Returns 'degraded' instead of 'unhealthy' when subsystems fail,
|
|
154
|
+
* allowing the service to remain available even when dependencies are down.
|
|
155
|
+
* This ensures the control panel and other features remain accessible.
|
|
152
156
|
*/
|
|
153
157
|
getAggregatedStatus() {
|
|
154
158
|
const results = Array.from(this.results.values());
|
|
@@ -156,8 +160,9 @@ export class HealthManager {
|
|
|
156
160
|
return 'unknown';
|
|
157
161
|
const unhealthyCount = results.filter((r) => r.status === 'unhealthy').length;
|
|
158
162
|
const degradedCount = results.filter((r) => r.status === 'degraded').length;
|
|
163
|
+
// Return 'degraded' instead of 'unhealthy' to keep service available (HTTP 200)
|
|
159
164
|
if (unhealthyCount > 0)
|
|
160
|
-
return '
|
|
165
|
+
return 'degraded';
|
|
161
166
|
if (degradedCount > 0)
|
|
162
167
|
return 'degraded';
|
|
163
168
|
const hasUnknown = results.some((r) => r.status === 'unknown');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-manager.js","sourceRoot":"","sources":["../../src/core/health-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"health-manager.js","sourceRoot":"","sources":["../../src/core/health-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,17 @@ export interface PluginInfo {
|
|
|
51
51
|
id: string;
|
|
52
52
|
name: string;
|
|
53
53
|
version?: string;
|
|
54
|
+
type: PluginType;
|
|
55
|
+
slug?: string;
|
|
54
56
|
status: 'starting' | 'active' | 'stopped' | 'error';
|
|
55
57
|
error?: string;
|
|
56
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Plugin type determines routing capabilities
|
|
61
|
+
* - regular: Can only handle routes under their slug prefix (e.g., /mcp/*)
|
|
62
|
+
* - system: Can handle any path (e.g., /*, /auth/*)
|
|
63
|
+
*/
|
|
64
|
+
export type PluginType = 'regular' | 'system';
|
|
57
65
|
/**
|
|
58
66
|
* The Plugin interface - simple lifecycle with event handling
|
|
59
67
|
*/
|
|
@@ -64,6 +72,27 @@ export interface Plugin {
|
|
|
64
72
|
name: string;
|
|
65
73
|
/** Plugin version (semver) */
|
|
66
74
|
version?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Plugin type determines routing capabilities
|
|
77
|
+
* - regular: Must use slug prefix for all routes
|
|
78
|
+
* - system: Can register routes at any path
|
|
79
|
+
* Default: 'regular'
|
|
80
|
+
*/
|
|
81
|
+
type?: PluginType;
|
|
82
|
+
/**
|
|
83
|
+
* Default slug for regular plugins (path prefix for routes)
|
|
84
|
+
* Example: 'mcp' makes routes available under /mcp/*
|
|
85
|
+
* Can be overridden via plugin config
|
|
86
|
+
* Ignored for system plugins
|
|
87
|
+
*/
|
|
88
|
+
slug?: string;
|
|
89
|
+
/**
|
|
90
|
+
* Configuration options for this plugin
|
|
91
|
+
*/
|
|
92
|
+
configurable?: {
|
|
93
|
+
/** Allow users to customize the slug via UI */
|
|
94
|
+
slug?: boolean;
|
|
95
|
+
};
|
|
67
96
|
/**
|
|
68
97
|
* Called when the plugin starts.
|
|
69
98
|
* Initialize resources, register routes/UI contributions here.
|
|
@@ -141,18 +170,33 @@ export interface WidgetContribution {
|
|
|
141
170
|
/** Plugin ID that contributed this */
|
|
142
171
|
pluginId: string;
|
|
143
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Auth configuration for routes
|
|
175
|
+
*/
|
|
176
|
+
export interface RouteAuthConfig {
|
|
177
|
+
/** Whether authentication is required */
|
|
178
|
+
required: boolean;
|
|
179
|
+
/** Allowed roles (if auth required) */
|
|
180
|
+
roles?: string[];
|
|
181
|
+
/** Paths to exclude from auth (for middleware routes using 'use' method) */
|
|
182
|
+
excludePaths?: string[];
|
|
183
|
+
}
|
|
144
184
|
/**
|
|
145
185
|
* Route definition for API routes
|
|
146
186
|
*/
|
|
147
187
|
export interface RouteDefinition {
|
|
148
|
-
/** HTTP method */
|
|
149
|
-
method: 'get' | 'post' | 'put' | 'delete' | 'patch';
|
|
150
|
-
/** Route path */
|
|
188
|
+
/** HTTP method (including 'use' for middleware) */
|
|
189
|
+
method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'use';
|
|
190
|
+
/** Route path (will be auto-prefixed with slug for regular plugins) */
|
|
151
191
|
path: string;
|
|
152
192
|
/** Request handler */
|
|
153
193
|
handler: RequestHandler;
|
|
154
|
-
/**
|
|
155
|
-
|
|
194
|
+
/** Authentication configuration */
|
|
195
|
+
auth?: RouteAuthConfig;
|
|
196
|
+
/** Plugin ID that contributed this (set automatically) */
|
|
197
|
+
pluginId?: string;
|
|
198
|
+
/** Original path before slug prefixing (set automatically) */
|
|
199
|
+
originalPath?: string;
|
|
156
200
|
}
|
|
157
201
|
/**
|
|
158
202
|
* Configuration UI contribution for plugin settings
|
|
@@ -240,6 +284,8 @@ export declare class PluginRegistryImpl implements PluginRegistry {
|
|
|
240
284
|
private pluginStatus;
|
|
241
285
|
private pluginErrors;
|
|
242
286
|
private pluginConfigs;
|
|
287
|
+
private pluginSlugs;
|
|
288
|
+
private currentPlugin;
|
|
243
289
|
private routes;
|
|
244
290
|
private menuItems;
|
|
245
291
|
private pages;
|
|
@@ -275,6 +321,10 @@ export declare class PluginRegistryImpl implements PluginRegistry {
|
|
|
275
321
|
getRouter(): Router;
|
|
276
322
|
getLogger(pluginId: string): Logger;
|
|
277
323
|
getHealthManager(): HealthManager;
|
|
324
|
+
/**
|
|
325
|
+
* Check if a slug is available
|
|
326
|
+
*/
|
|
327
|
+
private isSlugAvailable;
|
|
278
328
|
/**
|
|
279
329
|
* Start a plugin with error isolation
|
|
280
330
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/core/plugin-registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin-registry.d.ts","sourceRoot":"","sources":["../../src/core/plugin-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACtG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAM9E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,+CAA+C;QAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IAEF;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB;IACnB,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5D,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,mCAAmC;IACnC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAMD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAK7B,iDAAiD;IACjD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B,sDAAsD;IACtD,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAE3D,kCAAkC;IAClC,WAAW,IAAI,UAAU,EAAE,CAAC;IAM5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAEvC,2BAA2B;IAC3B,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C,sBAAsB;IACtB,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEtC,wBAAwB;IACxB,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAE5C,yDAAyD;IACzD,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAMrD,gCAAgC;IAChC,SAAS,IAAI,eAAe,EAAE,CAAC;IAE/B,yBAAyB;IACzB,YAAY,IAAI,gBAAgB,EAAE,CAAC;IAEnC,oBAAoB;IACpB,QAAQ,IAAI,gBAAgB,EAAE,CAAC;IAE/B,sBAAsB;IACtB,UAAU,IAAI,kBAAkB,EAAE,CAAC;IAEnC,gCAAgC;IAChC,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;IAE5C,kDAAkD;IAClD,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAM9D,+BAA+B;IAC/B,SAAS,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC;IAEjD,sEAAsE;IACtE,SAAS,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAMjF,+DAA+D;IAC/D,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;IAEnD,mDAAmD;IACnD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAM/B,8BAA8B;IAC9B,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAM9C,mDAAmD;IACnD,MAAM,IAAI,WAAW,CAAC;IAEtB,sDAAsD;IACtD,SAAS,IAAI,MAAM,CAAC;IAEpB,kCAAkC;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAoBD;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAA2B;gBAG9C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;IAazC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI9B,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAQ1D,WAAW,IAAI,UAAU,EAAE;IAgB3B,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IA+BtC,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKzC,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKrC,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAK3C,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAepD,SAAS,IAAI,eAAe,EAAE;IAI9B,YAAY,IAAI,gBAAgB,EAAE;IAIlC,QAAQ,IAAI,gBAAgB,EAAE;IAI9B,UAAU,IAAI,kBAAkB,EAAE;IAIlC,mBAAmB,IAAI,kBAAkB,EAAE;IAI3C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAgB7D,SAAS,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;IAI1C,SAAS,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtF,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOlD,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAoC9B,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAS7C,MAAM,IAAI,WAAW;IAIrB,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQnC,gBAAgB,IAAI,aAAa;IAQjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IA6DzE;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCpD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAMtC;AAQD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACtC,kBAAkB,CAGpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -32,6 +32,8 @@ export class PluginRegistryImpl {
|
|
|
32
32
|
this.pluginStatus = new Map();
|
|
33
33
|
this.pluginErrors = new Map();
|
|
34
34
|
this.pluginConfigs = new Map();
|
|
35
|
+
this.pluginSlugs = new Map(); // pluginId -> slug
|
|
36
|
+
this.currentPlugin = null; // Track plugin during onStart
|
|
35
37
|
this.routes = [];
|
|
36
38
|
this.menuItems = [];
|
|
37
39
|
this.pages = [];
|
|
@@ -62,6 +64,8 @@ export class PluginRegistryImpl {
|
|
|
62
64
|
id: plugin.id,
|
|
63
65
|
name: plugin.name,
|
|
64
66
|
version: plugin.version,
|
|
67
|
+
type: plugin.type || 'regular',
|
|
68
|
+
slug: this.pluginSlugs.get(plugin.id),
|
|
65
69
|
status: this.pluginStatus.get(plugin.id) || 'stopped',
|
|
66
70
|
error: this.pluginErrors.get(plugin.id),
|
|
67
71
|
}));
|
|
@@ -70,26 +74,27 @@ export class PluginRegistryImpl {
|
|
|
70
74
|
// Contribution registration
|
|
71
75
|
// ---------------------------------------------------------------------------
|
|
72
76
|
addRoute(route) {
|
|
73
|
-
this.
|
|
74
|
-
|
|
75
|
-
switch (route.method) {
|
|
76
|
-
case 'get':
|
|
77
|
-
this.router.get(route.path, route.handler);
|
|
78
|
-
break;
|
|
79
|
-
case 'post':
|
|
80
|
-
this.router.post(route.path, route.handler);
|
|
81
|
-
break;
|
|
82
|
-
case 'put':
|
|
83
|
-
this.router.put(route.path, route.handler);
|
|
84
|
-
break;
|
|
85
|
-
case 'delete':
|
|
86
|
-
this.router.delete(route.path, route.handler);
|
|
87
|
-
break;
|
|
88
|
-
case 'patch':
|
|
89
|
-
this.router.patch(route.path, route.handler);
|
|
90
|
-
break;
|
|
77
|
+
if (!this.currentPlugin) {
|
|
78
|
+
throw new Error('addRoute can only be called during plugin.onStart()');
|
|
91
79
|
}
|
|
92
|
-
|
|
80
|
+
const plugin = this.plugins.get(this.currentPlugin);
|
|
81
|
+
const pluginType = plugin.type || 'regular';
|
|
82
|
+
const originalPath = route.path;
|
|
83
|
+
let fullPath = route.path;
|
|
84
|
+
// Auto-prefix for regular plugins
|
|
85
|
+
if (pluginType === 'regular') {
|
|
86
|
+
const slug = this.pluginSlugs.get(this.currentPlugin);
|
|
87
|
+
fullPath = `/${slug}${route.path}`;
|
|
88
|
+
}
|
|
89
|
+
const routeWithMetadata = {
|
|
90
|
+
...route,
|
|
91
|
+
path: fullPath,
|
|
92
|
+
pluginId: this.currentPlugin,
|
|
93
|
+
originalPath,
|
|
94
|
+
};
|
|
95
|
+
this.routes.push(routeWithMetadata);
|
|
96
|
+
this.logger.debug(`Route registered: ${route.method.toUpperCase()} ${fullPath} by ${this.currentPlugin}` +
|
|
97
|
+
(pluginType === 'regular' ? ` (original: ${originalPath})` : ''));
|
|
93
98
|
}
|
|
94
99
|
addMenuItem(menu) {
|
|
95
100
|
this.menuItems.push(menu);
|
|
@@ -234,6 +239,20 @@ export class PluginRegistryImpl {
|
|
|
234
239
|
return this.healthManager;
|
|
235
240
|
}
|
|
236
241
|
// ---------------------------------------------------------------------------
|
|
242
|
+
// Slug management (internal)
|
|
243
|
+
// ---------------------------------------------------------------------------
|
|
244
|
+
/**
|
|
245
|
+
* Check if a slug is available
|
|
246
|
+
*/
|
|
247
|
+
isSlugAvailable(slug, excludePluginId) {
|
|
248
|
+
for (const [pluginId, existingSlug] of this.pluginSlugs.entries()) {
|
|
249
|
+
if (pluginId !== excludePluginId && existingSlug === slug) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
// ---------------------------------------------------------------------------
|
|
237
256
|
// Plugin lifecycle management (internal)
|
|
238
257
|
// ---------------------------------------------------------------------------
|
|
239
258
|
/**
|
|
@@ -243,6 +262,23 @@ export class PluginRegistryImpl {
|
|
|
243
262
|
this.plugins.set(plugin.id, plugin);
|
|
244
263
|
this.pluginConfigs.set(plugin.id, config);
|
|
245
264
|
this.pluginStatus.set(plugin.id, 'starting');
|
|
265
|
+
this.currentPlugin = plugin.id;
|
|
266
|
+
const pluginType = plugin.type || 'regular';
|
|
267
|
+
// Handle slug for regular plugins
|
|
268
|
+
if (pluginType === 'regular') {
|
|
269
|
+
const slug = config.slug || plugin.slug || plugin.id;
|
|
270
|
+
// Validate slug uniqueness
|
|
271
|
+
if (!this.isSlugAvailable(slug, plugin.id)) {
|
|
272
|
+
this.currentPlugin = null;
|
|
273
|
+
const errorMessage = `Slug conflict: "${slug}" already in use`;
|
|
274
|
+
this.pluginStatus.set(plugin.id, 'error');
|
|
275
|
+
this.pluginErrors.set(plugin.id, errorMessage);
|
|
276
|
+
this.logger.error(`Plugin ${plugin.id} failed to start: ${errorMessage}`);
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
this.pluginSlugs.set(plugin.id, slug);
|
|
280
|
+
this.logger.debug(`Plugin ${plugin.id} registered with slug: ${slug}`);
|
|
281
|
+
}
|
|
246
282
|
try {
|
|
247
283
|
await Promise.race([
|
|
248
284
|
plugin.onStart(config, this),
|
|
@@ -250,6 +286,7 @@ export class PluginRegistryImpl {
|
|
|
250
286
|
]);
|
|
251
287
|
this.pluginStatus.set(plugin.id, 'active');
|
|
252
288
|
this.pluginErrors.delete(plugin.id);
|
|
289
|
+
this.currentPlugin = null;
|
|
253
290
|
this.emit({
|
|
254
291
|
type: 'plugin:started',
|
|
255
292
|
pluginId: plugin.id,
|
|
@@ -262,6 +299,7 @@ export class PluginRegistryImpl {
|
|
|
262
299
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
263
300
|
this.pluginStatus.set(plugin.id, 'error');
|
|
264
301
|
this.pluginErrors.set(plugin.id, errorMessage);
|
|
302
|
+
this.currentPlugin = null;
|
|
265
303
|
this.emit({
|
|
266
304
|
type: 'plugin:error',
|
|
267
305
|
pluginId: plugin.id,
|