@theihtisham/agent-shadow-brain 5.0.0 → 5.1.1
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/README.md +575 -292
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/brain/auto-setup.d.ts +54 -0
- package/dist/brain/auto-setup.d.ts.map +1 -0
- package/dist/brain/auto-setup.js +660 -0
- package/dist/brain/auto-setup.js.map +1 -0
- package/dist/brain/brain-portability.d.ts +81 -0
- package/dist/brain/brain-portability.d.ts.map +1 -0
- package/dist/brain/brain-portability.js +329 -0
- package/dist/brain/brain-portability.js.map +1 -0
- package/dist/brain/code-dna.d.ts +70 -0
- package/dist/brain/code-dna.d.ts.map +1 -0
- package/dist/brain/code-dna.js +611 -0
- package/dist/brain/code-dna.js.map +1 -0
- package/dist/brain/fine-tuning-engine.d.ts +99 -0
- package/dist/brain/fine-tuning-engine.d.ts.map +1 -0
- package/dist/brain/fine-tuning-engine.js +681 -0
- package/dist/brain/fine-tuning-engine.js.map +1 -0
- package/dist/brain/intent-engine.d.ts +64 -0
- package/dist/brain/intent-engine.d.ts.map +1 -0
- package/dist/brain/intent-engine.js +374 -0
- package/dist/brain/intent-engine.js.map +1 -0
- package/dist/brain/lsp-server.d.ts +62 -0
- package/dist/brain/lsp-server.d.ts.map +1 -0
- package/dist/brain/lsp-server.js +480 -0
- package/dist/brain/lsp-server.js.map +1 -0
- package/dist/brain/mcp-server.d.ts +12 -0
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +396 -37
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/orchestrator.d.ts +13 -0
- package/dist/brain/orchestrator.d.ts.map +1 -1
- package/dist/brain/orchestrator.js +25 -1
- package/dist/brain/orchestrator.js.map +1 -1
- package/dist/brain/plugin-system.d.ts +97 -0
- package/dist/brain/plugin-system.d.ts.map +1 -0
- package/dist/brain/plugin-system.js +404 -0
- package/dist/brain/plugin-system.js.map +1 -0
- package/dist/brain/smart-cache.d.ts +100 -0
- package/dist/brain/smart-cache.d.ts.map +1 -0
- package/dist/brain/smart-cache.js +417 -0
- package/dist/brain/smart-cache.js.map +1 -0
- package/dist/brain/temporal-intelligence.d.ts +89 -0
- package/dist/brain/temporal-intelligence.d.ts.map +1 -0
- package/dist/brain/temporal-intelligence.js +378 -0
- package/dist/brain/temporal-intelligence.js.map +1 -0
- package/dist/cli.js +444 -3
- package/dist/cli.js.map +1 -1
- package/dist/dashboard/server.d.ts +4 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +453 -330
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +284 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +28 -4
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
// src/brain/plugin-system.ts — Extensible Plugin Architecture
|
|
2
|
+
// Hookable analysis pipeline for third-party extensions
|
|
3
|
+
// v5.0.1 — Infinite Intelligence Edition
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
const PLUGINS_DIR_NAME = 'shadow-brain-plugins';
|
|
7
|
+
const NPM_PLUGIN_KEYWORD = 'shadow-brain-plugin';
|
|
8
|
+
/**
|
|
9
|
+
* PluginSystem — extensible plugin architecture.
|
|
10
|
+
*
|
|
11
|
+
* Supports:
|
|
12
|
+
* 1. Local plugins from project `shadow-brain-plugins/` directory
|
|
13
|
+
* 2. npm packages with `shadow-brain-plugin` keyword
|
|
14
|
+
* 3. Hookable analysis pipeline with priority ordering
|
|
15
|
+
* 4. Plugin isolation — errors in one plugin don't crash others
|
|
16
|
+
* 5. Hot-reload during development
|
|
17
|
+
*/
|
|
18
|
+
export class PluginSystem {
|
|
19
|
+
constructor(projectDir) {
|
|
20
|
+
this.plugins = new Map();
|
|
21
|
+
this.hooks = new Map();
|
|
22
|
+
this.projectDir = projectDir || process.cwd();
|
|
23
|
+
this.pluginsDir = path.join(this.projectDir, PLUGINS_DIR_NAME);
|
|
24
|
+
}
|
|
25
|
+
// ── Plugin Management ──────────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Discover and load all available plugins.
|
|
28
|
+
*/
|
|
29
|
+
async loadAll() {
|
|
30
|
+
let loaded = 0;
|
|
31
|
+
let errors = 0;
|
|
32
|
+
// Load local plugins from project directory
|
|
33
|
+
if (fs.existsSync(this.pluginsDir)) {
|
|
34
|
+
const entries = fs.readdirSync(this.pluginsDir, { withFileTypes: true });
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
if (!entry.isDirectory())
|
|
37
|
+
continue;
|
|
38
|
+
const pluginDir = path.join(this.pluginsDir, entry.name);
|
|
39
|
+
const result = await this.loadPlugin(pluginDir);
|
|
40
|
+
if (result)
|
|
41
|
+
loaded++;
|
|
42
|
+
else
|
|
43
|
+
errors++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Load npm plugins from node_modules
|
|
47
|
+
const npmPlugins = this.discoverNpmPlugins();
|
|
48
|
+
for (const npmPlugin of npmPlugins) {
|
|
49
|
+
const result = await this.loadPlugin(npmPlugin);
|
|
50
|
+
if (result)
|
|
51
|
+
loaded++;
|
|
52
|
+
else
|
|
53
|
+
errors++;
|
|
54
|
+
}
|
|
55
|
+
return { loaded, errors };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Load a single plugin from its directory.
|
|
59
|
+
*/
|
|
60
|
+
async loadPlugin(pluginDir) {
|
|
61
|
+
try {
|
|
62
|
+
const manifestPath = path.join(pluginDir, 'manifest.json');
|
|
63
|
+
if (!fs.existsSync(manifestPath))
|
|
64
|
+
return false;
|
|
65
|
+
const manifestData = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
|
|
66
|
+
const manifest = {
|
|
67
|
+
name: manifestData.name,
|
|
68
|
+
version: manifestData.version || '1.0.0',
|
|
69
|
+
description: manifestData.description || '',
|
|
70
|
+
author: manifestData.author || 'unknown',
|
|
71
|
+
main: manifestData.main || 'index.js',
|
|
72
|
+
hooks: (manifestData.hooks || []).map((h) => ({
|
|
73
|
+
event: h.event,
|
|
74
|
+
handler: h.handler,
|
|
75
|
+
priority: h.priority || 50,
|
|
76
|
+
})),
|
|
77
|
+
dependencies: manifestData.dependencies || [],
|
|
78
|
+
};
|
|
79
|
+
if (!manifest.name || manifest.hooks.length === 0)
|
|
80
|
+
return false;
|
|
81
|
+
// Validate handler files exist
|
|
82
|
+
for (const hook of manifest.hooks) {
|
|
83
|
+
const handlerPath = path.join(pluginDir, hook.handler);
|
|
84
|
+
if (!fs.existsSync(handlerPath)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Register plugin
|
|
89
|
+
const instance = {
|
|
90
|
+
manifest,
|
|
91
|
+
enabled: true,
|
|
92
|
+
loadedAt: new Date(),
|
|
93
|
+
errorCount: 0,
|
|
94
|
+
};
|
|
95
|
+
this.plugins.set(manifest.name, instance);
|
|
96
|
+
// Register hooks
|
|
97
|
+
for (const hook of manifest.hooks) {
|
|
98
|
+
const hookEntry = { plugin: manifest.name, hook };
|
|
99
|
+
const existing = this.hooks.get(hook.event) || [];
|
|
100
|
+
existing.push(hookEntry);
|
|
101
|
+
existing.sort((a, b) => (a.hook.priority ?? 50) - (b.hook.priority ?? 50));
|
|
102
|
+
this.hooks.set(hook.event, existing);
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Unload a plugin by name.
|
|
112
|
+
*/
|
|
113
|
+
unloadPlugin(name) {
|
|
114
|
+
const plugin = this.plugins.get(name);
|
|
115
|
+
if (!plugin)
|
|
116
|
+
return false;
|
|
117
|
+
// Remove hooks
|
|
118
|
+
for (const [event, hookList] of this.hooks.entries()) {
|
|
119
|
+
this.hooks.set(event, hookList.filter(h => h.plugin !== name));
|
|
120
|
+
}
|
|
121
|
+
this.plugins.delete(name);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Enable/disable a plugin.
|
|
126
|
+
*/
|
|
127
|
+
setPluginEnabled(name, enabled) {
|
|
128
|
+
const plugin = this.plugins.get(name);
|
|
129
|
+
if (!plugin)
|
|
130
|
+
return false;
|
|
131
|
+
plugin.enabled = enabled;
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
// ── Hook Execution ─────────────────────────────────────────────────────────
|
|
135
|
+
/**
|
|
136
|
+
* Execute hooks for a given event, passing context to each handler.
|
|
137
|
+
*/
|
|
138
|
+
async executeHooks(event, context = {}) {
|
|
139
|
+
const hookList = this.hooks.get(event) || [];
|
|
140
|
+
const results = [];
|
|
141
|
+
for (const { plugin: pluginName, hook } of hookList) {
|
|
142
|
+
const plugin = this.plugins.get(pluginName);
|
|
143
|
+
if (!plugin || !plugin.enabled)
|
|
144
|
+
continue;
|
|
145
|
+
try {
|
|
146
|
+
const result = await this.executeHandler(plugin, hook, context);
|
|
147
|
+
results.push(result);
|
|
148
|
+
// If handler modified context, pass updated context to next hook
|
|
149
|
+
if (result.modified && result.data) {
|
|
150
|
+
Object.assign(context, result.data);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
plugin.errorCount++;
|
|
155
|
+
plugin.lastError = err instanceof Error ? err.message : String(err);
|
|
156
|
+
results.push({ error: plugin.lastError });
|
|
157
|
+
// Disable plugin after 5 consecutive errors
|
|
158
|
+
if (plugin.errorCount >= 5) {
|
|
159
|
+
plugin.enabled = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return results;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Execute pre-analysis hooks — can filter/modify files before analysis.
|
|
167
|
+
*/
|
|
168
|
+
async preAnalysis(context) {
|
|
169
|
+
const results = await this.executeHooks('pre-analysis', context);
|
|
170
|
+
let files = context.files;
|
|
171
|
+
const extraInsights = [];
|
|
172
|
+
for (const result of results) {
|
|
173
|
+
if (result.insights)
|
|
174
|
+
extraInsights.push(...result.insights);
|
|
175
|
+
if (result.data?.files && Array.isArray(result.data.files)) {
|
|
176
|
+
files = result.data.files;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return { files, extraInsights };
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Execute post-analysis hooks — can modify/filter insights after analysis.
|
|
183
|
+
*/
|
|
184
|
+
async postAnalysis(context) {
|
|
185
|
+
const results = await this.executeHooks('post-analysis', context);
|
|
186
|
+
let insights = context.insights;
|
|
187
|
+
for (const result of results) {
|
|
188
|
+
if (result.insights) {
|
|
189
|
+
insights = [...insights, ...result.insights];
|
|
190
|
+
}
|
|
191
|
+
if (result.data?.filteredInsights && Array.isArray(result.data.filteredInsights)) {
|
|
192
|
+
const filteredTitles = new Set(result.data.filteredInsights.map(i => i.title));
|
|
193
|
+
insights = insights.filter(i => !filteredTitles.has(i.title));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return { insights };
|
|
197
|
+
}
|
|
198
|
+
// ── Plugin Discovery ───────────────────────────────────────────────────────
|
|
199
|
+
/**
|
|
200
|
+
* Discover npm packages with the shadow-brain-plugin keyword.
|
|
201
|
+
*/
|
|
202
|
+
discoverNpmPlugins() {
|
|
203
|
+
const plugins = [];
|
|
204
|
+
const nodeModules = path.join(this.projectDir, 'node_modules');
|
|
205
|
+
if (!fs.existsSync(nodeModules))
|
|
206
|
+
return plugins;
|
|
207
|
+
try {
|
|
208
|
+
// Check top-level packages
|
|
209
|
+
const packages = fs.readdirSync(nodeModules, { withFileTypes: true });
|
|
210
|
+
for (const pkg of packages) {
|
|
211
|
+
if (!pkg.isDirectory())
|
|
212
|
+
continue;
|
|
213
|
+
if (pkg.name.startsWith('.'))
|
|
214
|
+
continue;
|
|
215
|
+
const pkgPath = path.join(nodeModules, pkg.name);
|
|
216
|
+
const manifestPath = path.join(pkgPath, 'manifest.json');
|
|
217
|
+
const pkgJsonPath = path.join(pkgPath, 'package.json');
|
|
218
|
+
// Check if it's a shadow-brain plugin
|
|
219
|
+
if (fs.existsSync(manifestPath)) {
|
|
220
|
+
plugins.push(pkgPath);
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Check package.json for keyword
|
|
224
|
+
if (fs.existsSync(pkgJsonPath)) {
|
|
225
|
+
try {
|
|
226
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
|
227
|
+
if (Array.isArray(pkgJson.keywords) && pkgJson.keywords.includes(NPM_PLUGIN_KEYWORD)) {
|
|
228
|
+
plugins.push(pkgPath);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Skip
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Check scoped packages
|
|
237
|
+
const scopedDirs = packages.filter(p => p.isDirectory() && p.name.startsWith('@'));
|
|
238
|
+
for (const scoped of scopedDirs) {
|
|
239
|
+
const scopedPath = path.join(nodeModules, scoped.name);
|
|
240
|
+
try {
|
|
241
|
+
const subPackages = fs.readdirSync(scopedPath, { withFileTypes: true });
|
|
242
|
+
for (const sub of subPackages) {
|
|
243
|
+
if (!sub.isDirectory())
|
|
244
|
+
continue;
|
|
245
|
+
const pkgJsonPath = path.join(scopedPath, sub.name, 'package.json');
|
|
246
|
+
const manifestPath = path.join(scopedPath, sub.name, 'manifest.json');
|
|
247
|
+
if (fs.existsSync(manifestPath)) {
|
|
248
|
+
plugins.push(path.join(scopedPath, sub.name));
|
|
249
|
+
}
|
|
250
|
+
else if (fs.existsSync(pkgJsonPath)) {
|
|
251
|
+
try {
|
|
252
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
|
253
|
+
if (Array.isArray(pkgJson.keywords) && pkgJson.keywords.includes(NPM_PLUGIN_KEYWORD)) {
|
|
254
|
+
plugins.push(path.join(scopedPath, sub.name));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
// Skip
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Permission denied
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// node_modules not accessible
|
|
270
|
+
}
|
|
271
|
+
return plugins;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Execute a plugin handler function.
|
|
275
|
+
*/
|
|
276
|
+
async executeHandler(plugin, hook, context) {
|
|
277
|
+
const pluginDir = this.getPluginDir(plugin.manifest.name);
|
|
278
|
+
const handlerPath = path.join(pluginDir, hook.handler);
|
|
279
|
+
if (!fs.existsSync(handlerPath)) {
|
|
280
|
+
return { error: `Handler not found: ${hook.handler}` };
|
|
281
|
+
}
|
|
282
|
+
// Dynamic import of handler module
|
|
283
|
+
try {
|
|
284
|
+
const module = await import(`file://${handlerPath.replace(/\\/g, '/')}`);
|
|
285
|
+
const handler = module.default || module.handler || module[Object.keys(module)[0]];
|
|
286
|
+
if (typeof handler === 'function') {
|
|
287
|
+
const result = await handler(context);
|
|
288
|
+
return {
|
|
289
|
+
insights: result?.insights || [],
|
|
290
|
+
modified: result?.modified || false,
|
|
291
|
+
data: result?.data || {},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return { error: `No valid handler function in ${hook.handler}` };
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
getPluginDir(pluginName) {
|
|
301
|
+
// Check local plugins first
|
|
302
|
+
const localDir = path.join(this.pluginsDir, pluginName);
|
|
303
|
+
if (fs.existsSync(localDir))
|
|
304
|
+
return localDir;
|
|
305
|
+
// Check node_modules
|
|
306
|
+
const nodeModulesDir = path.join(this.projectDir, 'node_modules', pluginName);
|
|
307
|
+
if (fs.existsSync(nodeModulesDir))
|
|
308
|
+
return nodeModulesDir;
|
|
309
|
+
return localDir;
|
|
310
|
+
}
|
|
311
|
+
// ── Query & Stats ──────────────────────────────────────────────────────────
|
|
312
|
+
getPlugins() {
|
|
313
|
+
return Array.from(this.plugins.values());
|
|
314
|
+
}
|
|
315
|
+
getPlugin(name) {
|
|
316
|
+
return this.plugins.get(name);
|
|
317
|
+
}
|
|
318
|
+
getHooks(event) {
|
|
319
|
+
if (event)
|
|
320
|
+
return this.hooks.get(event) || [];
|
|
321
|
+
const all = [];
|
|
322
|
+
for (const [, hooks] of this.hooks) {
|
|
323
|
+
all.push(...hooks);
|
|
324
|
+
}
|
|
325
|
+
return all;
|
|
326
|
+
}
|
|
327
|
+
getStats() {
|
|
328
|
+
let enabled = 0;
|
|
329
|
+
let disabled = 0;
|
|
330
|
+
let errors = 0;
|
|
331
|
+
let totalHooks = 0;
|
|
332
|
+
const hooksByEvent = {};
|
|
333
|
+
for (const plugin of this.plugins.values()) {
|
|
334
|
+
if (plugin.enabled)
|
|
335
|
+
enabled++;
|
|
336
|
+
else
|
|
337
|
+
disabled++;
|
|
338
|
+
if (plugin.errorCount > 0)
|
|
339
|
+
errors++;
|
|
340
|
+
}
|
|
341
|
+
for (const [event, hooks] of this.hooks) {
|
|
342
|
+
hooksByEvent[event] = hooks.length;
|
|
343
|
+
totalHooks += hooks.length;
|
|
344
|
+
}
|
|
345
|
+
return {
|
|
346
|
+
totalPlugins: this.plugins.size,
|
|
347
|
+
enabledPlugins: enabled,
|
|
348
|
+
disabledPlugins: disabled,
|
|
349
|
+
totalHooks,
|
|
350
|
+
hooksByEvent,
|
|
351
|
+
errors,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Create a template plugin in the project's plugins directory.
|
|
356
|
+
*/
|
|
357
|
+
createTemplate(name) {
|
|
358
|
+
const pluginDir = path.join(this.pluginsDir, name);
|
|
359
|
+
if (fs.existsSync(pluginDir)) {
|
|
360
|
+
throw new Error(`Plugin "${name}" already exists`);
|
|
361
|
+
}
|
|
362
|
+
fs.mkdirSync(pluginDir, { recursive: true });
|
|
363
|
+
// manifest.json
|
|
364
|
+
const manifest = {
|
|
365
|
+
name,
|
|
366
|
+
version: '1.0.0',
|
|
367
|
+
description: `Shadow Brain plugin: ${name}`,
|
|
368
|
+
author: 'anonymous',
|
|
369
|
+
main: 'index.js',
|
|
370
|
+
hooks: [
|
|
371
|
+
{ event: 'post-analysis', handler: 'index.js', priority: 50 },
|
|
372
|
+
],
|
|
373
|
+
};
|
|
374
|
+
fs.writeFileSync(path.join(pluginDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
|
375
|
+
// index.js template
|
|
376
|
+
const handlerCode = `// Shadow Brain Plugin: ${name}
|
|
377
|
+
// Hook: post-analysis
|
|
378
|
+
// Modify the context to add custom insights or filter existing ones
|
|
379
|
+
|
|
380
|
+
export default async function handler(context) {
|
|
381
|
+
const { insights, healthScore } = context;
|
|
382
|
+
|
|
383
|
+
// Example: Add a custom insight
|
|
384
|
+
const customInsight = {
|
|
385
|
+
priority: 'info',
|
|
386
|
+
type: 'custom',
|
|
387
|
+
title: '${name} plugin active',
|
|
388
|
+
content: 'This is a custom insight from the ${name} plugin.',
|
|
389
|
+
file: '',
|
|
390
|
+
line: 0,
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
return {
|
|
394
|
+
insights: [customInsight],
|
|
395
|
+
modified: true,
|
|
396
|
+
data: {},
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
`;
|
|
400
|
+
fs.writeFileSync(path.join(pluginDir, 'index.js'), handlerCode);
|
|
401
|
+
return pluginDir;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
//# sourceMappingURL=plugin-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-system.js","sourceRoot":"","sources":["../../src/brain/plugin-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export interface CacheEntry<T = unknown> {
|
|
2
|
+
key: string;
|
|
3
|
+
value: T;
|
|
4
|
+
tier: 'hot' | 'warm' | 'cold';
|
|
5
|
+
createdAt: number;
|
|
6
|
+
lastAccess: number;
|
|
7
|
+
accessCount: number;
|
|
8
|
+
ttl: number;
|
|
9
|
+
size: number;
|
|
10
|
+
compressed: boolean;
|
|
11
|
+
tags: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface CacheConfig {
|
|
14
|
+
maxHotEntries: number;
|
|
15
|
+
maxWarmEntries: number;
|
|
16
|
+
maxColdEntries: number;
|
|
17
|
+
defaultTTL: number;
|
|
18
|
+
hotPromotionThreshold: number;
|
|
19
|
+
coldDemotionThreshold: number;
|
|
20
|
+
compressionThreshold: number;
|
|
21
|
+
enablePrefetch: boolean;
|
|
22
|
+
maxMemoryMB: number;
|
|
23
|
+
}
|
|
24
|
+
export interface CacheStats {
|
|
25
|
+
hotEntries: number;
|
|
26
|
+
warmEntries: number;
|
|
27
|
+
coldEntries: number;
|
|
28
|
+
totalEntries: number;
|
|
29
|
+
hits: number;
|
|
30
|
+
misses: number;
|
|
31
|
+
hitRate: number;
|
|
32
|
+
evictions: number;
|
|
33
|
+
promotions: number;
|
|
34
|
+
demotions: number;
|
|
35
|
+
memoryUsageMB: number;
|
|
36
|
+
prefetchHits: number;
|
|
37
|
+
avgAccessTime: number;
|
|
38
|
+
}
|
|
39
|
+
export interface PrefetchHint {
|
|
40
|
+
key: string;
|
|
41
|
+
probability: number;
|
|
42
|
+
basedOn: string[];
|
|
43
|
+
}
|
|
44
|
+
export declare class SmartCache {
|
|
45
|
+
private hot;
|
|
46
|
+
private warm;
|
|
47
|
+
private cold;
|
|
48
|
+
private config;
|
|
49
|
+
private accessLog;
|
|
50
|
+
private prefetchGraph;
|
|
51
|
+
private hits;
|
|
52
|
+
private misses;
|
|
53
|
+
private evictions;
|
|
54
|
+
private promotions;
|
|
55
|
+
private demotions;
|
|
56
|
+
private prefetchHits;
|
|
57
|
+
private totalAccessTime;
|
|
58
|
+
private accessTimeCount;
|
|
59
|
+
constructor(config?: Partial<CacheConfig>);
|
|
60
|
+
get<T = unknown>(key: string): T | undefined;
|
|
61
|
+
set<T = unknown>(key: string, value: T, options?: {
|
|
62
|
+
ttl?: number;
|
|
63
|
+
tags?: string[];
|
|
64
|
+
tier?: 'hot' | 'warm';
|
|
65
|
+
}): void;
|
|
66
|
+
delete(key: string): boolean;
|
|
67
|
+
has(key: string): boolean;
|
|
68
|
+
clear(): void;
|
|
69
|
+
getMany<T = unknown>(keys: string[]): Map<string, T>;
|
|
70
|
+
setMany<T = unknown>(entries: Array<{
|
|
71
|
+
key: string;
|
|
72
|
+
value: T;
|
|
73
|
+
ttl?: number;
|
|
74
|
+
}>): void;
|
|
75
|
+
getByTag<T = unknown>(tag: string): Map<string, T>;
|
|
76
|
+
invalidateByTag(tag: string): number;
|
|
77
|
+
getOrCompute<T>(key: string, compute: () => T | Promise<T>, options?: {
|
|
78
|
+
ttl?: number;
|
|
79
|
+
tags?: string[];
|
|
80
|
+
}): Promise<T>;
|
|
81
|
+
private promote;
|
|
82
|
+
private enforceHotLimit;
|
|
83
|
+
private enforceWarmLimit;
|
|
84
|
+
private enforceColdLimit;
|
|
85
|
+
private findLeastRecentlyUsed;
|
|
86
|
+
private isExpired;
|
|
87
|
+
private trackAccess;
|
|
88
|
+
private triggerPrefetch;
|
|
89
|
+
getPrefetchHints(key: string, limit?: number): PrefetchHint[];
|
|
90
|
+
cleanup(): number;
|
|
91
|
+
demoteStale(): number;
|
|
92
|
+
private recordAccessTime;
|
|
93
|
+
stats(): CacheStats;
|
|
94
|
+
private estimateMemory;
|
|
95
|
+
keys(): string[];
|
|
96
|
+
size(): number;
|
|
97
|
+
getConfig(): CacheConfig;
|
|
98
|
+
updateConfig(updates: Partial<CacheConfig>): void;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=smart-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-cache.d.ts","sourceRoot":"","sources":["../../src/brain/smart-cache.ts"],"names":[],"mappings":"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"}
|