@intentsolutions/blueprint 2.5.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/collector.d.ts +73 -0
- package/dist/analytics/collector.d.ts.map +1 -0
- package/dist/analytics/collector.js +239 -0
- package/dist/analytics/collector.js.map +1 -0
- package/dist/analytics/dashboard.d.ts +62 -0
- package/dist/analytics/dashboard.d.ts.map +1 -0
- package/dist/analytics/dashboard.js +346 -0
- package/dist/analytics/dashboard.js.map +1 -0
- package/dist/analytics/index.d.ts +75 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +115 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/types.d.ts +169 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +16 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/cli.js +561 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/analytics.d.ts +38 -0
- package/dist/commands/analytics.d.ts.map +1 -0
- package/dist/commands/analytics.js +196 -0
- package/dist/commands/analytics.js.map +1 -0
- package/dist/commands/index.d.ts +26 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +101 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/marketplace.d.ts +52 -0
- package/dist/commands/marketplace.d.ts.map +1 -0
- package/dist/commands/marketplace.js +356 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/enterprise/api/index.d.ts +8 -0
- package/dist/enterprise/api/index.d.ts.map +1 -0
- package/dist/enterprise/api/index.js +8 -0
- package/dist/enterprise/api/index.js.map +1 -0
- package/dist/enterprise/api/server.d.ts +79 -0
- package/dist/enterprise/api/server.d.ts.map +1 -0
- package/dist/enterprise/api/server.js +468 -0
- package/dist/enterprise/api/server.js.map +1 -0
- package/dist/enterprise/api/types.d.ts +269 -0
- package/dist/enterprise/api/types.d.ts.map +1 -0
- package/dist/enterprise/api/types.js +6 -0
- package/dist/enterprise/api/types.js.map +1 -0
- package/dist/enterprise/api/webhooks.d.ts +214 -0
- package/dist/enterprise/api/webhooks.d.ts.map +1 -0
- package/dist/enterprise/api/webhooks.js +308 -0
- package/dist/enterprise/api/webhooks.js.map +1 -0
- package/dist/enterprise/index.d.ts +9 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +13 -0
- package/dist/enterprise/index.js.map +1 -0
- package/dist/enterprise/models/claude.d.ts +23 -0
- package/dist/enterprise/models/claude.d.ts.map +1 -0
- package/dist/enterprise/models/claude.js +176 -0
- package/dist/enterprise/models/claude.js.map +1 -0
- package/dist/enterprise/models/gemini.d.ts +25 -0
- package/dist/enterprise/models/gemini.d.ts.map +1 -0
- package/dist/enterprise/models/gemini.js +199 -0
- package/dist/enterprise/models/gemini.js.map +1 -0
- package/dist/enterprise/models/index.d.ts +11 -0
- package/dist/enterprise/models/index.d.ts.map +1 -0
- package/dist/enterprise/models/index.js +11 -0
- package/dist/enterprise/models/index.js.map +1 -0
- package/dist/enterprise/models/ollama.d.ts +32 -0
- package/dist/enterprise/models/ollama.d.ts.map +1 -0
- package/dist/enterprise/models/ollama.js +285 -0
- package/dist/enterprise/models/ollama.js.map +1 -0
- package/dist/enterprise/models/openai.d.ts +27 -0
- package/dist/enterprise/models/openai.d.ts.map +1 -0
- package/dist/enterprise/models/openai.js +222 -0
- package/dist/enterprise/models/openai.js.map +1 -0
- package/dist/enterprise/models/registry.d.ts +101 -0
- package/dist/enterprise/models/registry.d.ts.map +1 -0
- package/dist/enterprise/models/registry.js +263 -0
- package/dist/enterprise/models/registry.js.map +1 -0
- package/dist/enterprise/models/types.d.ts +141 -0
- package/dist/enterprise/models/types.d.ts.map +1 -0
- package/dist/enterprise/models/types.js +40 -0
- package/dist/enterprise/models/types.js.map +1 -0
- package/dist/enterprise/team/audit.d.ts +153 -0
- package/dist/enterprise/team/audit.d.ts.map +1 -0
- package/dist/enterprise/team/audit.js +346 -0
- package/dist/enterprise/team/audit.js.map +1 -0
- package/dist/enterprise/team/config.d.ts +83 -0
- package/dist/enterprise/team/config.d.ts.map +1 -0
- package/dist/enterprise/team/config.js +245 -0
- package/dist/enterprise/team/config.js.map +1 -0
- package/dist/enterprise/team/index.d.ts +7 -0
- package/dist/enterprise/team/index.d.ts.map +1 -0
- package/dist/enterprise/team/index.js +7 -0
- package/dist/enterprise/team/index.js.map +1 -0
- package/dist/enterprise/templates/engine.d.ts +100 -0
- package/dist/enterprise/templates/engine.d.ts.map +1 -0
- package/dist/enterprise/templates/engine.js +429 -0
- package/dist/enterprise/templates/engine.js.map +1 -0
- package/dist/enterprise/templates/index.d.ts +8 -0
- package/dist/enterprise/templates/index.d.ts.map +1 -0
- package/dist/enterprise/templates/index.js +8 -0
- package/dist/enterprise/templates/index.js.map +1 -0
- package/dist/enterprise/templates/loader.d.ts +65 -0
- package/dist/enterprise/templates/loader.d.ts.map +1 -0
- package/dist/enterprise/templates/loader.js +269 -0
- package/dist/enterprise/templates/loader.js.map +1 -0
- package/dist/enterprise/templates/types.d.ts +212 -0
- package/dist/enterprise/templates/types.d.ts.map +1 -0
- package/dist/enterprise/templates/types.js +55 -0
- package/dist/enterprise/templates/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/notion/client.d.ts +114 -0
- package/dist/integrations/notion/client.d.ts.map +1 -0
- package/dist/integrations/notion/client.js +413 -0
- package/dist/integrations/notion/client.js.map +1 -0
- package/dist/integrations/notion/exporter.d.ts +56 -0
- package/dist/integrations/notion/exporter.d.ts.map +1 -0
- package/dist/integrations/notion/exporter.js +278 -0
- package/dist/integrations/notion/exporter.js.map +1 -0
- package/dist/integrations/notion/index.d.ts +9 -0
- package/dist/integrations/notion/index.d.ts.map +1 -0
- package/dist/integrations/notion/index.js +8 -0
- package/dist/integrations/notion/index.js.map +1 -0
- package/dist/integrations/notion/types.d.ts +276 -0
- package/dist/integrations/notion/types.d.ts.map +1 -0
- package/dist/integrations/notion/types.js +45 -0
- package/dist/integrations/notion/types.js.map +1 -0
- package/dist/marketplace/index.d.ts +86 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +112 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/manager.d.ts +81 -0
- package/dist/marketplace/manager.d.ts.map +1 -0
- package/dist/marketplace/manager.js +292 -0
- package/dist/marketplace/manager.js.map +1 -0
- package/dist/marketplace/packs/fastapi.d.ts +8 -0
- package/dist/marketplace/packs/fastapi.d.ts.map +1 -0
- package/dist/marketplace/packs/fastapi.js +728 -0
- package/dist/marketplace/packs/fastapi.js.map +1 -0
- package/dist/marketplace/packs/fintech.d.ts +8 -0
- package/dist/marketplace/packs/fintech.d.ts.map +1 -0
- package/dist/marketplace/packs/fintech.js +366 -0
- package/dist/marketplace/packs/fintech.js.map +1 -0
- package/dist/marketplace/packs/gdpr.d.ts +8 -0
- package/dist/marketplace/packs/gdpr.d.ts.map +1 -0
- package/dist/marketplace/packs/gdpr.js +637 -0
- package/dist/marketplace/packs/gdpr.js.map +1 -0
- package/dist/marketplace/packs/healthtech.d.ts +8 -0
- package/dist/marketplace/packs/healthtech.d.ts.map +1 -0
- package/dist/marketplace/packs/healthtech.js +470 -0
- package/dist/marketplace/packs/healthtech.js.map +1 -0
- package/dist/marketplace/packs/hipaa.d.ts +8 -0
- package/dist/marketplace/packs/hipaa.d.ts.map +1 -0
- package/dist/marketplace/packs/hipaa.js +473 -0
- package/dist/marketplace/packs/hipaa.js.map +1 -0
- package/dist/marketplace/packs/index.d.ts +250 -0
- package/dist/marketplace/packs/index.d.ts.map +1 -0
- package/dist/marketplace/packs/index.js +205 -0
- package/dist/marketplace/packs/index.js.map +1 -0
- package/dist/marketplace/packs/nextjs.d.ts +8 -0
- package/dist/marketplace/packs/nextjs.d.ts.map +1 -0
- package/dist/marketplace/packs/nextjs.js +532 -0
- package/dist/marketplace/packs/nextjs.js.map +1 -0
- package/dist/marketplace/packs/rails.d.ts +8 -0
- package/dist/marketplace/packs/rails.d.ts.map +1 -0
- package/dist/marketplace/packs/rails.js +866 -0
- package/dist/marketplace/packs/rails.js.map +1 -0
- package/dist/marketplace/packs/saas.d.ts +8 -0
- package/dist/marketplace/packs/saas.d.ts.map +1 -0
- package/dist/marketplace/packs/saas.js +516 -0
- package/dist/marketplace/packs/saas.js.map +1 -0
- package/dist/marketplace/packs/soc2.d.ts +8 -0
- package/dist/marketplace/packs/soc2.d.ts.map +1 -0
- package/dist/marketplace/packs/soc2.js +455 -0
- package/dist/marketplace/packs/soc2.js.map +1 -0
- package/dist/marketplace/registry.d.ts +76 -0
- package/dist/marketplace/registry.d.ts.map +1 -0
- package/dist/marketplace/registry.js +454 -0
- package/dist/marketplace/registry.js.map +1 -0
- package/dist/marketplace/types.d.ts +202 -0
- package/dist/marketplace/types.d.ts.map +1 -0
- package/dist/marketplace/types.js +61 -0
- package/dist/marketplace/types.js.map +1 -0
- package/dist/mcp/index.js +1 -1
- package/dist/plugins/builtin/html-formatter.d.ts +11 -0
- package/dist/plugins/builtin/html-formatter.d.ts.map +1 -0
- package/dist/plugins/builtin/html-formatter.js +214 -0
- package/dist/plugins/builtin/html-formatter.js.map +1 -0
- package/dist/plugins/builtin/index.d.ts +21 -0
- package/dist/plugins/builtin/index.d.ts.map +1 -0
- package/dist/plugins/builtin/index.js +31 -0
- package/dist/plugins/builtin/index.js.map +1 -0
- package/dist/plugins/builtin/markdown-formatter.d.ts +11 -0
- package/dist/plugins/builtin/markdown-formatter.d.ts.map +1 -0
- package/dist/plugins/builtin/markdown-formatter.js +77 -0
- package/dist/plugins/builtin/markdown-formatter.js.map +1 -0
- package/dist/plugins/builtin/quality-validator.d.ts +11 -0
- package/dist/plugins/builtin/quality-validator.d.ts.map +1 -0
- package/dist/plugins/builtin/quality-validator.js +355 -0
- package/dist/plugins/builtin/quality-validator.js.map +1 -0
- package/dist/plugins/index.d.ts +98 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +187 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/manager.d.ts +122 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +349 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/types.d.ts +348 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +13 -0
- package/dist/plugins/types.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Manager
|
|
3
|
+
* Handles plugin loading, registration, and lifecycle management
|
|
4
|
+
*/
|
|
5
|
+
import type { Plugin, PluginEvent, PluginContext, PluginLogger, PluginRegistryConfig, PluginType, FormatterPlugin, ValidatorPlugin, ProcessorPlugin, IntegrationPlugin, TemplateProviderPlugin, HookEventData } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Plugin Manager
|
|
8
|
+
*/
|
|
9
|
+
export declare class PluginManager {
|
|
10
|
+
private plugins;
|
|
11
|
+
private config;
|
|
12
|
+
private context;
|
|
13
|
+
private hooks;
|
|
14
|
+
constructor(config?: Partial<PluginRegistryConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the plugin manager
|
|
17
|
+
*/
|
|
18
|
+
init(context: PluginContext): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Destroy the plugin manager
|
|
21
|
+
*/
|
|
22
|
+
destroy(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Register a plugin
|
|
25
|
+
*/
|
|
26
|
+
register(plugin: Plugin, config?: Record<string, unknown>): void;
|
|
27
|
+
/**
|
|
28
|
+
* Unregister a plugin
|
|
29
|
+
*/
|
|
30
|
+
unregister(id: string): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Enable a plugin
|
|
33
|
+
*/
|
|
34
|
+
enable(id: string): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Disable a plugin
|
|
37
|
+
*/
|
|
38
|
+
disable(id: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Get a plugin by ID
|
|
41
|
+
*/
|
|
42
|
+
get<T extends Plugin>(id: string): T | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Get all plugins of a specific type
|
|
45
|
+
*/
|
|
46
|
+
getByType<T extends Plugin>(type: PluginType): T[];
|
|
47
|
+
/**
|
|
48
|
+
* Get all formatters
|
|
49
|
+
*/
|
|
50
|
+
getFormatters(): FormatterPlugin[];
|
|
51
|
+
/**
|
|
52
|
+
* Get all validators
|
|
53
|
+
*/
|
|
54
|
+
getValidators(): ValidatorPlugin[];
|
|
55
|
+
/**
|
|
56
|
+
* Get all processors
|
|
57
|
+
*/
|
|
58
|
+
getProcessors(): ProcessorPlugin[];
|
|
59
|
+
/**
|
|
60
|
+
* Get all integrations
|
|
61
|
+
*/
|
|
62
|
+
getIntegrations(): IntegrationPlugin[];
|
|
63
|
+
/**
|
|
64
|
+
* Get all template providers
|
|
65
|
+
*/
|
|
66
|
+
getTemplateProviders(): TemplateProviderPlugin[];
|
|
67
|
+
/**
|
|
68
|
+
* Get formatter by extension
|
|
69
|
+
*/
|
|
70
|
+
getFormatterByExtension(ext: string): FormatterPlugin | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Get integration by name
|
|
73
|
+
*/
|
|
74
|
+
getIntegration(name: string): IntegrationPlugin | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Execute hooks for an event
|
|
77
|
+
*/
|
|
78
|
+
executeHooks(event: PluginEvent, data: HookEventData): Promise<HookEventData>;
|
|
79
|
+
/**
|
|
80
|
+
* List all registered plugins
|
|
81
|
+
*/
|
|
82
|
+
list(): Array<{
|
|
83
|
+
id: string;
|
|
84
|
+
name: string;
|
|
85
|
+
type: PluginType;
|
|
86
|
+
enabled: boolean;
|
|
87
|
+
version: string;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Check if a plugin is registered
|
|
91
|
+
*/
|
|
92
|
+
has(id: string): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Check if a plugin is enabled
|
|
95
|
+
*/
|
|
96
|
+
isEnabled(id: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Load built-in plugins
|
|
99
|
+
*/
|
|
100
|
+
private loadBuiltinPlugins;
|
|
101
|
+
/**
|
|
102
|
+
* Discover plugins in the plugin directory
|
|
103
|
+
*/
|
|
104
|
+
private discoverPlugins;
|
|
105
|
+
/**
|
|
106
|
+
* Load a plugin from a path
|
|
107
|
+
*/
|
|
108
|
+
private loadPlugin;
|
|
109
|
+
/**
|
|
110
|
+
* Validate plugin structure
|
|
111
|
+
*/
|
|
112
|
+
private isValidPlugin;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create a plugin manager instance
|
|
116
|
+
*/
|
|
117
|
+
export declare function createPluginManager(config?: Partial<PluginRegistryConfig>): PluginManager;
|
|
118
|
+
/**
|
|
119
|
+
* Create a basic plugin logger
|
|
120
|
+
*/
|
|
121
|
+
export declare function createPluginLogger(prefix: string): PluginLogger;
|
|
122
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,MAAM,EAEN,WAAW,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EAEjB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,KAAK,CAA6C;gBAE9C,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAItD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAuBpE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKhD;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;IAUlD;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;OAEG;IACH,eAAe,IAAI,iBAAiB,EAAE;IAItC;;OAEG;IACH,oBAAoB,IAAI,sBAAsB,EAAE;IAIhD;;OAEG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAKjE;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAK3D;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBnF;;OAEG;IACH,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAchG;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAK9B;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,eAAe;IAmB7B;;OAEG;YACW,UAAU;IA2BxB;;OAEG;IACH,OAAO,CAAC,aAAa;CAWtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,aAAa,CAEzF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAiB/D"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Manager
|
|
3
|
+
* Handles plugin loading, registration, and lifecycle management
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { DEFAULT_PLUGIN_CONFIG } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Plugin Manager
|
|
10
|
+
*/
|
|
11
|
+
export class PluginManager {
|
|
12
|
+
plugins = new Map();
|
|
13
|
+
config;
|
|
14
|
+
context = null;
|
|
15
|
+
hooks = new Map();
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
this.config = { ...DEFAULT_PLUGIN_CONFIG, ...config };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the plugin manager
|
|
21
|
+
*/
|
|
22
|
+
async init(context) {
|
|
23
|
+
this.context = context;
|
|
24
|
+
// Load built-in plugins
|
|
25
|
+
if (this.config.enableBuiltin) {
|
|
26
|
+
await this.loadBuiltinPlugins();
|
|
27
|
+
}
|
|
28
|
+
// Auto-discover plugins
|
|
29
|
+
if (this.config.autoDiscover) {
|
|
30
|
+
await this.discoverPlugins();
|
|
31
|
+
}
|
|
32
|
+
// Initialize all loaded plugins
|
|
33
|
+
for (const [id, entry] of this.plugins) {
|
|
34
|
+
if (entry.enabled && entry.plugin.init) {
|
|
35
|
+
try {
|
|
36
|
+
await entry.plugin.init(this.context);
|
|
37
|
+
context.logger.debug(`Plugin initialized: ${id}`);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
context.logger.error(`Failed to initialize plugin ${id}`, error);
|
|
41
|
+
entry.enabled = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Destroy the plugin manager
|
|
48
|
+
*/
|
|
49
|
+
async destroy() {
|
|
50
|
+
for (const [id, entry] of this.plugins) {
|
|
51
|
+
if (entry.enabled && entry.plugin.destroy) {
|
|
52
|
+
try {
|
|
53
|
+
await entry.plugin.destroy();
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.context?.logger.error(`Failed to destroy plugin ${id}`, error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
this.plugins.clear();
|
|
61
|
+
this.hooks.clear();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Register a plugin
|
|
65
|
+
*/
|
|
66
|
+
register(plugin, config = {}) {
|
|
67
|
+
const entry = {
|
|
68
|
+
plugin,
|
|
69
|
+
enabled: true,
|
|
70
|
+
config,
|
|
71
|
+
loadedAt: new Date(),
|
|
72
|
+
};
|
|
73
|
+
this.plugins.set(plugin.meta.id, entry);
|
|
74
|
+
// Register hooks
|
|
75
|
+
if (plugin.meta.type === 'hook' && plugin.meta.events) {
|
|
76
|
+
for (const event of plugin.meta.events) {
|
|
77
|
+
if (!this.hooks.has(event)) {
|
|
78
|
+
this.hooks.set(event, []);
|
|
79
|
+
}
|
|
80
|
+
this.hooks.get(event).push(plugin);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
this.context?.logger.info(`Plugin registered: ${plugin.meta.id}`);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Unregister a plugin
|
|
87
|
+
*/
|
|
88
|
+
async unregister(id) {
|
|
89
|
+
const entry = this.plugins.get(id);
|
|
90
|
+
if (!entry)
|
|
91
|
+
return false;
|
|
92
|
+
// Destroy if initialized
|
|
93
|
+
if (entry.plugin.destroy) {
|
|
94
|
+
await entry.plugin.destroy();
|
|
95
|
+
}
|
|
96
|
+
// Remove from hooks
|
|
97
|
+
if (entry.plugin.meta.type === 'hook' && entry.plugin.meta.events) {
|
|
98
|
+
for (const event of entry.plugin.meta.events) {
|
|
99
|
+
const hooks = this.hooks.get(event);
|
|
100
|
+
if (hooks) {
|
|
101
|
+
const index = hooks.findIndex(h => h.meta.id === id);
|
|
102
|
+
if (index !== -1)
|
|
103
|
+
hooks.splice(index, 1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.plugins.delete(id);
|
|
108
|
+
this.context?.logger.info(`Plugin unregistered: ${id}`);
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Enable a plugin
|
|
113
|
+
*/
|
|
114
|
+
async enable(id) {
|
|
115
|
+
const entry = this.plugins.get(id);
|
|
116
|
+
if (!entry)
|
|
117
|
+
return false;
|
|
118
|
+
entry.enabled = true;
|
|
119
|
+
if (entry.plugin.init && this.context) {
|
|
120
|
+
await entry.plugin.init(this.context);
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Disable a plugin
|
|
126
|
+
*/
|
|
127
|
+
async disable(id) {
|
|
128
|
+
const entry = this.plugins.get(id);
|
|
129
|
+
if (!entry)
|
|
130
|
+
return false;
|
|
131
|
+
if (entry.plugin.destroy) {
|
|
132
|
+
await entry.plugin.destroy();
|
|
133
|
+
}
|
|
134
|
+
entry.enabled = false;
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get a plugin by ID
|
|
139
|
+
*/
|
|
140
|
+
get(id) {
|
|
141
|
+
const entry = this.plugins.get(id);
|
|
142
|
+
return entry?.enabled ? entry.plugin : undefined;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get all plugins of a specific type
|
|
146
|
+
*/
|
|
147
|
+
getByType(type) {
|
|
148
|
+
const result = [];
|
|
149
|
+
for (const entry of this.plugins.values()) {
|
|
150
|
+
if (entry.enabled && entry.plugin.meta.type === type) {
|
|
151
|
+
result.push(entry.plugin);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get all formatters
|
|
158
|
+
*/
|
|
159
|
+
getFormatters() {
|
|
160
|
+
return this.getByType('formatter');
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get all validators
|
|
164
|
+
*/
|
|
165
|
+
getValidators() {
|
|
166
|
+
return this.getByType('validator');
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get all processors
|
|
170
|
+
*/
|
|
171
|
+
getProcessors() {
|
|
172
|
+
return this.getByType('processor');
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get all integrations
|
|
176
|
+
*/
|
|
177
|
+
getIntegrations() {
|
|
178
|
+
return this.getByType('integration');
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get all template providers
|
|
182
|
+
*/
|
|
183
|
+
getTemplateProviders() {
|
|
184
|
+
return this.getByType('template');
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get formatter by extension
|
|
188
|
+
*/
|
|
189
|
+
getFormatterByExtension(ext) {
|
|
190
|
+
const formatters = this.getFormatters();
|
|
191
|
+
return formatters.find(f => f.getExtension() === ext);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get integration by name
|
|
195
|
+
*/
|
|
196
|
+
getIntegration(name) {
|
|
197
|
+
const integrations = this.getIntegrations();
|
|
198
|
+
return integrations.find(i => i.meta.id === name || i.meta.name.toLowerCase() === name.toLowerCase());
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Execute hooks for an event
|
|
202
|
+
*/
|
|
203
|
+
async executeHooks(event, data) {
|
|
204
|
+
const hooks = this.hooks.get(event) || [];
|
|
205
|
+
let result = data;
|
|
206
|
+
for (const hook of hooks) {
|
|
207
|
+
try {
|
|
208
|
+
result = await hook.onEvent(event, result);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
this.context?.logger.error(`Hook error in ${hook.meta.id} for event ${event}`, error);
|
|
212
|
+
if (event === 'onError') {
|
|
213
|
+
// Don't re-throw errors from error handlers
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* List all registered plugins
|
|
223
|
+
*/
|
|
224
|
+
list() {
|
|
225
|
+
const result = [];
|
|
226
|
+
for (const [id, entry] of this.plugins) {
|
|
227
|
+
result.push({
|
|
228
|
+
id,
|
|
229
|
+
name: entry.plugin.meta.name,
|
|
230
|
+
type: entry.plugin.meta.type,
|
|
231
|
+
enabled: entry.enabled,
|
|
232
|
+
version: entry.plugin.meta.version,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Check if a plugin is registered
|
|
239
|
+
*/
|
|
240
|
+
has(id) {
|
|
241
|
+
return this.plugins.has(id);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check if a plugin is enabled
|
|
245
|
+
*/
|
|
246
|
+
isEnabled(id) {
|
|
247
|
+
const entry = this.plugins.get(id);
|
|
248
|
+
return entry?.enabled ?? false;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Load built-in plugins
|
|
252
|
+
*/
|
|
253
|
+
async loadBuiltinPlugins() {
|
|
254
|
+
// Register built-in plugins
|
|
255
|
+
// These would be imported from ./builtin/
|
|
256
|
+
this.context?.logger.debug('Loading built-in plugins');
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Discover plugins in the plugin directory
|
|
260
|
+
*/
|
|
261
|
+
async discoverPlugins() {
|
|
262
|
+
const pluginDir = join(this.context?.projectPath || '.', this.config.pluginDir);
|
|
263
|
+
if (!existsSync(pluginDir)) {
|
|
264
|
+
this.context?.logger.debug(`Plugin directory not found: ${pluginDir}`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
const entries = readdirSync(pluginDir, { withFileTypes: true });
|
|
268
|
+
for (const entry of entries) {
|
|
269
|
+
if (entry.isDirectory()) {
|
|
270
|
+
await this.loadPlugin(join(pluginDir, entry.name));
|
|
271
|
+
}
|
|
272
|
+
else if (entry.name.endsWith('.js') || entry.name.endsWith('.mjs')) {
|
|
273
|
+
await this.loadPlugin(join(pluginDir, entry.name));
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Load a plugin from a path
|
|
279
|
+
*/
|
|
280
|
+
async loadPlugin(path) {
|
|
281
|
+
try {
|
|
282
|
+
// Try to load package.json for plugin metadata
|
|
283
|
+
const pkgPath = join(path, 'package.json');
|
|
284
|
+
if (existsSync(pkgPath)) {
|
|
285
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
286
|
+
if (pkg.intent?.plugin) {
|
|
287
|
+
const entryPoint = join(path, pkg.main || 'index.js');
|
|
288
|
+
const module = await import(entryPoint);
|
|
289
|
+
const plugin = module.default || module;
|
|
290
|
+
if (this.isValidPlugin(plugin)) {
|
|
291
|
+
this.register(plugin, pkg.intent.config || {});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
// Direct JS file
|
|
297
|
+
const module = await import(path);
|
|
298
|
+
const plugin = module.default || module;
|
|
299
|
+
if (this.isValidPlugin(plugin)) {
|
|
300
|
+
this.register(plugin);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
this.context?.logger.error(`Failed to load plugin from ${path}`, error);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Validate plugin structure
|
|
310
|
+
*/
|
|
311
|
+
isValidPlugin(obj) {
|
|
312
|
+
if (!obj || typeof obj !== 'object')
|
|
313
|
+
return false;
|
|
314
|
+
const plugin = obj;
|
|
315
|
+
return (plugin.meta !== undefined &&
|
|
316
|
+
typeof plugin.meta.id === 'string' &&
|
|
317
|
+
typeof plugin.meta.name === 'string' &&
|
|
318
|
+
typeof plugin.meta.version === 'string' &&
|
|
319
|
+
typeof plugin.meta.type === 'string');
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Create a plugin manager instance
|
|
324
|
+
*/
|
|
325
|
+
export function createPluginManager(config) {
|
|
326
|
+
return new PluginManager(config);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Create a basic plugin logger
|
|
330
|
+
*/
|
|
331
|
+
export function createPluginLogger(prefix) {
|
|
332
|
+
return {
|
|
333
|
+
debug: (message, data) => {
|
|
334
|
+
if (process.env.DEBUG) {
|
|
335
|
+
console.debug(`[${prefix}] ${message}`, data ?? '');
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
info: (message, data) => {
|
|
339
|
+
console.info(`[${prefix}] ${message}`, data ?? '');
|
|
340
|
+
},
|
|
341
|
+
warn: (message, data) => {
|
|
342
|
+
console.warn(`[${prefix}] ${message}`, data ?? '');
|
|
343
|
+
},
|
|
344
|
+
error: (message, data) => {
|
|
345
|
+
console.error(`[${prefix}] ${message}`, data ?? '');
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
|