@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.
Files changed (212) hide show
  1. package/dist/analytics/collector.d.ts +73 -0
  2. package/dist/analytics/collector.d.ts.map +1 -0
  3. package/dist/analytics/collector.js +239 -0
  4. package/dist/analytics/collector.js.map +1 -0
  5. package/dist/analytics/dashboard.d.ts +62 -0
  6. package/dist/analytics/dashboard.d.ts.map +1 -0
  7. package/dist/analytics/dashboard.js +346 -0
  8. package/dist/analytics/dashboard.js.map +1 -0
  9. package/dist/analytics/index.d.ts +75 -0
  10. package/dist/analytics/index.d.ts.map +1 -0
  11. package/dist/analytics/index.js +115 -0
  12. package/dist/analytics/index.js.map +1 -0
  13. package/dist/analytics/types.d.ts +169 -0
  14. package/dist/analytics/types.d.ts.map +1 -0
  15. package/dist/analytics/types.js +16 -0
  16. package/dist/analytics/types.js.map +1 -0
  17. package/dist/cli.js +561 -6
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/analytics.d.ts +38 -0
  20. package/dist/commands/analytics.d.ts.map +1 -0
  21. package/dist/commands/analytics.js +196 -0
  22. package/dist/commands/analytics.js.map +1 -0
  23. package/dist/commands/index.d.ts +26 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +101 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/marketplace.d.ts +52 -0
  28. package/dist/commands/marketplace.d.ts.map +1 -0
  29. package/dist/commands/marketplace.js +356 -0
  30. package/dist/commands/marketplace.js.map +1 -0
  31. package/dist/enterprise/api/index.d.ts +8 -0
  32. package/dist/enterprise/api/index.d.ts.map +1 -0
  33. package/dist/enterprise/api/index.js +8 -0
  34. package/dist/enterprise/api/index.js.map +1 -0
  35. package/dist/enterprise/api/server.d.ts +79 -0
  36. package/dist/enterprise/api/server.d.ts.map +1 -0
  37. package/dist/enterprise/api/server.js +468 -0
  38. package/dist/enterprise/api/server.js.map +1 -0
  39. package/dist/enterprise/api/types.d.ts +269 -0
  40. package/dist/enterprise/api/types.d.ts.map +1 -0
  41. package/dist/enterprise/api/types.js +6 -0
  42. package/dist/enterprise/api/types.js.map +1 -0
  43. package/dist/enterprise/api/webhooks.d.ts +214 -0
  44. package/dist/enterprise/api/webhooks.d.ts.map +1 -0
  45. package/dist/enterprise/api/webhooks.js +308 -0
  46. package/dist/enterprise/api/webhooks.js.map +1 -0
  47. package/dist/enterprise/index.d.ts +9 -0
  48. package/dist/enterprise/index.d.ts.map +1 -0
  49. package/dist/enterprise/index.js +13 -0
  50. package/dist/enterprise/index.js.map +1 -0
  51. package/dist/enterprise/models/claude.d.ts +23 -0
  52. package/dist/enterprise/models/claude.d.ts.map +1 -0
  53. package/dist/enterprise/models/claude.js +176 -0
  54. package/dist/enterprise/models/claude.js.map +1 -0
  55. package/dist/enterprise/models/gemini.d.ts +25 -0
  56. package/dist/enterprise/models/gemini.d.ts.map +1 -0
  57. package/dist/enterprise/models/gemini.js +199 -0
  58. package/dist/enterprise/models/gemini.js.map +1 -0
  59. package/dist/enterprise/models/index.d.ts +11 -0
  60. package/dist/enterprise/models/index.d.ts.map +1 -0
  61. package/dist/enterprise/models/index.js +11 -0
  62. package/dist/enterprise/models/index.js.map +1 -0
  63. package/dist/enterprise/models/ollama.d.ts +32 -0
  64. package/dist/enterprise/models/ollama.d.ts.map +1 -0
  65. package/dist/enterprise/models/ollama.js +285 -0
  66. package/dist/enterprise/models/ollama.js.map +1 -0
  67. package/dist/enterprise/models/openai.d.ts +27 -0
  68. package/dist/enterprise/models/openai.d.ts.map +1 -0
  69. package/dist/enterprise/models/openai.js +222 -0
  70. package/dist/enterprise/models/openai.js.map +1 -0
  71. package/dist/enterprise/models/registry.d.ts +101 -0
  72. package/dist/enterprise/models/registry.d.ts.map +1 -0
  73. package/dist/enterprise/models/registry.js +263 -0
  74. package/dist/enterprise/models/registry.js.map +1 -0
  75. package/dist/enterprise/models/types.d.ts +141 -0
  76. package/dist/enterprise/models/types.d.ts.map +1 -0
  77. package/dist/enterprise/models/types.js +40 -0
  78. package/dist/enterprise/models/types.js.map +1 -0
  79. package/dist/enterprise/team/audit.d.ts +153 -0
  80. package/dist/enterprise/team/audit.d.ts.map +1 -0
  81. package/dist/enterprise/team/audit.js +346 -0
  82. package/dist/enterprise/team/audit.js.map +1 -0
  83. package/dist/enterprise/team/config.d.ts +83 -0
  84. package/dist/enterprise/team/config.d.ts.map +1 -0
  85. package/dist/enterprise/team/config.js +245 -0
  86. package/dist/enterprise/team/config.js.map +1 -0
  87. package/dist/enterprise/team/index.d.ts +7 -0
  88. package/dist/enterprise/team/index.d.ts.map +1 -0
  89. package/dist/enterprise/team/index.js +7 -0
  90. package/dist/enterprise/team/index.js.map +1 -0
  91. package/dist/enterprise/templates/engine.d.ts +100 -0
  92. package/dist/enterprise/templates/engine.d.ts.map +1 -0
  93. package/dist/enterprise/templates/engine.js +429 -0
  94. package/dist/enterprise/templates/engine.js.map +1 -0
  95. package/dist/enterprise/templates/index.d.ts +8 -0
  96. package/dist/enterprise/templates/index.d.ts.map +1 -0
  97. package/dist/enterprise/templates/index.js +8 -0
  98. package/dist/enterprise/templates/index.js.map +1 -0
  99. package/dist/enterprise/templates/loader.d.ts +65 -0
  100. package/dist/enterprise/templates/loader.d.ts.map +1 -0
  101. package/dist/enterprise/templates/loader.js +269 -0
  102. package/dist/enterprise/templates/loader.js.map +1 -0
  103. package/dist/enterprise/templates/types.d.ts +212 -0
  104. package/dist/enterprise/templates/types.d.ts.map +1 -0
  105. package/dist/enterprise/templates/types.js +55 -0
  106. package/dist/enterprise/templates/types.js.map +1 -0
  107. package/dist/index.d.ts +1 -0
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +2 -0
  110. package/dist/index.js.map +1 -1
  111. package/dist/integrations/notion/client.d.ts +114 -0
  112. package/dist/integrations/notion/client.d.ts.map +1 -0
  113. package/dist/integrations/notion/client.js +413 -0
  114. package/dist/integrations/notion/client.js.map +1 -0
  115. package/dist/integrations/notion/exporter.d.ts +56 -0
  116. package/dist/integrations/notion/exporter.d.ts.map +1 -0
  117. package/dist/integrations/notion/exporter.js +278 -0
  118. package/dist/integrations/notion/exporter.js.map +1 -0
  119. package/dist/integrations/notion/index.d.ts +9 -0
  120. package/dist/integrations/notion/index.d.ts.map +1 -0
  121. package/dist/integrations/notion/index.js +8 -0
  122. package/dist/integrations/notion/index.js.map +1 -0
  123. package/dist/integrations/notion/types.d.ts +276 -0
  124. package/dist/integrations/notion/types.d.ts.map +1 -0
  125. package/dist/integrations/notion/types.js +45 -0
  126. package/dist/integrations/notion/types.js.map +1 -0
  127. package/dist/marketplace/index.d.ts +86 -0
  128. package/dist/marketplace/index.d.ts.map +1 -0
  129. package/dist/marketplace/index.js +112 -0
  130. package/dist/marketplace/index.js.map +1 -0
  131. package/dist/marketplace/manager.d.ts +81 -0
  132. package/dist/marketplace/manager.d.ts.map +1 -0
  133. package/dist/marketplace/manager.js +292 -0
  134. package/dist/marketplace/manager.js.map +1 -0
  135. package/dist/marketplace/packs/fastapi.d.ts +8 -0
  136. package/dist/marketplace/packs/fastapi.d.ts.map +1 -0
  137. package/dist/marketplace/packs/fastapi.js +728 -0
  138. package/dist/marketplace/packs/fastapi.js.map +1 -0
  139. package/dist/marketplace/packs/fintech.d.ts +8 -0
  140. package/dist/marketplace/packs/fintech.d.ts.map +1 -0
  141. package/dist/marketplace/packs/fintech.js +366 -0
  142. package/dist/marketplace/packs/fintech.js.map +1 -0
  143. package/dist/marketplace/packs/gdpr.d.ts +8 -0
  144. package/dist/marketplace/packs/gdpr.d.ts.map +1 -0
  145. package/dist/marketplace/packs/gdpr.js +637 -0
  146. package/dist/marketplace/packs/gdpr.js.map +1 -0
  147. package/dist/marketplace/packs/healthtech.d.ts +8 -0
  148. package/dist/marketplace/packs/healthtech.d.ts.map +1 -0
  149. package/dist/marketplace/packs/healthtech.js +470 -0
  150. package/dist/marketplace/packs/healthtech.js.map +1 -0
  151. package/dist/marketplace/packs/hipaa.d.ts +8 -0
  152. package/dist/marketplace/packs/hipaa.d.ts.map +1 -0
  153. package/dist/marketplace/packs/hipaa.js +473 -0
  154. package/dist/marketplace/packs/hipaa.js.map +1 -0
  155. package/dist/marketplace/packs/index.d.ts +250 -0
  156. package/dist/marketplace/packs/index.d.ts.map +1 -0
  157. package/dist/marketplace/packs/index.js +205 -0
  158. package/dist/marketplace/packs/index.js.map +1 -0
  159. package/dist/marketplace/packs/nextjs.d.ts +8 -0
  160. package/dist/marketplace/packs/nextjs.d.ts.map +1 -0
  161. package/dist/marketplace/packs/nextjs.js +532 -0
  162. package/dist/marketplace/packs/nextjs.js.map +1 -0
  163. package/dist/marketplace/packs/rails.d.ts +8 -0
  164. package/dist/marketplace/packs/rails.d.ts.map +1 -0
  165. package/dist/marketplace/packs/rails.js +866 -0
  166. package/dist/marketplace/packs/rails.js.map +1 -0
  167. package/dist/marketplace/packs/saas.d.ts +8 -0
  168. package/dist/marketplace/packs/saas.d.ts.map +1 -0
  169. package/dist/marketplace/packs/saas.js +516 -0
  170. package/dist/marketplace/packs/saas.js.map +1 -0
  171. package/dist/marketplace/packs/soc2.d.ts +8 -0
  172. package/dist/marketplace/packs/soc2.d.ts.map +1 -0
  173. package/dist/marketplace/packs/soc2.js +455 -0
  174. package/dist/marketplace/packs/soc2.js.map +1 -0
  175. package/dist/marketplace/registry.d.ts +76 -0
  176. package/dist/marketplace/registry.d.ts.map +1 -0
  177. package/dist/marketplace/registry.js +454 -0
  178. package/dist/marketplace/registry.js.map +1 -0
  179. package/dist/marketplace/types.d.ts +202 -0
  180. package/dist/marketplace/types.d.ts.map +1 -0
  181. package/dist/marketplace/types.js +61 -0
  182. package/dist/marketplace/types.js.map +1 -0
  183. package/dist/mcp/index.js +1 -1
  184. package/dist/plugins/builtin/html-formatter.d.ts +11 -0
  185. package/dist/plugins/builtin/html-formatter.d.ts.map +1 -0
  186. package/dist/plugins/builtin/html-formatter.js +214 -0
  187. package/dist/plugins/builtin/html-formatter.js.map +1 -0
  188. package/dist/plugins/builtin/index.d.ts +21 -0
  189. package/dist/plugins/builtin/index.d.ts.map +1 -0
  190. package/dist/plugins/builtin/index.js +31 -0
  191. package/dist/plugins/builtin/index.js.map +1 -0
  192. package/dist/plugins/builtin/markdown-formatter.d.ts +11 -0
  193. package/dist/plugins/builtin/markdown-formatter.d.ts.map +1 -0
  194. package/dist/plugins/builtin/markdown-formatter.js +77 -0
  195. package/dist/plugins/builtin/markdown-formatter.js.map +1 -0
  196. package/dist/plugins/builtin/quality-validator.d.ts +11 -0
  197. package/dist/plugins/builtin/quality-validator.d.ts.map +1 -0
  198. package/dist/plugins/builtin/quality-validator.js +355 -0
  199. package/dist/plugins/builtin/quality-validator.js.map +1 -0
  200. package/dist/plugins/index.d.ts +98 -0
  201. package/dist/plugins/index.d.ts.map +1 -0
  202. package/dist/plugins/index.js +187 -0
  203. package/dist/plugins/index.js.map +1 -0
  204. package/dist/plugins/manager.d.ts +122 -0
  205. package/dist/plugins/manager.d.ts.map +1 -0
  206. package/dist/plugins/manager.js +349 -0
  207. package/dist/plugins/manager.js.map +1 -0
  208. package/dist/plugins/types.d.ts +348 -0
  209. package/dist/plugins/types.d.ts.map +1 -0
  210. package/dist/plugins/types.js +13 -0
  211. package/dist/plugins/types.js.map +1 -0
  212. 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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"}