cmp-standards 2.8.1 → 3.1.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/CrossProjectAnalytics.d.ts +128 -0
- package/dist/analytics/CrossProjectAnalytics.d.ts.map +1 -0
- package/dist/analytics/CrossProjectAnalytics.js +434 -0
- package/dist/analytics/CrossProjectAnalytics.js.map +1 -0
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +2 -0
- package/dist/analytics/index.js.map +1 -1
- package/dist/cache/EmbeddingCache.d.ts +6 -4
- package/dist/cache/EmbeddingCache.d.ts.map +1 -1
- package/dist/cache/EmbeddingCache.js +28 -17
- package/dist/cache/EmbeddingCache.js.map +1 -1
- package/dist/cli/index.js +658 -141
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui.d.ts +134 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +311 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/dashboard/tokens.d.ts +228 -0
- package/dist/dashboard/tokens.d.ts.map +1 -0
- package/dist/dashboard/tokens.js +450 -0
- package/dist/dashboard/tokens.js.map +1 -0
- package/dist/dashboard/ui.d.ts +3 -0
- package/dist/dashboard/ui.d.ts.map +1 -1
- package/dist/dashboard/ui.js +95 -61
- package/dist/dashboard/ui.js.map +1 -1
- package/dist/db/cloud.d.ts +11 -0
- package/dist/db/cloud.d.ts.map +1 -1
- package/dist/db/cloud.js +49 -1
- package/dist/db/cloud.js.map +1 -1
- package/dist/db/migrations.d.ts +1 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +109 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/turso-client.d.ts.map +1 -1
- package/dist/db/turso-client.js +3 -0
- package/dist/db/turso-client.js.map +1 -1
- package/dist/events/EventBus.d.ts +21 -0
- package/dist/events/EventBus.d.ts.map +1 -1
- package/dist/events/EventBus.js +81 -30
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/startup-verify.d.ts +31 -0
- package/dist/hooks/startup-verify.d.ts.map +1 -0
- package/dist/hooks/startup-verify.js +360 -0
- package/dist/hooks/startup-verify.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +160 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +417 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +7 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/schema/expert-types.d.ts +2 -2
- package/dist/services/AuditLog.d.ts +205 -0
- package/dist/services/AuditLog.d.ts.map +1 -0
- package/dist/services/AuditLog.js +352 -0
- package/dist/services/AuditLog.js.map +1 -0
- package/dist/services/FeedbackCollector.d.ts +8 -0
- package/dist/services/FeedbackCollector.d.ts.map +1 -1
- package/dist/services/FeedbackCollector.js +19 -2
- package/dist/services/FeedbackCollector.js.map +1 -1
- package/dist/services/GitIntegration.d.ts +140 -0
- package/dist/services/GitIntegration.d.ts.map +1 -0
- package/dist/services/GitIntegration.js +423 -0
- package/dist/services/GitIntegration.js.map +1 -0
- package/dist/services/HookVerifier.d.ts +95 -0
- package/dist/services/HookVerifier.d.ts.map +1 -0
- package/dist/services/HookVerifier.js +493 -0
- package/dist/services/HookVerifier.js.map +1 -0
- package/dist/services/MemoryRelationshipService.d.ts +187 -0
- package/dist/services/MemoryRelationshipService.d.ts.map +1 -0
- package/dist/services/MemoryRelationshipService.js +375 -0
- package/dist/services/MemoryRelationshipService.js.map +1 -0
- package/dist/services/MemoryVersioning.d.ts +108 -0
- package/dist/services/MemoryVersioning.d.ts.map +1 -0
- package/dist/services/MemoryVersioning.js +281 -0
- package/dist/services/MemoryVersioning.js.map +1 -0
- package/dist/services/context-injector.d.ts +8 -0
- package/dist/services/context-injector.d.ts.map +1 -1
- package/dist/services/context-injector.js +19 -2
- package/dist/services/context-injector.js.map +1 -1
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/memory-router.d.ts +8 -0
- package/dist/services/memory-router.d.ts.map +1 -1
- package/dist/services/memory-router.js +19 -2
- package/dist/services/memory-router.js.map +1 -1
- package/dist/services/pattern-tracker.d.ts +13 -0
- package/dist/services/pattern-tracker.d.ts.map +1 -1
- package/dist/services/pattern-tracker.js +33 -3
- package/dist/services/pattern-tracker.js.map +1 -1
- package/dist/services/semantic-search.d.ts +12 -0
- package/dist/services/semantic-search.d.ts.map +1 -1
- package/dist/services/semantic-search.js +93 -17
- package/dist/services/semantic-search.js.map +1 -1
- package/dist/testing/index.d.ts +148 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +370 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/resilience.d.ts +256 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +499 -0
- package/dist/utils/resilience.js.map +1 -0
- package/package.json +12 -1
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Manager
|
|
3
|
+
*
|
|
4
|
+
* Extensible plugin system for CMP Standards:
|
|
5
|
+
* - Register custom plugins
|
|
6
|
+
* - Lifecycle hooks (init, dispose)
|
|
7
|
+
* - Plugin dependencies
|
|
8
|
+
* - Configuration per plugin
|
|
9
|
+
* - Event-based communication
|
|
10
|
+
*
|
|
11
|
+
* @version 2.9.0
|
|
12
|
+
*/
|
|
13
|
+
class PluginEventEmitter {
|
|
14
|
+
handlers = new Map();
|
|
15
|
+
on(event, handler) {
|
|
16
|
+
if (!this.handlers.has(event)) {
|
|
17
|
+
this.handlers.set(event, new Set());
|
|
18
|
+
}
|
|
19
|
+
this.handlers.get(event).add(handler);
|
|
20
|
+
}
|
|
21
|
+
off(event, handler) {
|
|
22
|
+
this.handlers.get(event)?.delete(handler);
|
|
23
|
+
}
|
|
24
|
+
emit(event, data) {
|
|
25
|
+
const handlers = this.handlers.get(event);
|
|
26
|
+
if (handlers) {
|
|
27
|
+
for (const handler of handlers) {
|
|
28
|
+
try {
|
|
29
|
+
handler(data);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
console.error(`[PluginEventEmitter] Handler error for ${event}:`, e);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// =============================================================================
|
|
39
|
+
// Plugin Manager
|
|
40
|
+
// =============================================================================
|
|
41
|
+
export class PluginManager {
|
|
42
|
+
plugins = new Map();
|
|
43
|
+
loadedPlugins = new Set();
|
|
44
|
+
pluginConfigs = new Map();
|
|
45
|
+
pluginErrors = new Map();
|
|
46
|
+
system;
|
|
47
|
+
events = new PluginEventEmitter();
|
|
48
|
+
constructor(options) {
|
|
49
|
+
this.system = options.system;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Subscribe to plugin events
|
|
53
|
+
*/
|
|
54
|
+
on(event, handler) {
|
|
55
|
+
this.events.on(event, handler);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Unsubscribe from plugin events
|
|
59
|
+
*/
|
|
60
|
+
off(event, handler) {
|
|
61
|
+
this.events.off(event, handler);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Register a plugin
|
|
65
|
+
*/
|
|
66
|
+
register(plugin, config) {
|
|
67
|
+
const { name } = plugin.metadata;
|
|
68
|
+
if (this.plugins.has(name)) {
|
|
69
|
+
throw new Error(`Plugin "${name}" is already registered`);
|
|
70
|
+
}
|
|
71
|
+
this.plugins.set(name, plugin);
|
|
72
|
+
this.pluginConfigs.set(name, config ?? { enabled: true });
|
|
73
|
+
this.events.emit('plugin:registered', {
|
|
74
|
+
name,
|
|
75
|
+
version: plugin.metadata.version,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Register a plugin from a factory function
|
|
80
|
+
*/
|
|
81
|
+
registerFactory(factory, config) {
|
|
82
|
+
const plugin = factory(config);
|
|
83
|
+
this.register(plugin, { enabled: true, config });
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Unregister a plugin
|
|
87
|
+
*/
|
|
88
|
+
async unregister(name) {
|
|
89
|
+
const plugin = this.plugins.get(name);
|
|
90
|
+
if (!plugin)
|
|
91
|
+
return false;
|
|
92
|
+
// Dispose if loaded
|
|
93
|
+
if (this.loadedPlugins.has(name)) {
|
|
94
|
+
await this.unload(name);
|
|
95
|
+
}
|
|
96
|
+
this.plugins.delete(name);
|
|
97
|
+
this.pluginConfigs.delete(name);
|
|
98
|
+
this.pluginErrors.delete(name);
|
|
99
|
+
this.events.emit('plugin:unregistered', { name });
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Load and initialize a plugin
|
|
104
|
+
*/
|
|
105
|
+
async load(name) {
|
|
106
|
+
const plugin = this.plugins.get(name);
|
|
107
|
+
const config = this.pluginConfigs.get(name);
|
|
108
|
+
if (!plugin) {
|
|
109
|
+
this.pluginErrors.set(name, 'Plugin not registered');
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
if (!config?.enabled) {
|
|
113
|
+
this.pluginErrors.set(name, 'Plugin is disabled');
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
if (this.loadedPlugins.has(name)) {
|
|
117
|
+
return true; // Already loaded
|
|
118
|
+
}
|
|
119
|
+
// Check dependencies
|
|
120
|
+
const depCheck = await this.checkDependencies(plugin);
|
|
121
|
+
if (!depCheck.satisfied) {
|
|
122
|
+
this.pluginErrors.set(name, `Missing dependencies: ${depCheck.missing.join(', ')}`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// Load dependencies first
|
|
126
|
+
for (const dep of plugin.metadata.dependencies ?? []) {
|
|
127
|
+
if (!this.loadedPlugins.has(dep)) {
|
|
128
|
+
const depLoaded = await this.load(dep);
|
|
129
|
+
if (!depLoaded) {
|
|
130
|
+
this.pluginErrors.set(name, `Failed to load dependency: ${dep}`);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Initialize plugin
|
|
136
|
+
try {
|
|
137
|
+
const context = this.createContext(name, config.config);
|
|
138
|
+
await plugin.init(context);
|
|
139
|
+
this.loadedPlugins.add(name);
|
|
140
|
+
this.pluginErrors.delete(name);
|
|
141
|
+
this.events.emit('plugin:loaded', {
|
|
142
|
+
name,
|
|
143
|
+
version: plugin.metadata.version,
|
|
144
|
+
});
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
149
|
+
this.pluginErrors.set(name, errorMessage);
|
|
150
|
+
this.events.emit('plugin:error', {
|
|
151
|
+
name,
|
|
152
|
+
error: errorMessage,
|
|
153
|
+
});
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Unload a plugin
|
|
159
|
+
*/
|
|
160
|
+
async unload(name) {
|
|
161
|
+
const plugin = this.plugins.get(name);
|
|
162
|
+
if (!plugin || !this.loadedPlugins.has(name)) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
// Check if other plugins depend on this one
|
|
166
|
+
const dependents = this.getDependents(name);
|
|
167
|
+
if (dependents.length > 0) {
|
|
168
|
+
// Unload dependents first
|
|
169
|
+
for (const dep of dependents) {
|
|
170
|
+
await this.unload(dep);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
if (plugin.dispose) {
|
|
175
|
+
await plugin.dispose();
|
|
176
|
+
}
|
|
177
|
+
this.loadedPlugins.delete(name);
|
|
178
|
+
this.events.emit('plugin:unloaded', { name });
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
183
|
+
this.pluginErrors.set(name, errorMessage);
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Load all enabled plugins
|
|
189
|
+
*/
|
|
190
|
+
async loadAll() {
|
|
191
|
+
const loaded = [];
|
|
192
|
+
const failed = [];
|
|
193
|
+
// Sort by dependencies (topological sort)
|
|
194
|
+
const sorted = this.topologicalSort();
|
|
195
|
+
for (const name of sorted) {
|
|
196
|
+
const config = this.pluginConfigs.get(name);
|
|
197
|
+
if (config?.enabled) {
|
|
198
|
+
const success = await this.load(name);
|
|
199
|
+
if (success) {
|
|
200
|
+
loaded.push(name);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
failed.push(name);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return { loaded, failed };
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Unload all plugins
|
|
211
|
+
*/
|
|
212
|
+
async unloadAll() {
|
|
213
|
+
// Unload in reverse dependency order
|
|
214
|
+
const sorted = this.topologicalSort().reverse();
|
|
215
|
+
for (const name of sorted) {
|
|
216
|
+
if (this.loadedPlugins.has(name)) {
|
|
217
|
+
await this.unload(name);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get a loaded plugin by name
|
|
223
|
+
*/
|
|
224
|
+
getPlugin(name) {
|
|
225
|
+
if (!this.loadedPlugins.has(name))
|
|
226
|
+
return undefined;
|
|
227
|
+
return this.plugins.get(name);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Check if a plugin is registered
|
|
231
|
+
*/
|
|
232
|
+
isRegistered(name) {
|
|
233
|
+
return this.plugins.has(name);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Check if a plugin is loaded
|
|
237
|
+
*/
|
|
238
|
+
isLoaded(name) {
|
|
239
|
+
return this.loadedPlugins.has(name);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get plugin status
|
|
243
|
+
*/
|
|
244
|
+
getStatus(name) {
|
|
245
|
+
const plugin = this.plugins.get(name);
|
|
246
|
+
const config = this.pluginConfigs.get(name);
|
|
247
|
+
if (!plugin)
|
|
248
|
+
return null;
|
|
249
|
+
return {
|
|
250
|
+
name: plugin.metadata.name,
|
|
251
|
+
version: plugin.metadata.version,
|
|
252
|
+
enabled: config?.enabled ?? false,
|
|
253
|
+
loaded: this.loadedPlugins.has(name),
|
|
254
|
+
error: this.pluginErrors.get(name),
|
|
255
|
+
dependencies: plugin.metadata.dependencies ?? [],
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get all plugin statuses
|
|
260
|
+
*/
|
|
261
|
+
getAllStatuses() {
|
|
262
|
+
const statuses = [];
|
|
263
|
+
for (const name of this.plugins.keys()) {
|
|
264
|
+
const status = this.getStatus(name);
|
|
265
|
+
if (status)
|
|
266
|
+
statuses.push(status);
|
|
267
|
+
}
|
|
268
|
+
return statuses;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Enable a plugin
|
|
272
|
+
*/
|
|
273
|
+
enable(name) {
|
|
274
|
+
const config = this.pluginConfigs.get(name);
|
|
275
|
+
if (!config)
|
|
276
|
+
return false;
|
|
277
|
+
config.enabled = true;
|
|
278
|
+
return true;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Disable a plugin
|
|
282
|
+
*/
|
|
283
|
+
async disable(name) {
|
|
284
|
+
const config = this.pluginConfigs.get(name);
|
|
285
|
+
if (!config)
|
|
286
|
+
return false;
|
|
287
|
+
if (this.loadedPlugins.has(name)) {
|
|
288
|
+
await this.unload(name);
|
|
289
|
+
}
|
|
290
|
+
config.enabled = false;
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Update plugin config
|
|
295
|
+
*/
|
|
296
|
+
updateConfig(name, newConfig) {
|
|
297
|
+
const config = this.pluginConfigs.get(name);
|
|
298
|
+
if (!config)
|
|
299
|
+
return false;
|
|
300
|
+
config.config = { ...config.config, ...newConfig };
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
// ==========================================================================
|
|
304
|
+
// Private Methods
|
|
305
|
+
// ==========================================================================
|
|
306
|
+
createContext(name, config) {
|
|
307
|
+
return {
|
|
308
|
+
system: this.system,
|
|
309
|
+
events: this.events,
|
|
310
|
+
config: config ?? {},
|
|
311
|
+
getPlugin: (pluginName) => this.getPlugin(pluginName),
|
|
312
|
+
log: (message, level = 'info') => {
|
|
313
|
+
const prefix = `[Plugin:${name}]`;
|
|
314
|
+
switch (level) {
|
|
315
|
+
case 'error':
|
|
316
|
+
console.error(prefix, message);
|
|
317
|
+
break;
|
|
318
|
+
case 'warn':
|
|
319
|
+
console.warn(prefix, message);
|
|
320
|
+
break;
|
|
321
|
+
default:
|
|
322
|
+
console.log(prefix, message);
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
async checkDependencies(plugin) {
|
|
328
|
+
const missing = [];
|
|
329
|
+
const deps = plugin.metadata.dependencies ?? [];
|
|
330
|
+
for (const dep of deps) {
|
|
331
|
+
if (!this.plugins.has(dep)) {
|
|
332
|
+
missing.push(dep);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
satisfied: missing.length === 0,
|
|
337
|
+
missing,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
getDependents(name) {
|
|
341
|
+
const dependents = [];
|
|
342
|
+
for (const [pluginName, plugin] of this.plugins.entries()) {
|
|
343
|
+
if (plugin.metadata.dependencies?.includes(name)) {
|
|
344
|
+
dependents.push(pluginName);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return dependents;
|
|
348
|
+
}
|
|
349
|
+
topologicalSort() {
|
|
350
|
+
const sorted = [];
|
|
351
|
+
const visited = new Set();
|
|
352
|
+
const visiting = new Set();
|
|
353
|
+
const visit = (name) => {
|
|
354
|
+
if (visited.has(name))
|
|
355
|
+
return;
|
|
356
|
+
if (visiting.has(name)) {
|
|
357
|
+
throw new Error(`Circular dependency detected: ${name}`);
|
|
358
|
+
}
|
|
359
|
+
visiting.add(name);
|
|
360
|
+
const plugin = this.plugins.get(name);
|
|
361
|
+
if (plugin) {
|
|
362
|
+
for (const dep of plugin.metadata.dependencies ?? []) {
|
|
363
|
+
if (this.plugins.has(dep)) {
|
|
364
|
+
visit(dep);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
visiting.delete(name);
|
|
369
|
+
visited.add(name);
|
|
370
|
+
sorted.push(name);
|
|
371
|
+
};
|
|
372
|
+
for (const name of this.plugins.keys()) {
|
|
373
|
+
visit(name);
|
|
374
|
+
}
|
|
375
|
+
return sorted;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// =============================================================================
|
|
379
|
+
// Singleton Instance
|
|
380
|
+
// =============================================================================
|
|
381
|
+
let instance = null;
|
|
382
|
+
export function getPluginManager(system = 'ECOSYSTEM') {
|
|
383
|
+
if (!instance) {
|
|
384
|
+
instance = new PluginManager({ system });
|
|
385
|
+
}
|
|
386
|
+
return instance;
|
|
387
|
+
}
|
|
388
|
+
export function resetPluginManager() {
|
|
389
|
+
if (instance) {
|
|
390
|
+
instance.unloadAll().catch(() => { });
|
|
391
|
+
instance = null;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
// =============================================================================
|
|
395
|
+
// Plugin Creation Helpers
|
|
396
|
+
// =============================================================================
|
|
397
|
+
/**
|
|
398
|
+
* Create a simple plugin with minimal boilerplate
|
|
399
|
+
*/
|
|
400
|
+
export function createPlugin(metadata, init, dispose) {
|
|
401
|
+
return {
|
|
402
|
+
metadata,
|
|
403
|
+
init,
|
|
404
|
+
dispose,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Create a plugin factory for configurable plugins
|
|
409
|
+
*/
|
|
410
|
+
export function createPluginFactory(metadata, factory, dispose) {
|
|
411
|
+
return (config) => ({
|
|
412
|
+
metadata,
|
|
413
|
+
init: (context) => factory((config ?? {}), context),
|
|
414
|
+
dispose,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=PluginManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/plugins/PluginManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin System Exports
|
|
3
|
+
*
|
|
4
|
+
* @version 2.9.0
|
|
5
|
+
*/
|
|
6
|
+
export { PluginManager, getPluginManager, resetPluginManager, createPlugin, createPluginFactory, type Plugin, type PluginContext, type PluginMetadata, type PluginFactory, type PluginConfig, type PluginStatus, } from './PluginManager.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GAOpB,MAAM,oBAAoB,CAAA"}
|
|
@@ -288,13 +288,13 @@ export declare const MemoryLinkContentSchema: z.ZodObject<{
|
|
|
288
288
|
confidence: number;
|
|
289
289
|
sourceId: string;
|
|
290
290
|
targetId: string;
|
|
291
|
-
relationshipType: "
|
|
291
|
+
relationshipType: "derived_from" | "depends_on" | "extends" | "relates_to" | "contradicts" | "replaces";
|
|
292
292
|
description?: string | undefined;
|
|
293
293
|
}, {
|
|
294
294
|
confidence: number;
|
|
295
295
|
sourceId: string;
|
|
296
296
|
targetId: string;
|
|
297
|
-
relationshipType: "
|
|
297
|
+
relationshipType: "derived_from" | "depends_on" | "extends" | "relates_to" | "contradicts" | "replaces";
|
|
298
298
|
description?: string | undefined;
|
|
299
299
|
createdBy?: "user" | "system" | "expert" | undefined;
|
|
300
300
|
}>;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Log Service
|
|
3
|
+
*
|
|
4
|
+
* Tracks all CRUD operations on memories and items for:
|
|
5
|
+
* - Compliance and accountability
|
|
6
|
+
* - Change history tracking
|
|
7
|
+
* - Debugging and troubleshooting
|
|
8
|
+
* - Analytics and usage patterns
|
|
9
|
+
*
|
|
10
|
+
* @version 2.9.0
|
|
11
|
+
*/
|
|
12
|
+
import type { DevSystem, DevType } from '../types/index.js';
|
|
13
|
+
export type AuditAction = 'create' | 'read' | 'update' | 'delete' | 'search' | 'feedback' | 'export' | 'import' | 'archive' | 'restore';
|
|
14
|
+
export type AuditActor = 'user' | 'claude' | 'system' | 'api' | 'scheduler' | 'migration';
|
|
15
|
+
export interface AuditEntry {
|
|
16
|
+
id: string;
|
|
17
|
+
timestamp: string;
|
|
18
|
+
system: DevSystem;
|
|
19
|
+
action: AuditAction;
|
|
20
|
+
actor: AuditActor;
|
|
21
|
+
actorId?: string;
|
|
22
|
+
itemType?: DevType;
|
|
23
|
+
itemId?: string;
|
|
24
|
+
itemTitle?: string;
|
|
25
|
+
details?: Record<string, unknown>;
|
|
26
|
+
changes?: {
|
|
27
|
+
before?: Record<string, unknown>;
|
|
28
|
+
after?: Record<string, unknown>;
|
|
29
|
+
};
|
|
30
|
+
metadata?: {
|
|
31
|
+
sessionId?: string;
|
|
32
|
+
requestId?: string;
|
|
33
|
+
duration?: number;
|
|
34
|
+
ip?: string;
|
|
35
|
+
userAgent?: string;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface AuditQueryOptions {
|
|
39
|
+
system?: DevSystem;
|
|
40
|
+
action?: AuditAction;
|
|
41
|
+
actor?: AuditActor;
|
|
42
|
+
itemType?: DevType;
|
|
43
|
+
itemId?: string;
|
|
44
|
+
startDate?: Date;
|
|
45
|
+
endDate?: Date;
|
|
46
|
+
limit?: number;
|
|
47
|
+
offset?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface AuditStats {
|
|
50
|
+
totalEntries: number;
|
|
51
|
+
byAction: Record<AuditAction, number>;
|
|
52
|
+
byActor: Record<AuditActor, number>;
|
|
53
|
+
byItemType: Record<string, number>;
|
|
54
|
+
recentActivity: {
|
|
55
|
+
last24h: number;
|
|
56
|
+
last7d: number;
|
|
57
|
+
last30d: number;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export declare class AuditLogService {
|
|
61
|
+
private entries;
|
|
62
|
+
private maxEntries;
|
|
63
|
+
private system;
|
|
64
|
+
private flushCallback?;
|
|
65
|
+
private flushInterval;
|
|
66
|
+
private flushTimer?;
|
|
67
|
+
private pendingFlush;
|
|
68
|
+
constructor(options: {
|
|
69
|
+
system: DevSystem;
|
|
70
|
+
maxEntries?: number;
|
|
71
|
+
flushCallback?: (entries: AuditEntry[]) => Promise<void>;
|
|
72
|
+
flushInterval?: number;
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Log an audit entry
|
|
76
|
+
*/
|
|
77
|
+
log(entry: Omit<AuditEntry, 'id' | 'timestamp' | 'system'>): AuditEntry;
|
|
78
|
+
/**
|
|
79
|
+
* Log a create action
|
|
80
|
+
*/
|
|
81
|
+
logCreate(options: {
|
|
82
|
+
actor: AuditActor;
|
|
83
|
+
actorId?: string;
|
|
84
|
+
itemType: DevType;
|
|
85
|
+
itemId: string;
|
|
86
|
+
itemTitle?: string;
|
|
87
|
+
details?: Record<string, unknown>;
|
|
88
|
+
metadata?: AuditEntry['metadata'];
|
|
89
|
+
}): AuditEntry;
|
|
90
|
+
/**
|
|
91
|
+
* Log a read/access action
|
|
92
|
+
*/
|
|
93
|
+
logRead(options: {
|
|
94
|
+
actor: AuditActor;
|
|
95
|
+
actorId?: string;
|
|
96
|
+
itemType: DevType;
|
|
97
|
+
itemId: string;
|
|
98
|
+
metadata?: AuditEntry['metadata'];
|
|
99
|
+
}): AuditEntry;
|
|
100
|
+
/**
|
|
101
|
+
* Log an update action with before/after changes
|
|
102
|
+
*/
|
|
103
|
+
logUpdate(options: {
|
|
104
|
+
actor: AuditActor;
|
|
105
|
+
actorId?: string;
|
|
106
|
+
itemType: DevType;
|
|
107
|
+
itemId: string;
|
|
108
|
+
itemTitle?: string;
|
|
109
|
+
before: Record<string, unknown>;
|
|
110
|
+
after: Record<string, unknown>;
|
|
111
|
+
metadata?: AuditEntry['metadata'];
|
|
112
|
+
}): AuditEntry;
|
|
113
|
+
/**
|
|
114
|
+
* Log a delete action
|
|
115
|
+
*/
|
|
116
|
+
logDelete(options: {
|
|
117
|
+
actor: AuditActor;
|
|
118
|
+
actorId?: string;
|
|
119
|
+
itemType: DevType;
|
|
120
|
+
itemId: string;
|
|
121
|
+
itemTitle?: string;
|
|
122
|
+
details?: Record<string, unknown>;
|
|
123
|
+
metadata?: AuditEntry['metadata'];
|
|
124
|
+
}): AuditEntry;
|
|
125
|
+
/**
|
|
126
|
+
* Log a search action
|
|
127
|
+
*/
|
|
128
|
+
logSearch(options: {
|
|
129
|
+
actor: AuditActor;
|
|
130
|
+
actorId?: string;
|
|
131
|
+
details: {
|
|
132
|
+
query: string;
|
|
133
|
+
resultCount: number;
|
|
134
|
+
filters?: Record<string, unknown>;
|
|
135
|
+
};
|
|
136
|
+
metadata?: AuditEntry['metadata'];
|
|
137
|
+
}): AuditEntry;
|
|
138
|
+
/**
|
|
139
|
+
* Log feedback action
|
|
140
|
+
*/
|
|
141
|
+
logFeedback(options: {
|
|
142
|
+
actor: AuditActor;
|
|
143
|
+
actorId?: string;
|
|
144
|
+
itemId: string;
|
|
145
|
+
details: {
|
|
146
|
+
helpful: boolean;
|
|
147
|
+
comment?: string;
|
|
148
|
+
};
|
|
149
|
+
metadata?: AuditEntry['metadata'];
|
|
150
|
+
}): AuditEntry;
|
|
151
|
+
/**
|
|
152
|
+
* Query audit log entries
|
|
153
|
+
*/
|
|
154
|
+
query(options?: AuditQueryOptions): AuditEntry[];
|
|
155
|
+
/**
|
|
156
|
+
* Get history for a specific item
|
|
157
|
+
*/
|
|
158
|
+
getItemHistory(itemId: string): AuditEntry[];
|
|
159
|
+
/**
|
|
160
|
+
* Get statistics
|
|
161
|
+
*/
|
|
162
|
+
getStats(): AuditStats;
|
|
163
|
+
/**
|
|
164
|
+
* Export entries to JSON
|
|
165
|
+
*/
|
|
166
|
+
export(options?: AuditQueryOptions): string;
|
|
167
|
+
/**
|
|
168
|
+
* Import entries from JSON
|
|
169
|
+
*/
|
|
170
|
+
import(json: string): number;
|
|
171
|
+
/**
|
|
172
|
+
* Clear all entries
|
|
173
|
+
*/
|
|
174
|
+
clear(): void;
|
|
175
|
+
/**
|
|
176
|
+
* Get total entry count
|
|
177
|
+
*/
|
|
178
|
+
count(): number;
|
|
179
|
+
/**
|
|
180
|
+
* Flush pending entries to persistent storage
|
|
181
|
+
*/
|
|
182
|
+
flush(): Promise<number>;
|
|
183
|
+
/**
|
|
184
|
+
* Stop the service and flush remaining entries
|
|
185
|
+
*/
|
|
186
|
+
stop(): Promise<void>;
|
|
187
|
+
private startFlushTimer;
|
|
188
|
+
private validateEntry;
|
|
189
|
+
}
|
|
190
|
+
export declare function getAuditLog(system?: DevSystem): AuditLogService;
|
|
191
|
+
export declare function resetAuditLog(): void;
|
|
192
|
+
/**
|
|
193
|
+
* Create a new audit log service with custom options
|
|
194
|
+
*/
|
|
195
|
+
export declare function createAuditLog(options: {
|
|
196
|
+
system: DevSystem;
|
|
197
|
+
maxEntries?: number;
|
|
198
|
+
flushCallback?: (entries: AuditEntry[]) => Promise<void>;
|
|
199
|
+
flushInterval?: number;
|
|
200
|
+
}): AuditLogService;
|
|
201
|
+
/**
|
|
202
|
+
* Decorator function to automatically log method calls
|
|
203
|
+
*/
|
|
204
|
+
export declare function audited(action: AuditAction, actor?: AuditActor): <T extends (...args: unknown[]) => unknown>(_target: unknown, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T>;
|
|
205
|
+
//# sourceMappingURL=AuditLog.d.ts.map
|