sdd-mcp-server 1.0.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 (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -0
  3. package/dist/__tests__/setup.d.ts +44 -0
  4. package/dist/__tests__/setup.js +178 -0
  5. package/dist/__tests__/setup.js.map +1 -0
  6. package/dist/__tests__/test-helpers/mock-factories.d.ts +26 -0
  7. package/dist/__tests__/test-helpers/mock-factories.js +466 -0
  8. package/dist/__tests__/test-helpers/mock-factories.js.map +1 -0
  9. package/dist/adapters/cli/SDDToolAdapter.d.ts +26 -0
  10. package/dist/adapters/cli/SDDToolAdapter.js +273 -0
  11. package/dist/adapters/cli/SDDToolAdapter.js.map +1 -0
  12. package/dist/application/services/CodebaseAnalysisService.d.ts +38 -0
  13. package/dist/application/services/CodebaseAnalysisService.js +737 -0
  14. package/dist/application/services/CodebaseAnalysisService.js.map +1 -0
  15. package/dist/application/services/LocalizationService.d.ts +184 -0
  16. package/dist/application/services/LocalizationService.js +536 -0
  17. package/dist/application/services/LocalizationService.js.map +1 -0
  18. package/dist/application/services/ProjectContextService.d.ts +61 -0
  19. package/dist/application/services/ProjectContextService.js +550 -0
  20. package/dist/application/services/ProjectContextService.js.map +1 -0
  21. package/dist/application/services/ProjectInitializationService.d.ts +57 -0
  22. package/dist/application/services/ProjectInitializationService.js +485 -0
  23. package/dist/application/services/ProjectInitializationService.js.map +1 -0
  24. package/dist/application/services/ProjectService.d.ts +19 -0
  25. package/dist/application/services/ProjectService.js +159 -0
  26. package/dist/application/services/ProjectService.js.map +1 -0
  27. package/dist/application/services/QualityGateService.d.ts +62 -0
  28. package/dist/application/services/QualityGateService.js +428 -0
  29. package/dist/application/services/QualityGateService.js.map +1 -0
  30. package/dist/application/services/QualityService.d.ts +43 -0
  31. package/dist/application/services/QualityService.js +245 -0
  32. package/dist/application/services/QualityService.js.map +1 -0
  33. package/dist/application/services/SteeringDocumentService.d.ts +62 -0
  34. package/dist/application/services/SteeringDocumentService.js +694 -0
  35. package/dist/application/services/SteeringDocumentService.js.map +1 -0
  36. package/dist/application/services/TemplateService.d.ts +47 -0
  37. package/dist/application/services/TemplateService.js +438 -0
  38. package/dist/application/services/TemplateService.js.map +1 -0
  39. package/dist/application/services/WorkflowEngineService.d.ts +56 -0
  40. package/dist/application/services/WorkflowEngineService.js +348 -0
  41. package/dist/application/services/WorkflowEngineService.js.map +1 -0
  42. package/dist/application/services/WorkflowService.d.ts +22 -0
  43. package/dist/application/services/WorkflowService.js +147 -0
  44. package/dist/application/services/WorkflowService.js.map +1 -0
  45. package/dist/application/services/WorkflowValidationService.d.ts +51 -0
  46. package/dist/application/services/WorkflowValidationService.js +665 -0
  47. package/dist/application/services/WorkflowValidationService.js.map +1 -0
  48. package/dist/domain/context/ProjectContext.d.ts +350 -0
  49. package/dist/domain/context/ProjectContext.js +138 -0
  50. package/dist/domain/context/ProjectContext.js.map +1 -0
  51. package/dist/domain/i18n/index.d.ts +286 -0
  52. package/dist/domain/i18n/index.js +97 -0
  53. package/dist/domain/i18n/index.js.map +1 -0
  54. package/dist/domain/plugins/index.d.ts +498 -0
  55. package/dist/domain/plugins/index.js +157 -0
  56. package/dist/domain/plugins/index.js.map +1 -0
  57. package/dist/domain/ports.d.ts +54 -0
  58. package/dist/domain/ports.js +3 -0
  59. package/dist/domain/ports.js.map +1 -0
  60. package/dist/domain/quality/index.d.ts +361 -0
  61. package/dist/domain/quality/index.js +113 -0
  62. package/dist/domain/quality/index.js.map +1 -0
  63. package/dist/domain/services/DomainService.d.ts +18 -0
  64. package/dist/domain/services/DomainService.js +71 -0
  65. package/dist/domain/services/DomainService.js.map +1 -0
  66. package/dist/domain/templates/index.d.ts +158 -0
  67. package/dist/domain/templates/index.js +22 -0
  68. package/dist/domain/templates/index.js.map +1 -0
  69. package/dist/domain/types.d.ts +115 -0
  70. package/dist/domain/types.js +37 -0
  71. package/dist/domain/types.js.map +1 -0
  72. package/dist/domain/workflow/WorkflowStateMachine.d.ts +62 -0
  73. package/dist/domain/workflow/WorkflowStateMachine.js +286 -0
  74. package/dist/domain/workflow/WorkflowStateMachine.js.map +1 -0
  75. package/dist/index.d.ts +19 -0
  76. package/dist/index.js +97 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/infrastructure/adapters/AjvValidationAdapter.d.ts +7 -0
  79. package/dist/infrastructure/adapters/AjvValidationAdapter.js +37 -0
  80. package/dist/infrastructure/adapters/AjvValidationAdapter.js.map +1 -0
  81. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.d.ts +8 -0
  82. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js +41 -0
  83. package/dist/infrastructure/adapters/ConsoleLoggerAdapter.js.map +1 -0
  84. package/dist/infrastructure/adapters/FileBasedTaskTracker.d.ts +9 -0
  85. package/dist/infrastructure/adapters/FileBasedTaskTracker.js +41 -0
  86. package/dist/infrastructure/adapters/FileBasedTaskTracker.js.map +1 -0
  87. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.d.ts +8 -0
  88. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js +38 -0
  89. package/dist/infrastructure/adapters/HandlebarsTemplateEngine.js.map +1 -0
  90. package/dist/infrastructure/adapters/JsonConfigurationAdapter.d.ts +7 -0
  91. package/dist/infrastructure/adapters/JsonConfigurationAdapter.js +24 -0
  92. package/dist/infrastructure/adapters/JsonConfigurationAdapter.js.map +1 -0
  93. package/dist/infrastructure/adapters/LinusQualityAnalyzer.d.ts +9 -0
  94. package/dist/infrastructure/adapters/LinusQualityAnalyzer.js +75 -0
  95. package/dist/infrastructure/adapters/LinusQualityAnalyzer.js.map +1 -0
  96. package/dist/infrastructure/adapters/NodeFileSystemAdapter.d.ts +12 -0
  97. package/dist/infrastructure/adapters/NodeFileSystemAdapter.js +39 -0
  98. package/dist/infrastructure/adapters/NodeFileSystemAdapter.js.map +1 -0
  99. package/dist/infrastructure/di/container.d.ts +3 -0
  100. package/dist/infrastructure/di/container.js +98 -0
  101. package/dist/infrastructure/di/container.js.map +1 -0
  102. package/dist/infrastructure/di/types.d.ts +39 -0
  103. package/dist/infrastructure/di/types.js +45 -0
  104. package/dist/infrastructure/di/types.js.map +1 -0
  105. package/dist/infrastructure/i18n/I18nextService.d.ts +27 -0
  106. package/dist/infrastructure/i18n/I18nextService.js +357 -0
  107. package/dist/infrastructure/i18n/I18nextService.js.map +1 -0
  108. package/dist/infrastructure/mcp/CapabilityNegotiator.d.ts +21 -0
  109. package/dist/infrastructure/mcp/CapabilityNegotiator.js +75 -0
  110. package/dist/infrastructure/mcp/CapabilityNegotiator.js.map +1 -0
  111. package/dist/infrastructure/mcp/ErrorHandler.d.ts +29 -0
  112. package/dist/infrastructure/mcp/ErrorHandler.js +101 -0
  113. package/dist/infrastructure/mcp/ErrorHandler.js.map +1 -0
  114. package/dist/infrastructure/mcp/MCPServer.d.ts +25 -0
  115. package/dist/infrastructure/mcp/MCPServer.js +246 -0
  116. package/dist/infrastructure/mcp/MCPServer.js.map +1 -0
  117. package/dist/infrastructure/mcp/PromptManager.d.ts +18 -0
  118. package/dist/infrastructure/mcp/PromptManager.js +373 -0
  119. package/dist/infrastructure/mcp/PromptManager.js.map +1 -0
  120. package/dist/infrastructure/mcp/ResourceManager.d.ts +15 -0
  121. package/dist/infrastructure/mcp/ResourceManager.js +229 -0
  122. package/dist/infrastructure/mcp/ResourceManager.js.map +1 -0
  123. package/dist/infrastructure/mcp/SessionManager.d.ts +64 -0
  124. package/dist/infrastructure/mcp/SessionManager.js +221 -0
  125. package/dist/infrastructure/mcp/SessionManager.js.map +1 -0
  126. package/dist/infrastructure/mcp/ToolRegistry.d.ts +48 -0
  127. package/dist/infrastructure/mcp/ToolRegistry.js +235 -0
  128. package/dist/infrastructure/mcp/ToolRegistry.js.map +1 -0
  129. package/dist/infrastructure/platform/PlatformAdapter.d.ts +46 -0
  130. package/dist/infrastructure/platform/PlatformAdapter.js +355 -0
  131. package/dist/infrastructure/platform/PlatformAdapter.js.map +1 -0
  132. package/dist/infrastructure/plugins/HookSystem.d.ts +40 -0
  133. package/dist/infrastructure/plugins/HookSystem.js +415 -0
  134. package/dist/infrastructure/plugins/HookSystem.js.map +1 -0
  135. package/dist/infrastructure/plugins/PluginManager.d.ts +51 -0
  136. package/dist/infrastructure/plugins/PluginManager.js +650 -0
  137. package/dist/infrastructure/plugins/PluginManager.js.map +1 -0
  138. package/dist/infrastructure/plugins/PluginSteeringRegistry.d.ts +63 -0
  139. package/dist/infrastructure/plugins/PluginSteeringRegistry.js +439 -0
  140. package/dist/infrastructure/plugins/PluginSteeringRegistry.js.map +1 -0
  141. package/dist/infrastructure/plugins/PluginToolRegistry.d.ts +54 -0
  142. package/dist/infrastructure/plugins/PluginToolRegistry.js +490 -0
  143. package/dist/infrastructure/plugins/PluginToolRegistry.js.map +1 -0
  144. package/dist/infrastructure/quality/ASTAnalyzer.d.ts +65 -0
  145. package/dist/infrastructure/quality/ASTAnalyzer.js +439 -0
  146. package/dist/infrastructure/quality/ASTAnalyzer.js.map +1 -0
  147. package/dist/infrastructure/quality/LinusCodeReviewer.d.ts +52 -0
  148. package/dist/infrastructure/quality/LinusCodeReviewer.js +551 -0
  149. package/dist/infrastructure/quality/LinusCodeReviewer.js.map +1 -0
  150. package/dist/infrastructure/repositories/InMemoryProjectRepository.d.ts +10 -0
  151. package/dist/infrastructure/repositories/InMemoryProjectRepository.js +35 -0
  152. package/dist/infrastructure/repositories/InMemoryProjectRepository.js.map +1 -0
  153. package/dist/infrastructure/schemas/project.schema.d.ts +192 -0
  154. package/dist/infrastructure/schemas/project.schema.js +114 -0
  155. package/dist/infrastructure/schemas/project.schema.js.map +1 -0
  156. package/dist/infrastructure/templates/FileGenerator.d.ts +15 -0
  157. package/dist/infrastructure/templates/FileGenerator.js +385 -0
  158. package/dist/infrastructure/templates/FileGenerator.js.map +1 -0
  159. package/dist/infrastructure/templates/HandlebarsRenderer.d.ts +16 -0
  160. package/dist/infrastructure/templates/HandlebarsRenderer.js +252 -0
  161. package/dist/infrastructure/templates/HandlebarsRenderer.js.map +1 -0
  162. package/dist/infrastructure/templates/TemplateManager.d.ts +36 -0
  163. package/dist/infrastructure/templates/TemplateManager.js +777 -0
  164. package/dist/infrastructure/templates/TemplateManager.js.map +1 -0
  165. package/package.json +89 -0
@@ -0,0 +1,415 @@
1
+ // Hook system implementation for plugin extensibility
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ import { injectable, inject } from 'inversify';
15
+ import { EventEmitter } from 'events';
16
+ import { TYPES } from '../di/types.js';
17
+ class CancellationTokenImpl {
18
+ _isCancelled = false;
19
+ callbacks = [];
20
+ get isCancelled() {
21
+ return this._isCancelled;
22
+ }
23
+ cancel() {
24
+ if (!this._isCancelled) {
25
+ this._isCancelled = true;
26
+ this.callbacks.forEach(callback => {
27
+ try {
28
+ callback();
29
+ }
30
+ catch (error) {
31
+ // Ignore callback errors
32
+ }
33
+ });
34
+ }
35
+ }
36
+ onCancelled(callback) {
37
+ if (this._isCancelled) {
38
+ callback();
39
+ }
40
+ else {
41
+ this.callbacks.push(callback);
42
+ }
43
+ }
44
+ }
45
+ let HookSystem = class HookSystem {
46
+ logger;
47
+ hooks = new Map();
48
+ eventEmitter = new EventEmitter();
49
+ metrics = [];
50
+ maxMetricsHistory = 1000;
51
+ constructor(logger) {
52
+ this.logger = logger;
53
+ this.eventEmitter.setMaxListeners(100); // Increase for plugin hooks
54
+ }
55
+ async register(pluginId, hook) {
56
+ const hookName = hook.name;
57
+ if (!this.hooks.has(hookName)) {
58
+ this.hooks.set(hookName, []);
59
+ }
60
+ const existingHooks = this.hooks.get(hookName);
61
+ // Check for duplicate registration
62
+ const existingIndex = existingHooks.findIndex(h => h.pluginId === pluginId && h.name === hookName);
63
+ if (existingIndex >= 0) {
64
+ this.logger.warn('Hook already registered, replacing', {
65
+ hookName,
66
+ pluginId,
67
+ type: hook.type,
68
+ phase: hook.phase
69
+ });
70
+ existingHooks.splice(existingIndex, 1);
71
+ }
72
+ const internalHook = {
73
+ ...hook,
74
+ registeredAt: new Date(),
75
+ executionCount: 0,
76
+ successCount: 0,
77
+ errorCount: 0
78
+ };
79
+ existingHooks.push(internalHook);
80
+ // Sort by priority (higher priority first)
81
+ existingHooks.sort((a, b) => b.priority - a.priority);
82
+ this.logger.info('Hook registered successfully', {
83
+ hookName,
84
+ pluginId,
85
+ type: hook.type,
86
+ phase: hook.phase,
87
+ priority: hook.priority,
88
+ totalHooks: existingHooks.length
89
+ });
90
+ this.eventEmitter.emit('hook-registered', { hookName, pluginId, hook });
91
+ }
92
+ async unregister(pluginId, hookName) {
93
+ const hooks = this.hooks.get(hookName);
94
+ if (!hooks) {
95
+ this.logger.warn('No hooks found for unregistration', { hookName, pluginId });
96
+ return;
97
+ }
98
+ const initialLength = hooks.length;
99
+ const filteredHooks = hooks.filter(h => !(h.pluginId === pluginId && h.name === hookName));
100
+ if (filteredHooks.length === initialLength) {
101
+ this.logger.warn('Hook not found for unregistration', { hookName, pluginId });
102
+ return;
103
+ }
104
+ if (filteredHooks.length === 0) {
105
+ this.hooks.delete(hookName);
106
+ }
107
+ else {
108
+ this.hooks.set(hookName, filteredHooks);
109
+ }
110
+ this.logger.info('Hook unregistered successfully', {
111
+ hookName,
112
+ pluginId,
113
+ remainingHooks: filteredHooks.length
114
+ });
115
+ this.eventEmitter.emit('hook-unregistered', { hookName, pluginId });
116
+ }
117
+ async execute(hookName, context) {
118
+ const hooks = this.hooks.get(hookName);
119
+ if (!hooks || hooks.length === 0) {
120
+ this.logger.debug('No hooks registered for execution', { hookName });
121
+ return { success: true, data: context.data };
122
+ }
123
+ const startTime = Date.now();
124
+ const cancellationToken = new CancellationTokenImpl();
125
+ const executionContext = {
126
+ ...context,
127
+ cancellationToken
128
+ };
129
+ this.logger.debug('Executing hooks', {
130
+ hookName,
131
+ phase: context.phase,
132
+ hooksCount: hooks.length
133
+ });
134
+ let aggregatedData = { ...context.data };
135
+ let stopPropagation = false;
136
+ const errors = [];
137
+ try {
138
+ for (const hook of hooks) {
139
+ if (cancellationToken.isCancelled || stopPropagation) {
140
+ this.logger.debug('Hook execution stopped', {
141
+ hookName,
142
+ pluginId: hook.pluginId,
143
+ reason: cancellationToken.isCancelled ? 'cancelled' : 'stop-propagation'
144
+ });
145
+ break;
146
+ }
147
+ // Check hook conditions
148
+ if (!this.evaluateConditions(hook.conditions || [], executionContext)) {
149
+ this.logger.debug('Hook conditions not met, skipping', {
150
+ hookName,
151
+ pluginId: hook.pluginId
152
+ });
153
+ continue;
154
+ }
155
+ const hookStartTime = Date.now();
156
+ let success = true;
157
+ let error;
158
+ try {
159
+ // Update execution context with current data
160
+ const currentContext = {
161
+ ...executionContext,
162
+ data: aggregatedData
163
+ };
164
+ const result = await hook.handler(currentContext);
165
+ // Update internal metrics
166
+ hook.executionCount++;
167
+ hook.lastExecuted = new Date();
168
+ hook.successCount++;
169
+ if (result.success) {
170
+ // Merge result data
171
+ if (result.data) {
172
+ aggregatedData = this.mergeHookData(aggregatedData, result.data, hook.type);
173
+ }
174
+ // Check for stop propagation
175
+ if (result.stopPropagation) {
176
+ stopPropagation = true;
177
+ }
178
+ }
179
+ else {
180
+ success = false;
181
+ error = result.error;
182
+ if (result.error) {
183
+ errors.push(result.error);
184
+ hook.errorCount++;
185
+ }
186
+ }
187
+ this.logger.debug('Hook executed successfully', {
188
+ hookName,
189
+ pluginId: hook.pluginId,
190
+ executionTime: Date.now() - hookStartTime,
191
+ success: result.success,
192
+ stopPropagation: result.stopPropagation
193
+ });
194
+ }
195
+ catch (executionError) {
196
+ success = false;
197
+ error = executionError instanceof Error ? executionError : new Error(String(executionError));
198
+ errors.push(error);
199
+ hook.executionCount++;
200
+ hook.errorCount++;
201
+ this.logger.error('Hook execution failed', {
202
+ hookName,
203
+ pluginId: hook.pluginId,
204
+ error: error.message
205
+ });
206
+ }
207
+ // Record metrics
208
+ this.recordMetrics({
209
+ hookName,
210
+ pluginId: hook.pluginId,
211
+ executionTime: Date.now() - hookStartTime,
212
+ success,
213
+ error
214
+ });
215
+ }
216
+ const totalExecutionTime = Date.now() - startTime;
217
+ const overallSuccess = errors.length === 0;
218
+ this.logger.info('Hook execution completed', {
219
+ hookName,
220
+ phase: context.phase,
221
+ hooksExecuted: hooks.length,
222
+ totalTime: totalExecutionTime,
223
+ success: overallSuccess,
224
+ errorsCount: errors.length
225
+ });
226
+ return {
227
+ success: overallSuccess,
228
+ data: aggregatedData,
229
+ error: errors.length > 0 ? errors[0] : undefined,
230
+ metadata: {
231
+ executionTime: totalExecutionTime,
232
+ hooksExecuted: hooks.length,
233
+ errorCount: errors.length,
234
+ stopPropagation
235
+ }
236
+ };
237
+ }
238
+ catch (error) {
239
+ this.logger.error('Hook system execution failed', {
240
+ hookName,
241
+ error: error instanceof Error ? error.message : String(error)
242
+ });
243
+ return {
244
+ success: false,
245
+ error: error instanceof Error ? error : new Error(String(error)),
246
+ metadata: {
247
+ executionTime: Date.now() - startTime,
248
+ hooksExecuted: 0,
249
+ errorCount: 1
250
+ }
251
+ };
252
+ }
253
+ }
254
+ async getHooks(hookName) {
255
+ const hooks = this.hooks.get(hookName);
256
+ return hooks ? [...hooks] : [];
257
+ }
258
+ async getAllHooks() {
259
+ const result = {};
260
+ for (const [hookName, hooks] of this.hooks.entries()) {
261
+ result[hookName] = [...hooks];
262
+ }
263
+ return result;
264
+ }
265
+ // Utility methods for hook system management
266
+ async getHookMetrics(hookName) {
267
+ if (hookName) {
268
+ return this.metrics.filter(m => m.hookName === hookName);
269
+ }
270
+ return [...this.metrics];
271
+ }
272
+ async getHookStatistics(hookName) {
273
+ const hooks = this.hooks.get(hookName) || [];
274
+ const metrics = this.metrics.filter(m => m.hookName === hookName);
275
+ const totalExecutions = metrics.length;
276
+ const successCount = metrics.filter(m => m.success).length;
277
+ const successRate = totalExecutions > 0 ? successCount / totalExecutions : 0;
278
+ const averageExecutionTime = totalExecutions > 0
279
+ ? metrics.reduce((sum, m) => sum + m.executionTime, 0) / totalExecutions
280
+ : 0;
281
+ const errorCount = metrics.filter(m => !m.success).length;
282
+ const pluginStats = {};
283
+ for (const hook of hooks) {
284
+ const internalHook = hook;
285
+ pluginStats[hook.pluginId] = {
286
+ executions: internalHook.executionCount,
287
+ successRate: internalHook.executionCount > 0
288
+ ? internalHook.successCount / internalHook.executionCount
289
+ : 0
290
+ };
291
+ }
292
+ return {
293
+ totalExecutions,
294
+ successRate,
295
+ averageExecutionTime,
296
+ errorCount,
297
+ pluginStats
298
+ };
299
+ }
300
+ async clearHooks(pluginId) {
301
+ if (pluginId) {
302
+ // Clear all hooks for a specific plugin
303
+ for (const [hookName, hooks] of this.hooks.entries()) {
304
+ const filteredHooks = hooks.filter(h => h.pluginId !== pluginId);
305
+ if (filteredHooks.length === 0) {
306
+ this.hooks.delete(hookName);
307
+ }
308
+ else {
309
+ this.hooks.set(hookName, filteredHooks);
310
+ }
311
+ }
312
+ this.logger.info('Plugin hooks cleared', { pluginId });
313
+ }
314
+ else {
315
+ // Clear all hooks
316
+ this.hooks.clear();
317
+ this.logger.info('All hooks cleared');
318
+ }
319
+ }
320
+ // Private helper methods
321
+ evaluateConditions(conditions, context) {
322
+ if (conditions.length === 0)
323
+ return true;
324
+ return conditions.every(condition => {
325
+ const contextValue = this.getContextValue(context, condition.type);
326
+ return this.evaluateCondition(contextValue, condition.value, condition.operator);
327
+ });
328
+ }
329
+ getContextValue(context, path) {
330
+ const parts = path.split('.');
331
+ let value = context;
332
+ for (const part of parts) {
333
+ if (value && typeof value === 'object') {
334
+ value = value[part];
335
+ }
336
+ else {
337
+ return undefined;
338
+ }
339
+ }
340
+ return value;
341
+ }
342
+ evaluateCondition(contextValue, conditionValue, operator) {
343
+ switch (operator) {
344
+ case ConditionOperator.EQUALS:
345
+ return contextValue === conditionValue;
346
+ case ConditionOperator.NOT_EQUALS:
347
+ return contextValue !== conditionValue;
348
+ case ConditionOperator.GREATER_THAN:
349
+ return typeof contextValue === 'number' && typeof conditionValue === 'number' && contextValue > conditionValue;
350
+ case ConditionOperator.GREATER_THAN_OR_EQUAL:
351
+ return typeof contextValue === 'number' && typeof conditionValue === 'number' && contextValue >= conditionValue;
352
+ case ConditionOperator.LESS_THAN:
353
+ return typeof contextValue === 'number' && typeof conditionValue === 'number' && contextValue < conditionValue;
354
+ case ConditionOperator.LESS_THAN_OR_EQUAL:
355
+ return typeof contextValue === 'number' && typeof conditionValue === 'number' && contextValue <= conditionValue;
356
+ case ConditionOperator.CONTAINS:
357
+ return typeof contextValue === 'string' && typeof conditionValue === 'string' && contextValue.includes(conditionValue);
358
+ case ConditionOperator.STARTS_WITH:
359
+ return typeof contextValue === 'string' && typeof conditionValue === 'string' && contextValue.startsWith(conditionValue);
360
+ case ConditionOperator.ENDS_WITH:
361
+ return typeof contextValue === 'string' && typeof conditionValue === 'string' && contextValue.endsWith(conditionValue);
362
+ case ConditionOperator.MATCHES:
363
+ try {
364
+ const regex = new RegExp(String(conditionValue));
365
+ return typeof contextValue === 'string' && regex.test(contextValue);
366
+ }
367
+ catch {
368
+ return false;
369
+ }
370
+ case ConditionOperator.IN:
371
+ return Array.isArray(conditionValue) && conditionValue.includes(contextValue);
372
+ case ConditionOperator.NOT_IN:
373
+ return Array.isArray(conditionValue) && !conditionValue.includes(contextValue);
374
+ default:
375
+ return false;
376
+ }
377
+ }
378
+ mergeHookData(currentData, newData, hookType) {
379
+ switch (hookType) {
380
+ case HookType.FILTER:
381
+ // For filter hooks, new data replaces current data
382
+ return { ...currentData, ...newData };
383
+ case HookType.TRANSFORMER:
384
+ // For transformer hooks, new data transforms current data
385
+ return newData;
386
+ case HookType.ACTION:
387
+ case HookType.OBSERVER:
388
+ // For action/observer hooks, merge data without replacement
389
+ return { ...currentData, ...newData };
390
+ case HookType.VALIDATOR:
391
+ // For validator hooks, merge validation results
392
+ return {
393
+ ...currentData,
394
+ ...newData,
395
+ valid: (currentData.valid !== false) && (newData.valid !== false)
396
+ };
397
+ default:
398
+ return { ...currentData, ...newData };
399
+ }
400
+ }
401
+ recordMetrics(metrics) {
402
+ this.metrics.push(metrics);
403
+ // Keep only the most recent metrics to prevent memory issues
404
+ if (this.metrics.length > this.maxMetricsHistory) {
405
+ this.metrics.splice(0, this.metrics.length - this.maxMetricsHistory);
406
+ }
407
+ }
408
+ };
409
+ HookSystem = __decorate([
410
+ injectable(),
411
+ __param(0, inject(TYPES.LoggerPort)),
412
+ __metadata("design:paramtypes", [Object])
413
+ ], HookSystem);
414
+ export { HookSystem };
415
+ //# sourceMappingURL=HookSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HookSystem.js","sourceRoot":"","sources":["../../../src/infrastructure/plugins/HookSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { LoggerPort, FileSystemPort } from '../../domain/ports.js';
2
+ import type { PluginManager as IPluginManager, Plugin, PluginDescriptor, PluginInstance, PluginValidationResult, PluginDependency, HookSystem, ToolRegistry } from '../../domain/plugins/index.js';
3
+ import type { PluginSteeringRegistry } from './PluginSteeringRegistry.js';
4
+ interface PluginManagerConfig {
5
+ readonly pluginsDirectory: string;
6
+ readonly dataDirectory: string;
7
+ readonly maxPlugins: number;
8
+ readonly securityEnabled: boolean;
9
+ readonly autoDiscovery: boolean;
10
+ readonly autoLoad: boolean;
11
+ readonly isolationMode: 'sandbox' | 'process' | 'thread';
12
+ }
13
+ export declare class PluginManager implements IPluginManager {
14
+ private readonly logger;
15
+ private readonly fileSystem;
16
+ private readonly hookSystem;
17
+ private readonly toolRegistry;
18
+ private readonly steeringRegistry;
19
+ private readonly config;
20
+ private readonly plugins;
21
+ private readonly eventEmitter;
22
+ private initialized;
23
+ constructor(logger: LoggerPort, fileSystem: FileSystemPort, hookSystem: HookSystem, toolRegistry: ToolRegistry, steeringRegistry: PluginSteeringRegistry, config?: Partial<PluginManagerConfig>);
24
+ initialize(): Promise<void>;
25
+ discover(directory?: string): Promise<PluginDescriptor[]>;
26
+ install(pluginPath: string): Promise<PluginInstance>;
27
+ uninstall(pluginId: string): Promise<void>;
28
+ enable(pluginId: string): Promise<void>;
29
+ disable(pluginId: string): Promise<void>;
30
+ load(pluginId: string): Promise<PluginInstance>;
31
+ unload(pluginId: string): Promise<void>;
32
+ getPlugin(pluginId: string): Promise<PluginInstance | null>;
33
+ getAllPlugins(): Promise<PluginInstance[]>;
34
+ getEnabledPlugins(): Promise<PluginInstance[]>;
35
+ validatePlugin(plugin: Plugin): Promise<PluginValidationResult>;
36
+ resolveDependencies(plugin: Plugin): Promise<PluginDependency[]>;
37
+ private ensureDirectories;
38
+ private createPluginContext;
39
+ private loadPluginImplementation;
40
+ private createPluginLogger;
41
+ private createPluginServices;
42
+ private createPluginEventEmitter;
43
+ private createPluginFileSystem;
44
+ private createPluginHttpClient;
45
+ private createPluginCrypto;
46
+ private createPluginUtils;
47
+ private performSecurityValidation;
48
+ private performCompatibilityValidation;
49
+ private isVersionCompatible;
50
+ }
51
+ export {};