mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 06:26:26 +00:00
c98bf7977d
Connects TREK to the static GitHub registry (mauriceboe/TREK-Plugins). The
registry repo + CI gates were already live; this is the server side.
- registry.service: fetches the single aggregated dist/index.json (never
per-plugin GitHub API calls — the HACS rate-limit lesson), caches it 30 min,
soft-fails to a stale/empty registry, and installs a pinned version through
the M4 pipeline: safe download -> sha256 verify -> slip-safe extract ->
manifest re-validate -> native re-scan -> atomic move -> discover (inactive),
recording repo/commit/sha provenance. Handles the codeload {repo}-{sha}/
wrapper directory.
- Admin endpoints: GET /api/admin/plugins/registry (browse metadata) and
POST /api/admin/plugins/install { id, version }. Install never executes code;
activation stays a separate, deliberate step.
22 lines
1.1 KiB
TypeScript
22 lines
1.1 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { PluginsController } from './plugins.controller';
|
|
import { PluginsFeedController } from './plugins-feed.controller';
|
|
import { PluginsProxyController } from './plugins-proxy.controller';
|
|
import { PluginFrameController } from './plugin-frame.controller';
|
|
import { PluginsService } from './plugins.service';
|
|
import { PluginRuntimeService } from './plugin-runtime.service';
|
|
import { PluginRegistryService } from './registry/registry.service';
|
|
|
|
/**
|
|
* Plugin system (#plugins). M0 read side + M2 isolated runtime + M3 frontend:
|
|
* the runtime service owns the process supervisor and boots active plugins on
|
|
* startup; the proxy forwards /api/plugins/:id/* to the child; the feed lists
|
|
* active plugins for the client; the frame controller serves sandboxed page/
|
|
* widget assets at /plugin-frame/:id/*.
|
|
*/
|
|
@Module({
|
|
controllers: [PluginsController, PluginsFeedController, PluginsProxyController, PluginFrameController],
|
|
providers: [PluginsService, PluginRuntimeService, PluginRegistryService],
|
|
})
|
|
export class PluginsModule {}
|