@bytespell/shella 0.2.0 → 0.2.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.
Files changed (82) hide show
  1. package/bundled-plugins/agent/README.md +3 -0
  2. package/bundled-plugins/agent/components.json +24 -0
  3. package/bundled-plugins/agent/dist/assets/index-BGeDYr6P.css +1 -0
  4. package/bundled-plugins/agent/dist/assets/index-J14lI3Er.js +49 -0
  5. package/bundled-plugins/agent/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  6. package/bundled-plugins/agent/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  7. package/bundled-plugins/agent/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  8. package/bundled-plugins/agent/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  9. package/bundled-plugins/agent/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  10. package/bundled-plugins/agent/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  11. package/bundled-plugins/agent/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  12. package/bundled-plugins/agent/dist/index.html +14 -0
  13. package/bundled-plugins/agent/dist/vite.svg +1 -0
  14. package/bundled-plugins/agent/eslint.config.js +23 -0
  15. package/bundled-plugins/agent/index.html +13 -0
  16. package/bundled-plugins/agent/package-lock.json +11034 -0
  17. package/bundled-plugins/agent/package.json +52 -0
  18. package/bundled-plugins/agent/public/vite.svg +1 -0
  19. package/bundled-plugins/agent/server.js +240 -0
  20. package/bundled-plugins/agent/src/App.tsx +586 -0
  21. package/bundled-plugins/agent/src/assets/react.svg +1 -0
  22. package/bundled-plugins/agent/src/components/ui/alert-dialog.tsx +182 -0
  23. package/bundled-plugins/agent/src/components/ui/badge.tsx +45 -0
  24. package/bundled-plugins/agent/src/components/ui/button.tsx +60 -0
  25. package/bundled-plugins/agent/src/components/ui/card.tsx +94 -0
  26. package/bundled-plugins/agent/src/components/ui/combobox.tsx +294 -0
  27. package/bundled-plugins/agent/src/components/ui/dropdown-menu.tsx +253 -0
  28. package/bundled-plugins/agent/src/components/ui/field.tsx +225 -0
  29. package/bundled-plugins/agent/src/components/ui/input-group.tsx +147 -0
  30. package/bundled-plugins/agent/src/components/ui/input.tsx +19 -0
  31. package/bundled-plugins/agent/src/components/ui/label.tsx +24 -0
  32. package/bundled-plugins/agent/src/components/ui/select.tsx +185 -0
  33. package/bundled-plugins/agent/src/components/ui/separator.tsx +26 -0
  34. package/bundled-plugins/agent/src/components/ui/switch.tsx +31 -0
  35. package/bundled-plugins/agent/src/components/ui/textarea.tsx +18 -0
  36. package/bundled-plugins/agent/src/index.css +131 -0
  37. package/bundled-plugins/agent/src/lib/utils.ts +6 -0
  38. package/bundled-plugins/agent/src/main.tsx +11 -0
  39. package/bundled-plugins/agent/tsconfig.app.json +32 -0
  40. package/bundled-plugins/agent/tsconfig.json +13 -0
  41. package/bundled-plugins/agent/tsconfig.node.json +26 -0
  42. package/bundled-plugins/agent/vite.config.ts +14 -0
  43. package/bundled-plugins/terminal/index.html +24 -0
  44. package/bundled-plugins/terminal/package-lock.json +3316 -0
  45. package/bundled-plugins/terminal/package.json +37 -0
  46. package/bundled-plugins/terminal/server.ts +169 -0
  47. package/bundled-plugins/terminal/src/App.tsx +168 -0
  48. package/bundled-plugins/terminal/src/main.tsx +9 -0
  49. package/bundled-plugins/terminal/tsconfig.json +22 -0
  50. package/bundled-plugins/terminal/vite.config.ts +10 -0
  51. package/dist/bin/shella-init.js +2 -2
  52. package/dist/bin/shella-init.js.map +1 -1
  53. package/dist/src/api.d.ts.map +1 -1
  54. package/dist/src/api.js +51 -10
  55. package/dist/src/api.js.map +1 -1
  56. package/dist/src/bonjour.d.ts +3 -0
  57. package/dist/src/bonjour.d.ts.map +1 -0
  58. package/dist/src/bonjour.js +42 -0
  59. package/dist/src/bonjour.js.map +1 -0
  60. package/dist/src/index.d.ts.map +1 -1
  61. package/dist/src/index.js +7 -0
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/logger.d.ts +19 -2
  64. package/dist/src/logger.d.ts.map +1 -1
  65. package/dist/src/logger.js +96 -16
  66. package/dist/src/logger.js.map +1 -1
  67. package/dist/src/paths.d.ts +1 -0
  68. package/dist/src/paths.d.ts.map +1 -1
  69. package/dist/src/paths.js +24 -0
  70. package/dist/src/paths.js.map +1 -1
  71. package/dist/src/plugin-manager.d.ts +14 -0
  72. package/dist/src/plugin-manager.d.ts.map +1 -1
  73. package/dist/src/plugin-manager.js +115 -7
  74. package/dist/src/plugin-manager.js.map +1 -1
  75. package/dist/src/sse.d.ts +45 -0
  76. package/dist/src/sse.d.ts.map +1 -0
  77. package/dist/src/sse.js +108 -0
  78. package/dist/src/sse.js.map +1 -0
  79. package/dist/src/types.d.ts +1 -0
  80. package/dist/src/types.d.ts.map +1 -1
  81. package/dist/src/types.js.map +1 -1
  82. package/package.json +4 -2
