@helix-agent/core 0.3.0 → 0.5.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/engine/abi.d.ts +82 -0
- package/dist/engine/abi.d.ts.map +1 -0
- package/dist/engine/abi.js +54 -0
- package/dist/engine/abi.js.map +1 -0
- package/dist/engine/dex-presets.d.ts +4 -0
- package/dist/engine/dex-presets.d.ts.map +1 -0
- package/dist/engine/dex-presets.js +43 -0
- package/dist/engine/dex-presets.js.map +1 -0
- package/dist/engine/gene-map.d.ts +26 -2
- package/dist/engine/gene-map.d.ts.map +1 -1
- package/dist/engine/gene-map.js +139 -72
- package/dist/engine/gene-map.js.map +1 -1
- package/dist/engine/lifecycle.d.ts +3 -0
- package/dist/engine/lifecycle.d.ts.map +1 -0
- package/dist/engine/lifecycle.js +20 -0
- package/dist/engine/lifecycle.js.map +1 -0
- package/dist/engine/pcec.d.ts +3 -0
- package/dist/engine/pcec.d.ts.map +1 -1
- package/dist/engine/pcec.js +50 -2
- package/dist/engine/pcec.js.map +1 -1
- package/dist/engine/provider.d.ts +1 -0
- package/dist/engine/provider.d.ts.map +1 -1
- package/dist/engine/provider.js +83 -4
- package/dist/engine/provider.js.map +1 -1
- package/dist/engine/root-causes.d.ts +8 -0
- package/dist/engine/root-causes.d.ts.map +1 -0
- package/dist/engine/root-causes.js +19 -0
- package/dist/engine/root-causes.js.map +1 -0
- package/dist/engine/seed-genes.d.ts +3 -0
- package/dist/engine/seed-genes.d.ts.map +1 -0
- package/dist/engine/seed-genes.js +15 -0
- package/dist/engine/seed-genes.js.map +1 -0
- package/dist/engine/types.d.ts +15 -0
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/engine/types.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export declare const ERC20_ABI: readonly [{
|
|
2
|
+
readonly name: "approve";
|
|
3
|
+
readonly type: "function";
|
|
4
|
+
readonly stateMutability: "nonpayable";
|
|
5
|
+
readonly inputs: readonly [{
|
|
6
|
+
readonly name: "spender";
|
|
7
|
+
readonly type: "address";
|
|
8
|
+
}, {
|
|
9
|
+
readonly name: "amount";
|
|
10
|
+
readonly type: "uint256";
|
|
11
|
+
}];
|
|
12
|
+
readonly outputs: readonly [{
|
|
13
|
+
readonly name: "";
|
|
14
|
+
readonly type: "bool";
|
|
15
|
+
}];
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "balanceOf";
|
|
18
|
+
readonly type: "function";
|
|
19
|
+
readonly stateMutability: "view";
|
|
20
|
+
readonly inputs: readonly [{
|
|
21
|
+
readonly name: "account";
|
|
22
|
+
readonly type: "address";
|
|
23
|
+
}];
|
|
24
|
+
readonly outputs: readonly [{
|
|
25
|
+
readonly name: "";
|
|
26
|
+
readonly type: "uint256";
|
|
27
|
+
}];
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "allowance";
|
|
30
|
+
readonly type: "function";
|
|
31
|
+
readonly stateMutability: "view";
|
|
32
|
+
readonly inputs: readonly [{
|
|
33
|
+
readonly name: "owner";
|
|
34
|
+
readonly type: "address";
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "spender";
|
|
37
|
+
readonly type: "address";
|
|
38
|
+
}];
|
|
39
|
+
readonly outputs: readonly [{
|
|
40
|
+
readonly name: "";
|
|
41
|
+
readonly type: "uint256";
|
|
42
|
+
}];
|
|
43
|
+
}];
|
|
44
|
+
export declare const SWAP_ROUTER_ABI: readonly [{
|
|
45
|
+
readonly name: "exactInputSingle";
|
|
46
|
+
readonly type: "function";
|
|
47
|
+
readonly stateMutability: "payable";
|
|
48
|
+
readonly inputs: readonly [{
|
|
49
|
+
readonly name: "params";
|
|
50
|
+
readonly type: "tuple";
|
|
51
|
+
readonly components: readonly [{
|
|
52
|
+
readonly name: "tokenIn";
|
|
53
|
+
readonly type: "address";
|
|
54
|
+
}, {
|
|
55
|
+
readonly name: "tokenOut";
|
|
56
|
+
readonly type: "address";
|
|
57
|
+
}, {
|
|
58
|
+
readonly name: "fee";
|
|
59
|
+
readonly type: "uint24";
|
|
60
|
+
}, {
|
|
61
|
+
readonly name: "recipient";
|
|
62
|
+
readonly type: "address";
|
|
63
|
+
}, {
|
|
64
|
+
readonly name: "deadline";
|
|
65
|
+
readonly type: "uint256";
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "amountIn";
|
|
68
|
+
readonly type: "uint256";
|
|
69
|
+
}, {
|
|
70
|
+
readonly name: "amountOutMinimum";
|
|
71
|
+
readonly type: "uint256";
|
|
72
|
+
}, {
|
|
73
|
+
readonly name: "sqrtPriceLimitX96";
|
|
74
|
+
readonly type: "uint160";
|
|
75
|
+
}];
|
|
76
|
+
}];
|
|
77
|
+
readonly outputs: readonly [{
|
|
78
|
+
readonly name: "amountOut";
|
|
79
|
+
readonly type: "uint256";
|
|
80
|
+
}];
|
|
81
|
+
}];
|
|
82
|
+
//# sourceMappingURL=abi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../../src/engine/abi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BZ,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBlB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export const ERC20_ABI = [
|
|
2
|
+
{
|
|
3
|
+
name: 'approve',
|
|
4
|
+
type: 'function',
|
|
5
|
+
stateMutability: 'nonpayable',
|
|
6
|
+
inputs: [
|
|
7
|
+
{ name: 'spender', type: 'address' },
|
|
8
|
+
{ name: 'amount', type: 'uint256' },
|
|
9
|
+
],
|
|
10
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'balanceOf',
|
|
14
|
+
type: 'function',
|
|
15
|
+
stateMutability: 'view',
|
|
16
|
+
inputs: [{ name: 'account', type: 'address' }],
|
|
17
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'allowance',
|
|
21
|
+
type: 'function',
|
|
22
|
+
stateMutability: 'view',
|
|
23
|
+
inputs: [
|
|
24
|
+
{ name: 'owner', type: 'address' },
|
|
25
|
+
{ name: 'spender', type: 'address' },
|
|
26
|
+
],
|
|
27
|
+
outputs: [{ name: '', type: 'uint256' }],
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
export const SWAP_ROUTER_ABI = [
|
|
31
|
+
{
|
|
32
|
+
name: 'exactInputSingle',
|
|
33
|
+
type: 'function',
|
|
34
|
+
stateMutability: 'payable',
|
|
35
|
+
inputs: [
|
|
36
|
+
{
|
|
37
|
+
name: 'params',
|
|
38
|
+
type: 'tuple',
|
|
39
|
+
components: [
|
|
40
|
+
{ name: 'tokenIn', type: 'address' },
|
|
41
|
+
{ name: 'tokenOut', type: 'address' },
|
|
42
|
+
{ name: 'fee', type: 'uint24' },
|
|
43
|
+
{ name: 'recipient', type: 'address' },
|
|
44
|
+
{ name: 'deadline', type: 'uint256' },
|
|
45
|
+
{ name: 'amountIn', type: 'uint256' },
|
|
46
|
+
{ name: 'amountOutMinimum', type: 'uint256' },
|
|
47
|
+
{ name: 'sqrtPriceLimitX96', type: 'uint160' },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
outputs: [{ name: 'amountOut', type: 'uint256' }],
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/engine/abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,SAAS;QAC1B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;oBACpC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7C,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC/C;aACF;SACF;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAClD;CACO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dex-presets.d.ts","sourceRoot":"","sources":["../../src/engine/dex-presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAiCjD,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAO9D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const DEX_PRESETS = {
|
|
2
|
+
'base': {
|
|
3
|
+
routerAddress: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
4
|
+
quoterAddress: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
|
|
5
|
+
wethAddress: '0x4200000000000000000000000000000000000006',
|
|
6
|
+
defaultTokens: {
|
|
7
|
+
usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
8
|
+
dai: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb',
|
|
9
|
+
},
|
|
10
|
+
defaultSlippage: 0.005,
|
|
11
|
+
defaultDeadlineSeconds: 300,
|
|
12
|
+
},
|
|
13
|
+
'base-sepolia': {
|
|
14
|
+
routerAddress: '0x050E797f3625EC8785265e1d9BDd4799b97528A1',
|
|
15
|
+
wethAddress: '0x4200000000000000000000000000000000000006',
|
|
16
|
+
defaultTokens: {
|
|
17
|
+
usdc: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
18
|
+
},
|
|
19
|
+
defaultSlippage: 0.01,
|
|
20
|
+
defaultDeadlineSeconds: 600,
|
|
21
|
+
},
|
|
22
|
+
'ethereum': {
|
|
23
|
+
routerAddress: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
24
|
+
quoterAddress: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
|
|
25
|
+
wethAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
|
26
|
+
defaultTokens: {
|
|
27
|
+
usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
28
|
+
usdt: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
|
29
|
+
dai: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
30
|
+
},
|
|
31
|
+
defaultSlippage: 0.005,
|
|
32
|
+
defaultDeadlineSeconds: 300,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export function getDexPreset(chainId) {
|
|
36
|
+
switch (chainId) {
|
|
37
|
+
case 8453: return DEX_PRESETS['base'];
|
|
38
|
+
case 84532: return DEX_PRESETS['base-sepolia'];
|
|
39
|
+
case 1: return DEX_PRESETS['ethereum'];
|
|
40
|
+
default: return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=dex-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dex-presets.js","sourceRoot":"","sources":["../../src/engine/dex-presets.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,MAAM,EAAE;QACN,aAAa,EAAE,4CAA4C;QAC3D,aAAa,EAAE,4CAA4C;QAC3D,WAAW,EAAE,4CAA4C;QACzD,aAAa,EAAE;YACb,IAAI,EAAE,4CAA4C;YAClD,GAAG,EAAE,4CAA4C;SAClD;QACD,eAAe,EAAE,KAAK;QACtB,sBAAsB,EAAE,GAAG;KAC5B;IACD,cAAc,EAAE;QACd,aAAa,EAAE,4CAA4C;QAC3D,WAAW,EAAE,4CAA4C;QACzD,aAAa,EAAE;YACb,IAAI,EAAE,4CAA4C;SACnD;QACD,eAAe,EAAE,IAAI;QACrB,sBAAsB,EAAE,GAAG;KAC5B;IACD,UAAU,EAAE;QACV,aAAa,EAAE,4CAA4C;QAC3D,aAAa,EAAE,4CAA4C;QAC3D,WAAW,EAAE,4CAA4C;QACzD,aAAa,EAAE;YACb,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,4CAA4C;YAClD,GAAG,EAAE,4CAA4C;SAClD;QACD,eAAe,EAAE,KAAK;QACtB,sBAAsB,EAAE,GAAG;KAC5B;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,KAAK,CAAC,CAAC,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;QAC/C,KAAK,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -6,13 +6,17 @@ export declare class GeneMap {
|
|
|
6
6
|
private stmtList;
|
|
7
7
|
private stmtCount;
|
|
8
8
|
private stmtUpdatePlatforms;
|
|
9
|
+
private cache;
|
|
10
|
+
private cacheLoadedAt;
|
|
11
|
+
private readonly CACHE_TTL_MS;
|
|
9
12
|
constructor(dbPath?: string);
|
|
13
|
+
private cacheKey;
|
|
14
|
+
private warmCache;
|
|
15
|
+
private isCacheStale;
|
|
10
16
|
lookup(code: ErrorCode, category: FailureCategory): GeneCapsule | null;
|
|
11
17
|
addPlatform(code: ErrorCode, category: FailureCategory, platform: Platform): void;
|
|
12
18
|
store(gene: GeneCapsule): void;
|
|
13
|
-
/** RL update after successful repair */
|
|
14
19
|
recordSuccess(code: string, category: string, repairMs: number): void;
|
|
15
|
-
/** RL update after failed repair */
|
|
16
20
|
recordFailure(code: string, category: string): void;
|
|
17
21
|
list(): GeneCapsule[];
|
|
18
22
|
immuneCount(): number;
|
|
@@ -26,6 +30,26 @@ export declare class GeneMap {
|
|
|
26
30
|
count: number;
|
|
27
31
|
}[];
|
|
28
32
|
};
|
|
33
|
+
seed(): {
|
|
34
|
+
seeded: number;
|
|
35
|
+
};
|
|
36
|
+
combine(): {
|
|
37
|
+
merged: number;
|
|
38
|
+
};
|
|
39
|
+
gc(): {
|
|
40
|
+
merged: number;
|
|
41
|
+
pruned: number;
|
|
42
|
+
archived: number;
|
|
43
|
+
};
|
|
44
|
+
generateRepairId(): string;
|
|
45
|
+
checkRepairInProgress(code: string, category: string): {
|
|
46
|
+
inProgress: boolean;
|
|
47
|
+
repairId?: string;
|
|
48
|
+
txHash?: string;
|
|
49
|
+
};
|
|
50
|
+
logRepairStart(repairId: string, code: string, category: string, strategy: string): void;
|
|
51
|
+
logRepairComplete(repairId: string, txHash?: string): void;
|
|
52
|
+
logRepairFailed(repairId: string): void;
|
|
29
53
|
close(): void;
|
|
30
54
|
}
|
|
31
55
|
//# sourceMappingURL=gene-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gene-map.d.ts","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"gene-map.d.ts","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAsDpF,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;IAGhD,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAE3B,MAAM,GAAE,MAAmB;IA2BvC,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAIpB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAsBtE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWjF,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAW9B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQrE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQnD,IAAI,IAAI,WAAW,EAAE;IACrB,WAAW,IAAI,MAAM;IAErB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM7D,KAAK;;;;;sBAKyM,MAAM;mBAA4B,MAAM;;;IAKtP,IAAI,IAAI;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAgB1B,OAAO,IAAI;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAkB7B,EAAE,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAU1D,gBAAgB,IAAI,MAAM;IAE1B,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAQlH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxF,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1D,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIvC,KAAK,IAAI,IAAI;CACd"}
|
package/dist/engine/gene-map.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
|
+
import { SEED_GENES } from './seed-genes.js';
|
|
2
3
|
const SCHEMA = `
|
|
3
4
|
CREATE TABLE IF NOT EXISTS genes (
|
|
4
5
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -17,6 +18,18 @@ CREATE TABLE IF NOT EXISTS genes (
|
|
|
17
18
|
last_used_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
18
19
|
UNIQUE(failure_code, category)
|
|
19
20
|
);
|
|
21
|
+
|
|
22
|
+
CREATE TABLE IF NOT EXISTS repair_log (
|
|
23
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
+
repair_id TEXT UNIQUE NOT NULL,
|
|
25
|
+
failure_code TEXT NOT NULL,
|
|
26
|
+
category TEXT NOT NULL,
|
|
27
|
+
strategy TEXT NOT NULL,
|
|
28
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
29
|
+
tx_hash TEXT,
|
|
30
|
+
created_at DATETIME DEFAULT (datetime('now')),
|
|
31
|
+
completed_at DATETIME
|
|
32
|
+
);
|
|
20
33
|
`;
|
|
21
34
|
function parseRow(row) {
|
|
22
35
|
return {
|
|
@@ -43,42 +56,61 @@ export class GeneMap {
|
|
|
43
56
|
stmtList;
|
|
44
57
|
stmtCount;
|
|
45
58
|
stmtUpdatePlatforms;
|
|
59
|
+
// L1 in-memory cache (OPT-9)
|
|
60
|
+
cache = new Map();
|
|
61
|
+
cacheLoadedAt = 0;
|
|
62
|
+
CACHE_TTL_MS = 30_000;
|
|
46
63
|
constructor(dbPath = ':memory:') {
|
|
47
64
|
this.db = new Database(dbPath);
|
|
48
65
|
this.db.pragma('journal_mode = WAL');
|
|
49
66
|
this.db.exec(SCHEMA);
|
|
50
|
-
this.stmtLookup = this.db.prepare(`
|
|
51
|
-
SELECT * FROM genes WHERE failure_code = ? AND category = ? ORDER BY q_value DESC LIMIT 1
|
|
52
|
-
`);
|
|
67
|
+
this.stmtLookup = this.db.prepare(`SELECT * FROM genes WHERE failure_code = ? AND category = ? ORDER BY q_value DESC LIMIT 1`);
|
|
53
68
|
this.stmtUpsert = this.db.prepare(`
|
|
54
69
|
INSERT INTO genes (failure_code, category, strategy, params, success_count, avg_repair_ms, platforms, q_value, consecutive_failures)
|
|
55
70
|
VALUES (@failureCode, @category, @strategy, @params, @successCount, @avgRepairMs, @platforms, @qValue, @consecutiveFailures)
|
|
56
71
|
ON CONFLICT(failure_code, category) DO UPDATE SET
|
|
57
|
-
strategy = @strategy,
|
|
58
|
-
params = @params,
|
|
72
|
+
strategy = @strategy, params = @params,
|
|
59
73
|
success_count = success_count + 1,
|
|
60
74
|
avg_repair_ms = (avg_repair_ms * success_count + @avgRepairMs) / (success_count + 1),
|
|
61
|
-
platforms = @platforms,
|
|
62
|
-
q_value = @qValue,
|
|
63
|
-
consecutive_failures = @consecutiveFailures,
|
|
75
|
+
platforms = @platforms, q_value = @qValue, consecutive_failures = @consecutiveFailures,
|
|
64
76
|
last_used_at = datetime('now')
|
|
65
77
|
`);
|
|
66
78
|
this.stmtList = this.db.prepare(`SELECT * FROM genes ORDER BY q_value DESC, success_count DESC`);
|
|
67
79
|
this.stmtCount = this.db.prepare(`SELECT COUNT(*) as count FROM genes`);
|
|
68
|
-
this.stmtUpdatePlatforms = this.db.prepare(`
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
this.stmtUpdatePlatforms = this.db.prepare(`UPDATE genes SET platforms = ?, last_used_at = datetime('now') WHERE failure_code = ? AND category = ?`);
|
|
81
|
+
// Seed on first run + warm cache
|
|
82
|
+
this.seed();
|
|
83
|
+
this.warmCache();
|
|
84
|
+
}
|
|
85
|
+
// ── L1 Cache (OPT-9) ──
|
|
86
|
+
cacheKey(code, category) { return `${code}:${category}`; }
|
|
87
|
+
warmCache() {
|
|
88
|
+
this.cache.clear();
|
|
89
|
+
for (const row of this.db.prepare('SELECT * FROM genes').all()) {
|
|
90
|
+
this.cache.set(this.cacheKey(row.failure_code, row.category), row);
|
|
91
|
+
}
|
|
92
|
+
this.cacheLoadedAt = Date.now();
|
|
71
93
|
}
|
|
94
|
+
isCacheStale() { return Date.now() - this.cacheLoadedAt > this.CACHE_TTL_MS; }
|
|
95
|
+
// ── Core CRUD ──
|
|
72
96
|
lookup(code, category) {
|
|
97
|
+
const key = this.cacheKey(code, category);
|
|
98
|
+
// L1 cache hit
|
|
99
|
+
if (!this.isCacheStale() && this.cache.has(key)) {
|
|
100
|
+
const cached = this.cache.get(key);
|
|
101
|
+
this.db.prepare(`UPDATE genes SET last_used_at = datetime('now'), success_count = success_count + 1 WHERE failure_code = ? AND category = ?`).run(code, category);
|
|
102
|
+
const gene = parseRow(cached);
|
|
103
|
+
gene.successCount += 1;
|
|
104
|
+
return gene;
|
|
105
|
+
}
|
|
106
|
+
// L2: SQLite
|
|
73
107
|
const row = this.stmtLookup.get(code, category);
|
|
74
108
|
if (!row)
|
|
75
109
|
return null;
|
|
76
|
-
this.db.prepare(`
|
|
77
|
-
|
|
78
|
-
WHERE failure_code = ? AND category = ?
|
|
79
|
-
`).run(code, category);
|
|
110
|
+
this.db.prepare(`UPDATE genes SET last_used_at = datetime('now'), success_count = success_count + 1 WHERE failure_code = ? AND category = ?`).run(code, category);
|
|
111
|
+
this.cache.set(key, row);
|
|
80
112
|
const gene = parseRow(row);
|
|
81
|
-
gene.successCount += 1;
|
|
113
|
+
gene.successCount += 1;
|
|
82
114
|
return gene;
|
|
83
115
|
}
|
|
84
116
|
addPlatform(code, category, platform) {
|
|
@@ -89,92 +121,127 @@ export class GeneMap {
|
|
|
89
121
|
if (!platforms.includes(platform)) {
|
|
90
122
|
platforms.push(platform);
|
|
91
123
|
this.stmtUpdatePlatforms.run(JSON.stringify(platforms), code, category);
|
|
124
|
+
this.cache.delete(this.cacheKey(code, category)); // invalidate
|
|
92
125
|
}
|
|
93
126
|
}
|
|
94
127
|
store(gene) {
|
|
95
128
|
this.stmtUpsert.run({
|
|
96
|
-
failureCode: gene.failureCode,
|
|
97
|
-
category: gene.category,
|
|
98
|
-
strategy: gene.strategy,
|
|
129
|
+
failureCode: gene.failureCode, category: gene.category, strategy: gene.strategy,
|
|
99
130
|
params: JSON.stringify(gene.params, (_k, v) => typeof v === 'bigint' ? v.toString() : v),
|
|
100
|
-
successCount: gene.successCount,
|
|
101
|
-
avgRepairMs: gene.avgRepairMs,
|
|
131
|
+
successCount: gene.successCount, avgRepairMs: gene.avgRepairMs,
|
|
102
132
|
platforms: JSON.stringify(gene.platforms),
|
|
103
|
-
qValue: gene.qValue ?? 0.5,
|
|
104
|
-
consecutiveFailures: gene.consecutiveFailures ?? 0,
|
|
133
|
+
qValue: gene.qValue ?? 0.5, consecutiveFailures: gene.consecutiveFailures ?? 0,
|
|
105
134
|
});
|
|
135
|
+
this.cache.delete(this.cacheKey(gene.failureCode, gene.category)); // invalidate
|
|
106
136
|
}
|
|
107
|
-
/** RL update after successful repair */
|
|
108
137
|
recordSuccess(code, category, repairMs) {
|
|
109
138
|
const row = this.stmtLookup.get(code, category);
|
|
110
139
|
if (!row)
|
|
111
140
|
return;
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.db.prepare(`
|
|
116
|
-
UPDATE genes SET
|
|
117
|
-
q_value = ?,
|
|
118
|
-
avg_repair_ms = (avg_repair_ms * success_count + ?) / (success_count + 1),
|
|
119
|
-
success_count = success_count + 1,
|
|
120
|
-
last_success_at = ?,
|
|
121
|
-
consecutive_failures = 0,
|
|
122
|
-
last_used_at = datetime('now')
|
|
123
|
-
WHERE failure_code = ? AND category = ?
|
|
124
|
-
`).run(newQ, repairMs, Date.now(), code, category);
|
|
141
|
+
const newQ = row.q_value + 0.1 * (1.0 - row.q_value);
|
|
142
|
+
this.db.prepare(`UPDATE genes SET q_value = ?, avg_repair_ms = (avg_repair_ms * success_count + ?) / (success_count + 1), success_count = success_count + 1, last_success_at = ?, consecutive_failures = 0, last_used_at = datetime('now') WHERE failure_code = ? AND category = ?`).run(newQ, repairMs, Date.now(), code, category);
|
|
143
|
+
this.cache.delete(this.cacheKey(code, category));
|
|
125
144
|
}
|
|
126
|
-
/** RL update after failed repair */
|
|
127
145
|
recordFailure(code, category) {
|
|
128
146
|
const row = this.stmtLookup.get(code, category);
|
|
129
147
|
if (!row)
|
|
130
148
|
return;
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
this.db.prepare(`
|
|
135
|
-
UPDATE genes SET
|
|
136
|
-
q_value = ?,
|
|
137
|
-
last_failed_at = ?,
|
|
138
|
-
consecutive_failures = consecutive_failures + 1,
|
|
139
|
-
last_used_at = datetime('now')
|
|
140
|
-
WHERE failure_code = ? AND category = ?
|
|
141
|
-
`).run(newQ, Date.now(), code, category);
|
|
142
|
-
}
|
|
143
|
-
list() {
|
|
144
|
-
return this.stmtList.all().map(parseRow);
|
|
145
|
-
}
|
|
146
|
-
immuneCount() {
|
|
147
|
-
return this.stmtCount.get().count;
|
|
149
|
+
const newQ = row.q_value + 0.1 * (0.0 - row.q_value);
|
|
150
|
+
this.db.prepare(`UPDATE genes SET q_value = ?, last_failed_at = ?, consecutive_failures = consecutive_failures + 1, last_used_at = datetime('now') WHERE failure_code = ? AND category = ?`).run(newQ, Date.now(), code, category);
|
|
151
|
+
this.cache.delete(this.cacheKey(code, category));
|
|
148
152
|
}
|
|
153
|
+
list() { return this.stmtList.all().map(parseRow); }
|
|
154
|
+
immuneCount() { return this.stmtCount.get().count; }
|
|
149
155
|
getSuccessRate(failureCode, strategy) {
|
|
150
|
-
const row = this.db.prepare(`
|
|
151
|
-
SELECT success_count, q_value FROM genes WHERE failure_code = ? AND strategy = ?
|
|
152
|
-
`).get(failureCode, strategy);
|
|
156
|
+
const row = this.db.prepare(`SELECT success_count, q_value FROM genes WHERE failure_code = ? AND strategy = ?`).get(failureCode, strategy);
|
|
153
157
|
if (!row || row.success_count < 3)
|
|
154
158
|
return 0.5;
|
|
155
159
|
return Math.min(0.5 + (row.success_count / 100), 0.95);
|
|
156
160
|
}
|
|
157
161
|
stats() {
|
|
158
162
|
const rows = this.stmtList.all();
|
|
159
|
-
const
|
|
163
|
+
const allP = new Set();
|
|
160
164
|
let qSum = 0;
|
|
161
165
|
for (const r of rows) {
|
|
162
166
|
qSum += r.q_value;
|
|
163
167
|
for (const p of JSON.parse(r.platforms))
|
|
164
|
-
|
|
168
|
+
allP.add(p);
|
|
169
|
+
}
|
|
170
|
+
return { totalGenes: rows.length, avgQValue: rows.length > 0 ? Math.round((qSum / rows.length) * 100) / 100 : 0, platforms: [...allP], topStrategies: rows.slice(0, 10).map(r => ({ strategy: r.strategy, count: r.success_count })) };
|
|
171
|
+
}
|
|
172
|
+
// ── Seed (D9: Cold Start) ──
|
|
173
|
+
seed() {
|
|
174
|
+
const cnt = this.db.prepare('SELECT COUNT(*) as cnt FROM genes').get().cnt;
|
|
175
|
+
if (cnt > 0)
|
|
176
|
+
return { seeded: 0 };
|
|
177
|
+
let seeded = 0;
|
|
178
|
+
const ins = this.db.prepare(`INSERT OR IGNORE INTO genes (failure_code, category, strategy, params, success_count, avg_repair_ms, platforms, q_value, consecutive_failures) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
179
|
+
this.db.transaction(() => {
|
|
180
|
+
for (const g of SEED_GENES) {
|
|
181
|
+
ins.run(g.failureCode, g.category, g.strategy, JSON.stringify(g.params), g.successCount, g.avgRepairMs, JSON.stringify(g.platforms), g.qValue, g.consecutiveFailures);
|
|
182
|
+
seeded++;
|
|
183
|
+
}
|
|
184
|
+
})();
|
|
185
|
+
return { seeded };
|
|
186
|
+
}
|
|
187
|
+
// ── Gene Combine (OPT-3: ELL paper) ──
|
|
188
|
+
combine() {
|
|
189
|
+
let merged = 0;
|
|
190
|
+
const groups = this.db.prepare(`SELECT failure_code, category, COUNT(*) as cnt FROM genes GROUP BY failure_code, category HAVING cnt > 1`).all();
|
|
191
|
+
for (const g of groups) {
|
|
192
|
+
const genes = this.db.prepare(`SELECT * FROM genes WHERE failure_code = ? AND category = ? ORDER BY q_value DESC`).all(g.failure_code, g.category);
|
|
193
|
+
if (genes.length <= 1)
|
|
194
|
+
continue;
|
|
195
|
+
const best = genes[0];
|
|
196
|
+
const allP = new Set();
|
|
197
|
+
let totalSC = 0;
|
|
198
|
+
let weightedMs = 0;
|
|
199
|
+
for (const gn of genes) {
|
|
200
|
+
totalSC += gn.success_count;
|
|
201
|
+
weightedMs += gn.avg_repair_ms * gn.success_count;
|
|
202
|
+
for (const p of JSON.parse(gn.platforms))
|
|
203
|
+
allP.add(p);
|
|
204
|
+
}
|
|
205
|
+
const maxQ = Math.max(...genes.map(gn => gn.q_value));
|
|
206
|
+
this.db.prepare(`UPDATE genes SET platforms = ?, success_count = ?, avg_repair_ms = ?, q_value = ?, last_used_at = datetime('now') WHERE id = ?`).run(JSON.stringify([...allP]), totalSC, weightedMs / Math.max(totalSC, 1), maxQ, best.id);
|
|
207
|
+
for (const gn of genes.slice(1)) {
|
|
208
|
+
this.db.prepare('DELETE FROM genes WHERE id = ?').run(gn.id);
|
|
209
|
+
merged++;
|
|
210
|
+
}
|
|
165
211
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
212
|
+
if (merged > 0)
|
|
213
|
+
this.warmCache();
|
|
214
|
+
return { merged };
|
|
215
|
+
}
|
|
216
|
+
gc() {
|
|
217
|
+
const { merged } = this.combine();
|
|
218
|
+
const pruned = this.db.prepare(`DELETE FROM genes WHERE q_value < 0.1 AND consecutive_failures >= 3`).run().changes;
|
|
219
|
+
const archived = this.db.prepare(`SELECT COUNT(*) as cnt FROM genes WHERE last_used_at < datetime('now', '-180 days')`).get().cnt;
|
|
220
|
+
if (pruned > 0)
|
|
221
|
+
this.warmCache();
|
|
222
|
+
return { merged, pruned, archived };
|
|
223
|
+
}
|
|
224
|
+
// ── Idempotency (D5) ──
|
|
225
|
+
generateRepairId() { return `repair_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`; }
|
|
226
|
+
checkRepairInProgress(code, category) {
|
|
227
|
+
const r = this.db.prepare(`SELECT repair_id, status, tx_hash FROM repair_log WHERE failure_code = ? AND category = ? AND status IN ('pending', 'completed') AND created_at > datetime('now', '-5 minutes') ORDER BY created_at DESC LIMIT 1`).get(code, category);
|
|
228
|
+
if (!r)
|
|
229
|
+
return { inProgress: false };
|
|
230
|
+
if (r.status === 'pending')
|
|
231
|
+
return { inProgress: true, repairId: r.repair_id };
|
|
232
|
+
if (r.status === 'completed' && r.tx_hash)
|
|
233
|
+
return { inProgress: true, repairId: r.repair_id, txHash: r.tx_hash };
|
|
234
|
+
return { inProgress: false };
|
|
235
|
+
}
|
|
236
|
+
logRepairStart(repairId, code, category, strategy) {
|
|
237
|
+
this.db.prepare(`INSERT OR IGNORE INTO repair_log (repair_id, failure_code, category, strategy, status) VALUES (?, ?, ?, ?, 'pending')`).run(repairId, code, category, strategy);
|
|
238
|
+
}
|
|
239
|
+
logRepairComplete(repairId, txHash) {
|
|
240
|
+
this.db.prepare(`UPDATE repair_log SET status = 'completed', tx_hash = ?, completed_at = datetime('now') WHERE repair_id = ?`).run(txHash ?? null, repairId);
|
|
241
|
+
}
|
|
242
|
+
logRepairFailed(repairId) {
|
|
243
|
+
this.db.prepare(`UPDATE repair_log SET status = 'failed', completed_at = datetime('now') WHERE repair_id = ?`).run(repairId);
|
|
178
244
|
}
|
|
245
|
+
close() { this.db.close(); }
|
|
179
246
|
}
|
|
180
247
|
//# sourceMappingURL=gene-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gene-map.js","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gene-map.js","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/engine/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiB9D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let registered = false;
|
|
2
|
+
export function registerShutdownHandler(geneMap) {
|
|
3
|
+
if (registered)
|
|
4
|
+
return;
|
|
5
|
+
registered = true;
|
|
6
|
+
const shutdown = (signal) => {
|
|
7
|
+
console.error(`[helix] ${signal} received, flushing Gene Map...`);
|
|
8
|
+
try {
|
|
9
|
+
geneMap.close();
|
|
10
|
+
console.error('[helix] Gene Map flushed and closed.');
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// already closed
|
|
14
|
+
}
|
|
15
|
+
process.exit(0);
|
|
16
|
+
};
|
|
17
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
18
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/engine/lifecycle.ts"],"names":[],"mappings":"AAEA,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,IAAI,CAAC;IAElB,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,iCAAiC,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/engine/pcec.d.ts
CHANGED
|
@@ -13,7 +13,10 @@ export declare class PcecEngine {
|
|
|
13
13
|
};
|
|
14
14
|
private readonly MAX_CYCLES;
|
|
15
15
|
private cycleCount;
|
|
16
|
+
/** D6: Systematic failure tracker — detect repeated identical failures */
|
|
17
|
+
private failureTracker;
|
|
16
18
|
constructor(geneMap: GeneMap, agentId?: string, options?: WrapOptions);
|
|
19
|
+
private checkSystematic;
|
|
17
20
|
registerAdapter(adapter: PlatformAdapter): void;
|
|
18
21
|
/** D16: Negative pattern guard — prevent false positives from success messages */
|
|
19
22
|
private shouldSkipPerceive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcec.d.ts","sourceRoot":"","sources":["../../src/engine/pcec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAEV,WAAW,EAEX,eAAe,EAEf,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pcec.d.ts","sourceRoot":"","sources":["../../src/engine/pcec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAEV,WAAW,EAEX,eAAe,EAEf,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AA8BpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAc;IACtB,KAAK;;;;MAAkD;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,UAAU,CAAK;IACvB,0EAA0E;IAC1E,OAAO,CAAC,cAAc,CAAkF;gBAE5F,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,MAAkB,EAAE,OAAO,CAAC,EAAE,WAAW;IAOhF,OAAO,CAAC,eAAe;IAiBvB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI/C,kFAAkF;IAClF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,mBAAmB;YAWb,MAAM;IAyBd,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA4PpF,QAAQ;;;;;;;IAQR,UAAU,IAAI,OAAO;CAGtB"}
|