wyrm-mcp 3.2.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/LICENSE +667 -0
- package/README.md +384 -0
- package/dist/analytics.d.ts +100 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +368 -0
- package/dist/analytics.js.map +1 -0
- package/dist/auto-orchestrator.d.ts +118 -0
- package/dist/auto-orchestrator.d.ts.map +1 -0
- package/dist/auto-orchestrator.js +325 -0
- package/dist/auto-orchestrator.js.map +1 -0
- package/dist/autoconfig.d.ts +89 -0
- package/dist/autoconfig.d.ts.map +1 -0
- package/dist/autoconfig.js +576 -0
- package/dist/autoconfig.js.map +1 -0
- package/dist/cli.d.ts +148 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +281 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud-backup.d.ts +100 -0
- package/dist/cloud-backup.d.ts.map +1 -0
- package/dist/cloud-backup.js +545 -0
- package/dist/cloud-backup.js.map +1 -0
- package/dist/crypto.d.ts +72 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +164 -0
- package/dist/crypto.js.map +1 -0
- package/dist/database.d.ts +218 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +1058 -0
- package/dist/database.js.map +1 -0
- package/dist/http-auth.d.ts +68 -0
- package/dist/http-auth.d.ts.map +1 -0
- package/dist/http-auth.js +296 -0
- package/dist/http-auth.js.map +1 -0
- package/dist/http-fast.d.ts +13 -0
- package/dist/http-fast.d.ts.map +1 -0
- package/dist/http-fast.js +325 -0
- package/dist/http-fast.js.map +1 -0
- package/dist/http-server.d.ts +12 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +383 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1695 -0
- package/dist/index.js.map +1 -0
- package/dist/license.d.ts +177 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +405 -0
- package/dist/license.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +195 -0
- package/dist/logger.js.map +1 -0
- package/dist/performance.d.ts +114 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +228 -0
- package/dist/performance.js.map +1 -0
- package/dist/resilience.d.ts +146 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +563 -0
- package/dist/resilience.js.map +1 -0
- package/dist/security.d.ts +68 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +215 -0
- package/dist/security.js.map +1 -0
- package/dist/setup.d.ts +21 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +261 -0
- package/dist/setup.js.map +1 -0
- package/dist/summarizer.d.ts +30 -0
- package/dist/summarizer.d.ts.map +1 -0
- package/dist/summarizer.js +139 -0
- package/dist/summarizer.js.map +1 -0
- package/dist/sync.d.ts +39 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +356 -0
- package/dist/sync.js.map +1 -0
- package/dist/types.d.ts +267 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +30 -0
- package/dist/types.js.map +1 -0
- package/dist/vectors.d.ts +103 -0
- package/dist/vectors.d.ts.map +1 -0
- package/dist/vectors.js +311 -0
- package/dist/vectors.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAmB5B,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,UAAU,EAAE,OAAO;IAC1B,IAAI,EAAE,UAAU,EAAG,QAAQ;IAC3B,IAAI,EAAE,UAAU,EAAG,SAAS;IAC5B,KAAK,EAAE,UAAU,EAAE,MAAM;CAC1B,CAAC;AAEF,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,SAAS,CAAC;AAEtB;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAe;IACrB,aAAa,CAAU;IACvB,MAAM,CAAS;IAEvB,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM;YAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;YAChC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,KAAK;YAC3B,IAAI,EAAE,MAAM,EAAE,IAAI;SACnB,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,EAAU;QACzB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,aAAa,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAe;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;QAE7E,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtF,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;QAC3D,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,OAAiC;QAC7E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,MAAM,KAAK,GAAa;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO;YACP,OAAO;YACP,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YAC/D,MAAM,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzF,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,OAAiC;QACrD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAiC;QACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAI,CAAI,KAAa,EAAE,EAAW;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAI,KAAa,EAAE,EAAoB;QACpD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAgC;QACpC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,GAA6B,EAAE,EAAE;YAC9E,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,0BAA0B;AAC1B,IAAI,aAAa,GAAsB,IAAI,CAAC;AAE5C,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,UAAU,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAA0B,IAAI,MAAM;YACvD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,OAAO;YACjD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM;YAC1C,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,GAAW,EAAE,GAA6B,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAClF,IAAI,EAAE,CAAC,GAAW,EAAE,GAA6B,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IAChF,IAAI,EAAE,CAAC,GAAW,EAAE,GAA6B,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IAChF,KAAK,EAAE,CAAC,GAAW,EAAE,GAA6B,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;CACnF,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🐉 Wyrm Performance Layer v2
|
|
3
|
+
* LRU caching, prepared statement pooling, response optimization
|
|
4
|
+
*/
|
|
5
|
+
declare class MemCache {
|
|
6
|
+
private cache;
|
|
7
|
+
private defaultTTL;
|
|
8
|
+
private maxSize;
|
|
9
|
+
private hits;
|
|
10
|
+
private misses;
|
|
11
|
+
constructor(ttlSeconds?: number, maxEntries?: number);
|
|
12
|
+
get<T>(key: string): T | undefined;
|
|
13
|
+
set(key: string, data: unknown, ttlMs?: number): void;
|
|
14
|
+
invalidate(pattern?: string): void;
|
|
15
|
+
/** Evict the least-recently-used entry */
|
|
16
|
+
private evictLRU;
|
|
17
|
+
/** Remove all expired entries */
|
|
18
|
+
private evictExpired;
|
|
19
|
+
stats(): {
|
|
20
|
+
size: number;
|
|
21
|
+
maxSize: number;
|
|
22
|
+
keys: string[];
|
|
23
|
+
hits: number;
|
|
24
|
+
misses: number;
|
|
25
|
+
hitRate: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export declare const cache: MemCache;
|
|
29
|
+
export declare function compactProject(p: {
|
|
30
|
+
id: number;
|
|
31
|
+
name: string;
|
|
32
|
+
path: string;
|
|
33
|
+
stack?: string | null;
|
|
34
|
+
}): {
|
|
35
|
+
i: number;
|
|
36
|
+
n: string;
|
|
37
|
+
p: string;
|
|
38
|
+
s?: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function compactQuest(q: {
|
|
41
|
+
id: number;
|
|
42
|
+
title: string;
|
|
43
|
+
priority: string;
|
|
44
|
+
status: string;
|
|
45
|
+
}): {
|
|
46
|
+
i: number;
|
|
47
|
+
t: string;
|
|
48
|
+
p: string;
|
|
49
|
+
s: string;
|
|
50
|
+
};
|
|
51
|
+
export declare function compactSession(s: {
|
|
52
|
+
id: number;
|
|
53
|
+
date: string;
|
|
54
|
+
summary?: string;
|
|
55
|
+
notes?: string;
|
|
56
|
+
}): {
|
|
57
|
+
i: number;
|
|
58
|
+
d: string;
|
|
59
|
+
s?: string;
|
|
60
|
+
};
|
|
61
|
+
export interface BatchRequest {
|
|
62
|
+
op: string;
|
|
63
|
+
args?: Record<string, unknown>;
|
|
64
|
+
}
|
|
65
|
+
export interface BatchResponse {
|
|
66
|
+
results: Array<{
|
|
67
|
+
ok: boolean;
|
|
68
|
+
data?: unknown;
|
|
69
|
+
error?: string;
|
|
70
|
+
}>;
|
|
71
|
+
time: number;
|
|
72
|
+
}
|
|
73
|
+
export declare function estimateTokens(obj: unknown): number;
|
|
74
|
+
export declare function estimateTokensFast(length: number): number;
|
|
75
|
+
export declare function truncateToTokens(text: string, maxTokens: number): string;
|
|
76
|
+
export declare function guardSize<T>(data: T, maxTokens?: number): T | {
|
|
77
|
+
truncated: true;
|
|
78
|
+
preview: string;
|
|
79
|
+
tokens: number;
|
|
80
|
+
};
|
|
81
|
+
export declare function diffObjects(prev: Record<string, unknown>, curr: Record<string, unknown>): Record<string, unknown>;
|
|
82
|
+
export declare class OpQueue {
|
|
83
|
+
private queue;
|
|
84
|
+
private running;
|
|
85
|
+
add(priority: number, op: () => Promise<unknown>): void;
|
|
86
|
+
private process;
|
|
87
|
+
}
|
|
88
|
+
export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, ms: number): (...args: Parameters<T>) => void;
|
|
89
|
+
export declare function timed<T>(fn: () => T): {
|
|
90
|
+
result: T;
|
|
91
|
+
ms: number;
|
|
92
|
+
};
|
|
93
|
+
export declare function timedAsync<T>(fn: () => Promise<T>): Promise<{
|
|
94
|
+
result: T;
|
|
95
|
+
ms: number;
|
|
96
|
+
}>;
|
|
97
|
+
export declare class WriteCoalescer {
|
|
98
|
+
private pending;
|
|
99
|
+
private timer;
|
|
100
|
+
private readonly flushMs;
|
|
101
|
+
private readonly maxBatch;
|
|
102
|
+
constructor(flushMs?: number, maxBatch?: number);
|
|
103
|
+
/** Queue a write operation. It will be batched with others if they arrive within flushMs. */
|
|
104
|
+
enqueue(op: () => void): void;
|
|
105
|
+
/** Execute all pending writes in a single transaction */
|
|
106
|
+
flush(): void;
|
|
107
|
+
get size(): number;
|
|
108
|
+
}
|
|
109
|
+
export declare function compressArray<T extends Record<string, unknown>>(items: T[], maxItems?: number): {
|
|
110
|
+
columns: string[];
|
|
111
|
+
rows: unknown[][];
|
|
112
|
+
} | T[];
|
|
113
|
+
export {};
|
|
114
|
+
//# sourceMappingURL=performance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../src/performance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🐉 Wyrm Performance Layer v2
|
|
3
|
+
* LRU caching, prepared statement pooling, response optimization
|
|
4
|
+
*/
|
|
5
|
+
// LRU cache with TTL + max size eviction
|
|
6
|
+
class MemCache {
|
|
7
|
+
cache = new Map();
|
|
8
|
+
defaultTTL;
|
|
9
|
+
maxSize;
|
|
10
|
+
hits = 0;
|
|
11
|
+
misses = 0;
|
|
12
|
+
constructor(ttlSeconds = 60, maxEntries = 256) {
|
|
13
|
+
this.defaultTTL = ttlSeconds * 1000;
|
|
14
|
+
this.maxSize = maxEntries;
|
|
15
|
+
// Periodic cleanup of expired entries (every 30s)
|
|
16
|
+
if (typeof setInterval !== 'undefined') {
|
|
17
|
+
setInterval(() => this.evictExpired(), 30_000).unref?.();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
get(key) {
|
|
21
|
+
const entry = this.cache.get(key);
|
|
22
|
+
if (!entry) {
|
|
23
|
+
this.misses++;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (Date.now() > entry.expires) {
|
|
27
|
+
this.cache.delete(key);
|
|
28
|
+
this.misses++;
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
this.hits++;
|
|
32
|
+
entry.lastAccess = Date.now();
|
|
33
|
+
return entry.data;
|
|
34
|
+
}
|
|
35
|
+
set(key, data, ttlMs) {
|
|
36
|
+
// LRU eviction when at capacity
|
|
37
|
+
if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
|
|
38
|
+
this.evictLRU();
|
|
39
|
+
}
|
|
40
|
+
this.cache.set(key, {
|
|
41
|
+
data,
|
|
42
|
+
expires: Date.now() + (ttlMs ?? this.defaultTTL),
|
|
43
|
+
lastAccess: Date.now(),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
invalidate(pattern) {
|
|
47
|
+
if (!pattern) {
|
|
48
|
+
this.cache.clear();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
for (const key of this.cache.keys()) {
|
|
52
|
+
if (key.includes(pattern))
|
|
53
|
+
this.cache.delete(key);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Evict the least-recently-used entry */
|
|
57
|
+
evictLRU() {
|
|
58
|
+
let oldestKey;
|
|
59
|
+
let oldestAccess = Infinity;
|
|
60
|
+
for (const [key, entry] of this.cache) {
|
|
61
|
+
if (entry.lastAccess < oldestAccess) {
|
|
62
|
+
oldestAccess = entry.lastAccess;
|
|
63
|
+
oldestKey = key;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (oldestKey)
|
|
67
|
+
this.cache.delete(oldestKey);
|
|
68
|
+
}
|
|
69
|
+
/** Remove all expired entries */
|
|
70
|
+
evictExpired() {
|
|
71
|
+
const now = Date.now();
|
|
72
|
+
for (const [key, entry] of this.cache) {
|
|
73
|
+
if (now > entry.expires)
|
|
74
|
+
this.cache.delete(key);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
stats() {
|
|
78
|
+
const total = this.hits + this.misses;
|
|
79
|
+
return {
|
|
80
|
+
size: this.cache.size,
|
|
81
|
+
maxSize: this.maxSize,
|
|
82
|
+
keys: [...this.cache.keys()],
|
|
83
|
+
hits: this.hits,
|
|
84
|
+
misses: this.misses,
|
|
85
|
+
hitRate: total > 0 ? `${((this.hits / total) * 100).toFixed(1)}%` : '0%',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Singleton cache — 60s TTL, 256 max entries with LRU eviction
|
|
90
|
+
export const cache = new MemCache(60, 256);
|
|
91
|
+
// Compact response formats - reduce token usage
|
|
92
|
+
export function compactProject(p) {
|
|
93
|
+
return { i: p.id, n: p.name, p: p.path, ...(p.stack && { s: p.stack }) };
|
|
94
|
+
}
|
|
95
|
+
export function compactQuest(q) {
|
|
96
|
+
return { i: q.id, t: q.title, p: q.priority[0], s: q.status[0] };
|
|
97
|
+
}
|
|
98
|
+
export function compactSession(s) {
|
|
99
|
+
const summary = s.summary || s.notes?.slice(0, 100);
|
|
100
|
+
return { i: s.id, d: s.date.slice(0, 10), ...(summary && { s: summary }) };
|
|
101
|
+
}
|
|
102
|
+
// Token estimation - helps AI manage context
|
|
103
|
+
export function estimateTokens(obj) {
|
|
104
|
+
const str = typeof obj === 'string' ? obj : JSON.stringify(obj);
|
|
105
|
+
// ~4 chars per token for English text, tighter for JSON
|
|
106
|
+
return Math.ceil(str.length / 4);
|
|
107
|
+
}
|
|
108
|
+
// Fast token count for pre-sized buffers
|
|
109
|
+
export function estimateTokensFast(length) {
|
|
110
|
+
return Math.ceil(length / 4);
|
|
111
|
+
}
|
|
112
|
+
// Truncate to token limit
|
|
113
|
+
export function truncateToTokens(text, maxTokens) {
|
|
114
|
+
const maxChars = maxTokens * 4;
|
|
115
|
+
if (text.length <= maxChars)
|
|
116
|
+
return text;
|
|
117
|
+
return text.slice(0, maxChars - 3) + '...';
|
|
118
|
+
}
|
|
119
|
+
// Response size guard
|
|
120
|
+
export function guardSize(data, maxTokens = 4000) {
|
|
121
|
+
const tokens = estimateTokens(data);
|
|
122
|
+
if (tokens <= maxTokens)
|
|
123
|
+
return data;
|
|
124
|
+
const preview = truncateToTokens(JSON.stringify(data), 500);
|
|
125
|
+
return { truncated: true, preview, tokens };
|
|
126
|
+
}
|
|
127
|
+
// Diff helper - only return what changed
|
|
128
|
+
export function diffObjects(prev, curr) {
|
|
129
|
+
const diff = {};
|
|
130
|
+
for (const [k, v] of Object.entries(curr)) {
|
|
131
|
+
if (JSON.stringify(prev[k]) !== JSON.stringify(v)) {
|
|
132
|
+
diff[k] = v;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return diff;
|
|
136
|
+
}
|
|
137
|
+
// Priority queue for operations
|
|
138
|
+
export class OpQueue {
|
|
139
|
+
queue = [];
|
|
140
|
+
running = false;
|
|
141
|
+
add(priority, op) {
|
|
142
|
+
this.queue.push({ priority, op });
|
|
143
|
+
this.queue.sort((a, b) => b.priority - a.priority);
|
|
144
|
+
this.process();
|
|
145
|
+
}
|
|
146
|
+
async process() {
|
|
147
|
+
if (this.running)
|
|
148
|
+
return;
|
|
149
|
+
this.running = true;
|
|
150
|
+
while (this.queue.length > 0) {
|
|
151
|
+
const item = this.queue.shift();
|
|
152
|
+
if (item)
|
|
153
|
+
await item.op().catch(() => { });
|
|
154
|
+
}
|
|
155
|
+
this.running = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Debounce writes
|
|
159
|
+
export function debounce(fn, ms) {
|
|
160
|
+
let timer;
|
|
161
|
+
return (...args) => {
|
|
162
|
+
clearTimeout(timer);
|
|
163
|
+
timer = setTimeout(() => fn(...args), ms);
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
// Measure execution time
|
|
167
|
+
export function timed(fn) {
|
|
168
|
+
const start = performance.now();
|
|
169
|
+
const result = fn();
|
|
170
|
+
return { result, ms: Math.round(performance.now() - start) };
|
|
171
|
+
}
|
|
172
|
+
export async function timedAsync(fn) {
|
|
173
|
+
const start = performance.now();
|
|
174
|
+
const result = await fn();
|
|
175
|
+
return { result, ms: Math.round(performance.now() - start) };
|
|
176
|
+
}
|
|
177
|
+
// Write coalescer - batches rapid sequential writes into single transactions
|
|
178
|
+
export class WriteCoalescer {
|
|
179
|
+
pending = [];
|
|
180
|
+
timer = null;
|
|
181
|
+
flushMs;
|
|
182
|
+
maxBatch;
|
|
183
|
+
constructor(flushMs = 50, maxBatch = 100) {
|
|
184
|
+
this.flushMs = flushMs;
|
|
185
|
+
this.maxBatch = maxBatch;
|
|
186
|
+
}
|
|
187
|
+
/** Queue a write operation. It will be batched with others if they arrive within flushMs. */
|
|
188
|
+
enqueue(op) {
|
|
189
|
+
this.pending.push(op);
|
|
190
|
+
if (this.pending.length >= this.maxBatch) {
|
|
191
|
+
this.flush();
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (!this.timer) {
|
|
195
|
+
this.timer = setTimeout(() => this.flush(), this.flushMs);
|
|
196
|
+
this.timer.unref?.();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Execute all pending writes in a single transaction */
|
|
200
|
+
flush() {
|
|
201
|
+
if (this.timer) {
|
|
202
|
+
clearTimeout(this.timer);
|
|
203
|
+
this.timer = null;
|
|
204
|
+
}
|
|
205
|
+
const ops = this.pending.splice(0);
|
|
206
|
+
if (ops.length === 0)
|
|
207
|
+
return;
|
|
208
|
+
for (const op of ops) {
|
|
209
|
+
try {
|
|
210
|
+
op();
|
|
211
|
+
}
|
|
212
|
+
catch { /* individual op failure shouldn't stop batch */ }
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
get size() {
|
|
216
|
+
return this.pending.length;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Response compressor - deduplicates repeated field names in JSON arrays
|
|
220
|
+
export function compressArray(items, maxItems = 50) {
|
|
221
|
+
if (items.length <= 3)
|
|
222
|
+
return items;
|
|
223
|
+
const sliced = items.slice(0, maxItems);
|
|
224
|
+
const columns = Object.keys(sliced[0] || {});
|
|
225
|
+
const rows = sliced.map(item => columns.map(c => item[c]));
|
|
226
|
+
return { columns, rows };
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../src/performance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Resilience Module - Professional-grade fault tolerance
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
* @module resilience
|
|
7
|
+
* @version 3.0.0
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Transaction safety with automatic rollback
|
|
11
|
+
* - Exponential backoff retry logic
|
|
12
|
+
* - Circuit breaker pattern
|
|
13
|
+
* - Operation checkpointing
|
|
14
|
+
* - Crash recovery via WAL
|
|
15
|
+
* - Graceful degradation
|
|
16
|
+
*/
|
|
17
|
+
import { WyrmLogger } from './logger.js';
|
|
18
|
+
export interface RetryConfig {
|
|
19
|
+
maxAttempts: number;
|
|
20
|
+
baseDelayMs: number;
|
|
21
|
+
maxDelayMs: number;
|
|
22
|
+
backoffMultiplier: number;
|
|
23
|
+
retryableErrors?: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface CircuitBreakerConfig {
|
|
26
|
+
failureThreshold: number;
|
|
27
|
+
successThreshold: number;
|
|
28
|
+
timeout: number;
|
|
29
|
+
}
|
|
30
|
+
export interface CheckpointData {
|
|
31
|
+
id: string;
|
|
32
|
+
operation: string;
|
|
33
|
+
stage: string;
|
|
34
|
+
data: Record<string, unknown>;
|
|
35
|
+
timestamp: string;
|
|
36
|
+
completed: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface OperationResult<T> {
|
|
39
|
+
success: boolean;
|
|
40
|
+
data?: T;
|
|
41
|
+
error?: Error;
|
|
42
|
+
attempts: number;
|
|
43
|
+
recoverable: boolean;
|
|
44
|
+
}
|
|
45
|
+
type CircuitState = 'closed' | 'open' | 'half-open';
|
|
46
|
+
export declare class ResilienceManager {
|
|
47
|
+
private logger;
|
|
48
|
+
private checkpointDir;
|
|
49
|
+
private retryConfig;
|
|
50
|
+
private circuitConfig;
|
|
51
|
+
private circuitState;
|
|
52
|
+
private failureCount;
|
|
53
|
+
private successCount;
|
|
54
|
+
private lastFailureTime;
|
|
55
|
+
private activeOperations;
|
|
56
|
+
constructor(logger?: WyrmLogger, retryConfig?: Partial<RetryConfig>, circuitConfig?: Partial<CircuitBreakerConfig>);
|
|
57
|
+
/**
|
|
58
|
+
* Execute an operation with exponential backoff retry
|
|
59
|
+
*/
|
|
60
|
+
withRetry<T>(operation: () => Promise<T>, operationName: string, config?: Partial<RetryConfig>): Promise<OperationResult<T>>;
|
|
61
|
+
/**
|
|
62
|
+
* Synchronous retry for database operations
|
|
63
|
+
*/
|
|
64
|
+
withRetrySync<T>(operation: () => T, operationName: string, config?: Partial<RetryConfig>): OperationResult<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Check if circuit allows operations
|
|
67
|
+
*/
|
|
68
|
+
private checkCircuit;
|
|
69
|
+
/**
|
|
70
|
+
* Record a successful operation
|
|
71
|
+
*/
|
|
72
|
+
private recordSuccess;
|
|
73
|
+
/**
|
|
74
|
+
* Record a failed operation
|
|
75
|
+
*/
|
|
76
|
+
private recordFailure;
|
|
77
|
+
/**
|
|
78
|
+
* Get circuit breaker status
|
|
79
|
+
*/
|
|
80
|
+
getCircuitStatus(): {
|
|
81
|
+
state: CircuitState;
|
|
82
|
+
failures: number;
|
|
83
|
+
lastFailure: number;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Manually reset the circuit breaker
|
|
87
|
+
*/
|
|
88
|
+
resetCircuit(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Create a checkpoint for an operation
|
|
91
|
+
*/
|
|
92
|
+
createCheckpoint(operationId: string, operation: string, stage: string, data: Record<string, unknown>): void;
|
|
93
|
+
/**
|
|
94
|
+
* Update checkpoint stage
|
|
95
|
+
*/
|
|
96
|
+
updateCheckpoint(operationId: string, stage: string, data?: Record<string, unknown>): void;
|
|
97
|
+
/**
|
|
98
|
+
* Complete a checkpoint (mark as done and remove)
|
|
99
|
+
*/
|
|
100
|
+
completeCheckpoint(operationId: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* Get a checkpoint by ID
|
|
103
|
+
*/
|
|
104
|
+
getCheckpoint(operationId: string): CheckpointData | null;
|
|
105
|
+
/**
|
|
106
|
+
* Recover incomplete operations on startup
|
|
107
|
+
*/
|
|
108
|
+
private recoverIncompleteOperations;
|
|
109
|
+
/**
|
|
110
|
+
* Get all incomplete operations for recovery
|
|
111
|
+
*/
|
|
112
|
+
getIncompleteOperations(): CheckpointData[];
|
|
113
|
+
/**
|
|
114
|
+
* Execute a database transaction with automatic rollback on failure
|
|
115
|
+
*/
|
|
116
|
+
executeTransaction<T>(db: {
|
|
117
|
+
prepare: (sql: string) => {
|
|
118
|
+
run: () => void;
|
|
119
|
+
};
|
|
120
|
+
}, operations: () => T): OperationResult<T>;
|
|
121
|
+
/**
|
|
122
|
+
* Write file atomically (write to temp, then rename)
|
|
123
|
+
*/
|
|
124
|
+
atomicWriteFile(filePath: string, content: string): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Read file with fallback to backup
|
|
127
|
+
*/
|
|
128
|
+
safeReadFile(filePath: string, backupPath?: string): string | null;
|
|
129
|
+
private sleep;
|
|
130
|
+
private sleepSync;
|
|
131
|
+
/**
|
|
132
|
+
* Generate a unique operation ID
|
|
133
|
+
*/
|
|
134
|
+
generateOperationId(prefix?: string): string;
|
|
135
|
+
}
|
|
136
|
+
export declare function getResilienceManager(): ResilienceManager;
|
|
137
|
+
/**
|
|
138
|
+
* Decorator to add retry logic to a method
|
|
139
|
+
*/
|
|
140
|
+
export declare function withRetry(config?: Partial<RetryConfig>): (_target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
141
|
+
/**
|
|
142
|
+
* Decorator to add checkpointing to a method
|
|
143
|
+
*/
|
|
144
|
+
export declare function withCheckpoint(operationName: string): (_target: unknown, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
145
|
+
export {};
|
|
146
|
+
//# sourceMappingURL=resilience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"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"}
|