@@ -0,0 +1,42 @@
1
+ import { Bonjour } from 'bonjour-service';
2
+ import { logger } from './logger.js';
3
+ import { DAEMON_PORT } from './types.js';
4
+ import { hostname } from 'os';
5
+ const SERVICE_TYPE = 'shella';
6
+ let bonjour = null;
7
+ let service = null;
8
+ export function startBonjourAdvertising() {
9
+ try {
10
+ bonjour = new Bonjour();
11
+ const name = `shella-${hostname()}`;
12
+ service = bonjour.publish({
13
+ name,
14
+ type: SERVICE_TYPE,
15
+ port: DAEMON_PORT,
16
+ txt: {
17
+ version: '1',
18
+ },
19
+ });
20
+ service.on('up', () => {
21
+ logger.info({ name, port: DAEMON_PORT, type: `_${SERVICE_TYPE}._tcp` }, 'Bonjour service advertised');
22
+ });
23
+ service.on('error', (err) => {
24
+ logger.warn({ err }, 'Bonjour advertising error');
25
+ });
26
+ }
27
+ catch (err) {
28
+ logger.warn({ err }, 'Failed to start Bonjour advertising');
29
+ }
30
+ }
31
+ export function stopBonjourAdvertising() {
32
+ if (service?.stop) {
33
+ service.stop();
34
+ service = null;
35
+ }
36
+ if (bonjour?.destroy) {
37
+ bonjour.destroy();
38
+ bonjour = null;
39
+ }
40
+ logger.info('Bonjour service stopped');
41
+ }
42
+ //# sourceMappingURL=bonjour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bonjour.js","sourceRoot":"","sources":["../../src/bonjour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,IAAI,OAAO,GAAmB,IAAI,CAAC;AACnC,IAAI,OAAO,GAAmB,IAAI,CAAC;AAEnC,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,UAAU,QAAQ,EAAE,EAAE,CAAC;QAEpC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACxB,IAAI;YACJ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE;gBACH,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,YAAY,OAAO,EAAE,EAAE,4BAA4B,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,qCAAqC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAwDA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA4DA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC3C"}
package/dist/src/index.js CHANGED
@@ -5,6 +5,7 @@ import { pluginWatcher } from './watcher.js';
5
5
  import { registry } from './registry.js';
6
6
  import { portAllocator } from './port-allocator.js';
7
7
  import { DAEMON_PORT } from './types.js';
8
+ import { startBonjourAdvertising, stopBonjourAdvertising } from './bonjour.js';
8
9
  let isShuttingDown = false;
