@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.
Files changed (61) hide show
  1. package/README.md +575 -292
  2. package/dist/adapters/index.d.ts.map +1 -1
  3. package/dist/adapters/index.js +1 -0
  4. package/dist/adapters/index.js.map +1 -1
  5. package/dist/brain/auto-setup.d.ts +54 -0
  6. package/dist/brain/auto-setup.d.ts.map +1 -0
  7. package/dist/brain/auto-setup.js +660 -0
  8. package/dist/brain/auto-setup.js.map +1 -0
  9. package/dist/brain/brain-portability.d.ts +81 -0
  10. package/dist/brain/brain-portability.d.ts.map +1 -0
  11. package/dist/brain/brain-portability.js +329 -0
  12. package/dist/brain/brain-portability.js.map +1 -0
  13. package/dist/brain/code-dna.d.ts +70 -0
  14. package/dist/brain/code-dna.d.ts.map +1 -0
  15. package/dist/brain/code-dna.js +611 -0
  16. package/dist/brain/code-dna.js.map +1 -0
  17. package/dist/brain/fine-tuning-engine.d.ts +99 -0
  18. package/dist/brain/fine-tuning-engine.d.ts.map +1 -0
  19. package/dist/brain/fine-tuning-engine.js +681 -0
  20. package/dist/brain/fine-tuning-engine.js.map +1 -0
  21. package/dist/brain/intent-engine.d.ts +64 -0
  22. package/dist/brain/intent-engine.d.ts.map +1 -0
  23. package/dist/brain/intent-engine.js +374 -0
  24. package/dist/brain/intent-engine.js.map +1 -0
  25. package/dist/brain/lsp-server.d.ts +62 -0
  26. package/dist/brain/lsp-server.d.ts.map +1 -0
  27. package/dist/brain/lsp-server.js +480 -0
  28. package/dist/brain/lsp-server.js.map +1 -0
  29. package/dist/brain/mcp-server.d.ts +12 -0
  30. package/dist/brain/mcp-server.d.ts.map +1 -1
  31. package/dist/brain/mcp-server.js +396 -37
  32. package/dist/brain/mcp-server.js.map +1 -1
  33. package/dist/brain/orchestrator.d.ts +13 -0
  34. package/dist/brain/orchestrator.d.ts.map +1 -1
  35. package/dist/brain/orchestrator.js +25 -1
  36. package/dist/brain/orchestrator.js.map +1 -1
  37. package/dist/brain/plugin-system.d.ts +97 -0
  38. package/dist/brain/plugin-system.d.ts.map +1 -0
  39. package/dist/brain/plugin-system.js +404 -0
  40. package/dist/brain/plugin-system.js.map +1 -0
  41. package/dist/brain/smart-cache.d.ts +100 -0
  42. package/dist/brain/smart-cache.d.ts.map +1 -0
  43. package/dist/brain/smart-cache.js +417 -0
  44. package/dist/brain/smart-cache.js.map +1 -0
  45. package/dist/brain/temporal-intelligence.d.ts +89 -0
  46. package/dist/brain/temporal-intelligence.d.ts.map +1 -0
  47. package/dist/brain/temporal-intelligence.js +378 -0
  48. package/dist/brain/temporal-intelligence.js.map +1 -0
  49. package/dist/cli.js +444 -3
  50. package/dist/cli.js.map +1 -1
  51. package/dist/dashboard/server.d.ts +4 -0
  52. package/dist/dashboard/server.d.ts.map +1 -1
  53. package/dist/dashboard/server.js +453 -330
  54. package/dist/dashboard/server.js.map +1 -1
  55. package/dist/index.d.ts +11 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +12 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/types.d.ts +284 -1
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +28 -4
@@ -0,0 +1,417 @@
1
+ // src/brain/smart-cache.ts — Intelligent multi-tier caching with predictive prefetch
2
+ // v6.0.0 — Zero-dependency adaptive cache
3
+ // ── Default Config ─────────────────────────────────────────────────────────
4
+ const DEFAULT_CONFIG = {
5
+ maxHotEntries: 200,
6
+ maxWarmEntries: 1000,
7
+ maxColdEntries: 5000,
8
+ defaultTTL: 300000, // 5 minutes
9
+ hotPromotionThreshold: 5,
10
+ coldDemotionThreshold: 60000, // 1 minute without access
11
+ compressionThreshold: 10000, // bytes
12
+ enablePrefetch: true,
13
+ maxMemoryMB: 100,
14
+ };
15
+ // ── Smart Cache ────────────────────────────────────────────────────────────
16
+ export class SmartCache {
17
+ constructor(config) {
18
+ this.hot = new Map();
19
+ this.warm = new Map();
20
+ this.cold = new Map();
21
+ this.accessLog = [];
22
+ this.prefetchGraph = new Map(); // key -> {co-accessed key -> count}
23
+ // Stats
24
+ this.hits = 0;
25
+ this.misses = 0;
26
+ this.evictions = 0;
27
+ this.promotions = 0;
28
+ this.demotions = 0;
29
+ this.prefetchHits = 0;
30
+ this.totalAccessTime = 0;
31
+ this.accessTimeCount = 0;
32
+ this.config = { ...DEFAULT_CONFIG, ...config };
33
+ }
34
+ // ── Core Operations ─────────────────────────────────────────────────
35
+ get(key) {
36
+ const startTime = Date.now();
37
+ // Check hot tier first (fastest)
38
+ let entry = this.hot.get(key);
39
+ if (entry && !this.isExpired(entry)) {
40
+ entry.lastAccess = Date.now();
41
+ entry.accessCount++;
42
+ this.hits++;
43
+ this.trackAccess(key);
44
+ this.recordAccessTime(startTime);
45
+ return entry.value;
46
+ }
47
+ // Check warm tier
48
+ entry = this.warm.get(key);
49
+ if (entry && !this.isExpired(entry)) {
50
+ entry.lastAccess = Date.now();
51
+ entry.accessCount++;
52
+ this.hits++;
53
+ this.trackAccess(key);
54
+ // Promote to hot if accessed enough
55
+ if (entry.accessCount >= this.config.hotPromotionThreshold) {
56
+ this.promote(key, entry);
57
+ }
58
+ this.recordAccessTime(startTime);
59
+ return entry.value;
60
+ }
61
+ // Check cold tier
62
+ entry = this.cold.get(key);
63
+ if (entry && !this.isExpired(entry)) {
64
+ entry.lastAccess = Date.now();
65
+ entry.accessCount++;
66
+ this.hits++;
67
+ this.trackAccess(key);
68
+ // Promote to warm
69
+ this.cold.delete(key);
70
+ entry.tier = 'warm';
71
+ entry.compressed = false;
72
+ this.warm.set(key, entry);
73
+ this.promotions++;
74
+ this.enforceWarmLimit();
75
+ this.recordAccessTime(startTime);
76
+ return entry.value;
77
+ }
78
+ this.misses++;
79
+ this.recordAccessTime(startTime);
80
+ // Trigger prefetch if enabled
81
+ if (this.config.enablePrefetch) {
82
+ this.triggerPrefetch(key);
83
+ }
84
+ return undefined;
85
+ }
86
+ set(key, value, options) {
87
+ const serialized = JSON.stringify(value);
88
+ const size = serialized.length;
89
+ const tier = options?.tier || (size > this.config.compressionThreshold ? 'warm' : 'hot');
90
+ const entry = {
91
+ key,
92
+ value,
93
+ tier,
94
+ createdAt: Date.now(),
95
+ lastAccess: Date.now(),
96
+ accessCount: 1,
97
+ ttl: options?.ttl || this.config.defaultTTL,
98
+ size,
99
+ compressed: false,
100
+ tags: options?.tags || [],
101
+ };
102
+ if (tier === 'hot') {
103
+ this.hot.set(key, entry);
104
+ this.enforceHotLimit();
105
+ }
106
+ else {
107
+ this.warm.set(key, entry);
108
+ this.enforceWarmLimit();
109
+ }
110
+ this.trackAccess(key);
111
+ }
112
+ delete(key) {
113
+ return this.hot.delete(key) || this.warm.delete(key) || this.cold.delete(key);
114
+ }
115
+ has(key) {
116
+ return (this.hot.has(key) && !this.isExpired(this.hot.get(key))) ||
117
+ (this.warm.has(key) && !this.isExpired(this.warm.get(key))) ||
118
+ (this.cold.has(key) && !this.isExpired(this.cold.get(key)));
119
+ }
120
+ clear() {
121
+ this.hot.clear();
122
+ this.warm.clear();
123
+ this.cold.clear();
124
+ this.accessLog = [];
125
+ this.hits = 0;
126
+ this.misses = 0;
127
+ this.evictions = 0;
128
+ this.promotions = 0;
129
+ this.demotions = 0;
130
+ }
131
+ // ── Batch Operations ────────────────────────────────────────────────
132
+ getMany(keys) {
133
+ const result = new Map();
134
+ for (const key of keys) {
135
+ const value = this.get(key);
136
+ if (value !== undefined) {
137
+ result.set(key, value);
138
+ }
139
+ }
140
+ return result;
141
+ }
142
+ setMany(entries) {
143
+ for (const entry of entries) {
144
+ this.set(entry.key, entry.value, { ttl: entry.ttl });
145
+ }
146
+ }
147
+ // ── Tag-Based Operations ────────────────────────────────────────────
148
+ getByTag(tag) {
149
+ const result = new Map();
150
+ for (const [key, entry] of this.hot) {
151
+ if (entry.tags.includes(tag) && !this.isExpired(entry)) {
152
+ result.set(key, entry.value);
153
+ }
154
+ }
155
+ for (const [key, entry] of this.warm) {
156
+ if (entry.tags.includes(tag) && !this.isExpired(entry)) {
157
+ result.set(key, entry.value);
158
+ }
159
+ }
160
+ for (const [key, entry] of this.cold) {
161
+ if (entry.tags.includes(tag) && !this.isExpired(entry)) {
162
+ result.set(key, entry.value);
163
+ }
164
+ }
165
+ return result;
166
+ }
167
+ invalidateByTag(tag) {
168
+ let count = 0;
169
+ for (const [key, entry] of this.hot) {
170
+ if (entry.tags.includes(tag)) {
171
+ this.hot.delete(key);
172
+ count++;
173
+ }
174
+ }
175
+ for (const [key, entry] of this.warm) {
176
+ if (entry.tags.includes(tag)) {
177
+ this.warm.delete(key);
178
+ count++;
179
+ }
180
+ }
181
+ for (const [key, entry] of this.cold) {
182
+ if (entry.tags.includes(tag)) {
183
+ this.cold.delete(key);
184
+ count++;
185
+ }
186
+ }
187
+ return count;
188
+ }
189
+ // ── Computed Cache (memoization) ────────────────────────────────────
190
+ async getOrCompute(key, compute, options) {
191
+ const cached = this.get(key);
192
+ if (cached !== undefined)
193
+ return cached;
194
+ const value = await compute();
195
+ this.set(key, value, options);
196
+ return value;
197
+ }
198
+ // ── Tier Management ─────────────────────────────────────────────────
199
+ promote(key, entry) {
200
+ this.warm.delete(key);
201
+ entry.tier = 'hot';
202
+ this.hot.set(key, entry);
203
+ this.promotions++;
204
+ this.enforceHotLimit();
205
+ }
206
+ enforceHotLimit() {
207
+ while (this.hot.size > this.config.maxHotEntries) {
208
+ const coldest = this.findLeastRecentlyUsed(this.hot);
209
+ if (!coldest)
210
+ break;
211
+ const entry = this.hot.get(coldest);
212
+ this.hot.delete(coldest);
213
+ entry.tier = 'warm';
214
+ this.warm.set(coldest, entry);
215
+ this.demotions++;
216
+ }
217
+ this.enforceWarmLimit();
218
+ }
219
+ enforceWarmLimit() {
220
+ while (this.warm.size > this.config.maxWarmEntries) {
221
+ const coldest = this.findLeastRecentlyUsed(this.warm);
222
+ if (!coldest)
223
+ break;
224
+ const entry = this.warm.get(coldest);
225
+ this.warm.delete(coldest);
226
+ entry.tier = 'cold';
227
+ entry.compressed = true;
228
+ this.cold.set(coldest, entry);
229
+ this.demotions++;
230
+ }
231
+ this.enforceColdLimit();
232
+ }
233
+ enforceColdLimit() {
234
+ while (this.cold.size > this.config.maxColdEntries) {
235
+ const coldest = this.findLeastRecentlyUsed(this.cold);
236
+ if (!coldest)
237
+ break;
238
+ this.cold.delete(coldest);
239
+ this.evictions++;
240
+ }
241
+ }
242
+ findLeastRecentlyUsed(tier) {
243
+ let lruKey = null;
244
+ let lruTime = Infinity;
245
+ for (const [key, entry] of tier) {
246
+ // Factor in access count: frequently used items survive longer
247
+ const effectiveTime = entry.lastAccess + (entry.accessCount * 1000);
248
+ if (effectiveTime < lruTime) {
249
+ lruTime = effectiveTime;
250
+ lruKey = key;
251
+ }
252
+ }
253
+ return lruKey;
254
+ }
255
+ isExpired(entry) {
256
+ return Date.now() - entry.createdAt > entry.ttl;
257
+ }
258
+ // ── Predictive Prefetch ─────────────────────────────────────────────
259
+ trackAccess(key) {
260
+ const now = Date.now();
261
+ this.accessLog.push({ key, time: now });
262
+ // Keep recent access log manageable
263
+ if (this.accessLog.length > 5000) {
264
+ this.accessLog = this.accessLog.slice(-3000);
265
+ }
266
+ // Build co-access graph (keys accessed within 5 seconds of each other)
267
+ const recentWindow = 5000;
268
+ const recentAccesses = this.accessLog.filter(a => now - a.time < recentWindow && a.key !== key);
269
+ if (!this.prefetchGraph.has(key)) {
270
+ this.prefetchGraph.set(key, new Map());
271
+ }
272
+ const coAccess = this.prefetchGraph.get(key);
273
+ for (const access of recentAccesses) {
274
+ coAccess.set(access.key, (coAccess.get(access.key) || 0) + 1);
275
+ }
276
+ // Limit prefetch graph size
277
+ if (this.prefetchGraph.size > 2000) {
278
+ const entries = Array.from(this.prefetchGraph.entries());
279
+ entries.sort((a, b) => b[1].size - a[1].size);
280
+ this.prefetchGraph = new Map(entries.slice(0, 1500));
281
+ }
282
+ }
283
+ triggerPrefetch(missedKey) {
284
+ // When we miss a key, check if other frequently co-accessed keys need to be warmed
285
+ const coAccess = this.prefetchGraph.get(missedKey);
286
+ if (!coAccess)
287
+ return;
288
+ for (const [coKey, count] of coAccess) {
289
+ if (count >= 3) {
290
+ // Check if co-accessed key is in cold tier and promote
291
+ const coldEntry = this.cold.get(coKey);
292
+ if (coldEntry && !this.isExpired(coldEntry)) {
293
+ this.cold.delete(coKey);
294
+ coldEntry.tier = 'warm';
295
+ coldEntry.compressed = false;
296
+ this.warm.set(coKey, coldEntry);
297
+ this.prefetchHits++;
298
+ }
299
+ }
300
+ }
301
+ }
302
+ getPrefetchHints(key, limit = 5) {
303
+ const coAccess = this.prefetchGraph.get(key);
304
+ if (!coAccess)
305
+ return [];
306
+ const totalAccesses = Array.from(coAccess.values()).reduce((s, v) => s + v, 0);
307
+ return Array.from(coAccess.entries())
308
+ .map(([k, count]) => ({
309
+ key: k,
310
+ probability: totalAccesses > 0 ? count / totalAccesses : 0,
311
+ basedOn: [key],
312
+ }))
313
+ .sort((a, b) => b.probability - a.probability)
314
+ .slice(0, limit);
315
+ }
316
+ // ── Maintenance ─────────────────────────────────────────────────────
317
+ cleanup() {
318
+ let cleaned = 0;
319
+ for (const [key, entry] of this.hot) {
320
+ if (this.isExpired(entry)) {
321
+ this.hot.delete(key);
322
+ cleaned++;
323
+ }
324
+ }
325
+ for (const [key, entry] of this.warm) {
326
+ if (this.isExpired(entry)) {
327
+ this.warm.delete(key);
328
+ cleaned++;
329
+ }
330
+ }
331
+ for (const [key, entry] of this.cold) {
332
+ if (this.isExpired(entry)) {
333
+ this.cold.delete(key);
334
+ cleaned++;
335
+ }
336
+ }
337
+ return cleaned;
338
+ }
339
+ demoteStale() {
340
+ const now = Date.now();
341
+ let demoted = 0;
342
+ // Hot → Warm: entries not accessed recently
343
+ for (const [key, entry] of this.hot) {
344
+ if (now - entry.lastAccess > this.config.coldDemotionThreshold * 2) {
345
+ this.hot.delete(key);
346
+ entry.tier = 'warm';
347
+ this.warm.set(key, entry);
348
+ demoted++;
349
+ this.demotions++;
350
+ }
351
+ }
352
+ // Warm → Cold: entries not accessed recently
353
+ for (const [key, entry] of this.warm) {
354
+ if (now - entry.lastAccess > this.config.coldDemotionThreshold * 5) {
355
+ this.warm.delete(key);
356
+ entry.tier = 'cold';
357
+ entry.compressed = true;
358
+ this.cold.set(key, entry);
359
+ demoted++;
360
+ this.demotions++;
361
+ }
362
+ }
363
+ this.enforceColdLimit();
364
+ return demoted;
365
+ }
366
+ // ── Stats ────────────────────────────────────────────────────────────
367
+ recordAccessTime(startTime) {
368
+ this.totalAccessTime += Date.now() - startTime;
369
+ this.accessTimeCount++;
370
+ }
371
+ stats() {
372
+ const totalSize = this.estimateMemory();
373
+ return {
374
+ hotEntries: this.hot.size,
375
+ warmEntries: this.warm.size,
376
+ coldEntries: this.cold.size,
377
+ totalEntries: this.hot.size + this.warm.size + this.cold.size,
378
+ hits: this.hits,
379
+ misses: this.misses,
380
+ hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,
381
+ evictions: this.evictions,
382
+ promotions: this.promotions,
383
+ demotions: this.demotions,
384
+ memoryUsageMB: Number((totalSize / (1024 * 1024)).toFixed(2)),
385
+ prefetchHits: this.prefetchHits,
386
+ avgAccessTime: this.accessTimeCount > 0 ? this.totalAccessTime / this.accessTimeCount : 0,
387
+ };
388
+ }
389
+ estimateMemory() {
390
+ let total = 0;
391
+ for (const entry of this.hot.values())
392
+ total += entry.size;
393
+ for (const entry of this.warm.values())
394
+ total += entry.size;
395
+ for (const entry of this.cold.values())
396
+ total += entry.compressed ? entry.size * 0.3 : entry.size;
397
+ return total;
398
+ }
399
+ // ── Utility ──────────────────────────────────────────────────────────
400
+ keys() {
401
+ return [
402
+ ...Array.from(this.hot.keys()),
403
+ ...Array.from(this.warm.keys()),
404
+ ...Array.from(this.cold.keys()),
405
+ ];
406
+ }
407
+ size() {
408
+ return this.hot.size + this.warm.size + this.cold.size;
409
+ }
410
+ getConfig() {
411
+ return { ...this.config };
412
+ }
413
+ updateConfig(updates) {
414
+ this.config = { ...this.config, ...updates };
415
+ }
416
+ }
417
+ //# sourceMappingURL=smart-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-cache.js","sourceRoot":"","sources":["../../src/brain/smart-cache.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,0CAA0C;AAqD1C,8EAA8E;AAE9E,MAAM,cAAc,GAAgB;IAClC,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,MAAO,EAAE,YAAY;IACjC,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,KAAM,EAAE,0BAA0B;IACzD,oBAAoB,EAAE,KAAM,EAAE,QAAQ;IACtC,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,8EAA8E;AAE9E,MAAM,OAAO,UAAU;IAkBrB,YAAY,MAA6B;QAjBjC,QAAG,GAA4B,IAAI,GAAG,EAAE,CAAC;QACzC,SAAI,GAA4B,IAAI,GAAG,EAAE,CAAC;QAC1C,SAAI,GAA4B,IAAI,GAAG,EAAE,CAAC;QAE1C,cAAS,GAAyC,EAAE,CAAC;QACrD,kBAAa,GAAqC,IAAI,GAAG,EAAE,CAAC,CAAC,oCAAoC;QAEzG,QAAQ;QACA,SAAI,GAAG,CAAC,CAAC;QACT,WAAM,GAAG,CAAC,CAAC;QACX,cAAS,GAAG,CAAC,CAAC;QACd,eAAU,GAAG,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC;QACd,iBAAY,GAAG,CAAC,CAAC;QACjB,oBAAe,GAAG,CAAC,CAAC;QACpB,oBAAe,GAAG,CAAC,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED,uEAAuE;IAEvE,GAAG,CAAc,GAAW;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,iCAAiC;QACjC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,KAAU,CAAC;QAC1B,CAAC;QAED,kBAAkB;QAClB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAEtB,oCAAoC;YACpC,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,KAAU,CAAC;QAC1B,CAAC;QAED,kBAAkB;QAClB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAEtB,kBAAkB;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;YACpB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,KAAU,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,GAAG,CAAc,GAAW,EAAE,KAAQ,EAAE,OAAkE;QACxG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzF,MAAM,KAAK,GAAkB;YAC3B,GAAG;YACH,KAAK;YACL,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,WAAW,EAAE,CAAC;YACd,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;YAC3C,IAAI;YACJ,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;SAC1B,CAAC;QAEF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAmB,CAAC,CAAC;YACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;YAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;YAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,uEAAuE;IAEvE,OAAO,CAAc,IAAc;QACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAc,OAAuD;QAC1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,uEAAuE;IAEvE,QAAQ,CAAc,GAAW;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;QAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAU,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAU,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAU,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,KAAK,EAAE,CAAC;YAAC,CAAC;QAClE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,KAAK,EAAE,CAAC;YAAC,CAAC;QACnE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,KAAK,EAAE,CAAC;YAAC,CAAC;QACnE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IAEvE,KAAK,CAAC,YAAY,CAAI,GAAW,EAAE,OAA6B,EAAE,OAA2C;QAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IAE/D,OAAO,CAAC,GAAW,EAAE,KAAiB;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO;gBAAE,MAAM;YAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO;gBAAE,MAAM;YAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;YACpB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO;gBAAE,MAAM;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,IAA6B;QACzD,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,OAAO,GAAG,QAAQ,CAAC;QAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,+DAA+D;YAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;YACpE,IAAI,aAAa,GAAG,OAAO,EAAE,CAAC;gBAC5B,OAAO,GAAG,aAAa,CAAC;gBACxB,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,KAAiB;QACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC;IAClD,CAAC;IAED,uEAAuE;IAE/D,WAAW,CAAC,GAAW;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAExC,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,uEAAuE;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAEhG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC9C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,SAAiB;QACvC,mFAAmF;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,uDAAuD;gBACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;oBACxB,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,QAAgB,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/E,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,GAAG,EAAE,CAAC;YACN,WAAW,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC,GAAG,CAAC;SACf,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,uEAAuE;IAEvE,OAAO;QACL,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QAClE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QAClE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,4CAA4C;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;gBACpB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wEAAwE;IAEhE,gBAAgB,CAAC,SAAiB;QACxC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,KAAK;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAExC,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;YACzB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAC3B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAC3B,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;YAC7D,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7D,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAC1F,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wEAAwE;IAExE,IAAI;QACF,OAAO;YACL,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,OAA6B;QACxC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,89 @@
1
+ export interface TemporalEvent {
2
+ id: string;
3
+ timestamp: number;
4
+ type: 'commit' | 'file-change' | 'bug-fix' | 'feature' | 'refactor' | 'incident' | 'deploy' | 'review';
5
+ file?: string;
6
+ description: string;
7
+ impact: number;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ export interface VelocityMetrics {
11
+ daily: number;
12
+ weekly: number;
13
+ monthly: number;
14
+ trend: 'accelerating' | 'stable' | 'decelerating' | 'stalled';
15
+ trendConfidence: number;
16
+ peakHours: number[];
17
+ peakDays: number[];
18
+ avgCycleTime: number;
19
+ }
20
+ export interface TemporalAnomaly {
21
+ timestamp: number;
22
+ type: 'burst' | 'drought' | 'pattern-break' | 'unusual-hour' | 'regression';
23
+ severity: 'info' | 'warning' | 'critical';
24
+ description: string;
25
+ evidence: string[];
26
+ recommendation: string;
27
+ }
28
+ export interface FileHeatmap {
29
+ file: string;
30
+ changeFrequency: number;
31
+ lastChanged: number;
32
+ avgTimeBetweenChanges: number;
33
+ hotness: number;
34
+ churnRisk: number;
35
+ stabilityScore: number;
36
+ changeTimes: number[];
37
+ }
38
+ export interface BugPrediction {
39
+ file: string;
40
+ probability: number;
41
+ factors: string[];
42
+ lastBugFix: number | null;
43
+ changesSinceLastFix: number;
44
+ complexity: number;
45
+ }
46
+ export interface TemporalStats {
47
+ totalEvents: number;
48
+ timeSpan: {
49
+ start: number;
50
+ end: number;
51
+ durationDays: number;
52
+ };
53
+ velocity: VelocityMetrics;
54
+ anomalyCount: number;
55
+ hotFiles: number;
56
+ bugPredictions: number;
57
+ avgEventsPerDay: number;
58
+ }
59
+ export declare class TemporalIntelligence {
60
+ private events;
61
+ private fileHistory;
62
+ private anomalies;
63
+ private fileHeatmaps;
64
+ private bugPredictions;
65
+ private projectDir;
66
+ constructor(projectDir: string);
67
+ recordEvent(event: Omit<TemporalEvent, 'id'>): TemporalEvent;
68
+ recordCommit(files: string[], message: string, timestamp?: number): void;
69
+ recordFileChange(file: string, changeType: 'add' | 'modify' | 'delete'): void;
70
+ getVelocity(): VelocityMetrics;
71
+ private updateFileHeatmap;
72
+ getHotFiles(n?: number): FileHeatmap[];
73
+ getStableFiles(n?: number): FileHeatmap[];
74
+ getChurnRisks(threshold?: number): FileHeatmap[];
75
+ predictBugs(topN?: number): BugPrediction[];
76
+ private detectAnomalies;
77
+ detectDrought(): TemporalAnomaly | null;
78
+ getAnomalies(since?: number): TemporalAnomaly[];
79
+ getTimeline(file?: string, limit?: number): TemporalEvent[];
80
+ getDayDistribution(): Array<{
81
+ date: string;
82
+ count: number;
83
+ types: Record<string, number>;
84
+ }>;
85
+ private classifyCommit;
86
+ private estimateImpact;
87
+ stats(): TemporalStats;
88
+ }
89
+ //# sourceMappingURL=temporal-intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-intelligence.d.ts","sourceRoot":"","sources":["../../src/brain/temporal-intelligence.ts"],"names":[],"mappings":"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"}