9
10
  async function checkExistingDaemon() {
10
11
  try {
@@ -29,6 +30,8 @@ async function shutdown(signal) {
29
30
  await pluginManager.stopAllPlugins();
30
31
  // Stop API server
31
32
  await stopApi();
33
+ // Stop Bonjour advertising
34
+ stopBonjourAdvertising();
32
35
  // Clean up registry
33
36
  await registry.cleanup();
34
37
  // Clear port allocator
@@ -56,6 +59,10 @@ export async function start() {
56
59
  await registry.load();
57
60
  // Start API server
58
61
  await startApi();
62
+ // Start Bonjour/mDNS advertising for auto-discovery
63
+ startBonjourAdvertising();
64
+ // Install bundled first-party plugins if not already present
65
+ await pluginManager.installBundledPlugins();
59
66
  // Discover and start all plugins
60
67
  await pluginManager.startAllPlugins();
61
68
  // Save registry after startup
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,WAAW,SAAS,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAEhD,0DAA0D;IAC1D,aAAa,CAAC,IAAI,EAAE,CAAC;IAErB,oEAAoE;IACpE,aAAa,CAAC,kBAAkB,EAAE,CAAC;IAEnC,kCAAkC;IAClC,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;IAErC,kBAAkB;IAClB,MAAM,OAAO,EAAE,CAAC;IAEhB,oBAAoB;IACpB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAEzB,uBAAuB;IACvB,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yCAAyC;AACzC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,aAAa,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;IAEnE,qCAAqC;IACrC,MAAM,cAAc,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IAEnC,kCAAkC;IAClC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,mBAAmB;IACnB,MAAM,QAAQ,EAAE,CAAC;IAEjB,iCAAiC;IACjC,MAAM,aAAa,CAAC,eAAe,EAAE,CAAC;IAEtC,8BAA8B;IAC9B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,oCAAoC;IACpC,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpD,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
1
  import pino from 'pino';
2
- export declare const logger: pino.Logger<never, boolean>;
3
- export declare function createPluginLogger(pluginName: string): pino.Logger;
2
+ declare class DevLogger {
3
+ private prefix;
4
+ private color;
5
+ constructor(prefix?: string, color?: string);
6
+ private format;
7
+ info(msgOrData: string | Record<string, unknown>, msg?: string): void;
8
+ warn(msgOrData: string | Record<string, unknown>, msg?: string): void;
9
+ error(msgOrData: string | Record<string, unknown>, msg?: string): void;
10
+ debug(msgOrData: string | Record<string, unknown>, msg?: string): void;
11
+ child(bindings: {
12
+ plugin?: string;
13
+ instanceId?: string;
14
+ }): DevLogger;
15
+ }
16
+ type Logger = DevLogger | pino.Logger;
17
+ export declare const logger: Logger;
18
+ export declare function createPluginLogger(pluginName: string, instanceId?: string): Logger;
19
+ export declare function logPluginOutput(pluginName: string, instanceId: string, output: string, isError?: boolean): void;
20
+ export {};
4
21
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAsBxB,eAAO,MAAM,MAAM,6BAAiB,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAElE"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAiBxB,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,SAAW,EAAE,KAAK,SAAc;IAKlD,OAAO,CAAC,MAAM;IAgBd,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQtE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAUtE,KAAK,CAAC,QAAQ,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAIrE;AAOD,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAEtC,eAAO,MAAM,MAAM,EAAE,MAAqD,CAAC;AAE3E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlF;AAGD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI,CAU7G"}
@@ -1,24 +1,104 @@
1
1
  import pino from 'pino';
2
2
  const isDev = process.env.NODE_ENV !== 'production';
3
3
  const level = process.env.LOG_LEVEL ?? 'info';
4
- function createLogger() {
5
- if (isDev) {
6
- return pino({
7
- level,
8
- transport: {
9
- target: 'pino-pretty',
10
- options: {
11
- colorize: true,
12
- translateTime: 'SYS:standard',
13
- ignore: 'pid,hostname',
14
- },
15
- },
16
- });
4
+ // ANSI color codes
5
+ const colors = {
6
+ reset: '\x1b[0m',
7
+ dim: '\x1b[2m',
8
+ cyan: '\x1b[36m',
9
+ green: '\x1b[32m',
10
+ yellow: '\x1b[33m',
11
+ red: '\x1b[31m',
12
+ magenta: '\x1b[35m',
13
+ };
14
+ // Simple prefixed console logger for dev mode
15
+ class DevLogger {
16
+ prefix;
17
+ color;
18
+ constructor(prefix = 'daemon', color = colors.cyan) {
19
+ this.prefix = prefix;
20
+ this.color = color;
21
+ }
22
+ format(msg, data, msgColor = colors.reset) {
23
+ let line = `${this.color}[${this.prefix}]${colors.reset} ${msgColor}${msg}${colors.reset}`;
24
+ if (data && Object.keys(data).length > 0) {
25
+ const parts = Object.entries(data)
26
+ .filter(([k]) => k !== 'plugin' && k !== 'err')
27
+ .map(([k, v]) => `${colors.dim}${k}=${typeof v === 'string' ? v : JSON.stringify(v)}${colors.reset}`);
28
+ if (parts.length > 0) {
29
+ line += ` ${parts.join(' ')}`;
30
+ }
31
+ if (data.err) {
32
+ line += `\n ${colors.red}${data.err}${colors.reset}`;
33
+ }
34
+ }
35
+ return line;
36
+ }
37
+ info(msgOrData, msg) {
38
+ if (typeof msgOrData === 'string') {
39
+ console.log(this.format(msgOrData));
40
+ }
41
+ else {
42
+ console.log(this.format(msg ?? '', msgOrData));
43
+ }
44
+ }
45
+ warn(msgOrData, msg) {
46
+ if (typeof msgOrData === 'string') {
47
+ console.warn(this.format(msgOrData, undefined, colors.yellow));
48
+ }
49
+ else {
50
+ console.warn(this.format(msg ?? '', msgOrData, colors.yellow));
51
+ }
52
+ }
53
+ error(msgOrData, msg) {
54
+ if (typeof msgOrData === 'string') {
55
+ console.error(this.format(msgOrData, undefined, colors.red));
56
+ }
57
+ else {
58
+ console.error(this.format(msg ?? '', msgOrData, colors.red));
59
+ }
60
+ }
61
+ debug(msgOrData, msg) {
62
+ if (level === 'debug') {
63
+ if (typeof msgOrData === 'string') {
64
+ console.log(this.format(msgOrData, undefined, colors.dim));
65
+ }
66
+ else {
67
+ console.log(this.format(msg ?? '', msgOrData, colors.dim));
68
+ }
69
+ }
17
70
  }
71
+ child(bindings) {
72
+ const parts = [bindings.plugin, bindings.instanceId].filter(Boolean);
73
+ return new DevLogger(parts.join(':') || this.prefix, colors.green);
74
+ }
75
+ }
76
+ // Production logger uses pino for structured JSON
77
+ function createProdLogger() {
18
78
  return pino({ level });
19
79
  }
20
- export const logger = createLogger();
21
- export function createPluginLogger(pluginName) {
22
- return logger.child({ plugin: pluginName });
80
+ export const logger = isDev ? new DevLogger() : createProdLogger();
81
+ export function createPluginLogger(pluginName, instanceId) {
82
+ if (isDev) {
83
+ const prefix = instanceId ? `${pluginName}:${instanceId}` : pluginName;
84
+ return new DevLogger(prefix);
85
+ }
86
+ const bindings = { plugin: pluginName };
87
+ if (instanceId)
88
+ bindings.instanceId = instanceId;
89
+ return logger.child(bindings);
90
+ }
91
+ // For plugin stdout/stderr - just print with prefix, no wrapping
92
+ export function logPluginOutput(pluginName, instanceId, output, isError = false) {
93
+ const prefix = `${colors.magenta}[${pluginName}:${instanceId}]${colors.reset}`;
94
+ const lines = output.trim().split('\n');
95
+ for (const line of lines) {
96
+ if (isError) {
97
+ console.error(`${prefix} ${colors.red}${line}${colors.reset}`);
98
+ }
99
+ else {
100
+ console.log(`${prefix} ${colors.dim}${line}${colors.reset}`);
101
+ }
102
+ }
23
103
  }
24
104
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;AAE9C,SAAS,YAAY;IACnB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;YACV,KAAK;YACL,SAAS,EAAE;gBACT,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,cAAc;oBAC7B,MAAM,EAAE,cAAc;iBACvB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAErC,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"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"}
@@ -14,4 +14,5 @@ export declare const STATE_DIR: string;
14
14
  * Default: ~/.local/state/shella/registry.json
15
15
  */
16
16
  export declare const REGISTRY_FILE: string;
17
+ export declare const BUNDLED_PLUGINS_DIR: string;
17
18
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAA0E,CAAC;AAEnG;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAmB,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAwC,CAAC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAA0E,CAAC;AAEnG;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAmB,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAwC,CAAC;AAuBnE,eAAO,MAAM,mBAAmB,QAAkD,CAAC"}
package/dist/src/paths.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import * as path from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { existsSync } from 'node:fs';
2
4
  const HOME = process.env.HOME ?? '';
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
3
6
  /**
4
7
  * XDG Base Directory paths for Shella
5
8
  *
@@ -31,4 +34,25 @@ export const STATE_DIR = SHELLA_STATE_DIR;
31
34
  * Default: ~/.local/state/shella/registry.json
32
35
  */
33
36
  export const REGISTRY_FILE = path.join(STATE_DIR, 'registry.json');
37
+ /**
38
+ * Directory containing bundled first-party plugins
39
+ * These are copied to PLUGINS_DIR on first run
40
+ *
41
+ * In development: __dirname = apps/daemon/src/
42
+ * In production: __dirname = apps/daemon/dist/src/
43
+ *
44
+ * We go up to find package.json and then look for bundled-plugins there.
45
+ */
46
+ function findPackageRoot() {
47
+ let dir = __dirname;
48
+ for (let i = 0; i < 5; i++) {
49
+ const pkgPath = path.join(dir, 'package.json');
50
+ if (existsSync(pkgPath)) {
51
+ return dir;
52
+ }
53
+ dir = path.dirname(dir);
54
+ }
55
+ return __dirname;
56
+ }
57
+ export const BUNDLED_PLUGINS_DIR = path.join(findPackageRoot(), 'bundled-plugins');
34
58
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AAEpC;;;;;;;;GAQG;AAEH,eAAe;AACf,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAExF,qBAAqB;AACrB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEnG;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D;;;;;;;;GAQG;AAEH,eAAe;AACf,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAExF,qBAAqB;AACrB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEnG;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEnE;;;;;;;;GAQG;AACH,SAAS,eAAe;IACtB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC"}
@@ -1,7 +1,21 @@
1
1
  import type { PluginInfo, PluginInstance } from './types.js';
2
2
  export declare class PluginManager {
3
3
  private plugins;
4
+ /**
5
+ * Broadcast current plugins state to all SSE clients
6
+ */
7
+ private broadcastPlugins;
4
8
  discoverPlugins(): Promise<string[]>;
9
+ /**
10
+ * Compare two semver versions. Returns:
11
+ * - positive if a > b
12
+ * - negative if a < b
13
+ * - 0 if equal
14
+ */
15
+ private compareVersions;
16
+ private deleteDirectory;
17
+ installBundledPlugins(): Promise<void>;
18
+ private copyDirectory;
5
19
  private readPackageJson;
6
20
  private needsInstall;
7
21
  private runNpmInstall;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAyC;IAElD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YA6B5B,eAAe;YASf,YAAY;IAkB1B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,oBAAoB;YAuBd,kBAAkB;IAyC1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAmH/E,OAAO,CAAC,gBAAgB;IAkClB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqDhE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C,aAAa,IAAI,UAAU,EAAE;IAIvB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,kBAAkB,IAAI,IAAI;IAepB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,UAAU,EACV,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAyC;IAExD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKlB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B1C;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAcT,eAAe;IAIvB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;YA4D9B,aAAa;YAgBb,eAAe;YASf,YAAY;IAkB1B,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,oBAAoB;YAuBd,kBAAkB;IAyC1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA6H/E,OAAO,CAAC,gBAAgB;IAmClB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDhE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI/C,aAAa,IAAI,UAAU,EAAE;IAIvB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,kBAAkB,IAAI,IAAI;IAepB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -1,11 +1,21 @@
1
1
  import { spawn, execSync } from 'node:child_process';
2
2
  import * as fs from 'node:fs/promises';
3
+ import * as fsSync from 'node:fs';
3
4
  import * as path from 'node:path';
4
- import { logger, createPluginLogger } from './logger.js';
5
+ import { logger, createPluginLogger, logPluginOutput } from './logger.js';
5
6
  import { portAllocator } from './port-allocator.js';
6
7
  import { registry } from './registry.js';
8
+ import { sseManager } from './sse.js';
9
+ import { BUNDLED_PLUGINS_DIR, PLUGINS_DIR } from './paths.js';
7
10
  export class PluginManager {
8
11
  plugins = new Map();
12
+ /**
13
+ * Broadcast current plugins state to all SSE clients
14
+ */
15
+ broadcastPlugins() {
16
+ const plugins = this.getAllPlugins();
17
+ sseManager.broadcastPlugins(plugins);
18
+ }
9
19
  async discoverPlugins() {
10
20
  const pluginsDir = registry.getPluginsDir();
11
21
  const discovered = [];
@@ -31,6 +41,85 @@ export class PluginManager {
31
41
  }
32
42
  return discovered;
33
43
  }
44
+ /**
45
+ * Compare two semver versions. Returns:
46
+ * - positive if a > b
47
+ * - negative if a < b
48
+ * - 0 if equal
49
+ */
50
+ compareVersions(a, b) {
51
+ const aParts = a.split('.').map(Number);
52
+ const bParts = b.split('.').map(Number);
53
+ for (let i = 0; i < 3; i++) {
54
+ const aVal = aParts[i] ?? 0;
55
+ const bVal = bParts[i] ?? 0;
56
+ if (aVal !== bVal) {
57
+ return aVal - bVal;
58
+ }
59
+ }
60
+ return 0;
61
+ }
62
+ async deleteDirectory(dirPath) {
63
+ await fs.rm(dirPath, { recursive: true, force: true });
64
+ }
65
+ async installBundledPlugins() {
66
+ // Skip bundled plugin installation in test mode
67
+ if (process.env.SHELLA_SKIP_BUNDLED_PLUGINS === '1') {
68
+ return;
69
+ }
70
+ logger.info({ path: BUNDLED_PLUGINS_DIR }, 'Checking for bundled plugins');
71
+ // Check if bundled plugins directory exists
72
+ if (!fsSync.existsSync(BUNDLED_PLUGINS_DIR)) {
73
+ logger.info({ path: BUNDLED_PLUGINS_DIR }, 'No bundled plugins directory found');
74
+ return;
75
+ }
76
+ // Ensure user plugins directory exists
77
+ await fs.mkdir(PLUGINS_DIR, { recursive: true });
78
+ // Get list of bundled plugins
79
+ const entries = await fs.readdir(BUNDLED_PLUGINS_DIR, { withFileTypes: true });
80
+ const bundledPlugins = entries
81
+ .filter((e) => e.isDirectory() && !e.name.startsWith('.'))
82
+ .map((e) => e.name);
83
+ logger.info({ count: bundledPlugins.length }, 'Checking bundled plugins');
84
+ for (const pluginName of bundledPlugins) {
85
+ const destPath = path.join(PLUGINS_DIR, pluginName);
86
+ const srcPath = path.join(BUNDLED_PLUGINS_DIR, pluginName);
87
+ // Check if plugin already exists in user directory
88
+ if (fsSync.existsSync(destPath)) {
89
+ // Compare versions to see if we need to update
90
+ const bundledPkg = await this.readPackageJson(srcPath);
91
+ const installedPkg = await this.readPackageJson(destPath);
92
+ const bundledVersion = bundledPkg?.version ?? '0.0.0';
93
+ const installedVersion = installedPkg?.version ?? '0.0.0';
94
+ if (this.compareVersions(bundledVersion, installedVersion) > 0) {
95
+ logger.info({ plugin: pluginName, from: installedVersion, to: bundledVersion }, 'Updating bundled plugin to newer version');
96
+ await this.deleteDirectory(destPath);
97
+ }
98
+ else {
99
+ logger.debug({ plugin: pluginName, bundled: bundledVersion, installed: installedVersion }, 'Bundled plugin already up to date');
100
+ continue;
101
+ }
102
+ }
103
+ // Copy bundled plugin to user directory
104
+ logger.info({ plugin: pluginName }, 'Installing bundled plugin');
105
+ await this.copyDirectory(srcPath, destPath);
106
+ logger.info({ plugin: pluginName, path: destPath }, 'Bundled plugin installed');
107
+ }
108
+ }
109
+ async copyDirectory(src, dest) {
110
+ await fs.mkdir(dest, { recursive: true });
111
+ const entries = await fs.readdir(src, { withFileTypes: true });
112
+ for (const entry of entries) {
113
+ const srcPath = path.join(src, entry.name);
114
+ const destPath = path.join(dest, entry.name);
115
+ if (entry.isDirectory()) {
116
+ await this.copyDirectory(srcPath, destPath);
117
+ }
118
+ else {
119
+ await fs.copyFile(srcPath, destPath);
120
+ }
121
+ }
122
+ }
34
123
  async readPackageJson(pluginPath) {
35
124
  try {
36
125
  const content = await fs.readFile(path.join(pluginPath, 'package.json'), 'utf-8');
@@ -66,10 +155,18 @@ export class PluginManager {
66
155
  timeout: 120000, // 2 minute timeout
67
156
  });
68
157
  pluginLog.info('npm install completed');
158
+ // Rebuild native modules to ensure they're compiled for current Node version
159
+ pluginLog.info('Running npm rebuild for native modules');
160
+ execSync('npm rebuild', {
161
+ cwd: pluginPath,
162
+ stdio: 'pipe',
163
+ timeout: 120000,
164
+ });
165
+ pluginLog.info('npm rebuild completed');
69
166
  return true;
70
167
  }
71
168
  catch (err) {
72
- pluginLog.error({ err }, 'npm install failed');
169
+ pluginLog.error({ err }, 'npm install/rebuild failed');
73
170
  return false;
74
171
  }
75
172
  }
@@ -166,9 +263,16 @@ export class PluginManager {
166
263
  registry.updatePlugin(pluginProcess.info);
167
264
  // Spawn the plugin process
168
265
  let child;
266
+ // Use local tsx from node_modules if available
267
+ const localTsx = path.join(pluginPath, 'node_modules', '.bin', 'tsx');
268
+ const hasLocalTsx = fsSync.existsSync(localTsx);
169
269
  if (useDevMode && pluginProcess.info.devCommand) {
170
270
  // Run dev command with $PORT replaced
171
- const devCmd = pluginProcess.info.devCommand.replace('$PORT', String(port));
271
+ let devCmd = pluginProcess.info.devCommand.replace('$PORT', String(port));
272
+ // Replace bare 'tsx' with local tsx path if available
273
+ if (hasLocalTsx && devCmd.startsWith('tsx ')) {
274
+ devCmd = localTsx + devCmd.slice(3);
275
+ }
172
276
  const [cmd, ...args] = devCmd.split(' ');
173
277
  pluginLog.info({ port, devCmd, instanceId }, 'Starting plugin in dev mode');
174
278
  child = spawn(cmd ?? 'npm', args, {
@@ -176,14 +280,13 @@ export class PluginManager {
176
280
  env: { ...process.env, PORT: String(port) },
177
281
  stdio: ['ignore', 'pipe', 'pipe'],
178
282
  detached: false,
179
- shell: true,
180
283
  });
181
284
  }
182
285
  else {
183
286
  // Run main file directly
184
287
  const mainFile = path.join(pluginPath, pluginProcess.info.main);
185
288
  const isTypeScript = pluginProcess.info.main.endsWith('.ts');
186
- const runtime = isTypeScript ? 'tsx' : 'node';
289
+ const runtime = isTypeScript ? (hasLocalTsx ? localTsx : 'tsx') : 'node';
187
290
  pluginLog.info({ port, mainFile, instanceId, runtime }, 'Starting plugin instance');
188
291
  child = spawn(runtime, [mainFile], {
189
292
  cwd: pluginPath,
@@ -195,10 +298,10 @@ export class PluginManager {
195
298
  pluginProcess.processes.set(instanceId, child);
196
299
  instance.pid = child.pid ?? null;
197
300
  child.stdout?.on('data', (data) => {
198
- pluginLog.info({ stdout: data.toString().trim(), instanceId }, 'Plugin output');
301
+ logPluginOutput(name, instanceId, data.toString());
199
302
  });
200
303
  child.stderr?.on('data', (data) => {
201
- pluginLog.warn({ stderr: data.toString().trim(), instanceId }, 'Plugin error output');
304
+ logPluginOutput(name, instanceId, data.toString(), true);
202
305
  });
203
306
  child.on('error', (err) => {
204
307
  pluginLog.error({ err, instanceId }, 'Plugin process error');
@@ -217,6 +320,7 @@ export class PluginManager {
217
320
  }
218
321
  this.updateInstanceStatus(name, instanceId, 'running');
219
322
  await registry.save();
323
+ this.broadcastPlugins();
220
324
  pluginLog.info({ port, pid: child.pid, instanceId }, 'Plugin instance started successfully');
221
325
  return instance;
222
326
  }
@@ -248,6 +352,7 @@ export class PluginManager {
248
352
  }
249
353
  registry.updatePlugin(plugin.info);
250
354
  void registry.save();
355
+ this.broadcastPlugins();
251
356
  }
252
357
  async stopInstance(name, instanceId) {
253
358
  const plugin = this.plugins.get(name);
@@ -287,6 +392,7 @@ export class PluginManager {
287
392
  plugin.info.instances = plugin.info.instances.filter((i) => i.id !== instanceId);
288
393
  registry.updatePlugin(plugin.info);
289
394
  void registry.save();
395
+ this.broadcastPlugins();
290
396
  pluginLog.info({ instanceId }, 'Instance stopped');
291
397
  resolve(true);
292
398
  });
@@ -339,6 +445,7 @@ export class PluginManager {
339
445
  async handleNewPlugin(name) {
340
446
  logger.info({ plugin: name }, 'New plugin detected');
341
447
  await this.startPlugin(name);
448
+ this.broadcastPlugins();
342
449
  }
343
450
  async refreshPluginMetadata(name) {
344
451
  const pluginsDir = registry.getPluginsDir();
@@ -373,6 +480,7 @@ export class PluginManager {
373
480
  this.plugins.delete(name);
374
481
  registry.removePlugin(name);
375
482
  await registry.save();
483
+ this.broadcastPlugins();
376
484
  }
377
485
  }
378
486
  export const pluginManager = new PluginManager();
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,OAAO,aAAa;IAChB,OAAO,GAA+B,IAAI,GAAG,EAAE,CAAC;IAExD,KAAK,CAAC,eAAe;QACnB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvD,SAAS;gBACX,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBAE9D,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,yCAAyC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,UAAkB;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC7D,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;aACzB,CAAC,CAAC;YAEH,2DAA2D;YAC3D,OAAO,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,UAAkB,EAAE,UAAkB;QAC1D,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE;gBACtB,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,MAAM,EAAE,mBAAmB;aACrC,CAAC,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,IAAY,EACZ,UAAkB,EAClB,MAAoB,EACpB,KAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAY;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;QAChF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,IAAI;YACJ,WAAW;YACX,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,SAAS,EAAE,EAAE;SACd,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,MAAM,aAAa,GAAkB;YACnC,IAAI;YACJ,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,IAAI;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4EAA4E;QAC5E,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;QAE9D,oEAAoE;QACpE,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAmB;YAC/B,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,UAAU;YAClB,IAAI;YACJ,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,oBAAoB,IAAI,EAAE;SAChC,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,IAAI,KAA+B,CAAC;QAEpC,IAAI,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,sCAAsC;YACtC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,6BAA6B,CAAC,CAAC;YAE5E,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE;gBAChC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAEpF,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACjC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QAEjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACtE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,yBAAyB;YACzB,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,sCAAsC,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,UAAkB,EAAE,IAAY;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;QAEpB,0CAA0C;QAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,kBAAkB;YAClB,QAAQ,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,GAAG,4BAA4B,IAAI,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAkB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,oBAAoB,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;YAC3D,oCAAoC;YACpC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YACjF,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,mDAAmD,CAAC,CAAC;gBACpF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC3B,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;gBACD,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;gBACpB,oCAAoC;gBACpC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;gBACjF,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrB,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB;QAChB,gEAAgE;QAChE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3C,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY;QACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;QAChF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;QAElD,qBAAqB;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtB,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/plugin-manager.ts"],"names":[],"mappings":"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"}